Browse Source

💐 解决角色多选半选bug

master
wangxiang 3 years ago
parent
commit
4d8d2b2732
  1. 23
      kicc-ui/src/views/system/role/RoleDrawer.vue
  2. 9
      kicc-ui/src/views/system/role/index.vue
  3. 4
      kicc-ui/src/views/system/user/ResetPwdModal.vue
  4. 10
      kicc-ui/src/views/system/user/UserModal.vue
  5. 12
      kicc-ui/src/views/system/user/index.vue

23
kicc-ui/src/views/system/role/RoleDrawer.vue

@ -13,6 +13,7 @@
checkable checkable
:treeData="state.menuTree" :treeData="state.menuTree"
:replaceFields="{ title: 'name', key: 'id' }" :replaceFields="{ title: 'name', key: 'id' }"
@check="handleHalfCheckedKeysMerge"
/> />
</template> </template>
</BasicForm> </BasicForm>
@ -25,7 +26,7 @@
* Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved. * Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved.
* author entfrm开发团队-王翔 * author entfrm开发团队-王翔
*/ */
import { reactive } from 'vue'; import {reactive, toRaw} from 'vue';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from './role.data'; import { formSchema } from './role.data';
import { BasicDrawer, DrawerProps, useDrawerInner } from '/@/components/Drawer'; import { BasicDrawer, DrawerProps, useDrawerInner } from '/@/components/Drawer';
@ -34,12 +35,21 @@
import { addRole, editRole, getRole } from '/@/api/controller/system/role'; import { addRole, editRole, getRole } from '/@/api/controller/system/role';
import { listToTree } from "/@/utils/helper/treeHelper"; import { listToTree } from "/@/utils/helper/treeHelper";
/** 类型规范统一声明定义区域 */
interface WindowState {
tag: string;
menuTree: TreeItem[];
checkedKeys: string[];
}
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const state = reactive({ const state = reactive<WindowState>({
// //
tag: '', tag: '',
// //
menuTree: [] as TreeItem[], menuTree: [],
//
checkedKeys: []
}); });
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ /** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
@ -67,6 +77,7 @@
props.title = '编辑角色'; props.title = '编辑角色';
const result = await getRoleMenuIds(roleId); const result = await getRoleMenuIds(roleId);
const role = await getRole(roleId); const role = await getRole(roleId);
state.checkedKeys = result.extend;
await setFieldsValue(Object.assign(role, { menuIds: result.extend })); await setFieldsValue(Object.assign(role, { menuIds: result.extend }));
break; break;
} }
@ -74,6 +85,11 @@
setDrawerProps(props); setDrawerProps(props);
}); });
/** 处理选中的半复选框合并至勾选数据中 */
function handleHalfCheckedKeysMerge (checkedKeys: string[], e) {
state.checkedKeys = [...checkedKeys, ...e.halfCheckedKeys];
}
/** 处理弹出框提交 */ /** 处理弹出框提交 */
async function handleSubmit() { async function handleSubmit() {
try { try {
@ -81,6 +97,7 @@
const formData = await validate(); const formData = await validate();
// //
setDrawerProps({ confirmLoading: true }); setDrawerProps({ confirmLoading: true });
formData.menuIds = toRaw(state.checkedKeys);
// tag // tag
switch (state.tag) { switch (state.tag) {
case 'add': case 'add':

9
kicc-ui/src/views/system/role/index.vue

@ -56,8 +56,15 @@
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { reactive, toRaw } from 'vue'; import { reactive, toRaw } from 'vue';
/** 类型规范统一声明定义区域 */
interface TableState {
ids: string[];
single: boolean;
multiple: boolean;
}
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const state = reactive({ const state = reactive<TableState>({
// //
ids: [], ids: [],
// //

4
kicc-ui/src/views/system/user/ResetPwdModal.vue

@ -29,7 +29,7 @@
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
/** 类型规范统一声明定义区域 */ /** 类型规范统一声明定义区域 */
interface FormState { interface WindowState {
id: string; id: string;
newPassword: string; newPassword: string;
} }
@ -40,7 +40,7 @@
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const FormItem = Form.Item; const FormItem = Form.Item;
const useForm = Form.useForm; const useForm = Form.useForm;
const modelRef = reactive<FormState>({ const modelRef = reactive<WindowState>({
id: '', id: '',
newPassword: '' newPassword: ''
}); });

10
kicc-ui/src/views/system/user/UserModal.vue

@ -26,6 +26,12 @@
import { TreeItem } from "/@/components/Tree"; import { TreeItem } from "/@/components/Tree";
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
/** 类型规范统一声明定义区域 */
interface WindowState {
tag: string;
deptTree: TreeItem[];
}
export default defineComponent({ export default defineComponent({
name: 'UserModal', name: 'UserModal',
components: { BasicModal, BasicForm }, components: { BasicModal, BasicForm },
@ -33,11 +39,11 @@
setup(props, { emit }) { setup(props, { emit }) {
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const state = reactive({ const state = reactive<WindowState>({
// //
tag: '', tag: '',
// //
deptTree: [] as TreeItem[], deptTree: []
}); });
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({ const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({

12
kicc-ui/src/views/system/user/index.vue

@ -73,6 +73,14 @@
import { columns, searchFormSchema } from './user.data'; import { columns, searchFormSchema } from './user.data';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
/** 类型规范统一声明定义区域 */
interface TableState {
ids: string[];
single: boolean;
multiple: boolean;
searchInfo: Recordable;
}
export default defineComponent({ export default defineComponent({
name: 'UserManagement', name: 'UserManagement',
components: { components: {
@ -86,7 +94,7 @@
setup() { setup() {
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const state = reactive({ const state = reactive<TableState>({
// //
ids: [], ids: [],
// //
@ -94,7 +102,7 @@
// //
multiple: true, multiple: true,
// //
searchInfo: {} as Recordable searchInfo: {}
}); });
const { createConfirm } = useMessage(); const { createConfirm } = useMessage();
const { createMessage } = useMessage(); const { createMessage } = useMessage();

Loading…
Cancel
Save