Commit f45aad40 authored by alwayOnlie's avatar alwayOnlie

‘bug修复

parent 34b51059
/* 这个是付款计划组建 */
import React, { useState } from 'react';
import {
Row,
Col,
} from 'antd';
import style from '../index.less';
import { history } from 'umi'
import { IAntdSchemaFormProps } from '@formily/antd'
export interface Iprops extends IAntdSchemaFormProps {
/* 付款计划数组 */
payPlanList: any,
basics: any,
contractId: any,
}
const PaymentCard: React.FC<Iprops> = ({
payPlanList,
basics,
contractId
}) => {
/* 非手工单进入请款 */
const like = (sourceType) => {
sessionStorage.setItem('basics', JSON.stringify(basics));
history.push('/memberCenter/contract/funds/addbill/Add?applyId=' + contractId + '&sourceType=' + sourceType)
}
return (
<div id='conditions' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
付款计划
</div>
</div>
</div>
<div className='ant-card-body'>
<Row gutter={[8, 8]}>
<div className={style.warp}>
{
payPlanList.map((item: any, index: number) => {
return (
<div className={style.warp_item} key={index}>
<div className={style.title}>付款比例</div>
<div className={style.proportion}>{item.payRatio}%</div>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
<div className={style.Price}>¥{item.payAmount}</div>
<div onClick={() => like(1)} style={{ cursor: 'pointer', fontSize: 12, backgroundColor: '#00B37A', color: '#fff', padding: '4px 8px' }}>请款</div>
</div>
<div className={style.warp_List}>
<div className={style.warp_ListItem}>
<div className={style.label}>付款阶段</div>
<div className={style.text}>{item.payStage}</div>
</div>
<div className={style.warp_ListItem}>
<div className={style.label}>预计付款时间:</div>
<div className={style.text}>{item.expectPayTime}</div>
</div>
<div className={style.warp_ListItem}>
<div className={style.label}>付款方式:</div>
<div className={style.text}>{item.payWayName}</div>
</div>
</div>
</div>
)
})
}
</div>
</Row>
</div>
</div>
)
}
PaymentCard.defaultProps = {
payPlanList: [],
basics: {},
contractId: 0,
}
export default PaymentCard;
import React, { useState } from 'react';
import {
Row,
Col,
} from 'antd';
import StatusTag from '@/components/StatusTag';
import style from '../index.less';
import { IAntdSchemaFormProps } from '@formily/antd'
import { history } from 'umi'
export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
basicInfo: any,
}
const Basic: React.FC<Iprops> = ({
basicInfo
}) => {
return (
<div id='process' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
基本信息
</div>
</div>
</div>
<div className='ant-card-body'>
<Row gutter={[8, 8]}>
<Col span={8}>
{basicInfo.col1.map((item: any, index: number) => (
<div className={style.list} key={`col1_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
{
item.url
?
<h5 className={style.gesture} onClick={() => history.push(item.url)}>{item.extra}</h5>
: item.label === '外部状态:' ?
<StatusTag type="success" title={item.extra} />
:
<h5 className={style.listContent}>{item.extra}</h5>
}
</div>
))}
</Col>
<Col span={8}>
{basicInfo.col2.map((item: any, index: number) => (
<div className={style.list} key={`col2_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
{
item.url
?
<h5 className={style.gesture} onClick={() => history.push(item.url)}>{item.extra}</h5>
:
<h5 className={style.listContent}>{item.extra}</h5>
}
</div>
))}
</Col>
<Col span={8}>
{basicInfo.col3.map((item: any, index: number) => (
<div className={style.list} key={`col3_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
<h5 className={style.listContent}>{item.extra}</h5>
</div>
))}
</Col>
</Row>
</div>
</div>
)
}
Basic.defaultProps = {
basicInfo: {
col1: [],
col2: [],
col3: [],
}
}
export default Basic;
.anchorWrap :global .ant-anchor {
display: flex;
}
.anchorWrap :global .ant-anchor .ant-anchor-ink {
display: none;
}
.anchorWrap :global .ant-anchor .ant-anchor-link {
padding: 14px 0 !important;
margin: 0 16px;
}
.anchorWrap :global .ant-anchor .ant-anchor-link .ant-anchor-link-title {
font-size: 14px;
color: #909399;
}
.anchorWrap :global .ant-anchor .ant-anchor-link-active {
position: relative;
border-bottom: 2px solid #00B37A;
box-sizing: border-box;
}
.anchorWrap :global .ant-anchor .ant-anchor-link-active .ant-anchor-link-title {
font-weight: 500;
color: #303133;
}
.anchorWrap .titleBox {
padding: 8px 16px;
}
.anchorWrap .anchorBox {
display: flex;
padding: 0 16px;
}
/** 卡片样式 */
.card {
margin: 24px;
}
.card :global .ant-card {
margin-bottom: 24px;
}
.card :global .ant-card .ant-card-head > .ant-card-head-wrapper {
padding: 12px 0;
}
.card :global .ant-card .ant-card-extra {
padding: 0 0;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper {
height: 24px;
line-height: 23px;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper:hover {
color: #606266;
}
.card :global .ant-card .ant-card-extra .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
.card :global .god-table-control {
margin-bottom: 0;
}
.list {
display: flex;
margin-bottom: 1.5em;
}
.list .listLable {
flex: 0 0 25%;
color: #909399;
}
.listItem {
display: flex;
}
.listItem .label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.listItem .text {
padding: 0px 0px;
flex: 1;
}
.listItem p {
margin-bottom: 0;
}
.warp {
display: flex;
width: 100%;
}
.warp .warp_item {
width: 20%;
border: 1px solid #F4F5F7;
border-radius: 10px;
padding: 16px;
margin-right: 10px;
}
.warp .warp_item .title {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
}
.warp .warp_item .proportion {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
padding: 12px 0;
}
.warp .warp_item .Price {
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
}
.warp .warp_item .warp_List {
margin-top: 32px;
}
.warp .warp_item .warp_List .warp_ListItem {
display: flex;
margin-bottom: 16px;
}
.warp .warp_item .warp_List .warp_ListItem .label {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
flex: 0.5;
}
.warp .warp_item .warp_List .warp_ListItem .text {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303133;
flex: 1;
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.upload_item .upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
}
.upload_item .upload_left :global .anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
.upload_item .upload_right {
color: #00b37a;
cursor: pointer;
}
.upload_item .upload_right :global .anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
.gesture {
color: #00B37A;
cursor: pointer;
}
.wrapper :global .ant-input-search .ant-input-group .ant-input {
padding: 0px !important;
}
.wrapper :global .ant-input-search .ant-input-group-addon .ant-input-search-button {
background-color: #F7F8FA;
}
.anchorWrap {
:global {
.ant-anchor {
display: flex;
.ant-anchor-ink {
display: none;
}
.ant-anchor-link {
padding: 14px 0 !important;
margin: 0 16px;
.ant-anchor-link-title {
font-size: 14px;
color: #909399;
}
}
.ant-anchor-link-active {
position: relative;
border-bottom: 2px solid #00B37A;
box-sizing: border-box;
.ant-anchor-link-title {
font-weight: 500;
color: #303133;
}
}
}
}
.titleBox {
padding: 8px 16px;
}
.anchorBox {
display: flex;
padding: 0 16px;
}
}
/** 卡片样式 */
.card {
margin: 24px;
:global {
.ant-card {
margin-bottom: 24px;
.ant-card-head {
> .ant-card-head-wrapper {
padding: 12px 0;
}
}
.ant-card-extra {
padding: 0 0;
.ant-radio-button-wrapper {
height: 24px;
line-height: 23px;
}
.ant-radio-button-wrapper:hover {
color: #606266;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
color: #fff;
background: #6B778C;
border-color: #6B778C;
}
}
}
.god-table-control {
margin-bottom: 0;
}
}
}
.list {
display: flex;
margin-bottom: 1.5em;
h5 {
}
.listLable {
flex: 0 0 25%;
color: #909399;
}
}
.listItem {
display: flex;
.label {
flex: 0.2;
padding: 0 16px;
background: linear-gradient(270deg, #ffffff 0%, #daf2e7 100%);
}
.text {
padding: 0px 0px;
flex: 1;
}
p {
margin-bottom: 0;
}
}
.warp{
display: flex;
width: 100%;
.warp_item{
width: 20%;
border: 1px solid #F4F5F7;
border-radius: 10px;
padding: 16px;
margin-right: 10px;
.title{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
}
.proportion{
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
padding: 12px 0;
}
.Price{
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #303133;
}
.warp_List{
margin-top: 32px;
.warp_ListItem{
display: flex;
margin-bottom: 16px;
.label{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #909399;
flex: 0.5;
}
.text{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #303133;
flex: 1;
}
}
}
}
}
.upload_item {
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
.upload_left {
display: flex;
align-items: center;
color: #303133;
background-color: #fafbfc;
:global {
.anticon-file-word {
color: #4279df;
font-size: 18px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00b37a;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #c0c4cc;
}
}
}
}
.gesture{
color: #00B37A;
cursor:pointer;
}
.wrapper{
:global {
// 处理高级筛选input和search按钮不对齐问题、search按钮背景
.ant-input-search {
.ant-input-group {
.ant-input {
padding: 0px !important;
}
}
.ant-input-group-addon {
.ant-input-search-button {
background-color: #F7F8FA;
}
}
}
}
}
import React, { useRef, useState } from 'react';
import { IAntdSchemaFormProps } from '@formily/antd'
import { Button, Drawer, } from 'antd';
import { StandardTable } from 'god';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
visible: any,
applyId: any,
setDrawerModal: Function
}
const DrawerModal: React.FC<Iprops> = ({
visible,
applyId,
setDrawerModal
}) => {
const ref = useRef({});
const [selectRow, setSelectRow] = useState<any[]>([]) // 抽屉选择的行数据
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const PaymentList: any = [
{
title: '单据号/摘要', dataIndex: 'orderNO', align: 'center',
render: (text: any, record: any) => {
return (
<div>
<EyePreview
url={`/memberCenter/tranactionAbility/purchaseOrder/readyAddOrder/preview?id=${record.orderId}`}
>
{text}
</EyePreview>
<p>{record.orderAbstract}</p>
</div>
);
},
},
{ title: '单据类型', dataIndex: 'orderTypeName', align: 'center', },
{ title: '单据状态', dataIndex: 'orderStatusName', align: 'center', },
{ title: '单据时间', dataIndex: 'orderTime', align: 'center', },
]
/* 查看付款明细————————————————————查看付款明细———————————————————— */
const rowSelection: any = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows)
setSelectedRowKeys(selectedRowKeys)
}
}
/* 请求查看付款明细 */
const getPaymentList = (params) => {
return new Promise((resolve, reject) => {
PublicApi.getContractExecuteExecuteInfoPayDetailInfoPagePayDetail({
...params,
applyId,
}).then(res => {
if (res.code === 1000) {
console.log(res, '请求查看付款明细')
resolve(res.data)
}
})
})
}
return (
<Drawer
visible={visible}
onClose={() => setDrawerModal()}
title="付款明细"
width={900}
footer={
<div
style={{
textAlign: 'right',
}}
>
<Button onClick={() => setDrawerModal()} style={{ marginRight: 8 }}>
取消
</Button>
<Button type="primary" onClick={() => setDrawerModal()} >
确定
</Button>
</div>
}
destroyOnClose
>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={PaymentList}
currentRef={ref}
rowSelection={rowSelection}
fetchTableData={(params: any) => getPaymentList(params)}
/>
</Drawer>
)
}
export default DrawerModal;
import React, { useEffect, useState, useRef } from 'react';
import { Modal, Form, Button, Select } from 'antd';
import style from './index.less';
import { history } from 'umi'
import { IAntdSchemaFormProps } from '@formily/antd'
const Option = Select.Option;
export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
ModalVisible: any,
payType: any,
selectRowList: any,
contractId: any,
basics: any,
setDrawerPopModal: Function
}
const PopModal: React.FC<Iprops> = ({
ModalVisible,
payType,
selectRowList,
contractId,
basics,
setDrawerPopModal,
}) => {
const [form] = Form.useForm();
/* 确定 */
const onFinish = (values: any) => {
sessionStorage.setItem('basics', JSON.stringify(basics))
sessionStorage.setItem('list', JSON.stringify(selectRowList))
history.push('/memberCenter/contract/funds/addbill/Add?applyId=' + contractId + '&sourceType=' + 2)
}
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return (
<Modal
footer={null}
title="提交审核"
visible={ModalVisible}
onOk={() => setDrawerPopModal()}
onCancel={() => setDrawerPopModal()} >
<Form
name="basic"
form={form}
initialValues={{ remember: true }}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item label='选择付款阶段'
initialValue={payType.length != 0 ? payType[0].id : ''}
name="opinion" rules={[{ required: true, message: '选择付款阶段' }]}>
<Select
style={{
width: '290px'
}}
>
{
payType.map(item => (
<Option key={item.id} value={item.id}>{item.payStage}</Option>
))
}
</Select>
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button style={{ marginRight: 10 }} onClick={() => setDrawerPopModal()}>取消</Button>
<Button type="primary" htmlType="submit">确定</Button>
</div>
</Form>
</Modal>
)
}
export default PopModal;
import React, { useRef } from 'react';
import { StandardTable } from 'god';
import { IAntdSchemaFormProps } from '@formily/antd'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
contractId: any,
}
const DetailedList: React.FC<Iprops> = ({
contractId
}) => {
const ref = useRef({});
const columnsList: any = [
{
title: '请款次数', dataIndex: 'name', key: 'name', align: 'center',
render: (text: any, record: any, index: number) => {
return (
<span>{index + 1}</span>
)
},
},
{
title: '请款单号/摘要', dataIndex: 'applyNo', align: 'center',
render: (text: any, record: any) => {
return (
<div>
<EyePreview
url={`/memberCenter/contract/funds/bill/details?applyId=${record.id}&type=pageDetailList`}
>
{text}
</EyePreview>
<p>{record.applyAbstract}</p>
</div>
);
}
},
{ title: '请款时间', dataIndex: 'applyTime', align: 'center', },
{
title: '请款金额', dataIndex: 'applyAmount', align: 'center',
render: (text: any, record: any, index: number) => {
return (
<span>{text}</span>
)
},
},
{ title: '付款时间', dataIndex: 'payTime', align: 'center', },
{
title: '付款金额', dataIndex: 'payAmount', align: 'center',
render: (text: any, record: any, index: number) => {
return (
<span>{text}</span>
)
},
},
{
title: '付款方式', dataIndex: 'payWayName',
align: 'center',
},
];
/* 请款统计 */
const fetchData = (params: any) => {
return new Promise((resolve, reject) => {
PublicApi.getContractExecutePageListForSummaryByPartyA({
...params,
contractId,
}).then(res => {
if (res.code === 1000) {
console.log(res, '这个是什么玩意')
resolve(res.data)
} else {
}
})
})
}
return (
<div id='record' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
请款统计
</div>
</div>
</div>
<div className='ant-card-body'>
<StandardTable
tableProps={{
rowKey: 'id',
}}
currentRef={ref}
columns={columnsList}
fetchTableData={(params: any) => fetchData(params)}
/>
</div>
</div>
)
}
export default DetailedList;
......@@ -48,7 +48,7 @@ const SelectProduct: React.FC<Iprops> = (props: any) => {
title: '品牌',
key: 'brandName',
dataIndex: 'brandName',
render: (text: any) => <span>{(text && Object.keys(text).length > 0) && text.name}</span>
render: (text: any) => <span>{text}</span>
},
]
const fetchGoodsData = (params: any) => {
......@@ -70,7 +70,7 @@ const SelectProduct: React.FC<Iprops> = (props: any) => {
<Drawer
visible={visible}
onClose={onclose}
title='选择品'
title='选择品'
width={900}
footer={
<div
......
......@@ -81,15 +81,15 @@ const Details = (props: any) => {
let contractAbstract = res.data.basics.contractAbstract;
const basicInfo = {
col1: [
{ label: '合同编号', extra: basics.contractNo ? basics.contractNo : '' },
{ label: '合同摘要', extra: basics.contractAbstract ? basics.contractAbstract : '' },
{ label: '外部状态', extra: basics.outerStatusName ? basics.outerStatusName : '' },
{ label: '内部状态', extra: basics.innerStatusName ? basics.innerStatusName : '' },
{ label: '合同编号', extra: basics.contractNo ? basics.contractNo : '' },
{ label: '合同摘要', extra: basics.contractAbstract ? basics.contractAbstract : '' },
{ label: '外部状态', extra: basics.outerStatusName ? basics.outerStatusName : '' },
{ label: '内部状态', extra: basics.innerStatusName ? basics.innerStatusName : '' },
],
col2: [
{ label: '寻源类型', extra: basics.sourceTypeName ? basics.sourceTypeName : '' },
{ label: '对应单据', extra: basics.sourceNo ? basics.sourceNo : '' },
{ label: '授标会员', extra: basics.partyBName ? basics.partyBName : '' },
{ label: '寻源类型', extra: basics.sourceTypeName ? basics.sourceTypeName : '' },
{ label: '对应单据', extra: basics.sourceNo ? basics.sourceNo : '' },
{ label: '授标会员', extra: basics.partyBName ? basics.partyBName : '' },
{ label: '授标金额', extra: basics.totalAmount ? basics.totalAmount : '' },
],
col3: [
......
import React, { useRef } from 'react';
import {
Radio
} from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god';
import { IAntdSchemaFormProps } from '@formily/antd'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { PublicApi } from '@/services/api';
export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
applyId: any,
}
const ColumnsList: React.FC<Iprops> = ({
applyId
}) => {
const ref = useRef({});
/* 操作人 */
const columnsList: ColumnType<any>[] = [{
title: '序号',
dataIndex: 'No',
align: 'center',
render: (_, item, index) => (
<p>{index + 1}</p>
)
}, {
title: '操作角色',
dataIndex: 'operator',
align: 'center',
}, {
title: '部门',
dataIndex: 'department',
align: 'center',
},
{
title: '职位',
dataIndex: 'jobTitle',
align: 'center',
},
{
title: '状态',
dataIndex: 'statusName',
align: 'center',
},
{
title: '操作',
dataIndex: 'operate',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'operateTime',
align: 'center',
},
{
title: '审核意见',
dataIndex: 'opinion',
align: 'center',
},
]
// 流转记录
const fetListData = (params: any) => {
return new Promise((resolve, reject) => {
PublicApi.getContractApplyAmountPageRecordList({
applyId,
...params
}).then(res => {
resolve(res.data)
})
})
}
return (
<div id='record' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
流转记录
</div>
<div className='ant-card-extra'>
<Radio.Group defaultValue="a">
<Radio.Button value="a">内部流转</Radio.Button>
</Radio.Group>
</div>
</div>
</div>
<div className='ant-card-body'>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columnsList}
currentRef={ref}
fetchTableData={(params: any) => fetListData(params)}
formilyProps={{
ctx: {
inline: false,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}}
/>
</div>
</div>
)
}
export default ColumnsList;
......@@ -3,25 +3,19 @@ import React, { useEffect, useState, useRef } from 'react';
import { Anchor, Radio, Steps, Row, Col, Input, Button, message, Modal } from 'antd';
import style from './index.less';
import { ArrowLeftOutlined } from '@ant-design/icons';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { history } from 'umi';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PublicApi } from '@/services/api';
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import Examine from '../../components/examine'
import Materials from './components/materials'
import ColumnsList from './components/ColumnsList'
import Basic from '../../components/detailCard/basic'
const { Link } = Anchor;
const { Step } = Steps;
const activeAnchorClassName = 'ant-anchor-link-active'
const { TextArea } = Input;
const BillDetails = (props: any) => {
const ref = useRef({});
const [currLink, setCurrLink] = useState(activeAnchorClassName)
const [isAllMember, setIsAllMember] = useState(true)
const { location: { query: { applyId, type } } } = props
......@@ -128,7 +122,6 @@ const BillDetails = (props: any) => {
PublicApi.postContractApplyAmountInvalid(res_data).then(res => {
if (res.code === 1000) {
handleCancel()
// ref.current.reload();
}
}).finally(() => {
msg();
......@@ -147,73 +140,11 @@ const BillDetails = (props: any) => {
useEffect(() => {
setTargetOffset(window.innerHeight / 6);
getDetail()
let data = {
current: 1,
pageSize: 10
}
// fetchListData(data)
}, []);
/* 操作人 */
const columnsList: ColumnType<any>[] = [{
title: '序号',
dataIndex: 'No',
align: 'center',
render: (_, item, index) => (
<p>{index + 1}</p>
)
}, {
title: '操作角色',
dataIndex: 'operator',
align: 'center',
}, {
title: '部门',
dataIndex: 'department',
align: 'center',
},
{
title: '职位',
dataIndex: 'jobTitle',
align: 'center',
defaultSortOrder: 'descend',
sorter: (a, b) => a.age - b.age,
},
{
title: '状态',
dataIndex: 'statusName',
align: 'center',
},
{
title: '操作',
dataIndex: 'operate',
align: 'center',
},
{
title: '操作时间',
dataIndex: 'operateTime',
align: 'center',
},
{
title: '审核意见',
dataIndex: 'opinion',
align: 'center',
},
]
// 流转记录
const fetListData = (params: any) => {
return new Promise((resolve, reject) => {
PublicApi.getContractApplyAmountPageRecordList({
applyId,
...params
}).then(res => {
resolve(res.data)
})
})
}
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
......@@ -284,8 +215,9 @@ const BillDetails = (props: any) => {
<div className='ant-card-body'>
<Steps progressDot>
{
StepList.map((item: any) => (
StepList.map((item: any, index: number) => (
<Step
key={`${index + 1}`}
title={item.taskName}
description={item.roleName}
status={item.isExecute ? 'finish' : 'wait'}
......@@ -296,43 +228,7 @@ const BillDetails = (props: any) => {
</div>
</div>
{/* 基本信息 */}
<div id='process' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
基本信息
</div>
</div>
</div>
<div className='ant-card-body'>
<Row gutter={[8, 8]}>
<Col span={8}>
{basicInfo.col1.map((item: any, index: number) => (
<div className={style.list} key={`col1_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
<h5 className={style.listContent}>{item.extra}</h5>
</div>
))}
</Col>
<Col span={8}>
{basicInfo.col2.map((item: any, index: number) => (
<div className={style.list} key={`col2_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
<h5 className={style.listContent}>{item.extra}</h5>
</div>
))}
</Col>
<Col span={8}>
{basicInfo.col3.map((item: any, index: number) => (
<div className={style.list} key={`col3_${index + 1}`}>
<h5 className={style.listLable}>{item.label}</h5>
<h5 className={style.listContent}>{item.extra}</h5>
</div>
))}
</Col>
</Row>
</div>
</div>
<Basic basicInfo={basicInfo} />
{/* 采购材料 */}
<div id='materials' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
......@@ -344,49 +240,9 @@ const BillDetails = (props: any) => {
</div>
<Materials applyId={applyId} type={type} />
</div>
{/* 流转记录 */}
<div id='record' className='ant-card ant-card-bordered'>
<div className='ant-card-head'>
<div className='ant-card-head-wrapper'>
<div className='ant-card-head-wrapper'>
流转记录
</div>
<div className='ant-card-extra'>
<Radio.Group defaultValue="a">
<Radio.Button value="a">内部流转</Radio.Button>
</Radio.Group>
</div>
</div>
</div>
<div className='ant-card-body'>
<StandardTable
tableProps={{
rowKey: 'id',
}}
columns={columnsList}
currentRef={ref}
fetchTableData={(params: any) => fetListData(params)}
formilyProps={{
ctx: {
inline: false,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}}
/>
</div>
</div>
<ColumnsList applyId={applyId} />
</div>
<Modal title="单据作废" visible={isModalVisible} onCancel={handleCancel} onOk={oninvalid}>
<Radio.Group onChange={handleIsAllMemberChange} defaultValue={isAllMember} value={isAllMember}>
......
......@@ -47,13 +47,11 @@ const Secondpayment: React.FC<{}> = () => {
}, {
title: '收款方',
dataIndex: 'payeeMemberName',
},
{
title: '合同编号',
dataIndex: 'contractNo',
render: (text: any, record: any) => <EyePreview
// type="button"
url={`/memberCenter/contract/manage/QueryList/QueryListdetails?contractId=${record.contractId}`}
>
{text}
......@@ -179,8 +177,6 @@ const Secondpayment: React.FC<{}> = () => {
type="ToBeExamineTwo"
/>
</PageHeaderWrapper>
)
}
export default Secondpayment
import React, { useState, useRef, ReactNode } from 'react'
import React, { useState, useRef } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, message } from 'antd';
import { SchemaBli } from '../schema';
......@@ -22,8 +22,6 @@ const Submitpayment: React.FC<{}> = () => {
const [applyId, setapplyId] = useState('');
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
//表头
const columns: ColumnType<any>[] = [{
title: '请款单号/摘要',
dataIndex: 'applyNo',
......@@ -81,7 +79,6 @@ const Submitpayment: React.FC<{}> = () => {
}, {
title: '操作',
dataIndex: 'action',
render: (text: any, record: any) => {
return (
<>
......@@ -97,7 +94,6 @@ const Submitpayment: React.FC<{}> = () => {
duration: 0,
});
PublicApi.postContractApplyAmountSubmit({ applyId }).then(res => {
console.log(res);
if (res.code === 1000) {
getfetchData({
ExamineFlag: false,
......@@ -123,10 +119,8 @@ const Submitpayment: React.FC<{}> = () => {
})
}
/* 提交审核的回调 */
const getfetchData = (data) => {
console.log(data)
setExamineFlag(data.ExamineFlag)
if (data.code === 1000) {
ref.current.reload()
......@@ -191,7 +185,6 @@ const Submitpayment: React.FC<{}> = () => {
type="PageToBeSubmit"
/>
</PageHeaderWrapper>
)
}
......
......@@ -83,11 +83,14 @@ const addList = () => {
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
{
text &&
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
}
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
......
......@@ -83,12 +83,16 @@ const Examine = () => {
]
return (
<div>
<EyePreview
type={record.sourceId ? 'link' : 'button'}
url={`/memberCenter/procurementAbility/offter/view?id${record.sourceId}&number${record.sourceNo}`}
>
{text}
</EyePreview>
{
text &&
<EyePreview
type={record.sourceId ? 'link' : 'button'}
url={`/memberCenter/procurementAbility/offter/view?id${record.sourceId}&number${record.sourceNo}`}
>
{text}
</EyePreview>
}
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
......
......@@ -84,11 +84,14 @@ const Levelexamine = () => {
]
return (
<div>
<EyePreview
type="button"
>
{text}
</EyePreview>
{
text &&
<EyePreview
type="button"
>
{text}
</EyePreview>
}
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
......
......@@ -78,11 +78,15 @@ const Secondaryexamine = () => {
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
{
text &&
<EyePreview
type="button"
// url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
}
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
......
......@@ -83,11 +83,14 @@ const Signacontract = () => {
]
return (
<div>
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
{
text &&
<EyePreview
url={`/memberCenter/contract/manage/QueryList/QueryListdetails`}
>
{text}
</EyePreview>
}
<p>{sourceTypeList[record.sourceType]}</p>
</div>
)
......
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