This commit is contained in:
xuziqiang
2024-05-15 17:29:42 +08:00
commit d0155dbe3c
7296 changed files with 1832517 additions and 0 deletions

View File

@@ -0,0 +1,481 @@
<!-- @format -->
<template>
<ns-view-add-form
:schemas="formSchema"
title="新增员工"
:model="data"
api="/api/parking_merchant/objs/person/add" />
</template>
<script lang="ts">
import { defineComponent, reactive } from 'vue';
import { dateUtil } from '/nerv-lib/util/date-util';
export default defineComponent({
name: 'NsViewUserAdd',
setup() {
const data = reactive({});
let formSchema = reactive([
{
field: 'information',
label: '基本信息',
displayFormItem: false,
class: 'ns-form-item-full',
component: 'NsChildForm',
componentProps: {
title: '基本信息',
schemas: [
{
field: 'personName',
label: '姓名',
component: 'NsInput',
rules: [
{
required: true,
trigger: 'change',
},
{
pattern: /^[\u4E00-\u9FA5]{1,18}$/,
message: '只支持中文长度不得超过36个字符',
trigger: 'change',
},
],
},
{
field: 'sex',
component: 'NsRadioGroup',
label: '性别',
defaultValue: 1,
componentProps: {
styleType: { flex: true },
options: [
{
label: '男',
value: 1,
},
{
label: '女',
value: 0,
},
],
},
rules: [
{
required: true,
message: '不能为空',
},
],
},
{
field: 'personNum',
label: '员工编号',
component: 'NsInput',
rules: [
{
required: true,
message: '员工编号不能为空',
trigger: 'blur',
},
{
pattern: /^[a-zA-Z\d]{0,16}$/,
message: '不支持特殊字符、中文、空格长度不得超过16个字符',
trigger: 'blur',
},
],
},
{
field: 'idCard',
label: '身份证号',
component: 'NsInput',
rules: [
// {
// required: true,
// trigger: 'blur',
// },
{
pattern:
'^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$',
message: '请输入正确的身份证号',
trigger: 'blur',
},
],
},
{
field: 'telNum',
label: '手机号码',
component: 'NsInput',
rules: [
{
required: true,
message: '手机号码不能为空',
trigger: 'change',
},
{
pattern: '^[1][3456789][\\d]{9}$',
message: '请输入正确的中国大陆手机号',
trigger: 'blur',
},
],
},
{
field: 'nation',
component: 'nsSelectApi',
label: '民族',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
pageSize: 100,
code: 'MZ',
},
placeholder: '请选择用户民族',
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
autoSelectFirst: false,
},
// rules: [
// {
// required: true,
// message: '请选择民族',
// },
// ],
},
{
field: 'departmentUuidList',
component: 'nsSelectApi',
label: '所属部门',
componentProps: {
api: '/api/community/objs/Department',
params: {
pageSize: 100,
},
mode: 'multiple',
resultField: 'data.data',
labelField: 'departmentName',
valueField: 'departmentUuid',
autoSelectFirst: false,
},
},
{
field: 'departmentMainUuid',
component: 'nsSelectApi',
label: '主部门',
params: {
departmentUuidList: 'fieldLink.departmentUuidList',
},
componentProps: {
api: '/api/community/objs/Department',
resultField: 'data.data',
labelField: 'departmentName',
valueField: 'departmentUuid',
autoSelectFirst: false,
dependency: 'departmentUuidList',
},
},
// {
// field: 'roleUuid',
// component: 'nsSelectApi',
// label: '员工角色',
// componentProps: {
// api: '/api/community/objs/Role',
// params: {
// pageSize: 100,
// },
// resultField: 'data.data',
// labelField: 'roleName',
// valueField: 'roleUuid',
// immediate: true,
// autoSelectFirst: false,
// },
// rules: [
// {
// required: false,
// message: '请选择角色',
// },
// ],
// },
{
field: 'homeAddress',
label: '居住地址',
component: 'NsInputCity',
componentProps: {
api: '/api/parking_merchant/objs/BaseArea',
},
fieldMap: ['homeAddress', 'provinceCode', 'cityCode', 'areaCode'],
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'address',
label: '详细地址',
component: 'NsInput',
rules: [
// {
// required: true,
// trigger: 'blur',
// },
{
pattern:
'^[a-zA-Z\\d\u4e00-\u9fa5]{0,36}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,36}[\u4e00-\u9fa5]$',
message: '不支持特殊字符、空格长度不得超过36个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'personStatus',
component: 'NsSelect',
label: '状态',
componentProps: {
options: [
{
label: '在职',
value: 1,
},
{
label: '离职',
value: 2,
},
],
labelField: 'label',
valueField: 'value',
immediate: false,
// defaultValue: 1,
},
rules: [
{
required: true,
message: '不能为空',
},
],
},
{
field: 'personPicUuid',
component: 'NsUpload',
label: '员工图片',
componentProps: {
// 上传的地址
url: '/api/parking_merchant/objs/sys/FileUpload',
// 上传的图片大小
maxSize: 5242880,
// 上传的图片类型
fileType: ['jpg', 'png', 'jpeg'],
// 展示图片数量
count: 1,
// 上传的文件类型0-证书1-图片2-身份证件
uploadType: 1,
fieldName: 'certificateUuid',
// imgUrl: '/api/community/objs/FacePic/',
// imgModuleUrl:
// '/api/community/objs/FacePic/8f50a2f2dee948c4bfab58928d182897',
},
},
{
field: 'idCardPicUuid',
component: 'NsUpload',
label: '身份证扫描件',
componentProps: {
// 上传的地址
url: '/api/parking_merchant/objs/sys/FileUpload',
// 上传的图片大小
maxSize: 5242880,
// 上传的图片类型
fileType: ['jpg', 'png', 'jpeg'],
// 展示图片数量
count: 1,
// 上传的文件类型0-证书1-图片2-身份证件
uploadType: 2,
// imgUrl: '/api/community/objs/FacePic/',
// imgModuleUrl:
// '/api/community/objs/FacePic/8f50a2f2dee948c4bfab58928d182897',
},
// rules: [
// {
// required: true,
// message: '请上传图片',
// },
// ],
},
],
},
},
{
field: 'location',
label: '其他信息',
displayFormItem: false,
class: 'ns-form-item-full',
component: 'NsChildForm',
componentProps: {
title: '其他信息',
schemas: [
{
field: 'maritalStatus',
component: 'nsSelectApi',
label: '婚姻状况',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
code: 'HYZK',
},
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
autoSelectFirst: false,
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'education',
component: 'nsSelectApi',
label: '文化程度',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
code: 'WHCD',
},
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
autoSelectFirst: false,
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'entryTime',
component: 'NsDatePicker',
defaultValue: dateUtil(new Date()),
label: '入职日期',
componentProps: {
valueFormat: 'X',
format: 'YYYY-MM-DD',
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'graduatedSchool',
label: '毕业院校',
component: 'NsInput',
rules: [
// {
// required: true,
// message: '毕业院校不能为空',
// trigger: 'blur',
// },
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,24}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,24}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过24个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'major',
label: '所属专业',
component: 'NsInput',
rules: [
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,24}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,24}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过24个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'email',
label: '邮箱地址',
component: 'NsInput',
rules: [
{
required: false,
trigger: 'blur',
},
{
pattern: /^\w+@[a-z0-9]+\.[a-z]{2,4}$/,
message: '邮箱格式不正确',
trigger: 'blur',
},
],
},
{
field: 'residenceAddress',
label: '户籍地址',
component: 'NsInput',
rules: [
// {
// required: true,
// message: '户籍地址不能为空',
// trigger: 'blur',
// },
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,64}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,64}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过64个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'remarks',
label: '备注',
component: 'NsTextarea',
rules: [
{
required: false,
trigger: 'blur',
},
{
pattern: /^[\u4e00-\u9fa5]{0,120}$|^.{0,255}$/,
message: '0-255个字符中文占2位',
trigger: 'blur',
},
],
},
],
},
},
]);
return {
formSchema,
data,
};
},
});
</script>
<style scoped lang="less">
.top {
border-bottom-color: #ecedef;
border-bottom-style: solid;
border-bottom-width: 1px;
}
</style>

