diff --git a/.umirc.ts b/.umirc.ts index 4701b29..a35a6e5 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -14,8 +14,8 @@ export default defineConfig({ }, proxy: { '/api/': { - // target: 'http://yt:8003', - target: 'http://10.39.13.80:8003', + target: 'http://yt:8003', + // target: 'http://10.39.13.80:8003', // target: 'http://we6f9c65.natappfree.cc', // target: 'https://loanos-test.nchl.net/', changeOrigin: true, diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1b6457c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" +} diff --git a/src/common/components/MyButtons.tsx b/src/common/components/MyButtons.tsx index ad96773..49a343c 100644 --- a/src/common/components/MyButtons.tsx +++ b/src/common/components/MyButtons.tsx @@ -77,7 +77,7 @@ export const MyButtons = { return ( { onRestore?.({ id: item.id }).then(() => action?.reload()); }} - okText="Yes" - cancelText="No" + okText="是" + cancelText="否" > 已禁用 @@ -73,8 +73,8 @@ export const MyColumns = { onConfirm={() => { onSoftDelete?.({ id: item.id }).then(() => action?.reload()); }} - okText="Yes" - cancelText="No" + okText="是" + cancelText="否" > 已启用 diff --git a/src/components/Select.tsx b/src/components/Select.tsx index c5eec3d..bbd3115 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -38,4 +38,73 @@ export const SysSelects = { ...rest, }; }, + // 楼栋下拉框 + AssetBuildings(props?: PropsType): ReturnType { + const { + title = '楼栋', + key = 'asset_buildings_id', + required = false, + hideInTable = true, + ...rest + } = props ?? {}; + + return { + title: title, + key: key, + valueType: 'select', + hideInTable: hideInTable, + formItemProps: { ...(required ? rulesHelper.number : {}) }, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + }, + request: async (params) => + ( + await Apis.Asset.AssetBuildings.Select({ + keywords: params?.KeyWords, + asset_projects_id: params?.asset_projects_id, + ...params, + }) + ).data, + ...rest, + }; + }, + // 单元下拉框 + AssetUnits(props?: PropsType): ReturnType { + const { + title = '单元', + key = 'asset_buildings_id', + required = false, + hideInTable = true, + ...rest + } = props ?? {}; + + return { + title: title, + key: key, + valueType: 'select', + hideInTable: hideInTable, + formItemProps: { ...(required ? rulesHelper.number : {}) }, + fieldProps: { + showSearch: true, + fieldNames: { + label: 'label', + value: 'value', + }, + }, + request: async (params) => + ( + await Apis.Asset.AssetUnits.Select({ + keywords: params?.KeyWords, + asset_projects_id: params?.asset_projects_id, + asset_buildings_id: params?.asset_buildings_id, + ...params, + }) + ).data, + ...rest, + }; + }, }; diff --git a/src/pages/asset/asset_projects/$id.tsx b/src/pages/asset/asset_projects/$id.tsx index 36a7431..7231ad2 100644 --- a/src/pages/asset/asset_projects/$id.tsx +++ b/src/pages/asset/asset_projects/$id.tsx @@ -5,8 +5,7 @@ import { useParams } from '@umijs/max'; import { Tabs } from 'antd'; import { useEffect, useState } from 'react'; import MyAssetBuildings from './components/AssetBuildings'; -import MyInfo from './components/info'; -import Update from './modals/Update'; +import AssetInfo from './components/AssetInfo'; export default function Show({ title = '项目详情' }) { const { id } = useParams<{ id: string }>(); const [data, setShow] = useState({}); @@ -22,19 +21,37 @@ export default function Show({ title = '项目详情' }) { }, [id]); let items = [ + { + label: '基本信息', + key: 'info', + closable: false, + children: loadShow()} />, + }, { label: '楼栋管理', key: 'asset_buildings', closable: false, children: , }, + // { + // label: '车场管理', + // key: 'car', + // closable: false, + // children: , + // }, + // { + // label: '车位管理', + // key: 'carport', + // closable: false, + // children: , + // }, ]; return ( - loadShow()} title="项目" />} - /> + /> */} diff --git a/src/pages/asset/asset_projects/components/AssetBuildings.tsx b/src/pages/asset/asset_projects/components/AssetBuildings.tsx index 98660a8..18daa4b 100644 --- a/src/pages/asset/asset_projects/components/AssetBuildings.tsx +++ b/src/pages/asset/asset_projects/components/AssetBuildings.tsx @@ -1,7 +1,11 @@ -import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; import { Apis } from '@/gen/Apis'; import { - AssetHousesOrientationEnum, AssetHousesOwnershipTypeEnum, AssetHousesStatusEnum, AssetHousesUsageEnum, @@ -10,8 +14,12 @@ import { ProCard, ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import { useRef, useState } from 'react'; import BuildingsCreate from '../modals/AssetBuildingsCreate'; +import AssetBuildingsUpdate from '../modals/AssetBuildingsUpdate'; import AssetHousesCreate from '../modals/AssetHousesCreate'; +import AssetHousesShow from '../modals/AssetHousesShow'; +import AssetHousesUpdate from '../modals/AssetHousesUpdate'; import AssetUnitsCreate from '../modals/AssetUnitsCreate'; +import AssetUnitsUpdate from '../modals/AssetUnitsUpdate'; export default function AssetBuildings(props: MyBetaModalFormProps) { const actionBuildingsRef: any = useRef(); @@ -21,7 +29,7 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { const [selectKeyUnits, setSelectKeyUnits] = useState({}); return ( actionUnitsRef?.current?.reload()} title="单元" @@ -42,11 +50,11 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { key="HousesCreate" item={{ ...props?.item, - asset_buildings_id: selectKey?.id || undefined, - asset_units_id: selectKeyUnits?.id || undefined, + // asset_buildings_id: selectKey?.id || undefined, + // asset_units_id: selectKeyUnits?.id || undefined, }} reload={() => actionHousesRef?.current?.reload()} - title="房源" + title="房屋" /> } @@ -84,136 +92,150 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { columns={[ MyColumns.ID(), { - title: '楼栋', - width: '250px', + title: '楼栋名称', dataIndex: 'name', }, + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + Apis.Asset.AssetBuildings.Delete({ id: item.id }).then( + () => action?.reload(), + ) + } + /> + + ), + }), ]} /> - - MyProTableProps.request( + {selectKey?.id && ( + + MyProTableProps.request( + { + ...params, + asset_projects_id: props?.item?.id, + asset_buildings_id: selectKey?.id, + }, + sort, + Apis.Asset.AssetUnits.List, + ) + } + rowClassName={(record: any) => { + return selectKeyUnits?.id === record?.id + ? 'ant-table-row-selected' + : ''; + }} + onRow={(record: any) => { + return { + onClick: () => { + setSelectKeyUnits(record); + actionHousesRef?.current?.reload(); + }, + style: { + cursor: 'pointer', + }, + }; + }} + options={false} + columns={[ + MyColumns.ID(), { - ...params, - asset_projects_id: props?.item?.id, - asset_buildings_id: selectKey?.id, + title: '单元名称', + dataIndex: 'name', }, - sort, - Apis.Asset.AssetUnits.List, - ) - } - rowClassName={(record: any) => { - return selectKeyUnits?.id === record?.id - ? 'ant-table-row-selected' - : ''; - }} - onRow={(record: any) => { - return { - onClick: () => { - setSelectKeyUnits(record); - actionHousesRef?.current?.reload(); - }, - style: { - cursor: 'pointer', - }, - }; - }} - options={false} - columns={[ - MyColumns.ID(), - { - title: '单元', - width: '250px', - dataIndex: 'name', - }, - ]} - /> + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + Apis.Asset.AssetUnits.Delete({ id: item.id }).then(() => + action?.reload(), + ) + } + /> + + ), + }), + ]} + /> + )} - - MyProTableProps.request( + {selectKeyUnits?.id && ( + + MyProTableProps.request( + { + ...params, + asset_projects_id: props?.item?.id, + asset_buildings_id: selectKey?.id, + asset_units_id: selectKeyUnits?.id, + }, + sort, + Apis.Asset.AssetHouses.List, + ) + } + options={false} + columns={[ + MyColumns.ID(), + + MyColumns.EnumTag({ + title: '用途', + dataIndex: 'usage', + valueEnum: AssetHousesUsageEnum, + }), { - ...params, - asset_projects_id: props?.item?.id, - asset_buildings_id: selectKey?.id, - asset_units_id: selectKeyUnits?.id, + title: '房号', + dataIndex: 'name', }, - sort, - Apis.Asset.AssetHouses.List, - ) - } - options={false} - columns={[ - MyColumns.ID(), - MyColumns.EnumTag({ - title: '用途', - dataIndex: 'usage', - valueEnum: AssetHousesUsageEnum, - }), - { - title: '房号', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '产权性质', - dataIndex: 'ownership_type', - valueEnum: AssetHousesOwnershipTypeEnum, - }), - MyColumns.EnumTag({ - title: '朝向', - dataIndex: 'orientation', - valueEnum: AssetHousesOrientationEnum, - }), - MyColumns.EnumTag({ - title: '房屋状态', - dataIndex: 'status', - valueEnum: AssetHousesStatusEnum, - }), - { - title: '房', - dataIndex: 'room', - }, - { - title: '厅', - dataIndex: 'hall', - }, - { - title: '厨', - dataIndex: 'kitchen', - }, - { - title: '卫', - dataIndex: 'bathroom', - }, - { - title: '阳台', - dataIndex: 'balcony', - }, - { - title: '产权年限', - dataIndex: 'ownership_term', - }, - { - title: '建筑面积', - dataIndex: 'built_area', - }, - { - title: '套内面积', - dataIndex: 'inside_area', - }, - { - title: '计费面积', - dataIndex: 'chargeable_area', - }, - ]} - /> + { + title: '楼层', + dataIndex: 'floor', + render(_, record) { + return `${record?.floor}层`; + }, + }, + MyColumns.EnumTag({ + title: '产权性质', + dataIndex: 'ownership_type', + valueEnum: AssetHousesOwnershipTypeEnum, + }), + MyColumns.EnumTag({ + title: '房屋状态', + dataIndex: 'status', + valueEnum: AssetHousesStatusEnum, + }), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + + Apis.Asset.AssetBuildings.Delete({ id: item.id }).then( + () => action?.reload(), + ) + } + /> + + ), + }), + ]} + /> + )} ); diff --git a/src/pages/asset/asset_projects/components/AssetInfo.tsx b/src/pages/asset/asset_projects/components/AssetInfo.tsx new file mode 100644 index 0000000..c2b9cd7 --- /dev/null +++ b/src/pages/asset/asset_projects/components/AssetInfo.tsx @@ -0,0 +1,95 @@ +import { MyBetaModalFormProps, renderTextHelper } from '@/common'; +import { + AssetProjectsChargeEnum, + AssetProjectsEntrustTypeEnum, + AssetProjectsPropertyTypeEnum, + AssetProjectsStatusEnum, +} from '@/gen/Enums'; +import { ProCard, ProDescriptions } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import AssetUpdate from '../modals/AssetUpdate'; + +export default function info(props: MyBetaModalFormProps) { + return ( + + + + + + {props?.item?.name} + + + + + {props?.item?.alias_name} + + + {props?.item?.code} + + + + + + + + + + + + + + + {props?.item?.takeover_date} + + + {props?.item?.closure_date} + + + {props?.item?.province || ''} + {props?.item?.city || ''} + {props?.item?.district || ''} + {props?.item?.address || ''} + + + {props?.item?.created_at} + + + {props?.item?.updated_at} + + + + + + + +
+ 【{props?.item?.company?.id}】{props?.item?.company?.name} +
+ +
+
+
+
+
+ ); +} diff --git a/src/pages/asset/asset_projects/components/info.tsx b/src/pages/asset/asset_projects/components/info.tsx deleted file mode 100644 index ca44b04..0000000 --- a/src/pages/asset/asset_projects/components/info.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { - AssetProjectsChargeEnum, - AssetProjectsEntrustTypeEnum, - AssetProjectsPropertyTypeEnum, - AssetProjectsStatusEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; - -export default function info(props: MyBetaModalFormProps) { - return ( - - - - {props?.item?.name} - - - {props?.item?.alias_name} - - - {props?.item?.code} - - - - - - - - - - - - - - - - {props?.item?.takeover_date} - - - {props?.item?.closure_date} - - - {props?.item?.province || ''} - {props?.item?.city || ''} - {props?.item?.district || ''} - {props?.item?.address || ''} - - - - ); -} diff --git a/src/pages/asset/asset_projects/index.tsx b/src/pages/asset/asset_projects/index.tsx index e7de5e8..f13d3da 100644 --- a/src/pages/asset/asset_projects/index.tsx +++ b/src/pages/asset/asset_projects/index.tsx @@ -22,15 +22,21 @@ export default function Index({ title = '项目管理' }) { MyProTableProps.request(params, sort, Apis.Asset.AssetProjects.List) } toolBarRender={(action) => [ - , + , ]} columns={[ MyColumns.ID(), + MyColumns.EnumTag({ + title: '项目类型', + dataIndex: 'property_type', + valueEnum: AssetProjectsPropertyTypeEnum, + search: false, + }), { title: '项目名称', dataIndex: 'name', @@ -39,30 +45,11 @@ export default function Index({ title = '项目管理' }) { title: '项目别名', dataIndex: 'alias_name', }, - { - title: '项目编码', - dataIndex: 'code', - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'property_type', - valueEnum: AssetProjectsPropertyTypeEnum, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: AssetProjectsStatusEnum, - }), - MyColumns.EnumTag({ - title: '收费方式', - dataIndex: 'charge', - valueEnum: AssetProjectsChargeEnum, - }), - MyColumns.EnumTag({ - title: '委托类型', - dataIndex: 'entrust_type', - valueEnum: AssetProjectsEntrustTypeEnum, - }), + // { + // title: '项目编码', + // dataIndex: 'code', + // search: false, + // }, { title: '地址', render: (_, i: any) => { @@ -70,15 +57,43 @@ export default function Index({ title = '项目管理' }) { i?.address || '' }`; }, + search:false, }, - { - title: '接管日期', - dataIndex: 'takeover_date', - }, - { - title: '封园日期', - dataIndex: 'closure_date', - }, + MyColumns.EnumTag({ + title: '项目状态', + dataIndex: 'status', + valueEnum: AssetProjectsStatusEnum, + search: false, + }), + + MyColumns.EnumTag({ + title: '委托类型', + dataIndex: 'entrust_type', + valueEnum: AssetProjectsEntrustTypeEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '收费方式', + dataIndex: 'charge', + valueEnum: AssetProjectsChargeEnum, + search: false, + }), + MyColumns.SoftDelete({ + title: '启/禁用', + onRestore: Apis.Asset.AssetProjects.Restore, + onSoftDelete: Apis.Asset.AssetProjects.SoftDelete, + search: false, + }), + // { + // title: '接管日期', + // dataIndex: 'takeover_date', + // search:false, + // }, + // { + // title: '封园日期', + // dataIndex: 'closure_date', + // search:false, + // }, MyColumns.CreatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( diff --git a/src/pages/asset/asset_projects/modals/AssetBuildingsCreate.tsx b/src/pages/asset/asset_projects/modals/AssetBuildingsCreate.tsx index e7444b1..488cbd5 100644 --- a/src/pages/asset/asset_projects/modals/AssetBuildingsCreate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetBuildingsCreate.tsx @@ -6,17 +6,25 @@ import { } from '@/common'; import { Apis } from '@/gen/Apis'; import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; +import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( {...MyModalFormProps.props} + form={form} title={`添加${props.title}`} wrapperCol={{ span: 24 }} width="500px" trigger={} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} onFinish={async (values) => Apis.Asset.AssetBuildings.Store({ ...values, diff --git a/src/pages/asset/asset_projects/modals/AssetBuildingsUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetBuildingsUpdate.tsx new file mode 100644 index 0000000..5586456 --- /dev/null +++ b/src/pages/asset/asset_projects/modals/AssetBuildingsUpdate.tsx @@ -0,0 +1,60 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + + return ( + + {...MyModalFormProps.props} + form={form} + title={`编辑`} + wrapperCol={{ span: 24 }} + width="500px" + trigger={ + + } + onOpenChange={(open: any) => { + if (open) { + form.setFieldsValue(props?.item); // 编辑赋值 + } + }} + onFinish={async (values) => + Apis.Asset.AssetBuildings.Update({ + ...values, + asset_projects_id: props?.item?.asset_projects_id, + id: props?.item?.id, + }) + .then(() => { + props.reload?.(); + message.success('楼栋编辑成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + key: 'name', + title: '楼栋名称', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'alias_name', + title: '楼栋别名', + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx b/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx index cc401a8..9825f2e 100644 --- a/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetHousesCreate.tsx @@ -5,6 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; +import { SysSelects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetHousesOrientationEnum, @@ -13,9 +14,10 @@ import { AssetHousesUsageEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; +import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); console.log(props?.item, 'item'); return ( @@ -23,20 +25,17 @@ export default function Create(props: MyBetaModalFormProps) { title={`添加${props.title}`} wrapperCol={{ span: 24 }} width="800px" - trigger={ - - } + trigger={} + form={form} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} onFinish={async (values) => Apis.Asset.AssetHouses.Store({ ...values, asset_projects_id: props?.item?.id, - asset_buildings_id: props?.item?.asset_buildings_id, - asset_units_id: props?.item?.asset_units_id, }) .then(() => { props.reload?.(); @@ -47,44 +46,86 @@ export default function Create(props: MyBetaModalFormProps) { } columns={[ { - key: 'name', - title: '房号', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, + valueType: 'dependency', + name: ['asset_buildings_id', 'asset_units_id'], + columns: ({ asset_buildings_id }) => { + return [ + { + valueType: 'group', + columns: [ + SysSelects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params: { + asset_projects_id: props?.item?.id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + fieldProps: { + showSearch: true, + onChange: () => { + form.setFieldsValue({ + asset_units_id: undefined, + asset_floors_id: undefined, + }); + }, + }, + }), + SysSelects?.AssetUnits({ + key: 'asset_units_id', + title: '选择单元', + params: { + asset_projects_id: props?.item?.id, + asset_buildings_id: asset_buildings_id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }), + { + key: 'name', + title: '房号', + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'floor', + title: '楼层', + valueType: 'digit', + fieldProps: { + addonAfter: '楼', + max: 99, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + ], + }, + ]; + }, }, - { - key: 'full_name', - title: '房屋全称', - colProps: { span: 12 }, - }, - MyFormItems.EnumRadio({ - key: 'ownership_type', - title: '产权性质', - colProps: { span: 24 }, - valueEnum: AssetHousesOwnershipTypeEnum, - required: true, - }), - MyFormItems.EnumRadio({ - key: 'orientation', - title: '朝向', - colProps: { span: 24 }, - valueEnum: AssetHousesOrientationEnum, - required: true, - }), + MyFormItems.EnumRadio({ key: 'usage', title: '用途', - colProps: { span: 24 }, + colProps: { span: 18 }, valueEnum: AssetHousesUsageEnum, required: true, }), - MyFormItems.EnumRadio({ - key: 'status', - title: '房屋状态', - colProps: { span: 24 }, - valueEnum: AssetHousesStatusEnum, - required: true, + MyFormItems.EnumSelect({ + key: 'ownership_type', + title: '产权性质', + colProps: { span: 6 }, + valueEnum: AssetHousesOwnershipTypeEnum, + // required: true, }), + // { + // key: 'ownership_term', + // title: '产权年限', + // fieldProps: { + // addonAfter: '年', + // }, + // colProps: { span: 8 }, + // }, { key: 'built_area', @@ -92,8 +133,9 @@ export default function Create(props: MyBetaModalFormProps) { valueType: 'digit', fieldProps: { addonAfter: '㎡', + max: 99999, }, - colProps: { span: 8 }, + colProps: { span: 6 }, }, { key: 'inside_area', @@ -101,8 +143,9 @@ export default function Create(props: MyBetaModalFormProps) { valueType: 'digit', fieldProps: { addonAfter: '㎡', + max: 99999, }, - colProps: { span: 8 }, + colProps: { span: 6 }, }, { key: 'chargeable_area', @@ -110,26 +153,36 @@ export default function Create(props: MyBetaModalFormProps) { valueType: 'digit', fieldProps: { addonAfter: '㎡', + max: 99999, }, - colProps: { span: 8 }, + colProps: { span: 6 }, }, - { - key: 'floor', - title: '楼层', - valueType: 'digit', - fieldProps: { - addonAfter: '楼', + MyFormItems.EnumRadio({ + key: 'status', + title: '房屋状态', + colProps: { span: 6 }, + // valueEnum: AssetHousesStatusEnum, + // required: true, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(AssetHousesStatusEnum)); + delete obj.SelfOccupied; + delete obj.Rented; + delete obj.Vacant; + return obj; }, - colProps: { span: 8 }, - }, - { - key: 'ownership_term', - title: '产权年限', - fieldProps: { - addonAfter: '年', - }, - colProps: { span: 8 }, - }, + }), + // { + // key: 'full_name', + // title: '房屋全称', + // colProps: { span: 12 }, + // }, + MyFormItems.EnumRadio({ + key: 'orientation', + title: '房屋状态', + colProps: { span: 6 }, + valueEnum: AssetHousesOrientationEnum, + // required: true, + }), { valueType: 'group', columns: [ @@ -151,15 +204,6 @@ export default function Create(props: MyBetaModalFormProps) { }, colProps: { span: 4 }, }, - { - key: 'kitchen', - title: '厨', - valueType: 'digit', - fieldProps: { - addonAfter: '厨', - }, - colProps: { span: 4 }, - }, { key: 'bathroom', title: '卫', @@ -169,6 +213,15 @@ export default function Create(props: MyBetaModalFormProps) { }, colProps: { span: 4 }, }, + { + key: 'kitchen', + title: '厨', + valueType: 'digit', + fieldProps: { + addonAfter: '厨', + }, + colProps: { span: 4 }, + }, { key: 'balcony', title: '阳台', diff --git a/src/pages/asset/asset_projects/modals/AssetHousesShow.tsx b/src/pages/asset/asset_projects/modals/AssetHousesShow.tsx new file mode 100644 index 0000000..ab23e78 --- /dev/null +++ b/src/pages/asset/asset_projects/modals/AssetHousesShow.tsx @@ -0,0 +1,75 @@ +import { MyBetaModalFormProps, renderTextHelper } from '@/common'; +import { MyModal } from '@/components/MyModal'; +import { + AssetHousesOrientationEnum, + AssetHousesOwnershipTypeEnum, + AssetHousesStatusEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { ProCard, ProDescriptions } from '@ant-design/pro-components'; + +export default function info(props: MyBetaModalFormProps) { + return ( + + + + {props?.item?.full_name} + + + {props?.item?.name} + + + {props?.item?.floor} + + + + + + + + + {props?.item?.built_area}m² + + + {props?.item?.inside_area}m² + + + {props?.item?.chargeable_area}m² + + + + + + {props?.item?.room || ''}房{props?.item?.hall || ''}厅 + {props?.item?.bathroom || ''}卫{props?.item?.kitchen || ''}厨 + {props?.item?.balcony || ''}阳台 + + + + + + + } + /> + ); +} diff --git a/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx new file mode 100644 index 0000000..16b1e80 --- /dev/null +++ b/src/pages/asset/asset_projects/modals/AssetHousesUpdate.tsx @@ -0,0 +1,244 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { SysSelects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOrientationEnum, + AssetHousesOwnershipTypeEnum, + AssetHousesStatusEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + console.log(props?.item, 'item'); + return ( + + {...MyModalFormProps.props} + title={`编辑`} + wrapperCol={{ span: 24 }} + width="800px" + trigger={} + form={form} + onOpenChange={(open: any) => { + if (open) { + form.setFieldsValue(props?.item); // 编辑赋值 + } + }} + onFinish={async (values) => + Apis.Asset.AssetHouses.Update({ + ...values, + asset_projects_id: props?.item?.asset_projects_id, + asset_buildings_id: + values.asset_buildings_id || props?.item?.asset_buildings_id, + asset_units_id: values.asset_units_id || props?.item?.asset_units_id, + id: props?.item?.id, + }) + .then(() => { + props.reload?.(); + message.success('房屋编辑成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + valueType: 'dependency', + name: ['asset_buildings_id', 'asset_units_id'], + columns: ({ asset_buildings_id }) => { + return [ + { + valueType: 'group', + columns: [ + SysSelects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params: { + asset_projects_id: props?.item?.id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + fieldProps: { + showSearch: true, + onChange: () => { + form.setFieldsValue({ + asset_units_id: undefined, + asset_floors_id: undefined, + }); + }, + }, + }), + SysSelects?.AssetUnits({ + key: 'asset_units_id', + title: '选择单元', + params: { + asset_projects_id: props?.item?.id, + asset_buildings_id: asset_buildings_id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }), + { + key: 'name', + title: '房号', + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'floor', + title: '楼层', + valueType: 'digit', + fieldProps: { + addonAfter: '楼', + max: 99, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + ], + }, + ]; + }, + }, + + MyFormItems.EnumRadio({ + key: 'usage', + title: '房屋用途', + colProps: { span: 18 }, + valueEnum: AssetHousesUsageEnum, + required: true, + }), + MyFormItems.EnumSelect({ + key: 'ownership_type', + title: '产权性质', + colProps: { span: 6 }, + valueEnum: AssetHousesOwnershipTypeEnum, + // required: true, + }), + // { + // key: 'ownership_term', + // title: '产权年限', + // fieldProps: { + // addonAfter: '年', + // }, + // colProps: { span: 8 }, + // }, + + { + key: 'built_area', + title: '建筑面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + }, + { + key: 'inside_area', + title: '套内面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + }, + { + key: 'chargeable_area', + title: '计费面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + }, + MyFormItems.EnumRadio({ + key: 'status', + title: '房屋状态', + colProps: { span: 6 }, + // valueEnum: AssetHousesStatusEnum, + // required: true, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(AssetHousesStatusEnum)); + delete obj.SelfOccupied; + delete obj.Rented; + delete obj.Vacant; + return obj; + }, + }), + // { + // key: 'full_name', + // title: '房屋全称', + // colProps: { span: 12 }, + // }, + + { + valueType: 'group', + columns: [ + { + key: 'room', + title: '房', + valueType: 'digit', + fieldProps: { + addonAfter: '房', + }, + colProps: { span: 4 }, + }, + { + key: 'hall', + title: '厅', + valueType: 'digit', + fieldProps: { + addonAfter: '厅', + }, + colProps: { span: 4 }, + }, + { + key: 'bathroom', + title: '卫', + valueType: 'digit', + fieldProps: { + addonAfter: '卫', + }, + colProps: { span: 4 }, + }, + { + key: 'kitchen', + title: '厨', + valueType: 'digit', + fieldProps: { + addonAfter: '厨', + }, + colProps: { span: 4 }, + }, + { + key: 'balcony', + title: '阳台', + valueType: 'digit', + fieldProps: { + addonAfter: '阳台', + }, + colProps: { span: 4 }, + }, + ], + }, + MyFormItems.EnumRadio({ + key: 'orientation', + title: '朝向', + colProps: { span: 24 }, + valueEnum: AssetHousesOrientationEnum, + // required: true, + }), + ]} + /> + ); +} diff --git a/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx b/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx index eb43878..5ef836c 100644 --- a/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx +++ b/src/pages/asset/asset_projects/modals/AssetUnitsCreate.tsx @@ -5,15 +5,17 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; +import { SysSelects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetUnitsBuildingStructureEnum, AssetUnitsBuildingTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; +import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); return ( {...MyModalFormProps.props} @@ -23,14 +25,19 @@ export default function Create(props: MyBetaModalFormProps) { trigger={ } + form={form} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} onFinish={async (values) => Apis.Asset.AssetUnits.Store({ ...values, asset_projects_id: props?.item?.id, - asset_buildings_id: props?.item?.asset_buildings_id, }) .then(() => { props.reload?.(); @@ -40,6 +47,15 @@ export default function Create(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ + SysSelects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params:{ + asset_projects_id: props?.item?.id, + }, + colProps: { span:24 }, + formItemProps: { ...rulesHelper.number }, + }), { key: 'name', title: '单元名称', @@ -68,17 +84,17 @@ export default function Create(props: MyBetaModalFormProps) { { key: 'elevator_count', title: '电梯数量', - colProps: { span: 12 }, + colProps: { span: 6 }, }, { key: 'units_per_building', title: '单元户数', - colProps: { span: 12 }, + colProps: { span: 6 }, }, { key: 'highest_floor', title: '最高楼层', - colProps: { span: 12 }, + colProps: { span: 6 }, }, ]} /> diff --git a/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx b/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx new file mode 100644 index 0000000..c1c6d8b --- /dev/null +++ b/src/pages/asset/asset_projects/modals/AssetUnitsUpdate.tsx @@ -0,0 +1,103 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { SysSelects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + AssetUnitsBuildingStructureEnum, + AssetUnitsBuildingTypeEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`编辑`} + wrapperCol={{ span: 24 }} + width="700px" + trigger={ + + } + form={form} + onOpenChange={(open: any) => { + if (open) { + form.setFieldsValue(props?.item); // 编辑赋值 + } + }} + onFinish={async (values) => + Apis.Asset.AssetUnits.Update({ + ...values, + asset_projects_id: props?.item?.asset_projects_id, + id: props?.item?.id, + + }) + .then(() => { + props.reload?.(); + message.success('单元编辑成功'); + return true; + }) + .catch(() => false) + } + columns={[ + SysSelects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params:{ + asset_projects_id: props?.item?.id, + }, + colProps: { span:24 }, + formItemProps: { ...rulesHelper.number }, + }), + { + key: 'name', + title: '单元名称', + colProps: { span: 12 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'alias_name', + title: '单元别名', + colProps: { span: 12 }, + }, + MyFormItems.EnumRadio({ + key: 'building_structure', + title: '建筑结构', + colProps: { span: 12 }, + valueEnum: AssetUnitsBuildingStructureEnum, + required: true, + }), + MyFormItems.EnumRadio({ + key: 'building_type', + title: '建筑类型', + colProps: { span: 12 }, + valueEnum: AssetUnitsBuildingTypeEnum, + required: true, + }), + { + key: 'elevator_count', + title: '电梯数量', + colProps: { span: 6 }, + }, + { + key: 'units_per_building', + title: '单元户数', + colProps: { span: 6 }, + }, + { + key: 'highest_floor', + title: '最高楼层', + colProps: { span: 6 }, + }, + ]} + /> + ); +} diff --git a/src/pages/asset/asset_projects/modals/Update.tsx b/src/pages/asset/asset_projects/modals/AssetUpdate.tsx similarity index 74% rename from src/pages/asset/asset_projects/modals/Update.tsx rename to src/pages/asset/asset_projects/modals/AssetUpdate.tsx index 290f2b4..4bb8eef 100644 --- a/src/pages/asset/asset_projects/modals/Update.tsx +++ b/src/pages/asset/asset_projects/modals/AssetUpdate.tsx @@ -22,7 +22,14 @@ export default function Update(props: MyBetaModalFormProps) { {...MyModalFormProps.props} title={`编辑${props.title}`} - trigger={} + trigger={ + + } wrapperCol={{ span: 24 }} width="800px" request={() => @@ -46,91 +53,100 @@ export default function Update(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - SysSelects?.Companies({ - key: 'companies_id', - title: '所属机构', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - }), { key: 'name', title: '项目名称', - colProps: { span: 8 }, + colProps: { span: 12 }, formItemProps: { ...rulesHelper.text }, }, { key: 'alias_name', title: '项目别名', - colProps: { span: 8 }, + colProps: { span: 6 }, }, - { - key: 'code', - title: '项目编码', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'property_type', - title: '物业类型', - colProps: { span: 24 }, - valueEnum: AssetProjectsPropertyTypeEnum, - required: true, + SysSelects?.Companies({ + key: 'companies_id', + title: '所属机构', + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, }), - MyFormItems.EnumRadio({ - key: 'status', - title: '状态', - colProps: { span: 12 }, - valueEnum: AssetProjectsStatusEnum, - required: true, - }), - MyFormItems.EnumRadio({ - key: 'charge', - title: '收费方式', - colProps: { span: 12 }, - valueEnum: AssetProjectsChargeEnum, - required: true, - }), - - MyFormItems.EnumRadio({ - key: 'entrust_type', - title: '委托类型', - colProps: { span: 24 }, - valueEnum: AssetProjectsEntrustTypeEnum, - required: true, - }), - + // { + // key: 'code', + // title: '项目编码', + // colProps: { span: 8 }, + // formItemProps: { ...rulesHelper.text }, + // }, Address.Cascader({ key: 'casacader', title: '选择地址', - colProps: { span: 24 }, + colProps: { span: 12 }, keys: ['province', 'city', 'area', 'street'], required: true, }), { key: 'address', title: '详细地址', - colProps: { span: 24 }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.text }, }, { key: 'longitude', title: '经度', - colProps: { span: 6 }, + colProps: { span: 3 }, }, { key: 'latitude', title: '纬度', - colProps: { span: 6 }, + colProps: { span: 3 }, }, + MyFormItems.EnumSelect({ + key: 'property_type', + title: '项目类型', + colProps: { span: 6 }, + valueEnum: AssetProjectsPropertyTypeEnum, + // required: true, + }), + MyFormItems.EnumSelect({ + key: 'status', + title: '项目状态', + colProps: { span: 6 }, + valueEnum: AssetProjectsStatusEnum, + // required: true, + }), + MyFormItems.EnumSelect({ + key: 'entrust_type', + title: '委托类型', + colProps: { span: 6 }, + valueEnum: AssetProjectsEntrustTypeEnum, + // required: true, + }), + MyFormItems.EnumRadio({ + key: 'charge', + title: '收费方式', + colProps: { span: 6 }, + valueEnum: AssetProjectsChargeEnum, + // required: true, + }), { key: 'takeover_date', title: '接管日期', valueType: 'date', + fieldProps: { + style: { + width: '100%', + }, + }, colProps: { span: 6 }, }, { key: 'closure_date', title: '封园日期', valueType: 'date', + fieldProps: { + style: { + width: '100%', + }, + }, colProps: { span: 6 }, }, ]} diff --git a/src/pages/asset/asset_projects/modals/Create.tsx b/src/pages/asset/asset_projects/modals/Create.tsx index 9678702..f9f6e8b 100644 --- a/src/pages/asset/asset_projects/modals/Create.tsx +++ b/src/pages/asset/asset_projects/modals/Create.tsx @@ -35,81 +35,81 @@ export default function Create(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - SysSelects?.Companies({ - key: 'companies_id', - title: '所属机构', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - }), + { key: 'name', title: '项目名称', - colProps: { span: 8 }, + colProps: { span: 12 }, formItemProps: { ...rulesHelper.text }, }, { key: 'alias_name', title: '项目别名', - colProps: { span: 8 }, + colProps: { span: 6 }, }, - { - key: 'code', - title: '项目编码', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'property_type', - title: '物业类型', - colProps: { span: 24 }, - valueEnum: AssetProjectsPropertyTypeEnum, - required: true, + SysSelects?.Companies({ + key: 'companies_id', + title: '所属机构', + colProps: { span: 6 }, + // formItemProps: { ...rulesHelper.number }, }), - MyFormItems.EnumRadio({ - key: 'status', - title: '状态', - colProps: { span: 12 }, - valueEnum: AssetProjectsStatusEnum, - required: true, - }), - MyFormItems.EnumRadio({ - key: 'charge', - title: '收费方式', - colProps: { span: 12 }, - valueEnum: AssetProjectsChargeEnum, - required: true, - }), - - MyFormItems.EnumRadio({ - key: 'entrust_type', - title: '委托类型', - colProps: { span: 24 }, - valueEnum: AssetProjectsEntrustTypeEnum, - required: true, - }), - + // { + // key: 'code', + // title: '项目编码', + // colProps: { span: 8 }, + // // formItemProps: { ...rulesHelper.text }, + // }, Address.Cascader({ key: 'casacader', title: '选择地址', - colProps: { span: 24 }, + colProps: { span: 12 }, keys: ['province', 'city', 'area', 'street'], required: true, }), { key: 'address', title: '详细地址', - colProps: { span: 24 }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.text }, }, { key: 'longitude', title: '经度', - colProps: { span: 6 }, + colProps: { span: 3 }, }, { key: 'latitude', title: '纬度', - colProps: { span: 6 }, + colProps: { span: 3 }, }, + MyFormItems.EnumSelect({ + key: 'property_type', + title: '项目类型', + colProps: { span: 6 }, + valueEnum: AssetProjectsPropertyTypeEnum, + // required: true, + }), + MyFormItems.EnumSelect({ + key: 'status', + title: '项目状态', + colProps: { span:6 }, + valueEnum: AssetProjectsStatusEnum, + // required: true, + }), + MyFormItems.EnumSelect({ + key: 'entrust_type', + title: '委托类型', + colProps: { span: 6 }, + valueEnum: AssetProjectsEntrustTypeEnum, + // required: true, + }), + MyFormItems.EnumRadio({ + key: 'charge', + title: '收费方式', + colProps: { span: 6 }, + valueEnum: AssetProjectsChargeEnum, + // required: true, + }), { key: 'takeover_date', title: '接管日期',