Merge branch 'develop' of ssh://code.juyouwu.cn:2222/pay/pay-admin into develop
All checks were successful
Build and Push Docker Image / build (push) Successful in 3m30s
All checks were successful
Build and Push Docker Image / build (push) Successful in 3m30s
* 'develop' of ssh://code.juyouwu.cn:2222/pay/pay-admin: fix: 更新接口 feat:更新房屋账单,修复部分创建的 id 错误
This commit is contained in:
commit
8ba778a1eb
38
src/gen/ApiTypes.d.ts
vendored
38
src/gen/ApiTypes.d.ts
vendored
@ -113,17 +113,20 @@ declare namespace ApiTypes {
|
|||||||
"status"?: string; // 状态,[enum:HouseRegistersStatusEnum]
|
"status"?: string; // 状态,[enum:HouseRegistersStatusEnum]
|
||||||
"customer_info"?: string[]; // 客户信息
|
"customer_info"?: string[]; // 客户信息
|
||||||
"ownership_info"?: string[]; // 产权信息
|
"ownership_info"?: string[]; // 产权信息
|
||||||
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
type Update = {
|
type Update = {
|
||||||
"id": number; // id
|
"id": number; // id
|
||||||
"type": string; // 类型,[enum:HouseRegistersTypeEnum]
|
"type": string; // 类型,[enum:HouseRegistersTypeEnum]
|
||||||
"customer_info"?: string[]; // 客户信息
|
"customer_info"?: string[]; // 客户信息
|
||||||
"ownership_info"?: string[]; // 产权信息
|
"ownership_info"?: string[]; // 产权信息
|
||||||
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
type MoveOut = {
|
type MoveOut = {
|
||||||
"house_occupants_id": number; // 房客id
|
"house_occupants_id": number; // 房客id
|
||||||
"move_out_date"?: Date; // 搬离时间
|
"move_out_date"?: Date; // 搬离时间
|
||||||
"apply_reason"?: string; // 搬离原因
|
"apply_reason"?: string; // 搬离原因
|
||||||
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
type MoveIn = {
|
type MoveIn = {
|
||||||
"house_occupants_id": number; // 房客id
|
"house_occupants_id": number; // 房客id
|
||||||
@ -132,6 +135,7 @@ declare namespace ApiTypes {
|
|||||||
};
|
};
|
||||||
type RemoveOwner = {
|
type RemoveOwner = {
|
||||||
"house_occupants_id": number; // 房客id
|
"house_occupants_id": number; // 房客id
|
||||||
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
type ChangeOccupant = {
|
type ChangeOccupant = {
|
||||||
"house_occupants_id": number; // 房客id
|
"house_occupants_id": number; // 房客id
|
||||||
@ -151,6 +155,7 @@ declare namespace ApiTypes {
|
|||||||
"owners_id"?: number; // 产权人id,[ref:house_occupants]
|
"owners_id"?: number; // 产权人id,[ref:house_occupants]
|
||||||
"relation_with_owner"?: string; // 与产权人关系,[enum:HouseOccupantsRelationWithOwnerEnum]
|
"relation_with_owner"?: string; // 与产权人关系,[enum:HouseOccupantsRelationWithOwnerEnum]
|
||||||
"status"?: string; // 状态,[enum:HouseOccupantsStatusEnum]
|
"status"?: string; // 状态,[enum:HouseOccupantsStatusEnum]
|
||||||
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
type Show = {
|
type Show = {
|
||||||
"id": number; // id
|
"id": number; // id
|
||||||
@ -356,6 +361,9 @@ declare namespace ApiTypes {
|
|||||||
"keywords"?: string; // 关键词
|
"keywords"?: string; // 关键词
|
||||||
"companies_id"?: number; // 机构id
|
"companies_id"?: number; // 机构id
|
||||||
};
|
};
|
||||||
|
type Import = {
|
||||||
|
"upload_file"?: mimes:xlsx,xls; // 上传的时候必填文件
|
||||||
|
};
|
||||||
}
|
}
|
||||||
namespace AssetUnits {
|
namespace AssetUnits {
|
||||||
type List = {
|
type List = {
|
||||||
@ -633,6 +641,29 @@ declare namespace ApiTypes {
|
|||||||
"id": number; // id
|
"id": number; // id
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
namespace Positions {
|
||||||
|
type List = {
|
||||||
|
"name"?: string; // 模糊搜索:名称
|
||||||
|
};
|
||||||
|
type Store = {
|
||||||
|
"name": string; // 岗位名称
|
||||||
|
"is_use"?: number; // 是否启用,1启用,0禁用
|
||||||
|
};
|
||||||
|
type Update = {
|
||||||
|
"id": number; // id
|
||||||
|
"name": string; // 岗位名称
|
||||||
|
"is_use"?: number; // 是否启用,1启用,0禁用
|
||||||
|
};
|
||||||
|
type Show = {
|
||||||
|
"id": number; // id
|
||||||
|
};
|
||||||
|
type Delete = {
|
||||||
|
"id": number; // id
|
||||||
|
};
|
||||||
|
type Select = {
|
||||||
|
"keywords"?: string; // 关键词
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
namespace Company {
|
namespace Company {
|
||||||
namespace Companies {
|
namespace Companies {
|
||||||
@ -797,6 +828,10 @@ declare namespace ApiTypes {
|
|||||||
"status"?: number; // 状态
|
"status"?: number; // 状态
|
||||||
"remark"?: string; // 备注
|
"remark"?: string; // 备注
|
||||||
};
|
};
|
||||||
|
type BatchStore = {
|
||||||
|
"companies_id": number; // 所属机构id,[ref:companies]
|
||||||
|
"positions_ids": string[]; // 岗位ID
|
||||||
|
};
|
||||||
type Show = {
|
type Show = {
|
||||||
"id": number; // id
|
"id": number; // id
|
||||||
};
|
};
|
||||||
@ -1424,6 +1459,9 @@ declare namespace ApiTypes {
|
|||||||
type Delete = {
|
type Delete = {
|
||||||
"id": number; // id
|
"id": number; // id
|
||||||
};
|
};
|
||||||
|
type Import = {
|
||||||
|
"upload_file"?: mimes:xlsx,xls; // 上传的时候必填文件
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
namespace Msg {
|
namespace Msg {
|
||||||
|
|||||||
@ -185,6 +185,12 @@ export const Apis = {
|
|||||||
Select(data?: ApiTypes.Asset.AssetProjects.Select): Promise<MyResponseType> {
|
Select(data?: ApiTypes.Asset.AssetProjects.Select): Promise<MyResponseType> {
|
||||||
return request('admin/asset/asset_projects/select', { data });
|
return request('admin/asset/asset_projects/select', { data });
|
||||||
},
|
},
|
||||||
|
Import(data?: ApiTypes.Asset.AssetProjects.Import): Promise<MyResponseType> {
|
||||||
|
return request('admin/asset/asset_projects/import', { data });
|
||||||
|
},
|
||||||
|
DownloadTemplate(): Promise<MyResponseType> {
|
||||||
|
return request('admin/asset/asset_projects/download_template', {responseType: 'blob',});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
AssetUnits: {
|
AssetUnits: {
|
||||||
List(data?: ApiTypes.Asset.AssetUnits.List): Promise<MyResponseType> {
|
List(data?: ApiTypes.Asset.AssetUnits.List): Promise<MyResponseType> {
|
||||||
@ -374,6 +380,26 @@ export const Apis = {
|
|||||||
return request('admin/common/convenience_services/delete', { data });
|
return request('admin/common/convenience_services/delete', { data });
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Positions: {
|
||||||
|
List(data?: ApiTypes.Common.Positions.List): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/list', { data });
|
||||||
|
},
|
||||||
|
Store(data: ApiTypes.Common.Positions.Store): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/store', { data });
|
||||||
|
},
|
||||||
|
Update(data: ApiTypes.Common.Positions.Update): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/update', { data });
|
||||||
|
},
|
||||||
|
Show(data: ApiTypes.Common.Positions.Show): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/show', { data });
|
||||||
|
},
|
||||||
|
Delete(data: ApiTypes.Common.Positions.Delete): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/delete', { data });
|
||||||
|
},
|
||||||
|
Select(data?: ApiTypes.Common.Positions.Select): Promise<MyResponseType> {
|
||||||
|
return request('admin/common/positions/select', { data });
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Company: {
|
Company: {
|
||||||
Companies: {
|
Companies: {
|
||||||
@ -461,6 +487,9 @@ export const Apis = {
|
|||||||
Update(data: ApiTypes.Company.CompanyPositions.Update): Promise<MyResponseType> {
|
Update(data: ApiTypes.Company.CompanyPositions.Update): Promise<MyResponseType> {
|
||||||
return request('admin/company/company_positions/update', { data });
|
return request('admin/company/company_positions/update', { data });
|
||||||
},
|
},
|
||||||
|
BatchStore(data: ApiTypes.Company.CompanyPositions.BatchStore): Promise<MyResponseType> {
|
||||||
|
return request('admin/company/company_positions/batch_store', { data });
|
||||||
|
},
|
||||||
Show(data: ApiTypes.Company.CompanyPositions.Show): Promise<MyResponseType> {
|
Show(data: ApiTypes.Company.CompanyPositions.Show): Promise<MyResponseType> {
|
||||||
return request('admin/company/company_positions/show', { data });
|
return request('admin/company/company_positions/show', { data });
|
||||||
},
|
},
|
||||||
@ -845,6 +874,12 @@ export const Apis = {
|
|||||||
Delete(data: ApiTypes.Meter.HouseMeters.Delete): Promise<MyResponseType> {
|
Delete(data: ApiTypes.Meter.HouseMeters.Delete): Promise<MyResponseType> {
|
||||||
return request('admin/meter/house_meters/delete', { data });
|
return request('admin/meter/house_meters/delete', { data });
|
||||||
},
|
},
|
||||||
|
Import(data?: ApiTypes.Meter.HouseMeters.Import): Promise<MyResponseType> {
|
||||||
|
return request('admin/meter/house_meters/import', { data });
|
||||||
|
},
|
||||||
|
DownloadTemplate(): Promise<MyResponseType> {
|
||||||
|
return request('admin/meter/house_meters/download_template', {responseType: 'blob',});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Msg: {
|
Msg: {
|
||||||
|
|||||||
@ -154,7 +154,7 @@ export const BannersTypeEnum= {
|
|||||||
|
|
||||||
// 缓存类型
|
// 缓存类型
|
||||||
export const CacheTypeEnum= {
|
export const CacheTypeEnum= {
|
||||||
'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#b123bc","value":"MobilePhoneVerificationCode"},
|
'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#e3da02","value":"MobilePhoneVerificationCode"},
|
||||||
};
|
};
|
||||||
|
|
||||||
// CompaniesMerchantTypeEnum
|
// CompaniesMerchantTypeEnum
|
||||||
@ -447,11 +447,14 @@ export const HouseOccupantsHouseRelationEnum= {
|
|||||||
|
|
||||||
// HouseOccupantsRelationWithOwnerEnum
|
// HouseOccupantsRelationWithOwnerEnum
|
||||||
export const HouseOccupantsRelationWithOwnerEnum= {
|
export const HouseOccupantsRelationWithOwnerEnum= {
|
||||||
|
'Self': {"text":"本人","color":"#52c41a","value":"Self"},
|
||||||
'Spouse': {"text":"配偶","color":"#2db7f5","value":"Spouse"},
|
'Spouse': {"text":"配偶","color":"#2db7f5","value":"Spouse"},
|
||||||
'Children': {"text":"子女","color":"#87d068","value":"Children"},
|
'Children': {"text":"子女","color":"#87d068","value":"Children"},
|
||||||
'Parents': {"text":"父母","color":"#faad14","value":"Parents"},
|
'Parents': {"text":"父母","color":"#faad14","value":"Parents"},
|
||||||
'Siblings': {"text":"兄弟姐妹","color":"#fa8c16","value":"Siblings"},
|
'Siblings': {"text":"兄弟姐妹","color":"#fa8c16","value":"Siblings"},
|
||||||
'OtherRelatives': {"text":"其他亲属","color":"#f5222d","value":"OtherRelatives"},
|
'OtherRelatives': {"text":"其他亲属","color":"#f5222d","value":"OtherRelatives"},
|
||||||
|
'PrimaryTenant': {"text":"主租客","color":"#722ed1","value":"PrimaryTenant"},
|
||||||
|
'Tenant': {"text":"租客","color":"#1890ff","value":"Tenant"},
|
||||||
};
|
};
|
||||||
|
|
||||||
// HouseOccupantsResidentialRelationEnum
|
// HouseOccupantsResidentialRelationEnum
|
||||||
@ -463,8 +466,8 @@ export const HouseOccupantsResidentialRelationEnum= {
|
|||||||
|
|
||||||
// HouseOccupantsStatusEnum
|
// HouseOccupantsStatusEnum
|
||||||
export const HouseOccupantsStatusEnum= {
|
export const HouseOccupantsStatusEnum= {
|
||||||
'Normal': {"text":"正常","color":"#52c41a","value":"Normal"},
|
'Normal': {"text":"绑定","color":"#52c41a","value":"Normal"},
|
||||||
'Unbound': {"text":"已解除","color":"#f5222d","value":"Unbound"},
|
'Unbound': {"text":"解绑","color":"#f5222d","value":"Unbound"},
|
||||||
};
|
};
|
||||||
|
|
||||||
// 订单状态枚举
|
// 订单状态枚举
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { useNavigate } from '@umijs/max';
|
|||||||
import { Space, Tag } from 'antd';
|
import { Space, Tag } from 'antd';
|
||||||
import Delivery from './modals/Delivery';
|
import Delivery from './modals/Delivery';
|
||||||
|
|
||||||
export default function Index({ title = '房屋档案' }) {
|
export default function Index({ title = '房客关系' }) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
// 注册当前页面为标签页
|
// 注册当前页面为标签页
|
||||||
usePageTabs({
|
usePageTabs({
|
||||||
@ -140,7 +140,7 @@ export default function Index({ title = '房屋档案' }) {
|
|||||||
<Delivery
|
<Delivery
|
||||||
item={item}
|
item={item}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="添加产权人"
|
title="添加业主"
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
|
|||||||
@ -79,7 +79,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
fieldProps: {
|
fieldProps: {
|
||||||
copyIconProps: false,
|
copyIconProps: false,
|
||||||
creatorButtonProps: {
|
creatorButtonProps: {
|
||||||
creatorButtonText: '添加产权人',
|
creatorButtonText: '添加业主',
|
||||||
},
|
},
|
||||||
itemRender: (
|
itemRender: (
|
||||||
{ listDom, action }: any,
|
{ listDom, action }: any,
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export default function Index({ ...rest }) {
|
|||||||
key="Delivery"
|
key="Delivery"
|
||||||
item={{ ...rest.item, size: 'middle' }}
|
item={{ ...rest.item, size: 'middle' }}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="添加产权人"
|
title="添加业主"
|
||||||
/>,
|
/>,
|
||||||
!rest.item?.house_occupants?.length ? (
|
!rest.item?.house_occupants?.length ? (
|
||||||
''
|
''
|
||||||
|
|||||||
@ -82,7 +82,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
fieldProps: {
|
fieldProps: {
|
||||||
copyIconProps: false,
|
copyIconProps: false,
|
||||||
creatorButtonProps: {
|
creatorButtonProps: {
|
||||||
creatorButtonText: '添加产权人',
|
creatorButtonText: '添加业主',
|
||||||
},
|
},
|
||||||
itemRender: (
|
itemRender: (
|
||||||
{ listDom, action }: any,
|
{ listDom, action }: any,
|
||||||
|
|||||||
@ -15,7 +15,7 @@ export default function EnrollsList(props: MyBetaModalFormProps) {
|
|||||||
<MyModal
|
<MyModal
|
||||||
title={props.title || '报名'}
|
title={props.title || '报名'}
|
||||||
type={props.item?.type || 'primary'}
|
type={props.item?.type || 'primary'}
|
||||||
width="900px"
|
width="800px"
|
||||||
node={
|
node={
|
||||||
<ProTable
|
<ProTable
|
||||||
{...MyProTableProps.props}
|
{...MyProTableProps.props}
|
||||||
@ -26,6 +26,7 @@ export default function EnrollsList(props: MyBetaModalFormProps) {
|
|||||||
Apis.Activity.ActivityEnrolls.List,
|
Apis.Activity.ActivityEnrolls.List,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
options={false}
|
||||||
columns={[
|
columns={[
|
||||||
MyColumns.ID(),
|
MyColumns.ID(),
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,128 +0,0 @@
|
|||||||
import {
|
|
||||||
MyButtons,
|
|
||||||
MyColumns,
|
|
||||||
MyPageContainer,
|
|
||||||
MyProTableProps,
|
|
||||||
usePageTabs,
|
|
||||||
} from '@/common';
|
|
||||||
import { MyExport } from '@/components/MyExport';
|
|
||||||
import { Apis } from '@/gen/Apis';
|
|
||||||
import { AssetHousesUsageEnum } from '@/gen/Enums';
|
|
||||||
import { ProTable } from '@ant-design/pro-components';
|
|
||||||
import { useNavigate } from '@umijs/max';
|
|
||||||
import { Space } from 'antd';
|
|
||||||
import { useState } from 'react';
|
|
||||||
import HousesShow from '../asset/dictionary/modals/HousesShow';
|
|
||||||
import HousesUpdate from '../asset/dictionary/modals/HousesUpdate';
|
|
||||||
|
|
||||||
export default function Index({ title = '房屋列表' }) {
|
|
||||||
const [getParams, setParams] = useState({});
|
|
||||||
|
|
||||||
const navigate = useNavigate();
|
|
||||||
// 注册当前页面为标签页
|
|
||||||
usePageTabs({
|
|
||||||
tabKey: 'asset-houses',
|
|
||||||
tabLabel: title,
|
|
||||||
});
|
|
||||||
return (
|
|
||||||
<MyPageContainer title={title}>
|
|
||||||
<ProTable
|
|
||||||
{...MyProTableProps.props}
|
|
||||||
request={async (params, sort) => {
|
|
||||||
setParams(params);
|
|
||||||
return MyProTableProps.request(
|
|
||||||
params,
|
|
||||||
sort,
|
|
||||||
Apis.Asset.AssetHouses.List,
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
toolBarRender={() => [
|
|
||||||
<MyExport
|
|
||||||
key="export"
|
|
||||||
item={getParams}
|
|
||||||
download={Apis.Asset.AssetHouses}
|
|
||||||
/>,
|
|
||||||
]}
|
|
||||||
columns={[
|
|
||||||
MyColumns.ID(),
|
|
||||||
{
|
|
||||||
title: '项目名称',
|
|
||||||
dataIndex: ['asset_project', 'name'],
|
|
||||||
search: {
|
|
||||||
transform: (value) => {
|
|
||||||
return { project_name: value };
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '房屋名称',
|
|
||||||
dataIndex: 'full_name',
|
|
||||||
},
|
|
||||||
MyColumns.EnumTag({
|
|
||||||
title: '用途',
|
|
||||||
dataIndex: 'usage',
|
|
||||||
valueEnum: AssetHousesUsageEnum,
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
title: '楼层',
|
|
||||||
dataIndex: 'floor',
|
|
||||||
render(_, record) {
|
|
||||||
return `${record?.floor}层`;
|
|
||||||
},
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
title: '建筑面积',
|
|
||||||
dataIndex: 'built_area',
|
|
||||||
render(_, record) {
|
|
||||||
return `${
|
|
||||||
record?.built_area ? record?.built_area + ' m²' : '-'
|
|
||||||
} `;
|
|
||||||
},
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '套内面积',
|
|
||||||
dataIndex: 'inside_area',
|
|
||||||
render(_, record) {
|
|
||||||
return `${
|
|
||||||
record?.inside_area ? record?.inside_area + ' m²' : '-'
|
|
||||||
} `;
|
|
||||||
},
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '计费面积',
|
|
||||||
dataIndex: 'chargeable_area',
|
|
||||||
render(_, record) {
|
|
||||||
return `${
|
|
||||||
record?.chargeable_area ? record?.chargeable_area + ' m²' : '-'
|
|
||||||
} `;
|
|
||||||
},
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
MyColumns.Option({
|
|
||||||
render: (_, item: any, index, action) => (
|
|
||||||
<Space key={index}>
|
|
||||||
<HousesShow item={item} reload={action?.reload} />
|
|
||||||
<HousesUpdate
|
|
||||||
item={item}
|
|
||||||
reload={action?.reload}
|
|
||||||
title="编辑"
|
|
||||||
/>
|
|
||||||
<MyButtons.Delete
|
|
||||||
onConfirm={() =>
|
|
||||||
Apis.Asset.AssetHouses.Delete({
|
|
||||||
id: item.id,
|
|
||||||
}).then(() => action?.reload())
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</Space>
|
|
||||||
),
|
|
||||||
}),
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
</MyPageContainer>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@ -7,7 +7,7 @@ import {
|
|||||||
usePageTabs,
|
usePageTabs,
|
||||||
} from '@/common';
|
} from '@/common';
|
||||||
import { Apis } from '@/gen/Apis';
|
import { Apis } from '@/gen/Apis';
|
||||||
import { HouseBillsTypeEnum } from '@/gen/Enums';
|
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||||
import { ProTable } from '@ant-design/pro-components';
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
import { Space } from 'antd';
|
import { Space } from 'antd';
|
||||||
import BillCreate from './modals/BillCreate';
|
import BillCreate from './modals/BillCreate';
|
||||||
@ -46,6 +46,11 @@ export default function Index({ title = '账单明细' }) {
|
|||||||
]}
|
]}
|
||||||
columns={[
|
columns={[
|
||||||
MyColumns.ID(),
|
MyColumns.ID(),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '状态',
|
||||||
|
dataIndex: 'bill_status',
|
||||||
|
valueEnum: HouseBillsBillStatusEnum,
|
||||||
|
}),
|
||||||
MyColumns.EnumTag({
|
MyColumns.EnumTag({
|
||||||
title: '类型',
|
title: '类型',
|
||||||
dataIndex: 'type',
|
dataIndex: 'type',
|
||||||
@ -81,7 +86,11 @@ export default function Index({ title = '账单明细' }) {
|
|||||||
dataIndex: 'late_fee',
|
dataIndex: 'late_fee',
|
||||||
search: false,
|
search: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '应付金额',
|
||||||
|
dataIndex: 'total_payable_amount',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '计费开始日期',
|
title: '计费开始日期',
|
||||||
dataIndex: 'start_date',
|
dataIndex: 'start_date',
|
||||||
|
|||||||
35
src/pages/bills/summary/components/BillInfo.tsx
Normal file
35
src/pages/bills/summary/components/BillInfo.tsx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import { MyBetaModalFormProps } from '@/common';
|
||||||
|
import { ProCard, ProDescriptions } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
|
||||||
|
export default function info(props: MyBetaModalFormProps) {
|
||||||
|
const { item } = props;
|
||||||
|
|
||||||
|
// 添加调试日志
|
||||||
|
console.log('BillInfo props:', props);
|
||||||
|
console.log('BillInfo 11111111:', item);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Space direction="vertical" style={{ width: '100%' }}>
|
||||||
|
<ProCard title="基本信息">
|
||||||
|
<ProDescriptions bordered>
|
||||||
|
<ProDescriptions.Item label="房屋名称" span={2}>
|
||||||
|
{item?.asset_house?.full_name || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="应付金额">
|
||||||
|
{item?.total_payable_sum || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="账单金额">
|
||||||
|
{item?.payable_amount_sum || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="滞纳金">
|
||||||
|
{item?.late_fee_sum || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="优惠金额">
|
||||||
|
{item?.discount_amount_sum || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
</ProDescriptions>
|
||||||
|
</ProCard>
|
||||||
|
</Space>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
MyButtons,
|
||||||
MyColumns,
|
MyColumns,
|
||||||
MyPageContainer,
|
MyPageContainer,
|
||||||
MyProTableProps,
|
MyProTableProps,
|
||||||
@ -6,10 +7,11 @@ import {
|
|||||||
} from '@/common';
|
} from '@/common';
|
||||||
import { Apis } from '@/gen/Apis';
|
import { Apis } from '@/gen/Apis';
|
||||||
import { ProTable } from '@ant-design/pro-components';
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
import { useNavigate } from '@umijs/max';
|
||||||
import { Space } from 'antd';
|
import { Space } from 'antd';
|
||||||
import SummaryShow from './modals/SummaryShow';
|
|
||||||
|
|
||||||
export default function Index({ title = '房屋账单' }) {
|
export default function Index({ title = '房屋账单' }) {
|
||||||
|
const navigate = useNavigate();
|
||||||
// 注册当前页面为标签页
|
// 注册当前页面为标签页
|
||||||
usePageTabs({
|
usePageTabs({
|
||||||
tabKey: 'summary',
|
tabKey: 'summary',
|
||||||
@ -32,18 +34,6 @@ export default function Index({ title = '房屋账单' }) {
|
|||||||
Apis.Bill.HouseBills.SummaryBillList,
|
Apis.Bill.HouseBills.SummaryBillList,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
// toolBarRender={(action) => [
|
|
||||||
// <MyImportModal
|
|
||||||
// key="ImportHouse"
|
|
||||||
// title="批量导入"
|
|
||||||
// type="danger"
|
|
||||||
// size="middle"
|
|
||||||
// templateApi={Apis.Bill.HouseBills.DownloadTemplate}
|
|
||||||
// importApi={Apis.Bill.HouseBills.Import}
|
|
||||||
// reload={action?.reload}
|
|
||||||
// />,
|
|
||||||
// <BillCreate key="Create" reload={action?.reload} title={title} />,
|
|
||||||
// ]}
|
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: '房屋ID',
|
title: '房屋ID',
|
||||||
@ -81,7 +71,12 @@ export default function Index({ title = '房屋账单' }) {
|
|||||||
MyColumns.Option({
|
MyColumns.Option({
|
||||||
render: (_, item: any, index, action) => (
|
render: (_, item: any, index, action) => (
|
||||||
<Space key={index}>
|
<Space key={index}>
|
||||||
<SummaryShow item={item} title="查看" reload={action?.reload} />
|
<MyButtons.View
|
||||||
|
title="查看"
|
||||||
|
onClick={() => {
|
||||||
|
navigate(`/bills/summary/show/${item.asset_houses_id}`);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -1,100 +0,0 @@
|
|||||||
import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common';
|
|
||||||
import { MyModal } from '@/components/MyModal';
|
|
||||||
import { Apis } from '@/gen/Apis';
|
|
||||||
import { HouseBillsTypeEnum } from '@/gen/Enums';
|
|
||||||
import { ProTable } from '@ant-design/pro-components';
|
|
||||||
import { Space } from 'antd';
|
|
||||||
import BillUpdate from '../../list/modals/BillUpdate';
|
|
||||||
|
|
||||||
export default function SummaryShow(props: MyBetaModalFormProps) {
|
|
||||||
return (
|
|
||||||
<MyModal
|
|
||||||
title={props.title || '查看'}
|
|
||||||
type={props.item?.type || 'primary'}
|
|
||||||
width="1000px"
|
|
||||||
node={
|
|
||||||
<ProTable
|
|
||||||
{...MyProTableProps.props}
|
|
||||||
request={async (params, sort) =>
|
|
||||||
MyProTableProps.request(
|
|
||||||
{ ...params, asset_houses_id: props?.item?.asset_houses_id },
|
|
||||||
sort,
|
|
||||||
Apis.Bill.HouseBills.List,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
columns={[
|
|
||||||
MyColumns.ID(),
|
|
||||||
MyColumns.EnumTag({
|
|
||||||
title: '类型',
|
|
||||||
dataIndex: 'type',
|
|
||||||
valueEnum: HouseBillsTypeEnum,
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
title: '房屋',
|
|
||||||
dataIndex: ['asset_house', 'full_name'],
|
|
||||||
search: {
|
|
||||||
transform: (value) => {
|
|
||||||
return { full_name: value };
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '账单月份',
|
|
||||||
render: (_, record) => {
|
|
||||||
return `${record.year}-${String(record.month).padStart(
|
|
||||||
2,
|
|
||||||
'0',
|
|
||||||
)}`;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '账单金额',
|
|
||||||
dataIndex: 'amount',
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '优惠金额',
|
|
||||||
dataIndex: 'discount_amount',
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '滞纳金',
|
|
||||||
dataIndex: 'late_fee',
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
title: '计费开始日期',
|
|
||||||
dataIndex: 'start_date',
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '计费结束日期',
|
|
||||||
dataIndex: 'end_date',
|
|
||||||
search: false,
|
|
||||||
},
|
|
||||||
MyColumns.CreatedAt(),
|
|
||||||
MyColumns.Option({
|
|
||||||
render: (_, item: any, index, action) => (
|
|
||||||
<Space key={index}>
|
|
||||||
<BillUpdate
|
|
||||||
item={item}
|
|
||||||
reload={action?.reload}
|
|
||||||
title="编辑"
|
|
||||||
/>
|
|
||||||
{/* <MyButtons.Delete
|
|
||||||
onConfirm={() =>
|
|
||||||
Apis.Bill.HouseBills.Delete({ id: item.id }).then(() =>
|
|
||||||
action?.reload(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
/> */}
|
|
||||||
</Space>
|
|
||||||
),
|
|
||||||
}),
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
83
src/pages/bills/summary/show/$id.tsx
Normal file
83
src/pages/bills/summary/show/$id.tsx
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import { MyPageContainer, usePageTabs } from '@/common';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { ProCard } from '@ant-design/pro-components';
|
||||||
|
import { useParams } from '@umijs/max';
|
||||||
|
import { Tabs } from 'antd';
|
||||||
|
import { useEffect, useState } from 'react';
|
||||||
|
import BillInfo from '../components/BillInfo';
|
||||||
|
import CancelledBill from '../table/CancelledBill';
|
||||||
|
import PaidBill from '../table/PaidBill';
|
||||||
|
import UnpaidBill from '../table/UnpaidBill';
|
||||||
|
|
||||||
|
export default function Show({ title = '账单详情' }) {
|
||||||
|
const { id } = useParams<{ id: string }>();
|
||||||
|
const [data, setShow] = useState<any>({});
|
||||||
|
|
||||||
|
// 注册标签页
|
||||||
|
const { addTab } = usePageTabs({
|
||||||
|
tabKey: `bill-detail-${id}`,
|
||||||
|
tabLabel: `${data?.asset_house?.name}账单` || title,
|
||||||
|
});
|
||||||
|
|
||||||
|
const loadShow = () => {
|
||||||
|
let paramsId: any = { asset_houses_id: id ?? 0 };
|
||||||
|
Apis.Bill.HouseBills.SummaryShow(paramsId).then((res) => {
|
||||||
|
setShow(res?.data);
|
||||||
|
// 更新标签页标题
|
||||||
|
if (res?.data?.asset_house?.name) {
|
||||||
|
addTab({
|
||||||
|
key: `bill-detail-${id}`,
|
||||||
|
label: `${data?.asset_house?.name}档案`,
|
||||||
|
path: `/bills/${id}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
loadShow();
|
||||||
|
}, [id]);
|
||||||
|
|
||||||
|
let items = [
|
||||||
|
{
|
||||||
|
label: '欠费账单',
|
||||||
|
key: '1',
|
||||||
|
closable: false,
|
||||||
|
children: (
|
||||||
|
<UnpaidBill item={{ ...data, asset_houses_id: data.asset_houses_id }} />
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '已付账单',
|
||||||
|
key: '2',
|
||||||
|
closable: false,
|
||||||
|
children: (
|
||||||
|
<PaidBill item={{ ...data, asset_houses_id: data.asset_houses_id }} />
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '作废账单',
|
||||||
|
key: '3',
|
||||||
|
closable: false,
|
||||||
|
children: (
|
||||||
|
<CancelledBill
|
||||||
|
item={{ ...data, asset_houses_id: data.asset_houses_id }}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<MyPageContainer
|
||||||
|
title={title}
|
||||||
|
enableTabs
|
||||||
|
tabKey={`bill-detail-${id}`}
|
||||||
|
tabLabel={data?.asset_house?.name || title}
|
||||||
|
>
|
||||||
|
<BillInfo item={data} reload={loadShow} />
|
||||||
|
<ProCard style={{ marginTop: 16 }}>
|
||||||
|
<Tabs type="card" items={items} defaultActiveKey="1" size="small" />
|
||||||
|
</ProCard>
|
||||||
|
</MyPageContainer>
|
||||||
|
);
|
||||||
|
}
|
||||||
76
src/pages/bills/summary/table/CancelledBill.tsx
Normal file
76
src/pages/bills/summary/table/CancelledBill.tsx
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import { MyColumns, MyProTableProps } from '@/common';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||||
|
import BillUpdate from '@/pages/bills/list/modals/BillUpdate';
|
||||||
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
import { useEffect, useRef } from 'react';
|
||||||
|
|
||||||
|
export default function Index({ ...rest }) {
|
||||||
|
const actionLooks = useRef<any>();
|
||||||
|
useEffect(() => {
|
||||||
|
actionLooks?.current.reloadAndRest();
|
||||||
|
}, [rest.loadmore]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ProTable<Record<any, any>>
|
||||||
|
{...MyProTableProps.props}
|
||||||
|
actionRef={actionLooks}
|
||||||
|
request={async (params, sort) =>
|
||||||
|
MyProTableProps.request(
|
||||||
|
{
|
||||||
|
...params,
|
||||||
|
asset_houses_id: rest.item?.asset_houses_id,
|
||||||
|
bill_status: [HouseBillsBillStatusEnum.Cancelled.value],
|
||||||
|
},
|
||||||
|
sort,
|
||||||
|
Apis.Bill.HouseBills.List,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
search={false}
|
||||||
|
columns={[
|
||||||
|
MyColumns.ID(),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '状态',
|
||||||
|
dataIndex: 'bill_status',
|
||||||
|
valueEnum: HouseBillsBillStatusEnum,
|
||||||
|
}),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
valueEnum: HouseBillsTypeEnum,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
title: '账单月份',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.year}-${String(record.month).padStart(2, '0')}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '应付金额',
|
||||||
|
dataIndex: 'total_payable_amount',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费开始日期',
|
||||||
|
dataIndex: 'start_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费结束日期',
|
||||||
|
dataIndex: 'end_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
MyColumns.Option({
|
||||||
|
render: (_, item: any, index, action) => (
|
||||||
|
<Space key={index}>
|
||||||
|
<BillUpdate item={item} reload={action?.reload} title="编辑" />
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
79
src/pages/bills/summary/table/PaidBill.tsx
Normal file
79
src/pages/bills/summary/table/PaidBill.tsx
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
import { MyColumns, MyProTableProps } from '@/common';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||||
|
import BillUpdate from '@/pages/bills/list/modals/BillUpdate';
|
||||||
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
import { useEffect, useRef } from 'react';
|
||||||
|
import BillShow from './modals/BillShow';
|
||||||
|
|
||||||
|
export default function Index({ ...rest }) {
|
||||||
|
const actionLooks = useRef<any>();
|
||||||
|
useEffect(() => {
|
||||||
|
actionLooks?.current.reloadAndRest();
|
||||||
|
}, [rest.loadmore]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ProTable<Record<any, any>>
|
||||||
|
{...MyProTableProps.props}
|
||||||
|
actionRef={actionLooks}
|
||||||
|
request={async (params, sort) =>
|
||||||
|
MyProTableProps.request(
|
||||||
|
{
|
||||||
|
...params,
|
||||||
|
asset_houses_id: rest.item?.asset_houses_id,
|
||||||
|
bill_status: [HouseBillsBillStatusEnum.Paid.value],
|
||||||
|
},
|
||||||
|
sort,
|
||||||
|
Apis.Bill.HouseBills.List,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
search={false}
|
||||||
|
columns={[
|
||||||
|
MyColumns.ID(),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '状态',
|
||||||
|
dataIndex: 'bill_status',
|
||||||
|
valueEnum: HouseBillsBillStatusEnum,
|
||||||
|
}),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
valueEnum: HouseBillsTypeEnum,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
title: '账单月份',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.year}-${String(record.month).padStart(2, '0')}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '应付金额',
|
||||||
|
dataIndex: 'total_payable_amount',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费开始日期',
|
||||||
|
dataIndex: 'start_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费结束日期',
|
||||||
|
dataIndex: 'end_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
MyColumns.Option({
|
||||||
|
render: (_, item: any, index, action) => (
|
||||||
|
<Space key={index}>
|
||||||
|
<BillUpdate item={item} reload={action?.reload} title="编辑" />
|
||||||
|
<BillShow item={item} title="查看" reload={action?.reload} />
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
80
src/pages/bills/summary/table/UnpaidBill.tsx
Normal file
80
src/pages/bills/summary/table/UnpaidBill.tsx
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import { MyColumns, MyProTableProps } from '@/common';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||||
|
import BillUpdate from '@/pages/bills/list/modals/BillUpdate';
|
||||||
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
import { useEffect, useRef } from 'react';
|
||||||
|
|
||||||
|
export default function Index({ ...rest }) {
|
||||||
|
const actionLooks = useRef<any>();
|
||||||
|
useEffect(() => {
|
||||||
|
actionLooks?.current.reloadAndRest();
|
||||||
|
}, [rest.loadmore]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ProTable<Record<any, any>>
|
||||||
|
{...MyProTableProps.props}
|
||||||
|
actionRef={actionLooks}
|
||||||
|
request={async (params, sort) =>
|
||||||
|
MyProTableProps.request(
|
||||||
|
{
|
||||||
|
...params,
|
||||||
|
asset_houses_id: rest.item?.asset_houses_id,
|
||||||
|
bill_status: [
|
||||||
|
HouseBillsBillStatusEnum.PendingPayment.value,
|
||||||
|
HouseBillsBillStatusEnum.PartiallyPaid.value,
|
||||||
|
HouseBillsBillStatusEnum.Overdue.value,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
sort,
|
||||||
|
Apis.Bill.HouseBills.List,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
search={false}
|
||||||
|
columns={[
|
||||||
|
MyColumns.ID(),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '状态',
|
||||||
|
dataIndex: 'bill_status',
|
||||||
|
valueEnum: HouseBillsBillStatusEnum,
|
||||||
|
}),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
valueEnum: HouseBillsTypeEnum,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
title: '账单月份',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.year}-${String(record.month).padStart(2, '0')}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '应付金额',
|
||||||
|
dataIndex: 'total_payable_amount',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费开始日期',
|
||||||
|
dataIndex: 'start_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费结束日期',
|
||||||
|
dataIndex: 'end_date',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
MyColumns.Option({
|
||||||
|
render: (_, item: any, index, action) => (
|
||||||
|
<Space key={index}>
|
||||||
|
<BillUpdate item={item} reload={action?.reload} title="编辑" />
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
71
src/pages/bills/summary/table/modals/BillShow.tsx
Normal file
71
src/pages/bills/summary/table/modals/BillShow.tsx
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import { MyBetaModalFormProps, renderTextHelper } from '@/common';
|
||||||
|
import { MyModal } from '@/components/MyModal';
|
||||||
|
import { HouseBillsBillStatusEnum, HouseBillsTypeEnum } from '@/gen/Enums';
|
||||||
|
import { ProCard, ProDescriptions } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
|
||||||
|
export default function SummaryShow(props: MyBetaModalFormProps) {
|
||||||
|
return (
|
||||||
|
<MyModal
|
||||||
|
title={props.title || '查看'}
|
||||||
|
type={props.item?.type || 'primary'}
|
||||||
|
width="600px"
|
||||||
|
node={
|
||||||
|
<Space direction="vertical" style={{ width: '100%' }}>
|
||||||
|
<ProCard>
|
||||||
|
<ProDescriptions column={1}>
|
||||||
|
<ProDescriptions.Item label="房屋名称" span={3}>
|
||||||
|
{props?.item?.asset_house?.full_name || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="账单金额">
|
||||||
|
<Space>
|
||||||
|
{props?.item?.amount || '-'}
|
||||||
|
<renderTextHelper.Tag
|
||||||
|
Enums={HouseBillsTypeEnum}
|
||||||
|
value={props?.item?.type}
|
||||||
|
key="type"
|
||||||
|
/>
|
||||||
|
</Space>
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="优惠金额">
|
||||||
|
{props?.item?.discount_amount || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="滞纳金">
|
||||||
|
{props?.item?.late_fee || '-'}
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="应付金额">
|
||||||
|
<Space>
|
||||||
|
{props?.item?.total_payable_amount || '-'}{' '}
|
||||||
|
<renderTextHelper.Tag
|
||||||
|
Enums={HouseBillsBillStatusEnum}
|
||||||
|
value={props?.item?.bill_status}
|
||||||
|
key="bill_status"
|
||||||
|
/>
|
||||||
|
</Space>
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="账单月份">
|
||||||
|
<Space>
|
||||||
|
<span>
|
||||||
|
{props?.item?.year || '-'}-
|
||||||
|
{String(props?.item?.month).padStart(2, '0')}月
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
( {props?.item?.start_date || '-'} 至{' '}
|
||||||
|
{props?.item?.end_date || '-'})
|
||||||
|
</span>
|
||||||
|
</Space>
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
<ProDescriptions.Item label="收款账号">
|
||||||
|
<Space>
|
||||||
|
{props?.item?.receipt_account?.company_name || '-'}
|
||||||
|
{props?.item?.receipt_account?.company_bank || '-'}
|
||||||
|
{props?.item?.receipt_account?.company_account || '-'}
|
||||||
|
</Space>
|
||||||
|
</ProDescriptions.Item>
|
||||||
|
</ProDescriptions>
|
||||||
|
</ProCard>
|
||||||
|
</Space>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -140,7 +140,7 @@ export default function Index({ title = '收费标准' }) {
|
|||||||
<MyButtons.View
|
<MyButtons.View
|
||||||
title="查看"
|
title="查看"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate(`/house_charge_standard/show/${item.id}`);
|
navigate(`/charge/standard/show/${item.id}`);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ChargeStandardUpdate
|
<ChargeStandardUpdate
|
||||||
|
|||||||
@ -57,14 +57,11 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
},
|
},
|
||||||
MyFormItems.UploadImages({
|
MyFormItems.UploadImages({
|
||||||
key: 'logo',
|
key: 'logo',
|
||||||
title: '品牌logo【尺寸:1024*1024】',
|
title: '品牌logo【 尺寸比例 1:1 】',
|
||||||
tooltip: '只能上传1张图片',
|
tooltip: '只能上传1张图片',
|
||||||
max: 1,
|
max: 1,
|
||||||
colProps: { span: 24 },
|
colProps: { span: 24 },
|
||||||
formItemProps: { required: false },
|
formItemProps: { required: false },
|
||||||
fieldProps: {
|
|
||||||
placeholder: '',
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -69,7 +69,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
title: '选择组织',
|
title: '选择组织',
|
||||||
key: 'organizations_id',
|
key: 'organizations_id',
|
||||||
params: {
|
params: {
|
||||||
companies_id: companies_id || props?.item?.companies_id || 0,
|
companies_id: companies_id || props?.item?.id || 0,
|
||||||
},
|
},
|
||||||
colProps: { span: 24 },
|
colProps: { span: 24 },
|
||||||
formItemProps: { ...rulesHelper.text },
|
formItemProps: { ...rulesHelper.text },
|
||||||
@ -109,7 +109,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
Selects?.Positions({
|
Selects?.Positions({
|
||||||
title: '岗位',
|
title: '岗位',
|
||||||
params: {
|
params: {
|
||||||
companies_id: companies_id || props?.item?.companies_id || 0,
|
companies_id: companies_id || props?.item?.id || 0,
|
||||||
},
|
},
|
||||||
key: 'positions_id',
|
key: 'positions_id',
|
||||||
formItemProps: { ...rulesHelper.text },
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import { Apis } from '@/gen/Apis';
|
|||||||
import { OrganizationsTypeEnum } from '@/gen/Enums';
|
import { OrganizationsTypeEnum } from '@/gen/Enums';
|
||||||
import { ProTable } from '@ant-design/pro-components';
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
import { Space } from 'antd';
|
import { Space } from 'antd';
|
||||||
|
import NextOrganizationChange from '../../organizations/modals/NextOrganizationChange';
|
||||||
import OrganizationChange from '../../organizations/modals/OrganizationChange';
|
import OrganizationChange from '../../organizations/modals/OrganizationChange';
|
||||||
import OrganizationCreate from '../../organizations/modals/OrganizationCreate';
|
import OrganizationCreate from '../../organizations/modals/OrganizationCreate';
|
||||||
import OrganizationUpdate from '../../organizations/modals/OrganizationUpdate';
|
import OrganizationUpdate from '../../organizations/modals/OrganizationUpdate';
|
||||||
@ -60,15 +61,22 @@ export default function Organizations(props: MyBetaModalFormProps) {
|
|||||||
render: (_, item: any, index, action) => (
|
render: (_, item: any, index, action) => (
|
||||||
<Space key={index}>
|
<Space key={index}>
|
||||||
<OrganizationUpdate
|
<OrganizationUpdate
|
||||||
item={{ ...item, companies_id: props?.item?.id }}
|
item={item}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="组织"
|
title="组织"
|
||||||
/>
|
/>
|
||||||
|
{item?.type !== OrganizationsTypeEnum.Group.value && (
|
||||||
<OrganizationChange
|
<OrganizationChange
|
||||||
item={{ ...item, companies_id: props?.item?.id }}
|
item={{ ...item, companies_id: props?.item?.companies_id }}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="组织"
|
title="组织"
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
|
<NextOrganizationChange
|
||||||
|
item={{ ...item, companies_id: item?.companies_id }}
|
||||||
|
reload={action?.reload}
|
||||||
|
title="下级组织"
|
||||||
|
/>
|
||||||
<MyButtons.Delete
|
<MyButtons.Delete
|
||||||
onConfirm={() =>
|
onConfirm={() =>
|
||||||
Apis.Company.Organizations.Delete({ id: item.id }).then(
|
Apis.Company.Organizations.Delete({ id: item.id }).then(
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { OrganizationsTypeEnum } from '@/gen/Enums';
|
|||||||
import { ProTable } from '@ant-design/pro-components';
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
import { useNavigate } from '@umijs/max';
|
import { useNavigate } from '@umijs/max';
|
||||||
import { Space } from 'antd';
|
import { Space } from 'antd';
|
||||||
|
import NextOrganizationChange from './modals/NextOrganizationChange';
|
||||||
import OrganizationChange from './modals/OrganizationChange';
|
import OrganizationChange from './modals/OrganizationChange';
|
||||||
import OrganizationCreate from './modals/OrganizationCreate';
|
import OrganizationCreate from './modals/OrganizationCreate';
|
||||||
import OrganizationUpdate from './modals/OrganizationUpdate';
|
import OrganizationUpdate from './modals/OrganizationUpdate';
|
||||||
@ -77,15 +78,24 @@ export default function Index({ title = '组织列表' }) {
|
|||||||
render: (_, item: any, index, action) => (
|
render: (_, item: any, index, action) => (
|
||||||
<Space key={index}>
|
<Space key={index}>
|
||||||
<OrganizationUpdate
|
<OrganizationUpdate
|
||||||
item={{ ...item, companies_id: item?.id }}
|
item={item}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="组织"
|
title="组织"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{item?.type !== OrganizationsTypeEnum.Group.value && (
|
||||||
<OrganizationChange
|
<OrganizationChange
|
||||||
item={{ ...item, companies_id: item?.id }}
|
item={{ ...item, companies_id: item?.companies_id }}
|
||||||
reload={action?.reload}
|
reload={action?.reload}
|
||||||
title="组织"
|
title="组织"
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<NextOrganizationChange
|
||||||
|
item={{ ...item, companies_id: item?.companies_id }}
|
||||||
|
reload={action?.reload}
|
||||||
|
title="下级组织"
|
||||||
|
/>
|
||||||
<MyButtons.Delete
|
<MyButtons.Delete
|
||||||
onConfirm={() =>
|
onConfirm={() =>
|
||||||
Apis.Company.Organizations.Delete({ id: item.id }).then(
|
Apis.Company.Organizations.Delete({ id: item.id }).then(
|
||||||
|
|||||||
@ -0,0 +1,71 @@
|
|||||||
|
import {
|
||||||
|
MyBetaModalFormProps,
|
||||||
|
MyButtons,
|
||||||
|
MyFormItems,
|
||||||
|
MyModalFormProps,
|
||||||
|
rulesHelper,
|
||||||
|
} from '@/common';
|
||||||
|
import { Selects } from '@/components/Select';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { OrganizationsTypeEnum } from '@/gen/Enums';
|
||||||
|
import { BetaSchemaForm } from '@ant-design/pro-components';
|
||||||
|
import { Form, message } from 'antd';
|
||||||
|
|
||||||
|
export default function Create(props: MyBetaModalFormProps) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<BetaSchemaForm<ApiTypes.Company.Organizations.Store>
|
||||||
|
{...MyModalFormProps.props}
|
||||||
|
title={`添加${props.title}`}
|
||||||
|
wrapperCol={{ span: 24 }}
|
||||||
|
width="500px"
|
||||||
|
trigger={<MyButtons.Create title={`添加${props.title}`} size="small" />}
|
||||||
|
key={new Date().getTime()}
|
||||||
|
form={form}
|
||||||
|
onOpenChange={(open: any) => {
|
||||||
|
if (open) {
|
||||||
|
form.resetFields(); // 清空表单数据
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
onFinish={async (values: any) =>
|
||||||
|
Apis.Company.Organizations.Store({
|
||||||
|
...values,
|
||||||
|
companies_id: values?.companies_id || props?.item?.companies_id,
|
||||||
|
parent_id: props.item?.id,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
props.reload?.();
|
||||||
|
message.success(props.title + '成功');
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.catch(() => false)
|
||||||
|
}
|
||||||
|
columns={[
|
||||||
|
...(props?.item?.id
|
||||||
|
? []
|
||||||
|
: [
|
||||||
|
Selects?.Companies({
|
||||||
|
key: 'companies_id',
|
||||||
|
title: '公司',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
required: true,
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
MyFormItems.EnumRadio({
|
||||||
|
key: 'type',
|
||||||
|
title: '组织类型',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
valueEnum: OrganizationsTypeEnum,
|
||||||
|
required: true,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
key: 'name',
|
||||||
|
title: '组织名称',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -11,14 +11,12 @@ export default function Update(props: MyBetaModalFormProps) {
|
|||||||
{...MyModalFormProps.props}
|
{...MyModalFormProps.props}
|
||||||
title={`${props.title}调整`}
|
title={`${props.title}调整`}
|
||||||
form={form}
|
form={form}
|
||||||
trigger={
|
trigger={<MyButtons.Default title="调整" type="primary" size="small" />}
|
||||||
<MyButtons.Default title="组织调整" type="primary" size="small" />
|
|
||||||
}
|
|
||||||
wrapperCol={{ span: 24 }}
|
wrapperCol={{ span: 24 }}
|
||||||
width="500px"
|
width="500px"
|
||||||
onOpenChange={(open: any) => {
|
onOpenChange={(open: any) => {
|
||||||
if (open && props.item) {
|
if (open && props.item) {
|
||||||
form.setFieldsValue(props.item);
|
form.resetFields(); // 清空表单数据
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onFinish={async (values: any) =>
|
onFinish={async (values: any) =>
|
||||||
@ -40,7 +38,7 @@ export default function Update(props: MyBetaModalFormProps) {
|
|||||||
}
|
}
|
||||||
columns={[
|
columns={[
|
||||||
Selects?.OrganizationsTree({
|
Selects?.OrganizationsTree({
|
||||||
title: '请选择新的上级组织',
|
title: '请选择新的【上级组织】',
|
||||||
key: 'parent_id',
|
key: 'parent_id',
|
||||||
params: { companies_id: props?.item?.companies_id },
|
params: { companies_id: props?.item?.companies_id },
|
||||||
colProps: { span: 24 },
|
colProps: { span: 24 },
|
||||||
|
|||||||
@ -31,7 +31,7 @@ export default function Create(props: MyBetaModalFormProps) {
|
|||||||
onFinish={async (values: any) =>
|
onFinish={async (values: any) =>
|
||||||
Apis.Company.Organizations.Store({
|
Apis.Company.Organizations.Store({
|
||||||
...values,
|
...values,
|
||||||
companies_id: values?.companies_id || props?.item?.id,
|
companies_id: values?.companies_id || props?.item?.companies_id,
|
||||||
parent_id: values?.parent_id?.[values.parent_id.length - 1],
|
parent_id: values?.parent_id?.[values.parent_id.length - 1],
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@ -22,6 +22,8 @@ export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) {
|
|||||||
|
|
||||||
// 添加 tableRef 用于操作表格
|
// 添加 tableRef 用于操作表格
|
||||||
const tableRef = useRef<any>();
|
const tableRef = useRef<any>();
|
||||||
|
// 添加 modalRef 用于关闭窗口
|
||||||
|
const modalRef = useRef<any>();
|
||||||
|
|
||||||
const onShowContactPhone = () => {
|
const onShowContactPhone = () => {
|
||||||
if (!selectedHouseId) {
|
if (!selectedHouseId) {
|
||||||
@ -42,6 +44,8 @@ export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) {
|
|||||||
setSelectedRow(null);
|
setSelectedRow(null);
|
||||||
props.reload?.();
|
props.reload?.();
|
||||||
message.success('添加成功!');
|
message.success('添加成功!');
|
||||||
|
// 关闭窗口
|
||||||
|
modalRef.current?.close();
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error('添加失败:', error);
|
console.error('添加失败:', error);
|
||||||
@ -55,6 +59,7 @@ export default function ChargeStandardHasHouse(props: MyBetaModalFormProps) {
|
|||||||
title={props.title || '查看'}
|
title={props.title || '查看'}
|
||||||
type="primary"
|
type="primary"
|
||||||
width="920px"
|
width="920px"
|
||||||
|
myRef={modalRef}
|
||||||
node={
|
node={
|
||||||
<ProTable
|
<ProTable
|
||||||
actionRef={tableRef}
|
actionRef={tableRef}
|
||||||
|
|||||||
115
src/pages/mete/tasks/index.tsx
Normal file
115
src/pages/mete/tasks/index.tsx
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
import {
|
||||||
|
MyButtons,
|
||||||
|
MyColumns,
|
||||||
|
MyPageContainer,
|
||||||
|
MyProTableProps,
|
||||||
|
usePageTabs,
|
||||||
|
} from '@/common';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import {
|
||||||
|
HouseChargeTasksStatusEnum,
|
||||||
|
HouseChargeTasksTypeEnum,
|
||||||
|
} from '@/gen/Enums';
|
||||||
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
import { Space } from 'antd';
|
||||||
|
import TaskCreate from './modals/TaskCreate';
|
||||||
|
import TaskShow from './modals/TaskShow';
|
||||||
|
|
||||||
|
export default function Index({ title = '账单任务' }) {
|
||||||
|
// 注册当前页面为标签页
|
||||||
|
usePageTabs({
|
||||||
|
tabKey: 'house_charge_tasks',
|
||||||
|
tabLabel: title,
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<MyPageContainer
|
||||||
|
title={title}
|
||||||
|
enableTabs={true}
|
||||||
|
tabKey="house_charge_tasks"
|
||||||
|
tabLabel={title}
|
||||||
|
>
|
||||||
|
<ProTable
|
||||||
|
{...MyProTableProps.props}
|
||||||
|
request={async (params, sort) =>
|
||||||
|
MyProTableProps.request(
|
||||||
|
params,
|
||||||
|
sort,
|
||||||
|
Apis.HouseCharage.HouseChargeTasks.List,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
toolBarRender={(action) => [
|
||||||
|
<TaskCreate key="Create" reload={action?.reload} title="账单任务" />,
|
||||||
|
]}
|
||||||
|
columns={[
|
||||||
|
{
|
||||||
|
title: '机构',
|
||||||
|
dataIndex: ['company', 'name'],
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '任务ID',
|
||||||
|
dataIndex: 'id',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '创建类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
valueEnum: HouseChargeTasksTypeEnum,
|
||||||
|
}),
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '任务状态',
|
||||||
|
dataIndex: 'status',
|
||||||
|
valueEnum: HouseChargeTasksStatusEnum,
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
title: '收费标准',
|
||||||
|
dataIndex: ['house_charge_standard', 'name'],
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '账单月份',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.bill_year}-${String(record.bill_month).padStart(
|
||||||
|
2,
|
||||||
|
'0',
|
||||||
|
)}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费周期',
|
||||||
|
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.start_date}-${String(record.end_date).padStart(
|
||||||
|
2,
|
||||||
|
'0',
|
||||||
|
)}`;
|
||||||
|
},
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '账单数',
|
||||||
|
dataIndex: 'task_count',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
// MyColumns.UpdatedAt(),
|
||||||
|
MyColumns.CreatedAt(),
|
||||||
|
MyColumns.Option({
|
||||||
|
render: (_, item: any, index, action) => (
|
||||||
|
<Space key={index}>
|
||||||
|
<TaskShow item={item} title="查看" reload={action?.reload} />
|
||||||
|
<MyButtons.Delete
|
||||||
|
onConfirm={() =>
|
||||||
|
Apis.HouseCharage.HouseChargeTasks.Delete({
|
||||||
|
id: item.id,
|
||||||
|
}).then(() => action?.reload())
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</MyPageContainer>
|
||||||
|
);
|
||||||
|
}
|
||||||
122
src/pages/mete/tasks/modals/TaskCreate.tsx
Normal file
122
src/pages/mete/tasks/modals/TaskCreate.tsx
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
import {
|
||||||
|
MyBetaModalFormProps,
|
||||||
|
MyButtons,
|
||||||
|
MyModalFormProps,
|
||||||
|
rulesHelper,
|
||||||
|
} from '@/common';
|
||||||
|
import { Selects } from '@/components/Select';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { BetaSchemaForm } from '@ant-design/pro-components';
|
||||||
|
import { Form, message } from 'antd';
|
||||||
|
|
||||||
|
export default function Create(props: MyBetaModalFormProps) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
return (
|
||||||
|
<BetaSchemaForm<ApiTypes.HouseCharage.HouseChargeTasks.Store>
|
||||||
|
{...MyModalFormProps.props}
|
||||||
|
title={`创建${props.title}`}
|
||||||
|
width="480px"
|
||||||
|
layout="horizontal"
|
||||||
|
labelCol={{ span: 8 }}
|
||||||
|
wrapperCol={{ span: 16 }}
|
||||||
|
labelAlign="left"
|
||||||
|
trigger={<MyButtons.Create title={`创建${props.title}`} />}
|
||||||
|
key={new Date().getTime()}
|
||||||
|
form={form}
|
||||||
|
onOpenChange={(open: any) => {
|
||||||
|
if (open) {
|
||||||
|
form.resetFields(); // 清空表单数据
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
onFinish={async (values) =>
|
||||||
|
Apis.HouseCharage.HouseChargeTasks.Store(values)
|
||||||
|
.then(() => {
|
||||||
|
props.reload?.();
|
||||||
|
message.success(props.title + '账单任务创建成功');
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.catch(() => false)
|
||||||
|
}
|
||||||
|
columns={[
|
||||||
|
Selects?.AssetProjects({
|
||||||
|
title: '选择项目',
|
||||||
|
key: 'asset_projects_id',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
fieldProps: {
|
||||||
|
onChange: (val: any) => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
house_charge_standards_id: undefined,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
valueType: 'dependency',
|
||||||
|
name: ['asset_projects_id'],
|
||||||
|
columns: ({ asset_projects_id }) => {
|
||||||
|
return [
|
||||||
|
Selects?.ChargeStandard({
|
||||||
|
title: '选择收费标准',
|
||||||
|
key: 'house_charge_standards_id',
|
||||||
|
params: {
|
||||||
|
asset_projects_id: asset_projects_id,
|
||||||
|
},
|
||||||
|
colProps: { span: 24 },
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
fieldProps: {
|
||||||
|
showSearch: true,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
];
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'month',
|
||||||
|
title: '选择生成月份',
|
||||||
|
valueType: 'date',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
fieldProps: {
|
||||||
|
picker: 'month',
|
||||||
|
format: 'YYYY-MM',
|
||||||
|
valueFormat: 'YYYY-MM',
|
||||||
|
style: {
|
||||||
|
width: '100%',
|
||||||
|
},
|
||||||
|
onChange: (e: any, dateString: string) => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
start_date: rulesHelper.getMonthStartDate(dateString),
|
||||||
|
end_date: rulesHelper.getMonthEndDate(dateString),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'start_date',
|
||||||
|
title: '计费开始日期',
|
||||||
|
valueType: 'date',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
fieldProps: {
|
||||||
|
style: {
|
||||||
|
width: '100%',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'end_date',
|
||||||
|
title: '计费结束日期',
|
||||||
|
valueType: 'date',
|
||||||
|
colProps: { span: 24 },
|
||||||
|
fieldProps: {
|
||||||
|
style: {
|
||||||
|
width: '100%',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formItemProps: { ...rulesHelper.text },
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
69
src/pages/mete/tasks/modals/TaskShow.tsx
Normal file
69
src/pages/mete/tasks/modals/TaskShow.tsx
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import { MyBetaModalFormProps, MyColumns, MyProTableProps } from '@/common';
|
||||||
|
import { MyModal } from '@/components/MyModal';
|
||||||
|
import { Apis } from '@/gen/Apis';
|
||||||
|
import { HouseChargeTaskDetailsStatusEnum } from '@/gen/Enums';
|
||||||
|
import { ProTable } from '@ant-design/pro-components';
|
||||||
|
|
||||||
|
export default function AssetInfo(props: MyBetaModalFormProps) {
|
||||||
|
return (
|
||||||
|
<MyModal
|
||||||
|
title={props.title || '查看'}
|
||||||
|
type={props.item?.type || 'primary'}
|
||||||
|
width="1000px"
|
||||||
|
node={
|
||||||
|
<ProTable
|
||||||
|
{...MyProTableProps.props}
|
||||||
|
request={async (params, sort) =>
|
||||||
|
MyProTableProps.request(
|
||||||
|
{ ...params, house_charge_tasks_id: props?.item?.id },
|
||||||
|
sort,
|
||||||
|
Apis.HouseCharage.HouseChargeTaskDetails.List,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
columns={[
|
||||||
|
MyColumns.ID(),
|
||||||
|
{
|
||||||
|
title: '对象',
|
||||||
|
dataIndex: 'full_name',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
MyColumns.EnumTag({
|
||||||
|
title: '状态',
|
||||||
|
dataIndex: 'status',
|
||||||
|
valueEnum: HouseChargeTaskDetailsStatusEnum,
|
||||||
|
}),
|
||||||
|
|
||||||
|
{
|
||||||
|
title: '收费标准',
|
||||||
|
dataIndex: ['house_charge_task', 'house_charge_standard', 'name'],
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '账单月份',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.year}-${String(record.month).padStart(
|
||||||
|
2,
|
||||||
|
'0',
|
||||||
|
)}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '计费周期',
|
||||||
|
render: (_, record) => {
|
||||||
|
return `${record.house_charge_task.start_date} 至 ${String(
|
||||||
|
record.house_charge_task.end_date,
|
||||||
|
).padStart(2, '0')}`;
|
||||||
|
},
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '完成时间',
|
||||||
|
dataIndex: 'processed_time',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user