View File

@@ -0,0 +1,186 @@
<template>
<ns-view-detail api="/api/parking_merchant/objs/person/detail" :detail="detail" />
</template>
<script lang="ts">
import { defineComponent, reactive } from 'vue';
import { getCodeNameFromValue } from './index';
import { dateUtil } from '/nerv-lib/util/date-util';
export default defineComponent({
name: 'NsViewUserDetail',
setup() {
const detail = [
{
title: '基本信息',
items: [
{
label: '姓名',
name: 'personName',
},
{
label: '性别',
name: 'sex',
format: (value: any, data: any) => {
switch (value) {
case 1:
return '男';
case 0:
return '女';
default:
return '-';
}
},
},
{
label: '员工编号',
name: 'personNum',
},
{
label: '身份证号',
name: 'idCard',
},
{
label: '手机号码',
name: 'telNum',
},
{
label: '民族',
name: 'nation',
format: (value: any, data: any) => {
console.log(value, data, 'value');
if (!value) return;
let temp = getCodeNameFromValue('MZ', value);
if (temp) {
return temp;
} else {
return '-';
}
},
},
{
label: '所属部门',
name: 'departmentNameList',
format: (value: any, data: any) => {
if (value) {
let temp = '';
let jdgeTemp = false;
value.forEach((element: any[]) => {
if (jdgeTemp) {
temp += ',';
temp += element.join('/');
} else {
jdgeTemp = true;
temp += element.join('/');
}
});
return temp;
} else {
return '-';
}
},
},
{
label: '主部门',
name: 'departmentMainName',
},
{
label: '员工角色',
name: 'roleVOList',
format: (value: any) => {
if (value) {
let apusic = '';
value.forEach((element: any) => {
apusic = element.roleName;
});
return apusic;
} else {
return '-';
}
},
},
{
label: '居住地址',
name: 'homeAddress',
},
{
label: '详细地址',
name: 'address',
},
{
label: '员工图片',
name: 'personPicUuid',
type: 'image',
format: (value: string, data: any) => {
return '/api/parking_merchant/objs/sys/ParkPic/' + value;
},
},
{
label: '身份证扫描件',
name: 'idCardPicUuid',
type: 'image',
format: (value: any, data: any) => {
return '/api/parking_merchant/objs/sys/IdCardPic/' + value;
},
},
],
},
{
title: '其他信息',
items: [
{
label: '婚姻状况',
name: 'maritalStatus',
format: (value: any, data: any) => {
let temp = getCodeNameFromValue('HYZK', value);
if (temp) {
return temp;
} else {
return '-';
}
},
},
{
label: '文化程度',
name: 'education',
format: (value: any, data: any) => {
let temp = getCodeNameFromValue('WHCD', value);
if (temp) {
return temp;
} else {
return '-';
}
},
},
{
label: '入职日期',
name: 'entryTime',
format: (value: any) => {
return dateUtil(value).format('YYYY-MM-DD HH:mm:ss');
},
},
{
label: '毕业院校',
name: 'graduatedSchool',
},
{
label: '所属专业',
name: 'major',
},
{
label: '邮箱地址',
name: 'email',
},
{
label: '户籍地址',
name: 'residenceAddress',
},
{
label: '备注',
name: 'remarks',
},
],
},
];
return { detail };
},
});
</script>

