Commit 7effb3e1 authored by alwayOnlie's avatar alwayOnlie

修改路由

parent 6f4be60b
......@@ -42,6 +42,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
onClick
} = props;
const [flag, setFlag] = useState<boolean>(false);
console.log(record)
const [product, setProduct] = useState<any>({});
const [attribute, setAttribute] = useState<any>([]);
const handleAnchorClick = (e) => {
......@@ -63,11 +64,13 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
setProduct(params);
GetCommodityAttribute(params.id);
setFlag(false);
}
/** 关闭 */
const handleClose = () => {
onClose()
setProduct({})
}
/** 确定 */
const handleConfirm = () => {
......@@ -75,6 +78,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
product,
attribute
})
setProduct({})
}
return (
<>
......@@ -94,10 +98,10 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
>
<Button onClick={handleClose} style={{ marginRight: 8 }}>
取消
</Button>
</Button>
<Button onClick={handleConfirm} type="primary">
确定
</Button>
</Button>
</div>
}
>
......@@ -148,7 +152,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
}}
>
基本信息
</span>
</span>
</>
}
/>
......@@ -183,7 +187,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
<div className={cx(style.box, style.boxBlue)}>
<div className={cx(style.title, style.tagBlue)}>
报价商品
<Text type='danger'>*</Text>
<Text type='danger'>*</Text>
</div>
<div className={style.content}>
{Object.keys(product).length > 0
......@@ -206,7 +210,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
<Button onClick={() => setFlag(true)} block type="dashed" style={{ margin: '16px 0px' }}>
<PlusSquareOutlined />
选择商品
</Button>
</Button>
</div>
</div>
</div>
......@@ -271,7 +275,7 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
}}
>
附件
</span>
</span>
</>
}
/>
......
......@@ -17,25 +17,16 @@ const { TabPane } = Tabs;
const Add: React.FC<{}> = (props: any) => {
const { location: { query: { sourceType, paymentId, type } } } = props;
console.log(sourceType)
console.log(type)
const currentBasic = useRef<any>({});
const detailData = useRef<any>({});
const [flag, setflag] = useState<any>(false);
const [id, setid] = useState('');
/* 判断是不是手工单 */
const getflag = (data) => {
setflag(data.flag)
setid(data.selectRow.id)
console.log(data)
}
// useEffect(() => {
// PublicApi.getContractApplyAmountGetDetail({ applyId: paymentId }).then((res) => {
// console.log(res)
// }).catch((err) => {
// });
// }, [])
const TabList = [
{
name: '基本信息', components:
......@@ -78,7 +69,7 @@ const Add: React.FC<{}> = (props: any) => {
return (
<PageHeaderWrapper
title={type ? '修改请款单' : '新建请款单'}
title="新建请款单"
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
extra={[
......
......@@ -87,7 +87,7 @@ const AddbillList: React.FC<{}> = () => {
// 状态, 1.待提交审核, 2.待审核(一级), 3.审核不通过(一级), 4.待审核(二级), 5.审核不通过(二级), 6.待提交财务付款, 7.待付款, 8.已付款, 9.已作废
// 删除:只有内部状态为待提交审核状态且从未提交审核的才可以删除,删除前需要提示,确认后才能删除
let node;
let edit = <span style={{ color: '#00B37A', marginRight: 20, cursor: 'pointer', }} onClick={() => history.push(`/memberCenter/contract/funds/addbill/Add?paymentId=${record.id}&type=edit`)}>修改</span>;
let edit = <span style={{ color: '#00B37A', marginRight: 20, cursor: 'pointer', }} onClick={() => history.push(`/memberCenter/contract/funds/editbill/edit?paymentId=${record.id}&type=edit`)}>修改</span>;
switch (record.status) {
case 1:
node = edit;
......
.tag {
padding: 10px 15px;
border: 1px solid #E4E6EB;
cursor: pointer;
}
.tative {
padding: 10px 15px;
background: #6B778C;
color: #fff;
cursor: pointer;
}
.point {
width: 10px;
height: 10ox;
background: '#41CC9E';
display: 'inline-block';
border-radius: '50%';
margin-right: 10px;
}
.tag{
padding: 10px 15px;
border: 1px solid #E4E6EB;
cursor:pointer;
}
.tative{
padding: 10px 15px;
background: #6B778C;
color: #fff;
cursor:pointer;
}
.point {
width: 10px;
height: 10ox;
background: '#41CC9E';
display: 'inline-block';
border-radius: '50%';
margin-right: 10px;
}
import React, { useRef, useState, useEffect } from 'react';
import { Button, Tabs, Table, Input, Form, Select, Drawer, DatePicker, } from 'antd'
import styles from './index.less'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import {
LinkOutlined,
} from '@ant-design/icons'
import Submit from '@/components/NiceForm/components/Submit'
import moment from 'moment';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
const { Search, TextArea } = Input
import { StandardTable } from 'god';
import { PublicApi } from '@/services/api';
const { Option } = Select;
import { Schema } from "./schema"
import style from '../../../constants/styles.less'
const AddInfo = (props: any) => {
const { currentRef, getcontractId, sourceType, paymentId } = props;
const refs = useRef({});
/* 显示弹出 */
const [attrValueForm] = Form.useForm();
const [visible, setvisible] = useState<boolean>(false);
const [rowSelection, RowCtl] = useRowSelectionTable({ customKey: 'id', type: 'radio' });
const [account, setaccount] = useState<string>('');
const [isFalg, setisFalg] = useState(false);
/* 初始值 */
const [basics, setBasics] = useState<any>({
id: 0, //请款单id(为0代表新增)
applyAbstract: '', //请款单摘要
contractId: '', //合同id
payeeName: '',//收款账户
bankAccount: '',//银行账号
bankDeposit: '',//开户行
payPlanId: '',// 付款计划id
payRatio: '',// 付款比例
applyAmount: '',//请款金额
expectPayTime: '',//预计付款时间(yyyy-MM-dd)
payWay: '',//付款方式,1.现结,2.账期,3.月结
payParam: '',// 付款参数(账期天数请款日)
moneyPayWay: '2',//支付方式:2.线下支付
moneyPayChannel: '5',//支付渠道:5.线下支付线上确认
remark: '',//备注
})
const [Info, setInfo] = useState<any>({
number: '',
time: '',
startTime: '',
status: '',
})
/* 付款阶段 */
const [payPlanList, setpayPlanList] = useState<any>([]);
/* 选中设置值 */
const [Index, setIndex] = useState<number>(1)
const columnsList: any = [
{
title: '单据编号/摘要',
dataIndex: 'contractNo',
align: 'center',
render: (text, record) =>
<div>
<p> {text}</p>
<p>{record.contractAbstract}</p>
</div>
},
{
title: '合同生效/失效时间',
dataIndex: 'startTime',
align: 'center',
sorter: {
compare: (a, b) => a.demandPublishTime - b.demandPublishTime,
multiple: 1,
},
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.endTime}</p>
</div>
},
{
title: '合同乙方',
dataIndex: 'partyBName',
align: 'center',
},
{
title: '合同剩余金额',
dataIndex: 'totalAmount',
align: 'center',
render: (text) =>
<div>
<p>{text}</p>
</div>
},
{
title: '对应单据/寻源类型',
dataIndex: 'sourceNo',
align: 'center',
render: (text, record) =>
<div>
<p>{text}</p>
<p>{record.sourceTypeName}</p>
</div>
},
]
const [applyAmount, setapplyAmount] = useState<string>('');
const [tag, setTag] = useState<any>([]);
/**
* 选中值
*/
const onSelectChange = (e, key) => {
const basic = basics;
basics[key] = e;
setBasics(basic);
}
/* 确认回显数据 */
const Confirm = () => {
let selectRow = RowCtl.selectRow[0];
getAmountOrder(selectRow)
setvisible(!visible);
}
/* 查询银行卡新 */
const getAmountOrder = (selectRow) => {
PublicApi.getContractManageGetContractInfoByApplyAmountOrder({ contractId: selectRow.id }).then(res => {
const basicsData = basics;
const info = Info;
if (res.code == 1000) {
if (res.data.payPlanList.length != 0) {
for (let i = 0; i < res.data.payPlanList.length; i++) {
if (res.data.payPlanList[i].id == paymentId) {
console.log(1232131);
const expectPayTime = new Date(res.data.payPlanList[i].expectPayTime).getTime();
basicsData.payPlanId = res.data.payPlanList[i].id;
basicsData.payRatio = res.data.payPlanList[i].payRatio;
basicsData.expectPayTime = moment(expectPayTime);
basicsData.payWay = res.data.payPlanList[i].payWay;
basicsData.payParam = res.data.payPlanList[i].payParam;
basicsData.applyAmount = res.data.payPlanList[i].payAmount;
setapplyAmount(res.data.payPlanList[i].payAmount)
setIndex(i + 1)
break;
} else {
const expectPayTime = new Date(res.data.payPlanList[0].expectPayTime).getTime();
basicsData.payPlanId = res.data.payPlanList[0].id;
basicsData.payRatio = res.data.payPlanList[0].payRatio;
basicsData.expectPayTime = moment(expectPayTime);
basicsData.payWay = res.data.payPlanList[0].payWay;
basicsData.payParam = res.data.payPlanList[0].payParam;
basicsData.applyAmount = res.data.payPlanList[0].payAmount;
setapplyAmount(res.data.payPlanList[0].payAmount)
}
}
}
basicsData.contractNo = selectRow.contractNo;
basicsData.contractId = selectRow.id;
info.startTime = selectRow.startTime;
basicsData.payeeName = res.data.corporateAccountConfig.name;
basicsData.bankAccount = res.data.corporateAccountConfig.bankAccount;
basicsData.bankDeposit = res.data.corporateAccountConfig.bankDeposit;
info.status = "同意签订合同";
setpayPlanList(res.data.payPlanList)
setInfo(info)
/* 设置tab点击数组
* payWay 1 账期 2 月结 3 现结
*/
const tagList: any = [];
res.data.payPlanList.map((item, index) => {
tagList.push({
name: item.payWay == 1 ? '账期' : item.payWay == 2 ? '月结' : '现结',
payParam: item.payParam,
Index: index + 1,
payWay: item.payWay,
id: item.id,
})
})
setTag(tagList)
getcontractId({ flag: sourceType == 1 || sourceType == 2 ? false : true, selectRow })
const auth = JSON.parse(localStorage.getItem('auth'));
setaccount(auth.account);
setBasics(basicsData)
console.log(basicsData, 'basicsData')
attrValueForm.setFieldsValue(basicsData);
}
})
}
useEffect(() => {
if (sourceType) {
let basics = JSON.parse(sessionStorage.getItem('basics'))
if (basics) {
getAmountOrder(basics);
setisFalg(true)
}
}
}, [])
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
attrValueForm.validateFields().then(res => {
res.expectPayTime = moment(res.expectPayTime).format(),
resolve({
state: true,
name: 'basic',
data: Object.assign(basics, res)
})
}).catch(error => {
if (error && error.errorFields) {
}
})
})
}
})
/***
* @function fetchData 请求表格数据
**/
const fetchData = (params: any) => {
params.startTime = params.startTime ? moment().format('YYYY-MM-DD') : '';
params.endTime = params.endTime ? moment().format('YYYY-MM-DD') : '';
return new Promise(resolve => {
PublicApi.getContractManagePageCompleteList({ ...params }).then(res => {
console.log(res)
resolve(res.data)
})
})
}
/* 切换请款金额 */
const onSelect = (e) => {
setBasicsKey(e)
}
/* 切换 给对应的赋值 */
const setBasicsKey = (id: string) => {
let key: any = {};
payPlanList.some((item: any, index: number) => {
item.Index = index + 1;
if (item.id == id) {
key = item
}
})
const basicsData = basics;
basicsData.applyAmount = key.payAmount;
basicsData.payWay = key.payWay;
basicsData.payPlanId = key.id;
basicsData.expectPayTime = moment(key.expectPayTime);
basicsData.payParam = key.payParam;
basicsData.payRatio = key.payRatio;
setBasics(basicsData)
setIndex(key.Index);
attrValueForm.setFieldsValue(basicsData);
}
return (
<div className={style.revise_info}>
<Form
form={attrValueForm}
name="edit_infomation"
layout="horizontal"
labelAlign="left"
colon={false}
autoComplete="off"
style={{
width: '100%',
display: 'flex',
justifyContent: 'space-between'
}}
>
<div style={{
flex: 1,
}}>
{/* <Form.Item label="请款单号" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{basics.applyAbstract}</span>
</Form.Item> */}
<Form.Item
label="请款单摘要"
labelAlign="left"
labelCol={{ span: 4 }}
wrapperCol={{ span: 18 }}
name="applyAbstract"
rules={[
{
required: true,
message: '请输入请款单摘要',
},
]}
>
<Input placeholder='请输入请款单摘要' />
</Form.Item>
<Form.Item
label="合同编号"
labelAlign="left"
labelCol={{ span: 4 }}
name="contractNo"
wrapperCol={{ span: 18 }}
>
{
isFalg ?
<Input placeholder='最长60个字符,30个汉字' disabled />
:
<Search placeholder="最长60个字符,30个汉字" readOnly enterButton={<div onClick={() => setvisible(!visible)} ><LinkOutlined /> 选择</div>} />
}
</Form.Item>
<Form.Item label="收款方" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{account}</span>
</Form.Item>
<Form.Item label="收款账号" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{basics.payeeName}</span>
</Form.Item>
<Form.Item label="银行卡号" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{basics.bankAccount}</span>
</Form.Item>
<Form.Item label="开户行" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{basics.bankDeposit}</span>
</Form.Item>
<Form.Item
label="合同付款阶段"
labelAlign="left"
name="payPlanId"
initialValue={basics.payPlanId}
labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<Select
onChange={(e) => onSelect(e)}
>
{
payPlanList.map(item => (
<Option value={item.id} key={item.id}>{item.payStage}</Option>
))
}
</Select>
</Form.Item>
<Form.Item label="合同付款比例"
labelAlign="left"
labelCol={{ span: 4 }}
name="payRatio"
wrapperCol={{ span: 18 }}
initialValue={basics.payRatio}
>
<Input addonAfter="%" />
</Form.Item>
<Form.Item
label="请款金额"
name="applyAmount"
labelAlign="left"
initialValue={applyAmount}
labelCol={{ span: 4 }}
wrapperCol={{ span: 18 }}
rules={[
{
required: true,
message: '请输入请款金额',
},
]}
>
<Input addonAfter="元" />
</Form.Item>
<Form.Item
label="预计付款时间"
labelAlign="left"
labelCol={{ span: 4 }}
wrapperCol={{ span: 18 }}
name="expectPayTime"
>
<DatePicker
style={{ width: '100%' }}
format="YYYY-MM-DD"
/>
</Form.Item>
{/* tag */}
{
tag.length != 0 &&
<>
<Form.Item label="付款方式" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
{
tag.map((item: any) => {
return (
<span className={item.Index == Index ? styles.tative : styles.tag} onClick={() => setBasicsKey(item.id)} key={item.Index}>{item.name}</span>
)
})
}
</Form.Item>
<Form.Item label=" " labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }} >
{/* * payWay 1 账期 2 月结 3 现结 */}
<Input addonAfter={Index === 2 ? '天' : Index === 3 ? '号' : null} value={tag[Index - 1].name === '现结' ? '' : tag[Index - 1].payParam} disabled={tag[Index - 1].name === '现结' ? true : false} />
</Form.Item>
</>
}
<Form.Item label="支付方式" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<div
style={{
display: 'flex',
justifyContent: 'space-between',
}}
>
<Select
onChange={(e) => onSelectChange(e, 'moneyPayWay')}
value={basics.moneyPayWay}
style={{
width: '290px',
// marginRight: 20,
}}
>
<Option value="2" key={2}>线下支付</Option>
</Select>
<Select
onChange={(e) => onSelectChange(e, 'moneyPayChannel')}
value={basics.moneyPayChannel}
style={{
width: '290px'
}}
>
<Option value="5" key={5}>线下支付线上确认</Option>
</Select>
</div>
</Form.Item>
</div>
<div style={{
flex: 1,
}}>
<Form.Item
label="请款备注"
labelAlign="left"
name="remark"
labelCol={{ span: 4 }}
wrapperCol={{ span: 18 }}
rules={[
{
required: true,
message: '请输入请款备注',
},
]}
>
<TextArea placeholder='最长160字符,80个汉字' maxLength={160} style={{ height: 72 }} />
</Form.Item>
{/* <Form.Item label="发票编号" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{Info.number}</span>
</Form.Item>
<Form.Item label="开票日期" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{Info.time}</span>
</Form.Item> */}
<Form.Item label="单据时间" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{Info.startTime}</span>
</Form.Item>
<Form.Item label="内部状态" labelAlign="left" labelCol={{ span: 4 }} wrapperCol={{ span: 18 }}>
<span>{Info.status}</span>
</Form.Item>
</div>
</Form>
{/* 选择弹出内容 */}
<Drawer
visible={visible}
onClose={() => setvisible(!visible)}
title="选择采购合同"
width={900}
footer={
<div
style={{
textAlign: 'right',
}}
>
<Button onClick={() => setvisible(!visible)} style={{ marginRight: 8 }}>
取消
</Button>
<Button type="primary" onClick={() => Confirm()} >
确定
</Button>
</div>
}
destroyOnClose
>
<StandardTable
tableProps={{
rowKey: 'id',
}}
rowKey="id"
columns={columnsList}
currentRef={refs}
rowSelection={rowSelection}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: Schema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'contractNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}}
/>
</Drawer>
</div>
)
}
export default AddInfo;
import { FORM_FILTER_PATH } from '@/formSchema/const';
export const Schema: any = {
type: 'object',
properties: {
contractNo: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入搜索合同编号',
align: 'start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
inline: true,
colStyle: {
marginRight: 20
}
},
properties: {
"contractAbstract": {
type: 'string',
"x-component-props": {
placeholder: '请款单摘要'
}
},
"[startTime,endTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['开始时间', '结束时间'],
format: 'YYYY-MM-DD HH:mm:ss',
// disabledDate: current => {
// console.log(current);
// return current && current < moment().startOf('day')
// }
},
},
"awardName": {
type: 'string',
"x-component-props": {
placeholder: '请输入收款方'
}
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
},
},
}
}
import React, { useState, useRef, useEffect } from 'react';
import { Button, Table, Input, Space, Drawer, Typography } from 'antd'
import styles from './index.less'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { StandardTable } from 'god';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { Schema } from "./schema"
import moment from 'moment';
import {
PlusOutlined
} from '@ant-design/icons'
import { PublicApi } from '@/services/api';
const { Text } = Typography;
const table = (props: any) => {
const { flag, id, currentRef, sourceType } = props;
const refs = useRef({});
/**
* @param visible 显示添加对应单据状态
* @param rowSelection 选中弹出单选对应一条值
* @param toorderAmount 已付款总金额
* @param applyAmount 请款总金额
* @param PlanList 付款计划
* @param tabcolumns 单据表格
*/
const [visible, setvisible] = useState<boolean>(false);
// const [rowSelection, RowCtl] = useRowSelectionTable({ customKey: 'orderId' });
const [toorderAmount, settoorderAmount] = useState<number>(0);
const [topayAmount, settopayAmount] = useState<number>(0);
const [tounPayApplyAmount, settounPayApplyAmount] = useState<number>(0);
const [payAmount, setpayAmount] = useState<number>(0)
const [applyAmount, setapplyAmount] = useState<number>(0)
const [PlanList, setPlanList] = useState<any>([]);
const tabcolumns: any = [
{
title: '单据编号/摘要', dataIndex: 'applyNo', align: 'center',
render: (text, record) =>
<div>
<div> {text}</div>
{/* <p>{record.applyAbstract}</p> */}
</div>
},
{
title: '订单类型', dataIndex: 'orderTypeName', align: 'center',
render: (text) =>
<div>
<div>{text}</div>
</div>
},
{
title: '单据状态', dataIndex: 'outerStatusName', align: 'center',
render: (text) =>
<div>
<div>{text}</div>
</div>
},
{
title: '单据时间', dataIndex: 'orderTime', align: 'center',
},
{
title: (
<Space direction='vertical'>
<Text>单据金额</Text>
<Text>合计: ¥{toorderAmount}</Text>
</Space>
),
dataIndex: 'orderAmount', align: 'center',
render: (text, record) =>
<div>
<div>{record.orderType == 2 ? `-${text}` : text}</div>
</div>
},
{
title: '含税/税率', dataIndex: 'taxRate', align: 'left',
render: (text, record) =>
<div>
<div>{record.isHasTax ? '是' : '否'}</div>
<div>%{text}</div>
</div>
},
{
dataIndex: 'payAmount', align: 'center',
title: (
<Space direction='vertical'>
<Text>已付款</Text>
<Text>合计: ¥{topayAmount}</Text>
</Space>
),
render: (text, record) =>
<div>
<div>{text ? text : 0}</div>
</div>
},
{
dataIndex: 'unPayApplyAmount', align: 'center',
title: (
<Space direction='vertical'>
<Text>已请款待付款</Text>
<Text>合计: ¥{tounPayApplyAmount}</Text>
</Space>
),
render: (text, record) =>
<div>
<div>{text ? text : 0}</div>
</div>
},
{
dataIndex: 'applyAmount', align: 'center',
title: (
<Space direction='vertical'>
<Text>请款金额</Text>
<Text>合计: ¥{applyAmount}</Text>
</Space>
),
render: (_, item, index) =>
<Input
addonBefore="¥"
style={{
width: 130,
}}
placeholder=""
onChange={(e) => onSelectChange(e, 'applyAmount', index)}
onBlur={() => Amount()}
/>
},
{
title: '操作',
dataIndex: '',
align: 'center',
render: (_, item, index) => <a onClick={() => Delete(item, index)}>删除</a>,
}
];
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows)
setSelectedRowKeys(selectedRowKeys)
console.log(selectedRowKeys, selectedRows, 'rowSelection')
}
};
const onSelectChange = (e, name, idx) => {
let item = [...PlanList];
console.log(PlanList)
switch (name) {
case 'applyAmount':
item[idx].applyAmount = e.target.value;
break;
}
console.log(item);
setPlanList(item)
}
/* 计算金额 */
const Amount = () => {
// bidCount
let tounPayApplyAmount = 0;
let toorderAmount = 0; // 单据金额
let topayAmount = 0;
let payAmount = 0; // 已付款
let applyAmount = 0;
PlanList.map(item => {
toorderAmount += item.orderAmount;
tounPayApplyAmount += item.unPayApplyAmount ? item.unPayApplyAmount : 0;
topayAmount += item.payAmount ? Number(item.payAmount) : 0;
payAmount += item.payAmount ? item.payAmount : 0;
applyAmount += item.applyAmount ? Number(item.applyAmount) : 0
})
settopayAmount(topayAmount)
setpayAmount(payAmount)
setapplyAmount(applyAmount)
settounPayApplyAmount(tounPayApplyAmount)
settoorderAmount(toorderAmount)
}
/* 删除 */
const Delete = (elm, idx) => {
const dataSource = [...PlanList];
let List = dataSource.filter((item, index) => index !== idx);
setPlanList(List)
};
const columnsList: any = [
{
title: '单据编号/摘要',
dataIndex: 'applyNo',
align: 'center',
render: (text, record) =>
<div>
<div> {text}</div>
<div>{record.applyAbstract}</div>
</div>
},
{
title: '单据类型',
dataIndex: 'orderTypeName',
align: 'center',
render: (text, record) =>
<div>
<div>{text}</div>
</div>
},
{
title: '单据时间',
dataIndex: 'orderTime',
align: 'center',
},
{
title: '单据状态',
dataIndex: 'outerStatusName',
align: 'center',
render: (text) =>
<div>
<div>{text}</div>
</div>
},
{
title: '单据金额',
dataIndex: 'orderAmount',
align: 'center',
render: (text, record) =>
<div>
<div>{text}</div>
</div>
},
{
title: '待请款',
dataIndex: 'toBePayAmount',
align: 'center',
render: (text, record) =>
<div>
<div>{text}</div>
</div>
},
]
/***
* @function fetchData 请求表格数据
**/
const fetchData = (params: any) => {
params.contractId = id;
return new Promise(resolve => {
PublicApi.getContractApplyAmountContractOrderPageList({ ...params }).then(res => {
if (res.code == 1000) {
if (res.data.data) {
res.data.data.findIndex((item, index) => {
item.orderTime = item.orderTime ? moment().format('YYYY-MM-DD') : '';
item.keyId = index + 1;
})
}
}
resolve(res.data)
})
})
}
const Confirm = () => {
setPlanList(selectRow)
setvisible(false)
Amount()
}
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
let data = [];
console.log(PlanList)
PlanList.map((item: any) => {
data.push(
{
id: 0,
applyAmount: item.applyAmount,
orderId: item.orderId,
orderNO: item.applyNo,
isHasTax: item.isHasTax,
taxRate: item.taxRate,
executeId: item.id ? item.id : '',
}
)
})
resolve(data)
})
}
})
useEffect(() => {
let PlanList = JSON.parse(sessionStorage.getItem('list'))
console.log(PlanList, sourceType)
if (sourceType == 2) {
PlanList.map((item) => {
item.applyNo = item.orderNO;
item.outerStatusName = item.orderStatusName;
// item.isHasTax = item.isHasTax == '是' ? 1 : 0;
})
setPlanList(PlanList)
}
}, [])
return (
<div className="table">
{
flag && <div style={{ padding: 15, }} onClick={() => setvisible(!visible)} >
<Button block type='dashed'><PlusOutlined />选择待请款单据</Button>
</div>
}
<Table
columns={tabcolumns}
dataSource={PlanList}
rowKey="keyId"
style={{
width: "100%"
}}
pagination={false}
/>
{/* 选择弹出内容 */}
<Drawer
visible={visible}
onClose={() => setvisible(!visible)}
title="选择采购合同"
width={900}
footer={
<div
style={{
textAlign: 'right',
}}
>
<Button onClick={() => setvisible(!visible)} style={{ marginRight: 8 }}>
取消
</Button>
<Button type="primary" onClick={() => Confirm()} >
确定
</Button>
</div>
}
destroyOnClose
>
<StandardTable
tableProps={{
rowKey: 'keyId',
}}
columns={columnsList}
currentRef={refs}
rowSelection={rowSelection}
fetchTableData={(params: any) => fetchData(params)}
formilyProps={{
ctx: {
inline: false,
schema: Schema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'contractNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}}
/>
</Drawer>
</div>
)
}
export default table;
import React, { useState, useRef, useEffect } from 'react'
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Tabs, Button } from 'antd';
import { createFormActions } from '@formily/antd';
import {
SaveOutlined,
} from '@ant-design/icons'
import AddInfo from './components/info'
import ReutrnEle from '@/components/ReturnEle';
import InfoTable from './components/table'
import { PublicApi } from '@/services/api';
const formActions = createFormActions();
const { TabPane } = Tabs;
const Editbill: React.FC<{}> = (props: any) => {
const { location: { query: { sourceType, paymentId, type } } } = props;
console.log(type)
const currentBasic = useRef<any>({});
const detailData = useRef<any>({});
const [flag, setflag] = useState<any>(false);
const [id, setid] = useState('');
/* 判断是不是手工单 */
const getflag = (data) => {
setflag(data.flag)
setid(data.selectRow.id)
}
const TabList = [
{
name: '基本信息', components:
<AddInfo
currentRef={currentBasic}
getcontractId={getflag}
sourceType={sourceType}
paymentId={paymentId}
type={type}
/>
},
{
name: '请款明细', components:
<InfoTable
flag={flag}
id={id}
currentRef={detailData}
sourceType={sourceType}
/>
},
]
const submit = async () => {
const basicsVO = await currentBasic.current.get();
const detailList = await Object.keys(detailData.current).length != 0 ? await detailData.current.get() : [];
basicsVO.data.sourceType = sourceType ? sourceType : 3;
let data = {
basics: basicsVO.data,
detailList: detailList,
}
PublicApi.postContractApplyAmountSave(data).then(res => {
console.log(res);
if (res.code === 1000) {
history.push('/memberCenter/contract/funds/addbill')
}
})
}
return (
<PageHeaderWrapper
title="修改请款单"
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
extra={[
<Button key="1" type="primary" icon={<SaveOutlined />} onClick={() => submit()} > 保存</Button>
]}
>
<Card>
<Tabs defaultActiveKey="0" type="card" size="small">
{
TabList.map((item, index) => (
<TabPane tab={item.name} key={index}>
{item.components}
</TabPane>
))
}
</Tabs>
</Card>
</PageHeaderWrapper>
)
}
export default Editbill
......@@ -77,7 +77,9 @@ const FormList = (props: any) => {
parmas.submitTenderId = Row.bidId;
fn = PublicApi.getPurchaseSubmitTenderMaterielGetSubmitTenderMaterielList
} else {
fn = PublicApi.getProductGoodsGetGoodsList
parmas.id = Row.viePriceId
fn = PublicApi.getPurchaseBiddingPrizeMaterielPage
}
console.log(sourceType)
......@@ -87,21 +89,22 @@ const FormList = (props: any) => {
if (res.code === 1000) {
let data = res.data.data.map(item => {
return {
code: sourceType == '1' ? item.number : sourceType == '2' ? item.inviteTenderMateriel.code : '', // 物料编号
name: sourceType == '1' ? item.name : sourceType == '2' ? item.inviteTenderMateriel.name : '', // 物料名称
type: sourceType == '1' ? item.model : sourceType == '2' ? item.inviteTenderMateriel.type : '', // 物料规格
customerCategory: {
code: sourceType == '1' ? item.number : sourceType == '2' ? item.inviteTenderMateriel.code : item.number, // 物料编号
name: sourceType == '1' ? item.name : sourceType == '2' ? item.inviteTenderMateriel.name : item.name, // 物料名称
type: sourceType == '1' ? item.model : sourceType == '2' ? item.inviteTenderMateriel.type : item.model, // 物料规格
customerCategory: { // 品类
name: sourceType == '1' ? item.category : sourceType == '2' ? item.inviteTenderMateriel.brandName : '',
id: sourceType == '1' ? item.goodsId : sourceType == '2' ? item.inviteTenderMateriel.categoryId[0] : ''
category: item.category ? item.category : '',
id: sourceType == '1' ? item.goodsId : sourceType == '2' ? item.inviteTenderMateriel.categoryId[0] : item.ids[0],
},
brand: { name: sourceType == '1' ? item.brand : sourceType == '2' ? item.inviteTenderMateriel.categoryName : '' },
unitName: sourceType == '1' ? item.unit : sourceType == '2' ? item.inviteTenderMateriel.unitName : '', //单位
purchaseCount: sourceType == '1' ? item.purchaseCount : sourceType == '2' ? item.inviteTenderMateriel.count : '', // 数量
isHasTax: sourceType == '1' ? item.isTax : sourceType == '2' ? item.isTax ? 1 : 0 : '',
taxRate: sourceType == '1' ? item.taxProbability : sourceType == '2' ? item.taxRate : '',
price: sourceType == '1' ? item.taxUnitPrice : sourceType == '2' ? item.price : '',
bidCount: sourceType == '1' ? item.awardTaxProbability * item.purchaseCount / 100 : sourceType == '2' ? item.awardTenderRatio * item.inviteTenderMateriel.count / 100 : '',
bidAmount: sourceType == '1' ? item.awardTaxProbability * item.purchaseCount / 100 * item.taxUnitPrice : sourceType == '2' ? item.awardTenderRatio * item.inviteTenderMateriel.count / 100 * item.price : '',
brand: { name: sourceType == '1' ? item.brand : sourceType == '2' ? item.inviteTenderMateriel.categoryName : item.brand }, // 品牌
unitName: sourceType == '1' ? item.unit : sourceType == '2' ? item.inviteTenderMateriel.unitName : item.unitPrice, //单位
purchaseCount: sourceType == '1' ? item.purchaseCount : sourceType == '2' ? item.inviteTenderMateriel.count : item.purchaseCount, // 数量
isHasTax: sourceType == '1' ? item.isTax : sourceType == '2' ? item.isTax ? 1 : 0 : item.isTax ? 1 : 0, // 是否函税
taxRate: sourceType == '1' ? item.taxProbability : sourceType == '2' ? item.taxRate : item.taxRate, //税率
price: sourceType == '1' ? item.taxUnitPrice : item.price, // 单价
bidCount: sourceType == '1' ? item.awardTaxProbability * item.purchaseCount / 100 : sourceType == '2' ? item.awardTenderRatio * item.inviteTenderMateriel.count / 100 : item.purchaseCount,
bidAmount: sourceType == '1' ? item.awardTaxProbability * item.purchaseCount / 100 * item.taxUnitPrice : sourceType == '2' ? item.awardTenderRatio * item.inviteTenderMateriel.count / 100 * item.price : item.price,
associatedDataId: sourceType == '1' ? item.productId : sourceType == '2' ? item.commodityId : '', // 关联商品id
associatedMaterielNo: sourceType == '1' ? item.number : sourceType == '2' ? item.inviteTenderMateriel.code : '', // 关联物料编号
associatedMaterielName: sourceType == '1' ? item.productName : sourceType == '2' ? item.commodityName : '', // 关联商品名称
......@@ -127,7 +130,7 @@ const FormList = (props: any) => {
{
title: '品类', dataIndex: 'customerCategory', align: 'center',
render: (text, item) =>
<span>{item.customerCategory.name ? item.customerCategory.name : ''}</span>
<span>{item.customerCategory.name ? item.customerCategory.name : item.customerCategory.category}</span>
},
{
title: '品牌', dataIndex: 'brand', align: 'center',
......
......@@ -105,12 +105,26 @@ const Auction = () => {
render: (_, record) => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => history.push(`/memberCenter/contract/manage/add/addList/contracAdd?contractId=${record.id}&sourceType=3`)}>创建采购竞价合同</span>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => Like(record)}>创建采购竞价合同</span>
{/* <span style={{ color: '#00B37A', cursor: 'pointer' }} onClick={() => history.push(`/memberCenter/contract/manage/Auction/details?contractId=${record.id}`)}> 查看 </span> */}
</div>
)
}
}]
const Like = (record) => {
record.sourceId = record.viePriceId;
record.sourceNo = record.viePriceNO;
record.totalAmount = record.awardAmount;
record.partyBMemberId = record.awardMemberId;
record.partyBRoleId = record.awardRoleId;
record.partyBName = record.awardName;
record.sourceType = "3";
sessionStorage.setItem('record', JSON.stringify(record));
console.log(record);
// return;
history.push(`/memberCenter/contract/manage/add/addList/contracAdd?contractId=${record.id}&sourceType=3`)
}
const getdate = (time) => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment