fix/0524_ch
向文可 3 years ago
parent 7115c65f1a
commit 543c44dcc8

@ -51,6 +51,20 @@ const actions = {
} }
return res; return res;
}, },
enable: async ({ dispatch }, data) => {
try {
await ElMessageBox.confirm('确定要禁用该组织吗?', '危险操作');
let res = await api.update(data);
if (res) {
ElMessage.success((data.isEnable ? '启用' : '禁用') + '成功');
} else {
ElMessage.error((data.isEnable ? '启用' : '禁用') + '失败');
}
} catch (e) {
console.info('取消删除', e);
}
dispatch('search');
},
remove: async ({ dispatch }, idList) => { remove: async ({ dispatch }, idList) => {
if (!idList.length) { if (!idList.length) {
ElMessage.warning('请选择要删除的数据'); ElMessage.warning('请选择要删除的数据');

@ -71,7 +71,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="组织名称" prop="name"> <el-form-item label="组织名称" prop="name">
<el-input v-model="formState.form.name" /> <el-input v-model="formState.form.name" maxlength="10" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
@ -404,7 +404,7 @@
formState.formVisible = false; formState.formVisible = false;
}; };
const handleEnabled = (row) => { const handleEnabled = (row) => {
store.dispatch('dept/save', row); store.dispatch('dept/enable', row);
}; };
const handleSave = async () => { const handleSave = async () => {
formState.submitting = true; formState.submitting = true;

@ -133,6 +133,7 @@
/* 数据 */ /* 数据 */
const handleLoad = async () => { const handleLoad = async () => {
if (route.params.id) { if (route.params.id) {
loading.value = true;
const id = +route.params.id; const id = +route.params.id;
if (form.id !== id) { if (form.id !== id) {
let res = await store.dispatch('employee/detail', id); let res = await store.dispatch('employee/detail', id);
@ -141,6 +142,7 @@
permissionList.splice(0); permissionList.splice(0);
permissionList.push(...(await store.dispatch('employee/permission', id))); permissionList.push(...(await store.dispatch('employee/permission', id)));
form.roleIds = permissionList.map((item) => item.id); form.roleIds = permissionList.map((item) => item.id);
loading.value = false;
} }
}; };
onActivated(handleLoad); onActivated(handleLoad);

@ -45,6 +45,8 @@
<script setup lang="jsx"> <script setup lang="jsx">
import ElButton from '@/components/extra/ElButton.vue'; import ElButton from '@/components/extra/ElButton.vue';
import ElSwitch from '@/components/extra/ElSwitch.vue'; import ElSwitch from '@/components/extra/ElSwitch.vue';
import { ElTag } from 'element-plus/es/components/tag/index';
import 'element-plus/es/components/tag/style/css';
const router = useRouter(); const router = useRouter();
const store = useStore(); const store = useStore();
const loading = ref(false); const loading = ref(false);
@ -138,7 +140,7 @@
prop: 'roles', prop: 'roles',
minWidth: 160, minWidth: 160,
slots: { slots: {
default: ({ row }) => row.roleList?.map((item) => item.roleName).join(',') || '无', default: ({ row }) => row.roleList?.map((item) => <ElTag>{item.roleName}</ElTag>) || '无',
}, },
}, },
{ {
@ -203,4 +205,8 @@
}); });
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped>
:deep(.el-tag) {
margin: 2px @layout-space-small;
}
</style>

@ -53,10 +53,10 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="角色名称" prop="roleName"> <el-form-item label="角色名称" prop="roleName">
<el-input v-model="formState.form.roleName" /> <el-input v-model="formState.form.roleName" maxlength="10" />
</el-form-item> </el-form-item>
<el-form-item label="角色描述" prop="roleDesc"> <el-form-item label="角色描述" prop="roleDesc">
<el-input v-model="formState.form.roleDesc" /> <el-input v-model="formState.form.roleDesc" maxlength="30" />
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnable"> <el-form-item label="是否启用" prop="isEnable">
<el-switch v-model="formState.form.isEnable" /> <el-switch v-model="formState.form.isEnable" />
@ -92,7 +92,9 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="功能权限" prop="permissionIds"> <el-form-item label="功能权限" prop="permissionIds">
<el-checkbox v-model="checkAll"></el-checkbox> <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAll">
全选
</el-checkbox>
<el-tree <el-tree
ref="refsTree" ref="refsTree"
:data="permissionList" :data="permissionList"
@ -218,7 +220,7 @@
isEnable: true, isEnable: true,
menuIds: [], menuIds: [],
permissionIds: [], permissionIds: [],
departmentList: [], departmentList: [2],
}, },
rules1: { rules1: {
systemId: [{ required: true, message: '所属系统不能为空' }], systemId: [{ required: true, message: '所属系统不能为空' }],
@ -236,9 +238,18 @@
}); });
const refsTree = ref(null); const refsTree = ref(null);
const checkAll = ref(false); const checkAll = ref(false);
watch(checkAll, (value) => { const isIndeterminate = ref(false);
unref(refsTree).setCheckedKeys(value ? unref(permissionList).map((item) => item.id) : []); watch(
}); [permissionList, () => formState.form.permissionIds],
(value) => {
checkAll.value = value[0].length && value[0].every((item) => value[1].includes(item.id));
isIndeterminate.value = !checkAll.value && value[0].some((item) => value[1].includes(item.id));
},
{ immediate: true, deep: true }
);
const handleCheckAll = () => {
unref(refsTree).setCheckedKeys(unref(checkAll) ? unref(permissionList).map((item) => item.id) : []);
};
const handleLoadPermission = async (data) => { const handleLoadPermission = async (data) => {
permissionList.value = await store.dispatch('role/loadPermission', data.id); permissionList.value = await store.dispatch('role/loadPermission', data.id);
}; };
@ -319,7 +330,7 @@
isEnable: true, isEnable: true,
menuIds: [], menuIds: [],
permissionIds: [], permissionIds: [],
departmentList: [], departmentList: [2],
} }
) )
); );

Loading…
Cancel
Save