import { mockData } from './mock'; import { cloneDeep } from 'lodash-es'; import { Modal } from 'ant-design-vue'; import { createVNode, ref } from 'vue'; import { NsMessage } from '/nerv-lib/component'; import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; import { http } from '/nerv-lib/util'; import { origanizemanage } from '/@/api/origanizemanage'; export const formConfig = [ { field: 'field111', component: 'NsChildForm', componentProps: { title: '用户信息', schemas: [ { label: '账号', field: 'accountNo', component: 'NsInput', componentProps: { placeholder: '请输入账号', maxLength: 20, }, rules: [ { required: true, message: '请输入账号', }, ], }, { label: '姓名', field: 'realName', component: 'NsInput', componentProps: { placeholder: '请输入姓名', maxLength: 20, }, rules: [ { required: true, message: '请输入姓名', }, ], }, { label: '性别', field: 'sex', component: 'NsRadioGroup', componentProps: { radioType: 'radio', options: [ { label: '男', value: '男' }, { label: '女', value: '女' }, ], }, }, { label: '手机号', field: 'telephone', component: 'NsInput', componentProps: { placeholder: '请输入手机号', maxLength: 11, }, rules: [ { required: true, message: '请输入正确手机号格式', pattern: /^[1][3-9][0-9]{9}$/, }, ], }, { label: '邮箱', field: 'email', component: 'NsInput', componentProps: { placeholder: '请输入邮箱', maxLength: 30, }, }, { label: '组织关系', field: 'orgName', component: 'NsInput', defaultValue: JSON.parse(sessionStorage.getItem('userInfo')).orgName, componentProps: { disabled: true, maxLength: 30, }, }, ], }, }, ]; const options = ref([]); const getUserPerList = (transform, params = {}) => { return http.post(origanizemanage.queryUserPerList, { ...params }).then((res) => { return res.data?.map((item) => { item = { ...item, ...transform(item) }; return item; }); }); }; export const formConfig2 = (casData: any) => { // const transForm = (data) => { // data['label'] = data.orgName; // data['value'] = data.orgId; // data['isLeaf'] = false; // data['level'] = 1; // return data; // }; // getUserPerList(transForm).then((res) => { // options.value = [...res]; // }); return ref([ { field: 'information', component: 'NsCascader', componentProps: { placeholder: '请选择', displayRender: ({ labels, selectedOptions }: any) => { console.log(labels, selectedOptions); casData.value = selectedOptions.map(({ label, value }) => { return { label, value }; }); return labels.join('/'); }, // defaultValue: [1, 1, 3], // options: options, // changeOnSelect: true, loadData: (selectedOptions, options) => { console.log(selectedOptions, options, 'selectedOptions, options'); const targetOption = selectedOptions[selectedOptions.length - 1]; let transForm, params; // load options lazily if (!selectedOptions.length) { transForm = (data) => { data['label'] = data.orgName; data['value'] = data.orgId; data['isLeaf'] = false; data['level'] = 1; return data; }; getUserPerList(transForm).then((res) => { options.value = [...res]; }); } const id = targetOption?.value; const level = targetOption?.level; if (targetOption) { targetOption.loading = true; } if (level === 1) { transForm = (data) => { data['label'] = data.deptName; data['value'] = data.deptId; data['isLeaf'] = false; data['level'] = 2; return data; }; params = { orgId: id }; } else if (level === 2) { transForm = (data) => { data['label'] = data.roleName; data['value'] = data.roleId; data['level'] = 3; return data; }; params = { deptId: id }; } if (targetOption) { getUserPerList(transForm, { ...params }).then((res) => { targetOption.loading = false; targetOption.children = [...res]; }); } }, }, }, ]); };