Merge branch 'develop' of ssh://code.linyikj.com.cn:2222/pay/pay-company into develop
All checks were successful
Build and Push Docker Image / build (push) Successful in 5m31s
All checks were successful
Build and Push Docker Image / build (push) Successful in 5m31s
* 'develop' of ssh://code.linyikj.com.cn:2222/pay/pay-company: fix: 调账功能新增; 限定antd版本 fix: 优化交互
This commit is contained in:
commit
26b8f2fc93
@ -14,7 +14,7 @@
|
||||
"@ant-design/charts": "^2.6.6",
|
||||
"@ant-design/icons": "^5.0.1",
|
||||
"@ant-design/plots": "^2.6.6",
|
||||
"@ant-design/pro-components": "^2.8.10",
|
||||
"@ant-design/pro-components": "2.8.10",
|
||||
"@antv/l7": "^2.23.0",
|
||||
"@antv/l7-leaflet": "^1.0.2",
|
||||
"@antv/l7-maps": "^2.23.0",
|
||||
@ -22,7 +22,7 @@
|
||||
"@umijs/max": "^4.3.10",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-react": "^1.0.6",
|
||||
"antd": "^5.4.0",
|
||||
"antd": "5.27.6",
|
||||
"axios": "^1.7.2",
|
||||
"dayjs": "^1.11.12",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
|
||||
497
src/gen/ApiTypes.d.ts
vendored
497
src/gen/ApiTypes.d.ts
vendored
@ -451,6 +451,449 @@ declare namespace ApiTypes {
|
||||
"download_type": string; // 下载类型:page 当前页(含查询条件),query 所有页(含查询条件),all所有记录
|
||||
};
|
||||
}
|
||||
namespace AssetItemCategories {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
};
|
||||
type Tree = {
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
};
|
||||
type Store = {
|
||||
"parent_id"?: number; // 上级分类ID
|
||||
"name": string; // 分类名称
|
||||
"code": string; // 分类标识
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"sort"?: number; // 排序
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"parent_id"?: number; // 上级分类ID
|
||||
"name": string; // 分类名称
|
||||
"code": string; // 分类标识
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"sort"?: number; // 排序
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type SoftDelete = {
|
||||
"id": number; // id
|
||||
};
|
||||
type ToggleEnabled = {
|
||||
"id": number; // id
|
||||
"is_enabled": boolean; // 是否启用
|
||||
};
|
||||
type Select = {
|
||||
"keywords"?: string; // 关键词
|
||||
};
|
||||
type SelectTree = {
|
||||
"keywords"?: string; // 关键词
|
||||
"parent_id"?: number; // 父级ID
|
||||
};
|
||||
}
|
||||
namespace AssetItemDisposals {
|
||||
type List = {
|
||||
"confirm_status"?: string; // 审核状态,[enum:AssetItemDisposalConfirmStatusEnum]
|
||||
"disposal_result"?: string; // 处置结果,[enum:AssetItemDisposalResultEnum]
|
||||
"applicant_id"?: number; // 申请人ID
|
||||
"disposal_employee_id"?: number; // 处置人ID
|
||||
"name"?: string; // 资产名称(明细中搜索)
|
||||
"code"?: string; // 资产编码(明细中搜索)
|
||||
"created_at"?: string[]; // 创建时间范围
|
||||
};
|
||||
type Store = {
|
||||
"reason"?: string; // 处置原因
|
||||
"attachments"?: string[]; // 附件
|
||||
"items": string[]; // 资产明细
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Audit = {
|
||||
"id": number; // id
|
||||
"confirm_status": string; // 确认状态,[enum:AssetItemDisposalConfirmStatusEnum]
|
||||
"reject_reason"?: string; // 驳回原因(驳回时填写)
|
||||
};
|
||||
type Complete = {
|
||||
"id": number; // id
|
||||
"disposal_date"?: Date; // 处置日期
|
||||
};
|
||||
}
|
||||
namespace AssetItemInventories {
|
||||
type List = {
|
||||
"asset_item_warehouses_id"?: number; // 盘点仓库
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"assigned_employee_id"?: number; // 盘点人
|
||||
"status"?: string; // 状态
|
||||
"inside_result"?: string; // 库内结果
|
||||
"outside_result"?: string; // 库外结果
|
||||
"name"?: string; // 盘点名称
|
||||
"created_at"?: string[]; // 创建时间
|
||||
};
|
||||
type Store = {
|
||||
"asset_item_warehouses_id"?: number; // 盘点仓库
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"name": string; // 盘点名称
|
||||
"assigned_employee_id"?: number; // 盘点人
|
||||
"category_ids": string[]; // 资产分类ID数组
|
||||
"required_start_date"?: Date; // 要求开始日期
|
||||
"required_end_date"?: Date; // 要求完成日期
|
||||
"remark"?: string; // 备注
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Details = {
|
||||
"id": number; // 盘点任务ID
|
||||
"result"?: string; // 盘点结果筛选
|
||||
"name"?: string; // 资产名称
|
||||
"code"?: string; // 资产编号
|
||||
};
|
||||
type Assign = {
|
||||
"id": number; // id
|
||||
"assigned_employee_id": number; // 盘点人ID
|
||||
};
|
||||
type Close = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Export = {
|
||||
"id": number; // id
|
||||
};
|
||||
}
|
||||
namespace AssetItemInventorySurplus {
|
||||
type List = {
|
||||
"asset_item_inventories_id"?: number; // 模糊搜索:盘点任务id
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Delete = {
|
||||
"id": number; // id
|
||||
};
|
||||
}
|
||||
namespace AssetItemMaintenanceRules {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"status"?: string; // 状态
|
||||
};
|
||||
type Store = {
|
||||
"name": string; // 规则名称
|
||||
"description"?: string; // 规则说明
|
||||
"cycle_days": number; // 维保时间间隔(天)
|
||||
"advance_days": number; // 提前生成天数
|
||||
"deadline_days": number; // 完成期限天数
|
||||
"asset_projects_id": number; // 项目ID
|
||||
"asset_item_ids": string[]; // 关联资产ID列表
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"name": string; // 规则名称
|
||||
"description"?: string; // 规则说明
|
||||
"cycle_days": number; // 维保时间间隔(天)
|
||||
"advance_days": number; // 提前生成天数
|
||||
"deadline_days": number; // 完成期限天数
|
||||
"asset_projects_id": number; // 项目ID
|
||||
"asset_item_ids": string[]; // 关联资产ID列表
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Toggle = {
|
||||
"id": number; // id
|
||||
};
|
||||
type SoftDelete = {
|
||||
"id": number; // id
|
||||
};
|
||||
}
|
||||
namespace AssetItemMaintenances {
|
||||
type List = {
|
||||
"type"?: string; // 工单类型
|
||||
"status"?: string; // 工单状态
|
||||
"source"?: string; // 来源
|
||||
"code"?: string; // 资产编码
|
||||
"name"?: string; // 资产名称
|
||||
};
|
||||
type Store = {
|
||||
"type": string; // 工单类型,[enum:AssetItemMaintenanceTypeEnum]
|
||||
"asset_items_id": number; // 资产ID
|
||||
"asset_projects_id": number; // 项目ID
|
||||
"description"?: string; // 工单说明
|
||||
"deadline"?: Date; // 要求完成日期
|
||||
"attachments"?: string[]; // 附件
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"description"?: string; // 工单说明
|
||||
"deadline"?: Date; // 要求完成日期
|
||||
"attachments"?: string[]; // 附件
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Assign = {
|
||||
"id": number; // id
|
||||
"assigned_employee_id": number; // 指派员工ID
|
||||
};
|
||||
type Close = {
|
||||
"id": number; // id
|
||||
};
|
||||
}
|
||||
namespace AssetItemMarkings {
|
||||
type List = {
|
||||
"marking_type"?: string; // 标记类型,[enum:AssetItemMarkingTypeEnum]
|
||||
"confirm_status"?: string; // 审核状态,[enum:AssetItemMarkingConfirmStatusEnum]
|
||||
"applicant_id"?: number; // 申请人ID
|
||||
"responsible_id"?: number; // 关联负责人ID
|
||||
"name"?: string; // 资产名称(明细中搜索)
|
||||
"code"?: string; // 资产编码(明细中搜索)
|
||||
"created_at"?: string[]; // 创建时间范围
|
||||
};
|
||||
type Store = {
|
||||
"marking_type": string; // 标记类型,[enum:AssetItemMarkingTypeEnum]
|
||||
"responsible_id"?: number; // 关联负责人ID
|
||||
"description"?: string; // 上报说明
|
||||
"attachments"?: string[]; // 附件
|
||||
"items": string[]; // 资产明细
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Audit = {
|
||||
"id": number; // id
|
||||
"confirm_status": string; // 确认状态,[enum:AssetItemMarkingConfirmStatusEnum]
|
||||
"reject_reason"?: string; // 驳回原因(驳回时填写)
|
||||
};
|
||||
}
|
||||
namespace AssetItemReceives {
|
||||
type List = {
|
||||
"organizations_id"?: number; // 领用部门
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"applicant_id"?: number; // 领用人
|
||||
"confirm_status"?: string; // 确认状态
|
||||
"code"?: string; // 资产编号(明细中搜索)
|
||||
"name"?: string; // 资产名称(明细中搜索)
|
||||
"receive_date"?: string[]; // 领用日期
|
||||
};
|
||||
type Store = {
|
||||
"organizations_id": number; // 领用部门
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"applicant_id": number; // 领用人
|
||||
"receive_date": Date; // 领用日期
|
||||
"reason": string; // 领用原因
|
||||
"items": string[]; // 资产明细
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Audit = {
|
||||
"id": number; // id
|
||||
"confirm_status": string; // 确认状态,[enum:AssetItemReceiveConfirmStatusEnum]
|
||||
"reject_reason"?: string; // 拒绝原因(拒绝时填写)
|
||||
};
|
||||
}
|
||||
namespace AssetItemReturns {
|
||||
type List = {
|
||||
"organizations_id"?: number; // 归还部门
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"applicant_id"?: number; // 归还人
|
||||
"confirm_status"?: string; // 确认状态
|
||||
"code"?: string; // 资产编号(明细中搜索)
|
||||
"name"?: string; // 资产名称(明细中搜索)
|
||||
"return_date"?: string[]; // 归还日期
|
||||
};
|
||||
type Store = {
|
||||
"organizations_id": number; // 归还部门
|
||||
"asset_projects_id"?: number; // 关联项目
|
||||
"applicant_id": number; // 归还人
|
||||
"return_date": Date; // 归还日期
|
||||
"reason"?: string; // 归还说明
|
||||
"confirm_employee_id": number; // 确认人
|
||||
"items": string[]; // 资产明细
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Audit = {
|
||||
"id": number; // id
|
||||
"confirm_status": string; // 确认状态,[enum:AssetItemReturnConfirmStatusEnum]
|
||||
"reject_reason"?: string; // 拒绝原因(拒绝时填写)
|
||||
};
|
||||
}
|
||||
namespace AssetItemTransfers {
|
||||
type List = {
|
||||
"to_warehouse_id"?: number; // 调入仓库ID
|
||||
"batch_no"?: string; // 调拨批次号(模糊搜索)
|
||||
"confirm_status"?: string; // 审核状态,[enum:AssetItemTransferConfirmStatusEnum]
|
||||
"from_warehouse_id"?: number; // 调出仓库ID
|
||||
"applicant_id"?: number; // 申请人ID
|
||||
"transfer_date"?: string[]; // 调拨日期范围
|
||||
"name"?: string; // 资产名称(明细中搜索)
|
||||
"code"?: string; // 资产编码(明细中搜索)
|
||||
};
|
||||
type Store = {
|
||||
"from_warehouse_id": number; // 调出仓库ID
|
||||
"to_warehouse_id": number; // 调入仓库ID
|
||||
"receiver_id"?: number; // 接收人ID
|
||||
"transfer_date": Date; // 调拨日期
|
||||
"reason": string; // 调拨原因
|
||||
"items": string[]; // 资产明细
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Audit = {
|
||||
"id": number; // id
|
||||
"confirm_status": string; // 确认状态,[enum:AssetItemTransferConfirmStatusEnum]
|
||||
"reject_reason"?: string; // 驳回原因(驳回时填写)
|
||||
};
|
||||
}
|
||||
namespace AssetItemWarehouseManagers {
|
||||
type List = {
|
||||
"asset_item_warehouses_id"?: number; // 仓库ID
|
||||
"company_employees_id"?: number; // 员工ID
|
||||
};
|
||||
type Store = {
|
||||
"asset_item_warehouses_id": number; // 仓库ID
|
||||
"company_employees_id": number; // 员工ID
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type SoftDelete = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Select = {
|
||||
"asset_item_warehouses_id": number; // 仓库ID
|
||||
};
|
||||
}
|
||||
namespace AssetItemWarehouses {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
};
|
||||
type Store = {
|
||||
"name": string; // 仓库名称
|
||||
"province"?: string; // 省
|
||||
"city"?: string; // 市
|
||||
"district"?: string; // 区
|
||||
"street"?: string; // 街道
|
||||
"address"?: string; // 详细地址
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
"manager_ids"?: string[]; // 管理员ID列表
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"name": string; // 仓库名称
|
||||
"province"?: string; // 省
|
||||
"city"?: string; // 市
|
||||
"district"?: string; // 区
|
||||
"street"?: string; // 街道
|
||||
"address"?: string; // 详细地址
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
"manager_ids"?: string[]; // 管理员ID列表
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type SoftDelete = {
|
||||
"id": number; // id
|
||||
};
|
||||
type ToggleEnabled = {
|
||||
"id": number; // id
|
||||
"is_enabled": boolean; // 是否启用
|
||||
};
|
||||
type Select = {
|
||||
"keywords"?: string; // 关键词
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
};
|
||||
}
|
||||
namespace AssetItems {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"code"?: string; // 模糊搜索:资产编码
|
||||
"asset_item_category_level1_id"?: number; // 一级分类id
|
||||
"asset_item_category_level2_id"?: number; // 二级分类id
|
||||
"asset_item_category_level3_id"?: number; // 三级分类id
|
||||
"asset_item_warehouses_id"?: number; // 仓库id
|
||||
"entry_type"?: string; // 入库方式
|
||||
"status"?: string; // 资产状态
|
||||
"manage_status"?: string; // 管理状态
|
||||
"company_employees_id"?: number; // 责任管理人id
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
"entry_date"?: string[]; // 入库日期
|
||||
};
|
||||
type Store = {
|
||||
"name": string; // 资产名称
|
||||
"asset_item_category_level1_id": number; // 一级分类id
|
||||
"asset_item_category_level2_id"?: number; // 二级分类id
|
||||
"asset_item_category_level3_id"?: number; // 三级分类id
|
||||
"asset_item_warehouses_id": number; // 存放仓库id
|
||||
"entry_type": string; // 入库方式,[enum:AssetItemsEntryTypeEnum]
|
||||
"entry_date"?: Date; // 入库日期
|
||||
"purchase_date"?: Date; // 采购日期
|
||||
"unit_price"?: number; // 单价
|
||||
"specification"?: string; // 规格型号
|
||||
"brand"?: string; // 品牌
|
||||
"warranty_period"?: number; // 保修期限(天)
|
||||
"warranty_end_date"?: Date; // 保修结束日期
|
||||
"ownership"?: string; // 资产归属
|
||||
"company_employees_id"?: number; // 责任管理人id
|
||||
"attachments"?: string[]; // 附件
|
||||
"remark"?: string; // 备注
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
};
|
||||
type BatchStore = {
|
||||
"entry_type": string; // 入库方式,[enum:AssetItemsEntryTypeEnum]
|
||||
"asset_item_warehouses_id": number; // 存放仓库id
|
||||
"company_employees_id"?: number; // 责任管理人id
|
||||
"entry_date"?: Date; // 入库日期
|
||||
"purchase_date"?: Date; // 采购日期
|
||||
"ownership"?: string; // 资产归属
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
"items": string[]; // 入库商品清单
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"name": string; // 资产名称
|
||||
"asset_item_category_level1_id": number; // 一级分类id
|
||||
"asset_item_category_level2_id"?: number; // 二级分类id
|
||||
"asset_item_category_level3_id"?: number; // 三级分类id
|
||||
"asset_item_warehouses_id": number; // 存放仓库id
|
||||
"entry_date"?: Date; // 入库日期
|
||||
"purchase_date"?: Date; // 采购日期
|
||||
"unit_price"?: number; // 单价
|
||||
"specification"?: string; // 规格型号
|
||||
"brand"?: string; // 品牌
|
||||
"warranty_period"?: number; // 保修期限(天)
|
||||
"warranty_end_date"?: Date; // 保修结束日期
|
||||
"ownership"?: string; // 资产归属
|
||||
"company_employees_id"?: number; // 责任管理人id
|
||||
"attachments"?: string[]; // 附件
|
||||
"remark"?: string; // 备注
|
||||
"asset_projects_id"?: number; // 所属项目id
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
};
|
||||
type Logs = {
|
||||
"id": number; // 资产id
|
||||
};
|
||||
type SoftDelete = {
|
||||
"id": number; // id
|
||||
};
|
||||
type UpdateStatus = {
|
||||
"id": number; // id
|
||||
"status": string; // 资产状态,[enum:AssetItemsStatusEnum]
|
||||
};
|
||||
type UpdateManageStatus = {
|
||||
"id": number; // id
|
||||
"manage_status": string; // 管理状态,[enum:AssetItemsManageStatusEnum]
|
||||
};
|
||||
}
|
||||
namespace AssetParkingPlaces {
|
||||
type List = {
|
||||
"id"?: number; // 车场id
|
||||
@ -878,16 +1321,22 @@ declare namespace ApiTypes {
|
||||
type Store = {
|
||||
"bill_id": number; // 账单id
|
||||
"refund_amount"?: number; // 退款金额(单位分)
|
||||
"refund_reason"?: string; // 退款原因
|
||||
"refund_notes"?: string; // 退款备注
|
||||
"company_receipt_accounts_id": number; // 出款账户id
|
||||
"payee_name"?: string; // 收款人姓名
|
||||
"payee_bank"?: string; // 收款银行
|
||||
"payee_account"?: string; // 收款账号
|
||||
"reason"?: string; // 退款原因
|
||||
"approval_templates_id"?: number; // 审批模板ID
|
||||
"node_approvers"?: string[]; // 各节点审批人员列表
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // 退款记录id
|
||||
};
|
||||
type Audit = {
|
||||
type Complete = {
|
||||
"id": number; // 退款记录id
|
||||
"approved": boolean; // 是否通过
|
||||
"notes"?: string; // 审核备注
|
||||
"serial_number"?: string; // 退款流水号
|
||||
"refund_time"?: Date; // 退款时间
|
||||
"voucher"?: string[]; // 退款凭证
|
||||
};
|
||||
}
|
||||
namespace Bills {
|
||||
@ -976,10 +1425,14 @@ declare namespace ApiTypes {
|
||||
"id": number; // 账单ID
|
||||
};
|
||||
type AuditPayment = {
|
||||
"id": number; // 支付记录ID(bill_payments.id)
|
||||
"id": number; // 账单ID(bills.id)
|
||||
"status": string; // 审核状态,[enum:BillPaymentsStatusEnum]
|
||||
"rejected_reason"?: string; // 驳回原因
|
||||
};
|
||||
type UpdateSerialNumber = {
|
||||
"id": number; // 账单ID
|
||||
"serial_number": string; // 流水号
|
||||
};
|
||||
}
|
||||
namespace HouseBills {
|
||||
type List = {
|
||||
@ -1429,6 +1882,7 @@ declare namespace ApiTypes {
|
||||
type List = {
|
||||
"company_supplier_name"?: string; // 企业名称
|
||||
"type"?: string; // 印章类型,[enum:CompanySealsTypeEnum]
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
};
|
||||
type Store = {
|
||||
"company_suppliers_id": number; // 企业名称
|
||||
@ -1436,7 +1890,7 @@ declare namespace ApiTypes {
|
||||
"use_date"?: Date; // 启用日期
|
||||
"company_employees_id": number; // 保管人id,[ref:company_employees]
|
||||
"seal_image"?: string[]; // 印章图片
|
||||
"is_enabled"?: number; // 是否启用
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"remarks"?: string; // 备注
|
||||
};
|
||||
type Update = {
|
||||
@ -1445,7 +1899,7 @@ declare namespace ApiTypes {
|
||||
"type": string; // 印章类型,[enum:CompanySealsTypeEnum]
|
||||
"use_date"?: Date; // 启用日期
|
||||
"seal_image"?: string[]; // 印章图片
|
||||
"is_enabled"?: number; // 是否启用
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
"remarks"?: string; // 备注
|
||||
};
|
||||
type Show = {
|
||||
@ -1472,6 +1926,7 @@ declare namespace ApiTypes {
|
||||
type Select = {
|
||||
"company_supplier_name"?: string; // 企业名称
|
||||
"type"?: string; // 印章类型,[enum:CompanySealsTypeEnum]
|
||||
"is_enabled"?: boolean; // 是否启用
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -2237,7 +2692,7 @@ declare namespace ApiTypes {
|
||||
"status"?: string; // 状态,[enum:ContractsStatusEnum]
|
||||
"status_array"?: string[]; // 状态,[enum:ContractsStatusEnum]
|
||||
"counterparty"?: string; // 交易方名称
|
||||
"is_seal"?: boolean; // 是否用印: 0否,1是
|
||||
"is_use_seal"?: boolean; // 是否用印: 0否,1是
|
||||
"end_time"?: Date; // 到期时间
|
||||
"contract_types_id"?: number; // 合同类型id,[ref:contract_types]
|
||||
"contract_type_name"?: string; // 合同类型名称
|
||||
@ -2413,6 +2868,7 @@ declare namespace ApiTypes {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"parent_id"?: number; // 父级ID
|
||||
"is_enabled"?: boolean; // 是否启用:0-否,1-是
|
||||
};
|
||||
type TreeList = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
@ -2421,14 +2877,14 @@ declare namespace ApiTypes {
|
||||
type Store = {
|
||||
"name": string; // 分类名称
|
||||
"description"?: string; // 分类描述
|
||||
"is_enabled"?: number; // 是否启用:0-否,1-是
|
||||
"is_enabled"?: boolean; // 是否启用:0-否,1-是
|
||||
"parent_id"?: number; // 父级分类ID
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"name": string; // 分类名称
|
||||
"description"?: string; // 分类描述
|
||||
"is_enabled"?: number; // 是否启用:0-否,1-是
|
||||
"is_enabled"?: boolean; // 是否启用:0-否,1-是
|
||||
"parent_id"?: number; // 父级分类ID
|
||||
};
|
||||
type Move = {
|
||||
@ -2479,12 +2935,12 @@ declare namespace ApiTypes {
|
||||
};
|
||||
type Store = {
|
||||
"name": string; // 名称
|
||||
"is_enabled"?: number; // 是否启用:0-否,1-是
|
||||
"is_enabled"?: boolean; // 是否启用:0-否,1-是
|
||||
};
|
||||
type Update = {
|
||||
"id": number; // id
|
||||
"name": string; // 名称
|
||||
"is_enabled"?: number; // 是否启用:0-否,1-是
|
||||
"is_enabled"?: boolean; // 是否启用:0-否,1-是
|
||||
};
|
||||
type Show = {
|
||||
"id": number; // id
|
||||
@ -2674,6 +3130,7 @@ declare namespace ApiTypes {
|
||||
type List = {
|
||||
"name"?: string; // 模糊搜索:名称
|
||||
"asset_projects_id"?: number; // 所属项目id,[ref:asset_projects]
|
||||
"employee_name"?: string; // 网格员名称
|
||||
"project_name"?: string; // 项目名称
|
||||
};
|
||||
type Store = {
|
||||
@ -2692,9 +3149,9 @@ declare namespace ApiTypes {
|
||||
type Delete = {
|
||||
"id": number; // id
|
||||
};
|
||||
type AddManager = {
|
||||
"id": number; // id
|
||||
"company_employees_id": number; // 公司员工id
|
||||
type SetMembers = {
|
||||
"id": number; // 网格ID
|
||||
"company_employees_ids": string[]; // 员工列表
|
||||
};
|
||||
type GetGridMark = {
|
||||
"asset_projects_id": number; // -
|
||||
@ -3070,6 +3527,13 @@ declare namespace ApiTypes {
|
||||
type ImportOfflinePayment = {
|
||||
"upload_file": mimes:xlsx,xls; // 上传文件
|
||||
};
|
||||
type TransferBills = {
|
||||
"id": number; // 收款订单ID
|
||||
"new_bills": string[]; // 目标账单清单
|
||||
"approval_templates_id": number; // 审批模板ID
|
||||
"approval_remark"?: string; // 审批备注
|
||||
"node_approvers"?: string[]; // 各节点审批人员列表
|
||||
};
|
||||
}
|
||||
namespace HousePrepaymentLogs {
|
||||
type List = {
|
||||
@ -3588,6 +4052,7 @@ declare namespace ApiTypes {
|
||||
namespace Renovation {
|
||||
namespace RenovationApplies {
|
||||
type List = {
|
||||
"asset_projects_id"?: number; // 所属项目id,[ref:asset_projects]
|
||||
"full_name"?: string; // 模糊搜索:房屋名称
|
||||
"status"?: string; // 状态,[enum:RenovationAppliesStatusEnum]
|
||||
"construction_status"?: string; // 施工状态,[enum:RenovationAppliesConstructionStatusEnum]
|
||||
|
||||
285
src/gen/Apis.ts
285
src/gen/Apis.ts
@ -128,7 +128,7 @@ export const Apis = {
|
||||
return request('company/archive/house_occupants/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/archive/house_occupants/download_template', {responseType: 'blob',});
|
||||
return request('company/archive/house_occupants/download_template', {});
|
||||
},
|
||||
},
|
||||
HouseRegisters: {
|
||||
@ -208,10 +208,10 @@ export const Apis = {
|
||||
return request('company/asset/asset_car_ports/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_car_ports/download_template', {responseType: 'blob',});
|
||||
return request('company/asset/asset_car_ports/download_template', {});
|
||||
},
|
||||
Export(data: ApiTypes.Asset.AssetCarPorts.Export): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_car_ports/export', { responseType: 'blob',data });
|
||||
return request('company/asset/asset_car_ports/export', { data });
|
||||
},
|
||||
},
|
||||
AssetHouses: {
|
||||
@ -243,6 +243,251 @@ export const Apis = {
|
||||
return request('company/asset/asset_houses/export', { data });
|
||||
},
|
||||
},
|
||||
AssetItemCategories: {
|
||||
List(data?: ApiTypes.Asset.AssetItemCategories.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/list', { data });
|
||||
},
|
||||
Tree(data?: ApiTypes.Asset.AssetItemCategories.Tree): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/tree', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemCategories.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/store', { data });
|
||||
},
|
||||
Update(data: ApiTypes.Asset.AssetItemCategories.Update): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/update', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemCategories.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/show', { data });
|
||||
},
|
||||
SoftDelete(data: ApiTypes.Asset.AssetItemCategories.SoftDelete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/soft_delete', { data });
|
||||
},
|
||||
ToggleEnabled(data: ApiTypes.Asset.AssetItemCategories.ToggleEnabled): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/toggle_enabled', { data });
|
||||
},
|
||||
Select(data?: ApiTypes.Asset.AssetItemCategories.Select): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/select', { data });
|
||||
},
|
||||
SelectTree(data?: ApiTypes.Asset.AssetItemCategories.SelectTree): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_categories/select_tree', { data });
|
||||
},
|
||||
},
|
||||
AssetItemDisposals: {
|
||||
List(data?: ApiTypes.Asset.AssetItemDisposals.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_disposals/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemDisposals.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_disposals/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemDisposals.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_disposals/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Asset.AssetItemDisposals.Audit): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_disposals/audit', { data });
|
||||
},
|
||||
Complete(data: ApiTypes.Asset.AssetItemDisposals.Complete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_disposals/complete', { data });
|
||||
},
|
||||
},
|
||||
AssetItemInventories: {
|
||||
List(data?: ApiTypes.Asset.AssetItemInventories.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemInventories.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemInventories.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/show', { data });
|
||||
},
|
||||
Details(data: ApiTypes.Asset.AssetItemInventories.Details): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/details', { data });
|
||||
},
|
||||
Assign(data: ApiTypes.Asset.AssetItemInventories.Assign): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/assign', { data });
|
||||
},
|
||||
Close(data: ApiTypes.Asset.AssetItemInventories.Close): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/close', { data });
|
||||
},
|
||||
Export(data: ApiTypes.Asset.AssetItemInventories.Export): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventories/export', { data });
|
||||
},
|
||||
},
|
||||
AssetItemInventorySurplus: {
|
||||
List(data?: ApiTypes.Asset.AssetItemInventorySurplus.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventory_surplus/list', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemInventorySurplus.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventory_surplus/show', { data });
|
||||
},
|
||||
Delete(data: ApiTypes.Asset.AssetItemInventorySurplus.Delete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_inventory_surplus/delete', { data });
|
||||
},
|
||||
},
|
||||
AssetItemMaintenanceRules: {
|
||||
List(data?: ApiTypes.Asset.AssetItemMaintenanceRules.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemMaintenanceRules.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/store', { data });
|
||||
},
|
||||
Update(data: ApiTypes.Asset.AssetItemMaintenanceRules.Update): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/update', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemMaintenanceRules.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/show', { data });
|
||||
},
|
||||
Toggle(data: ApiTypes.Asset.AssetItemMaintenanceRules.Toggle): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/toggle', { data });
|
||||
},
|
||||
SoftDelete(data: ApiTypes.Asset.AssetItemMaintenanceRules.SoftDelete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenance_rules/soft_delete', { data });
|
||||
},
|
||||
},
|
||||
AssetItemMaintenances: {
|
||||
List(data?: ApiTypes.Asset.AssetItemMaintenances.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemMaintenances.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/store', { data });
|
||||
},
|
||||
Update(data: ApiTypes.Asset.AssetItemMaintenances.Update): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/update', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemMaintenances.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/show', { data });
|
||||
},
|
||||
Assign(data: ApiTypes.Asset.AssetItemMaintenances.Assign): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/assign', { data });
|
||||
},
|
||||
Close(data: ApiTypes.Asset.AssetItemMaintenances.Close): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_maintenances/close', { data });
|
||||
},
|
||||
},
|
||||
AssetItemMarkings: {
|
||||
List(data?: ApiTypes.Asset.AssetItemMarkings.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_markings/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemMarkings.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_markings/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemMarkings.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_markings/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Asset.AssetItemMarkings.Audit): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_markings/audit', { data });
|
||||
},
|
||||
},
|
||||
AssetItemReceives: {
|
||||
List(data?: ApiTypes.Asset.AssetItemReceives.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_receives/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemReceives.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_receives/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemReceives.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_receives/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Asset.AssetItemReceives.Audit): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_receives/audit', { data });
|
||||
},
|
||||
},
|
||||
AssetItemReturns: {
|
||||
List(data?: ApiTypes.Asset.AssetItemReturns.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_returns/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemReturns.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_returns/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemReturns.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_returns/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Asset.AssetItemReturns.Audit): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_returns/audit', { data });
|
||||
},
|
||||
},
|
||||
AssetItemTransfers: {
|
||||
List(data?: ApiTypes.Asset.AssetItemTransfers.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_transfers/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemTransfers.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_transfers/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemTransfers.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_transfers/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Asset.AssetItemTransfers.Audit): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_transfers/audit', { data });
|
||||
},
|
||||
},
|
||||
AssetItemWarehouseManagers: {
|
||||
List(data?: ApiTypes.Asset.AssetItemWarehouseManagers.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouse_managers/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemWarehouseManagers.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouse_managers/store', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemWarehouseManagers.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouse_managers/show', { data });
|
||||
},
|
||||
SoftDelete(data: ApiTypes.Asset.AssetItemWarehouseManagers.SoftDelete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouse_managers/soft_delete', { data });
|
||||
},
|
||||
Select(data: ApiTypes.Asset.AssetItemWarehouseManagers.Select): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouse_managers/select', { data });
|
||||
},
|
||||
},
|
||||
AssetItemWarehouses: {
|
||||
List(data?: ApiTypes.Asset.AssetItemWarehouses.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItemWarehouses.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/store', { data });
|
||||
},
|
||||
Update(data: ApiTypes.Asset.AssetItemWarehouses.Update): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/update', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItemWarehouses.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/show', { data });
|
||||
},
|
||||
SoftDelete(data: ApiTypes.Asset.AssetItemWarehouses.SoftDelete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/soft_delete', { data });
|
||||
},
|
||||
ToggleEnabled(data: ApiTypes.Asset.AssetItemWarehouses.ToggleEnabled): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/toggle_enabled', { data });
|
||||
},
|
||||
Select(data?: ApiTypes.Asset.AssetItemWarehouses.Select): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_item_warehouses/select', { data });
|
||||
},
|
||||
},
|
||||
AssetItems: {
|
||||
List(data?: ApiTypes.Asset.AssetItems.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/list', { data });
|
||||
},
|
||||
Store(data: ApiTypes.Asset.AssetItems.Store): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/store', { data });
|
||||
},
|
||||
BatchStore(data: ApiTypes.Asset.AssetItems.BatchStore): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/batch_store', { data });
|
||||
},
|
||||
Update(data: ApiTypes.Asset.AssetItems.Update): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/update', { data });
|
||||
},
|
||||
Show(data: ApiTypes.Asset.AssetItems.Show): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/show', { data });
|
||||
},
|
||||
Logs(data: ApiTypes.Asset.AssetItems.Logs): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/logs', { data });
|
||||
},
|
||||
SoftDelete(data: ApiTypes.Asset.AssetItems.SoftDelete): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/soft_delete', { data });
|
||||
},
|
||||
UpdateStatus(data: ApiTypes.Asset.AssetItems.UpdateStatus): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/update_status', { data });
|
||||
},
|
||||
UpdateManageStatus(data: ApiTypes.Asset.AssetItems.UpdateManageStatus): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_items/update_manage_status', { data });
|
||||
},
|
||||
},
|
||||
AssetParkingPlaces: {
|
||||
List(data?: ApiTypes.Asset.AssetParkingPlaces.List): Promise<MyResponseType> {
|
||||
return request('company/asset/asset_parking_places/list', { data });
|
||||
@ -367,7 +612,7 @@ export const Apis = {
|
||||
return request('company/attendance/attendance_records/show', { data });
|
||||
},
|
||||
Export(data?: ApiTypes.Attendance.AttendanceRecords.Export): Promise<MyResponseType> {
|
||||
return request('company/attendance/attendance_records/export', { responseType: 'blob',data });
|
||||
return request('company/attendance/attendance_records/export', { data });
|
||||
},
|
||||
},
|
||||
AttendanceSchedules: {
|
||||
@ -457,8 +702,8 @@ export const Apis = {
|
||||
Show(data: ApiTypes.Bill.BillRefunds.Show): Promise<MyResponseType> {
|
||||
return request('company/bill/bill_refunds/show', { data });
|
||||
},
|
||||
Audit(data: ApiTypes.Bill.BillRefunds.Audit): Promise<MyResponseType> {
|
||||
return request('company/bill/bill_refunds/audit', { data });
|
||||
Complete(data: ApiTypes.Bill.BillRefunds.Complete): Promise<MyResponseType> {
|
||||
return request('company/bill/bill_refunds/complete', { data });
|
||||
},
|
||||
},
|
||||
Bills: {
|
||||
@ -498,6 +743,9 @@ export const Apis = {
|
||||
AuditPayment(data: ApiTypes.Bill.Bills.AuditPayment): Promise<MyResponseType> {
|
||||
return request('company/bill/bills/audit_payment', { data });
|
||||
},
|
||||
UpdateSerialNumber(data: ApiTypes.Bill.Bills.UpdateSerialNumber): Promise<MyResponseType> {
|
||||
return request('company/bill/bills/update_serial_number', { data });
|
||||
},
|
||||
},
|
||||
HouseBills: {
|
||||
List(data?: ApiTypes.Bill.HouseBills.List): Promise<MyResponseType> {
|
||||
@ -528,10 +776,10 @@ export const Apis = {
|
||||
return request('company/bill/house_bills/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/bill/house_bills/download_template', {responseType: 'blob',});
|
||||
return request('company/bill/house_bills/download_template', {});
|
||||
},
|
||||
Export(data: ApiTypes.Bill.HouseBills.Export): Promise<MyResponseType> {
|
||||
return request('company/bill/house_bills/export', { responseType: 'blob',data });
|
||||
return request('company/bill/house_bills/export', { data });
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -640,10 +888,10 @@ export const Apis = {
|
||||
return request('company/company/company_employees/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/company/company_employees/download_template', {responseType: 'blob',});
|
||||
return request('company/company/company_employees/download_template', {});
|
||||
},
|
||||
Export(data?: ApiTypes.Company.CompanyEmployees.Export): Promise<MyResponseType> {
|
||||
return request('company/company/company_employees/export', { responseType: 'blob',data });
|
||||
return request('company/company/company_employees/export', { data });
|
||||
},
|
||||
SyncWechatEmployees(): Promise<MyResponseType> {
|
||||
return request('company/company/company_employees/sync_wechat_employees', {});
|
||||
@ -1241,7 +1489,7 @@ export const Apis = {
|
||||
return request('company/contract/contracts/submit_approval', { data });
|
||||
},
|
||||
Export(data: ApiTypes.Contract.Contracts.Export): Promise<MyResponseType> {
|
||||
return request('company/contract/contracts/export', { responseType: 'blob',data });
|
||||
return request('company/contract/contracts/export', { data });
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -1448,8 +1696,8 @@ export const Apis = {
|
||||
Delete(data: ApiTypes.Grid.Grids.Delete): Promise<MyResponseType> {
|
||||
return request('company/grid/grids/delete', { data });
|
||||
},
|
||||
AddManager(data: ApiTypes.Grid.Grids.AddManager): Promise<MyResponseType> {
|
||||
return request('company/grid/grids/add_manager', { data });
|
||||
SetMembers(data: ApiTypes.Grid.Grids.SetMembers): Promise<MyResponseType> {
|
||||
return request('company/grid/grids/set_members', { data });
|
||||
},
|
||||
GetGridMark(data: ApiTypes.Grid.Grids.GetGridMark): Promise<MyResponseType> {
|
||||
return request('company/grid/grids/get_grid_mark', { data });
|
||||
@ -1653,6 +1901,9 @@ export const Apis = {
|
||||
ImportOfflinePayment(data: ApiTypes.HouseOrder.HouseOrders.ImportOfflinePayment): Promise<MyResponseType> {
|
||||
return request('company/house_order/house_orders/import_offline_payment', { data });
|
||||
},
|
||||
TransferBills(data: ApiTypes.HouseOrder.HouseOrders.TransferBills): Promise<MyResponseType> {
|
||||
return request('company/house_order/house_orders/transfer_bills', { data });
|
||||
},
|
||||
},
|
||||
HousePrepaymentLogs: {
|
||||
List(data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List): Promise<MyResponseType> {
|
||||
@ -1729,7 +1980,7 @@ export const Apis = {
|
||||
return request('company/meter/house_meter_has_houses/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/meter/house_meter_has_houses/download_template', {responseType: 'blob',});
|
||||
return request('company/meter/house_meter_has_houses/download_template', {});
|
||||
},
|
||||
},
|
||||
HouseMeterReadings: {
|
||||
@ -1752,7 +2003,7 @@ export const Apis = {
|
||||
return request('company/meter/house_meter_readings/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/meter/house_meter_readings/download_template', {responseType: 'blob',});
|
||||
return request('company/meter/house_meter_readings/download_template', {});
|
||||
},
|
||||
},
|
||||
HouseMeterTaskDetails: {
|
||||
@ -1806,10 +2057,10 @@ export const Apis = {
|
||||
return request('company/meter/house_meters/import', { data });
|
||||
},
|
||||
DownloadTemplate(): Promise<MyResponseType> {
|
||||
return request('company/meter/house_meters/download_template', {responseType: 'blob',});
|
||||
return request('company/meter/house_meters/download_template', {});
|
||||
},
|
||||
Export(data?: ApiTypes.Meter.HouseMeters.Export): Promise<MyResponseType> {
|
||||
return request('company/meter/house_meters/export', { responseType: 'blob',data });
|
||||
return request('company/meter/house_meters/export', { data });
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
1898
src/gen/Enums.ts
1898
src/gen/Enums.ts
File diff suppressed because it is too large
Load Diff
@ -12,10 +12,8 @@ import ContractPaymentInfo from './ContractPaymentInfo';
|
||||
import ContractTerminationInfo from './ContractTerminationInfo';
|
||||
import RefundInfo from './RefundInfo';
|
||||
import SealInfo from './SealInfo';
|
||||
import {
|
||||
default as BillUpdateInfo,
|
||||
default as TemporaryBillUpdateInfo,
|
||||
} from './TemporaryBillUpdateInfo';
|
||||
import TemporaryBillUpdateInfo from './TemporaryBillUpdateInfo';
|
||||
import TransferBillsInfo from './TransferBillsInfo';
|
||||
|
||||
export default function AuditShow(props: MyBetaModalFormProps) {
|
||||
const [form] = Form.useForm();
|
||||
@ -72,6 +70,9 @@ export default function AuditShow(props: MyBetaModalFormProps) {
|
||||
{config?.value?.type === 'ChargeStandardModification' && (
|
||||
<ChargeStandardInfo item={config?.value} />
|
||||
)}
|
||||
{config?.value?.type === 'HouseBillTransfer' && (
|
||||
<TransferBillsInfo item={config?.value} />
|
||||
)}
|
||||
{config?.value?.type === 'BillUpdate' && (
|
||||
<TemporaryBillUpdateInfo item={config?.value} />
|
||||
)}
|
||||
|
||||
@ -36,9 +36,6 @@ export default function BillUpdateInfo(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="计费周期">
|
||||
{data?.start_date} 至 {data?.end_date}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="备注">
|
||||
{data?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
);
|
||||
|
||||
@ -65,6 +62,9 @@ export default function BillUpdateInfo(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="申请时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请说明">
|
||||
{props?.item?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ export default function ChargeStandardInfo(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="申请时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="备注" span={2}>
|
||||
<ProDescriptions.Item label="申请说明" span={2}>
|
||||
{model?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
|
||||
@ -84,7 +84,7 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请说明" span={2}>
|
||||
{props?.item?.model?.remark || '-'}
|
||||
{props?.item?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
|
||||
@ -52,10 +52,15 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
{props?.item?.model?.payee_bank || '-'}
|
||||
{props?.item?.model?.payee_account || '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
<ProDescriptions.Item label="申请人">
|
||||
{props?.item?.applicant_name || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请说明" span={2}>
|
||||
{props?.item?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
</Space>
|
||||
|
||||
@ -45,7 +45,7 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="申请时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="简要说明" span={2}>
|
||||
<ProDescriptions.Item label="申请说明" span={2}>
|
||||
{props?.item?.model?.reason || '-'}
|
||||
</ProDescriptions.Item>
|
||||
{/* 印章信息 */}
|
||||
|
||||
147
src/pages/approval/common_info/TransferBillsInfo.tsx
Normal file
147
src/pages/approval/common_info/TransferBillsInfo.tsx
Normal file
@ -0,0 +1,147 @@
|
||||
import { MyBetaModalFormProps, renderTextHelper } from '@/common';
|
||||
import { HouseBillsTypeEnum } from '@/gen/Enums';
|
||||
import BIllInfo from '@/pages/bills/house_bills/modals/BIllInfo';
|
||||
import OrderShow from '@/pages/bills/order_online/modals/OrderShow';
|
||||
|
||||
import { ProCard, ProDescriptions } from '@ant-design/pro-components';
|
||||
import { Space, Table } from 'antd';
|
||||
|
||||
export default function TransferBillsInfo(props: MyBetaModalFormProps) {
|
||||
const model = props?.item?.model;
|
||||
const newData = model?.new_data;
|
||||
const originalData = model?.original_data;
|
||||
|
||||
const orderData = originalData || newData || {};
|
||||
const newBills = newData?.new_bills || [];
|
||||
|
||||
const formatAmount = (amount: any) => {
|
||||
if (amount === undefined || amount === null || amount === '-') return '-';
|
||||
return `${parseFloat(amount).toFixed(2)} 元`;
|
||||
};
|
||||
|
||||
const renderBillInfo = (bill: any) => {
|
||||
const snapshot = bill?.snapshot || bill;
|
||||
const houseName = snapshot?.asset_house?.full_name;
|
||||
const carPortName = snapshot?.asset_car_port?.full_name;
|
||||
const assetName = houseName || carPortName;
|
||||
const period =
|
||||
snapshot?.year && snapshot?.month
|
||||
? `【${snapshot.year}-${String(snapshot.month).padStart(2, '0')}】`
|
||||
: '';
|
||||
if (assetName) {
|
||||
return `${period}${assetName}`;
|
||||
}
|
||||
return snapshot?.bill_info || `账单 #${bill?.id || '-'}`;
|
||||
};
|
||||
|
||||
const totalTransfer =
|
||||
Math.round(
|
||||
newBills.reduce(
|
||||
(acc: number, item: any) => acc + (Number(item?.amount) || 0),
|
||||
0,
|
||||
) * 100,
|
||||
) / 100;
|
||||
|
||||
return (
|
||||
<Space direction="vertical" style={{ width: '100%' }}>
|
||||
<ProCard title="基本信息" size="small">
|
||||
<ProDescriptions size="small" column={2}>
|
||||
<ProDescriptions.Item label="申请事项">
|
||||
{props?.item?.title || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="关联项目">
|
||||
{props?.item?.asset_project?.name ||
|
||||
orderData?.asset_project?.name ||
|
||||
'-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="原收款单">
|
||||
<Space>
|
||||
{orderData?.order_id}
|
||||
<OrderShow
|
||||
item={orderData?.order_id || orderData?.id}
|
||||
title="查看"
|
||||
/>
|
||||
</Space>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="原收款单金额">
|
||||
{formatAmount(orderData?.order_actual_paid_amount)}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请人">
|
||||
{props?.item?.applicant_name || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="申请说明" span={2}>
|
||||
{props?.item?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
|
||||
<ProCard title="入账明细" size="small">
|
||||
<Table
|
||||
size="small"
|
||||
bordered
|
||||
pagination={false}
|
||||
dataSource={newBills}
|
||||
columns={[
|
||||
{
|
||||
title: '账单信息',
|
||||
dataIndex: ['snapshot', 'bill_info'],
|
||||
render: (_, record: any) => (
|
||||
<BIllInfo
|
||||
item={{ id: record?.id, type: 'link' }}
|
||||
title={renderBillInfo(record)}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: '账单类型',
|
||||
dataIndex: ['snapshot', 'type'],
|
||||
render: (value) => (
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseBillsTypeEnum}
|
||||
value={value}
|
||||
/>
|
||||
),
|
||||
},
|
||||
// {
|
||||
// title: '账单状态',
|
||||
// dataIndex: ['snapshot', 'bill_status'],
|
||||
// render: (value) => (
|
||||
// <renderTextHelper.Tag
|
||||
// Enums={HouseBillsBillStatusEnum}
|
||||
// value={value}
|
||||
// />
|
||||
// ),
|
||||
// },
|
||||
// {
|
||||
// title: '未收金额',
|
||||
// dataIndex: ['snapshot', 'total_payable_amount'],
|
||||
// align: 'right',
|
||||
// render: (value) => formatAmount(value),
|
||||
// },
|
||||
{
|
||||
title: '转入金额',
|
||||
dataIndex: 'amount',
|
||||
align: 'right',
|
||||
render: (value) => formatAmount(value),
|
||||
},
|
||||
]}
|
||||
summary={() =>
|
||||
newBills.length > 0 ? (
|
||||
<Table.Summary.Row>
|
||||
<Table.Summary.Cell index={0} colSpan={2}>
|
||||
<strong>转入金额合计</strong>
|
||||
</Table.Summary.Cell>
|
||||
<Table.Summary.Cell index={1} align="right">
|
||||
<strong>{formatAmount(totalTransfer)}</strong>
|
||||
</Table.Summary.Cell>
|
||||
</Table.Summary.Row>
|
||||
) : null
|
||||
}
|
||||
/>
|
||||
</ProCard>
|
||||
</Space>
|
||||
);
|
||||
}
|
||||
@ -21,6 +21,7 @@ import ContractTerminationInfo from '../../common_info/ContractTerminationInfo';
|
||||
import RefundInfo from '../../common_info/RefundInfo';
|
||||
import SealInfo from '../../common_info/SealInfo';
|
||||
import TemporaryBillUpdateInfo from '../../common_info/TemporaryBillUpdateInfo';
|
||||
import TransferBillsInfo from '../../common_info/TransferBillsInfo';
|
||||
|
||||
export default function Update(props: MyBetaModalFormProps) {
|
||||
const [form] = Form.useForm();
|
||||
@ -108,6 +109,9 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
{config?.value?.type === 'ChargeStandardModification' && (
|
||||
<ChargeStandardInfo item={config?.value} />
|
||||
)}
|
||||
{config?.value?.type === 'HouseBillTransfer' && (
|
||||
<TransferBillsInfo item={config?.value} />
|
||||
)}
|
||||
{config?.value?.type === 'BillUpdate' && (
|
||||
<TemporaryBillUpdateInfo item={config?.value} />
|
||||
)}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { MyBetaModalFormProps, renderTextHelper } from '@/common';
|
||||
import { MyBetaModalFormProps, MyButtons, renderTextHelper } from '@/common';
|
||||
import { MyModal } from '@/components/MyModal';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import {
|
||||
@ -8,12 +8,14 @@ import {
|
||||
AssetHousesUsageEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { ProCard, ProDescriptions } from '@ant-design/pro-components';
|
||||
import { useNavigate } from '@umijs/max';
|
||||
import { Space } from 'antd';
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
export default function info(props: MyBetaModalFormProps) {
|
||||
const [show, setShow] = useState<any>({});
|
||||
const [loading, setLoading] = useState(false);
|
||||
const navigate = useNavigate();
|
||||
|
||||
const getShow = useCallback(() => {
|
||||
if (loading || !props?.item?.id) return;
|
||||
@ -50,8 +52,18 @@ export default function info(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions bordered>
|
||||
<ProDescriptions.Item label="房屋全名" span={2}>
|
||||
<Space>
|
||||
<span>【{show?.id}】</span>
|
||||
{/* <span>【{show?.id}】</span> */}
|
||||
{show?.full_name}
|
||||
{show?.id ? (
|
||||
<MyButtons.View
|
||||
title="查看"
|
||||
onClick={() => {
|
||||
navigate(`/customer/archive/show/${show?.id}`);
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
'无'
|
||||
)}
|
||||
</Space>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="房号">
|
||||
|
||||
@ -18,6 +18,7 @@ import { ProTable } from '@ant-design/pro-components';
|
||||
import { Space } from 'antd';
|
||||
import { useState } from 'react';
|
||||
|
||||
import HousesShow from '../houses/modals/HousesShow';
|
||||
import AreaUpdate from './modals/AreaUpdate';
|
||||
import SpaceShow from './modals/SpaceShow';
|
||||
import SpaceUpdate from './modals/SpaceUpdate';
|
||||
@ -119,7 +120,20 @@ export default function Index({ title = '车位列表' }) {
|
||||
dataIndex: 'built_area',
|
||||
search: false,
|
||||
},
|
||||
|
||||
{
|
||||
title: '关联房屋',
|
||||
dataIndex: 'asset_houses_id',
|
||||
search: false,
|
||||
render: (_, item: any) =>
|
||||
item?.asset_houses_id ? (
|
||||
<HousesShow
|
||||
item={{ id: item?.asset_houses_id, type: 'link' }}
|
||||
title="查看"
|
||||
/>
|
||||
) : (
|
||||
'-'
|
||||
),
|
||||
},
|
||||
// MyColumns.CreatedAt(),
|
||||
MyColumns.UpdatedAt(),
|
||||
MyColumns.Option({
|
||||
|
||||
@ -61,12 +61,7 @@ export default function SpaceShow(props: MyBetaModalFormProps) {
|
||||
value={data?.status}
|
||||
/>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="业主姓名">
|
||||
{data?.owner_name || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="业主手机号">
|
||||
{data?.owner_phone || '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
<ProDescriptions.Item label="关联房屋">
|
||||
{data?.asset_houses_id ? (
|
||||
<MyButtons.View
|
||||
@ -81,7 +76,9 @@ export default function SpaceShow(props: MyBetaModalFormProps) {
|
||||
'无'
|
||||
)}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
<ProDescriptions.Item label="车牌号">
|
||||
{data?.car_number || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="备注" span={2}>
|
||||
{data?.remark || '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
@ -99,7 +99,45 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
params: {
|
||||
asset_projects_id: props?.item?.asset_projects_id,
|
||||
},
|
||||
title: '关联房屋',
|
||||
request: async (params) => {
|
||||
const res = await Apis.Asset.AssetHouses.SelectFullName({
|
||||
keywords: params?.keyWords,
|
||||
asset_projects_id: props?.item?.asset_projects_id,
|
||||
...params,
|
||||
});
|
||||
let list = res?.data || [];
|
||||
// 编辑模式下,确保当前选中的房屋在列表中,以正确显示 label
|
||||
const currentHouseId = props.item?.asset_houses_id;
|
||||
if (
|
||||
currentHouseId &&
|
||||
!list.some((item: any) => item.value === currentHouseId)
|
||||
) {
|
||||
try {
|
||||
const showRes = await Apis.Asset.AssetHouses.Show({
|
||||
id: currentHouseId,
|
||||
});
|
||||
if (showRes?.data) {
|
||||
list = [
|
||||
{
|
||||
label: showRes.data.full_name,
|
||||
value: showRes.data.id,
|
||||
},
|
||||
...list,
|
||||
];
|
||||
}
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
return list;
|
||||
},
|
||||
}),
|
||||
{
|
||||
key: 'car_number',
|
||||
title: '车牌号',
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
{
|
||||
key: 'remark',
|
||||
title: '备注',
|
||||
|
||||
@ -13,6 +13,7 @@ export default function BillInfo(props: MyBetaModalFormProps) {
|
||||
return (
|
||||
<MyModal
|
||||
title={props.title || '查看账单'}
|
||||
modal={{ title: props.title || '查看账单' }}
|
||||
type={props.item?.type || 'primary'}
|
||||
width="600px"
|
||||
onOpen={() => {
|
||||
@ -33,8 +34,15 @@ export default function BillInfo(props: MyBetaModalFormProps) {
|
||||
<Spin spinning={loading}>
|
||||
<ProDescriptions column={2}>
|
||||
{/* 项目相关信息 */}
|
||||
<ProDescriptions.Item label="房屋名称" span={2}>
|
||||
{data?.asset_house?.full_name || ''}
|
||||
<ProDescriptions.Item label="账单ID" span={2}>
|
||||
{data?.id || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="账单关联" span={2}>
|
||||
{data?.asset_houses_id
|
||||
? data?.asset_house?.full_name
|
||||
: data?.asset_car_ports_id
|
||||
? `车位|${data?.asset_car_port?.full_name || '-'}`
|
||||
: '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
{/* 账单基本信息 */}
|
||||
@ -75,6 +83,12 @@ export default function BillInfo(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="备注" span={3}>
|
||||
{data?.remark || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="创建时间" span={3}>
|
||||
{data?.created_at || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="最近修改" span={3}>
|
||||
{data?.updated_at || ''}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</Spin>
|
||||
</ProCard>
|
||||
|
||||
@ -81,10 +81,8 @@ export default function ShowQrCode(props: MyBetaModalFormProps) {
|
||||
>
|
||||
<ProDescriptions.Item label="关联房屋/车位" span={2}>
|
||||
{props?.item?.asset_houses_id
|
||||
? ` ${props?.item?.asset_house?.full_name || ''}`
|
||||
: props?.item?.asset_car_port?.full_name
|
||||
? ` ${props?.item?.asset_car_port?.full_name}`
|
||||
: ''}
|
||||
? props?.item?.asset_house?.full_name || ''
|
||||
: props?.item?.asset_car_port?.full_name || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="费用类型">
|
||||
<renderTextHelper.Tag
|
||||
@ -96,6 +94,13 @@ export default function ShowQrCode(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="应收金额">
|
||||
¥{props?.item?.total_payable_amount || 0}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款户名" span={2}>
|
||||
{props?.item?.receipt_account?.company_name || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款账号">
|
||||
{props?.item?.receipt_account?.company_bank || ''}{' '}
|
||||
{props?.item?.receipt_account?.company_account || ''}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
<Tabs
|
||||
activeKey={activeTab}
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
HouseOrdersAuditStatusEnum,
|
||||
HouseOrdersPaymentMethodEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { useNavigate } from '@@/exports';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { useState } from 'react';
|
||||
import Audit from './modals/Audit';
|
||||
@ -23,6 +24,7 @@ import Show from './modals/Show';
|
||||
|
||||
export default function Index({ title = '线下收款单' }) {
|
||||
const [getParams, setParams] = useState({});
|
||||
const navigate = useNavigate();
|
||||
return (
|
||||
<MyPageContainer
|
||||
title={title}
|
||||
@ -184,6 +186,22 @@ export default function Index({ title = '线下收款单' }) {
|
||||
title="关联流水"
|
||||
/>
|
||||
),
|
||||
transferBills: (
|
||||
<MyButtons.Default
|
||||
title="调账"
|
||||
type="primary"
|
||||
size="small"
|
||||
disabled={
|
||||
item.order_status !==
|
||||
HouseBillsBillStatusEnum.Paid.value
|
||||
}
|
||||
onClick={() => {
|
||||
navigate(
|
||||
`/bills/order_online/pages/transfer_bills?id=${item.id}`,
|
||||
);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
audit: (
|
||||
<>
|
||||
{item.audit_status ===
|
||||
|
||||
114
src/pages/bills/order_online/components/BillSelectModal.tsx
Normal file
114
src/pages/bills/order_online/components/BillSelectModal.tsx
Normal file
@ -0,0 +1,114 @@
|
||||
import { MyColumns, MyProTableProps } from '@/common';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { Modal } from 'antd';
|
||||
import { Key, useState } from 'react';
|
||||
|
||||
interface BillSelectModalProps {
|
||||
open: boolean;
|
||||
asset_projects_id?: number;
|
||||
onCancel: () => void;
|
||||
onOk: (rows: any[]) => void;
|
||||
}
|
||||
|
||||
export default function BillSelectModal(props: BillSelectModalProps) {
|
||||
const { open, asset_projects_id, onCancel, onOk } = props;
|
||||
const [selectedRows, setSelectedRows] = useState<any[]>([]);
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState<Key[]>([]);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
title="选择账单"
|
||||
open={open}
|
||||
width={1000}
|
||||
onCancel={() => {
|
||||
setSelectedRows([]);
|
||||
setSelectedRowKeys([]);
|
||||
onCancel();
|
||||
}}
|
||||
onOk={() => {
|
||||
onOk(selectedRows);
|
||||
setSelectedRows([]);
|
||||
setSelectedRowKeys([]);
|
||||
}}
|
||||
>
|
||||
<ProTable
|
||||
{...MyProTableProps.props}
|
||||
search={{
|
||||
labelWidth: 'auto',
|
||||
}}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (keys, rows) => {
|
||||
setSelectedRowKeys(keys);
|
||||
setSelectedRows(rows);
|
||||
},
|
||||
}}
|
||||
request={async (params, sort) =>
|
||||
MyProTableProps.request(
|
||||
{
|
||||
...params,
|
||||
asset_projects_id,
|
||||
bill_status: [
|
||||
HouseBillsBillStatusEnum.PendingPayment.value,
|
||||
HouseBillsBillStatusEnum.PartiallyPaid.value,
|
||||
HouseBillsBillStatusEnum.Overdue.value,
|
||||
],
|
||||
},
|
||||
sort,
|
||||
Apis.Bill.HouseBills.List,
|
||||
)
|
||||
}
|
||||
columns={[
|
||||
{
|
||||
title: '关联房屋',
|
||||
dataIndex: ['asset_house', 'full_name'],
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return { full_name: value };
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '关联车位',
|
||||
dataIndex: ['asset_car_port', 'full_name'],
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return { car_port_name: value };
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '账单月份',
|
||||
render: (_, record) => {
|
||||
return `${record.year}-${String(record.month).padStart(2, '0')}`;
|
||||
},
|
||||
search: false,
|
||||
},
|
||||
MyColumns.EnumTag({
|
||||
title: '类型',
|
||||
dataIndex: 'type',
|
||||
valueEnum: HouseBillsTypeEnum,
|
||||
}),
|
||||
MyColumns.EnumTag({
|
||||
title: '状态',
|
||||
dataIndex: 'bill_status',
|
||||
valueEnum: HouseBillsBillStatusEnum,
|
||||
search: false,
|
||||
}),
|
||||
{
|
||||
title: '应收金额',
|
||||
dataIndex: 'total_payable_amount',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '已收金额',
|
||||
dataIndex: 'total_paid_amount',
|
||||
search: false,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
import {
|
||||
MyButtons,
|
||||
MyColumns,
|
||||
MyImportModal,
|
||||
MyPageContainer,
|
||||
@ -13,14 +14,18 @@ import {
|
||||
HouseBillsBillStatusEnum,
|
||||
HouseOrdersPaymentMethodEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { CopyOutlined } from '@ant-design/icons';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { useNavigate } from '@umijs/max';
|
||||
import { Space, message } from 'antd';
|
||||
import { useState } from 'react';
|
||||
import OrderShow from './modals/OrderShow';
|
||||
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 navigate = useNavigate();
|
||||
const [selectedRows, setSelectedRows] = useState<any[]>([]);
|
||||
return (
|
||||
<MyPageContainer
|
||||
@ -112,15 +117,68 @@ export default function Index({ title = '线上收款单' }) {
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '房屋',
|
||||
title: '关联房屋',
|
||||
dataIndex: ['asset_house', 'full_name'],
|
||||
render: (_, record) =>
|
||||
record.house_order_items?.[0]?.asset_house?.full_name || '-',
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return { full_name: value };
|
||||
},
|
||||
},
|
||||
render: (_, record) => {
|
||||
const name =
|
||||
record.house_order_items?.[0]?.asset_house?.full_name;
|
||||
return record.house_order_items?.[0]?.asset_houses_id ? (
|
||||
<Space size={4}>
|
||||
<MyButtons.View
|
||||
title={name || '-'}
|
||||
type="link"
|
||||
onClick={() => {
|
||||
navigate(
|
||||
`/bills/summary/show/${record.house_order_items?.[0]?.asset_houses_id}`,
|
||||
);
|
||||
}}
|
||||
/>
|
||||
{name && (
|
||||
<CopyOutlined
|
||||
style={{ color: '#999' }}
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(name);
|
||||
message.success('已复制');
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</Space>
|
||||
) : (
|
||||
'-'
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '关联车位',
|
||||
dataIndex: ['asset_car_port', 'full_name'],
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return { car_port_name: value };
|
||||
},
|
||||
},
|
||||
render: (_, record) => {
|
||||
const name =
|
||||
record.house_order_items?.[0]?.asset_car_port?.full_name;
|
||||
return name ? (
|
||||
<Space size={4}>
|
||||
<span>{name}</span>
|
||||
<CopyOutlined
|
||||
style={{ color: '#999' }}
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(name);
|
||||
message.success('已复制');
|
||||
}}
|
||||
/>
|
||||
</Space>
|
||||
) : (
|
||||
'-'
|
||||
);
|
||||
},
|
||||
},
|
||||
MyColumns.EnumTag({
|
||||
title: '收款方式',
|
||||
@ -131,7 +189,7 @@ export default function Index({ title = '线上收款单' }) {
|
||||
title: '支付状态',
|
||||
dataIndex: 'order_status',
|
||||
valueEnum: HouseBillsBillStatusEnum,
|
||||
search: false,
|
||||
// search: false,
|
||||
}),
|
||||
|
||||
{
|
||||
@ -162,17 +220,17 @@ export default function Index({ title = '线上收款单' }) {
|
||||
},
|
||||
{
|
||||
title: '收款账户',
|
||||
dataIndex: 'accept_name',
|
||||
dataIndex: ['receipt_account', 'company_name'],
|
||||
// search: false,
|
||||
},
|
||||
{
|
||||
title: '收款银行',
|
||||
dataIndex: 'accept_bank',
|
||||
dataIndex: ['receipt_account', 'company_bank'],
|
||||
// search: false,
|
||||
},
|
||||
{
|
||||
title: '收款账号',
|
||||
dataIndex: 'accept_account',
|
||||
dataIndex: ['receipt_account', 'company_account'],
|
||||
// search: false,
|
||||
},
|
||||
{
|
||||
@ -197,7 +255,7 @@ export default function Index({ title = '线上收款单' }) {
|
||||
key={index}
|
||||
actions={{
|
||||
show: (
|
||||
<Show item={item} reload={action?.reload} title="查看" />
|
||||
<OrderShow item={item} reload={action?.reload} title="查看" />
|
||||
),
|
||||
serialNumber: (
|
||||
<SerialNumber
|
||||
@ -206,6 +264,16 @@ export default function Index({ title = '线上收款单' }) {
|
||||
title="关联流水"
|
||||
/>
|
||||
),
|
||||
transferBills: (
|
||||
<MyButtons.Default
|
||||
title="调账"
|
||||
type="primary"
|
||||
size="small"
|
||||
onClick={() => {
|
||||
navigate(`/bills/order_online/pages/transfer_bills?id=${item.id}`);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
),
|
||||
|
||||
142
src/pages/bills/order_online/modals/OrderShow.tsx
Normal file
142
src/pages/bills/order_online/modals/OrderShow.tsx
Normal file
@ -0,0 +1,142 @@
|
||||
import {
|
||||
MyBetaModalFormProps,
|
||||
MyColumns,
|
||||
MyProTableProps,
|
||||
renderTextHelper,
|
||||
} from '@/common';
|
||||
import { MyModal } from '@/components/MyModal';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import {
|
||||
HouseBillsTypeEnum,
|
||||
HouseOrdersAuditStatusEnum,
|
||||
HouseOrdersPaymentMethodEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { ProCard, ProDescriptions, ProTable } from '@ant-design/pro-components';
|
||||
import { Space, Spin } from 'antd';
|
||||
import { useState } from 'react';
|
||||
|
||||
export default function OrderShow(props: MyBetaModalFormProps) {
|
||||
const [orderData, setOrderData] = useState<any>({});
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const getOrderId = () => {
|
||||
if (!props.item) return undefined;
|
||||
if (typeof props.item === 'number' || typeof props.item === 'string') {
|
||||
return Number(props.item);
|
||||
}
|
||||
return Number(props.item.id || props.item.order_id);
|
||||
};
|
||||
|
||||
const fetchOrderData = () => {
|
||||
const id = getOrderId();
|
||||
if (!id) return;
|
||||
setLoading(true);
|
||||
Apis.HouseOrder.HouseOrders.Show({ id })
|
||||
.then((res) => {
|
||||
setOrderData(res?.data || {});
|
||||
})
|
||||
.finally(() => {
|
||||
setLoading(false);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<MyModal
|
||||
title={props.title || '查看'}
|
||||
modal={{ title: props.title || '查看' }}
|
||||
width={800}
|
||||
onOpen={() => fetchOrderData()}
|
||||
node={
|
||||
<Spin spinning={loading}>
|
||||
<Space direction="vertical" style={{ width: '100%' }}>
|
||||
<ProCard size="small">
|
||||
<ProDescriptions bordered size="small" column={2}>
|
||||
<ProDescriptions.Item label="房屋名称" span={2}>
|
||||
<Space>
|
||||
{orderData?.house_order_items?.[0]?.asset_house
|
||||
?.full_name || '-'}
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseOrdersAuditStatusEnum}
|
||||
value={orderData?.audit_status}
|
||||
/>
|
||||
</Space>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款账号" span={2}>
|
||||
{orderData?.receipt_account?.company_name || '-'} ;
|
||||
{orderData?.receipt_account?.company_bank || '-'} ;
|
||||
{orderData?.receipt_account?.company_account || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="关联流水" span={2}>
|
||||
{orderData?.accept_serial_number || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款方式">
|
||||
{Object.values(HouseOrdersPaymentMethodEnum).find(
|
||||
(item) => item.value === orderData?.payment_method,
|
||||
)?.text || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款日期">
|
||||
{orderData?.paid_time || '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
<ProDescriptions.Item label="收款金额">
|
||||
{orderData?.actual_paid_amount || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="录入人">
|
||||
{orderData?.creator || '-'}-{orderData?.creator_phone || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="录入时间">
|
||||
{orderData?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="审核状态" span={2}>
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseOrdersAuditStatusEnum}
|
||||
value={orderData?.audit_status}
|
||||
/>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="驳回原因" span={2}>
|
||||
{orderData?.reason || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
<ProCard size="small">
|
||||
<ProTable
|
||||
{...MyProTableProps.props}
|
||||
search={false}
|
||||
toolBarRender={false}
|
||||
pagination={false}
|
||||
dataSource={orderData?.house_order_items}
|
||||
rowKey={(record, index) => 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,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</ProCard>
|
||||
</Space>
|
||||
</Spin>
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@ -1,115 +0,0 @@
|
||||
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 (
|
||||
<MyModal
|
||||
title={props.title || '查看'}
|
||||
width={800}
|
||||
// onOpen={() => getShow()}
|
||||
node={
|
||||
<Space direction="vertical" style={{ width: '100%' }}>
|
||||
<ProCard size="small">
|
||||
<ProDescriptions bordered size="small" column={2}>
|
||||
<ProDescriptions.Item label="房屋名称" span={2}>
|
||||
<Space>
|
||||
{props?.item?.house_order_items?.[0].asset_house?.full_name ||
|
||||
'-'}
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseOrdersAuditStatusEnum}
|
||||
value={props?.item?.audit_status}
|
||||
/>
|
||||
</Space>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款账号" span={2}>
|
||||
{props?.item?.receipt_account?.company_name} ;
|
||||
{props?.item?.receipt_account?.company_bank} ;
|
||||
{props?.item?.receipt_account?.company_account}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="关联流水" span={2}>
|
||||
{props?.item?.accept_serial_number || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款方式">
|
||||
{Object.values(HouseOrdersPaymentMethodEnum).find(
|
||||
(item) => item.value === props?.item?.payment_method,
|
||||
)?.text || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款日期">
|
||||
{props?.item?.paid_time || '-'}
|
||||
</ProDescriptions.Item>
|
||||
|
||||
<ProDescriptions.Item label="收款金额">
|
||||
{props?.item?.actual_paid_amount || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="录入人">
|
||||
{props?.item?.creator || '-'}-
|
||||
{props?.item?.creator_phone || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="录入时间">
|
||||
{props?.item?.created_at || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="审核状态" span={2}>
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseOrdersAuditStatusEnum}
|
||||
value={props?.item?.audit_status}
|
||||
/>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="驳回原因" span={2}>
|
||||
{props?.item?.reason || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
<ProCard size="small">
|
||||
<ProTable
|
||||
{...MyProTableProps.props}
|
||||
search={false}
|
||||
toolBarRender={false}
|
||||
pagination={false}
|
||||
dataSource={props?.item?.house_order_items}
|
||||
rowKey={(record, index) => 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,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</ProCard>
|
||||
</Space>
|
||||
}
|
||||
/>
|
||||
);
|
||||
}
|
||||
655
src/pages/bills/order_online/pages/transfer_bills.tsx
Normal file
655
src/pages/bills/order_online/pages/transfer_bills.tsx
Normal file
@ -0,0 +1,655 @@
|
||||
import {
|
||||
MyButtons,
|
||||
MyFormItems,
|
||||
MyModalFormProps,
|
||||
MyPageContainer,
|
||||
renderTextHelper,
|
||||
rulesHelper,
|
||||
} from '@/common';
|
||||
import { Selects } from '@/components/Select';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import {
|
||||
ApprovalTemplateNodesNodeTypeEnum,
|
||||
ApprovalTemplatesTypeEnum,
|
||||
HouseBillsTypeEnum,
|
||||
HouseOrdersAuditStatusEnum,
|
||||
HouseOrdersPaymentMethodEnum,
|
||||
} from '@/gen/Enums';
|
||||
import {
|
||||
BetaSchemaForm,
|
||||
ProCard,
|
||||
ProDescriptions,
|
||||
} from '@ant-design/pro-components';
|
||||
import { useNavigate, useSearchParams } from '@umijs/max';
|
||||
import { Button, Form, message, Space } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
import BillSelectModal from '../components/BillSelectModal';
|
||||
|
||||
interface NewBillItem {
|
||||
id?: number | string;
|
||||
bill_info?: string;
|
||||
total_payable_amount?: number;
|
||||
amount?: number;
|
||||
}
|
||||
|
||||
interface FormValues {
|
||||
new_bills?: NewBillItem[];
|
||||
approval_templates_id?: number;
|
||||
approval_remark?: string;
|
||||
node_approvers?: any[];
|
||||
}
|
||||
|
||||
export default function TransferBills({ title = '调账' }) {
|
||||
const [form] = Form.useForm();
|
||||
const navigate = useNavigate();
|
||||
const [searchParams] = useSearchParams();
|
||||
const orderId = Number(searchParams.get('id'));
|
||||
|
||||
const [orderData, setOrderData] = useState<any>({});
|
||||
const [billSelectOpen, setBillSelectOpen] = useState(false);
|
||||
const [approvalTemplates, setApprovalTemplates] = useState<any[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
const originalAmount = Number(orderData?.actual_paid_amount || 0);
|
||||
const assetProjectsId =
|
||||
orderData?.asset_projects_id || orderData?.asset_project?.id;
|
||||
|
||||
useEffect(() => {
|
||||
if (!orderId) {
|
||||
message.error('缺少收款单ID');
|
||||
navigate('/bills/order_online');
|
||||
return;
|
||||
}
|
||||
Apis.HouseOrder.HouseOrders.Show({ id: orderId }).then((res) => {
|
||||
setOrderData(res?.data || {});
|
||||
});
|
||||
}, [orderId, navigate]);
|
||||
|
||||
const handleAddBills = (rows: any[]) => {
|
||||
if (rows.length === 0) {
|
||||
message.warning('请选择要添加的账单');
|
||||
return;
|
||||
}
|
||||
|
||||
const currentBills: NewBillItem[] = form.getFieldValue('new_bills') || [];
|
||||
const existingIds = new Set(currentBills.map((item) => String(item.id)));
|
||||
const newItems: NewBillItem[] = [];
|
||||
let duplicateCount = 0;
|
||||
|
||||
rows.forEach((row) => {
|
||||
const id = String(row.id);
|
||||
if (existingIds.has(id)) {
|
||||
duplicateCount++;
|
||||
return;
|
||||
}
|
||||
const unpaidAmount =
|
||||
Math.round((Number(row.total_payable_amount) || 0) * 100) / 100;
|
||||
const typeText =
|
||||
HouseBillsTypeEnum[row.type as keyof typeof HouseBillsTypeEnum]?.text ||
|
||||
row.type;
|
||||
const assetName =
|
||||
row.asset_house?.full_name || row.asset_car_port?.full_name || '';
|
||||
newItems.push({
|
||||
id: row.id,
|
||||
bill_info: `${row.year}-${String(row.month).padStart(
|
||||
2,
|
||||
'0',
|
||||
)} [${typeText}] ${assetName}`,
|
||||
total_payable_amount: unpaidAmount,
|
||||
amount: unpaidAmount,
|
||||
});
|
||||
existingIds.add(id);
|
||||
});
|
||||
|
||||
form.setFieldValue('new_bills', [...currentBills, ...newItems]);
|
||||
|
||||
if (newItems.length > 0) {
|
||||
message.success(`已添加 ${newItems.length} 条账单`);
|
||||
}
|
||||
if (duplicateCount > 0) {
|
||||
message.warning(`${duplicateCount} 条账单已存在,已跳过`);
|
||||
}
|
||||
setBillSelectOpen(false);
|
||||
};
|
||||
|
||||
const handleSubmit = async (values: any) => {
|
||||
const newBills = values.new_bills || [];
|
||||
if (newBills.length === 0) {
|
||||
message.error('请至少选择一条新账单');
|
||||
return;
|
||||
}
|
||||
|
||||
const billIds = newBills.map((item: NewBillItem) => String(item.id));
|
||||
const uniqueBillIds = new Set(billIds);
|
||||
if (uniqueBillIds.size !== billIds.length) {
|
||||
message.error('新账单中存在重复选择');
|
||||
return;
|
||||
}
|
||||
|
||||
const totalTransfer =
|
||||
Math.round(
|
||||
newBills.reduce(
|
||||
(acc: number, item: NewBillItem) => acc + (Number(item.amount) || 0),
|
||||
0,
|
||||
) * 100,
|
||||
) / 100;
|
||||
|
||||
if (Math.abs(totalTransfer - originalAmount) > 0.01) {
|
||||
message.error(
|
||||
`转入金额汇总(${totalTransfer})必须等于原收款单金额(${originalAmount})`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const bill of newBills) {
|
||||
const amount = Number(bill.amount) || 0;
|
||||
const payable = Number(bill.total_payable_amount) || 0;
|
||||
if (amount > payable) {
|
||||
message.error(
|
||||
`账单"${bill.bill_info}"的转入金额不能大于应收金额(${payable})`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (amount > originalAmount) {
|
||||
message.error(
|
||||
`账单"${bill.bill_info}"的转入金额不能大于原收款单金额(${originalAmount})`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const { node_approvers } = values;
|
||||
if (approvalTemplates?.length > 0 && node_approvers?.length > 0) {
|
||||
for (const templateNode of approvalTemplates) {
|
||||
const submittedNode = node_approvers.find(
|
||||
(node: any) => node?.name === templateNode?.name,
|
||||
);
|
||||
|
||||
if (!submittedNode) {
|
||||
message.error(`节点"${templateNode?.name}"不能删除`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
templateNode?.node_type ===
|
||||
ApprovalTemplateNodesNodeTypeEnum.Approver.value
|
||||
) {
|
||||
const originalMembers =
|
||||
templateNode?.approval_template_node_members?.map(
|
||||
(member: any) => member?.company_employees_id,
|
||||
);
|
||||
|
||||
if (originalMembers?.length > 0) {
|
||||
const submittedMembers = submittedNode?.members || [];
|
||||
const isMatch =
|
||||
originalMembers.length === submittedMembers.length &&
|
||||
originalMembers.every((memberId: number) =>
|
||||
submittedMembers.includes(memberId),
|
||||
);
|
||||
|
||||
if (!isMatch) {
|
||||
message.error(
|
||||
`节点"${templateNode?.name}"的审批人必须与审批模板设置保持一致`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
await Apis.HouseOrder.HouseOrders.TransferBills({
|
||||
id: orderId,
|
||||
new_bills: newBills.map((item: NewBillItem) => ({
|
||||
id: item.id,
|
||||
amount: item.amount,
|
||||
})) as any,
|
||||
approval_templates_id: values.approval_templates_id,
|
||||
approval_remark: values.approval_remark,
|
||||
node_approvers: values.node_approvers,
|
||||
} as ApiTypes.HouseOrder.HouseOrders.TransferBills);
|
||||
message.success('调账提交成功');
|
||||
navigate('/bills/order_online');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<MyPageContainer
|
||||
title={
|
||||
<Space
|
||||
style={{ cursor: 'pointer' }}
|
||||
onClick={() => {
|
||||
navigate(-1);
|
||||
}}
|
||||
>
|
||||
{title}
|
||||
</Space>
|
||||
}
|
||||
enableTabs={false}
|
||||
tabKey="order-online-transfer-bills"
|
||||
tabLabel={title}
|
||||
>
|
||||
<ProCard>
|
||||
<div style={{ width: 900, minHeight: '80vh', margin: '0 auto' }}>
|
||||
<BetaSchemaForm<FormValues>
|
||||
{...MyModalFormProps.props}
|
||||
layoutType="form"
|
||||
// width="900px"
|
||||
wrapperCol={{ span: 24 }}
|
||||
form={form}
|
||||
submitter={{
|
||||
submitButtonProps: false,
|
||||
resetButtonProps: false,
|
||||
render: () => [
|
||||
<MyButtons.Default
|
||||
key="back"
|
||||
size="middle"
|
||||
type="default"
|
||||
onClick={() => navigate(-1)}
|
||||
title="返回"
|
||||
/>,
|
||||
<MyButtons.Default
|
||||
key="submit"
|
||||
size="middle"
|
||||
type="primary"
|
||||
loading={loading}
|
||||
onClick={() => {
|
||||
form.validateFields().then(handleSubmit);
|
||||
}}
|
||||
title="提交申请"
|
||||
/>,
|
||||
],
|
||||
}}
|
||||
columns={[
|
||||
{
|
||||
dataIndex: 'original_info',
|
||||
valueType: 'text',
|
||||
renderFormItem: () => (
|
||||
<Space direction="vertical" style={{ width: '100%' }}>
|
||||
<ProCard size="small">
|
||||
<ProDescriptions bordered size="small" column={2}>
|
||||
<ProDescriptions.Item label="关联" span={2}>
|
||||
<Space>
|
||||
{orderData?.house_order_items?.[0]?.asset_car_port
|
||||
?.full_name
|
||||
? `车位:${orderData?.house_order_items?.[0]?.asset_car_port?.full_name}`
|
||||
: orderData?.house_order_items?.[0]?.asset_house
|
||||
?.full_name
|
||||
? `房屋:${orderData?.house_order_items?.[0]?.asset_house?.full_name}`
|
||||
: '-'}
|
||||
<renderTextHelper.Tag
|
||||
Enums={HouseOrdersAuditStatusEnum}
|
||||
value={orderData?.audit_status}
|
||||
/>
|
||||
</Space>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款账号" span={2}>
|
||||
<span>
|
||||
{orderData?.receipt_account?.company_name || '-'} |
|
||||
{orderData?.receipt_account?.company_bank || '-'} |
|
||||
{orderData?.receipt_account?.company_account || '-'}
|
||||
</span>
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款单ID">
|
||||
{orderData?.id || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款方式">
|
||||
{Object.values(HouseOrdersPaymentMethodEnum).find(
|
||||
(item) => item.value === orderData?.payment_method,
|
||||
)?.text || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="原收款单金额">
|
||||
{orderData?.actual_paid_amount || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款日期">
|
||||
{orderData?.paid_time || '-'}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
</ProCard>
|
||||
</Space>
|
||||
),
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
{
|
||||
valueType: 'divider',
|
||||
fieldProps: {
|
||||
orientation: 'left',
|
||||
children: '选择新账单及转入金额',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
valueType: 'formList',
|
||||
dataIndex: 'new_bills',
|
||||
formItemProps: { ...rulesHelper.array },
|
||||
fieldProps: {
|
||||
copyIconProps: false,
|
||||
creatorButtonProps: false,
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
valueType: 'group',
|
||||
colProps: { span: 24 },
|
||||
columns: [
|
||||
{
|
||||
title: '账单信息',
|
||||
dataIndex: 'bill_info',
|
||||
valueType: 'text',
|
||||
colProps: { span: 10 },
|
||||
fieldProps: {
|
||||
disabled: true,
|
||||
},
|
||||
formItemProps: { ...rulesHelper.text },
|
||||
},
|
||||
{
|
||||
title: '应收金额',
|
||||
valueType: 'number',
|
||||
dataIndex: 'total_payable_amount',
|
||||
colProps: { span: 6 },
|
||||
fieldProps: {
|
||||
style: { width: '100%' },
|
||||
addonAfter: '元',
|
||||
disabled: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '转入金额',
|
||||
valueType: 'digit',
|
||||
dataIndex: 'amount',
|
||||
colProps: { span: 6 },
|
||||
formItemProps: {
|
||||
...rulesHelper.number,
|
||||
validateFirst: true,
|
||||
},
|
||||
fieldProps: {
|
||||
style: { width: '100%' },
|
||||
addonAfter: '元',
|
||||
min: 0,
|
||||
max: originalAmount,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
valueType: 'dependency',
|
||||
name: ['new_bills'],
|
||||
columns: ({ new_bills }) => {
|
||||
const bills = new_bills || [];
|
||||
const total =
|
||||
Math.round(
|
||||
bills.reduce(
|
||||
(acc: number, item: NewBillItem) =>
|
||||
acc + (Number(item?.amount) || 0),
|
||||
0,
|
||||
) * 100,
|
||||
) / 100;
|
||||
const remaining =
|
||||
Math.round((originalAmount - total) * 100) / 100;
|
||||
return [
|
||||
{
|
||||
valueType: 'text',
|
||||
renderFormItem: () => (
|
||||
<Space
|
||||
style={{
|
||||
width: '100%',
|
||||
justifyContent: 'space-between',
|
||||
padding: '8px 0',
|
||||
}}
|
||||
>
|
||||
<Space>
|
||||
<span>
|
||||
转入金额汇总:
|
||||
<strong>{total.toFixed(2)}</strong> 元
|
||||
</span>
|
||||
<span
|
||||
style={{
|
||||
color:
|
||||
remaining < 0
|
||||
? '#ff4d4f'
|
||||
: remaining === 0
|
||||
? '#52c41a'
|
||||
: '#666',
|
||||
}}
|
||||
>
|
||||
剩余可转入金额:
|
||||
<strong>{remaining.toFixed(2)}</strong> 元
|
||||
</span>
|
||||
</Space>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={() => setBillSelectOpen(true)}
|
||||
>
|
||||
+账单
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
colProps: { span: 24 },
|
||||
},
|
||||
];
|
||||
},
|
||||
},
|
||||
{
|
||||
valueType: 'divider',
|
||||
fieldProps: {
|
||||
orientation: 'left',
|
||||
children: '审批信息',
|
||||
},
|
||||
},
|
||||
Selects?.ApprovalTemplates({
|
||||
key: 'approval_templates_id',
|
||||
title: '审批模板',
|
||||
colProps: { span: 24 },
|
||||
params: {
|
||||
type: ApprovalTemplatesTypeEnum.HouseBillTransfer.value,
|
||||
is_enabled: '1',
|
||||
},
|
||||
formItemProps: { ...rulesHelper.number },
|
||||
fieldProps: {
|
||||
placeholder: '请选择审批模板',
|
||||
onChange: (e: any) => {
|
||||
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'],
|
||||
colProps: { span: 24 },
|
||||
columns: ({ approval_templates_id }) => {
|
||||
return approval_templates_id
|
||||
? [
|
||||
{
|
||||
valueType: 'formList',
|
||||
dataIndex: 'node_approvers',
|
||||
fieldProps: {
|
||||
style: { width: '100%' },
|
||||
itemContainerStyle: {
|
||||
width: '100%',
|
||||
overflowX: 'hidden',
|
||||
},
|
||||
creatorButtonProps: false,
|
||||
actionRender: (field: any, action: any) => [
|
||||
<Button
|
||||
key="add"
|
||||
type="link"
|
||||
size="small"
|
||||
onClick={() => {
|
||||
const currentNodeType = form.getFieldValue([
|
||||
'node_approvers',
|
||||
field.name,
|
||||
'node_type',
|
||||
]);
|
||||
if (
|
||||
currentNodeType ===
|
||||
ApprovalTemplateNodesNodeTypeEnum.CC.value
|
||||
) {
|
||||
message.warning('抄送节点不允许添加');
|
||||
return;
|
||||
}
|
||||
action.add(
|
||||
{
|
||||
node_type:
|
||||
ApprovalTemplateNodesNodeTypeEnum
|
||||
.Approver.value,
|
||||
},
|
||||
field.name + 1,
|
||||
);
|
||||
}}
|
||||
>
|
||||
添加
|
||||
</Button>,
|
||||
<Button
|
||||
key="delete"
|
||||
type="link"
|
||||
size="small"
|
||||
danger
|
||||
onClick={() => {
|
||||
action.remove(field.name);
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</Button>,
|
||||
],
|
||||
},
|
||||
formItemProps: {
|
||||
...rulesHelper.array,
|
||||
wrapperCol: { span: 24 },
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
valueType: 'group',
|
||||
colProps: { span: 24 },
|
||||
columns: [
|
||||
MyFormItems.EnumSelect({
|
||||
key: 'node_type',
|
||||
valueEnum: ApprovalTemplateNodesNodeTypeEnum,
|
||||
colProps: { span: 4 },
|
||||
formItemProps: {
|
||||
...rulesHelper.text,
|
||||
},
|
||||
}),
|
||||
{
|
||||
key: 'name',
|
||||
colProps: { span: 5 },
|
||||
formItemProps: {
|
||||
...rulesHelper.text,
|
||||
},
|
||||
},
|
||||
{
|
||||
valueType: 'dependency',
|
||||
name: ['node_type'],
|
||||
columns: ({ node_type }) => {
|
||||
return [
|
||||
Selects.Employees({
|
||||
key: 'members',
|
||||
title: '',
|
||||
colProps: { span: 11 },
|
||||
formItemProps: {
|
||||
...rulesHelper.array,
|
||||
},
|
||||
fieldProps: {
|
||||
mode: 'multiple',
|
||||
showSearch: true,
|
||||
maxCount:
|
||||
node_type ===
|
||||
ApprovalTemplateNodesNodeTypeEnum
|
||||
.Approver.value
|
||||
? 1
|
||||
: 9,
|
||||
maxTagTextLength: 20,
|
||||
labelRender: (res: any) => {
|
||||
if (res?.label) {
|
||||
return res?.label;
|
||||
} else {
|
||||
return approvalTemplates?.map(
|
||||
(item: any) => {
|
||||
if (
|
||||
item?.node_type ===
|
||||
node_type &&
|
||||
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 || ''
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
},
|
||||
}),
|
||||
];
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
: [];
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '申请说明',
|
||||
valueType: 'textarea',
|
||||
key: 'approval_remark',
|
||||
colProps: { span: 24 },
|
||||
fieldProps: {
|
||||
placeholder: '请输入申请说明',
|
||||
rows: 3,
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<BillSelectModal
|
||||
open={billSelectOpen}
|
||||
asset_projects_id={assetProjectsId}
|
||||
onCancel={() => setBillSelectOpen(false)}
|
||||
onOk={handleAddBills}
|
||||
/>
|
||||
</div>
|
||||
</ProCard>
|
||||
</MyPageContainer>
|
||||
);
|
||||
}
|
||||
@ -13,7 +13,10 @@ export default function info(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions bordered>
|
||||
<ProDescriptions.Item label="房屋名称" span={2}>
|
||||
<Space>
|
||||
<span>
|
||||
【{item?.asset_houses_id || '-'}】
|
||||
{item?.asset_house?.full_name || '-'}
|
||||
</span>
|
||||
<a
|
||||
onClick={() => {
|
||||
navigate(`/customer/archive/show/${item?.asset_houses_id}`);
|
||||
|
||||
@ -28,7 +28,9 @@ export default function Index({ ...rest }) {
|
||||
MyProTableProps.request(
|
||||
{
|
||||
...params,
|
||||
asset_houses_id: rest.item?.asset_houses_id,
|
||||
...(rest.item?.asset_car_ports_id
|
||||
? { car_port_name: rest.item?.asset_car_port?.full_name || '' }
|
||||
: { asset_houses_id: rest.item?.asset_houses_id }),
|
||||
bill_status: [HouseBillsBillStatusEnum.Paid.value],
|
||||
},
|
||||
sort,
|
||||
@ -88,7 +90,7 @@ export default function Index({ ...rest }) {
|
||||
item={{
|
||||
...item,
|
||||
// 跟据发起的页面传递的type来判断退款类型
|
||||
type: RefundsTypeEnum.HouseBill.value,
|
||||
type: RefundsTypeEnum.HouseOrder.value,
|
||||
// 审批模板的类型
|
||||
approval_type: ApprovalTemplatesTypeEnum.Refund.value,
|
||||
total_paid_amount: item.total_paid_amount,
|
||||
|
||||
@ -2,7 +2,7 @@ import { MyColumns, MyProTableProps } from '@/common';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { Space } from 'antd';
|
||||
import { Space, Tooltip } from 'antd';
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import BillCopy from '../../house_bills/modals/BillCopy';
|
||||
import PayCreate from './modals/PayCreate';
|
||||
@ -32,7 +32,9 @@ export default function Index({ ...rest }) {
|
||||
MyProTableProps.request(
|
||||
{
|
||||
...params,
|
||||
asset_houses_id: rest.item?.asset_houses_id,
|
||||
...(rest.item?.asset_car_ports_id
|
||||
? { car_port_name: rest.item?.full_name || '' }
|
||||
: { asset_houses_id: rest.item?.asset_houses_id }),
|
||||
bill_status: [
|
||||
HouseBillsBillStatusEnum.PendingPayment.value,
|
||||
HouseBillsBillStatusEnum.PartiallyPaid.value,
|
||||
@ -95,6 +97,21 @@ export default function Index({ ...rest }) {
|
||||
valueEnum: HouseBillsTypeEnum,
|
||||
search: false,
|
||||
}),
|
||||
{
|
||||
title: '账单金额',
|
||||
dataIndex: 'amount',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '优惠金额',
|
||||
dataIndex: 'discount_amount',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '滞纳金',
|
||||
dataIndex: 'late_fee',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '应收金额',
|
||||
dataIndex: 'total_payable_amount',
|
||||
@ -117,10 +134,14 @@ export default function Index({ ...rest }) {
|
||||
title: '收款账号',
|
||||
dataIndex: 'receipt_account',
|
||||
render: (_, record) => {
|
||||
return `${record.receipt_account?.company_name}
|
||||
${record.receipt_account.company_account?.slice(0, 4)}
|
||||
****
|
||||
${record.receipt_account.company_account?.slice(-4)}`;
|
||||
const text = `${record.receipt_account.company_account}|${record.receipt_account?.company_name}|${record.receipt_account?.company_bank}`;
|
||||
return (
|
||||
<Tooltip title={text}>
|
||||
<span>
|
||||
{text.length > 16 ? `${text.slice(0, 16)}...` : text}
|
||||
</span>
|
||||
</Tooltip>
|
||||
);
|
||||
},
|
||||
search: false,
|
||||
},
|
||||
|
||||
@ -75,9 +75,9 @@ export default function ShowQrCode(props: MyBetaModalFormProps) {
|
||||
<ProDescriptions.Item label="关联房屋/车位" span={2}>
|
||||
{props?.item?.asset_houses_id
|
||||
? props?.item?.asset_house?.full_name || ''
|
||||
: props?.item?.asset_car_port?.full_name || ''}
|
||||
: props?.item?.full_name || ''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="应收金额">
|
||||
<ProDescriptions.Item label="应收金额" span={2}>
|
||||
¥
|
||||
{props?.item?.list
|
||||
?.reduce(
|
||||
@ -87,6 +87,16 @@ export default function ShowQrCode(props: MyBetaModalFormProps) {
|
||||
)
|
||||
.toFixed(2) || 0}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款户名" span={2}>
|
||||
{props?.item?.list?.[0]?.receipt_account?.company_name ||
|
||||
''}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="收款账号">
|
||||
{props?.item?.list?.[0]?.receipt_account?.company_bank ||
|
||||
''}{' '}
|
||||
{props?.item?.list?.[0]?.receipt_account?.company_account ||
|
||||
''}
|
||||
</ProDescriptions.Item>
|
||||
</ProDescriptions>
|
||||
<Tabs
|
||||
activeKey={activeTab}
|
||||
|
||||
@ -14,6 +14,7 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
const { id } = useParams<{ id: string }>();
|
||||
const [data, setShow] = useState<any>({});
|
||||
const [pendingCount, setPendingCount] = useState<number>(0);
|
||||
const [totalPayableSum, setTotalPayableSum] = useState<number>(0);
|
||||
|
||||
const loadShow = () => {
|
||||
let paramsId: any = { id: id ?? 0 };
|
||||
@ -22,6 +23,16 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
});
|
||||
};
|
||||
|
||||
const loadTotalPayableSum = () => {
|
||||
Apis.Bill.HouseBills.SummaryShow({
|
||||
asset_houses_id: Number(id),
|
||||
})
|
||||
.then((res) => {
|
||||
setTotalPayableSum(res?.data?.total_payable_sum || 0);
|
||||
})
|
||||
.catch(() => setTotalPayableSum(0));
|
||||
};
|
||||
|
||||
const loadPendingCount = () => {
|
||||
Apis.Archive.HouseRegisters.List({
|
||||
asset_houses_id: Number(id),
|
||||
@ -34,6 +45,7 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
useEffect(() => {
|
||||
loadShow();
|
||||
loadPendingCount();
|
||||
loadTotalPayableSum();
|
||||
}, [props.item?.id]);
|
||||
|
||||
let items = [
|
||||
@ -43,10 +55,15 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
closable: false,
|
||||
children: (
|
||||
<OccupantsNow
|
||||
item={{ ...data, asset_houses_id: id }}
|
||||
item={{
|
||||
...data,
|
||||
asset_houses_id: id,
|
||||
total_payable_sum: totalPayableSum,
|
||||
}}
|
||||
reload={() => {
|
||||
loadShow();
|
||||
loadPendingCount();
|
||||
loadTotalPayableSum();
|
||||
}}
|
||||
/>
|
||||
),
|
||||
@ -80,9 +97,14 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
return (
|
||||
<>
|
||||
<HouseInfo item={data} reload={loadShow} />
|
||||
{id && <SummaryInfo item={{ ...data, id: id }} reload={loadShow} />}
|
||||
{id && (
|
||||
<SummaryInfo
|
||||
item={{ ...data, id: id, total_payable_sum: totalPayableSum }}
|
||||
reload={loadShow}
|
||||
/>
|
||||
)}
|
||||
<ProCard style={{ marginTop: 16 }}>
|
||||
<Tabs type="card" items={items} defaultActiveKey="1" />
|
||||
<Tabs type="card" items={items} defaultActiveKey="1" size="small" />
|
||||
</ProCard>
|
||||
</>
|
||||
);
|
||||
|
||||
56
src/pages/customer/archive/components/BillInfo.tsx
Normal file
56
src/pages/customer/archive/components/BillInfo.tsx
Normal file
@ -0,0 +1,56 @@
|
||||
import { MyBetaModalFormProps } from '@/common';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import CancelledBill from '@/pages/bills/summary/table/CancelledBill';
|
||||
import PaidBill from '@/pages/bills/summary/table/PaidBill';
|
||||
|
||||
import UnpaidBill from '@/pages/bills/summary/table/UnpaidBill';
|
||||
import { ProCard } from '@ant-design/pro-components';
|
||||
import { useParams } from '@umijs/max';
|
||||
import { Tabs } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
export default function Show(props: MyBetaModalFormProps) {
|
||||
const { id } = useParams<{ id: string }>();
|
||||
const [data, setShow] = useState<any>({});
|
||||
|
||||
const loadShow = () => {
|
||||
let paramsId: any = { asset_houses_id: id ?? 0 };
|
||||
Apis.HouseOrder.HousePrepayments.Show(paramsId).then((res) => {
|
||||
setShow(res?.data);
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
loadShow();
|
||||
}, [id]);
|
||||
|
||||
let items = [
|
||||
{
|
||||
label: '欠费账单',
|
||||
key: '1',
|
||||
closable: false,
|
||||
children: <UnpaidBill item={{ ...data, asset_houses_id: id }} />,
|
||||
},
|
||||
{
|
||||
label: '已付账单',
|
||||
key: '2',
|
||||
closable: false,
|
||||
children: <PaidBill item={{ ...data, asset_houses_id: id }} />,
|
||||
},
|
||||
{
|
||||
label: '作废账单',
|
||||
key: '3',
|
||||
closable: false,
|
||||
children: <CancelledBill item={{ ...data, asset_houses_id: id }} />,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* <SummaryInfo item={{ ...data, id: id }} reload={loadShow} /> */}
|
||||
<ProCard style={{ marginTop: 16 }}>
|
||||
<Tabs type="card" items={items} defaultActiveKey="1" size="small" />
|
||||
</ProCard>
|
||||
</>
|
||||
);
|
||||
}
|
||||
86
src/pages/customer/archive/components/Parking.tsx
Normal file
86
src/pages/customer/archive/components/Parking.tsx
Normal file
@ -0,0 +1,86 @@
|
||||
import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
import {
|
||||
AssetCarPortsPropertyTypeEnum,
|
||||
AssetCarPortsStatusEnum,
|
||||
AssetCarPortsTypeEnum,
|
||||
} from '@/gen/Enums';
|
||||
import SpaceShow from '@/pages/asset/parking_space/modals/SpaceShow';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { Space } from 'antd';
|
||||
|
||||
export default function Index(props: MyBetaModalFormProps) {
|
||||
const { item } = props;
|
||||
if (!item) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<ProTable
|
||||
{...MyProTableProps.props}
|
||||
headerTitle="房屋关联车位"
|
||||
request={async (params, sort) =>
|
||||
MyProTableProps.request(
|
||||
{
|
||||
...params,
|
||||
asset_houses_id: item.id,
|
||||
},
|
||||
sort,
|
||||
Apis.Asset.AssetCarPorts.List,
|
||||
)
|
||||
}
|
||||
search={false}
|
||||
columns={[
|
||||
MyColumns.ID({
|
||||
search: false,
|
||||
}),
|
||||
{
|
||||
title: '车场名称',
|
||||
dataIndex: ['asset_parking_place', 'name'],
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '车位号',
|
||||
dataIndex: 'name',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '车位全称',
|
||||
dataIndex: 'full_name',
|
||||
search: false,
|
||||
},
|
||||
{
|
||||
title: '建筑面积',
|
||||
dataIndex: 'built_area',
|
||||
search: false,
|
||||
},
|
||||
MyColumns.EnumTag({
|
||||
title: '类型',
|
||||
dataIndex: 'type',
|
||||
valueEnum: AssetCarPortsTypeEnum,
|
||||
search: false,
|
||||
}),
|
||||
MyColumns.EnumTag({
|
||||
title: '产权类型',
|
||||
dataIndex: 'property_type',
|
||||
valueEnum: AssetCarPortsPropertyTypeEnum,
|
||||
search: false,
|
||||
}),
|
||||
MyColumns.EnumTag({
|
||||
title: '状态',
|
||||
dataIndex: 'status',
|
||||
valueEnum: AssetCarPortsStatusEnum,
|
||||
search: false,
|
||||
}),
|
||||
MyColumns.CreatedAt(),
|
||||
MyColumns.Option({
|
||||
render: (_, item: any, index, action) => (
|
||||
<Space key={index}>
|
||||
<SpaceShow item={item} title="车位详情" />
|
||||
</Space>
|
||||
),
|
||||
}),
|
||||
]}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@ -1,42 +1,19 @@
|
||||
import { MyBetaModalFormProps, MyButtons } 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<any>({});
|
||||
export default function SummaryInfo(props: MyBetaModalFormProps) {
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
Apis.Bill.HouseBills.SummaryShow({
|
||||
asset_houses_id: props?.item?.id,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
setDataShow(JSON.parse(JSON.stringify(res?.data)));
|
||||
return false;
|
||||
})
|
||||
.catch(() => false);
|
||||
}, [props?.item?.id]);
|
||||
const totalPayableSum = props?.item?.total_payable_sum;
|
||||
|
||||
return (
|
||||
<ProCard>
|
||||
<ProDescriptions bordered>
|
||||
{/* <ProDescriptions.Item label="账单金额">
|
||||
{getShow?.payable_amount_sum || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="滞纳金">
|
||||
{getShow?.late_fee_sum || '-'}
|
||||
</ProDescriptions.Item>
|
||||
<ProDescriptions.Item label="优惠金额">
|
||||
{getShow?.discount_amount_sum || '-'}
|
||||
</ProDescriptions.Item> */}
|
||||
<ProDescriptions.Item label="未缴金额">
|
||||
<ProDescriptions>
|
||||
<ProDescriptions.Item label="应收金额">
|
||||
<Space>
|
||||
{getShow?.total_payable_sum ? `¥${getShow?.total_payable_sum}` : ''}
|
||||
{getShow?.total_payable_sum ? (
|
||||
{totalPayableSum ? `¥${totalPayableSum}` : ''}
|
||||
{totalPayableSum ? (
|
||||
<MyButtons.View
|
||||
title="查看账单"
|
||||
size="small"
|
||||
|
||||
@ -16,10 +16,12 @@ import {
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { useNavigate } from '@umijs/max';
|
||||
import { Tag } from 'antd';
|
||||
import { useRef } from 'react';
|
||||
import Delivery from './modals/Delivery';
|
||||
|
||||
export default function Index({ title = '房屋档案' }) {
|
||||
const navigate = useNavigate();
|
||||
const formRef = useRef<any>();
|
||||
|
||||
return (
|
||||
<MyPageContainer
|
||||
@ -34,6 +36,7 @@ export default function Index({ title = '房屋档案' }) {
|
||||
request={async (params, sort) =>
|
||||
MyProTableProps.request(params, sort, Apis.Asset.AssetHouses.List)
|
||||
}
|
||||
formRef={formRef}
|
||||
toolBarRender={(action) => [
|
||||
<MyToolBarActions
|
||||
key="toolbar"
|
||||
@ -58,15 +61,58 @@ export default function Index({ title = '房屋档案' }) {
|
||||
title: '选择项目',
|
||||
key: 'asset_projects_id',
|
||||
hidden: true,
|
||||
fieldProps: {
|
||||
onChange: () => {
|
||||
formRef.current?.setFieldsValue({
|
||||
asset_buildings_id: undefined,
|
||||
asset_units_id: undefined,
|
||||
asset_houses_id: undefined,
|
||||
});
|
||||
},
|
||||
},
|
||||
}),
|
||||
Selects?.AssetBuildings({
|
||||
title: '选择楼栋',
|
||||
key: 'asset_buildings_id',
|
||||
hidden: true,
|
||||
dependencies: ['asset_projects_id'],
|
||||
fieldProps: {
|
||||
onChange: () => {
|
||||
formRef.current?.setFieldsValue({
|
||||
asset_units_id: undefined,
|
||||
asset_houses_id: undefined,
|
||||
});
|
||||
},
|
||||
},
|
||||
}),
|
||||
Selects?.AssetUnits({
|
||||
title: '选择单元',
|
||||
key: 'asset_units_id',
|
||||
hidden: true,
|
||||
dependencies: ['asset_buildings_id'],
|
||||
fieldProps: {
|
||||
onChange: () => {
|
||||
formRef.current?.setFieldsValue({
|
||||
asset_houses_id: undefined,
|
||||
});
|
||||
},
|
||||
},
|
||||
}),
|
||||
Selects?.AssetHouses({
|
||||
title: '选择房屋',
|
||||
key: 'asset_houses_id',
|
||||
hidden: true,
|
||||
dependencies: ['asset_units_id'],
|
||||
}),
|
||||
{
|
||||
title: '项目名称',
|
||||
dataIndex: ['asset_project', 'name'],
|
||||
search: {
|
||||
transform: (value) => {
|
||||
return { project_name: value };
|
||||
},
|
||||
},
|
||||
search: false,
|
||||
// search: {
|
||||
// transform: (value) => {
|
||||
// return { project_name: value };
|
||||
// },
|
||||
// },
|
||||
},
|
||||
{
|
||||
title: '房屋名称',
|
||||
@ -108,7 +154,7 @@ export default function Index({ title = '房屋档案' }) {
|
||||
// search: false,
|
||||
// },
|
||||
{
|
||||
title: '客户信息',
|
||||
title: '产权人',
|
||||
render(_, record) {
|
||||
const owners =
|
||||
record?.house_occupants?.filter(
|
||||
@ -122,7 +168,7 @@ export default function Index({ title = '房屋档案' }) {
|
||||
<div>
|
||||
{owners.length > 0 && (
|
||||
<div>
|
||||
<Tag color="blue">产权人</Tag>
|
||||
{/* <Tag color="blue">产权人</Tag> */}
|
||||
{owners.map((owner: any) => owner?.name).join('、')}
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -69,7 +69,7 @@ export default function Delivery(props: MyBetaModalFormProps) {
|
||||
key: 'ownership_info',
|
||||
title: '产权文件',
|
||||
tooltip: '上限9张',
|
||||
uploadType: 'file',
|
||||
// uploadType: 'file',
|
||||
max: 9,
|
||||
colProps: { span: 24 },
|
||||
formItemProps: { ...rulesHelper.array },
|
||||
|
||||
@ -5,7 +5,9 @@ import { useParams } from '@umijs/max';
|
||||
import { Tabs } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
import BasicInfo from '../components/BasicInfo';
|
||||
import BillInfo from '../components/BillInfo';
|
||||
import MeterInfo from '../components/MeterInfo';
|
||||
import Parking from '../components/Parking';
|
||||
import WordorderInfo from '../components/WordorderInfo';
|
||||
|
||||
export default function Show({ title }: { title?: string } = {}) {
|
||||
@ -44,6 +46,12 @@ export default function Show({ title }: { title?: string } = {}) {
|
||||
closable: false,
|
||||
children: <BasicInfo item={{ id }} reload={() => loadShow()} />,
|
||||
},
|
||||
{
|
||||
label: '账单信息',
|
||||
key: 'bills',
|
||||
closable: false,
|
||||
children: <BillInfo item={{ id }} />,
|
||||
},
|
||||
{
|
||||
label: '仪表信息',
|
||||
key: 'meters',
|
||||
@ -56,6 +64,12 @@ export default function Show({ title }: { title?: string } = {}) {
|
||||
closable: false,
|
||||
children: <WordorderInfo item={data} />,
|
||||
},
|
||||
{
|
||||
label: '车位',
|
||||
key: 'parkings',
|
||||
closable: false,
|
||||
children: <Parking item={data} />,
|
||||
},
|
||||
];
|
||||
return (
|
||||
<MyPageContainer
|
||||
|
||||
@ -52,20 +52,20 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
key: 'residential_relation',
|
||||
title: '关联身份',
|
||||
colProps: { span: 8 },
|
||||
valueEnum: HouseOccupantsResidentialRelationEnum,
|
||||
// valueEnum: () => {
|
||||
// let obj: any = JSON.parse(
|
||||
// JSON.stringify(HouseOccupantsResidentialRelationEnum),
|
||||
// );
|
||||
// delete obj.PropertyOwner;
|
||||
// return obj;
|
||||
// },
|
||||
// valueEnum: HouseOccupantsResidentialRelationEnum,
|
||||
valueEnum: () => {
|
||||
let obj: any = JSON.parse(
|
||||
JSON.stringify(HouseOccupantsResidentialRelationEnum),
|
||||
);
|
||||
delete obj.PropertyOwner;
|
||||
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'],
|
||||
|
||||
@ -121,7 +121,8 @@ export default function RegistersShow(props: MyBetaModalFormProps) {
|
||||
/>
|
||||
</ProCard>
|
||||
|
||||
{props?.item?.type === 'Delivery' && (
|
||||
{(props?.item?.type === 'AddOwner' ||
|
||||
props?.item?.type === 'Transfer') && (
|
||||
<ProCard title="产证信息" style={{ paddingRight: 10 }}>
|
||||
<Image.PreviewGroup>
|
||||
{props?.item?.ownership_info?.map((res: any, index: number) => {
|
||||
|
||||
@ -11,26 +11,53 @@ import {
|
||||
HouseOccupantsHouseRelationEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { BetaSchemaForm, ProCard } from '@ant-design/pro-components';
|
||||
import { Form, message } from 'antd';
|
||||
import { Form, message, Modal } from 'antd';
|
||||
import { useState } from 'react';
|
||||
|
||||
export default function Create(props: MyBetaModalFormProps) {
|
||||
export default function Transfer(props: MyBetaModalFormProps) {
|
||||
const [form] = Form.useForm();
|
||||
const [open, setOpen] = useState(false);
|
||||
|
||||
const handleOpen = () => {
|
||||
const totalPayableSum = props?.item?.total_payable_sum;
|
||||
if (totalPayableSum && totalPayableSum > 0) {
|
||||
Modal.confirm({
|
||||
title: '提示',
|
||||
content: `该房屋存在未收取的账单,金额合计: ¥${totalPayableSum} ,是否继续操作过户 ?`,
|
||||
okText: '继续过户',
|
||||
cancelText: '取消',
|
||||
onOk: () => {
|
||||
form.resetFields();
|
||||
setOpen(true);
|
||||
},
|
||||
onCancel: () => {
|
||||
setOpen(false);
|
||||
},
|
||||
});
|
||||
} else {
|
||||
form.resetFields();
|
||||
setOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<MyButtons.Default
|
||||
title={props.title}
|
||||
size="middle"
|
||||
type="primary"
|
||||
disabled={!props.item?.house_occupants?.length}
|
||||
onClick={handleOpen}
|
||||
/>
|
||||
<BetaSchemaForm<ApiTypes.Archive.HouseRegisters.Store>
|
||||
{...MyModalFormProps.props}
|
||||
title={`${props.title}`}
|
||||
wrapperCol={{ span: 24 }}
|
||||
width="1000px"
|
||||
trigger={
|
||||
<MyButtons.Default title={props.title} size="middle" type="primary" />
|
||||
}
|
||||
open={open}
|
||||
onOpenChange={setOpen}
|
||||
key={new Date().getTime()}
|
||||
form={form}
|
||||
onOpenChange={(open: any) => {
|
||||
if (open) {
|
||||
form.resetFields(); // 清空表单数据
|
||||
}
|
||||
}}
|
||||
onFinish={async (values) =>
|
||||
Apis.Archive.HouseRegisters.Store({
|
||||
...values,
|
||||
@ -76,9 +103,9 @@ export default function Create(props: MyBetaModalFormProps) {
|
||||
MyFormItems.UploadImages({
|
||||
key: 'ownership_info',
|
||||
title: '产权文件',
|
||||
tooltip: '上限3张',
|
||||
uploadType: 'file',
|
||||
max: 3,
|
||||
tooltip: '上限9张',
|
||||
// uploadType: 'file',
|
||||
max: 9,
|
||||
colProps: { span: 18 },
|
||||
formItemProps: { ...rulesHelper.array },
|
||||
}),
|
||||
@ -86,6 +113,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
||||
valueType: 'formList',
|
||||
dataIndex: 'customer_info',
|
||||
colProps: { span: 24 },
|
||||
initialValue: [''],
|
||||
fieldProps: {
|
||||
copyIconProps: false,
|
||||
creatorButtonProps: {
|
||||
@ -159,7 +187,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
||||
MyFormItems.UploadImages({
|
||||
key: 'card_front_image',
|
||||
title: '证件正面',
|
||||
uploadType: 'file',
|
||||
// uploadType: 'file',
|
||||
required: true,
|
||||
max: 1,
|
||||
colProps: { span: 6 },
|
||||
@ -167,7 +195,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
||||
MyFormItems.UploadImages({
|
||||
key: 'card_back_image',
|
||||
title: '证件反面',
|
||||
uploadType: 'file',
|
||||
// uploadType: 'file',
|
||||
required: true,
|
||||
max: 1,
|
||||
colProps: { span: 6 },
|
||||
@ -206,5 +234,6 @@ export default function Create(props: MyBetaModalFormProps) {
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@ -233,7 +233,8 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
/>
|
||||
</ProCard>
|
||||
)}
|
||||
{props?.item?.type === 'AddOwner' &&
|
||||
{(props?.item?.type === 'AddOwner' ||
|
||||
props?.item?.type === 'Transfer') &&
|
||||
props?.item?.ownership_info &&
|
||||
props?.item?.ownership_info?.length > 0 && (
|
||||
<ProCard title="产证信息" size="small">
|
||||
@ -243,7 +244,7 @@ export default function Update(props: MyBetaModalFormProps) {
|
||||
(res: any, index: number) => (
|
||||
<Image
|
||||
key={`${res?.name}_${index}`}
|
||||
width={100}
|
||||
width={40}
|
||||
src={res?.url || ''}
|
||||
placeholder="产证资料"
|
||||
/>
|
||||
|
||||
@ -202,7 +202,8 @@ export default function Show(props: MyBetaModalFormProps) {
|
||||
/>
|
||||
</ProCard>
|
||||
)}
|
||||
{props?.item?.type === 'AddOwner' &&
|
||||
{(props?.item?.type === 'AddOwner' ||
|
||||
props?.item?.type === 'Transfer') &&
|
||||
props?.item?.ownership_info &&
|
||||
props?.item?.ownership_info?.length > 0 && (
|
||||
<ProCard title="产证信息" size="small">
|
||||
|
||||
@ -3,6 +3,8 @@ import {
|
||||
MyColumns,
|
||||
MyPageContainer,
|
||||
MyProTableProps,
|
||||
MyTableActions,
|
||||
MyToolBarActions,
|
||||
} from '@/common';
|
||||
import { Selects } from '@/components/Select';
|
||||
import { Apis } from '@/gen/Apis';
|
||||
@ -11,7 +13,7 @@ import {
|
||||
HouseWorkOrdersStatusEnum,
|
||||
} from '@/gen/Enums';
|
||||
import { ProTable } from '@ant-design/pro-components';
|
||||
import { Space, Tag } from 'antd';
|
||||
import { Tag } from 'antd';
|
||||
import WorkOrderShow from '../../work_order/list/modals/WorkOrderShow';
|
||||
import Create from './modals/Create';
|
||||
import Show from './modals/Show';
|
||||
@ -36,7 +38,14 @@ export default function Index({ title = '品质核查' }) {
|
||||
)
|
||||
}
|
||||
toolBarRender={(action) => [
|
||||
<Create key="Create" reload={action?.reload} title={title} />,
|
||||
<MyToolBarActions
|
||||
key="toolbar"
|
||||
actions={{
|
||||
create: (
|
||||
<Create key="Create" reload={action?.reload} title={title} />
|
||||
),
|
||||
}}
|
||||
/>,
|
||||
]}
|
||||
columns={[
|
||||
MyColumns.ID({ search: false }),
|
||||
@ -88,11 +97,14 @@ export default function Index({ title = '品质核查' }) {
|
||||
title: '整改工单',
|
||||
dataIndex: 'house_work_orders_id',
|
||||
search: false,
|
||||
render: (value: any) => (
|
||||
render: (value: any, record: any) =>
|
||||
record.is_rectification ? (
|
||||
<WorkOrderShow
|
||||
item={{ id: value, type: 'link' }}
|
||||
title={value + ' 查看'}
|
||||
title={' 查看'}
|
||||
/>
|
||||
) : (
|
||||
'-'
|
||||
),
|
||||
},
|
||||
MyColumns.EnumTag({
|
||||
@ -118,9 +130,14 @@ export default function Index({ title = '品质核查' }) {
|
||||
MyColumns.CreatedAt(),
|
||||
MyColumns.Option({
|
||||
render: (_, item: any, index, action) => (
|
||||
<Space key={index}>
|
||||
<Show item={item} />
|
||||
<MyTableActions
|
||||
key={index}
|
||||
actions={{
|
||||
show: <Show item={item} />,
|
||||
update: (
|
||||
<Update item={item} reload={action?.reload} title={title} />
|
||||
),
|
||||
delete: (
|
||||
<MyButtons.Delete
|
||||
onConfirm={() =>
|
||||
Apis.QualityCheck.QualityChecks.Delete({
|
||||
@ -128,7 +145,9 @@ export default function Index({ title = '品质核查' }) {
|
||||
}).then(() => action?.reload())
|
||||
}
|
||||
/>
|
||||
</Space>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
),
|
||||
}),
|
||||
]}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user