import {BasicColumn} from '/@/components/Table'; import {FormSchema} from '/@/components/Table'; import {getAllRolesList, getAllTenantList} from "./user.api"; import { rules} from '/@/utils/helper/validator'; import { render } from '/@/utils/common/renderUtils'; export const columns: BasicColumn[] = [ { title: '用户账号', dataIndex: 'username', width: 120, }, { title: '用户姓名', dataIndex: 'realname', width: 100, }, { title: '头像', dataIndex: 'avatar', width: 120, customRender:render.renderAvatar, }, { title: '性别', dataIndex: 'sex', width: 80, sorter: true, customRender: ({text}) => { return render.renderDict(text, 'sex') } }, { title: '生日', dataIndex: 'birthday', width: 100, }, { title: '手机号', dataIndex: 'phone', width: 100, }, { title: '部门', width: 150, dataIndex: 'orgCodeTxt' }, { title: '负责部门', width: 150, dataIndex: 'departIds_dictText' }, { title: '状态', dataIndex: 'status_dictText', width: 80, } ]; export const recycleColumns: BasicColumn[] = [ { title: '用户账号', dataIndex: 'username', width: 100, }, { title: '用户姓名', dataIndex: 'realname', width: 100, }, { title: '头像', dataIndex: 'avatar', width: 80, customRender:render.renderAvatar, }, { title: '性别', dataIndex: 'sex', width: 80, sorter: true, customRender: ({text}) => { return render.renderDict(text, 'sex') } } ]; export const searchFormSchema: FormSchema[] = [ { label: '账号', field: 'username', component: 'JInput', colProps: {span: 6} }, { label: '性别', field: 'sex', component: 'JDictSelectTag', componentProps: { dictCode:'sex', placeholder:'请选择性别', stringToNumber:true }, colProps: {span: 6}, }, { label: '真实名称', field: 'realname', component: 'Input', colProps: {span: 6}, }, { label: '手机号码', field: 'phone', component: 'Input', colProps: {span: 6}, }, { label: '用户状态', field: 'status', component: 'JDictSelectTag', componentProps: { dictCode:'user_status', placeholder:'请选择状态', stringToNumber:true }, colProps: {span: 6}, } ]; export const formSchema: FormSchema[] = [ { label: '', field: 'id', component: 'Input', show:false }, { label: '用户账号', field: 'username', component: 'Input', dynamicDisabled: ({values}) => { return !!values.id; }, dynamicRules: ({model,schema}) =>rules.duplicateCheckRule("sys_user", "username",model,schema,true), }, { label: '登录密码', field: 'password', component: 'StrengthMeter', rules: [ { required: true, message: '请输入登录密码', }, ], }, { label: '确认密码', field: 'confirmPassword', component: 'InputPassword', dynamicRules: ({values}) => rules.confirmPassword(values,true) }, { label: '用户姓名', field: 'realname', required: true, component: 'Input', }, { label: '工号', field: 'workNo', required: true, component: 'Input', dynamicRules: ({model,schema}) =>rules.duplicateCheckRule( "sys_user", "work_no",model,schema,true), }, { label: '职务', field: 'post', required: false, component: 'JSelectPosition', componentProps: { rowKey:'code', labelKey:'name' }, }, { label: '角色', field: 'selectedroles', component: 'ApiSelect', componentProps: { mode: "multiple", api: getAllRolesList, labelField: 'roleName', valueField: 'id', }, }, { label: '所属部门', field: 'selecteddeparts', component: 'JSelectDept', componentProps:({formActionType,formModel}) => { return { sync:false, checkStrictly:true, defaultExpandLevel: 2, onSelect: (options,values) => { const {updateSchema} = formActionType; //所属部门修改后更新负责部门下拉框数据 updateSchema([{ field: 'departIds', componentProps: {options}, }]); //所属部门修改后更新负责部门数据 formModel.departIds&&(formModel.departIds = formModel.departIds.filter(item=>values.value.indexOf(item)>-1)); } } } }, { label: '租户', field: 'relTenantIds', component: 'ApiSelect', componentProps: { mode: "multiple", api: getAllTenantList, numberToString:true, labelField: 'name', valueField: 'id', } }, { label: '身份', field: 'userIdentity', component: 'RadioGroup', defaultValue: 1, componentProps:({ formModel }) => { return { options: [{label: '普通用户',value: 1,key: '1'},{label: '上级',value: 2,key: '2'}], onChange: () => { formModel.userIdentity==1&&(formModel.departIds=[]); } } }, }, { label: '负责部门', field: 'departIds', component: 'Select', componentProps: { mode: "multiple", }, ifShow: ({values}) => (values.userIdentity==2), }, { label: '头像', field: 'avatar', component: 'JImageUpload', componentProps: { fileMax:1 }, }, { label: '生日', field: 'birthday', component: 'DatePicker', }, { label: '性别', field: 'sex', component: 'JDictSelectTag', componentProps: { dictCode:'sex', placeholder:'请选择性别', stringToNumber:true }, }, { label: '邮箱', field: 'email', component: 'Input', rules: rules.rule('email',false), }, { label: '手机号码', field: 'phone', component: 'Input', dynamicRules: ({model,schema}) => { return [ {...rules.duplicateCheckRule( "sys_user", "phone",model,schema,true)[0]}, { pattern: /^1[3|4|5|7|8|9][0-9]\d{8}$/, message: '手机号码格式有误' } ]; }, }, { label: '座机', field: 'telephone', component: 'Input', rules: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }] }, { label: '工作流引擎', field: 'activitiSync', defaultValue: 1, component: 'JDictSelectTag', componentProps: { dictCode:'activiti_sync', type:'radio', stringToNumber:true }, } ]; export const formPasswordSchema: FormSchema[] = [ { label: '用户账号', field: 'username', component: 'Input', componentProps: {readOnly: true} }, { label: '登录密码', field: 'password', component: 'StrengthMeter', componentProps: { placeholder: '请输入登录密码', }, rules: [ { required: true, message: '请输入登录密码', }, ], }, { label: '确认密码', field: 'confirmPassword', component: 'InputPassword', dynamicRules: ({values}) => rules.confirmPassword(values,true) } ]; export const formAgentSchema: FormSchema[] = [{ label: '', field: 'id', component: 'Input', show: false },{ field: 'userName', label: '用户名', component: 'Input', componentProps: { readOnly: true, allowClear:false } }, { field: 'agentUserName', label: '代理人用户名', required: true, component: 'JSelectUser', componentProps: { rowKey:'username', labelKey:'realname', maxSelectCount:10 }, }, { field: 'startTime', label: '代理开始时间', component: 'DatePicker', required: true, componentProps: { showTime: true, valueFormat: 'YYYY-MM-DD HH:mm:ss', placeholder: '请选择代理开始时间', } }, { field: 'endTime', label: '代理结束时间', component: 'DatePicker', required: true, componentProps: { showTime: true, valueFormat: 'YYYY-MM-DD HH:mm:ss', placeholder: '请选择代理结束时间', } }, { field: 'status', label: '状态', component: 'JDictSelectTag', defaultValue: "1", componentProps: { dictCode:'valid_status', type:'radioButton' }, }]