import { ref } from 'vue'; import { http } from '/nerv-lib/util'; import { origanizemanage } from '/@/api/origanizemanage'; export const formConfig = (disabled) => { return ref([ { label: '账号', field: 'accountNo', component: 'NsInput', componentProps: { placeholder: '请输入账号', maxLength: 20, disabled, }, rules: [ { required: true, message: '请输入账号', }, ], }, { label: '姓名', field: 'realName', component: 'NsInput', componentProps: { placeholder: '请输入姓名', maxLength: 20, }, rules: [ { required: true, message: '请输入姓名', }, ], }, { label: '性别', field: 'sex', component: 'NsRadioGroup', defaultValue: '男', 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, }, rules: [ { pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, message: '请输入正确的邮箱格式', trigger: 'blur', }, ], }, { label: '组织关系', field: 'orgName', component: 'NsInput', defaultValue: JSON.parse(sessionStorage.getItem(import.meta.env.VITE_PUBLIC_PATH)).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) => { 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('/'); }, 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]; }); } }, }, }, ]); };