Browse Source

🧬更新菜单模块

master
wangxiang 3 years ago
parent
commit
7373fa488f
  1. 3
      src/api/platform/common/controller/org.ts
  2. 19
      src/components/Form/src/components/ApiCascader.vue
  3. 16
      src/views/common/org/OrgModal.vue
  4. 2
      src/views/common/org/org.data.ts

3
src/api/platform/common/controller/org.ts

@ -1,4 +1,5 @@
import { OrgParams, Org, OrgResult } from '/@/api/platform/common/entity/org'; import { OrgParams, Org, OrgResult } from '/@/api/platform/common/entity/org';
import { ResultVo } from '/@/api/common/base/entity';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
enum Api { enum Api {
@ -15,6 +16,6 @@ export const addOrg = (params: Partial<Org>) => defHttp.post({ url: Api.save, da
export const editOrg = (params: Partial<Org>) => defHttp.put({ url: Api.edit, data: params }); export const editOrg = (params: Partial<Org>) => defHttp.put({ url: Api.edit, data: params });
export const getOrg = (id: string) => defHttp.get<Org>({ url: `${Api.get}/${id}` }); export const getOrg = (id: string) => defHttp.get<ResultVo>({ url: `${Api.get}/${id}` });
export const delOrg = (ids: string) => defHttp.delete({ url: `${Api.del}/${ids}` }); export const delOrg = (ids: string) => defHttp.delete({ url: `${Api.del}/${ids}` });

19
src/components/Form/src/components/ApiCascader.vue

@ -1,10 +1,10 @@
<template> <template>
<a-cascader <a-cascader
v-model:value="state" v-model:value="state"
v-bind="$attrs"
: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>
@ -40,6 +40,7 @@
LoadingOutlined, LoadingOutlined,
[Cascader.name]: Cascader, [Cascader.name]: Cascader,
}, },
inheritAttrs: false,
props: { props: {
value: { value: {
type: Array, type: Array,
@ -64,10 +65,7 @@
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 }) {
@ -174,16 +172,6 @@
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,
@ -191,7 +179,6 @@
t, t,
handleChange, handleChange,
loadData, loadData,
handleRenderDisplay,
}; };
}, },
}); });

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

@ -14,7 +14,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 { ref, unref } from 'vue'; import { ref, unref} 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';
@ -45,7 +45,19 @@
break; break;
case 'edit': case 'edit':
props.title = '编辑机构'; props.title = '编辑机构';
await setFieldsValue(await getOrg(id)); const result = await getOrg(id);
const org = result.result;
if (result?.extend) {
await updateSchema({
field: 'regionIds',
componentProps: {
displayRender: value => {
result?.extend.join(' / ');
}
}
});
}
await setFieldsValue(org);
break; break;
} }
// : // :

2
src/views/common/org/org.data.ts

@ -173,7 +173,7 @@ export const institutionFormSchema: FormSchema[] = [
required: true required: true
}, },
{ {
field: 'addressIds', field: 'regionIds',
label: '城市地址', label: '城市地址',
component: 'ApiCascader', component: 'ApiCascader',
componentProps: { componentProps: {

Loading…
Cancel
Save