Browse Source

🎨 修复菜单授权bug

master
wangxiang 3 years ago
parent
commit
cf22cbc2e8
  1. 18
      src/components/Form/src/components/ApiCascader.vue
  2. 30
      src/views/common/org/OrgModal.vue

18
src/components/Form/src/components/ApiCascader.vue

@ -5,6 +5,7 @@
:options="options" :options="options"
:load-data="loadData" :load-data="loadData"
change-on-select change-on-select
:displayRender="handleRenderDisplay"
@change="handleChange" @change="handleChange"
> >
<template v-if="loading" #suffixIcon> <template v-if="loading" #suffixIcon>
@ -65,7 +66,10 @@
isLeaf: { isLeaf: {
type: Function as PropType<(arg: Recordable) => boolean>, type: Function as PropType<(arg: Recordable) => boolean>,
default: null, default: null,
} },
displayRenderArray: {
type: Array,
},
}, },
emits: ['change', 'defaultChange'], emits: ['change', 'defaultChange'],
setup(props, { emit }) { setup(props, { emit }) {
@ -172,11 +176,23 @@
emit('defaultChange', keys, args); emit('defaultChange', keys, args);
} }
function handleRenderDisplay({ labels, selectedOptions }) {
if (unref(emitData).length === selectedOptions.length) {
return labels.join(' / ');
}
if (props.displayRenderArray) {
return props.displayRenderArray.join(' / ');
}
return '';
}
return { return {
state, state,
options, options,
loading, loading,
t, t,
handleRenderDisplay,
handleChange, handleChange,
loadData, loadData,
}; };

30
src/views/common/org/OrgModal.vue

@ -14,14 +14,16 @@
* 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 { ref, unref} from 'vue'; import { reactive } from 'vue';
import { BasicForm, useForm } from '/@/components/Form'; import { BasicForm, useForm } from '/@/components/Form';
import { institutionFormSchema } from './org.data'; import { institutionFormSchema } from './org.data';
import { addOrg, getOrg, editOrg } from '/@/api/platform/common/controller/org'; import { addOrg, getOrg, editOrg } from '/@/api/platform/common/controller/org';
import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal';
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const tag = ref<Nullable<string>>(''); const state = reactive({
tag: ''
});
/** 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']);
const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, updateSchema }] = useForm({ const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, updateSchema }] = useForm({
@ -35,11 +37,11 @@
await resetFields(); await resetFields();
await clearValidate(); await clearValidate();
// //
tag.value = data._tag; state.tag = data._tag;
const id = data.record?.id; const id = data.record?.id;
const props: Partial<ModalProps> = { confirmLoading: false }; const props: Partial<ModalProps> = { confirmLoading: false };
// tag // tag
switch (unref(tag)) { switch (state.tag) {
case 'add': case 'add':
props.title = '新增机构'; props.title = '新增机构';
break; break;
@ -47,16 +49,13 @@
props.title = '编辑机构'; props.title = '编辑机构';
const result = await getOrg(id); const result = await getOrg(id);
const org = result.result; const org = result.result;
if (result?.extend) { org.regionIds = result.extend;
await updateSchema({ await updateSchema({
field: 'regionIds', field: 'regionIds',
componentProps: { componentProps: {
displayRender: value => { displayRenderArray: result.extend
result?.extend.join(' / '); }
} });
}
});
}
await setFieldsValue(org); await setFieldsValue(org);
break; break;
} }
@ -71,8 +70,9 @@
const formData = await validate(); const formData = await validate();
// //
setModalProps({ confirmLoading: true }); setModalProps({ confirmLoading: true });
formData.regionIds = formData.regionIds.join();
// tag // tag
switch (unref(tag)) { switch (state.tag) {
case 'add': case 'add':
await addOrg(formData); await addOrg(formData);
break; break;

Loading…
Cancel
Save