View File

@@ -0,0 +1,461 @@
<!-- @format -->
<template>
<ns-view-add-form
:schemas="formSchema"
title="编辑员工"
:model="data"
api="/api/parking_merchant/objs/person/update" />
</template>
<script lang="ts">
import { defineComponent, reactive, ref } from 'vue';
import moment from 'moment';
import { http } from '/nerv-lib/util/http';
import { useRouter } from 'vue-router';
export default defineComponent({
name: 'NsViewUserEdit',
setup() {
const data = reactive({});
const router = useRouter();
const params = router.currentRoute.value.query;
const homeAddress = ref('');
const provinceCode = ref('');
const areaCode = ref('');
const cityCode = ref('');
const personPicImageUrl = ref('');
const idCardImageUrl = ref('');
if (params.personUuid !== undefined) {
http
.get(`/api/parking_merchant/objs/person/detail`, { personUuid: params.personUuid })
.then((res) => {
data.personName = res.data.personName;
data.sex = res.data.sex;
data.sexName = res.data.sex ? '男' : '女';
data.personNum = res.data.personNum;
data.idCard = res.data.idCard;
data.major = res.data.major;
data.address = res.data.address;
data.graduatedSchool = res.data.graduatedSchool;
data.residenceAddress = res.data.residenceAddress;
data.telNum = res.data.telNum;
data.remarks = res.data.remarks;
data.education = res.data.education;
data.maritalStatus = res.data.maritalStatus;
data.personStatus = res.data.personStatus;
data.nation = res.data.nation;
data.homeAddress = res.data.homeAddress;
data.areaCode = res.data.areaCode;
data.cityCode = res.data.cityCode; //moment(new Date()).format('YYYY-MM-DD 23:59:59')
data.entryTime = moment(new Date(res.data.entryTime)).format('x');
data.provinceCode = res.data.provinceCode;
homeAddress.value = res.data.homeAddress;
areaCode.value = res.data.areaCode;
cityCode.value = res.data.cityCode;
provinceCode.value = res.data.provinceCode;
personPicImageUrl.value = `/api/parking_merchant/objs/sys/ParkPic/${res.data.personPicUuid}`;
idCardImageUrl.value = `/api/parking_merchant/objs/sys/IdCardPic/${res.data.idCardPicUuid}`;
// formSchema.value.filter(
// (item) => item.field === 'avatar'
// )[0].componentProps.baseImageUrl = `/api/community/objs/ParkPic/${data.avatar}`;
})
.catch((err) => {
console.log(err);
});
}
let formSchema = reactive([
{
label: '用户uuid',
field: 'personUuid',
component: 'NsInputText',
show: false,
defaultValue: params.personUuid,
},
{
field: 'information',
label: '基本信息',
displayFormItem: false,
class: 'ns-form-item-full',
component: 'NsChildForm',
componentProps: {
title: '基本信息',
schemas: [
{
field: 'personName',
label: '姓名',
component: 'NsInputText',
},
{
field: 'sexName',
component: 'NsInputText',
label: '性别',
viewOnly: true,
},
{
field: 'sex',
component: 'NsInputText',
show: false,
label: '性别',
},
{
field: 'personNum',
label: '员工编号',
component: 'NsInputText',
},
{
field: 'idCard',
label: '身份证号',
component: 'NsInputText',
// rules: [
// {
// pattern:
// '^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$',
// message: '请输入正确的身份证号',
// trigger: 'blur',
// },
// ],
},
{
field: 'telNum',
label: '手机号码',
component: 'NsInput',
rules: [
{
required: true,
message: '手机号码不能为空',
trigger: 'change',
},
{
pattern: '^[1][3456789][\\d]{9}$',
message: '请输入正确的中国大陆手机号',
trigger: 'blur',
},
],
},
{
field: 'nation',
component: 'nsSelectApi',
label: '民族',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
pageSize: 100,
code: 'MZ',
},
placeholder: '请选择用户民族',
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
autoSelectFirst: false,
},
rules: [
// {
// required: true,
// message: '请选择民族',
// },
],
},
{
field: 'departmentUuidList',
component: 'nsSelectApi',
label: '所属部门',
componentProps: {
api: '/api/community/objs/Department',
params: {
pageSize: 100,
},
mode: 'multiple',
resultField: 'data.data',
labelField: 'departmentName',
valueField: 'departmentUuid',
autoSelectFirst: false,
},
},
{
field: 'departmentMainUuid',
component: 'nsSelectApi',
label: '主部门',
params: {
departmentUuidList: 'fieldLink.departmentUuidList',
},
componentProps: {
api: '/api/community/objs/Department',
resultField: 'data.data',
labelField: 'departmentName',
valueField: 'departmentUuid',
autoSelectFirst: false,
dependency: 'departmentUuidList',
},
},
{
field: 'homeAddress',
label: '居住地址',
component: 'NsInputCity',
componentProps: {
api: '/api/parking_merchant/objs/BaseArea',
defaultHomeAddress: homeAddress,
defaultProvinceCode: provinceCode,
defaultCityCode: cityCode,
defaultAreaCode: areaCode,
},
fieldMap: ['homeAddress', 'provinceCode', 'cityCode', 'areaCode'],
rules: [
// {
// required: true,
// message: '不能为空',
// },
],
},
{
field: 'address',
label: '详细地址',
component: 'NsInput',
rules: [
// {
// required: true,
// trigger: 'blur',
// },
{
pattern:
'^[a-zA-Z\\d\u4e00-\u9fa5]{0,36}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,36}[\u4e00-\u9fa5]$',
message: '不支持特殊字符、空格长度不得超过36个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'personStatus',
component: 'NsSelect',
label: '状态',
componentProps: {
options: [
{
label: '在职',
value: 1,
},
{
label: '离职',
value: 2,
},
],
labelField: 'label',
valueField: 'value',
immediate: false,
// defaultValue: 1,
},
rules: [
{
required: true,
message: '不能为空',
},
],
},
{
field: 'personPicUuid',
component: 'NsUpload',
label: '员工图片',
componentProps: {
// 上传的地址
url: '/api/parking_merchant/objs/sys/FileUpload',
// 上传的图片大小
maxSize: 5242880,
// 上传的图片类型
fileType: ['jpg', 'png', 'jpeg'],
// 展示图片数量
count: 1,
// 上传的文件类型0-证书1-图片2-身份证件
uploadType: 1,
fieldName: 'certificateUuid',
baseImageUrl: personPicImageUrl,
},
},
{
field: 'idCardPicUuid',
component: 'NsUpload',
label: '身份证扫描件',
componentProps: {
// 上传的地址
url: '/api/parking_merchant/objs/sys/FileUpload',
// 上传的图片大小
maxSize: 5242880,
// 上传的图片类型
fileType: ['jpg', 'png', 'jpeg'],
// 展示图片数量
count: 1,
// 上传的文件类型0-证书1-图片2-身份证件
uploadType: 2,
baseImageUrl: idCardImageUrl,
},
// rules: [
// {
// required: true,
// message: '请上传图片',
// },
// ],
},
],
},
},
{
field: 'location',
label: '其他信息',
displayFormItem: false,
class: 'ns-form-item-full',
component: 'NsChildForm',
componentProps: {
title: '其他信息',
schemas: [
{
field: 'maritalStatus',
component: 'nsSelectApi',
label: '婚姻状况',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
code: 'HYZK',
},
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
autoSelectFirst: false,
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'education',
component: 'nsSelectApi',
// type: 'WHCD',
label: '文化程度',
componentProps: {
api: '/api/community/objs/DictItem',
params: {
code: 'WHCD',
},
resultField: 'data',
labelField: 'dictName',
valueField: 'dictValue',
immediate: true,
defaultValue: '4',
autoSelectFirst: false,
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'entryTime',
component: 'NsDatePicker',
label: '入职日期',
componentProps: {
valueFormat: 'x',
format: 'YYYY-MM-DD',
},
// rules: [
// {
// required: true,
// message: '不能为空',
// },
// ],
},
{
field: 'graduatedSchool',
label: '毕业院校',
component: 'NsInput',
rules: [
// {
// required: true,
// message: '毕业院校不能为空',
// trigger: 'blur',
// },
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,24}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,24}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过24个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'major',
label: '所属专业',
component: 'NsInput',
rules: [
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,24}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,24}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过24个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'email',
label: '邮箱地址',
component: 'NsInput',
rules: [
{
pattern: /^\w+@[a-z0-9]+\.[a-z]{2,4}$/,
message: '邮箱格式不正确',
trigger: 'blur',
},
],
},
{
field: 'residenceAddress',
label: '户籍地址',
component: 'NsInput',
rules: [
{
pattern:
/^[a-zA-Z\\d\u4e00-\u9fa5]{0,64}$|^[\u4e00-\u9fa5][a-zA-Z\\d\u4e00-\u9fa5]{0,64}[\u4e00-\u9fa5]$/,
message: '不支持特殊字符、空格长度不得超过64个字符中文占2位',
trigger: 'blur',
},
],
},
{
field: 'remarks',
label: '备注',
component: 'NsTextarea',
rules: [
{
pattern: /^[\u4e00-\u9fa5]{0,120}$|^.{0,255}$/,
message: '0-255个字符中文占2位',
trigger: 'blur',
},
],
},
],
},
},
]);
return {
formSchema,
data,
};
},
});
</script>
<style scoped lang="less">
.top {
border-bottom-color: #ecedef;
border-bottom-style: solid;
border-bottom-width: 1px;
}
</style>

