| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- import { appointment, appointPos, roleList } from '/@/api/sys/user';
- import { isAccountExist, IsPhoneExist } from '/@/api/system/system';
- import { BasicColumn } from '/@/components/Table';
- import { FormSchema } from '/@/components/Table';
- import { copyTransFun } from '/@/utils/fnUtils';
- import { emailRule, ChineseRegexp, EmailRegexp, phoneRegexp } from '/@/utils/rules';
- let olderPhoneNumber;
- export const columns: BasicColumn[] = [
- {
- title: '用户名',
- dataIndex: 'NAME',
- width: 120,
- },
- {
- title: '登录姓名',
- dataIndex: 'LOGIN_NAME',
- width: 120,
- },
- {
- title: '用户ID',
- dataIndex: 'EMPLOYEE_ID',
- width: 200,
- },
- {
- title: '性别',
- dataIndex: 'SEX',
- width: 80,
- slots: { customRender: 'SEX' },
- },
- ];
- export const searchFormSchema: FormSchema[] = [
- {
- field: 'username',
- label: '用户名',
- component: 'Input',
- colProps: { span: 8 },
- componentProps: {
- maxLength: 255,
- placeholder: '请输入用户名',
- },
- },
- {
- field: 'realName',
- label: '姓名',
- component: 'Input',
- colProps: { span: 8 },
- componentProps: {
- maxLength: 255,
- placeholder: '请输入姓名',
- },
- },
- ];
- export const accountFormSchema: FormSchema[] = [
- {
- field: 'id',
- label: 'id',
- component: 'Input',
- show: false,
- componentProps: {
- maxLength: 36,
- },
- },
- {
- field: 'loginName',
- label: '平台登录名',
- component: 'Input',
- colProps: { span: 12 },
- dynamicDisabled: false,
- componentProps: {
- maxLength: 36,
- placeholder: '请输入用户名',
- },
- dynamicRules: ({ values }) => {
- return [
- {
- required: true,
- validator(_, value) {
- return new Promise((resolve, reject) => {
- if (value == '') {
- reject('请输入用户名');
- } else if (ChineseRegexp.test(value)) {
- reject('用户名不能含有中文');
- } else if (EmailRegexp.test(value)) {
- reject('用户名不能为电子邮箱格式');
- } else {
- if (values.username != undefined && values.id == undefined) {
- isAccountExist(value).then(({ data }) => {
- if (data != null) {
- reject('用户名已存在');
- } else {
- resolve();
- }
- });
- } else {
- resolve();
- }
- }
- });
- },
- },
- ];
- },
- },
- {
- field: 'userName',
- label: '姓名',
- component: 'Input',
- colProps: { span: 12 },
- required: true,
- componentProps: {
- maxLength: 10,
- },
- },
- {
- label: '手机号',
- field: 'mobile',
- component: 'Input',
- colProps: { span: 12 },
- dynamicRules: ({ values }) => {
- return [
- {
- required: true,
- validator(_, value) {
- return new Promise((resolve, reject) => {
- if (value == '') {
- reject('请输入手机号');
- } else if (!phoneRegexp.test(value)) {
- reject('请输入正确的手机号');
- } else {
- if (values.phoneNumber != undefined) {
- // 此处可以用防抖函数优化性能
- IsPhoneExist(value).then(({ data }) => {
- if (data != null) {
- reject('手机号已存在');
- } else {
- resolve();
- }
- });
- } else {
- resolve();
- }
- }
- });
- },
- },
- ];
- },
- componentProps({ formActionType }) {
- const { clearValidate } = formActionType;
- return {
- onChange(value) {
- if (value == olderPhoneNumber) {
- clearValidate('phoneNumber');
- }
- },
- };
- },
- },
- {
- field: 'pwd',
- label: '密码',
- component: 'InputPassword',
- required: true,
- colProps: { span: 12 },
- rules: [
- { required: true, message: '密码不能为空' },
- { pattern: /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W)[\S]{8,30}$/, message: '密码中必须包含大小写 字母、数字、特殊字符,至少8个字符,最多30个字符' }
- ]
- },
- {
- field: 'sex',
- label: '性别',
- component: 'RadioButtonGroup',
- required: true,
- componentProps: {
- options: [
- { label: "男", value: '1' },
- { label: "女", value: '0' },
- ],
- },
- },
- {
- field: 'sszw',
- component: 'ApiTreeSelect',
- label: '所属职位',
- componentProps: {
- placeholder: '请选择职位',
- api: async () => {
- var data = await appointment();
- copyTransFun(data as any as any[]);
- return data;
- },
- onChange(value) {
- sszw.value = value;
- },
- },
- },
- {
- field: 'ssgw',
- label: '所属岗位',
- colProps: { span: 24 },
- component: 'ApiTreeSelect',
- componentProps: ({ formModel }) => {
- const selectValue = formModel.sszw;
- return {
- params: selectValue,
- api: async (params) => {
- return params ? await appointPos(params) : [];
- },
- onChange(value) {
- ssgw.value = value;
- },
- }
- }
- },
- // {
- // field: 'userjs',
- // component: 'ApiTreeSelect',
- // label: '角色列表',
- // componentProps: {
- // placeholder: '请选择角色',
- // api: async () => {
- // var data = await roleList();
- // return data;
- // },
- // onChange(value) {
- // userjs.value = value;
- // },
- // },
- // },
- {
- label: '角色',
- field: 'userjs',
- component: 'Select',
- colProps: { span: 24 },
- slot: 'roleSlot',
- rules: [
- {
- required: true,
- message: '请选择角色',
- type: 'array',
- },
- ],
- },
- ];
|