diff --git a/.env.development b/.env.development index 6cf41ff..e04c29d 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = GEO TAG管理系统 +VUE_APP_TITLE = 客户 GEO TAG管理系统 # 开发环境配置 ENV = 'development' diff --git a/.env.production b/.env.production index 87dc497..26de082 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = GEO TAG管理系统 +VUE_APP_TITLE = 客户GEO TAG管理系统 # 生产环境配置 ENV = 'production' diff --git a/.env.staging b/.env.staging index 385fe68..e3101dc 100644 --- a/.env.staging +++ b/.env.staging @@ -1,5 +1,5 @@ NODE_ENV = production -VUE_APP_TITLE = GEO TAG管理系统 +VUE_APP_TITLE =客户 GEO TAG管理系统 # 测试环境配置 ENV = 'staging' diff --git a/src/api/business/businessApiConfig.js b/src/api/business/businessApiConfig.js deleted file mode 100644 index 8821a4f..0000000 --- a/src/api/business/businessApiConfig.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 查询企业api配置表列表 -export function listBusinessApiConfig(query) { - return request({ - url: '/business/businessApiConfig/list', - method: 'get', - params: query - }) -} - -// 查询企业api配置表详细 -export function getBusinessApiConfig(id) { - return request({ - url: '/business/businessApiConfig/' + id, - method: 'get' - }) -} - -// 新增企业api配置表 -export function addBusinessApiConfig(data) { - return request({ - url: '/business/businessApiConfig', - method: 'post', - data: data - }) -} - -// 修改企业api配置表 -export function updateBusinessApiConfig(data) { - return request({ - url: '/business/businessApiConfig', - method: 'put', - data: data - }) -} - -// 删除企业api配置表 -export function delBusinessApiConfig(id) { - return request({ - url: '/business/businessApiConfig/' + id, - method: 'delete' - }) -} - -// 导出企业api配置表 -export function exportBusinessApiConfig(query) { - return request({ - url: '/business/businessApiConfig/export', - method: 'get', - params: query - }) -} \ No newline at end of file diff --git a/src/api/business/businessLogininfor.js b/src/api/business/businessLogininfor.js deleted file mode 100644 index 0d4d7da..0000000 --- a/src/api/business/businessLogininfor.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 查询企业登录日志列表 -export function listBusinessLogininfor(query) { - return request({ - url: '/business/businessLogininfor/list', - method: 'get', - params: query - }) -} - -// 查询企业登录日志详细 -export function getBusinessLogininfor(id) { - return request({ - url: '/business/businessLogininfor/' + id, - method: 'get' - }) -} - -// 新增企业登录日志 -export function addBusinessLogininfor(data) { - return request({ - url: '/business/businessLogininfor', - method: 'post', - data: data - }) -} - -// 修改企业登录日志 -export function updateBusinessLogininfor(data) { - return request({ - url: '/business/businessLogininfor', - method: 'put', - data: data - }) -} - -// 删除企业登录日志 -export function delBusinessLogininfor(id) { - return request({ - url: '/business/businessLogininfor/' + id, - method: 'delete' - }) -} - -// 导出企业登录日志 -export function exportBusinessLogininfor(query) { - return request({ - url: '/business/businessLogininfor/export', - method: 'get', - params: query - }) -} \ No newline at end of file diff --git a/src/api/device/device.js b/src/api/device/device.js index e41ac05..8233c84 100644 --- a/src/api/device/device.js +++ b/src/api/device/device.js @@ -1,6 +1,5 @@ import request from '@/utils/request' -// 查询系统设备主列表 export function listDevice(query) { return request({ url: '/device/device/list', @@ -9,7 +8,6 @@ export function listDevice(query) { }) } -// 查询系统设备主详细 export function getDevice(id) { return request({ url: '/device/device/' + id, @@ -17,7 +15,6 @@ export function getDevice(id) { }) } -// 新增系统设备主 export function addDevice(data) { return request({ url: '/device/device', @@ -26,7 +23,6 @@ export function addDevice(data) { }) } -// 修改系统设备主 export function updateDevice(data) { return request({ url: '/device/device', @@ -35,7 +31,6 @@ export function updateDevice(data) { }) } -// 删除系统设备主 export function delDevice(id) { return request({ url: '/device/device/' + id, @@ -43,7 +38,6 @@ export function delDevice(id) { }) } -// 导出系统设备主 export function exportDevice(query) { return request({ url: '/device/device/export', @@ -53,13 +47,35 @@ export function exportDevice(query) { } export function importDevice(data) { + return importDeviceSync(data) +} + +export function importDeviceSync(data) { return request({ - url: '/device/device/import', // 替换为你后端实际的导入接口地址 + url: '/device/device/import/sync', method: 'post', headers: { - 'Content-Type': 'multipart/form-data' // 文件上传必须的请求头 + 'Content-Type': 'multipart/form-data' }, - data: data // 接收FormData参数 + data: data + }) +} + +export function importDeviceAsync(data) { + return request({ + url: '/device/device/import/async', + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data: data + }) +} + +export function getDeviceImportTask(taskId) { + return request({ + url: '/device/device/import/task/' + taskId, + method: 'get' }) } @@ -69,3 +85,14 @@ export function getBatchNo() { method: 'get' }) } + +// 批量激活设备(将选中设备标记为激活:1) +export function batchActivateDevice(ids) { + return request({ + url: '/device/device/activate/batch', + method: 'put', + data: { + ids: ids + } + }) +} diff --git a/src/api/system/role.js b/src/api/system/role.js index f13e6f4..801e56f 100644 --- a/src/api/system/role.js +++ b/src/api/system/role.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询角色列表 export function listRole(query) { return request({ - url: '/system/role/list', + url: '/business/businessRole/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function listRole(query) { // 查询角色详细 export function getRole(roleId) { return request({ - url: '/system/role/' + roleId, + url: '/business/businessRole/' + roleId, method: 'get' }) } @@ -20,7 +20,7 @@ export function getRole(roleId) { // 新增角色 export function addRole(data) { return request({ - url: '/system/role', + url: '/business/businessRole', method: 'post', data: data }) @@ -29,7 +29,7 @@ export function addRole(data) { // 修改角色 export function updateRole(data) { return request({ - url: '/system/role', + url: '/business/businessRole', method: 'put', data: data }) @@ -38,7 +38,7 @@ export function updateRole(data) { // 角色数据权限 export function dataScope(data) { return request({ - url: '/system/role/dataScope', + url: '/business/businessRole/dataScope', method: 'put', data: data }) @@ -51,7 +51,7 @@ export function changeRoleStatus(roleId, status) { status } return request({ - url: '/system/role/changeStatus', + url: '/business/businessRole/changeStatus', method: 'put', data: data }) @@ -60,7 +60,7 @@ export function changeRoleStatus(roleId, status) { // 删除角色 export function delRole(roleId) { return request({ - url: '/system/role/' + roleId, + url: '/business/businessRole/' + roleId, method: 'delete' }) } @@ -68,7 +68,7 @@ export function delRole(roleId) { // 查询角色已授权用户列表 export function allocatedUserList(query) { return request({ - url: '/system/role/authUser/allocatedList', + url: '/business/businessRole/authUser/allocatedList', method: 'get', params: query }) @@ -77,7 +77,7 @@ export function allocatedUserList(query) { // 查询角色未授权用户列表 export function unallocatedUserList(query) { return request({ - url: '/system/role/authUser/unallocatedList', + url: '/business/businessRole/authUser/unallocatedList', method: 'get', params: query }) @@ -86,7 +86,7 @@ export function unallocatedUserList(query) { // 取消用户授权角色 export function authUserCancel(data) { return request({ - url: '/system/role/authUser/cancel', + url: '/business/businessRole/authUser/cancel', method: 'put', data: data }) @@ -95,7 +95,7 @@ export function authUserCancel(data) { // 批量取消用户授权角色 export function authUserCancelAll(data) { return request({ - url: '/system/role/authUser/cancelAll', + url: '/business/businessRole/authUser/cancelAll', method: 'put', params: data }) @@ -104,7 +104,7 @@ export function authUserCancelAll(data) { // 授权用户选择 export function authUserSelectAll(data) { return request({ - url: '/system/role/authUser/selectAll', + url: '/business/businessRole/authUser/selectAll', method: 'put', params: data }) @@ -113,7 +113,7 @@ export function authUserSelectAll(data) { // 根据角色ID查询部门树结构 export function deptTreeSelect(roleId) { return request({ - url: '/system/role/deptTree/' + roleId, + url: '/business/businessRole/deptTree/' + roleId, method: 'get' }) } diff --git a/src/api/system/user.js b/src/api/system/user.js index 3b9a776..b6cfbcc 100644 --- a/src/api/system/user.js +++ b/src/api/system/user.js @@ -4,7 +4,7 @@ import { praseStrEmpty } from "@/utils/ruoyi"; // 查询用户列表 export function listUser(query) { return request({ - url: '/system/user/list', + url: '/business/businessUser/list', method: 'get', params: query }) @@ -13,7 +13,7 @@ export function listUser(query) { // 查询用户详细 export function getUser(userId) { return request({ - url: '/system/user/' + praseStrEmpty(userId), + url: '/business/businessUser/' + praseStrEmpty(userId), method: 'get' }) } @@ -21,7 +21,7 @@ export function getUser(userId) { // 新增用户 export function addUser(data) { return request({ - url: '/system/user', + url: '/business/businessUser', method: 'post', data: data }) @@ -30,7 +30,7 @@ export function addUser(data) { // 修改用户 export function updateUser(data) { return request({ - url: '/system/user', + url: '/business/businessUser', method: 'put', data: data }) @@ -39,7 +39,7 @@ export function updateUser(data) { // 删除用户 export function delUser(userId) { return request({ - url: '/system/user/' + userId, + url: '/business/businessUser/' + userId, method: 'delete' }) } @@ -47,7 +47,7 @@ export function delUser(userId) { // 导出用户 export function exportUser(query) { return request({ - url: '/system/user/export', + url: '/business/businessUser/export', method: 'get', params: query }) @@ -56,11 +56,11 @@ export function exportUser(query) { // 用户密码重置 export function resetUserPwd(userId, password) { const data = { - userId, - password + id: userId, + passwordHash: password } return request({ - url: '/system/user/resetPwd', + url: '/business/businessUser/resetPwd', method: 'put', data: data }) @@ -73,7 +73,7 @@ export function changeUserStatus(userId, status) { status } return request({ - url: '/system/user/changeStatus', + url: '/business/businessUser/changeStatus', method: 'put', data: data }) @@ -82,7 +82,7 @@ export function changeUserStatus(userId, status) { // 查询用户个人信息 export function getUserProfile() { return request({ - url: '/system/user/profile', + url: '/business/businessUser/profile', method: 'get' }) } @@ -90,7 +90,7 @@ export function getUserProfile() { // 修改用户个人信息 export function updateUserProfile(data) { return request({ - url: '/system/user/profile', + url: '/business/businessUser/profile', method: 'put', data: data }) @@ -103,7 +103,7 @@ export function updateUserPwd(oldPassword, newPassword) { newPassword } return request({ - url: '/system/user/profile/updatePwd', + url: '/business/businessUser/profile/updatePwd', method: 'put', params: data }) @@ -112,7 +112,7 @@ export function updateUserPwd(oldPassword, newPassword) { // 用户头像上传 export function uploadAvatar(data) { return request({ - url: '/system/user/profile/avatar', + url: '/business/businessUser/profile/avatar', method: 'post', data: data }) @@ -121,7 +121,7 @@ export function uploadAvatar(data) { // 下载用户导入模板 export function importTemplate() { return request({ - url: '/system/user/importTemplate', + url: '/business/businessUser/importTemplate', method: 'get' }) } diff --git a/src/utils/auth.js b/src/utils/auth.js index 08a43d6..ead1e2f 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,6 +1,6 @@ import Cookies from 'js-cookie' -const TokenKey = 'Admin-Token' +const TokenKey = 'Admin-Token-CUSTOMER' export function getToken() { return Cookies.get(TokenKey) diff --git a/src/views/business/businessApiConfig/index.vue b/src/views/business/businessApiConfig/index.vue deleted file mode 100644 index 1b6d347..0000000 --- a/src/views/business/businessApiConfig/index.vue +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - 选择 - - - - - - - - - - - - 搜索 - 重置 - - - - - - 新增 - - - 修改 - - - - 导出 - - - - - - - - - - - - - - - - 修改 - - - - - - - - - - - - - - - - - - - - 选择 - - - - - - - - - - - - - - 启用 - 禁用 - - - - - - - - - - - - - - - diff --git a/src/views/business/businessLogininfor/index.vue b/src/views/business/businessLogininfor/index.vue deleted file mode 100644 index 355a165..0000000 --- a/src/views/business/businessLogininfor/index.vue +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - - - - - - - - - - - - 搜索 - 重置 - - - - - - - - 导出 - - - - - - - - - - - - - - - - - - {{ parseTime(scope.row.loginTime, "{y}-{m}-{d}") }} - - - - - 修改 - 删除 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 请选择字典生成 - - - - - - - - - - - - - - - - diff --git a/src/views/device/device/index.vue b/src/views/device/device/index.vue index 55df1ce..fc3d5f0 100644 --- a/src/views/device/device/index.vue +++ b/src/views/device/device/index.vue @@ -1,4 +1,4 @@ - + - - - - - - - 选择 - + - - - - - - - - - - - - @@ -281,6 +224,77 @@ 取 消 + + + + + + + + {{ getImportStatusLabel(latestImportResult.status) }} + + + {{ latestImportResult.total }} + + + {{ latestImportResult.successCount }} + + + {{ latestImportResult.failCount }} + + + {{ parseTime(latestImportResult.startTime) }} + + + {{ parseTime(latestImportResult.finishTime) }} + + + + + 请求错误 + + {{ index + 1 }}. {{ item }} + + + + + 失败明细 + + + + + + + + + 0) { + this.getList(); + } + if (this.latestImportResult.failCount > 0 || this.latestImportResult.requestErrors.length > 0) { + this.$message.warning(this.getImportStatusMessage(this.latestImportResult)); + } else { + this.$message.success("导入成功!"); + } } catch (error) { this.$message.error("导入失败:" + (error.message || "服务器异常")); } finally { @@ -769,6 +794,62 @@ export default { this.businessSelectVisible = false; // 关闭企业选择弹窗 }, + normalizeImportResult(data) { + return { + status: data?.status || "", + total: data?.total || 0, + successCount: data?.successCount || 0, + failCount: data?.failCount || 0, + startTime: data?.startTime || null, + finishTime: data?.finishTime || null, + requestErrors: Array.isArray(data?.requestErrors) ? data.requestErrors : [], + errors: Array.isArray(data?.errors) ? data.errors : [], + }; + }, + getImportStatusLabel(status) { + const statusMap = { + SUCCESS: "导入成功", + PARTIAL_SUCCESS: "部分成功", + FAILED: "导入失败", + REQUEST_INVALID: "请求校验失败", + }; + return statusMap[status] || status || "未知状态"; + }, + getImportStatusType(status) { + const typeMap = { + SUCCESS: "success", + PARTIAL_SUCCESS: "warning", + FAILED: "error", + REQUEST_INVALID: "error", + }; + return typeMap[status] || "info"; + }, + getImportStatusMessage(result) { + const statusLabel = this.getImportStatusLabel(result.status); + return `${statusLabel},成功 ${result.successCount} 条,失败 ${result.failCount} 条`; + }, }, }; + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index b61cf6f..9835eaf 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -12,10 +12,10 @@ @@ -54,20 +54,20 @@ :data="menuList" row-key="menuId" :default-expand-all="isExpandAll" - :tree-props="{children: 'children', hasChildren: 'hasChildren'}" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" > - + - - - + + + - + @@ -102,7 +102,6 @@ - @@ -136,7 +135,7 @@ placement="bottom-start" width="460" trigger="click" - @show="$refs['iconSelect'].reset()" + @show="$refs.iconSelect.reset()" > @@ -168,7 +167,7 @@ - + 路由名称 @@ -180,7 +179,7 @@ - + 是否外链 @@ -194,7 +193,7 @@ - + 路由地址 @@ -207,7 +206,7 @@ - + 组件路径 @@ -219,7 +218,7 @@ - + 权限字符 @@ -232,7 +231,7 @@ - + 路由参数 @@ -242,7 +241,7 @@ - + 是否缓存 @@ -258,16 +257,16 @@ - + 显示状态 {{dict.label}} + v-for="item in showHideOptions" + :key="item.value" + :label="item.value" + >{{ item.label }} @@ -275,16 +274,16 @@ - + 菜单状态 {{dict.label}} + v-for="item in normalDisableOptions" + :key="item.value" + :label="item.value" + >{{ item.label }} @@ -304,36 +303,35 @@ import Treeselect from "@riophae/vue-treeselect" import "@riophae/vue-treeselect/dist/vue-treeselect.css" import IconSelect from "@/components/IconSelect" +const SHOW_HIDE_FALLBACK = [ + { label: "显示", value: "0" }, + { label: "隐藏", value: "1" } +] + +const NORMAL_DISABLE_FALLBACK = [ + { label: "正常", value: "0" }, + { label: "停用", value: "1" } +] + export default { name: "Menu", - dicts: ['sys_show_hide', 'sys_normal_disable'], + dicts: [], components: { Treeselect, IconSelect }, data() { return { - // 遮罩层 loading: true, - // 显示搜索条件 showSearch: true, - // 菜单表格树数据 menuList: [], - // 菜单树选项 menuOptions: [], - // 弹出层标题 title: "", - // 是否显示弹出层 open: false, - // 是否展开,默认全部折叠 isExpandAll: false, - // 重新渲染表格状态 refreshTable: true, - // 查询参数 queryParams: { menuName: undefined, - visible: undefined + status: undefined }, - // 表单参数 form: {}, - // 表单校验 rules: { menuName: [ { required: true, message: "菜单名称不能为空", trigger: "blur" } @@ -347,15 +345,38 @@ export default { } } }, + computed: { + // showHideOptions() { + // return this.normalizeDictOptions(this.dict.type.sys_show_hide, SHOW_HIDE_FALLBACK) + // }, + // normalDisableOptions() { + // return this.normalizeDictOptions(this.dict.type.sys_normal_disable, NORMAL_DISABLE_FALLBACK) + // } + }, created() { this.getList() }, methods: { - // 选择图标 + normalizeDictOptions(options, fallback) { + const source = Array.isArray(options) && options.length ? options : fallback + return source.map(item => ({ + ...item, + value: String(item.value) + })) + }, + normalizeMenuForm(data = {}) { + return { + ...data, + menuType: data.menuType !== undefined && data.menuType !== null ? String(data.menuType) : "M", + isFrame: data.isFrame !== undefined && data.isFrame !== null ? String(data.isFrame) : "1", + isCache: data.isCache !== undefined && data.isCache !== null ? String(data.isCache) : "0", + visible: data.visible !== undefined && data.visible !== null ? String(data.visible) : "0", + status: data.status !== undefined && data.status !== null ? String(data.status) : "0" + } + }, selected(name) { this.form.icon = name }, - /** 查询菜单列表 */ getList() { this.loading = true listMenu(this.queryParams).then(response => { @@ -363,7 +384,6 @@ export default { this.loading = false }) }, - /** 转换菜单数据结构 */ normalizer(node) { if (node.children && !node.children.length) { delete node.children @@ -374,23 +394,20 @@ export default { children: node.children } }, - /** 查询菜单下拉树结构 */ getTreeselect() { listMenu().then(response => { this.menuOptions = [] - const menu = { menuId: 0, menuName: '主类目', children: [] } + const menu = { menuId: 0, menuName: "主类目", children: [] } menu.children = this.handleTree(response.data, "menuId") this.menuOptions.push(menu) }) }, - // 取消按钮 cancel() { this.open = false this.reset() }, - // 表单重置 reset() { - this.form = { + this.form = this.normalizeMenuForm({ menuId: undefined, parentId: 0, menuName: undefined, @@ -401,19 +418,16 @@ export default { isCache: "0", visible: "0", status: "0" - } + }) this.resetForm("form") }, - /** 搜索按钮操作 */ handleQuery() { this.getList() }, - /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm") this.handleQuery() }, - /** 新增按钮操作 */ handleAdd(row) { this.reset() this.getTreeselect() @@ -425,7 +439,6 @@ export default { this.open = true this.title = "添加菜单" }, - /** 展开/折叠操作 */ toggleExpandAll() { this.refreshTable = false this.isExpandAll = !this.isExpandAll @@ -433,28 +446,26 @@ export default { this.refreshTable = true }) }, - /** 修改按钮操作 */ handleUpdate(row) { this.reset() this.getTreeselect() getMenu(row.menuId).then(response => { - this.form = response.data + this.form = this.normalizeMenuForm(response.data) this.open = true this.title = "修改菜单" }) }, - /** 提交按钮 */ - submitForm: function() { - this.$refs["form"].validate(valid => { + submitForm() { + this.$refs.form.validate(valid => { if (valid) { - if (this.form.menuId != undefined) { - updateMenu(this.form).then(response => { + if (this.form.menuId !== undefined) { + updateMenu(this.form).then(() => { this.$modal.msgSuccess("修改成功") this.open = false this.getList() }) } else { - addMenu(this.form).then(response => { + addMenu(this.form).then(() => { this.$modal.msgSuccess("新增成功") this.open = false this.getList() @@ -463,7 +474,6 @@ export default { } }) }, - /** 删除按钮操作 */ handleDelete(row) { this.$modal.confirm('是否确认删除名称为"' + row.menuName + '"的数据项?').then(function() { return delMenu(row.menuId) diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 5ebada5..7d1b107 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -1,605 +1,511 @@ - + - - - - - - - - - - - - - - - - 搜索 - 重置 - + + + + + + + + + + + + + + + 搜索 + 重置 + - - 新增 - - - 修改 - - - 删除 - - - 导出 - - + + 新增 + + + 修改 + + + 删除 + + + 导出 + + - - - - - - - - - - - - - {{ parseTime(scope.row.createTime) }} - - - - - 修改 - 删除 - handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']"> - 更多 - - 数据权限 - 分配用户 - - - - + + + + + + + + + + + + + {{ parseTime(scope.row.createTime) }} + + + + + 修改 + 删除 + handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']"> + + + 数据权限 + 分配用户 + + + + - + - - - - - - - - - - 权限字符 - - - - - - - - - {{dict.label}} - - - - 展开/折叠 - 全选/全不选 - 父子联动 - - - - - - - + + + + + + + + + + 权限字符 + + + + + + + + + 正常 + 停用 + + + + 展开/折叠 + 全选/全不选 + 父子联动 + + + + + + + - - - - - - - - - - - - - - 展开/折叠 - 全选/全不选 - 父子联动 - - - - + + + + + + + + + + + + + + 展开/折叠 + 全选/全不选 + 父子联动 + + + + - + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index b0d0cbc..bedb856 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -4,9 +4,9 @@ - + - + - + + - - - 搜索 重置 @@ -91,7 +75,7 @@ v-hasPermi="['system:user:remove']" >删除 - + - - + + @@ -131,9 +115,11 @@ > - + - + + + @@ -156,7 +142,7 @@ v-hasPermi="['system:user:edit']" >修改 - - + + - - + + @@ -207,14 +193,19 @@ - + + :label="(item.roleName || item.name) || ('角色' + item.roleId)" + :value="String(item.roleId)" + /> @@ -224,13 +215,10 @@ - + - {{dict.dictLabel}} + 启用 + 禁用 @@ -285,6 +273,7 @@