View File

@@ -0,0 +1,81 @@
import { http } from '/nerv-lib/util/http';
let dictionary: any;
let dicCodeValueMap: any;
export function getDicCodeValue() {
asyncLoadDictTree();
return dicCodeValueMap;
}
export function getDictionary() {
return dictionary;
}
export function asyncLoadDictTree(): Promise<any> {
return http
.get('/api/community/objs/DictTree')
.then((res) => {
if (res) {
const response = res;
if (response && response['success']) {
const mainMap = {};
const codeValueMap = {};
transferData(response, 'data', mainMap);
setCodeValueMap(response, 'data', codeValueMap);
dicCodeValueMap = codeValueMap;
dictionary = mainMap;
return mainMap;
}
}
})
.catch((error) => {
console.log(error);
});
}
export function transferData(data, attri, mainMap): {} {
const objs = data[attri];
if (objs && objs instanceof Array && objs.length > 0) {
objs.forEach((it) => {
mainMap[it['dictCode']] = it;
mainMap[it['dictCode'] + '_' + 'name'] = it['dictName'];
if (it['subList'] && it['subList'] instanceof Array) {
mainMap[it['dictCode'] + '_' + 'subList'] = it['subList'];
transferData(it, 'subList', mainMap);
} else {
mainMap[it['dictCode'] + '_' + 'subList'] = [];
return;
}
});
} else {
return '';
}
}
export function setCodeValueMap(data: any, attri: any, map: any) {
const objs = data[attri];
if (objs && objs instanceof Array && objs.length > 0) {
objs.forEach((it) => {
map[it['dictParentCode'] + '_' + it['dictValue']] = it['dictName'];
map[it['dictParentCode'] + '_' + it['dictCode']] = it['dictName'];
if (it['subList'] && it['subList'] instanceof Array) {
setCodeValueMap(it, 'subList', map);
} else {
// map[it['dictParentCode'] + '_' + it['dictCode']] = '';
// map[it['dictParentCode'] + '_' + it['dictValue']] = '';
return;
}
});
} else {
return;
}
}
/**
* 根据code和value获取显示名
* @param code 字典code
* @param value 值
*/
export function getCodeNameFromValue(code, value): string {
console.log(code, value, 'code, value');
const name =
getDicCodeValue() && getDicCodeValue()[code + '_' + value]
? getDicCodeValue()[code + '_' + value]
: '';
return name;
}

