From d39df01bc39d8f06d7cd9018ec02f04cf9ad26b9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 7 May 2026 10:16:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E8=A3=85=E4=BF=AE?= =?UTF-8?q?=E9=AA=8C=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/routing_inspection/index.tsx | 146 ++++++++++++++++++ .../modals/RenovationAssign.tsx | 139 +++++++++++++++++ 2 files changed, 285 insertions(+) create mode 100644 src/pages/quality/routing_inspection/index.tsx create mode 100644 src/pages/quality/routing_inspection/modals/RenovationAssign.tsx diff --git a/src/pages/quality/routing_inspection/index.tsx b/src/pages/quality/routing_inspection/index.tsx new file mode 100644 index 0000000..cacc305 --- /dev/null +++ b/src/pages/quality/routing_inspection/index.tsx @@ -0,0 +1,146 @@ +import { MyColumns, MyProTableProps } from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseWorkOrdersAssignStatusEnum, + HouseWorkOrdersLevelEnum, + HouseWorkOrdersTypeEnum, +} from '@/gen/Enums'; +import WorkOrderShow from '@/pages/work_order/list/modals/WorkOrderShow'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import RenovationAssign from './modals/RenovationAssign'; + +export const RenovationWorkOrdersStatusEnum = { + Pending: { text: '待处理', color: '#FFA500', value: 'Pending' }, + Processing: { text: '处理中', color: '#1E90FF', value: 'Processing' }, + Completed: { text: '已完成', color: '#28A745', value: 'Completed' }, + Closed: { text: '已关闭', color: '#6C757D', value: 'Closed' }, +}; + +export default function Index({ title = '装修巡检' }) { + return ( + > + {...MyProTableProps.props} + headerTitle={title} + request={async (params, sort) => { + return MyProTableProps.request( + { + ...params, + type: [ + HouseWorkOrdersTypeEnum.RenovationInspection.value, + HouseWorkOrdersTypeEnum.RenovationAcceptance.value, + ], + }, + sort, + Apis.WorkOrder.HouseWorkOrders.List, + ); + }} + // toolBarRender={(action) => [toolBarRender(action)]} + columns={[ + MyColumns.ID({ search: false }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + MyColumns.EnumTag({ + title: '处理状态', + dataIndex: 'status', + valueEnum: RenovationWorkOrdersStatusEnum, + }), + { + title: '项目名称', + dataIndex: 'project_name', + hidden: true, + }, + MyColumns.EnumTag({ + title: '分配状态', + dataIndex: 'assign_status', + valueEnum: HouseWorkOrdersAssignStatusEnum, + }), + MyColumns.EnumTag({ + title: '工单类型', + dataIndex: 'type', + valueEnum: HouseWorkOrdersTypeEnum, + search: false, + }), + // MyColumns.EnumTag({ + // title: '报修位置', + // dataIndex: 'location', + // valueEnum: HouseWorkOrdersLocationEnum, + // search: false, + // }), + { + title: '位置信息', + dataIndex: ['asset_house', 'full_name'], + render: (_, record) => { + return ( + + {record?.asset_house?.full_name + ? record?.asset_house?.full_name + : record?.asset_project?.name} + + ); + }, + search: { + transform: (value) => { + return { house_name: value }; + }, + }, + }, + // { + // title: '工单描述', + // dataIndex: 'content', + // search: false, + // width: 200, // 关键:固定列宽(若父容器过窄,可设 minWidth: 200 优先保证列宽) + // render: (text) => ( + //
+ // {text} + //
+ // ), + // }, + MyColumns.EnumTag({ + title: '优先级', + dataIndex: 'level', + valueEnum: HouseWorkOrdersLevelEnum, + search: false, + }), + + { + title: '处理人', + dataIndex: ['assign_employee', 'name'], + search: false, + render: (_, record) => { + return `${record?.assign_employee?.name || ''}-${ + record?.assign_employee?.phone || '' + }`; + }, + }, + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + + ), + }), + ]} + /> + ); +} diff --git a/src/pages/quality/routing_inspection/modals/RenovationAssign.tsx b/src/pages/quality/routing_inspection/modals/RenovationAssign.tsx new file mode 100644 index 0000000..81dc470 --- /dev/null +++ b/src/pages/quality/routing_inspection/modals/RenovationAssign.tsx @@ -0,0 +1,139 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { HouseWorkOrdersTypeEnum } from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function WorkOrderAssign( + props: MyBetaModalFormProps & { item: any }, +) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`指派工单`} + wrapperCol={{ span: 19 }} + width="600px" + layout="horizontal" + labelCol={{ span: 5 }} + labelAlign="left" + trigger={ + + } + key={new Date().getTime()} + form={form} + request={async () => { + const res = await Apis.WorkOrder.HouseWorkOrders.Show({ + id: props.item.id, + }); + return { + title: res.data.title, + assign_employee_id: res.data.assign_employee_id, + content: res.data.content, + attachments: res.data.attachments, + complaint_type: res.data.complaint_type, + locationInfo: res.data.asset_house.full_name, + type: res.data.type, + }; + }} + onFinish={async (values: any) => { + Apis.WorkOrder.HouseWorkOrders.Assign({ + ...values, + id: props.item.id, + predict_complete_at: values.predict_complete_at, + }) + .then(() => { + props.reload?.(); + message.success('指派工单成功'); + return true; + }) + .catch(() => false); + }} + columns={[ + MyFormItems.EnumRadio({ + key: 'type', + title: '工单类型', + colProps: { span: 24 }, + valueEnum: HouseWorkOrdersTypeEnum, + readonly: true, + }), + { + key: 'locationInfo', + title: '房屋信息', + colProps: { span: 24 }, + readonly: true, + }, + { + key: 'content', + title: '工单描述', + colProps: { span: 24 }, + readonly: true, + fieldProps: { + disabled: true, + }, + }, + { valueType: 'divider' }, + + // MyFormItems.EnumRadio({ + // key: 'level', + // title: '优先级', + // colProps: { span: 24 }, + // valueEnum: HouseWorkOrdersLevelEnum, + // required: true, + // }), + // { + // key: 'predict_complete_at', + // title: '完成时间要求', + // valueType: 'date', + // colProps: { span: 24 }, + // formItemProps: { ...rulesHelper.text }, + // fieldProps: { + // disabledDate: (current: any) => { + // // 只能选今天及以后的日期 + // const today = new Date(); + // today.setHours(0, 0, 0, 0); // 设置为今天的00:00:00 + // return current && current < today; + // }, + // addonAfter: '前', + // }, + // }, + Selects?.Employees({ + title: '选择处理人', + key: 'assign_employees_id', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + params: { + companies_id: props.item.companies_id, + }, + required: true, + }), + { + key: 'assign_remark', + title: '备注', + valueType: 'textarea', + colProps: { span: 24 }, + fieldProps: { + rows: 3, + // placeholder: '请输入指派备注(可选)', + }, + }, + ]} + /> + ); +} -- 2.47.2