123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563 |
- import React, { Component } from 'react'
- import {
- Form,
- Spin,
- Table,
- Modal,
- Col,
- Upload,
- Input,
- Button, message,
- Row,
- } from 'antd'
- import {getProjectStatus,} from '@/tools'
- import { getMaterialStatus, getUrgentStatus } from '@/tools'
- import ApplyPaymentModal from './applyPaymentModal';
- import './index.less'
- import $ from "jquery";
- class CheckProject extends Component {
- constructor(props) {
- super(props)
- this.state = {
- value: '',
- loading: false,
- previewImage: '',
- previewVisible: false,
- previewPayVisible: false,
- previewPayInfor: {}, //点击申请付款的第三方信息或者支付节点信息
- nodeId: 0,
- // 专利
- ContactsListsNew: [
- {
- title: '供应商名称',
- dataIndex: 'companyName',
- key: 'companyName',
- render: (text, record, index) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '单价(万元)',
- dataIndex: 'unitPrice',
- key: 'unitPrice',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '数量',
- dataIndex: 'quantity',
- key: 'quantity',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '总价(万元)',
- dataIndex: 'totalAmount',
- key: 'totalAmount',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '已付(万元)',
- dataIndex: 'partyAmount',
- key: 'partyAmount',
- render: (text, record) => {
- return <span>{text}</span>
- },
- },
- {
- title: '材料',
- dataIndex: 'material',
- key: 'material',
- render: (text, record) => {
- return getMaterialStatus(text)
- },
- },
- {
- title: '加急',
- dataIndex: 'urgent',
- key: 'urgent',
- render: (text, record) => {
- return getUrgentStatus(text)
- },
- },
- {
- title: '操作',
- dataIndex: 'action',
- key: 'action',
- render: (text, record) => {
- return (
- <div>
- {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
- {/*存在支付节点时不显示第三方的申请付款*/}
- {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
- {
- <Button disabled={
- !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1) && this.props.dataSource.length === 0)
- } type="primary" onClick={() => {
- this.setState({
- previewPayVisible: true,
- previewPayInfor: record,
- })
- }}>
- 申请付款
- </Button>
- }
- </div>
- )
- },
- },
- ],
- //付款节点表头
- PayNodeTableColunms: [
- {
- title: '供应商名称',
- dataIndex: 'companyName',
- key: 'companyName',
- render: (text, record, index) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '付款科目',
- dataIndex: 'dunType',
- key: 'dunType',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '付款时间',
- dataIndex: 'partyTimes',
- key: 'partyTimes',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '数量',
- dataIndex: 'quantity',
- key: 'quantity',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '总价(万元)',
- dataIndex: 'totalAmount',
- key: 'totalAmount',
- render: (text, record) => {
- if (text) {
- return <span>***</span>
- }
- },
- },
- {
- title: '已付(万元)',
- dataIndex: 'partyAmount',
- key: 'partyAmount',
- render: (text, record) => {
- if (text) {
- return <span>{text}</span>
- }
- },
- },
- {
- title: '操作',
- dataIndex: 'action',
- key: 'action',
- render: (text, record) => {
- return (
- <div>
- {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
- {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
- <Button
- disabled={
- !(this.props.isPreviewPay && (this.props.status === 1 || parseInt(this.props.startType) === 1))
- }
- type="primary"
- onClick={() => {
- console.log(record)
- this.setState({
- previewPayVisible: true,
- nodeId: record.id, //付款节点id
- previewPayInfor: record,
- })
- }}>
- 申请付款
- </Button>
- </div>
- )
- },
- },
- ],
- outsourceLogs: [],//审核日志
- selectOrderPayments: [],//支付列表
- }
- }
- componentDidMount() {
- if(this.props.tid){
- setTimeout(()=>{
- this.getSelectOutsourceLog();
- this.getSelectOrderPayment();
- },500)
- }
- }
- componentDidUpdate(prevProps, prevState, snapshot) {
- }
- onChange() {
- this.setState({
- value: e.target.value,
- })
- }
- tableRowClickOne(record) {}
- //点击付款节点详情
- payNodeTableRowClickOne(record) {}
- //外包日志列表
- getSelectOutsourceLog(){
- $.ajax({
- method: 'get',
- dataType: 'json',
- crossDomain: false,
- url: globalConfig.context + '/api/admin/outsourceOrg/selectOutsourceLog',
- data: {
- tid: this.props.tid,
- },
- success: function (data) {
- if (data.error.length) {
- if (data.error && data.error.length) {
- message.warning(data.error[0].message);
- }
- } else {
- this.setState({
- outsourceLogs: data.data
- })
- }
- }.bind(this),
- }).always(
- function () {
- }.bind(this)
- )
- }
- //支付列表
- getSelectOrderPayment() {
- $.ajax({
- method: 'get',
- dataType: 'json',
- crossDomain: false,
- url: globalConfig.context + '/api/admin/company/selectOrderPayment',
- data: {
- id: this.props.tid,
- },
- success: function (data) {
- if (data.error.length) {
- if (data.error && data.error.length) {
- message.warning(data.error[0].message);
- }
- } else {
- this.setState({
- selectOrderPayments: data.data
- })
- }
- }.bind(this),
- }).always(
- function () {
- }.bind(this)
- )
- }
- render() {
- return (
- <div className="App">
- <div className="projectType">
- <div className="typeTitle">
- <div className="required">*</div>
- <div>类型:</div>
- </div>
- {
- parseInt(this.props.startType) === 0 ?
- <div>
- <div>供应商信息(外包派单,不走总部)</div>
- <div className="tipsText">提示高于总部价格,费用个人承担</div>
- </div> :
- <div>供应商信息(普通单)</div>
- }
- <div style={{marginLeft:'auto'}}>
- <span style={{color:'#58a3ff'}}>项目状态:</span>{getProjectStatus(this.props.projectStatus)}
- </div>
- </div>
- <div className="thirdParty">
- <div>
- <span className="title">
- 第三方信息
- </span>
- </div>
- <div
- className="clearfix"
- >
- <Spin spinning={this.state.loading}>
- <Form layout="horizontal">
- <Table
- pagination={false}
- columns={this.state.ContactsListsNew}
- dataSource={this.props.thirdInfoList}
- onRowClick={this.tableRowClickOne}
- scroll={{ x: 'max-content', y: 0 }}
- bordered
- size="small"
- />
- <Col span={24} offset={9} style={{ marginTop: '15px' }}/>
- </Form>
- </Spin>
- </div>
- </div>
- <div className="thirdParty">
- <div>
- <span className="title">
- 付款节点
- </span>
- </div>
- <div
- className="clearfix"
- >
- <Spin spinning={this.state.loading}>
- <Form layout="horizontal">
- <Table
- pagination={false}
- columns={this.state.PayNodeTableColunms}
- dataSource={this.props.dataSource}
- onRowClick={this.payNodeTableRowClickOne}
- scroll={{ x: 'max-content', y: 0 }}
- bordered
- size="small"
- />
- <Col span={24} offset={9} style={{ marginTop: '15px' }}/>
- </Form>
- </Spin>
- </div>
- </div>
- <div
- style={{
- borderTop: '1px #000000 dashed',
- padding: '20px 20px 0px 20px',
- }}
- >
- <div>
- <div className="title">备注</div>
- <Input
- type="textarea"
- placeholder="请输入备注"
- rows={4}
- value={this.props.outsourceRemarks}
- />
- </div>
- <div style={{paddingTop:'20px'}}>
- <div className="title">合同/协议扫描件</div>
- <Upload
- className="demandDetailShow-upload"
- listType="picture-card"
- fileList={this.props.fileList}
- onPreview={(file) => {
- this.setState({
- previewImage: file.url || file.thumbUrl,
- previewVisible: true,
- })
- }}
- />
- <Modal
- maskClosable={false}
- footer={null}
- visible={this.state.previewVisible}
- onCancel={() => {
- this.setState({ previewVisible: false })
- }}
- >
- <img
- alt=""
- style={{ width: '100%' }}
- src={this.state.previewImage || ''}
- />
- </Modal>
- </div>
- </div>
- {parseInt(this.props.startType) !== 1 ? <div className="outsourceLogConent">
- <div className="title">外包状态</div>
- <div className="outsourceLogList">
- {
- this.state.outsourceLogs.map((value,index)=>(
- <div key={index} className="outsourceLogItem">
- <Row gutter={16}>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box">
- {value.aname}
- </div>
- </Col>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box">
- {
- value.status === 0 ? '发起外包审核' :
- value.status === 1 ? '通过' : '驳回'
- }
- </div>
- </Col>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box" style={{
- wordBreak: 'break-all'
- }}>
- {value.remarks}
- </div>
- </Col>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box">
- {value.createTimes}
- </div>
- </Col>
- </Row>
- </div>
- ))
- }
- </div>
- </div> : <div/>}
- <div className="outsourceLogConent">
- <div className="title">支付记录</div>
- <div className="outsourceLogItem" style={{
- fontWeight: 'bold',
- }}>
- <Row gutter={16}>
- <Col className="gutter-row" span={4}>
- <div className="gutter-box">
- 编号
- </div>
- </Col>
- {/*<Col className="gutter-row" span={5}>*/}
- {/* <div className="gutter-box">*/}
- {/* 订单编号*/}
- {/* </div>*/}
- {/*</Col>*/}
- <Col className="gutter-row" span={5}>
- <div className="gutter-box">
- 支付类型
- </div>
- </Col>
- <Col className="gutter-row" span={5}>
- <div className="gutter-box">
- 申请支付金额(万元)
- </div>
- </Col>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box">
- 申请时间
- </div>
- </Col>
- <Col className="gutter-row" span={4}>
- <div className="gutter-box">
- 状态
- </div>
- </Col>
- </Row>
- </div>
- <div className="outsourceLogList" style={{paddingTop:'20px'}}>
- {
- this.state.selectOrderPayments.map((value,index)=>(
- <div key={index} className="outsourceLogItem">
- <Row gutter={16}>
- <Col className="gutter-row" span={4}>
- <div className="gutter-box">
- {index+1 < 10 ? '0'+(index+1) : index+1}
- </div>
- </Col>
- {/*<Col className="gutter-row" span={5}>*/}
- {/* <div className="gutter-box">*/}
- {/* 订单编号*/}
- {/* </div>*/}
- {/*</Col>*/}
- <Col className="gutter-row" span={5}>
- <div className="gutter-box">
- {value.paymentType === 0 ? '第三方' : '官费'}
- </div>
- </Col>
- <Col className="gutter-row" span={5}>
- <div className="gutter-box">
- {value.applicationAmount}
- </div>
- </Col>
- <Col className="gutter-row" span={6}>
- <div className="gutter-box">
- {value.createTimes}
- </div>
- </Col>
- <Col className="gutter-row" span={4}>
- <div className="gutter-box">
- {
- value.status === 0 ? '审核' :
- value.status === 1 ? '驳回' :
- value.status === 2 ? '待支付' : '已支付'
- }
- </div>
- </Col>
- </Row>
- </div>
- ))
- }
- </div>
- </div>
- {/*
- 申请付款
- tid:项目id
- nodeId: 付款节点id
- previewPayInfor: 项目或者节点信息
- */}
- <ApplyPaymentModal
- {...this.props}
- tid={this.props.tid}
- nodeId={this.state.nodeId}
- previewPayInfor={this.state.previewPayInfor}
- visible={this.state.previewPayVisible}
- onRefresh={()=>{
- this.props.onRefresh();
- this.getSelectOrderPayment();
- }}
- changeVisible={()=>{
- this.setState({
- previewPayVisible: false,
- nodeId: 0, //付款节点id
- previewPayInfor: {},
- })
- }}/>
- </div>
- )
- }
- }
- export default CheckProject
|