Compare commits
No commits in common. "d8d2e9f8e43e30960c5526b627cc482eb343a8b7" and "128296b675faf0cd6b654001b9fb56f7dcf83078" have entirely different histories.
d8d2e9f8e4
...
128296b675
|
|
@ -3,7 +3,7 @@ import { areaOptions } from "@web/src/data/area-options";
|
||||||
export const defaultFields = [
|
export const defaultFields = [
|
||||||
// 基本信息组
|
// 基本信息组
|
||||||
{ name: 'username', label: '用户名', type: 'text',required: true, group: '基本信息', order: 1 },
|
{ name: 'username', label: '用户名', type: 'text',required: true, group: '基本信息', order: 1 },
|
||||||
// { name: 'showname', label: '显示名称', type: 'text', group: '基本信息', order: 2 },
|
{ name: 'showname', label: '显示名称', type: 'text', group: '基本信息', order: 2 },
|
||||||
{ name: 'idNumber', label: '身份证号', type: 'text', group: '基本信息', order: 3 },
|
{ name: 'idNumber', label: '身份证号', type: 'text', group: '基本信息', order: 3 },
|
||||||
{ name: 'officerId', label: '警号', type: 'text', group: '基本信息', order: 4 },
|
{ name: 'officerId', label: '警号', type: 'text', group: '基本信息', order: 4 },
|
||||||
{ name: 'phoneNumber', label: '手机号', type: 'text', group: '基本信息', order: 5 },
|
{ name: 'phoneNumber', label: '手机号', type: 'text', group: '基本信息', order: 5 },
|
||||||
|
|
@ -35,7 +35,6 @@ export const defaultFields = [
|
||||||
group: '基本信息',
|
group: '基本信息',
|
||||||
order: 9 },
|
order: 9 },
|
||||||
{ name: 'source', label: '来源', type: 'text', group: '基本信息', order: 10 },
|
{ name: 'source', label: '来源', type: 'text', group: '基本信息', order: 10 },
|
||||||
{name: 'department', label: '部门', type: 'text', group: '基本信息', order: 11 },
|
|
||||||
|
|
||||||
// 政治信息组
|
// 政治信息组
|
||||||
{ name: 'politicalStatus',
|
{ name: 'politicalStatus',
|
||||||
|
|
@ -128,7 +127,7 @@ export const defaultFields = [
|
||||||
|
|
||||||
// 培训信息组
|
// 培训信息组
|
||||||
{ name: 'trainType', label: '培训类型', type: 'text', group: '培训信息', order: 28 ,dependsOn:{field: 'hasTrain', value: '是'}},
|
{ name: 'trainType', label: '培训类型', type: 'text', group: '培训信息', order: 28 ,dependsOn:{field: 'hasTrain', value: '是'}},
|
||||||
{ name: 'trainInstitute', label: '培训机构', type: 'text', group: '培训信息', order: 29 ,dependsOn: {field: 'hasTrain', value: '是'} },
|
{ name: 'trainInstitute', label: '培训机构', type: 'text', group: '培训信息', order: 29 ,dependsOn: {field: 'hasTrain', value: '是'}},
|
||||||
{ name: 'trainMajor', label: '培训专业', type: 'text', group: '培训信息', order: 30 ,dependsOn: {field: 'hasTrain', value: '是'}},
|
{ name: 'trainMajor', label: '培训专业', type: 'text', group: '培训信息', order: 30 ,dependsOn: {field: 'hasTrain', value: '是'}},
|
||||||
{ name: 'hasTrain',
|
{ name: 'hasTrain',
|
||||||
label: '是否参加培训',
|
label: '是否参加培训',
|
||||||
|
|
@ -146,15 +145,13 @@ export const defaultFields = [
|
||||||
type: 'text',
|
type: 'text',
|
||||||
group: '鉴定信息',
|
group: '鉴定信息',
|
||||||
order: 32 ,
|
order: 32 ,
|
||||||
dependsOn: {field: 'hasCert', value: '是'},
|
dependsOn: {field: 'hasCert', value: '是'}},
|
||||||
isSystem: false},
|
|
||||||
{ name: 'certWork',
|
{ name: 'certWork',
|
||||||
label: '鉴定工种',
|
label: '鉴定工种',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
group: '鉴定信息',
|
group: '鉴定信息',
|
||||||
order: 33 ,
|
order: 33 ,
|
||||||
dependsOn: {field: 'hasCert', value: '是'},
|
dependsOn: {field: 'hasCert', value: '是'}},
|
||||||
isSystem: false},
|
|
||||||
{ name: 'hasCert',
|
{ name: 'hasCert',
|
||||||
label: '是否参加鉴定',
|
label: '是否参加鉴定',
|
||||||
type: 'radio',
|
type: 'radio',
|
||||||
|
|
@ -163,8 +160,7 @@ export const defaultFields = [
|
||||||
{ label: '否', value: '否' },
|
{ label: '否', value: '否' },
|
||||||
],
|
],
|
||||||
group: '鉴定信息',
|
group: '鉴定信息',
|
||||||
order: 34 ,
|
order: 34 },
|
||||||
isSystem: false},
|
|
||||||
|
|
||||||
// 工作信息组
|
// 工作信息组
|
||||||
{ name: 'equipment', label: '操作维护装备', type: 'textarea', group: '工作信息', order: 35 },
|
{ name: 'equipment', label: '操作维护装备', type: 'textarea', group: '工作信息', order: 35 },
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
import { Button, Form, Input, Select, DatePicker, Radio, message, Modal, Cascader, InputNumber } from "antd";
|
import { Button, Form, Input, Select, DatePicker, Radio, message, Modal, Cascader, InputNumber } from "antd";
|
||||||
import { useState, useMemo, useEffect } from "react";
|
import { useState, useMemo, useEffect } from "react";
|
||||||
import { useStaff } from "@nice/client";
|
import { useStaff } from "@nice/client";
|
||||||
|
|
@ -7,8 +9,7 @@ import InfoCard from './infoCard';
|
||||||
const StaffInfoWrite = () => {
|
const StaffInfoWrite = () => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
// 修改使用的hook方法
|
const { create, useCustomFields } = useStaff();
|
||||||
const { create, setCustomFieldValue, useCustomFields } = useStaff();
|
|
||||||
const { data: fields, isLoading: fieldsLoading } = useCustomFields();
|
const { data: fields, isLoading: fieldsLoading } = useCustomFields();
|
||||||
const [infoCards, setInfoCards] = useState<any[]>([]);
|
const [infoCards, setInfoCards] = useState<any[]>([]);
|
||||||
|
|
||||||
|
|
@ -160,44 +161,15 @@ const StaffInfoWrite = () => {
|
||||||
const onFinish = async (values: any) => {
|
const onFinish = async (values: any) => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
const formattedValues = {
|
||||||
// 创建基础员工记录
|
...values,
|
||||||
const staff = await create.mutateAsync({
|
birthplace: values.birthplace?.join('/'),
|
||||||
data: {
|
};
|
||||||
username: values.username,
|
|
||||||
password: '123456'
|
await create.mutateAsync({
|
||||||
}
|
data: formattedValues
|
||||||
});
|
});
|
||||||
|
|
||||||
// 过滤有效字段并转换值
|
|
||||||
const validEntries = Object.entries(values)
|
|
||||||
.filter(([_, value]) => value !== undefined && value !== null && value !== '')
|
|
||||||
.map(([fieldName, value]) => {
|
|
||||||
const field = fields?.find((f: any) => f.name === fieldName);
|
|
||||||
let processedValue = value;
|
|
||||||
|
|
||||||
// 处理特殊字段类型
|
|
||||||
if (field?.type === 'date' && value instanceof moment) {
|
|
||||||
processedValue = value.format('YYYY-MM-DD');
|
|
||||||
} else if (field?.type === 'cascader' && Array.isArray(value)) {
|
|
||||||
processedValue = value.join('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
return { field, value: processedValue };
|
|
||||||
})
|
|
||||||
.filter(item => item.field?.id); // 过滤有效字段定义
|
|
||||||
|
|
||||||
// 批量提交自定义字段
|
|
||||||
await Promise.all(
|
|
||||||
validEntries.map(({ field, value }) =>
|
|
||||||
setCustomFieldValue.mutateAsync({
|
|
||||||
staffId: staff.id,
|
|
||||||
fieldId: field.id,
|
|
||||||
value: String(value)
|
|
||||||
})
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
message.success("信息提交成功");
|
message.success("信息提交成功");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('提交出错:', error);
|
console.error('提交出错:', error);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue