|
|
|
import { ref } from 'vue';
|
|
|
|
import { http } from '/nerv-lib/util';
|
|
|
|
import { origanizemanage } from '/@/api/origanizemanage';
|
|
|
|
export const formConfig = (disabled) => {
|
|
|
|
return ref([
|
|
|
|
{
|
|
|
|
field: 'field111',
|
|
|
|
component: 'NsChildForm',
|
|
|
|
componentProps: {
|
|
|
|
title: '用户信息',
|
|
|
|
schemas: [
|
|
|
|
{
|
|
|
|
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];
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
]);
|
|
|
|
};
|