diff --git a/src/components/Select.tsx b/src/components/Select.tsx index b6d129a..0ebb2f5 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -570,4 +570,39 @@ export const Selects = { }, }; }, + //获取项目仪表 + AssetMeters(props?: PropsType): ReturnType { + const { + title = '选择仪表', + key = 'id', + required = false, + hideInTable = true, + ...rest + } = props ?? {}; + + return { + title: title, + key: key, + valueType: 'select', + hideInTable: hideInTable, + formItemProps: { ...(required ? rulesHelper.number : {}) }, + request: async (params) => + ( + await Apis.Meter.HouseMeters.List({ + keywords: params?.KeyWords, + ...params, + asset_projects_id: params?.asset_projects_id, + }) + ).data, + ...rest, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, + }; + }, }; diff --git a/src/pages/charge/tasks/index.tsx b/src/pages/charge/tasks/index.tsx index 5c23cda..6ae1e83 100644 --- a/src/pages/charge/tasks/index.tsx +++ b/src/pages/charge/tasks/index.tsx @@ -98,6 +98,18 @@ export default function Index({ title = '账单任务' }) { render: (_, item: any, index, action) => ( + + Apis.HouseCharage.HouseChargeTasks.ExecuteTask({ + id: item.id, + }).then(() => action?.reload()) + } + /> Apis.HouseCharage.HouseChargeTasks.Delete({ diff --git a/src/pages/charge/tasks/modals/TaskShow.tsx b/src/pages/charge/tasks/modals/TaskShow.tsx index 795010d..daf0a05 100644 --- a/src/pages/charge/tasks/modals/TaskShow.tsx +++ b/src/pages/charge/tasks/modals/TaskShow.tsx @@ -1,8 +1,14 @@ -import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; import { MyModal } from '@/components/MyModal'; import { Apis } from '@/gen/Apis'; import { HouseChargeTaskDetailsStatusEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; export default function AssetInfo(props: MyBetaModalFormProps) { return ( @@ -61,6 +67,24 @@ export default function AssetInfo(props: MyBetaModalFormProps) { dataIndex: 'processed_time', search: false, }, + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + Apis.HouseCharage.HouseChargeTaskDetails.CreateHouseBill({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), ]} /> } diff --git a/src/pages/customer/components/CustomerHouse.tsx b/src/pages/customer/components/CustomerHouse.tsx new file mode 100644 index 0000000..e7d94e4 --- /dev/null +++ b/src/pages/customer/components/CustomerHouse.tsx @@ -0,0 +1,74 @@ +import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; +import { Apis } from '@/gen/Apis'; +import { HouseMeterReadingsOperationTypeEnum } from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; + +export default function Index(props: MyBetaModalFormProps) { + console.log(props?.item, 'pppppppp'); + return ( + <> + + MyProTableProps.request( + { ...params, phone: props?.item?.phone }, + sort, + Apis.Archive.HouseOccupants.CustomerHouseByPhone, + ) + } + // search={false} + // options={false} + columns={[ + MyColumns.EnumTag({ + title: '操作类型', + dataIndex: 'operation_type', + valueEnum: HouseMeterReadingsOperationTypeEnum, + }), + { + title: '抄表读数', + dataIndex: 'current_reading', + search: false, + }, + { + title: '抄表用量', + dataIndex: 'usage_amount', + search: false, + }, + { + title: '抄表时间', + dataIndex: 'reading_time', + search: false, + }, + { + title: '抄表人', + dataIndex: ['company_employee', 'name'], + search: false, + }, + { + title: '备注', + dataIndex: 'remark', + search: false, + }, + { + title: '账单状态', + dataIndex: 'bill_status', + render: (value) => (value ? '已生成' : '未生成'), + search: false, + }, + // MyColumns.Option({ + // render: (_, item: any, index, action) => ( + // + // {/* 只有未生成账单的抄表记录,且不是重置读数,才显示修正按钮 */} + // {!item?.bill_status && + // item?.operation_type !== + // HouseMeterReadingsOperationTypeEnum.ResetReading.value && ( + // + // )} + // + // ), + // }), + ]} + /> + + ); +} diff --git a/src/pages/customer/components/CustomerInfo.tsx b/src/pages/customer/components/CustomerInfo.tsx new file mode 100644 index 0000000..1d2b29d --- /dev/null +++ b/src/pages/customer/components/CustomerInfo.tsx @@ -0,0 +1,70 @@ +import { MyBetaModalFormProps, renderTextHelper } from '@/common'; +import { HouseOccupantsCardTypeEnum, SexEnum } from '@/gen/Enums'; +import { ProCard, ProDescriptions } from '@ant-design/pro-components'; +import { Image, Space } from 'antd'; + +export default function info(props: MyBetaModalFormProps) { + const { item } = props; + + return ( + + + + +
{item?.name}
+
+ + + {item?.phone} + + + + + + + + + + {props?.item?.id_card} + + + + + {props?.item?.card_front_image?.map( + (res: any, index: number) => { + return ( + + ); + }, + )} + + + {props?.item?.card_back_image?.map( + (res: any, index: number) => { + return ( + + ); + }, + )} + + + +
+
+
+ ); +} diff --git a/src/pages/customer/index.tsx b/src/pages/customer/index.tsx new file mode 100644 index 0000000..85b7811 --- /dev/null +++ b/src/pages/customer/index.tsx @@ -0,0 +1,63 @@ +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, + usePageTabs, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ProTable } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Space } from 'antd'; + +export default function Index({ title = '房客关系' }) { + const navigate = useNavigate(); + // 注册当前页面为标签页 + usePageTabs({ + tabKey: 'archive-asset-houses', + tabLabel: title, + }); + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Archive.HouseOccupants.CustomerList, + ) + } + columns={[ + MyColumns.ID(), + { + title: '客户名称', + dataIndex: 'name', + search: { + transform: (value) => { + return { name: value }; + }, + }, + }, + { + title: '客户电话', + dataIndex: 'phone', + }, + MyColumns.UpdatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + { + navigate(`/customer/show/${item.id}`); + }} + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/customer/show/$id.tsx b/src/pages/customer/show/$id.tsx new file mode 100644 index 0000000..86c1fdc --- /dev/null +++ b/src/pages/customer/show/$id.tsx @@ -0,0 +1,63 @@ +import { MyPageContainer, usePageTabs } from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ProCard } from '@ant-design/pro-components'; +import { useParams } from '@umijs/max'; +import { Tabs } from 'antd'; +import { useEffect, useState } from 'react'; +import CustomerHouse from '../components/CustomerHouse'; +import CustomerInfo from '../components/CustomerInfo'; + +export default function Show({ title = '客户档案' }) { + const { id } = useParams<{ id: string }>(); + const [data, setShow] = useState({}); + + // 注册标签页 + const { addTab } = usePageTabs({ + tabKey: `customer-detail-${id}`, + tabLabel: `${data?.name}档案` || title, + }); + + const loadShow = () => { + let paramsId: any = { id: id ?? 0 }; + Apis.Archive.HouseOccupants.Show(paramsId).then((res) => { + setShow(res?.data); + // 更新标签页标题 + if (res?.data?.name) { + addTab({ + key: `customer-detail-${id}`, + label: `${res?.data?.name}档案`, + path: `/customer/show/${id}`, + }); + } + }); + }; + + useEffect(() => { + loadShow(); + }, [id]); + + let items = [ + { + label: '关联房屋', + key: '1', + closable: false, + children: ( + { + loadShow(); + }} + /> + ), + }, + ]; + + return ( + + + + + + + ); +} diff --git a/src/pages/meter/tasks/index.tsx b/src/pages/meter/tasks/index.tsx index 4f25fcf..e248912 100644 --- a/src/pages/meter/tasks/index.tsx +++ b/src/pages/meter/tasks/index.tsx @@ -15,10 +15,10 @@ import { Space } from 'antd'; import TaskCreate from './modals/TaskCreate'; import TaskShow from './modals/TaskShow'; -export default function Index({ title = '账单任务' }) { +export default function Index({ title = '仪表账单' }) { // 注册当前页面为标签页 usePageTabs({ - tabKey: 'house_charge_tasks', + tabKey: 'house_meter_tasks', tabLabel: title, }); diff --git a/src/pages/meter/tasks/modals/TaskCreate.tsx b/src/pages/meter/tasks/modals/TaskCreate.tsx index 37b1215..94af007 100644 --- a/src/pages/meter/tasks/modals/TaskCreate.tsx +++ b/src/pages/meter/tasks/modals/TaskCreate.tsx @@ -7,7 +7,10 @@ import { } from '@/common'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { HouseMeterTasksGenerationMethodEnum } from '@/gen/Enums'; +import { + HouseMetersMeterTypeEnum, + HouseMeterTasksGenerationMethodEnum, +} from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -30,8 +33,11 @@ export default function Create(props: MyBetaModalFormProps) { form.resetFields(); // 清空表单数据 } }} - onFinish={async (values) => - Apis.Meter.HouseMeterTasks.Store(values) + onFinish={async (values: any) => + Apis.Meter.HouseMeterTasks.Store({ + ...values, + data: [values?.data_id], + }) .then(() => { props.reload?.(); message.success(props.title + '账单任务创建成功'); @@ -53,26 +59,7 @@ export default function Create(props: MyBetaModalFormProps) { }, }, }), - { - valueType: 'dependency', - name: ['asset_projects_id'], - columns: ({ asset_projects_id }) => { - return [ - Selects?.ChargeStandard({ - title: '选择收费标准', - key: 'house_charge_standards_id', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - }, - }), - ]; - }, - }, + { key: 'month', title: '选择生成月份', @@ -118,14 +105,118 @@ export default function Create(props: MyBetaModalFormProps) { }, formItemProps: { ...rulesHelper.text }, }, - MyFormItems.EnumRadio({ - key: 'generation_method', - title: '收款渠道', + key: 'meter_type', + title: '仪表类型', colProps: { span: 24 }, - valueEnum: HouseMeterTasksGenerationMethodEnum, + valueEnum: HouseMetersMeterTypeEnum, required: true, + fieldProps: { + onChange: () => { + // 切换计量单位时清空计费模式 + form.setFieldValue('generation_method', undefined); + form.setFieldValue('data', undefined); + }, + }, }), + { + name: ['meter_type'], + valueType: 'dependency', + columns: ({ meter_type }: any) => { + return meter_type === HouseMetersMeterTypeEnum.CommonMeter.value + ? [ + MyFormItems.EnumRadio({ + key: 'generation_method', + title: '生成方式', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(HouseMeterTasksGenerationMethodEnum), + ); + delete obj.Unit; + delete obj.Building; + return obj; + }, + required: true, + }), + Selects?.AssetMeters({ + title: '选择仪表', + params: { + asset_projects_id: + form.getFieldValue('asset_projects_id'), + // 仪表类型必须为房屋仪表 + meter_type: HouseMetersMeterTypeEnum.CommonMeter.value, + }, + key: 'data_id', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ] + : meter_type === HouseMetersMeterTypeEnum.HouseMeter.value + ? [ + MyFormItems.EnumRadio({ + key: 'generation_method', + title: '生成方式', + colProps: { span: 24 }, + valueEnum: HouseMeterTasksGenerationMethodEnum, + required: true, + }), + { + name: ['generation_method'], + valueType: 'dependency', + columns: ({ generation_method }: any) => { + return generation_method === + HouseMeterTasksGenerationMethodEnum.Building.value + ? [ + Selects?.AssetBuildings({ + title: '选择楼栋', + key: 'data_id', + params: { + asset_projects_id: + form.getFieldValue('asset_projects_id'), + }, + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ] + : generation_method === + HouseMeterTasksGenerationMethodEnum.Unit.value + ? [ + Selects?.AssetUnits({ + title: '选择单元', + key: 'data_id', + params: { + asset_projects_id: + form.getFieldValue('asset_projects_id'), + }, + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ] + : generation_method === + HouseMeterTasksGenerationMethodEnum.Meter.value + ? [ + Selects?.AssetMeters({ + title: '选择仪表', + params: { + asset_projects_id: + form.getFieldValue('asset_projects_id'), + // 仪表类型必须为房屋仪表 + meter_type: + HouseMetersMeterTypeEnum.HouseMeter.value, + }, + key: 'data_id', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ] + : []; + }, + }, + ] + : []; + }, + }, ]} /> ); diff --git a/src/pages/meter/tasks/modals/TaskShow.tsx b/src/pages/meter/tasks/modals/TaskShow.tsx index 795010d..9887856 100644 --- a/src/pages/meter/tasks/modals/TaskShow.tsx +++ b/src/pages/meter/tasks/modals/TaskShow.tsx @@ -17,7 +17,7 @@ export default function AssetInfo(props: MyBetaModalFormProps) { MyProTableProps.request( { ...params, house_charge_tasks_id: props?.item?.id }, sort, - Apis.HouseCharage.HouseChargeTaskDetails.List, + Apis.Meter.HouseMeterTasks.List, ) } columns={[