/* 故障报修
* @Author: Li Hanlin
* @Date: 2022-12-02 11:41:03
* @Last Modified by: Li Hanlin
* @Last Modified time: 2023-02-10 17:58:21
*/
import * as React from 'react';
import { useState, useMemo, useRef } from 'react';
import DrawerPro from '@/components/DrawerPro';
import AutoTable from '@/components/AutoTable';
import PremButton from '@/components/PremButton';
import getcolumns from './columns';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
import Addform from '@/components/Addform';
import Detail from '@/components/RepaireDetail/Detail';
import dayjs from 'dayjs';
function Contract(props) {
let actionRef = useRef(),
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
}),
[activeTabKey, setactiveTabKey] = useState('1'),
[amount, camount] = useState(0);
const { run, loading } = useRequest(doFetch, {
manual: true,
onSuccess: (res, params) => {
if (res?.code == '0000') {
actionRef?.current?.reload();
setdrawer((s) => ({
...s,
open: false,
}));
}
},
});
const edit = (text, row, _, action) => {
return (
{
setdrawer((s) => ({
...s,
open: true,
item: row,
title: '编辑',
val: 'edit',
}));
},
}}
>
编辑
);
};
const remove = (text, row, _, action) => {
if (row?.status == 1) {
return (
{
run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } });
},
}}
btn={{
size: 'small',
type: 'danger',
}}
>
删除
);
} else {
return <>>;
}
};
const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns;
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
if (activeTabKey == 1) {
return defcolumn.concat({
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => [],
});
} else {
return defcolumn;
}
}, [activeTabKey]);
const pathconfig = useMemo(() => {
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defpath;
}, [activeTabKey]);
const calculateContractAmount = (list = [], month = 0) => {
const sum = list?.reduce((prev, next) => {
return (prev * 100 + next * 100) / 100;
}, 0);
camount(month == 0 || month ? (sum * 100) * month / 100 : 0);
};
const changeList = (list = []) => {
list.forEach(it => {
if (it.unitPrice && it.zxPrice) {
it.rebatePrice = ((it.unitPrice ?? 0) * 100 - (it.zxPrice ?? 0) * 100) / 100;
} else {
it.rebatePrice = ''
}
});
return list;
};
return (
租赁合同}
columns={columns}
path={pathconfig?.list}
actionRef={actionRef}
pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={false}
addconfig={{
// access: 'sysDepartment_save',
name: '新增',
btn: {
disabled: false,
type: 'primary',
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: {
registrationDate: dayjs().format('YYYY-MM-DD'),
contractEquipmentList: [
{
equipmentId: '',
unitPrice: '',
zxPrice: '',
rebatePrice: '',
deposit: '',
remark: ''
}
]
},
title: '新增',
val: 'add'
}));
},
},
}}
tabList={getcolumns()}
activeTabKey={activeTabKey}
onTabChange={(key) => {
setactiveTabKey(key);
}}
/>
{
setdrawer((s) => ({
...s,
open: false,
}));
}}
{...drawer}
onFinish={(vals) => {
console.log(vals);
// if (drawer?.val == 'add') {
// run({ url: pathconfig?.add || '/add', params: { ...vals } });
// } else if (drawer?.val == 'edit') {
// run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } });
// }
}}
onValuesChange={(changedValues, allValues) => {
for (let i in changedValues) {
if (i == 'contractEquipmentList' || i == 'tenancy') {
calculateContractAmount(allValues['contractEquipmentList']?.map(it => it.unitPrice ?? 0), allValues['tenancy']);
}
if (i == 'contractEquipmentList') {
let newList = changeList(allValues['contractEquipmentList']);
formRef?.current?.setFieldsValue({ ['contractEquipmentList']: newList });
setdrawer((s) => {
return {
...s,
item: { ...s.item, contractEquipmentList: newList }
}
})
}
}
}}
submitter={{
render: (props, doms) => {
return [
合同金额(单位:元):
{amount}
,
{
props.form?.resetFields()
},
style: { marginRight: 8 }
}}
>
重置
,
{
props.form?.submit?.()
},
}}
>
提交
,
];
},
}}
>
{/* {selectType(drawer?.val)} */}
);
}
export default Contract;