From f63df9ef9394970991028e686e9c87d5b557638d Mon Sep 17 00:00:00 2001 From: uiuJun <> Date: Sun, 18 Jan 2026 15:53:17 +0800 Subject: [PATCH 01/12] fix1:1 --- src/common/components/MyButtons.tsx | 9 +- src/components/ModalsAssetItemsSelectList.tsx | 143 ---- .../ModalsAssetsProjectSelectList.tsx | 109 --- ...lsContractsApprovalTemplatesSelectList.tsx | 98 --- src/components/ModalsContractsSelectList.tsx | 138 ---- src/components/ModalsResourceSelectList.tsx | 122 --- src/components/Select.tsx | 678 +-------------- src/components/SelectContract.tsx | 276 ------- src/gen/ApiTypes.d.ts | 769 +++++++++++++++++- src/gen/Apis.ts | 396 +++++++++ src/gen/Enums.ts | 2 +- src/pages/approval/all/index.tsx | 18 +- src/pages/approval/all/modals/Show.tsx | 254 ++++++ src/pages/approval/approval/index.tsx | 8 +- src/pages/approval/cc_me/index.tsx | 11 +- src/pages/approval/cc_me/modals/Show.tsx | 255 ++++++ src/pages/approval/modals/ApprovalShow.tsx | 243 ------ src/pages/approval/my_apply/index.tsx | 8 +- src/pages/approval/my_processed/index.tsx | 22 +- .../approval/my_processed/modals/Show.tsx | 255 ++++++ src/pages/approval/pending/index.tsx | 9 +- src/pages/approval/pending/modals/Refund.tsx | 85 -- src/pages/approval/templates/index.tsx | 3 +- .../approval/templates/modals/Create.tsx | 7 +- .../approval/templates/modals/Update.tsx | 7 +- src/pages/asset/accounts/index.tsx | 17 +- .../asset/accounts/modals/AccountsGet.tsx | 3 +- src/pages/asset/announcement/index.tsx | 12 +- .../modals/AnnouncementCreate.tsx | 16 +- .../modals/AnnouncementUpdate.tsx | 17 +- src/pages/asset/asset_bi/charts/PieChart.tsx | 48 -- .../asset/asset_bi/charts/ZigzagLine.tsx | 30 - .../asset/asset_bi/images/employee_number.svg | 1 - .../asset/asset_bi/images/event_number.svg | 1 - .../asset/asset_bi/images/house_number.svg | 1 - .../asset_bi/images/instrument_number.svg | 1 - .../asset/asset_bi/images/parking_number.svg | 1 - .../asset_bi/images/parking_space_number.svg | 1 - .../asset/asset_bi/images/project_number.svg | 1 - .../asset/asset_bi/images/user_number.svg | 1 - src/pages/asset/asset_bi/index.tsx | 155 ---- src/pages/asset/asset_bi/styleBi.scss | 31 - src/pages/asset/asset_items/index.tsx | 225 ----- .../asset/asset_items/modals/BatchCreate.tsx | 237 ------ src/pages/asset/asset_items/modals/Create.tsx | 188 ----- .../asset_items/modals/CreateMaintenances.tsx | 83 -- src/pages/asset/asset_items/modals/Update.tsx | 192 ----- .../asset_items/modals/UpdateManageStatus.tsx | 55 -- .../asset/asset_items/modals/UpdateStatus.tsx | 55 -- src/pages/asset/asset_items/pages/create.tsx | 269 ------ .../asset_items/pages/disposals_update.tsx | 163 ---- .../asset_items/pages/inventories_update.tsx | 148 ---- .../asset_items/pages/markings_update.tsx | 180 ---- .../asset_items/pages/receives_update.tsx | 188 ----- .../asset_items/pages/returns_update.tsx | 197 ----- .../asset_items/pages/transfres_update.tsx | 187 ----- .../asset/asset_items_categories/index.tsx | 70 -- .../asset_items_categories/modals/Create.tsx | 69 -- .../asset_items_categories/modals/Update.tsx | 60 -- .../asset/asset_items_disposals/index.tsx | 106 --- .../asset_items_disposals/modals/Complete.tsx | 59 -- .../asset_items_disposals/modals/Review.tsx | 234 ------ .../asset/asset_items_inventories/index.tsx | 111 --- .../asset_items_inventories/modals/Assign.tsx | 57 -- .../modals/Details.tsx | 100 --- .../modals/InventorySurplusList.tsx | 88 -- .../asset/asset_items_maintenances/index.tsx | 33 - .../asset_items_maintenances/list/index.tsx | 105 --- .../list/modals/Assign.tsx | 57 -- .../list/modals/CreateMaintenances.tsx | 110 --- .../list/modals/Show.tsx | 116 --- .../maintenance_rules/index.tsx | 88 -- .../maintenance_rules/modals/RulesCreate.tsx | 138 ---- .../maintenance_rules/modals/RulesUpdate.tsx | 151 ---- .../asset/asset_items_markings/index.tsx | 100 --- .../asset_items_markings/modals/Review.tsx | 262 ------ .../asset/asset_items_receives/index.tsx | 108 --- .../asset_items_receives/modals/Review.tsx | 241 ------ src/pages/asset/asset_items_returns/index.tsx | 113 --- .../asset_items_returns/modals/Review.tsx | 253 ------ .../asset/asset_items_transfers/index.tsx | 106 --- .../asset_items_transfers/modals/Review.tsx | 249 ------ .../asset/asset_items_warehouses/index.tsx | 78 -- .../asset_items_warehouses/modals/Create.tsx | 71 -- .../asset_items_warehouses/modals/Update.tsx | 104 --- src/pages/asset/asset_list/index.tsx | 92 +-- .../asset/asset_list/modals/AssetInfo.tsx | 30 +- .../asset/asset_list/modals/AssetUpdate.tsx | 3 - .../asset/asset_list/modals/HasProjects.tsx | 4 +- .../asset_list/modals/ManagersCreate.tsx | 51 +- src/pages/asset/asset_list/show/$id.tsx | 2 +- .../asset/asset_list/table/Announcement.tsx | 12 +- .../asset/asset_list/table/AssetBuildings.tsx | 29 +- .../asset/asset_list/table/AssetGrid.tsx | 6 +- .../asset/asset_list/table/AssetInfo.tsx | 13 +- .../asset/asset_list/table/ChargeStandard.tsx | 4 +- src/pages/asset/asset_list/table/Managers.tsx | 2 +- .../table}/modals/BuildingsCreate.tsx | 0 .../table}/modals/BuildingsUpdate.tsx | 0 .../table}/modals/HousesCreate.tsx | 0 .../table}/modals/HousesShow.tsx | 0 .../table}/modals/HousesUpdate.tsx | 0 .../table}/modals/UnitsCreate.tsx | 0 .../table}/modals/UnitsUpdate.tsx | 0 src/pages/asset/dictionary/index.tsx | 481 ----------- src/pages/asset/grids/index.tsx | 3 +- src/pages/asset/grids/modals/GridShow.tsx | 58 -- src/pages/asset/grids/modals/GridUpdate.tsx | 2 +- src/pages/asset/houses/index.tsx | 4 +- .../houses/modals/BuildingsCreate.tsx} | 29 +- .../houses/modals/BuildingsUpdate.tsx} | 34 +- .../asset/houses/modals/HousesCreate.tsx | 206 +++++ src/pages/asset/houses/modals/HousesShow.tsx | 109 +++ .../asset/houses/modals/HousesUpdate.tsx | 237 ++++++ src/pages/asset/houses/modals/UnitsCreate.tsx | 94 +++ src/pages/asset/houses/modals/UnitsUpdate.tsx | 99 +++ .../table/AssetBuildings.tsx | 12 +- .../table/ChargeStandard.tsx | 4 +- .../attendance/attendance_configs/index.tsx | 81 -- .../attendance_configs/modals/Create.tsx | 63 -- .../attendance_configs/modals/Update.tsx | 66 -- .../attendance/attendance_employees/index.tsx | 133 --- .../attendance_employees/modals/Change.tsx | 59 -- .../modals/EmployeeCreate.tsx | 95 --- .../modals/EmployeeUpdate.tsx | 107 --- .../attendance/attendance_records/index.tsx | 124 --- .../attendance/attendance_schedules/index.tsx | 174 ---- .../attendance_schedules/modals/Create.tsx | 117 --- .../attendance_schedules/modals/Update.tsx | 92 --- .../attendance_schedules/pages/create.tsx | 272 ------- .../attendance/attendance_shifts/index.tsx | 149 ---- .../attendance_shifts/pages/create.tsx | 267 ------ .../attendance_shifts/pages/update.tsx | 300 ------- .../standard/components/ElectricityFee.tsx | 4 +- .../charge/standard/components/HasHouse.tsx | 4 +- .../standard/components/MaintenanceFund.tsx | 4 +- .../standard/components/PropertyFee.tsx | 4 +- .../components/SharedElectricityFee.tsx | 4 +- .../standard/components/SharedWaterFee.tsx | 4 +- .../charge/standard/components/WaterFee.tsx | 4 +- src/pages/charge/standard/index.tsx | 21 +- .../modals/ChargeStandardHasHouse.tsx | 2 +- .../standard/modals/ChargeStandardUpdate.tsx | 4 +- .../standard/modals/ChargingStandard.tsx | 2 +- .../standard/pages/CreateElectricityFee.tsx | 4 +- .../standard/pages/CreateMaintenanceFund.tsx | 4 +- .../standard/pages/CreatePropertyfee.tsx | 4 +- .../pages/CreateSharedElectricityFee.tsx | 4 +- .../standard/pages/CreateSharedWaterFee.tsx | 4 +- .../charge/standard/pages/CreateWaterFee.tsx | 4 +- src/pages/charge/standard/show/$id.tsx | 2 +- src/pages/charge/tasks/index.tsx | 6 +- src/pages/charge/tasks/modals/TaskCreate.tsx | 4 +- src/pages/charge/tasks/modals/TaskShow.tsx | 4 +- src/pages/company/accounts/index.tsx | 7 +- .../contract/contract_archives/index.tsx | 125 --- .../contract_archives/modals/Archives.tsx | 285 ------- .../contract_archives/modals/Create.tsx | 269 ------ .../contract_archives/modals/Show.tsx | 168 ---- .../contract_archives/modals/Update.tsx | 280 ------- .../contract/contract_bill_payments/index.tsx | 125 --- .../contract_bill_payments/modals/Create.tsx | 55 -- .../contract_bill_payments/modals/Review.tsx | 86 -- .../contract_bill_payments/modals/Update.tsx | 56 -- .../contract_bill_payments/pages/review.tsx | 203 ----- src/pages/contract/contract_bills/index.tsx | 116 --- .../contract/contract_bills/pages/create.tsx | 401 --------- .../contract/contract_bills/pages/update.tsx | 259 ------ .../contract/contract_seal_logs/index.tsx | 62 -- .../contract_seal_logs/seals/index.tsx | 122 --- .../seals/modals/Create.tsx | 93 --- .../seals/modals/Update.tsx | 93 --- .../contract_seal_logs/unused/index.tsx | 109 --- .../unused/modals/UseSeal.tsx | 182 ----- .../contract_seal_logs/used/index.tsx | 110 --- .../contract_seal_logs/used/modals/Show.tsx | 104 --- .../contract_seal_logs/used/modals/Update.tsx | 144 ---- .../contract/contract_templates/index.tsx | 197 ----- .../contract_templates/modals/Create.tsx | 100 --- .../contract_templates/modals/Update.tsx | 100 --- src/pages/contract/contract_types/index.tsx | 66 -- .../contract/contract_types/modals/Create.tsx | 52 -- .../contract/contract_types/modals/Update.tsx | 59 -- src/pages/contract/contracts/index.tsx | 322 -------- .../contract/contracts/modals/Change.tsx | 130 --- .../contract/contracts/modals/Review.tsx | 84 -- .../modals/SignSubjectSelectList.tsx | 107 --- .../contracts/modals/SubmitApproval.tsx | 221 ----- .../contracts/modals/SubmitReview copy.tsx | 82 -- .../contracts/modals/SubmitReview.tsx | 82 -- .../contract/contracts/modals/Terminated.tsx | 58 -- .../contract/contracts/modals/Update.tsx | 56 -- .../contract/contracts/modals/Voided.tsx | 61 -- .../contracts/pages/contract_create.tsx | 590 -------------- .../contracts/pages/contract_update.tsx | 624 -------------- src/pages/contract/contracts/pages/reducer.ts | 4 - src/pages/contract/contracts/pages/review.tsx | 506 ------------ src/pages/contract/contracts/show/$id.tsx | 70 -- .../show/components/ArchivingLogs.tsx | 127 --- .../show/components/ContractBills.tsx | 109 --- .../show/components/ContractsInfo.tsx | 137 ---- .../contracts/show/components/UsedLogs.tsx | 86 -- .../contracts_bi/images/30_60_icon.svg | 1 - .../contracts_bi/images/ClosedIcon.svg | 1 - .../contracts_bi/images/InPerformanceIcon.svg | 1 - .../contracts_bi/images/NotClosedIcon.svg | 1 - .../contracts_bi/images/NotFiledIcon.svg | 1 - .../contracts_bi/images/NotStampedIcon.svg | 1 - .../images/PendingApplicationIcon.svg | 1 - .../contracts_bi/images/TerminatedIcon.svg | 1 - .../contracts_bi/images/UnreviewedIcon.svg | 1 - src/pages/contract/contracts_bi/index.tsx | 251 ------ src/pages/contract/contracts_bi/styleBi.scss | 51 -- src/pages/contract/modals/PayBills.tsx | 127 --- .../pending_review/all_approval/index.tsx | 66 -- .../approval_instances/index.tsx | 79 -- .../contract/pending_review/index copy.tsx | 127 --- src/pages/contract/pending_review/index.tsx | 44 - .../pending_review/my_apply_list/index.tsx | 84 -- .../customer/archive/components/HouseInfo.tsx | 2 +- .../customer/archive/components/PrePay.tsx | 43 - .../archive/components/PrePayInfo.tsx | 56 -- src/pages/customer/archive/show/$id.tsx | 13 +- src/pages/emergency/categories/index.tsx | 60 -- .../emergency/categories/modals/Create.tsx | 50 -- .../emergency/categories/modals/Update.tsx | 59 -- src/pages/emergency/events/index.tsx | 103 --- .../emergency/events/modals/ApplyClose.tsx | 53 -- src/pages/emergency/events/modals/Create.tsx | 179 ---- src/pages/emergency/events/modals/Review.tsx | 83 -- src/pages/emergency/events/modals/Update.tsx | 190 ----- src/pages/emergency/events/show/$id.tsx | 48 -- .../emergency/events/show/components/Info.tsx | 87 -- src/pages/emergency/follows/index.tsx | 85 -- src/pages/emergency/follows/modals/Create.tsx | 52 -- src/pages/emergency/follows/modals/Show.tsx | 58 -- src/pages/emergency/index.tsx | 50 -- src/pages/emergency/levels/index.tsx | 55 -- src/pages/emergency/levels/modals/Create.tsx | 43 - src/pages/emergency/levels/modals/Update.tsx | 53 -- src/pages/emergency/teams/index.tsx | 82 -- src/pages/emergency/teams/modals/Create.tsx | 97 --- src/pages/emergency/teams/modals/Update.tsx | 108 --- .../house_charage/house_door_cards/index.tsx | 4 +- .../house_door_cards/modals/Create.tsx | 4 +- .../house_door_cards/modals/Update.tsx | 4 +- .../instrument/instrument_list/index.tsx | 243 ------ src/pages/meter/common_meter/index.tsx | 240 ++++++ .../common_meter}/modals/ChargingStandard.tsx | 0 .../common_meter}/modals/Create.tsx | 0 .../common_meter}/modals/MeterHasHouse.tsx | 0 .../common_meter}/modals/MeterHasOne.tsx | 0 .../common_meter}/modals/Update.tsx | 0 src/pages/meter/house_meter/index.tsx | 240 ++++++ .../house_meter/modals/ChargingStandard.tsx | 122 +++ src/pages/meter/house_meter/modals/Create.tsx | 207 +++++ .../house_meter/modals/MeterHasHouse.tsx | 223 +++++ .../meter/house_meter/modals/MeterHasOne.tsx | 225 +++++ src/pages/meter/house_meter/modals/Update.tsx | 146 ++++ src/pages/{resource => meter}/index.tsx | 20 +- .../readings/components/MeteInfo.tsx | 0 .../{instrument => meter}/readings/index.tsx | 0 .../readings/modals/CorrectReading.tsx | 0 .../readings/modals/MeterTaskCreate.tsx | 0 .../readings/modals/MeterTaskShow.tsx | 2 +- .../readings/modals/NormalReading.tsx | 0 .../readings/modals/ResetReading.tsx | 0 .../readings/show/$id.tsx | 0 .../readings/table/HasHouse.tsx | 0 .../readings/table/ReadingLIst.tsx | 0 .../readings/table/Tasks.tsx | 0 .../{instrument => meter}/tasks/index.tsx | 0 .../tasks/modals/TaskCreate.tsx | 0 .../tasks/modals/TaskShow.tsx | 2 +- src/pages/patrol/index.tsx | 54 -- src/pages/patrol/patrol_locations/index.tsx | 272 ------- .../patrol/patrol_locations/modals/Create.tsx | 80 -- .../patrol/patrol_locations/modals/Update.tsx | 86 -- src/pages/patrol/patrol_routes/index.tsx | 112 --- .../patrol/patrol_routes/modals/Create.tsx | 314 ------- .../patrol/patrol_routes/modals/Update.tsx | 330 -------- src/pages/patrol/patrol_tasks/index.tsx | 164 ---- .../patrol/patrol_tasks/modals/Create.tsx | 125 --- .../patrol_tasks/modals/PatrolOrderAssign.tsx | 78 -- .../patrol_tasks/modals/PatrolOrderShow.tsx | 182 ----- src/pages/prepayments/list/index.tsx | 88 -- src/pages/prepayments/payment/index.tsx | 85 -- src/pages/quality/index.tsx | 151 ---- src/pages/quality/modals/Create.tsx | 153 ---- src/pages/quality/modals/Show.tsx | 123 --- src/pages/quality/modals/Update.tsx | 159 ---- .../application/components/Deposit.tsx | 85 -- .../application/components/WorkerTable.tsx | 108 --- .../application/components/info.tsx | 200 ----- src/pages/renovation/application/index.tsx | 213 ----- .../renovation/application/pages/create.tsx | 580 ------------- .../renovation/application/pages/show.tsx | 91 --- .../renovation/application/pages/update.tsx | 594 -------------- src/pages/renovation/audit/index.tsx | 107 --- src/pages/renovation/audit/modals/Review.tsx | 123 --- src/pages/renovation/audit/pages/review.tsx | 539 ------------ src/pages/renovation/config/$id.tsx | 50 -- src/pages/renovation/deposit/index.tsx | 87 -- src/pages/renovation/index.tsx | 44 - src/pages/renovation/modals/WorkerCreate.tsx | 117 --- src/pages/renovation/modals/WorkerUpdate.tsx | 111 --- .../renovation_inspection_rules/index.tsx | 94 --- .../modals/Create.tsx | 97 --- .../modals/Update.tsx | 100 --- .../renovation/renovation_workers/index.tsx | 109 --- .../renovation_workers/modals/Create.tsx | 105 --- .../renovation_workers/modals/Update.tsx | 105 --- src/pages/resource/resource_orders/index.tsx | 79 -- .../resource_orders/modals/Create.tsx | 126 --- .../resource_orders/modals/Update.tsx | 129 --- src/pages/resource/resources/index.tsx | 101 --- .../resource/resources/modals/Create.tsx | 129 --- .../resource/resources/modals/Update.tsx | 129 --- src/pages/supplier/internal/index.tsx | 76 -- src/pages/supplier/internal/modals/Create.tsx | 158 ---- src/pages/supplier/internal/modals/Update.tsx | 167 ---- .../supplier/outside/components/GradeList.tsx | 128 --- .../supplier/outside/components/Info.tsx | 187 ----- src/pages/supplier/outside/index.tsx | 158 ---- .../supplier/outside/modals/AddBlack.tsx | 68 -- .../supplier/outside/modals/AddGrade.tsx | 76 -- src/pages/supplier/outside/modals/Create.tsx | 282 ------- src/pages/supplier/outside/modals/Update.tsx | 291 ------- src/pages/supplier/outside/show/$id.tsx | 70 -- .../list/components/WorkLogsCreate.tsx | 2 +- 330 files changed, 4357 insertions(+), 29809 deletions(-) delete mode 100644 src/components/ModalsAssetItemsSelectList.tsx delete mode 100644 src/components/ModalsAssetsProjectSelectList.tsx delete mode 100644 src/components/ModalsContractsApprovalTemplatesSelectList.tsx delete mode 100644 src/components/ModalsContractsSelectList.tsx delete mode 100644 src/components/ModalsResourceSelectList.tsx delete mode 100644 src/components/SelectContract.tsx create mode 100644 src/pages/approval/all/modals/Show.tsx create mode 100644 src/pages/approval/cc_me/modals/Show.tsx delete mode 100644 src/pages/approval/modals/ApprovalShow.tsx create mode 100644 src/pages/approval/my_processed/modals/Show.tsx delete mode 100644 src/pages/approval/pending/modals/Refund.tsx delete mode 100644 src/pages/asset/asset_bi/charts/PieChart.tsx delete mode 100644 src/pages/asset/asset_bi/charts/ZigzagLine.tsx delete mode 100644 src/pages/asset/asset_bi/images/employee_number.svg delete mode 100644 src/pages/asset/asset_bi/images/event_number.svg delete mode 100644 src/pages/asset/asset_bi/images/house_number.svg delete mode 100644 src/pages/asset/asset_bi/images/instrument_number.svg delete mode 100644 src/pages/asset/asset_bi/images/parking_number.svg delete mode 100644 src/pages/asset/asset_bi/images/parking_space_number.svg delete mode 100644 src/pages/asset/asset_bi/images/project_number.svg delete mode 100644 src/pages/asset/asset_bi/images/user_number.svg delete mode 100644 src/pages/asset/asset_bi/index.tsx delete mode 100644 src/pages/asset/asset_bi/styleBi.scss delete mode 100644 src/pages/asset/asset_items/index.tsx delete mode 100644 src/pages/asset/asset_items/modals/BatchCreate.tsx delete mode 100644 src/pages/asset/asset_items/modals/Create.tsx delete mode 100644 src/pages/asset/asset_items/modals/CreateMaintenances.tsx delete mode 100644 src/pages/asset/asset_items/modals/Update.tsx delete mode 100644 src/pages/asset/asset_items/modals/UpdateManageStatus.tsx delete mode 100644 src/pages/asset/asset_items/modals/UpdateStatus.tsx delete mode 100644 src/pages/asset/asset_items/pages/create.tsx delete mode 100644 src/pages/asset/asset_items/pages/disposals_update.tsx delete mode 100644 src/pages/asset/asset_items/pages/inventories_update.tsx delete mode 100644 src/pages/asset/asset_items/pages/markings_update.tsx delete mode 100644 src/pages/asset/asset_items/pages/receives_update.tsx delete mode 100644 src/pages/asset/asset_items/pages/returns_update.tsx delete mode 100644 src/pages/asset/asset_items/pages/transfres_update.tsx delete mode 100644 src/pages/asset/asset_items_categories/index.tsx delete mode 100644 src/pages/asset/asset_items_categories/modals/Create.tsx delete mode 100644 src/pages/asset/asset_items_categories/modals/Update.tsx delete mode 100644 src/pages/asset/asset_items_disposals/index.tsx delete mode 100644 src/pages/asset/asset_items_disposals/modals/Complete.tsx delete mode 100644 src/pages/asset/asset_items_disposals/modals/Review.tsx delete mode 100644 src/pages/asset/asset_items_inventories/index.tsx delete mode 100644 src/pages/asset/asset_items_inventories/modals/Assign.tsx delete mode 100644 src/pages/asset/asset_items_inventories/modals/Details.tsx delete mode 100644 src/pages/asset/asset_items_inventories/modals/InventorySurplusList.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/index.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/list/index.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/list/modals/Assign.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/list/modals/CreateMaintenances.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/list/modals/Show.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/maintenance_rules/index.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesCreate.tsx delete mode 100644 src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesUpdate.tsx delete mode 100644 src/pages/asset/asset_items_markings/index.tsx delete mode 100644 src/pages/asset/asset_items_markings/modals/Review.tsx delete mode 100644 src/pages/asset/asset_items_receives/index.tsx delete mode 100644 src/pages/asset/asset_items_receives/modals/Review.tsx delete mode 100644 src/pages/asset/asset_items_returns/index.tsx delete mode 100644 src/pages/asset/asset_items_returns/modals/Review.tsx delete mode 100644 src/pages/asset/asset_items_transfers/index.tsx delete mode 100644 src/pages/asset/asset_items_transfers/modals/Review.tsx delete mode 100644 src/pages/asset/asset_items_warehouses/index.tsx delete mode 100644 src/pages/asset/asset_items_warehouses/modals/Create.tsx delete mode 100644 src/pages/asset/asset_items_warehouses/modals/Update.tsx rename src/pages/asset/{dictionary => asset_list/table}/modals/BuildingsCreate.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/BuildingsUpdate.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/HousesCreate.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/HousesShow.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/HousesUpdate.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/UnitsCreate.tsx (100%) rename src/pages/asset/{dictionary => asset_list/table}/modals/UnitsUpdate.tsx (100%) delete mode 100644 src/pages/asset/dictionary/index.tsx delete mode 100644 src/pages/asset/grids/modals/GridShow.tsx rename src/pages/{contract/contract_bills/modals/Create.tsx => asset/houses/modals/BuildingsCreate.tsx} (72%) rename src/pages/{contract/contract_bills/modals/Update.tsx => asset/houses/modals/BuildingsUpdate.tsx} (64%) create mode 100644 src/pages/asset/houses/modals/HousesCreate.tsx create mode 100644 src/pages/asset/houses/modals/HousesShow.tsx create mode 100644 src/pages/asset/houses/modals/HousesUpdate.tsx create mode 100644 src/pages/asset/houses/modals/UnitsCreate.tsx create mode 100644 src/pages/asset/houses/modals/UnitsUpdate.tsx delete mode 100644 src/pages/attendance/attendance_configs/index.tsx delete mode 100644 src/pages/attendance/attendance_configs/modals/Create.tsx delete mode 100644 src/pages/attendance/attendance_configs/modals/Update.tsx delete mode 100644 src/pages/attendance/attendance_employees/index.tsx delete mode 100644 src/pages/attendance/attendance_employees/modals/Change.tsx delete mode 100644 src/pages/attendance/attendance_employees/modals/EmployeeCreate.tsx delete mode 100644 src/pages/attendance/attendance_employees/modals/EmployeeUpdate.tsx delete mode 100644 src/pages/attendance/attendance_records/index.tsx delete mode 100644 src/pages/attendance/attendance_schedules/index.tsx delete mode 100644 src/pages/attendance/attendance_schedules/modals/Create.tsx delete mode 100644 src/pages/attendance/attendance_schedules/modals/Update.tsx delete mode 100644 src/pages/attendance/attendance_schedules/pages/create.tsx delete mode 100644 src/pages/attendance/attendance_shifts/index.tsx delete mode 100644 src/pages/attendance/attendance_shifts/pages/create.tsx delete mode 100644 src/pages/attendance/attendance_shifts/pages/update.tsx delete mode 100644 src/pages/contract/contract_archives/index.tsx delete mode 100644 src/pages/contract/contract_archives/modals/Archives.tsx delete mode 100644 src/pages/contract/contract_archives/modals/Create.tsx delete mode 100644 src/pages/contract/contract_archives/modals/Show.tsx delete mode 100644 src/pages/contract/contract_archives/modals/Update.tsx delete mode 100644 src/pages/contract/contract_bill_payments/index.tsx delete mode 100644 src/pages/contract/contract_bill_payments/modals/Create.tsx delete mode 100644 src/pages/contract/contract_bill_payments/modals/Review.tsx delete mode 100644 src/pages/contract/contract_bill_payments/modals/Update.tsx delete mode 100644 src/pages/contract/contract_bill_payments/pages/review.tsx delete mode 100644 src/pages/contract/contract_bills/index.tsx delete mode 100644 src/pages/contract/contract_bills/pages/create.tsx delete mode 100644 src/pages/contract/contract_bills/pages/update.tsx delete mode 100644 src/pages/contract/contract_seal_logs/index.tsx delete mode 100644 src/pages/contract/contract_seal_logs/seals/index.tsx delete mode 100644 src/pages/contract/contract_seal_logs/seals/modals/Create.tsx delete mode 100644 src/pages/contract/contract_seal_logs/seals/modals/Update.tsx delete mode 100644 src/pages/contract/contract_seal_logs/unused/index.tsx delete mode 100644 src/pages/contract/contract_seal_logs/unused/modals/UseSeal.tsx delete mode 100644 src/pages/contract/contract_seal_logs/used/index.tsx delete mode 100644 src/pages/contract/contract_seal_logs/used/modals/Show.tsx delete mode 100644 src/pages/contract/contract_seal_logs/used/modals/Update.tsx delete mode 100644 src/pages/contract/contract_templates/index.tsx delete mode 100644 src/pages/contract/contract_templates/modals/Create.tsx delete mode 100644 src/pages/contract/contract_templates/modals/Update.tsx delete mode 100644 src/pages/contract/contract_types/index.tsx delete mode 100644 src/pages/contract/contract_types/modals/Create.tsx delete mode 100644 src/pages/contract/contract_types/modals/Update.tsx delete mode 100644 src/pages/contract/contracts/index.tsx delete mode 100644 src/pages/contract/contracts/modals/Change.tsx delete mode 100644 src/pages/contract/contracts/modals/Review.tsx delete mode 100644 src/pages/contract/contracts/modals/SignSubjectSelectList.tsx delete mode 100644 src/pages/contract/contracts/modals/SubmitApproval.tsx delete mode 100644 src/pages/contract/contracts/modals/SubmitReview copy.tsx delete mode 100644 src/pages/contract/contracts/modals/SubmitReview.tsx delete mode 100644 src/pages/contract/contracts/modals/Terminated.tsx delete mode 100644 src/pages/contract/contracts/modals/Update.tsx delete mode 100644 src/pages/contract/contracts/modals/Voided.tsx delete mode 100644 src/pages/contract/contracts/pages/contract_create.tsx delete mode 100644 src/pages/contract/contracts/pages/contract_update.tsx delete mode 100644 src/pages/contract/contracts/pages/reducer.ts delete mode 100644 src/pages/contract/contracts/pages/review.tsx delete mode 100644 src/pages/contract/contracts/show/$id.tsx delete mode 100644 src/pages/contract/contracts/show/components/ArchivingLogs.tsx delete mode 100644 src/pages/contract/contracts/show/components/ContractBills.tsx delete mode 100644 src/pages/contract/contracts/show/components/ContractsInfo.tsx delete mode 100644 src/pages/contract/contracts/show/components/UsedLogs.tsx delete mode 100644 src/pages/contract/contracts_bi/images/30_60_icon.svg delete mode 100644 src/pages/contract/contracts_bi/images/ClosedIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/InPerformanceIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/NotClosedIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/NotFiledIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/NotStampedIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/PendingApplicationIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/TerminatedIcon.svg delete mode 100644 src/pages/contract/contracts_bi/images/UnreviewedIcon.svg delete mode 100644 src/pages/contract/contracts_bi/index.tsx delete mode 100644 src/pages/contract/contracts_bi/styleBi.scss delete mode 100644 src/pages/contract/modals/PayBills.tsx delete mode 100644 src/pages/contract/pending_review/all_approval/index.tsx delete mode 100644 src/pages/contract/pending_review/approval_instances/index.tsx delete mode 100644 src/pages/contract/pending_review/index copy.tsx delete mode 100644 src/pages/contract/pending_review/index.tsx delete mode 100644 src/pages/contract/pending_review/my_apply_list/index.tsx delete mode 100644 src/pages/customer/archive/components/PrePay.tsx delete mode 100644 src/pages/customer/archive/components/PrePayInfo.tsx delete mode 100644 src/pages/emergency/categories/index.tsx delete mode 100644 src/pages/emergency/categories/modals/Create.tsx delete mode 100644 src/pages/emergency/categories/modals/Update.tsx delete mode 100644 src/pages/emergency/events/index.tsx delete mode 100644 src/pages/emergency/events/modals/ApplyClose.tsx delete mode 100644 src/pages/emergency/events/modals/Create.tsx delete mode 100644 src/pages/emergency/events/modals/Review.tsx delete mode 100644 src/pages/emergency/events/modals/Update.tsx delete mode 100644 src/pages/emergency/events/show/$id.tsx delete mode 100644 src/pages/emergency/events/show/components/Info.tsx delete mode 100644 src/pages/emergency/follows/index.tsx delete mode 100644 src/pages/emergency/follows/modals/Create.tsx delete mode 100644 src/pages/emergency/follows/modals/Show.tsx delete mode 100644 src/pages/emergency/index.tsx delete mode 100644 src/pages/emergency/levels/index.tsx delete mode 100644 src/pages/emergency/levels/modals/Create.tsx delete mode 100644 src/pages/emergency/levels/modals/Update.tsx delete mode 100644 src/pages/emergency/teams/index.tsx delete mode 100644 src/pages/emergency/teams/modals/Create.tsx delete mode 100644 src/pages/emergency/teams/modals/Update.tsx delete mode 100644 src/pages/instrument/instrument_list/index.tsx create mode 100644 src/pages/meter/common_meter/index.tsx rename src/pages/{instrument/instrument_list => meter/common_meter}/modals/ChargingStandard.tsx (100%) rename src/pages/{instrument/instrument_list => meter/common_meter}/modals/Create.tsx (100%) rename src/pages/{instrument/instrument_list => meter/common_meter}/modals/MeterHasHouse.tsx (100%) rename src/pages/{instrument/instrument_list => meter/common_meter}/modals/MeterHasOne.tsx (100%) rename src/pages/{instrument/instrument_list => meter/common_meter}/modals/Update.tsx (100%) create mode 100644 src/pages/meter/house_meter/index.tsx create mode 100644 src/pages/meter/house_meter/modals/ChargingStandard.tsx create mode 100644 src/pages/meter/house_meter/modals/Create.tsx create mode 100644 src/pages/meter/house_meter/modals/MeterHasHouse.tsx create mode 100644 src/pages/meter/house_meter/modals/MeterHasOne.tsx create mode 100644 src/pages/meter/house_meter/modals/Update.tsx rename src/pages/{resource => meter}/index.tsx (72%) rename src/pages/{instrument => meter}/readings/components/MeteInfo.tsx (100%) rename src/pages/{instrument => meter}/readings/index.tsx (100%) rename src/pages/{instrument => meter}/readings/modals/CorrectReading.tsx (100%) rename src/pages/{instrument => meter}/readings/modals/MeterTaskCreate.tsx (100%) rename src/pages/{instrument => meter}/readings/modals/MeterTaskShow.tsx (97%) rename src/pages/{instrument => meter}/readings/modals/NormalReading.tsx (100%) rename src/pages/{instrument => meter}/readings/modals/ResetReading.tsx (100%) rename src/pages/{instrument => meter}/readings/show/$id.tsx (100%) rename src/pages/{instrument => meter}/readings/table/HasHouse.tsx (100%) rename src/pages/{instrument => meter}/readings/table/ReadingLIst.tsx (100%) rename src/pages/{instrument => meter}/readings/table/Tasks.tsx (100%) rename src/pages/{instrument => meter}/tasks/index.tsx (100%) rename src/pages/{instrument => meter}/tasks/modals/TaskCreate.tsx (100%) rename src/pages/{instrument => meter}/tasks/modals/TaskShow.tsx (97%) delete mode 100644 src/pages/patrol/index.tsx delete mode 100644 src/pages/patrol/patrol_locations/index.tsx delete mode 100644 src/pages/patrol/patrol_locations/modals/Create.tsx delete mode 100644 src/pages/patrol/patrol_locations/modals/Update.tsx delete mode 100644 src/pages/patrol/patrol_routes/index.tsx delete mode 100644 src/pages/patrol/patrol_routes/modals/Create.tsx delete mode 100644 src/pages/patrol/patrol_routes/modals/Update.tsx delete mode 100644 src/pages/patrol/patrol_tasks/index.tsx delete mode 100644 src/pages/patrol/patrol_tasks/modals/Create.tsx delete mode 100644 src/pages/patrol/patrol_tasks/modals/PatrolOrderAssign.tsx delete mode 100644 src/pages/patrol/patrol_tasks/modals/PatrolOrderShow.tsx delete mode 100644 src/pages/prepayments/list/index.tsx delete mode 100644 src/pages/prepayments/payment/index.tsx delete mode 100644 src/pages/quality/index.tsx delete mode 100644 src/pages/quality/modals/Create.tsx delete mode 100644 src/pages/quality/modals/Show.tsx delete mode 100644 src/pages/quality/modals/Update.tsx delete mode 100644 src/pages/renovation/application/components/Deposit.tsx delete mode 100644 src/pages/renovation/application/components/WorkerTable.tsx delete mode 100644 src/pages/renovation/application/components/info.tsx delete mode 100644 src/pages/renovation/application/index.tsx delete mode 100644 src/pages/renovation/application/pages/create.tsx delete mode 100644 src/pages/renovation/application/pages/show.tsx delete mode 100644 src/pages/renovation/application/pages/update.tsx delete mode 100644 src/pages/renovation/audit/index.tsx delete mode 100644 src/pages/renovation/audit/modals/Review.tsx delete mode 100644 src/pages/renovation/audit/pages/review.tsx delete mode 100644 src/pages/renovation/config/$id.tsx delete mode 100644 src/pages/renovation/deposit/index.tsx delete mode 100644 src/pages/renovation/index.tsx delete mode 100644 src/pages/renovation/modals/WorkerCreate.tsx delete mode 100644 src/pages/renovation/modals/WorkerUpdate.tsx delete mode 100644 src/pages/renovation/renovation_inspection_rules/index.tsx delete mode 100644 src/pages/renovation/renovation_inspection_rules/modals/Create.tsx delete mode 100644 src/pages/renovation/renovation_inspection_rules/modals/Update.tsx delete mode 100644 src/pages/renovation/renovation_workers/index.tsx delete mode 100644 src/pages/renovation/renovation_workers/modals/Create.tsx delete mode 100644 src/pages/renovation/renovation_workers/modals/Update.tsx delete mode 100644 src/pages/resource/resource_orders/index.tsx delete mode 100644 src/pages/resource/resource_orders/modals/Create.tsx delete mode 100644 src/pages/resource/resource_orders/modals/Update.tsx delete mode 100644 src/pages/resource/resources/index.tsx delete mode 100644 src/pages/resource/resources/modals/Create.tsx delete mode 100644 src/pages/resource/resources/modals/Update.tsx delete mode 100644 src/pages/supplier/internal/index.tsx delete mode 100644 src/pages/supplier/internal/modals/Create.tsx delete mode 100644 src/pages/supplier/internal/modals/Update.tsx delete mode 100644 src/pages/supplier/outside/components/GradeList.tsx delete mode 100644 src/pages/supplier/outside/components/Info.tsx delete mode 100644 src/pages/supplier/outside/index.tsx delete mode 100644 src/pages/supplier/outside/modals/AddBlack.tsx delete mode 100644 src/pages/supplier/outside/modals/AddGrade.tsx delete mode 100644 src/pages/supplier/outside/modals/Create.tsx delete mode 100644 src/pages/supplier/outside/modals/Update.tsx delete mode 100644 src/pages/supplier/outside/show/$id.tsx diff --git a/src/common/components/MyButtons.tsx b/src/common/components/MyButtons.tsx index 16254a3..578a965 100644 --- a/src/common/components/MyButtons.tsx +++ b/src/common/components/MyButtons.tsx @@ -1,9 +1,4 @@ -import { - EditOutlined, - PlusOutlined, - RollbackOutlined, - SaveFilled, -} from '@ant-design/icons'; +import { PlusOutlined, RollbackOutlined, SaveFilled } from '@ant-design/icons'; import { useNavigate } from '@umijs/max'; import { Button, ButtonProps, Dropdown, Popconfirm } from 'antd'; import { MyResponseType } from '..'; @@ -66,7 +61,7 @@ export const MyButtons = { }, Edit({ title = '编辑', ...rest }: MyButtonsType): JSX.Element { return ( - ); diff --git a/src/components/ModalsAssetItemsSelectList.tsx b/src/components/ModalsAssetItemsSelectList.tsx deleted file mode 100644 index 2de656e..0000000 --- a/src/components/ModalsAssetItemsSelectList.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemsEntryTypeEnum, - AssetItemsManageStatusEnum, - AssetItemsStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { type TableProps } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function ModalsHouseSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - onCancel?: () => void; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: TableProps['rowSelection'] = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - setSelectedRow(selectedRows); - }, - defaultSelectedRowKeys: props?.item?.id ? [props?.item?.id] : [], - }; - - return ( - { - setSelectedRow(props?.item); - }} - node={ - - MyProTableProps.request(params, sort, Apis.Asset.AssetItems.List) - } - params={props?.item} - headerTitle={`资产列表`} - rowSelection={{ - type: props?.item?.mode || 'checkbox', - ...rowSelection, - }} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '管理状态', - dataIndex: 'manage_status', - valueEnum: AssetItemsManageStatusEnum, - search: !props?.item?.manage_status, - }), - MyColumns.EnumTag({ - title: '资产状态', - dataIndex: 'status', - valueEnum: AssetItemsStatusEnum, - // search: false, - }), - MyColumns.EnumTag({ - title: '入库方式', - dataIndex: 'entry_type', - valueEnum: AssetItemsEntryTypeEnum, - search: false, - }), - { - title: '资产分类', - search: false, - render: (_, item: any) => { - return `${item?.asset_item_category_level1?.name}-${item?.asset_item_category_level2?.name}-${item?.asset_item_category_level3?.name}`; - }, - }, - { - title: '仓库', - dataIndex: ['asset_item_warehouse', 'name'], - search: false, - }, - { - title: '项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '资产归属', - dataIndex: 'ownership', - search: false, - }, - { - title: '品牌', - dataIndex: 'brand', - search: false, - }, - { - title: '型号', - dataIndex: 'specification', - search: false, - }, - { - title: '管理人员', - dataIndex: ['company_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - ]} - /> - } - > - ); -} diff --git a/src/components/ModalsAssetsProjectSelectList.tsx b/src/components/ModalsAssetsProjectSelectList.tsx deleted file mode 100644 index 5c31b4d..0000000 --- a/src/components/ModalsAssetsProjectSelectList.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { AssetProjectsPropertyTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useRef, useState } from 'react'; -interface DataType { - key?: React.Key; - id?: React.Key; -} -export default function SurveysSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - type?: 'checkbox' | 'radio'; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: any = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows, 'selectedRows[0]'); - setSelectedRow(selectedRows); - }, - getCheckboxProps: (record: any) => ({ - disabled: record.deleted_at, - checked: props?.item?.some((item: any) => { - console.log(item, record); - return item?.id === record?.id; - }), - }), - defaultSelectedRowKeys: props?.item?.map((item: any) => item?.id) || [], - }; - - return ( - { - setSelectedRow(props?.item); - console.log(props?.item, 'props?.item?.id'); - }} - node={ - - MyProTableProps.request(params, sort, Apis.Asset.AssetProjects.List) - } - rowSelection={{ - type: props?.type ? props?.type : 'checkbox', - ...rowSelection, - }} - options={false} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '项目名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'property_type', - valueEnum: AssetProjectsPropertyTypeEnum, - search: false, - }), - { - title: '地址', - render: (_, i: any) => { - return `${i?.province || ''} ${i?.city || ''} ${ - i?.district || '' - }${i?.address || ''}`; - }, - search: false, - }, - MyColumns.DeletedAt({ - title: '启/禁用', - dataIndex: 'deleted_at', - search: false, - }), - ]} - /> - } - > - ); -} diff --git a/src/components/ModalsContractsApprovalTemplatesSelectList.tsx b/src/components/ModalsContractsApprovalTemplatesSelectList.tsx deleted file mode 100644 index d061d8f..0000000 --- a/src/components/ModalsContractsApprovalTemplatesSelectList.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { ApprovalTemplatesTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { type TableProps } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function ModalsHouseSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - onCancel?: () => void; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: TableProps['rowSelection'] = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows[0], 'selectedRows[0]'); - setSelectedRow(selectedRows[0]); - }, - defaultSelectedRowKeys: props?.item?.id ? [props?.item?.id] : [], - }; - - return ( - { - setSelectedRow(props?.item); - }} - node={ - - MyProTableProps.request( - { - ...params, - ...props?.item, - }, - sort, - Apis.Approval.ApprovalTemplates.List, - ) - } - rowSelection={{ type: 'radio', ...rowSelection }} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ search: false }), - { - title: '模版名称', - dataIndex: 'name', - }, - { - title: '模版编码', - dataIndex: 'code', - }, - MyColumns.EnumTag({ - title: '业务类型', - dataIndex: 'type', - valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - MyColumns.Boolean({ - title: '是否启用', - search: false, - }), - ]} - /> - } - > - ); -} diff --git a/src/components/ModalsContractsSelectList.tsx b/src/components/ModalsContractsSelectList.tsx deleted file mode 100644 index 81aa552..0000000 --- a/src/components/ModalsContractsSelectList.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsStatusEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import dayjs from 'dayjs'; -import { useRef, useState } from 'react'; -interface DataType { - key?: React.Key; - id?: React.Key; -} -export default function CompanySealsSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: any = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows, 'selectedRows[0]'); - setSelectedRow(selectedRows); - }, - getCheckboxProps: (record: any) => ({ - disabled: record.deleted_at, - checked: props?.item?.some((item: any) => { - console.log(item, record); - return item?.id === record?.id; - }), - }), - defaultSelectedRowKeys: props?.item?.map((item: any) => item?.id) || [], - }; - - return ( - { - setSelectedRow(props?.item); - console.log(props?.item, 'props?.item?.id'); - }} - node={ - - MyProTableProps.request(params, sort, Apis.Contract.Contracts.List) - } - rowSelection={{ type: 'radio', ...rowSelection }} - options={false} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同编号', - dataIndex: 'code', - }, - { - title: '合同名称', - dataIndex: 'name', - }, - - { - title: '签订部门', - dataIndex: 'sign_department', - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ContractsStatusEnum, - }), - MyColumns.EnumTag({ - title: '收支类型', - dataIndex: 'income_expense_type', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - }), - MyColumns.EnumTag({ - title: '合同性质', - dataIndex: 'contract_nature', - valueEnum: ContractsContractNatureEnum, - }), - { - title: '合同总价', - search: false, - render: (_, item: any) => { - return `¥${item.total_amount}`; - }, - }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${dayjs(item.start_time).format('YYYY-MM-DD')}至${dayjs( - item.end_time, - ).format('YYYY-MM-DD')}`; - }, - }, - { - title: '开始时间', - dataIndex: 'start_time', - hidden: true, - }, - { - title: '结束时间', - dataIndex: 'end_time', - hidden: true, - }, - ]} - /> - } - > - ); -} diff --git a/src/components/ModalsResourceSelectList.tsx b/src/components/ModalsResourceSelectList.tsx deleted file mode 100644 index 024943f..0000000 --- a/src/components/ModalsResourceSelectList.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { ResourceTypesCategoryEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { type TableProps, Image } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function ModalsResourceSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: TableProps['rowSelection'] = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows[0], 'selectedRows[0]'); - setSelectedRow(selectedRows[0]); - }, - getCheckboxProps: (record: any) => ({ - disabled: record.deleted_at, - checked: props?.item?.resources_id === record?.id, - }), - defaultSelectedRowKeys: [props?.item?.resources_id], - }; - - return ( - { - setSelectedRow(props?.item); - }} - node={ - - MyProTableProps.request( - { - ...params, - ...props?.item, - }, - sort, - Apis.Resource.Resources.UsableResourceList, - ) - } - rowSelection={{ type: 'radio', ...rowSelection }} - options={false} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'category', - valueEnum: ResourceTypesCategoryEnum, - }), - // MyColumns.EnumTag({ - // title: '状态', - // dataIndex: 'reservation_status', - // valueEnum: ResourcesReservationStatusEnum, - // }), - { - title: '项目', - search: false, - dataIndex: ['asset_project', 'name'], - }, - { - title: '楼栋', - search: false, - dataIndex: ['asset_building', 'name'], - }, - { - title: '单元', - search: false, - dataIndex: ['asset_unit', 'name'], - }, - { - title: '封面', - search: false, - render: (_, item: any) => { - return ; - }, - }, - ]} - /> - } - > - ); -} diff --git a/src/components/Select.tsx b/src/components/Select.tsx index e0efd1b..d6e4854 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -1,6 +1,6 @@ import { rulesHelper } from '@/common'; import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum, HouseBillsTypeEnum } from '@/gen/Enums'; +import { HouseBillsTypeEnum } from '@/gen/Enums'; import { ProColumns, ProFormColumnsType } from '@ant-design/pro-components'; type ReturnType = ProColumns & ProFormColumnsType; @@ -374,43 +374,7 @@ export const Selects = { }, }; }, - //收款账号 - ProjectReceiptAccountsSelect(props?: PropsType): ReturnType { - const { - title = '收款账户', - key = 'company_project_receipt_accounts_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.Company.CompanyProjectReceiptAccounts.ProjectReceiptAccountsSelect( - { - keywords: params?.keyWords, - projects_id: params?.asset_projects_id, - ...params, - }, - ) - ).data, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, //项目收款账户 ProjectAccounts(props?: PropsType): ReturnType { const { @@ -535,7 +499,7 @@ export const Selects = { formItemProps: { ...(required ? rulesHelper.number : {}) }, request: async (params) => ( - await Apis.HouseCharage.HouseChargeStandards.Select({ + await Apis.HouseCharge.HouseChargeStandards.Select({ keywords: params?.keyWords, asset_projects_id: params?.asset_projects_id, charge_type: params?.charge_type, @@ -589,600 +553,7 @@ 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) => { - // console.log(params, '1111'); - // let res = await Apis.Meter.HouseMeters.List({ - // ...params, - // asset_projects_id: params?.asset_projects_id, - // charge_standards_id: params?.house_charge_standards_id, - // name: params?.keyWords || undefined, - // }); - // res?.data?.forEach((l: any) => { - // l.label = l.id + ':' + l.name; - // l.value = l.id; - // }); - // return res?.data; - // }, - // ...rest, - // fieldProps: { - // showSearch: true, - // fieldNames: { - // label: 'label', - // value: 'value', - // }, - // ...rest?.fieldProps, - // }, - // }; - // }, - //获取合同类型 - ContractTypes(props?: PropsType): ReturnType { - const { - title = '合同类型', - key = 'contract_types_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Contract.ContractTypes.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取题目分类 - QuestionCategories(props?: PropsType): ReturnType { - const { - title = '所属分类', - key = 'category_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Survey.QuestionCategories.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取题目 - Questions(props?: PropsType): ReturnType { - const { - title = '选择题目', - key = 'question_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Survey.Questions.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取题目 - EmergencyEvents(props?: PropsType): ReturnType { - const { - title = '选择突发事件', - key = 'emergency_events_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Emergency.EmergencyEvents.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //仓库 - WarehousesSelect(props?: PropsType): ReturnType { - const { - title = '选择仓库', - key = 'asset_item_warehouses_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Asset.AssetItemWarehouses.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - ...rest?.fieldProps, - }, - }; - }, - //资产分类 - AssetCategoriesSelect(props?: PropsType): ReturnType { - const { - title = '选择分类', - key = 'category_ids', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Asset.AssetItemCategories.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - ...rest?.fieldProps, - }, - }; - }, - //资产分类 - AssetCategories(props?: PropsType): ReturnType { - const { - title = '资产分类', - key = 'asset_item_category_level_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'cascader', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Asset.AssetItemCategories.SelectTree({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - allowClear: true, - // changeOnSelect: true, - treeDefaultExpandAll: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //突发事件分类 - EmergencyCategories(props?: PropsType): ReturnType { - const { - title = '选择分类', - key = 'two_emergency_categories_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'cascader', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Emergency.EmergencyEventCategories.SelectTree({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - allowClear: true, - // changeOnSelect: true, - treeDefaultExpandAll: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //突发事件等级 - EmergencyEventLevels(props?: PropsType): ReturnType { - const { - title = '选择等级', - key = 'emergency_event_levels_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Emergency.EmergencyEventLevels.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - allowClear: true, - ...rest?.fieldProps, - }, - }; - }, - //获取问卷 - Surveys(props?: PropsType): ReturnType { - const { - title = '选择问卷', - key = 'surveys_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Survey.Surveys.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取装修巡检规则 - RenovationInspectionRules(props?: PropsType): ReturnType { - const { - title = '选择巡检规则', - key = 'renovation_inspection_rules_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Renovation.RenovationInspectionRules.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取班次 - AttendanceShiftsSelect(props?: PropsType): ReturnType { - const { - title = '选择班次', - key = 'attendance_shifts_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - dataIndex: key, - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Attendance.AttendanceShifts.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取巡逻位置 - PatrolLocationsSelect(props?: PropsType): ReturnType { - const { - title = '选择巡逻位置', - key = 'patrol_location', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Patrol.PatrolLocations.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取巡逻路线 - PatrolRoutesSelect(props?: PropsType): ReturnType { - const { - title = '选择巡逻路线', - key = 'patrol_routes_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Patrol.PatrolRoutes.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - ...rest?.fieldProps, - }, - }; - }, - // 选择印章 - CompanySeals(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) => { - let res = await Apis.Company.CompanySeals.List({ - ...params, - keyWords: params?.keyWords, - }); - res?.data?.forEach((l: any) => { - // 获取印章类型的友好显示名称 - let typeText = l.type; - if (typeof l.type === 'string') { - const typeKey = l.type as keyof typeof CompanySealsTypeEnum; - if (CompanySealsTypeEnum[typeKey]?.text) { - typeText = CompanySealsTypeEnum[typeKey].text; - } - } - l.label = `${l.company_supplier.name} (${typeText})`; - l.value = l.id; - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - // 选择内部企业 - Supplier(props?: PropsType): ReturnType { - const { - title = '选择企业主体', - key = 'company_suppliers_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Company.CompanySuppliers.Select({ - ...params, - keyWords: params?.keyWords, - }); - res?.data?.forEach((l: any) => { - l.label = l.name; - l.value = l.id; - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, HouseBill(props?: PropsType): ReturnType { const { title = '选择账单', @@ -1270,52 +641,7 @@ export const Selects = { }, }; }, - // 合同拟制,选择印章 - ContractSeals(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.array : {}) }, - request: async (params) => { - let res = await Apis.Company.CompanySeals.List({ - ...params, - keyWords: params?.keyWords, - }); - res?.data?.forEach((l: any) => { - // 获取印章类型的友好显示名称 - let typeText = l.type; - if (typeof l.type === 'string') { - const typeKey = l.type as keyof typeof CompanySealsTypeEnum; - if (CompanySealsTypeEnum[typeKey]?.text) { - typeText = CompanySealsTypeEnum[typeKey].text; - } - } - l.label = `${l.company_supplier.name} (${typeText})`; - l.value = l.id; - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, //获取仪表 AssetMeters(props?: PropsType): ReturnType { const { diff --git a/src/components/SelectContract.tsx b/src/components/SelectContract.tsx deleted file mode 100644 index e89119d..0000000 --- a/src/components/SelectContract.tsx +++ /dev/null @@ -1,276 +0,0 @@ -import { rulesHelper } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum } from '@/gen/Enums'; -import { ProColumns, ProFormColumnsType } from '@ant-design/pro-components'; - -type ReturnType = ProColumns & ProFormColumnsType; -type PropsType = { required?: boolean } & ReturnType; - -export const SelectContract = { - //选择合同的企业主体 - SupplierName(props?: PropsType): ReturnType { - const { - title = '选择企业主体', - key = 'company_suppliers_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.text : {}) }, - request: async (params) => { - let res = await Apis.Company.CompanySuppliers.Select({ - ...params, - keyWords: params?.keyWords, - }); - res?.data?.forEach((l: any) => { - l.label = l.name; - l.value = l.name; - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - - //组织树 - 确保只返回最后一个选中的值 - - OrganizationsName(props?: PropsType): ReturnType { - const { - title = '组织', - key = 'organizations_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'cascader', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.text : {}) }, - request: async (params) => - ( - await Apis.Company.Organizations.SelectTree({ - keywords: params?.keyWords, - companies_id: params?.companies_id, - ...params, - }) - ).data, - ...rest, - fieldProps: { - showSearch: true, - changeOnSelect: true, - fieldNames: { - label: 'name', - value: 'name', - children: 'children', - }, - ...rest?.fieldProps, - }, - }; - }, - //获取合同类型 - ContractTypes(props?: PropsType): ReturnType { - const { - title = '合同类型', - key = 'contract_types_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let res = await Apis.Contract.ContractTypes.Select({ - ...params, - name: params?.keyWords || undefined, - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - //项目id - AssetProjects(props?: PropsType): ReturnType { - const { - title = '选择项目', - key = 'asset_projects_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.Asset.AssetProjects.Select({ - keywords: params?.keyWords, - ...params, - }) - ).data, - ...rest, - fieldProps: { - showSearch: true, - placeholder: '请选择(支持关键字搜索)', - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - //员工 - EmployeeName(props?: PropsType): ReturnType { - const { - title = '员工', - key = 'contract_liaison', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.text : {}) }, - request: async (params) => - ( - await Apis.Company.CompanyEmployees.Select({ - keywords: params?.keyWords, - ...params, - }) - ).data, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'label', - }, - ...rest?.fieldProps, - }, - }; - }, - //审核人 - ExamineEmployees(props?: PropsType): ReturnType { - const { - title = '审核人', - key = 'company_employees_id', - required = false, - hideInTable = true, - ...rest - } = props ?? {}; - - return { - title: title, - key: key, - valueType: 'select', - hideInTable: hideInTable, - formItemProps: { ...(required ? rulesHelper.number : {}) }, - request: async (params) => { - let value = { - keywords: - params?.keyWords === undefined ? params?.name : params?.keyWords, - }; - console.log(params, 'Employees'); - return ( - await Apis.Company.CompanyEmployees.Select({ - ...params, - ...value, - }) - ).data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, - // 合同拟制,选择印章 - ContractSeals(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.array : {}) }, - request: async (params) => { - let res = await Apis.Company.CompanySeals.List({ - ...params, - keyWords: params?.keyWords, - }); - res?.data?.forEach((l: any) => { - // 获取印章类型的友好显示名称 - let typeText = l.type; - if (typeof l.type === 'string') { - const typeKey = l.type as keyof typeof CompanySealsTypeEnum; - if (CompanySealsTypeEnum[typeKey]?.text) { - typeText = CompanySealsTypeEnum[typeKey].text; - } - } - l.label = `${l.company_supplier.name} (${typeText})`; - l.value = l.id; - }); - return res?.data; - }, - ...rest, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'label', - value: 'value', - }, - ...rest?.fieldProps, - }, - }; - }, -}; diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index 225271c..4b3a6bb 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -1,4 +1,68 @@ declare namespace ApiTypes { + namespace Activity { + namespace Activities { + type List = { + "title"?: string; // 模糊搜索:名称 + "status"?: string; // 状态,[enum:ActivitiesStatusEnum] + "publish_status"?: string; // 发布状态,[enum:ActivitiesPublishStatusEnum] + "asset_projects_id"?: number; // 项目ID,[ref:asset_projects] + "project_name"?: string; // 项目名称,关联搜索 + }; + type Store = { + "title": string; // 活动标题 + "start_time": Date; // 活动开始时间 + "end_time": Date; // 活动结束时间 + "publish_type"?: string; // 发布类型,[enum:ActivitiesPublishTypeEnum] + "schedule_publish_at"?: Date; // 定时发布时间 + "is_enroll"?: boolean; // 是否报名:1 是、0 否 + "project_ids"?: string[]; // 项目ID + "content": string; // 内容 + "cover_image"?: string[]; // 封面图片 + }; + type Update = { + "id": number; // id + "title": string; // 活动标题 + "start_time": Date; // 活动开始时间 + "end_time": Date; // 活动结束时间 + "publish_type"?: string; // 发布类型,[enum:ActivitiesPublishTypeEnum] + "schedule_publish_at"?: Date; // 定时发布时间 + "is_enroll"?: boolean; // 是否报名:1 是、0 否 + "project_ids"?: string[]; // 项目ID + "content": string; // 内容 + "cover_image"?: string[]; // 封面图片 + }; + type ChangePublishStatus = { + "id": number; // id + "publish_status": string; // 状态,[enum:ActivitiesPublishStatusEnum] + }; + type Show = { + "id": number; // id + }; + type SoftDelete = { + "id": number; // id + }; + type Restore = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace ActivityEnrolls { + type List = { + "activities_id"?: number; // 活动id,[ref:activities] + "customer_name"?: string; // 模糊搜索:客户名称 + "customer_phone"?: string; // 模糊搜索:客户电话 + }; + type Show = { + "id": number; // id + }; + type ChangeStatus = { + "id": number; // id + "status": string; // 状态:[ActivityEnrollsStatusEnum] + }; + } + } namespace Archive { namespace HouseOccupants { type List = { @@ -144,6 +208,57 @@ declare namespace ApiTypes { "keywords"?: string; // 关键词 }; } + namespace AssetCarPorts { + type List = { + "id"?: number; // 车位id + "asset_projects_id"?: number; // 所属项目id,[ref:asset_projects] + "asset_parking_places_id"?: number; // 所属车场id,[ref:asset_parking_places] + "full_name"?: string; // 模糊搜索:名称 + "project_name"?: string; // 项目名称 + "parking_place_name"?: string; // 车场名称 + "status"?: string; // 状态,[enum:AssetCarPortsStatusEnum] + "type"?: string; // 车位类型,[enum:AssetCarPortsTypeEnum] + "property_type"?: string; // 产权类型,[enum:AssetCarPortsPropertyTypeEnum] + }; + type Store = { + "asset_projects_id": number; // 所属项目id,[ref:asset_projects] + "asset_parking_places_id": number; // 所属车场id,[ref:asset_parking_places] + "name": string; // 车位名称 + "built_area": number; // 建筑面积 + "status"?: string; // 状态,[enum:AssetCarPortsStatusEnum] + "type"?: string; // 车位类型,[enum:AssetCarPortsTypeEnum] + "property_type"?: string; // 产权类型,[enum:AssetCarPortsPropertyTypeEnum] + "asset_houses_id"?: number; // 关联房屋ID,[ref:asset_houses] + "owner_name"?: string; // 业主姓名 + "owner_phone"?: string; // 业主手机号 + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 所属项目id,[ref:asset_projects] + "asset_parking_places_id": number; // 所属车场id,[ref:asset_parking_places] + "name": string; // 车位名称 + "built_area": number; // 建筑面积 + "status"?: string; // 状态,[enum:AssetCarPortsStatusEnum] + "type"?: string; // 车位类型,[enum:AssetCarPortsTypeEnum] + "property_type"?: string; // 产权类型,[enum:AssetCarPortsPropertyTypeEnum] + "asset_houses_id"?: number; // 关联房屋ID,[ref:asset_houses] + "owner_name"?: string; // 业主姓名 + "owner_phone"?: string; // 业主手机号 + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type Select = { + "asset_projects_id"?: number; // 所属项目id,[ref:asset_projects] + "asset_parking_places_id"?: number; // 所属车场id,[ref:asset_parking_places] + "keywords"?: string; // 关键词 + }; + } namespace AssetHouses { type List = { "asset_projects_id"?: number; // 所属项目id,[ref:asset_projects] @@ -223,9 +338,66 @@ declare namespace ApiTypes { "download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录 }; } + namespace AssetParkingPlaces { + type List = { + "id"?: number; // 车场id + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "name"?: string; // 模糊搜索:名称 + "type"?: string; // 车场类型,[enum:AssetParkingPlacesTypeEnum] + "property_type"?: string; // 产权类型,[enum:AssetParkingPlacesPropertyTypeEnum] + "location_type"?: string; // 位置类型,[enum:AssetParkingPlacesLocationTypeEnum] + "charge_type"?: string; // 收费类型,[enum:AssetParkingPlacesChargeTypeEnum] + "project_name"?: string; // 模糊搜索:所属项目名称 + }; + type Store = { + "asset_projects_id": number; // 所属项目id,[ref:asset_projects] + "name": string; // 车场名称 + "type"?: string; // 车场类型,[enum:AssetParkingPlacesTypeEnum] + "export_numbers"?: number; // 出口数量 + "import_numbers"?: number; // 入口数量 + "total_spaces"?: number; // 总车位数 + "property_type"?: string; // 产权类型,[enum:AssetParkingPlacesPropertyTypeEnum] + "location_type"?: string; // 位置类型,[enum:AssetParkingPlacesLocationTypeEnum] + "charge_type"?: string; // 收费类型,[enum:AssetParkingPlacesChargeTypeEnum] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 所属项目id,[ref:asset_projects] + "name": string; // 车场名称 + "type"?: string; // 车场类型,[enum:AssetParkingPlacesTypeEnum] + "export_numbers"?: number; // 出口数量 + "import_numbers"?: number; // 入口数量 + "total_spaces"?: number; // 总车位数 + "property_type"?: string; // 产权类型,[enum:AssetParkingPlacesPropertyTypeEnum] + "location_type"?: string; // 位置类型,[enum:AssetParkingPlacesLocationTypeEnum] + "charge_type"?: string; // 收费类型,[enum:AssetParkingPlacesChargeTypeEnum] + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type Select = { + "asset_projects_id"?: number; // 所属项目id,[ref:asset_projects] + "keywords"?: string; // 关键词 + }; + } namespace AssetProjects { type List = { + "id"?: number; // id "name"?: string; // 模糊搜索:名称 + "code"?: string; // 项目编码 + "province"?: string; // 省 + "city"?: string; // 市 + "area"?: string; // 区 + "street"?: string; // 街道 + "property_type"?: string; // 物业类型,[enum:AssetProjectsPropertyTypeEnum] + "property_brand_name"?: string; // 物业品牌名称 + "ownership_type"?: string; // 业权类型,[enum:AssetProjectsOwnershipTypeEnum] + "is_owners_committee"?: boolean; // 是否成立业委会 }; type Store = { "name": string; // 项目名称 @@ -246,8 +418,25 @@ declare namespace ApiTypes { "status"?: string; // 状态,[enum:AssetProjectsStatusEnum] "entrust_type"?: string; // 委托类型,[enum:AssetProjectsEntrustTypeEnum] "charge"?: string; // 收费方式,[enum:AssetProjectsChargeEnum] + "plot_ratio"?: number; // 容积率 + "total_households"?: number; // 总户数 + "total_parking_spaces"?: number; // 总车位数 + "takeover_households"?: number; // 接管总户数 + "takeover_parking_spaces"?: number; // 接管车位数 + "contract_building_area"?: number; // 合同建筑面积(㎡) + "land_area"?: number; // 占地面积(㎡) + "takeover_building_area"?: number; // 接管建筑面积(㎡) + "property_area"?: number; // 物业面积(㎡) + "green_area"?: number; // 绿化面积(㎡) "takeover_date"?: Date; // 接管日期 + "exit_date"?: Date; // 退场日期 "closure_date"?: Date; // 封园日期 + "project_phase_number"?: number; // 项目中期数 + "ownership_type"?: string; // 业权类型,[enum:AssetProjectsOwnershipTypeEnum] + "is_owners_committee"?: boolean; // 是否成立业委会 + "owners_committee_number"?: number; // 第几届业委会 + "owners_committee_start_date"?: Date; // 业委会开始日期 + "owners_committee_end_date"?: Date; // 业委会结束日期 "company_property_brands_id"?: number; // 物业品牌id,[ref:company_property_brands] }; type Update = { @@ -270,8 +459,25 @@ declare namespace ApiTypes { "status"?: string; // 状态,[enum:AssetProjectsStatusEnum] "entrust_type"?: string; // 委托类型,[enum:AssetProjectsEntrustTypeEnum] "charge"?: string; // 收费方式,[enum:AssetProjectsChargeEnum] + "plot_ratio"?: number; // 容积率 + "total_households"?: number; // 总户数 + "total_parking_spaces"?: number; // 总车位数 + "takeover_households"?: number; // 接管总户数 + "takeover_parking_spaces"?: number; // 接管车位数 + "contract_building_area"?: number; // 合同建筑面积(㎡) + "land_area"?: number; // 占地面积(㎡) + "takeover_building_area"?: number; // 接管建筑面积(㎡) + "property_area"?: number; // 物业面积(㎡) + "green_area"?: number; // 绿化面积(㎡) "takeover_date"?: Date; // 接管日期 + "exit_date"?: Date; // 退场日期 "closure_date"?: Date; // 封园日期 + "project_phase_number"?: number; // 项目中期数 + "ownership_type"?: string; // 业权类型,[enum:AssetProjectsOwnershipTypeEnum] + "is_owners_committee"?: boolean; // 是否成立业委会 + "owners_committee_number"?: number; // 第几届业委会 + "owners_committee_start_date"?: Date; // 业委会开始日期 + "owners_committee_end_date"?: Date; // 业委会结束日期 "company_property_brands_id"?: number; // 物业品牌id,[ref:company_property_brands] }; type ChangePropertyBrand = { @@ -342,12 +548,21 @@ declare namespace ApiTypes { "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] "full_name"?: string; // 模糊搜索:房屋名称 + "project_name"?: string; // 模糊搜索:项目名称 "bill_status"?: string[]; // 账单状态,[enum:HouseBillsBillStatusEnum] + "year"?: number; // 账单年份 + "month"?: number; // 账单月份 + "type"?: string; // 账单类型,[enum:HouseBillsTypeEnum] + "has_refunding"?: boolean; // 是否有退款中:false-无,true-有 }; type SummaryBillList = { - "full_name"?: string; // 模糊搜索:房屋名称 - "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "project_name"?: string; // 模糊搜索:项目名称 "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + "asset_buildings_id"?: number; // 资产楼栋id,[ref:asset_buildings] + "asset_units_id"?: number; // 资产单元id,[ref:asset_units] + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + "has_overdue"?: boolean; // 是否欠费:true-欠费, false-清欠 }; type Store = { "asset_houses_id": number; // 资产房屋id,[ref:asset_houses] @@ -386,6 +601,18 @@ declare namespace ApiTypes { type Delete = { "id": number; // id }; + type Export = { + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + "bill_status"?: string[]; // 账单状态,[enum:HouseBillsBillStatusEnum] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "year"?: number; // 账单年份 + "month"?: number; // 账单月份 + "type"?: string; // 账单类型,[enum:HouseBillsTypeEnum] + "current"?: number; // 页码 + "download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录 + }; } } namespace Collection { @@ -432,6 +659,32 @@ declare namespace ApiTypes { "re_new_password": string; // 重复新密码 }; } + namespace ConvenienceServices { + type List = { + "name"?: string; // 模糊搜索:名称 + "asset_projects_id"?: number; // 项目ID + "project_name"?: string; // 项目名称 + }; + type Store = { + "asset_projects_id": number; // 项目ID + "type": string; // 类型,[enum:ConvenienceServicesTypeEnum] + "name": string; // 名称 + "content": string[]; // 内容 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 项目ID + "type": string; // 类型,[enum:ConvenienceServicesTypeEnum] + "name": string; // 名称 + "content": string[]; // 内容 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } } namespace Company { namespace CompanyEmployees { @@ -579,6 +832,35 @@ declare namespace ApiTypes { "company_name"?: string; // 模糊搜索:名称 }; } + namespace OrganizationProjects { + type List = { + "organizations_id"?: number; // 组织id,[ref:organizations] + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "organization_name"?: string; // 模糊搜索:组织名称 + "project_name"?: string; // 模糊搜索:项目名称 + }; + type Store = { + "organizations_id": number; // 组织id,[ref:organizations] + "asset_projects_id": number; // 项目id,[ref:asset_projects] + }; + type BatchStore = { + "organizations_id": number; // 组织id,[ref:organizations] + "asset_projects_ids": string[]; // 项目id列表,[ref:asset_projects] + }; + type Rebind = { + "organizations_id": number; // 组织id,[ref:organizations] + "asset_projects_ids": string[]; // 项目id列表,[ref:asset_projects] + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type DeleteByOrganization = { + "organizations_id": number; // 组织id,[ref:organizations] + }; + } namespace Organizations { type List = { "name"?: string; // 模糊搜索:名称 @@ -790,6 +1072,405 @@ declare namespace ApiTypes { }; } } + namespace HouseOrder { + namespace HouseOrderPayments { + type List = { + "house_orders_id"?: number; // 订单ID + "payment_no"?: string; // 模糊搜索:支付单号 + "transaction_id"?: string; // 模糊搜索:交易号(微信、支付宝的单号 + "third_trade_no"?: string; // 第三方交易号(如通联、乐刷) + "accept_serial_number"?: string; // 模糊搜索:流水号 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseOrderRefunds { + type List = { + "house_orders_id"?: number; // 订单id + "refund_status"?: string; // 退款状态 + "payment_method"?: string; // 支付方式 + "refund_no"?: string; // 退款编号 + "apply_employees_id"?: number; // 申请员工id + "date_range"?: string[]; // 日期范围 [start_date, end_date] + }; + type Store = { + "house_orders_id": number; // 房屋物业费账单id,[ref:house_orders] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Update = { + "id": number; // id + "house_orders_id": number; // 房屋物业费账单id,[ref:house_orders] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Show = { + "id": number; // id + }; + type Audit = { + "id": number; // 退款记录id + "approved": boolean; // 是否通过审核 + "audit_remark"?: string; // 审核备注 + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseOrders { + type List = { + "id"?: number; // id + "order_code"?: string; // 模糊搜索:订单编号 + "payment_no"?: string; // 支付编号 + "asset_projects_id"?: number; // 项目ID + "full_name"?: string; // 模糊搜索:房屋名称 + "creator"?: string; // 创建人 + "creator_phone"?: string; // 创建人电话 + "audit_status"?: string; // 审核状态,[enum:HouseOrdersAuditStatusEnum] + "auditor"?: string; // 审核人 + "auditor_phone"?: string; // 审核人电话 + "is_serial_number"?: boolean; // 是否有流水号 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "payment_method"?: string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "payment_methods"?: string[]; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "paid_time"?: string[]; // 支付时间范围 + }; + type Store = { + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "total_paid_amount": number; // 支付金额 + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + "bill_ids": string[]; // 账单数组 [{id, amount}] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // 订单ID + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "total_paid_amount": number; // 支付金额 + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + "bill_ids": string[]; // 账单数组 [{id, amount}] + "remark"?: string; // 备注 + }; + type Audit = { + "id": number; // id + "audit_status": string; // 状态,[enum:HouseOrdersAuditStatusEnum] + "auditor_remark"?: string; // 审核备注 + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type Export = { + "id"?: number; // id + "order_code"?: string; // 模糊搜索:名称 + "payment_no"?: string; // 支付编号 + "full_name"?: string; // 模糊搜索:房屋名称 + "creator"?: string; // 创建人 + "creator_phone"?: string; // 创建人电话 + "audit_status"?: string; // 审核状态,[enum:HouseOrdersAuditStatusEnum] + "auditor"?: string; // 审核人 + "auditor_phone"?: string; // 审核人电话 + "is_serial_number"?: boolean; // 是否有流水号 + "current"?: number; // 页码 + "download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录 + }; + type UpdateSerialNumber = { + "id": number; // id + "serial_number": string; // 流水号 + }; + type BatchUpdateSerialNumber = { + "ids": string[]; // 订单ID数组 + "serial_number": string; // 流水号 + }; + type GetPayCode = { + "amount": number; // 金额 + "discount_amount"?: number; // 优惠金额 + "late_fee"?: number; // 滞纳金 + "total_payable_amount": number; // 应付金额 + "bill_ids": string[]; // 账单id + }; + } + namespace HousePrepaymentLogs { + type List = { + "house_prepayments_id"?: number; // 房屋预付缴费id,[ref:house_prepayments] + "asset_houses_id"?: number; // 房屋id,[ref:asset_houses] + "house_prepayment_payments_id"?: number; // 房屋预付缴费支付记录id,[ref:house_prepayment_payments] + "full_name"?: string; // 房屋名称 + }; + type Deduct = { + "asset_houses_id": number; // 房屋id,[ref:asset_houses] + "bills_id": string[]; // 账单id,[ref:house_bills] + "amount": number; // 扣款金额 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepaymentPayments { + type List = { + "house_prepayments_id"?: number; // 房屋预付id,[ref:house_prepayments] + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepaymentRefunds { + type List = { + "house_prepayments_id"?: number; // 预缴id + "house_prepayment_payments_id"?: number; // 预缴支付id + "refund_status"?: string; // 退款状态 + "payment_method"?: string; // 支付方式 + "refund_no"?: string; // 退款编号 + "apply_employees_id"?: number; // 申请员工id + "date_range"?: string[]; // 日期范围 [start_date, end_date] + }; + type Store = { + "house_prepayment_payments_id": number; // 房屋预缴支付记录id,[ref:house_prepayment_payments] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Update = { + "id": number; // id + "house_prepayments_id": number; // 房屋预缴id,[ref:house_prepayments] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Show = { + "id": number; // id + }; + type Audit = { + "id": number; // 退款记录id + "approved": boolean; // 是否通过审核 + "audit_remark"?: string; // 审核备注 + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepayments { + type List = { + "full_name"?: string; // 模糊搜索:房屋名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + } + namespace Meter { + namespace HouseMeterHasHouses { + type List = { + "house_meters_id"?: number; // 房屋仪表id,[ref:house_meters] + "name"?: string; // 模糊搜索:名称 + "full_name"?: string; // 模糊搜索:房屋全称 + }; + type StoreOrUpdate = { + "house_meters_id": number; // 房屋仪表id,[ref:house_meters] + "asset_houses_ids": string[]; // 房屋id,[ref:asset_houses] + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseMeterReadings { + type List = { + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type"?: string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + }; + type Store = { + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type": string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + "current_reading": number; // 本次读数 + "reading_time": Date; // 抄表时间 + "company_employees_id": number; // 抄表人id,[ref:company_employees] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type": string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + "previous_reading": number; // 上次读数 + "current_reading": number; // 本次读数 + "usage_amount": number; // 用量 + "loss_amount"?: number; // 损耗 + "reading_time": Date; // 抄表时间 + "company_employees_id": number; // 抄表人id,[ref:company_employees] + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseMeterTaskDetails { + type List = { + "house_meter_task_id"?: number; // 仪表任务id,[ref:house_meter_tasks] + "house_meters_id"?: number; // 仪表id,[ref:house_meters] + "full_name"?: string; // 房屋全称 + "meter_name"?: string; // 仪表名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type CreateMeterBill = { + "id": number; // 仪表任务明细id + }; + } + namespace HouseMeterTasks { + type List = { + "name"?: string; // 模糊搜索:名称 + }; + type Store = { + "asset_projects_id": number; // 资产项目id,[ref:asset_projects] + "generation_method": string; // 生成方式,[enum:HouseMeterTasksGenerationMethodEnum] + "month": string; // 月份 + "start_date": Date; // 收费开始日期 + "end_date": Date; // 收费截止日期 + "data": string[]; // 任务数据(如果是楼栋则是楼栋ID,如果是单元则是单元ID,如果是仪表则是仪表ID) + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type ExecuteMeterTasks = { + "id": number; // id + }; + } + namespace HouseMeters { + type List = { + "name"?: string; // 模糊搜索:名称 + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "meter_type"?: string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + }; + type Store = { + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "name": string; // 名称 + "meter_type": string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + "usage_type": string; // 使用类型,[enum:HouseMetersUsageTypeEnum] + "multiple"?: number; // 倍率 + "status"?: number; // 是否启用:0:禁用,1:启用 + "initial_value"?: number; // 初始抄表读数 + "initial_time"?: Date; // 初始抄表时间 + "latest_value"?: number; // 最新抄表读数 + "latest_time"?: Date; // 最新抄表时间 + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "name": string; // 名称 + "meter_type": string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + "usage_type": string; // 使用类型,[enum:HouseMetersUsageTypeEnum] + "multiple"?: number; // 倍率 + "status"?: number; // 是否启用:0:禁用,1:启用 + "initial_value"?: number; // 初始抄表读数 + "initial_time"?: Date; // 初始抄表时间 + "latest_value"?: number; // 最新抄表读数 + "latest_time"?: Date; // 最新抄表时间 + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + } + namespace Msg { + namespace MsgPropertyAnnouncements { + type List = { + "id"?: number; // 公告id + "title"?: string; // 模糊搜索:标题 + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "is_publish"?: number; // 是否发布 + "object"?: string; // 接收对象,[enum:MsgPropertyAnnouncementsObjectEnum] + "publish_at"?: string[]; // 发布时间, 格式:[ + }; + type Store = { + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "title": string; // 标题 + "content": string; // 内容 + "object": string; // 接收对象,[enum:MsgPropertyAnnouncementsObjectEnum] + "publish_type": string; // 发布类型,[MsgPropertyAnnouncementsPublishTypeEnum] + "schedule_publish_at"?: Date; // 计划发布时间 + "is_publish"?: boolean; // 是否发布 + "publish_at"?: Date; // 发布时间 + "sort"?: number; // 排序 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "title": string; // 标题 + "content": string; // 内容 + "object": string; // 接收对象,[enum:MsgPropertyAnnouncementsObjectEnum] + "publish_type": string; // 发布类型,[MsgPropertyAnnouncementsPublishTypeEnum] + "schedule_publish_at"?: Date; // 计划发布时间 + "is_publish"?: boolean; // 是否发布 + "publish_at"?: Date; // 发布时间 + "sort"?: number; // 排序 + }; + type Show = { + "id": number; // id + }; + type IsPublish = { + "id": number; // id + "is_publish": boolean; // 是否发布 + }; + type Delete = { + "id": number; // id + }; + } + } namespace Permission { namespace Roles { type List = { @@ -814,4 +1495,88 @@ declare namespace ApiTypes { }; } } + namespace WorkOrder { + namespace HouseWorkLogs { + type List = { + "house_work_orders_id": number; // 工单id,[ref:house_work_orders] + }; + type Store = { + "house_work_orders_id": number; // 工单id,[ref:house_work_orders] + "status": string; // 工单状态,[enum:HouseWorkOrdersStatusEnum] + "description"?: string; // 进度描述 + "attachments"?: string[]; // 附件 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseWorkOrderPayments { + type List = { + "house_work_orders_id"?: number; // 工单id + "name"?: string; // 模糊搜索:名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseWorkOrders { + type List = { + "house_name"?: string; // 模糊搜索:房屋名称 + "type"?: string[]; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 工单优先级,[enum:HouseWorkOrdersLevelEnum] + "status"?: string; // 工单状态,[enum:HouseWorkOrdersStatusEnum] + "assign_status"?: string; // 工单分配状态,[enum:HouseWorkOrdersAssignStatusEnum] + "reporter_name"?: string; // 模糊搜索:上报人姓名 + "reporter_phone"?: string; // 模糊搜索:上报人手机 + }; + type Store = { + "type": string; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + "complaint_type"?: string; // 投诉类型[enum:HouseWorkOrdersComplaintTypeEnum] + "location"?: string; // 报修位置[enum:HouseWorkOrdersLocationEnum] + "content": string; // 工单内容 + "reporter_name"?: string; // 上报人名称 + "reporter_phone"?: string; // 上报人手机 + "attachments"?: string[]; // 工单附件 + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + }; + type Update = { + "id": number; // id + "type": string; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + "content": string; // 工单内容 + "reporter_name"?: string; // 上报人名称 + "reporter_phone"?: string; // 上报人手机 + "contact_phone"?: string; // 联系人电话 + "attachments"?: string[]; // 工单附件 + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + }; + type Show = { + "id": number; // id + }; + type Assign = { + "id": number; // id + "assign_employees_id": number; // 处理人id,[ref:company_employees] + "assign_remark"?: string; // 分派说明 + "predict_complete_at"?: Date; // 预计完成时间 + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + }; + type Visited = { + "id": number; // id + "visited_remark"?: string; // 访问说明 + "visited_attachment"?: string[]; // 访问附件 + }; + type Delete = { + "id": number; // id + }; + } + } } diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index a22692e..c92d79d 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -2,6 +2,45 @@ import { MyResponseType } from '@/common'; import { request } from '@umijs/max'; export const Apis = { + Activity: { + Activities: { + List(data?: ApiTypes.Activity.Activities.List): Promise { + return request('company/activity/activities/list', { data }); + }, + Store(data: ApiTypes.Activity.Activities.Store): Promise { + return request('company/activity/activities/store', { data }); + }, + Update(data: ApiTypes.Activity.Activities.Update): Promise { + return request('company/activity/activities/update', { data }); + }, + ChangePublishStatus(data: ApiTypes.Activity.Activities.ChangePublishStatus): Promise { + return request('company/activity/activities/change_publish_status', { data }); + }, + Show(data: ApiTypes.Activity.Activities.Show): Promise { + return request('company/activity/activities/show', { data }); + }, + SoftDelete(data: ApiTypes.Activity.Activities.SoftDelete): Promise { + return request('company/activity/activities/soft_delete', { data }); + }, + Restore(data: ApiTypes.Activity.Activities.Restore): Promise { + return request('company/activity/activities/restore', { data }); + }, + Delete(data: ApiTypes.Activity.Activities.Delete): Promise { + return request('company/activity/activities/delete', { data }); + }, + }, + ActivityEnrolls: { + List(data?: ApiTypes.Activity.ActivityEnrolls.List): Promise { + return request('company/activity/activity_enrolls/list', { data }); + }, + Show(data: ApiTypes.Activity.ActivityEnrolls.Show): Promise { + return request('company/activity/activity_enrolls/show', { data }); + }, + ChangeStatus(data: ApiTypes.Activity.ActivityEnrolls.ChangeStatus): Promise { + return request('company/activity/activity_enrolls/change_status', { data }); + }, + }, + }, Archive: { HouseOccupants: { List(data?: ApiTypes.Archive.HouseOccupants.List): Promise { @@ -80,6 +119,26 @@ export const Apis = { return request('company/asset/asset_buildings/select', { data }); }, }, + AssetCarPorts: { + List(data?: ApiTypes.Asset.AssetCarPorts.List): Promise { + return request('company/asset/asset_car_ports/list', { data }); + }, + Store(data: ApiTypes.Asset.AssetCarPorts.Store): Promise { + return request('company/asset/asset_car_ports/store', { data }); + }, + Update(data: ApiTypes.Asset.AssetCarPorts.Update): Promise { + return request('company/asset/asset_car_ports/update', { data }); + }, + Show(data: ApiTypes.Asset.AssetCarPorts.Show): Promise { + return request('company/asset/asset_car_ports/show', { data }); + }, + Delete(data: ApiTypes.Asset.AssetCarPorts.Delete): Promise { + return request('company/asset/asset_car_ports/delete', { data }); + }, + Select(data?: ApiTypes.Asset.AssetCarPorts.Select): Promise { + return request('company/asset/asset_car_ports/select', { data }); + }, + }, AssetHouses: { List(data?: ApiTypes.Asset.AssetHouses.List): Promise { return request('company/asset/asset_houses/list', { data }); @@ -106,6 +165,26 @@ export const Apis = { return request('company/asset/asset_houses/export', { responseType: 'blob',data }); }, }, + AssetParkingPlaces: { + List(data?: ApiTypes.Asset.AssetParkingPlaces.List): Promise { + return request('company/asset/asset_parking_places/list', { data }); + }, + Store(data: ApiTypes.Asset.AssetParkingPlaces.Store): Promise { + return request('company/asset/asset_parking_places/store', { data }); + }, + Update(data: ApiTypes.Asset.AssetParkingPlaces.Update): Promise { + return request('company/asset/asset_parking_places/update', { data }); + }, + Show(data: ApiTypes.Asset.AssetParkingPlaces.Show): Promise { + return request('company/asset/asset_parking_places/show', { data }); + }, + Delete(data: ApiTypes.Asset.AssetParkingPlaces.Delete): Promise { + return request('company/asset/asset_parking_places/delete', { data }); + }, + Select(data?: ApiTypes.Asset.AssetParkingPlaces.Select): Promise { + return request('company/asset/asset_parking_places/select', { data }); + }, + }, AssetProjects: { List(data?: ApiTypes.Asset.AssetProjects.List): Promise { return request('company/asset/asset_projects/list', { data }); @@ -176,6 +255,9 @@ export const Apis = { Delete(data: ApiTypes.Bill.HouseBills.Delete): Promise { return request('company/bill/house_bills/delete', { data }); }, + Export(data: ApiTypes.Bill.HouseBills.Export): Promise { + return request('company/bill/house_bills/export', { responseType: 'blob',data }); + }, }, }, Collection: { @@ -220,6 +302,23 @@ export const Apis = { return request('company/common/auth/change_password', { data }); }, }, + ConvenienceServices: { + List(data?: ApiTypes.Common.ConvenienceServices.List): Promise { + return request('company/common/convenience_services/list', { data }); + }, + Store(data: ApiTypes.Common.ConvenienceServices.Store): Promise { + return request('company/common/convenience_services/store', { data }); + }, + Update(data: ApiTypes.Common.ConvenienceServices.Update): Promise { + return request('company/common/convenience_services/update', { data }); + }, + Show(data: ApiTypes.Common.ConvenienceServices.Show): Promise { + return request('company/common/convenience_services/show', { data }); + }, + Delete(data: ApiTypes.Common.ConvenienceServices.Delete): Promise { + return request('company/common/convenience_services/delete', { data }); + }, + }, }, Company: { CompanyEmployees: { @@ -322,6 +421,29 @@ export const Apis = { return request('company/company/company_receipt_accounts/select', { data }); }, }, + OrganizationProjects: { + List(data?: ApiTypes.Company.OrganizationProjects.List): Promise { + return request('company/company/organization_projects/list', { data }); + }, + Store(data: ApiTypes.Company.OrganizationProjects.Store): Promise { + return request('company/company/organization_projects/store', { data }); + }, + BatchStore(data: ApiTypes.Company.OrganizationProjects.BatchStore): Promise { + return request('company/company/organization_projects/batch_store', { data }); + }, + Rebind(data: ApiTypes.Company.OrganizationProjects.Rebind): Promise { + return request('company/company/organization_projects/rebind', { data }); + }, + Show(data: ApiTypes.Company.OrganizationProjects.Show): Promise { + return request('company/company/organization_projects/show', { data }); + }, + Delete(data: ApiTypes.Company.OrganizationProjects.Delete): Promise { + return request('company/company/organization_projects/delete', { data }); + }, + DeleteByOrganization(data: ApiTypes.Company.OrganizationProjects.DeleteByOrganization): Promise { + return request('company/company/organization_projects/delete_by_organization', { data }); + }, + }, Organizations: { List(data?: ApiTypes.Company.Organizations.List): Promise { return request('company/company/organizations/list', { data }); @@ -447,6 +569,230 @@ export const Apis = { }, }, }, + HouseOrder: { + HouseOrderPayments: { + List(data?: ApiTypes.HouseOrder.HouseOrderPayments.List): Promise { + return request('company/house_order/house_order_payments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrderPayments.Show): Promise { + return request('company/house_order/house_order_payments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrderPayments.Delete): Promise { + return request('company/house_order/house_order_payments/delete', { data }); + }, + }, + HouseOrderRefunds: { + List(data?: ApiTypes.HouseOrder.HouseOrderRefunds.List): Promise { + return request('company/house_order/house_order_refunds/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HouseOrderRefunds.Store): Promise { + return request('company/house_order/house_order_refunds/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HouseOrderRefunds.Update): Promise { + return request('company/house_order/house_order_refunds/update', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrderRefunds.Show): Promise { + return request('company/house_order/house_order_refunds/show', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HouseOrderRefunds.Audit): Promise { + return request('company/house_order/house_order_refunds/audit', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrderRefunds.Delete): Promise { + return request('company/house_order/house_order_refunds/delete', { data }); + }, + }, + HouseOrders: { + List(data?: ApiTypes.HouseOrder.HouseOrders.List): Promise { + return request('company/house_order/house_orders/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HouseOrders.Store): Promise { + return request('company/house_order/house_orders/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HouseOrders.Update): Promise { + return request('company/house_order/house_orders/update', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HouseOrders.Audit): Promise { + return request('company/house_order/house_orders/audit', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrders.Show): Promise { + return request('company/house_order/house_orders/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrders.Delete): Promise { + return request('company/house_order/house_orders/delete', { data }); + }, + Export(data: ApiTypes.HouseOrder.HouseOrders.Export): Promise { + return request('company/house_order/house_orders/export', { responseType: 'blob',data }); + }, + UpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.UpdateSerialNumber): Promise { + return request('company/house_order/house_orders/update_serial_number', { data }); + }, + BatchUpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.BatchUpdateSerialNumber): Promise { + return request('company/house_order/house_orders/batch_update_serial_number', { data }); + }, + GetPayCode(data: ApiTypes.HouseOrder.HouseOrders.GetPayCode): Promise { + return request('company/house_order/house_orders/get_pay_code', { data }); + }, + }, + HousePrepaymentLogs: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List): Promise { + return request('company/house_order/house_prepayment_logs/list', { data }); + }, + Deduct(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Deduct): Promise { + return request('company/house_order/house_prepayment_logs/deduct', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Show): Promise { + return request('company/house_order/house_prepayment_logs/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Delete): Promise { + return request('company/house_order/house_prepayment_logs/delete', { data }); + }, + }, + HousePrepaymentPayments: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentPayments.List): Promise { + return request('company/house_order/house_prepayment_payments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Show): Promise { + return request('company/house_order/house_prepayment_payments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Delete): Promise { + return request('company/house_order/house_prepayment_payments/delete', { data }); + }, + }, + HousePrepaymentRefunds: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentRefunds.List): Promise { + return request('company/house_order/house_prepayment_refunds/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Store): Promise { + return request('company/house_order/house_prepayment_refunds/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Update): Promise { + return request('company/house_order/house_prepayment_refunds/update', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Show): Promise { + return request('company/house_order/house_prepayment_refunds/show', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Audit): Promise { + return request('company/house_order/house_prepayment_refunds/audit', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Delete): Promise { + return request('company/house_order/house_prepayment_refunds/delete', { data }); + }, + }, + HousePrepayments: { + List(data?: ApiTypes.HouseOrder.HousePrepayments.List): Promise { + return request('company/house_order/house_prepayments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepayments.Show): Promise { + return request('company/house_order/house_prepayments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepayments.Delete): Promise { + return request('company/house_order/house_prepayments/delete', { data }); + }, + }, + }, + Meter: { + HouseMeterHasHouses: { + List(data?: ApiTypes.Meter.HouseMeterHasHouses.List): Promise { + return request('company/meter/house_meter_has_houses/list', { data }); + }, + StoreOrUpdate(data: ApiTypes.Meter.HouseMeterHasHouses.StoreOrUpdate): Promise { + return request('company/meter/house_meter_has_houses/store_or_update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterHasHouses.Show): Promise { + return request('company/meter/house_meter_has_houses/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterHasHouses.Delete): Promise { + return request('company/meter/house_meter_has_houses/delete', { data }); + }, + }, + HouseMeterReadings: { + List(data: ApiTypes.Meter.HouseMeterReadings.List): Promise { + return request('company/meter/house_meter_readings/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeterReadings.Store): Promise { + return request('company/meter/house_meter_readings/store', { data }); + }, + Update(data: ApiTypes.Meter.HouseMeterReadings.Update): Promise { + return request('company/meter/house_meter_readings/update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterReadings.Show): Promise { + return request('company/meter/house_meter_readings/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterReadings.Delete): Promise { + return request('company/meter/house_meter_readings/delete', { data }); + }, + }, + HouseMeterTaskDetails: { + List(data?: ApiTypes.Meter.HouseMeterTaskDetails.List): Promise { + return request('company/meter/house_meter_task_details/list', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterTaskDetails.Show): Promise { + return request('company/meter/house_meter_task_details/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterTaskDetails.Delete): Promise { + return request('company/meter/house_meter_task_details/delete', { data }); + }, + CreateMeterBill(data: ApiTypes.Meter.HouseMeterTaskDetails.CreateMeterBill): Promise { + return request('company/meter/house_meter_task_details/create_meter_bill', { data }); + }, + }, + HouseMeterTasks: { + List(data?: ApiTypes.Meter.HouseMeterTasks.List): Promise { + return request('company/meter/house_meter_tasks/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeterTasks.Store): Promise { + return request('company/meter/house_meter_tasks/store', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterTasks.Show): Promise { + return request('company/meter/house_meter_tasks/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterTasks.Delete): Promise { + return request('company/meter/house_meter_tasks/delete', { data }); + }, + ExecuteMeterTasks(data: ApiTypes.Meter.HouseMeterTasks.ExecuteMeterTasks): Promise { + return request('company/meter/house_meter_tasks/execute_meter_tasks', { data }); + }, + }, + HouseMeters: { + List(data?: ApiTypes.Meter.HouseMeters.List): Promise { + return request('company/meter/house_meters/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeters.Store): Promise { + return request('company/meter/house_meters/store', { data }); + }, + Update(data: ApiTypes.Meter.HouseMeters.Update): Promise { + return request('company/meter/house_meters/update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeters.Show): Promise { + return request('company/meter/house_meters/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeters.Delete): Promise { + return request('company/meter/house_meters/delete', { data }); + }, + }, + }, + Msg: { + MsgPropertyAnnouncements: { + List(data?: ApiTypes.Msg.MsgPropertyAnnouncements.List): Promise { + return request('company/msg/msg_property_announcements/list', { data }); + }, + Store(data: ApiTypes.Msg.MsgPropertyAnnouncements.Store): Promise { + return request('company/msg/msg_property_announcements/store', { data }); + }, + Update(data: ApiTypes.Msg.MsgPropertyAnnouncements.Update): Promise { + return request('company/msg/msg_property_announcements/update', { data }); + }, + Show(data: ApiTypes.Msg.MsgPropertyAnnouncements.Show): Promise { + return request('company/msg/msg_property_announcements/show', { data }); + }, + IsPublish(data: ApiTypes.Msg.MsgPropertyAnnouncements.IsPublish): Promise { + return request('company/msg/msg_property_announcements/is_publish', { data }); + }, + Delete(data: ApiTypes.Msg.MsgPropertyAnnouncements.Delete): Promise { + return request('company/msg/msg_property_announcements/delete', { data }); + }, + }, + }, Permission: { Roles: { List(data?: ApiTypes.Permission.Roles.List): Promise { @@ -475,4 +821,54 @@ export const Apis = { }, }, }, + WorkOrder: { + HouseWorkLogs: { + List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise { + return request('company/work_order/house_work_logs/list', { data }); + }, + Store(data: ApiTypes.WorkOrder.HouseWorkLogs.Store): Promise { + return request('company/work_order/house_work_logs/store', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkLogs.Show): Promise { + return request('company/work_order/house_work_logs/show', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkLogs.Delete): Promise { + return request('company/work_order/house_work_logs/delete', { data }); + }, + }, + HouseWorkOrderPayments: { + List(data?: ApiTypes.WorkOrder.HouseWorkOrderPayments.List): Promise { + return request('company/work_order/house_work_order_payments/list', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Show): Promise { + return request('company/work_order/house_work_order_payments/show', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Delete): Promise { + return request('company/work_order/house_work_order_payments/delete', { data }); + }, + }, + HouseWorkOrders: { + List(data?: ApiTypes.WorkOrder.HouseWorkOrders.List): Promise { + return request('company/work_order/house_work_orders/list', { data }); + }, + Store(data: ApiTypes.WorkOrder.HouseWorkOrders.Store): Promise { + return request('company/work_order/house_work_orders/store', { data }); + }, + Update(data: ApiTypes.WorkOrder.HouseWorkOrders.Update): Promise { + return request('company/work_order/house_work_orders/update', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkOrders.Show): Promise { + return request('company/work_order/house_work_orders/show', { data }); + }, + Assign(data: ApiTypes.WorkOrder.HouseWorkOrders.Assign): Promise { + return request('company/work_order/house_work_orders/assign', { data }); + }, + Visited(data: ApiTypes.WorkOrder.HouseWorkOrders.Visited): Promise { + return request('company/work_order/house_work_orders/visited', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkOrders.Delete): Promise { + return request('company/work_order/house_work_orders/delete', { data }); + }, + }, + }, } \ No newline at end of file diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index 40d72b1..b7d1d9f 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -559,7 +559,7 @@ export const BillsStatusEnum = { export const CacheTypeEnum = { MobilePhoneVerificationCode: { text: '手机验证码', - color: '#bf79b1', + color: '#65806d', value: 'MobilePhoneVerificationCode', }, }; diff --git a/src/pages/approval/all/index.tsx b/src/pages/approval/all/index.tsx index df73060..b41698a 100644 --- a/src/pages/approval/all/index.tsx +++ b/src/pages/approval/all/index.tsx @@ -1,10 +1,8 @@ import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import Show from './modals/Show'; export default function Index({ title = '审批列表' }) { return ( @@ -29,12 +27,12 @@ export default function Index({ title = '审批列表' }) { MyColumns.EnumTag({ title: '状态', dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, + // valueEnum: ApprovalInstancesStatusEnum, }), MyColumns.EnumTag({ dataIndex: 'type', title: '类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, search: false, }), { @@ -72,7 +70,13 @@ export default function Index({ title = '审批列表' }) { dataIndex: 'applicant_name', hidden: true, }, - MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + ), + }), ]} /> diff --git a/src/pages/approval/all/modals/Show.tsx b/src/pages/approval/all/modals/Show.tsx new file mode 100644 index 0000000..71509a9 --- /dev/null +++ b/src/pages/approval/all/modals/Show.tsx @@ -0,0 +1,254 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + renderTextHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { + ContractsSettlementModeEnum, + ContractTemplatesIncomeExpenseTypeEnum, + RefundsTypeEnum, +} from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.model_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + + + + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + + + + + + + + {config?.value?.model?.contract_type_name || '-'} + + + + + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/approval/index.tsx b/src/pages/approval/approval/index.tsx index 8b5cf9a..0778764 100644 --- a/src/pages/approval/approval/index.tsx +++ b/src/pages/approval/approval/index.tsx @@ -1,9 +1,5 @@ import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space } from 'antd'; @@ -36,12 +32,12 @@ export default function Index({ title = '待我审批' }) { MyColumns.EnumTag({ title: '状态', dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, + // valueEnum: ApprovalInstancesStatusEnum, }), MyColumns.EnumTag({ dataIndex: ['approval_instance', 'type'], title: '类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, search: false, }), { diff --git a/src/pages/approval/cc_me/index.tsx b/src/pages/approval/cc_me/index.tsx index d1e7806..4abacce 100644 --- a/src/pages/approval/cc_me/index.tsx +++ b/src/pages/approval/cc_me/index.tsx @@ -1,11 +1,8 @@ import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; +import Show from './modals/Show'; export default function Index({ title = '抄送我的' }) { return ( ( - {/* */} + ), }), diff --git a/src/pages/approval/cc_me/modals/Show.tsx b/src/pages/approval/cc_me/modals/Show.tsx new file mode 100644 index 0000000..7be7c65 --- /dev/null +++ b/src/pages/approval/cc_me/modals/Show.tsx @@ -0,0 +1,255 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + renderTextHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { + ContractsContractNatureEnum, + ContractsSettlementModeEnum, + ContractTemplatesIncomeExpenseTypeEnum, + RefundsTypeEnum, +} from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.model_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + + + + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + + + + + + + + {config?.value?.model?.contract_type_name || '-'} + + + + + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/modals/ApprovalShow.tsx b/src/pages/approval/modals/ApprovalShow.tsx deleted file mode 100644 index 4acd837..0000000 --- a/src/pages/approval/modals/ApprovalShow.tsx +++ /dev/null @@ -1,243 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - renderTextHelper, -} from '@/common'; - -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; -import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => - Apis.Approval.ApprovalInstances.Approve({ - record_id: props.item?.id ?? 0, - ...values, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - // title: '登记信息', - dataIndex: 'info_display', - valueType: 'text', - renderFormItem: () => ( - - {/* 退款详情 */} - {props?.item?.approval_instance?.type === 'Refund' && ( - - - - {props?.item?.approval_instance?.title || '-'} - - - - - - - {props?.item?.approval_instance?.model?.refund_amount || - '-'} - 元 - - - - - {props?.item?.approval_instance?.model?.payer_name || '-'} - {props?.item?.approval_instance?.model?.payer_bank || '-'} - {props?.item?.approval_instance?.model?.payer_account || - '-'} - - - {props?.item?.approval_instance?.model?.payee_name || '-'} - {props?.item?.approval_instance?.model?.payee_bank || '-'} - {props?.item?.approval_instance?.model?.payee_account || - '-'} - - - - {props?.item?.created_at || '-'} - - - - )} - {/* 合同详情 */} - {props?.item?.approval_instance?.type === 'Contract' && ( - - - - {props?.item?.approval_instance?.model?.name || '-'} - - - - - {props?.item?.approval_instance?.model?.code || '-'} - - { - navigate( - `/contract/contracts/show/${props?.item?.approval_instance?.model?.id}`, - ); - }} - /> - - - - - - - - - - {props?.item?.approval_instance?.model - ?.contract_type_name || '-'} - - - - - - {props?.item?.approval_instance?.model?.total_amount || - '-'} - - - {props?.item?.approval_instance?.model?.deposit_amount || - '无'} - - - {props?.item?.approval_instance?.model?.sign_subject || - '-'} - - - {props?.item?.approval_instance?.model?.sign_department || - '-'} - - - {props?.item?.approval_instance?.model?.project_name || - '-'} - - - {props?.item?.approval_instance?.model - ?.contract_liaison || '-'} - - - {props?.item?.approval_instance?.model?.start_time.substring( - 0, - 10, - )} - 至 - {props?.item?.approval_instance?.model?.end_time.substring( - 0, - 10, - )} - - - {props?.item?.created_at || '-'} - - - {props?.item?.approval_instance?.model?.attachments.map( - (item: any) => { - const handleDownload = async ( - e: React.MouseEvent, - ) => { - e.preventDefault(); - try { - const response = await fetch(item.url); - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = item.name; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - document.body.removeChild(a); - } catch (error) { - console.error('下载失败:', error); - // 如果下载失败,则在新窗口打开 - window.open(item.url, '_blank'); - } - }; - - return ( - - ); - }, - )} - - - - )} - - ), - }, - ]} - /> - ); -} diff --git a/src/pages/approval/my_apply/index.tsx b/src/pages/approval/my_apply/index.tsx index f159a8e..66b4ba7 100644 --- a/src/pages/approval/my_apply/index.tsx +++ b/src/pages/approval/my_apply/index.tsx @@ -5,10 +5,6 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; export default function Index({ title = '我的发起' }) { @@ -44,12 +40,12 @@ export default function Index({ title = '我的发起' }) { MyColumns.EnumTag({ title: '状态', dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, + // valueEnum: ApprovalInstancesStatusEnum, }), MyColumns.EnumTag({ dataIndex: 'type', title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, search: false, }), { diff --git a/src/pages/approval/my_processed/index.tsx b/src/pages/approval/my_processed/index.tsx index 98cdb15..9f33b99 100644 --- a/src/pages/approval/my_processed/index.tsx +++ b/src/pages/approval/my_processed/index.tsx @@ -1,11 +1,8 @@ import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; +import Show from './modals/Show'; export default function Index({ title = '我的发起' }) { return ( ( - {/* */} + ), }), diff --git a/src/pages/approval/my_processed/modals/Show.tsx b/src/pages/approval/my_processed/modals/Show.tsx new file mode 100644 index 0000000..6df6c25 --- /dev/null +++ b/src/pages/approval/my_processed/modals/Show.tsx @@ -0,0 +1,255 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + renderTextHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { + ContractsContractNatureEnum, + ContractsSettlementModeEnum, + ContractTemplatesIncomeExpenseTypeEnum, + RefundsTypeEnum, +} from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.model_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + + + + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + + + + + + + + {config?.value?.model?.contract_type_name || '-'} + + + + + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/pending/index.tsx b/src/pages/approval/pending/index.tsx index 57452ab..8b94e03 100644 --- a/src/pages/approval/pending/index.tsx +++ b/src/pages/approval/pending/index.tsx @@ -5,10 +5,7 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; +import { ApprovalInstancesStatusEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import Audit from './modals/Audit'; @@ -48,12 +45,12 @@ export default function Index({ title = '我的待办' }) { MyColumns.EnumTag({ title: '状态', dataIndex: ['approval_instance', 'status'], - valueEnum: ApprovalInstancesStatusEnum, + // valueEnum: ApprovalInstancesStatusEnum, }), MyColumns.EnumTag({ dataIndex: ['approval_instance', 'type'], title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, search: false, }), MyColumns.CreatedAt(), diff --git a/src/pages/approval/pending/modals/Refund.tsx b/src/pages/approval/pending/modals/Refund.tsx deleted file mode 100644 index ced25b1..0000000 --- a/src/pages/approval/pending/modals/Refund.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`登记退款信息`} - trigger={} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="600px" - form={form} - key={new Date().getDate()} - onOpenChange={(open: any) => { - if (open && props.item) { - form.resetFields(); - form.setFieldsValue({ - ...props.item, - }); - } - }} - onFinish={async (values: any) => - Apis.Refund.Refunds.Complete({ - ...values, - id: props.item?.id ?? '', - type: props.item?.type || '', - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.CompanyAccounts({ - key: 'company_receipt_accounts_id', - title: '付款账户', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - showSearch: true, - }, - }), - { - key: 'serial_number', - title: '退款凭证号', - valueType: 'digit', - colProps: { span: 24 }, - fieldProps: { - style: { - width: '100%', - }, - placeholder: `请输入退款的银行;流水`, - }, - formItemProps: { ...rulesHelper.number }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '支持上传任意格式的文件', - uploadType: 'file', - colProps: { span: 24 }, - // accept: '.docx,.doc,.pdf', - max: 100, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/approval/templates/index.tsx b/src/pages/approval/templates/index.tsx index 2e53d33..b4e8fed 100644 --- a/src/pages/approval/templates/index.tsx +++ b/src/pages/approval/templates/index.tsx @@ -5,7 +5,6 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { ApprovalTemplatesTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import Create from './modals/Create'; @@ -39,7 +38,7 @@ export default function Index({ title = '审批模板' }) { MyColumns.EnumTag({ title: '业务类型', dataIndex: 'type', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, }), { title: '模版名称', diff --git a/src/pages/approval/templates/modals/Create.tsx b/src/pages/approval/templates/modals/Create.tsx index cc16960..408f373 100644 --- a/src/pages/approval/templates/modals/Create.tsx +++ b/src/pages/approval/templates/modals/Create.tsx @@ -7,10 +7,7 @@ import { } from '@/common'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { - ApprovalTemplateNodesNodeTypeEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; +import { ApprovalTemplateNodesNodeTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -46,7 +43,7 @@ export default function Create(props: MyBetaModalFormProps) { MyFormItems.EnumRadio({ key: 'type', title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, required: true, colProps: { span: 24 }, }), diff --git a/src/pages/approval/templates/modals/Update.tsx b/src/pages/approval/templates/modals/Update.tsx index 8ebe019..ef65277 100644 --- a/src/pages/approval/templates/modals/Update.tsx +++ b/src/pages/approval/templates/modals/Update.tsx @@ -7,10 +7,7 @@ import { } from '@/common'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { - ApprovalTemplateNodesNodeTypeEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; +import { ApprovalTemplateNodesNodeTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -58,7 +55,7 @@ export default function Update(props: MyBetaModalFormProps) { MyFormItems.EnumRadio({ key: 'type', title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, + // valueEnum: ApprovalTemplatesTypeEnum, required: true, colProps: { span: 24 }, }), diff --git a/src/pages/asset/accounts/index.tsx b/src/pages/asset/accounts/index.tsx index c43c7b9..1be6cf6 100644 --- a/src/pages/asset/accounts/index.tsx +++ b/src/pages/asset/accounts/index.tsx @@ -29,7 +29,7 @@ export default function Index({ title = '项目账号配置' }) { > MyProTableProps.request( params, @@ -50,15 +50,17 @@ export default function Index({ title = '项目账号配置' }) { { title: '项目名称', dataIndex: ['project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, { title: '收款账户', dataIndex: ['receipt_account', 'company_name'], + search: false, }, { title: '开户行', @@ -81,9 +83,8 @@ export default function Index({ title = '项目账号配置' }) { title: '商户ID', dataIndex: ['receipt_account', 'merchant_id'], search: false, - render: (_, record) => record?.merchant_id || '-', }, - MyColumns.UpdatedAt(), + // MyColumns.UpdatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( diff --git a/src/pages/asset/accounts/modals/AccountsGet.tsx b/src/pages/asset/accounts/modals/AccountsGet.tsx index d8fcbf1..9a60e55 100644 --- a/src/pages/asset/accounts/modals/AccountsGet.tsx +++ b/src/pages/asset/accounts/modals/AccountsGet.tsx @@ -20,7 +20,8 @@ export default function Create(props: MyBetaModalFormProps) { wrapperCol={{ span: 24 }} width="500px" trigger={ - diff --git a/src/pages/asset/announcement/index.tsx b/src/pages/asset/announcement/index.tsx index 8c3591d..6969fa9 100644 --- a/src/pages/asset/announcement/index.tsx +++ b/src/pages/asset/announcement/index.tsx @@ -7,10 +7,7 @@ import { } from '@/common'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { - MsgPropertyAnnouncementsObjectEnum, - MsgPropertyAnnouncementsPublishTypeEnum, -} from '@/gen/Enums'; +import { MsgPropertyAnnouncementsPublishTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import AnnouncementCreate from './modals/AnnouncementCreate'; @@ -137,12 +134,7 @@ export default function Index({ title = '项目公告' }) { valueEnum: MsgPropertyAnnouncementsPublishTypeEnum, search: false, }), - MyColumns.EnumTag({ - title: '发布对象', - dataIndex: 'object', - valueEnum: MsgPropertyAnnouncementsObjectEnum, - search: false, - }), + MyColumns.Boolean({ title: '是否发布', dataIndex: 'is_publish', diff --git a/src/pages/asset/announcement/modals/AnnouncementCreate.tsx b/src/pages/asset/announcement/modals/AnnouncementCreate.tsx index c21e4c9..b46498c 100644 --- a/src/pages/asset/announcement/modals/AnnouncementCreate.tsx +++ b/src/pages/asset/announcement/modals/AnnouncementCreate.tsx @@ -8,10 +8,7 @@ import { import MyEditor from '@/common/components/Editor'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { - MsgPropertyAnnouncementsObjectEnum, - MsgPropertyAnnouncementsPublishTypeEnum, -} from '@/gen/Enums'; +import { MsgPropertyAnnouncementsPublishTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -70,17 +67,6 @@ export default function Create(props: MyBetaModalFormProps) { ...rulesHelper.text, }, }, - MyFormItems.EnumRadio({ - key: 'object', - title: '发布对象', - colProps: { span: 8 }, - valueEnum: MsgPropertyAnnouncementsObjectEnum, - formItemProps: { - labelCol: { span: 12 }, - wrapperCol: { span: 12 }, - ...rulesHelper.text, - }, - }), MyFormItems.EnumRadio({ key: 'publish_type', title: '发布方式', diff --git a/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx b/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx index 90cfccb..4bf45f0 100644 --- a/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx +++ b/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx @@ -7,10 +7,7 @@ import { } from '@/common'; import MyEditor from '@/common/components/Editor'; import { Apis } from '@/gen/Apis'; -import { - MsgPropertyAnnouncementsObjectEnum, - MsgPropertyAnnouncementsPublishTypeEnum, -} from '@/gen/Enums'; +import { MsgPropertyAnnouncementsPublishTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -58,17 +55,7 @@ export default function Update(props: MyBetaModalFormProps) { ...rulesHelper.text, }, }, - MyFormItems.EnumRadio({ - key: 'object', - title: '发布对象', - colProps: { span: 8 }, - valueEnum: MsgPropertyAnnouncementsObjectEnum, - formItemProps: { - labelCol: { span: 12 }, - wrapperCol: { span: 12 }, - ...rulesHelper.text, - }, - }), + MyFormItems.EnumRadio({ key: 'publish_type', title: '发布方式', diff --git a/src/pages/asset/asset_bi/charts/PieChart.tsx b/src/pages/asset/asset_bi/charts/PieChart.tsx deleted file mode 100644 index 50ac10b..0000000 --- a/src/pages/asset/asset_bi/charts/PieChart.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { MyBetaModalFormProps } from '@/common'; -import { Pie } from '@ant-design/plots'; -import { useEffect, useState } from 'react'; -export default function Index(props: MyBetaModalFormProps) { - const [configData, setConfigData] = useState({}); - const config = { - data: [], - xField: 'residential_relation', - yField: '数量', - colorField: 'residential_relation', - group: true, - innerRadius: 0.6, - label: { - text: '数量', - style: { - fontWeight: 'bold', - }, - }, - legend: { - color: { - title: false, - position: 'right', - rowPadding: 5, - }, - }, - annotations: [ - { - type: 'text', - style: { - // text: 'AntV\nCharts', - x: '50%', - y: '50%', - textAlign: 'center', - fontSize: 40, - fontStyle: 'bold', - }, - }, - ], - }; - useEffect(() => { - setConfigData({ ...config, data: props?.item || [] }); - }, [props?.item]); - return ( -
- -
- ); -} diff --git a/src/pages/asset/asset_bi/charts/ZigzagLine.tsx b/src/pages/asset/asset_bi/charts/ZigzagLine.tsx deleted file mode 100644 index f978c5d..0000000 --- a/src/pages/asset/asset_bi/charts/ZigzagLine.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { MyBetaModalFormProps } from '@/common'; -import { Column } from '@ant-design/plots'; -import { useEffect, useState } from 'react'; -export default function Index(props: MyBetaModalFormProps) { - const [configData, setConfigData] = useState({}); - const config = { - data: [], - xField: 'usage', - yField: '数量', - // colorField: 'name', - group: true, - style: { - // 矩形四个方向的内边距 - inset: 5, - // 矩形单个方向的内边距 - // insetLeft:5, - // insetRight:20, - // insetBottom: 20, - // insetTop:10 - }, - }; - useEffect(() => { - setConfigData({ ...config, data: props?.item || [] }); - }, [props?.item]); - return ( -
- -
- ); -} diff --git a/src/pages/asset/asset_bi/images/employee_number.svg b/src/pages/asset/asset_bi/images/employee_number.svg deleted file mode 100644 index 09bffe4..0000000 --- a/src/pages/asset/asset_bi/images/employee_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/event_number.svg b/src/pages/asset/asset_bi/images/event_number.svg deleted file mode 100644 index 7644067..0000000 --- a/src/pages/asset/asset_bi/images/event_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/house_number.svg b/src/pages/asset/asset_bi/images/house_number.svg deleted file mode 100644 index 6947b86..0000000 --- a/src/pages/asset/asset_bi/images/house_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/instrument_number.svg b/src/pages/asset/asset_bi/images/instrument_number.svg deleted file mode 100644 index e174d05..0000000 --- a/src/pages/asset/asset_bi/images/instrument_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/parking_number.svg b/src/pages/asset/asset_bi/images/parking_number.svg deleted file mode 100644 index 5bd2df7..0000000 --- a/src/pages/asset/asset_bi/images/parking_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/parking_space_number.svg b/src/pages/asset/asset_bi/images/parking_space_number.svg deleted file mode 100644 index 8b9ad26..0000000 --- a/src/pages/asset/asset_bi/images/parking_space_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/project_number.svg b/src/pages/asset/asset_bi/images/project_number.svg deleted file mode 100644 index 67a730e..0000000 --- a/src/pages/asset/asset_bi/images/project_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/images/user_number.svg b/src/pages/asset/asset_bi/images/user_number.svg deleted file mode 100644 index 0f9f8a4..0000000 --- a/src/pages/asset/asset_bi/images/user_number.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/asset/asset_bi/index.tsx b/src/pages/asset/asset_bi/index.tsx deleted file mode 100644 index bf291ea..0000000 --- a/src/pages/asset/asset_bi/index.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import { MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProCard } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import { useEffect, useState } from 'react'; -import MyPieChart from './charts/PieChart'; -import MyZigzagLine from './charts/ZigzagLine'; -import EmployeeNumber from './images/employee_number.svg'; -import eventIcon from './images/event_number.svg'; -import houseIcon from './images/house_number.svg'; -import instrumentIcon from './images/instrument_number.svg'; -import parkingIcon from './images/parking_number.svg'; -import parkingSpaceIcon from './images/parking_space_number.svg'; -import projectIcon from './images/project_number.svg'; -import userIcon from './images/user_number.svg'; -import './styleBi.scss'; - -export default function Index({ title = '项目Bi' }) { - const [getSummaryCount, setSummaryCount] = useState({}); - const [getHouseUsageDistribution, setHouseUsageDistribution] = useState( - [], - ); - const [getCustomerIdentityDistribution, setCustomerIdentityDistribution] = - useState([]); - const getSummaryCountApi = async () => { - const res = await Apis.Statistics.InformationCount.SummaryCount(); - setSummaryCount(res?.data); - const res_s = - await Apis.Statistics.InformationCount.HouseUsageDistribution(); - setHouseUsageDistribution(res_s?.data); - const res_3 = - await Apis.Statistics.InformationCount.CustomerIdentityDistribution(); - setCustomerIdentityDistribution(res_3?.data); - console.log(res, 'res'); - }; - - useEffect(() => { - getSummaryCountApi(); - }, []); - - return ( - - - -
-
-
-
项目总数
-
- {getSummaryCount?.project_count || 0} -
-
- -
-
-
-
房屋总数
-
- {getSummaryCount?.house_count || 0} -
-
- -
-
-
-
员工总数
-
- {getSummaryCount?.employee_count || 0} -
-
- -
-
-
-
客户总数
-
- {getSummaryCount?.customer_count || 0} -
-
- -
-
-
-
-
-
车场数
-
- {getSummaryCount?.car_port_count || 0} -
-
- -
-
-
-
总车位数
-
- {getSummaryCount?.parking_place_count || 0} -
-
- -
-
-
-
仪表数
-
- {getSummaryCount?.meter_count || 0} -
-
- -
-
-
-
进行中的活动
-
- {getSummaryCount?.activity_count || 0} -
-
- -
-
-
- -
- - - - - - -
-
-
- ); -} diff --git a/src/pages/asset/asset_bi/styleBi.scss b/src/pages/asset/asset_bi/styleBi.scss deleted file mode 100644 index 1995865..0000000 --- a/src/pages/asset/asset_bi/styleBi.scss +++ /dev/null @@ -1,31 +0,0 @@ -.processed_card_container { - display: flex; - align-items: center; - justify-content: space-between; - gap: 20px; -} -.asset_processed_card { - background-color: #fff; - border-radius: 10px; - padding: 30px 20px 0 20px; - display: flex; - flex: 1; - height: 150px; - justify-content: space-between; - .processed_info { - color: #333; - } - .label { - font-size: 18px; - font-weight: 500; - padding-bottom: 10px; - } - .number { - font-size: 34px; - font-weight: 600; - } - img { - width: 60px; - height: 60px; - } -} diff --git a/src/pages/asset/asset_items/index.tsx b/src/pages/asset/asset_items/index.tsx deleted file mode 100644 index c2f699a..0000000 --- a/src/pages/asset/asset_items/index.tsx +++ /dev/null @@ -1,225 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemsEntryTypeEnum, - AssetItemsManageStatusEnum, - AssetItemsStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Dropdown, Space } from 'antd'; -import CreateMaintenances from './modals/CreateMaintenances'; -import Update from './modals/Update'; -import UpdateManageStatus from './modals/UpdateManageStatus'; -import UpdateStatus from './modals/UpdateStatus'; - -export default function Index({ title = '资产列表' }) { - const navigate = useNavigate(); - - return ( - - - MyProTableProps.request(params, sort, Apis.Asset.AssetItems.List) - } - headerTitle={`${title}列表`} - toolBarRender={(action) => [ - { - navigate('/asset/asset_items/pages/transfres_update'); - }} - />, - { - navigate('/asset/asset_items/pages/receives_update'); - }} - />, - { - navigate('/asset/asset_items/pages/returns_update'); - }} - />, - { - navigate('/asset/asset_items/pages/markings_update'); - }} - />, - { - navigate('/asset/asset_items/pages/disposals_update'); - }} - />, - { - navigate('/asset/asset_items/pages/inventories_update'); - }} - />, - { - navigate('/asset/asset_items/pages/create'); - }} - />, - // , - // , - ]} - tableAlertRender={false} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '管理状态', - dataIndex: 'manage_status', - valueEnum: AssetItemsManageStatusEnum, - }), - MyColumns.EnumTag({ - title: '资产状态', - dataIndex: 'status', - valueEnum: AssetItemsStatusEnum, - }), - MyColumns.EnumTag({ - title: '入库方式', - dataIndex: 'entry_type', - valueEnum: AssetItemsEntryTypeEnum, - }), - { - title: '资产分类', - search: false, - render: (_, item: any) => { - return `${item?.asset_item_category_level1?.name}-${item?.asset_item_category_level2?.name}-${item?.asset_item_category_level3?.name}`; - }, - }, - { - title: '仓库', - dataIndex: ['asset_item_warehouse', 'name'], - search: false, - }, - { - title: '项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '资产归属', - dataIndex: 'ownership', - }, - { - title: '品牌', - dataIndex: 'brand', - }, - { - title: '型号', - dataIndex: 'specification', - search: false, - }, - { - title: '管理人员', - dataIndex: ['company_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - ), - }, - { - key: '3', - label: ( - - ), - }, - { - key: '4', - label: ( - - Apis.Asset.AssetItems.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }, - ], - }} - trigger={['click']} - > - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items/modals/BatchCreate.tsx b/src/pages/asset/asset_items/modals/BatchCreate.tsx deleted file mode 100644 index e170875..0000000 --- a/src/pages/asset/asset_items/modals/BatchCreate.tsx +++ /dev/null @@ -1,237 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsEntryTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Index(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="800px" - key={new Date().getTime()} - form={form} - trigger={} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - onFinish={async (values: any) => { - values?.items?.forEach((res: any) => { - if (res?.asset_item_category_level_id?.length === 3) { - res.asset_item_category_level1_id = - res.asset_item_category_level_id[0]; - res.asset_item_category_level2_id = - res.asset_item_category_level_id[1]; - res.asset_item_category_level3_id = - res.asset_item_category_level_id[2]; - } - }); - return Apis.Asset.AssetItems.BatchStore(values) - .then(() => { - props.reload?.(); - message.success('提交成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects.WarehousesSelect({ - title: '选择仓库', - key: 'asset_item_warehouses_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - MyFormItems.EnumRadio({ - key: 'entry_type', - title: '入库方式', - formItemProps: { ...rulesHelper.text }, - valueEnum: () => { - let obj = JSON.parse(JSON.stringify(AssetItemsEntryTypeEnum)); - delete obj?.Transfer; - delete obj?.Inventory; - return obj; - }, - required: true, - colProps: { span: 12 }, - }), - { - title: '入库日期', - key: 'entry_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '采购日期', - key: 'purchase_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '保修结束日期', - key: 'warranty_end_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'ownership', - title: '资产归属', - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - { - valueType: 'formList', - key: 'items', - colProps: { span: 24 }, - title: '设置资产', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - itemRender: ( - { listDom, action }: any, - { index }: { index: number }, - ) => { - return ( - - {listDom} - - ); - }, - }, - formItemProps: { - ...rulesHelper.array, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 8 }, - }, - Selects.AssetCategories({ - title: '资产分类', - key: 'asset_item_category_level_id', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 8 }, - }), - { - title: '数量', - key: 'quantity', - formItemProps: { ...rulesHelper.number }, - valueType: 'digit', - colProps: { span: 8 }, - fieldProps: { - suffix: '件', - min: 1, - style: { - width: '100%', - }, - }, - }, - { - key: 'brand', - title: '品牌', - colProps: { span: 8 }, - }, - { - key: 'unit_price', - title: '单价', - valueType: 'digit', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 8 }, - }, - { - key: 'specification', - title: '规格型号', - colProps: { span: 8 }, - fieldProps: { - placeholder: '比如:14寸/银色', - }, - }, - { - key: 'warranty_period', - title: '保修期限(天)', - valueType: 'digit', - fieldProps: { - suffix: '天', - style: { - width: '100%', - }, - }, - colProps: { span: 8 }, - }, - Selects?.Employees({ - title: '责任管理人', - key: 'company_employees_id', - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - }, - }), - - { - title: '备注', - key: 'remark', - valueType: 'textarea', - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/modals/Create.tsx b/src/pages/asset/asset_items/modals/Create.tsx deleted file mode 100644 index 9b62de9..0000000 --- a/src/pages/asset/asset_items/modals/Create.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsEntryTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="800px" - key={new Date().getTime()} - form={form} - trigger={} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - onFinish={async (values: any) => { - let data: any = values; - if (values?.asset_item_category_level_id?.length === 3) { - data = { - ...values, - asset_item_category_level1_id: - values.asset_item_category_level_id[0], - asset_item_category_level2_id: - values.asset_item_category_level_id[1], - asset_item_category_level3_id: - values.asset_item_category_level_id[2], - }; - } - return Apis.Asset.AssetItems.Store(data) - .then(() => { - props.reload?.(); - message.success('提交成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - MyFormItems.EnumRadio({ - key: 'entry_type', - title: '入库方式', - formItemProps: { ...rulesHelper.text }, - valueEnum: () => { - let obj = JSON.parse(JSON.stringify(AssetItemsEntryTypeEnum)); - delete obj?.Transfer; - delete obj?.Inventory; - return obj; - }, - required: true, - colProps: { span: 12 }, - }), - - Selects.AssetCategories({ - title: '资产分类', - key: 'asset_item_category_level_id', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 12 }, - }), - Selects.WarehousesSelect({ - title: '选择仓库', - key: 'asset_item_warehouses_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - { - title: '入库日期', - key: 'entry_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '采购日期', - key: 'purchase_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'unit_price', - title: '单价', - valueType: 'digit', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'specification', - title: '规格型号', - colProps: { span: 12 }, - fieldProps: { - placeholder: '比如:14寸/银色', - }, - }, - { - key: 'brand', - title: '品牌', - colProps: { span: 12 }, - }, - { - key: 'warranty_period', - title: '保修期限(天)', - valueType: 'digit', - fieldProps: { - suffix: '天', - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '保修结束日期', - key: 'warranty_end_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'ownership', - title: '资产归属', - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Selects?.Employees({ - title: '责任管理人', - key: 'company_employees_id', - colProps: { span: 12 }, - fieldProps: { - showSearch: true, - }, - }), - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/modals/CreateMaintenances.tsx b/src/pages/asset/asset_items/modals/CreateMaintenances.tsx deleted file mode 100644 index 222a8e3..0000000 --- a/src/pages/asset/asset_items/modals/CreateMaintenances.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemMaintenanceTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -export default function Index(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`${props.title}工单`} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - onFinish={async (values: any) => { - return Apis.Asset.AssetItemMaintenances.Store({ - ...values, - asset_items_id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '维护类型', - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemMaintenanceTypeEnum, - colProps: { span: 24 }, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.number }, - }), - { - title: '完成时间', - key: 'deadline', - colProps: { span: 12 }, - fieldProps: { - style: { - width: '100%', - }, - }, - valueType: 'date', - }, - { - title: '维护内容', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '仅支持docx,doc,pdf格式', - uploadType: 'file', - colProps: { span: 24 }, - max: 100, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/modals/Update.tsx b/src/pages/asset/asset_items/modals/Update.tsx deleted file mode 100644 index 5e87b17..0000000 --- a/src/pages/asset/asset_items/modals/Update.tsx +++ /dev/null @@ -1,192 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsEntryTypeEnum } 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="800px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - asset_item_category_level_id: [ - props?.item?.asset_item_category_level1_id, - props?.item?.asset_item_category_level2_id, - props?.item?.asset_item_category_level3_id, - ], - }); - } - }} - onFinish={async (values: any) => { - let data: any = values; - if (values?.asset_item_category_level_id?.length === 3) { - data = { - ...values, - asset_item_category_level1_id: - values.asset_item_category_level_id[0], - asset_item_category_level2_id: - values.asset_item_category_level_id[1], - asset_item_category_level3_id: - values.asset_item_category_level_id[2], - }; - } - return Apis.Asset.AssetItems.Update({ - ...data, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - MyFormItems.EnumRadio({ - key: 'entry_type', - title: '入库方式', - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemsEntryTypeEnum, - required: true, - colProps: { span: 12 }, - }), - - Selects.AssetCategories({ - title: '资产分类', - key: 'asset_item_category_level_id', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 12 }, - }), - Selects.WarehousesSelect({ - title: '选择仓库', - key: 'asset_item_warehouses_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }), - { - title: '入库日期', - key: 'entry_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '采购日期', - key: 'purchase_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'unit_price', - title: '单价', - valueType: 'digit', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'specification', - title: '规格型号', - colProps: { span: 12 }, - }, - { - key: 'brand', - title: '品牌', - colProps: { span: 12 }, - }, - { - key: 'warranty_period', - title: '保修期限(天)', - valueType: 'digit', - fieldProps: { - suffix: '天', - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '保修结束日期', - key: 'warranty_end_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'ownership', - title: '资产归属', - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Selects?.Employees({ - title: '责任管理人', - key: 'company_employees_id', - colProps: { span: 12 }, - fieldProps: { - showSearch: true, - }, - }), - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/modals/UpdateManageStatus.tsx b/src/pages/asset/asset_items/modals/UpdateManageStatus.tsx deleted file mode 100644 index 536f150..0000000 --- a/src/pages/asset/asset_items/modals/UpdateManageStatus.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsManageStatusEnum } 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={`编辑${props.title}`} - trigger={ - - } - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - }); - } - }} - onFinish={async (values: any) => { - return Apis.Asset.AssetItems.UpdateManageStatus({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - MyFormItems.EnumRadio({ - key: 'manage_status', - title: '管理状态', - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemsManageStatusEnum, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/modals/UpdateStatus.tsx b/src/pages/asset/asset_items/modals/UpdateStatus.tsx deleted file mode 100644 index a2c874c..0000000 --- a/src/pages/asset/asset_items/modals/UpdateStatus.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsStatusEnum } 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={`编辑${props.title}`} - trigger={ - - } - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - }); - } - }} - onFinish={async (values: any) => { - return Apis.Asset.AssetItems.UpdateStatus({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - MyFormItems.EnumRadio({ - key: 'status', - title: '资产状态', - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemsStatusEnum, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items/pages/create.tsx b/src/pages/asset/asset_items/pages/create.tsx deleted file mode 100644 index 0f978fb..0000000 --- a/src/pages/asset/asset_items/pages/create.tsx +++ /dev/null @@ -1,269 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemsEntryTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -export default function Index({ title = '添加资产' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const onSave = (values: any) => { - values?.items?.forEach((res: any) => { - if (res?.asset_item_category_level_id?.length === 3) { - res.asset_item_category_level1_id = res.asset_item_category_level_id[0]; - res.asset_item_category_level2_id = res.asset_item_category_level_id[1]; - res.asset_item_category_level3_id = res.asset_item_category_level_id[2]; - } - }); - return Apis.Asset.AssetItems.BatchStore(values) - .then(() => { - message.success('提交成功'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} -
- } - enableTabs={false} - tabKey="asset_items_create_page" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="添加" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - Selects.WarehousesSelect({ - title: '选择仓库', - key: 'asset_item_warehouses_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - MyFormItems.EnumRadio({ - key: 'entry_type', - title: '入库方式', - formItemProps: { ...rulesHelper.text }, - valueEnum: () => { - let obj = JSON.parse(JSON.stringify(AssetItemsEntryTypeEnum)); - delete obj?.Transfer; - delete obj?.Inventory; - return obj; - }, - required: true, - colProps: { span: 12 }, - }), - { - title: '入库日期', - key: 'entry_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '采购日期', - key: 'purchase_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - title: '保修结束日期', - key: 'warranty_end_date', - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 12 }, - }, - { - key: 'ownership', - title: '资产归属', - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - { - valueType: 'formList', - key: 'items', - colProps: { span: 24 }, - title: '设置资产', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - itemRender: ( - { listDom, action }: any, - { index }: { index: number }, - ) => { - return ( - - {listDom} - - ); - }, - }, - formItemProps: { - ...rulesHelper.array, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 8 }, - }, - Selects.AssetCategories({ - title: '资产分类', - key: 'asset_item_category_level_id', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 8 }, - }), - { - title: '数量', - key: 'quantity', - formItemProps: { ...rulesHelper.number }, - valueType: 'digit', - colProps: { span: 8 }, - fieldProps: { - suffix: '件', - min: 1, - style: { - width: '100%', - }, - }, - }, - { - key: 'brand', - title: '品牌', - colProps: { span: 8 }, - }, - { - key: 'unit_price', - title: '单价', - valueType: 'digit', - fieldProps: { - style: { - width: '100%', - }, - }, - colProps: { span: 8 }, - }, - { - key: 'specification', - title: '规格型号', - colProps: { span: 8 }, - fieldProps: { - placeholder: '比如:14寸/银色', - }, - }, - { - key: 'warranty_period', - title: '保修期限(天)', - valueType: 'digit', - fieldProps: { - suffix: '天', - style: { - width: '100%', - }, - }, - colProps: { span: 8 }, - }, - Selects?.Employees({ - title: '责任管理人', - key: 'company_employees_id', - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - }, - }), - - { - title: '备注', - key: 'remark', - valueType: 'textarea', - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ], - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/disposals_update.tsx b/src/pages/asset/asset_items/pages/disposals_update.tsx deleted file mode 100644 index 11fa088..0000000 --- a/src/pages/asset/asset_items/pages/disposals_update.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useState } from 'react'; -export default function Update({ title = '资产处置' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [dataSource, setDataSource] = useState([]); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemDisposals.Store({ - ...formData, - items: formData?.asset_items?.map((item: any) => ({ - asset_items_id: item?.id, - })), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="disposals_update_page" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交处置" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - { - title: '处置原因', - key: 'reason', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - valueType: 'dependency', - name: ['from_warehouse_id'], - columns: ({ from_warehouse_id }) => { - return [ - { - title: '选择资产', - key: 'asset_items', - formItemProps: { ...rulesHelper.array }, - renderFormItem: () => { - return ( - - { - form.setFieldValue('asset_items', e); - setDataSource(e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any) => ( - { - setDataSource( - dataSource.filter( - (res: any) => res?.id !== item?.id, - ), - ); - }} - /> - ), - }), - ]} - /> - - ); - }, - }, - ]; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/inventories_update.tsx b/src/pages/asset/asset_items/pages/inventories_update.tsx deleted file mode 100644 index b18cef9..0000000 --- a/src/pages/asset/asset_items/pages/inventories_update.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -export default function Update({ - title = '添加资产盘点', -}: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemInventories.Store({ - ...formData, - required_start_date: dayjs(formData?.required_start_date).format( - 'YYYY-MM-DD', - ), - required_end_date: dayjs(formData?.required_end_date).format( - 'YYYY-MM-DD', - ), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="inventories_update_page" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交盘点" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - { - title: '盘点名称', - key: 'name', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - Selects.WarehousesSelect({ - title: '盘点仓库', - key: 'asset_item_warehouses_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - Selects?.Employees({ - title: '盘点人', - key: 'assigned_employee_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - showSearch: true, - }, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Selects.AssetCategoriesSelect({ - title: '盘点分类', - key: 'category_ids', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - mode: 'multiple', - }, - colProps: { span: 24 }, - }), - { - title: '盘点开始时间', - key: 'required_start_date', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - }, - colProps: { span: 12 }, - }, - { - title: '盘点结束时间', - key: 'required_end_date', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - }, - colProps: { span: 12 }, - }, - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/markings_update.tsx b/src/pages/asset/asset_items/pages/markings_update.tsx deleted file mode 100644 index 3bd1672..0000000 --- a/src/pages/asset/asset_items/pages/markings_update.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemMarkingTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useState } from 'react'; -export default function Update({ title = '资产标记' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [dataSource, setDataSource] = useState([]); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemMarkings.Store({ - ...formData, - items: formData?.asset_items?.map((item: any) => ({ - asset_items_id: item?.id, - })), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="markings_update_page" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交标记" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - MyFormItems.EnumRadio({ - key: 'marking_type', - title: '标记类型', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemMarkingTypeEnum, - }), - Selects?.Employees({ - title: '关联负责人', - key: 'responsible_id', - colProps: { span: 12 }, - fieldProps: { - showSearch: true, - }, - }), - { - title: '上报说明', - key: 'description', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '相关图片', - tooltip: '最多上传10张图片', - // uploadType: 'file', - max: 10, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - valueType: 'dependency', - name: ['from_warehouse_id'], - columns: ({ from_warehouse_id }) => { - return [ - { - title: '选择资产', - key: 'asset_items', - formItemProps: { ...rulesHelper.array }, - renderFormItem: () => { - return ( - - { - form.setFieldValue('asset_items', e); - setDataSource(e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any) => ( - { - setDataSource( - dataSource.filter( - (res: any) => res?.id !== item?.id, - ), - ); - }} - /> - ), - }), - ]} - /> - - ); - }, - }, - ]; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/receives_update.tsx b/src/pages/asset/asset_items/pages/receives_update.tsx deleted file mode 100644 index 911863c..0000000 --- a/src/pages/asset/asset_items/pages/receives_update.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -export default function Update({ title = '资产领取' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemReceives.Store({ - ...formData, - items: formData?.asset_items?.map((item: any) => ({ - asset_items_id: item?.id, - quantity: item?.quantity, - })), - receive_date: dayjs(formData?.receive_date).format('YYYY-MM-DD'), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="receives_update" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交领取" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - Selects?.Organizations({ - title: '领用组织', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - key: 'organizations_id', - }), - { - valueType: 'dependency', - name: ['organizations_id'], - columns: ({ organizations_id }) => { - return [ - Selects?.Employees({ - title: '领取人', - key: 'applicant_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - params: { - organizations_id, - }, - fieldProps: { - showSearch: true, - }, - }), - ]; - }, - }, - - { - title: '领取日期', - key: 'receive_date', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - { - title: '领用原因', - key: 'reason', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - - { - valueType: 'formList', - key: 'asset_items', - colProps: { span: 24 }, - title: ( - - 选择资产: - { - console.log(e); - form.setFieldValue('asset_items', e); - }} - /> - - ), - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - creatorButtonProps: false, - }, - formItemProps: { - ...rulesHelper.array, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '资产名称', - key: 'name', - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - title: '数量', - colProps: { span: 12 }, - key: 'quantity', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - suffix: '件', - max: 1, - }, - }, - ], - }, - ], - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/returns_update.tsx b/src/pages/asset/asset_items/pages/returns_update.tsx deleted file mode 100644 index 63cc0c1..0000000 --- a/src/pages/asset/asset_items/pages/returns_update.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -export default function Update({ title = '资产归还' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemReturns.Store({ - ...formData, - items: formData?.asset_items?.map((item: any) => ({ - asset_items_id: item?.id, - quantity: item?.quantity, - })), - return_date: dayjs(formData?.return_date).format('YYYY-MM-DD'), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="returns_update" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交归还" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - Selects?.Organizations({ - title: '归还组织', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - key: 'organizations_id', - }), - { - valueType: 'dependency', - name: ['organizations_id'], - columns: ({ organizations_id }) => { - return [ - Selects?.Employees({ - title: '归还人', - key: 'applicant_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - params: { - organizations_id, - }, - fieldProps: { - showSearch: true, - }, - }), - ]; - }, - }, - - { - title: '归还日期', - key: 'return_date', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Selects?.Employees({ - title: '确认人', - key: 'confirm_employee_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - }, - }), - { - title: '归还说明', - key: 'reason', - valueType: 'textarea', - colProps: { span: 24 }, - }, - { - valueType: 'formList', - key: 'asset_items', - colProps: { span: 24 }, - title: ( - - 选择资产: - { - console.log(e); - form.setFieldValue('asset_items', e); - }} - /> - - ), - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - creatorButtonProps: false, - }, - formItemProps: { - ...rulesHelper.array, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '资产名称', - key: 'name', - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - title: '数量', - colProps: { span: 12 }, - key: 'quantity', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - suffix: '件', - max: 1, - }, - }, - ], - }, - ], - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items/pages/transfres_update.tsx b/src/pages/asset/asset_items/pages/transfres_update.tsx deleted file mode 100644 index 1b8bf86..0000000 --- a/src/pages/asset/asset_items/pages/transfres_update.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -import { useState } from 'react'; -export default function Update({ title = '资产调拨' }: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [dataSource, setDataSource] = useState([]); - const onSave = (formData: any) => { - return Apis.Asset.AssetItemTransfers.Store({ - ...formData, - items: formData?.asset_items?.map((item: any) => ({ - asset_items_id: item?.id, - })), - transfer_date: dayjs(formData?.transfer_date).format('YYYY-MM-DD'), - }) - .then(() => { - message.success('提交成功!'); - navigate(-1); - return true; - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="transfres_update" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - // props.submit(); - }} - title="提交调拨" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - layoutType="Form" - wrapperCol={{ span: 24 }} - width="900px" - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - Selects.WarehousesSelect({ - title: '原仓库', - key: 'from_warehouse_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - Selects.WarehousesSelect({ - title: '调入仓库', - key: 'to_warehouse_id', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - }), - Selects?.Employees({ - title: '接收人', - key: 'receiver_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - }, - }), - { - title: '调拨日期', - key: 'transfer_date', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - }, - }, - { - title: '调拨原因', - key: 'reason', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - valueType: 'dependency', - name: ['from_warehouse_id'], - columns: ({ from_warehouse_id }) => { - return [ - { - title: '选择资产', - key: 'asset_items', - formItemProps: { ...rulesHelper.array }, - renderFormItem: () => { - return ( - - { - form.setFieldValue('asset_items', e); - setDataSource(e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any) => ( - { - setDataSource( - dataSource.filter( - (res: any) => res?.id !== item?.id, - ), - ); - }} - /> - ), - }), - ]} - /> - - ); - }, - }, - ]; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/asset/asset_items_categories/index.tsx b/src/pages/asset/asset_items_categories/index.tsx deleted file mode 100644 index afc2fd1..0000000 --- a/src/pages/asset/asset_items_categories/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '资产分类' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemCategories.Tree, - ) - } - headerTitle={title} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - { - title: '分类标识', - dataIndex: 'code', - search: false, - }, - MyColumns.ToggleEnabled({ - onToggleEnabled: Apis.Asset.AssetItemCategories.ToggleEnabled, - search: false, - }), - MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_categories/modals/Create.tsx b/src/pages/asset/asset_items_categories/modals/Create.tsx deleted file mode 100644 index 835eb32..0000000 --- a/src/pages/asset/asset_items_categories/modals/Create.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { TreeSelects } from '@/components/TreeSelect'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { ButtonProps, Form, message } from 'antd'; - -export default function Create( - props: { - buttonProps?: ButtonProps; - } & MyBetaModalFormProps, -) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - trigger={ - - } - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - form.setFieldsValue({ - parent_id: props.item?.id, - }); - } - }} - onFinish={async (values) => - Apis.Asset.AssetItemCategories.Store({ - is_enabled: values?.is_enabled ? true : false, - ...values, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - TreeSelects.TreeSelecTassetItemCategories(), - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'code', - title: '分类标识', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_categories/modals/Update.tsx b/src/pages/asset/asset_items_categories/modals/Update.tsx deleted file mode 100644 index d5a22cc..0000000 --- a/src/pages/asset/asset_items_categories/modals/Update.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { TreeSelects } from '@/components/TreeSelect'; -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Asset.AssetItemCategories.Update({ - ...values, - is_enabled: values?.is_enabled ? true : false, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - TreeSelects.TreeSelecTassetItemCategories(), - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'code', - title: '分类标识', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_disposals/index.tsx b/src/pages/asset/asset_items_disposals/index.tsx deleted file mode 100644 index 2eb87db..0000000 --- a/src/pages/asset/asset_items_disposals/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemDisposalResultEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Complete from './modals/Complete'; -import Review from './modals/Review'; - -export default function Index({ title = '资产处置审核' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemDisposals.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/disposals_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'confirm_status', - valueEnum: AssetItemTransferConfirmStatusEnum, - }), - MyColumns.EnumTag({ - title: '处置状态', - dataIndex: 'disposal_result', - valueEnum: AssetItemDisposalResultEnum, - }), - { - title: '处置原因', - dataIndex: 'reason', - search: false, - }, - { - title: '资产名称', - dataIndex: 'name', - hidden: true, - }, - { - title: '资产编码', - dataIndex: 'code', - hidden: true, - }, - { - title: '申请人', - dataIndex: ['applicant', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_disposals/modals/Complete.tsx b/src/pages/asset/asset_items_disposals/modals/Complete.tsx deleted file mode 100644 index 4c41f88..0000000 --- a/src/pages/asset/asset_items_disposals/modals/Complete.tsx +++ /dev/null @@ -1,59 +0,0 @@ -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} - title={props.title} - trigger={ - - } - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Asset.AssetItemDisposals.Complete({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '处置日期', - key: 'disposal_date', - formItemProps: { ...rulesHelper.text }, - valueType: 'date', - fieldProps: { - style: { - width: '100%', - }, - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_disposals/modals/Review.tsx b/src/pages/asset/asset_items_disposals/modals/Review.tsx deleted file mode 100644 index fe8e85a..0000000 --- a/src/pages/asset/asset_items_disposals/modals/Review.tsx +++ /dev/null @@ -1,234 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyProTableProps, - renderTextHelper, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalRecordsStatusEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, Image, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="800px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemDisposals.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...props?.item, - asset_item_disposal_items: res?.data?.asset_item_disposal_items, - }); - }); - } - }} - submitter={ - props?.item?.ad_confirm_status === 'Pending' - ? { - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - } - : false - } - onFinish={async (values) => - Apis.Asset.AssetItemDisposals.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '状态', - key: 'ad_confirm_status', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - - { - title: '申请人', - dataIndex: 'applicant', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - - { - title: '处置说明', - dataIndex: 'reason', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '附件', - dataIndex: 'attachments', - renderFormItem: (schema, config) => { - return ( - - {config?.value?.map((res: any, index: number) => { - return ( - {res?.name} - ); - })} - - ); - }, - }, - { - title: '调拨资产', - dataIndex: 'asset_item_disposal_items', - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - valueType: 'dependency', - name: ['ad_confirm_status'], - colProps: { span: 24 }, - columns: ({ ad_confirm_status }) => { - if (ad_confirm_status === 'Pending') { - return [ - MyFormItems.EnumRadio({ - key: 'confirm_status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse( - JSON.stringify(ApprovalRecordsStatusEnum), - ); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['confirm_status'], - columns: ({ confirm_status }) => { - return confirm_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]; - } else { - return []; - } - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_inventories/index.tsx b/src/pages/asset/asset_items_inventories/index.tsx deleted file mode 100644 index 44a5ce3..0000000 --- a/src/pages/asset/asset_items_inventories/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemInventoryStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Assign from './modals/Assign'; -import MyDetails from './modals/Details'; -import MyInventorySurplusList from './modals/InventorySurplusList'; - -export default function Index({ title = '盘点列表' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemInventories.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/inventories_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: AssetItemInventoryStatusEnum, - }), - { - title: '盘点名称', - dataIndex: 'name', - }, - { - title: '盘点仓库', - dataIndex: ['asset_item_warehouse', 'name'], - search: false, - }, - { - title: '盘点数量', - dataIndex: 'total_quantity', - search: false, - }, - { - title: '盘点时间', - search: false, - render: (_, item: any) => { - return `${item?.required_start_date} - ${item?.required_end_date}`; - }, - }, - { - title: '盘点人', - dataIndex: ['assigned_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - { - Apis.Asset.AssetItemInventories.Close({ - id: item.id, - }).then(() => { - action?.reload(); - }); - }} - isConfirm - description="是否确定关闭?" - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_inventories/modals/Assign.tsx b/src/pages/asset/asset_items_inventories/modals/Assign.tsx deleted file mode 100644 index ef4169a..0000000 --- a/src/pages/asset/asset_items_inventories/modals/Assign.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Assign(props: MyBetaModalFormProps & { item: any }) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`指派资产盘点`} - wrapperCol={{ span: 24 }} - width="600px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({}); - } - }} - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => { - Apis.Asset.AssetItemInventories.Assign({ - ...values, - id: props.item.id, - }) - .then(() => { - props.reload?.(); - message.success('指派成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.Employees({ - title: '选择处理人', - key: 'assigned_employee_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_inventories/modals/Details.tsx b/src/pages/asset/asset_items_inventories/modals/Details.tsx deleted file mode 100644 index 42e1934..0000000 --- a/src/pages/asset/asset_items_inventories/modals/Details.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyModalFormProps, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProTable } from '@ant-design/pro-components'; -import { Form, Tag } from 'antd'; - -export default function Index(props: MyBetaModalFormProps & { item: any }) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`查看资产盘点详情`} - wrapperCol={{ span: 24 }} - width="900px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemInventories.Details({ - id: props.item.id, - }).then((res: any) => { - form.setFieldsValue({ asset_items: res?.data }); - }); - } - }} - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - { - key: 'asset_items', - renderFormItem: () => { - return ( - { - return `¥${record.unit_price}`; - }, - }, - { - title: '实际数量', - dataIndex: 'expected_quantity', - }, - { - title: '盘点数量', - dataIndex: 'actual_quantity', - }, - { - title: '盘点状态', - render: (_, item) => { - return item.actual_quantity === item.expected_quantity ? ( - 正常 - ) : item.actual_quantity < item.expected_quantity ? ( - 盘亏 - ) : ( - 盘盈 - ); - }, - }, - { - title: '分类', - render: (text, record) => { - return `${record.asset_item_category_level1_name}-${record.asset_item_category_level2_name}-${record.asset_item_category_level3_name}`; - }, - }, - ]} - /> - ); - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_inventories/modals/InventorySurplusList.tsx b/src/pages/asset/asset_items_inventories/modals/InventorySurplusList.tsx deleted file mode 100644 index 1f1fe0e..0000000 --- a/src/pages/asset/asset_items_inventories/modals/InventorySurplusList.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyModalFormProps, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProTable } from '@ant-design/pro-components'; -import { Form } from 'antd'; - -export default function Index(props: MyBetaModalFormProps & { item: any }) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`库外盘盈`} - wrapperCol={{ span: 24 }} - width="900px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemInventorySurplus.List({ - asset_item_inventories_id: props.item.id, - }).then((res: any) => { - form.setFieldsValue({ asset_items: res?.data }); - }); - } - }} - key={new Date().getTime()} - form={form} - submitter={false} - columns={[ - { - key: 'asset_items', - renderFormItem: () => { - return ( - { - return `¥${record.unit_price}`; - }, - }, - { - title: '数量', - dataIndex: 'quantity', - }, - { - title: '分类', - render: (text, record) => { - return `${ - record.asset_item_category_level1?.name || '' - }-${record.asset_item_category_level2?.name || ''}-${ - record.asset_item_category_level3?.name || '' - }`; - }, - }, - ]} - /> - ); - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/index.tsx b/src/pages/asset/asset_items_maintenances/index.tsx deleted file mode 100644 index 311b38e..0000000 --- a/src/pages/asset/asset_items_maintenances/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { MyPageContainer } from '@/common'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import MyList from './list'; -import MyMaintenanceRules from './maintenance_rules'; - -export default function Index({ title = '维保管理' }) { - // const getCurrentPermissions = useCurrentPermissions(); - - const items: TabsProps['items'] = [ - { - key: '1', - label: '维保工单', - children: , - }, - { - key: '2', - label: '维保规则', - children: , - }, - ]; - - return ( - - - - ); -} diff --git a/src/pages/asset/asset_items_maintenances/list/index.tsx b/src/pages/asset/asset_items_maintenances/list/index.tsx deleted file mode 100644 index f84ad74..0000000 --- a/src/pages/asset/asset_items_maintenances/list/index.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemMaintenanceStatusEnum, - AssetItemMaintenanceTypeEnum, - HouseChargeTasksTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Assign from './modals/Assign'; -import CreateMaintenances from './modals/CreateMaintenances'; -import MyShow from './modals/Show'; - -export default function Index({ title = '维保工单' }) { - return ( - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemMaintenances.List, - ) - } - headerTitle={title} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: AssetItemMaintenanceStatusEnum, - }), - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - search: false, - valueEnum: AssetItemMaintenanceTypeEnum, - }), - MyColumns.EnumTag({ - title: '创建方式', - dataIndex: 'source', - valueEnum: HouseChargeTasksTypeEnum, - }), - { - title: '资产名称', - dataIndex: 'name', - }, - { - title: '资产型号', - dataIndex: 'specification', - search: false, - }, - { - title: '资产分类', - render: (_, item: any) => { - return `${item?.asset_item_category_level1_name}-${item?.asset_item_category_level2_name}-${item?.asset_item_category_level3_name}`; - }, - search: false, - }, - { - title: '完成时间', - dataIndex: 'deadline', - search: false, - }, - { - title: '维保人', - dataIndex: ['assigned_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - Apis.Asset.AssetItemMaintenances.Close({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/list/modals/Assign.tsx b/src/pages/asset/asset_items_maintenances/list/modals/Assign.tsx deleted file mode 100644 index 91d57d6..0000000 --- a/src/pages/asset/asset_items_maintenances/list/modals/Assign.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Assign(props: MyBetaModalFormProps & { item: any }) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`指派维保工单`} - wrapperCol={{ span: 24 }} - width="600px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => { - Apis.Asset.AssetItemMaintenances.Assign({ - ...values, - id: props.item.id, - }) - .then(() => { - props.reload?.(); - message.success('指派成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.Employees({ - title: '选择员工', - key: 'assigned_employee_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/list/modals/CreateMaintenances.tsx b/src/pages/asset/asset_items_maintenances/list/modals/CreateMaintenances.tsx deleted file mode 100644 index e064403..0000000 --- a/src/pages/asset/asset_items_maintenances/list/modals/CreateMaintenances.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AssetItemMaintenanceTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, message, Space } from 'antd'; -export default function Index(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`${props.title}工单`} - trigger={ - - } - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - onFinish={async (values: any) => { - return Apis.Asset.AssetItemMaintenances.Store({ - ...values, - asset_items_id: values?.asset_items?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '维护类型', - formItemProps: { ...rulesHelper.text }, - valueEnum: AssetItemMaintenanceTypeEnum, - colProps: { span: 24 }, - }), - { - formItemProps: { ...rulesHelper.text }, - title: '请选择资产', - key: 'asset_items', - renderFormItem: (schema, config) => { - return ( - - - { - form.setFieldValue('asset_items', e?.[0]); - }} - /> - {config?.value?.name - ? `你已选择资产:${config?.value?.name}` - : ''} - - - ); - }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.number }, - }), - { - title: '完成时间', - key: 'deadline', - colProps: { span: 12 }, - fieldProps: { - style: { - width: '100%', - }, - }, - valueType: 'date', - }, - { - title: '维护内容', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '仅支持docx,doc,pdf格式', - uploadType: 'file', - colProps: { span: 24 }, - max: 100, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/list/modals/Show.tsx b/src/pages/asset/asset_items_maintenances/list/modals/Show.tsx deleted file mode 100644 index 6dcf27e..0000000 --- a/src/pages/asset/asset_items_maintenances/list/modals/Show.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemMaintenanceStatusEnum, - AssetItemMaintenanceTypeEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Flex, Space, Steps } from 'antd'; -import { useState } from 'react'; - -export default function Index(props: MyBetaModalFormProps) { - const [showData, setShow] = useState({}); - - const getShow = () => { - if (props?.item?.id) { - Apis.Asset.AssetItemMaintenances.Show({ - id: props?.item?.id, - }).then((res: any) => { - setShow(res?.data); - }); - } - }; - - return ( - getShow()} - node={ - - - - - - - - - - {showData?.name || '-'}-{showData?.specification} - - - {showData?.assigned_employee?.name || '-'}- - {showData?.assigned_employee?.phone || '-'} - - - {showData?.asset_item_category_level1_name || '-'}/ - {showData?.asset_item_category_level2_name || '-'}/ - {showData?.asset_item_category_level3_name || '-'} - - - {showData?.deadline || '-'} - - - {showData?.description || '-'} - - - - { - return { - title: res?.content, - description: ( - - {/* - */} - {res?.created_at} - - ), - }; - }, - )} - /> - - - - - {showData?.attachments?.map((res: any, index: number) => { - return ( - - ); - })} - - - - - } - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/maintenance_rules/index.tsx b/src/pages/asset/asset_items_maintenances/maintenance_rules/index.tsx deleted file mode 100644 index bff8431..0000000 --- a/src/pages/asset/asset_items_maintenances/maintenance_rules/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemMaintenanceRuleStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import RulesCreate from './modals/RulesCreate'; -import RulesUpdate from './modals/RulesUpdate'; - -export default function Index({ title = '维保规则' }) { - return ( - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemMaintenanceRules.List, - ) - } - headerTitle={title} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: AssetItemMaintenanceRuleStatusEnum, - }), - { - title: '维保项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '维保资产数量', - dataIndex: 'asset_item_maintenance_rule_items_count', - search: false, - }, - { - title: '维保时间间隔(天)', - dataIndex: 'cycle_days', - search: false, - }, - { - title: '提前生成天数', - dataIndex: 'advance_days', - search: false, - }, - { - title: '完成期限天数', - dataIndex: 'deadline_days', - search: false, - }, - // MyColumns.ToggleEnabled({ - // onToggleEnabled: Apis.Asset.AssetItemMaintenanceRules.Toggle, - // search: false, - // }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Asset.AssetItemMaintenanceRules.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesCreate.tsx b/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesCreate.tsx deleted file mode 100644 index 17c800d..0000000 --- a/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesCreate.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyModalFormProps, - MyProTableProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加维保规则`} - wrapperCol={{ span: 24 }} - width="800px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); - } - }} - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => { - return Apis.Asset.AssetItemMaintenanceRules.Store({ - ...values, - asset_item_ids: values.asset_items.map((item: any) => item.id), - }) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - title: '维保规则名称', - key: 'name', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '维保时间间隔(天)', - key: 'cycle_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - { - title: '提前生成天数', - key: 'advance_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - { - title: '完成期限天数', - key: 'deadline_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '选择资产', - key: 'asset_items', - formItemProps: { ...rulesHelper.array }, - renderFormItem: (schema, config) => { - console.log(config, '2222'); - return ( - - { - form.setFieldValue('asset_items', e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any) => ( - { - let data = JSON.parse( - JSON.stringify(form.getFieldValue('asset_items')), - ); - form.setFieldValue( - 'asset_items', - data.filter((res: any) => res?.id !== item?.id), - ); - }} - /> - ), - }), - ]} - /> - - ); - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesUpdate.tsx b/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesUpdate.tsx deleted file mode 100644 index 6907b48..0000000 --- a/src/pages/asset/asset_items_maintenances/maintenance_rules/modals/RulesUpdate.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyModalFormProps, - MyProTableProps, - rulesHelper, -} from '@/common'; -import ModalsAssetItemsSelectList from '@/components/ModalsAssetItemsSelectList'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps & { item: any }) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={props.title} - wrapperCol={{ span: 24 }} - width="800px" - trigger={ - - } - onOpenChange={(open: any) => { - if (open) { - Apis.Asset.AssetItemMaintenanceRules.Show({ - id: props?.item?.id, - }).then((res) => { - form.setFieldsValue({ - ...res?.data, - asset_items: res?.data?.asset_item_maintenance_rule_items.map( - (item: any) => ({ - id: item?.asset_items_id, - name: item?.asset_item?.name, - }), - ), - }); - }); - } - }} - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => { - return Apis.Asset.AssetItemMaintenanceRules.Update({ - ...values, - asset_item_ids: values.asset_items.map((item: any) => item.id), - id: props?.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(`${props.title}成功`); - return true; - }) - .catch(() => false); - }} - columns={[ - { - title: '维保规则名称', - key: 'name', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '维保时间间隔(天)', - key: 'cycle_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - { - title: '提前生成天数', - key: 'advance_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - { - title: '完成期限天数', - key: 'deadline_days', - colProps: { span: 12 }, - fieldProps: { min: 1, style: { width: '100%' }, suffix: '天' }, - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '选择资产', - key: 'asset_items', - formItemProps: { ...rulesHelper.array }, - renderFormItem: (schema, config) => { - console.log(config, '2222'); - return ( - - { - form.setFieldValue('asset_items', e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any) => ( - { - let data = JSON.parse( - JSON.stringify(form.getFieldValue('asset_items')), - ); - form.setFieldValue( - 'asset_items', - data.filter((res: any) => res?.id !== item?.id), - ); - }} - /> - ), - }), - ]} - /> - - ); - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_markings/index.tsx b/src/pages/asset/asset_items_markings/index.tsx deleted file mode 100644 index 2d46b5a..0000000 --- a/src/pages/asset/asset_items_markings/index.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - AssetItemMarkingTypeEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Review from './modals/Review'; - -export default function Index({ title = '资产标记审核' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemMarkings.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/markings_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'confirm_status', - valueEnum: AssetItemTransferConfirmStatusEnum, - }), - MyColumns.EnumTag({ - title: '标记类型', - dataIndex: 'marking_type', - valueEnum: AssetItemMarkingTypeEnum, - }), - { - title: '资产名称', - dataIndex: 'name', - hidden: true, - }, - { - title: '资产编码', - dataIndex: 'code', - hidden: true, - }, - { - title: '关联负责任', - dataIndex: ['responsible', 'name'], - search: false, - }, - { - title: '申请人', - dataIndex: ['applicant', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_markings/modals/Review.tsx b/src/pages/asset/asset_items_markings/modals/Review.tsx deleted file mode 100644 index 10bb8d5..0000000 --- a/src/pages/asset/asset_items_markings/modals/Review.tsx +++ /dev/null @@ -1,262 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyProTableProps, - renderTextHelper, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalRecordsStatusEnum, - AssetItemMarkingTypeEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, Image, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="800px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemMarkings.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...props?.item, - asset_item_marking_items: res?.data?.asset_item_marking_items, - }); - }); - } - }} - submitter={ - props?.item?.ad_confirm_status === 'Pending' - ? { - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - } - : false - } - onFinish={async (values) => - Apis.Asset.AssetItemMarkings.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '状态', - key: 'ad_confirm_status', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - { - title: '标记类型', - key: 'marking_type', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - { - title: '关联负责人', - dataIndex: 'responsible', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '申请人', - dataIndex: 'applicant', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - - { - title: '说明', - dataIndex: 'description', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '附件', - dataIndex: 'attachments', - renderFormItem: (schema, config) => { - return ( - - {config?.value?.map((res: any, index: number) => { - return ( - {res?.name} - ); - })} - - ); - }, - }, - { - title: '调拨资产', - dataIndex: 'asset_item_marking_items', - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - valueType: 'dependency', - name: ['ad_confirm_status'], - colProps: { span: 24 }, - columns: ({ ad_confirm_status }) => { - if (ad_confirm_status === 'Pending') { - return [ - MyFormItems.EnumRadio({ - key: 'confirm_status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse( - JSON.stringify(ApprovalRecordsStatusEnum), - ); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['confirm_status'], - columns: ({ confirm_status }) => { - return confirm_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]; - } else { - return []; - } - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_receives/index.tsx b/src/pages/asset/asset_items_receives/index.tsx deleted file mode 100644 index e827ff3..0000000 --- a/src/pages/asset/asset_items_receives/index.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemTransferConfirmStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Review from './modals/Review'; - -export default function Index({ title = '资产领用审核' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemReceives.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/receives_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'confirm_status', - valueEnum: AssetItemTransferConfirmStatusEnum, - }), - { - title: '领取部门', - dataIndex: ['organization', 'name'], - search: false, - }, - { - title: '领用人', - dataIndex: ['applicant', 'name'], - search: false, - }, - { - title: '领取时间', - dataIndex: 'receive_date', - search: false, - }, - { - title: '领取时间', - dataIndex: 'receive_date', - valueType: 'dateRange', - hidden: true, - }, - { - title: '资产名称', - dataIndex: 'name', - hidden: true, - }, - { - title: '资产编码', - dataIndex: 'code', - hidden: true, - }, - { - title: '领用原因', - dataIndex: 'reason', - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_receives/modals/Review.tsx b/src/pages/asset/asset_items_receives/modals/Review.tsx deleted file mode 100644 index 09377c1..0000000 --- a/src/pages/asset/asset_items_receives/modals/Review.tsx +++ /dev/null @@ -1,241 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyProTableProps, - renderTextHelper, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalRecordsStatusEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="800px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemReceives.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...props?.item, - asset_item_receive_items: res?.data?.asset_item_receive_items, - }); - }); - } - }} - submitter={ - props?.item?.ad_confirm_status === 'Pending' - ? { - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - } - : false - } - onFinish={async (values) => - Apis.Asset.AssetItemReceives.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '状态', - key: 'ad_confirm_status', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - { - title: '领取部门', - dataIndex: 'organization', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '领取人', - dataIndex: 'applicant', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '领取时间', - dataIndex: 'receive_date', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '领取原因', - dataIndex: 'reason', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '调拨资产', - dataIndex: 'asset_item_receive_items', - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - valueType: 'dependency', - name: ['ad_confirm_status'], - colProps: { span: 24 }, - columns: ({ ad_confirm_status }) => { - if (ad_confirm_status === 'Pending') { - return [ - MyFormItems.EnumRadio({ - key: 'confirm_status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse( - JSON.stringify(ApprovalRecordsStatusEnum), - ); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['confirm_status'], - columns: ({ confirm_status }) => { - return confirm_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]; - } else { - return []; - } - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_returns/index.tsx b/src/pages/asset/asset_items_returns/index.tsx deleted file mode 100644 index 33fa060..0000000 --- a/src/pages/asset/asset_items_returns/index.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemTransferConfirmStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Review from './modals/Review'; - -export default function Index({ title = '资产归还审核' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemReturns.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/returns_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'confirm_status', - valueEnum: AssetItemTransferConfirmStatusEnum, - }), - { - title: '归还部门', - dataIndex: ['organization', 'name'], - search: false, - }, - { - title: '归还人', - dataIndex: ['applicant', 'name'], - search: false, - }, - { - title: '确认人', - dataIndex: ['confirm_employee', 'name'], - search: false, - }, - { - title: '归还时间', - dataIndex: 'return_date', - search: false, - }, - { - title: '归还时间', - dataIndex: 'return_date', - valueType: 'dateRange', - hidden: true, - }, - { - title: '资产名称', - dataIndex: 'name', - hidden: true, - }, - { - title: '资产编码', - dataIndex: 'code', - hidden: true, - }, - { - title: '归还原因', - dataIndex: 'reason', - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_returns/modals/Review.tsx b/src/pages/asset/asset_items_returns/modals/Review.tsx deleted file mode 100644 index 292237e..0000000 --- a/src/pages/asset/asset_items_returns/modals/Review.tsx +++ /dev/null @@ -1,253 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyProTableProps, - renderTextHelper, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalRecordsStatusEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="800px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemReturns.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...props?.item, - asset_item_return_items: res?.data?.asset_item_return_items, - }); - }); - } - }} - submitter={ - props?.item?.ad_confirm_status === 'Pending' - ? { - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - } - : false - } - onFinish={async (values) => - Apis.Asset.AssetItemReturns.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '状态', - key: 'ad_confirm_status', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - { - title: '归还部门', - dataIndex: 'organization', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '归还时间', - dataIndex: 'return_date', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '归还人', - dataIndex: 'applicant', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '确认人', - dataIndex: 'confirm_employee', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '归还说明', - dataIndex: 'reason', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '归还资产', - dataIndex: 'asset_item_return_items', - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - valueType: 'dependency', - name: ['ad_confirm_status'], - colProps: { span: 24 }, - columns: ({ ad_confirm_status }) => { - if (ad_confirm_status === 'Pending') { - return [ - MyFormItems.EnumRadio({ - key: 'confirm_status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse( - JSON.stringify(ApprovalRecordsStatusEnum), - ); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['confirm_status'], - columns: ({ confirm_status }) => { - return confirm_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]; - } else { - return []; - } - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_transfers/index.tsx b/src/pages/asset/asset_items_transfers/index.tsx deleted file mode 100644 index 704e2cb..0000000 --- a/src/pages/asset/asset_items_transfers/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { AssetItemTransferConfirmStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Review from './modals/Review'; - -export default function Index({ title = '调拨审核' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemTransfers.List, - ) - } - headerTitle={title} - toolBarRender={() => [ - { - navigate('/asset/asset_items/pages/transfres_update'); - }} - />, - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'confirm_status', - valueEnum: AssetItemTransferConfirmStatusEnum, - }), - { - title: '调拨批次号', - dataIndex: 'batch_no', - }, - { - title: '资产名称', - dataIndex: 'name', - hidden: true, - }, - { - title: '资产编码', - dataIndex: 'code', - hidden: true, - }, - { - title: '原仓库', - dataIndex: ['from_warehouse', 'name'], - search: false, - }, - { - title: '目标仓库', - dataIndex: ['to_warehouse', 'name'], - search: false, - }, - { - title: '接收人', - dataIndex: ['receiver', 'name'], - search: false, - }, - { - title: '申请人', - dataIndex: ['applicant', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_transfers/modals/Review.tsx b/src/pages/asset/asset_items_transfers/modals/Review.tsx deleted file mode 100644 index d914351..0000000 --- a/src/pages/asset/asset_items_transfers/modals/Review.tsx +++ /dev/null @@ -1,249 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyProTableProps, - renderTextHelper, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalRecordsStatusEnum, - AssetItemTransferConfirmStatusEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="800px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Asset.AssetItemTransfers.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...props?.item, - asset_item_transfer_items: res?.data?.asset_item_transfer_items, - }); - }); - } - }} - submitter={ - props?.item?.ad_confirm_status === 'Pending' - ? { - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - } - : false - } - onFinish={async (values) => - Apis.Asset.AssetItemTransfers.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '状态', - key: 'ad_confirm_status', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - ); - }, - }, - { - title: '原仓库', - dataIndex: 'from_warehouse', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '目标仓库', - dataIndex: 'to_warehouse', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '申请人', - dataIndex: 'applicant', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '接收人', - dataIndex: 'receiver', - colProps: { span: 12 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value?.name || '-'} - - ); - }, - }, - { - title: '调拨原因', - dataIndex: 'reason', - colProps: { span: 24 }, - renderFormItem: (schema, config) => { - return ( - - {config?.value || '-'} - - ); - }, - }, - { - title: '调拨资产', - dataIndex: 'asset_item_transfer_items', - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - valueType: 'dependency', - name: ['ad_confirm_status'], - colProps: { span: 24 }, - columns: ({ ad_confirm_status }) => { - if (ad_confirm_status === 'Pending') { - return [ - MyFormItems.EnumRadio({ - key: 'confirm_status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse( - JSON.stringify(ApprovalRecordsStatusEnum), - ); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['confirm_status'], - columns: ({ confirm_status }) => { - return confirm_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]; - } else { - return []; - } - }, - }, - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_warehouses/index.tsx b/src/pages/asset/asset_items_warehouses/index.tsx deleted file mode 100644 index 828a702..0000000 --- a/src/pages/asset/asset_items_warehouses/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '资产仓库' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Asset.AssetItemWarehouses.List, - ) - } - headerTitle={title} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - { - title: '所属项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '地址', - search: false, - render: (_, item: any) => { - return `${item?.province || ''}${item?.city || ''}${ - item?.area || '' - }${item?.street || ''}${item?.address || ''}`; - }, - }, - { - title: '管理员', - render: (_, item: any) => { - return item?.asset_item_warehouse_managers - ?.map((res: any) => { - return res?.company_employee?.name || ''; - }) - .join(','); - }, - search: false, - }, - MyColumns.ToggleEnabled({ - onToggleEnabled: Apis.Asset.AssetItemWarehouses.ToggleEnabled, - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/asset/asset_items_warehouses/modals/Create.tsx b/src/pages/asset/asset_items_warehouses/modals/Create.tsx deleted file mode 100644 index 40f2d10..0000000 --- a/src/pages/asset/asset_items_warehouses/modals/Create.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="700px" - key={new Date().getTime()} - trigger={} - onFinish={async (values) => - Apis.Asset.AssetItemWarehouses.Store(values) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Address.Cascader({ - key: 'casacader', - title: '选择地址', - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - colProps: { span: 12 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - Selects?.Employees({ - title: '管理员', - key: 'manager_ids', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - }, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_items_warehouses/modals/Update.tsx b/src/pages/asset/asset_items_warehouses/modals/Update.tsx deleted file mode 100644 index 2361d19..0000000 --- a/src/pages/asset/asset_items_warehouses/modals/Update.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Selects } from '@/components/Select'; -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="700px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props?.item, - manager_ids: props?.item?.asset_item_warehouse_managers?.map( - (i: { company_employees_id?: number }) => i.company_employees_id, - ), - casacader: [ - props?.item?.province || '', - props?.item?.city || '', - props?.item?.area || '', - props?.item?.street || '', - ], - }); - } - }} - onFinish={async (values) => - Apis.Asset.AssetItemWarehouses.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - }), - Address.Cascader({ - key: 'casacader', - title: '选择地址', - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - colProps: { span: 12 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - Selects?.Employees({ - title: '管理员', - key: 'manager_ids', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - labelRender: (res: any) => { - console.log(res, '222'); - if (res?.label) { - return res?.label; - } else { - return ( - props?.item?.asset_item_warehouse_managers?.find( - (i: { company_employees_id?: number }) => - i.company_employees_id === res?.value, - )?.company_employee?.name || '' - ); - } - }, - }, - }), - ]} - /> - ); -} diff --git a/src/pages/asset/asset_list/index.tsx b/src/pages/asset/asset_list/index.tsx index 661265a..9dc6c3a 100644 --- a/src/pages/asset/asset_list/index.tsx +++ b/src/pages/asset/asset_list/index.tsx @@ -1,7 +1,6 @@ import { MyButtons, MyColumns, - MyImportModal, MyPageContainer, MyProTableProps, useCurrentPermissions, @@ -14,11 +13,9 @@ import { AssetProjectsStatusEnum, } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; -import { Dropdown, Space } from 'antd'; +import { Space } from 'antd'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import AssetCreate from './modals/AssetCreate'; -import AssetExit from './modals/AssetExit'; import AssetInfo from './modals/AssetInfo'; import AssetUpdate from './modals/AssetUpdate'; import HasProjects from './modals/HasProjects'; @@ -31,17 +28,6 @@ export default function Index({ title = '项目信息' }) { let toolBarRender = (action: any) => { return getCurrentPermissions({ - import: ( - - ), export: ( ), - add: , + // add: , }); }; let tableRender = (item: any, action: any) => { @@ -57,7 +43,7 @@ export default function Index({ title = '项目信息' }) { let permissions = getCurrentPermissions({ config: ( { navigate(`/asset/asset_list/show/${item.id}`); @@ -72,52 +58,16 @@ export default function Index({ title = '项目信息' }) { title="组织" /> ), + update: ( + + ), }); - - let permissionsSpace = getCurrentPermissions({ - update: { - key: '1', - label: ( - - ), - }, - exit: { - key: '2', - label: ( - - ), - }, - delete: { - key: '3', - label: ( - - Apis.Asset.AssetProjects.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - }); - - let Others = ( - - - - ); - return [...permissions, ...[Others]]; + return [...permissions]; }; return ( [toolBarRender(action)]} columns={[ - MyColumns.ID(), + // MyColumns.ID(), // 组织树选择器 Selects?.OrganizationSearch({ title: '所属组织', @@ -168,9 +118,9 @@ export default function Index({ title = '项目信息' }) { title: '项目名称', dataIndex: 'name', search: false, - render: (_, item: any) => ( - - ), + // render: (_, item: any) => ( + // + // ), }, { title: '所在城市', @@ -196,6 +146,7 @@ export default function Index({ title = '项目信息' }) { title: '项目状态', dataIndex: 'status', valueEnum: AssetProjectsStatusEnum, + search: false, }), { title: '接管日期', @@ -249,12 +200,7 @@ export default function Index({ title = '项目信息' }) { console.log(item, 'item2'); return ( - {/* */} + <>{tableRender(item, action)} ); diff --git a/src/pages/asset/asset_list/modals/AssetInfo.tsx b/src/pages/asset/asset_list/modals/AssetInfo.tsx index e4ea359..0912af0 100644 --- a/src/pages/asset/asset_list/modals/AssetInfo.tsx +++ b/src/pages/asset/asset_list/modals/AssetInfo.tsx @@ -10,29 +10,29 @@ import { } from '@/gen/Enums'; import { ProCard, ProDescriptions } from '@ant-design/pro-components'; import { Space, Spin } from 'antd'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; export default function AssetInfo(props: MyBetaModalFormProps) { const [loading, setLoading] = useState(true); const [data, setData] = useState({}); - useEffect(() => { - if (props?.item?.id) { - setLoading(true); - Apis.Asset.AssetProjects.Show({ id: props.item.id }) - .then((res) => { - setData(res?.data || {}); - }) - .finally(() => { - setLoading(false); - }); - } - }, [props?.item?.id]); return ( { + if (props?.item?.id) { + setLoading(true); + Apis.Asset.AssetProjects.Show({ id: props.item.id }) + .then((res) => { + setData(res?.data || {}); + }) + .finally(() => { + setLoading(false); + }); + } + }} node={ @@ -96,9 +96,9 @@ export default function AssetInfo(props: MyBetaModalFormProps) { {data?.closure_date} - + {/* {data?.exit_date} - + */} {data?.plot_ratio} diff --git a/src/pages/asset/asset_list/modals/AssetUpdate.tsx b/src/pages/asset/asset_list/modals/AssetUpdate.tsx index 6a7c780..6776e14 100644 --- a/src/pages/asset/asset_list/modals/AssetUpdate.tsx +++ b/src/pages/asset/asset_list/modals/AssetUpdate.tsx @@ -42,9 +42,6 @@ export default function Update(props: MyBetaModalFormProps) { props.item?.area_id || '', props.item?.street_id || '', ], - location: `${props.item?.longitude || ''},${ - props.item?.latitude || '' - }`, }); } }} diff --git a/src/pages/asset/asset_list/modals/HasProjects.tsx b/src/pages/asset/asset_list/modals/HasProjects.tsx index 382784b..a92978e 100644 --- a/src/pages/asset/asset_list/modals/HasProjects.tsx +++ b/src/pages/asset/asset_list/modals/HasProjects.tsx @@ -13,7 +13,7 @@ export default function OrganizationHasProjects(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + {...MyModalFormProps.props} title={`${props.title}`} wrapperCol={{ span: 24 }} @@ -30,7 +30,7 @@ export default function OrganizationHasProjects(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.Company.OrganizationHasProjects.Store({ + Apis.Company.OrganizationProjects.Store({ ...values, asset_projects_id: props.item?.id, organizations_id: diff --git a/src/pages/asset/asset_list/modals/ManagersCreate.tsx b/src/pages/asset/asset_list/modals/ManagersCreate.tsx index 2e85e7a..8444401 100644 --- a/src/pages/asset/asset_list/modals/ManagersCreate.tsx +++ b/src/pages/asset/asset_list/modals/ManagersCreate.tsx @@ -15,7 +15,7 @@ export default function Create(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + - Apis.Asset.AssetProjectAdmins.Store({ - ...values, - asset_projects_id: props?.item?.id, - }) + onFinish={async (values: any) => { + const { type, ...restValues } = values; + const promises = (type || []).map((t: any) => + Apis.Asset.AssetProjectAdmins.Store({ + ...restValues, + type: t, + asset_projects_id: props?.item?.id, + }), + ); + + return Promise.all(promises) .then(() => { props.reload?.(); message.success(props.title + '成功'); return true; }) - .catch(() => false) - } + .catch(() => false); + }} columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '类型', - colProps: { span: 24 }, - valueEnum: HouseWorkOrdersTypeEnum, - formItemProps: { ...rulesHelper.text }, - }), Selects?.Employees({ title: '选择员工', dataIndex: 'company_employees_id', @@ -58,6 +57,28 @@ export default function Create(props: MyBetaModalFormProps) { }, required: true, }), + MyFormItems.EnumCheckbox({ + key: 'type', + title: '工单类型', + colProps: { span: 24 }, + valueEnum: HouseWorkOrdersTypeEnum, + formItemProps: { ...rulesHelper.array }, + fieldProps: { + // 每行显示3个选项 + options: Object.entries(HouseWorkOrdersTypeEnum).map( + ([key, value]) => ({ + label: value.text, + value: value.value, + }), + ), + optionType: 'default', + style: { + display: 'grid', + gridTemplateColumns: 'repeat(3, 1fr)', + gap: '8px', + }, + }, + }), ]} /> ); diff --git a/src/pages/asset/asset_list/show/$id.tsx b/src/pages/asset/asset_list/show/$id.tsx index 028099a..939174f 100644 --- a/src/pages/asset/asset_list/show/$id.tsx +++ b/src/pages/asset/asset_list/show/$id.tsx @@ -56,7 +56,7 @@ export default function Show({ title }: { title?: string } = {}) { children: , }, { - label: '楼栋划分', + label: '楼栋管家', key: 'grid', closable: false, children: , diff --git a/src/pages/asset/asset_list/table/Announcement.tsx b/src/pages/asset/asset_list/table/Announcement.tsx index 3eabd36..46dd076 100644 --- a/src/pages/asset/asset_list/table/Announcement.tsx +++ b/src/pages/asset/asset_list/table/Announcement.tsx @@ -90,12 +90,12 @@ export default function Index({ ...rest }) { search: false, render: (text) => (text ? '是' : '否'), }, - MyColumns.SoftDelete({ - title: '启/禁用', - onRestore: Apis.Msg.MsgPropertyAnnouncements.Restore, - onSoftDelete: Apis.Msg.MsgPropertyAnnouncements.SoftDelete, - search: false, - }), + // MyColumns.SoftDelete({ + // title: '启/禁用', + // onRestore: Apis.Msg.MsgPropertyAnnouncements.Restore, + // onSoftDelete: Apis.Msg.MsgPropertyAnnouncements.SoftDelete, + // search: false, + // }), MyColumns.UpdatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( diff --git a/src/pages/asset/asset_list/table/AssetBuildings.tsx b/src/pages/asset/asset_list/table/AssetBuildings.tsx index 283f3fa..da43b59 100644 --- a/src/pages/asset/asset_list/table/AssetBuildings.tsx +++ b/src/pages/asset/asset_list/table/AssetBuildings.tsx @@ -2,7 +2,6 @@ import { MyBetaModalFormProps, MyButtons, MyColumns, - MyImportModal, MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; @@ -13,12 +12,12 @@ import { import { ProTable } from '@ant-design/pro-components'; import { Alert, message, Space, Typography } from 'antd'; import { useCallback, useRef, useState } from 'react'; -import BuildingsCreate from '../../dictionary/modals/BuildingsCreate'; -import AssetBuildingsUpdate from '../../dictionary/modals/BuildingsUpdate'; -import HousesCreate from '../../dictionary/modals/HousesCreate'; -import HousesUpdate from '../../dictionary/modals/HousesUpdate'; -import AssetUnitsCreate from '../../dictionary/modals/UnitsCreate'; -import AssetUnitsUpdate from '../../dictionary/modals/UnitsUpdate'; +import BuildingsCreate from './modals/BuildingsCreate'; +import BuildingsUpdate from './modals/BuildingsUpdate'; +import HousesCreate from './modals/HousesCreate'; +import HousesUpdate from './modals/HousesUpdate'; +import UnitsCreate from './modals/UnitsCreate'; +import UnitsUpdate from './modals/UnitsUpdate'; const { Title } = Typography; @@ -72,7 +71,7 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { return ( 楼栋 - + /> */} ( - + @@ -173,7 +172,7 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { > {selectedBuilding.name} {selectedBuilding && ( - ( - - + {/* handleDelete( @@ -243,7 +242,7 @@ export default function AssetBuildings(props: MyBetaModalFormProps) { '单元', ) } - /> + /> */} ), }), diff --git a/src/pages/asset/asset_list/table/AssetGrid.tsx b/src/pages/asset/asset_list/table/AssetGrid.tsx index 4f63fa6..3fcd87b 100644 --- a/src/pages/asset/asset_list/table/AssetGrid.tsx +++ b/src/pages/asset/asset_list/table/AssetGrid.tsx @@ -25,13 +25,13 @@ export default function Index({ ...rest }) { Apis.Grid.Grids.List, ) } - headerTitle="楼栋划分" + headerTitle="楼栋管家" toolBarRender={(action) => [ , ]} search={false} @@ -49,7 +49,7 @@ export default function Index({ ...rest }) { dataIndex: 'grid_mark', }, { - title: '管理员', + title: '楼栋管家', dataIndex: ['company_employee', 'name'], render: (_, item: any) => `${item?.company_employee?.name || ''}-${ diff --git a/src/pages/asset/asset_list/table/AssetInfo.tsx b/src/pages/asset/asset_list/table/AssetInfo.tsx index e96cb2b..4680ab7 100644 --- a/src/pages/asset/asset_list/table/AssetInfo.tsx +++ b/src/pages/asset/asset_list/table/AssetInfo.tsx @@ -10,6 +10,7 @@ import { import { ProCard, ProDescriptions } from '@ant-design/pro-components'; import { Space, Spin } from 'antd'; import { useEffect, useState } from 'react'; +import HasProjects from '../modals/HasProjects'; export default function AssetInfo(props: MyBetaModalFormProps) { const [loading, setLoading] = useState(true); @@ -161,8 +162,16 @@ export default function AssetInfo(props: MyBetaModalFormProps) { {data?.updated_at} - - {data?.organization?.name || '-'} + + + {data?.organization?.name || '-'} + + diff --git a/src/pages/asset/asset_list/table/ChargeStandard.tsx b/src/pages/asset/asset_list/table/ChargeStandard.tsx index 166a84e..5c06297 100644 --- a/src/pages/asset/asset_list/table/ChargeStandard.tsx +++ b/src/pages/asset/asset_list/table/ChargeStandard.tsx @@ -43,7 +43,7 @@ export default function ReceiptAccounts(props: MyBetaModalFormProps) { asset_projects_id: props?.item?.id, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } // toolBarRender={(action) => [ @@ -140,7 +140,7 @@ export default function ReceiptAccounts(props: MyBetaModalFormProps) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/asset/asset_list/table/Managers.tsx b/src/pages/asset/asset_list/table/Managers.tsx index cf92821..0006ca6 100644 --- a/src/pages/asset/asset_list/table/Managers.tsx +++ b/src/pages/asset/asset_list/table/Managers.tsx @@ -24,7 +24,7 @@ export default function Index({ ...rest }) { Apis.Asset.AssetProjectAdmins.List, ) } - headerTitle="项目工单管理员(配置后,拥有员工端工单的指派权限)" + headerTitle="工单管理员(配置后,对应人员可在员工端分配工单)" toolBarRender={(action) => [ ( - null, - ); - const [selectedBuilding, setSelectedBuilding] = - useState(null); - const [selectedUnit, setSelectedUnit] = useState(null); - - // 选择项目的回调函数 - const handleAssetSelect = useCallback( - (asset: SelectedAsset) => { - if (selectedAsset?.id === asset.id) return; // 避免重复选择 - - setSelectedAsset(asset); - setSelectedBuilding(null); // 重置楼栋选择 - setSelectedUnit(null); // 重置单元选择 - - // 刷新楼栋和单元列表 - actionBuildingsRef?.current?.reload(); - actionUnitsRef?.current?.reload(); - actionHousesRef?.current?.reload(); - }, - [selectedAsset?.id], - ); - - // 选择楼栋的回调函数 - const handleBuildingSelect = useCallback( - (building: SelectedBuilding) => { - if (selectedBuilding?.id === building.id) return; // 避免重复选择 - - setSelectedBuilding(building); - setSelectedUnit(null); // 重置单元选择 - - // 刷新单元和房屋列表 - actionUnitsRef?.current?.reload(); - actionHousesRef?.current?.reload(); - }, - [selectedBuilding?.id], - ); - - // 选择单元的回调函数 - const handleUnitSelect = useCallback( - (unit: SelectedUnit) => { - if (selectedUnit?.id === unit.id) return; // 避免重复选择 - - setSelectedUnit(unit); - // 刷新房屋列表 - actionHousesRef?.current?.reload(); - }, - [selectedUnit?.id], - ); - - // 删除操作的通用处理 - const handleDelete = useCallback( - async (deleteApi: any, id: number, reloadAction: any, itemName: string) => { - try { - await deleteApi({ id }); - message.success(`${itemName}删除成功`); - reloadAction(); - - // 如果删除的是当前选中项,清空选择 - if (itemName === '项目' && selectedAsset?.id === id) { - setSelectedAsset(null); - setSelectedBuilding(null); - setSelectedUnit(null); - } else if (itemName === '楼栋' && selectedBuilding?.id === id) { - setSelectedBuilding(null); - setSelectedUnit(null); - } else if (itemName === '单元' && selectedUnit?.id === id) { - setSelectedUnit(null); - } - } catch (error) { - message.error(`${itemName}删除失败`); - console.error(`删除${itemName}失败:`, error); - } - }, - [selectedAsset?.id, selectedBuilding?.id, selectedUnit?.id], - ); - - // 通用表格配置 - const getTableConfig = useMemo( - () => ({ - ...MyProTableProps.props, - search: false as const, - size: 'middle' as const, - options: false as const, - pagination: { - pageSize: 10, - showSizeChanger: false, - }, - }), - [], - ); - - // 项目表格列配置 - const projectColumns = useMemo( - () => [ - { - title: '项目', - dataIndex: 'name', - ellipsis: true, - width: 160, - search: { - transform: (value: string) => ({ name: value }), - }, - }, - MyColumns.Option({ - width: 80, - render: (_, item: any, index) => ( - - { - navigate(`/asset/asset_list/show/${item.id}`); - }} - /> - - ), - }), - ], - [handleDelete], - ); - - // 楼栋表格列配置 - const buildingColumns = useMemo( - () => [ - { - title: '楼栋', - dataIndex: 'name', - ellipsis: true, - width: 160, - }, - MyColumns.Option({ - width: 80, - render: (_, item: any, index, action) => ( - - - - ), - }), - ], - [handleDelete], - ); - - // 单元表格列配置 - const unitColumns = useMemo( - () => [ - { - title: '单元', - dataIndex: 'name', - ellipsis: true, - width: 160, - }, - MyColumns.Option({ - width: 80, - render: (_, item: any, index, action) => ( - - - - ), - }), - ], - [handleDelete], - ); - - // 房屋表格列配置 - const houseColumns = useMemo( - () => [ - MyColumns.EnumTag({ - title: '用途', - dataIndex: 'usage', - valueEnum: AssetHousesUsageEnum, - }), - { - title: '房屋名称', - dataIndex: 'full_name', - }, - { - title: '楼层', - dataIndex: 'floor', - render(_, record) { - return `${record?.floor}层`; - }, - }, - { - title: '房号', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '房屋属性', - dataIndex: 'ownership_type', - valueEnum: AssetHousesOwnershipTypeEnum, - }), - MyColumns.Option({ - width: 120, - render: (_, item: any, index, action) => ( - - - - ), - }), - ], - [handleDelete], - ); - - return ( - - - - - - - 项目信息 - - { - return selectedAsset?.id === record?.id - ? 'ant-table-row-selected' - : ''; - }} - onRow={(record: any) => { - return { - onClick: () => { - handleAssetSelect(record); - }, - style: { - cursor: 'pointer', - }, - }; - }} - request={async (params, sort) => - MyProTableProps.request( - { ...params }, - sort, - Apis.Asset.AssetProjects.List, - ) - } - columns={projectColumns} - /> - - {/* 楼栋列表 */} - {selectedAsset ? ( - - - <Space - style={{ display: 'flex', justifyContent: 'space-between' }} - > - <span>{selectedAsset?.name}</span> - <MyImportModal - key="ImportHouse" - params={{ asset_projects_id: selectedAsset?.id }} - title="导入" - type="primary" - size="small" - templateApi={Apis.Asset.AssetHouses.DownloadTemplate} - importApi={Apis.Asset.AssetHouses.Import} - reload={() => actionBuildingsRef?.current?.reload()} - /> - <BuildingsCreate - key="BuildingsCreate" - item={{ ...selectedAsset, size: 'small' }} - reload={() => actionBuildingsRef?.current?.reload()} - title="楼栋" - /> - </Space> - - { - return selectedBuilding?.id === record?.id - ? 'ant-table-row-selected' - : ''; - }} - onRow={(record: any) => { - return { - onClick: () => { - handleBuildingSelect(record); - }, - style: { - cursor: 'pointer', - }, - }; - }} - request={async (params, sort) => - MyProTableProps.request( - { ...params, asset_projects_id: selectedAsset?.id }, - sort, - Apis.Asset.AssetBuildings.List, - ) - } - columns={buildingColumns} - /> - - ) : ( - - - - )} - {/* 单元列表 */} - {selectedBuilding ? ( - - - <Space - style={{ display: 'flex', justifyContent: 'space-between' }} - > - <span>{selectedBuilding.name}</span> - <UnitsCreate - key="UnitsCreate" - item={{ - ...selectedBuilding, - asset_buildings_id: selectedBuilding?.id, - size: 'small', - }} - reload={() => actionUnitsRef?.current?.reload()} - title="单元" - /> - </Space> - - - MyProTableProps.request( - { - ...params, - asset_projects_id: selectedAsset?.id, - asset_buildings_id: selectedBuilding?.id, - }, - sort, - Apis.Asset.AssetUnits.List, - ) - } - rowClassName={(record: any) => { - return selectedUnit?.id === record?.id - ? 'ant-table-row-selected' - : ''; - }} - onRow={(record: any) => { - return { - onClick: () => { - handleUnitSelect(record); - }, - style: { - cursor: 'pointer', - }, - }; - }} - columns={unitColumns} - /> - - ) : ( - - - - )} - - {/* 房屋列表 */} - {selectedUnit ? ( - - - <Space - style={{ display: 'flex', justifyContent: 'space-between' }} - > - <span>{selectedUnit.name}</span> - <HousesCreate - key="HousesCreate" - item={{ - ...selectedUnit, - asset_projects_id: selectedAsset?.id, - asset_buildings_id: selectedBuilding?.id, - asset_units_id: selectedUnit?.id, - size: 'small', - }} - reload={() => actionHousesRef?.current?.reload()} - title="房屋" - /> - </Space> - - - MyProTableProps.request( - { - ...params, - asset_projects_id: selectedAsset?.id, - asset_buildings_id: selectedBuilding?.id, - asset_units_id: selectedUnit?.id, - }, - sort, - Apis.Asset.AssetHouses.List, - ) - } - columns={houseColumns} - /> - - ) : ( - - - - )} - - - - ); -} diff --git a/src/pages/asset/grids/index.tsx b/src/pages/asset/grids/index.tsx index d18138c..6e8d2e2 100644 --- a/src/pages/asset/grids/index.tsx +++ b/src/pages/asset/grids/index.tsx @@ -11,7 +11,7 @@ import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import GridCreate from './modals/GridCreate'; import GridMannger from './modals/GridMannger'; -import GridShow from './modals/GridShow'; + import GridUpdate from './modals/GridUpdate'; export default function Index({ title = '楼栋管家' }) { @@ -86,7 +86,6 @@ export default function Index({ title = '楼栋管家' }) { MyColumns.Option({ render: (_, item: any, index, action) => ( - <>{tableRender(item, action)} ), diff --git a/src/pages/asset/grids/modals/GridShow.tsx b/src/pages/asset/grids/modals/GridShow.tsx deleted file mode 100644 index 6912151..0000000 --- a/src/pages/asset/grids/modals/GridShow.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { MyBetaModalFormProps } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import { useState } from 'react'; - -export default function Info(props: MyBetaModalFormProps) { - const [getShow, setDataShow] = useState({}); - - return ( - { - if (e) { - return Apis.Grid.Grids.Show({ - id: props?.item?.id, - }) - .then((res) => { - console.log(res); - setDataShow(JSON.parse(JSON.stringify(res?.data))); - return false; - }) - .catch(() => false); - } - console.log(e); - }} - node={ - <> - - - - {getShow?.name} - - - - {getShow?.grid_ranges - ?.map( - (item: any) => - item?.asset_building?.name + item?.asset_unit?.name, - ) - .join(';')} - - - - {getShow?.created_at} - - - {getShow?.updated_at} - - - - - } - /> - ); -} diff --git a/src/pages/asset/grids/modals/GridUpdate.tsx b/src/pages/asset/grids/modals/GridUpdate.tsx index 94f6c6f..a1757e2 100644 --- a/src/pages/asset/grids/modals/GridUpdate.tsx +++ b/src/pages/asset/grids/modals/GridUpdate.tsx @@ -21,7 +21,7 @@ export default function Update(props: MyBetaModalFormProps) { labelCol={{ span: 4 }} wrapperCol={{ span: 24 }} labelAlign="right" - trigger={} + trigger={} form={form} key={new Date().getTime()} onOpenChange={(open: any) => { diff --git a/src/pages/asset/houses/index.tsx b/src/pages/asset/houses/index.tsx index dc36b4a..a926d1d 100644 --- a/src/pages/asset/houses/index.tsx +++ b/src/pages/asset/houses/index.tsx @@ -15,8 +15,8 @@ import { import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import { useState } from 'react'; -import HousesShow from '../dictionary/modals/HousesShow'; -import HousesUpdate from '../dictionary/modals/HousesUpdate'; +import HousesShow from './modals/HousesShow'; +import HousesUpdate from './modals/HousesUpdate'; export default function Index({ title = '房屋列表' }) { const [getParams, setParams] = useState({}); diff --git a/src/pages/contract/contract_bills/modals/Create.tsx b/src/pages/asset/houses/modals/BuildingsCreate.tsx similarity index 72% rename from src/pages/contract/contract_bills/modals/Create.tsx rename to src/pages/asset/houses/modals/BuildingsCreate.tsx index f4316cb..2329f0d 100644 --- a/src/pages/contract/contract_bills/modals/Create.tsx +++ b/src/pages/asset/houses/modals/BuildingsCreate.tsx @@ -10,24 +10,30 @@ import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { const [form] = Form.useForm(); + return ( - + {...MyModalFormProps.props} - title={`添加${props.title}`} + form={form} + title={`${props.title}`} wrapperCol={{ span: 24 }} width="500px" - key={new Date().getTime()} - form={form} + trigger={ + + } onOpenChange={(open: any) => { if (open) { form.resetFields(); // 清空表单数据 } }} - trigger={} + key={new Date().getTime()} onFinish={async (values) => - Apis.Contract.ContractTypes.Store({ + Apis.Asset.AssetBuildings.Store({ ...values, - is_enabled: values.is_enabled ? 1 : 0, + asset_projects_id: props?.item?.id, }) .then(() => { props.reload?.(); @@ -39,14 +45,13 @@ export default function Create(props: MyBetaModalFormProps) { columns={[ { key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, + title: '楼栋名称', colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, }, { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', + key: 'alias_name', + title: '楼栋别名', colProps: { span: 24 }, }, ]} diff --git a/src/pages/contract/contract_bills/modals/Update.tsx b/src/pages/asset/houses/modals/BuildingsUpdate.tsx similarity index 64% rename from src/pages/contract/contract_bills/modals/Update.tsx rename to src/pages/asset/houses/modals/BuildingsUpdate.tsx index 2b065bb..0039a1e 100644 --- a/src/pages/contract/contract_bills/modals/Update.tsx +++ b/src/pages/asset/houses/modals/BuildingsUpdate.tsx @@ -10,29 +10,30 @@ import { Form, message } from 'antd'; export default function Update(props: MyBetaModalFormProps) { const [form] = Form.useForm(); + return ( - + {...MyModalFormProps.props} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" form={form} + title={`编辑`} + wrapperCol={{ span: 24 }} + width="500px" + trigger={} + key={new Date().getTime()} onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); + if (open) { + form.setFieldsValue(props?.item); // 编辑赋值 } }} onFinish={async (values) => - Apis.Contract.ContractTypes.Update({ + Apis.Asset.AssetBuildings.Update({ ...values, - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, + asset_projects_id: props?.item?.asset_projects_id, + id: props?.item?.id, }) .then(() => { props.reload?.(); - message.success(props.title + '编辑成功'); + message.success('楼栋编辑成功'); return true; }) .catch(() => false) @@ -40,14 +41,13 @@ export default function Update(props: MyBetaModalFormProps) { columns={[ { key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, + title: '楼栋名称', colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, }, { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', + key: 'alias_name', + title: '楼栋别名', colProps: { span: 24 }, }, ]} diff --git a/src/pages/asset/houses/modals/HousesCreate.tsx b/src/pages/asset/houses/modals/HousesCreate.tsx new file mode 100644 index 0000000..569ca56 --- /dev/null +++ b/src/pages/asset/houses/modals/HousesCreate.tsx @@ -0,0 +1,206 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOrientationEnum, + AssetHousesOwnershipTypeEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + console.log(props?.item, 'item'); + return ( + + {...MyModalFormProps.props} + title={`添加${props.title}`} + wrapperCol={{ span: 24 }} + width="800px" + trigger={ + + } + form={form} + key={new Date().getTime()} + 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?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + 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: 'ownership_type', + title: '房屋属性', + colProps: { span: 24 }, + valueEnum: AssetHousesOwnershipTypeEnum, + // required: true, + }), + MyFormItems.EnumRadio({ + key: 'usage', + title: '用途', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(AssetHousesUsageEnum)); + delete obj.ParkingSpace; + return obj; + }, + required: true, + }), + + { + key: 'built_area', + title: '建筑面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'inside_area', + title: '套内面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'chargeable_area', + title: '计费面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + valueType: 'group', + columns: [ + { + key: 'room', + title: '房', + valueType: 'digit', + fieldProps: { + addonAfter: '房', + }, + colProps: { span: 5 }, + }, + { + key: 'hall', + title: '厅', + valueType: 'digit', + fieldProps: { + addonAfter: '厅', + }, + colProps: { span: 5 }, + }, + { + key: 'bathroom', + title: '卫', + valueType: 'digit', + fieldProps: { + addonAfter: '卫', + }, + colProps: { span: 5 }, + }, + { + key: 'kitchen', + title: '厨', + valueType: 'digit', + fieldProps: { + addonAfter: '厨', + }, + colProps: { span: 4 }, + }, + { + key: 'balcony', + title: '阳台', + valueType: 'digit', + fieldProps: { + addonAfter: '阳台', + }, + colProps: { span: 5 }, + }, + ], + }, + MyFormItems.EnumRadio({ + key: 'orientation', + title: '房屋朝向', + colProps: { span: 24 }, + valueEnum: AssetHousesOrientationEnum, + // required: true, + }), + // 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: 'ownership_term', + // title: '产权年限', + // fieldProps: { + // addonAfter: '年', + // }, + // colProps: { span: 6 }, + // }, + ]} + /> + ); +} diff --git a/src/pages/asset/houses/modals/HousesShow.tsx b/src/pages/asset/houses/modals/HousesShow.tsx new file mode 100644 index 0000000..5ded783 --- /dev/null +++ b/src/pages/asset/houses/modals/HousesShow.tsx @@ -0,0 +1,109 @@ +import { MyBetaModalFormProps, renderTextHelper } from '@/common'; +import { MyModal } from '@/components/MyModal'; +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOrientationEnum, + AssetHousesOwnershipTypeEnum, + AssetHousesStatusEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { ProCard, ProDescriptions } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import { useCallback, useState } from 'react'; + +export default function info(props: MyBetaModalFormProps) { + const [show, setShow] = useState({}); + const [loading, setLoading] = useState(false); + + const getShow = useCallback(() => { + if (loading || !props?.item?.id) return; + + setLoading(true); + Apis.Asset.AssetHouses.Show({ + id: props?.item?.id, + }) + .then((res) => { + setShow(res?.data); + }) + .catch(() => { + return false; + }) + .finally(() => { + setLoading(false); + }); + }, [props?.item?.id, loading]); + + // 只在弹窗打开时获取数据 + const handleOpen = useCallback(() => { + if (!loading) { + getShow(); + } + }, [getShow, loading]); + + return ( + + + + + 【{show?.id}】 + {show?.full_name} + + + + {show?.name} + + + {show?.floor} + + + + + + + + + {show?.built_area}m² + + + {show?.inside_area}m² + + + {show?.chargeable_area}m² + + + + + + {show?.room || ''}房{show?.hall || ''}厅{show?.bathroom || ''}卫 + {show?.kitchen || ''}厨{show?.balcony || ''}阳台 + + + + + + + } + /> + ); +} diff --git a/src/pages/asset/houses/modals/HousesUpdate.tsx b/src/pages/asset/houses/modals/HousesUpdate.tsx new file mode 100644 index 0000000..aa85b9c --- /dev/null +++ b/src/pages/asset/houses/modals/HousesUpdate.tsx @@ -0,0 +1,237 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOrientationEnum, + AssetHousesOwnershipTypeEnum, + 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(); + return ( + + {...MyModalFormProps.props} + title={props.title} + wrapperCol={{ span: 24 }} + width="800px" + trigger={ + + } + form={form} + key={new Date().getTime()} + 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: [ + Selects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params: { + asset_projects_id: props?.item?.asset_projects_id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + fieldProps: { + showSearch: true, + onChange: () => { + form.setFieldsValue({ + asset_units_id: undefined, + asset_floors_id: undefined, + }); + }, + }, + }), + Selects?.AssetUnits({ + key: 'asset_units_id', + title: '选择单元', + params: { + asset_projects_id: props?.item?.asset_projects_id, + asset_buildings_id: asset_buildings_id, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }), + { + key: 'name', + title: '房号', + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.text }, + }, + ], + }, + ]; + }, + }, + MyFormItems.EnumRadio({ + key: 'ownership_type', + title: '房屋属性', + colProps: { span: 24 }, + valueEnum: AssetHousesOwnershipTypeEnum, + // required: true, + }), + MyFormItems.EnumRadio({ + key: 'usage', + title: '用途', + colProps: { span: 24 }, + // valueEnum: AssetHousesUsageEnum, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(AssetHousesUsageEnum)); + delete obj.ParkingSpace; + return obj; + }, + required: true, + }), + { + key: 'floor', + title: '楼层', + valueType: 'digit', + fieldProps: { + addonAfter: '楼', + max: 99, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'built_area', + title: '建筑面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'inside_area', + title: '套内面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'chargeable_area', + title: '计费面积', + valueType: 'digit', + fieldProps: { + addonAfter: '㎡', + max: 99999, + }, + colProps: { span: 6 }, + formItemProps: { ...rulesHelper.number }, + }, + { + valueType: 'group', + columns: [ + { + key: 'room', + title: '房', + valueType: 'digit', + fieldProps: { + addonAfter: '房', + }, + colProps: { span: 5 }, + }, + { + key: 'hall', + title: '厅', + valueType: 'digit', + fieldProps: { + addonAfter: '厅', + }, + colProps: { span: 5 }, + }, + { + key: 'bathroom', + title: '卫', + valueType: 'digit', + fieldProps: { + addonAfter: '卫', + }, + colProps: { span: 5 }, + }, + { + key: 'kitchen', + title: '厨', + valueType: 'digit', + fieldProps: { + addonAfter: '厨', + }, + colProps: { span: 4 }, + }, + { + key: 'balcony', + title: '阳台', + valueType: 'digit', + fieldProps: { + addonAfter: '阳台', + }, + colProps: { span: 5 }, + }, + ], + }, + MyFormItems.EnumRadio({ + key: 'orientation', + title: '房屋朝向', + colProps: { span: 24 }, + valueEnum: AssetHousesOrientationEnum, + // required: true, + }), + // 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; + // }, + // }), + ]} + /> + ); +} diff --git a/src/pages/asset/houses/modals/UnitsCreate.tsx b/src/pages/asset/houses/modals/UnitsCreate.tsx new file mode 100644 index 0000000..ab35bd9 --- /dev/null +++ b/src/pages/asset/houses/modals/UnitsCreate.tsx @@ -0,0 +1,94 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +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 Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`添加${props.title}`} + wrapperCol={{ span: 24 }} + width="700px" + trigger={ + + } + form={form} + key={new Date().getTime()} + 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?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + 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/houses/modals/UnitsUpdate.tsx b/src/pages/asset/houses/modals/UnitsUpdate.tsx new file mode 100644 index 0000000..b8bfd6f --- /dev/null +++ b/src/pages/asset/houses/modals/UnitsUpdate.tsx @@ -0,0 +1,99 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } 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={} + key={new Date().getTime()} + 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={[ + Selects?.AssetBuildings({ + key: 'asset_buildings_id', + title: '选择楼栋', + params: { + asset_projects_id: props?.item?.asset_projects_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/project_configuration/table/AssetBuildings.tsx b/src/pages/asset/project_configuration/table/AssetBuildings.tsx index b227d1e..4bd623d 100644 --- a/src/pages/asset/project_configuration/table/AssetBuildings.tsx +++ b/src/pages/asset/project_configuration/table/AssetBuildings.tsx @@ -13,12 +13,12 @@ import { import { ProTable } from '@ant-design/pro-components'; import { Alert, message, Space, Typography } from 'antd'; import { useCallback, useEffect, useRef, useState } from 'react'; -import BuildingsCreate from '../../dictionary/modals/BuildingsCreate'; -import AssetBuildingsUpdate from '../../dictionary/modals/BuildingsUpdate'; -import HousesCreate from '../../dictionary/modals/HousesCreate'; -import HousesUpdate from '../../dictionary/modals/HousesUpdate'; -import AssetUnitsCreate from '../../dictionary/modals/UnitsCreate'; -import AssetUnitsUpdate from '../../dictionary/modals/UnitsUpdate'; +import BuildingsCreate from '../../houses/modals/BuildingsCreate'; +import AssetBuildingsUpdate from '../../houses/modals/BuildingsUpdate'; +import HousesCreate from '../../houses/modals/HousesCreate'; +import HousesUpdate from '../../houses/modals/HousesUpdate'; +import AssetUnitsCreate from '../../houses/modals/UnitsCreate'; +import AssetUnitsUpdate from '../../houses/modals/UnitsUpdate'; const { Title } = Typography; diff --git a/src/pages/asset/project_configuration/table/ChargeStandard.tsx b/src/pages/asset/project_configuration/table/ChargeStandard.tsx index e0e89d2..482cd2f 100644 --- a/src/pages/asset/project_configuration/table/ChargeStandard.tsx +++ b/src/pages/asset/project_configuration/table/ChargeStandard.tsx @@ -29,7 +29,7 @@ export default function ReceiptAccounts(props: MyBetaModalFormProps) { MyProTableProps.request( params, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } options={false} @@ -128,7 +128,7 @@ export default function ReceiptAccounts(props: MyBetaModalFormProps) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/attendance/attendance_configs/index.tsx b/src/pages/attendance/attendance_configs/index.tsx deleted file mode 100644 index 43d2b1d..0000000 --- a/src/pages/attendance/attendance_configs/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '打卡配置' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - add: , - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - update: , - }); - }; - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Attendance.AttendanceConfigs.List, - ) - } - headerTitle="打卡参数配置" - toolBarRender={(action) => [toolBarRender(action)]} - search={false} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '可打卡范围(米)', - dataIndex: 'check_in_range', - search: false, - }, - MyColumns.Boolean({ - dataIndex: 'require_photo', - title: '是否要求拍照打卡', - search: false, - }), - // MyColumns.Boolean({ - // dataIndex: 'allow_out_range_checkin', - // title: '是否允许范围外打卡', - // search: false, - // }), - MyColumns.IsEnabled({ - onRestore: Apis.Attendance.AttendanceConfigs.Enable, - onSoftDelete: Apis.Attendance.AttendanceConfigs.Enable, - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/attendance/attendance_configs/modals/Create.tsx b/src/pages/attendance/attendance_configs/modals/Create.tsx deleted file mode 100644 index 01b043c..0000000 --- a/src/pages/attendance/attendance_configs/modals/Create.tsx +++ /dev/null @@ -1,63 +0,0 @@ -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 Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Attendance.AttendanceConfigs.Store(values) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'check_in_range', - title: '可打卡范围', - valueType: 'digit', - fieldProps: { - suffix: '米内', - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.number }, - colProps: { span: 24 }, - }, - { - title: '是否要求拍照打卡', - key: 'require_photo', - valueType: 'switch', - colProps: { span: 12 }, - }, - // { - // title: '是否允许范围外打卡', - // key: 'allow_out_range_checkin', - // valueType: 'switch', - // colProps: { span: 12 }, - // }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_configs/modals/Update.tsx b/src/pages/attendance/attendance_configs/modals/Update.tsx deleted file mode 100644 index 2eaabd4..0000000 --- a/src/pages/attendance/attendance_configs/modals/Update.tsx +++ /dev/null @@ -1,66 +0,0 @@ -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} - title={`打卡配置`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Attendance.AttendanceConfigs.UpdateConfig({ - ...values, - id: props.item?.id ?? 1, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'check_in_range', - title: '可打卡范围', - valueType: 'digit', - fieldProps: { - suffix: '米内', - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.number }, - colProps: { span: 24 }, - }, - { - title: '是否要求拍照打卡', - key: 'require_photo', - valueType: 'switch', - colProps: { span: 12 }, - }, - // { - // title: '是否允许范围外打卡', - // key: 'allow_out_range_checkin', - // valueType: 'switch', - // colProps: { span: 12 }, - // }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_employees/index.tsx b/src/pages/attendance/attendance_employees/index.tsx deleted file mode 100644 index bdf9c5d..0000000 --- a/src/pages/attendance/attendance_employees/index.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { - MyButtons, - MyColumns, - MyImportModal, - MyPageContainer, - MyProTableProps, - renderTextHelper, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanyEmployeesTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Change from './modals/Change'; -import EmployeeCreate from './modals/EmployeeCreate'; -import EmployeeUpdate from './modals/EmployeeUpdate'; - -export default function Index({ title = '环卫人员' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - import: ( - - ), - add: , - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - update: ( - - ), - change: , - delete: ( - - Apis.Company.CompanyEmployees.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }); - }; - return ( - - - MyProTableProps.request( - { - type: 'External', - ...params, - }, - sort, - Apis.Company.CompanyEmployees.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '所在组织', - dataIndex: 'organization_path', - search: { - transform: (value) => { - return { organization_name: value }; - }, - }, - }, - { - title: '姓名', - dataIndex: 'name', - }, - { - title: '手机号', - dataIndex: 'phone', - }, - { - title: '角色', - dataIndex: 'roles', - renderText: renderTextHelper.TagList, - hideInSearch: true, - }, - { - title: '岗位', - dataIndex: ['position', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '来源', - dataIndex: 'type', - valueEnum: CompanyEmployeesTypeEnum, - search: false, - }), - MyColumns.SoftDelete({ - title: '启/禁用', - onRestore: Apis.Company.CompanyEmployees.Restore, - onSoftDelete: Apis.Company.CompanyEmployees.SoftDelete, - search: false, - setPermissions: getCurrentPermissions({ - enableDisable: true, - }), - }), - MyColumns.UpdatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/attendance/attendance_employees/modals/Change.tsx b/src/pages/attendance/attendance_employees/modals/Change.tsx deleted file mode 100644 index 00be34d..0000000 --- a/src/pages/attendance/attendance_employees/modals/Change.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; - -import { Selects } from '@/components/Select'; -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} - title={`组织调整`} - trigger={} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values: any) => - Apis.Company.CompanyEmployees.Update({ - ...values, - id: props.item?.id ?? 0, - name: props.item?.name ?? '', - phone: props.item?.phone ?? '', - type: props.item?.type, - organizations_id: - values?.organizations_id?.[values.organizations_id.length - 1], - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.OrganizationsTree({ - title: '选择组织', - key: 'organizations_id', - params: { companies_id: props?.item?.companies_id }, - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - }, - formItemProps: { ...rulesHelper.text }, - }), - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_employees/modals/EmployeeCreate.tsx b/src/pages/attendance/attendance_employees/modals/EmployeeCreate.tsx deleted file mode 100644 index db02a0b..0000000 --- a/src/pages/attendance/attendance_employees/modals/EmployeeCreate.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { SysSelects } from '@/components/SysSelects'; -import { Apis } from '@/gen/Apis'; -import { CompanyEmployeesTypeEnum, SexEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加外部人员`} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="500px" - trigger={} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values: any) => - Apis.Company.CompanyEmployees.Store({ - ...values, - companies_id: values?.companies_id || props?.item?.id, - type: CompanyEmployeesTypeEnum.External.value, - password: 'Gc#123', - organizations_id: - values?.organizations_id?.[values.organizations_id.length - 1], - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.OrganizationsTree({ - title: '选择组织', - key: 'organizations_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - - { - key: 'name', - title: '姓名', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'phone', - title: '手机号', - valueType: 'number', - fieldProps: { - maxLength: 11, - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumRadio({ - key: 'sex', - title: '性别', - colProps: { span: 24 }, - valueEnum: SexEnum, - required: true, - }), - Selects?.Positions({ - title: '岗位', - key: 'positions_id', - formItemProps: { ...rulesHelper.text }, - }), - SysSelects.SysRoles(), - { - key: 'remark', - title: '备注', - colProps: { span: 24 }, - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_employees/modals/EmployeeUpdate.tsx b/src/pages/attendance/attendance_employees/modals/EmployeeUpdate.tsx deleted file mode 100644 index 29af18b..0000000 --- a/src/pages/attendance/attendance_employees/modals/EmployeeUpdate.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; - -import { Selects } from '@/components/Select'; -import { SysSelects } from '@/components/SysSelects'; -import { Apis } from '@/gen/Apis'; -import { SexEnum } 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={`编辑员工`} - trigger={} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - roles_id: props.item?.roles?.map((item: any) => item.value), - }); - } - }} - onFinish={async (values: any) => - Apis.Company.CompanyEmployees.Update({ - ...values, - id: props.item?.id ?? 0, - type: props.item?.type, - organizations_id: - values?.organizations_id?.[values.organizations_id.length - 1] || - props.item?.organizations_id, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '姓名', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'phone', - title: '手机号', - valueType: 'number', - fieldProps: { - maxLength: 11, - }, - colProps: { span: 10 }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumRadio({ - key: 'sex', - title: '性别', - colProps: { span: 6 }, - valueEnum: SexEnum, - required: true, - }), - { - key: 'password', - title: '密码', - valueType: 'password', - colProps: { span: 24 }, - fieldProps: { - placeholder: '不修改密码请留空', - }, - }, - Selects?.Positions({ - title: '岗位', - key: 'positions_id', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - }, - }), - SysSelects.SysRoles(), - // { - // key: 'password', - // title: '密码', - // colProps: { span: 24 }, - // valueType: 'password', - // }, - { - key: 'remark', - title: '备注', - colProps: { span: 24 }, - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_records/index.tsx b/src/pages/attendance/attendance_records/index.tsx deleted file mode 100644 index 79d6a2c..0000000 --- a/src/pages/attendance/attendance_records/index.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { MyExport } from '@/components/MyExport'; -import { Apis } from '@/gen/Apis'; -import { - AttendanceRecordsCheckinTypeEnum, - AttendanceRecordsStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image } from 'antd'; -import { useState } from 'react'; - -export default function Index({ title = '打卡记录' }) { - const [getParams, setParams] = useState({}); - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - export: ( - - ), - }); - }; - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Attendance.AttendanceRecords.List, - (e) => { - setParams(e); - }, - ) - } - headerTitle={title} - toolBarRender={(action: any) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '员工', - dataIndex: ['company_employee', 'name'], - search: false, - }, - { - title: '打卡时间', - dataIndex: 'checkin_time', - valueType: 'dateRange', - hidden: true, - }, - MyColumns.EnumTag({ - title: '打卡类型', - dataIndex: 'checkin_type', - valueEnum: AttendanceRecordsCheckinTypeEnum, - }), - MyColumns.EnumTag({ - title: '打卡结果', - dataIndex: 'status', - valueEnum: AttendanceRecordsStatusEnum, - }), - { - title: '打卡时间', - dataIndex: 'checkin_time', - search: false, - render: (_, item: any) => { - return item?.status === 'CheckIn' - ? item?.shift_periods?.work_start_time - : item?.shift_periods?.work_end_time; - }, - }, - { - title: '员工打卡时间', - dataIndex: 'checkin_time', - search: false, - }, - - { - title: '打卡拍照', - dataIndex: 'checkin_time', - search: false, - render: (_, item: any) => { - return ( - - console.log( - `current index: ${current}, prev index: ${prev}`, - ), - }} - > - {item?.photo?.map((res: any, index?: number) => { - return ( - - ); - })} - - ); - }, - }, - MyColumns.CreatedAt(), - ]} - /> - - ); -} diff --git a/src/pages/attendance/attendance_schedules/index.tsx b/src/pages/attendance/attendance_schedules/index.tsx deleted file mode 100644 index 56d18ef..0000000 --- a/src/pages/attendance/attendance_schedules/index.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { AttendanceSchedulesStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Update from './modals/Update'; - -export default function Index({ title = '排班管理' }) { - const navigate = useNavigate(); - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = () => { - return getCurrentPermissions({ - add: ( - { - navigate('/attendance/attendance_schedules/pages/create'); - }} - title="批量排班/调整" - /> - ), - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - update: , - trigger: ( - - Apis.Attendance.AttendanceSchedules.ChangeStatus({ - id: item.id, - status: 'Active', - }).then(() => action?.reload()) - } - /> - ), - cancel: ( - - Apis.Attendance.AttendanceSchedules.Cancel({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - delete: ( - - Apis.Attendance.AttendanceSchedules.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }); - }; - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Attendance.AttendanceSchedules.List, - ) - } - headerTitle="排班信息" - toolBarRender={() => [toolBarRender()]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '排班日期', - dataIndex: 'schedule_date', - }, - - { - title: '班次', - dataIndex: ['attendance_shift', 'name'], - search: false, - }, - { - title: '时段', - dataIndex: 'shift_periods', - search: false, - render: (_, item: any) => { - return ( -
- {item?.shift_periods?.map((res: any, index: number) => { - return ( -
- - {`时段${res?.period_order}`}: - {`${res?.work_start_time?.substring( - 0, - 5, - )}-${res?.work_end_time?.substring(0, 5)}`} - -
- ); - })} -
- ); - }, - }, - { - title: '员工', - dataIndex: ['company_employee', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: AttendanceSchedulesStatusEnum, - }), - { - title: '排班人', - dataIndex: ['created_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> -
- ); -} diff --git a/src/pages/attendance/attendance_schedules/modals/Create.tsx b/src/pages/attendance/attendance_schedules/modals/Create.tsx deleted file mode 100644 index 5e9a8fc..0000000 --- a/src/pages/attendance/attendance_schedules/modals/Create.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, EditableProTable } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import { useState } from 'react'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const [dataSource, setDataSource] = useState([]); - - return ( - - {...MyModalFormProps.props} - title={`批量${props.title}`} - wrapperCol={{ span: 24 }} - width="800px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Attendance.AttendanceSchedules.BatchStore(values) - .then(() => { - props.reload?.(); - message.success('新增成功'); - return true; - }) - .catch(() => false) - } - submitter={false} - columns={[ - Selects?.OrganizationsTree({ - title: '选择组织', - key: 'organizations_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '排班日期', - key: 'schedule_date', - valueType: 'date', - fieldProps: { - format: 'YYYY-MM-DD', - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - valueType: 'dependency', - name: ['organizations_id', 'schedule_date'], - colProps: { span: 24 }, - columns: ({ schedule_date, organizations_id }) => { - return [ - { - renderFormItem: () => { - console.log(schedule_date, organizations_id); - return ( - { - // getEmployeesExternal(organizations_id || []); //获取外部员工 - Apis.Attendance.AttendanceSchedules.ShiftList({ - schedule_date: schedule_date, - organizations_id: - organizations_id?.[organizations_id?.length - 1], - }).then((res) => { - setDataSource(res?.data); - console.log(res); - }); - }} - /> - ); - }, - }, - { - renderFormItem: () => { - return ( - - headerTitle="可编辑表格" - bordered - recordCreatorProps={false} - columns={[ - { - title: '员工ID', - key: 'id', - }, - { - title: '员工', - key: 'name', - }, - ]} - rowKey="id" - value={dataSource} - /> - ); - }, - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_schedules/modals/Update.tsx b/src/pages/attendance/attendance_schedules/modals/Update.tsx deleted file mode 100644 index 7f5718f..0000000 --- a/src/pages/attendance/attendance_schedules/modals/Update.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`调整班次`} - trigger={} - key={new Date().getTime()} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Attendance.AttendanceSchedules.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.Employees({ - title: '员工信息', - key: 'company_employees_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - required: true, - fieldProps: { - disabled: true, - }, - }), - - Selects?.AssetProjects({ - title: '项目信息', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - disabled: true, - }, - }), - { - title: '班次日期', - key: 'schedule_date', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - disabled: true, - }, - }, - Selects?.AttendanceShiftsSelect({ - key: 'attendance_shifts_id', - title: '选择班次', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/attendance/attendance_schedules/pages/create.tsx b/src/pages/attendance/attendance_schedules/pages/create.tsx deleted file mode 100644 index 4c075f9..0000000 --- a/src/pages/attendance/attendance_schedules/pages/create.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import { - MyButtons, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - BetaSchemaForm, - EditableProTable, - ProCard, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -import { useState } from 'react'; -let optionsData: any = []; -export default function Index({ title = '新增批量排班' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [dataSource, setDataSource] = useState([]); - - // 动态提取日期(排除 id 和 name 字段) - const extractDates = (data) => { - const firstPerson = data[0]; - return Object.keys(firstPerson).filter( - (key) => key !== 'id' && key !== 'name' && !isNaN(Date.parse(key)), - ); - }; - - const getOptionsData = async (params: any) => { - if (optionsData?.length) { - return optionsData || []; - } - let res: any = await Apis.Attendance.AttendanceShifts.Select({ - ...params, - name: params?.keyWords || undefined, - }); - optionsData = res?.data; - console.log(optionsData, '1'); - return res?.data || []; - }; - // 生成未来7天日期的函数 - const generateFutureDates = (startDate: string) => { - const dates = []; - - const columns = [ - { - title: '员工ID', - dataIndex: 'id', - readonly: true, - }, - { - title: '员工', - dataIndex: 'name', - readonly: true, - }, - ]; - const start = dayjs(startDate); - for (let i = 0; i < 7; i++) { - dates.push({ - title: start.add(i, 'day').format('YYYY-MM-DD'), - key: start.add(i, 'day').format('YYYY-MM-DD'), - dataIndex: start.add(i, 'day').format('YYYY-MM-DD'), - formItemProps: { ...rulesHelper.number }, - valueType: 'select', - request: async (params: any) => { - return getOptionsData(params); - }, - fieldProps: { - showSearch: true, - placeholder: '请选择班次', - fieldNames: { - label: 'name', - value: 'id', - }, - }, - }); - } - console.log(dates); - if (startDate && dates?.length) { - return [...columns, ...dates]; - } else { - return columns; - } - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} -
- } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: (props) => { - return [ - { - props.submit(); - }} - title="提交保存" - />, - ]; - }, - }} - onFinish={async () => { - const dates = extractDates(dataSource); - const missingData: string[] = []; - - // // 先检查所有数据是否完整 - for (const person of dataSource) { - for (const date of dates) { - const shiftId = person[date]; - if (shiftId === undefined || shiftId === null) { - missingData.push(`员工 ${person?.name} 在 ${date}`); - } - } - } - - // 如果有缺失数据,提示并停止执行(只提示一次) - if (missingData.length > 0) { - message.error( - `存在 ${missingData.length} 条未填写的排班数据,请完善后再提交`, - ); - return false; - } - // 数据完整,进行转换和提交 - const transformedData: any = dataSource.flatMap((person: any) => { - console.log(person, 'person'); - return dates.map((date) => ({ - company_employees_id: person.id, - attendance_shifts_id: person[date] || 0, - schedule_date: date, - })); - }); - const filteredData = transformedData.filter( - (item: any) => - item.attendance_shifts_id !== null && - item.attendance_shifts_id !== 0, - ); - Apis.Attendance.AttendanceSchedules.BatchStore({ - schedules: filteredData || [], - }) - .then(() => { - navigate(-1); - message.success('提交成功'); - }) - .catch(() => false); - console.log(transformedData); - }} - columns={[ - Selects?.OrganizationsTree({ - title: '第一步:选择组织', - key: 'organizations_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '第二步:选择开始日期', - tooltip: '排班开始日期,最大排班日期为当前日期', - key: 'schedule_date', - valueType: 'date', - fieldProps: { - format: 'YYYY-MM-DD', - style: { width: '100%' }, - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - valueType: 'dependency', - name: ['organizations_id', 'schedule_date'], - colProps: { span: 24 }, - columns: ({ schedule_date, organizations_id }) => { - return [ - { - renderFormItem: () => { - console.log(schedule_date, organizations_id); - return ( - { - // getEmployeesExternal(organizations_id || []); //获取外部员工 - Apis.Attendance.AttendanceSchedules.ShiftList({ - schedule_date: schedule_date, - organizations_id: - organizations_id?.[ - organizations_id?.length - 1 - ], - }).then((res) => { - setDataSource(res?.data); - console.log(res); - }); - }} - /> - ); - }, - }, - { - renderFormItem: () => { - return ( - - - headerTitle="第四步:设置员工班次" - bordered - recordCreatorProps={false} - columns={generateFutureDates(schedule_date || '')} - rowKey="id" - value={dataSource} - editable={{ - type: 'multiple', - editableKeys: dataSource?.map( - (item: any) => item?.id, - ), - onValuesChange: (record, recordList: any) => { - setDataSource(recordList); - }, - onSave: async (rowKey, data, row) => { - console.log(rowKey, data, row); - }, - }} - /> - - ); - }, - }, - ]; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/attendance/attendance_shifts/index.tsx b/src/pages/attendance/attendance_shifts/index.tsx deleted file mode 100644 index 0a5b0c6..0000000 --- a/src/pages/attendance/attendance_shifts/index.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -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(); - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = () => { - return getCurrentPermissions({ - add: ( - { - navigate('/attendance/attendance_shifts/pages/create'); - }} - title="新增班次" - /> - ), - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - update: ( - { - navigate( - `/attendance/attendance_shifts/pages/update?id=${item.id}`, - ); - }} - title="编辑" - /> - ), - - delete: ( - - Apis.Attendance.AttendanceShifts.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }); - }; - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Attendance.AttendanceShifts.List, - ) - } - headerTitle={title} - toolBarRender={() => [toolBarRender()]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '班次名称', - dataIndex: 'name', - }, - { - title: '时段', - dataIndex: 'attendance_shift_periods', - search: false, - render: (_, item: any) => { - return ( -
- {item?.attendance_shift_periods?.map( - (res: any, index: number) => { - return ( -
- - {`时段${res?.period_order}`}: - {`${res?.work_start_time?.substring( - 0, - 5, - )} - ${res?.work_end_time?.substring(0, 5)}`} - -
- ); - }, - )} -
- ); - }, - }, - { - title: '可打卡时间范围', - render(_, record) { - return `${record?.allow_checkin_start} - ${record?.allow_checkin_end}`; - }, - search: false, - }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '启用', - }), - - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> -
- ); -} diff --git a/src/pages/attendance/attendance_shifts/pages/create.tsx b/src/pages/attendance/attendance_shifts/pages/create.tsx deleted file mode 100644 index a20370d..0000000 --- a/src/pages/attendance/attendance_shifts/pages/create.tsx +++ /dev/null @@ -1,267 +0,0 @@ -import { - MyButtons, - MyColumns, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import MyAssetsProjectSelectList from '@/components/ModalsAssetsProjectSelectList'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useState } from 'react'; -export default function Index({ title = '新增班次' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [dataSource, setDataSource] = useState< - ApiTypes.Asset.AssetProjects.List[] - >([]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="attendance-shifts-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - onFinish={async (values: any) => { - // 处理时间格式转换,将HH:mm转换为HH:mm:ss格式,秒数固定为00 - const formattedValues = { ...values }; - - // 处理work_start_time和work_end_time数组 - if (formattedValues.periods) { - formattedValues.periods = formattedValues.periods.map( - (period: any) => { - return { - ...period, - work_start_time: period.work_start_time - ? `${period.work_start_time}:00` - : '', - work_end_time: period.work_end_time - ? `${period.work_end_time}:00` - : '', - }; - }, - ); - } - - // 处理可打卡开始和结束时间 - if (formattedValues.allow_checkin_start) { - formattedValues.allow_checkin_start = `${formattedValues.allow_checkin_start}:00`; - } - if (formattedValues.allow_checkin_end) { - formattedValues.allow_checkin_end = `${formattedValues.allow_checkin_end}:00`; - } - - Apis.Attendance.AttendanceShifts.Store({ - ...formattedValues, - // is_enabled: values.is_enabled ? true : false, - is_enabled: true, - }) - .then(() => { - //提交 - navigate(-1); - message.success('提交成功'); - }) - .catch(() => false); - }} - columns={[ - { - title: '班次名称', - key: 'name', - formItemProps: { ...rulesHelper.text }, - }, - { - valueType: 'formList', - dataIndex: 'periods', - title: '设置需打卡时段', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'period_order', - valueType: 'digit', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次序号', - }, - }, - { - key: 'work_start_time', - valueType: 'time', - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次开始时间', - format: 'HH:mm', - }, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'work_end_time', - valueType: 'time', - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次开始时间', - format: 'HH:mm', - }, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - // { - // title: '休息开始时间', - // key: 'rest_start_time', - // fieldProps: { - // style: { width: '100%' }, - // }, - // valueType: 'time', - // colProps: { span: 5 }, - // }, - // { - // title: '休息结束时间', - // key: 'rest_end_time', - // fieldProps: { - // style: { width: '100%' }, - // }, - // valueType: 'time', - // colProps: { span: 5 }, - // }, - ], - }, - ], - }, - { - title: '可打卡开始时间', - key: 'allow_checkin_start', - valueType: 'time', - fieldProps: { - style: { width: '100%' }, - format: 'HH:mm', - }, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '可打卡结束时间', - key: 'allow_checkin_end', - fieldProps: { - style: { width: '100%' }, - format: 'HH:mm', - }, - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - // { - // title: '启用', - // key: 'is_enabled', - // valueType: 'switch', - // colProps: { span: 24 }, - // }, - { - colProps: { span: 24 }, - title: '选择关联项目', - tooltip: '选择后对应项目的人员可排班', - key: 'asset_projects_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - - { - let row = e?.[0]; - form.setFieldsValue({ - asset_projects_id: - row?.asset_projects_id || row?.id, - }); - setDataSource(e); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - setDataSource( - dataSource.filter( - (res: any) => res?.id !== item?.id, - ), - ); - }} - /> - - ), - }), - ]} - /> - - ); - }, - }, - - { - title: '其他备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/attendance/attendance_shifts/pages/update.tsx b/src/pages/attendance/attendance_shifts/pages/update.tsx deleted file mode 100644 index 59d998a..0000000 --- a/src/pages/attendance/attendance_shifts/pages/update.tsx +++ /dev/null @@ -1,300 +0,0 @@ -import { - MyButtons, - MyColumns, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import MyAssetsProjectSelectList from '@/components/ModalsAssetsProjectSelectList'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useEffect, useState } from 'react'; - -export default function Index({ title = '编辑班次' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - const [dataSource, setDataSource] = useState< - ApiTypes.Asset.AssetProjects.List[] - >([]); - - const loadShow = () => { - Apis.Attendance.AttendanceShifts.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - setDataSource([res?.data?.asset_project]); - - // 处理时间格式,将hh:mm:ss转换为hh:mm用于表单显示 - const formData = { ...res?.data }; - - // 处理可打卡开始和结束时间 - if (formData.allow_checkin_start) { - formData.allow_checkin_start = formData.allow_checkin_start.slice(0, 5); - } - if (formData.allow_checkin_end) { - formData.allow_checkin_end = formData.allow_checkin_end.slice(0, 5); - } - - // 处理时间段数组中的时间格式 - if (formData.attendance_shift_periods) { - formData.periods = formData.attendance_shift_periods.map( - (period: any) => { - return { - ...period, - work_start_time: period.work_start_time - ? period.work_start_time.slice(0, 5) - : '', - work_end_time: period.work_end_time - ? period.work_end_time.slice(0, 5) - : '', - }; - }, - ); - } - - form.setFieldsValue({ - ...formData, - asset_projects_id: res?.data?.asset_project?.id, - }); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="attendance-shifts-update" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - onFinish={async (values: any) => { - // 处理时间格式转换,将HH:mm转换为HH:mm:ss格式,秒数固定为00 - const formattedValues = { ...values }; - - // 处理work_start_time和work_end_time数组 - if (formattedValues.periods) { - formattedValues.periods = formattedValues.periods.map( - (period: any) => { - return { - ...period, - work_start_time: period.work_start_time - ? `${period.work_start_time}:00` - : '', - work_end_time: period.work_end_time - ? `${period.work_end_time}:00` - : '', - }; - }, - ); - } - - // 处理可打卡开始和结束时间 - if (formattedValues.allow_checkin_start) { - formattedValues.allow_checkin_start = `${formattedValues.allow_checkin_start}:00`; - } - if (formattedValues.allow_checkin_end) { - formattedValues.allow_checkin_end = `${formattedValues.allow_checkin_end}:00`; - } - - Apis.Attendance.AttendanceShifts.Update({ - ...formattedValues, - is_enabled: values.is_enabled ? true : false, - id: data?.id, - }) - .then(() => { - //提交 - navigate(-1); - message.success('编辑成功'); - }) - .catch(() => false); - }} - columns={[ - { - title: '班次名称', - key: 'name', - formItemProps: { ...rulesHelper.text }, - }, - { - valueType: 'formList', - dataIndex: 'periods', - title: '设置需打卡时段', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'period_order', - valueType: 'digit', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次序号', - }, - }, - { - key: 'work_start_time', - valueType: 'time', - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次开始时间', - format: 'HH:mm', - }, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'work_end_time', - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入班次开始时间', - format: 'HH:mm', - }, - valueType: 'time', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - ], - }, - ], - }, - { - title: '可打卡开始时间', - key: 'allow_checkin_start', - valueType: 'time', - fieldProps: { - style: { width: '100%' }, - format: 'HH:mm', - }, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '可打卡结束时间', - key: 'allow_checkin_end', - fieldProps: { - style: { width: '100%' }, - format: 'HH:mm', - }, - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - - { - colProps: { span: 24 }, - title: '关联项目', - key: 'asset_projects_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - - { - let row = e?.[0]; - form.setFieldsValue({ - asset_projects_id: - row?.asset_projects_id || row?.id, - }); - setDataSource(e); - console.log(e, 'e'); - }} - /> - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - render: (_, item: any) => { - return item?.name || item?.asset_project?.name; - }, - }, - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - setDataSource( - dataSource.filter( - (res: any) => res?.id !== item?.id, - ), - ); - }} - /> - - ), - }), - ]} - /> - - ); - }, - }, - { - title: '启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - { - title: '其他备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/charge/standard/components/ElectricityFee.tsx b/src/pages/charge/standard/components/ElectricityFee.tsx index 7731c0b..7ca08aa 100644 --- a/src/pages/charge/standard/components/ElectricityFee.tsx +++ b/src/pages/charge/standard/components/ElectricityFee.tsx @@ -29,7 +29,7 @@ export default function Index({ title = '电费标准' }) { charge_type: HouseBillsTypeEnum.ElectricityFee.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -156,7 +156,7 @@ export default function Index({ title = '电费标准' }) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/HasHouse.tsx b/src/pages/charge/standard/components/HasHouse.tsx index d4018ab..91a5ab8 100644 --- a/src/pages/charge/standard/components/HasHouse.tsx +++ b/src/pages/charge/standard/components/HasHouse.tsx @@ -25,7 +25,7 @@ export default function Index({ ...rest }) { house_charge_standards_id: rest.item?.house_charge_has_houses_id, }, sort, - Apis.HouseCharage.HouseChargeHasHouses.List, + Apis.HouseCharge.HouseChargeHasHouses.List, ) } toolBarRender={(action) => [ @@ -82,7 +82,7 @@ export default function Index({ ...rest }) { - Apis.HouseCharage.HouseChargeHasHouses.Delete({ + Apis.HouseCharge.HouseChargeHasHouses.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/MaintenanceFund.tsx b/src/pages/charge/standard/components/MaintenanceFund.tsx index 377d95b..f74324a 100644 --- a/src/pages/charge/standard/components/MaintenanceFund.tsx +++ b/src/pages/charge/standard/components/MaintenanceFund.tsx @@ -30,7 +30,7 @@ export default function Index({ title = '维修基金标准' }) { charge_type: HouseBillsTypeEnum.MaintenanceFund.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -159,7 +159,7 @@ export default function Index({ title = '维修基金标准' }) { )} - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/PropertyFee.tsx b/src/pages/charge/standard/components/PropertyFee.tsx index 90f08cf..1ca4f9e 100644 --- a/src/pages/charge/standard/components/PropertyFee.tsx +++ b/src/pages/charge/standard/components/PropertyFee.tsx @@ -30,7 +30,7 @@ export default function Index({ title = '物业费标准' }) { charge_type: HouseBillsTypeEnum.PropertyFee.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -157,7 +157,7 @@ export default function Index({ title = '物业费标准' }) { )} - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/SharedElectricityFee.tsx b/src/pages/charge/standard/components/SharedElectricityFee.tsx index 9cbce17..250bf97 100644 --- a/src/pages/charge/standard/components/SharedElectricityFee.tsx +++ b/src/pages/charge/standard/components/SharedElectricityFee.tsx @@ -29,7 +29,7 @@ export default function Index({ title = '公摊电费标准' }) { charge_type: HouseBillsTypeEnum.SharedElectricityFee.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -156,7 +156,7 @@ export default function Index({ title = '公摊电费标准' }) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/SharedWaterFee.tsx b/src/pages/charge/standard/components/SharedWaterFee.tsx index 1be6717..6cceb2d 100644 --- a/src/pages/charge/standard/components/SharedWaterFee.tsx +++ b/src/pages/charge/standard/components/SharedWaterFee.tsx @@ -29,7 +29,7 @@ export default function Index({ title = '公摊水费标准' }) { charge_type: HouseBillsTypeEnum.SharedWaterFee.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -156,7 +156,7 @@ export default function Index({ title = '公摊水费标准' }) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/components/WaterFee.tsx b/src/pages/charge/standard/components/WaterFee.tsx index 4d09e0b..cc5f7be 100644 --- a/src/pages/charge/standard/components/WaterFee.tsx +++ b/src/pages/charge/standard/components/WaterFee.tsx @@ -29,7 +29,7 @@ export default function Index({ title = '水费标准' }) { charge_type: HouseBillsTypeEnum.WaterFee.value, }, sort, - Apis.HouseCharage.HouseChargeStandards.List, + Apis.HouseCharge.HouseChargeStandards.List, ) } toolBarRender={(action) => [ @@ -152,7 +152,7 @@ export default function Index({ title = '水费标准' }) { /> - Apis.HouseCharage.HouseChargeStandards.Delete({ + Apis.HouseCharge.HouseChargeStandards.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/standard/index.tsx b/src/pages/charge/standard/index.tsx index 8e8c2ae..10e6751 100644 --- a/src/pages/charge/standard/index.tsx +++ b/src/pages/charge/standard/index.tsx @@ -1,5 +1,4 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import type { TabsProps } from 'antd'; +import { MyPageContainer } from '@/common'; import { Tabs } from 'antd'; import ElectricityFee from './components/ElectricityFee'; import MaintenanceFund from './components/MaintenanceFund'; @@ -9,40 +8,38 @@ import SharedWaterFee from './components/SharedWaterFee'; import WaterFee from './components/WaterFee'; export default function Index({ title = '收费标准配置' }) { - const getCurrentPermissions = useCurrentPermissions(); - - const items: TabsProps['items'] = getCurrentPermissions({ - PropertyFee: { + const items = [ + { key: 'PropertyFee', label: '物业费', children: , }, - WaterFee: { + { key: 'WaterFee', label: '水费', children: , }, - ElectricityFee: { + { key: 'ElectricityFee', label: '电费', children: , }, - SharedWaterFee: { + { key: 'SharedWaterFee', label: '公摊水费', children: , }, - SharedElectricityFee: { + { key: 'SharedElectricityFee', label: '公摊电费', children: , }, - MaintenanceFund: { + { key: 'MaintenanceFund', label: '维修基金', children: , }, - }); + ]; return ( String(id)); - Apis.HouseCharage.HouseChargeHasHouses.Store({ + Apis.HouseCharge.HouseChargeHasHouses.Store({ house_charge_standards_id: props?.item?.id ?? 0, houses_ids: housesIds, }) diff --git a/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx b/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx index 0e41130..109a644 100644 --- a/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx +++ b/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx @@ -25,7 +25,7 @@ export default function Update(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} title={props.title} // wrapperCol={{ span: 24 }} @@ -47,7 +47,7 @@ export default function Update(props: MyBetaModalFormProps) { }} onFinish={async (values: any) => { console.log(values); - Apis.HouseCharage.HouseChargeStandards.Update({ + Apis.HouseCharge.HouseChargeStandards.Update({ ...values, charge_type: props?.item?.charge_type, asset_projects_id: props?.item?.asset_projects_id, diff --git a/src/pages/charge/standard/modals/ChargingStandard.tsx b/src/pages/charge/standard/modals/ChargingStandard.tsx index 1aebdcb..44c1105 100644 --- a/src/pages/charge/standard/modals/ChargingStandard.tsx +++ b/src/pages/charge/standard/modals/ChargingStandard.tsx @@ -20,7 +20,7 @@ export default function Index(props: MyBetaModalFormProps) { type="link" width="1000px" onOpen={() => { - Apis.HouseCharage.HouseChargeStandards.Show({ + Apis.HouseCharge.HouseChargeStandards.Show({ id: props.item?.id ?? 0, }).then((res) => { setData(res?.data || {}); diff --git a/src/pages/charge/standard/pages/CreateElectricityFee.tsx b/src/pages/charge/standard/pages/CreateElectricityFee.tsx index c74b875..84870d0 100644 --- a/src/pages/charge/standard/pages/CreateElectricityFee.tsx +++ b/src/pages/charge/standard/pages/CreateElectricityFee.tsx @@ -24,7 +24,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增电费标准`} @@ -43,7 +43,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.ElectricityFee.value, type: diff --git a/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx b/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx index 79f1579..e514faf 100644 --- a/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx +++ b/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx @@ -24,7 +24,7 @@ export default function CreateMaintenanceFund(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增维修基金标准`} @@ -43,7 +43,7 @@ export default function CreateMaintenanceFund(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.MaintenanceFund.value, type: diff --git a/src/pages/charge/standard/pages/CreatePropertyfee.tsx b/src/pages/charge/standard/pages/CreatePropertyfee.tsx index 0df21bc..93edc7b 100644 --- a/src/pages/charge/standard/pages/CreatePropertyfee.tsx +++ b/src/pages/charge/standard/pages/CreatePropertyfee.tsx @@ -24,7 +24,7 @@ export default function CreatePropertyFee(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增物费标准`} @@ -43,7 +43,7 @@ export default function CreatePropertyFee(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.PropertyFee.value, type: diff --git a/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx b/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx index 5f2215e..dc55db6 100644 --- a/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx +++ b/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx @@ -25,7 +25,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增公摊电费标准`} @@ -44,7 +44,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.SharedElectricityFee.value, type: diff --git a/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx b/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx index 103ce87..293382f 100644 --- a/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx +++ b/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx @@ -25,7 +25,7 @@ export default function CreateSharedWaterFee(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增公摊水费标准`} @@ -44,7 +44,7 @@ export default function CreateSharedWaterFee(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.SharedWaterFee.value, type: diff --git a/src/pages/charge/standard/pages/CreateWaterFee.tsx b/src/pages/charge/standard/pages/CreateWaterFee.tsx index d52488b..dbe790b 100644 --- a/src/pages/charge/standard/pages/CreateWaterFee.tsx +++ b/src/pages/charge/standard/pages/CreateWaterFee.tsx @@ -24,7 +24,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { const actionRef = useRef(); return ( - + {...MyModalFormProps.props} form={form} title={`新增水费标准`} @@ -43,7 +43,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseChargeStandards.Store({ + Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.WaterFee.value, type: diff --git a/src/pages/charge/standard/show/$id.tsx b/src/pages/charge/standard/show/$id.tsx index 4df9ec0..4a79134 100644 --- a/src/pages/charge/standard/show/$id.tsx +++ b/src/pages/charge/standard/show/$id.tsx @@ -20,7 +20,7 @@ export default function Show({ title = '详情' }: { title?: string } = {}) { const loadShow = () => { let paramsId: any = { id: id ?? 0 }; - Apis.HouseCharage.HouseChargeStandards.Show(paramsId).then((res) => { + Apis.HouseCharge.HouseChargeStandards.Show(paramsId).then((res) => { setShow(res?.data); if (pageType === 'Meter') { setItem([ diff --git a/src/pages/charge/tasks/index.tsx b/src/pages/charge/tasks/index.tsx index cc354fc..a847845 100644 --- a/src/pages/charge/tasks/index.tsx +++ b/src/pages/charge/tasks/index.tsx @@ -33,7 +33,7 @@ export default function Index({ title = '账单任务' }) { MyProTableProps.request( params, sort, - Apis.HouseCharage.HouseChargeTasks.List, + Apis.HouseCharge.HouseChargeTasks.List, ) } toolBarRender={(action) => [ @@ -137,7 +137,7 @@ export default function Index({ title = '账单任务' }) { isConfirm description="是否重新执行此任务?" onConfirm={() => - Apis.HouseCharage.HouseChargeTasks.ExecuteTask({ + Apis.HouseCharge.HouseChargeTasks.ExecuteTask({ id: item.id, }).then(() => action?.reload()) } @@ -149,7 +149,7 @@ export default function Index({ title = '账单任务' }) { /> - Apis.HouseCharage.HouseChargeTasks.Delete({ + Apis.HouseCharge.HouseChargeTasks.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/charge/tasks/modals/TaskCreate.tsx b/src/pages/charge/tasks/modals/TaskCreate.tsx index 706e2c4..a4627a0 100644 --- a/src/pages/charge/tasks/modals/TaskCreate.tsx +++ b/src/pages/charge/tasks/modals/TaskCreate.tsx @@ -12,7 +12,7 @@ import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + {...MyModalFormProps.props} title={`创建${props.title}`} width="480px" @@ -29,7 +29,7 @@ export default function Create(props: MyBetaModalFormProps) { } }} onFinish={async (values) => - Apis.HouseCharage.HouseChargeTasks.Store(values) + Apis.HouseCharge.HouseChargeTasks.Store(values) .then(() => { props.reload?.(); message.success(props.title + '账单任务创建成功'); diff --git a/src/pages/charge/tasks/modals/TaskShow.tsx b/src/pages/charge/tasks/modals/TaskShow.tsx index 2f74e10..7a5e1d1 100644 --- a/src/pages/charge/tasks/modals/TaskShow.tsx +++ b/src/pages/charge/tasks/modals/TaskShow.tsx @@ -25,7 +25,7 @@ export default function TaskShow(props: MyBetaModalFormProps) { MyProTableProps.request( { ...params, house_charge_tasks_id: props?.item?.id }, sort, - Apis.HouseCharage.HouseChargeTaskDetails.List, + Apis.HouseCharge.HouseChargeTaskDetails.List, ) } options={false} @@ -89,7 +89,7 @@ export default function TaskShow(props: MyBetaModalFormProps) { isConfirm description="确认执行此任务吗?" onConfirm={() => - Apis.HouseCharage.HouseChargeTaskDetails.CreateHouseBill({ + Apis.HouseCharge.HouseChargeTaskDetails.CreateHouseBill({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/company/accounts/index.tsx b/src/pages/company/accounts/index.tsx index 8a07995..ea96026 100644 --- a/src/pages/company/accounts/index.tsx +++ b/src/pages/company/accounts/index.tsx @@ -12,7 +12,7 @@ import { Space } from 'antd'; import ReceiptAccountCreate from './modals/ReceiptAccountCreate'; import ReceiptAccountUpdate from './modals/ReceiptAccountUpdate'; -export default function Index({ title = '集团账号管理' }) { +export default function Index({ title = '账号管理' }) { const navigate = useNavigate(); return ( MyProTableProps.request( params, @@ -39,11 +39,12 @@ export default function Index({ title = '集团账号管理' }) { />, { navigate('/asset/accounts'); }} size="middle" - title="配置项目账号" + title="去配置项目账号" />, ]} columns={[ diff --git a/src/pages/contract/contract_archives/index.tsx b/src/pages/contract/contract_archives/index.tsx deleted file mode 100644 index f3ecc8b..0000000 --- a/src/pages/contract/contract_archives/index.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; - -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Show from './modals/Show'; -import Update from './modals/Update'; - -export default function Index({ title = '合同归档' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractArchives.List, - ) - } - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '归档编号', - dataIndex: 'code', - render: (_, item: any) => ( - { - navigate( - `/contract/contract_archives/show/${item.contracts_id}`, - ); - }} - > - {item?.code} - - ), - }, - { - title: '归档名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '保密等级', - dataIndex: 'confidentiality_level', - valueEnum: ContractArchivesConfidentialityLevelEnum, - search: false, - }), - MyColumns.EnumTag({ - title: '期限类型', - dataIndex: 'period_type', - valueEnum: ContractArchivesPeriodTypeEnum, - search: false, - }), - { - title: '保管年限', - dataIndex: 'storage_years', - valueType: 'digit', - search: false, - }, - // { - // title: '案卷编号', - // dataIndex: 'file_number', - // }, - { - title: '文件盒编号', - dataIndex: 'box_number', - }, - { - title: '文件柜编号', - dataIndex: 'cabinet_number', - }, - { - title: '归档年份', - dataIndex: 'archive_year', - valueType: 'dateYear', - search: false, - }, - { - title: '归档日期', - dataIndex: 'archive_date', - valueType: 'date', - search: false, - }, - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - Apis.Contract.ContractArchives.Delete({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/contract/contract_archives/modals/Archives.tsx b/src/pages/contract/contract_archives/modals/Archives.tsx deleted file mode 100644 index 48bdf86..0000000 --- a/src/pages/contract/contract_archives/modals/Archives.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesFileStatusEnum, - ContractArchivesFileTypeEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import dayjs from 'dayjs'; - -export default function Archives(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`合同${props.title}`} - layout="horizontal" - labelCol={{ span: 8 }} - wrapperCol={{ span: 16 }} - labelAlign="left" - width="800px" - style={{ - padding: '20px', - height: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - form.setFieldsValue({ - code: props?.item?.code, - name: props?.item?.name, - }); - } - }} - trigger={ - - } - onFinish={async (values: any) => { - console.log(values, 'values'); - return Apis.Contract.ContractArchives.Store({ - ...values, - contracts_id: props?.item?.id, - code: props?.item?.code, - name: props?.item?.name, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - key: 'code', - title: '归档编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - key: 'name', - title: '归档名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumRadio({ - key: 'period_type', - title: '保管期限', - colProps: { span: 12 }, - valueEnum: ContractArchivesPeriodTypeEnum, - required: true, - }), - { - name: ['period_type'], - valueType: 'dependency', - columns: ({ period_type }: any) => { - return period_type === 'FixedTerm' - ? [ - { - key: 'storage_years', - title: '保管年限', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - fieldProps: { - suffix: '年', - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - ], - }, - MyFormItems.EnumRadio({ - key: 'confidentiality_level', - title: '保密等级', - colProps: { span: 24 }, - formItemProps: { - labelCol: { span: 4 }, - wrapperCol: { span: 20 }, - required: true, - }, - valueEnum: ContractArchivesConfidentialityLevelEnum, - }), - // { - // key: 'file_number', - // title: '案卷编号', - // formItemProps: { ...rulesHelper.text }, - // colProps: { span: 12 }, - // }, - { - key: 'box_number', - title: '文件盒编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'cabinet_number', - title: '文件柜编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'archive_date', - title: '归档日期', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - minDate: dayjs().subtract(1, 'month'), - maxDate: dayjs(), - style: { - width: '100%', - }, - onChange: (date: any) => { - console.log(date); - form.setFieldValue('archive_year', dayjs(date).format('YYYY')); - }, - }, - colProps: { span: 12 }, - }, - // Address.Cascader({ - // key: 'casacader', - // title: '存放地区', - // colProps: { span: 12 }, - // keys: ['province', 'city', 'area', 'street'], - // }), - // { - // key: 'address', - // title: '详细地址', - // colProps: { span: 12 }, - // }, - { - key: 'archive_year', - title: '归档年份', - fieldProps: { - disabled: true, - }, - colProps: { span: 12 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '归档文件', - }, - }, - { - valueType: 'formList', - dataIndex: 'archive_files', - title: '', - formItemProps: { - ...rulesHelper.array, - labelCol: { span: 0 }, - wrapperCol: { span: 24 }, - }, - colProps: { span: 24 }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - itemRender: ({ listDom, action }: any, { index }: any) => { - return ( - - {listDom} - - ); - }, - }, - - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '文件名称', - key: 'name', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'type', - title: '文件类型', - valueEnum: ContractArchivesFileTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '文件份数', - key: 'number', - valueType: 'digit', - colProps: { span: 12 }, - fieldProps: { - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.number }, - }, - MyFormItems.EnumSelect({ - key: 'status', - title: '文件状态', - valueEnum: ContractArchivesFileStatusEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '备注', - key: 'remark', - colProps: { span: 12 }, - }, - MyFormItems.UploadImages({ - key: 'info', - title: '上传扫描件', - uploadType: 'file', - colProps: { span: 12 }, - max: 100, - formItemProps: { ...rulesHelper.array }, - className: 'my_upload_file', - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_archives/modals/Create.tsx b/src/pages/contract/contract_archives/modals/Create.tsx deleted file mode 100644 index ca37944..0000000 --- a/src/pages/contract/contract_archives/modals/Create.tsx +++ /dev/null @@ -1,269 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesFileStatusEnum, - ContractArchivesFileTypeEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import dayjs from 'dayjs'; - -export default function Archives(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`${props.title}`} - layout="horizontal" - labelCol={{ span: 8 }} - wrapperCol={{ span: 16 }} - labelAlign="left" - width="800px" - style={{ - padding: '20px', - height: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values: any) => { - console.log(values, 'values'); - return Apis.Contract.ContractArchives.Store({ - ...values, - contracts_id: props?.item?.id, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - key: 'code', - title: '归档编号', - tooltip: '一经确认,不可修改', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'name', - title: '归档名称', - tooltip: '一经确认,不可修改', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumRadio({ - key: 'period_type', - title: '保管期限', - colProps: { span: 12 }, - valueEnum: ContractArchivesPeriodTypeEnum, - required: true, - }), - { - name: ['period_type'], - valueType: 'dependency', - columns: ({ period_type }: any) => { - return period_type === 'FixedTerm' - ? [ - { - key: 'storage_years', - title: '保管年限', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - fieldProps: { - suffix: '年', - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - ], - }, - MyFormItems.EnumRadio({ - key: 'confidentiality_level', - title: '保密等级', - colProps: { span: 24 }, - formItemProps: { - labelCol: { span: 4 }, - wrapperCol: { span: 20 }, - required: true, - }, - valueEnum: ContractArchivesConfidentialityLevelEnum, - }), - // { - // key: 'file_number', - // title: '案卷编号', - // formItemProps: { ...rulesHelper.text }, - // colProps: { span: 12 }, - // }, - { - key: 'box_number', - title: '文件盒编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'cabinet_number', - title: '文件柜编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'archive_date', - title: '归档日期', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - minDate: dayjs().subtract(1, 'month'), - maxDate: dayjs(), - style: { - width: '100%', - }, - onChange: (date: any) => { - console.log(date); - form.setFieldValue('archive_year', dayjs(date).format('YYYY')); - }, - }, - colProps: { span: 12 }, - }, - // Address.Cascader({ - // key: 'casacader', - // title: '存放地区', - // colProps: { span: 12 }, - // keys: ['province', 'city', 'area', 'street'], - // }), - // { - // key: 'address', - // title: '详细地址', - // colProps: { span: 12 }, - // }, - { - key: 'archive_year', - title: '归档年份', - fieldProps: { - disabled: true, - }, - colProps: { span: 12 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '归档文件', - }, - }, - { - valueType: 'formList', - dataIndex: 'archive_files', - title: '', - formItemProps: { - ...rulesHelper.array, - labelCol: { span: 0 }, - wrapperCol: { span: 24 }, - }, - colProps: { span: 24 }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - itemRender: ({ listDom, action }: any, { index }: any) => { - return ( - - {listDom} - - ); - }, - }, - - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '文件名称', - key: 'name', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'type', - title: '文件类型', - valueEnum: ContractArchivesFileTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '文件份数', - key: 'number', - valueType: 'digit', - colProps: { span: 12 }, - fieldProps: { - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.number }, - }, - MyFormItems.EnumSelect({ - key: 'status', - title: '文件状态', - valueEnum: ContractArchivesFileStatusEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '备注', - key: 'remark', - colProps: { span: 12 }, - }, - MyFormItems.UploadImages({ - key: 'info', - title: '上传扫描件', - uploadType: 'file', - colProps: { span: 12 }, - // accept: '.docx,.doc,.pdf', - max: 100, - formItemProps: { ...rulesHelper.array }, - className: 'my_upload_file', - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_archives/modals/Show.tsx b/src/pages/contract/contract_archives/modals/Show.tsx deleted file mode 100644 index 8d4fe4e..0000000 --- a/src/pages/contract/contract_archives/modals/Show.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesFileStatusEnum, - ContractArchivesFileTypeEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Space, Spin } from 'antd'; -import { useState } from 'react'; - -export default function Show(props: MyBetaModalFormProps) { - const [loading, setLoading] = useState(false); - const [data, setData] = useState({}); - - const handleOpenModal = () => { - if (props?.item?.id) { - setLoading(true); - Apis.Contract.ContractArchives.Show({ id: props.item.id }) - .then((res) => { - setData(res?.data || {}); - }) - .finally(() => { - setLoading(false); - }); - } - }; - return ( - - - - - {/* 基本信息 */} - - {data?.code} - - - {data?.name} - - - {data?.contracts_id} - - - {/* 保管信息 */} - - - - {data?.period_type === 'FixedTerm' && ( - - {data?.storage_years} 年 - - )} - - - - - {/* 存放信息 */} - - {data?.file_number} - - - {data?.box_number} - - - {data?.cabinet_number} - - - - {data?.keeper_name}-{data?.keeper_phone} - - {/* 时间信息 */} - - {data?.archive_date} - - - {data?.archive_year} - - - {[data?.province, data?.city, data?.area, data?.street] - .filter(Boolean) - .join(' ')}{' '} - {data?.address} - - - {data?.created_at} - - - {data?.updated_at} - - - - - - - {/* 归档文件列表 */} - {(data?.archive_files ?? []).map((file: any, index: number) => ( - - - - {file?.name} - - - - - - {file?.number} - - - - - - {file?.remark} - - - {file?.info && file?.info.length > 0 ? ( - - {file?.info.map((item: any, fileIndex: number) => ( - - {item?.name || `文件 ${fileIndex + 1}`} - - ))} - - ) : ( - '-' - )} - - - - ))} - - - } - /> - ); -} diff --git a/src/pages/contract/contract_archives/modals/Update.tsx b/src/pages/contract/contract_archives/modals/Update.tsx deleted file mode 100644 index 59a6c70..0000000 --- a/src/pages/contract/contract_archives/modals/Update.tsx +++ /dev/null @@ -1,280 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesFileStatusEnum, - ContractArchivesFileTypeEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import dayjs from 'dayjs'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - title={`归档信息${props.title}`} - trigger={} - layout="horizontal" - labelCol={{ span: 8 }} - wrapperCol={{ span: 16 }} - labelAlign="left" - // 高度固定,高度滚动,宽度限定 - style={{ - padding: '20px', - height: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - width="800px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - // archive_files: props.item?.archive_files?.map((item: any) => ({ - // ...item, - // })), - }); - } - }} - onFinish={async (values: any) => - Apis.Contract.ContractArchives.Update({ - ...values, - id: props?.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'code', - title: '归档编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - key: 'name', - title: '归档名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - fieldProps: { - disabled: true, - }, - }, - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumRadio({ - key: 'period_type', - title: '保管期限', - colProps: { span: 12 }, - valueEnum: ContractArchivesPeriodTypeEnum, - required: true, - }), - { - name: ['period_type'], - valueType: 'dependency', - columns: ({ period_type }: any) => { - return period_type === 'FixedTerm' - ? [ - { - key: 'storage_years', - title: '保管年限', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - colProps: { span: 12 }, - fieldProps: { - suffix: '年', - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - ], - }, - MyFormItems.EnumRadio({ - key: 'confidentiality_level', - title: '保密等级', - colProps: { span: 24 }, - formItemProps: { - labelCol: { span: 4 }, - wrapperCol: { span: 20 }, - required: true, - }, - valueEnum: ContractArchivesConfidentialityLevelEnum, - }), - // { - // key: 'file_number', - // title: '案卷编号', - // formItemProps: { ...rulesHelper.text }, - // colProps: { span: 12 }, - // }, - { - key: 'box_number', - title: '文件盒编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'cabinet_number', - title: '文件柜编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'archive_date', - title: '归档日期', - valueType: 'date', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - minDate: dayjs().subtract(1, 'month'), - maxDate: dayjs(), - style: { - width: '100%', - }, - onChange: (date: any) => { - console.log(date); - form.setFieldValue('archive_year', dayjs(date).format('YYYY')); - }, - }, - colProps: { span: 12 }, - }, - // Address.Cascader({ - // key: 'casacader', - // title: '存放地区', - // colProps: { span: 12 }, - // keys: ['province', 'city', 'area', 'street'], - // }), - // { - // key: 'address', - // title: '详细地址', - // colProps: { span: 12 }, - // }, - - { - key: 'archive_year', - title: '归档年份', - fieldProps: { - disabled: true, - }, - colProps: { span: 12 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '归档文件', - }, - }, - { - valueType: 'formList', - dataIndex: 'archive_files', - title: '', - formItemProps: { - ...rulesHelper.array, - labelCol: { span: 0 }, - wrapperCol: { span: 24 }, - }, - colProps: { span: 24 }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - itemRender: ({ listDom, action }: any, { index }: any) => { - return ( - - {listDom} - - ); - }, - }, - - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '文件名称', - key: 'name', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'type', - title: '文件类型', - valueEnum: ContractArchivesFileTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '文件份数', - key: 'number', - valueType: 'digit', - colProps: { span: 12 }, - fieldProps: { - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.number }, - }, - MyFormItems.EnumSelect({ - key: 'status', - title: '文件状态', - valueEnum: ContractArchivesFileStatusEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '备注', - key: 'remark', - colProps: { span: 12 }, - }, - MyFormItems.UploadImages({ - key: 'info', - title: '上传扫描件', - uploadType: 'file', - - colProps: { span: 12 }, - max: 100, - formItemProps: { ...rulesHelper.array }, - className: 'my_upload_file', - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_bill_payments/index.tsx b/src/pages/contract/contract_bill_payments/index.tsx deleted file mode 100644 index 1f87762..0000000 --- a/src/pages/contract/contract_bill_payments/index.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - CompanyReceiptAccountsPayChannelEnum, - ContractBillsCostTypeEnum, - HouseOrdersOrderStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; - -export default function Index({ title = '账单审核' }) { - const navigate = useNavigate(); - return ( - - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractBillPayments.List, - ) - } - params={{ - status: 'Pending', - }} - headerTitle="账单支付审核" - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同', - dataIndex: ['contract', 'name'], - search: false, - }, - { - title: '合同ID', - dataIndex: 'contracts_id', - hidden: true, - }, - { - title: '账单ID', - dataIndex: 'contract_bills_id', - hidden: true, - }, - { - title: '支付金额', - search: false, - render: (_, item: any) => { - return `¥${item?.amount || 0}`; - }, - }, - { - title: '年月', - search: false, - render: (_, item: any) => { - return `${item?.contract_bill?.year || 0}-${ - item?.contract_bill?.month < 10 - ? `0${item?.contract_bill?.month}` - : item?.contract_bill?.month - }`; - }, - }, - MyColumns.EnumTag({ - title: '支付状态', - dataIndex: 'payment_status', - valueEnum: HouseOrdersOrderStatusEnum, - }), - MyColumns.EnumTag({ - title: '费用类型', - dataIndex: 'cost_type', - valueEnum: ContractBillsCostTypeEnum, - }), - - MyColumns.EnumTag({ - title: '支付方式', - dataIndex: 'payment_method', - valueEnum: CompanyReceiptAccountsPayChannelEnum, - }), - { - title: '支付单号', - dataIndex: 'payment_no', - }, - { - title: '收款账号', - dataIndex: 'accept_account_number', - }, - { - title: '收款流水号', - dataIndex: 'accept_serial_number', - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - navigate( - `/contract/contract_bill_payments/pages/review?id=${item.id}`, - ); - }} - title="查看并审核" - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/contract/contract_bill_payments/modals/Create.tsx b/src/pages/contract/contract_bill_payments/modals/Create.tsx deleted file mode 100644 index f4316cb..0000000 --- a/src/pages/contract/contract_bill_payments/modals/Create.tsx +++ /dev/null @@ -1,55 +0,0 @@ -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 Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Contract.ContractTypes.Store({ - ...values, - is_enabled: values.is_enabled ? 1 : 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_bill_payments/modals/Review.tsx b/src/pages/contract/contract_bill_payments/modals/Review.tsx deleted file mode 100644 index 08e165d..0000000 --- a/src/pages/contract/contract_bill_payments/modals/Review.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -const DormigoryBedAuditFlowsAuditStatusEnum = { - Approved: { text: '通过', value: 'Approved' }, - Rejected: { text: '驳回', value: 'Rejected' }, -}; -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.ContractBillPayments.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - navigate(-1); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'status', - title: '审核意见', - valueEnum: DormigoryBedAuditFlowsAuditStatusEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['status'], - columns: ({ status }) => { - return status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'rejected_reason', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'rejected_reason', - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_bill_payments/modals/Update.tsx b/src/pages/contract/contract_bill_payments/modals/Update.tsx deleted file mode 100644 index 2b065bb..0000000 --- a/src/pages/contract/contract_bill_payments/modals/Update.tsx +++ /dev/null @@ -1,56 +0,0 @@ -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.ContractTypes.Update({ - ...values, - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_bill_payments/pages/review.tsx b/src/pages/contract/contract_bill_payments/pages/review.tsx deleted file mode 100644 index 77a7de9..0000000 --- a/src/pages/contract/contract_bill_payments/pages/review.tsx +++ /dev/null @@ -1,203 +0,0 @@ -import { MyModalFormProps, MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractBillsCostTypeEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - HouseOrdersPaymentMethodEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, Image, Space } from 'antd'; -import { useEffect, useState } from 'react'; -import Review from '../modals/Review'; - -export default function Index({ title = '账单支付审核' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - - const loadShow = () => { - Apis.Contract.ContractBillPayments.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - }); - }; - const totalBillSeparableAmount = () => { - return parseFloat( - ( - parseFloat(data?.contract?.total_amount) - - parseFloat(data?.contract?.total_bill_amount) - ).toFixed(2), - ); - }; - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: () => { - return []; - }, - }} - columns={[ - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - -
- 收支类型: - { - ContractTemplatesIncomeExpenseTypeEnum[ - data?.contract - ?.income_expense_type as keyof typeof ContractTemplatesIncomeExpenseTypeEnum - ]?.text - } -
-
- 结算模式: - { - ContractsSettlementModeEnum[ - data?.contract - ?.settlement_mode as keyof typeof ContractsSettlementModeEnum - ]?.text - } -
-
合同总金额: ¥{data?.contract?.total_amount}
-
- 已生成账单: ¥{data?.contract?.total_bill_amount} -
- {data?.contract?.settlement_mode === - 'LumpSumContract' && ( -
- 可拆分金额: ¥{totalBillSeparableAmount()} -
- )} -
-
- ); - }, - }, - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - -
- 月份:{data?.contract_bill?.year}年 - {data?.contract_bill?.month}月 -
-
账单金额:¥{data?.contract_bill?.amount}
-
期数:{data?.contract_bill?.period_num}期
-
- 费用类型: - { - ContractBillsCostTypeEnum[ - data?.contract_bill - ?.cost_type as keyof typeof ContractBillsCostTypeEnum - ]?.text - } -
-
其他备注:{data?.contract_bill?.remark}
-
-
- ); - }, - }, - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - -
- 支付方式: - { - HouseOrdersPaymentMethodEnum[ - data?.payment_method as keyof typeof HouseOrdersPaymentMethodEnum - ]?.text - } -
-
- 支付金额:¥{data?.amount} -
-
支付单号:{data?.payment_no}
-
收款流水号:{data?.accept_serial_number}
-
支付时间:{data?.paid_time}
-
收款账号名称:{data?.accept_account_name}
-
收款账号:{data?.accept_account_number}
-
其他备注:{data?.remark}
-
支付凭证:
-
- - {data?.pay_certificate?.map( - (item: any, index: number) => ( - - ), - )} - -
-
-
- ); - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/contract/contract_bills/index.tsx b/src/pages/contract/contract_bills/index.tsx deleted file mode 100644 index 86adf94..0000000 --- a/src/pages/contract/contract_bills/index.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractBillsCostTypeEnum, - HouseOrdersOrderStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import MyPayBills from '../modals/PayBills'; - -export default function Index({ title = '合同账单' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractBills.List, - ) - } - toolBarRender={() => [ - { - navigate('/contract/contract_bills/pages/create'); - }} - title="新增合同账单" - />, - ]} - headerTitle="合同账单列表" - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同', - dataIndex: ['contract', 'name'], - search: false, - }, - { - title: '合同ID', - dataIndex: 'contracts_id', - }, - { - title: '年月', - search: false, - render: (_, item: any) => { - return `${item?.year || 0}-${ - item?.month < 10 ? `0${item?.month}` : item?.month - }`; - }, - }, - MyColumns.EnumTag({ - title: '支付状态', - dataIndex: 'payment_status', - valueEnum: HouseOrdersOrderStatusEnum, - }), - MyColumns.EnumTag({ - title: '费用类型', - dataIndex: 'cost_type', - valueEnum: ContractBillsCostTypeEnum, - }), - { - title: '账单金额', - search: false, - render: (_, item: any) => { - return `¥${item?.amount || 0}`; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - { - navigate( - `/contract/contract_bills/pages/update?id=${item.id}`, - ); - }} - title="编辑" - /> - - Apis.Contract.ContractBills.Delete({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/contract/contract_bills/pages/create.tsx b/src/pages/contract/contract_bills/pages/create.tsx deleted file mode 100644 index a0d9f84..0000000 --- a/src/pages/contract/contract_bills/pages/create.tsx +++ /dev/null @@ -1,401 +0,0 @@ -import { - MyButtons, - MyModalFormProps, - MyPageContainer, - renderTextHelper, - rulesHelper, -} from '@/common'; -import MyContractsSelectList from '@/components/ModalsContractsSelectList'; -import { Apis } from '@/gen/Apis'; -import { - ContractBillsCostTypeEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Empty, Form, message, Space, Tag } from 'antd'; -import { useEffect, useState } from 'react'; - -export default function Create() { - const [form] = Form.useForm(); - const [searchParams] = useSearchParams(); - const navigate = useNavigate(); - const [data, setShow] = useState({}); - const id = searchParams.get('id') ?? 0; - const getContractsShow = (id: number) => { - Apis.Contract.Contracts.Show({ id: id }).then((res) => { - setShow(res?.data); - }); - }; - - const totalBillSeparableAmount = () => { - return parseFloat( - ( - parseFloat(data?.total_amount) - parseFloat(data?.total_bill_amount) - ).toFixed(2), - ); - }; - - useEffect(() => { - if (id) { - getContractsShow(Number(id)); - form.setFieldsValue({ - contracts_id: id, - }); - } - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - 新增合同账单 - - } - enableTabs={false} - tabKey="charge-standards-create" - > - -
- - {...MyModalFormProps.props} - wrapperCol={{ span: 24 }} - width="1000px" - layoutType="Form" - form={form} - onFinish={async (values: any) => { - let year_month = ''; - let year_month_is = false; - let total_bill_amount = totalBillSeparableAmount(); - let taotal_amount = 0; - if ( - total_bill_amount <= 0 && - data?.settlement_mode === 'LumpSumContract' - ) { - message.warning('没有多余金额可生成账单!'); - return false; - } - values?.bills?.forEach((res: any) => { - if (values?.payee === values?.payer) { - year_month_is = true; - message.warning('收款方和付款方不能相同'); - return false; - } - res.payee = values?.payee; - res.payer = values?.payer; - if (year_month_is) return; - if (res?.year_month === year_month) { - year_month_is = true; - message.warning('不能选择相同年月'); - return false; - } - year_month = res?.year_month; - let k = res?.year_month?.split('-'); - res.year = k[0]; - res.month = parseInt(k[1]); - if (data?.settlement_mode === 'LumpSumContract') { - taotal_amount += parseFloat(res?.amount); - console.log( - taotal_amount, - total_bill_amount, - 'taotal_amount', - ); - if (taotal_amount !== total_bill_amount) { - year_month_is = true; - message.warning(`请把¥${total_bill_amount},拆分完!`); - return false; - } - } - }); - if (year_month_is) { - return; - } - console.log(data, 'values'); - if (data?.settlement_mode === 'OpenContract') { - //开口合同 - return Apis.Contract.ContractBills.BatchStore({ - ...values, - contracts_id: data?.id, - }) - .then(() => { - navigate('/contract/contract_bills'); - message.success('提交成功'); - return true; - }) - .catch(() => false); - } - if ( - total_bill_amount > 0 && - data?.settlement_mode === 'LumpSumContract' - ) { - if (taotal_amount <= total_bill_amount) { - return Apis.Contract.ContractBills.BatchStore({ - ...values, - contracts_id: data?.id, - }) - .then(() => { - navigate('/contract/contract_bills'); - message.success('提交成功'); - return true; - }) - .catch(() => false); - } else { - message.warning('可拆分金额不够!'); - } - console.log(taotal_amount, total_bill_amount, 'taotal_amount'); - } - }} - submitter={{ - render: (props) => { - return [ - { - props.submit(); - }} - title="提交" - />, - ]; - }, - }} - columns={[ - { - name: ['contracts_id'], - valueType: 'dependency', - columns: ({ contracts_id }: any) => { - if (!id) { - return [ - { - colProps: { span: 24 }, - title: '选择合同', - key: 'contracts_id', - formItemProps: { ...rulesHelper.number }, - renderFormItem: () => { - return ( - { - let res = e[0]; - getContractsShow(res?.id); - form.setFieldsValue({ - contracts_id: res?.id, - }); - console.log(e, contracts_id, 'e'); - }} - /> - ); - }, - }, - ]; - } else { - return []; - } - }, - }, - { - name: ['contracts_id'], - valueType: 'dependency', - columns: ({ contracts_id }: any) => { - return [ - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - {contracts_id ? ( - - - - - - - - - - ¥{data?.total_amount} - - - ¥{data?.total_bill_amount} - - - {data?.settlement_mode === - 'LumpSumContract' && ( - - ¥{totalBillSeparableAmount()} - - )} - - - - ) : ( - - )} - - ); - }, - }, - { - valueType: 'divider', - title: '账单设置', - fieldProps: { - orientation: 'left', - children: '账单设置', - }, - }, - - { - title: '收款方', - valueType: 'select', - dataIndex: 'payee', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - options: data?.contract_peoples?.map((item: any) => ({ - label: item?.counterparty, - value: item?.counterparty, - })), - }, - }, - { - title: '付款方', - valueType: 'select', - dataIndex: 'payer', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - options: data?.contract_peoples?.map((item: any) => ({ - label: item?.counterparty, - value: item?.counterparty, - })), - }, - }, - { - valueType: 'formList', - dataIndex: 'bills', - // title: '账单设置', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - creatorRecord: { - cost_type: data?.income_expense_type, - }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '费用类型', - dataIndex: 'cost_type', - colProps: { span: 3 }, - align: 'center', - renderFormItem: () => { - let res = - ContractBillsCostTypeEnum[ - data?.income_expense_type as keyof typeof ContractBillsCostTypeEnum - ]; - return data?.income_expense_type ? ( - {res?.text} - ) : ( - '-' - ); - }, - }, - { - title: '账单月份', - valueType: 'dateMonth', - dataIndex: 'year_month', - colProps: { span: 4 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - { - title: '期数', - valueType: 'digit', - dataIndex: 'period_num', - colProps: { span: 4 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - { - title: '账单金额', - valueType: 'digit', - dataIndex: 'amount', - colProps: { span: 5 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - addonAfter: '元', - }, - }, - - { - title: '备注', - dataIndex: 'remark', - colProps: { span: 8 }, - }, - ], - }, - ], - }, - ]; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/contract/contract_bills/pages/update.tsx b/src/pages/contract/contract_bills/pages/update.tsx deleted file mode 100644 index b381b14..0000000 --- a/src/pages/contract/contract_bills/pages/update.tsx +++ /dev/null @@ -1,259 +0,0 @@ -import { MyModalFormProps, MyPageContainer, rulesHelper } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractBillsCostTypeEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, message, Space, Tag } from 'antd'; -import { useEffect, useState } from 'react'; -export default function Index({ title = '编辑合同账单' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [dataBill, setBillShow] = useState({}); - const [data, setShow] = useState({}); - - const getContractsShow = (id: number) => { - Apis.Contract.Contracts.Show({ id: id }).then((res) => { - setShow(res?.data); - }); - }; - - const totalBillSeparableAmount = () => { - return parseFloat( - ( - parseFloat(data?.total_amount) - parseFloat(data?.total_bill_amount) - ).toFixed(2), - ); - }; - - const loadShow = () => { - Apis.Contract.ContractBills.Show({ id: Number(id) }).then((res) => { - res.data.year_month = `${res?.data?.year}-${ - res?.data?.month < 10 ? `0${res?.data?.month}` : res?.data?.month - }`; - setBillShow(res?.data); - form.setFieldsValue(res?.data); - getContractsShow(res?.data?.contracts_id); - // form.setFieldsValue(res?.data); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title="编辑" - wrapperCol={{ span: 24 }} - width="1000px" - layoutType="Form" - form={form} - onFinish={async (values: any) => { - let total_bill_amount = totalBillSeparableAmount(); - let k = values?.year_month?.split('-'); - values.year = k[0]; - values.month = parseInt(k[1]); - if (data?.settlement_mode === 'OpenContract') { - //开口合同 - return Apis.Contract.ContractBills.Update({ - ...values, - id: Number(id), - }) - .then(() => { - navigate(-1); - message.success('提交成功'); - return true; - }) - .catch(() => false); - } else { - if (total_bill_amount > 0) { - if ( - values?.amount <= - total_bill_amount + parseFloat(dataBill?.amount) - ) { - return Apis.Contract.ContractBills.Update({ - ...values, - id: Number(id), - }) - .then(() => { - navigate(-1); - message.success('提交成功'); - return true; - }) - .catch(() => false); - } else { - message.warning('可拆分金额不够!'); - } - } else { - message.warning('没有多余金额可生成账单!'); - } - } - }} - columns={[ - { - name: ['contracts_id'], - valueType: 'dependency', - columns: ({ contracts_id }: any) => { - return contracts_id - ? [ - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - -
- 收支类型: - { - ContractTemplatesIncomeExpenseTypeEnum[ - data?.income_expense_type as keyof typeof ContractTemplatesIncomeExpenseTypeEnum - ]?.text - } -
-
- 结算模式: - { - ContractsSettlementModeEnum[ - data?.settlement_mode as keyof typeof ContractsSettlementModeEnum - ]?.text - } -
-
总金额: ¥{data?.total_amount}
-
- 已生成账单: ¥{data?.total_bill_amount} -
- {data?.settlement_mode === - 'LumpSumContract' && ( -
- 可拆分金额: ¥{totalBillSeparableAmount()} -
- )} -
-
- ); - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - title: '基本信息', - }, - }, - { - title: '收款方', - valueType: 'select', - dataIndex: 'payee', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabled: true, - }, - }, - { - title: '付款方', - valueType: 'select', - dataIndex: 'payer', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabled: true, - }, - }, - { - title: '费用类型', - dataIndex: 'cost_type', - colProps: { span: 4 }, - align: 'center', - renderFormItem: () => { - let res = - ContractBillsCostTypeEnum[ - data?.income_expense_type as keyof typeof ContractBillsCostTypeEnum - ]; - return {res?.text}; - }, - }, - { - title: '账单月份', - valueType: 'dateMonth', - dataIndex: 'year_month', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - { - title: '期数', - valueType: 'digit', - dataIndex: 'period_num', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - { - title: '账单金额', - valueType: 'digit', - dataIndex: 'amount', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - - { - title: '备注', - dataIndex: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ] - : []; - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/contract/contract_seal_logs/index.tsx b/src/pages/contract/contract_seal_logs/index.tsx deleted file mode 100644 index e69ba07..0000000 --- a/src/pages/contract/contract_seal_logs/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import type { TabsProps } from 'antd'; -import { Button, Tabs } from 'antd'; -import { useEffect, useState } from 'react'; -import Seals from './seals'; -import UnusedSeal from './unused'; -import UsedSeal from './used'; - -export default function Index({ title = '合同用印' }) { - const getCurrentPermissions = useCurrentPermissions(); - const [searchParams] = useSearchParams(); - const [activeKey, setActiveKey] = useState('1'); - const navigate = useNavigate(); - const items: TabsProps['items'] = getCurrentPermissions({ - UnusedSeal: { - key: 'UnusedSeal', - label: '未用印合同', - children: , - }, - UsedSeal: { - key: 'UsedSeal', - label: '已用印合同', - children: , - }, - Seals: { - key: 'Seals', - label: '印章管理', - children: , - }, - }); - useEffect(() => { - if (searchParams?.get('key')) { - setActiveKey(searchParams?.get('key') || '1'); - } - }, []); - - return ( - - navigate('/contract/contracts_bi')} - > - 返回合同BI - - ), - }} - /> - - ); -} diff --git a/src/pages/contract/contract_seal_logs/seals/index.tsx b/src/pages/contract/contract_seal_logs/seals/index.tsx deleted file mode 100644 index 601b0d6..0000000 --- a/src/pages/contract/contract_seal_logs/seals/index.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '印章管理' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - create: , - }, - 'Seals', - ); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - enabled: ( - - Apis.Company.CompanySeals.Update({ - id: item.id ?? 0, - is_enabled: item.is_enabled === 1 ? 0 : 1, - type: item.type, - company_suppliers_id: item.company_suppliers_id, - }).then(() => action?.reload()) - } - /> - ), - delete: ( - - Apis.Company.CompanySeals.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'Seals', - ); - }; - return ( - - MyProTableProps.request(params, sort, Apis.Company.CompanySeals.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '企业名称', - dataIndex: ['company_supplier', 'name'], - search: { transform: (value) => ({ company_supplier_name: value }) }, - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - valueEnum: CompanySealsTypeEnum, - }), - { - title: '印章图片', - search: false, - render: (_, item: any) => { - if (!item?.seal_image || !item.seal_image[0]?.url) { - return '-'; - } - return ; - }, - }, - { - title: '保管人', - search: false, - render: (_, item: any) => { - return `${item.company_employee?.name || ''}_${ - item.company_employee?.phone || '' - }`; - }, - }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - search: false, - }), - { - title: '启用日期', - dataIndex: 'use_date', - search: false, - }, - // MyColumns.UpdatedAt(), - // MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/seals/modals/Create.tsx b/src/pages/contract/contract_seal_logs/seals/modals/Create.tsx deleted file mode 100644 index 509a51d..0000000 --- a/src/pages/contract/contract_seal_logs/seals/modals/Create.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加印章`} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 18 }} - align="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Company.CompanySeals.Store({ - ...values, - is_enabled: 1, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects.Supplier({ - key: 'company_suppliers_id', - title: '供应商', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 24 }, - required: true, - }), - MyFormItems.EnumSelect({ - key: 'type', - title: '印章类型', - valueEnum: CompanySealsTypeEnum, - required: true, - colProps: { span: 24 }, - }), - Selects.Employees({ - key: 'company_employees_id', - title: '保管人', - colProps: { span: 24 }, - required: true, - }), - { - key: 'use_date', - title: '启用日期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - }, - }, - MyFormItems.UploadImages({ - key: 'seal_image', - title: '印章图片', - colProps: { span: 24 }, - max: 1, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/seals/modals/Update.tsx b/src/pages/contract/contract_seal_logs/seals/modals/Update.tsx deleted file mode 100644 index 5303d8c..0000000 --- a/src/pages/contract/contract_seal_logs/seals/modals/Update.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum } 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={`编辑印章`} - trigger={} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 18 }} - align="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Company.CompanySeals.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects.Supplier({ - key: 'company_suppliers_id', - title: '供应商', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 24 }, - required: true, - }), - MyFormItems.EnumSelect({ - key: 'type', - title: '印章类型', - valueEnum: CompanySealsTypeEnum, - required: true, - colProps: { span: 24 }, - }), - Selects.Employees({ - key: 'company_employees_id', - title: '保管人', - colProps: { span: 24 }, - required: true, - }), - { - key: 'use_date', - title: '启用日期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - }, - }, - MyFormItems.UploadImages({ - key: 'seal_image', - title: '印章图片', - colProps: { span: 24 }, - max: 1, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/unused/index.tsx b/src/pages/contract/contract_seal_logs/unused/index.tsx deleted file mode 100644 index 53b0826..0000000 --- a/src/pages/contract/contract_seal_logs/unused/index.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsStatusEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import dayjs from 'dayjs'; -import Create from './modals/UseSeal'; - -export default function Index() { - const navigate = useNavigate(); - - return ( - { - return MyProTableProps.request( - { - ...params, - status: ContractsStatusEnum.Approved.value, - is_use_seal: false, - }, - sort, - Apis.Contract.Contracts.List, - ); - }} - headerTitle="未用印合同" - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同类型', - dataIndex: 'contract_type_name', - }, - { - title: '合同名称', - dataIndex: 'name', - }, - { - title: '合同编号', - dataIndex: 'code', - render: (_, item: any) => { - return ( - { - navigate(`/contract/contracts/show/${item.id}`); - }} - > - {item?.name} - - ); - }, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ContractsStatusEnum, - search: false, - }), - MyColumns.EnumTag({ - title: '收支类型', - dataIndex: 'income_expense_type', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - search: false, - }), - MyColumns.EnumTag({ - title: '合同性质', - dataIndex: 'contract_nature', - valueEnum: ContractsContractNatureEnum, - search: false, - }), - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${dayjs(item.start_time).format('YYYY-MM-DD')}至${dayjs( - item.end_time, - ).format('YYYY-MM-DD')}`; - }, - }, - { - title: '签订部门', - dataIndex: 'sign_department', - search: false, - }, - { - title: '签订时间', - dataIndex: 'sign_time', - render: (_, item: any) => { - return item.sign_time - ? dayjs(item.sign_time).format('YYYY-MM-DD') - : '-'; - }, - search: false, - }, - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/unused/modals/UseSeal.tsx b/src/pages/contract/contract_seal_logs/unused/modals/UseSeal.tsx deleted file mode 100644 index 37bd17a..0000000 --- a/src/pages/contract/contract_seal_logs/unused/modals/UseSeal.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { Form, message, Space } from 'antd'; - -export default function UseSeal(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`${props.title}`} - layout="horizontal" - labelCol={{ span: 6 }} - wrapperCol={{ span: 18 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - form.setFieldsValue({ - seal_ids: props?.item?.seal_info || [], - }); - } - }} - trigger={ - - } - onFinish={async (values: any) => { - console.log(values, 'values'); - return Apis.Contract.ContractSealLogs.Store({ - ...values, - contracts_id: props?.item?.id, - seal_ids: values?.can_seal_ids || [], - is_use_seal: values?.is_use_seal ? 1 : 0, - is_external_seal_usage: values?.is_external_seal_usage ? 1 : 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - // title: '登记信息', - dataIndex: '合同信息', - valueType: 'text', - - renderFormItem: () => ( - - - - - {props?.item?.code} | {props?.item?.name || '-'} - - - - - ), - colProps: { span: 24 }, - formItemProps: { - labelCol: { span: 6 }, - wrapperCol: { span: 18 }, - }, - }, - Selects.ContractSeals({ - key: 'seal_ids', - required: true, - title: '可用印章', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - }, - }), - Selects?.Employees({ - title: '用印申请人', - key: 'company_employees_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - required: true, - }), - { - key: 'number_contract_copies', - title: '合同份数', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '用印时间', - key: 'use_seal_time', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - disabledDate: (current: any) => { - // 只能选今天及以后的日期 - const today = new Date(); - today.setHours(0, 0, 0, 0); // 设置为今天的00:00:00 - return current && current > today; - }, - }, - }, - { - title: '交易方用印', - tooltip: '该合同中,非我司主体的交易方,是否已经盖章', - key: 'is_use_seal', - valueType: 'switch', - colProps: { span: 24 }, - fieldProps: { - checkedChildren: '已用印', - unCheckedChildren: '未用印', - }, - }, - { - title: '是否外出用印', - tooltip: '本次用印,是否在非公司办公范围内', - key: 'is_external_seal_usage', - valueType: 'switch', - colProps: { span: 24 }, - fieldProps: { - checkedChildren: '是', - unCheckedChildren: '否', - }, - }, - // { - // valueType: 'formList', - // dataIndex: 'seal_ids', - // title: '实际用章', - // formItemProps: { ...rulesHelper.array }, - // fieldProps: { - // copyIconProps: false, - // // deleteIconProps: false, - // }, - // columns: [ - // { - // valueType: 'group', - // colProps: { span: 24 }, - // columns: [ - // Selects?.CompanySeals({ - // title: '', - // key: 'seal_id', - // colProps: { span: 24 }, - // required: true, - // fieldProps: { - // placeholder: '请选择要使用的印章(可搜索)', - // }, - // }), - // ], - // }, - // ], - // }, - { - title: '备注', - key: 'remarks', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/used/index.tsx b/src/pages/contract/contract_seal_logs/used/index.tsx deleted file mode 100644 index 7967739..0000000 --- a/src/pages/contract/contract_seal_logs/used/index.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate, useParams } from '@umijs/max'; -import { Space } from 'antd'; -import Show from './modals/Show'; -import Update from './modals/Update'; - -export default function Index({ title = '合同用章' }) { - const navigate = useNavigate(); - - const { id } = useParams<{ id: string }>(); - return ( - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractSealLogs.List, - ) - } - headerTitle="已用印合同" - params={{ contracts_id: id }} - // toolBarRender={(action) => [ - // , - // ]} - columns={[ - // MyColumns.ID({ - // search: false, - // }), - - { - title: '合同名称', - dataIndex: ['contract', 'name'], - }, - { - title: '合同编号', - dataIndex: ['contract', 'code'], - render: (_, item: any) => { - return ( - { - navigate(`/contract/contracts/show/${item.contracts_id}`); - }} - > - {item?.contract?.code} - - ); - }, - }, - { - title: '合同编号', - dataIndex: 'code', - hidden: true, - }, - // { - // title: '合同ID', - // dataIndex: 'contracts_id', - // }, - { - title: '印章', - search: false, - render: (_, item: any) => ( - - {item?.seal_info?.map((res: any) => { - return res?.company_name; - })} - - ), - }, - { - title: '申请用印人', - dataIndex: ['company_employee', 'name'], - search: false, - }, - - { - title: '用印合同', - dataIndex: 'number_contract_copies', - search: false, - }, - MyColumns.Boolean({ - dataIndex: 'is_external_seal_usage', - title: '是否外出用印', - search: false, - }), - { - title: '操作印章人', - dataIndex: ['operator_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/used/modals/Show.tsx b/src/pages/contract/contract_seal_logs/used/modals/Show.tsx deleted file mode 100644 index c8ee4c2..0000000 --- a/src/pages/contract/contract_seal_logs/used/modals/Show.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { CompanySealsTypeEnum } from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Space, Spin } from 'antd'; -import { useState } from 'react'; - -export default function Show(props: MyBetaModalFormProps) { - const [loading, setLoading] = useState(true); - const [data, setData] = useState({}); - - const handleOpenModal = () => { - if (props?.item?.id) { - setLoading(true); - Apis.Contract.ContractSealLogs.Show({ id: props.item.id }) - .then((res) => { - setData(res?.data || {}); - }) - .finally(() => { - setLoading(false); - }); - } - }; - return ( - - - - - {/* 基本信息 */} - - {data?.contracts_id} - - - {data?.seal_person || data?.company_employees_name} - - - {data?.use_seal_time} - - - {/* 用印详情 */} - - {data?.number_contract_copies} - - - - - - - - - {/* 印章信息 */} - - {data?.seal_ids?.map((sealId: string, index: number) => ( - - - - )) || '-'} - - - {/* 其他信息 */} - - {data?.remarks || '-'} - - - {/* 时间信息 */} - - {data?.created_at} - - - {data?.updated_at} - - - - - - } - /> - ); -} diff --git a/src/pages/contract/contract_seal_logs/used/modals/Update.tsx b/src/pages/contract/contract_seal_logs/used/modals/Update.tsx deleted file mode 100644 index 7c990fa..0000000 --- a/src/pages/contract/contract_seal_logs/used/modals/Update.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`编辑${props.title}`} - trigger={} - layout="horizontal" - labelCol={{ span: 6 }} - wrapperCol={{ span: 18 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - seal_ids: props.item?.seal_info?.map((item: any) => ({ - seal_id: item?.id || item, - })), - }); - } - }} - onFinish={async (values: any) => - Apis.Contract.ContractSealLogs.Update({ - ...values, - contracts_id: props?.item?.id, - is_use_seal: values?.is_use_seal ? 1 : 0, - is_external_seal_usage: values?.is_external_seal_usage ? 1 : 0, - id: props.item?.id ?? 0, - seal_ids: values?.seal_ids?.map((item: any) => item.seal_id), - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.Employees({ - title: '用印申请人', - key: 'company_employees_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - required: true, - }), - - { - key: 'number_contract_copies', - title: '合同份数', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '用印时间', - key: 'use_seal_time', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - disabledDate: (current: any) => { - // 只能选今天及以后的日期 - const today = new Date(); - today.setHours(0, 0, 0, 0); // 设置为今天的00:00:00 - return current && current > today; - }, - }, - }, - { - title: '交易方用印', - tooltip: '该合同中,非我司主体的交易方,是否已经盖章', - key: 'is_use_seal', - valueType: 'switch', - colProps: { span: 24 }, - fieldProps: { - checkedChildren: '已用印', - unCheckedChildren: '未用印', - }, - }, - { - title: '是否外出用印', - tooltip: '本次用印,是否在非公司办公范围内', - key: 'is_external_seal_usage', - valueType: 'switch', - colProps: { span: 24 }, - fieldProps: { - checkedChildren: '是', - unCheckedChildren: '否', - }, - }, - { - valueType: 'formList', - dataIndex: 'seal_ids', - title: '实际用章', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - Selects?.CompanySeals({ - title: '', - key: 'seal_id', - colProps: { span: 24 }, - required: true, - fieldProps: { - placeholder: '请选择要使用的印章(可搜索)', - }, - }), - ], - }, - ], - }, - { - title: '备注', - key: 'remarks', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_templates/index.tsx b/src/pages/contract/contract_templates/index.tsx deleted file mode 100644 index 26e8274..0000000 --- a/src/pages/contract/contract_templates/index.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractTemplatesIncomeExpenseTypeEnum, - ContractTemplatesSourceEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '合同模版' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - create: , - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - update: , - enabled: ( - - Apis.Contract.ContractTemplates.Update({ - id: item.id ?? 0, - is_enabled: item.is_enabled === 1 ? 0 : 1, - name: item.name, - code: item.code, - source: item.source, - income_expense_type: item.income_expense_type, - contract_types_id: item.contract_types_id, - }).then(() => action?.reload()) - } - /> - ), - delete: ( - - Apis.Contract.ContractTemplates.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }); - }; - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractTemplates.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - MyColumns.EnumTag({ - title: '收支类型', - dataIndex: 'income_expense_type', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - search: false, - }), - { - title: '合同类型', - dataIndex: ['contract_type', 'name'], - search: { transform: (value) => ({ type_name: value }) }, - }, - { - title: '模板名称', - dataIndex: 'name', - }, - { - title: '模板编号', - dataIndex: 'code', - }, - { - title: '模板描述', - dataIndex: 'description', - width: 200, - search: false, - }, - MyColumns.EnumTag({ - title: '来源', - dataIndex: 'source', - valueEnum: ContractTemplatesSourceEnum, - }), - MyColumns.Boolean({ - title: '是否启用', - dataIndex: 'is_enabled', - search: false, - }), - { - title: '附件', - search: false, - render: (_, item) => { - // 文件名缩写函数 - const truncateFileName = ( - fileName: string, - maxLength: number = 16, - ) => { - if (!fileName || fileName.length <= maxLength) { - return fileName; - } - const extensionIndex = fileName.lastIndexOf('.'); - if ( - extensionIndex > -1 && - extensionIndex < fileName.length - 1 - ) { - // 有扩展名的情况 - const extension = fileName.substring(extensionIndex); - const nameWithoutExt = fileName.substring(0, extensionIndex); - const availableLength = maxLength - extension.length; - if (availableLength <= 5) { - // 如果剩余长度太少,直接截断并保留扩展名 - return ( - fileName.substring(0, maxLength - 3) + '...' + extension - ); - } - return ( - nameWithoutExt.substring(0, availableLength - 3) + - '...' + - extension - ); - } - // 没有扩展名的情况 - return fileName.substring(0, maxLength - 3) + '...'; - }; - - // 当模板启用时,附件显示'-' - if (item.is_enabled === 0) { - return '-'; - } - - return ( -
- {item?.attachment?.length > 0 - ? item.attachment.map((file: any, index: number) => { - const fileName = file?.name || `文件${index + 1}`; - const truncatedName = truncateFileName(fileName); - return ( - - ); - }) - : '-'} -
- ); - }, - width: 200, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> -
- ); -} diff --git a/src/pages/contract/contract_templates/modals/Create.tsx b/src/pages/contract/contract_templates/modals/Create.tsx deleted file mode 100644 index e85da2f..0000000 --- a/src/pages/contract/contract_templates/modals/Create.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - ContractTemplatesIncomeExpenseTypeEnum, - ContractTemplatesSourceEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Contract.ContractTemplates.Store({ - ...values, - // is_enabled: values.is_enabled ? 1 : 0, - is_enabled: 1, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'income_expense_type', - title: '收支类型', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - required: true, - colProps: { span: 24 }, - }), - Selects.ContractTypes({ - title: '合同类型', - tooltip: '可在【配置:合同类型配置】中设置可选的合同类型', - required: true, - }), - { - key: 'name', - title: '模板名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - key: 'code', - title: '模板编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - MyFormItems.EnumRadio({ - key: 'source', - title: '模板来源', - valueEnum: ContractTemplatesSourceEnum, - required: true, - colProps: { span: 24 }, - }), - { - title: '模板描述', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachment', - title: '模板附件', - tooltip: '限传 9 份,仅支持docx,doc,pdf格式', - uploadType: 'file', - accept: '.docx,.doc,.pdf', - colProps: { span: 24 }, - max: 9, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contract_templates/modals/Update.tsx b/src/pages/contract/contract_templates/modals/Update.tsx deleted file mode 100644 index 1b203d1..0000000 --- a/src/pages/contract/contract_templates/modals/Update.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - ContractTemplatesIncomeExpenseTypeEnum, - ContractTemplatesSourceEnum, -} 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={`编辑${props.title}`} - trigger={} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.ContractTemplates.Update({ - ...values, - is_enabled: 1, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'income_expense_type', - title: '收支类型', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - required: true, - colProps: { span: 24 }, - }), - Selects.ContractTypes({ - title: '合同类型', - tooltip: '可在【配置:合同类型配置】中设置可选的合同类型', - required: true, - }), - { - key: 'name', - title: '模板名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - key: 'code', - title: '模板编号', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - MyFormItems.EnumRadio({ - key: 'source', - title: '模板来源', - valueEnum: ContractTemplatesSourceEnum, - required: true, - colProps: { span: 24 }, - }), - { - title: '模板描述', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'attachment', - title: '模板附件', - tooltip: '限传 9 份,仅支持docx,doc,pdf格式', - uploadType: 'file', - accept: '.docx,.doc,.pdf', - colProps: { span: 24 }, - max: 9, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contract_types/index.tsx b/src/pages/contract/contract_types/index.tsx deleted file mode 100644 index 282d543..0000000 --- a/src/pages/contract/contract_types/index.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '合同类型' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Contract.ContractTypes.List, - ) - } - toolBarRender={(action) => [ - , - ]} - search={false} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Contract.ContractTypes.Delete({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/contract/contract_types/modals/Create.tsx b/src/pages/contract/contract_types/modals/Create.tsx deleted file mode 100644 index 3d9cbe3..0000000 --- a/src/pages/contract/contract_types/modals/Create.tsx +++ /dev/null @@ -1,52 +0,0 @@ -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 Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - layout="horizontal" - labelCol={{ span: 6 }} - wrapperCol={{ span: 18 }} - labelAlign="left" - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Contract.ContractTypes.Store({ - ...values, - is_enabled: 1, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '类型名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contract_types/modals/Update.tsx b/src/pages/contract/contract_types/modals/Update.tsx deleted file mode 100644 index 949104e..0000000 --- a/src/pages/contract/contract_types/modals/Update.tsx +++ /dev/null @@ -1,59 +0,0 @@ -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} - title={`编辑${props.title}`} - trigger={} - key={new Date().getTime()} - layout="horizontal" - labelCol={{ span: 6 }} - wrapperCol={{ span: 18 }} - labelAlign="left" - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.ContractTypes.Update({ - ...values, - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '类型名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/index.tsx b/src/pages/contract/contracts/index.tsx deleted file mode 100644 index ec9ed37..0000000 --- a/src/pages/contract/contracts/index.tsx +++ /dev/null @@ -1,322 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsStatusEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Dropdown, Space } from 'antd'; -import dayjs from 'dayjs'; -import Archives from '../contract_archives/modals/Archives'; -import UseSeal from '../contract_seal_logs/unused/modals/UseSeal'; -import Change from './modals/Change'; -import Terminated from './modals/Terminated'; -import Voided from './modals/Voided'; - -export default function Index({ title = '合同拟制' }) { - const navigate = useNavigate(); - const [searchParams, setSearchParams]: any = useSearchParams(); - return ( - - { - setSearchParams(params); - return MyProTableProps.request( - !searchParams?.get('page') - ? { - status: searchParams?.get('status') || null, - ...params, - } - : params, - sort, - Apis.Contract.Contracts.List, - ); - }} - headerTitle="合同列表" - toolBarRender={() => [ - { - navigate('/contract/contracts/pages/contract_create'); - }} - title="新增合同" - />, - // , - ]} - columns={[ - MyColumns.ID({ search: false }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - MyColumns.EnumTag({ - title: '合同状态', - dataIndex: 'status', - valueEnum: ContractsStatusEnum, - fieldProps: { - defaultValue: searchParams?.get('status') || undefined, - }, - }), - { - title: '合同编号', - dataIndex: 'code', - }, - { - title: '合同名称', - dataIndex: 'name', - // render: (_, item: any) => { - // return ( - // { - // navigate(`/contract/contracts/show/${item.id}`); - // }} - // > - // {item?.name} - // - // ); - // }, - }, - { - title: '合同类型', - dataIndex: 'contract_type_name', - }, - - MyColumns.EnumTag({ - title: '收支类型', - dataIndex: 'income_expense_type', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - }), - MyColumns.EnumTag({ - title: '合同性质', - dataIndex: 'contract_nature', - valueEnum: ContractsContractNatureEnum, - }), - { - title: '合同总价', - search: false, - render: (_, item: any) => { - return `¥${item.total_amount}`; - }, - }, - { - title: '账单金额', - render: (_, item: any) => { - return `¥${item.total_bill_amount}`; - }, - }, - { - title: '交易金额', - render: (_, item: any) => { - return item.income_expense_type === 'Income' - ? `¥${item.total_income_amount}` - : item.income_expense_type === 'Expense' - ? `¥${item.total_expense_amount}` - : '-'; - }, - search: false, - }, - // { - // title: '收付进度', - // search: false, - // render: (_, item: any) => { - // return `¥${item?.total_expense_amount || 0}/${ - // item.total_bill_amount || 0 - // }`; - // }, - // }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${dayjs(item.start_time).format('YYYY-MM-DD')}至${dayjs( - item.end_time, - ).format('YYYY-MM-DD')}`; - }, - }, - - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { full_name: value }; - }, - }, - }, - { - title: '签订部门', - dataIndex: 'sign_department', - search: false, - }, - Selects?.OrganizationSearch({ - title: '签订部门', - key: 'organizations_id', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - }, - search: { - transform: (value) => { - return { - organization_name: - value.length > 0 ? value[value.length - 1] : '', - }; - }, - }, - }), - { - title: '用印日期', - dataIndex: 'sign_time', - valueType: 'date', - render: (_, item: any) => { - return item.sign_time - ? dayjs(item.sign_time).format('YYYY-MM-DD') - : '-'; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - { - navigate(`/contract/contracts/show/${item.id}`); - }} - /> - {(item.status === 'TemporaryStorage' || - item.status === 'Rejected') && ( - { - navigate( - `/contract/contracts/pages/contract_update?id=${item.id}`, - ); - }} - title="编辑" - /> - )} - - {(item.status === 'Signed' || item.status === 'Archived') && ( - - )} - - {item.status === 'Approved' && ( - - )} - - {item.status === 'Signed' && ( - - )} - {(item.status === 'Approved' || - item.status === 'Signed' || - item.status === 'Archived') && - item.income_expense_type !== 'None' && ( - { - navigate( - `/contract/contract_bills/pages/create?id=${item.id}`, - ); - }} - title="账单" - /> - )} - - { - Apis.Contract.Contracts.ContractCopy({ - id: item?.id ?? 0, - }).then((res) => { - navigate( - `/contract/contracts/pages/contract_update?id=${res?.data?.id}`, - ); - }); - console.log(item); - }} - /> - ), - key: 'contract_copy', - }, - { - label: ( - - ), - key: 'terminated', - }, - { - label: ( - - ), - key: 'voided', - }, - { - label: ( - - Apis.Contract.Contracts.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - key: 'delete', - }, - ], - }} - trigger={['click']} - > - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/contract/contracts/modals/Change.tsx b/src/pages/contract/contracts/modals/Change.tsx deleted file mode 100644 index e29d70c..0000000 --- a/src/pages/contract/contracts/modals/Change.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { SelectContract } from '@/components/SelectContract'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useSearchParams } from '@umijs/max'; -import { Form, message } from 'antd'; -import { useEffect, useState } from 'react'; - -export default function UseSeal(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - - const [data, setData] = useState({}); // 修复状态变量命名不一致 - // const [selectedRow, setSelectedRow] = useState({}); - // const [contractId, setContractId] = useState(0); - const loadShow = () => { - const currentId = props?.item?.id || Number(id); - if (currentId) { - Apis.Contract.Contracts.Show({ id: Number(currentId) }).then((res) => { - setData(res?.data); - // setSelectedRow(res?.data?.resource); - form.setFieldsValue({ - ...res?.data, - peoples: res?.data?.contract_peoples, - }); // 编辑赋值 - }); - } - }; - - useEffect(() => { - loadShow(); - }, [id]); - return ( - - {...MyModalFormProps.props} - title={`简易变更`} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - form.setFieldValue('organization', [props.item?.sign_department]); - } - }} - trigger={ - - } - onFinish={async (values: any) => { - console.log(values, 'values'); - return Apis.Contract.Contracts.Update({ - ...values, - id: props?.item?.id, - code: props?.item?.code, - sign_department: - values.organization?.[values.organization?.length - 1], - income_expense_type: props?.item?.income_expense_type, - contract_nature: props?.item?.contract_nature, - contract_types_id: props?.item?.contract_types_id, - start_time: props?.item?.start_time, - end_time: props?.item?.end_time, - settlement_mode: props?.item?.settlement_mode, - sign_subject: props?.item?.sign_subject, - attachments: props?.item?.attachments || [], - peoples: data?.contract_peoples, // 使用从show接口获取的数据 - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - key: 'name', - title: '合同名称', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - SelectContract.AssetProjects({ - key: 'asset_projects_id', - title: '选择关联项目', - colProps: { span: 24 }, - required: true, - fieldProps: { - showSearch: true, - // mode: 'multiple', - }, - }), - SelectContract.OrganizationsName({ - key: 'organization', - required: true, - title: '选择签约部门', - colProps: { span: 24 }, - }), - SelectContract.EmployeeName({ - key: 'contract_liaison', - title: '合同对接人', - colProps: { span: 24 }, - required: true, - }), - { - title: '合同份数', - key: 'number_contract_copies', - valueType: 'digit', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/Review.tsx b/src/pages/contract/contracts/modals/Review.tsx deleted file mode 100644 index 763072a..0000000 --- a/src/pages/contract/contracts/modals/Review.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ApprovalRecordsStatusEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -const DormigoryBedAuditFlowsAuditStatusEnum = { - Approved: { text: '通过', value: 'Approved' }, - Rejected: { text: '驳回', value: 'Rejected' }, -}; -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Approval.ApprovalInstances.Approve({ - ...values, - record_id: props.item?.record_id ?? 0, - }) - .then(() => { - message.success('审核成功'); - navigate(-1); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'status', - title: '审核意见', - valueEnum: () => { - let obj = JSON.parse(JSON.stringify(ApprovalRecordsStatusEnum)); - delete obj.Pending; - return obj; - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['status'], - columns: ({ status }) => { - return status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'opinion', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'opinion', - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/SignSubjectSelectList.tsx b/src/pages/contract/contracts/modals/SignSubjectSelectList.tsx deleted file mode 100644 index 19f0d00..0000000 --- a/src/pages/contract/contracts/modals/SignSubjectSelectList.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { message, type TableProps } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function SurveysSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - }, -) { - const modalRef = useRef(); - // const [selectedDataRow, setSelectedDataRow] = useState({}); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: TableProps['rowSelection'] = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows[0], 'selectedRows[0]'); - setSelectedRow(selectedRows[0]); - }, - defaultSelectedRowKeys: props?.item?.id ? [props?.item?.id] : [], - }; - - return ( - { - setSelectedRow(props?.item); - console.log(props?.item, 'props?.item?.id'); - }} - node={ - - MyProTableProps.request( - params, - sort, - Apis.Company.CompanySuppliers.List, - ) - } - rowSelection={{ type: 'radio', ...rowSelection }} - options={false} - tableAlertOptionRender={() => { - return ( - { - let res: any = getSelectedRow; - if (!res?.legal_person) { - message.error('当前主体没有设置法人信息!'); - return; - } - props?.onChange?.(res); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '供应商名称', - dataIndex: 'name', - }, - { - title: '公司名称', - dataIndex: 'company_name', - search: false, - }, - { - title: '法人', - dataIndex: 'legal_person', - }, - { - title: '纳税人号', - dataIndex: 'tax_number', - }, - { - title: '注册地址', - search: false, - render: (_, item: any) => { - return `${item.province}${item.city}${item.area}${item.street}${item.address}`; - }, - }, - ]} - /> - } - > - ); -} diff --git a/src/pages/contract/contracts/modals/SubmitApproval.tsx b/src/pages/contract/contracts/modals/SubmitApproval.tsx deleted file mode 100644 index e8cfc06..0000000 --- a/src/pages/contract/contracts/modals/SubmitApproval.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import { - MyBetaModalFormProps, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalTemplateNodesNodeTypeEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function SubmitApproval( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - onCancel?: () => void; - }, -) { - const modalRef = useRef(); - - const [form] = Form.useForm(); - const [ApprovalTemplates, setApprovalTemplates] = useState([]); - - return ( - { - // setSelectedRow(props?.item); - }} - onCancel={() => { - props?.onCancel?.(); - }} - node={ - - {...MyModalFormProps.props} - title={props?.title} - width="800px" - layoutType="form" - wrapperCol={{ span: 24 }} - form={form} - onFinish={async (values: any) => { - console.log(values, 'values222'); - Apis.Contract.Contracts.SubmitApproval({ - ...values, - id: props.item?.contracts_id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('提交成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.ApprovalTemplates({ - key: 'approval_templates_id', - title: '审批模版', - params: { - type: ApprovalTemplatesTypeEnum.Contract.value, - is_enabled: '1', - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - onChange: (e: any) => { - // 确保e是有效值,并且使用正确的value字段 - if (e) { - const templateId = typeof e === 'object' ? e.value : e; - Apis.Approval.ApprovalTemplates.Show({ - id: templateId, - }).then((res) => { - setApprovalTemplates(res?.data?.approval_template_nodes); - form.setFieldsValue({ - approval_templates_id: templateId, - node_approvers: res?.data?.approval_template_nodes?.map( - (item: any) => ({ - ...item, - members: item?.approval_template_node_members?.map( - (member: any) => member?.company_employees_id, - ), - }), - ), - }); - }); - } - // 不返回任何值,防止默认行为 - }, - }, - }), - { - valueType: 'dependency', - name: ['approval_templates_id'], - columns: ({ approval_templates_id }) => { - return approval_templates_id - ? [ - { - valueType: 'formList', - dataIndex: 'node_approvers', - // title: '审批节点', - fieldProps: { - copyIconProps: false, - deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'node_type', - // title: `类型`, - valueEnum: ApprovalTemplateNodesNodeTypeEnum, - colProps: { span: 5 }, - formItemProps: { - ...rulesHelper.text, - }, - fieldProps: { - disabled: true, - }, - }), - { - // title: '节点名称', - key: 'name', - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - }, - fieldProps: { - disabled: true, - }, - }, - - { - valueType: 'dependency', - name: ['node_type'], - columns: ({ node_type }) => { - return [ - Selects.Employees({ - key: 'members', - title: ``, - colProps: { span: 13 }, - formItemProps: { - ...rulesHelper.array, - }, - fieldProps: { - mode: 'multiple', - showSearch: true, - maxCount: - node_type === - ApprovalTemplateNodesNodeTypeEnum - .Approver.value - ? 1 - : 9, - maxTagTextLength: 3, - labelRender: (res: any) => { - console.log(res, '222'); - if (res?.label) { - return res?.label; - } else { - return ApprovalTemplates?.map( - (item: any) => { - if ( - item - ?.approval_template_node_members - ?.length - ) { - return item?.approval_template_node_members?.map( - (i: any) => { - if ( - i?.company_employees_id === - res?.value - ) { - return ( - i?.company_employee - ?.name || '' - ); - } - }, - ); - } - }, - ); - } - }, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - ] - : []; - }, - }, - ]} - /> - } - > - ); -} diff --git a/src/pages/contract/contracts/modals/SubmitReview copy.tsx b/src/pages/contract/contracts/modals/SubmitReview copy.tsx deleted file mode 100644 index 03ccf26..0000000 --- a/src/pages/contract/contracts/modals/SubmitReview copy.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { SelectContract } from '@/components/SelectContract'; - -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -export default function SubmitReview(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title="选择企微审核人" - trigger={ - - } - width="600px" - layout="horizontal" - labelCol={{ span: 0 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - key={new Date().getTime()} - form={form} - initialValues={{ - company_employees_ids: [{}], - }} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => - Apis.Contract.Contracts.Submit({ - ...values, - id: props.item?.id ?? 0, - company_employees_ids: values.company_employees_ids.map( - (item: any) => item.id, - ), - }) - .then(() => { - message.success('审核成功'); - navigate(-1); - return true; - }) - .catch(() => false) - } - columns={[ - { - valueType: 'formList', - dataIndex: 'company_employees_ids', - title: '', - fieldProps: { - copyIconProps: false, - // 确保每个新增行都显示标题 - }, - columns: [ - SelectContract?.ExamineEmployees({ - title: '', - key: 'id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { placeholder: '请选择审核人' }, - required: true, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/SubmitReview.tsx b/src/pages/contract/contracts/modals/SubmitReview.tsx deleted file mode 100644 index e892e06..0000000 --- a/src/pages/contract/contracts/modals/SubmitReview.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { MyBetaModalFormProps, MyModalFormProps, rulesHelper } from '@/common'; -import { SelectContract } from '@/components/SelectContract'; - -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -export default function SubmitReview(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title={props.title || '选择企微审核人'} - width="600px" - layout="horizontal" - labelCol={{ span: 0 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - key={new Date().getTime()} - form={form} - open={props.open} - initialValues={{ - company_employees_ids: [{}], - }} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - if (props.onOpenChange) { - props.onOpenChange(open); - } - }} - onFinish={async (values) => { - const contractId = props.item?.id ?? 0; - if (contractId === 0) { - message.error('合同ID无效,请重新保存合同'); - return false; - } - return Apis.Contract.Contracts.Submit({ - ...values, - id: contractId, - company_employees_ids: values.company_employees_ids.map( - (item: any) => item.id, - ), - }) - .then(() => { - message.success('提交审核成功'); - navigate('/contract/contracts'); - return true; - }) - .catch((error) => { - console.error('提交审核失败:', error); - message.error('提交失败,请重试'); - return false; - }); - }} - columns={[ - { - valueType: 'formList', - dataIndex: 'company_employees_ids', - title: '', - fieldProps: { - copyIconProps: false, - // 确保每个新增行都显示标题 - }, - columns: [ - SelectContract?.ExamineEmployees({ - title: '', - key: 'id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { placeholder: '请选择审核人' }, - required: true, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/Terminated.tsx b/src/pages/contract/contracts/modals/Terminated.tsx deleted file mode 100644 index 1ca5484..0000000 --- a/src/pages/contract/contracts/modals/Terminated.tsx +++ /dev/null @@ -1,58 +0,0 @@ -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 Terminated(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={props?.title} - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.Contracts.Terminated({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('终止合同成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '终止合同原因', - valueType: 'textarea', - key: 'terminated_reason', - formItemProps: { ...rulesHelper.text }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/Update.tsx b/src/pages/contract/contracts/modals/Update.tsx deleted file mode 100644 index 2b065bb..0000000 --- a/src/pages/contract/contracts/modals/Update.tsx +++ /dev/null @@ -1,56 +0,0 @@ -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.ContractTypes.Update({ - ...values, - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/modals/Voided.tsx b/src/pages/contract/contracts/modals/Voided.tsx deleted file mode 100644 index cad865a..0000000 --- a/src/pages/contract/contracts/modals/Voided.tsx +++ /dev/null @@ -1,61 +0,0 @@ -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 Voided(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={props?.title} - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Contract.Contracts.Voided({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('作废成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '作废原因', - valueType: 'textarea', - key: 'voided_reason', - formItemProps: { ...rulesHelper.text }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/pages/contract_create.tsx b/src/pages/contract/contracts/pages/contract_create.tsx deleted file mode 100644 index 54add4d..0000000 --- a/src/pages/contract/contracts/pages/contract_create.tsx +++ /dev/null @@ -1,590 +0,0 @@ -import { - MyButtons, - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import ModalsResourceSelectList from '@/components/ModalsResourceSelectList'; -import { SelectContract } from '@/components/SelectContract'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCounterpartyEnum, - ContractPeoplesSignPartyEnum, - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - ResourceTypesCategoryEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -import { useState } from 'react'; -import MySubmitApproval from '../modals/SubmitApproval'; -// import SubmitReview from '../modals/SubmitReview'; -import { IsDepositEnum } from './reducer'; - -export default function Index({ title = '新增合同' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [selectedRow, setSelectedRow] = useState({}); - const [contractId, setContractId] = useState(0); - const [submitModalVisible, setSubmitModalVisible] = useState(false); - - const onSave = (data: any) => { - // 生成合同编号 - const saveTime1 = dayjs(new Date()).format('YYYYMMDD'); // 当前时间格式化为:yyyy-mmdd-hhmm - const saveTime2 = dayjs(new Date()).format('ss'); // 当前时间格式化为:yyyy-mmdd-hhmm - const randomNumber = Math.floor(Math.random() * 100) - .toString() - .padStart(2, '0'); // 生成2位随机数 - const contractCode = `HT-${saveTime1}-${saveTime2}${randomNumber}`; - Apis.Contract.Contracts.Store({ - ...data, - sign_department: data.organization?.[data.organization?.length - 1], - is_deposit: data.is_deposit - ? IsDepositEnum[data.is_deposit as keyof typeof IsDepositEnum].value - : 'no', - start_time: dayjs(data.contract_time?.[0]).format('YYYY-MM-DD'), - end_time: dayjs(data.contract_time?.[1]).format('YYYY-MM-DD'), - code: contractCode || data?.code || '', - }) - .then(() => { - navigate(-1); - message.success('保存成功'); - // if (subType) { - // navigate(-1); - // message.success('保存成功'); - // } else { - // message.success('暂存成功'); - // } - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - footer={[ - { - // 先保存合同,然后显示提审弹窗 - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values); - }); - }} - title="保存合同" - />, - { - // 先保存合同,然后显示提审弹窗 - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - // 调用保存合同的API - Apis.Contract.Contracts.Store({ - ...values, - sign_department: - values.organization?.[values.organization?.length - 1], - is_deposit: values.is_deposit - ? IsDepositEnum[ - values.is_deposit as keyof typeof IsDepositEnum - ].value - : 'no', - start_time: dayjs(values.contract_time?.[0]).format( - 'YYYY-MM-DD', - ), - end_time: dayjs(values.contract_time?.[1]).format('YYYY-MM-DD'), - asset_projects_id: values.asset_projects_id, - // code: `HT-${dayjs(new Date()).format( - // 'YYYYMMDD', - // )}-${dayjs(new Date()).format('ss')}${Math.floor( - // Math.random() * 100, - // ) - // .toString() - // .padStart(2, '0')}`, - }) - .then((res: any) => { - const id = res.data.id; - setContractId(id); - setSubmitModalVisible(true); - }) - .catch((error) => { - if (error !== '未获取到合同ID') { - message.error('操作失败,请重试'); - } - }); - }); - }} - title="保存并提审" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="form" - width="800px" - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - form={form} - submitter={{ - render: () => { - return [ - // { - // onSave(form.getFieldsValue(), 0); - // }} - // title="暂存" - // />, - ]; - }, - }} - onFinish={async (values: any) => { - onSave(values); - }} - columns={[ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '基本信息', - }, - }, - MyFormItems.EnumRadio({ - key: 'income_expense_type', - title: '收支类型', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - fieldProps: { - buttonStyle: 'solid', - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('settlement_mode', undefined); - form.setFieldValue('total_amount', undefined); - }, - }, - }), - { - key: 'name', - title: '合同名称', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'contract_time', - title: '合同有效期', - valueType: 'dateRange', - colProps: { span: 24 }, - fieldProps: { - style: { width: '50%' }, - format: 'YYYY-MM-DD', - }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'contract_nature', - title: '合同性质', - valueEnum: ContractsContractNatureEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - SelectContract.ContractTypes({ - title: '合同类型', - key: 'contract_types_id', - required: true, - colProps: { span: 12 }, - fieldProps: { - placeholder: '请选择合同类型', - }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - valueType: 'dependency', - name: ['income_expense_type'], - columns: ({ income_expense_type }) => { - return income_expense_type === 'None' - ? [] - : [ - MyFormItems.EnumRadio({ - key: 'settlement_mode', - title: '结算模式', - valueEnum: ContractsSettlementModeEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - title: '合同总金额', - key: 'total_amount', - valueType: 'digit', - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.number, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - fieldProps: { - style: { width: '100%' }, - addonAfter: '元', - }, - }, - ]; - }, - }, - - MyFormItems.EnumRadio({ - key: 'is_deposit', - title: '是否有保证金', - valueEnum: IsDepositEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit === 'yes' - ? [ - { - title: '请输入保证金', - key: 'deposit_amount', - valueType: 'digit', - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.number, - labelCol: { span: 12 }, - wrapperCol: { span: 12 }, - }, - fieldProps: { - style: { width: '100%' }, - suffix: '元', - }, - }, - ] - : []; - }, - }, - SelectContract.SupplierName({ - key: 'sign_subject', - title: '选择签约主体', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 24 }, - required: true, - }), - SelectContract.AssetProjects({ - key: 'asset_projects_id', - title: '选择关联项目', - colProps: { span: 24 }, - required: true, - fieldProps: { - showSearch: true, - // mode: 'multiple', - }, - }), - SelectContract.OrganizationsName({ - key: 'organization', - required: true, - title: '选择签约部门', - colProps: { span: 24 }, - }), - SelectContract.EmployeeName({ - key: 'contract_liaison', - title: '合同对接人', - colProps: { span: 24 }, - required: true, - }), - { - title: '合同份数', - key: 'number_contract_copies', - valueType: 'digit', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - }, - }, - { - valueType: 'dependency', - name: ['contract_time'], - columns: ({ contract_time }) => { - return contract_time?.length - ? [ - { - colProps: { span: 24 }, - title: '关联资源', - key: 'resources_id', - renderFormItem: () => { - return ( - - - { - setSelectedRow(e); - form.setFieldsValue({ - resources_id: e?.id, - }); - }} - /> - {selectedRow?.name ? ( -
- 已选择 - { - ResourceTypesCategoryEnum[ - selectedRow?.category as keyof typeof ResourceTypesCategoryEnum - ]?.text - } - 资源:{selectedRow?.name} -
- ) : ( - '' - )} -
-
- ); - }, - }, - ] - : []; - }, - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: ( - <> - * - 交易方信息 - - ), - }, - }, - { - valueType: 'formList', - dataIndex: 'peoples', - title: '', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'sign_party', - // title: `交易方`, - valueEnum: ContractPeoplesSignPartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - fieldProps: { - placeholder: '请选择签约方', - }, - }), - MyFormItems.EnumSelect({ - key: 'counterparty_type', - title: '', - valueEnum: CompanySuppliersCounterpartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - }), - { - valueType: 'dependency', - name: ['counterparty_type'], - columns: ({ counterparty_type }) => { - return counterparty_type === 'Supplier' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'Supplier', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : counterparty_type === 'InternalCompany' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - disabled: true, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '合同附件', - }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '支持上传任意格式的文件', - uploadType: 'file', - colProps: { span: 24 }, - // accept: '.docx,.doc,.pdf', - max: 100, - required: true, - }), - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '印章申请', - }, - }, - SelectContract.ContractSeals({ - key: 'seal_info', - required: true, - title: '选择印章', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - }, - }), - ]} - /> -
- {/* 提审弹窗 */} - { - setSubmitModalVisible(false); - }} - reload={() => { - setSubmitModalVisible(false); - navigate('/contract/contracts'); - }} - /> -
-
- ); -} diff --git a/src/pages/contract/contracts/pages/contract_update.tsx b/src/pages/contract/contracts/pages/contract_update.tsx deleted file mode 100644 index cc2086f..0000000 --- a/src/pages/contract/contracts/pages/contract_update.tsx +++ /dev/null @@ -1,624 +0,0 @@ -import { - MyButtons, - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; - -import ModalsResourceSelectList from '@/components/ModalsResourceSelectList'; -import { SelectContract } from '@/components/SelectContract'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCounterpartyEnum, - ContractPeoplesSignPartyEnum, - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - ResourceTypesCategoryEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import dayjs from 'dayjs'; -import { useEffect, useState } from 'react'; -import MySubmitApproval from '../modals/SubmitApproval'; -// import SubmitReview from '../modals/SubmitReview'; -import { IsDepositEnum } from './reducer'; -export default function Index({ title = '编辑合同' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - const [selectedRow, setSelectedRow] = useState({}); - const [submitModalVisible, setSubmitModalVisible] = useState(false); - - const loadShow = () => { - Apis.Contract.Contracts.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - setSelectedRow(res?.data?.resource); - form.setFieldsValue({ - ...res?.data, - is_deposit: res?.data?.is_deposit ? 'yes' : 'no', - peoples: res?.data?.contract_peoples, - organization: [res?.data?.sign_department], - contract_time: [res?.data?.start_time, res?.data?.end_time], - asset_projects_id: res?.data?.asset_projects_id, - seal_info: res?.data?.seal_info, - }); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - const onSave = (formData: any, subType: number) => { - Apis.Contract.Contracts.Update({ - ...formData, - is_deposit: - IsDepositEnum[formData.is_deposit as keyof typeof IsDepositEnum].value, - id: data?.id ?? 0, - start_time: dayjs(formData?.contract_time?.[0]).format('YYYY-MM-DD'), - end_time: dayjs(formData?.contract_time?.[1]).format('YYYY-MM-DD'), - sign_department: - formData.organization?.[formData.organization?.length - 1], - }) - .then(() => { - if (subType) { - // navigate(`/contract/contracts/pages/submit_review?id=${data?.id}`); - // navigate(-1); - message.success('保存成功'); - } else { - message.success('暂存成功'); - } - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - footer={[ - { - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - onSave(values, 1); - }); - // props.submit(); - }} - title="保存合同" - />, - { - // 先保存合同,然后显示提审弹窗 - const values = form.getFieldsValue(); - form?.validateFields().then(() => { - Apis.Contract.Contracts.Update({ - ...values, - id: data?.id ?? 0, - sign_department: - values.organization?.[values.organization?.length - 1], - is_deposit: values.is_deposit - ? IsDepositEnum[ - values.is_deposit as keyof typeof IsDepositEnum - ].value - : 'no', - start_time: dayjs(values.contract_time?.[0]).format( - 'YYYY-MM-DD', - ), - end_time: dayjs(values.contract_time?.[1]).format('YYYY-MM-DD'), - asset_projects_id: values.asset_projects_id, - }) - .then(() => { - setSubmitModalVisible(true); - }) - .catch((error) => { - if (error !== '未获取到合同ID') { - message.error('操作失败,请重试'); - } - }); - }); - }} - title="保存并提审" - />, - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - width="800px" - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - form={form} - submitter={{ - render: () => { - return []; - }, - }} - onFinish={async (values: any) => { - let formData = { - ...values, - }; - console.log(formData, 'formData'); - onSave(values, 1); - }} - columns={[ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '基本信息', - }, - }, - MyFormItems.EnumRadio({ - key: 'income_expense_type', - title: '收支类型', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - fieldProps: { - buttonStyle: 'solid', - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('settlement_mode', undefined); - form.setFieldValue('total_amount', undefined); - }, - }, - }), - { - key: 'name', - title: '合同名称', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - // { - // key: 'code', - // title: '合同编号', - // colProps: { span: 24 }, - // formItemProps: { ...rulesHelper.text }, - // }, - { - key: 'contract_time', - title: '合同有效期', - valueType: 'dateRange', - colProps: { span: 24 }, - fieldProps: { - style: { width: '50%' }, - format: 'YYYY-MM-DD', - }, - formItemProps: { ...rulesHelper.text }, - transform: (value: any) => { - return { - start_time: value?.[0], - end_time: value?.[1], - }; - }, - }, - MyFormItems.EnumRadio({ - key: 'contract_nature', - title: '合同性质', - valueEnum: ContractsContractNatureEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - SelectContract.ContractTypes({ - title: '合同类型', - key: 'contract_types_id', - required: true, - colProps: { span: 12 }, - fieldProps: { - placeholder: '请选择合同类型', - }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - valueType: 'dependency', - name: ['income_expense_type'], - columns: ({ income_expense_type }) => { - return income_expense_type === 'None' - ? [] - : [ - MyFormItems.EnumRadio({ - key: 'settlement_mode', - title: '结算模式', - valueEnum: ContractsSettlementModeEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - title: '合同总金额', - key: 'total_amount', - valueType: 'digit', - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.number, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - fieldProps: { - style: { width: '100%' }, - addonAfter: '元', - }, - }, - ]; - }, - }, - - MyFormItems.EnumRadio({ - key: 'is_deposit', - title: '是否有保证金', - valueEnum: IsDepositEnum, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - }, - }), - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit === 'yes' - ? [ - { - title: '请输入保证金', - key: 'deposit_amount', - valueType: 'digit', - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.number, - labelCol: { span: 12 }, - wrapperCol: { span: 12 }, - }, - fieldProps: { - style: { width: '100%' }, - suffix: '元', - }, - }, - ] - : []; - }, - }, - SelectContract.SupplierName({ - key: 'sign_subject', - title: '选择签约主体', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 24 }, - required: true, - }), - SelectContract.AssetProjects({ - key: 'asset_projects_id', - title: '选择关联项目', - colProps: { span: 24 }, - required: true, - fieldProps: { - showSearch: true, - // mode: 'multiple', - }, - }), - SelectContract.OrganizationsName({ - key: 'organization', - required: true, - title: '选择签约部门', - colProps: { span: 24 }, - }), - SelectContract.EmployeeName({ - key: 'contract_liaison', - title: '合同对接人', - colProps: { span: 24 }, - required: true, - }), - { - title: '合同份数', - key: 'number_contract_copies', - valueType: 'digit', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - }, - }, - { - valueType: 'dependency', - name: ['contract_time'], - columns: ({ contract_time }) => { - console.log(contract_time, 'contract_time'); - return contract_time?.length || data?.start_time - ? [ - { - colProps: { span: 24 }, - title: '关联资源', - key: 'resources_id', - renderFormItem: () => { - return ( - - - { - setSelectedRow(e); - form.setFieldsValue({ - resources_id: e?.id, - }); - }} - /> - {selectedRow?.name ? ( -
- 已选择 - { - ResourceTypesCategoryEnum[ - selectedRow?.category as keyof typeof ResourceTypesCategoryEnum - ]?.text - } - 资源:{selectedRow?.name} -
- ) : ( - '' - )} -
-
- ); - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: ( - <> - * - 交易方信息 - - ), - }, - }, - { - valueType: 'formList', - dataIndex: 'peoples', - title: '', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'sign_party', - // title: `交易方`, - valueEnum: ContractPeoplesSignPartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - fieldProps: { - placeholder: '请选择签约方', - }, - }), - MyFormItems.EnumSelect({ - key: 'counterparty_type', - title: '', - valueEnum: CompanySuppliersCounterpartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - }), - { - valueType: 'dependency', - name: ['counterparty_type'], - columns: ({ counterparty_type }) => { - return counterparty_type === 'Supplier' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'Supplier', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : counterparty_type === 'InternalCompany' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - - fieldProps: { - placeholder: '请选择签约主体', - disabled: true, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '合同附件', - }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '支持上传任意格式的文件', - uploadType: 'file', - colProps: { span: 24 }, - // accept: '.docx,.doc,.pdf', - max: 100, - required: true, - }), - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '印章申请', - }, - }, - SelectContract.ContractSeals({ - key: 'seal_info', - required: true, - title: '选择印章', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - }, - }), - ]} - /> -
- { - setSubmitModalVisible(false); - }} - reload={() => { - setSubmitModalVisible(false); - navigate('/contract/contracts'); - }} - // onChange={(item: any) => { - // Apis.Contract.Contracts.SubmitApproval({ - // approval_templates_id: item?.id, - // id: data?.id, - // }).then(() => { - // navigate('/contract/contracts'); - // message.success('提交成功'); - // }); - // console.log(item); - // }} - /> - {/* { - setSubmitModalVisible(open); - }} - /> */} -
-
- ); -} diff --git a/src/pages/contract/contracts/pages/reducer.ts b/src/pages/contract/contracts/pages/reducer.ts deleted file mode 100644 index 4a45af0..0000000 --- a/src/pages/contract/contracts/pages/reducer.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const IsDepositEnum = { - yes: { text: '是', key: 'yes', value: true }, - no: { text: '否', key: 'no', value: false }, -}; diff --git a/src/pages/contract/contracts/pages/review.tsx b/src/pages/contract/contracts/pages/review.tsx deleted file mode 100644 index a9016ce..0000000 --- a/src/pages/contract/contracts/pages/review.tsx +++ /dev/null @@ -1,506 +0,0 @@ -import { - MyButtons, - MyColumns, - MyFormItems, - MyModalFormProps, - MyPageContainer, - MyProTableProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { SelectContract } from '@/components/SelectContract'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCounterpartyEnum, - ContractPeoplesSignPartyEnum, - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - ResourceTypesCategoryEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard, ProTable } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, Space } from 'antd'; -import { useEffect, useState } from 'react'; -import Review from '../modals/Review'; -import { IsDepositEnum } from './reducer'; - -export default function Index({ title = '合同审核' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [selectedRow, setSelectedRow] = useState({}); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - const [dataSource, setDataSource] = useState< - ApiTypes.Asset.AssetProjects.List[] - >([]); - - const loadShow = () => { - Apis.Contract.Contracts.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - setDataSource([res?.data?.asset_project]); - setSelectedRow(res?.data?.resource); - form.setFieldsValue({ - ...res?.data, - is_deposit: res?.data?.is_deposit ? 'yes' : 'no', - peoples: res?.data?.contract_peoples, - sign_department_id: res?.data?.sign_department, - }); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="contracts_list-review" - tabLabel={title} - footer={[ - { - navigate(-1); - }} - key="back" - size="middle" - />, - , - ]} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: () => { - return false; - }, - }} - columns={[ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '基本信息', - }, - }, - { - key: 'name', - title: '合同名称', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'code', - title: '合同编号', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '合同开始时间', - key: 'start_time', - valueType: 'date', - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '合同结束时间', - key: 'end_time', - valueType: 'date', - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.text }, - }, - Selects.ContractTypes({ - title: '合同类型', - key: 'contract_types_id', - required: true, - colProps: { span: 12 }, - }), - { - title: '合同总金额', - key: 'total_amount', - valueType: 'digit', - colProps: { span: 12 }, - fieldProps: { - style: { width: '100%' }, - suffix: '元', - }, - }, - MyFormItems.EnumRadio({ - key: 'income_expense_type', - title: '收支类型', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - MyFormItems.EnumRadio({ - key: 'contract_nature', - title: '合同性质', - valueEnum: ContractsContractNatureEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - MyFormItems.EnumRadio({ - key: 'settlement_mode', - title: '结算模式', - valueEnum: ContractsSettlementModeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - - MyFormItems.EnumRadio({ - key: 'is_deposit', - title: '是否有保证金', - valueEnum: IsDepositEnum, - colProps: { span: 4 }, - formItemProps: { ...rulesHelper.text }, - }), - - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit === 'yes' - ? [ - { - title: '保证金', - key: 'deposit_amount', - valueType: 'digit', - colProps: { span: 10 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - suffix: '元', - }, - }, - ] - : []; - }, - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '附属信息', - }, - }, - { - colProps: { span: 24 }, - title: '选择签约主体', - key: 'sign_subject', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - - - 签约主体: - {data?.sign_subject} - - - ); - }, - }, - { - colProps: { span: 24 }, - title: '关联项目', - key: 'projects', - formItemProps: { ...rulesHelper.array }, - renderFormItem: () => { - return ( - - - - ); - }, - }, - { - colProps: { span: 24 }, - title: '关联资源', - key: 'resources_id', - renderFormItem: () => { - return ( - - - {selectedRow?.name ? ( -
- { - ResourceTypesCategoryEnum[ - selectedRow?.category as keyof typeof ResourceTypesCategoryEnum - ]?.text - } - 资源:{selectedRow?.name} -
- ) : ( - '无关联' - )} -
-
- ); - }, - }, - { - title: '签约部门', - key: 'sign_department', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '合同份数', - key: 'number_contract_copies', - valueType: 'digit', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { width: '100%' }, - }, - }, - { - title: '合同对接人', - key: 'contract_liaison', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { width: '100%' }, - placeholder: '请输入姓名', - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '交易双方信息', - }, - }, - { - valueType: 'formList', - dataIndex: 'peoples', - title: '', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'sign_party', - // title: `交易方`, - valueEnum: ContractPeoplesSignPartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - fieldProps: { - placeholder: '请选择签约方', - }, - }), - MyFormItems.EnumSelect({ - key: 'counterparty_type', - title: '', - valueEnum: CompanySuppliersCounterpartyEnum, - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - }), - { - valueType: 'dependency', - name: ['counterparty_type'], - columns: ({ counterparty_type }) => { - return counterparty_type === 'Supplier' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'Supplier', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : counterparty_type === 'InternalCompany' - ? [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - fieldProps: { - placeholder: '请选择签约主体', - }, - }), - ] - : [ - SelectContract.SupplierName({ - key: 'counterparty', - title: '', - params: { - counterparty: 'InternalCompany', - }, - colProps: { span: 12 }, - formItemProps: { - ...rulesHelper.text, - wrapperCol: { span: 24 }, - }, - required: true, - - fieldProps: { - placeholder: '请选择签约主体', - disabled: true, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '附件', - }, - }, - { - title: '附件信息', - renderFormItem: () => { - return data?.attachments?.map((res: any) => { - return ( - - {res?.name} - - ); - }); - }, - }, - // MyFormItems.UploadImages({ - // key: 'attachments', - // title: '附件(仅支持docx,doc,pdf格式)', - // uploadType: 'file', - // colProps: { span: 24 }, - // accept: '.docx,.doc,.pdf', - // max: 100, - // }), - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '印章申请', - }, - }, - Selects.ContractSeals({ - key: 'seal_info', - required: true, - title: '选择印章', - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - mode: 'multiple', - }, - }), - { - title: '其他备注', - key: 'remarks', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/contract/contracts/show/$id.tsx b/src/pages/contract/contracts/show/$id.tsx deleted file mode 100644 index 430504b..0000000 --- a/src/pages/contract/contracts/show/$id.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; - -import { useNavigate, useParams } from '@umijs/max'; -import { Space, Tabs, TabsProps } from 'antd'; -import { useEffect, useState } from 'react'; -import MyArchivingLogs from './components/ArchivingLogs'; -import MyContractBills from './components/ContractBills'; -import MyContractsInfo from './components/ContractsInfo'; -import MyUsedLogs from './components/UsedLogs'; - -export default function Index({ title = '合同详情' }) { - const navigate = useNavigate(); - const { id } = useParams<{ id: string }>(); - const [showData, setDataShow] = useState({}); - - const items: TabsProps['items'] = [ - { - key: '1', - label: '基本信息', - children: , - }, - { - key: '2', - label: '用印记录', - children: , - }, - { - key: '3', - label: '合同账单', - children: , - }, - { - key: '4', - label: '归档记录', - children: , - }, - ]; - const loadShow = () => { - Apis.Contract.Contracts.Show({ id: Number(id) }).then((res) => { - setDataShow(res?.data); - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - - - - - ); -} diff --git a/src/pages/contract/contracts/show/components/ArchivingLogs.tsx b/src/pages/contract/contracts/show/components/ArchivingLogs.tsx deleted file mode 100644 index 0eb527e..0000000 --- a/src/pages/contract/contracts/show/components/ArchivingLogs.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractArchivesConfidentialityLevelEnum, - ContractArchivesPeriodTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Archives from '../../../contract_archives/modals/Archives'; -import Show from '../../../contract_archives/modals/Show'; -import Update from '../../../contract_archives/modals/Update'; - -export default function Index(props: MyBetaModalFormProps) { - const navigate = useNavigate(); - return ( - - MyProTableProps.request( - { ...params, contracts_id: props?.item?.id }, - sort, - Apis.Contract.ContractArchives.List, - ) - } - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '归档编号', - dataIndex: 'code', - render: (_, item: any) => ( - { - navigate( - `/contract/contract_archives/show/${item.contracts_id}`, - ); - }} - > - {item?.code} - - ), - }, - { - title: '归档名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '保密等级', - dataIndex: 'confidentiality_level', - valueEnum: ContractArchivesConfidentialityLevelEnum, - search: false, - }), - MyColumns.EnumTag({ - title: '期限类型', - dataIndex: 'period_type', - valueEnum: ContractArchivesPeriodTypeEnum, - search: false, - }), - { - title: '保管年限', - dataIndex: 'storage_years', - valueType: 'digit', - search: false, - }, - { - title: '案卷编号', - dataIndex: 'file_number', - }, - { - title: '文件盒编号', - dataIndex: 'box_number', - }, - { - title: '文件柜编号', - dataIndex: 'cabinet_number', - }, - { - title: '归档年份', - dataIndex: 'archive_year', - valueType: 'dateYear', - search: false, - }, - { - title: '归档日期', - dataIndex: 'archive_date', - valueType: 'date', - search: false, - }, - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - Apis.Contract.ContractArchives.Delete({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/show/components/ContractBills.tsx b/src/pages/contract/contracts/show/components/ContractBills.tsx deleted file mode 100644 index d8ff560..0000000 --- a/src/pages/contract/contracts/show/components/ContractBills.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractBillsCostTypeEnum, - HouseOrdersOrderStatusEnum, -} from '@/gen/Enums'; -import PayBills from '@/pages/contract/modals/PayBills'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; - -export default function Index(props: MyBetaModalFormProps) { - const navigate = useNavigate(); - return ( - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - { ...params, contracts_id: props?.item?.id }, - sort, - Apis.Contract.ContractBills.List, - ) - } - headerTitle="账单列表" - toolBarRender={() => [ - { - navigate( - `/contract/contract_bills/pages/create?id=${props?.item?.id}`, - ); - }} - title="添加账单" - />, - ]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同', - dataIndex: ['contract', 'name'], - search: false, - }, - { - title: '合同ID', - dataIndex: 'contracts_id', - }, - { - title: '年月', - search: false, - render: (_, item: any) => { - return `${item?.year || 0}-${ - item?.month < 10 ? `0${item?.month}` : item?.month - }`; - }, - }, - MyColumns.EnumTag({ - title: '支付状态', - dataIndex: 'payment_status', - valueEnum: HouseOrdersOrderStatusEnum, - }), - MyColumns.EnumTag({ - title: '费用类型', - dataIndex: 'cost_type', - valueEnum: ContractBillsCostTypeEnum, - }), - { - title: '账单金额', - search: false, - render: (_, item: any) => { - return `¥${item?.amount || 0}`; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - { - navigate( - `/contract/contract_bills/pages/update?id=${item.id}`, - ); - }} - title="编辑" - /> - - Apis.Contract.ContractBills.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/contracts/show/components/ContractsInfo.tsx b/src/pages/contract/contracts/show/components/ContractsInfo.tsx deleted file mode 100644 index 5044db6..0000000 --- a/src/pages/contract/contracts/show/components/ContractsInfo.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { - MyBetaModalFormProps, - MyColumns, - MyProTableProps, - renderTextHelper, -} from '@/common'; -import { showTime } from '@/common/utils/day'; -import MyShowAttachments from '@/components/ShowAttachments'; -import { - CompanySuppliersCounterpartyEnum, - ContractPeoplesSignPartyEnum, - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractsStatusEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions, ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; - -export default function ContractsInfo(props: MyBetaModalFormProps) { - return ( - - - - - - - - {props?.item?.name} - - - {props?.item?.code} - - - - - - {props?.item?.contract_type_name} - - - - - - - - - ¥{props?.item?.total_amount} - - - - - {showTime(props?.item?.start_time, 10)}至 - {showTime(props?.item?.end_time, 10)} - - - - - ¥{props?.item?.total_bill_amount} - - - ¥{props?.item?.total_income_amount} - - - ¥{props?.item?.total_expense_amount} - - - {props?.item?.is_deposit ? '是' : '否'} - - - ¥{props?.item?.deposit_amount || '-'} - - - {props?.item?.sign_subject} - - - {props?.item?.project_name || '-'} - - - {props?.item?.sign_department || '-'} - - - {props?.item?.contract_liaison || '-'} - - - {props?.item?.number_contract_copies || '-'}份 - - - - > - {...MyProTableProps.props} - headerTitle="交易双方" - search={false} - options={false} - pagination={false} - dataSource={props?.item?.contract_peoples || []} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '身份', - dataIndex: 'counterparty_type', - valueEnum: CompanySuppliersCounterpartyEnum, - }), - { - title: '名称', - dataIndex: 'counterparty', - }, - { - title: '签约方', - dataIndex: 'sign_party', - valueEnum: ContractPeoplesSignPartyEnum, - }, - ]} - /> - - - ); -} diff --git a/src/pages/contract/contracts/show/components/UsedLogs.tsx b/src/pages/contract/contracts/show/components/UsedLogs.tsx deleted file mode 100644 index f9e7818..0000000 --- a/src/pages/contract/contracts/show/components/UsedLogs.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import UseSeal from '@/pages/contract/contract_seal_logs/unused/modals/UseSeal'; -import { ProTable } from '@ant-design/pro-components'; -import { useParams } from '@umijs/max'; -import { Space } from 'antd'; - -export default function Index(props: MyBetaModalFormProps) { - const { id } = useParams<{ id: string }>(); - return ( - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - { ...params, contracts_id: props?.item?.id }, - sort, - Apis.Contract.ContractSealLogs.List, - ) - } - headerTitle="用印列表" - params={{ contracts_id: id }} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '合同名称', - dataIndex: ['contract', 'name'], - }, - { - title: '合同编号', - dataIndex: ['contract', 'code'], - }, - { - title: '合同编号', - dataIndex: 'code', - hidden: true, - }, - { - title: '合同ID', - dataIndex: 'contracts_id', - }, - { - title: '印章', - search: false, - render: (_, item: any) => ( - - {item?.seal_info?.map((res: any) => { - return res?.company_name; - })} - - ), - }, - { - title: '申请用印人', - dataIndex: ['company_employee', 'name'], - search: false, - }, - { - title: '用印合同', - dataIndex: 'number_contract_copies', - search: false, - }, - MyColumns.Boolean({ - dataIndex: 'is_external_seal_usage', - title: '是否外出用印', - search: false, - }), - { - title: '操作印章人', - dataIndex: ['operator_employee', 'name'], - search: false, - }, - MyColumns.CreatedAt(), - ]} - /> - ); -} diff --git a/src/pages/contract/contracts_bi/images/30_60_icon.svg b/src/pages/contract/contracts_bi/images/30_60_icon.svg deleted file mode 100644 index b0848d6..0000000 --- a/src/pages/contract/contracts_bi/images/30_60_icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/ClosedIcon.svg b/src/pages/contract/contracts_bi/images/ClosedIcon.svg deleted file mode 100644 index e8c3646..0000000 --- a/src/pages/contract/contracts_bi/images/ClosedIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/InPerformanceIcon.svg b/src/pages/contract/contracts_bi/images/InPerformanceIcon.svg deleted file mode 100644 index 8fee536..0000000 --- a/src/pages/contract/contracts_bi/images/InPerformanceIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/NotClosedIcon.svg b/src/pages/contract/contracts_bi/images/NotClosedIcon.svg deleted file mode 100644 index 76a0895..0000000 --- a/src/pages/contract/contracts_bi/images/NotClosedIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/NotFiledIcon.svg b/src/pages/contract/contracts_bi/images/NotFiledIcon.svg deleted file mode 100644 index cbfb41a..0000000 --- a/src/pages/contract/contracts_bi/images/NotFiledIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/NotStampedIcon.svg b/src/pages/contract/contracts_bi/images/NotStampedIcon.svg deleted file mode 100644 index 05a3f16..0000000 --- a/src/pages/contract/contracts_bi/images/NotStampedIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/PendingApplicationIcon.svg b/src/pages/contract/contracts_bi/images/PendingApplicationIcon.svg deleted file mode 100644 index db6900d..0000000 --- a/src/pages/contract/contracts_bi/images/PendingApplicationIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/TerminatedIcon.svg b/src/pages/contract/contracts_bi/images/TerminatedIcon.svg deleted file mode 100644 index 8c05107..0000000 --- a/src/pages/contract/contracts_bi/images/TerminatedIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/images/UnreviewedIcon.svg b/src/pages/contract/contracts_bi/images/UnreviewedIcon.svg deleted file mode 100644 index ef945b9..0000000 --- a/src/pages/contract/contracts_bi/images/UnreviewedIcon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/contract/contracts_bi/index.tsx b/src/pages/contract/contracts_bi/index.tsx deleted file mode 100644 index bab34bd..0000000 --- a/src/pages/contract/contracts_bi/index.tsx +++ /dev/null @@ -1,251 +0,0 @@ -import { MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import { useEffect, useState } from 'react'; -import Icon3060 from './images/30_60_icon.svg'; -import ClosedIcon from './images/ClosedIcon.svg'; -import InPerformanceIcon from './images/InPerformanceIcon.svg'; -import NotClosedIcon from './images/NotClosedIcon.svg'; -import NotFiledIcon from './images/NotFiledIcon.svg'; -import NotStampedIcon from './images/NotStampedIcon.svg'; -import PendingApplicationIcon from './images/PendingApplicationIcon.svg'; -import TerminatedIcon from './images/TerminatedIcon.svg'; -import IconUnreviewed from './images/UnreviewedIcon.svg'; -import './styleBi.scss'; - -export default function Index({ title = '合同Bi' }) { - const navigate = useNavigate(); - - const [getContractsCount, setContractsCount] = useState({}); - const getStatusOverview = async () => { - const res = await Apis.Statistics.ContractsCount.StatusOverview(); - setContractsCount(res?.data); - console.log(res, 'res'); - }; - - useEffect(() => { - getStatusOverview(); - }, []); - - return ( - - - - -
-
- -
未审核
-
-
-
- {getContractsCount?.pending?.under_approval?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- -
未用印章
-
-
-
- {getContractsCount?.pending?.not_sealed?.count || 0}份 -
-
{ - navigate('/contract/contract_seal_logs'); - }} - > - 去处理 -
-
-
-
-
- -
未归档
-
-
-
- {getContractsCount?.pending?.not_archived?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- - -
-
- -
未关闭
-
-
-
- {getContractsCount?.reminder?.not_closed?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- -
30天内到期
-
-
-
- {getContractsCount?.reminder?.expire_30_days?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- -
60天内到期
-
-
-
- {getContractsCount?.reminder?.expire_60_days?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- - -
-
- -
待申请
-
-
-
- {getContractsCount?.other?.temporary_storage?.count || 0}份 -
-
{ - navigate(`/contract/contracts?status=TemporaryStorage`); - }} - > - 去处理 -
-
-
-
-
- -
履约中
-
-
-
- {getContractsCount?.other?.in_progress?.count || 0}份 -
-
{ - navigate('/contract/contracts'); - }} - > - 去处理 -
-
-
-
-
- -
已关闭
-
-
-
- {getContractsCount?.other?.closed?.count || 0}份 -
-
{ - navigate(`/contract/contracts?status=Closed`); - }} - > - 去处理 -
-
-
-
-
- -
已终止
-
-
-
- {getContractsCount?.other?.terminated?.count || 0}份 -
-
{ - navigate(`/contract/contracts?status=Terminated`); - }} - > - 去处理 -
-
-
-
-
-
-
- ); -} diff --git a/src/pages/contract/contracts_bi/styleBi.scss b/src/pages/contract/contracts_bi/styleBi.scss deleted file mode 100644 index 0d0ae4d..0000000 --- a/src/pages/contract/contracts_bi/styleBi.scss +++ /dev/null @@ -1,51 +0,0 @@ -.processed_card { - background: linear-gradient(180deg, #fffcf8 0%, #ffffff 28%); - border: 1px solid #d3d3d3; - width: 18vw; - padding: 15px 20px; - border-radius: 10px; - color: #f77a3a; - &_header { - display: flex; - align-items: center; - img { - width: 50px; - } - } - &_label { - color: #3d3d3d; - font-size: 22px; - font-weight: 500; - padding-left: 10px; - } - - &_footer { - width: 100%; - display: flex; - padding-top: 8px; - align-items: center; - justify-content: space-between; - font-weight: 500; - &_count { - font-size: 26px; - } - .unreviewed_btn { - color: #f77a3a; - background-color: #fff4ee; - padding: 5px 15px; - font-size: 17px; - border-radius: 5px; - cursor: pointer; - } - } -} -.others_card { - background: linear-gradient(180deg, #f4f8ff 0%, #ffffff 28%); - color: #2a7efb; - .processed_card_footer { - .unreviewed_btn { - color: #2a7efb; - background-color: #f3f8fb; - } - } -} diff --git a/src/pages/contract/modals/PayBills.tsx b/src/pages/contract/modals/PayBills.tsx deleted file mode 100644 index 61f1bac..0000000 --- a/src/pages/contract/modals/PayBills.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOrdersPaymentMethodEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function PayBills(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="650px" - form={form} - onOpenChange={(open: any) => { - if (open) { - form.setFieldsValue({ - ...props.item, - remark: '', - paid_time: undefined, - pay_certificate: [], - accept_account_number: '', - accept_account_name: '', - accept_serial_number: '', - }); - } - }} - onFinish={async (values) => - Apis.Contract.ContractBillPayments.Store({ - ...values, - contract_bills_id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('提交成功,等待审核!'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '交易金额', - key: 'amount', - colProps: { span: 24 }, - fieldProps: { - suffix: '元', - disabled: true, - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.number }, - }, - MyFormItems.EnumRadio({ - key: 'payment_method', - title: '支付方式', - valueEnum: HouseOrdersPaymentMethodEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - - { - title: '收款流水号', - key: 'accept_serial_number', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '支付时间', - key: 'paid_time', - colProps: { span: 12 }, - valueType: 'dateTime', - formItemProps: { ...rulesHelper.text }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - { - title: '收款账户', - key: 'accept_account_name', - colProps: { span: 12 }, - }, - { - title: '收款银行', - key: 'accept_bank_name', - colProps: { span: 12 }, - }, - { - title: '收款账号', - key: 'accept_account_number', - colProps: { span: 12 }, - }, - MyFormItems.UploadImages({ - key: 'pay_certificate', - title: '支付凭证', - uploadType: 'file', - colProps: { span: 24 }, - max: 100, - }), - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/contract/pending_review/all_approval/index.tsx b/src/pages/contract/pending_review/all_approval/index.tsx deleted file mode 100644 index a28eb59..0000000 --- a/src/pages/contract/pending_review/all_approval/index.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; - -export default function Index() { - return ( - - MyProTableProps.request( - { - ...params, - type: 'Contract', - }, - sort, - Apis.Approval.ApprovalInstances.List, - ) - } - headerTitle="所有合同审批" - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - { - title: '申请人', - dataIndex: ['applicant', 'name'], - search: false, - }, - { - title: '项目ID', - dataIndex: 'asset_projects_id', - hidden: true, - }, - { - title: '申请人', - dataIndex: 'applicant_name', - hidden: true, - }, - MyColumns.CreatedAt(), - ]} - /> - ); -} diff --git a/src/pages/contract/pending_review/approval_instances/index.tsx b/src/pages/contract/pending_review/approval_instances/index.tsx deleted file mode 100644 index e67eeb0..0000000 --- a/src/pages/contract/pending_review/approval_instances/index.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ApprovalInstancesStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import dayjs from 'dayjs'; -export default function Index() { - const navigate = useNavigate(); - return ( - - MyProTableProps.request( - { - status: 'Pending', - ...params, - }, - sort, - Apis.Approval.ApprovalInstances.PendingList, - ) - } - headerTitle="待我审批" - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同名称', - dataIndex: ['approval_instance', 'model', 'name'], - search: false, - }, - { - title: '关联项目', - dataIndex: ['approval_instance', 'asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, - }), - { - title: '申请人', - dataIndex: 'approver_name', - }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${dayjs(item?.approval_instance?.model?.start_time).format( - 'YYYY-MM-DD', - )}至${dayjs(item?.approval_instance?.model?.end_time).format( - 'YYYY-MM-DD', - )}`; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - navigate( - `/contract/contracts/pages/review?id=${item?.approval_instance?.model_id}&record_id=${item?.id}`, - ); - }} - title="查看并审核" - /> - {/* */} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/contract/pending_review/index copy.tsx b/src/pages/contract/pending_review/index copy.tsx deleted file mode 100644 index 4e961f4..0000000 --- a/src/pages/contract/pending_review/index copy.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsStatusEnum, - ContractTemplatesIncomeExpenseTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import dayjs from 'dayjs'; - -export default function Index({ title = '合同审核' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Contract.Contracts.PendingReviewList, - ) - } - headerTitle="审核列表" - columns={[ - MyColumns.ID({ search: false }), - { - title: '合同编号', - dataIndex: 'code', - }, - { - title: '合同名称', - dataIndex: 'name', - }, - - { - title: '签订部门', - dataIndex: 'sign_department', - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ContractsStatusEnum, - }), - MyColumns.EnumTag({ - title: '收支类型', - dataIndex: 'income_expense_type', - valueEnum: ContractTemplatesIncomeExpenseTypeEnum, - }), - MyColumns.EnumTag({ - title: '合同性质', - dataIndex: 'contract_nature', - valueEnum: ContractsContractNatureEnum, - }), - { - title: '合同总价', - search: false, - render: (_, item: any) => { - return `¥${item.total_amount}`; - }, - }, - { - title: '账单金额', - render: (_, item: any) => { - return `¥${item.total_bill_amount}`; - }, - }, - { - title: '已收金额', - search: false, - render: (_, item: any) => { - return `¥${item.total_income_amount}`; - }, - }, - { - title: '已付金额', - search: false, - render: (_, item: any) => { - return `¥${item.total_expense_amount}`; - }, - }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${dayjs(item.start_time).format('YYYY-MM-DD')}至${dayjs( - item.end_time, - ).format('YYYY-MM-DD')}`; - }, - }, - { - title: '开始时间', - dataIndex: 'start_time', - hidden: true, - }, - { - title: '结束时间', - dataIndex: 'end_time', - hidden: true, - }, - MyColumns.CreatedAt(), - // MyColumns.Option({ - // render: (_, item: any, index) => ( - // - // { - // navigate(`/contract/contracts/pages/review?id=${item.id}`); - // }} - // title="查看并审核" - // /> - // - // - // ), - // }), - ]} - /> - - ); -} diff --git a/src/pages/contract/pending_review/index.tsx b/src/pages/contract/pending_review/index.tsx deleted file mode 100644 index ad72a69..0000000 --- a/src/pages/contract/pending_review/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import MyAllApprovalInstances from './all_approval'; -import MyApprovalInstances from './approval_instances'; -import MyApplyList from './my_apply_list'; -const DEFAULT_TAB = '1'; -export default function Index({ title = '装修管理' }) { - const getCurrentPermissions = useCurrentPermissions(); - const items: TabsProps['items'] = [ - { - key: '1', - label: '所有审批', - children: , - }, - { - key: '2', - label: '待我审批', - children: , - }, - { - key: '3', - label: '我发起的', - children: , - }, - ]; - return ( - - { - sessionStorage.setItem('getTableIdx', e); - }} - /> - - ); -} diff --git a/src/pages/contract/pending_review/my_apply_list/index.tsx b/src/pages/contract/pending_review/my_apply_list/index.tsx deleted file mode 100644 index bf90d84..0000000 --- a/src/pages/contract/pending_review/my_apply_list/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ApprovalInstancesStatusEnum, - ApprovalTemplatesTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -export default function Index() { - const navigate = useNavigate(); - return ( - - MyProTableProps.request( - { - status: 'Pending', - ...params, - }, - sort, - Apis.Approval.ApprovalInstances.MyApplyList, - ) - } - headerTitle="我发起的审批" - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '业务类型', - valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - - { - title: '项目ID', - dataIndex: 'asset_projects_id', - hidden: true, - }, - { - title: '申请人', - dataIndex: 'applicant_name', - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - {/* */} - - Apis.Approval.ApprovalInstances.Cancel({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/customer/archive/components/HouseInfo.tsx b/src/pages/customer/archive/components/HouseInfo.tsx index b3551b5..83a5bd7 100644 --- a/src/pages/customer/archive/components/HouseInfo.tsx +++ b/src/pages/customer/archive/components/HouseInfo.tsx @@ -5,7 +5,7 @@ import { AssetHousesStatusEnum, AssetHousesUsageEnum, } from '@/gen/Enums'; -import HousesUpdate from '@/pages/asset/dictionary/modals/HousesUpdate'; +import HousesUpdate from '@/pages/asset/houses/modals/HousesUpdate'; import { ProCard, ProDescriptions } from '@ant-design/pro-components'; import { Space } from 'antd'; import ChangeStatus from '../table/modals/ChangeStatus'; diff --git a/src/pages/customer/archive/components/PrePay.tsx b/src/pages/customer/archive/components/PrePay.tsx deleted file mode 100644 index 2488fc3..0000000 --- a/src/pages/customer/archive/components/PrePay.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { MyBetaModalFormProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import { useEffect, useState } from 'react'; - -export default function Info(props: MyBetaModalFormProps) { - const [getShow, setDataShow] = useState({}); - const navigate = useNavigate(); - - useEffect(() => { - Apis.HouseOrder.HousePrepayments.Show({ - asset_houses_id: props?.item?.asset_houses_id, - }) - .then((res) => { - console.log(res); - setDataShow(JSON.parse(JSON.stringify(res?.data))); - return false; - }) - .catch(() => false); - }, [props?.item?.asset_houses_id]); - - return ( - - - - - {getShow?.amount ? `¥${getShow?.amount}` : '无预缴'} - {/* { - navigate(`/bills/summary/show/${props?.item?.id || 0}`); - }} - /> */} - - - - - ); -} diff --git a/src/pages/customer/archive/components/PrePayInfo.tsx b/src/pages/customer/archive/components/PrePayInfo.tsx deleted file mode 100644 index da841a0..0000000 --- a/src/pages/customer/archive/components/PrePayInfo.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { MyBetaModalFormProps } 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 DeductionRecords from '../table_prepay/DeductionRecords'; -import PrePayRecords from '../table_prepay/PrePayRecords'; -import PrePay from './PrePay'; - -export default function Show(props: MyBetaModalFormProps) { - const { id } = useParams<{ id: string }>(); - const [data, setShow] = useState({}); - - const loadShow = () => { - let paramsId: any = { asset_houses_id: id ?? 0 }; - Apis.HouseOrder.HousePrepayments.Show(paramsId).then((res) => { - setShow(res?.data); - }); - }; - - useEffect(() => { - loadShow(); - }, [props.item?.asset_houses_id]); - - let items = [ - { - label: '预缴记录', - key: '1', - closable: false, - children: ( - { - loadShow(); - }} - /> - ), - }, - { - label: '扣款记录', - key: '2', - closable: false, - children: , - }, - ]; - - return ( - <> - - - - - - ); -} diff --git a/src/pages/customer/archive/show/$id.tsx b/src/pages/customer/archive/show/$id.tsx index 4546e3c..1c5391d 100644 --- a/src/pages/customer/archive/show/$id.tsx +++ b/src/pages/customer/archive/show/$id.tsx @@ -6,7 +6,6 @@ import { Tabs } from 'antd'; import { useEffect, useState } from 'react'; import BasicInfo from '../components/BasicInfo'; import MeterInfo from '../components/MeterInfo'; -import PrePayInfo from '../components/PrePayInfo'; import WordorderInfo from '../components/WordorderInfo'; export default function Show({ title }: { title?: string } = {}) { @@ -46,10 +45,10 @@ export default function Show({ title }: { title?: string } = {}) { children: loadShow()} />, }, { - label: '预缴信息', - key: 'prepay', + label: '仪表信息', + key: 'meters', closable: false, - children: , + children: , }, { label: '报修工单', @@ -57,12 +56,6 @@ export default function Show({ title }: { title?: string } = {}) { closable: false, children: , }, - { - label: '仪表信息', - key: 'meters', - closable: false, - children: , - }, ]; return ( - MyProTableProps.request( - params, - sort, - Apis.Emergency.EmergencyEventCategories.TreeList, - ) - } - headerTitle="突发事件分类" - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - { - title: '分类描述', - dataIndex: 'description', - search: false, - }, - MyColumns.Boolean({ - title: '是否启用', - dataIndex: 'is_enabled', - search: false, - }), - MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Emergency.EmergencyEventCategories.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/categories/modals/Create.tsx b/src/pages/emergency/categories/modals/Create.tsx deleted file mode 100644 index 732db15..0000000 --- a/src/pages/emergency/categories/modals/Create.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { TreeSelects } from '@/components/TreeSelect'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - trigger={} - onFinish={async (values) => - Apis.Emergency.EmergencyEventCategories.Store(values) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - TreeSelects.TreeSelectEventCategories(), - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'description', - title: '分类描述', - valueType: 'textarea', - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/categories/modals/Update.tsx b/src/pages/emergency/categories/modals/Update.tsx deleted file mode 100644 index 6b54c92..0000000 --- a/src/pages/emergency/categories/modals/Update.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { TreeSelects } from '@/components/TreeSelect'; -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Emergency.EmergencyEventCategories.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - TreeSelects.TreeSelectEventCategories(), - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'description', - title: '分类描述', - valueType: 'textarea', - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/events/index.tsx b/src/pages/emergency/events/index.tsx deleted file mode 100644 index db81cfc..0000000 --- a/src/pages/emergency/events/index.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - EmergencyEventsCompensationTypeEnum, - EmergencyEventsStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Assign from './modals/ApplyClose'; -import Create from './modals/Create'; -import Review from './modals/Review'; -import Update from './modals/Update'; - -export default function Index({ title = '突发事件' }) { - return ( - - MyProTableProps.request( - params, - sort, - Apis.Emergency.EmergencyEvents.List, - ) - } - headerTitle={`${title}列表`} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - { - title: '所属项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: EmergencyEventsStatusEnum, - }), - MyColumns.EnumTag({ - title: '赔偿方', - dataIndex: 'compensation_type', - valueEnum: EmergencyEventsCompensationTypeEnum, - }), - { - title: '赔偿事项', - search: false, - render: (_, item: any) => { - return ( -
-
赔偿比例:{item?.compensation_rate}%
-
赔偿金额:{item?.compensation_amount}元
-
已支付赔偿金额:{item?.compensation_paid_amount}元
-
- ); - }, - }, - { - title: '分类', - search: false, - render: (_, item: any) => { - return `${item?.one_emergency_categories_name} / ${item?.two_emergency_categories_name}`; - }, - }, - { - title: '等级', - dataIndex: 'emergency_event_levels_name', - search: false, - }, - MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - - - - Apis.Emergency.EmergencyEvents.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/events/modals/ApplyClose.tsx b/src/pages/emergency/events/modals/ApplyClose.tsx deleted file mode 100644 index b8b4e0a..0000000 --- a/src/pages/emergency/events/modals/ApplyClose.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { MyBetaModalFormProps, MyButtons, MyModalFormProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -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: 24 }} - width="600px" - labelAlign="left" - trigger={ - - } - key={new Date().getTime()} - form={form} - onFinish={async (values: any) => { - return Apis.Emergency.EmergencyEvents.ApplyClose({ - ...values, - id: props.item.id, - }) - .then(() => { - props.reload?.(); - message.success('提交成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - { - title: '处理结果', - colProps: { span: 24 }, - dataIndex: 'handled_result', - valueType: 'textarea', - }, - { - title: '反思与总结', - colProps: { span: 24 }, - dataIndex: 'introspection', - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/events/modals/Create.tsx b/src/pages/emergency/events/modals/Create.tsx deleted file mode 100644 index f6dcfe3..0000000 --- a/src/pages/emergency/events/modals/Create.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="800px" - form={form} - key={new Date().getTime()} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - trigger={} - onFinish={async (values: any) => - Apis.Emergency.EmergencyEvents.Store({ - ...values, - two_emergency_categories_id: values?.two_emergency_categories_id?.[1], - emergency_event_organizations_id: - values?.emergency_event_organizations_id?.[0], - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - // MyFormItems.EnumSelect({ - // key: 'status', - // title: '状态', - // valueEnum: EmergencyEventsStatusEnum, - // colProps: { span: 12 }, - // formItemProps: { ...rulesHelper.text }, - // }), - Selects.EmergencyEventLevels({ - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects.EmergencyCategories({ - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects.OrganizationSearch({ - title: '突发事件提报组织', - key: 'emergency_event_organizations_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - children: 'children', - }, - }, - }), - { - key: 'emergency_time', - title: '突发事件时间', - colProps: { span: 12 }, - valueType: 'date', - fieldProps: { - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_location', - title: '突发事件发生地点', - valueType: 'textarea', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_description', - title: '突发事件描述', - valueType: 'textarea', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_cause', - title: '突发事件原因', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'cause_result', - title: '突发事件造成结果', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'supplement', - title: '突发事件补充信息', - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'related_person', - title: '突发事件关联人物', - valueType: 'textarea', - colProps: { span: 12 }, - }, - // MyFormItems.EnumRadio({ - // key: 'compensation_type', - // title: '赔偿方', - // valueEnum: EmergencyEventsCompensationTypeEnum, - // colProps: { span: 6 }, - // }), - // { - // key: 'compensation_rate', - // title: '突发事件赔偿比例', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // suffix: '%', - // }, - // }, - // { - // key: 'compensation_amount', - // title: '突发事件赔偿金额', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // prefix: '¥', - // }, - // }, - // { - // key: 'compensation_paid_amount', - // title: '突发事件已支付赔偿金额', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // prefix: '¥', - // }, - // }, - MyFormItems.UploadImages({ - key: 'emergency_images', - title: '突发事件图片', - max: 100, - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/events/modals/Review.tsx b/src/pages/emergency/events/modals/Review.tsx deleted file mode 100644 index 3e0ce91..0000000 --- a/src/pages/emergency/events/modals/Review.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -const DormigoryBedAuditFlowsAuditStatusEnum = { - Approved: { text: '通过', value: 'Approved' }, - Rejected: { text: '驳回', value: 'Rejected' }, -}; -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={ - - } - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Emergency.EmergencyEvents.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - props.reload?.(); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'audit_status', - title: '审核意见', - valueEnum: DormigoryBedAuditFlowsAuditStatusEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['audit_status'], - columns: ({ audit_status }) => { - return audit_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'audit_remark', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'audit_remark', - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/events/modals/Update.tsx b/src/pages/emergency/events/modals/Update.tsx deleted file mode 100644 index 9de970a..0000000 --- a/src/pages/emergency/events/modals/Update.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="800px" - form={form} - key={new Date().getTime()} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Emergency.EmergencyEvents.Show({ - id: props.item?.id ?? 0, - }).then((res) => { - form.setFieldsValue({ - ...res?.data, - two_emergency_categories_id: [ - res?.data?.one_emergency_categories_id, - res?.data?.two_emergency_categories_id, - ], - }); - }); - } - }} - onFinish={async (values: any) => - Apis.Emergency.EmergencyEvents.Update({ - ...values, - two_emergency_categories_id: values?.two_emergency_categories_id?.[1], - emergency_event_organizations_id: - values?.emergency_event_organizations_id?.[0], - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - // MyFormItems.EnumSelect({ - // key: 'status', - // title: '状态', - // valueEnum: EmergencyEventsStatusEnum, - // colProps: { span: 12 }, - // formItemProps: { ...rulesHelper.text }, - // }), - Selects.EmergencyEventLevels({ - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects.EmergencyCategories({ - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects.OrganizationSearch({ - title: '突发事件提报组织', - key: 'emergency_event_organizations_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - showSearch: true, - fieldNames: { - label: 'name', - value: 'id', - children: 'children', - }, - }, - }), - { - key: 'emergency_time', - title: '突发事件时间', - colProps: { span: 12 }, - valueType: 'date', - fieldProps: { - style: { width: '100%' }, - }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_location', - title: '突发事件发生地点', - valueType: 'textarea', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_description', - title: '突发事件描述', - valueType: 'textarea', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'emergency_cause', - title: '突发事件原因', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'cause_result', - title: '突发事件造成结果', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'supplement', - title: '突发事件补充信息', - valueType: 'textarea', - colProps: { span: 12 }, - }, - { - key: 'related_person', - title: '突发事件关联人物', - valueType: 'textarea', - colProps: { span: 12 }, - }, - // MyFormItems.EnumRadio({ - // key: 'compensation_type', - // title: '突发事件赔偿类型', - // valueEnum: EmergencyEventsCompensationTypeEnum, - // colProps: { span: 6 }, - // }), - // { - // key: 'compensation_rate', - // title: '突发事件赔偿比例', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // suffix: '%', - // }, - // }, - // { - // key: 'compensation_amount', - // title: '突发事件赔偿金额', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // prefix: '¥', - // }, - // }, - // { - // key: 'compensation_paid_amount', - // title: '突发事件已支付赔偿金额', - // colProps: { span: 6 }, - // valueType: 'digit', - // fieldProps: { - // style: { width: '100%' }, - // prefix: '¥', - // }, - // }, - MyFormItems.UploadImages({ - key: 'emergency_images', - title: '突发事件图片', - max: 100, - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/events/show/$id.tsx b/src/pages/emergency/events/show/$id.tsx deleted file mode 100644 index 2c7e519..0000000 --- a/src/pages/emergency/events/show/$id.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { useParams } from '@umijs/max'; -import { Tabs } from 'antd'; -import { useEffect, useState } from 'react'; -import MyFollows from '../../follows'; -import Info from './components/Info'; - -export default function Show({ title = '详情' }: { title?: string } = {}) { - const { id } = useParams<{ id: string }>(); - const [data, setShow] = useState({}); - - const loadShow = () => { - let paramsId: any = { id: id ?? 0 }; - Apis.Emergency.EmergencyEvents.Show(paramsId).then((res) => { - setShow(res?.data); - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - const items = [ - { - label: '事件详情', - key: 'emergency_events_show_info', - children: , - }, - { - label: '事件跟进记录', - key: 'emergency_events_show_follows', - children: , - }, - ]; - - return ( - data?.id && ( - - - - ) - ); -} diff --git a/src/pages/emergency/events/show/components/Info.tsx b/src/pages/emergency/events/show/components/Info.tsx deleted file mode 100644 index 533486b..0000000 --- a/src/pages/emergency/events/show/components/Info.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { showTime } from '@/common/utils/day'; -import MyShowAttachments from '@/components/ShowAttachments'; -import { EmergencyEventsStatusEnum } from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Space } from 'antd'; - -export default function info(props: MyBetaModalFormProps) { - const { item } = props; - - return ( - - - - - {item?.name} - - - {item?.asset_project?.name} - - - - - - {item?.emergency_event_levels_name} - - - - {item?.one_emergency_categories_name}/ - {item?.two_emergency_categories_name} - - - - {showTime(item?.emergency_time, 10)} - - - - {item?.emergency_event_organization?.name} - - - {item?.emergency_location} - - - {item?.emergency_description} - - - {item?.emergency_cause} - - - {item?.cause_result} - - - {item?.supplement} - - - {item?.related_person} - - - - {/* - - - - - - {item?.compensation_rate}% - - - {item?.compensation_amount}元 - - - {item?.compensation_paid_amount}元 - - - */} - - - ); -} diff --git a/src/pages/emergency/follows/index.tsx b/src/pages/emergency/follows/index.tsx deleted file mode 100644 index e07a5c6..0000000 --- a/src/pages/emergency/follows/index.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import Create from './modals/Create'; -import Show from './modals/Show'; - -export default function Index(props: MyBetaModalFormProps) { - return ( - - MyProTableProps.request( - { - ...params, - emergency_events_id: props?.item?.id, - }, - sort, - Apis.Emergency.EmergencyEventFollows.List, - ) - } - search={false} - headerTitle="跟进记录" - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '操作', - dataIndex: 'node_name', - }, - { - title: '内容', - dataIndex: 'content', - }, - { - title: '附件', - render: (_, item: any) => { - return ( - - {item?.attachments?.map((i: any, index: number) => ( - - ))} - - ); - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Emergency.EmergencyEventFollows.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/follows/modals/Create.tsx b/src/pages/emergency/follows/modals/Create.tsx deleted file mode 100644 index 932b422..0000000 --- a/src/pages/emergency/follows/modals/Create.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - trigger={} - onFinish={async (values) => - Apis.Emergency.EmergencyEventFollows.Store({ - ...values, - emergency_events_id: props?.item?.id, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'content', - title: '内容', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'attachments', - title: '上传附件', - tooltip: '仅支持docx,doc,pdf格式', - uploadType: 'file', - colProps: { span: 24 }, - max: 100, - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/follows/modals/Show.tsx b/src/pages/emergency/follows/modals/Show.tsx deleted file mode 100644 index 2a61a45..0000000 --- a/src/pages/emergency/follows/modals/Show.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { MyBetaModalFormProps, MyButtons, MyModalFormProps } from '@/common'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { Form, Image } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`查看`} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - form={form} - key={new Date().getTime()} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - columns={[ - { - title: '操作', - key: 'node_name', - renderFormItem: () => { - return props?.item?.node_name; - }, - }, - { - key: 'content', - title: '内容', - renderFormItem: () => { - return props?.item?.content; - }, - }, - { - title: '附件', - renderFormItem: () => { - return props?.item?.attachments?.length ? ( - - {props?.item?.attachments?.map((i: any, index: number) => ( - - ))} - - ) : ( - 无附件 - ); - }, - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/index.tsx b/src/pages/emergency/index.tsx deleted file mode 100644 index b732c53..0000000 --- a/src/pages/emergency/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { MyPageContainer } from '@/common'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import MyCategories from './categories'; -import MyEvents from './events'; -import MyLevels from './levels'; -import MyTeams from './teams'; - -export default function Index({ title = '突发事件' }) { - // const getCurrentPermissions = useCurrentPermissions(); - - const items: TabsProps['items'] = [ - { - key: '1', - label: '突发事件', - children: , - }, - { - key: '2', - label: '事件分类', - children: , - }, - { - key: '3', - label: '事件级别', - children: , - }, - { - key: '4', - label: '事件行动组', - children: , - }, - // { - // key: '5', - // label: '事件账单', - // children: <>1, - // }, - ]; - - return ( - - - - ); -} diff --git a/src/pages/emergency/levels/index.tsx b/src/pages/emergency/levels/index.tsx deleted file mode 100644 index 14af8d9..0000000 --- a/src/pages/emergency/levels/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '等级' }) { - return ( - - MyProTableProps.request( - params, - sort, - Apis.Emergency.EmergencyEventLevels.List, - ) - } - headerTitle="突发事件等级" - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - MyColumns.Boolean({ - title: '是否启用', - dataIndex: 'is_enabled', - search: false, - }), - MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Emergency.EmergencyEventCategories.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/levels/modals/Create.tsx b/src/pages/emergency/levels/modals/Create.tsx deleted file mode 100644 index e0bef68..0000000 --- a/src/pages/emergency/levels/modals/Create.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - trigger={} - onFinish={async (values) => - Apis.Emergency.EmergencyEventLevels.Store(values) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/levels/modals/Update.tsx b/src/pages/emergency/levels/modals/Update.tsx deleted file mode 100644 index 88045fa..0000000 --- a/src/pages/emergency/levels/modals/Update.tsx +++ /dev/null @@ -1,53 +0,0 @@ -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="500px" - form={form} - key={new Date().getTime()} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Emergency.EmergencyEventLevels.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/teams/index.tsx b/src/pages/emergency/teams/index.tsx deleted file mode 100644 index 4dd709f..0000000 --- a/src/pages/emergency/teams/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '行动组' }) { - return ( - - MyProTableProps.request( - params, - sort, - Apis.Emergency.EmergencyEventTeams.List, - ) - } - headerTitle="突发事件行动组" - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '名称', - dataIndex: 'name', - }, - { - title: '队长', - dataIndex: ['company_employee', 'name'], - search: false, - }, - MyColumns.Boolean({ - title: '是否启用', - dataIndex: 'is_enabled', - search: false, - }), - { - title: '成员', - search: false, - render: (_, item: any) => { - return ( - - {item?.emergency_team_members?.map( - (res: any, index: number) => { - return ( -
{res?.employee_name}
- ); - }, - )} -
- ); - }, - }, - MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Emergency.EmergencyEventCategories.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/emergency/teams/modals/Create.tsx b/src/pages/emergency/teams/modals/Create.tsx deleted file mode 100644 index 2c27f0d..0000000 --- a/src/pages/emergency/teams/modals/Create.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { EmergencyTeamMembersPositionEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - width="800px" - wrapperCol={{ span: 24 }} - trigger={} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => - Apis.Emergency.EmergencyEventTeams.Store(values) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '名称', - key: 'name', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects?.Employees({ - key: 'company_employees_id', - title: '组长', - colProps: { span: 12 }, - required: true, - }), - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - { - valueType: 'formList', - dataIndex: 'members', - title: '团队成员', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - Selects?.Employees({ - key: 'company_employees_id', - title: '成员', - colProps: { span: 12 }, - required: true, - }), - MyFormItems.EnumSelect({ - key: 'position', - title: '身份', - valueEnum: EmergencyTeamMembersPositionEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/emergency/teams/modals/Update.tsx b/src/pages/emergency/teams/modals/Update.tsx deleted file mode 100644 index f23c17a..0000000 --- a/src/pages/emergency/teams/modals/Update.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { EmergencyTeamMembersPositionEnum } 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - width="800px" - form={form} - key={new Date().getTime()} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - members: props.item?.emergency_team_members?.map( - (item: { company_employees_id: number; position: string }) => ({ - company_employees_id: item.company_employees_id, - position: item.position, - }), - ), - }); - } - }} - onFinish={async (values) => - Apis.Emergency.EmergencyEventTeams.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '名称', - key: 'name', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects?.Employees({ - key: 'company_employees_id', - title: '组长', - colProps: { span: 12 }, - required: true, - }), - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - }, - { - valueType: 'formList', - dataIndex: 'members', - title: '团队成员', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - Selects?.Employees({ - key: 'company_employees_id', - title: '成员', - colProps: { span: 12 }, - required: true, - }), - MyFormItems.EnumSelect({ - key: 'position', - title: '身份', - valueEnum: EmergencyTeamMembersPositionEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/house_charage/house_door_cards/index.tsx b/src/pages/house_charage/house_door_cards/index.tsx index cebc16f..bea4980 100644 --- a/src/pages/house_charage/house_door_cards/index.tsx +++ b/src/pages/house_charage/house_door_cards/index.tsx @@ -32,7 +32,7 @@ export default function Index({ title = '门禁卡' }) { - Apis.HouseCharage.HouseDoorCards.Delete({ + Apis.HouseCharge.HouseDoorCards.Delete({ id: item.id, }).then(() => action?.reload()) } @@ -55,7 +55,7 @@ export default function Index({ title = '门禁卡' }) { ...params, }, sort, - Apis.HouseCharage.HouseDoorCards.List, + Apis.HouseCharge.HouseDoorCards.List, ) } headerTitle={`${title}列表`} diff --git a/src/pages/house_charage/house_door_cards/modals/Create.tsx b/src/pages/house_charage/house_door_cards/modals/Create.tsx index 13e0b49..bc577c7 100644 --- a/src/pages/house_charage/house_door_cards/modals/Create.tsx +++ b/src/pages/house_charage/house_door_cards/modals/Create.tsx @@ -12,7 +12,7 @@ import { Form, message } from 'antd'; export default function Create(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + {...MyModalFormProps.props} title={`添加${props.title}`} wrapperCol={{ span: 24 }} @@ -27,7 +27,7 @@ export default function Create(props: MyBetaModalFormProps) { }} trigger={} onFinish={async (values: any) => - Apis.HouseCharage.HouseDoorCards.Store({ + Apis.HouseCharge.HouseDoorCards.Store({ ...values, is_enable: values.is_enable ? 1 : 0, }) diff --git a/src/pages/house_charage/house_door_cards/modals/Update.tsx b/src/pages/house_charage/house_door_cards/modals/Update.tsx index 81af70e..ba7477f 100644 --- a/src/pages/house_charage/house_door_cards/modals/Update.tsx +++ b/src/pages/house_charage/house_door_cards/modals/Update.tsx @@ -12,7 +12,7 @@ import { Form, message } from 'antd'; export default function Update(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + {...MyModalFormProps.props} title={`编辑${props.title}`} trigger={} @@ -27,7 +27,7 @@ export default function Update(props: MyBetaModalFormProps) { } }} onFinish={async (values: any) => - Apis.HouseCharage.HouseDoorCards.Update({ + Apis.HouseCharge.HouseDoorCards.Update({ ...values, is_enable: values.is_enable ? 1 : 0, id: props.item?.id ?? 0, diff --git a/src/pages/instrument/instrument_list/index.tsx b/src/pages/instrument/instrument_list/index.tsx deleted file mode 100644 index a0fec23..0000000 --- a/src/pages/instrument/instrument_list/index.tsx +++ /dev/null @@ -1,243 +0,0 @@ -import { - MyButtons, - MyColumns, - MyImportModal, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Dropdown, Space } from 'antd'; - -import { MyExport } from '@/components/MyExport'; -import { Selects } from '@/components/Select'; -import { - HouseMetersMeterTypeEnum, - HouseMetersUsageTypeEnum, -} from '@/gen/Enums'; -import dayjs from 'dayjs'; -import { useState } from 'react'; -import ChargingStandard from './modals/ChargingStandard'; -import Create from './modals/Create'; -import MeterHasHouse from './modals/MeterHasHouse'; -import MeterHasOne from './modals/MeterHasOne'; -import Update from './modals/Update'; - -export default function Index({ title = '仪表管理' }) { - const navigate = useNavigate(); - const [getParams, setParams] = useState({}); - - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - create: , - exportmeter: ( - - ), - exporthouse: ( - - ), - export: ( - - ), - }); - }; - let tableRender = (item: any, action: any) => { - let permissions = getCurrentPermissions({ - view: ( - { - navigate(`/instrument/readings/show/${item.id}`); - }} - /> - ), - update: , - }); - - let permissionsSpace = getCurrentPermissions({ - has: { - key: '1', - label: ( - <> - {item.meter_type === HouseMetersMeterTypeEnum.HouseMeter.value && - !item.house_meter_has_houses_count && ( - - )} - {item.meter_type === HouseMetersMeterTypeEnum.CommonMeter.value && ( - - )} - - ), - }, - delete: { - key: '2', - label: ( - - Apis.Meter.HouseMeters.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - }); - - let Others = ( - - - - ); - return [...permissions, ...[Others]]; - }; - return ( - - { - setParams(params); - return MyProTableProps.request( - params, - sort, - Apis.Meter.HouseMeters.List, - ); - }} - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '项目名称', - dataIndex: ['asset_project', 'name'], - search: { transform: (value) => ({ project_name: value }) }, - }, - { - title: '仪表编号', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '仪表类型', - dataIndex: 'meter_type', - valueEnum: HouseMetersMeterTypeEnum, - // search: false, - }), - MyColumns.EnumTag({ - title: '使用类型', - dataIndex: 'usage_type', - valueEnum: HouseMetersUsageTypeEnum, - // search: false, - }), - - { - title: '收费标准', - dataIndex: ['charge_standard', 'name'], - search: false, - render: (_, item: any) => { - return ; - }, - }, - { - title: '关联房屋数', - dataIndex: 'house_meter_has_houses_count', - search: false, - }, - { - title: '初始抄表读数', - dataIndex: 'initial_value', - search: false, - }, - { - title: '最新抄表读数', - dataIndex: 'latest_value', - search: false, - }, - { - title: '初始抄表日期', - dataIndex: 'initial_time', - search: false, - render: (renderValue: any) => - renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', - }, - { - title: '最新抄表日期', - dataIndex: 'latest_time', - search: false, - render: (renderValue: any) => - renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', - }, - { - title: '距离上次抄表', - dataIndex: 'latest_time', - search: false, - render: (renderValue: any) => - renderValue ? dayjs().diff(renderValue, 'day') : '-', - }, - { - title: '备注', - dataIndex: 'remark', - search: false, - }, - MyColumns.SoftDelete({ - onRestore: Apis.Meter.HouseMeters.Restore, - onSoftDelete: Apis.Meter.HouseMeters.SoftDelete, - search: false, - setPermissions: getCurrentPermissions({ - enableDisable: true, - }), - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/meter/common_meter/index.tsx b/src/pages/meter/common_meter/index.tsx new file mode 100644 index 0000000..5e6fd48 --- /dev/null +++ b/src/pages/meter/common_meter/index.tsx @@ -0,0 +1,240 @@ +import { + MyButtons, + MyColumns, + MyImportModal, + MyProTableProps, + useCurrentPermissions, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ProTable } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Dropdown, Space } from 'antd'; + +import { MyExport } from '@/components/MyExport'; +import { Selects } from '@/components/Select'; +import { + HouseMetersMeterTypeEnum, + HouseMetersUsageTypeEnum, +} from '@/gen/Enums'; +import dayjs from 'dayjs'; +import { useState } from 'react'; +import ChargingStandard from './modals/ChargingStandard'; +import Create from './modals/Create'; +import MeterHasHouse from './modals/MeterHasHouse'; +import MeterHasOne from './modals/MeterHasOne'; +import Update from './modals/Update'; + +export default function CommonMeter({ title = '公摊表' }) { + const navigate = useNavigate(); + const [getParams, setParams] = useState({}); + + const getCurrentPermissions = useCurrentPermissions(); + let toolBarRender = (action: any) => { + return getCurrentPermissions({ + create: , + exportmeter: ( + + ), + exporthouse: ( + + ), + export: ( + + ), + }); + }; + let tableRender = (item: any, action: any) => { + let permissions = getCurrentPermissions({ + view: ( + { + navigate(`/instrument/readings/show/${item.id}`); + }} + /> + ), + update: , + }); + + let permissionsSpace = getCurrentPermissions({ + has: { + key: '1', + label: ( + <> + {item.meter_type === HouseMetersMeterTypeEnum.HouseMeter.value && + !item.house_meter_has_houses_count && ( + + )} + {item.meter_type === HouseMetersMeterTypeEnum.CommonMeter.value && ( + + )} + + ), + }, + delete: { + key: '2', + label: ( + + Apis.Meter.HouseMeters.Delete({ id: item.id }).then(() => + action?.reload(), + ) + } + /> + ), + }, + }); + + let Others = ( + + + + ); + return [...permissions, ...[Others]]; + }; + return ( + { + setParams(params); + return MyProTableProps.request( + { ...params, meter_type: HouseMetersMeterTypeEnum.CommonMeter.value }, + sort, + Apis.Meter.HouseMeters.List, + ); + }} + toolBarRender={(action) => [toolBarRender(action)]} + columns={[ + MyColumns.ID({ + search: false, + }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + // search: { transform: (value) => ({ project_name: value }) } + search: false, + }, + { + title: '仪表编号', + dataIndex: 'name', + }, + MyColumns.EnumTag({ + title: '仪表类型', + dataIndex: 'meter_type', + valueEnum: HouseMetersMeterTypeEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '使用类型', + dataIndex: 'usage_type', + valueEnum: HouseMetersUsageTypeEnum, + // search: false, + }), + + { + title: '收费标准', + dataIndex: ['charge_standard', 'name'], + search: false, + render: (_, item: any) => { + return item.charge_standard ? ( + + ) : ( + '-' + ); + }, + }, + { + title: '关联房屋数', + dataIndex: 'house_meter_has_houses_count', + search: false, + }, + // { + // title: '初始抄表读数', + // dataIndex: 'initial_value', + // search: false, + // }, + { + title: '最新抄表读数', + dataIndex: 'latest_value', + search: false, + }, + // { + // title: '初始抄表日期', + // dataIndex: 'initial_time', + // search: false, + // render: (renderValue: any) => + // renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', + // }, + { + title: '最新抄表日期', + dataIndex: 'latest_time', + search: false, + render: (renderValue: any) => + renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', + }, + { + title: '距离上次抄表', + dataIndex: 'latest_time', + search: false, + render: (renderValue: any) => + renderValue ? dayjs().diff(renderValue, 'day') + '天' : '-', + }, + // { + // title: '备注', + // dataIndex: 'remark', + // search: false, + // }, + MyColumns.SoftDelete({ + onRestore: Apis.Meter.HouseMeters.Restore, + onSoftDelete: Apis.Meter.HouseMeters.SoftDelete, + search: false, + setPermissions: getCurrentPermissions({ + enableDisable: true, + }), + }), + // MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + <>{tableRender(item, action)} + + ), + }), + ]} + /> + ); +} diff --git a/src/pages/instrument/instrument_list/modals/ChargingStandard.tsx b/src/pages/meter/common_meter/modals/ChargingStandard.tsx similarity index 100% rename from src/pages/instrument/instrument_list/modals/ChargingStandard.tsx rename to src/pages/meter/common_meter/modals/ChargingStandard.tsx diff --git a/src/pages/instrument/instrument_list/modals/Create.tsx b/src/pages/meter/common_meter/modals/Create.tsx similarity index 100% rename from src/pages/instrument/instrument_list/modals/Create.tsx rename to src/pages/meter/common_meter/modals/Create.tsx diff --git a/src/pages/instrument/instrument_list/modals/MeterHasHouse.tsx b/src/pages/meter/common_meter/modals/MeterHasHouse.tsx similarity index 100% rename from src/pages/instrument/instrument_list/modals/MeterHasHouse.tsx rename to src/pages/meter/common_meter/modals/MeterHasHouse.tsx diff --git a/src/pages/instrument/instrument_list/modals/MeterHasOne.tsx b/src/pages/meter/common_meter/modals/MeterHasOne.tsx similarity index 100% rename from src/pages/instrument/instrument_list/modals/MeterHasOne.tsx rename to src/pages/meter/common_meter/modals/MeterHasOne.tsx diff --git a/src/pages/instrument/instrument_list/modals/Update.tsx b/src/pages/meter/common_meter/modals/Update.tsx similarity index 100% rename from src/pages/instrument/instrument_list/modals/Update.tsx rename to src/pages/meter/common_meter/modals/Update.tsx diff --git a/src/pages/meter/house_meter/index.tsx b/src/pages/meter/house_meter/index.tsx new file mode 100644 index 0000000..0f9cd47 --- /dev/null +++ b/src/pages/meter/house_meter/index.tsx @@ -0,0 +1,240 @@ +import { + MyButtons, + MyColumns, + MyImportModal, + MyProTableProps, + useCurrentPermissions, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ProTable } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Dropdown, Space } from 'antd'; + +import { MyExport } from '@/components/MyExport'; +import { Selects } from '@/components/Select'; +import { + HouseMetersMeterTypeEnum, + HouseMetersUsageTypeEnum, +} from '@/gen/Enums'; +import dayjs from 'dayjs'; +import { useState } from 'react'; +import ChargingStandard from './modals/ChargingStandard'; +import Create from './modals/Create'; +import MeterHasHouse from './modals/MeterHasHouse'; +import MeterHasOne from './modals/MeterHasOne'; +import Update from './modals/Update'; + +export default function HouseMeter({ title = '房屋表' }) { + const navigate = useNavigate(); + const [getParams, setParams] = useState({}); + + const getCurrentPermissions = useCurrentPermissions(); + let toolBarRender = (action: any) => { + return getCurrentPermissions({ + create: , + exportmeter: ( + + ), + exporthouse: ( + + ), + export: ( + + ), + }); + }; + let tableRender = (item: any, action: any) => { + let permissions = getCurrentPermissions({ + view: ( + { + navigate(`/instrument/readings/show/${item.id}`); + }} + /> + ), + update: , + }); + + let permissionsSpace = getCurrentPermissions({ + has: { + key: '1', + label: ( + <> + {item.meter_type === HouseMetersMeterTypeEnum.HouseMeter.value && + !item.house_meter_has_houses_count && ( + + )} + {item.meter_type === HouseMetersMeterTypeEnum.CommonMeter.value && ( + + )} + + ), + }, + delete: { + key: '2', + label: ( + + Apis.Meter.HouseMeters.Delete({ id: item.id }).then(() => + action?.reload(), + ) + } + /> + ), + }, + }); + + let Others = ( + + + + ); + return [...permissions, ...[Others]]; + }; + return ( + { + setParams(params); + return MyProTableProps.request( + { ...params, meter_type: HouseMetersMeterTypeEnum.HouseMeter.value }, + sort, + Apis.Meter.HouseMeters.List, + ); + }} + toolBarRender={(action) => [toolBarRender(action)]} + columns={[ + MyColumns.ID({ + search: false, + }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + // search: { transform: (value) => ({ project_name: value }) } + search: false, + }, + { + title: '仪表编号', + dataIndex: 'name', + }, + MyColumns.EnumTag({ + title: '仪表类型', + dataIndex: 'meter_type', + valueEnum: HouseMetersMeterTypeEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '使用类型', + dataIndex: 'usage_type', + valueEnum: HouseMetersUsageTypeEnum, + // search: false, + }), + + { + title: '收费标准', + dataIndex: ['charge_standard', 'name'], + search: false, + render: (_, item: any) => { + return item.charge_standard ? ( + + ) : ( + '-' + ); + }, + }, + { + title: '关联房屋数', + dataIndex: 'house_meter_has_houses_count', + search: false, + }, + // { + // title: '初始抄表读数', + // dataIndex: 'initial_value', + // search: false, + // }, + { + title: '最新抄表读数', + dataIndex: 'latest_value', + search: false, + }, + // { + // title: '初始抄表日期', + // dataIndex: 'initial_time', + // search: false, + // render: (renderValue: any) => + // renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', + // }, + { + title: '最新抄表日期', + dataIndex: 'latest_time', + search: false, + render: (renderValue: any) => + renderValue ? dayjs(renderValue).format('YYYY-MM-DD') : '-', + }, + { + title: '距离上次抄表', + dataIndex: 'latest_time', + search: false, + render: (renderValue: any) => + renderValue ? dayjs().diff(renderValue, 'day') + '天' : '-', + }, + // { + // title: '备注', + // dataIndex: 'remark', + // search: false, + // }, + MyColumns.SoftDelete({ + onRestore: Apis.Meter.HouseMeters.Restore, + onSoftDelete: Apis.Meter.HouseMeters.SoftDelete, + search: false, + setPermissions: getCurrentPermissions({ + enableDisable: true, + }), + }), + // MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + <>{tableRender(item, action)} + + ), + }), + ]} + /> + ); +} diff --git a/src/pages/meter/house_meter/modals/ChargingStandard.tsx b/src/pages/meter/house_meter/modals/ChargingStandard.tsx new file mode 100644 index 0000000..8d19569 --- /dev/null +++ b/src/pages/meter/house_meter/modals/ChargingStandard.tsx @@ -0,0 +1,122 @@ +import { MyBetaModalFormProps, renderTextHelper } from '@/common'; +import { MyModal } from '@/components/MyModal'; +import { Apis } from '@/gen/Apis'; +import { + HouseChargeStandardsApportionmentMethodEnum, + HouseChargeStandardsCalculationMethodEnum, + HouseChargeStandardsCalculationModeEnum, + HouseChargeStandardsCalculationPeriodEnum, + HouseChargeStandardsPriceAlgorithmEnum, +} from '@/gen/Enums'; +import { ProDescriptions } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import { useState } from 'react'; + +export default function Index(props: MyBetaModalFormProps) { + const [data, setData] = useState({}); + return ( + { + Apis.HouseCharage.HouseChargeStandards.Show({ + id: props.item?.charge_standards_id ?? 0, + }).then((res) => { + setData(res?.data || {}); + console.log(res); + }); + }} + node={ + <> + + + {data?.name} + + + {data?.company_receipt_account?.company_bank}: + {data?.company_receipt_account?.company_account} + + {data?.apportionment_method ? ( + + + + ) : ( + '' + )} + + + + + {data?.calculation_method !== 'PerUnit' ? ( + <> + + + + + + + + + + {data?.tiered_rates?.map((item: any, index: number) => { + return ( +
+ 阶梯范围:{item?.min_quantity}-{item?.max_quantity}{' '} + 阶梯单价:¥{item?.price}元 +
+ ); + })} +
+
+ + ) : ( + '' + )} + + + ¥{data?.price}元 + + + + + + {data?.auto_date} + + {data?.has_late_fee ? ( + + +
有滞纳金:{data?.has_late_fee ? '是' : '否'}
+
起算天数:生成账单后{data?.late_fee_start_days}天
+
收取费率:每日{data?.late_fee_rate}%
+
封顶天数:最多{data?.late_fee_cap_days}天
+
+
+ ) : ( + '' + )} + + + {data?.remark} + +
+ + } + /> + ); +} diff --git a/src/pages/meter/house_meter/modals/Create.tsx b/src/pages/meter/house_meter/modals/Create.tsx new file mode 100644 index 0000000..57f1a41 --- /dev/null +++ b/src/pages/meter/house_meter/modals/Create.tsx @@ -0,0 +1,207 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseMetersMeterTypeEnum, + HouseMetersUsageTypeEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + + return ( + + {...MyModalFormProps.props} + title={`添加仪表`} + // wrapperCol={{ span: 24 }} + layout="horizontal" + labelCol={{ span: 6 }} + wrapperCol={{ span: 18 }} + labelAlign="left" + width="600px" + key={new Date().getTime()} + trigger={} + form={form} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} + onFinish={async (values) => + Apis.Meter.HouseMeters.Store({ + ...values, + latest_value: values.initial_value, + latest_time: values.initial_time, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + ...(props?.item?.id + ? [] + : [ + Selects?.AssetProjects({ + key: 'asset_projects_id', + title: '选择项目', + colProps: { span: 24 }, + required: true, + }), + ]), + + MyFormItems.EnumRadio({ + key: 'meter_type', + title: '仪表类型', + colProps: { span: 24 }, + valueEnum: HouseMetersMeterTypeEnum, + required: true, + }), + MyFormItems.EnumRadio({ + key: 'usage_type', + title: '使用类型', + colProps: { span: 24 }, + // valueEnum: HouseMetersUsageTypeEnum, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(HouseMetersUsageTypeEnum)); + delete obj.GasMeter; + delete obj.HeatingMeter; + return obj; + }, + required: true, + }), + { + key: 'name', + title: '仪表编号', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'multiple', + title: '倍率', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'initial_value', + title: '初始抄表读数', + valueType: 'number', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.number }, + }, + { + key: 'initial_time', + title: '初始抄表时间', + valueType: 'dateTime', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + fieldProps: { + disabledDate: (current: any) => { + // 禁用未来的日期 + return current && current > new Date(); + }, + disabledTime: (current: any) => { + // 如果是今天,禁用未来的时间 + if ( + current && + current.format('YYYY-MM-DD') === + new Date().toISOString().split('T')[0] + ) { + const now = new Date(); + return { + disabledHours: () => { + const hours = []; + for (let i = now.getHours() + 1; i < 24; i++) { + hours.push(i); + } + return hours; + }, + disabledMinutes: (selectedHour: number) => { + if (selectedHour === now.getHours()) { + const minutes = []; + for (let i = now.getMinutes() + 1; i < 60; i++) { + minutes.push(i); + } + return minutes; + } + return []; + }, + disabledSeconds: ( + selectedHour: number, + selectedMinute: number, + ) => { + if ( + selectedHour === now.getHours() && + selectedMinute === now.getMinutes() + ) { + const seconds = []; + for (let i = now.getSeconds() + 1; i < 60; i++) { + seconds.push(i); + } + return seconds; + } + return []; + }, + }; + } + return {}; + }, + }, + }, + { + valueType: 'dependency', + name: ['asset_projects_id', 'usage_type', 'meter_type'], + columns: ({ asset_projects_id, usage_type, meter_type }) => { + return [ + Selects?.ChargeStandard({ + title: '选择收费标准', + tooltip: '如无可选信息,请在【财务管理:收费标准】中先行配置', + key: 'charge_standards_id', + params: { + asset_projects_id: asset_projects_id || props?.item?.id || 0, + charge_type: [ + meter_type === 'HouseMeter' + ? usage_type === 'WaterMeter' + ? 'WaterFee' + : 'ElectricityFee' + : meter_type === 'CommonMeter' + ? usage_type === 'WaterMeter' + ? 'SharedWaterFee' + : 'SharedElectricityFee' + : '', + ], + }, + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ]; + }, + }, + MyFormItems.UploadImages({ + key: 'images', + title: '仪表图片', + tooltip: '只能上传1张图片', + max: 1, + colProps: { span: 24 }, + formItemProps: { required: true }, + }), + { + key: 'remark', + title: '备注', + valueType: 'textarea', + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/meter/house_meter/modals/MeterHasHouse.tsx b/src/pages/meter/house_meter/modals/MeterHasHouse.tsx new file mode 100644 index 0000000..47890f6 --- /dev/null +++ b/src/pages/meter/house_meter/modals/MeterHasHouse.tsx @@ -0,0 +1,223 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; +import { MyModal } from '@/components/MyModal'; + +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOwnershipTypeEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { message, Space } from 'antd'; +import { useRef, useState } from 'react'; + +export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) { + // 使用 useState 保存选中的房屋 ID 和行数据,确保跨页选中状态保持 + const [selectedHousesIds, setSelectedHousesIds] = useState([]); + const [selectedRows, setSelectedRows] = useState([]); + + // 添加 tableRef 用于操作表格 + const tableRef = useRef(); + + const onShowContactPhone = () => { + if (selectedHousesIds.length === 0) { + message.warning('请至少选择一个房屋'); + return; + } + + // 确保 houses_ids 是字符串数组 + const housesIds = selectedHousesIds.map((id) => String(id)); + + Apis.Meter.HouseMeterHasHouses.StoreOrUpdate({ + house_meters_id: props?.item?.id ?? 0, + asset_houses_ids: housesIds, + }) + .then(() => { + // 成功后重置选中状态 + setSelectedHousesIds([]); + setSelectedRows([]); + props.reload?.(); + message.success('成功!'); + }) + .catch((error) => { + console.error('失败:', error); + message.error('失败: ' + (error.message || '未知错误')); + return false; + }); + }; + + return ( + + MyProTableProps.request( + { + ...params, + asset_projects_id: props?.item?.asset_projects_id, + }, + sort, + Apis.Asset.AssetHouses.List, + undefined, + (res) => { + // 确保响应数据正确处理 + console.log('加载房屋数据:', res); + return res; + }, + ) + } + style={{ + padding: '20px', + height: '680px', + overflowY: 'auto', + overflowX: 'hidden', + }} + pagination={{ + showQuickJumper: true, + pageSizeOptions: [10, 20, 50, 100, 200, 500, 1000, 2000], + }} + rowSelection={{ + type: 'checkbox', + preserveSelectedRowKeys: true, // 启用跨页选择 + selectedRowKeys: selectedHousesIds, + onChange: (selectedRowKeys, selectedRows) => { + // 确保 selectedRowKeys 是数字类型 + const numericKeys = selectedRowKeys.map((key) => + typeof key === 'string' ? parseInt(key, 10) : key, + ) as number[]; + + // 更新选中状态 + setSelectedHousesIds(numericKeys); + + // 合并当前页面选中的行和之前选中的行 + const newSelectedRows = [...selectedRows]; + + // 设置选中行数据 + setSelectedRows(newSelectedRows); + }, + }} + tableAlertOptionRender={({ selectedRowKeys, onCleanSelected }) => { + return ( + + 已选 {selectedRowKeys.length} 项 + 清空 + onShowContactPhone()} + /> + + ); + }} + options={false} + columns={[ + MyColumns.ID({ + search: false, + }), + MyColumns.EnumTag({ + title: '用途', + dataIndex: 'usage', + valueEnum: AssetHousesUsageEnum, + search: false, + }), + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + search: false, + }, + { + title: '楼栋名称', + dataIndex: ['asset_building', 'name'], + search: { + transform: (value) => { + return { building_name: value }; + }, + }, + }, + { + title: '单元名称', + dataIndex: ['asset_unit', 'name'], + search: { + transform: (value) => { + return { unit_name: value }; + }, + }, + }, + { + title: '房号', + dataIndex: 'name', + }, + + { + title: '楼层', + dataIndex: 'floor', + render(_, record) { + return `${record?.floor}层`; + }, + search: false, + }, + + { + title: '建筑面积', + dataIndex: 'built_area', + render(_, record) { + return `${ + record?.built_area ? record?.built_area + ' m²' : '-' + } `; + }, + search: false, + }, + { + title: '套内面积', + dataIndex: 'inside_area', + render(_, record) { + return `${ + record?.inside_area ? record?.inside_area + ' m²' : '-' + } `; + }, + search: false, + }, + { + title: '计费面积', + dataIndex: 'chargeable_area', + render(_, record) { + return `${ + record?.chargeable_area + ? record?.chargeable_area + ' m²' + : '-' + } `; + }, + search: false, + }, + // { + // title: '户型', + // render(_, record) { + // return `${record?.room || 'x'}室${record?.hall || 'x'}厅${ + // record?.bathroom || 'x' + // }卫${record?.kitchen || 'x'}厨${record?.balcony || 'x'}阳台`; + // }, + // search: false, + // }, + MyColumns.EnumTag({ + title: '产权性质', + dataIndex: 'ownership_type', + valueEnum: AssetHousesOwnershipTypeEnum, + search: false, + }), + ]} + /> + } + /> + ); +} diff --git a/src/pages/meter/house_meter/modals/MeterHasOne.tsx b/src/pages/meter/house_meter/modals/MeterHasOne.tsx new file mode 100644 index 0000000..9ef8238 --- /dev/null +++ b/src/pages/meter/house_meter/modals/MeterHasOne.tsx @@ -0,0 +1,225 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; +import { MyModal } from '@/components/MyModal'; + +import { Apis } from '@/gen/Apis'; +import { + AssetHousesOwnershipTypeEnum, + AssetHousesUsageEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { message, Space } from 'antd'; +import { useRef, useState } from 'react'; + +export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) { + // 使用 useState 保存选中的房屋 ID 和行数据,只选择一行 + const [selectedHouseId, setSelectedHouseId] = useState(null); + const [selectedRow, setSelectedRow] = useState(null); + + // 添加 tableRef 用于操作表格 + const tableRef = useRef(); + // 添加 modalRef 用于关闭窗口 + const modalRef = useRef(); + + const onShowContactPhone = () => { + if (!selectedHouseId) { + message.warning('请选择一个房屋'); + return; + } + + // 确保 houses_ids 是字符串数组 + const housesIds = [String(selectedHouseId)]; + + Apis.Meter.HouseMeterHasHouses.StoreOrUpdate({ + house_meters_id: props?.item?.id ?? 0, + asset_houses_ids: housesIds, + }) + .then(() => { + // 成功后重置选中状态 + setSelectedHouseId(null); + setSelectedRow(null); + props.reload?.(); + message.success('成功!'); + // 关闭窗口 + modalRef.current?.close(); + }) + .catch((error) => { + console.error('失败:', error); + message.error('失败: ' + (error.message || '未知错误')); + return false; + }); + }; + return ( + + MyProTableProps.request( + { + ...params, + asset_projects_id: props?.item?.asset_projects_id, + }, + sort, + Apis.Asset.AssetHouses.List, + undefined, + (res) => { + // 确保响应数据正确处理 + console.log('加载房屋数据:', res); + return res; + }, + ) + } + style={{ + padding: '20px', + height: '680px', + overflowY: 'auto', + overflowX: 'hidden', + }} + pagination={{ + showQuickJumper: true, + pageSizeOptions: [10, 20, 50, 100, 200, 500, 1000, 2000], + }} + rowSelection={{ + type: 'radio', // 改为单选 + selectedRowKeys: selectedHouseId ? [selectedHouseId] : [], + onChange: (selectedRowKeys, selectedRows) => { + // 单选模式下,只取第一个选中的项 + if (selectedRowKeys.length > 0) { + const selectedKey = + typeof selectedRowKeys[0] === 'string' + ? parseInt(selectedRowKeys[0], 10) + : (selectedRowKeys[0] as number); + + setSelectedHouseId(selectedKey); + setSelectedRow(selectedRows[0]); + } else { + setSelectedHouseId(null); + setSelectedRow(null); + } + }, + }} + tableAlertOptionRender={({ selectedRowKeys, onCleanSelected }) => { + return ( + + 已选 {selectedRowKeys.length} 项 + { + onCleanSelected(); + setSelectedHouseId(null); + setSelectedRow(null); + }} + > + 清空 + + onShowContactPhone()} + /> + + ); + }} + options={false} + columns={[ + MyColumns.ID({ + search: false, + }), + MyColumns.EnumTag({ + title: '用途', + dataIndex: 'usage', + valueEnum: AssetHousesUsageEnum, + search: false, + }), + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + search: false, + }, + { + title: '楼栋名称', + dataIndex: ['asset_building', 'name'], + search: { + transform: (value) => { + return { building_name: value }; + }, + }, + }, + { + title: '单元名称', + dataIndex: ['asset_unit', 'name'], + search: { + transform: (value) => { + return { unit_name: value }; + }, + }, + }, + { + title: '房号', + dataIndex: 'name', + }, + + { + title: '楼层', + dataIndex: 'floor', + render(_, record) { + return `${record?.floor}层`; + }, + search: false, + }, + + { + title: '建筑面积', + dataIndex: 'built_area', + render(_, record) { + return `${ + record?.built_area ? record?.built_area + ' m²' : '-' + } `; + }, + search: false, + }, + { + title: '套内面积', + dataIndex: 'inside_area', + render(_, record) { + return `${ + record?.inside_area ? record?.inside_area + ' m²' : '-' + } `; + }, + search: false, + }, + { + title: '计费面积', + dataIndex: 'chargeable_area', + render(_, record) { + return `${ + record?.chargeable_area + ? record?.chargeable_area + ' m²' + : '-' + } `; + }, + search: false, + }, + MyColumns.EnumTag({ + title: '产权性质', + dataIndex: 'ownership_type', + valueEnum: AssetHousesOwnershipTypeEnum, + search: false, + }), + ]} + /> + } + /> + ); +} diff --git a/src/pages/meter/house_meter/modals/Update.tsx b/src/pages/meter/house_meter/modals/Update.tsx new file mode 100644 index 0000000..00c5da7 --- /dev/null +++ b/src/pages/meter/house_meter/modals/Update.tsx @@ -0,0 +1,146 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseMetersMeterTypeEnum, + HouseMetersUsageTypeEnum, +} 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={`编辑${props.title}`} + trigger={} + layout="horizontal" + labelCol={{ span: 6 }} + wrapperCol={{ span: 18 }} + labelAlign="left" + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={(open: any) => { + if (open && props.item) { + form.resetFields(); // 清空表单数据 + form.setFieldsValue({ + ...props.item, + asset_projects_id: props.item?.asset_projects_id, + house_charge_standards_id: props.item?.house_charge_standards_id, + }); + } + }} + onFinish={async (values) => + Apis.Meter.HouseMeters.Update({ + ...values, + id: props.item?.id ?? 0, + asset_projects_id: props.item?.asset_projects_id, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + MyFormItems.EnumRadio({ + key: 'meter_type', + title: '仪表类型', + colProps: { span: 24 }, + valueEnum: HouseMetersMeterTypeEnum, + required: true, + }), + MyFormItems.EnumRadio({ + key: 'usage_type', + title: '使用类型', + colProps: { span: 24 }, + // valueEnum: HouseMetersUsageTypeEnum, + valueEnum: () => { + let obj: any = JSON.parse(JSON.stringify(HouseMetersUsageTypeEnum)); + delete obj.GasMeter; + delete obj.HeatingMeter; + return obj; + }, + required: true, + }), + { + key: 'name', + title: '仪表编号', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'multiple', + title: '倍率', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + // { + // key: 'initial_value', + // title: '初始抄表读数', + // colProps: { span: 24 }, + // formItemProps: { ...rulesHelper.text }, + // }, + // { + // key: 'initial_time', + // title: '初始抄表时间', + // valueType: 'date', + // colProps: { span: 24 }, + // formItemProps: { ...rulesHelper.text }, + // }, + { + valueType: 'dependency', + name: ['asset_projects_id', 'usage_type', 'meter_type'], + columns: ({ asset_projects_id, usage_type, meter_type }) => { + return [ + Selects?.ChargeStandard({ + title: '选择收费标准', + tooltip: '如无可选信息,请在【财务管理:收费标准】中先行配置', + key: 'charge_standards_id', + params: { + asset_projects_id: asset_projects_id || props?.item?.id || 0, + charge_type: [ + meter_type === 'HouseMeter' + ? usage_type === 'WaterMeter' + ? 'WaterFee' + : 'ElectricityFee' + : meter_type === 'CommonMeter' + ? usage_type === 'WaterMeter' + ? 'SharedWaterFee' + : 'SharedElectricityFee' + : '', + ], + }, + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ]; + }, + }, + MyFormItems.UploadImages({ + key: 'images', + title: '仪表图片', + tooltip: '只能上传1张图片', + max: 1, + colProps: { span: 24 }, + formItemProps: { required: true }, + }), + { + key: 'remark', + title: '备注', + valueType: 'textarea', + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/resource/index.tsx b/src/pages/meter/index.tsx similarity index 72% rename from src/pages/resource/index.tsx rename to src/pages/meter/index.tsx index 7a3f376..b745318 100644 --- a/src/pages/resource/index.tsx +++ b/src/pages/meter/index.tsx @@ -3,8 +3,8 @@ import { useSearchParams } from '@umijs/max'; import type { TabsProps } from 'antd'; import { Tabs } from 'antd'; import { useEffect, useState } from 'react'; -import MyResourceOrders from './resource_orders'; -import MyResources from './resources'; +import CommonMeter from './common_meter'; +import HouseMeter from './house_meter'; export default function Index({ title = '资源管理' }) { const [searchParams] = useSearchParams(); @@ -12,15 +12,15 @@ export default function Index({ title = '资源管理' }) { const [activeKey, setActiveKey] = useState('MyResources'); const items: TabsProps['items'] = getCurrentPermissions({ - MyResources: { - key: 'MyResources', - label: '资源列表', - children: , + HouseMeter: { + key: 'HouseMeter', + label: '房屋表', + children: , }, - MyResourceOrders: { - key: 'MyPatrMyResourceOrdersolRoutes', - label: '订单管理', - children: , + CommonMeter: { + key: 'CommonMeter', + label: '公摊表', + children: , }, }); useEffect(() => { diff --git a/src/pages/instrument/readings/components/MeteInfo.tsx b/src/pages/meter/readings/components/MeteInfo.tsx similarity index 100% rename from src/pages/instrument/readings/components/MeteInfo.tsx rename to src/pages/meter/readings/components/MeteInfo.tsx diff --git a/src/pages/instrument/readings/index.tsx b/src/pages/meter/readings/index.tsx similarity index 100% rename from src/pages/instrument/readings/index.tsx rename to src/pages/meter/readings/index.tsx diff --git a/src/pages/instrument/readings/modals/CorrectReading.tsx b/src/pages/meter/readings/modals/CorrectReading.tsx similarity index 100% rename from src/pages/instrument/readings/modals/CorrectReading.tsx rename to src/pages/meter/readings/modals/CorrectReading.tsx diff --git a/src/pages/instrument/readings/modals/MeterTaskCreate.tsx b/src/pages/meter/readings/modals/MeterTaskCreate.tsx similarity index 100% rename from src/pages/instrument/readings/modals/MeterTaskCreate.tsx rename to src/pages/meter/readings/modals/MeterTaskCreate.tsx diff --git a/src/pages/instrument/readings/modals/MeterTaskShow.tsx b/src/pages/meter/readings/modals/MeterTaskShow.tsx similarity index 97% rename from src/pages/instrument/readings/modals/MeterTaskShow.tsx rename to src/pages/meter/readings/modals/MeterTaskShow.tsx index 281aca0..41f1244 100644 --- a/src/pages/instrument/readings/modals/MeterTaskShow.tsx +++ b/src/pages/meter/readings/modals/MeterTaskShow.tsx @@ -94,7 +94,7 @@ export default function TaskShow(props: MyBetaModalFormProps) { isConfirm description="确认执行此任务吗?" onConfirm={() => - Apis.HouseCharage.HouseChargeTaskDetails.CreateHouseBill({ + Apis.HouseCharge.HouseChargeTaskDetails.CreateHouseBill({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/instrument/readings/modals/NormalReading.tsx b/src/pages/meter/readings/modals/NormalReading.tsx similarity index 100% rename from src/pages/instrument/readings/modals/NormalReading.tsx rename to src/pages/meter/readings/modals/NormalReading.tsx diff --git a/src/pages/instrument/readings/modals/ResetReading.tsx b/src/pages/meter/readings/modals/ResetReading.tsx similarity index 100% rename from src/pages/instrument/readings/modals/ResetReading.tsx rename to src/pages/meter/readings/modals/ResetReading.tsx diff --git a/src/pages/instrument/readings/show/$id.tsx b/src/pages/meter/readings/show/$id.tsx similarity index 100% rename from src/pages/instrument/readings/show/$id.tsx rename to src/pages/meter/readings/show/$id.tsx diff --git a/src/pages/instrument/readings/table/HasHouse.tsx b/src/pages/meter/readings/table/HasHouse.tsx similarity index 100% rename from src/pages/instrument/readings/table/HasHouse.tsx rename to src/pages/meter/readings/table/HasHouse.tsx diff --git a/src/pages/instrument/readings/table/ReadingLIst.tsx b/src/pages/meter/readings/table/ReadingLIst.tsx similarity index 100% rename from src/pages/instrument/readings/table/ReadingLIst.tsx rename to src/pages/meter/readings/table/ReadingLIst.tsx diff --git a/src/pages/instrument/readings/table/Tasks.tsx b/src/pages/meter/readings/table/Tasks.tsx similarity index 100% rename from src/pages/instrument/readings/table/Tasks.tsx rename to src/pages/meter/readings/table/Tasks.tsx diff --git a/src/pages/instrument/tasks/index.tsx b/src/pages/meter/tasks/index.tsx similarity index 100% rename from src/pages/instrument/tasks/index.tsx rename to src/pages/meter/tasks/index.tsx diff --git a/src/pages/instrument/tasks/modals/TaskCreate.tsx b/src/pages/meter/tasks/modals/TaskCreate.tsx similarity index 100% rename from src/pages/instrument/tasks/modals/TaskCreate.tsx rename to src/pages/meter/tasks/modals/TaskCreate.tsx diff --git a/src/pages/instrument/tasks/modals/TaskShow.tsx b/src/pages/meter/tasks/modals/TaskShow.tsx similarity index 97% rename from src/pages/instrument/tasks/modals/TaskShow.tsx rename to src/pages/meter/tasks/modals/TaskShow.tsx index 018ee0d..3b17a19 100644 --- a/src/pages/instrument/tasks/modals/TaskShow.tsx +++ b/src/pages/meter/tasks/modals/TaskShow.tsx @@ -94,7 +94,7 @@ export default function TaskShow(props: MyBetaModalFormProps) { isConfirm description="确认执行此任务吗?" onConfirm={() => - Apis.HouseCharage.HouseChargeTaskDetails.CreateHouseBill({ + Apis.HouseCharge.HouseChargeTaskDetails.CreateHouseBill({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/patrol/index.tsx b/src/pages/patrol/index.tsx deleted file mode 100644 index fad310f..0000000 --- a/src/pages/patrol/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import MyPatrolWork from '@/pages/work_order/patrol_work'; -import { useSearchParams } from '@umijs/max'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import { useEffect, useState } from 'react'; -import MyPatrolLocations from './patrol_locations'; -import MyPatrolRoutes from './patrol_routes'; -import MyPatrolTasks from './patrol_tasks'; - -export default function Index({ title = '安防巡更' }) { - const [searchParams] = useSearchParams(); - const getCurrentPermissions = useCurrentPermissions(); - - const [activeKey, setActiveKey] = useState('MyPatrolTasks'); - const items: TabsProps['items'] = getCurrentPermissions({ - MyPatrolTasks: { - key: 'MyPatrolTasks', - label: '巡更任务', - children: , - }, - MyPatrolRoutes: { - key: 'MyPatrolRoutes', - label: '路线配置', - children: , - }, - MyPatrolLocations: { - key: 'MyPatrolLocations', - label: '点位配置', - children: , - }, - MyPatrolWork: { - key: 'MyPatrolWork', - label: '安防工单', - children: , - }, - }); - useEffect(() => { - if (searchParams?.get('key')) { - setActiveKey(searchParams?.get('key') || '1'); - } - }, []); - - return ( - - - - ); -} diff --git a/src/pages/patrol/patrol_locations/index.tsx b/src/pages/patrol/patrol_locations/index.tsx deleted file mode 100644 index c1aca3a..0000000 --- a/src/pages/patrol/patrol_locations/index.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { message, Progress, Space } from 'antd'; -import { saveAs } from 'file-saver'; -import JSZip from 'jszip'; -import { useState } from 'react'; -import Create from './modals/Create'; -import Update from './modals/Update'; -interface DataType { - key?: React.Key; - id?: React.Key; -} -export default function Index({ title = '点位配置' }) { - const [count, setCount] = useState(0); - const [selectedRowKeys, setSelectedRowKeys] = useState([]); - const [downloadProgress, setDownloadProgress] = useState(0); - const [downloading, setDownloading] = useState(false); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: any = { - selectedRowKeys, - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - console.log(selectedRows, 'selectedRows[0]'); - if (selectedRowKeys.length > 10) { - message.warning('最多批量下载10个'); - return; - } - setSelectedRowKeys(selectedRowKeys); - setSelectedRow(selectedRows); - }, - getCheckboxProps: (record: any) => ({ - disabled: !record.is_enabled, - }), - onSelectAll: (selected: boolean, selectedRows: DataType[]) => { - if (selected && selectedRows.length > 10) { - message.warning('全选数量超过10个!'); - return false; - } - }, - defaultSelectedRowKeys: !count - ? [] - : getSelectedRow?.map((item: any) => item.id), - }; - - // 模拟获取二维码接口 - const getQRCode = async (id?: string) => { - let res = await Apis.Patrol.PatrolLocations.PatrolLocationQrCode({ - id: Number(id), - }); - return res?.data?.qr_code; - }; - - // 生成带海报的二维码 - const generatePosterQR = async (base64: string, res: any) => { - return new Promise((resolve) => { - const canvas = document.createElement('canvas'); - const ctx: any = canvas.getContext('2d'); - - canvas.width = 500; - canvas.height = 800; - - // 海报样式 - ctx.fillStyle = '#1890ff'; - ctx.fillRect(0, 0, canvas.width, canvas.height); - - ctx.fillStyle = 'white'; - ctx.font = 'bold 36px Arial'; - ctx.textAlign = 'center'; - ctx.fillText(`${res?.name}`, canvas.width / 2, 130); - - const qrImage = new Image(); - qrImage.onload = () => { - const qrSize = 300; - const qrX = (canvas.width - qrSize) / 2; - const qrY = 210; - ctx.drawImage(qrImage, qrX, qrY, qrSize, qrSize); - - ctx.font = '20px Arial'; - ctx.fillText('扫描二维码完成签到', canvas.width / 2, 570); - ctx.font = '16px Arial'; - ctx.fillText(res?.code, canvas.width / 2, 605); - - resolve(canvas.toDataURL('image/png')); - }; - qrImage.src = base64; - }); - }; - - const download = async (type: number) => { - if (!getSelectedRow?.length) { - message.error('请选择巡逻位置!'); - return; - } - setDownloading(true); - setDownloadProgress(0); - try { - const zip = new JSZip(); - const total = getSelectedRow.length; - for (let i = 0; i < total; i++) { - let res = getSelectedRow?.[i]; - if (res?.id) { - await new Promise((resolve: any) => { - setTimeout(resolve, 1000); - }); - const qrCode = await getQRCode(res?.id); - if (type === 1) { - const base64Data = qrCode.split(',')[1]; - zip.file(`${res?.name}_${res?.code}.png`, base64Data, { - base64: true, - }); - } - if (type === 2) { - // 带海报的二维码 - const posterData: any = await generatePosterQR(qrCode, res); - const fileData = posterData.split(',')[1]; - zip.file(`${res?.name}_${res?.code}.png`, fileData, { - base64: true, - }); - } - setCount(i + 1); - const progress = Math.round(((i + 1) / total) * 100); - setDownloadProgress(progress); - // 添加延迟 - } - } - const content = await zip.generateAsync({ type: 'blob' }); - saveAs(content, `扫码签到二维码.zip`); - setTimeout(() => { - setCount(0); - }, 1000); - } catch (error) { - console.error('下载失败:', error); - message.error('下载失败,请重试'); - } finally { - setDownloading(false); - setDownloadProgress(0); - } - }; - - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - download_qrcode: ( - download(1)} - /> - ), - download_poster_qrcode: ( - download(2)} - /> - ), - create: , - }, - 'MyPatrolLocations', - ); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - enabled: ( - - Apis.Patrol.PatrolLocations.Update({ - id: item.id ?? 0, - is_enabled: item.is_enabled === 1 ? 0 : 1, - name: item.name, - code: item.code, - asset_projects_id: item.asset_projects_id, - }).then(() => action?.reload()) - } - /> - ), - delete: ( - - Apis.Patrol.PatrolLocations.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MyPatrolLocations', - ); - }; - - return ( - - ), - }} - request={async (params, sort) => - MyProTableProps.request(params, sort, Apis.Patrol.PatrolLocations.List) - } - rowSelection={{ type: 'checkbox', ...rowSelection }} - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '点位名称', - dataIndex: 'name', - }, - { - title: '位置编码', - dataIndex: 'code', - }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '启用/禁用', - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_locations/modals/Create.tsx b/src/pages/patrol/patrol_locations/modals/Create.tsx deleted file mode 100644 index 585e822..0000000 --- a/src/pages/patrol/patrol_locations/modals/Create.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values: any) => - Apis.Patrol.PatrolLocations.Store({ - ...values, - longitude: values?.location ? values.location.split(',')[0] : '', - latitude: values?.location ? values.location.split(',')[1] : '', - is_enabled: values.is_enabled ? 1 : 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.AssetProjects({ - title: '关联项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'name', - title: '点位名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入点位名称', - }, - }, - { - title: '位置信息', - key: 'remark', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入点位的具体位置信息', - }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_locations/modals/Update.tsx b/src/pages/patrol/patrol_locations/modals/Update.tsx deleted file mode 100644 index c262a2c..0000000 --- a/src/pages/patrol/patrol_locations/modals/Update.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`编辑${props.title}`} - trigger={} - key={new Date().getTime()} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - location: `${props.item?.longitude || ''},${ - props.item?.latitude || '' - }`, - }); - } - }} - onFinish={async (values: any) => - Apis.Patrol.PatrolLocations.Update({ - ...values, - longitude: values?.location ? values.location.split(',')[0] : '', - latitude: values?.location ? values.location.split(',')[1] : '', - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'name', - title: '点位名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入点位名称', - }, - }, - { - title: '位置信息', - key: 'remark', - formItemProps: { ...rulesHelper.text }, - valueType: 'textarea', - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入点位的具体位置信息', - }, - }, - { - title: '是否启用', - key: 'is_enabled', - valueType: 'switch', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_routes/index.tsx b/src/pages/patrol/patrol_routes/index.tsx deleted file mode 100644 index 5a20182..0000000 --- a/src/pages/patrol/patrol_routes/index.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { showTime } from '@/common/utils/day'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { PatrolRoutesGenerationMethodEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index() { - const getCurrentPermissions = useCurrentPermissions(); - - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - create: , - }, - 'MyPatrolRoutes', - ); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - delete: ( - - Apis.Patrol.PatrolRoutes.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MyPatrolRoutes', - ); - }; - - return ( - - MyProTableProps.request(params, sort, Apis.Patrol.PatrolRoutes.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '路线名称', - dataIndex: 'name', - }, - MyColumns.EnumTag({ - title: '任务生成', - dataIndex: 'generation_method', - valueEnum: PatrolRoutesGenerationMethodEnum, - }), - { - title: '任务时段', - search: false, - render: (_, item: any) => { - return `${showTime(item.task_start_time)}-${showTime( - item.task_end_time, - )}`; - }, - }, - { - title: '可执行时段', - search: false, - render: (_, item: any) => { - return `${showTime(item.clock_start_time)}-${showTime( - item.clock_end_time, - )}`; - }, - }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_routes/modals/Create.tsx b/src/pages/patrol/patrol_routes/modals/Create.tsx deleted file mode 100644 index cff9248..0000000 --- a/src/pages/patrol/patrol_routes/modals/Create.tsx +++ /dev/null @@ -1,314 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { PatrolRoutesGenerationMethodEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import { useEffect, useRef } from 'react'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const actionRef = useRef(); - - // 使用useEffect添加样式,确保组件挂载时样式正确应用 - useEffect(() => { - const styleId = 'custom-checkbox-styles'; - let styleElement = document.getElementById(styleId) as HTMLStyleElement; - - if (!styleElement) { - styleElement = document.createElement('style'); - styleElement.id = styleId; - document.head.appendChild(styleElement); - } - - // 添加checkbox样式,确保每个选项宽度一致且label和checkbox在同一行,一行显示7个 - styleElement.textContent = ` - /* 为checkbox组的容器设置样式 */ - .custom-checkbox-group { - display: flex; - flex-wrap: wrap; - gap: 4px; - width: 100%; - box-sizing: border-box; - } - - /* 为每个checkbox选项设置固定宽度,使一行能显示7个,并确保在同一行 */ - .custom-checkbox-group .ant-checkbox-wrapper { - display: inline-flex; - align-items: center; - justify-content: center; - width: calc(14.2857% - 4px); /* 一行7个,减去间距 */ - min-width: 60px; - text-align: center; - margin-right: 0; - margin-bottom: 0; - white-space: nowrap; - box-sizing: border-box; - } - - /* 确保label和checkbox在同一行 */ - .custom-checkbox-group .ant-checkbox + span { - display: inline; - width: auto; - margin-left: 4px; - text-align: center; - font-size: 14px; - } - - /* 确保整个选项作为一个整体居中 */ - .custom-checkbox-group .ant-checkbox-wrapper-inner { - display: flex; - align-items: center; - justify-content: center; - } - - /* 调整checkbox本身的大小 */ - .custom-checkbox-group .ant-checkbox { - transform: scale(0.9); - } - `; - - // 清理函数 - return () => { - if (styleElement && styleElement.parentNode) { - styleElement.parentNode.removeChild(styleElement); - } - }; - }, []); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="720px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values: any) => - Apis.Patrol.PatrolRoutes.Store({ - ...values, - is_enabled: 1, - patrol_location: values.patrol_location?.map( - (item: any) => item.location_id, - ), - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '路线名称', - key: 'name', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id'], - columns: ({ asset_projects_id }) => { - return asset_projects_id - ? [ - { - valueType: 'formList', - dataIndex: 'patrol_location', - title: '点位设置', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - actionRef: actionRef, - copyIconProps: false, - addButtonProps: { - children: '添加点位', - }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - Selects?.PatrolLocationsSelect({ - title: '', - key: 'location_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - params: { - asset_projects_id: asset_projects_id, - }, - fieldProps: { - mode: 'single', - placeholder: '请选择巡逻点位', - }, - }), - ], - }, - ], - }, - ] - : []; - }, - }, - { - key: 'task_start_time', - title: '任务时段', - colProps: { span: 12 }, - valueType: 'time', - required: true, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务开始时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - key: 'task_end_time', - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务结束时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - title: '执行时段', - tooltip: - '任务的具体执行中,不能早于可执行开始时间,不能晚于可执行结束时间', - key: 'clock_start_time', - colProps: { span: 12 }, - valueType: 'time', - required: true, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务可执行开始时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - key: 'clock_end_time', - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务可执行结束时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - MyFormItems.EnumRadio({ - key: 'generation_method', - title: '任务生成', - tooltip: '系统将按周期,定时生成巡更工单', - valueEnum: PatrolRoutesGenerationMethodEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['generation_method'], - columns: ({ generation_method }) => { - return generation_method === 'Weekly' || - generation_method === 'Monthly' - ? [ - { - title: '生成时段', - key: 'date', - valueType: 'checkbox', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 24 }, - fieldProps: { - style: { width: '100%' }, - // 使用CSS方式设置每个checkbox选项的宽度 - className: 'custom-checkbox-group', - }, - valueEnum: () => { - if (generation_method === 'Weekly') { - const weekDays = [ - { label: '周一', value: 1 }, - { label: '周二', value: 2 }, - { label: '周三', value: 3 }, - { label: '周四', value: 4 }, - { label: '周五', value: 5 }, - { label: '周六', value: 6 }, - { label: '周日', value: 7 }, - ]; - return weekDays.reduce((acc: any, day) => { - acc[day.value] = { text: day.label }; - return acc; - }, {}); - } - if (generation_method === 'Monthly') { - const monthDays = Array.from( - { length: 31 }, - (_, index) => { - const day = index + 1; - return { - label: `${day < 10 ? `0${day}` : day}号`, - value: day, - }; - }, - ); - - return monthDays.reduce((acc: any, day) => { - acc[day.value] = { text: day.label }; - return acc; - }, {}); - } - }, - }, - ] - : []; - }, - }, - - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_routes/modals/Update.tsx b/src/pages/patrol/patrol_routes/modals/Update.tsx deleted file mode 100644 index d75a4fd..0000000 --- a/src/pages/patrol/patrol_routes/modals/Update.tsx +++ /dev/null @@ -1,330 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { PatrolRoutesGenerationMethodEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import { useEffect, useRef } from 'react'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const actionRef = useRef(); - - const loadShow = () => { - Apis.Patrol.PatrolRoutes.Show({ id: props.item?.id ?? 0 }).then((res) => { - form.setFieldsValue({ - ...res?.data, - patrol_location: res?.data?.patrol_route_locations?.map( - (item: any) => ({ - location_id: item.patrol_locations_id, - }), - ), - }); - }); - }; - - // 使用useEffect添加样式,确保组件挂载时样式正确应用 - useEffect(() => { - const styleId = 'custom-checkbox-styles'; - let styleElement = document.getElementById(styleId) as HTMLStyleElement; - - if (!styleElement) { - styleElement = document.createElement('style'); - styleElement.id = styleId; - document.head.appendChild(styleElement); - } - - // 添加checkbox样式,确保每个选项宽度一致且label和checkbox在同一行,一行显示7个 - styleElement.textContent = ` - /* 为checkbox组的容器设置样式 */ - .custom-checkbox-group { - display: flex; - flex-wrap: wrap; - gap: 4px; - width: 100%; - box-sizing: border-box; - } - - /* 为每个checkbox选项设置固定宽度,使一行能显示7个,并确保在同一行 */ - .custom-checkbox-group .ant-checkbox-wrapper { - display: inline-flex; - align-items: center; - justify-content: center; - width: calc(14.2857% - 4px); /* 一行7个,减去间距 */ - min-width: 60px; - text-align: center; - margin-right: 0; - margin-bottom: 0; - white-space: nowrap; - box-sizing: border-box; - } - - /* 确保label和checkbox在同一行 */ - .custom-checkbox-group .ant-checkbox + span { - display: inline; - width: auto; - margin-left: 4px; - text-align: center; - font-size: 14px; - } - - /* 确保整个选项作为一个整体居中 */ - .custom-checkbox-group .ant-checkbox-wrapper-inner { - display: flex; - align-items: center; - justify-content: center; - } - - /* 调整checkbox本身的大小 */ - .custom-checkbox-group .ant-checkbox { - transform: scale(0.9); - } - `; - - // 清理函数 - return () => { - if (styleElement && styleElement.parentNode) { - styleElement.parentNode.removeChild(styleElement); - } - }; - }, [props.item?.id]); - - return ( - - {...MyModalFormProps.props} - title={`编辑${props.title}`} - trigger={} - key={new Date().getTime()} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="720px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - props.item?.id ? loadShow() : null; - } - }} - onFinish={async (values: any) => - Apis.Patrol.PatrolRoutes.Update({ - ...values, - patrol_location: values.patrol_location?.map( - (item: any) => item.location_id, - ), - is_enabled: values.is_enabled ? 1 : 0, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '路线名称', - key: 'name', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id'], - columns: ({ asset_projects_id }) => { - return asset_projects_id - ? [ - { - valueType: 'formList', - dataIndex: 'patrol_location', - title: '点位设置', - tooltip: '点位的巡更顺序未为【自上而下】', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - actionRef: actionRef, - copyIconProps: false, - addButtonProps: { - children: '添加点位', - }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - Selects?.PatrolLocationsSelect({ - title: '', - key: 'location_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - params: { - asset_projects_id: asset_projects_id, - }, - fieldProps: { - mode: 'single', - placeholder: '请选择巡逻点位', - }, - }), - ], - }, - ], - }, - ] - : []; - }, - }, - { - key: 'task_start_time', - title: '任务时段', - colProps: { span: 12 }, - valueType: 'time', - required: true, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务开始时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - key: 'task_end_time', - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务结束时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - title: '执行时段', - tooltip: - '任务的具体执行中,不能早于可执行开始时间,不能晚于可执行结束时间', - key: 'clock_start_time', - colProps: { span: 12 }, - valueType: 'time', - required: true, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务可执行开始时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - { - key: 'clock_end_time', - valueType: 'time', - colProps: { span: 12 }, - formItemProps: { - labelCol: { span: 8 }, - wrapperCol: { span: 16 }, - ...rulesHelper.text, - }, - fieldProps: { - placeholder: '请设置任务可执行结束时间', - format: 'HH:mm', - style: { width: '100%' }, - }, - }, - MyFormItems.EnumRadio({ - key: 'generation_method', - title: '任务生成', - tooltip: '系统将按周期,定时生成巡更工单', - valueEnum: PatrolRoutesGenerationMethodEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['generation_method'], - columns: ({ generation_method }) => { - return generation_method === 'Weekly' || - generation_method === 'Monthly' - ? [ - { - title: '生成时段', - key: 'date', - valueType: 'checkbox', - formItemProps: { ...rulesHelper.array }, - colProps: { span: 24 }, - fieldProps: { - style: { width: '100%' }, - // 使用CSS方式设置每个checkbox选项的宽度 - className: 'custom-checkbox-group', - }, - valueEnum: () => { - if (generation_method === 'Weekly') { - const weekDays = [ - { label: '周一', value: 1 }, - { label: '周二', value: 2 }, - { label: '周三', value: 3 }, - { label: '周四', value: 4 }, - { label: '周五', value: 5 }, - { label: '周六', value: 6 }, - { label: '周日', value: 7 }, - ]; - return weekDays.reduce((acc: any, day) => { - acc[day.value] = { text: day.label }; - return acc; - }, {}); - } - if (generation_method === 'Monthly') { - const monthDays = Array.from( - { length: 31 }, - (_, index) => { - const day = index + 1; - return { - label: `${day < 10 ? `0${day}` : day}号`, - value: day, - }; - }, - ); - - return monthDays.reduce((acc: any, day) => { - acc[day.value] = { text: day.label }; - return acc; - }, {}); - } - }, - }, - ] - : []; - }, - }, - - { - title: '备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_tasks/index.tsx b/src/pages/patrol/patrol_tasks/index.tsx deleted file mode 100644 index 4e478c5..0000000 --- a/src/pages/patrol/patrol_tasks/index.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { PatrolTasksCreateTypeEnum, PatrolTasksStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import PatrolOrderAssign from './modals/PatrolOrderAssign'; -import PatrolOrderShow from './modals/PatrolOrderShow'; - -export default function Index({ title = '巡逻任务' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - create: , - }, - 'MyPatrolTasks', - ); - }; - let tableRender = (item: any, action: any) => { - let data = {}; - if (item?.status === 'Unassigned') { - data = { - assign: ( - - ), - }; - } - if (item.status !== 'Unassigned') { - data = { - ...data, - update: ( - - ), - }; - } - return getCurrentPermissions( - { - ...data, - delete: ( - - Apis.Patrol.PatrolTasks.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MyPatrolTasks', - ); - }; - return ( - - MyProTableProps.request(params, sort, Apis.Patrol.PatrolTasks.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '路线名称', - dataIndex: ['patrol_route', 'name'], - search: { - transform: (value) => { - return { patrol_route_name: value }; - }, - }, - }, - - { - title: '任务时段', - dataIndex: 'start_time', - valueType: 'dateTime', - render: (_, item: any) => { - // 格式化开始时间(显示日期和时分) - const formatStartTime = (timeStr: string) => { - if (!timeStr) return ''; - const [date, time] = timeStr.split(' '); - if (!time) return date; - return `${date} ${time.split(':').slice(0, 2).join(':')}`; - }; - - // 格式化结束时间(只显示时分) - const formatEndTime = (timeStr: string) => { - if (!timeStr) return ''; - const [, time] = timeStr.split(' '); - if (!time) return ''; - return time.split(':').slice(0, 2).join(':'); - }; - - return `${formatStartTime(item.start_time)} - ${formatEndTime( - item.end_time, - )}`; - }, - search: false, - }, - { - title: '任务时段', - dataIndex: 'date_time', - valueType: 'dateRange', - hideInTable: true, - }, - MyColumns.EnumTag({ - title: '生成方式', - dataIndex: 'create_type', - valueEnum: PatrolTasksCreateTypeEnum, - }), - MyColumns.EnumTag({ - title: '任务状态', - dataIndex: 'status', - valueEnum: PatrolTasksStatusEnum, - search: false, - }), - { - title: '指派时间', - dataIndex: 'assign_time', - search: false, - }, - { - title: '关联工单', - dataIndex: 'house_work_orders_id', - search: false, - }, - { - title: '完成时间', - dataIndex: 'complete_time', - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_tasks/modals/Create.tsx b/src/pages/patrol/patrol_tasks/modals/Create.tsx deleted file mode 100644 index cbf9e8f..0000000 --- a/src/pages/patrol/patrol_tasks/modals/Create.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { HouseWorkOrdersLevelEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -import dayjs from 'dayjs'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加临时任务`} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Patrol.PatrolTasks.Store({ - ...values, - }) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id'], - columns: ({ asset_projects_id }) => { - return asset_projects_id - ? [ - Selects?.PatrolRoutesSelect({ - title: '选择路线', - key: 'patrol_routes_id', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - ] - : [ - Selects?.PatrolRoutesSelect({ - title: '选择路线', - key: 'patrol_routes_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { disabled: true }, - }), - ]; - }, - }, - { - title: '开始时间', - key: 'start_time', - valueType: 'dateTime', - colProps: { span: 24 }, - fieldProps: { - style: { width: '100%' }, - placeholder: '请设置开始时间', - disabledDate: (current: any) => { - // 只能选择当天及之后的时间 - return current && current < dayjs().startOf('day'); - }, - }, - formItemProps: { - ...rulesHelper.text, - }, - }, - { - title: '结束时间', - key: 'end_time', - valueType: 'dateTime', - colProps: { span: 24 }, - fieldProps: { - style: { width: '100%' }, - placeholder: '请设置结束日期', - disabledDate: (current: any) => { - //选择时间必须在开始时间之后,且为同一天 - return ( - current && current < dayjs(form.getFieldValue('start_time')) - ); - }, - }, - formItemProps: { - ...rulesHelper.text, - }, - }, - MyFormItems.EnumRadio({ - key: 'level', - title: '任务等级', - colProps: { span: 24 }, - valueEnum: HouseWorkOrdersLevelEnum, - required: true, - }), - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_tasks/modals/PatrolOrderAssign.tsx b/src/pages/patrol/patrol_tasks/modals/PatrolOrderAssign.tsx deleted file mode 100644 index 6bc393d..0000000 --- a/src/pages/patrol/patrol_tasks/modals/PatrolOrderAssign.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -const JudgmentEnum = { - Yes: { text: '有效工单', color: '#ff0000', value: 'Yes' }, - No: { text: '无效工单', color: '#00ff00', value: 'No' }, -}; - -type FormDataType = ApiTypes.WorkOrder.HouseWorkOrders.Assign & { - attachments?: any[]; - judgment?: string; -}; - -export default function WorkOrderAssign( - props: MyBetaModalFormProps & { item: any }, -) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`指派工单`} - wrapperCol={{ span: 19 }} - width="500px" - layout="horizontal" - labelCol={{ span: 5 }} - trigger={ - - } - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values: any) => { - return Apis.WorkOrder.HouseWorkOrders.Assign({ - ...values, - id: props.item.house_work_orders_id, - predict_complete_at: props.item.end_time, - level: props.item.level, - }) - .then(() => { - props.reload?.(); - message.success('指派工单成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.Employees({ - title: '选择处理人', - key: 'assign_employees_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - required: true, - }), - { - title: '备注', - key: 'assign_remark', - valueType: 'textarea', - colProps: { span: 24 }, - fieldProps: { - style: { width: '100%' }, - }, - }, - ]} - /> - ); -} diff --git a/src/pages/patrol/patrol_tasks/modals/PatrolOrderShow.tsx b/src/pages/patrol/patrol_tasks/modals/PatrolOrderShow.tsx deleted file mode 100644 index 6a1e9f5..0000000 --- a/src/pages/patrol/patrol_tasks/modals/PatrolOrderShow.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import { MyButtons, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - PatrolTaskLocationsStatusEnum, - PatrolTasksStatusEnum, -} from '@/gen/Enums'; -import { ProDescriptions, ProTable } from '@ant-design/pro-components'; -import { Divider, Image, Modal, Space } from 'antd'; -import { useState } from 'react'; -import PatrolOrderAssign from './PatrolOrderAssign'; - -interface PatrolOrderShowProps { - item: any; - title?: string; - reload?: () => void; -} - -export default function PatrolOrderShow({ - item, - title = '巡更详情', - reload, -}: PatrolOrderShowProps) { - const [open, setOpen] = useState(false); - const [data, setData] = useState(null); - - const handleOpen = async () => { - try { - const res = await Apis.Patrol.PatrolTasks.Show({ id: item.id }); - setData(res.data); - setOpen(true); - } catch (error) { - console.error('获取详情失败:', error); - } - }; - - return ( - <> - - setOpen(false)} - footer={null} - width={800} - > - {data && ( - <> - { - const assigneeInfo = record?.house_work_order - ?.assign_employee?.name - ? `${ - record.house_work_order.assign_employee.name || '' - }-${ - record.house_work_order.assign_employee.phone || '' - }` - : '未分配'; - return ( - - {assigneeInfo} - - - ); - }, - }, - { - title: '开始时间', - dataIndex: 'start_time', - }, - { - title: '结束时间', - dataIndex: 'end_time', - }, - { - title: '创建时间', - dataIndex: 'created_at', - valueType: 'dateTime', - }, - { - title: '更新时间', - dataIndex: 'updated_at', - valueType: 'dateTime', - }, - { - title: '完成时间', - dataIndex: 'complete_time', - }, - ]} - /> - - - record?.id_card || index} - size="small" - columns={[ - { - title: '处理人', - dataIndex: 'name', - }, - { - title: '点位名称', - dataIndex: ['patrol_location_json', 'name'], - }, - { - title: '任务状态', - dataIndex: 'status', - valueEnum: PatrolTaskLocationsStatusEnum, - }, - { - title: '完成时间', - dataIndex: 'updated_at', - render: (_, item) => { - return item?.status === - PatrolTaskLocationsStatusEnum.Completed.value - ? item?.updated_at - : '-'; - }, - }, - { - title: '现场照片', - render: (_, item) => { - return ( - - {item?.images?.[0] && ( - - )} - - ); - }, - }, - ]} - /> - - )} - - - ); -} diff --git a/src/pages/prepayments/list/index.tsx b/src/pages/prepayments/list/index.tsx deleted file mode 100644 index 6afaf0a..0000000 --- a/src/pages/prepayments/list/index.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; - -export default function Index({ title = '预缴房屋' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.HouseOrder.HousePrepayments.List, - ) - } - // toolBarRender={(action) => [ - // , - // ]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '房屋', - dataIndex: ['asset_house', 'full_name'], - search: { - transform: (value) => { - return { full_name: value }; - }, - }, - }, - - { - title: '预付余额', - dataIndex: 'amount', - search: false, - }, - { - title: '优惠金额', - dataIndex: 'discount_amount', - search: false, - }, - { - title: '滞纳金', - dataIndex: 'late_fee', - search: false, - }, - { - title: '应收金额', - dataIndex: 'total_payable_amount', - search: false, - }, - { - title: '已收金额', - dataIndex: 'total_paid_amount', - search: false, - }, - - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - Apis.HouseOrder.HousePrepayments.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/prepayments/payment/index.tsx b/src/pages/prepayments/payment/index.tsx deleted file mode 100644 index 5d507bf..0000000 --- a/src/pages/prepayments/payment/index.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; - -export default function Index({ title = '预缴扣费' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.HouseOrder.HousePrepaymentPayments.List, - ) - } - columns={[ - MyColumns.ID({ search: false }), - { - title: '房屋', - dataIndex: ['asset_house', 'full_name'], - search: { - transform: (value) => { - return { full_name: value }; - }, - }, - }, - - { - title: '账单金额', - dataIndex: 'amount', - search: false, - }, - { - title: '优惠金额', - dataIndex: 'discount_amount', - search: false, - }, - { - title: '滞纳金', - dataIndex: 'late_fee', - search: false, - }, - { - title: '应收金额', - dataIndex: 'total_payable_amount', - search: false, - }, - { - title: '已收金额', - dataIndex: 'total_paid_amount', - search: false, - }, - - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - Apis.HouseOrder.HousePrepaymentPayments.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/quality/index.tsx b/src/pages/quality/index.tsx deleted file mode 100644 index a384afa..0000000 --- a/src/pages/quality/index.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersStatusEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space, Tag } from 'antd'; -import WorkOrderShow from '../work_order/list/modals/WorkOrderShow'; -import Create from './modals/Create'; -import Show from './modals/Show'; -import Update from './modals/Update'; - -export default function Index({ title = '品质核查' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - create: , - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - show: , - update: , - delete: ( - - Apis.QualityCheck.QualityChecks.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }); - }; - - return ( - - - MyProTableProps.request( - params, - sort, - Apis.QualityCheck.QualityChecks.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - hidden: true, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, - }, - { - title: '核查对象', - dataIndex: 'check_object', - // search: false, - }, - { - title: '核查日期', - dataIndex: 'check_date', - search: false, - }, - { - title: '核查日期', - dataIndex: 'check_date', - valueType: 'dateRange', - hidden: true, - }, - { - title: '核查得分', - dataIndex: 'check_score', - search: false, - render: (value: any) => `${value?.slice(0, 2) || 0} 分`, - }, - { - title: '下发整改', - dataIndex: 'is_rectification', - search: false, - render: (value) => ( - {value ? '是' : '否'} - ), - }, - { - title: '整改工单', - dataIndex: 'house_work_orders_id', - search: false, - render: (value: any) => ( - - ), - }, - MyColumns.EnumTag({ - title: '分配状态', - dataIndex: ['house_work_order', 'assign_status'], - valueEnum: HouseWorkOrdersAssignStatusEnum, - }), - MyColumns.EnumTag({ - title: '处理进度', - dataIndex: ['house_work_order', 'status'], - valueEnum: HouseWorkOrdersStatusEnum, - search: false, - }), - { - title: '核查人', - dataIndex: 'employee_name', - render: (_, record) => { - return `${record?.employee_name || ''}-${ - record?.employee_phone || '' - }`; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/quality/modals/Create.tsx b/src/pages/quality/modals/Create.tsx deleted file mode 100644 index 06b0e3e..0000000 --- a/src/pages/quality/modals/Create.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加核查记录`} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="600px" - trigger={} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => - Apis.QualityCheck.QualityChecks.Store(values) - .then(() => { - props.reload?.(); - message.success('添加核查记录成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'check_date', - title: '核查日期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabledDate: (current: any) => { - // 禁用未来的日期 - return current && current > new Date(); - }, - style: { - width: '100%', - }, - }, - }, - { - key: 'check_object', - title: '核查对象', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入对象信息', - }, - }, - { - key: 'check_score', - title: '核查得分', - valueType: 'digit', - fieldProps: { - addonAfter: '分', - max: 100, - min: 0, - }, - formItemProps: { required: true }, - colProps: { span: 24 }, - }, - { - key: 'check_description', - title: '核查说明', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'check_images', - title: '核查文件', - tooltip: '最多上传5张图片', - uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - key: 'is_rectification', - title: '下发整改', - colProps: { span: 24 }, - valueType: 'switch', - formItemProps: { required: true }, - fieldProps: { - checkedChildren: '是', - unCheckedChildren: '否', - }, - }, - - { - valueType: 'dependency', - name: ['is_rectification'], - columns: ({ is_rectification }) => { - return is_rectification - ? [ - { - key: 'rectification_description', - title: '整改要求', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'rectification_date', - title: '整改限期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabledDate: (current: any) => { - // 只能选未来的日期 - return current && current < new Date(); - }, - addonAfter: '前', - }, - }, - MyFormItems.UploadImages({ - key: 'rectification_images', - max: 9, - title: '关联图片', - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ] - : []; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/quality/modals/Show.tsx b/src/pages/quality/modals/Show.tsx deleted file mode 100644 index e044126..0000000 --- a/src/pages/quality/modals/Show.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { HouseWorkOrdersStatusEnum } from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Space, Spin, Tag } from 'antd'; -import { useState } from 'react'; - -export default function Show(props: MyBetaModalFormProps) { - const [show, setShow] = useState({}); - const [loading, setLoading] = useState(false); - const [hasLoaded, setHasLoaded] = useState(false); - - const getShow = () => { - if (props?.item?.id && !loading && !hasLoaded) { - setLoading(true); - setHasLoaded(true); - Apis.QualityCheck.QualityChecks.Show({ - id: props?.item?.id, - }) - .then((res: any) => { - setShow(res?.data); - }) - .catch(() => { - setHasLoaded(false); // 如果请求失败,允许重试 - }) - .finally(() => { - setLoading(false); - }); - } - }; - - return ( - getShow()} - node={ - - - - - {show?.asset_project?.name || '-'} - - - {show?.check_object || '-'} - - - {show?.check_date || '-'} - - - {show?.check_score || '-'} - - - {show?.check_description || '-'} - - - - {show?.check_images?.map((item: any, index: number) => { - return ( - - ); - })} - - - - {show?.employee_name || '-'}-{show?.employee_phone || '-'} - - - {show?.created_at || '-'} - - - {show?.updated_at || '-'} - - - - {show?.is_rectification ? '是' : '否'} - - - - - {show?.house_work_orders_id || '-'} - - - - - {show?.rectification_date || '-'} - - - {show?.rectification_description || '-'} - - - {show?.rectification_images?.[0]?.url ? ( - {show?.title - ) : ( - '-' - )} - - - - - } - /> - ); -} diff --git a/src/pages/quality/modals/Update.tsx b/src/pages/quality/modals/Update.tsx deleted file mode 100644 index a9d7219..0000000 --- a/src/pages/quality/modals/Update.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -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} - title={`修改核查记录`} - trigger={} - layout="horizontal" - labelCol={{ span: 4 }} - wrapperCol={{ span: 20 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - const formValues = { - ...props.item, - }; - form.setFieldsValue(formValues); - } - }} - onFinish={async (values) => - Apis.QualityCheck.QualityChecks.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'check_date', - title: '核查日期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabledDate: (current: any) => { - // 禁用未来的日期 - return current && current > new Date(); - }, - style: { - width: '100%', - }, - }, - }, - { - key: 'check_object', - title: '核查对象', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - fieldProps: { - placeholder: '请输入对象信息', - }, - }, - { - key: 'check_score', - title: '核查得分', - valueType: 'digit', - fieldProps: { - addonAfter: '分', - max: 100, - min: 0, - }, - formItemProps: { required: true }, - colProps: { span: 24 }, - }, - { - key: 'check_description', - title: '核查说明', - valueType: 'textarea', - colProps: { span: 24 }, - }, - MyFormItems.UploadImages({ - key: 'check_images', - title: '核查文件', - tooltip: '最多上传5张图片', - uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - { - key: 'is_rectification', - title: '下发整改', - colProps: { span: 24 }, - valueType: 'switch', - formItemProps: { required: true }, - fieldProps: { - checkedChildren: '是', - unCheckedChildren: '否', - }, - }, - - { - valueType: 'dependency', - name: ['is_rectification'], - columns: ({ is_rectification }) => { - return is_rectification - ? [ - { - key: 'rectification_description', - title: '整改要求', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'rectification_date', - title: '整改限期', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - disabledDate: (current: any) => { - // 只能选未来的日期 - return current && current < new Date(); - }, - addonAfter: '前', - }, - }, - MyFormItems.UploadImages({ - key: 'rectification_images', - max: 9, - title: '关联图片', - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ] - : []; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/renovation/application/components/Deposit.tsx b/src/pages/renovation/application/components/Deposit.tsx deleted file mode 100644 index 200906a..0000000 --- a/src/pages/renovation/application/components/Deposit.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - BillPaymentsTypeEnum, - BillsStatusEnum, - ContractBillsCostTypeEnum, - HouseOrdersPaymentMethodEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; - -export default function Index(props: MyBetaModalFormProps) { - return ( - - MyProTableProps.request( - { - ...params, - id: props?.item?.id, - }, - sort, - Apis.Renovation.RenovationApplies.Bills, - ) - } - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '付款人', - dataIndex: 'payer', - }, - { - title: '付款人电话', - dataIndex: 'phone', - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - valueEnum: BillsStatusEnum, - }), - MyColumns.EnumTag({ - title: '支付方式', - dataIndex: 'payment_method', - valueEnum: HouseOrdersPaymentMethodEnum, - }), - MyColumns.EnumTag({ - title: '费用项目', - dataIndex: 'type', - valueEnum: BillPaymentsTypeEnum, - search: false, - }), - MyColumns.EnumTag({ - title: '费用类型', - dataIndex: 'flow_type', - valueEnum: ContractBillsCostTypeEnum, - search: false, - }), - { - title: '支付金额', - dataIndex: 'amount', - render: (_, item) => `${item?.amount}元`, - search: false, - }, - { - title: '支付时间', - dataIndex: 'paid_time', - search: false, - }, - { - title: '退款金额', - render: (_, item) => `${item?.refund_amount}元`, - search: false, - }, - { - title: '退款时间', - dataIndex: 'refund_time', - search: false, - }, - MyColumns.UpdatedAt(), - ]} - /> - ); -} diff --git a/src/pages/renovation/application/components/WorkerTable.tsx b/src/pages/renovation/application/components/WorkerTable.tsx deleted file mode 100644 index 946b81f..0000000 --- a/src/pages/renovation/application/components/WorkerTable.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import MyWorkerCreate from '../../modals/WorkerCreate'; -import MyWorkerUpdate from '../../modals/WorkerUpdate'; - -export default function Index(props: MyBetaModalFormProps) { - return ( - - MyProTableProps.request( - { - ...params, - renovation_applies_id: props?.item?.id, - }, - sort, - Apis.Renovation.RenovationWorkers.List, - ) - } - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '姓名', - dataIndex: 'worker_name', - }, - { - title: '电话', - dataIndex: 'worker_phone', - search: false, - }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${item?.valid_from} 至 ${item?.valid_to}`; - }, - }, - MyColumns.EnumTag({ - title: '证件类型', - dataIndex: 'card_type', - valueEnum: HouseOccupantsCardTypeEnum, - search: false, - }), - { - title: '证件正面照', - search: false, - render: (_, item: any) => { - return ; - }, - }, - { - title: '证件反面照', - search: false, - render: (_, item: any) => { - return ; - }, - }, - { - title: '工人照片', - search: false, - render: (_, item: any) => { - return ; - }, - }, - // MyColumns.UpdatedAt(), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Renovation.RenovationWorkers.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/application/components/info.tsx b/src/pages/renovation/application/components/info.tsx deleted file mode 100644 index 65980ac..0000000 --- a/src/pages/renovation/application/components/info.tsx +++ /dev/null @@ -1,200 +0,0 @@ -import { MyBetaModalFormProps, renderTextHelper } from '@/common'; -import { - HouseOccupantsCardTypeEnum, - RenovationAppliesProcessTypeEnum, - RenovationAppliesRenovationContentEnum, - RenovationAppliesTypeEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions } from '@ant-design/pro-components'; -import { Spin } from 'antd'; - -export default function Info(props: MyBetaModalFormProps) { - return ( -
- - - - - {props?.item?.asset_house?.full_name || '-'} - - - - - - - - - {props?.item?.is_deposit ? '是' : '否'} - - {props?.item?.is_deposit && ( - - {props?.item?.deposit_amount} - - )} - - - - - {props?.item?.construction_start_date || '-'} - - - {props?.item?.construction_end_date || '-'} - - - - - - - - {props?.item?.owner_name || '-'} - - - {props?.item?.owner_phone || '-'} - - - - - - {props?.item?.owner_id_card || '-'} - - - {props?.item?.id_card_front ? '已上传' : '-'} - - - {props?.item?.id_card_back ? '已上传' : '-'} - - - {props?.item?.property_certificate ? '已上传' : '-'} - - - - - {props?.item?.process_type === 'AgentProcess' && ( - - - - {props?.item?.agent_name || '-'} - - - {props?.item?.agent_phone || '-'} - - - - - - {props?.item?.agent_id_card || '-'} - - - {props?.item?.agent_id_card_front ? '已上传' : '-'} - - - {props?.item?.agent_id_card_back ? '已上传' : '-'} - - - {props?.item?.power_attorney ? '已上传' : '-'} - - - - )} - - - - - {props?.item?.construction_principal_name || '-'} - - - {props?.item?.construction_principal_phone || '-'} - - - - - - {props?.item?.construction_principal_id_card || '-'} - - - {props?.item?.construction_principal_id_card_front - ? '已上传' - : '-'} - - - {props?.item?.construction_principal_id_card_back - ? '已上传' - : '-'} - - - - - {props?.item?.type === 'RenovationCompany' && ( - <> - - - - {props?.item?.company_name || '-'} - - - {props?.item?.company_principal_name || '-'} - - - {props?.item?.company_principal_phone || '-'} - - - {props?.item?.company_business_license_num || '-'} - - - {props?.item?.company_business_license ? '已上传' : '-'} - - - {props?.item?.company_asset_certificate ? '已上传' : '-'} - - - {props?.item?.company_power_attorney ? '已上传' : '-'} - - - - - )} - - - - - {props?.item?.construction_draw ? '已上传' : '-'} - - - {props?.item?.construction_commitment_letter ? '已上传' : '-'} - - - {props?.item?.other_attachments ? '已上传' : '-'} - - - {props?.item?.renovation_remark || '-'} - - - - -
- ); -} diff --git a/src/pages/renovation/application/index.tsx b/src/pages/renovation/application/index.tsx deleted file mode 100644 index f932a13..0000000 --- a/src/pages/renovation/application/index.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - RenovationAppliesConstructionStatusEnum, - RenovationAppliesStatusEnum, -} from '@/gen/Enums'; -import { PlusOutlined } from '@ant-design/icons'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import MyWorkerCreate from '../modals/WorkerCreate'; - -export default function Index() { - const getCurrentPermissions = useCurrentPermissions(); - const navigate = useNavigate(); - let toolBarRender = () => { - return getCurrentPermissions( - { - add: ( - } - onClick={() => { - navigate('/renovation/application/pages/create'); - }} - title="新装修申请" - /> - ), - }, - 'MyRenovationApplies', - ); - }; - - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - show: ( - { - navigate(`/renovation/application/pages/show?id=${item.id}`); - }} - title="查看" - /> - ), - worker_add: ( - - ), - update: ( - { - navigate(`/renovation/application/pages/update?id=${item.id}`); - }} - title="编辑" - /> - ), - delete: ( - - Apis.Renovation.RenovationApplies.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }, - 'MyRenovationApplies', - ); - }; - - return ( - - MyProTableProps.request( - params, - sort, - Apis.Renovation.RenovationApplies.List, - ) - } - headerTitle="装修申请列表" - toolBarRender={() => [toolBarRender()]} - columns={[ - MyColumns.ID({ search: false }), - MyColumns.EnumTag({ - title: '登记状态', - dataIndex: 'status', - valueEnum: RenovationAppliesStatusEnum, - search: false, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - // search: { - // transform: (value) => { - // return { project_name: value }; - // }, - // }, - }, - // MyColumns.EnumTag({ - // title: '状态', - // dataIndex: 'status', - // valueEnum: () => { - // let obj: any = JSON.parse( - // JSON.stringify(RenovationAppliesStatusEnum), - // ); - // delete obj?.Pending; - // return obj; - // }, - // hidden: true, - // }), - { - title: '房屋', - dataIndex: ['asset_house', 'full_name'], - search: { - transform: (value) => { - return { full_name: value }; - }, - }, - }, - { - title: '装修人', - dataIndex: 'owner_name', - }, - // { - // title: '代理人', - // dataIndex: 'agent_name', - // }, - { - title: '装修公司', - dataIndex: 'company_name', - search: false, - // render: (_, item: any) => { - // return ( - // - //
{item?.company_name || '-'}
- //
- // {item?.company_principal_name || ''} - //
- //
- // ); - // }, - }, - - { - title: '施工负责人', - dataIndex: 'construction_principal_name', - search: false, - // render: (_, item: any) => { - // return
{item?.construction_principal_name || ''}
; - // }, - }, - MyColumns.EnumTag({ - title: '施工状态', - dataIndex: 'construction_status', - valueEnum: RenovationAppliesConstructionStatusEnum, - search: false, - }), - - { - title: '保证金', - dataIndex: 'deposit_amount', - search: false, - }, - { - title: '施工时间', - search: false, - render: (_, item: any) => { - return ( -
- {item?.construction_start_date || ''} 至 - {item?.construction_end_date || ''} -
- ); - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - {tableRender(item, action)} - ), - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/application/pages/create.tsx b/src/pages/renovation/application/pages/create.tsx deleted file mode 100644 index c07f69f..0000000 --- a/src/pages/renovation/application/pages/create.tsx +++ /dev/null @@ -1,580 +0,0 @@ -import { - MyButtons, - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import MyModalsHouseSelectList from '@/components/ModalsHouseSelectList'; -import { Apis } from '@/gen/Apis'; -import { - HouseOccupantsCardTypeEnum, - RenovationAppliesProcessTypeEnum, - RenovationAppliesRenovationContentEnum, - RenovationAppliesTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useState } from 'react'; - -export default function Index({ title = '新装修申请' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [getSelectHouse, setSelectHouse] = useState({}); - const onSave = (data: any, subType: string) => { - Apis.Renovation.RenovationApplies.Store({ - ...data, - status: subType, - is_deposit: data.is_deposit ? 1 : 0, - }) - .then(() => { - if (subType === 'Draft') { - navigate(-1); - message.success('暂存成功'); - } else { - navigate(-1); - message.success('提交成功'); - } - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: (props) => { - return [ - { - onSave(form.getFieldsValue(), 'Draft'); - }} - title="暂存" - />, - { - props.submit(); - }} - title="提交审核" - />, - ]; - }, - }} - onFinish={async (values: any) => { - onSave(values, 'Pending'); - }} - columns={[ - { - colProps: { span: 24 }, - title: '选择房屋', - key: 'asset_houses_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - - - { - setSelectHouse(e); - form.setFieldsValue({ - asset_houses_id: e?.id, - }); - }} - /> - {getSelectHouse?.full_name ? ( -
已选择房屋:{getSelectHouse?.full_name}
- ) : ( - '' - )} -
-
- ); - }, - }, - MyFormItems.EnumRadio({ - key: 'type', - title: '装修类型', - valueEnum: RenovationAppliesTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - MyFormItems.EnumRadio({ - key: 'process_type', - title: '办理类型', - valueEnum: RenovationAppliesProcessTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '是否有保证金', - colProps: { span: 6 }, - key: 'is_deposit', - valueType: 'switch', - }, - - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit - ? [ - { - title: '保证金金额', - colProps: { span: 6 }, - key: 'deposit_amount', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '业主信息', - }, - }, - { - title: '业主姓名', - key: 'owner_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '业主手机', - key: 'owner_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'owner_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'property_certificate', - title: '房产证明', - max: 1, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.array }, - }), - { - valueType: 'dependency', - name: ['process_type'], - columns: ({ process_type }) => { - return process_type === 'AgentProcess' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '代理人信息', - }, - }, - { - title: '代理人名称', - key: 'agent_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '代理人手机', - key: 'agent_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'agent_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'agent_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'agent_id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'agent_id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'power_attorney', - title: '代理人授权书', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '装修公司信息', - }, - }, - { - title: '公司名称', - key: 'company_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '公司负责人手机', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - { - title: '负责人手机号', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.phone }, - colProps: { span: 6 }, - }, - { - title: '营业执照号', - key: 'company_business_license_num', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '施工信息', - }, - }, - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - title: '施工负责人名称', - key: 'construction_principal_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '施工负责人手机', - key: 'construction_principal_phone', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'construction_principal_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '施工负责人证件号', - key: 'construction_principal_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_front', - title: '施工负责人身份证正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_back', - title: '施工负责人身份证反面', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - - { - valueType: 'group', - columns: [ - { - title: '施工开始时间', - valueType: 'date', - key: 'construction_start_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue( - 'construction_start_date', - dateString, - ); - console.log('construction_start_date', value); - }, - style: { - width: '100%', - }, - }, - }, - { - title: '施工结束时间', - valueType: 'date', - key: 'construction_end_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue('construction_end_date', dateString); - console.log('construction_end_date', value); - }, - style: { - width: '100%', - }, - }, - }, - MyFormItems.EnumRadio({ - key: 'renovation_content', - title: '装修内容', - valueEnum: RenovationAppliesRenovationContentEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - ], - }, - - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - MyFormItems.UploadImages({ - key: 'company_business_license', - title: '装修公司营业执照', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_asset_certificate', - title: '装修公司资质证明', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_power_attorney', - title: '装修公司装修授权书', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '其他附件', - }, - }, - MyFormItems.UploadImages({ - key: 'construction_draw', - title: '施工图', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_commitment_letter', - title: '施工承诺书', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'other_attachments', - title: '其他补充附件', - max: 100, - uploadType: 'file', - colProps: { span: 6 }, - }), - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '重大施工项目', - }, - }, - { - valueType: 'formList', - dataIndex: 'major_construction', - // title: '重大施工项目', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - title: '', - colProps: { span: 24 }, - columns: [ - { - title: '重大施工内容', - key: 'name', - colProps: { span: 12 }, - // formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'draw', - title: '施工图纸', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'certificate', - title: '执业证件', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - ], - }, - ], - }, - { - title: '备注', - key: 'renovation_remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/renovation/application/pages/show.tsx b/src/pages/renovation/application/pages/show.tsx deleted file mode 100644 index e79b916..0000000 --- a/src/pages/renovation/application/pages/show.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { MyPageContainer } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Space, Tabs } from 'antd'; -import { useEffect, useState } from 'react'; -import MyDepositTable from '../components/Deposit'; -import MyInfo from '../components/info'; -import MyWorkerTable from '../components/WorkerTable'; - -export default function Index({ title = '装修申请详情' }) { - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setData] = useState({}); - const [loading, setLoading] = useState(true); - - const loadData = () => { - setLoading(true); - Apis.Renovation.RenovationApplies.Show({ id: Number(id) }) - .then((res) => { - setData(res?.data || {}); - }) - .finally(() => { - setLoading(false); - }); - }; - - useEffect(() => { - loadData(); - }, [id]); - - const items = [ - { - key: 'MyInfo', - label: '装修申请详情', - children: ( - - ), - }, - { - key: 'MyWorkerTable', - label: '装修工人', - children: ( - - ), - }, - { - key: 'MyDepositTable', - label: '装修押金', - children: ( - - ), - }, - ]; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="renovation-application-detail" - tabLabel={title} - > - - - ); -} diff --git a/src/pages/renovation/application/pages/update.tsx b/src/pages/renovation/application/pages/update.tsx deleted file mode 100644 index d3c0aeb..0000000 --- a/src/pages/renovation/application/pages/update.tsx +++ /dev/null @@ -1,594 +0,0 @@ -import { - MyButtons, - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import MyModalsHouseSelectList from '@/components/ModalsHouseSelectList'; -import { Apis } from '@/gen/Apis'; -import { - HouseOccupantsCardTypeEnum, - RenovationAppliesProcessTypeEnum, - RenovationAppliesRenovationContentEnum, - RenovationAppliesTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useEffect, useState } from 'react'; -export default function Index({ title = '编辑新装修申请' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - const [getSelectHouse, setSelectHouse] = useState({}); - - const loadShow = () => { - Apis.Renovation.RenovationApplies.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - setSelectHouse(res?.data?.asset_house); - form.setFieldsValue(res?.data); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - const onSave = (formData: any, subType: string) => { - Apis.Renovation.RenovationApplies.Update({ - ...formData, - status: subType, - id: data?.id ?? 0, - is_deposit: data.is_deposit ? 1 : 0, - }) - .then(() => { - if (subType === 'Draft') { - navigate(-1); - message.success('暂存成功'); - } else { - navigate(-1); - message.success('提交成功'); - } - }) - .catch(() => false); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: (props) => { - return [ - { - onSave(form.getFieldsValue(), 'Draft'); - }} - title="暂存" - />, - { - props.submit(); - }} - title="提交审核" - />, - ]; - }, - }} - onFinish={async (values: any) => { - onSave(values, 'Pending'); - }} - columns={[ - { - colProps: { span: 24 }, - title: '选择房屋', - key: 'asset_houses_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - - - { - setSelectHouse(e); - form.setFieldsValue({ - asset_houses_id: e?.id, - }); - }} - /> - {getSelectHouse?.full_name ? ( -
已选择房屋:{getSelectHouse?.full_name}
- ) : ( - '' - )} -
-
- ); - }, - }, - MyFormItems.EnumRadio({ - key: 'type', - title: '装修类型', - valueEnum: RenovationAppliesTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - MyFormItems.EnumRadio({ - key: 'process_type', - title: '办理类型', - valueEnum: RenovationAppliesProcessTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '是否有保证金', - colProps: { span: 6 }, - key: 'is_deposit', - valueType: 'switch', - }, - - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit - ? [ - { - title: '保证金金额', - colProps: { span: 6 }, - key: 'deposit_amount', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '业主信息', - }, - }, - { - title: '业主姓名', - key: 'owner_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '业主手机', - key: 'owner_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'owner_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'property_certificate', - title: '房产证明', - max: 1, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.array }, - }), - { - valueType: 'dependency', - name: ['process_type'], - columns: ({ process_type }) => { - return process_type === 'AgentProcess' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '代理人信息', - }, - }, - { - title: '代理人名称', - key: 'agent_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '代理人手机', - key: 'agent_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'agent_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'agent_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'agent_id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'agent_id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'power_attorney', - title: '代理人授权书', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '施工信息', - }, - }, - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - title: '施工负责人名称', - key: 'construction_principal_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '施工负责人手机', - key: 'construction_principal_phone', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'construction_principal_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '施工负责人证件号', - key: 'construction_principal_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_front', - title: '施工负责人身份证正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_back', - title: '施工负责人身份证反面', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - - { - valueType: 'group', - columns: [ - { - title: '施工开始时间', - valueType: 'date', - key: 'construction_start_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue( - 'construction_start_date', - dateString, - ); - console.log('construction_start_date', value); - }, - style: { - width: '100%', - }, - }, - }, - { - title: '施工结束时间', - valueType: 'date', - key: 'construction_end_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue('construction_end_date', dateString); - console.log('construction_end_date', value); - }, - style: { - width: '100%', - }, - }, - }, - MyFormItems.EnumRadio({ - key: 'renovation_content', - title: '装修内容', - valueEnum: RenovationAppliesRenovationContentEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '装修公司信息', - }, - }, - { - title: '公司名称', - key: 'company_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '公司负责人手机', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - { - title: '负责人手机号', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.phone }, - colProps: { span: 6 }, - }, - { - title: '营业执照号', - key: 'company_business_license_num', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - ] - : []; - }, - }, - ], - }, - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - MyFormItems.UploadImages({ - key: 'company_business_license', - title: '装修公司营业执照', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_asset_certificate', - title: '装修公司资质证明', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_power_attorney', - title: '装修公司装修授权书', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '其他附件', - }, - }, - MyFormItems.UploadImages({ - key: 'construction_draw', - title: '施工图', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_commitment_letter', - title: '施工承诺书', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'other_attachments', - title: '其他补充附件', - max: 100, - uploadType: 'file', - colProps: { span: 6 }, - }), - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '重大施工项目', - }, - }, - { - valueType: 'formList', - dataIndex: 'major_construction', - // title: '重大施工项目', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - title: '', - colProps: { span: 24 }, - columns: [ - { - title: '重大施工内容', - key: 'name', - colProps: { span: 12 }, - // formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'draw', - title: '施工图纸', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'certificate', - title: '执业证件', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - ], - }, - ], - }, - { - title: '备注', - key: 'renovation_remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/renovation/audit/index.tsx b/src/pages/renovation/audit/index.tsx deleted file mode 100644 index a3c1c5b..0000000 --- a/src/pages/renovation/audit/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { RenovationAppliesStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; - -export default function Index() { - const getCurrentPermissions = useCurrentPermissions(); - const navigate = useNavigate(); - let tableRender = (item: any) => { - return getCurrentPermissions( - { - audit: ( - { - navigate(`/renovation/audit/pages/review?id=${item.id}`); - }} - title="查看并审核" - /> - ), - }, - 'MyRenovationAppliesAudit', - ); - }; - return ( - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - params, - sort, - Apis.Renovation.RenovationApplies.List, - ) - } - params={{ - status: 'Pending', - }} - headerTitle="装修审核列表" - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '登记状态', - dataIndex: 'status', - valueEnum: RenovationAppliesStatusEnum, - search: false, - }), - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '房屋', - dataIndex: ['asset_house', 'full_name'], - search: { - transform: (value) => { - return { full_name: value }; - }, - }, - }, - { - title: '装修人', - dataIndex: 'owner_name', - }, - { - title: '装修公司', - dataIndex: 'company_name', - search: false, - }, - { - title: '施工负责人', - dataIndex: 'construction_principal_name', - search: false, - }, - { - title: '施工时间', - search: false, - render: (_, item: any) => { - return ( -
- {item?.construction_start_date || ''} 至 - {item?.construction_end_date || ''} -
- ); - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index) => ( - {tableRender(item)} - ), - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/audit/modals/Review.tsx b/src/pages/renovation/audit/modals/Review.tsx deleted file mode 100644 index 23ff596..0000000 --- a/src/pages/renovation/audit/modals/Review.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -const DormigoryBedAuditFlowsAuditStatusEnum = { - Approved: { text: '通过', value: 'Approved' }, - Rejected: { text: '驳回', value: 'Rejected' }, -}; -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="600px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Renovation.RenovationApplies.Audit({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - navigate(-1); - return true; - }) - .catch(() => false) - } - columns={[ - Selects.RenovationInspectionRules({ - key: 'renovation_inspection_rules_id', - title: '巡检规则', - required: true, - }), - { - title: '是否有保证金', - colProps: { span: 6 }, - key: 'is_deposit', - valueType: 'switch', - }, - - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit - ? [ - { - title: '保证金金额', - colProps: { span: 6 }, - key: 'deposit_amount', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - Selects?.ProjectReceiptAccountsSelect({ - key: 'receipt_accounts_id', - title: '选择收款账户', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.number }, - fieldProps: { - showSearch: true, - }, - }), - ] - : []; - }, - }, - MyFormItems.EnumRadio({ - key: 'status', - title: '审核意见', - valueEnum: DormigoryBedAuditFlowsAuditStatusEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['status'], - columns: ({ audit_status }) => { - return audit_status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'reason', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'reason', - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/renovation/audit/pages/review.tsx b/src/pages/renovation/audit/pages/review.tsx deleted file mode 100644 index 74005d7..0000000 --- a/src/pages/renovation/audit/pages/review.tsx +++ /dev/null @@ -1,539 +0,0 @@ -import { - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - HouseOccupantsCardTypeEnum, - RenovationAppliesProcessTypeEnum, - RenovationAppliesRenovationContentEnum, - RenovationAppliesTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, Space } from 'antd'; -import { useEffect, useState } from 'react'; -import Review from '../modals/Review'; -export default function Index({ title = '装修申请审核' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - const [getSelectHouse, setSelectHouse] = useState({}); - - const loadShow = () => { - Apis.Renovation.RenovationApplies.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - setSelectHouse(res?.data?.asset_house); - form.setFieldsValue(res?.data); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="renovation_applies-review" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: () => { - return []; - }, - }} - columns={[ - { - colProps: { span: 24 }, - key: 'asset_houses_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - -
{getSelectHouse?.full_name}
-
- ); - }, - }, - MyFormItems.EnumRadio({ - key: 'type', - title: '装修类型', - valueEnum: RenovationAppliesTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - MyFormItems.EnumRadio({ - key: 'process_type', - title: '办理类型', - valueEnum: RenovationAppliesProcessTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '是否有保证金', - colProps: { span: 6 }, - key: 'is_deposit', - valueType: 'switch', - }, - - { - valueType: 'dependency', - name: ['is_deposit'], - columns: ({ is_deposit }) => { - return is_deposit - ? [ - { - title: '保证金金额', - colProps: { span: 6 }, - key: 'deposit_amount', - valueType: 'digit', - formItemProps: { ...rulesHelper.number }, - fieldProps: { - style: { - width: '100%', - }, - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '业主信息', - }, - }, - { - title: '业主姓名', - key: 'owner_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '业主手机', - key: 'owner_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'owner_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'property_certificate', - title: '房产证明', - max: 1, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.array }, - }), - { - valueType: 'dependency', - name: ['process_type'], - columns: ({ process_type }) => { - return process_type === 'AgentProcess' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '代理人信息', - }, - }, - { - title: '代理人名称', - key: 'agent_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '代理人手机', - key: 'agent_phone', - colProps: { span: 6 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'agent_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号码', - key: 'agent_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'agent_id_card_front', - title: '证件正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'agent_id_card_back', - title: '证件反面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'power_attorney', - title: '代理人授权书', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '装修公司信息', - }, - }, - { - title: '公司名称', - key: 'company_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '公司负责人手机', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - { - title: '负责人手机号', - key: 'company_principal_phone', - formItemProps: { ...rulesHelper.phone }, - colProps: { span: 6 }, - }, - { - title: '营业执照号', - key: 'company_business_license_num', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '施工信息', - }, - }, - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - { - title: '施工负责人名称', - key: 'construction_principal_name', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '施工负责人手机', - key: 'construction_principal_phone', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.phone }, - }, - MyFormItems.EnumSelect({ - key: 'construction_principal_card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '施工负责人证件号', - key: 'construction_principal_id_card', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - maxLength: 18, - }, - }, - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_front', - title: '施工负责人身份证正面', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_principal_id_card_back', - title: '施工负责人身份证反面', - max: 1, - colProps: { span: 6 }, - }), - ] - : []; - }, - }, - - { - valueType: 'group', - columns: [ - { - title: '施工开始时间', - valueType: 'date', - key: 'construction_start_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue( - 'construction_start_date', - dateString, - ); - console.log('construction_start_date', value); - }, - style: { - width: '100%', - }, - }, - }, - { - title: '施工结束时间', - valueType: 'date', - key: 'construction_end_date', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - fieldProps: { - format: 'YYYY-MM-DD', - onChange: (value: string, dateString: string) => { - form.setFieldValue('construction_end_date', dateString); - console.log('construction_end_date', value); - }, - style: { - width: '100%', - }, - }, - }, - MyFormItems.EnumRadio({ - key: 'renovation_content', - title: '装修内容', - valueEnum: RenovationAppliesRenovationContentEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - ], - }, - - { - valueType: 'dependency', - name: ['type'], - columns: ({ type }) => { - return type === 'RenovationCompany' - ? [ - MyFormItems.UploadImages({ - key: 'company_business_license', - title: '装修公司营业执照', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_asset_certificate', - title: '装修公司资质证明', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'company_power_attorney', - title: '装修公司装修授权书', - max: 1, - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.array }, - }), - ] - : []; - }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '其他附件', - }, - }, - MyFormItems.UploadImages({ - key: 'construction_draw', - title: '施工图', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'construction_commitment_letter', - title: '施工承诺书', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'other_attachments', - title: '其他补充附件', - max: 100, - uploadType: 'file', - colProps: { span: 6 }, - }), - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '重大施工项目', - }, - }, - { - valueType: 'formList', - dataIndex: 'major_construction', - // title: '重大施工项目', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - initialValue: [ - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - { - sign_party: null, - counterparty_type: null, - counterparty: null, - }, - ], - columns: [ - { - valueType: 'group', - title: '', - colProps: { span: 24 }, - columns: [ - { - title: '重大施工内容', - key: 'name', - colProps: { span: 12 }, - // formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'draw', - title: '施工图纸', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - MyFormItems.UploadImages({ - key: 'certificate', - title: '执业证件', - uploadType: 'file', - max: 1, - colProps: { span: 6 }, - }), - ], - }, - ], - }, - { - title: '备注', - key: 'renovation_remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/renovation/config/$id.tsx b/src/pages/renovation/config/$id.tsx deleted file mode 100644 index 92eca7f..0000000 --- a/src/pages/renovation/config/$id.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { MyPageContainer, usePageTabs } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { useParams } from '@umijs/max'; -import { Tabs } from 'antd'; -import { useEffect, useState } from 'react'; -import MyRenovationWorkers from '../renovation_workers'; - -export default function Config({ title }: { title?: string } = {}) { - const { id } = useParams<{ id: string }>(); - const [data, setShow] = useState({}); - - // 注册当前页面为标签页 - const { addTab } = usePageTabs({ - tabKey: `charge-standard-${id}`, - tabLabel: data?.name || title || '装修配置详情', - autoAdd: false, - }); - - const loadShow = () => { - let paramsId: any = { id: id ?? 0 }; - Apis.Renovation.RenovationApplies.Show(paramsId).then((res) => { - setShow(res?.data); - // if (res?.data?.asset_house?.full_name) { - // addTab({ - // key: `renovation_applies_config_${id}`, - // label: `${res?.data?.asset_house?.full_name}_装修配置_${id}`, - // path: `/renovation/show/${id}`, - // }); - // } - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - let items = [ - { - label: '装修工人', - key: '1', - closable: false, - children: , - }, - ]; - return ( - - - - ); -} diff --git a/src/pages/renovation/deposit/index.tsx b/src/pages/renovation/deposit/index.tsx deleted file mode 100644 index 6081423..0000000 --- a/src/pages/renovation/deposit/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - HouseOrdersOrderStatusEnum, - HouseOrdersPaymentMethodEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; - -export default function Index({ title = '装修押金' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.WorkOrder.HouseWorkOrderPayments.List, - ) - } - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '支付状态', - dataIndex: 'payment_status', - valueEnum: HouseOrdersOrderStatusEnum, - }), - MyColumns.EnumTag({ - title: '支付方式', - dataIndex: 'payment_method', - valueEnum: HouseOrdersPaymentMethodEnum, - }), - // { - // title: '账单金额', - // dataIndex: 'amount', - // render: (value: any) => `${value / 100}元`, - // search: false, - // }, - { - title: '收款金额', - dataIndex: 'actual_amount', - render: (value: any) => `${value / 100}元`, - search: false, - }, - - { - title: '支付时间', - dataIndex: 'paid_time', - render: (_, record) => { - return record?.paid_time?.substring(0, 10); - }, - search: false, - }, - { - title: '银行流水', - dataIndex: ['house_order', 'accept_serial_number'], - // search: false, - }, - { - title: '外部交易号', - dataIndex: 'third_trade_no', - // search: false, - }, - // MyColumns.EnumTag({ - // title: '审核状态', - // dataIndex: 'audit_status', - // valueEnum: HouseOrdersAuditStatusEnum, - // }), - { - title: '收款单号', - dataIndex: 'payment_no', - search: false, - }, - MyColumns.UpdatedAt(), - ]} - /> - - ); -} diff --git a/src/pages/renovation/index.tsx b/src/pages/renovation/index.tsx deleted file mode 100644 index a888eb8..0000000 --- a/src/pages/renovation/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import MyDecorationWorkorder from '@/pages/work_order/renovation'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import MyRenovationApplies from './application'; -import MyRenovationAppliesAudit from './audit'; -import MyRenovationInspectionRules from './renovation_inspection_rules'; -export default function Index({ title = '装修管理' }) { - const getCurrentPermissions = useCurrentPermissions(); - - const items: TabsProps['items'] = getCurrentPermissions({ - MyRenovationApplies: { - key: 'MyRenovationApplies', - label: '装修申请', - children: , - }, - - MyRenovationAppliesAudit: { - key: 'MyRenovationAppliesAudit', - label: '资料审核', - children: , - }, - MyDecorationWorkorder: { - key: 'MyDecorationWorkorder', - label: '装修工单', - children: , - }, - MyRenovationInspectionRules: { - key: 'MyRenovationInspectionRules', - label: '巡检规则配置', - children: , - }, - }); - return ( - - - - ); -} diff --git a/src/pages/renovation/modals/WorkerCreate.tsx b/src/pages/renovation/modals/WorkerCreate.tsx deleted file mode 100644 index f5cc2dc..0000000 --- a/src/pages/renovation/modals/WorkerCreate.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Index(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - width="700px" - wrapperCol={{ span: 24 }} - labelAlign="left" - trigger={ - - } - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => - Apis.Renovation.RenovationWorkers.Store({ - ...values, - worker_phone: values.worker_phone?.toString(), - renovation_applies_id: props?.item?.id, - }) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '姓名', - colProps: { span: 12 }, - key: 'worker_name', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '手机号', - colProps: { span: 12 }, - valueType: 'digit', - key: 'worker_phone', - fieldProps: { maxLength: 11, style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号', - colProps: { span: 12 }, - key: 'id_card', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'card_front', - title: '证件正面', - max: 1, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'card_back', - title: '证件反面', - max: 1, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.array }, - }), - { - title: '证件有效期-开始', - colProps: { span: 12 }, - valueType: 'date', - key: 'valid_from', - fieldProps: { style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '证件有效期-结束', - colProps: { span: 12 }, - valueType: 'date', - key: 'valid_to', - fieldProps: { style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'worker_photo', - title: '工人照片', - max: 1, - formItemProps: { ...rulesHelper.array }, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/modals/WorkerUpdate.tsx b/src/pages/renovation/modals/WorkerUpdate.tsx deleted file mode 100644 index 725f2b1..0000000 --- a/src/pages/renovation/modals/WorkerUpdate.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Index(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title="编辑工人" - width="700px" - wrapperCol={{ span: 24 }} - labelAlign="left" - trigger={} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Renovation.RenovationWorkers.Update({ - ...values, - worker_phone: values.worker_phone?.toString(), - id: props?.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('更新成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - title: '姓名', - colProps: { span: 12 }, - key: 'worker_name', - formItemProps: { ...rulesHelper.text }, - }, - { - title: '手机号', - colProps: { span: 12 }, - valueType: 'digit', - key: 'worker_phone', - fieldProps: { maxLength: 11, style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号', - colProps: { span: 12 }, - key: 'id_card', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'card_front', - title: '证件正面', - max: 1, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.array }, - }), - MyFormItems.UploadImages({ - key: 'card_back', - title: '证件反面', - max: 1, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.array }, - }), - { - title: '证件有效期-开始', - colProps: { span: 12 }, - valueType: 'date', - key: 'valid_from', - fieldProps: { style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '证件有效期-结束', - colProps: { span: 12 }, - valueType: 'date', - key: 'valid_to', - fieldProps: { style: { width: '100%' } }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'worker_photo', - title: '工人照片', - max: 1, - formItemProps: { ...rulesHelper.array }, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_inspection_rules/index.tsx b/src/pages/renovation/renovation_inspection_rules/index.tsx deleted file mode 100644 index d2c9007..0000000 --- a/src/pages/renovation/renovation_inspection_rules/index.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '巡检规则' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - add: , - }, - 'MyRenovationInspectionRules', - ); - }; - - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - delete: ( - - Apis.Renovation.RenovationInspectionRules.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }, - 'MyRenovationInspectionRules', - ); - }; - return ( - - MyProTableProps.request( - params, - sort, - Apis.Renovation.RenovationInspectionRules.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '名称', - dataIndex: 'name', - }, - - { - title: '巡逻时段', - search: false, - render: (_, item: any) => { - return ( - - {item?.rule?.map((res: any, index: number) => { - return ( -
- 【{index + 1}】{res.start_time}-{res.end_time} -
- ); - })} -
- ); - }, - }, - { - title: '巡逻说明', - dataIndex: 'description', - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_inspection_rules/modals/Create.tsx b/src/pages/renovation/renovation_inspection_rules/modals/Create.tsx deleted file mode 100644 index 57bad94..0000000 --- a/src/pages/renovation/renovation_inspection_rules/modals/Create.tsx +++ /dev/null @@ -1,97 +0,0 @@ -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 Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Renovation.RenovationInspectionRules.Store(values) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - valueType: 'formList', - dataIndex: 'rule', - title: '巡逻时段(添加多行,代表一天巡逻多次)', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '开始时间', - key: 'start_time', - valueType: 'time', - colProps: { span: 12 }, - fieldProps: { - format: 'HH:mm', - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '结束时间', - key: 'end_time', - valueType: 'time', - colProps: { span: 12 }, - fieldProps: { - format: 'HH:mm', - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.text }, - }, - ], - }, - ], - }, - { - title: '巡逻说明', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_inspection_rules/modals/Update.tsx b/src/pages/renovation/renovation_inspection_rules/modals/Update.tsx deleted file mode 100644 index 449d139..0000000 --- a/src/pages/renovation/renovation_inspection_rules/modals/Update.tsx +++ /dev/null @@ -1,100 +0,0 @@ -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} - title={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Renovation.RenovationInspectionRules.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - { - valueType: 'formList', - dataIndex: 'rule', - title: '巡逻时段(添加多行,代表一天巡逻多次)', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - title: '开始时间', - key: 'start_time', - valueType: 'time', - colProps: { span: 12 }, - fieldProps: { - format: 'HH:mm', - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '结束时间', - key: 'end_time', - valueType: 'time', - colProps: { span: 12 }, - fieldProps: { - format: 'HH:mm', - style: { - width: '100%', - }, - }, - formItemProps: { ...rulesHelper.text }, - }, - ], - }, - ], - }, - { - title: '巡逻说明', - key: 'description', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_workers/index.tsx b/src/pages/renovation/renovation_workers/index.tsx deleted file mode 100644 index 9e47f10..0000000 --- a/src/pages/renovation/renovation_workers/index.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index(props: MyBetaModalFormProps) { - return ( - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - { ...params, renovation_applies_id: props?.item?.id }, - sort, - Apis.Renovation.RenovationWorkers.List, - ) - } - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '工人姓名', - dataIndex: 'worker_name', - }, - { - title: '工人电话', - dataIndex: 'worker_phone', - }, - { - title: '有效期', - search: false, - render: (_, item: any) => { - return `${item?.valid_from} - ${item?.valid_to}`; - }, - }, - MyColumns.EnumTag({ - title: '证件类型', - dataIndex: 'card_type', - search: false, - valueEnum: HouseOccupantsCardTypeEnum, - }), - { - title: '证件号', - search: false, - dataIndex: 'id_card', - }, - { - title: '证件正面', - search: false, - render: (_, item: any) => { - return item?.card_front?.map((res: any, index: number) => { - return ( - - ); - }); - }, - }, - { - title: '证件反面', - search: false, - render: (_, item: any) => { - return item?.card_back?.map((res: any, index: number) => { - return ( - - ); - }); - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Renovation.RenovationWorkers.Delete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_workers/modals/Create.tsx b/src/pages/renovation/renovation_workers/modals/Create.tsx deleted file mode 100644 index de37974..0000000 --- a/src/pages/renovation/renovation_workers/modals/Create.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Renovation.RenovationWorkers.Store({ - ...values, - renovation_applies_id: props?.item?.id, - }) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'worker_name', - title: '工人姓名', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - title: '工人电话', - key: 'worker_phone', - colProps: { span: 12 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号', - key: 'id_card', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'card_front', - title: '证件正面', - max: 1, - colProps: { span: 12 }, - }), - MyFormItems.UploadImages({ - key: 'card_back', - title: '证件反面', - max: 1, - colProps: { span: 12 }, - }), - { - title: '证件有效期开始', - key: 'valid_from', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '证件有效期结束', - key: 'valid_to', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'worker_photo', - title: '工人照片', - max: 1, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/renovation/renovation_workers/modals/Update.tsx b/src/pages/renovation/renovation_workers/modals/Update.tsx deleted file mode 100644 index b34477d..0000000 --- a/src/pages/renovation/renovation_workers/modals/Update.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { HouseOccupantsCardTypeEnum } 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Renovation.RenovationWorkers.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'worker_name', - title: '工人姓名', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - title: '工人电话', - key: 'worker_phone', - colProps: { span: 12 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumSelect({ - key: 'card_type', - title: '证件类型', - valueEnum: HouseOccupantsCardTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - { - title: '证件号', - key: 'id_card', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'card_front', - title: '证件正面', - max: 1, - colProps: { span: 12 }, - }), - MyFormItems.UploadImages({ - key: 'card_back', - title: '证件反面', - max: 1, - colProps: { span: 12 }, - }), - { - title: '证件有效期开始', - key: 'valid_from', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '证件有效期结束', - key: 'valid_to', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'worker_photo', - title: '工人照片', - max: 1, - colProps: { span: 24 }, - }), - ]} - /> - ); -} diff --git a/src/pages/resource/resource_orders/index.tsx b/src/pages/resource/resource_orders/index.tsx deleted file mode 100644 index 87d97a2..0000000 --- a/src/pages/resource/resource_orders/index.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ResourceOrdersPaymentStatusEnum, - ResourceOrdersStatusEnum, - ResourceTypesCategoryEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; - -export default function Index({ title = '资源订单' }) { - return ( - - MyProTableProps.request(params, sort, Apis.Resource.ResourceOrders.List) - } - headerTitle={`${title}列表`} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '所属资源', - dataIndex: ['resource', 'name'], - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'category', - valueEnum: ResourceTypesCategoryEnum, - }), - MyColumns.EnumTag({ - title: '资源状态', - dataIndex: 'status', - valueEnum: ResourceOrdersStatusEnum, - }), - MyColumns.EnumTag({ - title: '支付状态', - dataIndex: 'payment_status', - valueEnum: ResourceOrdersPaymentStatusEnum, - }), - { - title: '合同金额', - dataIndex: 'total_amount', - search: false, - }, - { - title: '支付金额', - dataIndex: 'paid_amount', - search: false, - }, - { - title: '退款金额', - dataIndex: 'refund_amount', - search: false, - }, - { - title: '支付时间', - dataIndex: 'paid_time', - }, - { - title: '项目', - search: false, - dataIndex: ['asset_project', 'name'], - }, - { - title: '楼栋', - search: false, - dataIndex: ['asset_building', 'name'], - }, - { - title: '管理合同', - search: false, - dataIndex: 'remark', - }, - MyColumns.CreatedAt(), - ]} - /> - ); -} diff --git a/src/pages/resource/resource_orders/modals/Create.tsx b/src/pages/resource/resource_orders/modals/Create.tsx deleted file mode 100644 index e0c31ad..0000000 --- a/src/pages/resource/resource_orders/modals/Create.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ResourceTypesCategoryEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="700px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Resource.ResourceOrders.Store(values) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '资源名称', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'category', - title: '类型', - valueEnum: ResourceTypesCategoryEnum, - required: true, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('asset_buildings_id', undefined); - form.setFieldValue('asset_units_id', undefined); - form.setFieldValue('asset_floors_id', undefined); - }, - }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id', 'asset_buildings_id', 'asset_units_id'], - columns: ({ asset_projects_id, asset_buildings_id }) => [ - Selects?.AssetBuildings({ - key: 'asset_buildings_id', - title: '选择楼栋', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - onChange: () => { - form.setFieldsValue({ - asset_units_id: undefined, - asset_floors_id: undefined, - }); - }, - }, - }), - Selects?.AssetUnits({ - key: 'asset_units_id', - title: '选择单元', - params: { - asset_projects_id: asset_projects_id, - asset_buildings_id: asset_buildings_id, - }, - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - }, - }), - { - key: 'address', - title: '位置描述', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '封面', - // uploadType: 'file', - max: 1, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - MyFormItems.UploadImages({ - key: 'images', - title: '资源图', - tooltip: '最多上传5张图片', - // uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/resource/resource_orders/modals/Update.tsx b/src/pages/resource/resource_orders/modals/Update.tsx deleted file mode 100644 index 6e30f58..0000000 --- a/src/pages/resource/resource_orders/modals/Update.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ResourceTypesCategoryEnum } 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="700px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Resource.ResourceOrders.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '资源名称', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'category', - title: '类型', - valueEnum: ResourceTypesCategoryEnum, - required: true, - }), - Selects?.AssetProjects({ - title: '选择项目', - key: 'asset_projects_id', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('asset_buildings_id', undefined); - form.setFieldValue('asset_units_id', undefined); - form.setFieldValue('asset_floors_id', undefined); - }, - }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id', 'asset_buildings_id', 'asset_units_id'], - columns: ({ asset_projects_id, asset_buildings_id }) => [ - Selects?.AssetBuildings({ - key: 'asset_buildings_id', - title: '选择楼栋', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - onChange: () => { - form.setFieldsValue({ - asset_units_id: undefined, - asset_floors_id: undefined, - }); - }, - }, - }), - Selects?.AssetUnits({ - key: 'asset_units_id', - title: '选择单元', - params: { - asset_projects_id: asset_projects_id, - asset_buildings_id: asset_buildings_id, - }, - colProps: { span: 8 }, - fieldProps: { - showSearch: true, - }, - }), - { - key: 'address', - title: '位置描述', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '封面', - // uploadType: 'file', - max: 1, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - MyFormItems.UploadImages({ - key: 'images', - title: '资源图', - tooltip: '最多上传5张图片', - // uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/resource/resources/index.tsx b/src/pages/resource/resources/index.tsx deleted file mode 100644 index 5d1ef1a..0000000 --- a/src/pages/resource/resources/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - ResourcesReservationStatusEnum, - ResourceTypesCategoryEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '资源' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - add: , - }, - 'MyResources', - ); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - delete: ( - - Apis.Resource.Resources.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MyResources', - ); - }; - return ( - - MyProTableProps.request(params, sort, Apis.Resource.Resources.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - headerTitle={`${title}列表`} - columns={[ - MyColumns.ID({}), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'reservation_status', - valueEnum: ResourcesReservationStatusEnum, - }), - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'category', - valueEnum: ResourceTypesCategoryEnum, - }), - { - title: '名称', - dataIndex: 'name', - }, - { - title: '项目', - search: false, - dataIndex: ['asset_project', 'name'], - }, - { - title: '楼栋', - search: false, - dataIndex: ['asset_building', 'name'], - }, - { - title: '单元', - search: false, - dataIndex: ['asset_unit', 'name'], - }, - { - title: '封面', - search: false, - render: (_, item: any) => { - return ; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/resource/resources/modals/Create.tsx b/src/pages/resource/resources/modals/Create.tsx deleted file mode 100644 index 926e0ab..0000000 --- a/src/pages/resource/resources/modals/Create.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ResourceTypesCategoryEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Resource.Resources.Store(values) - .then(() => { - props.reload?.(); - message.success('添加成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'category', - title: '类型', - valueEnum: ResourceTypesCategoryEnum, - required: true, - }), - { - key: 'name', - title: '资源名称', - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '所在项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('asset_buildings_id', undefined); - form.setFieldValue('asset_units_id', undefined); - form.setFieldValue('asset_floors_id', undefined); - }, - }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id', 'asset_buildings_id', 'asset_units_id'], - columns: ({ asset_projects_id, asset_buildings_id }) => [ - Selects?.AssetBuildings({ - key: 'asset_buildings_id', - title: '所在楼栋', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - onChange: () => { - form.setFieldsValue({ - asset_units_id: undefined, - asset_floors_id: undefined, - }); - }, - }, - }), - Selects?.AssetUnits({ - key: 'asset_units_id', - title: '所在单元', - params: { - asset_projects_id: asset_projects_id, - asset_buildings_id: asset_buildings_id, - }, - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - }, - }), - { - key: 'address', - title: '位置描述', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '上传封面', - // uploadType: 'file', - max: 1, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - MyFormItems.UploadImages({ - key: 'images', - title: '上传资源图', - tooltip: '最多上传5张图片', - // uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/resource/resources/modals/Update.tsx b/src/pages/resource/resources/modals/Update.tsx deleted file mode 100644 index 53edb8b..0000000 --- a/src/pages/resource/resources/modals/Update.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ResourceTypesCategoryEnum } 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={`编辑${props.title}`} - trigger={} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Resource.Resources.Update({ ...values, id: props.item?.id ?? 0 }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'category', - title: '类型', - valueEnum: ResourceTypesCategoryEnum, - required: true, - }), - { - key: 'name', - title: '资源名称', - formItemProps: { ...rulesHelper.text }, - }, - Selects?.AssetProjects({ - title: '所在项目', - key: 'asset_projects_id', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - onChange: () => { - // 切换计量单位时清空计费模式 - form.setFieldValue('asset_buildings_id', undefined); - form.setFieldValue('asset_units_id', undefined); - form.setFieldValue('asset_floors_id', undefined); - }, - }, - }), - { - valueType: 'dependency', - name: ['asset_projects_id', 'asset_buildings_id', 'asset_units_id'], - columns: ({ asset_projects_id, asset_buildings_id }) => [ - Selects?.AssetBuildings({ - key: 'asset_buildings_id', - title: '所在楼栋', - params: { - asset_projects_id: asset_projects_id, - }, - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - onChange: () => { - form.setFieldsValue({ - asset_units_id: undefined, - asset_floors_id: undefined, - }); - }, - }, - }), - Selects?.AssetUnits({ - key: 'asset_units_id', - title: '所在单元', - params: { - asset_projects_id: asset_projects_id, - asset_buildings_id: asset_buildings_id, - }, - colProps: { span: 24 }, - fieldProps: { - showSearch: true, - }, - }), - { - key: 'address', - title: '位置描述', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '上传封面', - // uploadType: 'file', - max: 1, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - MyFormItems.UploadImages({ - key: 'images', - title: '上传资源图', - tooltip: '最多上传5张图片', - // uploadType: 'file', - max: 5, - colProps: { span: 24 }, - formItemProps: { required: false }, - }), - ], - }, - ]} - /> - ); -} diff --git a/src/pages/supplier/internal/index.tsx b/src/pages/supplier/internal/index.tsx deleted file mode 100644 index 7fb63ef..0000000 --- a/src/pages/supplier/internal/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanySuppliersCounterpartyEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '企业信息' }) { - return ( - - - MyProTableProps.request( - { - ...params, - counterparty: - CompanySuppliersCounterpartyEnum.InternalCompany.value, - }, - sort, - Apis.Company.CompanySuppliers.List, - ) - } - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ search: false }), - { - title: '企业名称', - dataIndex: 'name', - }, - { - title: '营业执照', - dataIndex: 'tax_number', - }, - { - title: '地址', - search: false, - render: (_, item: any) => { - return `${item.province} ${item.city || ''} ${item.area || ''} ${ - item.street || '' - }${item.address || ''}`; - }, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Company.CompanySuppliers.Delete({ id: item.id }).then( - () => action?.reload(), - ) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/supplier/internal/modals/Create.tsx b/src/pages/supplier/internal/modals/Create.tsx deleted file mode 100644 index 940cb8f..0000000 --- a/src/pages/supplier/internal/modals/Create.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCertificateTypeEnum, - CompanySuppliersCounterpartyEnum, - CompanySuppliersSupplierTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="820px" - style={{ - padding: '20px', - maxHeight: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Company.CompanySuppliers.Store({ - ...values, - is_general_taxpayer: values.is_general_taxpayer ? 1 : 0, - counterparty: CompanySuppliersCounterpartyEnum.InternalCompany.value, - supplier_type: CompanySuppliersSupplierTypeEnum.Enterprise.value, - certificate_type: - CompanySuppliersCertificateTypeEnum.BusinessLicense.value, - company_name: values.name, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '企业名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - { - key: 'tax_number', - title: '纳税人识别号', - colProps: { span: 6 }, - }, - { - key: 'tax_address', - title: '开票地址', - colProps: { span: 6 }, - }, - { - key: 'tax_phone', - title: '开票电话', - colProps: { span: 6 }, - }, - { - key: 'tax_bank_name', - title: '开户行', - colProps: { span: 6 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 6 }, - }, - { - key: 'is_general_taxpayer', - title: '是否一般纳税人', - valueType: 'switch', - colProps: { span: 6 }, - }, - { - key: 'legal_person', - title: '法定代表人', - colProps: { span: 6 }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '收款账号', - }, - }, - { - valueType: 'formList', - dataIndex: 'bank_accounts', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'company_name', - title: '开户名称', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_name', - title: '开户银行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/supplier/internal/modals/Update.tsx b/src/pages/supplier/internal/modals/Update.tsx deleted file mode 100644 index bca5108..0000000 --- a/src/pages/supplier/internal/modals/Update.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCertificateTypeEnum, - CompanySuppliersCounterpartyEnum, - CompanySuppliersSupplierTypeEnum, -} 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="820px" - style={{ - padding: '20px', - maxHeight: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - casacader: [ - props.item?.province || '', - props.item?.city || '', - props.item?.area || '', - props.item?.street || '', - ], - }); - } - }} - onFinish={async (values) => - Apis.Company.CompanySuppliers.Update({ - ...values, - is_general_taxpayer: values.is_general_taxpayer ? 1 : 0, - id: props.item?.id ?? 0, - counterparty: CompanySuppliersCounterpartyEnum.InternalCompany.value, - supplier_type: CompanySuppliersSupplierTypeEnum.Enterprise.value, - certificate_type: - CompanySuppliersCertificateTypeEnum.BusinessLicense.value, - company_name: values.name, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '企业名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - { - key: 'tax_number', - title: '纳税人识别号', - colProps: { span: 6 }, - }, - { - key: 'tax_address', - title: '开票地址', - colProps: { span: 6 }, - }, - { - key: 'tax_phone', - title: '开票电话', - colProps: { span: 6 }, - }, - { - key: 'tax_bank_name', - title: '开户行', - colProps: { span: 6 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 6 }, - }, - { - key: 'is_general_taxpayer', - title: '是否一般纳税人', - valueType: 'switch', - colProps: { span: 6 }, - }, - { - key: 'legal_person', - title: '法定代表人', - colProps: { span: 6 }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '收款账号', - }, - }, - { - valueType: 'formList', - dataIndex: 'bank_accounts', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'company_name', - title: '开户名称', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_name', - title: '开户银行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - ], - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/supplier/outside/components/GradeList.tsx b/src/pages/supplier/outside/components/GradeList.tsx deleted file mode 100644 index 0f3910c..0000000 --- a/src/pages/supplier/outside/components/GradeList.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanySuppliersGradeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import dayjs from 'dayjs'; -import AddGrade from '../modals/AddGrade'; - -export default function Index({ ...rest }) { - return ( - <> - > - {...MyProTableProps.props} - request={async (params, sort) => - MyProTableProps.request( - { - ...params, - company_suppliers_id: rest.item?.company_suppliers_id, - }, - sort, - Apis.Company.CompanySupplierGrades.List, - ) - } - toolBarRender={(action) => [ - , - ]} - search={false} - columns={[ - { - title: '评定日期', - dataIndex: 'created_at', - render(_, record) { - if (!record.created_at) return ''; - return dayjs(record.created_at).format('YYYY-MM-DD'); - }, - }, - MyColumns.EnumTag({ - title: '等级评定', - dataIndex: 'grade', - valueEnum: CompanySuppliersGradeEnum, - search: false, - }), - - { - title: '评定人', - dataIndex: 'rater', - render(_, record) { - return `${record.rater || ''}-${record.rater_phone || ''}`; - }, - }, - - { - title: '说明', - dataIndex: 'grade_remark', - }, - { - title: '评级文件', - search: false, - render: (_, item) => { - // 文件名缩写函数 - const truncateFileName = ( - fileName: string, - maxLength: number = 16, - ) => { - if (!fileName || fileName.length <= maxLength) { - return fileName; - } - const extensionIndex = fileName.lastIndexOf('.'); - if ( - extensionIndex > -1 && - extensionIndex < fileName.length - 1 - ) { - // 有扩展名的情况 - const extension = fileName.substring(extensionIndex); - const nameWithoutExt = fileName.substring(0, extensionIndex); - const availableLength = maxLength - extension.length; - if (availableLength <= 5) { - // 如果剩余长度太少,直接截断并保留扩展名 - return ( - fileName.substring(0, maxLength - 3) + '...' + extension - ); - } - return ( - nameWithoutExt.substring(0, availableLength - 3) + - '...' + - extension - ); - } - // 没有扩展名的情况 - return fileName.substring(0, maxLength - 3) + '...'; - }; - - return ( -
- {item?.grade_files?.length > 0 - ? item.grade_files.map((file: any, index: number) => { - const fileName = file?.name || `文件${index + 1}`; - const truncatedName = truncateFileName(fileName); - return ( - - ); - }) - : '-'} -
- ); - }, - width: 200, - }, - MyColumns.UpdatedAt(), - ]} - /> - - ); -} diff --git a/src/pages/supplier/outside/components/Info.tsx b/src/pages/supplier/outside/components/Info.tsx deleted file mode 100644 index b1db10d..0000000 --- a/src/pages/supplier/outside/components/Info.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import { - MyBetaModalFormProps, - MyProTableProps, - renderTextHelper, -} from '@/common'; -import { - CompanySuppliersGradeEnum, - CompanySuppliersSupplierTypeEnum, -} from '@/gen/Enums'; -import { ProCard, ProDescriptions, ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; - -export default function info(props: MyBetaModalFormProps) { - const { item } = props; - - return ( - - {/* 企业供应商 */} - {item?.supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value && ( - - - - - - - {item?.name} - - - {item?.legal_person} - - - {item?.supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value && ( - - {item?.registered_capital}万 - - )} - - {item?.business_scope} - - - - - - {item?.is_blacklisted ? '是' : '否'} - - - - )} - {/* 企业供应商 */} - {item?.supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value && ( - - - - {item?.company_name} - - - {item?.is_general_taxpayer ? '是' : '否'} - - - {item?.tax_phone} - - - {item?.tax_number} - - - {item?.tax_bank_name} - - - {item?.tax_bank_account} - - - - {item?.tax_address} - - - - )} - {/* 企业供应商 */} - {item?.supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value && ( - - - - {item?.contact_name || '-'} - - - {item?.contact_phone || '-'} - - - {item?.contact_email || '-'} - - - {item?.contact_remark || '-'} - - - {item?.casacader || '-'} - {item?.address || '-'} - - - - )} - {/* 个人供应商 */} - {item?.supplier_type === - CompanySuppliersSupplierTypeEnum.Individual.value && ( - - - - - - - {item?.name} - - - {item?.contact_phone || '-'} - - - {item?.tax_number} - - - - {item?.casacader || '-'} - {item?.address || '-'} - - - - )} - - - record?.bank_accounts || index} - size="small" - columns={[ - { - title: '开户名称', - dataIndex: 'company_name', - }, - { - title: '开户银行', - dataIndex: 'tax_bank_name', - }, - { - title: '银行账号', - dataIndex: 'tax_bank_account', - }, - ]} - /> - - - {props?.item?.certificates?.length > 0 && ( - - - - {props?.item?.certificates?.map((res: any, index: number) => ( - - ))} - - - - )} - - ); -} diff --git a/src/pages/supplier/outside/index.tsx b/src/pages/supplier/outside/index.tsx deleted file mode 100644 index d296c8d..0000000 --- a/src/pages/supplier/outside/index.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCounterpartyEnum, - CompanySuppliersGradeEnum, - CompanySuppliersSupplierTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import dayjs from 'dayjs'; -import AddBlack from './modals/AddBlack'; -import AddGrade from './modals/AddGrade'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '供应商' }) { - const navigate = useNavigate(); - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - create: , - }); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions({ - show: ( - { - navigate(`/supplier/outside/show/${item.id}`); - }} - /> - ), - update: , - addGrade: , - addBlack: ( - <> - {!item.is_blacklisted && ( - - )} - - ), - white: ( - <> - {item.is_blacklisted === 1 && ( - - Apis.Company.CompanySuppliers.Update({ - id: item.id ?? 0, - is_blacklisted: false, - counterparty: item.counterparty ?? 0, - supplier_type: item.supplier_type ?? 0, - name: item.name ?? '', - reason: '', - }).then(() => action?.reload()) - } - /> - )} - - ), - delete: ( - - Apis.Company.CompanySuppliers.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }); - }; - return ( - - - MyProTableProps.request( - { - ...params, - counterparty: CompanySuppliersCounterpartyEnum.Supplier.value, - }, - sort, - Apis.Company.CompanySuppliers.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ search: false }), - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'supplier_type', - valueEnum: CompanySuppliersSupplierTypeEnum, - }), - { - title: '供应商名称', - dataIndex: 'name', - }, - // MyColumns.EnumTag({ - // title: '证件类型', - // dataIndex: 'certificate_type', - // valueEnum: CompanySuppliersCertificateTypeEnum, - // search: false, - // }), - { - title: '地址', - render: (_, item: any) => { - return `${item.province} ${item.city || ''} ${item.area || ''} ${ - item.street || '' - }`; - }, - search: false, - }, - //是否黑名单 - MyColumns.Boolean({ - dataIndex: 'is_blacklisted', - title: '是否拉黑', - }), - MyColumns.EnumTag({ - title: '等级', - dataIndex: 'grade', - valueEnum: CompanySuppliersGradeEnum, - }), - { - title: '评级日期', - dataIndex: 'grade_time', - render: (_, item: any) => { - if (!item.grade_time) return ''; - return dayjs(item.grade_time).format('YYYY-MM-DD'); - }, - search: false, - }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/supplier/outside/modals/AddBlack.tsx b/src/pages/supplier/outside/modals/AddBlack.tsx deleted file mode 100644 index 4cb5e72..0000000 --- a/src/pages/supplier/outside/modals/AddBlack.tsx +++ /dev/null @@ -1,68 +0,0 @@ -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} - title={`黑名单`} - trigger={} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - const formValues = { - ...props.item, - }; - form.setFieldsValue(formValues); - } - }} - onFinish={async (values: any) => - Apis.Company.CompanySuppliers.Update({ - ...values, - is_blacklisted: values.is_blacklisted ? 1 : 0, - id: props.item?.id ?? 0, - counterparty: props.item?.counterparty ?? 0, - supplier_type: props.item?.supplier_type ?? 0, - name: props.item?.name ?? '', - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'is_blacklisted', - title: '是否拉黑', - valueType: 'switch', - width: '100%', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.boolean }, - }, - { - key: 'reason', - title: '拉入原因', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - ]} - /> - ); -} diff --git a/src/pages/supplier/outside/modals/AddGrade.tsx b/src/pages/supplier/outside/modals/AddGrade.tsx deleted file mode 100644 index 180b728..0000000 --- a/src/pages/supplier/outside/modals/AddGrade.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { CompanySuppliersGradeEnum } 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={`供应商评级`} - trigger={} - layout="horizontal" - labelCol={{ span: 5 }} - wrapperCol={{ span: 19 }} - labelAlign="left" - width="500px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.resetFields(); // 清空表单数据 - const formValues = { - ...props.item, - }; - form.setFieldsValue(formValues); - } - }} - onFinish={async (values: any) => - Apis.Company.CompanySupplierGrades.Store({ - ...values, - company_suppliers_id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'grade', - title: '等级评定', - valueEnum: CompanySuppliersGradeEnum, - required: true, - colProps: { span: 24 }, - }), - { - key: 'grade_remark', - title: '说明', - valueType: 'textarea', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'grade_files', - title: '评级文件', - tooltip: '限传 1 份,仅支持docx,doc,pdf格式', - uploadType: 'file', - accept: '.docx,.doc,.pdf', - colProps: { span: 24 }, - max: 1, - formItemProps: { ...rulesHelper.array }, - }), - ]} - /> - ); -} diff --git a/src/pages/supplier/outside/modals/Create.tsx b/src/pages/supplier/outside/modals/Create.tsx deleted file mode 100644 index b613d0d..0000000 --- a/src/pages/supplier/outside/modals/Create.tsx +++ /dev/null @@ -1,282 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCertificateTypeEnum, - CompanySuppliersCounterpartyEnum, - CompanySuppliersSupplierTypeEnum, -} from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="820px" - style={{ - padding: '20px', - maxHeight: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Company.CompanySuppliers.Store({ - ...values, - is_general_taxpayer: values.is_general_taxpayer ? 1 : 0, - counterparty: CompanySuppliersCounterpartyEnum.Supplier.value, - certificate_type: - values.supplier_type === - CompanySuppliersSupplierTypeEnum.Individual.value - ? CompanySuppliersCertificateTypeEnum.IdCard.value - : CompanySuppliersCertificateTypeEnum.BusinessLicense.value, - company_name: values.company_name || values.name, - contact_name: values.contact_name || values.name, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'supplier_type', - title: '供应商类型', - valueEnum: CompanySuppliersSupplierTypeEnum, - required: true, - colProps: { span: 6 }, - }), - { - key: 'name', - title: '供应商名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - - { - name: ['supplier_type'], - valueType: 'dependency', - columns: ({ supplier_type }: any) => { - return supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value - ? [ - { - key: 'legal_person', - title: '法定代表人', - colProps: { span: 6 }, - }, - { - key: 'registered_capital', - title: '注册资本', - valueType: 'number', - colProps: { span: 6 }, - fieldProps: { - addonAfter: '万', - }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - { - key: 'business_scope', - title: '经营范围', - valueType: 'textarea', - colProps: { span: 24 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '开票信息', - }, - }, - { - key: 'tax_number', - title: '纳税人识别号', - colProps: { span: 8 }, - }, - { - key: 'tax_address', - title: '开票地址', - colProps: { span: 8 }, - }, - { - key: 'tax_phone', - title: '开票电话', - colProps: { span: 8 }, - }, - - { - key: 'tax_bank_name', - title: '开户行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - { - key: 'is_general_taxpayer', - title: '是否一般纳税人', - valueType: 'switch', - colProps: { span: 6 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '联系人信息', - }, - }, - { - key: 'contact_name', - title: '联系人姓名', - colProps: { span: 6 }, - }, - { - key: 'contact_phone', - title: '联系人电话', - colProps: { span: 6 }, - }, - { - key: 'contact_email', - title: '联系人邮箱', - colProps: { span: 6 }, - }, - { - key: 'contact_remark', - title: '备注', - colProps: { span: 6 }, - }, - ] - : supplier_type === - CompanySuppliersSupplierTypeEnum.Individual.value - ? [ - { - key: 'contact_phone', - title: '联系电话', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.phone }, - }, - { - key: 'tax_number', - title: '个人证件号码', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - placeholder: '请输入个人身份证号码', - maxLength: 18, - }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - ] - : []; - }, - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '收款账号', - }, - }, - { - valueType: 'formList', - dataIndex: 'bank_accounts', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'company_name', - title: '开户名称', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_name', - title: '开户银行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - ], - }, - ], - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '证件资料', - }, - }, - MyFormItems.UploadImages({ - key: 'certificates', - colProps: { span: 24 }, - max: 10, - }), - ]} - /> - ); -} diff --git a/src/pages/supplier/outside/modals/Update.tsx b/src/pages/supplier/outside/modals/Update.tsx deleted file mode 100644 index e9e2dac..0000000 --- a/src/pages/supplier/outside/modals/Update.tsx +++ /dev/null @@ -1,291 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Address } from '@/components/Address'; -import { Apis } from '@/gen/Apis'; -import { - CompanySuppliersCertificateTypeEnum, - CompanySuppliersCounterpartyEnum, - CompanySuppliersSupplierTypeEnum, -} 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={`编辑${props.title}`} - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="820px" - style={{ - padding: '20px', - maxHeight: '680px', - overflowY: 'auto', - overflowX: 'hidden', - }} - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue({ - ...props.item, - casacader: [ - props.item?.province || '', - props.item?.city || '', - props.item?.area || '', - props.item?.street || '', - ], - }); - } - }} - onFinish={async (values) => - Apis.Company.CompanySuppliers.Update({ - ...values, - is_general_taxpayer: values.is_general_taxpayer ? 1 : 0, - id: props.item?.id ?? 0, - counterparty: CompanySuppliersCounterpartyEnum.Supplier.value, - certificate_type: - values.supplier_type === - CompanySuppliersSupplierTypeEnum.Individual.value - ? CompanySuppliersCertificateTypeEnum.IdCard.value - : CompanySuppliersCertificateTypeEnum.BusinessLicense.value, - company_name: values.company_name || values.name, - contact_name: values.contact_name || values.name, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'supplier_type', - title: '供应商类型', - valueEnum: CompanySuppliersSupplierTypeEnum, - required: true, - colProps: { span: 6 }, - }), - { - key: 'name', - title: '供应商名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 6 }, - }, - - { - name: ['supplier_type'], - valueType: 'dependency', - columns: ({ supplier_type }: any) => { - return supplier_type === - CompanySuppliersSupplierTypeEnum.Enterprise.value - ? [ - { - key: 'legal_person', - title: '法定代表人', - colProps: { span: 6 }, - }, - { - key: 'registered_capital', - title: '注册资本', - valueType: 'number', - colProps: { span: 6 }, - fieldProps: { - addonAfter: '万', - }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - { - key: 'business_scope', - title: '经营范围', - valueType: 'textarea', - colProps: { span: 24 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '开票信息', - }, - }, - { - key: 'tax_number', - title: '纳税人识别号', - colProps: { span: 8 }, - }, - { - key: 'tax_address', - title: '开票地址', - colProps: { span: 8 }, - }, - { - key: 'tax_phone', - title: '开票电话', - colProps: { span: 8 }, - }, - - { - key: 'tax_bank_name', - title: '开户行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - { - key: 'is_general_taxpayer', - title: '是否一般纳税人', - valueType: 'switch', - colProps: { span: 6 }, - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '联系人信息', - }, - }, - { - key: 'contact_name', - title: '联系人姓名', - colProps: { span: 6 }, - }, - { - key: 'contact_phone', - title: '联系人电话', - colProps: { span: 6 }, - }, - { - key: 'contact_email', - title: '联系人邮箱', - colProps: { span: 6 }, - }, - { - key: 'contact_remark', - title: '备注', - colProps: { span: 6 }, - }, - ] - : supplier_type === - CompanySuppliersSupplierTypeEnum.Individual.value - ? [ - { - key: 'contact_phone', - title: '联系电话', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.phone }, - }, - { - key: 'tax_number', - title: '个人证件号码', - colProps: { span: 6 }, - formItemProps: { ...rulesHelper.text }, - fieldProps: { - placeholder: '请输入个人身份证号码', - maxLength: 18, - }, - }, - { - valueType: 'group', - columns: [ - Address.Cascader({ - key: 'casacader', - title: '选择地址', - required: true, - colProps: { span: 12 }, - keys: ['province', 'city', 'area', 'street'], - }), - { - key: 'address', - title: '详细地址', - required: true, - colProps: { span: 12 }, - }, - ], - }, - ] - : []; - }, - }, - - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '收款账号', - }, - }, - { - valueType: 'formList', - dataIndex: 'bank_accounts', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'company_name', - title: '开户名称', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_name', - title: '开户银行', - colProps: { span: 8 }, - }, - { - key: 'tax_bank_account', - title: '银行账号', - colProps: { span: 8 }, - }, - ], - }, - ], - }, - { - valueType: 'divider', - fieldProps: { - orientation: 'left', - children: '证件资料', - }, - }, - MyFormItems.UploadImages({ - key: 'certificates', - colProps: { span: 24 }, - max: 10, - }), - ]} - /> - ); -} diff --git a/src/pages/supplier/outside/show/$id.tsx b/src/pages/supplier/outside/show/$id.tsx deleted file mode 100644 index be73a20..0000000 --- a/src/pages/supplier/outside/show/$id.tsx +++ /dev/null @@ -1,70 +0,0 @@ -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 GradeList from '../components/GradeList'; -import Info from '../components/Info'; - -export default function Show({ title = '供应商详情' }) { - const { id } = useParams<{ id: string }>(); - const [data, setShow] = useState({}); - const [pendingCount, setPendingCount] = useState(0); - - // 注册标签页 - const { addTab } = usePageTabs({ - tabKey: `supplier-outside-detail-${id}`, - tabLabel: `${data?.name}详情` || title, - }); - - const loadShow = () => { - let paramsId: any = { id: id ?? 0 }; - Apis.Company.CompanySuppliers.Show(paramsId).then((res) => { - setShow(res?.data); - // 更新标签页标题 - // if (res?.data?.full_name) { - // addTab({ - // key: `supplier-outside-detail-${id}`, - // label: title, - // path: `/supplier/outside/show/${id}`, - // }); - // } - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - let items = [ - { - label: '基本信息', - key: 'info', - closable: false, - children: loadShow()} />, - }, - { - label: '评级记录', - key: 'grade', - closable: false, - children: ( - { - loadShow(); - }} - /> - ), - }, - ]; - - return ( - - {/* */} - - - - - ); -} diff --git a/src/pages/work_order/list/components/WorkLogsCreate.tsx b/src/pages/work_order/list/components/WorkLogsCreate.tsx index 543f9b7..77cc2cd 100644 --- a/src/pages/work_order/list/components/WorkLogsCreate.tsx +++ b/src/pages/work_order/list/components/WorkLogsCreate.tsx @@ -128,7 +128,7 @@ export default function WorkLogsCreate({ placeholder: '请输入客户需支付的金额', }, }, - Selects?.ProjectReceiptAccountsSelect({ + Selects?.ProjectAccounts({ key: 'company_project_receipt_accounts_id', title: '选择账户', params: { -- 2.47.2 From 4c249b98bd363401f67637da94d86efc88ff8a9d Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 18 Jan 2026 18:45:09 +0800 Subject: [PATCH 02/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .umirc.ts | 4 +- src/gen/ApiTypes.d.ts | 503 +++++++++++++++++- src/gen/Apis.ts | 277 ++++++++++ src/gen/Enums.ts | 11 +- .../asset/asset_list/modals/AssetInfo.tsx | 26 +- src/pages/bills/summary/index.tsx | 22 - 6 files changed, 803 insertions(+), 40 deletions(-) diff --git a/.umirc.ts b/.umirc.ts index 347788d..190286d 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -18,8 +18,8 @@ export default defineConfig({ proxy: { '/api/': { target: 'http://10.39.13.78:8001/', - // target: 'https://gcadmin-test.linyikj.com.cn', - // target: 'http://guocaiservice.com', + // target: 'https://test-admin.linyikj.com.cn/', + // target: 'https://admin.linyikj.com.cn/', changeOrigin: true, pathRewrite: { '^': '' }, }, diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index 225271c..4ec876a 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -342,12 +342,21 @@ declare namespace ApiTypes { "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] "full_name"?: string; // 模糊搜索:房屋名称 + "project_name"?: string; // 模糊搜索:项目名称 "bill_status"?: string[]; // 账单状态,[enum:HouseBillsBillStatusEnum] + "year"?: number; // 账单年份 + "month"?: number; // 账单月份 + "type"?: string; // 账单类型,[enum:HouseBillsTypeEnum] + "has_refunding"?: boolean; // 是否有退款中:false-无,true-有 }; type SummaryBillList = { - "full_name"?: string; // 模糊搜索:房屋名称 - "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "project_name"?: string; // 模糊搜索:项目名称 "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + "asset_buildings_id"?: number; // 资产楼栋id,[ref:asset_buildings] + "asset_units_id"?: number; // 资产单元id,[ref:asset_units] + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + "has_overdue"?: boolean; // 是否欠费:true-欠费, false-清欠 }; type Store = { "asset_houses_id": number; // 资产房屋id,[ref:asset_houses] @@ -386,6 +395,18 @@ declare namespace ApiTypes { type Delete = { "id": number; // id }; + type Export = { + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + "bill_status"?: string[]; // 账单状态,[enum:HouseBillsBillStatusEnum] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "year"?: number; // 账单年份 + "month"?: number; // 账单月份 + "type"?: string; // 账单类型,[enum:HouseBillsTypeEnum] + "current"?: number; // 页码 + "download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录 + }; } } namespace Collection { @@ -790,6 +811,400 @@ declare namespace ApiTypes { }; } } + namespace HouseOrder { + namespace HouseOrderPayments { + type List = { + "house_orders_id"?: number; // 订单ID + "payment_no"?: string; // 模糊搜索:支付单号 + "transaction_id"?: string; // 模糊搜索:交易号(微信、支付宝的单号 + "third_trade_no"?: string; // 第三方交易号(如通联、乐刷) + "accept_serial_number"?: string; // 模糊搜索:流水号 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseOrderRefunds { + type List = { + "house_orders_id"?: number; // 订单id + "refund_status"?: string; // 退款状态 + "payment_method"?: string; // 支付方式 + "refund_no"?: string; // 退款编号 + "apply_employees_id"?: number; // 申请员工id + "date_range"?: string[]; // 日期范围 [start_date, end_date] + }; + type Store = { + "house_orders_id": number; // 房屋物业费账单id,[ref:house_orders] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Update = { + "id": number; // id + "house_orders_id": number; // 房屋物业费账单id,[ref:house_orders] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Show = { + "id": number; // id + }; + type Audit = { + "id": number; // 退款记录id + "approved": boolean; // 是否通过审核 + "audit_remark"?: string; // 审核备注 + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseOrders { + type List = { + "id"?: number; // id + "order_code"?: string; // 模糊搜索:订单编号 + "payment_no"?: string; // 支付编号 + "asset_projects_id"?: number; // 项目ID + "full_name"?: string; // 模糊搜索:房屋名称 + "creator"?: string; // 创建人 + "creator_phone"?: string; // 创建人电话 + "audit_status"?: string; // 审核状态,[enum:HouseOrdersAuditStatusEnum] + "auditor"?: string; // 审核人 + "auditor_phone"?: string; // 审核人电话 + "is_serial_number"?: boolean; // 是否有流水号 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "payment_method"?: string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "payment_methods"?: string[]; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "paid_time"?: string[]; // 支付时间范围 + }; + type Store = { + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "total_paid_amount": number; // 支付金额 + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + "bill_ids": string[]; // 账单数组 [{id, amount}] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // 订单ID + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "total_paid_amount": number; // 支付金额 + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + "bill_ids": string[]; // 账单数组 [{id, amount}] + "remark"?: string; // 备注 + }; + type Audit = { + "id": number; // id + "audit_status": string; // 状态,[enum:HouseOrdersAuditStatusEnum] + "auditor_remark"?: string; // 审核备注 + "payment_method": string; // 支付方式,[enum:HouseOrdersPaymentMethodEnum] + "paid_time": Date; // 支付时间 + "accept_name"?: string; // 收款账户名称 + "accept_bank"?: string; // 收款银行名称 + "accept_account"?: string; // 收款账户 + "accept_serial_number"?: string; // 收款流水号 + "fee"?: number; // 手续费 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type Export = { + "id"?: number; // id + "order_code"?: string; // 模糊搜索:名称 + "payment_no"?: string; // 支付编号 + "full_name"?: string; // 模糊搜索:房屋名称 + "creator"?: string; // 创建人 + "creator_phone"?: string; // 创建人电话 + "audit_status"?: string; // 审核状态,[enum:HouseOrdersAuditStatusEnum] + "auditor"?: string; // 审核人 + "auditor_phone"?: string; // 审核人电话 + "is_serial_number"?: boolean; // 是否有流水号 + "current"?: number; // 页码 + "download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录 + }; + type UpdateSerialNumber = { + "id": number; // id + "serial_number": string; // 流水号 + }; + type BatchUpdateSerialNumber = { + "ids": string[]; // 订单ID数组 + "serial_number": string; // 流水号 + }; + type GetPayCode = { + "amount": number; // 金额 + "discount_amount"?: number; // 优惠金额 + "late_fee"?: number; // 滞纳金 + "total_payable_amount": number; // 应付金额 + "bill_ids": string[]; // 账单id + }; + } + namespace HousePrepaymentLogs { + type List = { + "house_prepayments_id"?: number; // 房屋预付缴费id,[ref:house_prepayments] + "asset_houses_id"?: number; // 房屋id,[ref:asset_houses] + "house_prepayment_payments_id"?: number; // 房屋预付缴费支付记录id,[ref:house_prepayment_payments] + "full_name"?: string; // 房屋名称 + }; + type Deduct = { + "asset_houses_id": number; // 房屋id,[ref:asset_houses] + "bills_id": string[]; // 账单id,[ref:house_bills] + "amount": number; // 扣款金额 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepaymentPayments { + type List = { + "house_prepayments_id"?: number; // 房屋预付id,[ref:house_prepayments] + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "full_name"?: string; // 模糊搜索:房屋名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepaymentRefunds { + type List = { + "house_prepayments_id"?: number; // 预缴id + "house_prepayment_payments_id"?: number; // 预缴支付id + "refund_status"?: string; // 退款状态 + "payment_method"?: string; // 支付方式 + "refund_no"?: string; // 退款编号 + "apply_employees_id"?: number; // 申请员工id + "date_range"?: string[]; // 日期范围 [start_date, end_date] + }; + type Store = { + "house_prepayment_payments_id": number; // 房屋预缴支付记录id,[ref:house_prepayment_payments] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Update = { + "id": number; // id + "house_prepayments_id": number; // 房屋预缴id,[ref:house_prepayments] + "refund_amount": number; // 退款金额(元,前端提交) + "refund_reason"?: string; // 退款原因 + }; + type Show = { + "id": number; // id + }; + type Audit = { + "id": number; // 退款记录id + "approved": boolean; // 是否通过审核 + "audit_remark"?: string; // 审核备注 + }; + type Delete = { + "id": number; // id + }; + } + namespace HousePrepayments { + type List = { + "full_name"?: string; // 模糊搜索:房屋名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + } + namespace Meter { + namespace HouseMeterHasHouses { + type List = { + "house_meters_id"?: number; // 房屋仪表id,[ref:house_meters] + "name"?: string; // 模糊搜索:名称 + "full_name"?: string; // 模糊搜索:房屋全称 + }; + type StoreOrUpdate = { + "house_meters_id": number; // 房屋仪表id,[ref:house_meters] + "asset_houses_ids": string[]; // 房屋id,[ref:asset_houses] + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseMeterReadings { + type List = { + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type"?: string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + }; + type Store = { + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type": string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + "current_reading": number; // 本次读数 + "reading_time": Date; // 抄表时间 + "company_employees_id": number; // 抄表人id,[ref:company_employees] + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "house_meters_id": number; // 仪表id,[ref:house_meters] + "operation_type": string; // 操作类型,[enum:HouseMeterReadingsOperationTypeEnum] + "previous_reading": number; // 上次读数 + "current_reading": number; // 本次读数 + "usage_amount": number; // 用量 + "loss_amount"?: number; // 损耗 + "reading_time": Date; // 抄表时间 + "company_employees_id": number; // 抄表人id,[ref:company_employees] + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseMeterTaskDetails { + type List = { + "house_meter_task_id"?: number; // 仪表任务id,[ref:house_meter_tasks] + "house_meters_id"?: number; // 仪表id,[ref:house_meters] + "full_name"?: string; // 房屋全称 + "meter_name"?: string; // 仪表名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type CreateMeterBill = { + "id": number; // 仪表任务明细id + }; + } + namespace HouseMeterTasks { + type List = { + "name"?: string; // 模糊搜索:名称 + }; + type Store = { + "asset_projects_id": number; // 资产项目id,[ref:asset_projects] + "generation_method": string; // 生成方式,[enum:HouseMeterTasksGenerationMethodEnum] + "month": string; // 月份 + "start_date": Date; // 收费开始日期 + "end_date": Date; // 收费截止日期 + "data": string[]; // 任务数据(如果是楼栋则是楼栋ID,如果是单元则是单元ID,如果是仪表则是仪表ID) + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + type ExecuteMeterTasks = { + "id": number; // id + }; + } + namespace HouseMeters { + type List = { + "name"?: string; // 模糊搜索:名称 + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "meter_type"?: string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + }; + type Store = { + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "name": string; // 名称 + "meter_type": string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + "usage_type": string; // 使用类型,[enum:HouseMetersUsageTypeEnum] + "multiple"?: number; // 倍率 + "status"?: number; // 是否启用:0:禁用,1:启用 + "initial_value"?: number; // 初始抄表读数 + "initial_time"?: Date; // 初始抄表时间 + "latest_value"?: number; // 最新抄表读数 + "latest_time"?: Date; // 最新抄表时间 + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "charge_standards_id"?: number; // 房屋收费标准id,[ref:house_charge_standards] + "name": string; // 名称 + "meter_type": string; // 仪表类型,[enum:HouseMetersMeterTypeEnum] + "usage_type": string; // 使用类型,[enum:HouseMetersUsageTypeEnum] + "multiple"?: number; // 倍率 + "status"?: number; // 是否启用:0:禁用,1:启用 + "initial_value"?: number; // 初始抄表读数 + "initial_time"?: Date; // 初始抄表时间 + "latest_value"?: number; // 最新抄表读数 + "latest_time"?: Date; // 最新抄表时间 + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + } + namespace Msg { + namespace MsgPropertyAnnouncements { + type List = { + "title"?: string; // 模糊搜索:标题 + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "project_name"?: string; // 模糊搜索:项目名称 + "is_publish"?: number; // 是否发布 + }; + type Store = { + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "title": string; // 标题 + "content": string; // 内容 + "publish_type": string; // 发布类型,[MsgPropertyAnnouncementsPublishTypeEnum] + "schedule_publish_at"?: Date; // 计划发布时间 + "is_publish"?: boolean; // 是否发布 + "publish_at"?: Date; // 发布时间 + "sort"?: number; // 排序 + }; + type Update = { + "id": number; // id + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "title": string; // 标题 + "content": string; // 内容 + "publish_type": string; // 发布类型,[MsgPropertyAnnouncementsPublishTypeEnum] + "schedule_publish_at"?: Date; // 计划发布时间 + "is_publish"?: boolean; // 是否发布 + "publish_at"?: Date; // 发布时间 + "sort"?: number; // 排序 + }; + type Show = { + "id": number; // id + }; + type IsPublish = { + "id": number; // id + "is_publish": boolean; // 是否发布 + }; + type Delete = { + "id": number; // id + }; + } + } namespace Permission { namespace Roles { type List = { @@ -814,4 +1229,88 @@ declare namespace ApiTypes { }; } } + namespace WorkOrder { + namespace HouseWorkLogs { + type List = { + "house_work_orders_id": number; // 工单id,[ref:house_work_orders] + }; + type Store = { + "house_work_orders_id": number; // 工单id,[ref:house_work_orders] + "status": string; // 工单状态,[enum:HouseWorkOrdersStatusEnum] + "description"?: string; // 进度描述 + "attachments"?: string[]; // 附件 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseWorkOrderPayments { + type List = { + "house_work_orders_id"?: number; // 工单id + "name"?: string; // 模糊搜索:名称 + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } + namespace HouseWorkOrders { + type List = { + "house_name"?: string; // 模糊搜索:房屋名称 + "type"?: string[]; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 工单优先级,[enum:HouseWorkOrdersLevelEnum] + "status"?: string; // 工单状态,[enum:HouseWorkOrdersStatusEnum] + "assign_status"?: string; // 工单分配状态,[enum:HouseWorkOrdersAssignStatusEnum] + "reporter_name"?: string; // 模糊搜索:上报人姓名 + "reporter_phone"?: string; // 模糊搜索:上报人手机 + }; + type Store = { + "type": string; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + "complaint_type"?: string; // 投诉类型[enum:HouseWorkOrdersComplaintTypeEnum] + "location"?: string; // 报修位置[enum:HouseWorkOrdersLocationEnum] + "content": string; // 工单内容 + "reporter_name"?: string; // 上报人名称 + "reporter_phone"?: string; // 上报人手机 + "attachments"?: string[]; // 工单附件 + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + }; + type Update = { + "id": number; // id + "type": string; // 工单类型,[enum:HouseWorkOrdersTypeEnum] + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + "content": string; // 工单内容 + "reporter_name"?: string; // 上报人名称 + "reporter_phone"?: string; // 上报人手机 + "contact_phone"?: string; // 联系人电话 + "attachments"?: string[]; // 工单附件 + "asset_houses_id"?: number; // 资产房屋id,[ref:asset_houses] + "asset_projects_id"?: number; // 资产项目id,[ref:asset_projects] + }; + type Show = { + "id": number; // id + }; + type Assign = { + "id": number; // id + "assign_employees_id": number; // 处理人id,[ref:company_employees] + "assign_remark"?: string; // 分派说明 + "predict_complete_at"?: Date; // 预计完成时间 + "level"?: string; // 优先级,[enum:HouseWorkOrdersLevelEnum] + }; + type Visited = { + "id": number; // id + "visited_remark"?: string; // 访问说明 + "visited_attachment"?: string[]; // 访问附件 + }; + type Delete = { + "id": number; // id + }; + } + } } diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index a22692e..64b2c9d 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -176,6 +176,9 @@ export const Apis = { Delete(data: ApiTypes.Bill.HouseBills.Delete): Promise { return request('company/bill/house_bills/delete', { data }); }, + Export(data: ApiTypes.Bill.HouseBills.Export): Promise { + return request('company/bill/house_bills/export', { responseType: 'blob',data }); + }, }, }, Collection: { @@ -447,6 +450,230 @@ export const Apis = { }, }, }, + HouseOrder: { + HouseOrderPayments: { + List(data?: ApiTypes.HouseOrder.HouseOrderPayments.List): Promise { + return request('company/house_order/house_order_payments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrderPayments.Show): Promise { + return request('company/house_order/house_order_payments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrderPayments.Delete): Promise { + return request('company/house_order/house_order_payments/delete', { data }); + }, + }, + HouseOrderRefunds: { + List(data?: ApiTypes.HouseOrder.HouseOrderRefunds.List): Promise { + return request('company/house_order/house_order_refunds/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HouseOrderRefunds.Store): Promise { + return request('company/house_order/house_order_refunds/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HouseOrderRefunds.Update): Promise { + return request('company/house_order/house_order_refunds/update', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrderRefunds.Show): Promise { + return request('company/house_order/house_order_refunds/show', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HouseOrderRefunds.Audit): Promise { + return request('company/house_order/house_order_refunds/audit', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrderRefunds.Delete): Promise { + return request('company/house_order/house_order_refunds/delete', { data }); + }, + }, + HouseOrders: { + List(data?: ApiTypes.HouseOrder.HouseOrders.List): Promise { + return request('company/house_order/house_orders/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HouseOrders.Store): Promise { + return request('company/house_order/house_orders/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HouseOrders.Update): Promise { + return request('company/house_order/house_orders/update', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HouseOrders.Audit): Promise { + return request('company/house_order/house_orders/audit', { data }); + }, + Show(data: ApiTypes.HouseOrder.HouseOrders.Show): Promise { + return request('company/house_order/house_orders/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HouseOrders.Delete): Promise { + return request('company/house_order/house_orders/delete', { data }); + }, + Export(data: ApiTypes.HouseOrder.HouseOrders.Export): Promise { + return request('company/house_order/house_orders/export', { responseType: 'blob',data }); + }, + UpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.UpdateSerialNumber): Promise { + return request('company/house_order/house_orders/update_serial_number', { data }); + }, + BatchUpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.BatchUpdateSerialNumber): Promise { + return request('company/house_order/house_orders/batch_update_serial_number', { data }); + }, + GetPayCode(data: ApiTypes.HouseOrder.HouseOrders.GetPayCode): Promise { + return request('company/house_order/house_orders/get_pay_code', { data }); + }, + }, + HousePrepaymentLogs: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List): Promise { + return request('company/house_order/house_prepayment_logs/list', { data }); + }, + Deduct(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Deduct): Promise { + return request('company/house_order/house_prepayment_logs/deduct', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Show): Promise { + return request('company/house_order/house_prepayment_logs/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Delete): Promise { + return request('company/house_order/house_prepayment_logs/delete', { data }); + }, + }, + HousePrepaymentPayments: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentPayments.List): Promise { + return request('company/house_order/house_prepayment_payments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Show): Promise { + return request('company/house_order/house_prepayment_payments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Delete): Promise { + return request('company/house_order/house_prepayment_payments/delete', { data }); + }, + }, + HousePrepaymentRefunds: { + List(data?: ApiTypes.HouseOrder.HousePrepaymentRefunds.List): Promise { + return request('company/house_order/house_prepayment_refunds/list', { data }); + }, + Store(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Store): Promise { + return request('company/house_order/house_prepayment_refunds/store', { data }); + }, + Update(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Update): Promise { + return request('company/house_order/house_prepayment_refunds/update', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Show): Promise { + return request('company/house_order/house_prepayment_refunds/show', { data }); + }, + Audit(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Audit): Promise { + return request('company/house_order/house_prepayment_refunds/audit', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Delete): Promise { + return request('company/house_order/house_prepayment_refunds/delete', { data }); + }, + }, + HousePrepayments: { + List(data?: ApiTypes.HouseOrder.HousePrepayments.List): Promise { + return request('company/house_order/house_prepayments/list', { data }); + }, + Show(data: ApiTypes.HouseOrder.HousePrepayments.Show): Promise { + return request('company/house_order/house_prepayments/show', { data }); + }, + Delete(data: ApiTypes.HouseOrder.HousePrepayments.Delete): Promise { + return request('company/house_order/house_prepayments/delete', { data }); + }, + }, + }, + Meter: { + HouseMeterHasHouses: { + List(data?: ApiTypes.Meter.HouseMeterHasHouses.List): Promise { + return request('company/meter/house_meter_has_houses/list', { data }); + }, + StoreOrUpdate(data: ApiTypes.Meter.HouseMeterHasHouses.StoreOrUpdate): Promise { + return request('company/meter/house_meter_has_houses/store_or_update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterHasHouses.Show): Promise { + return request('company/meter/house_meter_has_houses/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterHasHouses.Delete): Promise { + return request('company/meter/house_meter_has_houses/delete', { data }); + }, + }, + HouseMeterReadings: { + List(data: ApiTypes.Meter.HouseMeterReadings.List): Promise { + return request('company/meter/house_meter_readings/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeterReadings.Store): Promise { + return request('company/meter/house_meter_readings/store', { data }); + }, + Update(data: ApiTypes.Meter.HouseMeterReadings.Update): Promise { + return request('company/meter/house_meter_readings/update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterReadings.Show): Promise { + return request('company/meter/house_meter_readings/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterReadings.Delete): Promise { + return request('company/meter/house_meter_readings/delete', { data }); + }, + }, + HouseMeterTaskDetails: { + List(data?: ApiTypes.Meter.HouseMeterTaskDetails.List): Promise { + return request('company/meter/house_meter_task_details/list', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterTaskDetails.Show): Promise { + return request('company/meter/house_meter_task_details/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterTaskDetails.Delete): Promise { + return request('company/meter/house_meter_task_details/delete', { data }); + }, + CreateMeterBill(data: ApiTypes.Meter.HouseMeterTaskDetails.CreateMeterBill): Promise { + return request('company/meter/house_meter_task_details/create_meter_bill', { data }); + }, + }, + HouseMeterTasks: { + List(data?: ApiTypes.Meter.HouseMeterTasks.List): Promise { + return request('company/meter/house_meter_tasks/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeterTasks.Store): Promise { + return request('company/meter/house_meter_tasks/store', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeterTasks.Show): Promise { + return request('company/meter/house_meter_tasks/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeterTasks.Delete): Promise { + return request('company/meter/house_meter_tasks/delete', { data }); + }, + ExecuteMeterTasks(data: ApiTypes.Meter.HouseMeterTasks.ExecuteMeterTasks): Promise { + return request('company/meter/house_meter_tasks/execute_meter_tasks', { data }); + }, + }, + HouseMeters: { + List(data?: ApiTypes.Meter.HouseMeters.List): Promise { + return request('company/meter/house_meters/list', { data }); + }, + Store(data: ApiTypes.Meter.HouseMeters.Store): Promise { + return request('company/meter/house_meters/store', { data }); + }, + Update(data: ApiTypes.Meter.HouseMeters.Update): Promise { + return request('company/meter/house_meters/update', { data }); + }, + Show(data: ApiTypes.Meter.HouseMeters.Show): Promise { + return request('company/meter/house_meters/show', { data }); + }, + Delete(data: ApiTypes.Meter.HouseMeters.Delete): Promise { + return request('company/meter/house_meters/delete', { data }); + }, + }, + }, + Msg: { + MsgPropertyAnnouncements: { + List(data?: ApiTypes.Msg.MsgPropertyAnnouncements.List): Promise { + return request('company/msg/msg_property_announcements/list', { data }); + }, + Store(data: ApiTypes.Msg.MsgPropertyAnnouncements.Store): Promise { + return request('company/msg/msg_property_announcements/store', { data }); + }, + Update(data: ApiTypes.Msg.MsgPropertyAnnouncements.Update): Promise { + return request('company/msg/msg_property_announcements/update', { data }); + }, + Show(data: ApiTypes.Msg.MsgPropertyAnnouncements.Show): Promise { + return request('company/msg/msg_property_announcements/show', { data }); + }, + IsPublish(data: ApiTypes.Msg.MsgPropertyAnnouncements.IsPublish): Promise { + return request('company/msg/msg_property_announcements/is_publish', { data }); + }, + Delete(data: ApiTypes.Msg.MsgPropertyAnnouncements.Delete): Promise { + return request('company/msg/msg_property_announcements/delete', { data }); + }, + }, + }, Permission: { Roles: { List(data?: ApiTypes.Permission.Roles.List): Promise { @@ -475,4 +702,54 @@ export const Apis = { }, }, }, + WorkOrder: { + HouseWorkLogs: { + List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise { + return request('company/work_order/house_work_logs/list', { data }); + }, + Store(data: ApiTypes.WorkOrder.HouseWorkLogs.Store): Promise { + return request('company/work_order/house_work_logs/store', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkLogs.Show): Promise { + return request('company/work_order/house_work_logs/show', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkLogs.Delete): Promise { + return request('company/work_order/house_work_logs/delete', { data }); + }, + }, + HouseWorkOrderPayments: { + List(data?: ApiTypes.WorkOrder.HouseWorkOrderPayments.List): Promise { + return request('company/work_order/house_work_order_payments/list', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Show): Promise { + return request('company/work_order/house_work_order_payments/show', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Delete): Promise { + return request('company/work_order/house_work_order_payments/delete', { data }); + }, + }, + HouseWorkOrders: { + List(data?: ApiTypes.WorkOrder.HouseWorkOrders.List): Promise { + return request('company/work_order/house_work_orders/list', { data }); + }, + Store(data: ApiTypes.WorkOrder.HouseWorkOrders.Store): Promise { + return request('company/work_order/house_work_orders/store', { data }); + }, + Update(data: ApiTypes.WorkOrder.HouseWorkOrders.Update): Promise { + return request('company/work_order/house_work_orders/update', { data }); + }, + Show(data: ApiTypes.WorkOrder.HouseWorkOrders.Show): Promise { + return request('company/work_order/house_work_orders/show', { data }); + }, + Assign(data: ApiTypes.WorkOrder.HouseWorkOrders.Assign): Promise { + return request('company/work_order/house_work_orders/assign', { data }); + }, + Visited(data: ApiTypes.WorkOrder.HouseWorkOrders.Visited): Promise { + return request('company/work_order/house_work_orders/visited', { data }); + }, + Delete(data: ApiTypes.WorkOrder.HouseWorkOrders.Delete): Promise { + return request('company/work_order/house_work_orders/delete', { data }); + }, + }, + }, } \ No newline at end of file diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index 40d72b1..6c240c6 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -39,6 +39,7 @@ export const ApprovalRecordsStatusEnum = { Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, Approved: { text: '同意', color: '#4caf50', value: 'Approved' }, Rejected: { text: '拒绝', color: '#f44336', value: 'Rejected' }, + Transferred: { text: '转交', color: '#9c27b0', value: 'Transferred' }, }; // ApprovalTemplateNodesApproveTypeEnum @@ -559,7 +560,7 @@ export const BillsStatusEnum = { export const CacheTypeEnum = { MobilePhoneVerificationCode: { text: '手机验证码', - color: '#bf79b1', + color: '#4ef9dd', value: 'MobilePhoneVerificationCode', }, }; @@ -1014,6 +1015,7 @@ export const HouseBillsTypeEnum = { color: '#ec4899', value: 'SharedElectricityFee', }, + CarPortFee: { text: '车位费', color: '#f59e0b', value: 'CarPortFee' }, }; // HouseChargeStandardsApportionmentMethodEnum @@ -1080,6 +1082,7 @@ export const HouseChargeStandardsStatusEnum = { export const HouseChargeStandardsTypeEnum = { House: { text: '房屋', color: '#3b82f6', value: 'House' }, Meter: { text: '仪表', color: '#10b981', value: 'Meter' }, + CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, }; // HouseChargeTaskDetailsStatusEnum @@ -1089,6 +1092,12 @@ export const HouseChargeTaskDetailsStatusEnum = { Failed: { text: '失败', color: '#ef4444', value: 'Failed' }, }; +// HouseChargeTaskDetailsTargetTypeEnum +export const HouseChargeTaskDetailsTargetTypeEnum = { + House: { text: '房屋', color: '#3b82f6', value: 'House' }, + CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, +}; + // HouseChargeTasksStatusEnum export const HouseChargeTasksStatusEnum = { Pending: { text: '待执行', color: '#f59e0b', value: 'Pending' }, diff --git a/src/pages/asset/asset_list/modals/AssetInfo.tsx b/src/pages/asset/asset_list/modals/AssetInfo.tsx index e4ea359..b704f91 100644 --- a/src/pages/asset/asset_list/modals/AssetInfo.tsx +++ b/src/pages/asset/asset_list/modals/AssetInfo.tsx @@ -10,29 +10,29 @@ import { } from '@/gen/Enums'; import { ProCard, ProDescriptions } from '@ant-design/pro-components'; import { Space, Spin } from 'antd'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; export default function AssetInfo(props: MyBetaModalFormProps) { const [loading, setLoading] = useState(true); const [data, setData] = useState({}); - useEffect(() => { - if (props?.item?.id) { - setLoading(true); - Apis.Asset.AssetProjects.Show({ id: props.item.id }) - .then((res) => { - setData(res?.data || {}); - }) - .finally(() => { - setLoading(false); - }); - } - }, [props?.item?.id]); return ( { + if (props?.item?.id) { + setLoading(true); + Apis.Asset.AssetProjects.Show({ id: props.item.id }) + .then((res) => { + setData(res?.data || {}); + }) + .finally(() => { + setLoading(false); + }); + } + }} node={ diff --git a/src/pages/bills/summary/index.tsx b/src/pages/bills/summary/index.tsx index be2a166..389f346 100644 --- a/src/pages/bills/summary/index.tsx +++ b/src/pages/bills/summary/index.tsx @@ -26,28 +26,6 @@ export default function Index({ title = '房屋账单' }) { getSummaryBillList({ page: 1 }); }, []); - // 选择楼栋的回调函数 - // const handleBuildingSelect = useCallback((building: SelectedBuilding) => { - // setSelectedBuilding(building); - // // 保存到本地缓存 - // localStorage.setItem('selectedBuilding', JSON.stringify(building)); - // }, []); - - // 从本地缓存恢复选中的楼栋信息 - // useEffect(() => { - // const cachedBuilding = localStorage.getItem('selectedBuilding'); - // if (cachedBuilding) { - // try { - // const building = JSON.parse(cachedBuilding) as SelectedBuilding; - // setSelectedBuilding(building); - // // 恢复后重新获取账单列表 - // getSummaryBillList(building); - // } catch (error) { - // console.error('Failed to parse cached building:', error); - // } - // } - // }, []); - return ( Date: Sun, 18 Jan 2026 18:48:42 +0800 Subject: [PATCH 03/12] =?UTF-8?q?fix=EF=BC=9A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Select.tsx | 34 ++ src/gen/ApiTypes.d.ts | 43 ++ src/gen/Apis.ts | 34 ++ src/gen/Enums.ts | 11 +- src/pages/asset/grids/modals/GridUpdate.tsx | 2 +- src/pages/asset/parking_space/index.tsx | 40 +- .../parking_space/modals/SpaceCreate.tsx | 23 +- .../asset/parking_space/modals/SpaceShow.tsx | 95 ++++ .../parking_space/modals/SpaceUpdate.tsx | 18 + .../charge/standard/components/CarPortFee.tsx | 164 ++++++ .../charge/standard/components/ChargeInfo.tsx | 85 ++- .../charge/standard/components/HasCar.tsx | 111 ++++ .../charge/standard/components/Instrument.tsx | 2 +- src/pages/charge/standard/index.tsx | 6 + .../standard/modals/ChargeStandardHasCar.tsx | 174 ++++++ .../standard/modals/ChargeStandardUpdate.tsx | 7 +- .../standard/pages/CreateCarPortFee.tsx | 522 ++++++++++++++++++ .../standard/pages/CreateElectricityFee.tsx | 7 +- .../standard/pages/CreateMaintenanceFund.tsx | 7 +- .../standard/pages/CreatePropertyfee.tsx | 7 +- .../pages/CreateSharedElectricityFee.tsx | 7 +- .../standard/pages/CreateSharedWaterFee.tsx | 7 +- .../charge/standard/pages/CreateWaterFee.tsx | 7 +- src/pages/charge/standard/show/$id.tsx | 17 + src/pages/charge/tasks/modals/TaskCreate.tsx | 4 +- src/pages/meter/common_meter/index.tsx | 43 +- .../common_meter/modals/ChargingStandard.tsx | 2 +- src/pages/meter/house_meter/index.tsx | 27 +- .../house_meter/modals/ChargingStandard.tsx | 2 +- src/pages/meter/readings/table/HasHouse.tsx | 2 - 30 files changed, 1386 insertions(+), 124 deletions(-) create mode 100644 src/pages/asset/parking_space/modals/SpaceShow.tsx create mode 100644 src/pages/charge/standard/components/CarPortFee.tsx create mode 100644 src/pages/charge/standard/components/HasCar.tsx create mode 100644 src/pages/charge/standard/modals/ChargeStandardHasCar.tsx create mode 100644 src/pages/charge/standard/pages/CreateCarPortFee.tsx diff --git a/src/components/Select.tsx b/src/components/Select.tsx index d6e4854..d8bf8b5 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -445,7 +445,41 @@ export const Selects = { }, }; }, + //房屋全称 + AssetFullName(props?: PropsType): ReturnType { + const { + title = '选择房屋', + key = 'asset_houses_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.Asset.AssetHouses.SelectFullName({ + keywords: params?.keyWords, + ...params, + }) + ).data, + ...rest, + fieldProps: { + showSearch: true, + placeholder: '请选择(支持关键字搜索)', + fieldNames: { + label: 'label', + value: 'value', + }, + ...rest?.fieldProps, + }, + }; + }, //获取广告位 GetBannerSpace(props?: PropsType): ReturnType { const { diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index 4b3a6bb..3a9f01c 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -324,6 +324,12 @@ declare namespace ApiTypes { "asset_units_id"?: number; // 所属单元id,[ref:asset_units] "keywords"?: string; // 关键词 }; + type SelectFullName = { + "asset_projects_id"?: number; // 所属项目id,[ref:asset_projects] + "asset_buildings_id"?: number; // 所属楼栋id,[ref:asset_buildings] + "asset_units_id"?: number; // 所属单元id,[ref:asset_units] + "keywords"?: string; // 关键词 + }; type Import = { "asset_projects_id": number; // 所属项目id,[ref:asset_projects] "upload_file": mimes:xlsx,xls; // 上传的文件 @@ -385,6 +391,25 @@ declare namespace ApiTypes { "keywords"?: string; // 关键词 }; } + namespace AssetProjectAdmins { + type List = { + "asset_projects_id"?: number; // 项目id,[ref:asset_projects] + "company_employees_id"?: number; // 员工id,[ref:company_employees] + "project_name"?: string; // 模糊搜索:名称 + "employee_name"?: string; // 模糊搜索:员工名称 + }; + type Store = { + "asset_projects_id": number; // 项目id,[ref:asset_projects] + "company_employees_id": number; // 员工id,[ref:company_employees] + "type": string; // 类型,[enum:HouseWorkOrdersTypeEnum] + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } namespace AssetProjects { type List = { "id"?: number; // id @@ -944,6 +969,24 @@ declare namespace ApiTypes { } } namespace HouseCharge { + namespace HouseChargeHasCarPorts { + type List = { + "house_charge_standards_id": number; // 收费标准id,[ref:house_charge_standards] + }; + type Store = { + "house_charge_standards_id": number; // 收费标准id,[ref:house_charge_standards] + "car_ports_ids": string[]; // 车位id数组 + }; + type GetChargeStandardCarPortIds = { + "house_charge_standards_id": number; // 收费标准id,[ref:house_charge_standards] + }; + type Show = { + "id": number; // id + }; + type Delete = { + "id": number; // id + }; + } namespace HouseChargeHasHouses { type List = { "house_charge_standards_id": number; // 房屋收费标准id,[ref:house_charge_standards] diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index c92d79d..69ad63b 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -158,6 +158,9 @@ export const Apis = { Select(data?: ApiTypes.Asset.AssetHouses.Select): Promise { return request('company/asset/asset_houses/select', { data }); }, + SelectFullName(data?: ApiTypes.Asset.AssetHouses.SelectFullName): Promise { + return request('company/asset/asset_houses/select_full_name', { data }); + }, Import(data: ApiTypes.Asset.AssetHouses.Import): Promise { return request('company/asset/asset_houses/import', { data }); }, @@ -185,6 +188,20 @@ export const Apis = { return request('company/asset/asset_parking_places/select', { data }); }, }, + AssetProjectAdmins: { + List(data?: ApiTypes.Asset.AssetProjectAdmins.List): Promise { + return request('company/asset/asset_project_admins/list', { data }); + }, + Store(data: ApiTypes.Asset.AssetProjectAdmins.Store): Promise { + return request('company/asset/asset_project_admins/store', { data }); + }, + Show(data: ApiTypes.Asset.AssetProjectAdmins.Show): Promise { + return request('company/asset/asset_project_admins/show', { data }); + }, + Delete(data: ApiTypes.Asset.AssetProjectAdmins.Delete): Promise { + return request('company/asset/asset_project_admins/delete', { data }); + }, + }, AssetProjects: { List(data?: ApiTypes.Asset.AssetProjects.List): Promise { return request('company/asset/asset_projects/list', { data }); @@ -500,6 +517,23 @@ export const Apis = { }, }, HouseCharge: { + HouseChargeHasCarPorts: { + List(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.List): Promise { + return request('company/house_charge/house_charge_has_car_ports/list', { data }); + }, + Store(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Store): Promise { + return request('company/house_charge/house_charge_has_car_ports/store', { data }); + }, + GetChargeStandardCarPortIds(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.GetChargeStandardCarPortIds): Promise { + return request('company/house_charge/house_charge_has_car_ports/get_charge_standard_car_port_ids', { data }); + }, + Show(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Show): Promise { + return request('company/house_charge/house_charge_has_car_ports/show', { data }); + }, + Delete(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Delete): Promise { + return request('company/house_charge/house_charge_has_car_ports/delete', { data }); + }, + }, HouseChargeHasHouses: { List(data: ApiTypes.HouseCharge.HouseChargeHasHouses.List): Promise { return request('company/house_charge/house_charge_has_houses/list', { data }); diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index b7d1d9f..00eb7c7 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -39,6 +39,7 @@ export const ApprovalRecordsStatusEnum = { Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, Approved: { text: '同意', color: '#4caf50', value: 'Approved' }, Rejected: { text: '拒绝', color: '#f44336', value: 'Rejected' }, + Transferred: { text: '转交', color: '#9c27b0', value: 'Transferred' }, }; // ApprovalTemplateNodesApproveTypeEnum @@ -559,7 +560,7 @@ export const BillsStatusEnum = { export const CacheTypeEnum = { MobilePhoneVerificationCode: { text: '手机验证码', - color: '#65806d', + color: '#d518aa', value: 'MobilePhoneVerificationCode', }, }; @@ -1014,6 +1015,7 @@ export const HouseBillsTypeEnum = { color: '#ec4899', value: 'SharedElectricityFee', }, + CarPortFee: { text: '车位费', color: '#f59e0b', value: 'CarPortFee' }, }; // HouseChargeStandardsApportionmentMethodEnum @@ -1080,6 +1082,7 @@ export const HouseChargeStandardsStatusEnum = { export const HouseChargeStandardsTypeEnum = { House: { text: '房屋', color: '#3b82f6', value: 'House' }, Meter: { text: '仪表', color: '#10b981', value: 'Meter' }, + CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, }; // HouseChargeTaskDetailsStatusEnum @@ -1089,6 +1092,12 @@ export const HouseChargeTaskDetailsStatusEnum = { Failed: { text: '失败', color: '#ef4444', value: 'Failed' }, }; +// HouseChargeTaskDetailsTargetTypeEnum +export const HouseChargeTaskDetailsTargetTypeEnum = { + House: { text: '房屋', color: '#3b82f6', value: 'House' }, + CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, +}; + // HouseChargeTasksStatusEnum export const HouseChargeTasksStatusEnum = { Pending: { text: '待执行', color: '#f59e0b', value: 'Pending' }, diff --git a/src/pages/asset/grids/modals/GridUpdate.tsx b/src/pages/asset/grids/modals/GridUpdate.tsx index a1757e2..af6cd09 100644 --- a/src/pages/asset/grids/modals/GridUpdate.tsx +++ b/src/pages/asset/grids/modals/GridUpdate.tsx @@ -21,7 +21,7 @@ export default function Update(props: MyBetaModalFormProps) { labelCol={{ span: 4 }} wrapperCol={{ span: 24 }} labelAlign="right" - trigger={} + trigger={} form={form} key={new Date().getTime()} onOpenChange={(open: any) => { diff --git a/src/pages/asset/parking_space/index.tsx b/src/pages/asset/parking_space/index.tsx index 1f2be7b..9691a65 100644 --- a/src/pages/asset/parking_space/index.tsx +++ b/src/pages/asset/parking_space/index.tsx @@ -5,6 +5,7 @@ import { MyProTableProps, useCurrentPermissions, } from '@/common'; +import { MyExport } from '@/components/MyExport'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { @@ -14,9 +15,13 @@ import { } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; +import { useState } from 'react'; + +import SpaceShow from './modals/SpaceShow'; import SpaceUpdate from './modals/SpaceUpdate'; export default function Index({ title = '车位列表' }) { + const [getParams, setParams] = useState({ page: 1 }); const getCurrentPermissions = useCurrentPermissions(); let tableRender = (item: any, action: any) => { return getCurrentPermissions({ @@ -44,11 +49,22 @@ export default function Index({ title = '车位列表' }) { headerTitle="车位列表" tooltip="车位列表的信息管理,请在【项目列表】的【配置】中进行操作" request={async (params, sort) => - MyProTableProps.request(params, sort, Apis.Asset.AssetCarPorts.List) + MyProTableProps.request( + params, + sort, + Apis.Asset.AssetCarPorts.List, + setParams, + ) } - // toolBarRender={(action) => [ - // , - // ]} + toolBarRender={(action) => [ + , + // , + ]} columns={[ MyColumns.ID({ search: false }), Selects?.AssetProjects({ @@ -59,11 +75,12 @@ export default function Index({ title = '车位列表' }) { { title: '项目名称', dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, { title: '车场名称', @@ -106,7 +123,10 @@ export default function Index({ title = '车位列表' }) { MyColumns.CreatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( - {tableRender(item, action)} + + + {tableRender(item, action)} + ), }), ]} diff --git a/src/pages/asset/parking_space/modals/SpaceCreate.tsx b/src/pages/asset/parking_space/modals/SpaceCreate.tsx index b025a5f..e0d9d7f 100644 --- a/src/pages/asset/parking_space/modals/SpaceCreate.tsx +++ b/src/pages/asset/parking_space/modals/SpaceCreate.tsx @@ -5,6 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetCarPortsPropertyTypeEnum, @@ -14,7 +15,7 @@ import { import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; -export default function Create(props: MyBetaModalFormProps) { +export default function SpaceCreate(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( @@ -60,6 +61,7 @@ export default function Create(props: MyBetaModalFormProps) { title: '建筑面积', valueType: 'digit', colProps: { span: 24 }, + formItemProps: { ...rulesHelper.number }, fieldProps: { addonAfter: 'm²', }, @@ -83,7 +85,24 @@ export default function Create(props: MyBetaModalFormProps) { valueEnum: AssetCarPortsStatusEnum, required: true, }), - + { + key: 'owner_name', + title: '业主姓名', + colProps: { span: 24 }, + }, + { + key: 'owner_phone', + title: '业主手机号', + colProps: { span: 24 }, + }, + Selects?.AssetFullName({ + key: 'asset_houses_id', + params: { + asset_projects_id: props?.item?.asset_projects_id, + }, + title: '关联房屋', + colProps: { span: 24 }, + }), { key: 'remark', title: '备注', diff --git a/src/pages/asset/parking_space/modals/SpaceShow.tsx b/src/pages/asset/parking_space/modals/SpaceShow.tsx new file mode 100644 index 0000000..b005d25 --- /dev/null +++ b/src/pages/asset/parking_space/modals/SpaceShow.tsx @@ -0,0 +1,95 @@ +import { MyBetaModalFormProps, MyButtons, renderTextHelper } from '@/common'; +import { MyModal } from '@/components/MyModal'; +import { Apis } from '@/gen/Apis'; +import { + AssetCarPortsPropertyTypeEnum, + AssetCarPortsStatusEnum, + AssetCarPortsTypeEnum, +} from '@/gen/Enums'; +import { ProCard, ProDescriptions } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Space, Spin } from 'antd'; +import { useState } from 'react'; + +export default function SpaceShow(props: MyBetaModalFormProps) { + const [loading, setLoading] = useState(true); + const [data, setData] = useState({}); + const navigate = useNavigate(); + + return ( + { + if (props?.item?.id) { + setLoading(true); + Apis.Asset.AssetCarPorts.Show({ id: props.item.id }) + .then((res) => { + setData(res?.data || {}); + }) + .finally(() => { + setLoading(false); + }); + } + }} + node={ + + + + + + {data?.name} + + + {data?.built_area} m² + + + + + + + + + + + + {data?.owner_name || '-'} + + + {data?.owner_phone || '-'} + + + {data?.asset_houses_id ? ( + { + navigate( + `/customer/archive/show/${data?.asset_houses_id}`, + ); + }} + /> + ) : ( + '无' + )} + + + + {data?.remark || '-'} + + + + + + } + /> + ); +} diff --git a/src/pages/asset/parking_space/modals/SpaceUpdate.tsx b/src/pages/asset/parking_space/modals/SpaceUpdate.tsx index 0b78e46..ca36d3a 100644 --- a/src/pages/asset/parking_space/modals/SpaceUpdate.tsx +++ b/src/pages/asset/parking_space/modals/SpaceUpdate.tsx @@ -5,6 +5,7 @@ import { MyModalFormProps, rulesHelper, } from '@/common'; +import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { AssetCarPortsPropertyTypeEnum, @@ -59,6 +60,7 @@ export default function Update(props: MyBetaModalFormProps) { title: '建筑面积', valueType: 'digit', colProps: { span: 24 }, + formItemProps: { ...rulesHelper.number }, fieldProps: { addonAfter: 'm²', }, @@ -82,6 +84,22 @@ export default function Update(props: MyBetaModalFormProps) { valueEnum: AssetCarPortsStatusEnum, required: true, }), + { + key: 'owner_name', + title: '业主姓名', + colProps: { span: 24 }, + }, + { + key: 'owner_phone', + title: '业主手机号', + colProps: { span: 24 }, + }, + Selects?.AssetFullName({ + key: 'asset_houses_id', + params: { + asset_projects_id: props?.item?.asset_projects_id, + }, + }), { key: 'remark', title: '备注', diff --git a/src/pages/charge/standard/components/CarPortFee.tsx b/src/pages/charge/standard/components/CarPortFee.tsx new file mode 100644 index 0000000..f979631 --- /dev/null +++ b/src/pages/charge/standard/components/CarPortFee.tsx @@ -0,0 +1,164 @@ +import { MyButtons, MyColumns, MyProTableProps } from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseBillsTypeEnum, + HouseChargeStandardsCalculationMethodEnum, + HouseChargeStandardsCalculationModeEnum, + HouseChargeStandardsCalculationPeriodEnum, + HouseChargeStandardsPriceAlgorithmEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Space } from 'antd'; +import ChargeStandardHasCar from '../modals/ChargeStandardHasCar'; +import ChargeStandardUpdate from '../modals/ChargeStandardUpdate'; +import ChargingStandard from '../modals/ChargingStandard'; +import CreateCarPortFee from '../pages/CreateCarPortFee'; + +export default function Index({ title = '车位管理费标准' }) { + const navigate = useNavigate(); + + return ( + + MyProTableProps.request( + { + ...params, + charge_type: HouseBillsTypeEnum.CarPortFee.value, + }, + sort, + Apis.HouseCharge.HouseChargeStandards.List, + ) + } + toolBarRender={(action) => [ + , + ]} + columns={[ + MyColumns.ID({ search: false }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + { + title: '关联项目', + dataIndex: ['asset_project', 'name'], + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, + }, + { + title: '收费名称', + dataIndex: 'name', + search: false, + render: (_, item: any) => { + return ; + }, + }, + { + title: '绑定车位', + dataIndex: 'house_charge_has_houses_count', + search: false, + }, + MyColumns.EnumTag({ + title: '收费项', + dataIndex: 'charge_type', + valueEnum: HouseBillsTypeEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '计量单位', + dataIndex: 'calculation_method', + valueEnum: HouseChargeStandardsCalculationMethodEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '计费模式', + dataIndex: 'calculation_mode', + valueEnum: HouseChargeStandardsCalculationModeEnum, + search: false, + }), + MyColumns.EnumTag({ + title: '计费算法', + dataIndex: 'price_algorithm', + valueEnum: HouseChargeStandardsPriceAlgorithmEnum, + search: false, + }), + { + title: '价格', + dataIndex: 'price', + search: false, + render(_, record) { + if (record?.price_algorithm === 'Fixed') { + return record?.price; + } else { + return ( +
+ {record?.tiered_rates?.map((rate: any, index: number) => ( +
+ {rate?.min_quantity} - {rate?.max_quantity} :{rate?.price} +
+ ))} +
+ ); + } + }, + }, + MyColumns.EnumTag({ + title: '账单计费周期', + dataIndex: 'calculation_period', + valueEnum: HouseChargeStandardsCalculationPeriodEnum, + search: false, + }), + { + title: '账单自动生成日期', + dataIndex: 'auto_date', + search: false, + }, + { + title: '是否公摊', + dataIndex: 'is_apportionment', + search: false, + render(_, record) { + return `${record?.is_apportionment ? '是' : '否'} `; + }, + }, + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + { + navigate(`/charge/standard/show/${item.id}?type=Car`); + }} + /> + + + + Apis.HouseCharge.HouseChargeStandards.Delete({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), + ]} + /> + ); +} diff --git a/src/pages/charge/standard/components/ChargeInfo.tsx b/src/pages/charge/standard/components/ChargeInfo.tsx index 4766f23..1f0a224 100644 --- a/src/pages/charge/standard/components/ChargeInfo.tsx +++ b/src/pages/charge/standard/components/ChargeInfo.tsx @@ -1,49 +1,108 @@ import { MyBetaModalFormProps, renderTextHelper } from '@/common'; import { HouseBillsTypeEnum, + HouseChargeStandardsApportionmentMethodEnum, + HouseChargeStandardsCalculationMethodEnum, HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, + HouseChargeStandardsPriceAlgorithmEnum, } from '@/gen/Enums'; import { ProCard, ProDescriptions } from '@ant-design/pro-components'; import { Space } from 'antd'; -export default function info(props: MyBetaModalFormProps) { +export default function ChargeInfo(props: MyBetaModalFormProps) { const { item } = props; return ( - - - {item?.asset_project?.name} - + {item?.name} - - + + {item?.asset_project?.name || '-'} + + + + + {item?.company_receipt_account?.company_bank}: + {item?.company_receipt_account?.company_account} + + {item?.apportionment_method ? ( + + + + ) : ( + '' + )} + + {item?.is_apportionment ? '是' : '否'} + + + - + + + + + ¥{item?.price}元 + + {item?.calculation_method !== 'PerUnit' ? ( + + + {item?.tiered_rates?.map((rate: any, index: number) => ( +
+ 阶梯范围:{rate?.min_quantity}-{rate?.max_quantity}{' '} + 阶梯单价:¥{rate?.price}元 +
+ ))} +
+
+ ) : ( + '' + )} + - - + + {item?.auto_date} + + {item?.has_late_fee ? ( + + +
有滞纳金:{item?.has_late_fee ? '是' : '否'}
+
起算天数:生成账单后{item?.late_fee_start_days}天
+
收取费率:每日{item?.late_fee_rate}%
+
封顶天数:最多{item?.late_fee_cap_days}天
+
+
+ ) : ( + '' + )} + {item?.remark}
diff --git a/src/pages/charge/standard/components/HasCar.tsx b/src/pages/charge/standard/components/HasCar.tsx new file mode 100644 index 0000000..1b10c8e --- /dev/null +++ b/src/pages/charge/standard/components/HasCar.tsx @@ -0,0 +1,111 @@ +import { MyButtons, MyColumns, MyProTableProps } from '@/common'; +import { Apis } from '@/gen/Apis'; + +import { + AssetCarPortsPropertyTypeEnum, + AssetCarPortsStatusEnum, + AssetCarPortsTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import { useEffect, useRef } from 'react'; +import ChargeStandardHasCar from '../modals/ChargeStandardHasCar'; + +export default function Index({ ...rest }) { + const actionLooks = useRef(); + useEffect(() => { + actionLooks?.current.reloadAndRest(); + }, [rest.loadmore]); + + return ( + <> + > + {...MyProTableProps.props} + actionRef={actionLooks} + request={async (params, sort) => + MyProTableProps.request( + { + ...params, + house_charge_standards_id: rest.item?.house_charge_has_houses_id, + }, + sort, + Apis.HouseCharge.HouseChargeHasCarPorts.List, + ) + } + toolBarRender={(action) => [ + , + ]} + search={false} + columns={[ + // MyColumns.ID({ + // search: false, + // }), + { + title: '车场名称', + dataIndex: ['asset_parking_place', 'name'], + search: { + transform: (value) => { + return { parking_place_name: value }; + }, + }, + }, + { + title: '车位号', + dataIndex: ['asset_car_port', 'name'], + search: false, + }, + // { + // title: '车位全称', + // dataIndex: ['asset_car_port', 'full_name'], + // }, + { + title: '建筑面积', + dataIndex: ['asset_car_port', 'built_area'], + search: false, + }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: ['asset_car_port', 'type'], + valueEnum: AssetCarPortsTypeEnum, + }), + MyColumns.EnumTag({ + title: '产权类型', + dataIndex: ['asset_car_port', 'property_type'], + valueEnum: AssetCarPortsPropertyTypeEnum, + }), + MyColumns.EnumTag({ + title: '状态', + dataIndex: ['asset_car_port', 'status'], + valueEnum: AssetCarPortsStatusEnum, + }), + { + title: '绑定时间', + dataIndex: 'updated_at', + search: false, + }, + MyColumns.Option({ + width: 80, + render: (_, item: any, index, action) => ( + + + Apis.HouseCharge.HouseChargeHasCarPorts.Delete({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/charge/standard/components/Instrument.tsx b/src/pages/charge/standard/components/Instrument.tsx index 1ec4c6a..5b9bd3a 100644 --- a/src/pages/charge/standard/components/Instrument.tsx +++ b/src/pages/charge/standard/components/Instrument.tsx @@ -40,7 +40,7 @@ export default function Index(props: MyBetaModalFormProps) { { - navigate(`/instrument/readings/show/${item.id}`); + navigate(`/meter/readings/show/${item.id}`); }} /> ), diff --git a/src/pages/charge/standard/index.tsx b/src/pages/charge/standard/index.tsx index 10e6751..e52fdcb 100644 --- a/src/pages/charge/standard/index.tsx +++ b/src/pages/charge/standard/index.tsx @@ -1,5 +1,6 @@ import { MyPageContainer } from '@/common'; import { Tabs } from 'antd'; +import CarPortFee from './components/CarPortFee'; import ElectricityFee from './components/ElectricityFee'; import MaintenanceFund from './components/MaintenanceFund'; import PropertyFee from './components/PropertyFee'; @@ -39,6 +40,11 @@ export default function Index({ title = '收费标准配置' }) { label: '维修基金', children: , }, + { + key: 'CarPortFee', + label: '车位管理费', + children: , + }, ]; return ( diff --git a/src/pages/charge/standard/modals/ChargeStandardHasCar.tsx b/src/pages/charge/standard/modals/ChargeStandardHasCar.tsx new file mode 100644 index 0000000..5fae263 --- /dev/null +++ b/src/pages/charge/standard/modals/ChargeStandardHasCar.tsx @@ -0,0 +1,174 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyProTableProps, +} from '@/common'; +import { MyModal } from '@/components/MyModal'; + +import { Apis } from '@/gen/Apis'; +import { + AssetCarPortsPropertyTypeEnum, + AssetCarPortsStatusEnum, + AssetCarPortsTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { message, Space } from 'antd'; +import { useRef, useState } from 'react'; + +export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) { + // 使用 useState 保存选中的房屋 ID 和行数据,确保跨页选中状态保持 + const [selectedHousesIds, setSelectedHousesIds] = useState([]); + const [selectedRows, setSelectedRows] = useState([]); + + // 添加 tableRef 用于操作表格 + const tableRef = useRef(); + + const onShowContactPhone = () => { + if (selectedRows.length === 0) { + message.warning('请至少选择一个车位'); + return; + } + + // 确保 houses_ids 是字符串数组 + const carPortsIds = selectedRows.map((row) => String(row.id)); + + Apis.HouseCharge.HouseChargeHasCarPorts.Store({ + house_charge_standards_id: props?.item?.id ?? 0, + car_ports_ids: carPortsIds, + }) + .then(() => { + // 成功后重置选中状态 + setSelectedHousesIds([]); + setSelectedRows([]); + props.reload?.(); + message.success('绑车位成功!'); + }) + .catch((error) => { + console.error('绑车位失败:', error); + message.error('绑车位失败: ' + (error.message || '未知错误')); + return false; + }); + }; + + return ( + + MyProTableProps.request( + { + ...params, + asset_projects_id: props?.item?.asset_projects_id, + }, + sort, + Apis.Asset.AssetCarPorts.List, + undefined, + (res) => { + // 确保响应数据正确处理 + console.log('加载房屋数据:', res); + return res; + }, + ) + } + style={{ + padding: '20px', + height: '680px', + overflowY: 'auto', + overflowX: 'hidden', + }} + pagination={{ + showQuickJumper: true, + // pageSizeOptions: [10, 20, 50, 100, 200, 500, 1000, 2000], + }} + rowSelection={{ + type: 'checkbox', + preserveSelectedRowKeys: true, // 启用跨页选择 + selectedRowKeys: selectedHousesIds, + onChange: (selectedRowKeys, selectedRows) => { + // 确保 selectedRowKeys 是数字类型 + const numericKeys = selectedRowKeys.map((key) => + typeof key === 'string' ? parseInt(key, 10) : key, + ) as number[]; + + // 更新选中状态 + setSelectedHousesIds(numericKeys); + + // 合并当前页面选中的行和之前选中的行 + const newSelectedRows = [...selectedRows]; + + // 设置选中行数据 + setSelectedRows(newSelectedRows); + }, + }} + tableAlertOptionRender={({ selectedRowKeys, onCleanSelected }) => { + return ( + + 已选 {selectedRowKeys.length} 项 + 清空 + onShowContactPhone()} + /> + + ); + }} + options={false} + columns={[ + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + search: false, + }, + { + title: '车场名称', + dataIndex: ['asset_parking_place', 'name'], + search: { + transform: (value) => { + return { parking_place_name: value }; + }, + }, + }, + { + title: '车位号', + dataIndex: 'name', + search: false, + }, + { + title: '车位全称', + dataIndex: 'full_name', + }, + { + title: '建筑面积', + dataIndex: 'built_area', + search: false, + }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: 'type', + valueEnum: AssetCarPortsTypeEnum, + }), + MyColumns.EnumTag({ + title: '产权类型', + dataIndex: 'property_type', + valueEnum: AssetCarPortsPropertyTypeEnum, + }), + MyColumns.EnumTag({ + title: '状态', + dataIndex: 'status', + valueEnum: AssetCarPortsStatusEnum, + }), + ]} + /> + } + /> + ); +} diff --git a/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx b/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx index 109a644..2ea2ad7 100644 --- a/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx +++ b/src/pages/charge/standard/modals/ChargeStandardUpdate.tsx @@ -14,7 +14,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -51,11 +50,7 @@ export default function Update(props: MyBetaModalFormProps) { ...values, charge_type: props?.item?.charge_type, asset_projects_id: props?.item?.asset_projects_id, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: props?.item?.type, is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreateCarPortFee.tsx b/src/pages/charge/standard/pages/CreateCarPortFee.tsx new file mode 100644 index 0000000..d65bf92 --- /dev/null +++ b/src/pages/charge/standard/pages/CreateCarPortFee.tsx @@ -0,0 +1,522 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseBillsTypeEnum, + HouseChargeStandardsCalculationMethodEnum, + HouseChargeStandardsCalculationModeEnum, + HouseChargeStandardsCalculationPeriodEnum, + HouseChargeStandardsPriceAlgorithmEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; +import { useRef } from 'react'; + +export default function CreatePropertyFee(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const actionRef = useRef(); + + return ( + + {...MyModalFormProps.props} + form={form} + title={`新增车位管理费标准`} + // wrapperCol={{ span: 24 }} + // 基础表单 + layout="horizontal" + labelCol={{ span: 5 }} + wrapperCol={{ span: 19 }} + labelAlign="left" + width="680px" + trigger={} + key={new Date().getTime()} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} + onFinish={async (values: any) => + Apis.HouseCharge.HouseChargeStandards.Store({ + ...values, + charge_type: HouseBillsTypeEnum.CarPortFee.value, + type: 'House', + is_apportionment: + values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || + values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value + ? 1 + : 0, + // 按套 + calculation_mode: + values?.calculation_method === + HouseChargeStandardsCalculationMethodEnum.PerUnit.value + ? HouseChargeStandardsCalculationModeEnum.FixedAmount.value + : values?.calculation_mode, + // 按固定金额 + price_algorithm: + values?.calculation_mode === + HouseChargeStandardsCalculationModeEnum.FixedAmount.value || + values?.calculation_method === + HouseChargeStandardsCalculationMethodEnum.PerUnit.value + ? HouseChargeStandardsPriceAlgorithmEnum.Fixed.value + : values?.price_algorithm, + tiered_rates: values.tiered_rates?.map((res: any) => { + return { + ...res, + }; + }), + // 避免计费模式切换导致的价格异常 + price: + values?.price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Fixed.value || + values?.calculation_mode === + HouseChargeStandardsCalculationModeEnum.FixedAmount.value + ? values.price + : 0, + late_fee_rate: values.has_late_fee || '', + late_fee_start_days: values.has_late_fee || '', + late_fee_cap_days: values.has_late_fee || '', + }) + .then(() => { + props.reload?.(); + message.success('车位管理费标准创建成功'); + return true; + }) + .catch(() => false) + } + columns={[ + Selects?.AssetProjects({ + key: 'asset_projects_id', + title: '选择项目', + colProps: { span: 24 }, + required: true, + fieldProps: { + onChange: () => { + // 切换计量单位时清空计费模式 + form.setFieldValue('company_receipt_accounts_id', undefined); + }, + }, + }), + { + key: 'name', + title: '收费标准名称', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }, + { + valueType: 'dependency', + name: ['asset_projects_id'], + columns: ({ asset_projects_id }) => { + return [ + Selects?.ProjectAccounts({ + title: '项目收款账户', + key: 'company_receipt_accounts_id', + params: { + asset_projects_id: asset_projects_id, + }, + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + }), + ]; + }, + }, + MyFormItems.EnumRadio({ + key: 'calculation_method', + title: '计量单位', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(HouseChargeStandardsCalculationMethodEnum), + ); + delete obj.ElectricityUsage; + delete obj.WaterUsage; + return obj; + }, + required: true, + fieldProps: { + buttonStyle: 'solid', + onChange: () => { + // 切换计量单位时清空计费模式 + form.setFieldValue('calculation_mode', undefined); + form.setFieldValue('price', undefined); + form.setFieldValue('price_algorithm', undefined); + }, + }, + }), + + { + name: ['calculation_method'], + valueType: 'dependency', + columns: ({ calculation_method }: any) => { + return calculation_method === + HouseChargeStandardsCalculationMethodEnum.PerUnit.value + ? [ + { + key: 'price', + title: '固定单价', + colProps: { span: 24 }, + fieldProps: { + addonAfter: '元', + }, + formItemProps: { ...rulesHelper.number }, + }, + ] + : !calculation_method && + calculation_method !== + HouseChargeStandardsCalculationMethodEnum.PerUnit.value + ? [] + : [ + MyFormItems.EnumRadio({ + key: 'calculation_mode', + title: '计费模式', + colProps: { span: 24 }, + // valueEnum: HouseChargeStandardsCalculationModeEnum, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(HouseChargeStandardsCalculationModeEnum), + ); + delete obj.FixedAmount; + return obj; + }, + required: true, + }), + ]; + }, + }, + + { + name: ['calculation_mode'], + valueType: 'dependency', + columns: ({ calculation_mode }: any) => { + return calculation_mode === + HouseChargeStandardsCalculationModeEnum.FixedAmount.value + ? [ + { + key: 'price', + title: '固定单价', + colProps: { span: 24 }, + fieldProps: { + addonAfter: '元', + }, + formItemProps: { ...rulesHelper.number }, + }, + ] + : calculation_mode === + HouseChargeStandardsCalculationModeEnum.QuantityPrice.value + ? [ + MyFormItems.EnumRadio({ + key: 'price_algorithm', + title: '计费算法', + colProps: { span: 24 }, + valueEnum: HouseChargeStandardsPriceAlgorithmEnum, + required: true, + fieldProps: { + buttonStyle: 'solid', + onChange: () => { + // 切换计费算法时清空阶梯配置 + form.setFieldValue('price', undefined); + form.setFieldValue('tiered_rates', undefined); + }, + }, + }), + { + name: ['price_algorithm'], + valueType: 'dependency', + columns: ({ price_algorithm }: any) => { + return price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Fixed.value + ? [ + { + key: 'price', + title: '固定单价', + valueType: 'digit', + colProps: { span: 24 }, + fieldProps: { + addonAfter: '元', + max: 99, + }, + formItemProps: { ...rulesHelper.number }, + }, + ] + : price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Tiered.value + ? [ + { + valueType: 'formList', + dataIndex: 'tiered_rates', + title: '阶梯标准', + formItemProps: { ...rulesHelper.array }, + initialValue: [ + { + min_quantity: 0, + max_quantity: null, + price: null, + }, + ], + fieldProps: { + actionRef: actionRef, + copyIconProps: false, + // deleteIconProps: false, + }, + columns: [ + { + valueType: 'group', + colProps: { span: 24 }, + columns: [ + { + key: 'min_quantity', + colProps: { span: 9 }, + // title: '起始值', + valueType: 'digit', + fieldProps: { + min: 0, + addonBefore: '阶梯范围', + placeholder: '起始值', + }, + width: '100%', + formItemProps: { + ...rulesHelper.number, + }, + }, + { + key: 'max_quantity', + colProps: { span: 5 }, + // title: '结束值', + valueType: 'digit', + width: '100%', + formItemProps: { + ...rulesHelper.number, + }, + fieldProps: { + min: 0, + max: 999, + placeholder: '结束值', + }, + }, + { + key: 'price', + colProps: { span: 10 }, + // title: '阶梯单价', + valueType: 'digit', + fieldProps: { + addonBefore: '阶梯单价', + addonAfter: '元', + min: 0, + max: 999, + }, + formItemProps: { + ...rulesHelper.number, + }, + }, + ], + }, + ], + }, + ] + : price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Peak.value + ? [ + { + valueType: 'formList', + dataIndex: 'tiered_rates', + title: '阶梯标准', + formItemProps: { ...rulesHelper.array }, + initialValue: [ + { + min_quantity: 0, + max_quantity: null, + price: null, + }, + ], + fieldProps: { + actionRef: actionRef, + copyIconProps: false, + // deleteIconProps: false, + }, + columns: [ + { + valueType: 'group', + colProps: { span: 24 }, + columns: [ + { + key: 'min_quantity', + colProps: { span: 9 }, + // title: '起始值', + valueType: 'digit', + fieldProps: { + min: 0, + addonBefore: '阶梯范围', + placeholder: '起始值', + }, + width: '100%', + formItemProps: { + ...rulesHelper.number, + }, + }, + { + key: 'max_quantity', + colProps: { span: 5 }, + // title: '结束值', + valueType: 'digit', + width: '100%', + formItemProps: { + ...rulesHelper.number, + }, + fieldProps: { + min: 0, + max: 999, + placeholder: '结束值', + }, + }, + { + key: 'price', + colProps: { span: 10 }, + // title: '阶梯单价', + valueType: 'digit', + fieldProps: { + addonBefore: '阶梯单价', + addonAfter: '元', + min: 0, + max: 999, + }, + formItemProps: { + ...rulesHelper.number, + }, + }, + ], + }, + ], + }, + ] + : []; + }, + }, + ] + : []; + }, + }, + { + name: ['price', 'price_algorithm'], + valueType: 'dependency', + columns: ({ price, price_algorithm }: any) => { + return price || + price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Tiered.value || + price_algorithm === + HouseChargeStandardsPriceAlgorithmEnum.Peak.value + ? [ + { + valueType: 'group', + columns: [ + MyFormItems.EnumRadio({ + key: 'calculation_period', + title: '计费周期', + colProps: { span: 24 }, + valueEnum: HouseChargeStandardsCalculationPeriodEnum, + required: true, + }), + { + key: 'auto_date', + title: '生成日期', + colProps: { span: 24 }, + tooltip: '系统将按该设置日期自动生成第一期的账单', + valueType: 'date', + width: '100%', + formItemProps: { ...rulesHelper.text }, + }, + { + key: 'has_late_fee', + title: '启用滞纳金', + colProps: { span: 24 }, + valueType: 'switch', + width: '100%', + fieldProps: { + onChange: () => { + // 切换计费算法时清空阶梯配置 + form.setFieldValue( + 'late_fee_start_days', + undefined, + ); + form.setFieldValue('late_fee_rate', undefined); + form.setFieldValue('late_fee_cap_days', undefined); + }, + }, + }, + { + name: ['has_late_fee'], + valueType: 'dependency', + columns: ({ has_late_fee }: any) => { + return has_late_fee + ? [ + { + key: 'late_fee_start_days', + title: '滞纳起算', + colProps: { span: 24 }, + formItemProps: { + ...rulesHelper.number, + }, + fieldProps: { + mix: 1, + addonBefore: '生成账单后', + addonAfter: '天', + placeholder: + '请输入按账单生成后多少天后开始收取', + }, + }, + { + key: 'late_fee_rate', + title: '滞纳金费率', + valueType: 'digit', + colProps: { span: 24 }, + formItemProps: { + ...rulesHelper.number, + }, + fieldProps: { + addonBefore: '每日', + addonAfter: '%', + max: 100, + }, + }, + { + key: 'late_fee_cap_days', + title: '滞纳金封顶', + colProps: { span: 24 }, + formItemProps: { + ...rulesHelper.number, + }, + fieldProps: { + mix: 1, + placeholder: '请输入封顶天数', + addonAfter: '天', + }, + }, + ] + : []; + }, + }, + { + key: 'remark', + title: '备注', + colProps: { span: 24 }, + valueType: 'textarea', + fieldProps: { + // rows: 2, + maxLength: 100, + showCount: true, + }, + }, + ], + }, + ] + : []; + }, + }, + ]} + /> + ); +} diff --git a/src/pages/charge/standard/pages/CreateElectricityFee.tsx b/src/pages/charge/standard/pages/CreateElectricityFee.tsx index 84870d0..f4b7791 100644 --- a/src/pages/charge/standard/pages/CreateElectricityFee.tsx +++ b/src/pages/charge/standard/pages/CreateElectricityFee.tsx @@ -13,7 +13,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -46,11 +45,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.ElectricityFee.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'Meter', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx b/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx index e514faf..7b6959e 100644 --- a/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx +++ b/src/pages/charge/standard/pages/CreateMaintenanceFund.tsx @@ -13,7 +13,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -46,11 +45,7 @@ export default function CreateMaintenanceFund(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.MaintenanceFund.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'House', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreatePropertyfee.tsx b/src/pages/charge/standard/pages/CreatePropertyfee.tsx index 93edc7b..8af9dd4 100644 --- a/src/pages/charge/standard/pages/CreatePropertyfee.tsx +++ b/src/pages/charge/standard/pages/CreatePropertyfee.tsx @@ -13,7 +13,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -46,11 +45,7 @@ export default function CreatePropertyFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.PropertyFee.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'House', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx b/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx index dc55db6..8f2e03e 100644 --- a/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx +++ b/src/pages/charge/standard/pages/CreateSharedElectricityFee.tsx @@ -14,7 +14,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -47,11 +46,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.SharedElectricityFee.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'Meter', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx b/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx index 293382f..40427ce 100644 --- a/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx +++ b/src/pages/charge/standard/pages/CreateSharedWaterFee.tsx @@ -14,7 +14,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -47,11 +46,7 @@ export default function CreateSharedWaterFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.SharedWaterFee.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'Meter', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/pages/CreateWaterFee.tsx b/src/pages/charge/standard/pages/CreateWaterFee.tsx index dbe790b..9046f39 100644 --- a/src/pages/charge/standard/pages/CreateWaterFee.tsx +++ b/src/pages/charge/standard/pages/CreateWaterFee.tsx @@ -13,7 +13,6 @@ import { HouseChargeStandardsCalculationModeEnum, HouseChargeStandardsCalculationPeriodEnum, HouseChargeStandardsPriceAlgorithmEnum, - HouseChargeStandardsTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -46,11 +45,7 @@ export default function CreateWaterFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.WaterFee.value, - type: - values.charge_type === HouseBillsTypeEnum.PropertyFee.value || - values.charge_type === HouseBillsTypeEnum.MaintenanceFund.value - ? HouseChargeStandardsTypeEnum.House.value - : HouseChargeStandardsTypeEnum.Meter.value, + type: 'Meter', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/standard/show/$id.tsx b/src/pages/charge/standard/show/$id.tsx index 4a79134..5319956 100644 --- a/src/pages/charge/standard/show/$id.tsx +++ b/src/pages/charge/standard/show/$id.tsx @@ -6,6 +6,7 @@ import { useParams, useSearchParams } from '@umijs/max'; import { Tabs } from 'antd'; import { useEffect, useState } from 'react'; import ChargeInfo from '../components/ChargeInfo'; +import HasCar from '../components/HasCar'; import HasHouse from '../components/HasHouse'; import Instrument from '../components/Instrument'; @@ -56,6 +57,22 @@ export default function Show({ title = '详情' }: { title?: string } = {}) { }, ]); } + + if (pageType === 'Car') { + setItem([ + { + label: '关联车位', + key: '3', + closable: false, + children: ( + loadShow()} + /> + ), + }, + ]); + } }); }; diff --git a/src/pages/charge/tasks/modals/TaskCreate.tsx b/src/pages/charge/tasks/modals/TaskCreate.tsx index a4627a0..baa44b9 100644 --- a/src/pages/charge/tasks/modals/TaskCreate.tsx +++ b/src/pages/charge/tasks/modals/TaskCreate.tsx @@ -20,7 +20,7 @@ export default function Create(props: MyBetaModalFormProps) { labelCol={{ span: 8 }} wrapperCol={{ span: 16 }} labelAlign="left" - trigger={} + trigger={} key={new Date().getTime()} form={form} onOpenChange={(open: any) => { @@ -61,7 +61,7 @@ export default function Create(props: MyBetaModalFormProps) { key: 'house_charge_standards_id', params: { asset_projects_id: asset_projects_id, - charge_type: ['PropertyFee', 'MaintenanceFund'], + charge_type: ['PropertyFee', 'MaintenanceFund', 'CarPortFee'], }, colProps: { span: 24 }, formItemProps: { ...rulesHelper.text }, diff --git a/src/pages/meter/common_meter/index.tsx b/src/pages/meter/common_meter/index.tsx index 5e6fd48..7664fa4 100644 --- a/src/pages/meter/common_meter/index.tsx +++ b/src/pages/meter/common_meter/index.tsx @@ -21,7 +21,6 @@ import { useState } from 'react'; import ChargingStandard from './modals/ChargingStandard'; import Create from './modals/Create'; import MeterHasHouse from './modals/MeterHasHouse'; -import MeterHasOne from './modals/MeterHasOne'; import Update from './modals/Update'; export default function CommonMeter({ title = '公摊表' }) { @@ -69,7 +68,7 @@ export default function CommonMeter({ title = '公摊表' }) { { - navigate(`/instrument/readings/show/${item.id}`); + navigate(`/meter/readings/show/${item.id}`); }} /> ), @@ -80,23 +79,11 @@ export default function CommonMeter({ title = '公摊表' }) { has: { key: '1', label: ( - <> - {item.meter_type === HouseMetersMeterTypeEnum.HouseMeter.value && - !item.house_meter_has_houses_count && ( - - )} - {item.meter_type === HouseMetersMeterTypeEnum.CommonMeter.value && ( - - )} - + ), }, delete: { @@ -178,7 +165,7 @@ export default function CommonMeter({ title = '公摊表' }) { }, }, { - title: '关联房屋数', + title: '绑定房屋', dataIndex: 'house_meter_has_houses_count', search: false, }, @@ -218,14 +205,14 @@ export default function CommonMeter({ title = '公摊表' }) { // dataIndex: 'remark', // search: false, // }, - MyColumns.SoftDelete({ - onRestore: Apis.Meter.HouseMeters.Restore, - onSoftDelete: Apis.Meter.HouseMeters.SoftDelete, - search: false, - setPermissions: getCurrentPermissions({ - enableDisable: true, - }), - }), + // MyColumns.SoftDelete({ + // onRestore: Apis.Meter.HouseMeters.Restore, + // onSoftDelete: Apis.Meter.HouseMeters.SoftDelete, + // search: false, + // setPermissions: getCurrentPermissions({ + // enableDisable: true, + // }), + // }), // MyColumns.CreatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( diff --git a/src/pages/meter/common_meter/modals/ChargingStandard.tsx b/src/pages/meter/common_meter/modals/ChargingStandard.tsx index 8d19569..bd9b92c 100644 --- a/src/pages/meter/common_meter/modals/ChargingStandard.tsx +++ b/src/pages/meter/common_meter/modals/ChargingStandard.tsx @@ -20,7 +20,7 @@ export default function Index(props: MyBetaModalFormProps) { type="link" width="1000px" onOpen={() => { - Apis.HouseCharage.HouseChargeStandards.Show({ + Apis.HouseCharge.HouseChargeStandards.Show({ id: props.item?.charge_standards_id ?? 0, }).then((res) => { setData(res?.data || {}); diff --git a/src/pages/meter/house_meter/index.tsx b/src/pages/meter/house_meter/index.tsx index 0f9cd47..2a743fb 100644 --- a/src/pages/meter/house_meter/index.tsx +++ b/src/pages/meter/house_meter/index.tsx @@ -20,7 +20,6 @@ import dayjs from 'dayjs'; import { useState } from 'react'; import ChargingStandard from './modals/ChargingStandard'; import Create from './modals/Create'; -import MeterHasHouse from './modals/MeterHasHouse'; import MeterHasOne from './modals/MeterHasOne'; import Update from './modals/Update'; @@ -69,7 +68,7 @@ export default function HouseMeter({ title = '房屋表' }) { { - navigate(`/instrument/readings/show/${item.id}`); + navigate(`/meter/readings/show/${item.id}`); }} /> ), @@ -80,23 +79,11 @@ export default function HouseMeter({ title = '房屋表' }) { has: { key: '1', label: ( - <> - {item.meter_type === HouseMetersMeterTypeEnum.HouseMeter.value && - !item.house_meter_has_houses_count && ( - - )} - {item.meter_type === HouseMetersMeterTypeEnum.CommonMeter.value && ( - - )} - + ), }, delete: { @@ -178,7 +165,7 @@ export default function HouseMeter({ title = '房屋表' }) { }, }, { - title: '关联房屋数', + title: '绑定房屋', dataIndex: 'house_meter_has_houses_count', search: false, }, diff --git a/src/pages/meter/house_meter/modals/ChargingStandard.tsx b/src/pages/meter/house_meter/modals/ChargingStandard.tsx index 8d19569..bd9b92c 100644 --- a/src/pages/meter/house_meter/modals/ChargingStandard.tsx +++ b/src/pages/meter/house_meter/modals/ChargingStandard.tsx @@ -20,7 +20,7 @@ export default function Index(props: MyBetaModalFormProps) { type="link" width="1000px" onOpen={() => { - Apis.HouseCharage.HouseChargeStandards.Show({ + Apis.HouseCharge.HouseChargeStandards.Show({ id: props.item?.charge_standards_id ?? 0, }).then((res) => { setData(res?.data || {}); diff --git a/src/pages/meter/readings/table/HasHouse.tsx b/src/pages/meter/readings/table/HasHouse.tsx index 459c309..0bb9ac4 100644 --- a/src/pages/meter/readings/table/HasHouse.tsx +++ b/src/pages/meter/readings/table/HasHouse.tsx @@ -9,8 +9,6 @@ import { HouseMetersMeterTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space } from 'antd'; -import MeterHasHouse from '../../instrument_list/modals/MeterHasHouse'; -import MeterHasOne from '../../instrument_list/modals/MeterHasOne'; export default function Index(props: MyBetaModalFormProps) { const navigate = useNavigate(); -- 2.47.2 From 58483043079fbfe4c9da95073e157f7e7193c5b2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 18 Jan 2026 19:18:51 +0800 Subject: [PATCH 04/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/bills/house_bills/index.tsx | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/pages/bills/house_bills/index.tsx b/src/pages/bills/house_bills/index.tsx index dd64cf0..d917da2 100644 --- a/src/pages/bills/house_bills/index.tsx +++ b/src/pages/bills/house_bills/index.tsx @@ -1,7 +1,6 @@ import { MyButtons, MyColumns, - MyImportModal, MyPageContainer, MyProTableProps, } from '@/common'; @@ -37,15 +36,15 @@ export default function Index({ title = '账单明细' }) { MyProTableProps.request(params, sort, Apis.Bill.HouseBills.List) } toolBarRender={(action) => [ - , + // , , ]} columns={[ @@ -61,10 +60,10 @@ export default function Index({ title = '账单明细' }) { render: (_, record) => { return ( { - navigate(`/bills/summary/show/${record.asset_houses_id}`); + navigate(`/bills/summary/show/${record?.asset_houses_id}`); }} /> ); -- 2.47.2 From 9752a8be88b5375e1c13596c41e9139303683d78 Mon Sep 17 00:00:00 2001 From: uiuJun <> Date: Sun, 18 Jan 2026 20:05:19 +0800 Subject: [PATCH 05/12] =?UTF-8?q?fix=EF=BC=9A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gen/ApiTypes.d.ts | 10 +- src/gen/Apis.ts | 1270 ++++++++--- src/gen/Enums.ts | 1924 ++++------------- src/pages/approval/all/index.tsx | 84 - src/pages/approval/all/modals/Show.tsx | 254 --- src/pages/approval/approval/index.tsx | 82 - src/pages/approval/cc_me/index.tsx | 70 - src/pages/approval/cc_me/modals/Show.tsx | 255 --- src/pages/approval/my_apply/index.tsx | 95 - src/pages/approval/my_processed/index.tsx | 59 - .../approval/my_processed/modals/Show.tsx | 255 --- src/pages/approval/pending/index.tsx | 81 - src/pages/approval/pending/modals/Audit.tsx | 326 --- src/pages/approval/templates/index.tsx | 76 - .../approval/templates/modals/Create.tsx | 138 -- .../approval/templates/modals/Update.tsx | 144 -- src/pages/asset/announcement/index.tsx | 11 +- .../asset_list/table/ConvenienceServices.tsx | 11 +- .../table/ConvenienceServices.tsx | 11 +- src/pages/asset/services/index.tsx | 11 +- src/pages/bills/all_bills/audit/index.tsx | 7 +- src/pages/bills/all_bills/list/index.tsx | 14 +- src/pages/bills/house_bills/index.tsx | 21 +- .../bills/house_bills/modals/BillRefund.tsx | 15 +- src/pages/bills/order_online/index.tsx | 209 ++ src/pages/bills/order_online/modals/Audit.tsx | 244 +++ .../bills/order_online/modals/PayUpdate.tsx | 77 + .../order_online/modals/SerialNumber.tsx} | 38 +- .../order_online/modals/SerialNumbers.tsx | 157 ++ src/pages/bills/order_online/modals/Show.tsx | 115 + .../standard/pages/CreateCarPortFee.tsx | 2 +- src/pages/charge/tasks/modals/TaskShow.tsx | 18 +- src/pages/company/employees/index.tsx | 61 +- .../employees/modals/CompletePhone.tsx | 99 - .../employees/modals/EmployeeCreate.tsx | 6 +- src/pages/company/employees/modals/Role.tsx | 2 +- src/pages/goods_releases/list/index.tsx | 13 +- .../goods_releases/list/modals/Audit.tsx | 33 +- .../goods_releases/list/pages/create.tsx | 5 +- .../goods_releases/list/pages/review.tsx | 3 +- .../components/QuestionCategoriesList.tsx | 73 - .../survey/components/QuestionsList.tsx | 80 - .../survey/components/SurveyReleasesList.tsx | 113 - .../survey/components/SurveyResponsesList.tsx | 39 - .../survey/components/SurveysList.tsx | 91 - src/pages/marketing/survey/index.tsx | 48 - .../modals/QuestionCategoriesCreate.tsx | 56 - .../survey/modals/QuestionsCreate.tsx | 92 - .../survey/modals/QuestionsUpdate.tsx | 92 - .../survey/modals/SurveyReleasesCreate.tsx | 78 - .../survey/modals/SurveyReleasesUpdate.tsx | 79 - .../survey/modals/SurveyResponsesShow.tsx | 67 - .../survey/modals/SurveysSelectList.tsx | 99 - .../marketing/survey/pages/create_surveys.tsx | 169 -- .../marketing/survey/pages/update_surveys.tsx | 188 -- src/pages/meter/index.tsx | 16 +- src/pages/visitor_applies/index.tsx | 3 +- .../work_order/list/components/Complaint.tsx | 2 +- .../list/components/EquipmentMaintenance.tsx | 183 -- .../work_order/list/components/Incident.tsx | 2 +- .../work_order/list/components/Renovation.tsx | 186 -- .../work_order/list/components/Repair.tsx | 2 +- .../list/components/SecurityInspection.tsx | 183 -- .../work_order/list/components/WorkList.tsx | 4 +- src/pages/work_order/list/index.tsx | 23 +- src/pages/work_order/patrol_work/index.tsx | 221 -- src/pages/work_order/renovation/index.tsx | 223 -- .../renovation/modals/RenovationAssign.tsx | 129 -- 68 files changed, 2392 insertions(+), 6455 deletions(-) delete mode 100644 src/pages/approval/all/index.tsx delete mode 100644 src/pages/approval/all/modals/Show.tsx delete mode 100644 src/pages/approval/approval/index.tsx delete mode 100644 src/pages/approval/cc_me/index.tsx delete mode 100644 src/pages/approval/cc_me/modals/Show.tsx delete mode 100644 src/pages/approval/my_apply/index.tsx delete mode 100644 src/pages/approval/my_processed/index.tsx delete mode 100644 src/pages/approval/my_processed/modals/Show.tsx delete mode 100644 src/pages/approval/pending/index.tsx delete mode 100644 src/pages/approval/pending/modals/Audit.tsx delete mode 100644 src/pages/approval/templates/index.tsx delete mode 100644 src/pages/approval/templates/modals/Create.tsx delete mode 100644 src/pages/approval/templates/modals/Update.tsx create mode 100644 src/pages/bills/order_online/index.tsx create mode 100644 src/pages/bills/order_online/modals/Audit.tsx create mode 100644 src/pages/bills/order_online/modals/PayUpdate.tsx rename src/pages/{marketing/survey/modals/QuestionCategoriesUpdate.tsx => bills/order_online/modals/SerialNumber.tsx} (50%) create mode 100644 src/pages/bills/order_online/modals/SerialNumbers.tsx create mode 100644 src/pages/bills/order_online/modals/Show.tsx delete mode 100644 src/pages/company/employees/modals/CompletePhone.tsx delete mode 100644 src/pages/marketing/survey/components/QuestionCategoriesList.tsx delete mode 100644 src/pages/marketing/survey/components/QuestionsList.tsx delete mode 100644 src/pages/marketing/survey/components/SurveyReleasesList.tsx delete mode 100644 src/pages/marketing/survey/components/SurveyResponsesList.tsx delete mode 100644 src/pages/marketing/survey/components/SurveysList.tsx delete mode 100644 src/pages/marketing/survey/index.tsx delete mode 100644 src/pages/marketing/survey/modals/QuestionCategoriesCreate.tsx delete mode 100644 src/pages/marketing/survey/modals/QuestionsCreate.tsx delete mode 100644 src/pages/marketing/survey/modals/QuestionsUpdate.tsx delete mode 100644 src/pages/marketing/survey/modals/SurveyReleasesCreate.tsx delete mode 100644 src/pages/marketing/survey/modals/SurveyReleasesUpdate.tsx delete mode 100644 src/pages/marketing/survey/modals/SurveyResponsesShow.tsx delete mode 100644 src/pages/marketing/survey/modals/SurveysSelectList.tsx delete mode 100644 src/pages/marketing/survey/pages/create_surveys.tsx delete mode 100644 src/pages/marketing/survey/pages/update_surveys.tsx delete mode 100644 src/pages/work_order/list/components/EquipmentMaintenance.tsx delete mode 100644 src/pages/work_order/list/components/Renovation.tsx delete mode 100644 src/pages/work_order/list/components/SecurityInspection.tsx delete mode 100644 src/pages/work_order/patrol_work/index.tsx delete mode 100644 src/pages/work_order/renovation/index.tsx delete mode 100644 src/pages/work_order/renovation/modals/RenovationAssign.tsx diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index 3a9f01c..194d758 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -578,7 +578,6 @@ declare namespace ApiTypes { "year"?: number; // 账单年份 "month"?: number; // 账单月份 "type"?: string; // 账单类型,[enum:HouseBillsTypeEnum] - "has_refunding"?: boolean; // 是否有退款中:false-无,true-有 }; type SummaryBillList = { "project_name"?: string; // 模糊搜索:项目名称 @@ -683,6 +682,13 @@ declare namespace ApiTypes { "new_password": string; // 新密码 "re_new_password": string; // 重复新密码 }; + type PreUpload = { + "filename": string; // 文件名称 + "alc": string; // 访问限制 public-read, private + }; + type TemporaryUrl = { + "filename": string; // 文件名称 + }; } namespace ConvenienceServices { type List = { @@ -1070,7 +1076,7 @@ declare namespace ApiTypes { type Select = { "name"?: string; // 模糊搜索:名称 "project_name"?: string; // 模糊搜索:项目名称 - "charge_type"?: string; // 收费类型,[enum:HouseBillsTypeEnum] + "charge_type"?: string[]; // 收费类型,[enum:HouseBillsTypeEnum] "asset_projects_id"?: number; // 项目id,[ref:asset_projects] }; } diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index 69ad63b..19aed00 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -10,90 +10,155 @@ export const Apis = { Store(data: ApiTypes.Activity.Activities.Store): Promise { return request('company/activity/activities/store', { data }); }, - Update(data: ApiTypes.Activity.Activities.Update): Promise { + Update( + data: ApiTypes.Activity.Activities.Update, + ): Promise { return request('company/activity/activities/update', { data }); }, - ChangePublishStatus(data: ApiTypes.Activity.Activities.ChangePublishStatus): Promise { - return request('company/activity/activities/change_publish_status', { data }); + ChangePublishStatus( + data: ApiTypes.Activity.Activities.ChangePublishStatus, + ): Promise { + return request('company/activity/activities/change_publish_status', { + data, + }); }, Show(data: ApiTypes.Activity.Activities.Show): Promise { return request('company/activity/activities/show', { data }); }, - SoftDelete(data: ApiTypes.Activity.Activities.SoftDelete): Promise { + SoftDelete( + data: ApiTypes.Activity.Activities.SoftDelete, + ): Promise { return request('company/activity/activities/soft_delete', { data }); }, - Restore(data: ApiTypes.Activity.Activities.Restore): Promise { + Restore( + data: ApiTypes.Activity.Activities.Restore, + ): Promise { return request('company/activity/activities/restore', { data }); }, - Delete(data: ApiTypes.Activity.Activities.Delete): Promise { + Delete( + data: ApiTypes.Activity.Activities.Delete, + ): Promise { return request('company/activity/activities/delete', { data }); }, }, ActivityEnrolls: { - List(data?: ApiTypes.Activity.ActivityEnrolls.List): Promise { + List( + data?: ApiTypes.Activity.ActivityEnrolls.List, + ): Promise { return request('company/activity/activity_enrolls/list', { data }); }, - Show(data: ApiTypes.Activity.ActivityEnrolls.Show): Promise { + Show( + data: ApiTypes.Activity.ActivityEnrolls.Show, + ): Promise { return request('company/activity/activity_enrolls/show', { data }); }, - ChangeStatus(data: ApiTypes.Activity.ActivityEnrolls.ChangeStatus): Promise { - return request('company/activity/activity_enrolls/change_status', { data }); + ChangeStatus( + data: ApiTypes.Activity.ActivityEnrolls.ChangeStatus, + ): Promise { + return request('company/activity/activity_enrolls/change_status', { + data, + }); }, }, }, Archive: { HouseOccupants: { - List(data?: ApiTypes.Archive.HouseOccupants.List): Promise { + List( + data?: ApiTypes.Archive.HouseOccupants.List, + ): Promise { return request('company/archive/house_occupants/list', { data }); }, - CustomerList(data?: ApiTypes.Archive.HouseOccupants.CustomerList): Promise { - return request('company/archive/house_occupants/customer_list', { data }); + CustomerList( + data?: ApiTypes.Archive.HouseOccupants.CustomerList, + ): Promise { + return request('company/archive/house_occupants/customer_list', { + data, + }); }, - CustomerHouseByPhone(data: ApiTypes.Archive.HouseOccupants.CustomerHouseByPhone): Promise { - return request('company/archive/house_occupants/customer_house_by_phone', { data }); + CustomerHouseByPhone( + data: ApiTypes.Archive.HouseOccupants.CustomerHouseByPhone, + ): Promise { + return request( + 'company/archive/house_occupants/customer_house_by_phone', + { data }, + ); }, - Update(data: ApiTypes.Archive.HouseOccupants.Update): Promise { + Update( + data: ApiTypes.Archive.HouseOccupants.Update, + ): Promise { return request('company/archive/house_occupants/update', { data }); }, - Show(data: ApiTypes.Archive.HouseOccupants.Show): Promise { + Show( + data: ApiTypes.Archive.HouseOccupants.Show, + ): Promise { return request('company/archive/house_occupants/show', { data }); }, - Delete(data: ApiTypes.Archive.HouseOccupants.Delete): Promise { + Delete( + data: ApiTypes.Archive.HouseOccupants.Delete, + ): Promise { return request('company/archive/house_occupants/delete', { data }); }, - ChangeIsContact(data: ApiTypes.Archive.HouseOccupants.ChangeIsContact): Promise { - return request('company/archive/house_occupants/change_is_contact', { data }); + ChangeIsContact( + data: ApiTypes.Archive.HouseOccupants.ChangeIsContact, + ): Promise { + return request('company/archive/house_occupants/change_is_contact', { + data, + }); }, }, HouseRegisters: { - List(data?: ApiTypes.Archive.HouseRegisters.List): Promise { + List( + data?: ApiTypes.Archive.HouseRegisters.List, + ): Promise { return request('company/archive/house_registers/list', { data }); }, - Store(data: ApiTypes.Archive.HouseRegisters.Store): Promise { + Store( + data: ApiTypes.Archive.HouseRegisters.Store, + ): Promise { return request('company/archive/house_registers/store', { data }); }, - Update(data: ApiTypes.Archive.HouseRegisters.Update): Promise { + Update( + data: ApiTypes.Archive.HouseRegisters.Update, + ): Promise { return request('company/archive/house_registers/update', { data }); }, - MoveOut(data: ApiTypes.Archive.HouseRegisters.MoveOut): Promise { + MoveOut( + data: ApiTypes.Archive.HouseRegisters.MoveOut, + ): Promise { return request('company/archive/house_registers/move_out', { data }); }, - MoveIn(data: ApiTypes.Archive.HouseRegisters.MoveIn): Promise { + MoveIn( + data: ApiTypes.Archive.HouseRegisters.MoveIn, + ): Promise { return request('company/archive/house_registers/move_in', { data }); }, - RemoveOwner(data: ApiTypes.Archive.HouseRegisters.RemoveOwner): Promise { - return request('company/archive/house_registers/remove_owner', { data }); + RemoveOwner( + data: ApiTypes.Archive.HouseRegisters.RemoveOwner, + ): Promise { + return request('company/archive/house_registers/remove_owner', { + data, + }); }, - ChangeOccupant(data: ApiTypes.Archive.HouseRegisters.ChangeOccupant): Promise { - return request('company/archive/house_registers/change_occupant', { data }); + ChangeOccupant( + data: ApiTypes.Archive.HouseRegisters.ChangeOccupant, + ): Promise { + return request('company/archive/house_registers/change_occupant', { + data, + }); }, - Show(data: ApiTypes.Archive.HouseRegisters.Show): Promise { + Show( + data: ApiTypes.Archive.HouseRegisters.Show, + ): Promise { return request('company/archive/house_registers/show', { data }); }, - Audit(data: ApiTypes.Archive.HouseRegisters.Audit): Promise { + Audit( + data: ApiTypes.Archive.HouseRegisters.Audit, + ): Promise { return request('company/archive/house_registers/audit', { data }); }, - Delete(data: ApiTypes.Archive.HouseRegisters.Delete): Promise { + Delete( + data: ApiTypes.Archive.HouseRegisters.Delete, + ): Promise { return request('company/archive/house_registers/delete', { data }); }, }, @@ -103,19 +168,27 @@ export const Apis = { List(data?: ApiTypes.Asset.AssetBuildings.List): Promise { return request('company/asset/asset_buildings/list', { data }); }, - Store(data: ApiTypes.Asset.AssetBuildings.Store): Promise { + Store( + data: ApiTypes.Asset.AssetBuildings.Store, + ): Promise { return request('company/asset/asset_buildings/store', { data }); }, - Update(data: ApiTypes.Asset.AssetBuildings.Update): Promise { + Update( + data: ApiTypes.Asset.AssetBuildings.Update, + ): Promise { return request('company/asset/asset_buildings/update', { data }); }, Show(data: ApiTypes.Asset.AssetBuildings.Show): Promise { return request('company/asset/asset_buildings/show', { data }); }, - Delete(data: ApiTypes.Asset.AssetBuildings.Delete): Promise { + Delete( + data: ApiTypes.Asset.AssetBuildings.Delete, + ): Promise { return request('company/asset/asset_buildings/delete', { data }); }, - Select(data?: ApiTypes.Asset.AssetBuildings.Select): Promise { + Select( + data?: ApiTypes.Asset.AssetBuildings.Select, + ): Promise { return request('company/asset/asset_buildings/select', { data }); }, }, @@ -126,16 +199,22 @@ export const Apis = { Store(data: ApiTypes.Asset.AssetCarPorts.Store): Promise { return request('company/asset/asset_car_ports/store', { data }); }, - Update(data: ApiTypes.Asset.AssetCarPorts.Update): Promise { + Update( + data: ApiTypes.Asset.AssetCarPorts.Update, + ): Promise { return request('company/asset/asset_car_ports/update', { data }); }, Show(data: ApiTypes.Asset.AssetCarPorts.Show): Promise { return request('company/asset/asset_car_ports/show', { data }); }, - Delete(data: ApiTypes.Asset.AssetCarPorts.Delete): Promise { + Delete( + data: ApiTypes.Asset.AssetCarPorts.Delete, + ): Promise { return request('company/asset/asset_car_ports/delete', { data }); }, - Select(data?: ApiTypes.Asset.AssetCarPorts.Select): Promise { + Select( + data?: ApiTypes.Asset.AssetCarPorts.Select, + ): Promise { return request('company/asset/asset_car_ports/select', { data }); }, }, @@ -155,50 +234,77 @@ export const Apis = { Delete(data: ApiTypes.Asset.AssetHouses.Delete): Promise { return request('company/asset/asset_houses/delete', { data }); }, - Select(data?: ApiTypes.Asset.AssetHouses.Select): Promise { + Select( + data?: ApiTypes.Asset.AssetHouses.Select, + ): Promise { return request('company/asset/asset_houses/select', { data }); }, - SelectFullName(data?: ApiTypes.Asset.AssetHouses.SelectFullName): Promise { + SelectFullName( + data?: ApiTypes.Asset.AssetHouses.SelectFullName, + ): Promise { return request('company/asset/asset_houses/select_full_name', { data }); }, Import(data: ApiTypes.Asset.AssetHouses.Import): Promise { return request('company/asset/asset_houses/import', { data }); }, Export(data: ApiTypes.Asset.AssetHouses.Export): Promise { - return request('company/asset/asset_houses/export', { responseType: 'blob',data }); + return request('company/asset/asset_houses/export', { + responseType: 'blob', + data, + }); }, }, AssetParkingPlaces: { - List(data?: ApiTypes.Asset.AssetParkingPlaces.List): Promise { + List( + data?: ApiTypes.Asset.AssetParkingPlaces.List, + ): Promise { return request('company/asset/asset_parking_places/list', { data }); }, - Store(data: ApiTypes.Asset.AssetParkingPlaces.Store): Promise { + Store( + data: ApiTypes.Asset.AssetParkingPlaces.Store, + ): Promise { return request('company/asset/asset_parking_places/store', { data }); }, - Update(data: ApiTypes.Asset.AssetParkingPlaces.Update): Promise { + Update( + data: ApiTypes.Asset.AssetParkingPlaces.Update, + ): Promise { return request('company/asset/asset_parking_places/update', { data }); }, - Show(data: ApiTypes.Asset.AssetParkingPlaces.Show): Promise { + Show( + data: ApiTypes.Asset.AssetParkingPlaces.Show, + ): Promise { return request('company/asset/asset_parking_places/show', { data }); }, - Delete(data: ApiTypes.Asset.AssetParkingPlaces.Delete): Promise { + Delete( + data: ApiTypes.Asset.AssetParkingPlaces.Delete, + ): Promise { return request('company/asset/asset_parking_places/delete', { data }); }, - Select(data?: ApiTypes.Asset.AssetParkingPlaces.Select): Promise { + Select( + data?: ApiTypes.Asset.AssetParkingPlaces.Select, + ): Promise { return request('company/asset/asset_parking_places/select', { data }); }, }, AssetProjectAdmins: { - List(data?: ApiTypes.Asset.AssetProjectAdmins.List): Promise { + List( + data?: ApiTypes.Asset.AssetProjectAdmins.List, + ): Promise { return request('company/asset/asset_project_admins/list', { data }); }, - Store(data: ApiTypes.Asset.AssetProjectAdmins.Store): Promise { + Store( + data: ApiTypes.Asset.AssetProjectAdmins.Store, + ): Promise { return request('company/asset/asset_project_admins/store', { data }); }, - Show(data: ApiTypes.Asset.AssetProjectAdmins.Show): Promise { + Show( + data: ApiTypes.Asset.AssetProjectAdmins.Show, + ): Promise { return request('company/asset/asset_project_admins/show', { data }); }, - Delete(data: ApiTypes.Asset.AssetProjectAdmins.Delete): Promise { + Delete( + data: ApiTypes.Asset.AssetProjectAdmins.Delete, + ): Promise { return request('company/asset/asset_project_admins/delete', { data }); }, }, @@ -209,19 +315,29 @@ export const Apis = { Store(data: ApiTypes.Asset.AssetProjects.Store): Promise { return request('company/asset/asset_projects/store', { data }); }, - Update(data: ApiTypes.Asset.AssetProjects.Update): Promise { + Update( + data: ApiTypes.Asset.AssetProjects.Update, + ): Promise { return request('company/asset/asset_projects/update', { data }); }, - ChangePropertyBrand(data: ApiTypes.Asset.AssetProjects.ChangePropertyBrand): Promise { - return request('company/asset/asset_projects/change_property_brand', { data }); + ChangePropertyBrand( + data: ApiTypes.Asset.AssetProjects.ChangePropertyBrand, + ): Promise { + return request('company/asset/asset_projects/change_property_brand', { + data, + }); }, Show(data: ApiTypes.Asset.AssetProjects.Show): Promise { return request('company/asset/asset_projects/show', { data }); }, - Delete(data: ApiTypes.Asset.AssetProjects.Delete): Promise { + Delete( + data: ApiTypes.Asset.AssetProjects.Delete, + ): Promise { return request('company/asset/asset_projects/delete', { data }); }, - Select(data?: ApiTypes.Asset.AssetProjects.Select): Promise { + Select( + data?: ApiTypes.Asset.AssetProjects.Select, + ): Promise { return request('company/asset/asset_projects/select', { data }); }, }, @@ -244,7 +360,9 @@ export const Apis = { Select(data?: ApiTypes.Asset.AssetUnits.Select): Promise { return request('company/asset/asset_units/select', { data }); }, - GridSelect(data?: ApiTypes.Asset.AssetUnits.GridSelect): Promise { + GridSelect( + data?: ApiTypes.Asset.AssetUnits.GridSelect, + ): Promise { return request('company/asset/asset_units/grid_select', { data }); }, }, @@ -254,7 +372,9 @@ export const Apis = { List(data?: ApiTypes.Bill.HouseBills.List): Promise { return request('company/bill/house_bills/list', { data }); }, - SummaryBillList(data?: ApiTypes.Bill.HouseBills.SummaryBillList): Promise { + SummaryBillList( + data?: ApiTypes.Bill.HouseBills.SummaryBillList, + ): Promise { return request('company/bill/house_bills/summary_bill_list', { data }); }, Store(data: ApiTypes.Bill.HouseBills.Store): Promise { @@ -266,38 +386,67 @@ export const Apis = { Show(data: ApiTypes.Bill.HouseBills.Show): Promise { return request('company/bill/house_bills/show', { data }); }, - SummaryShow(data: ApiTypes.Bill.HouseBills.SummaryShow): Promise { + SummaryShow( + data: ApiTypes.Bill.HouseBills.SummaryShow, + ): Promise { return request('company/bill/house_bills/summary_show', { data }); }, Delete(data: ApiTypes.Bill.HouseBills.Delete): Promise { return request('company/bill/house_bills/delete', { data }); }, Export(data: ApiTypes.Bill.HouseBills.Export): Promise { - return request('company/bill/house_bills/export', { responseType: 'blob',data }); + return request('company/bill/house_bills/export', { + responseType: 'blob', + data, + }); }, }, }, Collection: { HouseCollectionRecords: { - List(data?: ApiTypes.Collection.HouseCollectionRecords.List): Promise { - return request('company/collection/house_collection_records/list', { data }); + List( + data?: ApiTypes.Collection.HouseCollectionRecords.List, + ): Promise { + return request('company/collection/house_collection_records/list', { + data, + }); }, - Show(data: ApiTypes.Collection.HouseCollectionRecords.Show): Promise { - return request('company/collection/house_collection_records/show', { data }); + Show( + data: ApiTypes.Collection.HouseCollectionRecords.Show, + ): Promise { + return request('company/collection/house_collection_records/show', { + data, + }); }, - Delete(data: ApiTypes.Collection.HouseCollectionRecords.Delete): Promise { - return request('company/collection/house_collection_records/delete', { data }); + Delete( + data: ApiTypes.Collection.HouseCollectionRecords.Delete, + ): Promise { + return request('company/collection/house_collection_records/delete', { + data, + }); }, }, HouseCollectionTasks: { - List(data?: ApiTypes.Collection.HouseCollectionTasks.List): Promise { - return request('company/collection/house_collection_tasks/list', { data }); + List( + data?: ApiTypes.Collection.HouseCollectionTasks.List, + ): Promise { + return request('company/collection/house_collection_tasks/list', { + data, + }); }, - Show(data: ApiTypes.Collection.HouseCollectionTasks.Show): Promise { - return request('company/collection/house_collection_tasks/show', { data }); + Show( + data: ApiTypes.Collection.HouseCollectionTasks.Show, + ): Promise { + return request('company/collection/house_collection_tasks/show', { + data, + }); }, - Delete(data: ApiTypes.Collection.HouseCollectionTasks.Delete): Promise { - return request('company/collection/house_collection_tasks/delete', { data }); + Delete( + data: ApiTypes.Collection.HouseCollectionTasks.Delete, + ): Promise { + return request('company/collection/house_collection_tasks/delete', { + data, + }); }, }, }, @@ -315,163 +464,316 @@ export const Apis = { Me(): Promise { return request('company/common/auth/me', {}); }, - ChangePassword(data: ApiTypes.Common.Auth.ChangePassword): Promise { + ChangePassword( + data: ApiTypes.Common.Auth.ChangePassword, + ): Promise { return request('company/common/auth/change_password', { data }); }, + PreUpload(data: ApiTypes.Common.Auth.PreUpload): Promise { + return request('company/common/auth/pre_upload', { data }); + }, + TemporaryUrl( + data: ApiTypes.Common.Auth.TemporaryUrl, + ): Promise { + return request('company/common/auth/temporary_url', { data }); + }, }, ConvenienceServices: { - List(data?: ApiTypes.Common.ConvenienceServices.List): Promise { + List( + data?: ApiTypes.Common.ConvenienceServices.List, + ): Promise { return request('company/common/convenience_services/list', { data }); }, - Store(data: ApiTypes.Common.ConvenienceServices.Store): Promise { + Store( + data: ApiTypes.Common.ConvenienceServices.Store, + ): Promise { return request('company/common/convenience_services/store', { data }); }, - Update(data: ApiTypes.Common.ConvenienceServices.Update): Promise { + Update( + data: ApiTypes.Common.ConvenienceServices.Update, + ): Promise { return request('company/common/convenience_services/update', { data }); }, - Show(data: ApiTypes.Common.ConvenienceServices.Show): Promise { + Show( + data: ApiTypes.Common.ConvenienceServices.Show, + ): Promise { return request('company/common/convenience_services/show', { data }); }, - Delete(data: ApiTypes.Common.ConvenienceServices.Delete): Promise { + Delete( + data: ApiTypes.Common.ConvenienceServices.Delete, + ): Promise { return request('company/common/convenience_services/delete', { data }); }, }, }, Company: { CompanyEmployees: { - List(data?: ApiTypes.Company.CompanyEmployees.List): Promise { + List( + data?: ApiTypes.Company.CompanyEmployees.List, + ): Promise { return request('company/company/company_employees/list', { data }); }, - Store(data: ApiTypes.Company.CompanyEmployees.Store): Promise { + Store( + data: ApiTypes.Company.CompanyEmployees.Store, + ): Promise { return request('company/company/company_employees/store', { data }); }, - Update(data: ApiTypes.Company.CompanyEmployees.Update): Promise { + Update( + data: ApiTypes.Company.CompanyEmployees.Update, + ): Promise { return request('company/company/company_employees/update', { data }); }, - Show(data: ApiTypes.Company.CompanyEmployees.Show): Promise { + Show( + data: ApiTypes.Company.CompanyEmployees.Show, + ): Promise { return request('company/company/company_employees/show', { data }); }, - Delete(data: ApiTypes.Company.CompanyEmployees.Delete): Promise { + Delete( + data: ApiTypes.Company.CompanyEmployees.Delete, + ): Promise { return request('company/company/company_employees/delete', { data }); }, - Select(data?: ApiTypes.Company.CompanyEmployees.Select): Promise { + Select( + data?: ApiTypes.Company.CompanyEmployees.Select, + ): Promise { return request('company/company/company_employees/select', { data }); }, }, CompanyPositions: { - List(data?: ApiTypes.Company.CompanyPositions.List): Promise { + List( + data?: ApiTypes.Company.CompanyPositions.List, + ): Promise { return request('company/company/company_positions/list', { data }); }, - Store(data: ApiTypes.Company.CompanyPositions.Store): Promise { + Store( + data: ApiTypes.Company.CompanyPositions.Store, + ): Promise { return request('company/company/company_positions/store', { data }); }, - Update(data: ApiTypes.Company.CompanyPositions.Update): Promise { + Update( + data: ApiTypes.Company.CompanyPositions.Update, + ): Promise { return request('company/company/company_positions/update', { data }); }, - Show(data: ApiTypes.Company.CompanyPositions.Show): Promise { + Show( + data: ApiTypes.Company.CompanyPositions.Show, + ): Promise { return request('company/company/company_positions/show', { data }); }, - Delete(data: ApiTypes.Company.CompanyPositions.Delete): Promise { + Delete( + data: ApiTypes.Company.CompanyPositions.Delete, + ): Promise { return request('company/company/company_positions/delete', { data }); }, - Select(data?: ApiTypes.Company.CompanyPositions.Select): Promise { + Select( + data?: ApiTypes.Company.CompanyPositions.Select, + ): Promise { return request('company/company/company_positions/select', { data }); }, }, CompanyProjectReceiptAccounts: { - List(data?: ApiTypes.Company.CompanyProjectReceiptAccounts.List): Promise { - return request('company/company/company_project_receipt_accounts/list', { data }); + List( + data?: ApiTypes.Company.CompanyProjectReceiptAccounts.List, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/list', + { data }, + ); }, - Store(data: ApiTypes.Company.CompanyProjectReceiptAccounts.Store): Promise { - return request('company/company/company_project_receipt_accounts/store', { data }); + Store( + data: ApiTypes.Company.CompanyProjectReceiptAccounts.Store, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/store', + { data }, + ); }, - Update(data: ApiTypes.Company.CompanyProjectReceiptAccounts.Update): Promise { - return request('company/company/company_project_receipt_accounts/update', { data }); + Update( + data: ApiTypes.Company.CompanyProjectReceiptAccounts.Update, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/update', + { data }, + ); }, - Show(data: ApiTypes.Company.CompanyProjectReceiptAccounts.Show): Promise { - return request('company/company/company_project_receipt_accounts/show', { data }); + Show( + data: ApiTypes.Company.CompanyProjectReceiptAccounts.Show, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/show', + { data }, + ); }, - Delete(data: ApiTypes.Company.CompanyProjectReceiptAccounts.Delete): Promise { - return request('company/company/company_project_receipt_accounts/delete', { data }); + Delete( + data: ApiTypes.Company.CompanyProjectReceiptAccounts.Delete, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/delete', + { data }, + ); }, - Select(data?: ApiTypes.Company.CompanyProjectReceiptAccounts.Select): Promise { - return request('company/company/company_project_receipt_accounts/select', { data }); + Select( + data?: ApiTypes.Company.CompanyProjectReceiptAccounts.Select, + ): Promise { + return request( + 'company/company/company_project_receipt_accounts/select', + { data }, + ); }, }, CompanyPropertyBrands: { - List(data?: ApiTypes.Company.CompanyPropertyBrands.List): Promise { - return request('company/company/company_property_brands/list', { data }); + List( + data?: ApiTypes.Company.CompanyPropertyBrands.List, + ): Promise { + return request('company/company/company_property_brands/list', { + data, + }); }, - Store(data: ApiTypes.Company.CompanyPropertyBrands.Store): Promise { - return request('company/company/company_property_brands/store', { data }); + Store( + data: ApiTypes.Company.CompanyPropertyBrands.Store, + ): Promise { + return request('company/company/company_property_brands/store', { + data, + }); }, - Update(data: ApiTypes.Company.CompanyPropertyBrands.Update): Promise { - return request('company/company/company_property_brands/update', { data }); + Update( + data: ApiTypes.Company.CompanyPropertyBrands.Update, + ): Promise { + return request('company/company/company_property_brands/update', { + data, + }); }, - Show(data: ApiTypes.Company.CompanyPropertyBrands.Show): Promise { - return request('company/company/company_property_brands/show', { data }); + Show( + data: ApiTypes.Company.CompanyPropertyBrands.Show, + ): Promise { + return request('company/company/company_property_brands/show', { + data, + }); }, - Delete(data: ApiTypes.Company.CompanyPropertyBrands.Delete): Promise { - return request('company/company/company_property_brands/delete', { data }); + Delete( + data: ApiTypes.Company.CompanyPropertyBrands.Delete, + ): Promise { + return request('company/company/company_property_brands/delete', { + data, + }); }, - Select(data?: ApiTypes.Company.CompanyPropertyBrands.Select): Promise { - return request('company/company/company_property_brands/select', { data }); + Select( + data?: ApiTypes.Company.CompanyPropertyBrands.Select, + ): Promise { + return request('company/company/company_property_brands/select', { + data, + }); }, }, CompanyReceiptAccounts: { - List(data?: ApiTypes.Company.CompanyReceiptAccounts.List): Promise { - return request('company/company/company_receipt_accounts/list', { data }); + List( + data?: ApiTypes.Company.CompanyReceiptAccounts.List, + ): Promise { + return request('company/company/company_receipt_accounts/list', { + data, + }); }, - Store(data: ApiTypes.Company.CompanyReceiptAccounts.Store): Promise { - return request('company/company/company_receipt_accounts/store', { data }); + Store( + data: ApiTypes.Company.CompanyReceiptAccounts.Store, + ): Promise { + return request('company/company/company_receipt_accounts/store', { + data, + }); }, - Update(data: ApiTypes.Company.CompanyReceiptAccounts.Update): Promise { - return request('company/company/company_receipt_accounts/update', { data }); + Update( + data: ApiTypes.Company.CompanyReceiptAccounts.Update, + ): Promise { + return request('company/company/company_receipt_accounts/update', { + data, + }); }, - Show(data: ApiTypes.Company.CompanyReceiptAccounts.Show): Promise { - return request('company/company/company_receipt_accounts/show', { data }); + Show( + data: ApiTypes.Company.CompanyReceiptAccounts.Show, + ): Promise { + return request('company/company/company_receipt_accounts/show', { + data, + }); }, - Delete(data: ApiTypes.Company.CompanyReceiptAccounts.Delete): Promise { - return request('company/company/company_receipt_accounts/delete', { data }); + Delete( + data: ApiTypes.Company.CompanyReceiptAccounts.Delete, + ): Promise { + return request('company/company/company_receipt_accounts/delete', { + data, + }); }, - Select(data?: ApiTypes.Company.CompanyReceiptAccounts.Select): Promise { - return request('company/company/company_receipt_accounts/select', { data }); + Select( + data?: ApiTypes.Company.CompanyReceiptAccounts.Select, + ): Promise { + return request('company/company/company_receipt_accounts/select', { + data, + }); }, }, OrganizationProjects: { - List(data?: ApiTypes.Company.OrganizationProjects.List): Promise { + List( + data?: ApiTypes.Company.OrganizationProjects.List, + ): Promise { return request('company/company/organization_projects/list', { data }); }, - Store(data: ApiTypes.Company.OrganizationProjects.Store): Promise { + Store( + data: ApiTypes.Company.OrganizationProjects.Store, + ): Promise { return request('company/company/organization_projects/store', { data }); }, - BatchStore(data: ApiTypes.Company.OrganizationProjects.BatchStore): Promise { - return request('company/company/organization_projects/batch_store', { data }); + BatchStore( + data: ApiTypes.Company.OrganizationProjects.BatchStore, + ): Promise { + return request('company/company/organization_projects/batch_store', { + data, + }); }, - Rebind(data: ApiTypes.Company.OrganizationProjects.Rebind): Promise { - return request('company/company/organization_projects/rebind', { data }); + Rebind( + data: ApiTypes.Company.OrganizationProjects.Rebind, + ): Promise { + return request('company/company/organization_projects/rebind', { + data, + }); }, - Show(data: ApiTypes.Company.OrganizationProjects.Show): Promise { + Show( + data: ApiTypes.Company.OrganizationProjects.Show, + ): Promise { return request('company/company/organization_projects/show', { data }); }, - Delete(data: ApiTypes.Company.OrganizationProjects.Delete): Promise { - return request('company/company/organization_projects/delete', { data }); + Delete( + data: ApiTypes.Company.OrganizationProjects.Delete, + ): Promise { + return request('company/company/organization_projects/delete', { + data, + }); }, - DeleteByOrganization(data: ApiTypes.Company.OrganizationProjects.DeleteByOrganization): Promise { - return request('company/company/organization_projects/delete_by_organization', { data }); + DeleteByOrganization( + data: ApiTypes.Company.OrganizationProjects.DeleteByOrganization, + ): Promise { + return request( + 'company/company/organization_projects/delete_by_organization', + { data }, + ); }, }, Organizations: { - List(data?: ApiTypes.Company.Organizations.List): Promise { + List( + data?: ApiTypes.Company.Organizations.List, + ): Promise { return request('company/company/organizations/list', { data }); }, - TreeList(data?: ApiTypes.Company.Organizations.TreeList): Promise { + TreeList( + data?: ApiTypes.Company.Organizations.TreeList, + ): Promise { return request('company/company/organizations/tree_list', { data }); }, - Store(data: ApiTypes.Company.Organizations.Store): Promise { + Store( + data: ApiTypes.Company.Organizations.Store, + ): Promise { return request('company/company/organizations/store', { data }); }, - Update(data: ApiTypes.Company.Organizations.Update): Promise { + Update( + data: ApiTypes.Company.Organizations.Update, + ): Promise { return request('company/company/organizations/update', { data }); }, Move(data: ApiTypes.Company.Organizations.Move): Promise { @@ -480,13 +782,19 @@ export const Apis = { Show(data: ApiTypes.Company.Organizations.Show): Promise { return request('company/company/organizations/show', { data }); }, - Delete(data: ApiTypes.Company.Organizations.Delete): Promise { + Delete( + data: ApiTypes.Company.Organizations.Delete, + ): Promise { return request('company/company/organizations/delete', { data }); }, - Select(data?: ApiTypes.Company.Organizations.Select): Promise { + Select( + data?: ApiTypes.Company.Organizations.Select, + ): Promise { return request('company/company/organizations/select', { data }); }, - SelectTree(data?: ApiTypes.Company.Organizations.SelectTree): Promise { + SelectTree( + data?: ApiTypes.Company.Organizations.SelectTree, + ): Promise { return request('company/company/organizations/select_tree', { data }); }, }, @@ -508,283 +816,563 @@ export const Apis = { Delete(data: ApiTypes.Grid.Grids.Delete): Promise { return request('company/grid/grids/delete', { data }); }, - AddManager(data: ApiTypes.Grid.Grids.AddManager): Promise { + AddManager( + data: ApiTypes.Grid.Grids.AddManager, + ): Promise { return request('company/grid/grids/add_manager', { data }); }, - GetGridMark(data: ApiTypes.Grid.Grids.GetGridMark): Promise { + GetGridMark( + data: ApiTypes.Grid.Grids.GetGridMark, + ): Promise { return request('company/grid/grids/get_grid_mark', { data }); }, }, }, HouseCharge: { HouseChargeHasCarPorts: { - List(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.List): Promise { - return request('company/house_charge/house_charge_has_car_ports/list', { data }); + List( + data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.List, + ): Promise { + return request('company/house_charge/house_charge_has_car_ports/list', { + data, + }); }, - Store(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Store): Promise { - return request('company/house_charge/house_charge_has_car_ports/store', { data }); + Store( + data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Store, + ): Promise { + return request( + 'company/house_charge/house_charge_has_car_ports/store', + { data }, + ); }, - GetChargeStandardCarPortIds(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.GetChargeStandardCarPortIds): Promise { - return request('company/house_charge/house_charge_has_car_ports/get_charge_standard_car_port_ids', { data }); + GetChargeStandardCarPortIds( + data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.GetChargeStandardCarPortIds, + ): Promise { + return request( + 'company/house_charge/house_charge_has_car_ports/get_charge_standard_car_port_ids', + { data }, + ); }, - Show(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Show): Promise { - return request('company/house_charge/house_charge_has_car_ports/show', { data }); + Show( + data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Show, + ): Promise { + return request('company/house_charge/house_charge_has_car_ports/show', { + data, + }); }, - Delete(data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Delete): Promise { - return request('company/house_charge/house_charge_has_car_ports/delete', { data }); + Delete( + data: ApiTypes.HouseCharge.HouseChargeHasCarPorts.Delete, + ): Promise { + return request( + 'company/house_charge/house_charge_has_car_ports/delete', + { data }, + ); }, }, HouseChargeHasHouses: { - List(data: ApiTypes.HouseCharge.HouseChargeHasHouses.List): Promise { - return request('company/house_charge/house_charge_has_houses/list', { data }); + List( + data: ApiTypes.HouseCharge.HouseChargeHasHouses.List, + ): Promise { + return request('company/house_charge/house_charge_has_houses/list', { + data, + }); }, - Store(data: ApiTypes.HouseCharge.HouseChargeHasHouses.Store): Promise { - return request('company/house_charge/house_charge_has_houses/store', { data }); + Store( + data: ApiTypes.HouseCharge.HouseChargeHasHouses.Store, + ): Promise { + return request('company/house_charge/house_charge_has_houses/store', { + data, + }); }, - GetChargeStandardHouseIds(data: ApiTypes.HouseCharge.HouseChargeHasHouses.GetChargeStandardHouseIds): Promise { - return request('company/house_charge/house_charge_has_houses/get_charge_standard_house_ids', { data }); + GetChargeStandardHouseIds( + data: ApiTypes.HouseCharge.HouseChargeHasHouses.GetChargeStandardHouseIds, + ): Promise { + return request( + 'company/house_charge/house_charge_has_houses/get_charge_standard_house_ids', + { data }, + ); }, - Show(data: ApiTypes.HouseCharge.HouseChargeHasHouses.Show): Promise { - return request('company/house_charge/house_charge_has_houses/show', { data }); + Show( + data: ApiTypes.HouseCharge.HouseChargeHasHouses.Show, + ): Promise { + return request('company/house_charge/house_charge_has_houses/show', { + data, + }); }, - Delete(data: ApiTypes.HouseCharge.HouseChargeHasHouses.Delete): Promise { - return request('company/house_charge/house_charge_has_houses/delete', { data }); + Delete( + data: ApiTypes.HouseCharge.HouseChargeHasHouses.Delete, + ): Promise { + return request('company/house_charge/house_charge_has_houses/delete', { + data, + }); }, }, HouseChargeStandards: { - List(data?: ApiTypes.HouseCharge.HouseChargeStandards.List): Promise { - return request('company/house_charge/house_charge_standards/list', { data }); + List( + data?: ApiTypes.HouseCharge.HouseChargeStandards.List, + ): Promise { + return request('company/house_charge/house_charge_standards/list', { + data, + }); }, - Store(data: ApiTypes.HouseCharge.HouseChargeStandards.Store): Promise { - return request('company/house_charge/house_charge_standards/store', { data }); + Store( + data: ApiTypes.HouseCharge.HouseChargeStandards.Store, + ): Promise { + return request('company/house_charge/house_charge_standards/store', { + data, + }); }, - Update(data: ApiTypes.HouseCharge.HouseChargeStandards.Update): Promise { - return request('company/house_charge/house_charge_standards/update', { data }); + Update( + data: ApiTypes.HouseCharge.HouseChargeStandards.Update, + ): Promise { + return request('company/house_charge/house_charge_standards/update', { + data, + }); }, - Show(data: ApiTypes.HouseCharge.HouseChargeStandards.Show): Promise { - return request('company/house_charge/house_charge_standards/show', { data }); + Show( + data: ApiTypes.HouseCharge.HouseChargeStandards.Show, + ): Promise { + return request('company/house_charge/house_charge_standards/show', { + data, + }); }, - Delete(data: ApiTypes.HouseCharge.HouseChargeStandards.Delete): Promise { - return request('company/house_charge/house_charge_standards/delete', { data }); + Delete( + data: ApiTypes.HouseCharge.HouseChargeStandards.Delete, + ): Promise { + return request('company/house_charge/house_charge_standards/delete', { + data, + }); }, - Select(data?: ApiTypes.HouseCharge.HouseChargeStandards.Select): Promise { - return request('company/house_charge/house_charge_standards/select', { data }); + Select( + data?: ApiTypes.HouseCharge.HouseChargeStandards.Select, + ): Promise { + return request('company/house_charge/house_charge_standards/select', { + data, + }); }, }, HouseChargeTaskDetails: { - List(data?: ApiTypes.HouseCharge.HouseChargeTaskDetails.List): Promise { - return request('company/house_charge/house_charge_task_details/list', { data }); + List( + data?: ApiTypes.HouseCharge.HouseChargeTaskDetails.List, + ): Promise { + return request('company/house_charge/house_charge_task_details/list', { + data, + }); }, - Show(data: ApiTypes.HouseCharge.HouseChargeTaskDetails.Show): Promise { - return request('company/house_charge/house_charge_task_details/show', { data }); + Show( + data: ApiTypes.HouseCharge.HouseChargeTaskDetails.Show, + ): Promise { + return request('company/house_charge/house_charge_task_details/show', { + data, + }); }, - Delete(data: ApiTypes.HouseCharge.HouseChargeTaskDetails.Delete): Promise { - return request('company/house_charge/house_charge_task_details/delete', { data }); + Delete( + data: ApiTypes.HouseCharge.HouseChargeTaskDetails.Delete, + ): Promise { + return request( + 'company/house_charge/house_charge_task_details/delete', + { data }, + ); }, - CreateHouseBill(data: ApiTypes.HouseCharge.HouseChargeTaskDetails.CreateHouseBill): Promise { - return request('company/house_charge/house_charge_task_details/create_house_bill', { data }); + CreateHouseBill( + data: ApiTypes.HouseCharge.HouseChargeTaskDetails.CreateHouseBill, + ): Promise { + return request( + 'company/house_charge/house_charge_task_details/create_house_bill', + { data }, + ); }, }, HouseChargeTasks: { - List(data?: ApiTypes.HouseCharge.HouseChargeTasks.List): Promise { - return request('company/house_charge/house_charge_tasks/list', { data }); + List( + data?: ApiTypes.HouseCharge.HouseChargeTasks.List, + ): Promise { + return request('company/house_charge/house_charge_tasks/list', { + data, + }); }, - Store(data: ApiTypes.HouseCharge.HouseChargeTasks.Store): Promise { - return request('company/house_charge/house_charge_tasks/store', { data }); + Store( + data: ApiTypes.HouseCharge.HouseChargeTasks.Store, + ): Promise { + return request('company/house_charge/house_charge_tasks/store', { + data, + }); }, - Show(data: ApiTypes.HouseCharge.HouseChargeTasks.Show): Promise { - return request('company/house_charge/house_charge_tasks/show', { data }); + Show( + data: ApiTypes.HouseCharge.HouseChargeTasks.Show, + ): Promise { + return request('company/house_charge/house_charge_tasks/show', { + data, + }); }, - Delete(data: ApiTypes.HouseCharge.HouseChargeTasks.Delete): Promise { - return request('company/house_charge/house_charge_tasks/delete', { data }); + Delete( + data: ApiTypes.HouseCharge.HouseChargeTasks.Delete, + ): Promise { + return request('company/house_charge/house_charge_tasks/delete', { + data, + }); }, - ExecuteTask(data: ApiTypes.HouseCharge.HouseChargeTasks.ExecuteTask): Promise { - return request('company/house_charge/house_charge_tasks/execute_task', { data }); + ExecuteTask( + data: ApiTypes.HouseCharge.HouseChargeTasks.ExecuteTask, + ): Promise { + return request('company/house_charge/house_charge_tasks/execute_task', { + data, + }); }, }, }, HouseOrder: { HouseOrderPayments: { - List(data?: ApiTypes.HouseOrder.HouseOrderPayments.List): Promise { - return request('company/house_order/house_order_payments/list', { data }); + List( + data?: ApiTypes.HouseOrder.HouseOrderPayments.List, + ): Promise { + return request('company/house_order/house_order_payments/list', { + data, + }); }, - Show(data: ApiTypes.HouseOrder.HouseOrderPayments.Show): Promise { - return request('company/house_order/house_order_payments/show', { data }); + Show( + data: ApiTypes.HouseOrder.HouseOrderPayments.Show, + ): Promise { + return request('company/house_order/house_order_payments/show', { + data, + }); }, - Delete(data: ApiTypes.HouseOrder.HouseOrderPayments.Delete): Promise { - return request('company/house_order/house_order_payments/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HouseOrderPayments.Delete, + ): Promise { + return request('company/house_order/house_order_payments/delete', { + data, + }); }, }, HouseOrderRefunds: { - List(data?: ApiTypes.HouseOrder.HouseOrderRefunds.List): Promise { - return request('company/house_order/house_order_refunds/list', { data }); + List( + data?: ApiTypes.HouseOrder.HouseOrderRefunds.List, + ): Promise { + return request('company/house_order/house_order_refunds/list', { + data, + }); }, - Store(data: ApiTypes.HouseOrder.HouseOrderRefunds.Store): Promise { - return request('company/house_order/house_order_refunds/store', { data }); + Store( + data: ApiTypes.HouseOrder.HouseOrderRefunds.Store, + ): Promise { + return request('company/house_order/house_order_refunds/store', { + data, + }); }, - Update(data: ApiTypes.HouseOrder.HouseOrderRefunds.Update): Promise { - return request('company/house_order/house_order_refunds/update', { data }); + Update( + data: ApiTypes.HouseOrder.HouseOrderRefunds.Update, + ): Promise { + return request('company/house_order/house_order_refunds/update', { + data, + }); }, - Show(data: ApiTypes.HouseOrder.HouseOrderRefunds.Show): Promise { - return request('company/house_order/house_order_refunds/show', { data }); + Show( + data: ApiTypes.HouseOrder.HouseOrderRefunds.Show, + ): Promise { + return request('company/house_order/house_order_refunds/show', { + data, + }); }, - Audit(data: ApiTypes.HouseOrder.HouseOrderRefunds.Audit): Promise { - return request('company/house_order/house_order_refunds/audit', { data }); + Audit( + data: ApiTypes.HouseOrder.HouseOrderRefunds.Audit, + ): Promise { + return request('company/house_order/house_order_refunds/audit', { + data, + }); }, - Delete(data: ApiTypes.HouseOrder.HouseOrderRefunds.Delete): Promise { - return request('company/house_order/house_order_refunds/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HouseOrderRefunds.Delete, + ): Promise { + return request('company/house_order/house_order_refunds/delete', { + data, + }); }, }, HouseOrders: { - List(data?: ApiTypes.HouseOrder.HouseOrders.List): Promise { + List( + data?: ApiTypes.HouseOrder.HouseOrders.List, + ): Promise { return request('company/house_order/house_orders/list', { data }); }, - Store(data: ApiTypes.HouseOrder.HouseOrders.Store): Promise { + Store( + data: ApiTypes.HouseOrder.HouseOrders.Store, + ): Promise { return request('company/house_order/house_orders/store', { data }); }, - Update(data: ApiTypes.HouseOrder.HouseOrders.Update): Promise { + Update( + data: ApiTypes.HouseOrder.HouseOrders.Update, + ): Promise { return request('company/house_order/house_orders/update', { data }); }, - Audit(data: ApiTypes.HouseOrder.HouseOrders.Audit): Promise { + Audit( + data: ApiTypes.HouseOrder.HouseOrders.Audit, + ): Promise { return request('company/house_order/house_orders/audit', { data }); }, - Show(data: ApiTypes.HouseOrder.HouseOrders.Show): Promise { + Show( + data: ApiTypes.HouseOrder.HouseOrders.Show, + ): Promise { return request('company/house_order/house_orders/show', { data }); }, - Delete(data: ApiTypes.HouseOrder.HouseOrders.Delete): Promise { + Delete( + data: ApiTypes.HouseOrder.HouseOrders.Delete, + ): Promise { return request('company/house_order/house_orders/delete', { data }); }, - Export(data: ApiTypes.HouseOrder.HouseOrders.Export): Promise { - return request('company/house_order/house_orders/export', { responseType: 'blob',data }); + Export( + data: ApiTypes.HouseOrder.HouseOrders.Export, + ): Promise { + return request('company/house_order/house_orders/export', { + responseType: 'blob', + data, + }); }, - UpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.UpdateSerialNumber): Promise { - return request('company/house_order/house_orders/update_serial_number', { data }); + UpdateSerialNumber( + data: ApiTypes.HouseOrder.HouseOrders.UpdateSerialNumber, + ): Promise { + return request( + 'company/house_order/house_orders/update_serial_number', + { data }, + ); }, - BatchUpdateSerialNumber(data: ApiTypes.HouseOrder.HouseOrders.BatchUpdateSerialNumber): Promise { - return request('company/house_order/house_orders/batch_update_serial_number', { data }); + BatchUpdateSerialNumber( + data: ApiTypes.HouseOrder.HouseOrders.BatchUpdateSerialNumber, + ): Promise { + return request( + 'company/house_order/house_orders/batch_update_serial_number', + { data }, + ); }, - GetPayCode(data: ApiTypes.HouseOrder.HouseOrders.GetPayCode): Promise { - return request('company/house_order/house_orders/get_pay_code', { data }); + GetPayCode( + data: ApiTypes.HouseOrder.HouseOrders.GetPayCode, + ): Promise { + return request('company/house_order/house_orders/get_pay_code', { + data, + }); }, }, HousePrepaymentLogs: { - List(data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List): Promise { - return request('company/house_order/house_prepayment_logs/list', { data }); + List( + data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List, + ): Promise { + return request('company/house_order/house_prepayment_logs/list', { + data, + }); }, - Deduct(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Deduct): Promise { - return request('company/house_order/house_prepayment_logs/deduct', { data }); + Deduct( + data: ApiTypes.HouseOrder.HousePrepaymentLogs.Deduct, + ): Promise { + return request('company/house_order/house_prepayment_logs/deduct', { + data, + }); }, - Show(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Show): Promise { - return request('company/house_order/house_prepayment_logs/show', { data }); + Show( + data: ApiTypes.HouseOrder.HousePrepaymentLogs.Show, + ): Promise { + return request('company/house_order/house_prepayment_logs/show', { + data, + }); }, - Delete(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Delete): Promise { - return request('company/house_order/house_prepayment_logs/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HousePrepaymentLogs.Delete, + ): Promise { + return request('company/house_order/house_prepayment_logs/delete', { + data, + }); }, }, HousePrepaymentPayments: { - List(data?: ApiTypes.HouseOrder.HousePrepaymentPayments.List): Promise { - return request('company/house_order/house_prepayment_payments/list', { data }); + List( + data?: ApiTypes.HouseOrder.HousePrepaymentPayments.List, + ): Promise { + return request('company/house_order/house_prepayment_payments/list', { + data, + }); }, - Show(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Show): Promise { - return request('company/house_order/house_prepayment_payments/show', { data }); + Show( + data: ApiTypes.HouseOrder.HousePrepaymentPayments.Show, + ): Promise { + return request('company/house_order/house_prepayment_payments/show', { + data, + }); }, - Delete(data: ApiTypes.HouseOrder.HousePrepaymentPayments.Delete): Promise { - return request('company/house_order/house_prepayment_payments/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HousePrepaymentPayments.Delete, + ): Promise { + return request('company/house_order/house_prepayment_payments/delete', { + data, + }); }, }, HousePrepaymentRefunds: { - List(data?: ApiTypes.HouseOrder.HousePrepaymentRefunds.List): Promise { - return request('company/house_order/house_prepayment_refunds/list', { data }); + List( + data?: ApiTypes.HouseOrder.HousePrepaymentRefunds.List, + ): Promise { + return request('company/house_order/house_prepayment_refunds/list', { + data, + }); }, - Store(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Store): Promise { - return request('company/house_order/house_prepayment_refunds/store', { data }); + Store( + data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Store, + ): Promise { + return request('company/house_order/house_prepayment_refunds/store', { + data, + }); }, - Update(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Update): Promise { - return request('company/house_order/house_prepayment_refunds/update', { data }); + Update( + data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Update, + ): Promise { + return request('company/house_order/house_prepayment_refunds/update', { + data, + }); }, - Show(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Show): Promise { - return request('company/house_order/house_prepayment_refunds/show', { data }); + Show( + data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Show, + ): Promise { + return request('company/house_order/house_prepayment_refunds/show', { + data, + }); }, - Audit(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Audit): Promise { - return request('company/house_order/house_prepayment_refunds/audit', { data }); + Audit( + data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Audit, + ): Promise { + return request('company/house_order/house_prepayment_refunds/audit', { + data, + }); }, - Delete(data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Delete): Promise { - return request('company/house_order/house_prepayment_refunds/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HousePrepaymentRefunds.Delete, + ): Promise { + return request('company/house_order/house_prepayment_refunds/delete', { + data, + }); }, }, HousePrepayments: { - List(data?: ApiTypes.HouseOrder.HousePrepayments.List): Promise { + List( + data?: ApiTypes.HouseOrder.HousePrepayments.List, + ): Promise { return request('company/house_order/house_prepayments/list', { data }); }, - Show(data: ApiTypes.HouseOrder.HousePrepayments.Show): Promise { + Show( + data: ApiTypes.HouseOrder.HousePrepayments.Show, + ): Promise { return request('company/house_order/house_prepayments/show', { data }); }, - Delete(data: ApiTypes.HouseOrder.HousePrepayments.Delete): Promise { - return request('company/house_order/house_prepayments/delete', { data }); + Delete( + data: ApiTypes.HouseOrder.HousePrepayments.Delete, + ): Promise { + return request('company/house_order/house_prepayments/delete', { + data, + }); }, }, }, Meter: { HouseMeterHasHouses: { - List(data?: ApiTypes.Meter.HouseMeterHasHouses.List): Promise { + List( + data?: ApiTypes.Meter.HouseMeterHasHouses.List, + ): Promise { return request('company/meter/house_meter_has_houses/list', { data }); }, - StoreOrUpdate(data: ApiTypes.Meter.HouseMeterHasHouses.StoreOrUpdate): Promise { - return request('company/meter/house_meter_has_houses/store_or_update', { data }); + StoreOrUpdate( + data: ApiTypes.Meter.HouseMeterHasHouses.StoreOrUpdate, + ): Promise { + return request('company/meter/house_meter_has_houses/store_or_update', { + data, + }); }, - Show(data: ApiTypes.Meter.HouseMeterHasHouses.Show): Promise { + Show( + data: ApiTypes.Meter.HouseMeterHasHouses.Show, + ): Promise { return request('company/meter/house_meter_has_houses/show', { data }); }, - Delete(data: ApiTypes.Meter.HouseMeterHasHouses.Delete): Promise { + Delete( + data: ApiTypes.Meter.HouseMeterHasHouses.Delete, + ): Promise { return request('company/meter/house_meter_has_houses/delete', { data }); }, }, HouseMeterReadings: { - List(data: ApiTypes.Meter.HouseMeterReadings.List): Promise { + List( + data: ApiTypes.Meter.HouseMeterReadings.List, + ): Promise { return request('company/meter/house_meter_readings/list', { data }); }, - Store(data: ApiTypes.Meter.HouseMeterReadings.Store): Promise { + Store( + data: ApiTypes.Meter.HouseMeterReadings.Store, + ): Promise { return request('company/meter/house_meter_readings/store', { data }); }, - Update(data: ApiTypes.Meter.HouseMeterReadings.Update): Promise { + Update( + data: ApiTypes.Meter.HouseMeterReadings.Update, + ): Promise { return request('company/meter/house_meter_readings/update', { data }); }, - Show(data: ApiTypes.Meter.HouseMeterReadings.Show): Promise { + Show( + data: ApiTypes.Meter.HouseMeterReadings.Show, + ): Promise { return request('company/meter/house_meter_readings/show', { data }); }, - Delete(data: ApiTypes.Meter.HouseMeterReadings.Delete): Promise { + Delete( + data: ApiTypes.Meter.HouseMeterReadings.Delete, + ): Promise { return request('company/meter/house_meter_readings/delete', { data }); }, }, HouseMeterTaskDetails: { - List(data?: ApiTypes.Meter.HouseMeterTaskDetails.List): Promise { + List( + data?: ApiTypes.Meter.HouseMeterTaskDetails.List, + ): Promise { return request('company/meter/house_meter_task_details/list', { data }); }, - Show(data: ApiTypes.Meter.HouseMeterTaskDetails.Show): Promise { + Show( + data: ApiTypes.Meter.HouseMeterTaskDetails.Show, + ): Promise { return request('company/meter/house_meter_task_details/show', { data }); }, - Delete(data: ApiTypes.Meter.HouseMeterTaskDetails.Delete): Promise { - return request('company/meter/house_meter_task_details/delete', { data }); + Delete( + data: ApiTypes.Meter.HouseMeterTaskDetails.Delete, + ): Promise { + return request('company/meter/house_meter_task_details/delete', { + data, + }); }, - CreateMeterBill(data: ApiTypes.Meter.HouseMeterTaskDetails.CreateMeterBill): Promise { - return request('company/meter/house_meter_task_details/create_meter_bill', { data }); + CreateMeterBill( + data: ApiTypes.Meter.HouseMeterTaskDetails.CreateMeterBill, + ): Promise { + return request( + 'company/meter/house_meter_task_details/create_meter_bill', + { data }, + ); }, }, HouseMeterTasks: { - List(data?: ApiTypes.Meter.HouseMeterTasks.List): Promise { + List( + data?: ApiTypes.Meter.HouseMeterTasks.List, + ): Promise { return request('company/meter/house_meter_tasks/list', { data }); }, - Store(data: ApiTypes.Meter.HouseMeterTasks.Store): Promise { + Store( + data: ApiTypes.Meter.HouseMeterTasks.Store, + ): Promise { return request('company/meter/house_meter_tasks/store', { data }); }, Show(data: ApiTypes.Meter.HouseMeterTasks.Show): Promise { return request('company/meter/house_meter_tasks/show', { data }); }, - Delete(data: ApiTypes.Meter.HouseMeterTasks.Delete): Promise { + Delete( + data: ApiTypes.Meter.HouseMeterTasks.Delete, + ): Promise { return request('company/meter/house_meter_tasks/delete', { data }); }, - ExecuteMeterTasks(data: ApiTypes.Meter.HouseMeterTasks.ExecuteMeterTasks): Promise { - return request('company/meter/house_meter_tasks/execute_meter_tasks', { data }); + ExecuteMeterTasks( + data: ApiTypes.Meter.HouseMeterTasks.ExecuteMeterTasks, + ): Promise { + return request('company/meter/house_meter_tasks/execute_meter_tasks', { + data, + }); }, }, HouseMeters: { @@ -807,23 +1395,43 @@ export const Apis = { }, Msg: { MsgPropertyAnnouncements: { - List(data?: ApiTypes.Msg.MsgPropertyAnnouncements.List): Promise { + List( + data?: ApiTypes.Msg.MsgPropertyAnnouncements.List, + ): Promise { return request('company/msg/msg_property_announcements/list', { data }); }, - Store(data: ApiTypes.Msg.MsgPropertyAnnouncements.Store): Promise { - return request('company/msg/msg_property_announcements/store', { data }); + Store( + data: ApiTypes.Msg.MsgPropertyAnnouncements.Store, + ): Promise { + return request('company/msg/msg_property_announcements/store', { + data, + }); }, - Update(data: ApiTypes.Msg.MsgPropertyAnnouncements.Update): Promise { - return request('company/msg/msg_property_announcements/update', { data }); + Update( + data: ApiTypes.Msg.MsgPropertyAnnouncements.Update, + ): Promise { + return request('company/msg/msg_property_announcements/update', { + data, + }); }, - Show(data: ApiTypes.Msg.MsgPropertyAnnouncements.Show): Promise { + Show( + data: ApiTypes.Msg.MsgPropertyAnnouncements.Show, + ): Promise { return request('company/msg/msg_property_announcements/show', { data }); }, - IsPublish(data: ApiTypes.Msg.MsgPropertyAnnouncements.IsPublish): Promise { - return request('company/msg/msg_property_announcements/is_publish', { data }); + IsPublish( + data: ApiTypes.Msg.MsgPropertyAnnouncements.IsPublish, + ): Promise { + return request('company/msg/msg_property_announcements/is_publish', { + data, + }); }, - Delete(data: ApiTypes.Msg.MsgPropertyAnnouncements.Delete): Promise { - return request('company/msg/msg_property_announcements/delete', { data }); + Delete( + data: ApiTypes.Msg.MsgPropertyAnnouncements.Delete, + ): Promise { + return request('company/msg/msg_property_announcements/delete', { + data, + }); }, }, }, @@ -844,10 +1452,14 @@ export const Apis = { Select(): Promise { return request('company/permission/roles/select', {}); }, - GetPermissions(data: ApiTypes.Permission.Roles.GetPermissions): Promise { + GetPermissions( + data: ApiTypes.Permission.Roles.GetPermissions, + ): Promise { return request('company/permission/roles/get_permissions', { data }); }, - SetPermissions(data: ApiTypes.Permission.Roles.SetPermissions): Promise { + SetPermissions( + data: ApiTypes.Permission.Roles.SetPermissions, + ): Promise { return request('company/permission/roles/set_permissions', { data }); }, PermissionTree(): Promise { @@ -857,52 +1469,88 @@ export const Apis = { }, WorkOrder: { HouseWorkLogs: { - List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise { + List( + data: ApiTypes.WorkOrder.HouseWorkLogs.List, + ): Promise { return request('company/work_order/house_work_logs/list', { data }); }, - Store(data: ApiTypes.WorkOrder.HouseWorkLogs.Store): Promise { + Store( + data: ApiTypes.WorkOrder.HouseWorkLogs.Store, + ): Promise { return request('company/work_order/house_work_logs/store', { data }); }, - Show(data: ApiTypes.WorkOrder.HouseWorkLogs.Show): Promise { + Show( + data: ApiTypes.WorkOrder.HouseWorkLogs.Show, + ): Promise { return request('company/work_order/house_work_logs/show', { data }); }, - Delete(data: ApiTypes.WorkOrder.HouseWorkLogs.Delete): Promise { + Delete( + data: ApiTypes.WorkOrder.HouseWorkLogs.Delete, + ): Promise { return request('company/work_order/house_work_logs/delete', { data }); }, }, HouseWorkOrderPayments: { - List(data?: ApiTypes.WorkOrder.HouseWorkOrderPayments.List): Promise { - return request('company/work_order/house_work_order_payments/list', { data }); + List( + data?: ApiTypes.WorkOrder.HouseWorkOrderPayments.List, + ): Promise { + return request('company/work_order/house_work_order_payments/list', { + data, + }); }, - Show(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Show): Promise { - return request('company/work_order/house_work_order_payments/show', { data }); + Show( + data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Show, + ): Promise { + return request('company/work_order/house_work_order_payments/show', { + data, + }); }, - Delete(data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Delete): Promise { - return request('company/work_order/house_work_order_payments/delete', { data }); + Delete( + data: ApiTypes.WorkOrder.HouseWorkOrderPayments.Delete, + ): Promise { + return request('company/work_order/house_work_order_payments/delete', { + data, + }); }, }, HouseWorkOrders: { - List(data?: ApiTypes.WorkOrder.HouseWorkOrders.List): Promise { + List( + data?: ApiTypes.WorkOrder.HouseWorkOrders.List, + ): Promise { return request('company/work_order/house_work_orders/list', { data }); }, - Store(data: ApiTypes.WorkOrder.HouseWorkOrders.Store): Promise { + Store( + data: ApiTypes.WorkOrder.HouseWorkOrders.Store, + ): Promise { return request('company/work_order/house_work_orders/store', { data }); }, - Update(data: ApiTypes.WorkOrder.HouseWorkOrders.Update): Promise { + Update( + data: ApiTypes.WorkOrder.HouseWorkOrders.Update, + ): Promise { return request('company/work_order/house_work_orders/update', { data }); }, - Show(data: ApiTypes.WorkOrder.HouseWorkOrders.Show): Promise { + Show( + data: ApiTypes.WorkOrder.HouseWorkOrders.Show, + ): Promise { return request('company/work_order/house_work_orders/show', { data }); }, - Assign(data: ApiTypes.WorkOrder.HouseWorkOrders.Assign): Promise { + Assign( + data: ApiTypes.WorkOrder.HouseWorkOrders.Assign, + ): Promise { return request('company/work_order/house_work_orders/assign', { data }); }, - Visited(data: ApiTypes.WorkOrder.HouseWorkOrders.Visited): Promise { - return request('company/work_order/house_work_orders/visited', { data }); + Visited( + data: ApiTypes.WorkOrder.HouseWorkOrders.Visited, + ): Promise { + return request('company/work_order/house_work_orders/visited', { + data, + }); }, - Delete(data: ApiTypes.WorkOrder.HouseWorkOrders.Delete): Promise { + Delete( + data: ApiTypes.WorkOrder.HouseWorkOrders.Delete, + ): Promise { return request('company/work_order/house_work_orders/delete', { data }); }, }, }, -} \ No newline at end of file +}; diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index 00eb7c7..c24a17b 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -1,1728 +1,762 @@ // ActivitiesPublishStatusEnum -export const ActivitiesPublishStatusEnum = { - Unpublished: { text: '未发布', color: '#9e9e9e', value: 'Unpublished' }, - Published: { text: '已发布', color: '#00c853', value: 'Published' }, - Unlisted: { text: '已下架', color: '#d32f2f', value: 'Unlisted' }, +export const ActivitiesPublishStatusEnum= { + 'Unpublished': {"text":"未发布","color":"#9e9e9e","value":"Unpublished"}, + 'Published': {"text":"已发布","color":"#00c853","value":"Published"}, + 'Unlisted': {"text":"已下架","color":"#d32f2f","value":"Unlisted"}, }; // ActivitiesPublishTypeEnum -export const ActivitiesPublishTypeEnum = { - Manual: { text: '手动', color: '#4caf50', value: 'Manual' }, - Schedule: { text: '定时', color: '#2196f3', value: 'Schedule' }, +export const ActivitiesPublishTypeEnum= { + 'Manual': {"text":"手动","color":"#4caf50","value":"Manual"}, + 'Schedule': {"text":"定时","color":"#2196f3","value":"Schedule"}, }; // ActivitiesStatusEnum -export const ActivitiesStatusEnum = { - NotStarted: { text: '未开始', color: '#9e9e9e', value: 'NotStarted' }, - InProgress: { text: '进行中', color: '#00c853', value: 'InProgress' }, - Finished: { text: '已结束', color: '#d32f2f', value: 'Finished' }, +export const ActivitiesStatusEnum= { + 'NotStarted': {"text":"未开始","color":"#9e9e9e","value":"NotStarted"}, + 'InProgress': {"text":"进行中","color":"#00c853","value":"InProgress"}, + 'Finished': {"text":"已结束","color":"#d32f2f","value":"Finished"}, }; // ActivityEnrollsStatusEnum -export const ActivityEnrollsStatusEnum = { - PendingReview: { text: '待审核', color: '#2196f3', value: 'PendingReview' }, - Success: { text: '成功', color: '#00c853', value: 'Success' }, - Failed: { text: '失败', color: '#d32f2f', value: 'Failed' }, - Cancelled: { text: '取消', color: '#ff9800', value: 'Cancelled' }, +export const ActivityEnrollsStatusEnum= { + 'PendingReview': {"text":"待审核","color":"#2196f3","value":"PendingReview"}, + 'Success': {"text":"成功","color":"#00c853","value":"Success"}, + 'Failed': {"text":"失败","color":"#d32f2f","value":"Failed"}, + 'Cancelled': {"text":"取消","color":"#ff9800","value":"Cancelled"}, }; -// ApprovalInstancesStatusEnum -export const ApprovalInstancesStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已拒绝', color: '#f44336', value: 'Rejected' }, - Cancelled: { text: '已取消', color: '#9e9e9e', value: 'Cancelled' }, +// 车位产权类型 +export const AssetCarPortsPropertyTypeEnum= { + 'Ownership': {"text":"产权车位","color":"#1e90ff","value":"Ownership"}, + 'CivilDefense': {"text":"人防车位","color":"#32cd32","value":"CivilDefense"}, + 'Public': {"text":"公共车位","color":"#ff8c00","value":"Public"}, + 'Temporary': {"text":"临时车位","color":"#ba55d3","value":"Temporary"}, + 'Other': {"text":"其他","color":"#a9a9a9","value":"Other"}, }; -// ApprovalRecordsStatusEnum -export const ApprovalRecordsStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Approved: { text: '同意', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '拒绝', color: '#f44336', value: 'Rejected' }, - Transferred: { text: '转交', color: '#9c27b0', value: 'Transferred' }, +// 车位状态 +export const AssetCarPortsStatusEnum= { + 'Unsold': {"text":"未售","color":"#6b7280","value":"Unsold"}, + 'Sold': {"text":"已售","color":"#10b981","value":"Sold"}, + 'Rented': {"text":"已租","color":"#3b82f6","value":"Rented"}, + 'Unrented': {"text":"未租","color":"#f59e0b","value":"Unrented"}, + 'Other': {"text":"其他","color":"#9ca3af","value":"Other"}, }; -// ApprovalTemplateNodesApproveTypeEnum -export const ApprovalTemplateNodesApproveTypeEnum = { - And: { text: '会签', color: '#4caf50', value: 'And' }, - Or: { text: '或签', color: '#ff9800', value: 'Or' }, -}; - -// ApprovalTemplateNodesNodeTypeEnum -export const ApprovalTemplateNodesNodeTypeEnum = { - Approver: { text: '审批人', color: '#2196f3', value: 'Approver' }, - CC: { text: '抄送人', color: '#9e9e9e', value: 'CC' }, -}; - -// ApprovalTemplatesTypeEnum -export const ApprovalTemplatesTypeEnum = { - Contract: { text: '合同', color: '#2196f3', value: 'Contract' }, - Finance: { text: '财务', color: '#4caf50', value: 'Finance' }, - Refund: { text: '退款', color: '#f44336', value: 'Refund' }, -}; - -// AssetCarPortsPropertyTypeEnum -export const AssetCarPortsPropertyTypeEnum = { - Ownership: { text: '产权车位', color: '#1e90ff', value: 'Ownership' }, - CivilDefense: { text: '人防车位', color: '#32cd32', value: 'CivilDefense' }, - Public: { text: '公共车位', color: '#ff8c00', value: 'Public' }, - Temporary: { text: '临时车位', color: '#ba55d3', value: 'Temporary' }, - Other: { text: '其他', color: '#a9a9a9', value: 'Other' }, -}; - -// AssetCarPortsStatusEnum -export const AssetCarPortsStatusEnum = { - Unsold: { text: '未售', color: '#6b7280', value: 'Unsold' }, - Sold: { text: '已售', color: '#10b981', value: 'Sold' }, - Rented: { text: '已租', color: '#3b82f6', value: 'Rented' }, - Unrented: { text: '未租', color: '#f59e0b', value: 'Unrented' }, - Other: { text: '其他', color: '#9ca3af', value: 'Other' }, -}; - -// AssetCarPortsTypeEnum -export const AssetCarPortsTypeEnum = { - Standard: { text: '标准车位', color: '#1e90ff', value: 'Standard' }, - Mini: { text: '微型车位', color: '#32cd32', value: 'Mini' }, - Accessible: { text: '无障碍车位', color: '#ff8c00', value: 'Accessible' }, - Tandem: { text: '子母车位', color: '#ba55d3', value: 'Tandem' }, - Mechanical: { text: '机械车位', color: '#20b2aa', value: 'Mechanical' }, - Other: { text: '其他', color: '#a9a9a9', value: 'Other' }, +// 车位类型 +export const AssetCarPortsTypeEnum= { + 'Standard': {"text":"标准车位","color":"#1e90ff","value":"Standard"}, + 'Mini': {"text":"微型车位","color":"#32cd32","value":"Mini"}, + 'Accessible': {"text":"无障碍车位","color":"#ff8c00","value":"Accessible"}, + 'Tandem': {"text":"子母车位","color":"#ba55d3","value":"Tandem"}, + 'Mechanical': {"text":"机械车位","color":"#20b2aa","value":"Mechanical"}, + 'Other': {"text":"其他","color":"#a9a9a9","value":"Other"}, }; // AssetHousesOrientationEnum -export const AssetHousesOrientationEnum = { - East: { text: '东', color: '#007bff', value: 'East' }, - South: { text: '南', color: '#28a745', value: 'South' }, - West: { text: '西', color: '#ffc107', value: 'West' }, - North: { text: '北', color: '#dc3545', value: 'North' }, - Southeast: { text: '东南', color: '#20c997', value: 'Southeast' }, - Northeast: { text: '东北', color: '#6f42c1', value: 'Northeast' }, - Southwest: { text: '西南', color: '#fd7e14', value: 'Southwest' }, - Northwest: { text: '西北', color: '#17a2b8', value: 'Northwest' }, - EastWest: { text: '东西', color: '#6610f2', value: 'EastWest' }, - SouthNorth: { text: '南北', color: '#e83e8c', value: 'SouthNorth' }, +export const AssetHousesOrientationEnum= { + 'East': {"text":"东","color":"#007bff","value":"East"}, + 'South': {"text":"南","color":"#28a745","value":"South"}, + 'West': {"text":"西","color":"#ffc107","value":"West"}, + 'North': {"text":"北","color":"#dc3545","value":"North"}, + 'Southeast': {"text":"东南","color":"#20c997","value":"Southeast"}, + 'Northeast': {"text":"东北","color":"#6f42c1","value":"Northeast"}, + 'Southwest': {"text":"西南","color":"#fd7e14","value":"Southwest"}, + 'Northwest': {"text":"西北","color":"#17a2b8","value":"Northwest"}, + 'EastWest': {"text":"东西","color":"#6610f2","value":"EastWest"}, + 'SouthNorth': {"text":"南北","color":"#e83e8c","value":"SouthNorth"}, }; // AssetHousesOwnershipTypeEnum -export const AssetHousesOwnershipTypeEnum = { - CommodityHousing: { - text: '商品房', - color: '#007bff', - value: 'CommodityHousing', - }, - FundedHousing: { text: '集资房', color: '#28a745', value: 'FundedHousing' }, - MilitaryHousing: { - text: '军产房', - color: '#17a2b8', - value: 'MilitaryHousing', - }, - AffordableHousing: { - text: '保障房', - color: '#ffc107', - value: 'AffordableHousing', - }, - RuralHousing: { text: '农民房', color: '#6f42c1', value: 'RuralHousing' }, - CommercialOffice: { - text: '商业写字楼', - color: '#fd7e14', - value: 'CommercialOffice', - }, - CommercialComplex: { - text: '商业综合体', - color: '#dc3545', - value: 'CommercialComplex', - }, - ResettlementHousing: { - text: '回迁房', - color: '#20c997', - value: 'ResettlementHousing', - }, +export const AssetHousesOwnershipTypeEnum= { + 'CommodityHousing': {"text":"商品房","color":"#007bff","value":"CommodityHousing"}, + 'FundedHousing': {"text":"集资房","color":"#28a745","value":"FundedHousing"}, + 'MilitaryHousing': {"text":"军产房","color":"#17a2b8","value":"MilitaryHousing"}, + 'AffordableHousing': {"text":"保障房","color":"#ffc107","value":"AffordableHousing"}, + 'RuralHousing': {"text":"农民房","color":"#6f42c1","value":"RuralHousing"}, + 'CommercialOffice': {"text":"商业写字楼","color":"#fd7e14","value":"CommercialOffice"}, + 'CommercialComplex': {"text":"商业综合体","color":"#dc3545","value":"CommercialComplex"}, + 'ResettlementHousing': {"text":"回迁房","color":"#20c997","value":"ResettlementHousing"}, }; // AssetHousesPropertyOwnershipEnum -export const AssetHousesPropertyOwnershipEnum = { - Individual: { text: '个人', color: '#2db7f5', value: 'Individual' }, - Enterprise: { text: '企业', color: '#87d068', value: 'Enterprise' }, - Developer: { text: '开发商', color: '#fa8c16', value: 'Developer' }, - Government: { text: '政府', color: '#f5222d', value: 'Government' }, +export const AssetHousesPropertyOwnershipEnum= { + 'Individual': {"text":"个人","color":"#2db7f5","value":"Individual"}, + 'Enterprise': {"text":"企业","color":"#87d068","value":"Enterprise"}, + 'Developer': {"text":"开发商","color":"#fa8c16","value":"Developer"}, + 'Government': {"text":"政府","color":"#f5222d","value":"Government"}, }; // AssetHousesStatusEnum -export const AssetHousesStatusEnum = { - Unsold: { text: '未售', color: '#6c757d', value: 'Unsold' }, - SoldNotDelivered: { - text: '已售未交房', - color: '#ffc107', - value: 'SoldNotDelivered', - }, - SelfOccupied: { text: '自住', color: '#28a745', value: 'SelfOccupied' }, - Rented: { text: '出租', color: '#007bff', value: 'Rented' }, - Vacant: { text: '空置', color: '#dc3545', value: 'Vacant' }, +export const AssetHousesStatusEnum= { + 'Unsold': {"text":"未售","color":"#6c757d","value":"Unsold"}, + 'SoldNotDelivered': {"text":"已售未交房","color":"#ffc107","value":"SoldNotDelivered"}, + 'SelfOccupied': {"text":"自住","color":"#28a745","value":"SelfOccupied"}, + 'Rented': {"text":"出租","color":"#007bff","value":"Rented"}, + 'Vacant': {"text":"空置","color":"#dc3545","value":"Vacant"}, }; // AssetHousesUsageEnum -export const AssetHousesUsageEnum = { - Residence: { text: '住宅', color: '#007bff', value: 'Residence' }, - Apartment: { text: '公寓', color: '#28a745', value: 'Apartment' }, - Villa: { text: '别墅', color: '#17a2b8', value: 'Villa' }, - Shop: { text: '商铺', color: '#ffc107', value: 'Shop' }, - ParkingSpace: { text: '车位', color: '#6c757d', value: 'ParkingSpace' }, - Office: { text: '写字楼', color: '#6610f2', value: 'Office' }, - Clubhouse: { text: '会所', color: '#fd7e14', value: 'Clubhouse' }, - PropertyRoom: { text: '物业用房', color: '#dc3545', value: 'PropertyRoom' }, - CommercialProperty: { - text: '商业用房', - color: '#20c997', - value: 'CommercialProperty', - }, +export const AssetHousesUsageEnum= { + 'Residence': {"text":"住宅","color":"#007bff","value":"Residence"}, + 'Apartment': {"text":"公寓","color":"#28a745","value":"Apartment"}, + 'Villa': {"text":"别墅","color":"#17a2b8","value":"Villa"}, + 'Shop': {"text":"商铺","color":"#ffc107","value":"Shop"}, + 'ParkingSpace': {"text":"车位","color":"#6c757d","value":"ParkingSpace"}, + 'Office': {"text":"写字楼","color":"#6610f2","value":"Office"}, + 'Clubhouse': {"text":"会所","color":"#fd7e14","value":"Clubhouse"}, + 'PropertyRoom': {"text":"物业用房","color":"#dc3545","value":"PropertyRoom"}, }; -// AssetItemDisposalConfirmStatusEnum -export const AssetItemDisposalConfirmStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已驳回', color: '#f44336', value: 'Rejected' }, +// 车场收费类型 +export const AssetParkingPlacesChargeTypeEnum= { + 'Free': {"text":"免费","color":"#32cd32","value":"Free"}, + 'TemporaryCharge': {"text":"临停收费","color":"#1e90ff","value":"TemporaryCharge"}, + 'MonthlyCharge': {"text":"月卡收费","color":"#ff8c00","value":"MonthlyCharge"}, + 'MixedCharge': {"text":"混合收费","color":"#ba55d3","value":"MixedCharge"}, }; -// AssetItemDisposalResultEnum -export const AssetItemDisposalResultEnum = { - Disposing: { text: '处置中', color: '#ff9800', value: 'Disposing' }, - Disposed: { text: '已处置', color: '#4caf50', value: 'Disposed' }, +// 车场位置类型 +export const AssetParkingPlacesLocationTypeEnum= { + 'GroundParking': {"text":"地面车场","color":"#ffa500","value":"GroundParking"}, + 'UndergroundParking': {"text":"地下车场","color":"#4682b4","value":"UndergroundParking"}, }; -// AssetItemInventoryDetailResultEnum -export const AssetItemInventoryDetailResultEnum = { - Normal: { text: '正常', color: '#4caf50', value: 'Normal' }, - Loss: { text: '盘亏', color: '#f44336', value: 'Loss' }, +// 车场产权类型 +export const AssetParkingPlacesPropertyTypeEnum= { + 'DispersedOwnership': {"text":"分散产权","color":"#ff7f50","value":"DispersedOwnership"}, + 'SingleOwnership': {"text":"单一产权","color":"#1e90ff","value":"SingleOwnership"}, + 'SharedOwnership': {"text":"共有产权","color":"#32cd32","value":"SharedOwnership"}, }; -// AssetItemInventoryResultEnum -export const AssetItemInventoryResultEnum = { - Normal: { text: '正常', color: '#4caf50', value: 'Normal' }, - Loss: { text: '盘亏', color: '#f44336', value: 'Loss' }, - Surplus: { text: '盘盈', color: '#2196f3', value: 'Surplus' }, -}; - -// AssetItemInventoryStatusEnum -export const AssetItemInventoryStatusEnum = { - Pending: { text: '待处理', color: '#ff9800', value: 'Pending' }, - Processing: { text: '处理中', color: '#2196f3', value: 'Processing' }, - Completed: { text: '已完成', color: '#4caf50', value: 'Completed' }, - Closed: { text: '已关闭', color: '#607d8b', value: 'Closed' }, -}; - -// AssetItemMaintenanceRuleStatusEnum -export const AssetItemMaintenanceRuleStatusEnum = { - Enabled: { text: '启用', color: '#4caf50', value: 'Enabled' }, - Disabled: { text: '禁用', color: '#f44336', value: 'Disabled' }, -}; - -// AssetItemMaintenanceSourceEnum -export const AssetItemMaintenanceSourceEnum = { - Auto: { text: '自动生成', color: '#2196f3', value: 'Auto' }, - Manual: { text: '手动创建', color: '#ff9800', value: 'Manual' }, -}; - -// AssetItemMaintenanceStatusEnum -export const AssetItemMaintenanceStatusEnum = { - Pending: { text: '待处理', color: '#ff9800', value: 'Pending' }, - Assigned: { text: '待开始', color: '#2196f3', value: 'Assigned' }, - Processing: { text: '处理中', color: '#9c27b0', value: 'Processing' }, - Completed: { text: '已完成', color: '#4caf50', value: 'Completed' }, - Closed: { text: '已关闭', color: '#607d8b', value: 'Closed' }, -}; - -// AssetItemMaintenanceTypeEnum -export const AssetItemMaintenanceTypeEnum = { - Maintenance: { text: '维保', color: '#4caf50', value: 'Maintenance' }, - Repair: { text: '维修', color: '#f44336', value: 'Repair' }, -}; - -// AssetItemMarkingConfirmStatusEnum -export const AssetItemMarkingConfirmStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已驳回', color: '#f44336', value: 'Rejected' }, -}; - -// AssetItemMarkingTypeEnum -export const AssetItemMarkingTypeEnum = { - Damaged: { text: '损毁', color: '#f44336', value: 'Damaged' }, - Lost: { text: '丢失', color: '#9c27b0', value: 'Lost' }, -}; - -// AssetItemReceiveConfirmStatusEnum -export const AssetItemReceiveConfirmStatusEnum = { - Pending: { text: '待确认', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已确认', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已拒绝', color: '#f44336', value: 'Rejected' }, -}; - -// AssetItemReturnConfirmStatusEnum -export const AssetItemReturnConfirmStatusEnum = { - Pending: { text: '待确认', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已确认', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已拒绝', color: '#f44336', value: 'Rejected' }, -}; - -// AssetItemTransferConfirmStatusEnum -export const AssetItemTransferConfirmStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已驳回', color: '#f44336', value: 'Rejected' }, -}; - -// AssetItemsEntryTypeEnum -export const AssetItemsEntryTypeEnum = { - Purchase: { text: '采购入库', color: '#2196f3', value: 'Purchase' }, - Inventory: { text: '盘盈入库', color: '#4caf50', value: 'Inventory' }, - Donation: { text: '捐赠入库', color: '#9c27b0', value: 'Donation' }, - Transfer: { text: '调拨入库', color: '#ff9800', value: 'Transfer' }, -}; - -// AssetItemsManageStatusEnum -export const AssetItemsManageStatusEnum = { - Idle: { text: '闲置', color: '#9e9e9e', value: 'Idle' }, - Storing: { text: '入库中', color: '#2196f3', value: 'Storing' }, - Transferring: { text: '调拨中', color: '#ff9800', value: 'Transferring' }, - StockLoss: { text: '盘亏', color: '#f44336', value: 'StockLoss' }, - Disposing: { text: '处置中', color: '#9c27b0', value: 'Disposing' }, - Disposed: { text: '已处置', color: '#607d8b', value: 'Disposed' }, - Checking: { text: '盘点中', color: '#00bcd4', value: 'Checking' }, - Maintaining: { text: '维护中', color: '#673ab7', value: 'Maintaining' }, - Receiving: { text: '领用中', color: '#4caf50', value: 'Receiving' }, - Received: { text: '已领用', color: '#8bc34a', value: 'Received' }, -}; - -// AssetItemsStatusEnum -export const AssetItemsStatusEnum = { - Good: { text: '良好', color: '#4caf50', value: 'Good' }, - WaitRepair: { text: '待维修', color: '#ff9800', value: 'WaitRepair' }, - Repairing: { text: '维修中', color: '#2196f3', value: 'Repairing' }, - WaitMaintain: { text: '待保养', color: '#9c27b0', value: 'WaitMaintain' }, - Maintaining: { text: '保养中', color: '#673ab7', value: 'Maintaining' }, - Damaged: { text: '损毁', color: '#f44336', value: 'Damaged' }, - Lost: { text: '丢失', color: '#607d8b', value: 'Lost' }, -}; - -// AssetParkingPlacesChargeTypeEnum -export const AssetParkingPlacesChargeTypeEnum = { - Free: { text: '免费', color: '#32cd32', value: 'Free' }, - TemporaryCharge: { - text: '临停收费', - color: '#1e90ff', - value: 'TemporaryCharge', - }, - MonthlyCharge: { text: '月卡收费', color: '#ff8c00', value: 'MonthlyCharge' }, - MixedCharge: { text: '混合收费', color: '#ba55d3', value: 'MixedCharge' }, -}; - -// AssetParkingPlacesLocationTypeEnum -export const AssetParkingPlacesLocationTypeEnum = { - GroundParking: { text: '地面车场', color: '#ffa500', value: 'GroundParking' }, - UndergroundParking: { - text: '地下车场', - color: '#4682b4', - value: 'UndergroundParking', - }, -}; - -// AssetParkingPlacesPropertyTypeEnum -export const AssetParkingPlacesPropertyTypeEnum = { - DispersedOwnership: { - text: '分散产权', - color: '#ff7f50', - value: 'DispersedOwnership', - }, - SingleOwnership: { - text: '单一产权', - color: '#1e90ff', - value: 'SingleOwnership', - }, - SharedOwnership: { - text: '共有产权', - color: '#32cd32', - value: 'SharedOwnership', - }, -}; - -// AssetParkingPlacesTypeEnum -export const AssetParkingPlacesTypeEnum = { - ResidentialSupporting: { - text: '住宅配套车场', - color: '#ff8c00', - value: 'ResidentialSupporting', - }, - Commercial: { text: '商业车场', color: '#1e90ff', value: 'Commercial' }, - Mixed: { text: '混合车场', color: '#32cd32', value: 'Mixed' }, +// 车场类型 +export const AssetParkingPlacesTypeEnum= { + 'ResidentialSupporting': {"text":"住宅配套车场","color":"#ff8c00","value":"ResidentialSupporting"}, + 'Commercial': {"text":"商业车场","color":"#1e90ff","value":"Commercial"}, + 'Mixed': {"text":"混合车场","color":"#32cd32","value":"Mixed"}, }; // AssetProjectsChargeEnum -export const AssetProjectsChargeEnum = { - Contract: { text: '包干制', color: '#007bff', value: 'Contract' }, - Commission: { text: '酬金制', color: '#28a745', value: 'Commission' }, +export const AssetProjectsChargeEnum= { + 'Contract': {"text":"包干制","color":"#007bff","value":"Contract"}, + 'Commission': {"text":"酬金制","color":"#28a745","value":"Commission"}, }; // AssetProjectsEntrustTypeEnum -export const AssetProjectsEntrustTypeEnum = { - DeveloperJointEntrust: { - text: '开发商全委', - color: '#007bff', - value: 'DeveloperJointEntrust', - }, - OwnersFullEntrust: { - text: '业委会全委', - color: '#28a745', - value: 'OwnersFullEntrust', - }, - GovernmentFullEntrust: { - text: '政府类全委', - color: '#ffc107', - value: 'GovernmentFullEntrust', - }, +export const AssetProjectsEntrustTypeEnum= { + 'DeveloperJointEntrust': {"text":"开发商全委","color":"#007bff","value":"DeveloperJointEntrust"}, + 'OwnersFullEntrust': {"text":"业委会全委","color":"#28a745","value":"OwnersFullEntrust"}, + 'GovernmentFullEntrust': {"text":"政府类全委","color":"#ffc107","value":"GovernmentFullEntrust"}, }; // 业权类型 -export const AssetProjectsOwnershipTypeEnum = { - SingleOwnership: { - text: '单业权', - color: '#00cc66', - value: 'SingleOwnership', - }, - MultipleOwnership: { - text: '多业权', - color: '#0099ff', - value: 'MultipleOwnership', - }, +export const AssetProjectsOwnershipTypeEnum= { + 'SingleOwnership': {"text":"单业权","color":"#00cc66","value":"SingleOwnership"}, + 'MultipleOwnership': {"text":"多业权","color":"#0099ff","value":"MultipleOwnership"}, }; // AssetProjectsPropertyTypeEnum -export const AssetProjectsPropertyTypeEnum = { - Residence: { text: '住宅', color: '#ff0000', value: 'Residence' }, - Commercial: { text: '商业', color: '#ff6600', value: 'Commercial' }, - Office: { text: '写字楼', color: '#ffcc00', value: 'Office' }, - IndustrialPark: { text: '产业园', color: '#00cc66', value: 'IndustrialPark' }, - Complex: { text: '综合体', color: '#0099ff', value: 'Complex' }, - Municipal: { text: '市政设施', color: '#6633cc', value: 'Municipal' }, - Venue: { text: '场馆', color: '#9966ff', value: 'Venue' }, - Education: { text: '教育', color: '#339999', value: 'Education' }, - Medical: { text: '医疗', color: '#cc3366', value: 'Medical' }, +export const AssetProjectsPropertyTypeEnum= { + 'Residence': {"text":"住宅","color":"#ff0000","value":"Residence"}, + 'Commercial': {"text":"商业","color":"#ff6600","value":"Commercial"}, + 'Office': {"text":"办公","color":"#ffcc00","value":"Office"}, + 'IndustrialPark': {"text":"产业园","color":"#00cc66","value":"IndustrialPark"}, + 'Complex': {"text":"综合体","color":"#0099ff","value":"Complex"}, + 'Municipal': {"text":"市政设施","color":"#6633cc","value":"Municipal"}, + 'Venue': {"text":"场馆","color":"#9966ff","value":"Venue"}, + 'Education': {"text":"教育","color":"#339999","value":"Education"}, + 'Medical': {"text":"医疗","color":"#cc3366","value":"Medical"}, }; // AssetProjectsStatusEnum -export const AssetProjectsStatusEnum = { - SignedNotDelivered: { - text: '签约未交付', - color: '#6c757d', - value: 'SignedNotDelivered', - }, - RollingDevelopment: { - text: '滚动开发', - color: '#007bff', - value: 'RollingDevelopment', - }, - ManagedAndClosed: { - text: '在管封园', - color: '#ffc107', - value: 'ManagedAndClosed', - }, - Exited: { text: '退出', color: '#dc3545', value: 'Exited' }, +export const AssetProjectsStatusEnum= { + 'SignedNotDelivered': {"text":"签约未交付","color":"#6c757d","value":"SignedNotDelivered"}, + 'RollingDevelopment': {"text":"滚动开发","color":"#007bff","value":"RollingDevelopment"}, + 'ManagedAndClosed': {"text":"在管封园","color":"#ffc107","value":"ManagedAndClosed"}, + 'Exited': {"text":"退出","color":"#dc3545","value":"Exited"}, }; // AssetUnitsBuildingStructureEnum -export const AssetUnitsBuildingStructureEnum = { - SteelConcrete: { text: '钢混', color: '#007bff', value: 'SteelConcrete' }, - SteelStructure: { text: '钢结构', color: '#28a745', value: 'SteelStructure' }, - BrickConcrete: { text: '砖混', color: '#ffc107', value: 'BrickConcrete' }, - BrickWood: { text: '砖木', color: '#dc3545', value: 'BrickWood' }, +export const AssetUnitsBuildingStructureEnum= { + 'SteelConcrete': {"text":"钢混","color":"#007bff","value":"SteelConcrete"}, + 'SteelStructure': {"text":"钢结构","color":"#28a745","value":"SteelStructure"}, + 'BrickConcrete': {"text":"砖混","color":"#ffc107","value":"BrickConcrete"}, + 'BrickWood': {"text":"砖木","color":"#dc3545","value":"BrickWood"}, }; // AssetUnitsBuildingTypeEnum -export const AssetUnitsBuildingTypeEnum = { - SlabAndTower: { text: '板塔结合', color: '#007bff', value: 'SlabAndTower' }, - Slab: { text: '板楼', color: '#28a745', value: 'Slab' }, - Tower: { text: '塔楼', color: '#ffc107', value: 'Tower' }, -}; - -// AttendanceRecordsCheckinTypeEnum -export const AttendanceRecordsCheckinTypeEnum = { - CheckIn: { text: '上班', color: '#1890ff', value: 'CheckIn' }, - CheckOut: { text: '下班', color: '#52c41a', value: 'CheckOut' }, -}; - -// AttendanceRecordsStatusEnum -export const AttendanceRecordsStatusEnum = { - Normal: { text: '正常', color: '#52c41a', value: 'Normal' }, - Late: { text: '迟到', color: '#faad14', value: 'Late' }, - EarlyLeave: { text: '早退', color: '#fa8c16', value: 'EarlyLeave' }, - OutOfRange: { text: '范围外', color: '#ff4d4f', value: 'OutOfRange' }, - Reissue: { text: '补卡', color: '#1890ff', value: 'Reissue' }, -}; - -// AttendanceSchedulesStatusEnum -export const AttendanceSchedulesStatusEnum = { - Pending: { text: '待生效', color: '#faad14', value: 'Pending' }, - Active: { text: '生效中', color: '#52c41a', value: 'Active' }, - Cancelled: { text: '已取消', color: '#ff4d4f', value: 'Cancelled' }, -}; - -// 打卡状态枚举 -export const AttendanceStatusEnum = { - Normal: { text: '正常', color: '#52c41a', value: 'Normal' }, - Late: { text: '迟到', color: '#faad14', value: 'Late' }, - Early: { text: '早退', color: '#faad14', value: 'Early' }, - OutOfRange: { text: '范围外', color: '#ff4d4f', value: 'OutOfRange' }, - MakeUp: { text: '补卡', color: '#722ed1', value: 'MakeUp' }, +export const AssetUnitsBuildingTypeEnum= { + 'SlabAndTower': {"text":"板塔结合","color":"#007bff","value":"SlabAndTower"}, + 'Slab': {"text":"板楼","color":"#28a745","value":"Slab"}, + 'Tower': {"text":"塔楼","color":"#ffc107","value":"Tower"}, }; // BannerSpacesTypeEnum -export const BannerSpacesTypeEnum = { - Popup: { text: '弹窗', color: '#ff0000', value: 'Popup' }, - Banner: { text: '横幅广告', color: '#00ff00', value: 'Banner' }, - FloatingButton: { - text: '悬浮按钮', - color: '#0000ff', - value: 'FloatingButton', - }, +export const BannerSpacesTypeEnum= { + 'Popup': {"text":"弹窗","color":"#ff0000","value":"Popup"}, + 'Banner': {"text":"横幅广告","color":"#00ff00","value":"Banner"}, + 'FloatingButton': {"text":"悬浮按钮","color":"#0000ff","value":"FloatingButton"}, }; // BannersRedirectTypeEnum -export const BannersRedirectTypeEnum = { - InnerPage: { text: '跳内页', color: '#ff0000', value: 'InnerPage' }, - H5: { text: '跳H5', color: '#00ff00', value: 'H5' }, - MiniProgramHome: { - text: '跳小程序首屏', - color: '#0000ff', - value: 'MiniProgramHome', - }, - AnotherMiniProgram: { - text: '跳另一个小程序', - color: '#ffa500', - value: 'AnotherMiniProgram', - }, +export const BannersRedirectTypeEnum= { + 'InnerPage': {"text":"跳内页","color":"#ff0000","value":"InnerPage"}, + 'H5': {"text":"跳H5","color":"#00ff00","value":"H5"}, + 'MiniProgramHome': {"text":"跳小程序首屏","color":"#0000ff","value":"MiniProgramHome"}, + 'AnotherMiniProgram': {"text":"跳另一个小程序","color":"#ffa500","value":"AnotherMiniProgram"}, }; // BannersTypeEnum -export const BannersTypeEnum = { - Image: { text: '图片', color: '#ff0000', value: 'Image' }, - Video: { text: '视频', color: '#00ff00', value: 'Video' }, - Text: { text: '文本', color: '#0000ff', value: 'Text' }, -}; - -// BillPaymentsStatusEnum -export const BillPaymentsStatusEnum = { - Pending: { text: '待审', color: '#faad14', value: 'Pending' }, - Approved: { text: '已审', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '驳回', color: '#f5222d', value: 'Rejected' }, -}; - -// BillPaymentsTypeEnum -export const BillPaymentsTypeEnum = { - DoorCard: { text: '门卡', color: '#2196f3', value: 'DoorCard' }, - ResourceOrder: { text: '资源订单', color: '#4caf50', value: 'ResourceOrder' }, - EmergencyEvent: { - text: '突发事件', - color: '#ef4444', - value: 'EmergencyEvent', - }, - RenovationDeposit: { - text: '装修押金', - color: '#f59e0b', - value: 'RenovationDeposit', - }, -}; - -// BillsFlowTypeEnum -export const BillsFlowTypeEnum = { - Income: { text: '收入', color: '#10b981', value: 'Income' }, - Expense: { text: '支出', color: '#ef4444', value: 'Expense' }, -}; - -// BillsRefundStatusEnum -export const BillsRefundStatusEnum = { - Requested: { text: '已申请', color: '#2196f3', value: 'Requested' }, - Reviewing: { text: '审核中', color: '#ff9800', value: 'Reviewing' }, - Rejected: { text: '已拒绝', color: '#f44336', value: 'Rejected' }, - Processing: { text: '退款中', color: '#9c27b0', value: 'Processing' }, - Refunded: { text: '已退款', color: '#4caf50', value: 'Refunded' }, - Failed: { text: '退款失败', color: '#e91e63', value: 'Failed' }, -}; - -// BillsStatusEnum -export const BillsStatusEnum = { - PendingPayment: { text: '待支付', color: '#facc15', value: 'PendingPayment' }, - Paid: { text: '已支付', color: '#10b981', value: 'Paid' }, - Overdue: { text: '已逾期', color: '#ef4444', value: 'Overdue' }, - Cancelled: { text: '已取消', color: '#9ca3af', value: 'Cancelled' }, +export const BannersTypeEnum= { + 'Image': {"text":"图片","color":"#ff0000","value":"Image"}, + 'Video': {"text":"视频","color":"#00ff00","value":"Video"}, + 'Text': {"text":"文本","color":"#0000ff","value":"Text"}, }; // 缓存类型 -export const CacheTypeEnum = { - MobilePhoneVerificationCode: { - text: '手机验证码', - color: '#d518aa', - value: 'MobilePhoneVerificationCode', - }, +export const CacheTypeEnum= { + 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#a61e65","value":"MobilePhoneVerificationCode"}, }; // CompaniesMerchantTypeEnum -export const CompaniesMerchantTypeEnum = { - PropertyManagement: { - text: '物业公司', - color: '#007bff', - value: 'PropertyManagement', - }, - ServiceProvider: { - text: '服务商', - color: '#28a745', - value: 'ServiceProvider', - }, +export const CompaniesMerchantTypeEnum= { + 'PropertyManagement': {"text":"物业公司","color":"#007bff","value":"PropertyManagement"}, + 'ServiceProvider': {"text":"服务商","color":"#28a745","value":"ServiceProvider"}, }; // CompanyAppsAppTypeEnum -export const CompanyAppsAppTypeEnum = { - MiniProgram: { text: '微信小程序', color: '#3b82f6', value: 'MiniProgram' }, - MpOfficial: { text: '微信公众号', color: '#22c55e', value: 'MpOfficial' }, - WorkWechat: { text: '企业微信', color: '#6366f1', value: 'WorkWechat' }, +export const CompanyAppsAppTypeEnum= { + 'MiniProgram': {"text":"微信小程序","color":"#3b82f6","value":"MiniProgram"}, + 'MpOfficial': {"text":"微信公众号","color":"#22c55e","value":"MpOfficial"}, + 'WorkWechat': {"text":"企业微信","color":"#6366f1","value":"WorkWechat"}, }; // CompanyAppsModuleEnum -export const CompanyAppsModuleEnum = { - Employee: { text: '员工端', color: '#3b82f6', value: 'Employee' }, - Customer: { text: '客户端', color: '#10b981', value: 'Customer' }, +export const CompanyAppsModuleEnum= { + 'Employee': {"text":"员工端","color":"#3b82f6","value":"Employee"}, + 'Customer': {"text":"客户端","color":"#10b981","value":"Customer"}, }; // CompanyAppsWorkTypeEnum -export const CompanyAppsWorkTypeEnum = { - WorkWechatApp: { text: '企微应用', color: '#00c853', value: 'WorkWechatApp' }, - WorkWechat: { text: '企微', color: '#0091ea', value: 'WorkWechat' }, +export const CompanyAppsWorkTypeEnum= { + 'WorkWechatApp': {"text":"企微应用","color":"#00c853","value":"WorkWechatApp"}, + 'WorkWechat': {"text":"企微","color":"#0091ea","value":"WorkWechat"}, +}; + +// CompanyConfigsConfigKeyEnum +export const CompanyConfigsConfigKeyEnum= { + 'Theme': {"text":"主题色","color":"#3b82f6","value":"Theme"}, }; // CompanyEmployeeBacklogsStatusEnum -export const CompanyEmployeeBacklogsStatusEnum = { - Pending: { text: '待办', color: '#FF6600', value: 'Pending' }, - Completed: { text: '已办', color: '#2A82E4', value: 'Completed' }, +export const CompanyEmployeeBacklogsStatusEnum= { + 'Pending': {"text":"待办","color":"#FF6600","value":"Pending"}, + 'Completed': {"text":"已办","color":"#2A82E4","value":"Completed"}, }; // CompanyEmployeeBacklogsTypeEnum -export const CompanyEmployeeBacklogsTypeEnum = { - WorkOrder: { text: '工单', color: '#FF6600', value: 'WorkOrder' }, - Contract: { text: '合同', color: '#2A82E4', value: 'Contract' }, - MomentTask: { text: '朋友圈任务', color: '#FF6600', value: 'MomentTask' }, -}; - -// CompanyEmployeesTypeEnum -export const CompanyEmployeesTypeEnum = { - WeCom: { text: '企微', color: '#2196f3', value: 'WeCom' }, - External: { text: '外部', color: '#4caf50', value: 'External' }, +export const CompanyEmployeeBacklogsTypeEnum= { + 'WorkOrder': {"text":"工单","color":"#FF6600","value":"WorkOrder"}, + 'Contract': {"text":"合同","color":"#2A82E4","value":"Contract"}, + 'MomentTask': {"text":"朋友圈任务","color":"#FF6600","value":"MomentTask"}, }; // CompanyReceiptAccountsPayChannelEnum -export const CompanyReceiptAccountsPayChannelEnum = { - WeChat: { text: '微信', color: '#07c160', value: 'WeChat' }, - Alipay: { text: '支付宝', color: '#1677ff', value: 'Alipay' }, - BankTransfer: { text: '银行转账', color: '#6c757d', value: 'BankTransfer' }, - TongLian: { text: '通联支付', color: '#ff9f0a', value: 'TongLian' }, -}; - -// CompanySealsTypeEnum -export const CompanySealsTypeEnum = { - OfficialSeal: { text: '公章', color: '#007bff', value: 'OfficialSeal' }, - FinanceSeal: { text: '财务专用章', color: '#28a745', value: 'FinanceSeal' }, - ContractSeal: { text: '合同专用章', color: '#17a2b8', value: 'ContractSeal' }, - LegalRepresentativeSeal: { - text: '法定代表人章', - color: '#ffc107', - value: 'LegalRepresentativeSeal', - }, - InvoiceSeal: { text: '发票专用章', color: '#dc3545', value: 'InvoiceSeal' }, - HRSeal: { text: '人事专用章', color: '#6f42c1', value: 'HRSeal' }, -}; - -// CompanySuppliersCertificateTypeEnum -export const CompanySuppliersCertificateTypeEnum = { - IdCard: { text: '身份证', color: '#1e90ff', value: 'IdCard' }, - BusinessLicense: { - text: '营业执照', - color: '#32cd32', - value: 'BusinessLicense', - }, -}; - -// CompanySuppliersCounterpartyEnum -export const CompanySuppliersCounterpartyEnum = { - Supplier: { text: '供应商', color: '#1e90ff', value: 'Supplier' }, - InternalCompany: { - text: '内部企业', - color: '#32cd32', - value: 'InternalCompany', - }, -}; - -// CompanySuppliersGradeEnum -export const CompanySuppliersGradeEnum = { - Excellent: { text: '优秀', color: '#10b981', value: 'Excellent' }, - Qualified: { text: '合格', color: '#3b82f6', value: 'Qualified' }, - ToImprove: { text: '待整改', color: '#f59e0b', value: 'ToImprove' }, - Eliminated: { text: '淘汰', color: '#ef4444', value: 'Eliminated' }, -}; - -// CompanySuppliersSupplierTypeEnum -export const CompanySuppliersSupplierTypeEnum = { - Individual: { text: '个人', color: '#1e90ff', value: 'Individual' }, - Enterprise: { text: '企业', color: '#32cd32', value: 'Enterprise' }, -}; - -// ContractArchivesConfidentialityLevelEnum -export const ContractArchivesConfidentialityLevelEnum = { - TopSecret: { text: '绝密', color: '#dc3545', value: 'TopSecret' }, - Confidential: { text: '机密', color: '#fd7e14', value: 'Confidential' }, - Secret: { text: '保密', color: '#ffc107', value: 'Secret' }, - Internal: { text: '内部公开', color: '#17a2b8', value: 'Internal' }, - Public: { text: '公开', color: '#28a745', value: 'Public' }, -}; - -// ContractArchivesFileStatusEnum -export const ContractArchivesFileStatusEnum = { - Intact: { text: '完好', color: '#28a745', value: 'Intact' }, - SlightDamage: { text: '轻度损伤', color: '#ffc107', value: 'SlightDamage' }, - ModerateDamage: { - text: '中度损伤', - color: '#fd7e14', - value: 'ModerateDamage', - }, - SevereDamage: { text: '重度损伤', color: '#dc3545', value: 'SevereDamage' }, -}; - -// ContractArchivesFileTypeEnum -export const ContractArchivesFileTypeEnum = { - PaperOriginal: { text: '纸质原件', color: '#007bff', value: 'PaperOriginal' }, - ElectronicOriginal: { - text: '电子原件', - color: '#28a745', - value: 'ElectronicOriginal', - }, - Copy: { text: '复印件', color: '#ffc107', value: 'Copy' }, -}; - -// ContractArchivesPeriodTypeEnum -export const ContractArchivesPeriodTypeEnum = { - FixedTerm: { text: '定期', color: '#007bff', value: 'FixedTerm' }, - Permanent: { text: '永久', color: '#28a745', value: 'Permanent' }, -}; - -// ContractBillPaymentsStatusEnum -export const ContractBillPaymentsStatusEnum = { - Pending: { text: '待审', color: '#faad14', value: 'Pending' }, - Approved: { text: '已审', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '驳回', color: '#f5222d', value: 'Rejected' }, -}; - -// ContractBillsCostTypeEnum -export const ContractBillsCostTypeEnum = { - Income: { text: '收入', color: '#52c41a', value: 'Income' }, - Expense: { text: '支出', color: '#f5222d', value: 'Expense' }, -}; - -// ContractPeoplesSignPartyEnum -export const ContractPeoplesSignPartyEnum = { - PartyA: { text: '甲方', color: '#007bff', value: 'PartyA' }, - PartyB: { text: '乙方', color: '#28a745', value: 'PartyB' }, - PartyC: { text: '丙方', color: '#ffc107', value: 'PartyC' }, - PartyD: { text: '丁方', color: '#dc3545', value: 'PartyD' }, -}; - -// ContractTemplatesIncomeExpenseTypeEnum -export const ContractTemplatesIncomeExpenseTypeEnum = { - Income: { text: '收入类', color: '#32cd32', value: 'Income' }, - Expense: { text: '支出类', color: '#ff4500', value: 'Expense' }, - None: { text: '无收无支', color: '#808080', value: 'None' }, -}; - -// ContractTemplatesSourceEnum -export const ContractTemplatesSourceEnum = { - Internal: { text: '内部', color: '#1e90ff', value: 'Internal' }, - External: { text: '外部', color: '#32cd32', value: 'External' }, -}; - -// ContractsContractNatureEnum -export const ContractsContractNatureEnum = { - RegularContract: { - text: '常规合同', - color: '#007bff', - value: 'RegularContract', - }, - FrameworkAgreement: { - text: '框架协议', - color: '#28a745', - value: 'FrameworkAgreement', - }, -}; - -// ContractsSettlementModeEnum -export const ContractsSettlementModeEnum = { - LumpSumContract: { - text: '总价合同', - color: '#007bff', - value: 'LumpSumContract', - }, - OpenContract: { text: '开口合同', color: '#28a745', value: 'OpenContract' }, -}; - -// ContractsStatusEnum -export const ContractsStatusEnum = { - TemporaryStorage: { - text: '暂存', - color: '#6c757d', - value: 'TemporaryStorage', - }, - UnderApproval: { text: '审核中', color: '#007bff', value: 'UnderApproval' }, - Approved: { text: '已通过', color: '#28a745', value: 'Approved' }, - Rejected: { text: '已退回', color: '#dc3545', value: 'Rejected' }, - Signed: { text: '已签约', color: '#17a2b8', value: 'Signed' }, - Archived: { text: '已归档', color: '#20c997', value: 'Archived' }, - Terminating: { text: '终止中', color: '#ffc107', value: 'Terminating' }, - Terminated: { text: '已终止', color: '#fd7e14', value: 'Terminated' }, - Closed: { text: '已关闭', color: '#343a40', value: 'Closed' }, - Voided: { text: '已作废', color: '#6610f2', value: 'Voided' }, +export const CompanyReceiptAccountsPayChannelEnum= { + 'WeChat': {"text":"微信","color":"#07c160","value":"WeChat"}, + 'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"}, + 'BankTransfer': {"text":"银行转账","color":"#6c757d","value":"BankTransfer"}, + 'TongLian': {"text":"通联支付","color":"#ff9f0a","value":"TongLian"}, }; // ConvenienceServicesTypeEnum -export const ConvenienceServicesTypeEnum = { - PropertyExclusive: { - text: '物业专属', - color: '#8b5cf6', - value: 'PropertyExclusive', - }, - EmergencyRepair: { - text: '紧急抢修', - color: '#ef4444', - value: 'EmergencyRepair', - }, - LifeService: { text: '生活服务', color: '#3b82f6', value: 'LifeService' }, - GovernmentConsulting: { - text: '政务咨询', - color: '#10b981', - value: 'GovernmentConsulting', - }, +export const ConvenienceServicesTypeEnum= { + 'PropertyExclusive': {"text":"物业专属","color":"#8b5cf6","value":"PropertyExclusive"}, + 'EmergencyRepair': {"text":"紧急抢修","color":"#ef4444","value":"EmergencyRepair"}, + 'LifeService': {"text":"生活服务","color":"#3b82f6","value":"LifeService"}, + 'GovernmentConsulting': {"text":"政务咨询","color":"#10b981","value":"GovernmentConsulting"}, }; // CustomerBacklogsStatusEnum -export const CustomerBacklogsStatusEnum = { - Pending: { text: '待办', color: '#faad14', value: 'Pending' }, - Completed: { text: '已办', color: '#2A82E4', value: 'Completed' }, +export const CustomerBacklogsStatusEnum= { + 'Pending': {"text":"待办","color":"#faad14","value":"Pending"}, + 'Completed': {"text":"已办","color":"#2A82E4","value":"Completed"}, }; // CustomerBacklogsTypeEnum -export const CustomerBacklogsTypeEnum = { - RegisterApply: { text: '登记申请', color: '#2db7f5', value: 'RegisterApply' }, - PaymentPending: { - text: '费用待缴', - color: '#faad14', - value: 'PaymentPending', - }, - ContractTodo: { text: '合同待办', color: '#722ed1', value: 'ContractTodo' }, +export const CustomerBacklogsTypeEnum= { + 'RegisterApply': {"text":"登记申请","color":"#2db7f5","value":"RegisterApply"}, + 'PaymentPending': {"text":"费用待缴","color":"#faad14","value":"PaymentPending"}, + 'ContractTodo': {"text":"合同待办","color":"#722ed1","value":"ContractTodo"}, }; // CustomerMomentTasksStatusEnum -export const CustomerMomentTasksStatusEnum = { - NotSent: { text: '未发', color: '#FF4500', value: 'NotSent' }, - Sent: { text: '已发', color: '#32CD32', value: 'Sent' }, +export const CustomerMomentTasksStatusEnum= { + 'NotSent': {"text":"未发","color":"#FF4500","value":"NotSent"}, + 'Sent': {"text":"已发","color":"#32CD32","value":"Sent"}, }; // CustomerMomentsChannelEnum -export const CustomerMomentsChannelEnum = { - MomentCorp: { text: '朋友圈(企业)', color: '#1E90FF', value: 'MomentCorp' }, - CustomerDirectCorp: { - text: '客户1对1消息群发(企业)', - color: '#FFA500', - value: 'CustomerDirectCorp', - }, - CustomerGroupCorp: { - text: '客户群群发(企业)', - color: '#FF69B4', - value: 'CustomerGroupCorp', - }, +export const CustomerMomentsChannelEnum= { + 'MomentCorp': {"text":"朋友圈(企业)","color":"#1E90FF","value":"MomentCorp"}, + 'CustomerDirectCorp': {"text":"客户1对1消息群发(企业)","color":"#FFA500","value":"CustomerDirectCorp"}, + 'CustomerGroupCorp': {"text":"客户群群发(企业)","color":"#FF69B4","value":"CustomerGroupCorp"}, }; // CustomerMomentsContentTypeEnum -export const CustomerMomentsContentTypeEnum = { - Image: { text: '图片消息', color: '#1E90FF', value: 'Image' }, - Link: { text: '转载链接消息', color: '#32CD32', value: 'Link' }, - MiniProgram: { text: '跳小程序', color: '#FFA500', value: 'MiniProgram' }, - Video: { text: '视频消息', color: '#FF69B4', value: 'Video' }, +export const CustomerMomentsContentTypeEnum= { + 'Image': {"text":"图片消息","color":"#1E90FF","value":"Image"}, + 'Link': {"text":"转载链接消息","color":"#32CD32","value":"Link"}, + 'MiniProgram': {"text":"跳小程序","color":"#FFA500","value":"MiniProgram"}, + 'Video': {"text":"视频消息","color":"#FF69B4","value":"Video"}, }; // CustomerMomentsPushStatusEnum -export const CustomerMomentsPushStatusEnum = { - NotPushed: { text: '未推送', color: '#FF4500', value: 'NotPushed' }, - Pushed: { text: '已推送', color: '#32CD32', value: 'Pushed' }, +export const CustomerMomentsPushStatusEnum= { + 'NotPushed': {"text":"未推送","color":"#FF4500","value":"NotPushed"}, + 'Pushed': {"text":"已推送","color":"#32CD32","value":"Pushed"}, }; // CustomerMomentsPushTypeEnum -export const CustomerMomentsPushTypeEnum = { - ManualPush: { text: '手动推送', color: '#1E90FF', value: 'ManualPush' }, - ScheduledPush: { text: '定时推送', color: '#32CD32', value: 'ScheduledPush' }, +export const CustomerMomentsPushTypeEnum= { + 'ManualPush': {"text":"手动推送","color":"#1E90FF","value":"ManualPush"}, + 'ScheduledPush': {"text":"定时推送","color":"#32CD32","value":"ScheduledPush"}, }; // CustomerMomentsRangeTypeEnum -export const CustomerMomentsRangeTypeEnum = { - Project: { text: '按项目推送', color: '#1E90FF', value: 'Project' }, +export const CustomerMomentsRangeTypeEnum= { + 'Project': {"text":"按项目推送","color":"#1E90FF","value":"Project"}, }; // CustomerMomentsSkipTypeEnum -export const CustomerMomentsSkipTypeEnum = { - H5: { text: 'H5', color: '#1E90FF', value: 'H5' }, +export const CustomerMomentsSkipTypeEnum= { + 'H5': {"text":"H5","color":"#1E90FF","value":"H5"}, }; // CustomerMomentsTaskEndTypeEnum -export const CustomerMomentsTaskEndTypeEnum = { - AfterNDays: { text: '发送后N天', color: '#1E90FF', value: 'AfterNDays' }, - ScheduledEnd: { text: '定时结束', color: '#32CD32', value: 'ScheduledEnd' }, +export const CustomerMomentsTaskEndTypeEnum= { + 'AfterNDays': {"text":"发送后N天","color":"#1E90FF","value":"AfterNDays"}, + 'ScheduledEnd': {"text":"定时结束","color":"#32CD32","value":"ScheduledEnd"}, }; // CustomerOpinionsTypeEnum -export const CustomerOpinionsTypeEnum = { - FeatureException: { - text: '功能异常', - color: '#ff0000', - value: 'FeatureException', - }, - FeatureSuggestion: { - text: '新功能建议', - color: '#00bfff', - value: 'FeatureSuggestion', - }, -}; - -// EmergencyEventBillsCostTypeEnum -export const EmergencyEventBillsCostTypeEnum = { - Income: { text: '收入', color: '#52c41a', value: 'Income' }, - Expense: { text: '支出', color: '#f5222d', value: 'Expense' }, -}; - -// EmergencyEventBillsFeeTypeEnum -export const EmergencyEventBillsFeeTypeEnum = { - Compensation: { text: '赔偿', color: '#ef4444', value: 'Compensation' }, - Penalty: { text: '罚款', color: '#f59e0b', value: 'Penalty' }, -}; - -// EmergencyEventBillsPaymentMethodEnum -export const EmergencyEventBillsPaymentMethodEnum = { - WeChat: { text: '微信', color: '#07c160', value: 'WeChat' }, - Alipay: { text: '支付宝', color: '#1677ff', value: 'Alipay' }, - BankTransfer: { text: '银行转账', color: '#6c757d', value: 'BankTransfer' }, - TongLian: { text: '通联支付', color: '#ff9f0a', value: 'TongLian' }, - Prepayment: { text: '预缴支付', color: '#f59e0b', value: 'Prepayment' }, - POS: { text: 'POS机', color: '#8b5cf6', value: 'POS' }, - Cash: { text: '现金', color: '#dc2626', value: 'Cash' }, -}; - -// EmergencyEventBillsPaymentStatusEnum -export const EmergencyEventBillsPaymentStatusEnum = { - Pending: { text: '待支付', color: '#facc15', value: 'Pending' }, - ToBeConfirmed: { text: '待确认', color: '#fb923c', value: 'ToBeConfirmed' }, - Paid: { text: '已支付', color: '#10b981', value: 'Paid' }, - Refunded: { text: '已退款', color: '#60a5fa', value: 'Refunded' }, - Cancelled: { text: '已取消', color: '#9ca3af', value: 'Cancelled' }, - Failed: { text: '支付失败', color: '#ef4444', value: 'Failed' }, -}; - -// EmergencyEventsAuditStatusEnum -export const EmergencyEventsAuditStatusEnum = { - Pending: { text: '待审', color: '#ff9800', value: 'Pending' }, - Approved: { text: '通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '驳回', color: '#f44336', value: 'Rejected' }, -}; - -// EmergencyEventsCompensationTypeEnum -export const EmergencyEventsCompensationTypeEnum = { - Ours: { text: '我方', color: '#2196f3', value: 'Ours' }, - Others: { text: '他方', color: '#9c27b0', value: 'Others' }, -}; - -// EmergencyEventsStatusEnum -export const EmergencyEventsStatusEnum = { - PendingFollowUp: { - text: '待跟进', - color: '#f59e0b', - value: 'PendingFollowUp', - }, - InProgress: { text: '跟进中', color: '#3b82f6', value: 'InProgress' }, - PendingReview: { text: '待审核', color: '#a855f7', value: 'PendingReview' }, - Closed: { text: '已关闭', color: '#6b7280', value: 'Closed' }, -}; - -// EmergencyTeamMembersPositionEnum -export const EmergencyTeamMembersPositionEnum = { - Leader: { text: '应急组长', color: '#e74c3c', value: 'Leader' }, - Member: { text: '现场处置员', color: '#3498db', value: 'Member' }, - Liaison: { text: '信息联络员', color: '#f1c40f', value: 'Liaison' }, - Support: { text: '后勤保障员', color: '#2ecc71', value: 'Support' }, - Reserve: { text: '机动预备员', color: '#9b59b6', value: 'Reserve' }, -}; - -// GoodsReleasesAuditStatusEnum -export const GoodsReleasesAuditStatusEnum = { - Pending: { text: '待审核', color: '#faad14', value: 'Pending' }, - Approved: { text: '已通过', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '已退回', color: '#ff4d4f', value: 'Rejected' }, -}; - -// GoodsReleasesPassedTypeEnum -export const GoodsReleasesPassedTypeEnum = { - Moving: { text: '搬家', color: '#1890ff', value: 'Moving' }, - Delivery: { text: '出货', color: '#52c41a', value: 'Delivery' }, - Other: { text: '其他', color: '#faad14', value: 'Other' }, -}; - -// GoodsReleasesStatusEnum -export const GoodsReleasesStatusEnum = { - Pending: { text: '待审核', color: '#faad14', value: 'Pending' }, - OwnerApproved: { text: '业主已审', color: '#1890ff', value: 'OwnerApproved' }, - Approved: { text: '已通过', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '已退回', color: '#ff4d4f', value: 'Rejected' }, - Released: { text: '已放行', color: '#722ed1', value: 'Released' }, +export const CustomerOpinionsTypeEnum= { + 'FeatureException': {"text":"功能异常","color":"#ff0000","value":"FeatureException"}, + 'FeatureSuggestion': {"text":"新功能建议","color":"#00bfff","value":"FeatureSuggestion"}, }; // 账单状态枚举 -export const HouseBillsBillStatusEnum = { - PendingPayment: { text: '待收款', color: '#facc15', value: 'PendingPayment' }, - ToBeConfirmed: { text: '待确认', color: '#fb923c', value: 'ToBeConfirmed' }, - PartiallyPaid: { text: '部分收款', color: '#60a5fa', value: 'PartiallyPaid' }, - Paid: { text: '已收款', color: '#10b981', value: 'Paid' }, - Overdue: { text: '已逾期', color: '#ef4444', value: 'Overdue' }, - Cancelled: { text: '已取消', color: '#9ca3af', value: 'Cancelled' }, +export const HouseBillsBillStatusEnum= { + 'PendingPayment': {"text":"待支付","color":"#facc15","value":"PendingPayment"}, + 'PartiallyPaid': {"text":"部分支付","color":"#60a5fa","value":"PartiallyPaid"}, + 'Paid': {"text":"已支付","color":"#10b981","value":"Paid"}, + 'Overdue': {"text":"已逾期","color":"#ef4444","value":"Overdue"}, + 'Cancelled': {"text":"已取消","color":"#9ca3af","value":"Cancelled"}, }; // 房屋账单类型枚举 -export const HouseBillsTypeEnum = { - PropertyFee: { text: '物业费', color: '#3b82f6', value: 'PropertyFee' }, - MaintenanceFund: { - text: '维修基金', - color: '#10b981', - value: 'MaintenanceFund', - }, - WaterFee: { text: '水费', color: '#06b6d4', value: 'WaterFee' }, - ElectricityFee: { text: '电费', color: '#f59e0b', value: 'ElectricityFee' }, - SharedWaterFee: { - text: '公摊水费', - color: '#8b5cf6', - value: 'SharedWaterFee', - }, - SharedElectricityFee: { - text: '公摊电费', - color: '#ec4899', - value: 'SharedElectricityFee', - }, - CarPortFee: { text: '车位费', color: '#f59e0b', value: 'CarPortFee' }, +export const HouseBillsTypeEnum= { + 'PropertyFee': {"text":"物业费","color":"#3b82f6","value":"PropertyFee"}, + 'MaintenanceFund': {"text":"维修基金","color":"#10b981","value":"MaintenanceFund"}, + 'WaterFee': {"text":"水费","color":"#06b6d4","value":"WaterFee"}, + 'ElectricityFee': {"text":"电费","color":"#f59e0b","value":"ElectricityFee"}, + 'SharedWaterFee': {"text":"公摊水费","color":"#8b5cf6","value":"SharedWaterFee"}, + 'SharedElectricityFee': {"text":"公摊电费","color":"#ec4899","value":"SharedElectricityFee"}, + 'CarPortFee': {"text":"车位费","color":"#f59e0b","value":"CarPortFee"}, }; // HouseChargeStandardsApportionmentMethodEnum -export const HouseChargeStandardsApportionmentMethodEnum = { - HouseCount: { text: '按房屋数分摊', color: '#3b82f6', value: 'HouseCount' }, - AreaProportion: { - text: '按建筑面积分摊', - color: '#10b981', - value: 'AreaProportion', - }, - FixedRatio: { text: '按固定比例分摊', color: '#f59e0b', value: 'FixedRatio' }, +export const HouseChargeStandardsApportionmentMethodEnum= { + 'HouseCount': {"text":"房屋数分摊","color":"#3b82f6","value":"HouseCount"}, + 'AreaProportion': {"text":"房屋计费面积分摊","color":"#10b981","value":"AreaProportion"}, + 'FixedRatio': {"text":"按固定比例分摊","color":"#f59e0b","value":"FixedRatio"}, }; // HouseChargeStandardsCalculationMethodEnum -export const HouseChargeStandardsCalculationMethodEnum = { - ChargeableArea: { - text: '计费面积', - color: '#3b82f6', - value: 'ChargeableArea', - }, - BuiltArea: { text: '建筑面积', color: '#10b981', value: 'BuiltArea' }, - InsideArea: { text: '套内面积', color: '#f59e0b', value: 'InsideArea' }, - PerUnit: { text: '按套', color: '#06b6d4', value: 'PerUnit' }, - ElectricityUsage: { - text: '用电量', - color: '#8b5cf6', - value: 'ElectricityUsage', - }, - WaterUsage: { text: '用水量', color: '#ec4899', value: 'WaterUsage' }, +export const HouseChargeStandardsCalculationMethodEnum= { + 'ChargeableArea': {"text":"计费面积","color":"#3b82f6","value":"ChargeableArea"}, + 'BuiltArea': {"text":"建筑面积","color":"#10b981","value":"BuiltArea"}, + 'InsideArea': {"text":"套内面积","color":"#f59e0b","value":"InsideArea"}, + 'PerUnit': {"text":"按套","color":"#06b6d4","value":"PerUnit"}, + 'ElectricityUsage': {"text":"用电量","color":"#8b5cf6","value":"ElectricityUsage"}, + 'WaterUsage': {"text":"用水量","color":"#ec4899","value":"WaterUsage"}, }; // HouseChargeStandardsCalculationModeEnum -export const HouseChargeStandardsCalculationModeEnum = { - FixedAmount: { text: '固定金额', color: '#3b82f6', value: 'FixedAmount' }, - QuantityPrice: { - text: '数量*单价', - color: '#10b981', - value: 'QuantityPrice', - }, +export const HouseChargeStandardsCalculationModeEnum= { + 'FixedAmount': {"text":"固定金额","color":"#3b82f6","value":"FixedAmount"}, + 'QuantityPrice': {"text":"数量*单价","color":"#10b981","value":"QuantityPrice"}, }; // HouseChargeStandardsCalculationPeriodEnum -export const HouseChargeStandardsCalculationPeriodEnum = { - PerTime: { text: '按次', color: '#3b82f6', value: 'PerTime' }, - PerDay: { text: '按日', color: '#10b981', value: 'PerDay' }, - PerMonth: { text: '按月', color: '#f59e0b', value: 'PerMonth' }, - PerYear: { text: '按年', color: '#8b5cf6', value: 'PerYear' }, +export const HouseChargeStandardsCalculationPeriodEnum= { + 'PerTime': {"text":"按次","color":"#3b82f6","value":"PerTime"}, + 'PerDay': {"text":"按日","color":"#10b981","value":"PerDay"}, + 'PerMonth': {"text":"按月","color":"#f59e0b","value":"PerMonth"}, + 'PerYear': {"text":"按年","color":"#8b5cf6","value":"PerYear"}, }; // HouseChargeStandardsPriceAlgorithmEnum -export const HouseChargeStandardsPriceAlgorithmEnum = { - Fixed: { text: '固定', color: '#4caf50', value: 'Fixed' }, - Tiered: { text: '分级价阶梯', color: '#2196f3', value: 'Tiered' }, - Peak: { text: '最高价阶梯', color: '#ff9800', value: 'Peak' }, +export const HouseChargeStandardsPriceAlgorithmEnum= { + 'Fixed': {"text":"固定","color":"#4caf50","value":"Fixed"}, + 'Tiered': {"text":"分级价阶梯","color":"#2196f3","value":"Tiered"}, + 'Peak': {"text":"最高价阶梯","color":"#ff9800","value":"Peak"}, }; // HouseChargeStandardsStatusEnum -export const HouseChargeStandardsStatusEnum = { - Active: { text: '启用', color: '#3b82f6', value: 'Active' }, - Inactive: { text: '禁用', color: '#ef4444', value: 'Inactive' }, +export const HouseChargeStandardsStatusEnum= { + 'Active': {"text":"启用","color":"#3b82f6","value":"Active"}, + 'Inactive': {"text":"禁用","color":"#ef4444","value":"Inactive"}, }; // HouseChargeStandardsTypeEnum -export const HouseChargeStandardsTypeEnum = { - House: { text: '房屋', color: '#3b82f6', value: 'House' }, - Meter: { text: '仪表', color: '#10b981', value: 'Meter' }, - CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, +export const HouseChargeStandardsTypeEnum= { + 'House': {"text":"房屋","color":"#3b82f6","value":"House"}, + 'Meter': {"text":"仪表","color":"#10b981","value":"Meter"}, + 'CarPort': {"text":"车位","color":"#f59e0b","value":"CarPort"}, }; // HouseChargeTaskDetailsStatusEnum -export const HouseChargeTaskDetailsStatusEnum = { - Pending: { text: '待处理', color: '#f59e0b', value: 'Pending' }, - Success: { text: '成功', color: '#22c55e', value: 'Success' }, - Failed: { text: '失败', color: '#ef4444', value: 'Failed' }, +export const HouseChargeTaskDetailsStatusEnum= { + 'Pending': {"text":"待处理","color":"#f59e0b","value":"Pending"}, + 'Success': {"text":"成功","color":"#22c55e","value":"Success"}, + 'Failed': {"text":"失败","color":"#ef4444","value":"Failed"}, }; // HouseChargeTaskDetailsTargetTypeEnum -export const HouseChargeTaskDetailsTargetTypeEnum = { - House: { text: '房屋', color: '#3b82f6', value: 'House' }, - CarPort: { text: '车位', color: '#f59e0b', value: 'CarPort' }, +export const HouseChargeTaskDetailsTargetTypeEnum= { + 'House': {"text":"房屋","color":"#3b82f6","value":"House"}, + 'CarPort': {"text":"车位","color":"#f59e0b","value":"CarPort"}, }; // HouseChargeTasksStatusEnum -export const HouseChargeTasksStatusEnum = { - Pending: { text: '待执行', color: '#f59e0b', value: 'Pending' }, - InProgress: { text: '执行中', color: '#3b82f6', value: 'InProgress' }, - Completed: { text: '已完成', color: '#10b981', value: 'Completed' }, - Failed: { text: '失败', color: '#ef4444', value: 'Failed' }, +export const HouseChargeTasksStatusEnum= { + 'Pending': {"text":"待执行","color":"#f59e0b","value":"Pending"}, + 'InProgress': {"text":"执行中","color":"#3b82f6","value":"InProgress"}, + 'Completed': {"text":"已完成","color":"#10b981","value":"Completed"}, + 'Failed': {"text":"失败","color":"#ef4444","value":"Failed"}, }; // HouseChargeTasksTypeEnum -export const HouseChargeTasksTypeEnum = { - Scheduled: { text: '定时创建', color: '#3b82f6', value: 'Scheduled' }, - Manual: { text: '手动创建', color: '#10b981', value: 'Manual' }, +export const HouseChargeTasksTypeEnum= { + 'Scheduled': {"text":"定时创建","color":"#3b82f6","value":"Scheduled"}, + 'Manual': {"text":"手动创建","color":"#10b981","value":"Manual"}, }; // HouseCollectionRecordsCollectionResultEnum -export const HouseCollectionRecordsCollectionResultEnum = { - PromiseToPay: { text: '承诺缴费', color: '#4caf50', value: 'PromiseToPay' }, - RefuseToPay: { text: '拒绝缴费', color: '#f44336', value: 'RefuseToPay' }, - NotReached: { text: '未联系到', color: '#9e9e9e', value: 'NotReached' }, - NeedFollowUp: { text: '需要跟进', color: '#ff9800', value: 'NeedFollowUp' }, +export const HouseCollectionRecordsCollectionResultEnum= { + 'PromiseToPay': {"text":"承诺缴费","color":"#4caf50","value":"PromiseToPay"}, + 'RefuseToPay': {"text":"拒绝缴费","color":"#f44336","value":"RefuseToPay"}, + 'NotReached': {"text":"未联系到","color":"#9e9e9e","value":"NotReached"}, + 'NeedFollowUp': {"text":"需要跟进","color":"#ff9800","value":"NeedFollowUp"}, }; // HouseCollectionRecordsSmsStatusEnum -export const HouseCollectionRecordsStatusEnum = { - NotNotified: { text: '未通知', color: '#808080', value: 'NotNotified' }, - Notified: { text: '已通知', color: '#00cc00', value: 'Notified' }, - Failed: { text: '失败', color: '#ff0000', value: 'Failed' }, +export const HouseCollectionRecordsStatusEnum= { + 'NotNotified': {"text":"未通知","color":"#808080","value":"NotNotified"}, + 'Notified': {"text":"已通知","color":"#00cc00","value":"Notified"}, + 'Failed': {"text":"失败","color":"#ff0000","value":"Failed"}, }; // HouseCollectionTasksChannelEnum -export const HouseCollectionTasksChannelEnum = { - SMS: { text: '短信', color: '#1E90FF', value: 'SMS' }, - MiniProgram: { text: '小程序', color: '#00BFFF', value: 'MiniProgram' }, - OfficialAccount: { - text: '公众号', - color: '#32CD32', - value: 'OfficialAccount', - }, - PhoneCall: { text: '电话催缴', color: '#FF8C00', value: 'PhoneCall' }, - Visit: { text: '上门催缴', color: '#8B4513', value: 'Visit' }, - WeChat: { text: '微信联系', color: '#20B2AA', value: 'WeChat' }, - WrittenNotice: { text: '书面通知', color: '#708090', value: 'WrittenNotice' }, +export const HouseCollectionTasksChannelEnum= { + 'SMS': {"text":"短信","color":"#1E90FF","value":"SMS"}, + 'MiniProgram': {"text":"小程序","color":"#00BFFF","value":"MiniProgram"}, + 'OfficialAccount': {"text":"公众号","color":"#32CD32","value":"OfficialAccount"}, + 'PhoneCall': {"text":"电话催缴","color":"#FF8C00","value":"PhoneCall"}, + 'Visit': {"text":"上门催缴","color":"#8B4513","value":"Visit"}, + 'WeChat': {"text":"微信联系","color":"#20B2AA","value":"WeChat"}, + 'WrittenNotice': {"text":"书面通知","color":"#708090","value":"WrittenNotice"}, }; // HouseCollectionTasksStatusEnum -export const HouseCollectionTasksStatusEnum = { - Processing: { text: '进行中', color: '#ffcc00', value: 'Processing' }, - Completed: { text: '已完成', color: '#00cc00', value: 'Completed' }, - Failed: { text: '失败', color: '#ff0000', value: 'Failed' }, -}; - -// HouseDoorCardLogsTypeEnum -export const HouseDoorCardLogsTypeEnum = { - View: { text: '查看', color: '#2196f3', value: 'View' }, - Update: { text: '修改', color: '#4caf50', value: 'Update' }, - ReportLoss: { text: '挂失', color: '#ff9800', value: 'ReportLoss' }, - Invalidate: { text: '作废', color: '#f44336', value: 'Invalidate' }, +export const HouseCollectionTasksStatusEnum= { + 'Processing': {"text":"进行中","color":"#ffcc00","value":"Processing"}, + 'Completed': {"text":"已完成","color":"#00cc00","value":"Completed"}, + 'Failed': {"text":"失败","color":"#ff0000","value":"Failed"}, }; // HouseMeterReadingsOperationTypeEnum -export const HouseMeterReadingsOperationTypeEnum = { - NormalReading: { text: '正常抄表', color: '#4caf50', value: 'NormalReading' }, - ResetReading: { text: '重置读数', color: '#f44336', value: 'ResetReading' }, - CorrectReading: { - text: '修正读数', - color: '#ff9800', - value: 'CorrectReading', - }, +export const HouseMeterReadingsOperationTypeEnum= { + 'NormalReading': {"text":"正常抄表","color":"#4caf50","value":"NormalReading"}, + 'ResetReading': {"text":"重置读数","color":"#f44336","value":"ResetReading"}, + 'CorrectReading': {"text":"修正读数","color":"#ff9800","value":"CorrectReading"}, }; // HouseMeterTasksGenerationMethodEnum -export const HouseMeterTasksGenerationMethodEnum = { - Building: { text: '按楼栋', color: '#4caf50', value: 'Building' }, - Unit: { text: '按单元', color: '#2196f3', value: 'Unit' }, - Meter: { text: '按仪表', color: '#ff9800', value: 'Meter' }, +export const HouseMeterTasksGenerationMethodEnum= { + 'Building': {"text":"按楼栋","color":"#4caf50","value":"Building"}, + 'Unit': {"text":"按单元","color":"#2196f3","value":"Unit"}, + 'Meter': {"text":"按仪表","color":"#ff9800","value":"Meter"}, }; // HouseMetersMeterTypeEnum -export const HouseMetersMeterTypeEnum = { - HouseMeter: { text: '房屋表', color: '#4caf50', value: 'HouseMeter' }, - CommonMeter: { text: '公摊表', color: '#2196f3', value: 'CommonMeter' }, +export const HouseMetersMeterTypeEnum= { + 'HouseMeter': {"text":"房屋表","color":"#4caf50","value":"HouseMeter"}, + 'CommonMeter': {"text":"公摊表","color":"#2196f3","value":"CommonMeter"}, }; // HouseMetersUsageTypeEnum -export const HouseMetersUsageTypeEnum = { - WaterMeter: { text: '水表', color: '#2196f3', value: 'WaterMeter' }, - ElectricMeter: { text: '电表', color: '#ff9800', value: 'ElectricMeter' }, - GasMeter: { text: '燃气表', color: '#f44336', value: 'GasMeter' }, - HeatingMeter: { text: '暖气表', color: '#9c27b0', value: 'HeatingMeter' }, +export const HouseMetersUsageTypeEnum= { + 'WaterMeter': {"text":"水表","color":"#2196f3","value":"WaterMeter"}, + 'ElectricMeter': {"text":"电表","color":"#ff9800","value":"ElectricMeter"}, + 'GasMeter': {"text":"燃气表","color":"#f44336","value":"GasMeter"}, + 'HeatingMeter': {"text":"暖气表","color":"#9c27b0","value":"HeatingMeter"}, }; // HouseOccupantsCardTypeEnum -export const HouseOccupantsCardTypeEnum = { - MainlandID: { - text: '中国大陆居民身份证', - color: '#2db7f5', - value: 'MainlandID', - }, - HKPermit: { - text: '香港来往大陆通行证(回乡证)', - color: '#fa8c16', - value: 'HKPermit', - }, - MOPermit: { - text: '澳门来往大陆通行证(回乡证)', - color: '#faad14', - value: 'MOPermit', - }, - TWPermit: { - text: '台湾来往大陆通行证(台胞证)', - color: '#87d068', - value: 'TWPermit', - }, - Passport: { text: '护照', color: '#108ee9', value: 'Passport' }, - BusinessLicense: { - text: '营业执照', - color: '#f5222d', - value: 'BusinessLicense', - }, +export const HouseOccupantsCardTypeEnum= { + 'MainlandID': {"text":"中国大陆居民身份证","color":"#2db7f5","value":"MainlandID"}, + 'HKPermit': {"text":"香港来往大陆通行证(回乡证)","color":"#fa8c16","value":"HKPermit"}, + 'MOPermit': {"text":"澳门来往大陆通行证(回乡证)","color":"#faad14","value":"MOPermit"}, + 'TWPermit': {"text":"台湾来往大陆通行证(台胞证)","color":"#87d068","value":"TWPermit"}, + 'Passport': {"text":"护照","color":"#108ee9","value":"Passport"}, + 'BusinessLicense': {"text":"营业执照","color":"#f5222d","value":"BusinessLicense"}, }; // HouseOccupantsHouseRelationEnum -export const HouseOccupantsHouseRelationEnum = { - Owner: { text: '产权人', color: '#2db7f5', value: 'Owner' }, - NonOwner: { text: '非产权人', color: '#fa8c16', value: 'NonOwner' }, +export const HouseOccupantsHouseRelationEnum= { + 'Owner': {"text":"产权人","color":"#2db7f5","value":"Owner"}, + 'NonOwner': {"text":"非产权人","color":"#fa8c16","value":"NonOwner"}, }; // HouseOccupantsRelationWithOwnerEnum -export const HouseOccupantsRelationWithOwnerEnum = { - Self: { text: '本人', color: '#52c41a', value: 'Self' }, - Spouse: { text: '配偶', color: '#2db7f5', value: 'Spouse' }, - Children: { text: '子女', color: '#87d068', value: 'Children' }, - Parents: { text: '父母', color: '#faad14', value: 'Parents' }, - Siblings: { text: '兄弟姐妹', color: '#fa8c16', value: 'Siblings' }, - OtherRelatives: { text: '其他', color: '#f5222d', value: 'OtherRelatives' }, - PrimaryTenant: { text: '主租客', color: '#722ed1', value: 'PrimaryTenant' }, - Tenant: { text: '租客', color: '#1890ff', value: 'Tenant' }, +export const HouseOccupantsRelationWithOwnerEnum= { + 'Self': {"text":"本人","color":"#52c41a","value":"Self"}, + 'Spouse': {"text":"配偶","color":"#2db7f5","value":"Spouse"}, + 'Children': {"text":"子女","color":"#87d068","value":"Children"}, + 'Parents': {"text":"父母","color":"#faad14","value":"Parents"}, + 'Siblings': {"text":"兄弟姐妹","color":"#fa8c16","value":"Siblings"}, + 'OtherRelatives': {"text":"其他","color":"#f5222d","value":"OtherRelatives"}, + 'PrimaryTenant': {"text":"主租客","color":"#722ed1","value":"PrimaryTenant"}, + 'Tenant': {"text":"租客","color":"#1890ff","value":"Tenant"}, }; // HouseOccupantsResidentialRelationEnum -export const HouseOccupantsResidentialRelationEnum = { - PropertyOwner: { text: '产权人', color: '#eb2f96', value: 'PropertyOwner' }, - Resident: { text: '住户', color: '#2db7f5', value: 'Resident' }, - PrimaryTenant: { text: '主租人', color: '#87d068', value: 'PrimaryTenant' }, - Tenant: { text: '租客', color: '#fa8c16', value: 'Tenant' }, +export const HouseOccupantsResidentialRelationEnum= { + 'Resident': {"text":"住户","color":"#2db7f5","value":"Resident"}, + 'PrimaryTenant': {"text":"主租人","color":"#87d068","value":"PrimaryTenant"}, + 'Tenant': {"text":"租客","color":"#fa8c16","value":"Tenant"}, }; // HouseOccupantsStatusEnum -export const HouseOccupantsStatusEnum = { - Normal: { text: '绑定', color: '#52c41a', value: 'Normal' }, - Unbound: { text: '解绑', color: '#f5222d', value: 'Unbound' }, +export const HouseOccupantsStatusEnum= { + 'Normal': {"text":"绑定","color":"#52c41a","value":"Normal"}, + 'Unbound': {"text":"解绑","color":"#f5222d","value":"Unbound"}, }; -// HouseOrdersAuditStatusEnum -export const HouseOrdersAuditStatusEnum = { - Pending: { text: '待审', color: '#f59e0b', value: 'Pending' }, - Approved: { text: '通过', color: '#10b981', value: 'Approved' }, - Rejected: { text: '驳回', color: '#ef4444', value: 'Rejected' }, +// HouseOrderRefundsRefundStatusEnum +export const HouseOrderRefundsRefundStatusEnum= { + 'Requested': {"text":"已申请","color":"#2196f3","value":"Requested"}, + 'Reviewing': {"text":"审核中","color":"#ff9800","value":"Reviewing"}, + 'Rejected': {"text":"已拒绝","color":"#f44336","value":"Rejected"}, + 'Processing': {"text":"退款中","color":"#9c27b0","value":"Processing"}, + 'Refunded': {"text":"已退款","color":"#4caf50","value":"Refunded"}, + 'Failed': {"text":"退款失败","color":"#e91e63","value":"Failed"}, +}; + +// 订单审核状态枚举 +export const HouseOrdersAuditStatusEnum= { + 'Pending': {"text":"待审核","color":"#f59e0b","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#10b981","value":"Approved"}, + 'Rejected': {"text":"已驳回","color":"#ef4444","value":"Rejected"}, }; // 订单状态枚举 -export const HouseOrdersOrderStatusEnum = { - Pending: { text: '待支付', color: '#facc15', value: 'Pending' }, - ToBeConfirmed: { text: '待确认', color: '#fb923c', value: 'ToBeConfirmed' }, - Paid: { text: '已支付', color: '#10b981', value: 'Paid' }, - Refunded: { text: '已退款', color: '#60a5fa', value: 'Refunded' }, - Cancelled: { text: '已取消', color: '#9ca3af', value: 'Cancelled' }, - Failed: { text: '支付失败', color: '#ef4444', value: 'Failed' }, +export const HouseOrdersOrderStatusEnum= { + 'Pending': {"text":"待支付","color":"#facc15","value":"Pending"}, + 'Paid': {"text":"已支付","color":"#10b981","value":"Paid"}, + 'Refunded': {"text":"已退款","color":"#60a5fa","value":"Refunded"}, + 'Cancelled': {"text":"已取消","color":"#9ca3af","value":"Cancelled"}, + 'Failed': {"text":"支付失败","color":"#ef4444","value":"Failed"}, }; // HouseOrdersPaymentMethodEnum -export const HouseOrdersPaymentMethodEnum = { - WeChat: { text: '微信', color: '#07c160', value: 'WeChat' }, - Alipay: { text: '支付宝', color: '#1677ff', value: 'Alipay' }, - BankTransfer: { text: '银行转账', color: '#6c757d', value: 'BankTransfer' }, - TongLian: { text: '通联支付', color: '#ff9f0a', value: 'TongLian' }, - Prepayment: { text: '预缴支付', color: '#f59e0b', value: 'Prepayment' }, - POS: { text: 'POS机', color: '#8b5cf6', value: 'POS' }, - Cash: { text: '现金', color: '#dc2626', value: 'Cash' }, +export const HouseOrdersPaymentMethodEnum= { + 'WeChat': {"text":"微信","color":"#07c160","value":"WeChat"}, + 'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"}, + 'BankTransfer': {"text":"银行转账","color":"#6c757d","value":"BankTransfer"}, + 'TongLian': {"text":"通联支付","color":"#ff9f0a","value":"TongLian"}, + 'Prepayment': {"text":"预缴支付","color":"#f59e0b","value":"Prepayment"}, + 'POS': {"text":"POS机","color":"#8b5cf6","value":"POS"}, + 'Cash': {"text":"现金","color":"#dc2626","value":"Cash"}, }; // HousePrepaymentLogsTypeEnum -export const HousePrepaymentLogsTypeEnum = { - Add: { text: '加', color: '#52c41a', value: 'Add' }, - Subtract: { text: '减', color: '#f5222d', value: 'Subtract' }, +export const HousePrepaymentLogsTypeEnum= { + 'Add': {"text":"加","color":"#52c41a","value":"Add"}, + 'Subtract': {"text":"减","color":"#f5222d","value":"Subtract"}, }; // HouseRegistersCustomerTypeEnum -export const HouseRegistersCustomerTypeEnum = { - Individual: { text: '个人客户', color: '#2db7f5', value: 'Individual' }, - Enterprise: { text: '普通企业', color: '#87d068', value: 'Enterprise' }, - Developer: { text: '开发企业', color: '#fa8c16', value: 'Developer' }, - Government: { text: '政府组织', color: '#f5222d', value: 'Government' }, +export const HouseRegistersCustomerTypeEnum= { + 'Individual': {"text":"个人客户","color":"#2db7f5","value":"Individual"}, + 'Enterprise': {"text":"普通企业","color":"#87d068","value":"Enterprise"}, + 'Developer': {"text":"开发企业","color":"#fa8c16","value":"Developer"}, + 'Government': {"text":"政府组织","color":"#f5222d","value":"Government"}, }; // HouseRegistersHouseStatusEnum -export const HouseRegistersHouseStatusEnum = { - SelfOccupied: { text: '自住', color: '#28a745', value: 'SelfOccupied' }, - Rented: { text: '出租', color: '#007bff', value: 'Rented' }, - Vacant: { text: '空置', color: '#dc3545', value: 'Vacant' }, +export const HouseRegistersHouseStatusEnum= { + 'SelfOccupied': {"text":"自住","color":"#28a745","value":"SelfOccupied"}, + 'Rented': {"text":"出租","color":"#007bff","value":"Rented"}, + 'Vacant': {"text":"空置","color":"#dc3545","value":"Vacant"}, }; // 房屋登记身份类型 -export const HouseRegistersIdentityTypeEnum = { - Owner: { text: '产权人', color: '#2db7f5', value: 'Owner' }, - Tenant: { text: '租客', color: '#87d068', value: 'Tenant' }, - CoResident: { text: '同住人(亲属)', color: '#108ee9', value: 'CoResident' }, +export const HouseRegistersIdentityTypeEnum= { + 'Owner': {"text":"产权人","color":"#2db7f5","value":"Owner"}, + 'Tenant': {"text":"租客","color":"#87d068","value":"Tenant"}, + 'CoResident': {"text":"同住人(亲属)","color":"#108ee9","value":"CoResident"}, }; // HouseRegistersStatusEnum -export const HouseRegistersStatusEnum = { - Pending: { text: '待审', color: '#faad14', value: 'Pending' }, - Approved: { text: '通过', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '驳回', color: '#f5222d', value: 'Rejected' }, +export const HouseRegistersStatusEnum= { + 'Pending': {"text":"待审","color":"#faad14","value":"Pending"}, + 'Approved': {"text":"通过","color":"#52c41a","value":"Approved"}, + 'Rejected': {"text":"驳回","color":"#f5222d","value":"Rejected"}, }; // HouseRegistersTypeEnum -export const HouseRegistersTypeEnum = { - AddOwner: { text: '添加产权人', color: '#52c41a', value: 'AddOwner' }, - RemoveOwner: { text: '减少产权人', color: '#d9363e', value: 'RemoveOwner' }, - AddOccupant: { text: '添加住户', color: '#108ee9', value: 'AddOccupant' }, - RemoveOccupant: { - text: '移除住户', - color: '#fa8c16', - value: 'RemoveOccupant', - }, - MoveOut: { text: '搬离登记', color: '#f50', value: 'MoveOut' }, - MoveIn: { text: '搬入登记', color: '#ffc53d', value: 'MoveIn' }, - UpdateInfo: { text: '修改信息', color: '#722ed1', value: 'UpdateInfo' }, - UpdatePhone: { text: '修改电话', color: '#13c2c2', value: 'UpdatePhone' }, - GoodsRelease: { text: '物品放行', color: '#a0d911', value: 'GoodsRelease' }, +export const HouseRegistersTypeEnum= { + 'AddOwner': {"text":"添加产权人","color":"#52c41a","value":"AddOwner"}, + 'RemoveOwner': {"text":"减少产权人","color":"#d9363e","value":"RemoveOwner"}, + 'AddOccupant': {"text":"添加住户","color":"#108ee9","value":"AddOccupant"}, + 'RemoveOccupant': {"text":"移除住户","color":"#fa8c16","value":"RemoveOccupant"}, + 'MoveOut': {"text":"搬离登记","color":"#f50","value":"MoveOut"}, + 'MoveIn': {"text":"搬入登记","color":"#ffc53d","value":"MoveIn"}, + 'UpdateInfo': {"text":"修改信息","color":"#722ed1","value":"UpdateInfo"}, + 'UpdatePhone': {"text":"修改电话","color":"#13c2c2","value":"UpdatePhone"}, + 'GoodsRelease': {"text":"物品放行","color":"#a0d911","value":"GoodsRelease"}, }; // HouseRegistersUsagePlanEnum -export const HouseRegistersUsagePlanEnum = { - Permanent: { text: '常住', color: '#52c41a', value: 'Permanent' }, - Vacation: { text: '度假', color: '#faad14', value: 'Vacation' }, - Rental: { text: '出租', color: '#2db7f5', value: 'Rental' }, - Commercial: { text: '商用', color: '#f5222d', value: 'Commercial' }, +export const HouseRegistersUsagePlanEnum= { + 'Permanent': {"text":"常住","color":"#52c41a","value":"Permanent"}, + 'Vacation': {"text":"度假","color":"#faad14","value":"Vacation"}, + 'Rental': {"text":"出租","color":"#2db7f5","value":"Rental"}, + 'Commercial': {"text":"商用","color":"#f5222d","value":"Commercial"}, }; // HouseWorkOrdersAcceptResultEnum -export const HouseWorkOrdersAcceptResultEnum = { - Satisfied: { text: '满意', color: '#28A745', value: 'Satisfied' }, - Unsatisfied: { text: '不满意', color: '#DC3545', value: 'Unsatisfied' }, +export const HouseWorkOrdersAcceptResultEnum= { + 'Satisfied': {"text":"满意","color":"#28A745","value":"Satisfied"}, + 'Unsatisfied': {"text":"不满意","color":"#DC3545","value":"Unsatisfied"}, }; // HouseWorkOrdersAssignStatusEnum -export const HouseWorkOrdersAssignStatusEnum = { - Unassigned: { text: '未指派', color: '#ff0000', value: 'Unassigned' }, - Assigned: { text: '已指派', color: '#00ff00', value: 'Assigned' }, +export const HouseWorkOrdersAssignStatusEnum= { + 'Unassigned': {"text":"未指派","color":"#ff0000","value":"Unassigned"}, + 'Assigned': {"text":"已指派","color":"#00ff00","value":"Assigned"}, }; // HouseWorkOrdersComplaintTypeEnum -export const HouseWorkOrdersComplaintTypeEnum = { - Hygiene: { text: '卫生环境', color: '#ff0000', value: 'Hygiene' }, - Greening: { text: '绿植绿化', color: '#00aaff', value: 'Greening' }, - Safety: { text: '安全问题', color: '#ffaa00', value: 'Safety' }, - Maintenance: { text: '维修问题', color: '#aa00ff', value: 'Maintenance' }, - PropertyService: { - text: '物业服务', - color: '#00aa55', - value: 'PropertyService', - }, - Staff: { text: '工作人员', color: '#ff00aa', value: 'Staff' }, - Other: { text: '其他', color: '#aaaaaa', value: 'Other' }, +export const HouseWorkOrdersComplaintTypeEnum= { + 'Hygiene': {"text":"卫生环境","color":"#ff0000","value":"Hygiene"}, + 'Greening': {"text":"绿植绿化","color":"#00aaff","value":"Greening"}, + 'Safety': {"text":"安全问题","color":"#ffaa00","value":"Safety"}, + 'Maintenance': {"text":"维修问题","color":"#aa00ff","value":"Maintenance"}, + 'PropertyService': {"text":"物业服务","color":"#00aa55","value":"PropertyService"}, + 'Staff': {"text":"工作人员","color":"#ff00aa","value":"Staff"}, + 'Other': {"text":"其他","color":"#aaaaaa","value":"Other"}, }; // HouseWorkOrdersLevelEnum -export const HouseWorkOrdersLevelEnum = { - Urgent: { text: '紧急', color: '#ff0000', value: 'Urgent' }, - High: { text: '高', color: '#ff7f00', value: 'High' }, - Medium: { text: '中', color: '#00cc00', value: 'Medium' }, - Low: { text: '低', color: '#999999', value: 'Low' }, +export const HouseWorkOrdersLevelEnum= { + 'Urgent': {"text":"紧急","color":"#ff0000","value":"Urgent"}, + 'High': {"text":"高","color":"#ff7f00","value":"High"}, + 'Medium': {"text":"中","color":"#00cc00","value":"Medium"}, + 'Low': {"text":"低","color":"#999999","value":"Low"}, }; // HouseWorkOrdersLocationEnum -export const HouseWorkOrdersLocationEnum = { - CommonArea: { text: '公共区域', color: '#ff0000', value: 'CommonArea' }, - MyHome: { text: '房屋', color: '#00ff00', value: 'MyHome' }, - Office: { text: '办公室', color: '#0000ff', value: 'Office' }, +export const HouseWorkOrdersLocationEnum= { + 'CommonArea': {"text":"公共区域","color":"#ff0000","value":"CommonArea"}, + 'MyHome': {"text":"房屋","color":"#00ff00","value":"MyHome"}, }; // HouseWorkOrdersRefundStatusEnum -export const HouseWorkOrdersRefundStatusEnum = { - Refunding: { text: '退款中', color: '#FFA500', value: 'Refunding' }, - Refunded: { text: '已退款', color: '#28A745', value: 'Refunded' }, - PartialRefund: { text: '部分退款', color: '#17A2B8', value: 'PartialRefund' }, +export const HouseWorkOrdersRefundStatusEnum= { + 'Refunding': {"text":"退款中","color":"#FFA500","value":"Refunding"}, + 'Refunded': {"text":"已退款","color":"#28A745","value":"Refunded"}, + 'PartialRefund': {"text":"部分退款","color":"#17A2B8","value":"PartialRefund"}, }; // HouseWorkOrdersStatusEnum -export const HouseWorkOrdersStatusEnum = { - Pending: { text: '待处理', color: '#FFA500', value: 'Pending' }, - Processing: { text: '处理中', color: '#1E90FF', value: 'Processing' }, - PendingPayment: { text: '待支付', color: '#FF8C00', value: 'PendingPayment' }, - PendingAcceptance: { - text: '待验收', - color: '#17A2B8', - value: 'PendingAcceptance', - }, - Completed: { text: '已完成', color: '#28A745', value: 'Completed' }, - Closed: { text: '已关闭', color: '#6C757D', value: 'Closed' }, +export const HouseWorkOrdersStatusEnum= { + 'Pending': {"text":"待处理","color":"#FFA500","value":"Pending"}, + 'Processing': {"text":"处理中","color":"#1E90FF","value":"Processing"}, + 'PendingPayment': {"text":"待支付","color":"#FF8C00","value":"PendingPayment"}, + 'PendingAcceptance': {"text":"待验收","color":"#17A2B8","value":"PendingAcceptance"}, + 'Completed': {"text":"已完成","color":"#28A745","value":"Completed"}, + 'Closed': {"text":"已关闭","color":"#6C757D","value":"Closed"}, }; // HouseWorkOrdersTypeEnum -export const HouseWorkOrdersTypeEnum = { - Repair: { text: '报修', color: '#ff0000', value: 'Repair' }, - Incident: { text: '报事', color: '#00aaff', value: 'Incident' }, - Complaint: { text: '投诉', color: '#aa00ff', value: 'Complaint' }, - RenovationInspection: { - text: '装修巡检', - color: '#27ae60', - value: 'RenovationInspection', - }, - RenovationAcceptance: { - text: '装修验收', - color: '#f39c12', - value: 'RenovationAcceptance', - }, - SecurityInspection: { - text: '安防巡检', - color: '#3498db', - value: 'SecurityInspection', - }, - Emergency: { text: '突发事件', color: '#e74c3c', value: 'Emergency' }, - EquipmentMaintenance: { - text: '设备维保', - color: '#9b59b6', - value: 'EquipmentMaintenance', - }, - QualityCheck: { text: '品质检查', color: '#16a085', value: 'QualityCheck' }, +export const HouseWorkOrdersTypeEnum= { + 'Repair': {"text":"报修","color":"#ff0000","value":"Repair"}, + 'Incident': {"text":"报事","color":"#00aaff","value":"Incident"}, + 'Complaint': {"text":"投诉","color":"#aa00ff","value":"Complaint"}, }; -// MsgPropertyAnnouncementsObjectEnum -export const MsgPropertyAnnouncementsObjectEnum = { - Customer: { text: '客户', color: '#3b82f6', value: 'Customer' }, - Employee: { text: '员工', color: '#10b981', value: 'Employee' }, +// 公告接收对象 +export const MsgPropertyAnnouncementsObjectEnum= { + 'Customer': {"text":"客户","color":"#3b82f6","value":"Customer"}, + 'Employee': {"text":"员工","color":"#10b981","value":"Employee"}, }; // MsgPropertyAnnouncementsPublishTypeEnum -export const MsgPropertyAnnouncementsPublishTypeEnum = { - Manual: { text: '手动', color: '#4caf50', value: 'Manual' }, - Schedule: { text: '定时', color: '#2196f3', value: 'Schedule' }, +export const MsgPropertyAnnouncementsPublishTypeEnum= { + 'Manual': {"text":"手动","color":"#4caf50","value":"Manual"}, + 'Schedule': {"text":"定时","color":"#2196f3","value":"Schedule"}, }; // OrganizationsTypeEnum -export const OrganizationsTypeEnum = { - Group: { text: '集团', color: '#007bff', value: 'Group' }, - Company: { text: '公司', color: '#28a745', value: 'Company' }, - ManagementOffice: { - text: '管理处', - color: '#ffc107', - value: 'ManagementOffice', - }, - Department: { text: '部门', color: '#dc3545', value: 'Department' }, +export const OrganizationsTypeEnum= { + 'Group': {"text":"集团","color":"#007bff","value":"Group"}, + 'Company': {"text":"公司","color":"#28a745","value":"Company"}, + 'ManagementOffice': {"text":"管理处","color":"#ffc107","value":"ManagementOffice"}, + 'Department': {"text":"部门","color":"#dc3545","value":"Department"}, }; -// PatrolRoutesGenerationMethodEnum -export const PatrolRoutesGenerationMethodEnum = { - Daily: { text: '按天', color: '#007bff', value: 'Daily' }, - Weekly: { text: '按周', color: '#28a745', value: 'Weekly' }, - Monthly: { text: '按月', color: '#ffc107', value: 'Monthly' }, -}; - -// PatrolTaskLocationsStatusEnum -export const PatrolTaskLocationsStatusEnum = { - Incomplete: { text: '未完成', color: '#ff9800', value: 'Incomplete' }, - Completed: { text: '已完成', color: '#4caf50', value: 'Completed' }, -}; - -// PatrolTasksCreateTypeEnum -export const PatrolTasksCreateTypeEnum = { - Auto: { text: '定时生成', color: '#2196f3', value: 'Auto' }, - Manual: { text: '手动创建', color: '#4caf50', value: 'Manual' }, -}; - -// PatrolTasksStatusEnum -export const PatrolTasksStatusEnum = { - Unassigned: { text: '未分配', color: '#9e9e9e', value: 'Unassigned' }, - Pending: { text: '待执行', color: '#ff9800', value: 'Pending' }, - InProgress: { text: '进行中', color: '#2196f3', value: 'InProgress' }, - Completed: { text: '已完成', color: '#4caf50', value: 'Completed' }, - Canceled: { text: '已取消', color: '#f44336', value: 'Canceled' }, - Overdue: { text: '已超期', color: '#e91e63', value: 'Overdue' }, -}; - -// QuestionsTypeEnum -export const QuestionsTypeEnum = { - Score: { text: '评分题', color: '#4caf50', value: 'Score' }, - Fill: { text: '填空题', color: '#2196f3', value: 'Fill' }, -}; - -// RefundsStatusEnum -export const RefundsStatusEnum = { - Pending: { text: '待审批', color: '#ff9800', value: 'Pending' }, - Reviewing: { text: '审核中', color: '#2196f3', value: 'Reviewing' }, - Approved: { text: '已审批', color: '#9c27b0', value: 'Approved' }, - Processing: { text: '退款中', color: '#00bcd4', value: 'Processing' }, - Completed: { text: '已退款', color: '#4caf50', value: 'Completed' }, - PartialRefund: { text: '部分退款', color: '#8bc34a', value: 'PartialRefund' }, - Rejected: { text: '已拒绝', color: '#f44336', value: 'Rejected' }, - Failed: { text: '退款失败', color: '#e91e63', value: 'Failed' }, - Cancelled: { text: '已取消', color: '#9e9e9e', value: 'Cancelled' }, -}; - -// RefundsTypeEnum -export const RefundsTypeEnum = { - HouseOrder: { text: '物业账单', color: '#2196f3', value: 'HouseOrder' }, - Bill: { text: '账单退款', color: '#4caf50', value: 'Bill' }, - ContractBill: { text: '合同退款', color: '#ff9800', value: 'ContractBill' }, - RenovationApply: { - text: '退保证金', - color: '#86aac3ff', - value: 'RenovationApply', - }, - HouseDoorCard: { text: '门禁退款', color: '#9c27b0', value: 'HouseDoorCard' }, - HouseWorkOrder: { - text: '工单退款', - color: '#00bcd4', - value: 'HouseWorkOrder', - }, - Other: { text: '其他退款', color: '#607d8b', value: 'Other' }, -}; - -// RenovationAppliesAcceptanceStatusEnum -export const RenovationAppliesAcceptanceStatusEnum = { - PendingAcceptance: { - text: '待验收', - color: '#f1c40f', - value: 'PendingAcceptance', - }, - Accepted: { text: '验收合格', color: '#2ecc71', value: 'Accepted' }, - Rejected: { text: '验收不合格', color: '#e74c3c', value: 'Rejected' }, - Cancelled: { text: '已取消', color: '#95a5a6', value: 'Cancelled' }, -}; - -// RenovationAppliesConstructionStatusEnum -export const RenovationAppliesConstructionStatusEnum = { - PendingConstruction: { - text: '待施工', - color: '#f1c40f', - value: 'PendingConstruction', - }, - NormalConstruction: { - text: '正常施工', - color: '#2ecc71', - value: 'NormalConstruction', - }, - StoppedConstruction: { - text: '已停工', - color: '#e74c3c', - value: 'StoppedConstruction', - }, - CompletedConstruction: { - text: '已竣工', - color: '#3498db', - value: 'CompletedConstruction', - }, -}; - -// RenovationAppliesProcessTypeEnum -export const RenovationAppliesProcessTypeEnum = { - OwnerProcess: { text: '业主办理', color: '#3498db', value: 'OwnerProcess' }, - AgentProcess: { text: '代理人办理', color: '#9b59b6', value: 'AgentProcess' }, -}; - -// RenovationAppliesRenovationContentEnum -export const RenovationAppliesRenovationContentEnum = { - PartialRenovation: { - text: '局部装修', - color: '#f39c12', - value: 'PartialRenovation', - }, - FullHouseRenovation: { - text: '全屋装修', - color: '#2ecc71', - value: 'FullHouseRenovation', - }, - PartialRefurbishment: { - text: '部分翻新', - color: '#3498db', - value: 'PartialRefurbishment', - }, -}; - -// RenovationAppliesStatusEnum -export const RenovationAppliesStatusEnum = { - Draft: { text: '暂存', color: '#f39c12', value: 'Draft' }, - Pending: { text: '审核中', color: '#faad14', value: 'Pending' }, - Approved: { text: '已完成', color: '#52c41a', value: 'Approved' }, - Rejected: { text: '驳回', color: '#f5222d', value: 'Rejected' }, - Cancelled: { text: '作废', color: '#9b59b6', value: 'Cancelled' }, -}; - -// RenovationAppliesTypeEnum -export const RenovationAppliesTypeEnum = { - SelfRenovation: { text: '自装', color: '#1abc9c', value: 'SelfRenovation' }, - RenovationCompany: { - text: '装修公司', - color: '#e67e22', - value: 'RenovationCompany', - }, -}; - -// ResourceOrdersPaymentStatusEnum -export const ResourceOrdersPaymentStatusEnum = { - Unpaid: { text: '未支付', color: '#f59e0b', value: 'Unpaid' }, - Paid: { text: '已支付', color: '#10b981', value: 'Paid' }, - Refunded: { text: '已退款', color: '#3b82f6', value: 'Refunded' }, -}; - -// ResourceOrdersStatusEnum -export const ResourceOrdersStatusEnum = { - Locked: { text: '已锁定', color: '#8b5cf6', value: 'Locked' }, - Reserved: { text: '已预约', color: '#3b82f6', value: 'Reserved' }, - Used: { text: '已使用', color: '#10b981', value: 'Used' }, - Overed: { text: '已结束', color: '#fca5a5', value: 'Overed' }, - Refunding: { text: '退订中', color: '#f59e0b', value: 'Refunding' }, - Refunded: { text: '已退订', color: '#ef4444', value: 'Refunded' }, - Closed: { text: '已关闭', color: '#6b7280', value: 'Closed' }, -}; - -// ResourceTypesTypeEnum -export const ResourceTypesCategoryEnum = { - Advertising: { text: '广告', color: '#ff9800', value: 'Advertising' }, - Venue: { text: '场地', color: '#4caf50', value: 'Venue' }, -}; - -// ResourcesChannelEnum -export const ResourcesChannelEnum = { - Consumer: { text: 'ToC', color: '#3b82f6', value: 'Consumer' }, - Business: { text: 'ToB', color: '#10b981', value: 'Business' }, -}; - -// ResourcesOpenDaysEnum -export const ResourcesOpenDaysEnum = { - Monday: { text: '星期一', color: '#3b82f6', value: 'Monday' }, - Tuesday: { text: '星期二', color: '#3b82f6', value: 'Tuesday' }, - Wednesday: { text: '星期三', color: '#3b82f6', value: 'Wednesday' }, - Thursday: { text: '星期四', color: '#3b82f6', value: 'Thursday' }, - Friday: { text: '星期五', color: '#3b82f6', value: 'Friday' }, - Saturday: { text: '星期六', color: '#10b981', value: 'Saturday' }, - Sunday: { text: '星期日', color: '#ef4444', value: 'Sunday' }, -}; - -// ResourcesReservationRuleEnum -export const ResourcesReservationRuleEnum = { - ByDay: { text: '按天', color: '#3b82f6', value: 'ByDay' }, - BySession: { text: '按场次', color: '#10b981', value: 'BySession' }, -}; - -// ResourcesReservationStatusEnum -export const ResourcesReservationStatusEnum = { - Fully: { text: '全部预约', color: '#4caf50', value: 'Fully' }, - Partially: { text: '部分预约', color: '#ff9800', value: 'Partially' }, - Not: { text: '无预约', color: '#f44336', value: 'Not' }, +// 退款状态枚举 +export const RefundsStatusEnum= { + 'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"}, + 'Reviewing': {"text":"审核中","color":"#2196f3","value":"Reviewing"}, + 'Approved': {"text":"已审批","color":"#9c27b0","value":"Approved"}, + 'Processing': {"text":"退款中","color":"#00bcd4","value":"Processing"}, + 'Completed': {"text":"已退款","color":"#4caf50","value":"Completed"}, + 'PartialRefund': {"text":"部分退款","color":"#8bc34a","value":"PartialRefund"}, + 'Rejected': {"text":"已拒绝","color":"#f44336","value":"Rejected"}, + 'Failed': {"text":"退款失败","color":"#e91e63","value":"Failed"}, + 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"}, }; // 性别 -export const SexEnum = { - Male: { text: '男', color: '#0000ff', value: 'Male' }, - FeMale: { text: '女', color: '#ff0000', value: 'FeMale' }, -}; - -// SurveyReleasesTypeEnum -export const SurveyReleasesTypeEnum = { - Manual: { text: '手动发布', color: '#4caf50', value: 'Manual' }, - Timing: { text: '定时发布', color: '#2196f3', value: 'Timing' }, +export const SexEnum= { + 'Male': {"text":"男","color":"#0000ff","value":"Male"}, + 'FeMale': {"text":"女","color":"#ff0000","value":"FeMale"}, }; // SysModuleEnum -export const SysModuleEnum = { - Admin: { text: '管理员', color: '#cf1322', value: 'Admin' }, - Customer: { text: '客户', color: '#d4b106', value: 'Customer' }, +export const SysModuleEnum= { + 'Admin': {"text":"管理员","color":"#cf1322","value":"Admin"}, + 'Customer': {"text":"客户","color":"#d4b106","value":"Customer"}, + 'Company': {"text":"机构","color":"#1890ff","value":"Company"}, }; // SysPermissionsTypeEnum -export const SysPermissionsTypeEnum = { - Directory: { text: '目录', color: '#6d7e14', value: 'Directory' }, - Page: { text: '页面', color: '#4d9a13', value: 'Page' }, - Tab: { text: '页签', color: '#1d6fb8', value: 'Tab' }, - Button: { text: '按钮', color: '#97224f', value: 'Button' }, -}; - -// 来访事由 -export const VisitReasonEnum = { - Visit: { text: '拜访', color: '#2196f3', value: 'Visit' }, - Business: { text: '商务', color: '#3f51b5', value: 'Business' }, - Interview: { text: '面试', color: '#9c27b0', value: 'Interview' }, - Private: { text: '私人', color: '#e91e63', value: 'Private' }, - Express: { text: '快递', color: '#00bcd4', value: 'Express' }, - Renovation: { text: '装修', color: '#ff5722', value: 'Renovation' }, - Other: { text: '其他', color: '#607d8b', value: 'Other' }, -}; - -// 访客申请状态 -export const VisitorAppliesStatusEnum = { - Pending: { text: '审核中', color: '#ff9800', value: 'Pending' }, - Approved: { text: '已通过', color: '#4caf50', value: 'Approved' }, - Rejected: { text: '已驳回', color: '#f44336', value: 'Rejected' }, - Expired: { text: '已失效', color: '#9e9e9e', value: 'Expired' }, -}; - -// 访客申请类型 -export const VisitorApplyTypeEnum = { - invite: { text: '业主邀请', color: '#2196f3', value: 'invite' }, - register: { text: '访客登记', color: '#ff9800', value: 'register' }, -}; - -// 通行码状态 -export const VisitorCodeStatusEnum = { - unused: { text: '未使用', color: '#2196f3', value: 'unused' }, - used: { text: '已使用', color: '#4caf50', value: 'used' }, - expired: { text: '已过期', color: '#f44336', value: 'expired' }, -}; - -// 访客扫码类型 -export const VisitorScanTypeEnum = { - enter: { text: '进入', color: '#4caf50', value: 'enter' }, - exit: { text: '离开', color: '#f44336', value: 'exit' }, +export const SysPermissionsTypeEnum= { + 'Directory': {"text":"目录","color":"#6d7e14","value":"Directory"}, + 'Page': {"text":"页面","color":"#4d9a13","value":"Page"}, + 'Button': {"text":"按钮","color":"#97224f","value":"Button"}, }; // WechatAuthsPlatformEnum -export const WechatAuthsPlatformEnum = { - MiniProgram: { text: '微信小程序', color: '#3b82f6', value: 'MiniProgram' }, - MpOfficial: { text: '微信公众号', color: '#22c55e', value: 'MpOfficial' }, - WorkWechat: { text: '企业微信', color: '#6366f1', value: 'WorkWechat' }, +export const WechatAuthsPlatformEnum= { + 'MiniProgram': {"text":"微信小程序","color":"#3b82f6","value":"MiniProgram"}, + 'MpOfficial': {"text":"微信公众号","color":"#22c55e","value":"MpOfficial"}, + 'WorkWechat': {"text":"企业微信","color":"#6366f1","value":"WorkWechat"}, }; + diff --git a/src/pages/approval/all/index.tsx b/src/pages/approval/all/index.tsx deleted file mode 100644 index b41698a..0000000 --- a/src/pages/approval/all/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Show from './modals/Show'; - -export default function Index({ title = '审批列表' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Approval.ApprovalInstances.List, - ) - } - headerTitle={title} - columns={[ - MyColumns.ID({ search: false }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - { - title: '申请人', - dataIndex: ['applicant', 'name'], - search: false, - }, - { - title: '当前审批人', - dataIndex: ['approval_records', 'approver_name'], - search: false, - render: (_, item: any) => - `${item?.approval_records?.[0]?.company_employee?.name || ''}-${ - item?.approval_records?.[0]?.company_employee?.phone || '' - }`, - }, - - { - title: '项目ID', - dataIndex: 'asset_projects_id', - hidden: true, - }, - { - title: '申请人', - dataIndex: 'applicant_name', - hidden: true, - }, - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/all/modals/Show.tsx b/src/pages/approval/all/modals/Show.tsx deleted file mode 100644 index 71509a9..0000000 --- a/src/pages/approval/all/modals/Show.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - renderTextHelper, -} from '@/common'; - -import { Apis } from '@/gen/Apis'; -import { - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; -import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, Space, Steps } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={() => { - if (props?.item?.id) { - Apis.Approval.ApprovalInstances.Show({ - id: props.item?.model_id, - }).then((res) => { - form.setFieldsValue({ - info_display: res?.data, - }); - }); - } - }} - columns={[ - { - // title: '登记信息', - dataIndex: 'info_display', - valueType: 'text', - renderFormItem: (_, config) => ( - -
- {/* 退款详情 */} - {config?.value?.type === 'Refund' && ( - - - - {config?.value?.title || '-'} - - - - - - - {config?.value?.model?.refund_amount || '-'} - 元 - - - - - {config?.value?.model?.payer_name || '-'}| - {config?.value?.model?.payer_bank || '-'}| - {config?.value?.model?.payer_account || '-'} - - - {config?.value?.model?.payee_name || '-'} - {config?.value?.model?.payee_bank || '-'} - {config?.value?.model?.payee_account || '-'} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - - )} - {/* 合同详情 */} - {config?.value?.type === 'Contract' && ( - - - - {config?.value?.model?.name || '-'} - - - - - {config?.value?.model?.code || '-'} - - { - navigate( - `/contract/contracts/show/${config?.value?.model?.id}`, - ); - }} - /> - - - - - - - - - - {config?.value?.model?.contract_type_name || '-'} - - - - - - {config?.value?.model?.total_amount || '-'} - - - {config?.value?.model?.deposit_amount || '无'} - - - {config?.value?.model?.sign_subject || '-'} - - - {config?.value?.model?.sign_department || '-'} - - - {config?.value?.model?.project_name || '-'} - - - {config?.value?.model?.contract_liaison || '-'} - - - {config?.value?.model?.start_time?.substring(0, 10)}至 - {config?.value?.model?.end_time?.substring(0, 10)} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - {config?.value?.model?.attachments.map((item: any) => { - const handleDownload = async ( - e: React.MouseEvent, - ) => { - e.preventDefault(); - try { - const response = await fetch(item.url); - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = item.name; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - document.body.removeChild(a); - } catch (error) { - console.error('下载失败:', error); - // 如果下载失败,则在新窗口打开 - window.open(item.url, '_blank'); - } - }; - - return ( - - ); - })} - - - - )} - - - - - - item?.node_type === 'Approver' - ? { - title: `${ - item.company_employee?.name || '-' - }-${item?.company_employee?.phone}`, - description: `${ - item.status === 'Approved' - ? `通过 - ${item.opinion || '-'} - ${ - item.created_at || '-' - }` - : '待审核' - }`, - } - : '', - )} - /> - - - - -
-
- ), - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/approval/approval/index.tsx b/src/pages/approval/approval/index.tsx deleted file mode 100644 index 0778764..0000000 --- a/src/pages/approval/approval/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; -import Audit from '../pending/modals/Audit'; - -export default function Index({ title = '待我审批' }) { - const navigate = useNavigate(); - return ( - - - MyProTableProps.request( - { - status: 'Pending', - ...params, - }, - sort, - Apis.Approval.ApprovalInstances.PendingList, - ) - } - headerTitle="待我审批" - columns={[ - MyColumns.ID({ search: false }), - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: ['approval_instance', 'type'], - title: '类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - { - title: '申请事项', - dataIndex: ['approval_instance', 'title'], - search: false, - }, - { - title: '关联项目', - dataIndex: ['approval_instance', 'asset_project', 'name'], - search: false, - }, - - { - title: '申请人', - dataIndex: 'approver_name', - }, - - // { - // title: '有效期', - // search: false, - // render: (_, item: any) => { - // return `${dayjs( - // item?.approval_instance?.model?.start_time, - // ).format('YYYY-MM-DD')}至${dayjs( - // item?.approval_instance?.model?.end_time, - // ).format('YYYY-MM-DD')}`; - // }, - // }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/cc_me/index.tsx b/src/pages/approval/cc_me/index.tsx deleted file mode 100644 index 4abacce..0000000 --- a/src/pages/approval/cc_me/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Show from './modals/Show'; -export default function Index({ title = '抄送我的' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Approval.ApprovalInstances.CcList, - ) - } - headerTitle={title} - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - - // { - // title: '项目ID', - // dataIndex: 'asset_projects_id', - // hidden: true, - // }, - // { - // title: '申请人', - // dataIndex: 'applicant_name', - // search: false, - // }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/cc_me/modals/Show.tsx b/src/pages/approval/cc_me/modals/Show.tsx deleted file mode 100644 index 7be7c65..0000000 --- a/src/pages/approval/cc_me/modals/Show.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - renderTextHelper, -} from '@/common'; - -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; -import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, Space, Steps } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={() => { - if (props?.item?.id) { - Apis.Approval.ApprovalInstances.Show({ - id: props.item?.model_id, - }).then((res) => { - form.setFieldsValue({ - info_display: res?.data, - }); - }); - } - }} - columns={[ - { - // title: '登记信息', - dataIndex: 'info_display', - valueType: 'text', - renderFormItem: (_, config) => ( - -
- {/* 退款详情 */} - {config?.value?.type === 'Refund' && ( - - - - {config?.value?.title || '-'} - - - - - - - {config?.value?.model?.refund_amount || '-'} - 元 - - - - - {config?.value?.model?.payer_name || '-'}| - {config?.value?.model?.payer_bank || '-'}| - {config?.value?.model?.payer_account || '-'} - - - {config?.value?.model?.payee_name || '-'} - {config?.value?.model?.payee_bank || '-'} - {config?.value?.model?.payee_account || '-'} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - - )} - {/* 合同详情 */} - {config?.value?.type === 'Contract' && ( - - - - {config?.value?.model?.name || '-'} - - - - - {config?.value?.model?.code || '-'} - - { - navigate( - `/contract/contracts/show/${config?.value?.model?.id}`, - ); - }} - /> - - - - - - - - - - {config?.value?.model?.contract_type_name || '-'} - - - - - - {config?.value?.model?.total_amount || '-'} - - - {config?.value?.model?.deposit_amount || '无'} - - - {config?.value?.model?.sign_subject || '-'} - - - {config?.value?.model?.sign_department || '-'} - - - {config?.value?.model?.project_name || '-'} - - - {config?.value?.model?.contract_liaison || '-'} - - - {config?.value?.model?.start_time?.substring(0, 10)}至 - {config?.value?.model?.end_time?.substring(0, 10)} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - {config?.value?.model?.attachments.map((item: any) => { - const handleDownload = async ( - e: React.MouseEvent, - ) => { - e.preventDefault(); - try { - const response = await fetch(item.url); - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = item.name; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - document.body.removeChild(a); - } catch (error) { - console.error('下载失败:', error); - // 如果下载失败,则在新窗口打开 - window.open(item.url, '_blank'); - } - }; - - return ( - - ); - })} - - - - )} - - - - - - item?.node_type === 'Approver' - ? { - title: `${ - item.company_employee?.name || '-' - }-${item?.company_employee?.phone}`, - description: `${ - item.status === 'Approved' - ? `通过 - ${item.opinion || '-'} - ${ - item.created_at || '-' - }` - : '待审核' - }`, - } - : '', - )} - /> - - - - -
-
- ), - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/approval/my_apply/index.tsx b/src/pages/approval/my_apply/index.tsx deleted file mode 100644 index 66b4ba7..0000000 --- a/src/pages/approval/my_apply/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -export default function Index({ title = '我的发起' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Approval.ApprovalInstances.MyApplyList, - ) - } - headerTitle={title} - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - { - title: '当前审批人', - dataIndex: ['approval_records', 'approver_name'], - search: false, - render: (_, item: any) => - `${item?.approval_records?.[0]?.company_employee?.name || ''}-${ - item?.approval_records?.[0]?.company_employee?.phone || '' - }`, - }, - // { - // title: '项目ID', - // dataIndex: 'asset_projects_id', - // hidden: true, - // }, - // { - // title: '申请人', - // dataIndex: 'applicant_name', - // search: false, - // }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - {/* */} - - Apis.Approval.ApprovalInstances.Cancel({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/my_processed/index.tsx b/src/pages/approval/my_processed/index.tsx deleted file mode 100644 index 9f33b99..0000000 --- a/src/pages/approval/my_processed/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Show from './modals/Show'; -export default function Index({ title = '我的发起' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Approval.ApprovalInstances.ProcessedList, - ) - } - headerTitle={title} - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: 'title', - search: false, - }, - { - title: '关联项目', - dataIndex: ['asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: 'status', - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: 'type', - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/my_processed/modals/Show.tsx b/src/pages/approval/my_processed/modals/Show.tsx deleted file mode 100644 index 6df6c25..0000000 --- a/src/pages/approval/my_processed/modals/Show.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyModalFormProps, - renderTextHelper, -} from '@/common'; - -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; -import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, Space, Steps } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={() => { - if (props?.item?.id) { - Apis.Approval.ApprovalInstances.Show({ - id: props.item?.model_id, - }).then((res) => { - form.setFieldsValue({ - info_display: res?.data, - }); - }); - } - }} - columns={[ - { - // title: '登记信息', - dataIndex: 'info_display', - valueType: 'text', - renderFormItem: (_, config) => ( - -
- {/* 退款详情 */} - {config?.value?.type === 'Refund' && ( - - - - {config?.value?.title || '-'} - - - - - - - {config?.value?.model?.refund_amount || '-'} - 元 - - - - - {config?.value?.model?.payer_name || '-'}| - {config?.value?.model?.payer_bank || '-'}| - {config?.value?.model?.payer_account || '-'} - - - {config?.value?.model?.payee_name || '-'} - {config?.value?.model?.payee_bank || '-'} - {config?.value?.model?.payee_account || '-'} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - - )} - {/* 合同详情 */} - {config?.value?.type === 'Contract' && ( - - - - {config?.value?.model?.name || '-'} - - - - - {config?.value?.model?.code || '-'} - - { - navigate( - `/contract/contracts/show/${config?.value?.model?.id}`, - ); - }} - /> - - - - - - - - - - {config?.value?.model?.contract_type_name || '-'} - - - - - - {config?.value?.model?.total_amount || '-'} - - - {config?.value?.model?.deposit_amount || '无'} - - - {config?.value?.model?.sign_subject || '-'} - - - {config?.value?.model?.sign_department || '-'} - - - {config?.value?.model?.project_name || '-'} - - - {config?.value?.model?.contract_liaison || '-'} - - - {config?.value?.model?.start_time?.substring(0, 10)}至 - {config?.value?.model?.end_time?.substring(0, 10)} - - - {props?.item?.applicant?.name || '-'}: - {props?.item?.applicant?.phone || '-'} - - - {props?.item?.created_at || '-'} - - - {config?.value?.model?.attachments.map((item: any) => { - const handleDownload = async ( - e: React.MouseEvent, - ) => { - e.preventDefault(); - try { - const response = await fetch(item.url); - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = item.name; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - document.body.removeChild(a); - } catch (error) { - console.error('下载失败:', error); - // 如果下载失败,则在新窗口打开 - window.open(item.url, '_blank'); - } - }; - - return ( - - ); - })} - - - - )} - - - - - - item?.node_type === 'Approver' - ? { - title: `${ - item.company_employee?.name || '-' - }-${item?.company_employee?.phone}`, - description: `${ - item.status === 'Approved' - ? `通过 - ${item.opinion || '-'} - ${ - item.created_at || '-' - }` - : '待审核' - }`, - } - : '', - )} - /> - - - - -
-
- ), - colProps: { span: 24 }, - }, - ]} - /> - ); -} diff --git a/src/pages/approval/pending/index.tsx b/src/pages/approval/pending/index.tsx deleted file mode 100644 index 8b94e03..0000000 --- a/src/pages/approval/pending/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ApprovalInstancesStatusEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Audit from './modals/Audit'; -export default function Index({ title = '我的待办' }) { - return ( - - - MyProTableProps.request( - { - ...params, - status: ApprovalInstancesStatusEnum.Pending.value, - }, - sort, - Apis.Approval.ApprovalInstances.PendingList, - ) - } - headerTitle={title} - columns={[ - MyColumns.ID({ search: false }), - { - title: '申请事项', - dataIndex: ['approval_instance', 'title'], - search: false, - }, - { - title: '关联项目', - dataIndex: ['approval_instance', 'asset_project', 'name'], - search: false, - }, - MyColumns.EnumTag({ - title: '状态', - dataIndex: ['approval_instance', 'status'], - // valueEnum: ApprovalInstancesStatusEnum, - }), - MyColumns.EnumTag({ - dataIndex: ['approval_instance', 'type'], - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Approval.ApprovalInstances.Cancel({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/pending/modals/Audit.tsx b/src/pages/approval/pending/modals/Audit.tsx deleted file mode 100644 index f0c4183..0000000 --- a/src/pages/approval/pending/modals/Audit.tsx +++ /dev/null @@ -1,326 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - renderTextHelper, - rulesHelper, -} from '@/common'; - -import { Apis } from '@/gen/Apis'; -import { - ContractsContractNatureEnum, - ContractsSettlementModeEnum, - ContractTemplatesIncomeExpenseTypeEnum, - HouseRegistersStatusEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; -import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; -import { - BetaSchemaForm, - ProCard, - ProDescriptions, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space, Steps } from 'antd'; - -export default function Update(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - - // 监听status字段变化,动态设置默认审批意见 - const handleStatusChange = (changedValues: any) => { - if (changedValues.status) { - if (changedValues.status === HouseRegistersStatusEnum.Approved.value) { - form.setFieldsValue({ opinion: '同意' }); - } else if ( - changedValues.status === HouseRegistersStatusEnum.Rejected.value - ) { - form.setFieldsValue({ opinion: '不同意' }); - } - } - }; - - return ( - - {...MyModalFormProps.props} - title={props.title} - trigger={} - wrapperCol={{ span: 24 }} - width="600px" - key={new Date().getTime()} - form={form} - onOpenChange={() => { - if (props?.item?.id) { - Apis.Approval.ApprovalInstances.Show({ - id: props.item?.approval_instances_id, - }).then((res) => { - form.setFieldsValue({ - info_display: res?.data, - }); - }); - } - }} - initialValues={{ - // 默认选择通过,审批意见为同意 - status: HouseRegistersStatusEnum.Approved.value, - opinion: '同意', - }} - onValuesChange={handleStatusChange} - onFinish={async (values: any) => - Apis.Approval.ApprovalInstances.Approve({ - record_id: props.item?.id ?? 0, - ...values, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - // title: '登记信息', - dataIndex: 'info_display', - valueType: 'text', - renderFormItem: (_, config) => ( - -
- {/* 退款详情 */} - {config?.value?.type === 'Refund' && ( - - - - {config?.value?.title || '-'} - - - - - - - {config?.value?.model?.refund_amount || '-'} - 元 - - - - - {config?.value?.model?.payer_name || '-'}| - {config?.value?.model?.payer_bank || '-'}| - {config?.value?.model?.payer_account || '-'} - - - {config?.value?.model?.payee_name || '-'} - {config?.value?.model?.payee_bank || '-'} - {config?.value?.model?.payee_account || '-'} - - - - {props?.item?.created_at || '-'} - - - - )} - {/* 合同详情 */} - {config?.value?.type === 'Contract' && ( - - - - {config?.value?.model?.name || '-'} - - - - - {config?.value?.model?.code || '-'} - - { - navigate( - `/contract/contracts/show/${config?.value?.model?.id}`, - ); - }} - /> - - - - - - - - - - {config?.value?.model?.contract_type_name || '-'} - - - - - - {config?.value?.model?.total_amount || '-'} - - - {config?.value?.model?.deposit_amount || '无'} - - - {config?.value?.model?.sign_subject || '-'} - - - {config?.value?.model?.sign_department || '-'} - - - {config?.value?.model?.project_name || '-'} - - - {config?.value?.model?.contract_liaison || '-'} - - - {config?.value?.model?.start_time?.substring(0, 10)}至 - {config?.value?.model?.end_time?.substring(0, 10)} - - - {props?.item?.created_at || '-'} - - - {config?.value?.model?.attachments.map((item: any) => { - const handleDownload = async ( - e: React.MouseEvent, - ) => { - e.preventDefault(); - try { - const response = await fetch(item.url); - const blob = await response.blob(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = item.name; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - document.body.removeChild(a); - } catch (error) { - console.error('下载失败:', error); - // 如果下载失败,则在新窗口打开 - window.open(item.url, '_blank'); - } - }; - - return ( - - ); - })} - - - - )} - - - - - - item?.node_type === 'Approver' - ? { - title: `${ - item.company_employee?.name || '-' - }-${item?.company_employee?.phone}`, - description: `${ - item.status === 'Approved' - ? `通过 - ${item.opinion || '-'} - ${ - item.created_at || '-' - }` - : '待审核' - }`, - } - : '', - )} - /> - - - - -
-
- ), - colProps: { span: 24 }, - }, - { - valueType: 'group', - // title: '审核操作', - columns: [ - MyFormItems.EnumRadio({ - key: 'status', - title: '审核操作', - colProps: { span: 24 }, - valueEnum: () => { - let obj: any = JSON.parse( - JSON.stringify(HouseRegistersStatusEnum), - ); - delete obj.Pending; - return obj; - }, - required: true, - }), - { - valueType: 'dependency', - name: ['status'], - columns: ({ status }) => { - return status === 'Rejected' - ? [ - { - title: '审批意见', - dataIndex: 'opinion', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - ] - : [ - { - title: '审批意见', - dataIndex: 'opinion', - valueType: 'textarea', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 24 }, - }, - ]; - }, - }, - ], - }, - ]} - /> - ); -} diff --git a/src/pages/approval/templates/index.tsx b/src/pages/approval/templates/index.tsx deleted file mode 100644 index b4e8fed..0000000 --- a/src/pages/approval/templates/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { - MyButtons, - MyColumns, - MyPageContainer, - MyProTableProps, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from './modals/Create'; -import Update from './modals/Update'; - -export default function Index({ title = '审批模板' }) { - return ( - - - MyProTableProps.request( - params, - sort, - Apis.Approval.ApprovalTemplates.List, - ) - } - headerTitle={title} - toolBarRender={(action) => [ - , - ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '业务类型', - dataIndex: 'type', - // valueEnum: ApprovalTemplatesTypeEnum, - }), - { - title: '模版名称', - dataIndex: 'name', - }, - { - title: '模版编码', - dataIndex: 'code', - search: false, - }, - - MyColumns.ToggleEnabled({ - onToggleEnabled: Apis.Approval.ApprovalTemplates.ToggleEnabled, - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - - - - Apis.Approval.ApprovalTemplates.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - - ); -} diff --git a/src/pages/approval/templates/modals/Create.tsx b/src/pages/approval/templates/modals/Create.tsx deleted file mode 100644 index 408f373..0000000 --- a/src/pages/approval/templates/modals/Create.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ApprovalTemplateNodesNodeTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function Create(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - return ( - - {...MyModalFormProps.props} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - width="700px" - key={new Date().getTime()} - form={form} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - trigger={} - onFinish={async (values) => - Apis.Approval.ApprovalTemplates.Store({ - ...values, - is_enabled: true, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - required: true, - colProps: { span: 24 }, - }), - { - key: 'name', - title: '模板名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'code', - title: '模板编码', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - valueType: 'formList', - dataIndex: 'nodes', - title: '设置审批节点', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'node_type', - title: `类型`, - valueEnum: ApprovalTemplateNodesNodeTypeEnum, - colProps: { span: 5 }, - formItemProps: { - ...rulesHelper.text, - }, - }), - { - title: '节点名称', - key: 'name', - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - }, - }, - - // MyFormItems.EnumSelect({ - // key: 'approve_type', - // title: `审批方式`, - // valueEnum: ApprovalTemplateNodesApproveTypeEnum, - // colProps: { span: 5 }, - // }), - - { - valueType: 'dependency', - name: ['node_type'], - columns: ({ node_type }) => { - return [ - Selects.Employees({ - key: 'members', - title: `审批人员`, - colProps: { span: 13 }, - fieldProps: { - mode: 'multiple', - maxCount: - node_type === - ApprovalTemplateNodesNodeTypeEnum.Approver.value - ? 1 - : 9, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - { - title: '备注', - key: 'description', - colProps: { span: 24 }, - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/approval/templates/modals/Update.tsx b/src/pages/approval/templates/modals/Update.tsx deleted file mode 100644 index ef65277..0000000 --- a/src/pages/approval/templates/modals/Update.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { ApprovalTemplateNodesNodeTypeEnum } 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={`编辑${props.title}`} - trigger={} - key={new Date().getTime()} - wrapperCol={{ span: 24 }} - width="700px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - Apis.Approval.ApprovalTemplates.Show({ - id: props.item?.id ?? 0, - }).then((res: any) => { - form.setFieldsValue({ - ...res?.data, - nodes: res?.data?.approval_template_nodes?.map((item: any) => ({ - ...item, - members: item?.approval_template_node_members?.map( - (member: any) => member?.company_employees_id, - ), - })), - }); - }); - } - }} - onFinish={async (values) => - Apis.Approval.ApprovalTemplates.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '业务类型', - // valueEnum: ApprovalTemplatesTypeEnum, - required: true, - colProps: { span: 24 }, - }), - { - key: 'name', - title: '名称', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - { - key: 'code', - title: '模板编码', - formItemProps: { ...rulesHelper.text }, - colProps: { span: 12 }, - }, - - { - valueType: 'formList', - dataIndex: 'nodes', - title: '审批节点', - fieldProps: { - copyIconProps: false, - // deleteIconProps: false, - }, - formItemProps: { - ...rulesHelper.array, - wrapperCol: { span: 24 }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - MyFormItems.EnumSelect({ - key: 'node_type', - title: `类型`, - valueEnum: ApprovalTemplateNodesNodeTypeEnum, - colProps: { span: 5 }, - formItemProps: { - ...rulesHelper.text, - }, - }), - { - title: '节点名称', - key: 'name', - colProps: { span: 6 }, - formItemProps: { - ...rulesHelper.text, - }, - }, - { - valueType: 'dependency', - name: ['node_type'], - columns: ({ node_type }) => { - return [ - Selects.Employees({ - key: 'members', - title: `审批人员`, - colProps: { span: 13 }, - fieldProps: { - mode: 'multiple', - maxCount: - node_type === - ApprovalTemplateNodesNodeTypeEnum.Approver.value - ? 1 - : 9, - maxTagTextLength: 3, - }, - }), - ]; - }, - }, - ], - }, - ], - }, - { - title: '备注', - key: 'description', - colProps: { span: 24 }, - valueType: 'textarea', - }, - ]} - /> - ); -} diff --git a/src/pages/asset/announcement/index.tsx b/src/pages/asset/announcement/index.tsx index 6969fa9..5b7648b 100644 --- a/src/pages/asset/announcement/index.tsx +++ b/src/pages/asset/announcement/index.tsx @@ -96,11 +96,12 @@ export default function Index({ title = '项目公告' }) { { title: '关联项目', dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, { title: '公告标题', diff --git a/src/pages/asset/asset_list/table/ConvenienceServices.tsx b/src/pages/asset/asset_list/table/ConvenienceServices.tsx index 39222ef..dc16337 100644 --- a/src/pages/asset/asset_list/table/ConvenienceServices.tsx +++ b/src/pages/asset/asset_list/table/ConvenienceServices.tsx @@ -40,11 +40,12 @@ export default function Index({ ...rest }) { { title: '关联项目', dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, MyColumns.EnumTag({ title: '类型', diff --git a/src/pages/asset/project_configuration/table/ConvenienceServices.tsx b/src/pages/asset/project_configuration/table/ConvenienceServices.tsx index 50706ed..3a95656 100644 --- a/src/pages/asset/project_configuration/table/ConvenienceServices.tsx +++ b/src/pages/asset/project_configuration/table/ConvenienceServices.tsx @@ -35,11 +35,12 @@ export default function Index({ ...rest }) { { title: '关联项目', dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, MyColumns.EnumTag({ title: '类型', diff --git a/src/pages/asset/services/index.tsx b/src/pages/asset/services/index.tsx index 73022e3..3c65950 100644 --- a/src/pages/asset/services/index.tsx +++ b/src/pages/asset/services/index.tsx @@ -66,11 +66,12 @@ export default function Index({ title = '便民服务' }) { { title: '关联项目', dataIndex: ['asset_project', 'name'], - search: { - transform: (value) => { - return { project_name: value }; - }, - }, + // search: { + // transform: (value) => { + // return { project_name: value }; + // }, + // }, + search: false, }, MyColumns.EnumTag({ title: '类型', diff --git a/src/pages/bills/all_bills/audit/index.tsx b/src/pages/bills/all_bills/audit/index.tsx index b7c06ed..bf22dec 100644 --- a/src/pages/bills/all_bills/audit/index.tsx +++ b/src/pages/bills/all_bills/audit/index.tsx @@ -1,9 +1,6 @@ import { MyColumns, MyProTableProps, useCurrentPermissions } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - BillPaymentsStatusEnum, - HouseOrdersPaymentMethodEnum, -} from '@/gen/Enums'; +import { HouseOrdersPaymentMethodEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import Review from './modals/Review'; @@ -40,7 +37,7 @@ export default function Index() { title: '状态', dataIndex: 'status', search: false, - valueEnum: BillPaymentsStatusEnum, + // valueEnum: BillPaymentsStatusEnum, }), MyColumns.EnumTag({ title: '支付方式', diff --git a/src/pages/bills/all_bills/list/index.tsx b/src/pages/bills/all_bills/list/index.tsx index 7f1c8b7..3bc7117 100644 --- a/src/pages/bills/all_bills/list/index.tsx +++ b/src/pages/bills/all_bills/list/index.tsx @@ -1,11 +1,5 @@ import { MyColumns, MyProTableProps, useCurrentPermissions } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - BillPaymentsTypeEnum, - BillsStatusEnum, - ContractBillsCostTypeEnum, - HouseOrdersPaymentMethodEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Space } from 'antd'; import PayCreate from './modals/PayCreate'; @@ -44,24 +38,24 @@ export default function Index() { MyColumns.EnumTag({ title: '状态', dataIndex: 'status', - valueEnum: BillsStatusEnum, + // valueEnum: BillsStatusEnum, }), MyColumns.EnumTag({ title: '支付方式', dataIndex: 'payment_method', - valueEnum: HouseOrdersPaymentMethodEnum, + // valueEnum: HouseOrdersPaymentMethodEnum, search: false, }), MyColumns.EnumTag({ title: '费用项目', dataIndex: 'type', - valueEnum: BillPaymentsTypeEnum, + // valueEnum: BillPaymentsTypeEnum, search: false, }), MyColumns.EnumTag({ title: '费用类型', dataIndex: 'flow_type', - valueEnum: ContractBillsCostTypeEnum, + // valueEnum: ContractBillsCostTypeEnum, search: false, }), { diff --git a/src/pages/bills/house_bills/index.tsx b/src/pages/bills/house_bills/index.tsx index dd64cf0..79048f8 100644 --- a/src/pages/bills/house_bills/index.tsx +++ b/src/pages/bills/house_bills/index.tsx @@ -6,12 +6,7 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - ApprovalTemplatesTypeEnum, - HouseBillsBillStatusEnum, - HouseBillsTypeEnum, - RefundsTypeEnum, -} from '@/gen/Enums'; +import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space } from 'antd'; @@ -59,14 +54,20 @@ export default function Index({ title = '账单明细' }) { }, }, render: (_, record) => { - return ( + return record.asset_houses_id ? ( { - navigate(`/bills/summary/show/${record.asset_houses_id}`); + record.asset_houses_id + ? navigate( + `/bills/summary/show/${record.asset_houses_id}`, + ) + : ''; }} /> + ) : ( + '车位| ' + record.asset_car_port.full_name ); }, }, @@ -146,9 +147,9 @@ export default function Index({ title = '账单明细' }) { item={{ ...item, // 跟据发起的页面传递的type来判断退款类型 - type: RefundsTypeEnum.HouseOrder.value, + // type: RefundsTypeEnum.HouseOrder.value, // 审批模板的类型 - approval_type: ApprovalTemplatesTypeEnum.Refund.value, + // approval_type: ApprovalTemplatesTypeEnum.Refund.value, total_paid_amount: item.total_paid_amount, }} reload={action?.reload} diff --git a/src/pages/bills/house_bills/modals/BillRefund.tsx b/src/pages/bills/house_bills/modals/BillRefund.tsx index afcbf7a..97cccd5 100644 --- a/src/pages/bills/house_bills/modals/BillRefund.tsx +++ b/src/pages/bills/house_bills/modals/BillRefund.tsx @@ -7,7 +7,6 @@ import { } from '@/common'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { ApprovalTemplateNodesNodeTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; import { useRef, useState } from 'react'; @@ -159,7 +158,7 @@ export default function Update(props: MyBetaModalFormProps) { MyFormItems.EnumSelect({ key: 'node_type', // title: `类型`, - valueEnum: ApprovalTemplateNodesNodeTypeEnum, + // valueEnum: ApprovalTemplateNodesNodeTypeEnum, colProps: { span: 5 }, formItemProps: { ...rulesHelper.text, @@ -194,12 +193,12 @@ export default function Update(props: MyBetaModalFormProps) { fieldProps: { mode: 'multiple', showSearch: true, - maxCount: - node_type === - ApprovalTemplateNodesNodeTypeEnum.Approver - .value - ? 1 - : 9, + // maxCount: + // node_type === + // ApprovalTemplateNodesNodeTypeEnum.Approver + // .value + // ? 1 + // : 9, maxTagTextLength: 3, labelRender: (res: any) => { console.log(res, '222'); diff --git a/src/pages/bills/order_online/index.tsx b/src/pages/bills/order_online/index.tsx new file mode 100644 index 0000000..c73acbd --- /dev/null +++ b/src/pages/bills/order_online/index.tsx @@ -0,0 +1,209 @@ +import { + MyColumns, + MyImportModal, + MyPageContainer, + MyProTableProps, + useCurrentPermissions, +} from '@/common'; +import { MyExport } from '@/components/MyExport'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + HouseBillsBillStatusEnum, + HouseOrdersPaymentMethodEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import { useState } from 'react'; +import SerialNumber from './modals/SerialNumber'; +import SerialNumbers from './modals/SerialNumbers'; +import Show from './modals/Show'; + +export default function Index({ title = '线上收款单' }) { + const [getParams, setParams] = useState({}); + const [selectedRows, setSelectedRows] = useState([]); + const getCurrentPermissions = useCurrentPermissions(); + + let toolBarRender = (action: any) => { + return getCurrentPermissions({ + import: ( + + ), + export: ( + + ), + serialNumbers: ( + + ), + }); + }; + let tableRender = (item: any, action: any) => { + return getCurrentPermissions({ + show: , + serialNumber: ( + + ), + }); + }; + return ( + + { + setSelectedRows(selectedRows); + }, + }} + request={async (params, sort) => { + setParams(params); + return MyProTableProps.request( + { + ...params, + // payment_methods: [ + // HouseOrdersPaymentMethodEnum.TongLian.value, + // HouseOrdersPaymentMethodEnum.WeChat.value, + // HouseOrdersPaymentMethodEnum.Alipay.value, + // ], + }, + sort, + Apis.HouseOrder.HouseOrders.List, + ); + }} + toolBarRender={(action: any) => [toolBarRender(action)]} + columns={[ + // MyColumns.ID({ search: false }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + { + title: '收款单ID', + dataIndex: 'id', + search: false, + }, + MyColumns.Boolean({ + dataIndex: 'is_serial_number', + title: '关联流水', + hidden: true, + }), + + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + search: false, + }, + { + title: '房屋', + dataIndex: ['asset_house', 'full_name'], + render: (_, record) => + record.house_order_items?.[0]?.asset_house?.full_name || '-', + search: { + transform: (value) => { + return { full_name: value }; + }, + }, + }, + MyColumns.EnumTag({ + title: '收款方式', + dataIndex: 'payment_method', + valueEnum: HouseOrdersPaymentMethodEnum, + }), + MyColumns.EnumTag({ + title: '支付状态', + dataIndex: 'order_status', + valueEnum: HouseBillsBillStatusEnum, + search: false, + }), + + { + title: '收款金额', + dataIndex: 'actual_paid_amount', + search: false, + }, + { + title: '收款手续费', + dataIndex: 'fee', + search: false, + }, + + { + title: '收款日期', + dataIndex: 'paid_time', + valueType: 'dateRange', + hidden: true, + }, + { + title: '收款日期', + dataIndex: 'paid_time', + valueType: 'date', + // render: (_, record) => { + // return record?.paid_time?.substring(0, 10); + // }, + search: false, + }, + { + title: '收款账户', + dataIndex: ['receipt_account', 'company_name'], + // search: false, + }, + { + title: '收款银行', + dataIndex: ['receipt_account', 'company_bank'], + // search: false, + }, + { + title: '收款账号', + dataIndex: ['receipt_account', 'company_account'], + // search: false, + }, + { + title: '银行流水', + dataIndex: 'accept_serial_number', + // search: false, + }, + { + title: '关联编号', + dataIndex: 'payment_no', + search: false, + }, + // { + // title: '录入人', + // dataIndex: 'creator', + // search: false, + // }, + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + <>{tableRender(item, action)} + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/bills/order_online/modals/Audit.tsx b/src/pages/bills/order_online/modals/Audit.tsx new file mode 100644 index 0000000..c947d60 --- /dev/null +++ b/src/pages/bills/order_online/modals/Audit.tsx @@ -0,0 +1,244 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyColumns, + MyFormItems, + MyModalFormProps, + MyProTableProps, + renderTextHelper, + rulesHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { + HouseBillsTypeEnum, + HouseOrdersAuditStatusEnum, + HouseOrdersPaymentMethodEnum, + HouseRegistersStatusEnum, +} from '@/gen/Enums'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, + ProTable, +} from '@ant-design/pro-components'; +import { Form, message, Space } from 'antd'; +export default function Audit(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + // wrapperCol={{ span: 24 }} + layout="horizontal" + labelCol={{ span: 0 }} + wrapperCol={{ span: 24 }} + labelAlign="left" + width="800px" + key={new Date().getTime()} + form={form} + onFinish={async (values: any) => + Apis.HouseOrder.HouseOrders.Audit({ + id: props.item?.id ?? 0, + accept_name: props.item?.receipt_account?.company_name || '', + accept_bank: props.item?.receipt_account?.company_bank || '', + accept_account: props.item?.receipt_account?.company_account || '', + ...values, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: () => ( + + + + + + {props?.item?.house_order_items?.[0].asset_house + ?.full_name || '-'} + + + + + {props?.item?.receipt_account?.company_name} ; + {props?.item?.receipt_account?.company_bank} ; + {props?.item?.receipt_account?.company_account} + + {/* + {props?.item?.accept_serial_number || '未提供'} + */} + + {props?.item?.actual_paid_amount || '-'} + + + {props?.item?.creator || '-'}- + {props?.item?.creator_phone || '-'} + + + {props?.item?.created_at || '-'} + + + + + record?.id || index} + size="small" + columns={[ + { + title: '关联账单', + render: (_, record) => { + return `${record.house_bill.year}-${String( + record.house_bill.month, + ).padStart(2, '0')}`; + }, + }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: ['house_bill', 'type'], + valueEnum: HouseBillsTypeEnum, + }), + { + title: '未收金额', + dataIndex: 'amount', + search: false, + }, + { + title: '本次收取金额', + dataIndex: 'paid_amount', + search: false, + }, + ]} + /> + + + ), + colProps: { span: 24 }, + }, + + { + valueType: 'group', + title: '', + columns: [ + MyFormItems.EnumRadio({ + key: 'payment_method', + title: '收款方式', + colProps: { span: 24 }, + valueEnum: () => { + const obj: Record = JSON.parse( + JSON.stringify(HouseOrdersPaymentMethodEnum), + ); + delete obj.WeChat; + delete obj.Alipay; + delete obj.TongLian; + delete obj.Prepayment; + return obj; + }, + formItemProps: { + ...rulesHelper.text, + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + }, + initialValue: props?.item?.payment_method, + }), + { + key: 'paid_time', + title: '收款日期', + valueType: 'date', + colProps: { span: 24 }, + formItemProps: { + ...rulesHelper.text, + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + }, + initialValue: props?.item?.paid_time + ? new Date(props?.item?.paid_time) + : undefined, + }, + ], + }, + + { + valueType: 'group', + // title: '审核操作', + columns: [ + MyFormItems.EnumRadio({ + key: 'audit_status', + title: '审核操作', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(HouseRegistersStatusEnum), + ); + delete obj.Pending; + return obj; + }, + formItemProps: { + ...rulesHelper.text, + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + }, + }), + + { + valueType: 'dependency', + name: ['audit_status'], + columns: ({ audit_status }) => { + return audit_status === + HouseOrdersAuditStatusEnum.Rejected.value + ? [ + { + title: '驳回原因', + dataIndex: 'reason', + valueType: 'textarea', + formItemProps: { + ...rulesHelper.text, + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + }, + colProps: { span: 24 }, + }, + ] + : [ + { + key: 'accept_serial_number', + title: '关联流水', + valueType: 'text', + colProps: { span: 24 }, + initialValue: props?.item?.accept_serial_number, + formItemProps: { + ...rulesHelper.text, + labelCol: { span: 4 }, + wrapperCol: { span: 20 }, + }, + fieldProps: { + placeholder: '请输入银行流水', + }, + }, + ]; + }, + }, + ], + }, + ]} + /> + ); +} diff --git a/src/pages/bills/order_online/modals/PayUpdate.tsx b/src/pages/bills/order_online/modals/PayUpdate.tsx new file mode 100644 index 0000000..a3267ff --- /dev/null +++ b/src/pages/bills/order_online/modals/PayUpdate.tsx @@ -0,0 +1,77 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { HouseOrdersPaymentMethodEnum } 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={`${props.title}更新`} + trigger={} + wrapperCol={{ span: 24 }} + width="800px" + key={new Date().getTime()} + form={form} + onOpenChange={(open: any) => { + if (open && props.item) { + form.setFieldsValue({ + ...props.item, + }); + } + }} + onFinish={async (values) => + Apis.Bill.HouseBills.Update({ ...values, id: props.item?.id ?? 0 }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + MyFormItems.EnumRadio({ + key: 'payment_method', + title: '收款方式', + colProps: { span: 10 }, + valueEnum: () => { + const obj: Record = JSON.parse( + JSON.stringify(HouseOrdersPaymentMethodEnum), + ); + delete obj.WeChat; + delete obj.Alipay; + delete obj.TongLian; + delete obj.Prepayment; + return obj; + }, + required: true, + }), + + { + key: 'paid_time', + title: '收款日期', + valueType: 'date', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 6 }, + }, + + { + colProps: { span: 24 }, + renderFormItem: () => ( + + 提示:确认后,需财务审核。 + + ), + }, + ]} + /> + ); +} diff --git a/src/pages/marketing/survey/modals/QuestionCategoriesUpdate.tsx b/src/pages/bills/order_online/modals/SerialNumber.tsx similarity index 50% rename from src/pages/marketing/survey/modals/QuestionCategoriesUpdate.tsx rename to src/pages/bills/order_online/modals/SerialNumber.tsx index 0d1c7dc..c8e92fc 100644 --- a/src/pages/marketing/survey/modals/QuestionCategoriesUpdate.tsx +++ b/src/pages/bills/order_online/modals/SerialNumber.tsx @@ -8,28 +8,30 @@ import { Apis } from '@/gen/Apis'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; -export default function QuestionCategoriesUpdate(props: MyBetaModalFormProps) { +export default function OrganizationHasProjects(props: MyBetaModalFormProps) { const [form] = Form.useForm(); return ( - + {...MyModalFormProps.props} - form={form} - title={`编辑${props.title}`} + title={`关联银行流水`} wrapperCol={{ span: 24 }} - key={new Date().getTime()} width="500px" - trigger={} + trigger={} + key={new Date().getTime()} + form={form} onOpenChange={(open: any) => { if (open && props.item) { - form.setFieldsValue(props.item); + form.setFieldsValue({ + ...props.item, + serial_number: props?.item?.accept_serial_number || '', + }); } }} - onFinish={async (values) => - Apis.Survey.QuestionCategories.Update({ + onFinish={async (values: any) => + Apis.HouseOrder.HouseOrders.UpdateSerialNumber({ ...values, - is_enabled: values?.is_enabled ? true : false, - id: props.item?.id ?? 0, + id: props?.item?.id, }) .then(() => { props.reload?.(); @@ -39,18 +41,12 @@ export default function QuestionCategoriesUpdate(props: MyBetaModalFormProps) { .catch(() => false) } columns={[ - { key: 'name', title: '名称', formItemProps: { ...rulesHelper.text } }, { - key: 'description', - title: '描述', - valueType: 'textarea', + key: 'serial_number', + title: '银行流水号', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 24 }, }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - }, - // MyFormItems.ColorPicker(), ]} /> ); diff --git a/src/pages/bills/order_online/modals/SerialNumbers.tsx b/src/pages/bills/order_online/modals/SerialNumbers.tsx new file mode 100644 index 0000000..ccbe0e0 --- /dev/null +++ b/src/pages/bills/order_online/modals/SerialNumbers.tsx @@ -0,0 +1,157 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +interface BatchSerialNumbersProps extends MyBetaModalFormProps { + items?: any[]; +} + +export default function BatchSerialNumbers(props: BatchSerialNumbersProps) { + const [form] = Form.useForm(); + const { items = [] } = props; + // 计算总收款金额 + const totalAmount = items.reduce((sum, item) => { + return sum + Number(item.actual_paid_amount || 0); + }, 0); + // 计算总收款手续费 + const totalFee = items.reduce((sum, item) => { + return sum + Number(item.fee || 0); + }, 0); + // 计算到账金额(总收款金额 - 总手续费) + const actualReceivedAmount = totalAmount - totalFee; + // 获取收款账号信息(所有项目都相同) + const receiptAccount = items[0]?.receipt_account || {}; + // 验证是否所有项目都有相同的收款账号 + const validateSameAccount = () => { + if (items.length === 0) return true; + + const firstAccount = items[0].receipt_account?.company_account; + return items.every( + (item) => item.receipt_account?.company_account === firstAccount, + ); + }; + + return ( + + {...MyModalFormProps.props} + title={`关联银行流水`} + layout="horizontal" + labelCol={{ span: 6 }} + wrapperCol={{ span: 18 }} + labelAlign="left" + width="500px" + trigger={ + + } + key={new Date().getTime()} + form={form} + onOpenChange={(open: any) => { + if (open && items.length > 0) { + form.resetFields(); // 清空表单数据 + // 验证收款账号是否相同 + if (!validateSameAccount()) { + message.error('请选择相同收款账号的收款单'); + return false; + } + } + }} + onFinish={async (values: any) => { + // 再次验证收款账号是否相同 + if (!validateSameAccount()) { + message.error('请选择相同收款账号的收款单'); + return false; + } + + return Apis.HouseOrder.HouseOrders.BatchUpdateSerialNumber({ + ...values, + ids: items.map((item) => item.id), + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false); + }} + columns={[ + { + key: 'company_name', + title: '收款账户', + valueType: 'text', + initialValue: receiptAccount.company_name || '-', + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + { + key: 'company_bank', + title: '收款银行', + valueType: 'text', + initialValue: receiptAccount.company_bank || '-', + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + { + key: 'company_account', + title: '收款账号', + valueType: 'text', + initialValue: receiptAccount.company_account || '-', + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + { + key: 'total_amount', + title: '收款单汇总', + valueType: 'number', + initialValue: totalAmount, + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + { + key: 'totalFee', + title: '手续费汇总', + valueType: 'number', + initialValue: totalFee, + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + { + key: 'actual_received_amount', + title: '应到账金额', + valueType: 'number', + initialValue: actualReceivedAmount, + fieldProps: { + disabled: true, + }, + colProps: { span: 24 }, + }, + + { + key: 'serial_number', + title: '银行流水号', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/bills/order_online/modals/Show.tsx b/src/pages/bills/order_online/modals/Show.tsx new file mode 100644 index 0000000..8d23001 --- /dev/null +++ b/src/pages/bills/order_online/modals/Show.tsx @@ -0,0 +1,115 @@ +import { + MyBetaModalFormProps, + MyColumns, + MyProTableProps, + renderTextHelper, +} from '@/common'; +import { MyModal } from '@/components/MyModal'; + +import { + HouseBillsTypeEnum, + HouseOrdersAuditStatusEnum, + HouseOrdersPaymentMethodEnum, +} from '@/gen/Enums'; +import { ProCard, ProDescriptions, ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; + +export default function Show(props: MyBetaModalFormProps) { + return ( + getShow()} + node={ + + + + + + {props?.item?.house_order_items?.[0].asset_house?.full_name || + '-'} + + + + + {props?.item?.receipt_account?.company_name} ; + {props?.item?.receipt_account?.company_bank} ; + {props?.item?.receipt_account?.company_account} + + + {props?.item?.accept_serial_number || '-'} + + + {Object.values(HouseOrdersPaymentMethodEnum).find( + (item) => item.value === props?.item?.payment_method, + )?.text || '-'} + + + {props?.item?.paid_time || '-'} + + + + {props?.item?.actual_paid_amount || '-'} + + + {props?.item?.creator || '-'}- + {props?.item?.creator_phone || '-'} + + + {props?.item?.created_at || '-'} + + + + + + {props?.item?.reason || '-'} + + + + + record?.id || index} + size="small" + columns={[ + { + title: '关联账单', + render: (_, record) => { + return `${record.house_bill.year}-${String( + record.house_bill.month, + ).padStart(2, '0')}`; + }, + }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: ['house_bill', 'type'], + valueEnum: HouseBillsTypeEnum, + }), + { + title: '未收金额', + dataIndex: 'amount', + search: false, + }, + { + title: '本次收取金额', + dataIndex: 'paid_amount', + search: false, + }, + ]} + /> + + + } + /> + ); +} diff --git a/src/pages/charge/standard/pages/CreateCarPortFee.tsx b/src/pages/charge/standard/pages/CreateCarPortFee.tsx index d65bf92..a39e9a9 100644 --- a/src/pages/charge/standard/pages/CreateCarPortFee.tsx +++ b/src/pages/charge/standard/pages/CreateCarPortFee.tsx @@ -45,7 +45,7 @@ export default function CreatePropertyFee(props: MyBetaModalFormProps) { Apis.HouseCharge.HouseChargeStandards.Store({ ...values, charge_type: HouseBillsTypeEnum.CarPortFee.value, - type: 'House', + type: 'CarPort', is_apportionment: values.charge_type === HouseBillsTypeEnum.SharedWaterFee.value || values.charge_type === HouseBillsTypeEnum.SharedElectricityFee.value diff --git a/src/pages/charge/tasks/modals/TaskShow.tsx b/src/pages/charge/tasks/modals/TaskShow.tsx index 7a5e1d1..4dc87c5 100644 --- a/src/pages/charge/tasks/modals/TaskShow.tsx +++ b/src/pages/charge/tasks/modals/TaskShow.tsx @@ -39,15 +39,15 @@ export default function TaskShow(props: MyBetaModalFormProps) { { title: '关联房屋', dataIndex: 'full_name', - render: (_, record) => ( - { - navigate(`/bills/summary/show/${record.asset_houses_id}`); - }} - /> - ), + // render: (_, record) => ( + // { + // navigate(`/bills/summary/show/${record.asset_houses_id}`); + // }} + // /> + // ), search: { transform: (value) => ({ full_name: value }) }, }, { diff --git a/src/pages/company/employees/index.tsx b/src/pages/company/employees/index.tsx index 49f24f5..f5842c3 100644 --- a/src/pages/company/employees/index.tsx +++ b/src/pages/company/employees/index.tsx @@ -7,11 +7,10 @@ import { useCurrentPermissions, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { CompanyEmployeesTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { Dropdown, Space } from 'antd'; import Change from './modals/Change'; -import CompletePhone from './modals/CompletePhone'; + import EmployeeCreate from './modals/EmployeeCreate'; import EmployeeUpdate from './modals/EmployeeUpdate'; import Role from './modals/Role'; @@ -41,14 +40,14 @@ export default function Index({ title = '员工管理' }) { key: '2', label: ( Apis.Company.CompanyEmployees.ResetPassword({ id: item.id, - password: 'Gc#123', + password: '12345678', }).then(() => action?.reload()) } /> @@ -92,14 +91,7 @@ export default function Index({ title = '员工管理' }) { Apis.Company.CompanyEmployees.List, ) } - toolBarRender={(action) => [ - , - toolBarRender(action), - ]} + toolBarRender={(action) => [toolBarRender(action)]} columns={[ MyColumns.ID({ search: false, @@ -121,32 +113,33 @@ export default function Index({ title = '员工管理' }) { title: '手机号', dataIndex: 'phone', }, - { - title: '角色', - dataIndex: 'roles', - renderText: renderTextHelper.TagList, - hideInSearch: true, - }, { title: '岗位', dataIndex: ['position', 'name'], search: false, }, - MyColumns.EnumTag({ - title: '来源', - dataIndex: 'type', - valueEnum: CompanyEmployeesTypeEnum, - }), - MyColumns.SoftDelete({ - title: '启/禁用', - onRestore: Apis.Company.CompanyEmployees.Restore, - onSoftDelete: Apis.Company.CompanyEmployees.SoftDelete, - search: false, - setPermissions: getCurrentPermissions({ - enableDisable: true, - }), - }), - MyColumns.UpdatedAt(), + { + title: '系统角色', + dataIndex: 'roles', + renderText: renderTextHelper.TagList, + hideInSearch: true, + }, + + // MyColumns.EnumTag({ + // title: '来源', + // dataIndex: 'type', + // // valueEnum: CompanyEmployeesTypeEnum, + // }), + // MyColumns.SoftDelete({ + // title: '启/禁用', + // onRestore: Apis.Company.CompanyEmployees.Restore, + // onSoftDelete: Apis.Company.CompanyEmployees.SoftDelete, + // search: false, + // setPermissions: getCurrentPermissions({ + // enableDisable: true, + // }), + // }), + // MyColumns.UpdatedAt(), // MyColumns.CreatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( diff --git a/src/pages/company/employees/modals/CompletePhone.tsx b/src/pages/company/employees/modals/CompletePhone.tsx deleted file mode 100644 index c811904..0000000 --- a/src/pages/company/employees/modals/CompletePhone.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { MyBetaModalFormProps, MyButtons, MyModalFormProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function CompletePhone(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - // 验证多行手机号 - const validatePhones = (_: any, value?: string) => { - if (!value || !value.trim()) { - return Promise.reject('请输入手机号'); - } - - const phones = value.trim().split(/\r?\n/).filter(Boolean); - if (phones.length === 0) { - return Promise.reject('请输入至少一个手机号'); - } - - if (phones.length > 20000) { - return Promise.reject('最多支持20000条数据'); - } - - const phoneRegex = /^1[3-9]\d{9}$/; - const invalidPhones = phones.filter((phone) => !phoneRegex.test(phone)); - - if (invalidPhones.length > 0) { - return Promise.reject( - `手机号格式不正确:${invalidPhones.slice(0, 3).join(', ')}${ - invalidPhones.length > 3 ? '...等' : '' - }`, - ); - } - - return Promise.resolve(); - }; - - return ( - - } - wrapperCol={{ span: 24 }} - width={600} - key={new Date().getTime()} - form={form} - onOpenChange={(open: boolean) => { - if (open) { - form.resetFields(); - } - }} - onFinish={async (values: any) => { - try { - // 按换行分割手机号并过滤空值 - const phoneArray = values.phoneInput - .trim() - .split(/\r?\n/) - .filter(Boolean); - - // 提交多行手机号 - await Apis.Company.CompanyEmployees.CompletePhone({ - phone: phoneArray, - }); - - props.reload?.(); - message.success('手机号补全成功'); - return true; - } catch (error) { - console.error('补全手机号失败:', error); - message.error('补全手机号失败,请重试'); - return false; - } - }} - columns={[ - { - key: 'phoneInput', - title: - '请在输入框里粘贴手机号。每行一个值,不超过2000条(excel中的数据,可直接复制/粘贴)', - valueType: 'textarea', - fieldProps: { - placeholder: '请输入手机号,多个【按回车键】换行隔开', - autoSize: { minRows: 8, maxRows: 12 }, - style: { resize: 'vertical' }, - }, - colProps: { span: 24 }, - formItemProps: { - rules: [{ validator: validatePhones }], - }, - }, - ]} - /> - ); -} diff --git a/src/pages/company/employees/modals/EmployeeCreate.tsx b/src/pages/company/employees/modals/EmployeeCreate.tsx index dd6dac4..a5b6728 100644 --- a/src/pages/company/employees/modals/EmployeeCreate.tsx +++ b/src/pages/company/employees/modals/EmployeeCreate.tsx @@ -8,7 +8,7 @@ import { import { Selects } from '@/components/Select'; import { SysSelects } from '@/components/SysSelects'; import { Apis } from '@/gen/Apis'; -import { CompanyEmployeesTypeEnum, SexEnum } from '@/gen/Enums'; +import { SexEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -35,8 +35,8 @@ export default function Create(props: MyBetaModalFormProps) { Apis.Company.CompanyEmployees.Store({ ...values, companies_id: values?.companies_id || props?.item?.id, - type: CompanyEmployeesTypeEnum.External.value, - password: 'Gc#123', + // type: CompanyEmployeesTypeEnum.External.value, + password: '12345678', organizations_id: values?.organizations_id?.[values.organizations_id.length - 1], }) diff --git a/src/pages/company/employees/modals/Role.tsx b/src/pages/company/employees/modals/Role.tsx index ddde765..088e3ef 100644 --- a/src/pages/company/employees/modals/Role.tsx +++ b/src/pages/company/employees/modals/Role.tsx @@ -15,7 +15,7 @@ export default function Update(props: MyBetaModalFormProps) { {...MyModalFormProps.props} title={`角色调整`} - trigger={} + trigger={} wrapperCol={{ span: 24 }} width="500px" key={new Date().getTime()} diff --git a/src/pages/goods_releases/list/index.tsx b/src/pages/goods_releases/list/index.tsx index f5aad95..8ec7314 100644 --- a/src/pages/goods_releases/list/index.tsx +++ b/src/pages/goods_releases/list/index.tsx @@ -5,10 +5,6 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { - GoodsReleasesAuditStatusEnum, - GoodsReleasesPassedTypeEnum, -} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space, Tooltip } from 'antd'; @@ -51,7 +47,7 @@ export default function Index({ title = '物品放行' }) { MyColumns.EnumTag({ title: '申请状态', dataIndex: 'status', - valueEnum: GoodsReleasesAuditStatusEnum, + // valueEnum: GoodsReleasesAuditStatusEnum, }), { title: '房屋', @@ -71,7 +67,7 @@ export default function Index({ title = '物品放行' }) { MyColumns.EnumTag({ title: '通行类型', dataIndex: 'passed_type', - valueEnum: GoodsReleasesPassedTypeEnum, + // valueEnum: GoodsReleasesPassedTypeEnum, }), { @@ -163,10 +159,11 @@ export default function Index({ title = '物品放行' }) { MyColumns.Option({ render: (_, item: any, index, action) => ( - {item?.status === + {/* {item?.status === GoodsReleasesAuditStatusEnum.Pending.value && ( - )} + )} */} + {props?.item?.created_at || '-'} - + {/* - + */}
@@ -114,19 +111,19 @@ export default function Update(props: MyBetaModalFormProps) { { valueType: 'group', columns: [ - MyFormItems.EnumRadio({ - key: 'status', - title: '审核操作', - colProps: { span: 24 }, - valueEnum: () => { - let obj: any = JSON.parse( - JSON.stringify(GoodsReleasesPassedTypeEnum), - ); - delete obj.Pending; - return obj; - }, - required: true, - }), + // MyFormItems.EnumRadio({ + // key: 'status', + // title: '审核操作', + // colProps: { span: 24 }, + // valueEnum: () => { + // let obj: any = JSON.parse( + // JSON.stringify(GoodsReleasesPassedTypeEnum), + // ); + // delete obj.Pending; + // return obj; + // }, + // required: true, + // }), { valueType: 'dependency', name: ['status'], diff --git a/src/pages/goods_releases/list/pages/create.tsx b/src/pages/goods_releases/list/pages/create.tsx index e639830..77da937 100644 --- a/src/pages/goods_releases/list/pages/create.tsx +++ b/src/pages/goods_releases/list/pages/create.tsx @@ -6,7 +6,6 @@ import { } from '@/common'; import MyModalsHouseSelectList from '@/components/ModalsHouseSelectList'; import { Apis } from '@/gen/Apis'; -import { GoodsReleasesPassedTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Form, message, Space } from 'antd'; @@ -99,8 +98,8 @@ export default function Index({ title = '物品放行申请' }) { }, MyFormItems.EnumRadio({ key: 'passed_type', - title: '装修类型', - valueEnum: GoodsReleasesPassedTypeEnum, + title: '通行类型', + // valueEnum: GoodsReleasesPassedTypeEnum, colProps: { span: 6 }, formItemProps: { ...rulesHelper.text }, }), diff --git a/src/pages/goods_releases/list/pages/review.tsx b/src/pages/goods_releases/list/pages/review.tsx index b59bddb..093339c 100644 --- a/src/pages/goods_releases/list/pages/review.tsx +++ b/src/pages/goods_releases/list/pages/review.tsx @@ -5,7 +5,6 @@ import { rulesHelper, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { GoodsReleasesPassedTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; import { useNavigate, useSearchParams } from '@umijs/max'; import { Form, Space } from 'antd'; @@ -96,7 +95,7 @@ export default function Index({ title = '物品放行审核' }) { MyFormItems.EnumRadio({ key: 'passed_type', title: '装修类型', - valueEnum: GoodsReleasesPassedTypeEnum, + // valueEnum: GoodsReleasesPassedTypeEnum, colProps: { span: 8 }, formItemProps: { ...rulesHelper.text }, }), diff --git a/src/pages/marketing/survey/components/QuestionCategoriesList.tsx b/src/pages/marketing/survey/components/QuestionCategoriesList.tsx deleted file mode 100644 index 3c0b56b..0000000 --- a/src/pages/marketing/survey/components/QuestionCategoriesList.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from '../modals/QuestionCategoriesCreate'; -import Update from '../modals/QuestionCategoriesUpdate'; - -export default function QuestionCategoriesList({ title = '题目分类' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - add: , - }, - 'MyQuestionCategoriesList', - ); - }; - - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - update: , - delete: ( - - Apis.Survey.QuestionCategories.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MyQuestionCategoriesList', - ); - }; - return ( - - MyProTableProps.request( - params, - sort, - Apis.Survey.QuestionCategories.List, - ) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - { dataIndex: 'name', title: '名称' }, - { dataIndex: 'description', title: '描述' }, - MyColumns.Boolean({ dataIndex: 'is_enabled', title: '是否启用' }), - MyColumns.Option({ - width: 120, - - render: (_, item: any, index, action) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/components/QuestionsList.tsx b/src/pages/marketing/survey/components/QuestionsList.tsx deleted file mode 100644 index 9672415..0000000 --- a/src/pages/marketing/survey/components/QuestionsList.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from '../modals/QuestionsCreate'; -import Update from '../modals/QuestionsUpdate'; - -export default function QuestionsList({ title = '题目' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - add: , - }, - 'MyQuestionsList', - ); - }; - - let tableRender = (item: any, action: any) => { - return ( - getCurrentPermissions({ - update: , - delete: ( - - Apis.Survey.Questions.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }), - 'MyQuestionsList' - ); - }; - return ( - - MyProTableProps.request(params, sort, Apis.Survey.Questions.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - { dataIndex: 'title', title: '题目' }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - valueEnum: QuestionsTypeEnum, - }), - { dataIndex: 'placeholder', title: '提示', search: false }, - MyColumns.Boolean({ - dataIndex: 'required', - title: '是否必答', - search: false, - }), - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - search: false, - }), - MyColumns.Option({ - width: 120, - render: (_, item: any, index, action) => ( - {tableRender(item, action)} - ), - }), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/components/SurveyReleasesList.tsx b/src/pages/marketing/survey/components/SurveyReleasesList.tsx deleted file mode 100644 index 97b5aae..0000000 --- a/src/pages/marketing/survey/components/SurveyReleasesList.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { isInTimeRange } from '@/common/utils/day'; -import { Apis } from '@/gen/Apis'; -import { SurveyReleasesTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import Create from '../modals/SurveyReleasesCreate'; -import Update from '../modals/SurveyReleasesUpdate'; - -export default function SurveyReleasesList({ title = '问卷发布列表' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions( - { - add: , - }, - 'MySurveyReleasesList', - ); - }; - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - publish: ( - - Apis.Survey.SurveyReleases.Publish({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - cancel: ( - - Apis.Survey.SurveyReleases.Cancel({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - update: , - delete: ( - - Apis.Survey.SurveyReleases.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }, - 'MySurveyReleasesList', - ); - }; - return ( - - MyProTableProps.request(params, sort, Apis.Survey.SurveyReleases.List) - } - toolBarRender={(action) => [toolBarRender(action)]} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '问卷ID', - hidden: true, - dataIndex: 'surveys_id', - // search: { - // transform: (value) => { - // return { surveys_id: value }; - // }, - // }, - }, - MyColumns.EnumTag({ - title: '方式', - dataIndex: 'release_type', - valueEnum: SurveyReleasesTypeEnum, - }), - MyColumns.Boolean({ - title: '是否发布', - dataIndex: 'status', - }), - { dataIndex: ['survey', 'name'], title: '发布的问卷', search: false }, - { dataIndex: 'start_date', title: '开始时间', search: false }, - { dataIndex: 'end_date', title: '结束时间', search: false }, - MyColumns.CreatedAt(), - MyColumns.Option({ - render: (_, item: any, index, action) => ( - {tableRender(item, action)} - ), - }), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/components/SurveyResponsesList.tsx b/src/pages/marketing/survey/components/SurveyResponsesList.tsx deleted file mode 100644 index d4538ab..0000000 --- a/src/pages/marketing/survey/components/SurveyResponsesList.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import MyShow from '../modals/SurveyResponsesShow'; -export default function SurveyResponsesList({ title = '问卷回收' }) { - return ( - - MyProTableProps.request(params, sort, Apis.Survey.SurveyResponses.List) - } - columns={[ - MyColumns.ID({ - search: false, - }), - { dataIndex: ['survey', 'name'], title: '问卷', search: false }, - { dataIndex: 'survey_id', title: '问卷ID', hidden: true }, - { dataIndex: 'release_id', title: '发布ID', hidden: true }, - { dataIndex: 'customers_id', title: '客户ID', hidden: true }, - { dataIndex: 'customer_phone', title: '客户手机号', hidden: true }, - { - dataIndex: 'customer', - title: '回答客户', - search: false, - render: (_, item: any) => { - return `${item?.customer?.phone}_${item?.customer?.name}`; - }, - }, - { dataIndex: 'total_score', title: '总得分', search: false }, - MyColumns.CreatedAt(), - MyColumns.Option({ - width: 120, - render: (_, item: any) => , - }), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/components/SurveysList.tsx b/src/pages/marketing/survey/components/SurveysList.tsx deleted file mode 100644 index ec936e7..0000000 --- a/src/pages/marketing/survey/components/SurveysList.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { PlusOutlined } from '@ant-design/icons'; -import { ProTable } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Space } from 'antd'; - -export default function SurveysList({ title = '问卷设置' }) { - const navigate = useNavigate(); - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = () => { - return getCurrentPermissions( - { - add: ( - } - onClick={() => { - navigate('/marketing/survey/pages/create_surveys'); - }} - title="新增问卷" - /> - ), - }, - 'MySurveysList', - ); - }; - - let tableRender = (item: any, action: any) => { - return ( - getCurrentPermissions({ - update: ( - { - navigate(`/marketing/survey/pages/update_surveys?id=${item.id}`); - }} - title="编辑" - /> - ), - delete: ( - - Apis.Survey.Surveys.Delete({ id: item.id }).then(() => - action?.reload(), - ) - } - /> - ), - }), - 'MySurveysList' - ); - }; - - return ( - - MyProTableProps.request(params, sort, Apis.Survey.Surveys.List) - } - toolBarRender={() => [toolBarRender()]} - columns={[ - MyColumns.ID({ - search: false, - }), - { dataIndex: 'name', title: '问卷' }, - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - search: false, - }), - MyColumns.CreatedAt(), - MyColumns.Option({ - width: 120, - render: (_, item: any, index, action) => ( - {tableRender(item, action)} - ), - }), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/index.tsx b/src/pages/marketing/survey/index.tsx deleted file mode 100644 index 4f343c2..0000000 --- a/src/pages/marketing/survey/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; -import type { TabsProps } from 'antd'; -import { Tabs } from 'antd'; -import MyQuestionCategoriesList from './components/QuestionCategoriesList'; -import MyQuestionsList from './components/QuestionsList'; -import MySurveyReleasesList from './components/SurveyReleasesList'; -import MySurveyResponsesList from './components/SurveyResponsesList'; -import MySurveysList from './components/SurveysList'; -export default function Index({ title = '问卷调查' }) { - const getCurrentPermissions = useCurrentPermissions(); - const items: TabsProps['items'] = getCurrentPermissions({ - MySurveyReleasesList: { - key: 'MySurveyReleasesList', - label: '问卷发布', - children: , - }, - MySurveysList: { - key: 'MySurveysList', - label: '问卷设置', - children: , - }, - MySurveyResponsesList: { - key: 'MySurveyResponsesList', - label: '问卷回收', - children: , - }, - MyQuestionsList: { - key: 'MyQuestionsList', - label: '问卷题库', - children: , - }, - MyQuestionCategoriesList: { - key: 'MyQuestionCategoriesList', - label: '题目分类', - children: , - }, - }); - return ( - - - - ); -} diff --git a/src/pages/marketing/survey/modals/QuestionCategoriesCreate.tsx b/src/pages/marketing/survey/modals/QuestionCategoriesCreate.tsx deleted file mode 100644 index 04b5d89..0000000 --- a/src/pages/marketing/survey/modals/QuestionCategoriesCreate.tsx +++ /dev/null @@ -1,56 +0,0 @@ -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 QuestionCategoriesCreate(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - form={form} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - trigger={} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => - Apis.Survey.QuestionCategories.Store({ - ...values, - is_enabled: values?.is_enabled ? true : false, - }) - .then(() => { - props.reload?.(); - message.success(`添加${props.title}成功`); - return true; - }) - .catch(() => false) - } - columns={[ - { key: 'name', title: '名称', formItemProps: { ...rulesHelper.text } }, - { - key: 'description', - title: '描述', - valueType: 'textarea', - }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - }, - // MyFormItems.ColorPicker(), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/modals/QuestionsCreate.tsx b/src/pages/marketing/survey/modals/QuestionsCreate.tsx deleted file mode 100644 index fab3fcd..0000000 --- a/src/pages/marketing/survey/modals/QuestionsCreate.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function QuestionsCreate(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - form={form} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="600px" - trigger={} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => { - console.log(values); - return Apis.Survey.Questions.Store({ - ...values, - is_enabled: values?.is_enabled ? true : false, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '类型', - valueEnum: QuestionsTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects?.QuestionCategories({ - colProps: { span: 12 }, - required: true, - }), - { - key: 'title', - title: '题目', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'placeholder', - title: '提示', - colProps: { span: 12 }, - }, - { - key: 'max_length', - title: '回答最大字数', - valueType: 'digit', - fieldProps: { - style: { width: '100%' }, - }, - colProps: { span: 12, suffix: '个字' }, - }, - { - key: 'required', - title: '是否必答', - valueType: 'switch', - colProps: { span: 12 }, - }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - colProps: { span: 12 }, - }, - // MyFormItems.ColorPicker(), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/modals/QuestionsUpdate.tsx b/src/pages/marketing/survey/modals/QuestionsUpdate.tsx deleted file mode 100644 index 4b810d0..0000000 --- a/src/pages/marketing/survey/modals/QuestionsUpdate.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; - -export default function QuestionsUpdate(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - form={form} - title={`编辑${props.title}`} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - trigger={} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.Survey.Questions.Update({ - ...values, - is_enabled: values?.is_enabled ? true : false, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'type', - title: '类型', - valueEnum: QuestionsTypeEnum, - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }), - Selects?.QuestionCategories({ - colProps: { span: 12 }, - required: true, - }), - { - key: 'title', - title: '题目', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'placeholder', - title: '提示', - colProps: { span: 12 }, - }, - { - key: 'max_length', - title: '回答最大字数', - valueType: 'digit', - fieldProps: { - style: { width: '100%' }, - }, - colProps: { span: 12, suffix: '个字' }, - }, - { - key: 'required', - title: '是否必答', - valueType: 'switch', - colProps: { span: 12 }, - }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - colProps: { span: 12 }, - }, - // MyFormItems.ColorPicker(), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/modals/SurveyReleasesCreate.tsx b/src/pages/marketing/survey/modals/SurveyReleasesCreate.tsx deleted file mode 100644 index d916285..0000000 --- a/src/pages/marketing/survey/modals/SurveyReleasesCreate.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { SurveyReleasesTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -export default function SurveyReleasesCreate(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - form={form} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="600px" - trigger={} - onOpenChange={(open: any) => { - if (open) { - form.resetFields(); // 清空表单数据 - } - }} - onFinish={async (values) => { - console.log(values); - return Apis.Survey.SurveyReleases.Store({ - ...values, - }) - .then(() => { - props.reload?.(); - message.success(props.title + '成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.Surveys({ - colProps: { span: 24 }, - required: true, - }), - MyFormItems.EnumRadio({ - key: 'release_type', - title: '发布方式', - valueEnum: SurveyReleasesTypeEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'start_date', - title: '有效日期开始', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'end_date', - title: '有效日期结束', - colProps: { span: 12 }, - valueType: 'dateTime', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '封面图', - colProps: { span: 24 }, - max: 1, - }), - // MyFormItems.ColorPicker(), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/modals/SurveyReleasesUpdate.tsx b/src/pages/marketing/survey/modals/SurveyReleasesUpdate.tsx deleted file mode 100644 index 2c7eb04..0000000 --- a/src/pages/marketing/survey/modals/SurveyReleasesUpdate.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { SurveyReleasesTypeEnum } from '@/gen/Enums'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { Form, message } from 'antd'; -export default function SurveyReleasesCreate(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - - return ( - - {...MyModalFormProps.props} - form={form} - title={`添加${props.title}`} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="600px" - trigger={} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => { - console.log(values); - return Apis.Survey.SurveyReleases.Update({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - props.reload?.(); - message.success('编辑成功'); - return true; - }) - .catch(() => false); - }} - columns={[ - Selects?.Surveys({ - colProps: { span: 24 }, - required: true, - }), - MyFormItems.EnumRadio({ - key: 'release_type', - title: '发布方式', - valueEnum: SurveyReleasesTypeEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - key: 'start_date', - title: '有效日期开始', - valueType: 'dateTime', - colProps: { span: 12 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'end_date', - title: '有效日期结束', - colProps: { span: 12 }, - valueType: 'dateTime', - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.UploadImages({ - key: 'cover_image', - title: '封面图', - colProps: { span: 24 }, - max: 1, - }), - // MyFormItems.ColorPicker(), - ]} - /> - ); -} diff --git a/src/pages/marketing/survey/modals/SurveyResponsesShow.tsx b/src/pages/marketing/survey/modals/SurveyResponsesShow.tsx deleted file mode 100644 index 0b55c13..0000000 --- a/src/pages/marketing/survey/modals/SurveyResponsesShow.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { MyBetaModalFormProps } from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { List } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -const scoreInfo = { - '1': '非常不满意', - '2': '比较不满意', - '3': '满意', - '4': '比较满意', - '5': '非常满意', -}; - -export default function SurveyResponsesShow( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - }, -) { - const modalRef = useRef(); - const [data, setShow] = useState({}); - const loadShow = () => { - Apis.Survey.SurveyResponses.Show({ id: props?.item?.id }).then((res) => { - setShow(res?.data); - }); - }; - - return ( - { - loadShow(); - console.log(props?.item?.list); - }} - node={ - <> - ( - - - - )} - /> - - } - > - ); -} diff --git a/src/pages/marketing/survey/modals/SurveysSelectList.tsx b/src/pages/marketing/survey/modals/SurveysSelectList.tsx deleted file mode 100644 index 356ec8a..0000000 --- a/src/pages/marketing/survey/modals/SurveysSelectList.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { type TableProps } from 'antd'; -import { useRef, useState } from 'react'; -interface DataType { - key: React.Key; - id: React.Key; - is_enabled: boolean; -} -export default function SurveysSelectList( - props: MyBetaModalFormProps & { - onChange?: (selectedRows: DataType[]) => void; - }, -) { - const modalRef = useRef(); - const [getSelectedRow, setSelectedRow] = useState([]); - const rowSelection: TableProps['rowSelection'] = { - onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => { - setSelectedRow(selectedRows); - }, - getCheckboxProps: (record: DataType) => ({ - disabled: !record.is_enabled, // Column configuration not to be checked - checked: props?.item?.list?.some((item: any) => { - console.log(item, record); - return item?.id === record?.id; - }), - }), - defaultSelectedRowKeys: - props?.item?.list?.map((item: any) => item?.id) || [], - }; - return ( - { - setSelectedRow(props?.item?.list); - console.log(props?.item?.list); - }} - node={ - - MyProTableProps.request(params, sort, Apis.Survey.Questions.List) - } - rowSelection={{ type: 'checkbox', ...rowSelection }} - options={false} - tableAlertOptionRender={() => { - return ( - { - getSelectedRow?.forEach((item: any) => { - item.question_id = item?.id; - }); - props?.onChange?.(getSelectedRow); - modalRef.current?.close(); - }} - title="确定选项" - /> - ); - }} - columns={[ - MyColumns.ID({ - search: false, - }), - { dataIndex: 'title', title: '题目' }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - valueEnum: QuestionsTypeEnum, - }), - { dataIndex: 'placeholder', title: '提示', search: false }, - MyColumns.Boolean({ - dataIndex: 'required', - title: '是否必答', - search: false, - }), - MyColumns.Boolean({ - dataIndex: 'is_enabled', - title: '是否启用', - }), - ]} - /> - } - > - ); -} diff --git a/src/pages/marketing/survey/pages/create_surveys.tsx b/src/pages/marketing/survey/pages/create_surveys.tsx deleted file mode 100644 index 1bc7ab2..0000000 --- a/src/pages/marketing/survey/pages/create_surveys.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { - MyButtons, - MyColumns, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import type { ProColumns } from '@ant-design/pro-components'; -import { - BetaSchemaForm, - DragSortTable, - ProCard, -} from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useState } from 'react'; -import MySurveysSelectList from '../modals/SurveysSelectList'; -export default function Index({ title = '新增问卷' }) { - const [dataSource, setDataSource] = useState( - [], - ); - const [form] = Form.useForm(); - const navigate = useNavigate(); - - const columns: ProColumns[] = [ - { - title: '排序', - dataIndex: 'sort', - width: 60, - className: 'drag-visible', - }, - { - title: '题目', - dataIndex: 'title', - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - valueEnum: QuestionsTypeEnum, - }), - MyColumns.Boolean({ - dataIndex: 'required', - title: '是否必答', - search: false, - }), - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - setDataSource( - dataSource.filter((res: any) => res?.id !== item?.id), - ); - }} - /> - - ), - }), - ]; - - const handleDragSortEnd = ( - beforeIndex: number, - afterIndex: number, - newDataSource: any, - ) => { - console.log(newDataSource, 'newDataSource'); - setDataSource(newDataSource); - }; - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} -
- } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 4 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - onFinish={async (values: any) => - Apis.Survey.Surveys.Store({ - ...values, - questions: dataSource, - }) - .then(() => { - navigate(-1); - message.success('新增成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '问卷名称', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - colProps: { span: 24 }, - }, - { - key: 'description', - title: '问卷描述', - valueType: 'textarea', - colProps: { span: 24 }, - }, - - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - [ - { - setDataSource(e); - }} - />, - ]} - bordered - options={false} - columns={columns} - rowKey="id" - search={false} - pagination={false} - dataSource={dataSource || []} - dragSortKey="sort" - onDragSortEnd={handleDragSortEnd} - /> - - ); - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/marketing/survey/pages/update_surveys.tsx b/src/pages/marketing/survey/pages/update_surveys.tsx deleted file mode 100644 index 772b685..0000000 --- a/src/pages/marketing/survey/pages/update_surveys.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { - MyButtons, - MyColumns, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { QuestionsTypeEnum } from '@/gen/Enums'; -import type { ProColumns } from '@ant-design/pro-components'; -import { - BetaSchemaForm, - DragSortTable, - ProCard, -} from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, message, Space } from 'antd'; -import { useEffect, useState } from 'react'; -import MySurveysSelectList from '../modals/SurveysSelectList'; -export default function Index({ title = '新增问卷' }) { - const [data, setShow] = useState({}); - const [dataSource, setDataSource] = useState( - [], - ); - const [form] = Form.useForm(); - const navigate = useNavigate(); - - const columns: ProColumns[] = [ - { - title: '排序', - dataIndex: 'sort', - width: 60, - className: 'drag-visible', - }, - { - title: '题目', - dataIndex: 'title', - }, - MyColumns.EnumTag({ - title: '类型', - dataIndex: 'type', - valueEnum: QuestionsTypeEnum, - }), - MyColumns.Boolean({ - dataIndex: 'required', - title: '是否必答', - search: false, - }), - MyColumns.Option({ - render: (_, item: any, index) => ( - - { - setDataSource( - dataSource.filter((res: any) => res?.id !== item?.id), - ); - }} - /> - - ), - }), - ]; - - const handleDragSortEnd = ( - beforeIndex: number, - afterIndex: number, - newDataSource: any, - ) => { - console.log(newDataSource, 'newDataSource'); - setDataSource(newDataSource); - }; - - const [searchParams] = useSearchParams(); - - const loadShow = () => { - let paramsId: any = { id: searchParams.get('id') ?? 0 }; - Apis.Survey.Surveys.Show(paramsId).then((res) => { - res?.data?.questions_with_order?.forEach((k: any) => { - k.question_id = k?.id; - }); - setDataSource(res?.data?.questions_with_order || []); - setShow(res?.data); - form.setFieldsValue(res?.data); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [searchParams.get('id')]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} -
- } - enableTabs={false} - tabKey="charge-standards-create" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 4 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - onFinish={async (values: any) => - Apis.Survey.Surveys.Update({ - ...values, - questions: dataSource, - id: data?.id, - }) - .then(() => { - navigate(-1); - message.success('编辑成功'); - return true; - }) - .catch(() => false) - } - columns={[ - { - key: 'name', - title: '问卷名称', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'is_enabled', - title: '是否启用', - valueType: 'switch', - colProps: { span: 24 }, - }, - { - key: 'description', - title: '问卷描述', - valueType: 'textarea', - colProps: { span: 24 }, - }, - { - colProps: { span: 24 }, - renderFormItem: () => { - return ( - - [ - { - setDataSource(e); - }} - />, - ]} - bordered - options={false} - columns={columns} - rowKey="id" - search={false} - pagination={false} - dataSource={dataSource || []} - dragSortKey="sort" - onDragSortEnd={handleDragSortEnd} - /> - - ); - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/src/pages/meter/index.tsx b/src/pages/meter/index.tsx index b745318..dd5b8f4 100644 --- a/src/pages/meter/index.tsx +++ b/src/pages/meter/index.tsx @@ -1,28 +1,26 @@ -import { MyPageContainer, useCurrentPermissions } from '@/common'; +import { MyPageContainer } from '@/common'; import { useSearchParams } from '@umijs/max'; -import type { TabsProps } from 'antd'; import { Tabs } from 'antd'; import { useEffect, useState } from 'react'; import CommonMeter from './common_meter'; import HouseMeter from './house_meter'; -export default function Index({ title = '资源管理' }) { +export default function Index({ title = '仪表管理' }) { const [searchParams] = useSearchParams(); - const getCurrentPermissions = useCurrentPermissions(); - const [activeKey, setActiveKey] = useState('MyResources'); - const items: TabsProps['items'] = getCurrentPermissions({ - HouseMeter: { + + const items = [ + { key: 'HouseMeter', label: '房屋表', children: , }, - CommonMeter: { + { key: 'CommonMeter', label: '公摊表', children: , }, - }); + ]; useEffect(() => { if (searchParams?.get('key')) { setActiveKey(searchParams?.get('key') || '1'); diff --git a/src/pages/visitor_applies/index.tsx b/src/pages/visitor_applies/index.tsx index 6365f5e..b9a5935 100644 --- a/src/pages/visitor_applies/index.tsx +++ b/src/pages/visitor_applies/index.tsx @@ -5,7 +5,6 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; -import { VisitorAppliesStatusEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { message, Space } from 'antd'; import Review from './modals/Review'; @@ -35,7 +34,7 @@ export default function Index({ title = '访客预约' }) { MyColumns.EnumTag({ title: '申请状态', dataIndex: 'status', - valueEnum: VisitorAppliesStatusEnum, + // valueEnum: VisitorAppliesStatusEnum, }), { title: '房屋', diff --git a/src/pages/work_order/list/components/Complaint.tsx b/src/pages/work_order/list/components/Complaint.tsx index f194a5b..d60a4b5 100644 --- a/src/pages/work_order/list/components/Complaint.tsx +++ b/src/pages/work_order/list/components/Complaint.tsx @@ -170,7 +170,7 @@ export default function Index({ title = '客户投诉' }) { - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ + Apis.WorkOrder.HouseWorkOrders.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/work_order/list/components/EquipmentMaintenance.tsx b/src/pages/work_order/list/components/EquipmentMaintenance.tsx deleted file mode 100644 index c9c994a..0000000 --- a/src/pages/work_order/list/components/EquipmentMaintenance.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersLevelEnum, - HouseWorkOrdersLocationEnum, - HouseWorkOrdersStatusEnum, - HouseWorkOrdersTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import WorkOrderAssign from '../modals/WorkOrderAssign'; -import WorkOrderShow from '../modals/WorkOrderShow'; -import WorkOrderUpdate from '../modals/WorkOrderUpdate'; - -export default function Index({ title = '设备维保' }) { - return ( - - MyProTableProps.request( - { - ...params, - type: [HouseWorkOrdersTypeEnum.EquipmentMaintenance.value], - }, - sort, - Apis.WorkOrder.HouseWorkOrders.List, - ) - } - // toolBarRender={(action) => [ - // , - // ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '工单状态', - dataIndex: 'status', - valueEnum: HouseWorkOrdersStatusEnum, - }), - MyColumns.EnumTag({ - title: '工单类型', - dataIndex: 'type', - valueEnum: HouseWorkOrdersTypeEnum, - }), - MyColumns.EnumTag({ - title: '报修位置', - dataIndex: 'location', - valueEnum: HouseWorkOrdersLocationEnum, - }), - { - title: '房屋信息', - dataIndex: ['asset_house', 'full_name'], - search: false, - ellipsis: true, - }, - { - title: '工单描述', - dataIndex: 'content', - search: false, - width: 120, // 关键:固定列宽(若父容器过窄,可设 minWidth: 200 优先保证列宽) - render: (text) => ( -
- {text} -
- ), - }, - { - title: '附件', - dataIndex: 'attachments', - search: false, - render: (_, record) => { - if ( - !Array.isArray(record.attachments) || - record.attachments.length === 0 - ) { - return '无附件'; - } - return ( -
- {record.attachments.map((item: any, index: number) => { - if (item.type && item.type.includes('image')) { - return ( - - ); - } else if (item.type && item.type.includes('video')) { - return ( -
- ); - }, - }, - MyColumns.EnumTag({ - title: '分配状态', - dataIndex: 'assign_status', - valueEnum: HouseWorkOrdersAssignStatusEnum, - }), - MyColumns.EnumTag({ - title: '优先级', - dataIndex: 'level', - valueEnum: HouseWorkOrdersLevelEnum, - }), - { - 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) => ( - - - {item.status !== 'Completed' && ( - - )} - {item.assign_status === 'Unassigned' && ( - - )} - - - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/work_order/list/components/Incident.tsx b/src/pages/work_order/list/components/Incident.tsx index 9b1000b..babbd68 100644 --- a/src/pages/work_order/list/components/Incident.tsx +++ b/src/pages/work_order/list/components/Incident.tsx @@ -170,7 +170,7 @@ export default function Index({ title = '报事工单' }) { - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ + Apis.WorkOrder.HouseWorkOrders.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/work_order/list/components/Renovation.tsx b/src/pages/work_order/list/components/Renovation.tsx deleted file mode 100644 index f71e354..0000000 --- a/src/pages/work_order/list/components/Renovation.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersLevelEnum, - HouseWorkOrdersLocationEnum, - HouseWorkOrdersStatusEnum, - HouseWorkOrdersTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import WorkOrderAssign from '../modals/WorkOrderAssign'; -import WorkOrderShow from '../modals/WorkOrderShow'; -import WorkOrderUpdate from '../modals/WorkOrderUpdate'; - -export default function Index({ title = '装修工单' }) { - return ( - - MyProTableProps.request( - { - ...params, - type: [ - HouseWorkOrdersTypeEnum.RenovationInspection.value, - HouseWorkOrdersTypeEnum.RenovationAcceptance.value, - ], - }, - sort, - Apis.WorkOrder.HouseWorkOrders.List, - ) - } - // toolBarRender={(action) => [ - // , - // ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '工单状态', - dataIndex: 'status', - valueEnum: HouseWorkOrdersStatusEnum, - }), - MyColumns.EnumTag({ - title: '工单类型', - dataIndex: 'type', - valueEnum: HouseWorkOrdersTypeEnum, - }), - MyColumns.EnumTag({ - title: '报修位置', - dataIndex: 'location', - valueEnum: HouseWorkOrdersLocationEnum, - }), - { - title: '房屋信息', - dataIndex: ['asset_house', 'full_name'], - search: false, - ellipsis: true, - }, - { - title: '工单描述', - dataIndex: 'content', - search: false, - width: 120, // 关键:固定列宽(若父容器过窄,可设 minWidth: 200 优先保证列宽) - render: (text) => ( -
- {text} -
- ), - }, - { - title: '附件', - dataIndex: 'attachments', - search: false, - render: (_, record) => { - if ( - !Array.isArray(record.attachments) || - record.attachments.length === 0 - ) { - return '无附件'; - } - return ( -
- {record.attachments.map((item: any, index: number) => { - if (item.type && item.type.includes('image')) { - return ( - - ); - } else if (item.type && item.type.includes('video')) { - return ( -
- ); - }, - }, - MyColumns.EnumTag({ - title: '分配状态', - dataIndex: 'assign_status', - valueEnum: HouseWorkOrdersAssignStatusEnum, - }), - MyColumns.EnumTag({ - title: '优先级', - dataIndex: 'level', - valueEnum: HouseWorkOrdersLevelEnum, - }), - { - 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) => ( - - - {item.status !== 'Completed' && ( - - )} - {item.assign_status === 'Unassigned' && ( - - )} - - - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/work_order/list/components/Repair.tsx b/src/pages/work_order/list/components/Repair.tsx index 92fe2e1..b7814e5 100644 --- a/src/pages/work_order/list/components/Repair.tsx +++ b/src/pages/work_order/list/components/Repair.tsx @@ -172,7 +172,7 @@ export default function Index({ title = '工单管理' }) { )} - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ + Apis.WorkOrder.HouseWorkOrders.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/work_order/list/components/SecurityInspection.tsx b/src/pages/work_order/list/components/SecurityInspection.tsx deleted file mode 100644 index a97c506..0000000 --- a/src/pages/work_order/list/components/SecurityInspection.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { MyButtons, MyColumns, MyProTableProps } from '@/common'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersLevelEnum, - HouseWorkOrdersLocationEnum, - HouseWorkOrdersStatusEnum, - HouseWorkOrdersTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Image, Space } from 'antd'; -import WorkOrderAssign from '../modals/WorkOrderAssign'; -import WorkOrderShow from '../modals/WorkOrderShow'; -import WorkOrderUpdate from '../modals/WorkOrderUpdate'; - -export default function Index({ title = '安防巡检' }) { - return ( - - MyProTableProps.request( - { - ...params, - type: [HouseWorkOrdersTypeEnum.SecurityInspection.value], - }, - sort, - Apis.WorkOrder.HouseWorkOrders.List, - ) - } - // toolBarRender={(action) => [ - // , - // ]} - columns={[ - MyColumns.ID({ - search: false, - }), - MyColumns.EnumTag({ - title: '工单状态', - dataIndex: 'status', - valueEnum: HouseWorkOrdersStatusEnum, - }), - MyColumns.EnumTag({ - title: '工单类型', - dataIndex: 'type', - valueEnum: HouseWorkOrdersTypeEnum, - }), - MyColumns.EnumTag({ - title: '报修位置', - dataIndex: 'location', - valueEnum: HouseWorkOrdersLocationEnum, - }), - { - title: '房屋信息', - dataIndex: ['asset_house', 'full_name'], - search: false, - ellipsis: true, - }, - { - title: '工单描述', - dataIndex: 'content', - search: false, - width: 120, // 关键:固定列宽(若父容器过窄,可设 minWidth: 200 优先保证列宽) - render: (text) => ( -
- {text} -
- ), - }, - { - title: '附件', - dataIndex: 'attachments', - search: false, - render: (_, record) => { - if ( - !Array.isArray(record.attachments) || - record.attachments.length === 0 - ) { - return '无附件'; - } - return ( -
- {record.attachments.map((item: any, index: number) => { - if (item.type && item.type.includes('image')) { - return ( - - ); - } else if (item.type && item.type.includes('video')) { - return ( -
- ); - }, - }, - MyColumns.EnumTag({ - title: '分配状态', - dataIndex: 'assign_status', - valueEnum: HouseWorkOrdersAssignStatusEnum, - }), - MyColumns.EnumTag({ - title: '优先级', - dataIndex: 'level', - valueEnum: HouseWorkOrdersLevelEnum, - }), - { - 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) => ( - - - {item.status !== 'Completed' && ( - - )} - {item.assign_status === 'Unassigned' && ( - - )} - - - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/work_order/list/components/WorkList.tsx b/src/pages/work_order/list/components/WorkList.tsx index 8c28352..806b5fa 100644 --- a/src/pages/work_order/list/components/WorkList.tsx +++ b/src/pages/work_order/list/components/WorkList.tsx @@ -201,8 +201,6 @@ export default function Index({ title = '工单管理' }) { )} {item.assign_status === 'Unassigned' && (item.type === 'Complaint' || - item.type === 'RenovationInspection' || - item.type === 'RenovationAcceptance' || item.type === 'SecurityInspection') && ( - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ + Apis.WorkOrder.HouseWorkOrders.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/work_order/list/index.tsx b/src/pages/work_order/list/index.tsx index 67fd40c..d2bb001 100644 --- a/src/pages/work_order/list/index.tsx +++ b/src/pages/work_order/list/index.tsx @@ -37,9 +37,8 @@ export default function Index({ title = '报修报事' }) { let obj: any = JSON.parse( JSON.stringify(HouseWorkOrdersTypeEnum), ); - delete obj.RenovationAcceptance; + delete obj.EquipmentMaintenance; - delete obj.RenovationInspection; delete obj.Emergency; delete obj.EmergEquipmentMaintenancency; delete obj.SecurityInspection; @@ -59,23 +58,7 @@ export default function Index({ title = '报修报事' }) { <> {item.status === 'Pending' && ( { - let obj: any = JSON.parse( - JSON.stringify(HouseWorkOrdersTypeEnum), - ); - delete obj.RenovationAcceptance; - delete obj.EquipmentMaintenance; - delete obj.RenovationInspection; - delete obj.Emergency; - delete obj.EmergEquipmentMaintenancency; - delete obj.SecurityInspection; - delete obj.Complaint; - delete obj.QualityCheck; - return obj; - }, - }} + item={item} reload={action?.reload} title={title} /> @@ -105,7 +88,7 @@ export default function Index({ title = '报修报事' }) { delete: ( - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ + Apis.WorkOrder.HouseWorkOrders.Delete({ id: item.id, }).then(() => action?.reload()) } diff --git a/src/pages/work_order/patrol_work/index.tsx b/src/pages/work_order/patrol_work/index.tsx deleted file mode 100644 index 31b2051..0000000 --- a/src/pages/work_order/patrol_work/index.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersLevelEnum, - HouseWorkOrdersLocationEnum, - HouseWorkOrdersTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import WorkOrderAssign from '../list/modals/WorkOrderAssign'; -import WorkOrderCreate from '../list/modals/WorkOrderCreate'; -import WorkOrderShow from '../list/modals/WorkOrderShow'; -import WorkOrderUpdate from '../list/modals/WorkOrderUpdate'; - -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 = '装修工单' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - add: ( - - ), - }); - }; - - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - show: ( - - ), - assign: ( - <> - {item.assign_status === 'Unassigned' && - item.type !== 'SecurityInspection' && ( - - )} - - ), - update: ( - <> - {item.status === 'Pending' && ( - - )} - - ), - delete: ( - - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }, - 'MyDecorationWorkorder', - ); - }; - - const WorkTypeEnum: any = () => { - let obj: any = JSON.parse(JSON.stringify(HouseWorkOrdersTypeEnum)); - delete obj.Repair; - delete obj.Incident; - delete obj.Complaint; - delete obj.RenovationInspection; - delete obj.RenovationAcceptance; - delete obj.Emergency; - delete obj.EquipmentMaintenance; - delete obj.QualityCheck; - return obj; - }; - - return ( - > - {...MyProTableProps.props} - headerTitle={title} - request={async (params, sort) => { - return MyProTableProps.request( - { - ...params, - type: [HouseWorkOrdersTypeEnum.SecurityInspection.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: 120, // 关键:固定列宽(若父容器过窄,可设 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) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/work_order/renovation/index.tsx b/src/pages/work_order/renovation/index.tsx deleted file mode 100644 index 7243538..0000000 --- a/src/pages/work_order/renovation/index.tsx +++ /dev/null @@ -1,223 +0,0 @@ -import { - MyButtons, - MyColumns, - MyProTableProps, - useCurrentPermissions, -} from '@/common'; -import { Selects } from '@/components/Select'; -import { Apis } from '@/gen/Apis'; -import { - HouseWorkOrdersAssignStatusEnum, - HouseWorkOrdersLevelEnum, - HouseWorkOrdersTypeEnum, -} from '@/gen/Enums'; -import { ProTable } from '@ant-design/pro-components'; -import { Space } from 'antd'; -import WorkOrderCreate from '../list/modals/WorkOrderCreate'; -import WorkOrderShow from '../list/modals/WorkOrderShow'; -import WorkOrderUpdate from '../list/modals/WorkOrderUpdate'; -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 = '装修工单' }) { - const getCurrentPermissions = useCurrentPermissions(); - let toolBarRender = (action: any) => { - return getCurrentPermissions({ - add: ( - - ), - }); - }; - - let tableRender = (item: any, action: any) => { - return getCurrentPermissions( - { - show: ( - - ), - - update: ( - <> - {item.status === 'Pending' && ( - - )} - - ), - assign: ( - <> - {item.assign_status === 'Unassigned' && - item.type !== 'SecurityInspection' && ( - - )} - - ), - delete: ( - - Apis.WorkOrder.HouseWorkOrders.SoftDelete({ - id: item.id, - }).then(() => action?.reload()) - } - /> - ), - }, - 'MyDecorationWorkorder', - ); - }; - - const WorkTypeEnum = () => { - let obj: any = JSON.parse(JSON.stringify(HouseWorkOrdersTypeEnum)); - delete obj.Repair; - delete obj.Incident; - delete obj.Complaint; - delete obj.SecurityInspection; - delete obj.Emergency; - delete obj.EquipmentMaintenance; - delete obj.QualityCheck; - return obj; - }; - - 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) => ( - - <>{tableRender(item, action)} - - ), - }), - ]} - /> - ); -} diff --git a/src/pages/work_order/renovation/modals/RenovationAssign.tsx b/src/pages/work_order/renovation/modals/RenovationAssign.tsx deleted file mode 100644 index 89a4e63..0000000 --- a/src/pages/work_order/renovation/modals/RenovationAssign.tsx +++ /dev/null @@ -1,129 +0,0 @@ -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, - }; - }} - 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 From e8ff9809dfe720597b24385551156469f3ececfd Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Jan 2026 14:56:53 +0800 Subject: [PATCH 06/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/libs/umi/layoutConfig.tsx | 9 ++++++++- src/common/libs/valtio/actions.ts | 1 + src/common/libs/valtio/state.ts | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/common/libs/umi/layoutConfig.tsx b/src/common/libs/umi/layoutConfig.tsx index 8c1cb91..024333d 100644 --- a/src/common/libs/umi/layoutConfig.tsx +++ b/src/common/libs/umi/layoutConfig.tsx @@ -93,7 +93,14 @@ export const LayoutConfig: RuntimeConfig['layout'] = () => { // 首页 logo logo: (
- {/* */} +
), layout: 'mix', diff --git a/src/common/libs/valtio/actions.ts b/src/common/libs/valtio/actions.ts index d0db805..7f79f47 100644 --- a/src/common/libs/valtio/actions.ts +++ b/src/common/libs/valtio/actions.ts @@ -15,6 +15,7 @@ export const stateActions = { setLogin(res: MyResponseType) { state.session.user = res.data.user; state.session.campus = res.data.campus; + state.session.company_configs = res.data.company_configs; state.session.permissions = res.data.permissions; if (res.data?.token?.access_token) state.storage.access_token = res.data?.token?.access_token; diff --git a/src/common/libs/valtio/state.ts b/src/common/libs/valtio/state.ts index 0df8253..63eae6a 100644 --- a/src/common/libs/valtio/state.ts +++ b/src/common/libs/valtio/state.ts @@ -35,6 +35,13 @@ type SessionType = { id: number; name: string; }; + company_configs?: { + config_value?: { + logo?: { + url?: string; + }[]; + }; + }; permissions?: any; apiKeys: string[]; loading: number; @@ -45,6 +52,7 @@ const session: SessionType = proxy({ user: undefined, campus: undefined, permissions: undefined, + company_configs: {}, apiKeys: [], loading: 0, }); -- 2.47.2 From 555301527b2c6fed48cf21994906214780c25868 Mon Sep 17 00:00:00 2001 From: uiuJun <> Date: Mon, 19 Jan 2026 18:43:11 +0800 Subject: [PATCH 07/12] =?UTF-8?q?fix=EF=BC=9A=E6=B4=BB=E5=8A=A8=E3=80=81?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E3=80=81=E6=94=BE=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SysSelects.tsx | 2 +- src/gen/ApiTypes.d.ts | 191 ++++++++++++++++++ src/gen/Apis.ts | 120 +++++++++++ src/gen/Enums.ts | 109 +++++++++- .../modals/AnnouncementCreate.tsx | 16 +- .../modals/AnnouncementUpdate.tsx | 17 +- src/pages/bills/order/index.tsx | 2 +- src/pages/company/organizations/index.tsx | 24 ++- .../modals/NextOrganizationChange.tsx | 3 +- .../modals/OrganizationChange.tsx | 4 +- .../modals/OrganizationCreate.tsx | 4 +- .../modals/OrganizationUpdate.tsx | 1 + src/pages/company/positions/index.tsx | 2 +- .../company/positions/modals/PositionAdd.tsx | 132 ------------ .../positions/modals/PositionCreate.tsx | 2 +- .../positions/modals/PositionUpdate.tsx | 3 +- src/pages/goods_releases/list/index.tsx | 28 ++- .../goods_releases/list/modals/Audit.tsx | 56 +++-- .../goods_releases/list/modals/Review.tsx | 80 -------- src/pages/goods_releases/list/modals/Show.tsx | 138 +++++++++++++ .../goods_releases/list/pages/create.tsx | 11 +- .../goods_releases/list/pages/review.tsx | 164 --------------- 22 files changed, 675 insertions(+), 434 deletions(-) delete mode 100644 src/pages/company/positions/modals/PositionAdd.tsx delete mode 100644 src/pages/goods_releases/list/modals/Review.tsx create mode 100644 src/pages/goods_releases/list/modals/Show.tsx delete mode 100644 src/pages/goods_releases/list/pages/review.tsx diff --git a/src/components/SysSelects.tsx b/src/components/SysSelects.tsx index 2bd44b7..afe4f05 100644 --- a/src/components/SysSelects.tsx +++ b/src/components/SysSelects.tsx @@ -83,7 +83,7 @@ export const SysSelects = { value: 'id', }, }, - request: async () => (await Apis.Permission.SysRoles.Select()).data, + request: async () => (await Apis.Permission.Roles.Select()).data, ...rest, }; }, diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index be6afa2..fffcc6b 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -63,6 +63,88 @@ declare namespace ApiTypes { }; } } + namespace Approval { + namespace ApprovalInstances { + type PendingList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 所属项目id + "status"?: string; // 状态,[enum:ApprovalRecordsStatusEnum] + }; + type Show = { + "id": number; // 审批实例id + }; + type Approve = { + "record_id": number; // 审批记录id + "status": string; // 审批结果,[enum:ApprovalRecordsStatusEnum] + "opinion"?: string; // 审批意见 + }; + type Cancel = { + "id": number; // 审批实例id + }; + type Transfer = { + "record_id": number; // 审批记录id + "to_employee_id": number; // 接收人id,[ref:company_employees] + "opinion"?: string; // 转交理由 + }; + type List = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "status"?: string; // 状态,[enum:ApprovalInstancesStatusEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 所属项目id + }; + type ProcessedList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "status"?: string; // 审批结果,[enum:ApprovalRecordsStatusEnum] + "asset_projects_id"?: number; // 所属项目id + }; + type CcList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "asset_projects_id"?: number; // 所属项目id + }; + } + namespace ApprovalTemplates { + type List = { + "name"?: string; // 模糊搜索:名称 + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + }; + type Store = { + "name": string; // 模板名称 + "code": string; // 模板编码 + "type": string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "description"?: string; // 模板描述 + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + "nodes": string[]; // 审批节点列表 + }; + type Update = { + "id": number; // id + "name": string; // 模板名称 + "code": string; // 模板编码 + "type": string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "description"?: string; // 模板描述 + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + "nodes": string[]; // 审批节点列表 + }; + type Show = { + "id": number; // id + }; + type SoftDelete = { + "id": number; // id + }; + type ToggleEnabled = { + "id": number; // id + "is_enabled": boolean; // 是否启用 + }; + type Select = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "asset_projects_id"?: number; // 所属项目id + }; + } + } namespace Archive { namespace HouseOccupants { type List = { @@ -946,6 +1028,51 @@ declare namespace ApiTypes { }; } } + namespace GoodsReleases { + namespace GoodsReleases { + type List = { + "code"?: string; // 放行码 + "apply_name"?: string; // 申请人姓名 + "apply_phone"?: string; // 申请人电话 + "status"?: string; // 状态,[enum:GoodsReleasesStatusEnum] + "passed_type"?: string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "asset_projects_id"?: number; // 所属项目 + "asset_houses_id"?: number; // 房屋 + }; + type Store = { + "asset_houses_id": number; // 访问房屋 + "apply_name": string; // 申请人姓名 + "apply_phone": string; // 申请人电话 + "passed_type": string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "goods": string[]; // 放行物品信息 + "passed_time": Date; // 通行时间 + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "apply_name"?: string; // 申请人姓名 + "apply_phone"?: string; // 申请人电话 + "passed_type"?: string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "goods"?: string[]; // 放行物品信息 + "passed_time"?: Date; // 通行时间 + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type ApproveByEmployee = { + "id": number; // id + "status": string; // 审核状态(Approved/Rejected) + "reason"?: string; // 驳回原因 + }; + type Release = { + "id": number; // id + }; + type ScanRelease = { + "code": string; // 放行码 + }; + } + } namespace Grid { namespace Grids { type List = { @@ -1548,6 +1675,70 @@ declare namespace ApiTypes { }; } } + namespace Refund { + namespace Refunds { + type List = { + "type"?: string; // 退款类型,[enum:RefundsTypeEnum] + "business_id"?: number; // 业务ID(配合type使用) + "refund_status"?: string; // 退款状态,[enum:RefundsStatusEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 项目ID + "apply_time"?: string[]; // 申请时间范围 + "asset_houses_id"?: number; // 房屋ID + }; + type Store = { + "type": string; // 退款类型,[enum:RefundsTypeEnum] + "business_id"?: number; // 业务ID(根据type对应不同表) + "refund_amount": number; // 退款金额(单位元) + "company_receipt_accounts_id": number; // 出款账户id + "payee_name"?: string; // 收款人姓名 + "payee_bank"?: string; // 收款银行 + "payee_account"?: string; // 收款账号 + "reason"?: string; // 退款原因 + "asset_projects_id"?: number; // 项目ID + "approval_templates_id"?: number; // 审批模板ID + "node_approvers"?: string[]; // 各节点审批人员列表 + }; + type Show = { + "id": number; // id + }; + type Complete = { + "id": number; // id + "serial_number"?: string; // 退款流水号 + "refund_time"?: Date; // 退款时间 + "voucher"?: string[]; // 退款凭证 + }; + type Cancel = { + "id": number; // id + }; + } + } + namespace Visitor { + namespace VisitorApplies { + type List = { + "status"?: string; // 审核状态,[enum:VisitorAppliesStatusEnum] + "visit_start_time"?: Date; // 预计到访时间 + "visitor_name"?: string; // 模糊搜索:访客姓名 + "visitor_phone"?: string; // 模糊搜索:访客电话 + "host_phone"?: string; // 模糊搜索:被访人电话 + "asset_projects_id"?: number; // 项目ID + }; + type Show = { + "id": number; // 申请id + }; + type Approve = { + "id": number; // 访客申请id + }; + type Reject = { + "id": number; // 访客申请id + "remark": string; // 驳回原因 + }; + type Scan = { + "code": string; // 通行码 + "scan_type": string; // 扫码类型:进入/离开,[enum:VisitorScanTypeEnum] + }; + } + } namespace WorkOrder { namespace HouseWorkLogs { type List = { diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index 8f5c1bc..aec1a33 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -41,6 +41,63 @@ export const Apis = { }, }, }, + Approval: { + ApprovalInstances: { + PendingList(data?: ApiTypes.Approval.ApprovalInstances.PendingList): Promise { + return request('company/approval/approval_instances/pending_list', { data }); + }, + PendingCount(): Promise { + return request('company/approval/approval_instances/pending_count', {}); + }, + MyApplyList(): Promise { + return request('company/approval/approval_instances/my_apply_list', {}); + }, + Show(data: ApiTypes.Approval.ApprovalInstances.Show): Promise { + return request('company/approval/approval_instances/show', { data }); + }, + Approve(data: ApiTypes.Approval.ApprovalInstances.Approve): Promise { + return request('company/approval/approval_instances/approve', { data }); + }, + Cancel(data: ApiTypes.Approval.ApprovalInstances.Cancel): Promise { + return request('company/approval/approval_instances/cancel', { data }); + }, + Transfer(data: ApiTypes.Approval.ApprovalInstances.Transfer): Promise { + return request('company/approval/approval_instances/transfer', { data }); + }, + List(data?: ApiTypes.Approval.ApprovalInstances.List): Promise { + return request('company/approval/approval_instances/list', { data }); + }, + ProcessedList(data?: ApiTypes.Approval.ApprovalInstances.ProcessedList): Promise { + return request('company/approval/approval_instances/processed_list', { data }); + }, + CcList(data?: ApiTypes.Approval.ApprovalInstances.CcList): Promise { + return request('company/approval/approval_instances/cc_list', { data }); + }, + }, + ApprovalTemplates: { + List(data?: ApiTypes.Approval.ApprovalTemplates.List): Promise { + return request('company/approval/approval_templates/list', { data }); + }, + Store(data: ApiTypes.Approval.ApprovalTemplates.Store): Promise { + return request('company/approval/approval_templates/store', { data }); + }, + Update(data: ApiTypes.Approval.ApprovalTemplates.Update): Promise { + return request('company/approval/approval_templates/update', { data }); + }, + Show(data: ApiTypes.Approval.ApprovalTemplates.Show): Promise { + return request('company/approval/approval_templates/show', { data }); + }, + SoftDelete(data: ApiTypes.Approval.ApprovalTemplates.SoftDelete): Promise { + return request('company/approval/approval_templates/soft_delete', { data }); + }, + ToggleEnabled(data: ApiTypes.Approval.ApprovalTemplates.ToggleEnabled): Promise { + return request('company/approval/approval_templates/toggle_enabled', { data }); + }, + Select(data?: ApiTypes.Approval.ApprovalTemplates.Select): Promise { + return request('company/approval/approval_templates/select', { data }); + }, + }, + }, Archive: { HouseOccupants: { List(data?: ApiTypes.Archive.HouseOccupants.List): Promise { @@ -500,6 +557,31 @@ export const Apis = { }, }, }, + GoodsReleases: { + GoodsReleases: { + List(data?: ApiTypes.GoodsReleases.GoodsReleases.List): Promise { + return request('company/goods_releases/goods_releases/list', { data }); + }, + Store(data: ApiTypes.GoodsReleases.GoodsReleases.Store): Promise { + return request('company/goods_releases/goods_releases/store', { data }); + }, + Update(data: ApiTypes.GoodsReleases.GoodsReleases.Update): Promise { + return request('company/goods_releases/goods_releases/update', { data }); + }, + Show(data: ApiTypes.GoodsReleases.GoodsReleases.Show): Promise { + return request('company/goods_releases/goods_releases/show', { data }); + }, + ApproveByEmployee(data: ApiTypes.GoodsReleases.GoodsReleases.ApproveByEmployee): Promise { + return request('company/goods_releases/goods_releases/approve_by_employee', { data }); + }, + Release(data: ApiTypes.GoodsReleases.GoodsReleases.Release): Promise { + return request('company/goods_releases/goods_releases/release', { data }); + }, + ScanRelease(data: ApiTypes.GoodsReleases.GoodsReleases.ScanRelease): Promise { + return request('company/goods_releases/goods_releases/scan_release', { data }); + }, + }, + }, Grid: { Grids: { List(data?: ApiTypes.Grid.Grids.List): Promise { @@ -864,6 +946,44 @@ export const Apis = { }, }, }, + Refund: { + Refunds: { + List(data?: ApiTypes.Refund.Refunds.List): Promise { + return request('company/refund/refunds/list', { data }); + }, + Store(data: ApiTypes.Refund.Refunds.Store): Promise { + return request('company/refund/refunds/store', { data }); + }, + Show(data: ApiTypes.Refund.Refunds.Show): Promise { + return request('company/refund/refunds/show', { data }); + }, + Complete(data: ApiTypes.Refund.Refunds.Complete): Promise { + return request('company/refund/refunds/complete', { data }); + }, + Cancel(data: ApiTypes.Refund.Refunds.Cancel): Promise { + return request('company/refund/refunds/cancel', { data }); + }, + }, + }, + Visitor: { + VisitorApplies: { + List(data?: ApiTypes.Visitor.VisitorApplies.List): Promise { + return request('company/visitor/visitor_applies/list', { data }); + }, + Show(data: ApiTypes.Visitor.VisitorApplies.Show): Promise { + return request('company/visitor/visitor_applies/show', { data }); + }, + Approve(data: ApiTypes.Visitor.VisitorApplies.Approve): Promise { + return request('company/visitor/visitor_applies/approve', { data }); + }, + Reject(data: ApiTypes.Visitor.VisitorApplies.Reject): Promise { + return request('company/visitor/visitor_applies/reject', { data }); + }, + Scan(data: ApiTypes.Visitor.VisitorApplies.Scan): Promise { + return request('company/visitor/visitor_applies/scan', { data }); + }, + }, + }, WorkOrder: { HouseWorkLogs: { List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise { diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index 844c78c..2ccaed0 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -26,6 +26,41 @@ export const ActivityEnrollsStatusEnum= { 'Cancelled': {"text":"取消","color":"#ff9800","value":"Cancelled"}, }; +// 审批实例状态枚举 +export const ApprovalInstancesStatusEnum= { + 'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"已拒绝","color":"#f44336","value":"Rejected"}, + 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"}, +}; + +// 审批记录状态枚举 +export const ApprovalRecordsStatusEnum= { + 'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"同意","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"拒绝","color":"#f44336","value":"Rejected"}, + 'Transferred': {"text":"转交","color":"#9c27b0","value":"Transferred"}, +}; + +// 审批方式枚举 +export const ApprovalTemplateNodesApproveTypeEnum= { + 'And': {"text":"会签","color":"#4caf50","value":"And"}, + 'Or': {"text":"或签","color":"#ff9800","value":"Or"}, +}; + +// 审批节点类型枚举 +export const ApprovalTemplateNodesNodeTypeEnum= { + 'Approver': {"text":"审批人","color":"#2196f3","value":"Approver"}, + 'CC': {"text":"抄送人","color":"#9e9e9e","value":"CC"}, +}; + +// 审批业务类型枚举 +export const ApprovalTemplatesTypeEnum= { + 'Contract': {"text":"合同","color":"#2196f3","value":"Contract"}, + 'Finance': {"text":"财务","color":"#4caf50","value":"Finance"}, + 'Refund': {"text":"退款","color":"#f44336","value":"Refund"}, +}; + // 车位产权类型 export const AssetCarPortsPropertyTypeEnum= { 'Ownership': {"text":"产权车位","color":"#1e90ff","value":"Ownership"}, @@ -216,7 +251,7 @@ export const BannersTypeEnum= { // 缓存类型 export const CacheTypeEnum= { - 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#6f374e","value":"MobilePhoneVerificationCode"}, + 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#2721e5","value":"MobilePhoneVerificationCode"}, }; // CompaniesMerchantTypeEnum @@ -346,6 +381,29 @@ export const CustomerOpinionsTypeEnum= { 'FeatureSuggestion': {"text":"新功能建议","color":"#00bfff","value":"FeatureSuggestion"}, }; +// 物品放行审核状态 +export const GoodsReleasesAuditStatusEnum= { + 'Pending': {"text":"待审核","color":"#faad14","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#52c41a","value":"Approved"}, + 'Rejected': {"text":"已退回","color":"#ff4d4f","value":"Rejected"}, +}; + +// 物品放行通行类型 +export const GoodsReleasesPassedTypeEnum= { + 'Moving': {"text":"搬家","color":"#1890ff","value":"Moving"}, + 'Delivery': {"text":"出货","color":"#52c41a","value":"Delivery"}, + 'Other': {"text":"其他","color":"#faad14","value":"Other"}, +}; + +// 物品放行状态 +export const GoodsReleasesStatusEnum= { + 'Pending': {"text":"待审核","color":"#faad14","value":"Pending"}, + 'OwnerApproved': {"text":"业主已审","color":"#1890ff","value":"OwnerApproved"}, + 'Approved': {"text":"已通过","color":"#52c41a","value":"Approved"}, + 'Rejected': {"text":"已退回","color":"#ff4d4f","value":"Rejected"}, + 'Released': {"text":"已放行","color":"#722ed1","value":"Released"}, +}; + // 账单状态枚举 export const HouseBillsBillStatusEnum= { 'PendingPayment': {"text":"待支付","color":"#facc15","value":"PendingPayment"}, @@ -733,6 +791,17 @@ export const RefundsStatusEnum= { 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"}, }; +// 退款类型枚举 +export const RefundsTypeEnum= { + 'HouseBill': {"text":"物业费退款","color":"#2196f3","value":"HouseBill"}, + 'Bill': {"text":"账单退款","color":"#4caf50","value":"Bill"}, + 'ContractBill': {"text":"合同退款","color":"#ff9800","value":"ContractBill"}, + 'RenovationApply': {"text":"退保证金","color":"#86aac3ff","value":"RenovationApply"}, + 'HouseDoorCard': {"text":"门禁退款","color":"#9c27b0","value":"HouseDoorCard"}, + 'HouseWorkOrder': {"text":"工单退款","color":"#00bcd4","value":"HouseWorkOrder"}, + 'Other': {"text":"其他退款","color":"#607d8b","value":"Other"}, +}; + // 性别 export const SexEnum= { 'Male': {"text":"男","color":"#0000ff","value":"Male"}, @@ -753,6 +822,44 @@ export const SysPermissionsTypeEnum= { 'Button': {"text":"按钮","color":"#97224f","value":"Button"}, }; +// 来访事由 +export const VisitReasonEnum= { + 'Visit': {"text":"拜访","color":"#2196f3","value":"Visit"}, + 'Business': {"text":"商务","color":"#3f51b5","value":"Business"}, + 'Interview': {"text":"面试","color":"#9c27b0","value":"Interview"}, + 'Private': {"text":"私人","color":"#e91e63","value":"Private"}, + 'Express': {"text":"快递","color":"#00bcd4","value":"Express"}, + 'Renovation': {"text":"装修","color":"#ff5722","value":"Renovation"}, + 'Other': {"text":"其他","color":"#607d8b","value":"Other"}, +}; + +// 访客申请状态 +export const VisitorAppliesStatusEnum= { + 'Pending': {"text":"审核中","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"已驳回","color":"#f44336","value":"Rejected"}, + 'Expired': {"text":"已失效","color":"#9e9e9e","value":"Expired"}, +}; + +// 访客申请类型 +export const VisitorApplyTypeEnum= { + 'invite': {"text":"业主邀请","color":"#2196f3","value":"invite"}, + 'register': {"text":"访客登记","color":"#ff9800","value":"register"}, +}; + +// 通行码状态 +export const VisitorCodeStatusEnum= { + 'unused': {"text":"未使用","color":"#2196f3","value":"unused"}, + 'used': {"text":"已使用","color":"#4caf50","value":"used"}, + 'expired': {"text":"已过期","color":"#f44336","value":"expired"}, +}; + +// 访客扫码类型 +export const VisitorScanTypeEnum= { + 'enter': {"text":"进入","color":"#4caf50","value":"enter"}, + 'exit': {"text":"离开","color":"#f44336","value":"exit"}, +}; + // WechatAuthsPlatformEnum export const WechatAuthsPlatformEnum= { 'MiniProgram': {"text":"微信小程序","color":"#3b82f6","value":"MiniProgram"}, diff --git a/src/pages/asset/announcement/modals/AnnouncementCreate.tsx b/src/pages/asset/announcement/modals/AnnouncementCreate.tsx index b46498c..c21e4c9 100644 --- a/src/pages/asset/announcement/modals/AnnouncementCreate.tsx +++ b/src/pages/asset/announcement/modals/AnnouncementCreate.tsx @@ -8,7 +8,10 @@ import { import MyEditor from '@/common/components/Editor'; import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; -import { MsgPropertyAnnouncementsPublishTypeEnum } from '@/gen/Enums'; +import { + MsgPropertyAnnouncementsObjectEnum, + MsgPropertyAnnouncementsPublishTypeEnum, +} from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -67,6 +70,17 @@ export default function Create(props: MyBetaModalFormProps) { ...rulesHelper.text, }, }, + MyFormItems.EnumRadio({ + key: 'object', + title: '发布对象', + colProps: { span: 8 }, + valueEnum: MsgPropertyAnnouncementsObjectEnum, + formItemProps: { + labelCol: { span: 12 }, + wrapperCol: { span: 12 }, + ...rulesHelper.text, + }, + }), MyFormItems.EnumRadio({ key: 'publish_type', title: '发布方式', diff --git a/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx b/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx index 4bf45f0..90cfccb 100644 --- a/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx +++ b/src/pages/asset/announcement/modals/AnnouncementUpdate.tsx @@ -7,7 +7,10 @@ import { } from '@/common'; import MyEditor from '@/common/components/Editor'; import { Apis } from '@/gen/Apis'; -import { MsgPropertyAnnouncementsPublishTypeEnum } from '@/gen/Enums'; +import { + MsgPropertyAnnouncementsObjectEnum, + MsgPropertyAnnouncementsPublishTypeEnum, +} from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; @@ -55,7 +58,17 @@ export default function Update(props: MyBetaModalFormProps) { ...rulesHelper.text, }, }, - + MyFormItems.EnumRadio({ + key: 'object', + title: '发布对象', + colProps: { span: 8 }, + valueEnum: MsgPropertyAnnouncementsObjectEnum, + formItemProps: { + labelCol: { span: 12 }, + wrapperCol: { span: 12 }, + ...rulesHelper.text, + }, + }), MyFormItems.EnumRadio({ key: 'publish_type', title: '发布方式', diff --git a/src/pages/bills/order/index.tsx b/src/pages/bills/order/index.tsx index dab9543..4335ef3 100644 --- a/src/pages/bills/order/index.tsx +++ b/src/pages/bills/order/index.tsx @@ -21,7 +21,7 @@ import Audit from './modals/Audit'; import SerialNumber from './modals/SerialNumber'; import Show from './modals/Show'; -export default function Index({ title = '收款单' }) { +export default function Index({ title = '线下收款单' }) { const [getParams, setParams] = useState({}); const getCurrentPermissions = useCurrentPermissions(); let toolBarRender = (action: any) => { diff --git a/src/pages/company/organizations/index.tsx b/src/pages/company/organizations/index.tsx index d6b9664..0702a46 100644 --- a/src/pages/company/organizations/index.tsx +++ b/src/pages/company/organizations/index.tsx @@ -1,9 +1,16 @@ -import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, +} from '@/common'; import { Apis } from '@/gen/Apis'; import { OrganizationsTypeEnum } from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space } from 'antd'; +import NextOrganizationChange from './modals/NextOrganizationChange'; +import OrganizationChange from './modals/OrganizationChange'; import OrganizationCreate from './modals/OrganizationCreate'; import OrganizationUpdate from './modals/OrganizationUpdate'; @@ -60,18 +67,19 @@ export default function Index({ title = '组织管理' }) { MyColumns.Option({ render: (_, item: any, index, action) => ( - - {/* {item?.type !== OrganizationsTypeEnum.Group.value && ( + {item?.type !== OrganizationsTypeEnum.Group.value && ( )} + + action?.reload(), ) } - /> */} + /> ), }), diff --git a/src/pages/company/organizations/modals/NextOrganizationChange.tsx b/src/pages/company/organizations/modals/NextOrganizationChange.tsx index d59aa29..b94de60 100644 --- a/src/pages/company/organizations/modals/NextOrganizationChange.tsx +++ b/src/pages/company/organizations/modals/NextOrganizationChange.tsx @@ -19,7 +19,7 @@ export default function Create(props: MyBetaModalFormProps) { title={`添加${props.title}`} wrapperCol={{ span: 24 }} width="500px" - trigger={} + trigger={} key={new Date().getTime()} form={form} onOpenChange={(open: any) => { @@ -44,6 +44,7 @@ export default function Create(props: MyBetaModalFormProps) { MyFormItems.EnumRadio({ key: 'type', title: '组织类型', + tooltip: '可根据自身情况自定义设置', colProps: { span: 24 }, valueEnum: OrganizationsTypeEnum, required: true, diff --git a/src/pages/company/organizations/modals/OrganizationChange.tsx b/src/pages/company/organizations/modals/OrganizationChange.tsx index 8c77286..c4deda2 100644 --- a/src/pages/company/organizations/modals/OrganizationChange.tsx +++ b/src/pages/company/organizations/modals/OrganizationChange.tsx @@ -16,9 +16,7 @@ export default function Update(props: MyBetaModalFormProps) { {...MyModalFormProps.props} title={`${props.title}调整`} form={form} - trigger={ - - } + trigger={} wrapperCol={{ span: 24 }} width="500px" onOpenChange={(open: any) => { diff --git a/src/pages/company/organizations/modals/OrganizationCreate.tsx b/src/pages/company/organizations/modals/OrganizationCreate.tsx index 097a02c..19738d2 100644 --- a/src/pages/company/organizations/modals/OrganizationCreate.tsx +++ b/src/pages/company/organizations/modals/OrganizationCreate.tsx @@ -45,6 +45,7 @@ export default function Create(props: MyBetaModalFormProps) { MyFormItems.EnumRadio({ key: 'type', title: '组织类型', + tooltip: '可根据自身情况自定义设置', colProps: { span: 24 }, valueEnum: OrganizationsTypeEnum, required: true, @@ -63,13 +64,14 @@ export default function Create(props: MyBetaModalFormProps) { ? [ Selects?.OrganizationsTree({ title: '请设置上级组织', + tooltip: '非必填,可按需选择', key: 'parent_id', params: { companies_id: props?.item?.id }, colProps: { span: 24 }, fieldProps: { placeholder: '可搜索或手动选择上级组织', }, - formItemProps: { ...rulesHelper.text }, + // formItemProps: { ...rulesHelper.text }, }), ] : []; diff --git a/src/pages/company/organizations/modals/OrganizationUpdate.tsx b/src/pages/company/organizations/modals/OrganizationUpdate.tsx index 6014b58..92b0a27 100644 --- a/src/pages/company/organizations/modals/OrganizationUpdate.tsx +++ b/src/pages/company/organizations/modals/OrganizationUpdate.tsx @@ -43,6 +43,7 @@ export default function Update(props: MyBetaModalFormProps) { MyFormItems.EnumRadio({ key: 'type', title: '类型', + tooltip: '可根据自身情况自定义设置', colProps: { span: 24 }, valueEnum: OrganizationsTypeEnum, required: true, diff --git a/src/pages/company/positions/index.tsx b/src/pages/company/positions/index.tsx index 6cbbdfb..3592044 100644 --- a/src/pages/company/positions/index.tsx +++ b/src/pages/company/positions/index.tsx @@ -45,7 +45,7 @@ export default function Index({ title = '岗位管理' }) { width: 200, }, { - title: '岗位备注', + title: '岗位说明', dataIndex: 'remark', search: false, width: 200, diff --git a/src/pages/company/positions/modals/PositionAdd.tsx b/src/pages/company/positions/modals/PositionAdd.tsx deleted file mode 100644 index a604d9e..0000000 --- a/src/pages/company/positions/modals/PositionAdd.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyColumns, - MyProTableProps, -} from '@/common'; -import { MyModal } from '@/components/MyModal'; - -import { Apis } from '@/gen/Apis'; -import { ProTable } from '@ant-design/pro-components'; -import { message, Space } from 'antd'; -import { useRef, useState } from 'react'; - -export default function PositionAdd(props: MyBetaModalFormProps) { - // 使用 useState 保存选中的岗位 ID 和行数据,确保跨页选中状态保持 - const [selectedPositionsIds, setSelectedPositionsIds] = useState( - [], - ); - - // 添加 tableRef 用于操作表格 - const tableRef = useRef(); - - const onShowContactPhone = () => { - if (selectedPositionsIds.length === 0) { - message.warning('请至少选择一个岗位'); - return; - } - - // 确保 positions_ids 是字符串数组 - const positionsIds = selectedPositionsIds.map((id) => String(id)); - - Apis.Company.CompanyPositions.BatchStore({ - positions_ids: positionsIds, - }) - .then(() => { - // 成功后重置选中状态 - setSelectedPositionsIds([]); - props.reload?.(); - message.success('添加成功!'); - }) - .catch((error) => { - console.error('添加失败:', error); - message.error('添加失败: ' + (error.message || '未知错误')); - return false; - }); - }; - - return ( - - MyProTableProps.request( - { - ...params, - is_use: 1, - }, - sort, - Apis.Common.Positions.List, - undefined, - (res) => { - // 确保响应数据正确处理 - console.log('加载岗位数据:', res); - return res; - }, - ) - } - // style={{ height: '680px', overflowY: 'auto', overflowX: 'hidden' }} - pagination={{ - showQuickJumper: true, - }} - rowSelection={{ - type: 'checkbox', - preserveSelectedRowKeys: true, // 启用跨页选择 - selectedRowKeys: selectedPositionsIds, - onChange: (selectedRowKeys) => { - // 确保 selectedRowKeys 是数字类型 - const numericKeys = selectedRowKeys.map((key) => - typeof key === 'string' ? parseInt(key, 10) : key, - ) as number[]; - - // 更新选中状态 - setSelectedPositionsIds(numericKeys); - - // 合并当前页面选中的行和之前选中的行 - - // 设置选中行数据 - }, - }} - tableAlertOptionRender={({ selectedRowKeys, onCleanSelected }) => { - return ( - - 已选 {selectedRowKeys.length} 项 - 清空 - onShowContactPhone()} - /> - - ); - }} - options={false} - columns={[ - MyColumns.ID({ - search: false, - }), - { - title: '岗位名称', - dataIndex: 'name', - width: 300, - }, - { - title: '是否启用', - dataIndex: 'is_use', - search: false, - render: (text) => (text ? '是' : '否'), - width: 200, - }, - ]} - /> - } - /> - ); -} diff --git a/src/pages/company/positions/modals/PositionCreate.tsx b/src/pages/company/positions/modals/PositionCreate.tsx index 548845a..3bed7d2 100644 --- a/src/pages/company/positions/modals/PositionCreate.tsx +++ b/src/pages/company/positions/modals/PositionCreate.tsx @@ -46,7 +46,7 @@ export default function Create(props: MyBetaModalFormProps) { }, { key: 'remark', - title: '备注', + title: '岗位说明', colProps: { span: 24 }, valueType: 'textarea', }, diff --git a/src/pages/company/positions/modals/PositionUpdate.tsx b/src/pages/company/positions/modals/PositionUpdate.tsx index 85d5ab5..3c6cba0 100644 --- a/src/pages/company/positions/modals/PositionUpdate.tsx +++ b/src/pages/company/positions/modals/PositionUpdate.tsx @@ -27,7 +27,6 @@ export default function Update(props: MyBetaModalFormProps) { onFinish={async (values) => Apis.Company.CompanyPositions.Update({ ...values, - companies_id: props?.item?.companies_id, id: props.item?.id ?? 0, }) .then(() => { @@ -58,7 +57,7 @@ export default function Update(props: MyBetaModalFormProps) { // }, { key: 'remark', - title: '备注', + title: '岗位说明', colProps: { span: 24 }, valueType: 'textarea', }, diff --git a/src/pages/goods_releases/list/index.tsx b/src/pages/goods_releases/list/index.tsx index 8ec7314..e63d5f2 100644 --- a/src/pages/goods_releases/list/index.tsx +++ b/src/pages/goods_releases/list/index.tsx @@ -5,10 +5,15 @@ import { MyProTableProps, } from '@/common'; import { Apis } from '@/gen/Apis'; +import { + GoodsReleasesAuditStatusEnum, + GoodsReleasesPassedTypeEnum, +} from '@/gen/Enums'; import { ProTable } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Space, Tooltip } from 'antd'; import Audit from './modals/Audit'; +import Show from './modals/Show'; export default function Index({ title = '物品放行' }) { const navigate = useNavigate(); @@ -47,7 +52,7 @@ export default function Index({ title = '物品放行' }) { MyColumns.EnumTag({ title: '申请状态', dataIndex: 'status', - // valueEnum: GoodsReleasesAuditStatusEnum, + valueEnum: GoodsReleasesAuditStatusEnum, }), { title: '房屋', @@ -67,7 +72,7 @@ export default function Index({ title = '物品放行' }) { MyColumns.EnumTag({ title: '通行类型', dataIndex: 'passed_type', - // valueEnum: GoodsReleasesPassedTypeEnum, + valueEnum: GoodsReleasesPassedTypeEnum, }), { @@ -155,25 +160,16 @@ export default function Index({ title = '物品放行' }) { }, search: false, }, - MyColumns.CreatedAt(), + // MyColumns.CreatedAt(), + MyColumns.UpdatedAt(), MyColumns.Option({ render: (_, item: any, index, action) => ( - {/* {item?.status === + {item?.status === GoodsReleasesAuditStatusEnum.Pending.value && ( - )} */} - - { - navigate(`/goods_releases/list/pages/review?id=${item.id}`); - }} - title="查看并审核" - /> + )} + ), }), diff --git a/src/pages/goods_releases/list/modals/Audit.tsx b/src/pages/goods_releases/list/modals/Audit.tsx index fb7d98e..b4c888c 100644 --- a/src/pages/goods_releases/list/modals/Audit.tsx +++ b/src/pages/goods_releases/list/modals/Audit.tsx @@ -1,11 +1,17 @@ import { MyBetaModalFormProps, MyButtons, + MyFormItems, MyModalFormProps, MyProTableProps, + renderTextHelper, rulesHelper, } from '@/common'; import { Apis } from '@/gen/Apis'; +import { + GoodsReleasesAuditStatusEnum, + GoodsReleasesPassedTypeEnum, +} from '@/gen/Enums'; import { BetaSchemaForm, ProCard, @@ -50,8 +56,8 @@ export default function Update(props: MyBetaModalFormProps) { renderFormItem: () => ( - - + + navigate( @@ -59,11 +65,27 @@ export default function Update(props: MyBetaModalFormProps) { ) } > - {props?.item?.house?.full_name || '-'} + {props?.item?.asset_house?.full_name || '-'} - {props?.item?.customer?.name || '-'} + {props?.item?.apply_name || '-'} + + + {props?.item?.apply_phone || '-'} + + + + + + + {props?.item?.passed_time || '-'} + + + {props?.item?.remark || '-'} {props?.item?.created_at || '-'} @@ -111,19 +133,19 @@ export default function Update(props: MyBetaModalFormProps) { { valueType: 'group', columns: [ - // MyFormItems.EnumRadio({ - // key: 'status', - // title: '审核操作', - // colProps: { span: 24 }, - // valueEnum: () => { - // let obj: any = JSON.parse( - // JSON.stringify(GoodsReleasesPassedTypeEnum), - // ); - // delete obj.Pending; - // return obj; - // }, - // required: true, - // }), + MyFormItems.EnumRadio({ + key: 'status', + title: '审核操作', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(GoodsReleasesAuditStatusEnum), + ); + delete obj.Pending; + return obj; + }, + required: true, + }), { valueType: 'dependency', name: ['status'], diff --git a/src/pages/goods_releases/list/modals/Review.tsx b/src/pages/goods_releases/list/modals/Review.tsx deleted file mode 100644 index bed89c8..0000000 --- a/src/pages/goods_releases/list/modals/Review.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { - MyBetaModalFormProps, - MyButtons, - MyFormItems, - MyModalFormProps, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm } from '@ant-design/pro-components'; -import { useNavigate } from '@umijs/max'; -import { Form, message } from 'antd'; - -const GoodsReleasesAuditStatusEnum = { - Approved: { text: '通过', value: 'Approved' }, - Rejected: { text: '驳回', value: 'Rejected' }, -}; - -export default function Review(props: MyBetaModalFormProps) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - return ( - - {...MyModalFormProps.props} - title="审核" - trigger={} - wrapperCol={{ span: 24 }} - key={new Date().getTime()} - width="500px" - form={form} - onOpenChange={(open: any) => { - if (open && props.item) { - form.setFieldsValue(props.item); - } - }} - onFinish={async (values) => - Apis.GoodsReleases.GoodsReleases.ApproveByEmployee({ - ...values, - id: props.item?.id ?? 0, - }) - .then(() => { - message.success('审核成功'); - navigate(-1); - return true; - }) - .catch(() => false) - } - columns={[ - MyFormItems.EnumRadio({ - key: 'status', - title: '审核意见', - valueEnum: GoodsReleasesAuditStatusEnum, - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'dependency', - name: ['status'], - columns: ({ status }) => { - return status === 'Rejected' - ? [ - { - title: '驳回理由', - valueType: 'textarea', - key: 'reason', - formItemProps: { ...rulesHelper.text }, - }, - ] - : [ - { - title: '审核意见', - valueType: 'textarea', - key: 'reason', - }, - ]; - }, - }, - ]} - /> - ); -} diff --git a/src/pages/goods_releases/list/modals/Show.tsx b/src/pages/goods_releases/list/modals/Show.tsx new file mode 100644 index 0000000..66580fa --- /dev/null +++ b/src/pages/goods_releases/list/modals/Show.tsx @@ -0,0 +1,138 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + MyProTableProps, + renderTextHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + GoodsReleasesAuditStatusEnum, + GoodsReleasesPassedTypeEnum, +} from '@/gen/Enums'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, + ProTable, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, message, Space } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="800px" + modalProps={{ + bodyStyle: { maxHeight: '70vh', overflowY: 'auto' }, + }} + key={new Date().getTime()} + form={form} + onFinish={async (values: any) => + Apis.GoodsReleases.GoodsReleases.ApproveByEmployee({ + id: props.item?.id ?? 0, + ...values, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: () => ( + + + + + + + navigate( + `/customer/archive/show/${props?.item?.asset_houses_id}`, + ) + } + > + {props?.item?.asset_house?.full_name || '-'} + + + + + {props?.item?.apply_name || '-'} + + + {props?.item?.apply_phone || '-'} + + + + + + {props?.item?.passed_time || '-'} + + + {props?.item?.remark || '-'} + + + {props?.item?.created_at || '-'} + + + {props?.item?.audit_time || '-'} + + + + + + + + {props?.item?.goods && props?.item?.goods.length > 0 && ( + + record?.id || index} + size="small" + columns={[ + { + title: '物品名称', + dataIndex: 'name', + }, + { + title: '数量', + dataIndex: 'number', + }, + { + title: '备注', + dataIndex: 'remark', + }, + ]} + /> + + )} + + ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/goods_releases/list/pages/create.tsx b/src/pages/goods_releases/list/pages/create.tsx index 77da937..3f13b03 100644 --- a/src/pages/goods_releases/list/pages/create.tsx +++ b/src/pages/goods_releases/list/pages/create.tsx @@ -6,6 +6,7 @@ import { } from '@/common'; import MyModalsHouseSelectList from '@/components/ModalsHouseSelectList'; import { Apis } from '@/gen/Apis'; +import { GoodsReleasesPassedTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; import { useNavigate } from '@umijs/max'; import { Form, message, Space } from 'antd'; @@ -99,7 +100,7 @@ export default function Index({ title = '物品放行申请' }) { MyFormItems.EnumRadio({ key: 'passed_type', title: '通行类型', - // valueEnum: GoodsReleasesPassedTypeEnum, + valueEnum: GoodsReleasesPassedTypeEnum, colProps: { span: 6 }, formItemProps: { ...rulesHelper.text }, }), @@ -109,8 +110,14 @@ export default function Index({ title = '物品放行申请' }) { valueType: 'date', colProps: { span: 6 }, formItemProps: { ...rulesHelper.text }, + fieldProps: { - style: { width: '100%' }, + disabledDate: (current: any) => { + // 禁用过去的日期(只允许今天及之后的日期) + const today = new Date(); + today.setHours(0, 0, 0, 0); + return current && current < today; + }, }, }, { diff --git a/src/pages/goods_releases/list/pages/review.tsx b/src/pages/goods_releases/list/pages/review.tsx deleted file mode 100644 index 093339c..0000000 --- a/src/pages/goods_releases/list/pages/review.tsx +++ /dev/null @@ -1,164 +0,0 @@ -import { - MyFormItems, - MyModalFormProps, - MyPageContainer, - rulesHelper, -} from '@/common'; -import { Apis } from '@/gen/Apis'; -import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; -import { useNavigate, useSearchParams } from '@umijs/max'; -import { Form, Space } from 'antd'; -import { useEffect, useState } from 'react'; -import Review from '../modals/Review'; - -export default function Index({ title = '物品放行审核' }) { - const [form] = Form.useForm(); - const navigate = useNavigate(); - const [searchParams] = useSearchParams(); - const id = searchParams.get('id') ?? 0; - const [data, setShow] = useState({}); - - const loadShow = () => { - Apis.GoodsReleases.GoodsReleases.Show({ id: Number(id) }).then((res) => { - setShow(res?.data); - form.setFieldsValue(res?.data); // 编辑赋值 - }); - }; - - useEffect(() => { - loadShow(); - }, [id]); - - return ( - { - navigate(-1); - }} - > - {/* */} - {title} - - } - enableTabs={false} - tabKey="goods_releases_review" - tabLabel={title} - > - -
- - {...MyModalFormProps.props} - title={title} - // 基础表单 - layoutType="Form" - labelCol={{ span: 24 }} - wrapperCol={{ span: 24 }} - labelAlign="left" - width="900px" - form={form} - submitter={{ - render: () => { - return []; - }, - }} - columns={[ - { - colProps: { span: 24 }, - title: '选择房屋', - key: 'asset_houses_id', - formItemProps: { ...rulesHelper.text }, - renderFormItem: () => { - return ( - -
已选择房屋:{data?.asset_house?.full_name}
-
- ); - }, - }, - { - title: '申请人', - key: 'apply_name', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '申请人电话', - key: 'apply_phone', - colProps: { span: 8 }, - fieldProps: { - maxLength: 11, - }, - formItemProps: { ...rulesHelper.text }, - }, - MyFormItems.EnumRadio({ - key: 'passed_type', - title: '装修类型', - // valueEnum: GoodsReleasesPassedTypeEnum, - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }), - { - valueType: 'formList', - dataIndex: 'goods', - title: '添加放行物品', - formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - initialValue: [ - { - number: 1, - }, - ], - creatorRecord: { - number: 1, - }, - }, - columns: [ - { - valueType: 'group', - colProps: { span: 24 }, - columns: [ - { - key: 'name', - title: '物品名称', - colProps: { span: 8 }, - formItemProps: { ...rulesHelper.text }, - }, - { - key: 'number', - title: '数量', - valueType: 'digit', - colProps: { span: 3 }, - formItemProps: { ...rulesHelper.number }, - }, - { - key: 'remark', - title: '物品备注', - colProps: { span: 13 }, - }, - ], - }, - ], - }, - { - title: '放行日期', - key: 'passed_time', - valueType: 'date', - colProps: { span: 24 }, - formItemProps: { ...rulesHelper.text }, - }, - { - title: '其他备注', - key: 'remark', - valueType: 'textarea', - colProps: { span: 24 }, - }, - ]} - /> -
-
-
- ); -} -- 2.47.2 From 2699402b7a2cfe907442e971f4430cee1fd58ead Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 19 Jan 2026 19:17:20 +0800 Subject: [PATCH 08/12] =?UTF-8?q?fix=EF=BC=9A=E5=A2=9E=E5=8A=A0=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=EF=BC=8C=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gen/ApiTypes.d.ts | 202 +++++++++++ src/gen/Apis.ts | 129 +++++++ src/gen/Enums.ts | 109 +++++- src/pages/approval/approval/index.tsx | 86 +++++ src/pages/approval/cc_me/index.tsx | 74 ++++ src/pages/approval/cc_me/modals/Show.tsx | 250 ++++++++++++++ src/pages/approval/my_apply/index.tsx | 99 ++++++ src/pages/approval/my_processed/index.tsx | 63 ++++ .../approval/my_processed/modals/Show.tsx | 250 ++++++++++++++ src/pages/approval/pending/index.tsx | 86 +++++ src/pages/approval/pending/modals/Audit.tsx | 320 ++++++++++++++++++ .../approval/pending/modals/Forwarded.tsx | 59 ++++ src/pages/approval/templates/index.tsx | 83 +++++ .../templates/modals/BatchModifyApprover.tsx | 62 ++++ .../approval/templates/modals/Create.tsx | 141 ++++++++ .../approval/templates/modals/Update.tsx | 168 +++++++++ src/pages/bills/house_bills/index.tsx | 42 +-- .../bills/house_bills/modals/BillRefund.tsx | 13 +- src/pages/charge/refunds/index.tsx | 136 ++++++++ src/pages/charge/refunds/modals/Refund.tsx | 75 ++++ 20 files changed, 2416 insertions(+), 31 deletions(-) create mode 100644 src/pages/approval/approval/index.tsx create mode 100644 src/pages/approval/cc_me/index.tsx create mode 100644 src/pages/approval/cc_me/modals/Show.tsx create mode 100644 src/pages/approval/my_apply/index.tsx create mode 100644 src/pages/approval/my_processed/index.tsx create mode 100644 src/pages/approval/my_processed/modals/Show.tsx create mode 100644 src/pages/approval/pending/index.tsx create mode 100644 src/pages/approval/pending/modals/Audit.tsx create mode 100644 src/pages/approval/pending/modals/Forwarded.tsx create mode 100644 src/pages/approval/templates/index.tsx create mode 100644 src/pages/approval/templates/modals/BatchModifyApprover.tsx create mode 100644 src/pages/approval/templates/modals/Create.tsx create mode 100644 src/pages/approval/templates/modals/Update.tsx create mode 100644 src/pages/charge/refunds/index.tsx create mode 100644 src/pages/charge/refunds/modals/Refund.tsx diff --git a/src/gen/ApiTypes.d.ts b/src/gen/ApiTypes.d.ts index be6afa2..523f7f7 100644 --- a/src/gen/ApiTypes.d.ts +++ b/src/gen/ApiTypes.d.ts @@ -63,6 +63,88 @@ declare namespace ApiTypes { }; } } + namespace Approval { + namespace ApprovalInstances { + type PendingList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 所属项目id + "status"?: string; // 状态,[enum:ApprovalRecordsStatusEnum] + }; + type Show = { + "id": number; // 审批实例id + }; + type Approve = { + "record_id": number; // 审批记录id + "status": string; // 审批结果,[enum:ApprovalRecordsStatusEnum] + "opinion"?: string; // 审批意见 + }; + type Cancel = { + "id": number; // 审批实例id + }; + type Transfer = { + "record_id": number; // 审批记录id + "to_employee_id": number; // 接收人id,[ref:company_employees] + "opinion"?: string; // 转交理由 + }; + type List = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "status"?: string; // 状态,[enum:ApprovalInstancesStatusEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 所属项目id + }; + type ProcessedList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "status"?: string; // 审批结果,[enum:ApprovalRecordsStatusEnum] + "asset_projects_id"?: number; // 所属项目id + }; + type CcList = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "asset_projects_id"?: number; // 所属项目id + }; + } + namespace ApprovalTemplates { + type List = { + "name"?: string; // 模糊搜索:名称 + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + }; + type Store = { + "name": string; // 模板名称 + "code": string; // 模板编码 + "type": string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "description"?: string; // 模板描述 + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + "nodes": string[]; // 审批节点列表 + }; + type Update = { + "id": number; // id + "name": string; // 模板名称 + "code": string; // 模板编码 + "type": string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "description"?: string; // 模板描述 + "is_enabled"?: boolean; // 是否启用 + "asset_projects_id"?: number; // 所属项目id + "nodes": string[]; // 审批节点列表 + }; + type Show = { + "id": number; // id + }; + type SoftDelete = { + "id": number; // id + }; + type ToggleEnabled = { + "id": number; // id + "is_enabled": boolean; // 是否启用 + }; + type Select = { + "type"?: string; // 业务类型,[enum:ApprovalTemplatesTypeEnum] + "asset_projects_id"?: number; // 所属项目id + }; + } + } namespace Archive { namespace HouseOccupants { type List = { @@ -760,6 +842,17 @@ declare namespace ApiTypes { "organizations_id"?: number; // 所属组织id,[ref:organizations] "keywords"?: string; // 关键词 }; + type Import = { + "upload_file": mimes:xlsx,xls; // 上传文件 + }; + type Export = { + "organizations_id"?: number; // 组织机构ID + "organization_name"?: string; // 组织机构名称 + "name"?: string; // 模糊搜索:名称 + "phone"?: string; // 模糊搜索:手机号 + "download_type"?: string; // 下载类型:all-全部,page-当前页 + "current"?: number; // 当前页偏移量 + }; } namespace CompanyPositions { type List = { @@ -946,6 +1039,51 @@ declare namespace ApiTypes { }; } } + namespace GoodsReleases { + namespace GoodsReleases { + type List = { + "code"?: string; // 放行码 + "apply_name"?: string; // 申请人姓名 + "apply_phone"?: string; // 申请人电话 + "status"?: string; // 状态,[enum:GoodsReleasesStatusEnum] + "passed_type"?: string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "asset_projects_id"?: number; // 所属项目 + "asset_houses_id"?: number; // 房屋 + }; + type Store = { + "asset_houses_id": number; // 访问房屋 + "apply_name": string; // 申请人姓名 + "apply_phone": string; // 申请人电话 + "passed_type": string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "goods": string[]; // 放行物品信息 + "passed_time": Date; // 通行时间 + "remark"?: string; // 备注 + }; + type Update = { + "id": number; // id + "apply_name"?: string; // 申请人姓名 + "apply_phone"?: string; // 申请人电话 + "passed_type"?: string; // 通行类型,[enum:GoodsReleasesPassedTypeEnum] + "goods"?: string[]; // 放行物品信息 + "passed_time"?: Date; // 通行时间 + "remark"?: string; // 备注 + }; + type Show = { + "id": number; // id + }; + type ApproveByEmployee = { + "id": number; // id + "status": string; // 审核状态(Approved/Rejected) + "reason"?: string; // 驳回原因 + }; + type Release = { + "id": number; // id + }; + type ScanRelease = { + "code": string; // 放行码 + }; + } + } namespace Grid { namespace Grids { type List = { @@ -1548,6 +1686,70 @@ declare namespace ApiTypes { }; } } + namespace Refund { + namespace Refunds { + type List = { + "type"?: string; // 退款类型,[enum:RefundsTypeEnum] + "business_id"?: number; // 业务ID(配合type使用) + "refund_status"?: string; // 退款状态,[enum:RefundsStatusEnum] + "applicant_name"?: string; // 申请人姓名 + "asset_projects_id"?: number; // 项目ID + "apply_time"?: string[]; // 申请时间范围 + "asset_houses_id"?: number; // 房屋ID + }; + type Store = { + "type": string; // 退款类型,[enum:RefundsTypeEnum] + "business_id"?: number; // 业务ID(根据type对应不同表) + "refund_amount": number; // 退款金额(单位元) + "company_receipt_accounts_id": number; // 出款账户id + "payee_name"?: string; // 收款人姓名 + "payee_bank"?: string; // 收款银行 + "payee_account"?: string; // 收款账号 + "reason"?: string; // 退款原因 + "asset_projects_id"?: number; // 项目ID + "approval_templates_id"?: number; // 审批模板ID + "node_approvers"?: string[]; // 各节点审批人员列表 + }; + type Show = { + "id": number; // id + }; + type Complete = { + "id": number; // id + "serial_number"?: string; // 退款流水号 + "refund_time"?: Date; // 退款时间 + "voucher"?: string[]; // 退款凭证 + }; + type Cancel = { + "id": number; // id + }; + } + } + namespace Visitor { + namespace VisitorApplies { + type List = { + "status"?: string; // 审核状态,[enum:VisitorAppliesStatusEnum] + "visit_start_time"?: Date; // 预计到访时间 + "visitor_name"?: string; // 模糊搜索:访客姓名 + "visitor_phone"?: string; // 模糊搜索:访客电话 + "host_phone"?: string; // 模糊搜索:被访人电话 + "asset_projects_id"?: number; // 项目ID + }; + type Show = { + "id": number; // 申请id + }; + type Approve = { + "id": number; // 访客申请id + }; + type Reject = { + "id": number; // 访客申请id + "remark": string; // 驳回原因 + }; + type Scan = { + "code": string; // 通行码 + "scan_type": string; // 扫码类型:进入/离开,[enum:VisitorScanTypeEnum] + }; + } + } namespace WorkOrder { namespace HouseWorkLogs { type List = { diff --git a/src/gen/Apis.ts b/src/gen/Apis.ts index 8f5c1bc..5e49099 100644 --- a/src/gen/Apis.ts +++ b/src/gen/Apis.ts @@ -41,6 +41,63 @@ export const Apis = { }, }, }, + Approval: { + ApprovalInstances: { + PendingList(data?: ApiTypes.Approval.ApprovalInstances.PendingList): Promise { + return request('company/approval/approval_instances/pending_list', { data }); + }, + PendingCount(): Promise { + return request('company/approval/approval_instances/pending_count', {}); + }, + MyApplyList(): Promise { + return request('company/approval/approval_instances/my_apply_list', {}); + }, + Show(data: ApiTypes.Approval.ApprovalInstances.Show): Promise { + return request('company/approval/approval_instances/show', { data }); + }, + Approve(data: ApiTypes.Approval.ApprovalInstances.Approve): Promise { + return request('company/approval/approval_instances/approve', { data }); + }, + Cancel(data: ApiTypes.Approval.ApprovalInstances.Cancel): Promise { + return request('company/approval/approval_instances/cancel', { data }); + }, + Transfer(data: ApiTypes.Approval.ApprovalInstances.Transfer): Promise { + return request('company/approval/approval_instances/transfer', { data }); + }, + List(data?: ApiTypes.Approval.ApprovalInstances.List): Promise { + return request('company/approval/approval_instances/list', { data }); + }, + ProcessedList(data?: ApiTypes.Approval.ApprovalInstances.ProcessedList): Promise { + return request('company/approval/approval_instances/processed_list', { data }); + }, + CcList(data?: ApiTypes.Approval.ApprovalInstances.CcList): Promise { + return request('company/approval/approval_instances/cc_list', { data }); + }, + }, + ApprovalTemplates: { + List(data?: ApiTypes.Approval.ApprovalTemplates.List): Promise { + return request('company/approval/approval_templates/list', { data }); + }, + Store(data: ApiTypes.Approval.ApprovalTemplates.Store): Promise { + return request('company/approval/approval_templates/store', { data }); + }, + Update(data: ApiTypes.Approval.ApprovalTemplates.Update): Promise { + return request('company/approval/approval_templates/update', { data }); + }, + Show(data: ApiTypes.Approval.ApprovalTemplates.Show): Promise { + return request('company/approval/approval_templates/show', { data }); + }, + SoftDelete(data: ApiTypes.Approval.ApprovalTemplates.SoftDelete): Promise { + return request('company/approval/approval_templates/soft_delete', { data }); + }, + ToggleEnabled(data: ApiTypes.Approval.ApprovalTemplates.ToggleEnabled): Promise { + return request('company/approval/approval_templates/toggle_enabled', { data }); + }, + Select(data?: ApiTypes.Approval.ApprovalTemplates.Select): Promise { + return request('company/approval/approval_templates/select', { data }); + }, + }, + }, Archive: { HouseOccupants: { List(data?: ApiTypes.Archive.HouseOccupants.List): Promise { @@ -366,6 +423,15 @@ export const Apis = { Select(data?: ApiTypes.Company.CompanyEmployees.Select): Promise { return request('company/company/company_employees/select', { data }); }, + Import(data: ApiTypes.Company.CompanyEmployees.Import): Promise { + return request('company/company/company_employees/import', { data }); + }, + DownloadTemplate(): Promise { + return request('company/company/company_employees/download_template', {responseType: 'blob',}); + }, + Export(data?: ApiTypes.Company.CompanyEmployees.Export): Promise { + return request('company/company/company_employees/export', { responseType: 'blob',data }); + }, }, CompanyPositions: { List(data?: ApiTypes.Company.CompanyPositions.List): Promise { @@ -500,6 +566,31 @@ export const Apis = { }, }, }, + GoodsReleases: { + GoodsReleases: { + List(data?: ApiTypes.GoodsReleases.GoodsReleases.List): Promise { + return request('company/goods_releases/goods_releases/list', { data }); + }, + Store(data: ApiTypes.GoodsReleases.GoodsReleases.Store): Promise { + return request('company/goods_releases/goods_releases/store', { data }); + }, + Update(data: ApiTypes.GoodsReleases.GoodsReleases.Update): Promise { + return request('company/goods_releases/goods_releases/update', { data }); + }, + Show(data: ApiTypes.GoodsReleases.GoodsReleases.Show): Promise { + return request('company/goods_releases/goods_releases/show', { data }); + }, + ApproveByEmployee(data: ApiTypes.GoodsReleases.GoodsReleases.ApproveByEmployee): Promise { + return request('company/goods_releases/goods_releases/approve_by_employee', { data }); + }, + Release(data: ApiTypes.GoodsReleases.GoodsReleases.Release): Promise { + return request('company/goods_releases/goods_releases/release', { data }); + }, + ScanRelease(data: ApiTypes.GoodsReleases.GoodsReleases.ScanRelease): Promise { + return request('company/goods_releases/goods_releases/scan_release', { data }); + }, + }, + }, Grid: { Grids: { List(data?: ApiTypes.Grid.Grids.List): Promise { @@ -864,6 +955,44 @@ export const Apis = { }, }, }, + Refund: { + Refunds: { + List(data?: ApiTypes.Refund.Refunds.List): Promise { + return request('company/refund/refunds/list', { data }); + }, + Store(data: ApiTypes.Refund.Refunds.Store): Promise { + return request('company/refund/refunds/store', { data }); + }, + Show(data: ApiTypes.Refund.Refunds.Show): Promise { + return request('company/refund/refunds/show', { data }); + }, + Complete(data: ApiTypes.Refund.Refunds.Complete): Promise { + return request('company/refund/refunds/complete', { data }); + }, + Cancel(data: ApiTypes.Refund.Refunds.Cancel): Promise { + return request('company/refund/refunds/cancel', { data }); + }, + }, + }, + Visitor: { + VisitorApplies: { + List(data?: ApiTypes.Visitor.VisitorApplies.List): Promise { + return request('company/visitor/visitor_applies/list', { data }); + }, + Show(data: ApiTypes.Visitor.VisitorApplies.Show): Promise { + return request('company/visitor/visitor_applies/show', { data }); + }, + Approve(data: ApiTypes.Visitor.VisitorApplies.Approve): Promise { + return request('company/visitor/visitor_applies/approve', { data }); + }, + Reject(data: ApiTypes.Visitor.VisitorApplies.Reject): Promise { + return request('company/visitor/visitor_applies/reject', { data }); + }, + Scan(data: ApiTypes.Visitor.VisitorApplies.Scan): Promise { + return request('company/visitor/visitor_applies/scan', { data }); + }, + }, + }, WorkOrder: { HouseWorkLogs: { List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise { diff --git a/src/gen/Enums.ts b/src/gen/Enums.ts index 844c78c..c6b82ff 100644 --- a/src/gen/Enums.ts +++ b/src/gen/Enums.ts @@ -26,6 +26,41 @@ export const ActivityEnrollsStatusEnum= { 'Cancelled': {"text":"取消","color":"#ff9800","value":"Cancelled"}, }; +// 审批实例状态枚举 +export const ApprovalInstancesStatusEnum= { + 'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"已拒绝","color":"#f44336","value":"Rejected"}, + 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"}, +}; + +// 审批记录状态枚举 +export const ApprovalRecordsStatusEnum= { + 'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"同意","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"拒绝","color":"#f44336","value":"Rejected"}, + 'Transferred': {"text":"转交","color":"#9c27b0","value":"Transferred"}, +}; + +// 审批方式枚举 +export const ApprovalTemplateNodesApproveTypeEnum= { + 'And': {"text":"会签","color":"#4caf50","value":"And"}, + 'Or': {"text":"或签","color":"#ff9800","value":"Or"}, +}; + +// 审批节点类型枚举 +export const ApprovalTemplateNodesNodeTypeEnum= { + 'Approver': {"text":"审批人","color":"#2196f3","value":"Approver"}, + 'CC': {"text":"抄送人","color":"#9e9e9e","value":"CC"}, +}; + +// 审批业务类型枚举 +export const ApprovalTemplatesTypeEnum= { + 'Contract': {"text":"合同","color":"#2196f3","value":"Contract"}, + 'Finance': {"text":"财务","color":"#4caf50","value":"Finance"}, + 'Refund': {"text":"退款","color":"#f44336","value":"Refund"}, +}; + // 车位产权类型 export const AssetCarPortsPropertyTypeEnum= { 'Ownership': {"text":"产权车位","color":"#1e90ff","value":"Ownership"}, @@ -216,7 +251,7 @@ export const BannersTypeEnum= { // 缓存类型 export const CacheTypeEnum= { - 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#6f374e","value":"MobilePhoneVerificationCode"}, + 'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#817c26","value":"MobilePhoneVerificationCode"}, }; // CompaniesMerchantTypeEnum @@ -346,6 +381,29 @@ export const CustomerOpinionsTypeEnum= { 'FeatureSuggestion': {"text":"新功能建议","color":"#00bfff","value":"FeatureSuggestion"}, }; +// 物品放行审核状态 +export const GoodsReleasesAuditStatusEnum= { + 'Pending': {"text":"待审核","color":"#faad14","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#52c41a","value":"Approved"}, + 'Rejected': {"text":"已退回","color":"#ff4d4f","value":"Rejected"}, +}; + +// 物品放行通行类型 +export const GoodsReleasesPassedTypeEnum= { + 'Moving': {"text":"搬家","color":"#1890ff","value":"Moving"}, + 'Delivery': {"text":"出货","color":"#52c41a","value":"Delivery"}, + 'Other': {"text":"其他","color":"#faad14","value":"Other"}, +}; + +// 物品放行状态 +export const GoodsReleasesStatusEnum= { + 'Pending': {"text":"待审核","color":"#faad14","value":"Pending"}, + 'OwnerApproved': {"text":"业主已审","color":"#1890ff","value":"OwnerApproved"}, + 'Approved': {"text":"已通过","color":"#52c41a","value":"Approved"}, + 'Rejected': {"text":"已退回","color":"#ff4d4f","value":"Rejected"}, + 'Released': {"text":"已放行","color":"#722ed1","value":"Released"}, +}; + // 账单状态枚举 export const HouseBillsBillStatusEnum= { 'PendingPayment': {"text":"待支付","color":"#facc15","value":"PendingPayment"}, @@ -733,6 +791,17 @@ export const RefundsStatusEnum= { 'Cancelled': {"text":"已取消","color":"#9e9e9e","value":"Cancelled"}, }; +// 退款类型枚举 +export const RefundsTypeEnum= { + 'HouseBill': {"text":"物业费退款","color":"#2196f3","value":"HouseBill"}, + 'Bill': {"text":"账单退款","color":"#4caf50","value":"Bill"}, + 'ContractBill': {"text":"合同退款","color":"#ff9800","value":"ContractBill"}, + 'RenovationApply': {"text":"退保证金","color":"#86aac3ff","value":"RenovationApply"}, + 'HouseDoorCard': {"text":"门禁退款","color":"#9c27b0","value":"HouseDoorCard"}, + 'HouseWorkOrder': {"text":"工单退款","color":"#00bcd4","value":"HouseWorkOrder"}, + 'Other': {"text":"其他退款","color":"#607d8b","value":"Other"}, +}; + // 性别 export const SexEnum= { 'Male': {"text":"男","color":"#0000ff","value":"Male"}, @@ -753,6 +822,44 @@ export const SysPermissionsTypeEnum= { 'Button': {"text":"按钮","color":"#97224f","value":"Button"}, }; +// 来访事由 +export const VisitReasonEnum= { + 'Visit': {"text":"拜访","color":"#2196f3","value":"Visit"}, + 'Business': {"text":"商务","color":"#3f51b5","value":"Business"}, + 'Interview': {"text":"面试","color":"#9c27b0","value":"Interview"}, + 'Private': {"text":"私人","color":"#e91e63","value":"Private"}, + 'Express': {"text":"快递","color":"#00bcd4","value":"Express"}, + 'Renovation': {"text":"装修","color":"#ff5722","value":"Renovation"}, + 'Other': {"text":"其他","color":"#607d8b","value":"Other"}, +}; + +// 访客申请状态 +export const VisitorAppliesStatusEnum= { + 'Pending': {"text":"审核中","color":"#ff9800","value":"Pending"}, + 'Approved': {"text":"已通过","color":"#4caf50","value":"Approved"}, + 'Rejected': {"text":"已驳回","color":"#f44336","value":"Rejected"}, + 'Expired': {"text":"已失效","color":"#9e9e9e","value":"Expired"}, +}; + +// 访客申请类型 +export const VisitorApplyTypeEnum= { + 'invite': {"text":"业主邀请","color":"#2196f3","value":"invite"}, + 'register': {"text":"访客登记","color":"#ff9800","value":"register"}, +}; + +// 通行码状态 +export const VisitorCodeStatusEnum= { + 'unused': {"text":"未使用","color":"#2196f3","value":"unused"}, + 'used': {"text":"已使用","color":"#4caf50","value":"used"}, + 'expired': {"text":"已过期","color":"#f44336","value":"expired"}, +}; + +// 访客扫码类型 +export const VisitorScanTypeEnum= { + 'enter': {"text":"进入","color":"#4caf50","value":"enter"}, + 'exit': {"text":"离开","color":"#f44336","value":"exit"}, +}; + // WechatAuthsPlatformEnum export const WechatAuthsPlatformEnum= { 'MiniProgram': {"text":"微信小程序","color":"#3b82f6","value":"MiniProgram"}, diff --git a/src/pages/approval/approval/index.tsx b/src/pages/approval/approval/index.tsx new file mode 100644 index 0000000..8b5cf9a --- /dev/null +++ b/src/pages/approval/approval/index.tsx @@ -0,0 +1,86 @@ +import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalInstancesStatusEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Space } from 'antd'; +import Audit from '../pending/modals/Audit'; + +export default function Index({ title = '待我审批' }) { + const navigate = useNavigate(); + return ( + + + MyProTableProps.request( + { + status: 'Pending', + ...params, + }, + sort, + Apis.Approval.ApprovalInstances.PendingList, + ) + } + headerTitle="待我审批" + columns={[ + MyColumns.ID({ search: false }), + MyColumns.EnumTag({ + title: '状态', + dataIndex: 'status', + valueEnum: ApprovalInstancesStatusEnum, + }), + MyColumns.EnumTag({ + dataIndex: ['approval_instance', 'type'], + title: '类型', + valueEnum: ApprovalTemplatesTypeEnum, + search: false, + }), + { + title: '申请事项', + dataIndex: ['approval_instance', 'title'], + search: false, + }, + { + title: '关联项目', + dataIndex: ['approval_instance', 'asset_project', 'name'], + search: false, + }, + + { + title: '申请人', + dataIndex: 'approver_name', + }, + + // { + // title: '有效期', + // search: false, + // render: (_, item: any) => { + // return `${dayjs( + // item?.approval_instance?.model?.start_time, + // ).format('YYYY-MM-DD')}至${dayjs( + // item?.approval_instance?.model?.end_time, + // ).format('YYYY-MM-DD')}`; + // }, + // }, + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/cc_me/index.tsx b/src/pages/approval/cc_me/index.tsx new file mode 100644 index 0000000..5ff00f6 --- /dev/null +++ b/src/pages/approval/cc_me/index.tsx @@ -0,0 +1,74 @@ +import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalInstancesStatusEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import Show from './modals/Show'; +export default function Index({ title = '抄送我的' }) { + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Approval.ApprovalInstances.CcList, + ) + } + headerTitle={title} + columns={[ + MyColumns.ID({ search: false }), + { + title: '申请事项', + dataIndex: 'title', + search: false, + }, + { + title: '关联项目', + dataIndex: ['asset_project', 'name'], + search: false, + }, + MyColumns.EnumTag({ + title: '状态', + dataIndex: 'status', + valueEnum: ApprovalInstancesStatusEnum, + }), + MyColumns.EnumTag({ + dataIndex: 'type', + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + search: false, + }), + + // { + // title: '项目ID', + // dataIndex: 'asset_projects_id', + // hidden: true, + // }, + // { + // title: '申请人', + // dataIndex: 'applicant_name', + // search: false, + // }, + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/cc_me/modals/Show.tsx b/src/pages/approval/cc_me/modals/Show.tsx new file mode 100644 index 0000000..7b99ee2 --- /dev/null +++ b/src/pages/approval/cc_me/modals/Show.tsx @@ -0,0 +1,250 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + renderTextHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { RefundsTypeEnum } from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.model_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + + + + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + {/* + + */} + {/* + + */} + + {config?.value?.model?.contract_type_name || '-'} + + {/* + + */} + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/my_apply/index.tsx b/src/pages/approval/my_apply/index.tsx new file mode 100644 index 0000000..f159a8e --- /dev/null +++ b/src/pages/approval/my_apply/index.tsx @@ -0,0 +1,99 @@ +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalInstancesStatusEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +export default function Index({ title = '我的发起' }) { + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Approval.ApprovalInstances.MyApplyList, + ) + } + headerTitle={title} + columns={[ + MyColumns.ID({ search: false }), + { + title: '申请事项', + dataIndex: 'title', + search: false, + }, + { + title: '关联项目', + dataIndex: ['asset_project', 'name'], + search: false, + }, + MyColumns.EnumTag({ + title: '状态', + dataIndex: 'status', + valueEnum: ApprovalInstancesStatusEnum, + }), + MyColumns.EnumTag({ + dataIndex: 'type', + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + search: false, + }), + { + title: '当前审批人', + dataIndex: ['approval_records', 'approver_name'], + search: false, + render: (_, item: any) => + `${item?.approval_records?.[0]?.company_employee?.name || ''}-${ + item?.approval_records?.[0]?.company_employee?.phone || '' + }`, + }, + // { + // title: '项目ID', + // dataIndex: 'asset_projects_id', + // hidden: true, + // }, + // { + // title: '申请人', + // dataIndex: 'applicant_name', + // search: false, + // }, + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + {/* */} + + Apis.Approval.ApprovalInstances.Cancel({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/my_processed/index.tsx b/src/pages/approval/my_processed/index.tsx new file mode 100644 index 0000000..e10fb98 --- /dev/null +++ b/src/pages/approval/my_processed/index.tsx @@ -0,0 +1,63 @@ +import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalInstancesStatusEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import Show from './modals/Show'; +export default function Index({ title = '我的发起' }) { + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Approval.ApprovalInstances.ProcessedList, + ) + } + headerTitle={title} + columns={[ + MyColumns.ID({ search: false }), + { + title: '申请事项', + dataIndex: 'title', + search: false, + }, + { + title: '关联项目', + dataIndex: ['asset_project', 'name'], + search: false, + }, + MyColumns.EnumTag({ + title: '状态', + dataIndex: 'status', + valueEnum: ApprovalInstancesStatusEnum, + }), + MyColumns.EnumTag({ + dataIndex: 'type', + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + search: false, + }), + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/my_processed/modals/Show.tsx b/src/pages/approval/my_processed/modals/Show.tsx new file mode 100644 index 0000000..c8f48f6 --- /dev/null +++ b/src/pages/approval/my_processed/modals/Show.tsx @@ -0,0 +1,250 @@ +import { MyBetaModalFormProps, MyButtons, MyModalFormProps } from '@/common'; + +import { Apis } from '@/gen/Apis'; +// import { +// ContractsContractNatureEnum, +// ContractsSettlementModeEnum, +// ContractTemplatesIncomeExpenseTypeEnum, +// RefundsTypeEnum, +// } from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.model_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + {/* + + */} + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + {/* + + */} + {/* + + */} + + {config?.value?.model?.contract_type_name || '-'} + + {/* + + */} + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.applicant?.name || '-'}: + {props?.item?.applicant?.phone || '-'} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/pending/index.tsx b/src/pages/approval/pending/index.tsx new file mode 100644 index 0000000..e92006b --- /dev/null +++ b/src/pages/approval/pending/index.tsx @@ -0,0 +1,86 @@ +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalInstancesStatusEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import Audit from './modals/Audit'; +import Forwarded from './modals/Forwarded'; +export default function Index({ title = '我的待办' }) { + return ( + + + MyProTableProps.request( + { + ...params, + status: ApprovalInstancesStatusEnum.Pending.value, + }, + sort, + Apis.Approval.ApprovalInstances.PendingList, + ) + } + headerTitle={title} + columns={[ + MyColumns.ID({ search: false }), + { + title: '申请事项', + dataIndex: ['approval_instance', 'title'], + search: false, + }, + { + title: '关联项目', + dataIndex: ['approval_instance', 'asset_project', 'name'], + search: false, + }, + MyColumns.EnumTag({ + title: '状态', + dataIndex: ['approval_instance', 'status'], + valueEnum: ApprovalInstancesStatusEnum, + }), + MyColumns.EnumTag({ + dataIndex: ['approval_instance', 'type'], + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + search: false, + }), + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + + Apis.Approval.ApprovalInstances.Cancel({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/pending/modals/Audit.tsx b/src/pages/approval/pending/modals/Audit.tsx new file mode 100644 index 0000000..58479f2 --- /dev/null +++ b/src/pages/approval/pending/modals/Audit.tsx @@ -0,0 +1,320 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + renderTextHelper, + rulesHelper, +} from '@/common'; + +import { Apis } from '@/gen/Apis'; +import { HouseRegistersStatusEnum, RefundsTypeEnum } from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { + BetaSchemaForm, + ProCard, + ProDescriptions, +} from '@ant-design/pro-components'; +import { useNavigate } from '@umijs/max'; +import { Form, message, Space, Steps } from 'antd'; + +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + const navigate = useNavigate(); + + // 监听status字段变化,动态设置默认审批意见 + const handleStatusChange = (changedValues: any) => { + if (changedValues.status) { + if (changedValues.status === HouseRegistersStatusEnum.Approved.value) { + form.setFieldsValue({ opinion: '同意' }); + } else if ( + changedValues.status === HouseRegistersStatusEnum.Rejected.value + ) { + form.setFieldsValue({ opinion: '不同意' }); + } + } + }; + + return ( + + {...MyModalFormProps.props} + title={props.title} + trigger={} + wrapperCol={{ span: 24 }} + width="600px" + key={new Date().getTime()} + form={form} + onOpenChange={() => { + if (props?.item?.id) { + Apis.Approval.ApprovalInstances.Show({ + id: props.item?.approval_instances_id, + }).then((res) => { + form.setFieldsValue({ + info_display: res?.data, + }); + }); + } + }} + initialValues={{ + // 默认选择通过,审批意见为同意 + status: HouseRegistersStatusEnum.Approved.value, + opinion: '同意', + }} + onValuesChange={handleStatusChange} + onFinish={async (values: any) => + Apis.Approval.ApprovalInstances.Approve({ + record_id: props.item?.id ?? 0, + ...values, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + // title: '登记信息', + dataIndex: 'info_display', + valueType: 'text', + renderFormItem: (_, config) => ( + +
+ {/* 退款详情 */} + {config?.value?.type === 'Refund' && ( + + + + {config?.value?.title || '-'} + + + + + + + {config?.value?.model?.refund_amount || '-'} + 元 + + + + + {config?.value?.model?.payer_name || '-'}| + {config?.value?.model?.payer_bank || '-'}| + {config?.value?.model?.payer_account || '-'} + + + {config?.value?.model?.payee_name || '-'} + {config?.value?.model?.payee_bank || '-'} + {config?.value?.model?.payee_account || '-'} + + + + {props?.item?.created_at || '-'} + + + + )} + {/* 合同详情 */} + {config?.value?.type === 'Contract' && ( + + + + {config?.value?.model?.name || '-'} + + + + + {config?.value?.model?.code || '-'} + + { + navigate( + `/contract/contracts/show/${config?.value?.model?.id}`, + ); + }} + /> + + + {/* + + */} + {/* + + */} + + {config?.value?.model?.contract_type_name || '-'} + + {/* + + */} + + {config?.value?.model?.total_amount || '-'} + + + {config?.value?.model?.deposit_amount || '无'} + + + {config?.value?.model?.sign_subject || '-'} + + + {config?.value?.model?.sign_department || '-'} + + + {config?.value?.model?.project_name || '-'} + + + {config?.value?.model?.contract_liaison || '-'} + + + {config?.value?.model?.start_time?.substring(0, 10)}至 + {config?.value?.model?.end_time?.substring(0, 10)} + + + {props?.item?.created_at || '-'} + + + {config?.value?.model?.attachments.map((item: any) => { + const handleDownload = async ( + e: React.MouseEvent, + ) => { + e.preventDefault(); + try { + const response = await fetch(item.url); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = item.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.error('下载失败:', error); + // 如果下载失败,则在新窗口打开 + window.open(item.url, '_blank'); + } + }; + + return ( + + ); + })} + + + + )} + + + + + + item?.node_type === 'Approver' + ? { + title: `${ + item.company_employee?.name || '-' + }-${item?.company_employee?.phone}`, + description: `${ + item.status === 'Approved' + ? `通过 - ${item.opinion || '-'} - ${ + item.created_at || '-' + }` + : '待审核' + }`, + } + : '', + )} + /> + + + + +
+
+ ), + colProps: { span: 24 }, + }, + { + valueType: 'group', + // title: '审核操作', + columns: [ + MyFormItems.EnumRadio({ + key: 'status', + title: '审核操作', + colProps: { span: 24 }, + valueEnum: () => { + let obj: any = JSON.parse( + JSON.stringify(HouseRegistersStatusEnum), + ); + delete obj.Pending; + return obj; + }, + required: true, + }), + { + valueType: 'dependency', + name: ['status'], + columns: ({ status }) => { + return status === 'Rejected' + ? [ + { + title: '审批意见', + dataIndex: 'opinion', + valueType: 'textarea', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 24 }, + }, + ] + : [ + { + title: '审批意见', + dataIndex: 'opinion', + valueType: 'textarea', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 24 }, + }, + ]; + }, + }, + ], + }, + ]} + /> + ); +} diff --git a/src/pages/approval/pending/modals/Forwarded.tsx b/src/pages/approval/pending/modals/Forwarded.tsx new file mode 100644 index 0000000..6d00f09 --- /dev/null +++ b/src/pages/approval/pending/modals/Forwarded.tsx @@ -0,0 +1,59 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Index(props: MyBetaModalFormProps & { item: any }) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`转交他人审核`} + wrapperCol={{ span: 24 }} + width="600px" + trigger={ + + } + onOpenChange={(open: any) => { + if (open && props.item) { + form.setFieldsValue({}); + } + }} + key={new Date().getTime()} + form={form} + onFinish={async (values: any) => { + Apis.Approval.ApprovalInstances.Transfer({ + ...values, + record_id: props.item.id, + }) + .then(() => { + props.reload?.(); + message.success('转交成功!'); + return true; + }) + .catch(() => false); + }} + columns={[ + Selects?.Employees({ + title: '选择新的审核人', + key: 'to_employee_id', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + required: true, + }), + { + title: '转交理由', + valueType: 'textarea', + key: 'opinion', + colProps: { span: 24 }, + }, + ]} + /> + ); +} diff --git a/src/pages/approval/templates/index.tsx b/src/pages/approval/templates/index.tsx new file mode 100644 index 0000000..0345c32 --- /dev/null +++ b/src/pages/approval/templates/index.tsx @@ -0,0 +1,83 @@ +import { + MyButtons, + MyColumns, + MyPageContainer, + MyProTableProps, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { ApprovalTemplatesTypeEnum } from '@/gen/Enums'; +import { ProTable } from '@ant-design/pro-components'; +import { Space } from 'antd'; +import BatchModifyApprover from './modals/BatchModifyApprover'; +import Create from './modals/Create'; +import Update from './modals/Update'; + +export default function Index({ title = '审批模板' }) { + return ( + + + MyProTableProps.request( + params, + sort, + Apis.Approval.ApprovalTemplates.List, + ) + } + headerTitle={title} + toolBarRender={(action) => [ + , + , + ]} + columns={[ + MyColumns.ID({ + search: false, + }), + MyColumns.EnumTag({ + title: '业务类型', + dataIndex: 'type', + valueEnum: ApprovalTemplatesTypeEnum, + }), + { + title: '模版名称', + dataIndex: 'name', + }, + { + title: '模版编码', + dataIndex: 'code', + search: false, + }, + + MyColumns.ToggleEnabled({ + onToggleEnabled: Apis.Approval.ApprovalTemplates.ToggleEnabled, + search: false, + }), + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + Apis.Approval.ApprovalTemplates.SoftDelete({ + id: item.id, + }).then(() => action?.reload()) + } + /> + + ), + }), + ]} + /> + + ); +} diff --git a/src/pages/approval/templates/modals/BatchModifyApprover.tsx b/src/pages/approval/templates/modals/BatchModifyApprover.tsx new file mode 100644 index 0000000..fa787fa --- /dev/null +++ b/src/pages/approval/templates/modals/BatchModifyApprover.tsx @@ -0,0 +1,62 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Index(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`批量修改审批人`} + wrapperCol={{ span: 24 }} + width="600px" + trigger={ + + } + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); + } + }} + key={new Date().getTime()} + form={form} + onFinish={async (values: any) => { + return Apis.Approval.ApprovalTemplates.ReplaceApprover(values) + .then(() => { + props.reload?.(); + message.success('修改成功!'); + return true; + }) + .catch(() => false); + }} + columns={[ + Selects?.Employees({ + title: '原审批人', + key: 'from_employee_id', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + required: true, + }), + Selects?.Employees({ + title: '选择新的审批人', + key: 'to_employee_id', + tooltip: '所有涉及到的审批模版,都修改成当前人', + colProps: { span: 24 }, + formItemProps: { ...rulesHelper.text }, + required: true, + }), + ]} + /> + ); +} diff --git a/src/pages/approval/templates/modals/Create.tsx b/src/pages/approval/templates/modals/Create.tsx new file mode 100644 index 0000000..cc16960 --- /dev/null +++ b/src/pages/approval/templates/modals/Create.tsx @@ -0,0 +1,141 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalTemplateNodesNodeTypeEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Create(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`添加${props.title}`} + wrapperCol={{ span: 24 }} + width="700px" + key={new Date().getTime()} + form={form} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} + trigger={} + onFinish={async (values) => + Apis.Approval.ApprovalTemplates.Store({ + ...values, + is_enabled: true, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '成功'); + return true; + }) + .catch(() => false) + } + columns={[ + MyFormItems.EnumRadio({ + key: 'type', + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + required: true, + colProps: { span: 24 }, + }), + { + key: 'name', + title: '模板名称', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 12 }, + }, + { + key: 'code', + title: '模板编码', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 12 }, + }, + { + valueType: 'formList', + dataIndex: 'nodes', + title: '设置审批节点', + fieldProps: { + copyIconProps: false, + // deleteIconProps: false, + }, + formItemProps: { + ...rulesHelper.array, + wrapperCol: { span: 24 }, + }, + columns: [ + { + valueType: 'group', + colProps: { span: 24 }, + columns: [ + MyFormItems.EnumSelect({ + key: 'node_type', + title: `类型`, + valueEnum: ApprovalTemplateNodesNodeTypeEnum, + colProps: { span: 5 }, + formItemProps: { + ...rulesHelper.text, + }, + }), + { + title: '节点名称', + key: 'name', + colProps: { span: 6 }, + formItemProps: { + ...rulesHelper.text, + }, + }, + + // MyFormItems.EnumSelect({ + // key: 'approve_type', + // title: `审批方式`, + // valueEnum: ApprovalTemplateNodesApproveTypeEnum, + // colProps: { span: 5 }, + // }), + + { + valueType: 'dependency', + name: ['node_type'], + columns: ({ node_type }) => { + return [ + Selects.Employees({ + key: 'members', + title: `审批人员`, + colProps: { span: 13 }, + fieldProps: { + mode: 'multiple', + maxCount: + node_type === + ApprovalTemplateNodesNodeTypeEnum.Approver.value + ? 1 + : 9, + }, + }), + ]; + }, + }, + ], + }, + ], + }, + { + title: '备注', + key: 'description', + colProps: { span: 24 }, + valueType: 'textarea', + }, + ]} + /> + ); +} diff --git a/src/pages/approval/templates/modals/Update.tsx b/src/pages/approval/templates/modals/Update.tsx new file mode 100644 index 0000000..d31481f --- /dev/null +++ b/src/pages/approval/templates/modals/Update.tsx @@ -0,0 +1,168 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { + ApprovalTemplateNodesNodeTypeEnum, + ApprovalTemplatesTypeEnum, +} from '@/gen/Enums'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; +let showInfo: any = []; +export default function Update(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={`编辑${props.title}`} + trigger={} + key={new Date().getTime()} + wrapperCol={{ span: 24 }} + width="700px" + form={form} + onOpenChange={(open: any) => { + if (open && props.item) { + Apis.Approval.ApprovalTemplates.Show({ + id: props.item?.id ?? 0, + }).then((res: any) => { + showInfo = res?.data?.approval_template_nodes; + form.setFieldsValue({ + ...res?.data, + nodes: res?.data?.approval_template_nodes?.map((item: any) => ({ + ...item, + members: item?.approval_template_node_members?.map( + (member: any) => member?.company_employees_id, + ), + })), + }); + }); + } + }} + onFinish={async (values) => + Apis.Approval.ApprovalTemplates.Update({ + ...values, + id: props.item?.id ?? 0, + }) + .then(() => { + props.reload?.(); + message.success(props.title + '编辑成功'); + return true; + }) + .catch(() => false) + } + columns={[ + MyFormItems.EnumRadio({ + key: 'type', + title: '业务类型', + valueEnum: ApprovalTemplatesTypeEnum, + required: true, + colProps: { span: 24 }, + }), + { + key: 'name', + title: '名称', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 12 }, + }, + { + key: 'code', + title: '模板编码', + formItemProps: { ...rulesHelper.text }, + colProps: { span: 12 }, + }, + + { + valueType: 'formList', + dataIndex: 'nodes', + title: '审批节点', + fieldProps: { + copyIconProps: false, + // deleteIconProps: false, + }, + formItemProps: { + ...rulesHelper.array, + wrapperCol: { span: 24 }, + }, + columns: [ + { + valueType: 'group', + colProps: { span: 24 }, + columns: [ + MyFormItems.EnumSelect({ + key: 'node_type', + title: `类型`, + valueEnum: ApprovalTemplateNodesNodeTypeEnum, + colProps: { span: 5 }, + formItemProps: { + ...rulesHelper.text, + }, + }), + { + title: '节点名称', + key: 'name', + colProps: { span: 6 }, + formItemProps: { + ...rulesHelper.text, + }, + }, + { + valueType: 'dependency', + name: ['node_type', 'name'], + columns: ({ node_type, name }) => { + return [ + Selects.Employees({ + key: 'members', + title: `审批人员`, + colProps: { span: 13 }, + fieldProps: { + mode: 'multiple', + maxCount: + node_type === + ApprovalTemplateNodesNodeTypeEnum.Approver.value + ? 1 + : 9, + maxTagTextLength: 3, + labelRender: (res: any) => { + console.log(res, showInfo, name, '222'); + if (res?.label) { + return res?.label; + } else { + return showInfo?.map((i: any) => { + if (i?.name === name) { + return i?.approval_template_node_members?.map( + (k: any) => { + if ( + k?.company_employees_id === res?.value + ) { + return k?.company_employee?.name || '-'; + } + }, + ); + } + }); + } + }, + }, + }), + ]; + }, + }, + ], + }, + ], + }, + { + title: '备注', + key: 'description', + colProps: { span: 24 }, + valueType: 'textarea', + }, + ]} + /> + ); +} diff --git a/src/pages/bills/house_bills/index.tsx b/src/pages/bills/house_bills/index.tsx index 0ceb238..0426bee 100644 --- a/src/pages/bills/house_bills/index.tsx +++ b/src/pages/bills/house_bills/index.tsx @@ -52,21 +52,17 @@ export default function Index({ title = '账单明细' }) { return { full_name: value }; }, }, - render: (_, record) => { - return record.asset_houses_id ? ( + render: (_, res) => { + return res.asset_houses_id ? ( { - record.asset_houses_id - ? navigate( - `/bills/summary/show/${record.asset_houses_id}`, - ) - : ''; + navigate(`/bills/summary/show/${res.asset_houses_id}`); }} /> ) : ( - '车位| ' + record.asset_car_port.full_name + '车位| ' + res.asset_car_port.full_name ); }, }, @@ -139,22 +135,18 @@ export default function Index({ title = '账单明细' }) { title="查看" /> - {item.bill_status === - HouseBillsBillStatusEnum.PartiallyPaid.value || - (item.bill_status === HouseBillsBillStatusEnum.Paid.value && ( - - ))} + Apis.Bill.HouseBills.Delete({ id: item.id }).then(() => diff --git a/src/pages/bills/house_bills/modals/BillRefund.tsx b/src/pages/bills/house_bills/modals/BillRefund.tsx index 97cccd5..95894ef 100644 --- a/src/pages/bills/house_bills/modals/BillRefund.tsx +++ b/src/pages/bills/house_bills/modals/BillRefund.tsx @@ -9,19 +9,22 @@ import { Selects } from '@/components/Select'; import { Apis } from '@/gen/Apis'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Form, message } from 'antd'; -import { useRef, useState } from 'react'; +import { useState } from 'react'; export default function Update(props: MyBetaModalFormProps) { const [form] = Form.useForm(); - const modalRef = useRef(); - const [selectedRow, setSelectedRow] = useState({}); const [ApprovalTemplates, setApprovalTemplates] = useState([]); return ( {...MyModalFormProps.props} title={`退款申请单`} - trigger={} + trigger={ + + } layout="horizontal" labelCol={{ span: 4 }} wrapperCol={{ span: 20 }} @@ -181,7 +184,7 @@ export default function Update(props: MyBetaModalFormProps) { { valueType: 'dependency', name: ['node_type'], - columns: ({ node_type }) => { + columns: ({}) => { return [ Selects.Employees({ key: 'members', diff --git a/src/pages/charge/refunds/index.tsx b/src/pages/charge/refunds/index.tsx new file mode 100644 index 0000000..6e48fff --- /dev/null +++ b/src/pages/charge/refunds/index.tsx @@ -0,0 +1,136 @@ +import { MyColumns, MyPageContainer, MyProTableProps } from '@/common'; +import { Selects } from '@/components/Select'; +import { Apis } from '@/gen/Apis'; +import { RefundsStatusEnum, RefundsTypeEnum } from '@/gen/Enums'; +import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo'; +import { ProTable } from '@ant-design/pro-components'; +import { Image, Space } from 'antd'; +import Refund from './modals/Refund'; + +export default function Index({ title = '退款列表' }) { + return ( + + + MyProTableProps.request(params, sort, Apis.Refund.Refunds.List) + } + // toolBarRender={(action) => [ + // , + // ]} + columns={[ + MyColumns.ID({ search: false }), + Selects?.AssetProjects({ + title: '选择项目', + key: 'asset_projects_id', + hidden: true, + }), + { + title: '项目名称', + dataIndex: ['asset_project', 'name'], + search: false, + }, + MyColumns.EnumTag({ + title: '类型', + dataIndex: 'type', + valueEnum: RefundsTypeEnum, + }), + MyColumns.EnumTag({ + title: '退款状态', + dataIndex: 'refund_status', + valueEnum: RefundsStatusEnum, + }), + { + title: '退款申请时间', + dataIndex: 'apply_time', + valueType: 'dateTimeRange', + hidden: true, + }, + { + title: '退款金额', + dataIndex: 'refund_amount', + search: false, + }, + { + dataIndex: 'payee_name', + title: '收款人', + search: false, + }, + { + dataIndex: 'applicant_name', + title: '申请人', + hidden: true, + }, + { + dataIndex: 'payee_bank', + title: '收款银行', + search: false, + }, + { + dataIndex: 'payee_account', + title: '收款账号', + search: false, + }, + { + title: '退款原因', + dataIndex: 'remark', + search: false, + }, + { + title: '退款信息', + search: false, + render: (_, item: any) => { + return item?.serial_number ? ( + +
流水号:{item?.serial_number}
+
退款时间:{item?.refund_time}
+
+ ) : ( + '' + ); + }, + }, + { + title: '退款凭证', + search: false, + render: (_, item: any) => { + return ( + + {item?.voucher?.map((res: any, index: number) => { + return ( + + ); + })} + + ); + }, + }, + // MyColumns.UpdatedAt(), + MyColumns.CreatedAt(), + MyColumns.Option({ + render: (_, item: any, index, action) => ( + + + + + ), + }), + ]} + /> +
+ ); +} diff --git a/src/pages/charge/refunds/modals/Refund.tsx b/src/pages/charge/refunds/modals/Refund.tsx new file mode 100644 index 0000000..83ff01e --- /dev/null +++ b/src/pages/charge/refunds/modals/Refund.tsx @@ -0,0 +1,75 @@ +import { + MyBetaModalFormProps, + MyButtons, + MyFormItems, + MyModalFormProps, + rulesHelper, +} from '@/common'; +import { Apis } from '@/gen/Apis'; +import { BetaSchemaForm } from '@ant-design/pro-components'; +import { Form, message } from 'antd'; + +export default function Refund(props: MyBetaModalFormProps) { + const [form] = Form.useForm(); + return ( + + {...MyModalFormProps.props} + title={props.title} + width="500px" + wrapperCol={{ span: 24 }} + trigger={ + + } + key={new Date().getTime()} + form={form} + onOpenChange={(open: any) => { + if (open) { + form.resetFields(); // 清空表单数据 + } + }} + onFinish={async (values) => + Apis.Refund.Refunds.Complete({ + ...values, + id: props.item?.id ?? '', + }) + .then(() => { + props.reload?.(); + message.success('提交成功'); + return true; + }) + .catch(() => false) + } + columns={[ + { + title: '退款流水号', + colProps: { span: 24 }, + key: 'serial_number', + formItemProps: { ...rulesHelper.text }, + }, + { + title: '退款时间', + key: 'refund_time', + colProps: { span: 24 }, + fieldProps: { + style: { + width: '100%', + }, + }, + valueType: 'dateTime', + }, + MyFormItems.UploadImages({ + key: 'voucher', + title: ' 退款凭证', + uploadType: 'file', + colProps: { span: 24 }, + max: 10, + }), + ]} + /> + ); +} -- 2.47.2 From 1152ae3ec9931685cae504c46a126555a0ee4b65 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 21 Jan 2026 17:20:15 +0800 Subject: [PATCH 09/12] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/archive/table/modals/OccupantsUpdate.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/customer/archive/table/modals/OccupantsUpdate.tsx b/src/pages/customer/archive/table/modals/OccupantsUpdate.tsx index d374890..32c19ee 100644 --- a/src/pages/customer/archive/table/modals/OccupantsUpdate.tsx +++ b/src/pages/customer/archive/table/modals/OccupantsUpdate.tsx @@ -61,11 +61,11 @@ export default function Update(props: MyBetaModalFormProps) { // return obj; // }, required: true, - fieldProps: { - disabled: - props?.item?.residential_relation === - HouseOccupantsResidentialRelationEnum.PropertyOwner.value, - }, + // fieldProps: { + // disabled: + // props?.item?.residential_relation === + // HouseOccupantsResidentialRelationEnum.PropertyOwner.value, + // }, }), { name: ['residential_relation'], -- 2.47.2 From 040804697d58c46e1d24bd796743a52b187e9653 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 21 Jan 2026 18:04:33 +0800 Subject: [PATCH 10/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activities/modals/ActivityUpdate.tsx | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/src/pages/asset/activities/modals/ActivityUpdate.tsx b/src/pages/asset/activities/modals/ActivityUpdate.tsx index b1da7d6..ec70dcb 100644 --- a/src/pages/asset/activities/modals/ActivityUpdate.tsx +++ b/src/pages/asset/activities/modals/ActivityUpdate.tsx @@ -26,35 +26,32 @@ export default function Update(props: MyBetaModalFormProps) { width="1000px" key={new Date().getTime()} form={form} - request={async () => { - const res = await Apis.Activity.Activities.Show({ - id: props.item?.id ?? 0, - }); - return { - project_ids: res.data.activity_projects[0]?.asset_projects_id, - }; - }} + // request={async () => { + // const res = await Apis.Activity.Activities.Show({ + // id: props.item?.id ?? 0, + // }); + // return { + // project_ids: res.data.activity_projects[0]?.asset_projects_id, + // }; + // }} onOpenChange={(open: any) => { if (open && props.item) { - form.setFieldsValue(props.item); - // form.setFieldValue( - // 'project_ids', - // props.item?.activity_projects[0]?.asset_projects_id, - // ); - form.setFieldValue('activity_time', [ - props.item?.start_time, - props.item?.end_time, - ]); - form.setFieldValue('content', props.item?.content); + form.setFieldsValue({ + ...props.item, + activity_time: [ + props.item?.start_time || '', + props.item?.end_time || '', + ], + project_ids: props?.item?.activity_projects?.map( + (res: any) => res?.asset_projects_id, + ), + }); } }} onFinish={async (values) => Apis.Activity.Activities.Update({ ...values, id: props.item?.id ?? 0, - project_ids: values?.project_ids - ? [values?.project_ids] - : [props.item?.id], }) .then(() => { props.reload?.(); @@ -67,14 +64,26 @@ export default function Update(props: MyBetaModalFormProps) { Selects?.AssetProjects({ key: 'project_ids', title: '关联项目', + formItemProps: { ...rulesHelper.array }, colProps: { span: 24 }, - required: true, fieldProps: { showSearch: true, + mode: 'multiple', fieldNames: { label: 'label', value: 'value', }, + labelRender: (res: any) => { + if (res?.label) { + return res?.label; + } else { + return props?.item?.activity_projects?.map((i: any) => { + if (res?.value === i?.asset_projects_id) { + return i?.asset_project?.name; + } + }); + } + }, }, }), { -- 2.47.2 From 176bdc01f5321e50fbc3f97ad35e556f121f6d91 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 22 Jan 2026 11:41:29 +0800 Subject: [PATCH 11/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/libs/umi/layoutConfig.tsx | 4 +-- src/common/libs/valtio/state.ts | 3 ++ src/pages/customer/archive/index.tsx | 32 +++++++++++-------- .../customer/archive/modals/Delivery.tsx | 11 +++---- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/common/libs/umi/layoutConfig.tsx b/src/common/libs/umi/layoutConfig.tsx index 024333d..37ad9a7 100644 --- a/src/common/libs/umi/layoutConfig.tsx +++ b/src/common/libs/umi/layoutConfig.tsx @@ -95,8 +95,8 @@ export const LayoutConfig: RuntimeConfig['layout'] = () => {
MyProTableProps.request(params, sort, Apis.Asset.AssetHouses.List) } - toolBarRender={(action) => [ - , - ]} + // toolBarRender={(action) => [ + // , + // ]} columns={[ MyColumns.ID({ search: false }), Selects?.AssetProjects({ @@ -142,7 +141,12 @@ export default function Index({ title = '房屋档案' }) { navigate(`/customer/archive/show/${item.id}`); }} /> - {!item?.house_occupants?.length ? ( + + {/* {!item?.house_occupants?.length ? ( ) : ( '' - )} + )} */} ), }), diff --git a/src/pages/customer/archive/modals/Delivery.tsx b/src/pages/customer/archive/modals/Delivery.tsx index d4951fe..de3c8f5 100644 --- a/src/pages/customer/archive/modals/Delivery.tsx +++ b/src/pages/customer/archive/modals/Delivery.tsx @@ -9,8 +9,6 @@ import { Apis } from '@/gen/Apis'; import { HouseOccupantsCardTypeEnum, HouseOccupantsHouseRelationEnum, - HouseOccupantsRelationWithOwnerEnum, - HouseOccupantsResidentialRelationEnum, HouseRegistersTypeEnum, } from '@/gen/Enums'; import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; @@ -28,6 +26,7 @@ export default function Delivery(props: MyBetaModalFormProps) { } @@ -46,11 +45,9 @@ export default function Delivery(props: MyBetaModalFormProps) { customer_info: values.customer_info?.map((res: any) => { return { ...res, - house_relation: HouseOccupantsHouseRelationEnum.Owner.value, - relation_with_owner: - HouseOccupantsRelationWithOwnerEnum.Self.value, - residential_relation: - HouseOccupantsResidentialRelationEnum.PropertyOwner.value, + house_relation: 'Owner', + relation_with_owner: 'Self', + residential_relation: 'PropertyOwner', }; }), }) -- 2.47.2 From 4ab3633afbc7bd7dd6ec7facaf47db7d18bf1b3f Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 22 Jan 2026 18:46:45 +0800 Subject: [PATCH 12/12] =?UTF-8?q?fix=EF=BC=9A=E6=9B=B4=E6=96=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/asset/activities/index.tsx | 9 +++++++-- src/pages/asset/activities/modals/ActivityCreate.tsx | 7 +++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/pages/asset/activities/index.tsx b/src/pages/asset/activities/index.tsx index 2ec84e6..9d10779 100644 --- a/src/pages/asset/activities/index.tsx +++ b/src/pages/asset/activities/index.tsx @@ -124,8 +124,13 @@ export default function Index({ title = '项目活动' }) { { title: '项目名称', dataIndex: ['activity_projects', 'name'], - render: (_, record) => - record?.activity_projects?.[0]?.asset_project?.name || '', + render: (_, record) => { + return ( + record?.activity_projects + ?.map((item: any) => item?.asset_project?.name) + .join(',') || '' + ); + }, search: { transform: (value) => { return { project_name: value }; diff --git a/src/pages/asset/activities/modals/ActivityCreate.tsx b/src/pages/asset/activities/modals/ActivityCreate.tsx index b85f893..41f31b6 100644 --- a/src/pages/asset/activities/modals/ActivityCreate.tsx +++ b/src/pages/asset/activities/modals/ActivityCreate.tsx @@ -34,9 +34,7 @@ export default function Create(props: MyBetaModalFormProps) { onFinish={async (values) => Apis.Activity.Activities.Store({ ...values, - project_ids: values?.project_ids - ? [values?.project_ids] - : [props.item?.id], + project_ids: values?.project_ids || [props.item?.id], }) .then(() => { props.reload?.(); @@ -53,9 +51,10 @@ export default function Create(props: MyBetaModalFormProps) { key: 'project_ids', title: '关联项目', colProps: { span: 24 }, - required: true, + formItemProps: { ...rulesHelper.array }, fieldProps: { showSearch: true, + mode: 'multiple', fieldNames: { label: 'label', value: 'value', -- 2.47.2