parent
7b7d08db01
commit
5ad248e418
12 changed files with 770 additions and 393 deletions
@ -1,48 +1,49 @@ |
||||
{ |
||||
"name": "saber-admin", |
||||
"version": "1.0.0", |
||||
"private": true, |
||||
"scripts": { |
||||
"serve": "vue-cli-service serve", |
||||
"build": "vue-cli-service build", |
||||
"lint": "vue-cli-service lint", |
||||
"analyz": "npm_config_report=true npm run build", |
||||
"test:unit": "vue-cli-service test:unit", |
||||
"test:e2e": "vue-cli-service test:e2e" |
||||
}, |
||||
"dependencies": { |
||||
"axios": "^0.18.0", |
||||
"babel-polyfill": "^6.26.0", |
||||
"classlist-polyfill": "^1.2.0", |
||||
"element-ui": "^2.4.5", |
||||
"js-cookie": "^2.2.0", |
||||
"mockjs": "^1.0.1-beta3", |
||||
"nprogress": "^0.2.0", |
||||
"script-loader": "^0.7.2", |
||||
"vue": "^2.5.16", |
||||
"vue-axios": "^2.1.2", |
||||
"vue-i18n": "^8.7.0", |
||||
"vue-router": "^3.0.1", |
||||
"vuex": "^3.0.1" |
||||
}, |
||||
"devDependencies": { |
||||
"@vue/cli-plugin-babel": "^3.1.1", |
||||
"@vue/cli-plugin-eslint": "^3.1.5", |
||||
"@vue/cli-service": "^3.1.4", |
||||
"chai": "^4.1.2", |
||||
"node-sass": "^4.9.0", |
||||
"sass-loader": "^7.0.1", |
||||
"vue-template-compiler": "^2.5.17", |
||||
"webpack-bundle-analyzer": "^3.0.3" |
||||
}, |
||||
"lint-staged": { |
||||
"*.js": [ |
||||
"vue-cli-service lint", |
||||
"git add" |
||||
], |
||||
"*.vue": [ |
||||
"vue-cli-service lint", |
||||
"git add" |
||||
] |
||||
} |
||||
"name": "saber-admin", |
||||
"version": "1.0.0", |
||||
"private": true, |
||||
"scripts": { |
||||
"serve": "vue-cli-service serve", |
||||
"build": "vue-cli-service build", |
||||
"lint": "vue-cli-service lint", |
||||
"analyz": "npm_config_report=true npm run build", |
||||
"test:unit": "vue-cli-service test:unit", |
||||
"test:e2e": "vue-cli-service test:e2e" |
||||
}, |
||||
"dependencies": { |
||||
"axios": "^0.18.0", |
||||
"babel-polyfill": "^6.26.0", |
||||
"classlist-polyfill": "^1.2.0", |
||||
"element-ui": "^2.4.5", |
||||
"js-cookie": "^2.2.0", |
||||
"mockjs": "^1.0.1-beta3", |
||||
"nprogress": "^0.2.0", |
||||
"script-loader": "^0.7.2", |
||||
"vue": "^2.5.16", |
||||
"vue-axios": "^2.1.2", |
||||
"vue-i18n": "^8.7.0", |
||||
"vue-router": "^3.0.1", |
||||
"vuex": "^3.0.1", |
||||
"js-base64": "^2.5.1" |
||||
}, |
||||
"devDependencies": { |
||||
"@vue/cli-plugin-babel": "^3.1.1", |
||||
"@vue/cli-plugin-eslint": "^3.1.5", |
||||
"@vue/cli-service": "^3.1.4", |
||||
"chai": "^4.1.2", |
||||
"node-sass": "^4.9.0", |
||||
"sass-loader": "^7.0.1", |
||||
"vue-template-compiler": "^2.5.17", |
||||
"webpack-bundle-analyzer": "^3.0.3" |
||||
}, |
||||
"lint-staged": { |
||||
"*.js": [ |
||||
"vue-cli-service lint", |
||||
"git add" |
||||
], |
||||
"*.vue": [ |
||||
"vue-cli-service lint", |
||||
"git add" |
||||
] |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,50 @@ |
||||
import request from '@/router/axios'; |
||||
|
||||
export const getList = (current, size, params) => { |
||||
return request({ |
||||
url: '/api/blade-system/client/list', |
||||
method: 'get', |
||||
params: { |
||||
...params, |
||||
current, |
||||
size, |
||||
} |
||||
}) |
||||
} |
||||
|
||||
export const getDetail = (id) => { |
||||
return request({ |
||||
url: '/api/blade-system/client/detail', |
||||
method: 'get', |
||||
params: { |
||||
id |
||||
} |
||||
}) |
||||
} |
||||
|
||||
export const remove = (ids) => { |
||||
return request({ |
||||
url: '/api/blade-system/client/remove', |
||||
method: 'post', |
||||
params: { |
||||
ids, |
||||
} |
||||
}) |
||||
} |
||||
|
||||
export const add = (row) => { |
||||
return request({ |
||||
url: '/api/blade-system/client/submit', |
||||
method: 'post', |
||||
data: row |
||||
}) |
||||
} |
||||
|
||||
export const update = (row) => { |
||||
return request({ |
||||
url: '/api/blade-system/client/submit', |
||||
method: 'post', |
||||
data: row |
||||
}) |
||||
} |
||||
|
||||
@ -1,196 +1,207 @@ |
||||
import { setToken, removeToken } from '@/util/auth' |
||||
import { setStore, getStore } from '@/util/store' |
||||
import { isURL, validatenull } from '@/util/validate' |
||||
import { deepClone } from '@/util/util' |
||||
import {setToken, setRefreshToken, removeToken} from '@/util/auth' |
||||
import {setStore, getStore} from '@/util/store' |
||||
import {isURL, validatenull} from '@/util/validate' |
||||
import {deepClone} from '@/util/util' |
||||
import webiste from '@/config/website' |
||||
import { loginByUsername, getUserInfo, getMenu, getTopMenu, logout, refeshToken, getButtons } from '@/api/user' |
||||
import {loginByUsername, getUserInfo, getMenu, getTopMenu, logout, refeshToken, getButtons} from '@/api/user' |
||||
|
||||
|
||||
function addPath(ele, first) { |
||||
const menu = webiste.menu; |
||||
const propsConfig = menu.props; |
||||
const propsDefault = { |
||||
label: propsConfig.label || 'name', |
||||
path: propsConfig.path || 'path', |
||||
icon: propsConfig.icon || 'icon', |
||||
children: propsConfig.children || 'children' |
||||
} |
||||
const icon = ele[propsDefault.icon]; |
||||
ele[propsDefault.icon] = validatenull(icon) ? menu.iconDefault : icon; |
||||
const isChild = ele[propsDefault.children] && ele[propsDefault.children].length !== 0; |
||||
if (!isChild) ele[propsDefault.children] = []; |
||||
if (!isChild && first && !isURL(ele[propsDefault.path])) { |
||||
ele[propsDefault.path] = ele[propsDefault.path] + '/index' |
||||
} else { |
||||
ele[propsDefault.children].forEach(child => { |
||||
addPath(child); |
||||
}) |
||||
} |
||||
const menu = webiste.menu; |
||||
const propsConfig = menu.props; |
||||
const propsDefault = { |
||||
label: propsConfig.label || 'name', |
||||
path: propsConfig.path || 'path', |
||||
icon: propsConfig.icon || 'icon', |
||||
children: propsConfig.children || 'children' |
||||
} |
||||
const icon = ele[propsDefault.icon]; |
||||
ele[propsDefault.icon] = validatenull(icon) ? menu.iconDefault : icon; |
||||
const isChild = ele[propsDefault.children] && ele[propsDefault.children].length !== 0; |
||||
if (!isChild) ele[propsDefault.children] = []; |
||||
if (!isChild && first && !isURL(ele[propsDefault.path])) { |
||||
ele[propsDefault.path] = ele[propsDefault.path] + '/index' |
||||
} else { |
||||
ele[propsDefault.children].forEach(child => { |
||||
addPath(child); |
||||
}) |
||||
} |
||||
|
||||
} |
||||
|
||||
const user = { |
||||
state: { |
||||
userInfo: getStore({ name: 'userInfo' }) || [], |
||||
permission: getStore({ name: 'permission' }) || {}, |
||||
roles: [], |
||||
menu: getStore({ name: 'menu' }) || [], |
||||
menuAll: [], |
||||
token: getStore({ name: 'token' }) || '', |
||||
state: { |
||||
userInfo: getStore({name: 'userInfo'}) || [], |
||||
permission: getStore({name: 'permission'}) || {}, |
||||
roles: [], |
||||
menu: getStore({name: 'menu'}) || [], |
||||
menuAll: [], |
||||
token: getStore({name: 'token'}) || '', |
||||
refreshToken: getStore({name: 'refreshToken'}) || '', |
||||
}, |
||||
actions: { |
||||
//根据用户名登录
|
||||
LoginByUsername({commit}, userInfo) { |
||||
return new Promise((resolve) => { |
||||
loginByUsername(userInfo.tenantCode, userInfo.username, userInfo.password, userInfo.type).then(res => { |
||||
const data = res.data; |
||||
commit('SET_TOKEN', data.access_token); |
||||
commit('SET_REFRESH_TOKEN', data.refresh_token); |
||||
commit('SET_USERIFNO', data); |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
GetButtons({commit}) { |
||||
return new Promise((resolve) => { |
||||
getButtons().then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_PERMISSION', data); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
//根据手机号登录
|
||||
LoginByPhone({commit}, userInfo) { |
||||
return new Promise((resolve) => { |
||||
loginByUsername(userInfo.phone, userInfo.code).then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_TOKEN', data); |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
GetUserInfo({commit}) { |
||||
return new Promise((resolve, reject) => { |
||||
getUserInfo().then((res) => { |
||||
const data = res.data.data; |
||||
commit('SET_ROLES', data.roles); |
||||
resolve(data); |
||||
}).catch(err => { |
||||
reject(err); |
||||
}) |
||||
}) |
||||
}, |
||||
//刷新token
|
||||
RefeshToken({state, commit}) { |
||||
return new Promise((resolve, reject) => { |
||||
refeshToken(state.refreshToken).then(res => { |
||||
const data = res.data; |
||||
commit('SET_TOKEN', data.access_token); |
||||
commit('SET_REFRESH_TOKEN', data.refresh_token); |
||||
resolve(); |
||||
}).catch(error => { |
||||
reject(error) |
||||
}) |
||||
}) |
||||
}, |
||||
// 登出
|
||||
LogOut({commit}) { |
||||
return new Promise((resolve, reject) => { |
||||
logout().then(() => { |
||||
commit('SET_TOKEN', '') |
||||
commit('SET_MENU', []) |
||||
commit('SET_ROLES', []) |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
removeToken() |
||||
resolve() |
||||
}).catch(error => { |
||||
reject(error) |
||||
}) |
||||
}) |
||||
}, |
||||
//注销session
|
||||
FedLogOut({commit}) { |
||||
return new Promise(resolve => { |
||||
commit('SET_TOKEN', '') |
||||
commit('SET_MENU', []) |
||||
commit('SET_ROLES', []) |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
removeToken() |
||||
resolve() |
||||
}) |
||||
}, |
||||
GetTopMenu() { |
||||
return new Promise(resolve => { |
||||
getTopMenu().then((res) => { |
||||
const data = res.data.data || [] |
||||
resolve(data) |
||||
}) |
||||
}) |
||||
}, |
||||
//获取系统菜单
|
||||
GetMenu({commit, dispatch}, parentId) { |
||||
return new Promise(resolve => { |
||||
getMenu(parentId).then((res) => { |
||||
const data = res.data.data |
||||
let menu = deepClone(data); |
||||
menu.forEach(ele => { |
||||
addPath(ele, true); |
||||
}) |
||||
commit('SET_MENU', menu) |
||||
dispatch('GetButtons'); |
||||
resolve(menu) |
||||
}) |
||||
}) |
||||
}, |
||||
}, |
||||
mutations: { |
||||
SET_TOKEN: (state, token) => { |
||||
setToken(token) |
||||
state.token = token; |
||||
setStore({name: 'token', content: state.token, type: 'session'}) |
||||
}, |
||||
actions: { |
||||
//根据用户名登录
|
||||
LoginByUsername({ commit }, userInfo) { |
||||
return new Promise((resolve) => { |
||||
loginByUsername(userInfo.tenantCode, userInfo.username, userInfo.password, userInfo.type).then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_TOKEN', data.accessToken); |
||||
commit('SET_USERIFNO', data); |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
GetButtons({ commit }) { |
||||
return new Promise((resolve) => { |
||||
getButtons().then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_PERMISSION', data); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
//根据手机号登录
|
||||
LoginByPhone({ commit }, userInfo) { |
||||
return new Promise((resolve) => { |
||||
loginByUsername(userInfo.phone, userInfo.code).then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_TOKEN', data); |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
resolve(); |
||||
}) |
||||
}) |
||||
}, |
||||
GetUserInfo({ commit }) { |
||||
return new Promise((resolve, reject) => { |
||||
getUserInfo().then((res) => { |
||||
const data = res.data.data; |
||||
commit('SET_ROLES', data.roles); |
||||
resolve(data); |
||||
}).catch(err => { |
||||
reject(err); |
||||
}) |
||||
}) |
||||
}, |
||||
//刷新token
|
||||
RefeshToken({ state, commit }) { |
||||
return new Promise((resolve, reject) => { |
||||
refeshToken(state.refeshToken).then(res => { |
||||
const data = res.data.data; |
||||
commit('SET_TOKEN', data); |
||||
resolve(data); |
||||
}).catch(error => { |
||||
reject(error) |
||||
}) |
||||
}) |
||||
}, |
||||
// 登出
|
||||
LogOut({ commit }) { |
||||
return new Promise((resolve, reject) => { |
||||
logout().then(() => { |
||||
commit('SET_TOKEN', '') |
||||
commit('SET_MENU', []) |
||||
commit('SET_ROLES', []) |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
removeToken() |
||||
resolve() |
||||
}).catch(error => { |
||||
reject(error) |
||||
}) |
||||
}) |
||||
}, |
||||
//注销session
|
||||
FedLogOut({ commit }) { |
||||
return new Promise(resolve => { |
||||
commit('SET_TOKEN', '') |
||||
commit('SET_MENU', []) |
||||
commit('SET_ROLES', []) |
||||
commit('DEL_ALL_TAG'); |
||||
commit('CLEAR_LOCK'); |
||||
removeToken() |
||||
resolve() |
||||
}) |
||||
}, |
||||
GetTopMenu() { |
||||
return new Promise(resolve => { |
||||
getTopMenu().then((res) => { |
||||
const data = res.data.data || [] |
||||
resolve(data) |
||||
}) |
||||
}) |
||||
}, |
||||
//获取系统菜单
|
||||
GetMenu({ commit, dispatch }, parentId) { |
||||
return new Promise(resolve => { |
||||
getMenu(parentId).then((res) => { |
||||
const data = res.data.data |
||||
let menu = deepClone(data); |
||||
menu.forEach(ele => { |
||||
addPath(ele, true); |
||||
}) |
||||
commit('SET_MENU', menu) |
||||
dispatch('GetButtons'); |
||||
resolve(menu) |
||||
}) |
||||
}) |
||||
}, |
||||
SET_REFRESH_TOKEN: (state, refreshToken) => { |
||||
setRefreshToken(refreshToken) |
||||
state.refreshToken = refreshToken; |
||||
setStore({name: 'refreshToken', content: state.refreshToken, type: 'session'}) |
||||
}, |
||||
mutations: { |
||||
SET_TOKEN: (state, token) => { |
||||
setToken(token) |
||||
state.token = token; |
||||
setStore({ name: 'token', content: state.token, type: 'session' }) |
||||
}, |
||||
SET_USERIFNO: (state, userInfo) => { |
||||
state.userInfo = userInfo; |
||||
setStore({ name: 'userInfo', content: state.userInfo }) |
||||
}, |
||||
SET_MENU: (state, menu) => { |
||||
state.menu = menu |
||||
setStore({ name: 'menu', content: state.menu, type: 'session' }) |
||||
}, |
||||
SET_MENU_ALL: (state, menuAll) => { |
||||
state.menuAll = menuAll; |
||||
}, |
||||
SET_ROLES: (state, roles) => { |
||||
state.roles = roles; |
||||
}, |
||||
SET_PERMISSION: (state, permission) => { |
||||
let result = []; |
||||
function getCode(list) { |
||||
list.forEach(ele => { |
||||
if (typeof (ele) === 'object') { |
||||
const chiildren = ele.children; |
||||
const code = ele.code; |
||||
if (chiildren) { |
||||
getCode(chiildren) |
||||
} else { |
||||
result.push(code); |
||||
} |
||||
} |
||||
SET_USERIFNO: (state, userInfo) => { |
||||
state.userInfo = userInfo; |
||||
setStore({name: 'userInfo', content: state.userInfo}) |
||||
}, |
||||
SET_MENU: (state, menu) => { |
||||
state.menu = menu |
||||
setStore({name: 'menu', content: state.menu, type: 'session'}) |
||||
}, |
||||
SET_MENU_ALL: (state, menuAll) => { |
||||
state.menuAll = menuAll; |
||||
}, |
||||
SET_ROLES: (state, roles) => { |
||||
state.roles = roles; |
||||
}, |
||||
SET_PERMISSION: (state, permission) => { |
||||
let result = []; |
||||
|
||||
}) |
||||
function getCode(list) { |
||||
list.forEach(ele => { |
||||
if (typeof (ele) === 'object') { |
||||
const chiildren = ele.children; |
||||
const code = ele.code; |
||||
if (chiildren) { |
||||
getCode(chiildren) |
||||
} else { |
||||
result.push(code); |
||||
} |
||||
getCode(permission); |
||||
state.permission = {}; |
||||
result.forEach(ele => { |
||||
state.permission[ele] = true; |
||||
}); |
||||
setStore({ name: 'permission', content: state.permission, type: 'session' }) |
||||
} |
||||
} |
||||
|
||||
}) |
||||
} |
||||
|
||||
getCode(permission); |
||||
state.permission = {}; |
||||
result.forEach(ele => { |
||||
state.permission[ele] = true; |
||||
}); |
||||
setStore({name: 'permission', content: state.permission, type: 'session'}) |
||||
} |
||||
} |
||||
|
||||
} |
||||
export default user |
||||
|
||||
@ -0,0 +1,273 @@ |
||||
<template> |
||||
<basic-container> |
||||
<avue-crud :option="option" |
||||
:data="data" |
||||
:page="page" |
||||
@row-del="rowDel" |
||||
v-model="form" |
||||
:permission="permissionList" |
||||
@row-update="rowUpdate" |
||||
@row-save="rowSave" |
||||
:before-open="beforeOpen" |
||||
@search-change="searchChange" |
||||
@search-reset="searchReset" |
||||
@selection-change="selectionChange" |
||||
@on-load="onLoad"> |
||||
<template slot="menuLeft"> |
||||
<el-button type="danger" |
||||
size="small" |
||||
icon="el-icon-delete" |
||||
plain |
||||
v-if="permission.client_delete" |
||||
@click="handleDelete">删 除 |
||||
</el-button> |
||||
</template> |
||||
</avue-crud> |
||||
</basic-container> |
||||
</template> |
||||
|
||||
<script> |
||||
import {getList, getDetail, add, update, remove} from "@/api/system/client"; |
||||
import {mapGetters} from "vuex"; |
||||
|
||||
export default { |
||||
data() { |
||||
return { |
||||
form: {}, |
||||
page: { |
||||
pageSize: 10, |
||||
currentPage: 1, |
||||
total: 0 |
||||
}, |
||||
selectionList: [], |
||||
option: { |
||||
tip: false, |
||||
border: true, |
||||
index: true, |
||||
viewBtn: true, |
||||
selection: true, |
||||
column: [ |
||||
{ |
||||
label: "应用id", |
||||
prop: "clientId", |
||||
search: true, |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入客户端id", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "应用密钥", |
||||
prop: "clientSecret", |
||||
search: true, |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入客户端密钥", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "授权类型", |
||||
prop: "authorizedGrantTypes", |
||||
valueDefault: "refresh_token,password,authorization_code", |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入授权类型", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "授权范围", |
||||
prop: "scope", |
||||
valueDefault: "all", |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入授权范围", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "令牌秒数", |
||||
prop: "accessTokenValidity", |
||||
type: "number", |
||||
valueDefault: 3600, |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入令牌过期秒数", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "刷新秒数", |
||||
prop: "refreshTokenValidity", |
||||
type: "number", |
||||
valueDefault: 604800, |
||||
hide: true, |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入刷新令牌过期秒数", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "回调地址", |
||||
prop: "webServerRedirectUri", |
||||
hide: true, |
||||
rules: [{ |
||||
required: true, |
||||
message: "请输入回调地址", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "资源集合", |
||||
prop: "resourceIds", |
||||
hide: true, |
||||
rules: [{ |
||||
message: "请输入资源集合", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "权限", |
||||
prop: "authorities", |
||||
hide: true, |
||||
rules: [{ |
||||
message: "请输入权限", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "自动授权", |
||||
prop: "autoapprove", |
||||
hide: true, |
||||
rules: [{ |
||||
message: "请输入自动授权", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
{ |
||||
label: "附加说明", |
||||
hide: true, |
||||
prop: "additionalInformation", |
||||
span: 24, |
||||
rules: [{ |
||||
message: "请输入附加说明", |
||||
trigger: "blur" |
||||
}] |
||||
}, |
||||
] |
||||
}, |
||||
data: [] |
||||
}; |
||||
}, |
||||
computed: { |
||||
...mapGetters(["permission"]), |
||||
permissionList() { |
||||
return { |
||||
addBtn: this.vaildData(this.permission.client_add), |
||||
viewBtn: this.vaildData(this.permission.client_view), |
||||
delBtn: this.vaildData(this.permission.client_delete), |
||||
editBtn: this.vaildData(this.permission.client_edit) |
||||
}; |
||||
}, |
||||
ids() { |
||||
let ids = []; |
||||
this.selectionList.forEach(ele => { |
||||
ids.push(ele.id); |
||||
}); |
||||
return ids.join(","); |
||||
} |
||||
}, |
||||
methods: { |
||||
rowSave(row, loading) { |
||||
add(row).then(() => { |
||||
loading(); |
||||
this.onLoad(this.page); |
||||
this.$message({ |
||||
type: "success", |
||||
message: "操作成功!" |
||||
}); |
||||
}); |
||||
}, |
||||
rowUpdate(row, index, loading) { |
||||
update(row).then(() => { |
||||
loading(); |
||||
this.onLoad(this.page); |
||||
this.$message({ |
||||
type: "success", |
||||
message: "操作成功!" |
||||
}); |
||||
}); |
||||
}, |
||||
rowDel(row) { |
||||
this.$confirm("确定将选择数据删除?", { |
||||
confirmButtonText: "确定", |
||||
cancelButtonText: "取消", |
||||
type: "warning" |
||||
}) |
||||
.then(() => { |
||||
return remove(row.id); |
||||
}) |
||||
.then(() => { |
||||
this.onLoad(this.page); |
||||
this.$message({ |
||||
type: "success", |
||||
message: "操作成功!" |
||||
}); |
||||
}); |
||||
}, |
||||
searchReset() { |
||||
this.onLoad(this.page); |
||||
}, |
||||
searchChange(params) { |
||||
this.onLoad(this.page, params); |
||||
}, |
||||
selectionChange(list) { |
||||
this.selectionList = list; |
||||
}, |
||||
handleDelete() { |
||||
if (this.selectionList.length === 0) { |
||||
this.$message.warning("请选择至少一条数据"); |
||||
return; |
||||
} |
||||
this.$confirm("确定将选择数据删除?", { |
||||
confirmButtonText: "确定", |
||||
cancelButtonText: "取消", |
||||
type: "warning" |
||||
}) |
||||
.then(() => { |
||||
return remove(this.ids); |
||||
}) |
||||
.then(() => { |
||||
this.onLoad(this.page); |
||||
this.$message({ |
||||
type: "success", |
||||
message: "操作成功!" |
||||
}); |
||||
this.$refs.crud.toggleSelection(); |
||||
}); |
||||
}, |
||||
|
||||
beforeOpen(done, type) { |
||||
if (["edit", "view"].includes(type)) { |
||||
getDetail(this.form.id).then(res => { |
||||
this.form = res.data.data; |
||||
}); |
||||
} |
||||
done(); |
||||
}, |
||||
onLoad(page, params = {}) { |
||||
getList(page.currentPage, page.pageSize, params).then(res => { |
||||
const data = res.data.data; |
||||
this.page.total = data.total; |
||||
this.data = data.records; |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style> |
||||
</style> |
||||
Loading…
Reference in new issue