From c4cbcc91d735319f23c4abb71dcd4e0e51e3f65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Mon, 16 May 2022 20:50:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=93=E6=9E=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/modules/permission.js | 31 ++++++ src/router/modules/system.js | 31 ------ .../modules/permission/{ => dept}/dept.js | 0 .../modules/permission/dept/deptEmployee.js | 76 +++++++++++++ .../employee}/employee.js | 0 src/views/chat/management.vue | 55 ++++----- src/views/permission/dept/index.vue | 105 +++++++++++++----- .../{system => permission}/employee/form.vue | 0 .../{system => permission}/employee/index.vue | 12 +- 9 files changed, 216 insertions(+), 94 deletions(-) rename src/store/modules/permission/{ => dept}/dept.js (100%) create mode 100644 src/store/modules/permission/dept/deptEmployee.js rename src/store/modules/{system => permission/employee}/employee.js (100%) rename src/views/{system => permission}/employee/form.vue (100%) rename src/views/{system => permission}/employee/index.vue (94%) diff --git a/src/router/modules/permission.js b/src/router/modules/permission.js index 6361e79..9912b12 100644 --- a/src/router/modules/permission.js +++ b/src/router/modules/permission.js @@ -18,6 +18,37 @@ export default [ icon: 'organization-chart', }, }, + { + path: 'employee', + name: 'EmployeeManagement', + component: () => import('@/views/permission/employee/index.vue'), + meta: { + title: '员工管理', + icon: 'Avatar', + }, + children: [ + { + path: 'create', + name: 'CreateEmployee', + component: () => import('@/views/permission/employee/form.vue'), + meta: { + title: '创建员工', + icon: 'Avatar', + hidden: true, + }, + }, + { + path: 'update/:id', + name: 'UpdateEmployee', + component: () => import('@/views/permission/employee/form.vue'), + meta: { + title: '编辑员工', + icon: 'Avatar', + hidden: true, + }, + }, + ], + }, ], }, ]; diff --git a/src/router/modules/system.js b/src/router/modules/system.js index 1b3b9fb..019fa28 100644 --- a/src/router/modules/system.js +++ b/src/router/modules/system.js @@ -9,37 +9,6 @@ export default [ layout: true, }, children: [ - { - path: 'employee', - name: 'EmployeeManagement', - component: () => import('@/views/system/employee/index.vue'), - meta: { - title: '员工管理', - icon: 'Avatar', - }, - children: [ - { - path: 'create', - name: 'CreateEmployee', - component: () => import('@/views/system/employee/form.vue'), - meta: { - title: '创建员工', - icon: 'Avatar', - hidden: true, - }, - }, - { - path: 'update/:id', - name: 'UpdateEmployee', - component: () => import('@/views/system/employee/form.vue'), - meta: { - title: '编辑员工', - icon: 'Avatar', - hidden: true, - }, - }, - ], - }, { path: 'customer', name: 'CustomerManagement', diff --git a/src/store/modules/permission/dept.js b/src/store/modules/permission/dept/dept.js similarity index 100% rename from src/store/modules/permission/dept.js rename to src/store/modules/permission/dept/dept.js diff --git a/src/store/modules/permission/dept/deptEmployee.js b/src/store/modules/permission/dept/deptEmployee.js new file mode 100644 index 0000000..b7a4942 --- /dev/null +++ b/src/store/modules/permission/dept/deptEmployee.js @@ -0,0 +1,76 @@ +import * as api from '@/api/permission/dept.js'; +import { ElMessage, ElMessageBox } from '@/plugins/element-plus'; +const state = () => ({ + code: 'DeptEmployeeManagement', + condition: {}, + list: [], + total: 0, + opts: { + init: false, + }, +}); +const getters = {}; +const mutations = { + setCondition: (state, data) => (state.condition = data), + setList: (state, data) => (state.list = data), + setTotal: (state, data) => (state.total = data), + setOpts: (state, data) => (state.opts = data), +}; +const actions = { + search: async ({ state, commit }) => { + let res = await api.searchEmployee(state.condition); + commit('setList', res || []); + if (!res) { + ElMessage.error('查询部门员工失败'); + } + return res; + }, + load: async ({ state, commit }) => { + commit('setOpts', { + init: true, + ...state.opts, + }); + }, + detail: async (context, id) => { + let res = await api.detail(id); + if (!res) { + ElMessage.error('加载详情失败'); + } + return res; + }, + save: async ({ dispatch }, data) => { + let save = data.id ? api.update : api.create; + let res = await save(data); + if (res) { + ElMessage.success('保存成功'); + dispatch('search'); + } else { + ElMessage.error('保存失败'); + } + return res; + }, + remove: async ({ dispatch }, idList) => { + if (!idList.length) { + ElMessage.warning('请选择要删除的数据'); + } else { + try { + await ElMessageBox.confirm('数据删除后无法恢复,确定要删除吗?', '危险操作'); + let res = await api.remove(idList.join(',')); + if (res) { + ElMessage.success('删除成功'); + dispatch('search'); + } else { + ElMessage.error('删除失败'); + } + } catch (e) { + console.info('取消删除', e); + } + } + }, +}; +export default { + state, + getters, + mutations, + actions, +}; diff --git a/src/store/modules/system/employee.js b/src/store/modules/permission/employee/employee.js similarity index 100% rename from src/store/modules/system/employee.js rename to src/store/modules/permission/employee/employee.js diff --git a/src/views/chat/management.vue b/src/views/chat/management.vue index 86d1ad2..fc50b9e 100644 --- a/src/views/chat/management.vue +++ b/src/views/chat/management.vue @@ -14,9 +14,7 @@ diff --git a/src/views/permission/dept/index.vue b/src/views/permission/dept/index.vue index a4508e4..92e97db 100644 --- a/src/views/permission/dept/index.vue +++ b/src/views/permission/dept/index.vue @@ -80,30 +80,60 @@
- - - + + + + + + + + + + + +
@@ -140,16 +170,18 @@ { immediate: true, deep: true } ); + const currentTab = ref('employee'); + /* 查询员工 */ const loading2 = ref(false); const refsTable = ref(null); - const employeeCode = computed(() => store.state.dept.employeeCode); - const employeeList = computed(() => _.cloneDeep(store.state.dept.employeeList)); - const employeeTotal = computed(() => store.state.dept.employeeTotal); + const employeeCode = computed(() => store.state.deptEmployee.employeeCode); + const employeeList = computed(() => _.cloneDeep(store.state.deptEmployee.employeeList)); + const employeeTotal = computed(() => store.state.deptEmployee.employeeTotal); const handleSearchEmployee = async () => { if (state.condition2.departmentId) { loading2.value = true; - await store.dispatch('dept/searchEmployee'); + await store.dispatch('deptEmployee/search'); loading2.value = false; } else { proxy.$message.error('请先选择部门'); @@ -158,8 +190,8 @@ watch( () => state.condition2, (value) => { - let search = value?.departmentId && value?.departmentId !== store.state.dept.condition2.departmentId; - store.commit('dept/setCondition2', _.cloneDeep(value)); + let search = value?.departmentId && value?.departmentId !== store.state.deptEmployee.condition.departmentId; + store.commit('deptEmployee/setCondition', _.cloneDeep(value)); if (search) { handleSearchEmployee(); } @@ -329,5 +361,18 @@ } } } + .content { + .el-tabs { + height: 100%; + display: flex; + flex-direction: column; + :deep(.el-tabs__content) { + height: 100%; + .el-tab-pane { + height: 100%; + } + } + } + } } diff --git a/src/views/system/employee/form.vue b/src/views/permission/employee/form.vue similarity index 100% rename from src/views/system/employee/form.vue rename to src/views/permission/employee/form.vue diff --git a/src/views/system/employee/index.vue b/src/views/permission/employee/index.vue similarity index 94% rename from src/views/system/employee/index.vue rename to src/views/permission/employee/index.vue index 59beec1..70d30c5 100644 --- a/src/views/system/employee/index.vue +++ b/src/views/permission/employee/index.vue @@ -97,10 +97,20 @@ minWidth: 160, }, { - label: '手机', + label: '手机号', prop: 'phone', width: 160, }, + { + label: '所在组织', + prop: 'depts', + minWidth: 160, + }, + { + label: '拥有角色', + prop: 'roles', + minWidth: 160, + }, { label: '邮箱', prop: 'email',