View File

@@ -0,0 +1,218 @@
<template>
<ns-view-list-table v-bind="tableConfig" rowKey="uuid" />
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
name: 'NsViewUserList',
setup() {
const tableConfig = {
title: '员工管理',
api: '/api/parking_merchant/objs/person/pageList',
params: {
page: 0,
pageSize: 10,
},
rowSelection: null,
// scroll: { x: 1150 },
columns: [
{
title: '姓名',
dataIndex: 'personName',
width: 200,
},
{
title: '性别',
dataIndex: 'sex',
width: 100,
customRender: (value) => {
switch (value.text) {
case 0:
return '女';
case 1:
return '男';
default:
return '-';
}
},
},
{
title: '员工编号',
dataIndex: 'personNum',
width: 150,
},
{
title: '手机号码',
dataIndex: 'telNum',
width: 150,
},
{
title: '账号状态',
dataIndex: 'accountState',
width: 100,
customRender: (value) => {
switch (value.text) {
case 1:
return '启用';
case 0:
return '禁用';
default:
return '-';
}
},
},
{
title: '用户状态',
width: 100,
dataIndex: 'personStatus',
customRender: (value) => {
switch (value.text) {
case 1:
return '在职';
case 2:
return '离职';
default:
return '-';
}
},
},
],
columnActions: {
title: '操作',
// width: 250,
actions: [
// {
// label: '查看',
// name: 'userDetail',
// dynamicParams: 'personUuid',
// route: '/userManage/user/detail',
// },
{
label: '重置密码',
dynamicParams: 'personUuid',
name: 'UserReset',
confirm: {
title: '提示',
content: `确认重置密码吗?`,
},
isReload: true,
api: '/api/parking_merchant/objs/person/reset',
},
{
label: '编辑',
dynamicParams: 'personUuid',
name: 'UserEdit',
route: '/userManage/user/edit',
},
{
label: '删除',
dynamicParams: {
personUuid: 'personUuid',
},
name: 'UserRemove',
ifShow: (record: any) => {
return record.personStatus !== 1;
},
confirm: true,
isReload: true,
api: '/api/parking_merchant/objs/person/delete',
},
{
label: '删除',
name: 'UserRemove',
dynamicParams: {
uuid: 'uuid',
},
ifShow: (record: any) => {
return record.personStatus === 1;
},
confirm: {
title: '警告',
content: '在职员工不可删除!',
},
},
],
},
headerActions: [
{
label: '新增用户',
name: 'UserAdd',
type: 'primary',
route: '/userManage/user/add',
},
],
formConfig: {
schemas: [
{
field: 'accountState',
label: '账号状态',
component: 'NsSelect',
componentProps: {
placeholder: '请选择',
options: [
{
label: '全部',
value: '',
},
{
label: '启用',
value: 1,
},
{
label: '禁用',
value: 0,
},
],
},
},
{
field: 'personStatus',
label: '用户状态',
component: 'NsSelect',
componentProps: {
placeholder: '请选择',
options: [
{
label: '全部',
value: '',
},
{
label: '在职',
value: 1,
},
{
label: '离职',
value: 2,
},
],
},
},
{
field: 'telNum',
label: '手机号码',
component: 'NsInput',
componentProps: {
placeholder: '请输入手机号码',
},
},
{
field: 'personName',
label: '用户姓名',
component: 'NsInput',
componentProps: {
placeholder: '请输入用户姓名',
},
},
],
},
rowKey: 'personUuid',
};
return {
tableConfig,
};
},
});
</script>
<style lang="less" scoped></style>