Browse Source

代码合并

HW 3 years ago
parent
commit
bcd29047d8

+ 589 - 0
js/component/manageCenter/project/task/patentSchedule.jsx

@@ -0,0 +1,589 @@
+import React,{ Component } from 'react';
+import {Button, DatePicker, Select, Table, Input, Modal, Spin, message} from "antd";
+import moment from "moment";
+import $ from "jquery";
+
+const { Option } = Select;
+const confirm = Modal.confirm;
+
+class PatentSchedule extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            columns: [
+                {
+                    title: '批次',
+                    dataIndex: 'key',
+                    key: 'key',
+                    render: (text, record,index) => {
+                        return index+1;
+                    }
+                },
+                {
+                    title: props.bpType === 6 ? '商标号' : '专利号',
+                    dataIndex: 'patentNo',
+                    key: 'patentNo',
+                    render: (text, record,index) => {
+                        return !record.isChange ? text : <Input
+                            value={text}
+                            size={'small'}
+                            style={{
+                                width: '100px'
+                            }}
+                            onChange={(e)=>{
+                            this.changeEvidence(e.target.value,index,'patentNo')
+                        }}/>
+                    }
+                },
+                {
+                    title: props.bpType === 6 ? '商标名称' : '专利名称',
+                    dataIndex: 'patentName',
+                    key: 'patentName',
+                    render: (text, record,index) => {
+                        return !record.isChange ? text : <Input
+                            value={text}
+                            style={{width: '100px'}}
+                            size={'small'}
+                            onChange={(e)=>{
+                                this.changeEvidence(e.target.value,index,'patentName')
+                        }}/>
+                    }
+                },
+                {
+                    title: '受理时间',
+                    dataIndex: 'acceptTimes',
+                    key: 'acceptTimes',
+                    render: (text, record,index) => {
+                        return !record.isChange ? text : <DatePicker
+                            value={
+                                text ? moment(text) : null
+                            }
+                            size={'small'}
+                            style={{
+                                marginTop: '4px',
+                                width: '100px'
+                            }}
+                            showTime
+                            format="YYYY-MM-DD"
+                            onChange={(data, dataString) => {
+                                this.changeEvidence(dataString,index,'acceptTimes')
+                            }}
+                        />
+                    }
+                },
+                {
+                    title: '下证时间',
+                    dataIndex: 'licenceTimes',
+                    key: 'licenceTimes',
+                    render: (text, record,index) => {
+                        return !record.isChange ? text : <DatePicker
+                            value={
+                                text ? moment(text) : null
+                            }
+                            size={'small'}
+                            style={{
+                                marginTop: '4px',
+                                width: '100px'
+                            }}
+                            showTime
+                            format="YYYY-MM-DD"
+                            onChange={(data, dataString) => {
+                                this.changeEvidence(dataString,index,'licenceTimes')
+                            }}
+                        />
+                    }
+                },
+                {
+                    title: '状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text, record,index) => {
+                        return !record.isChange ? text === 0 ? '待审核' : text === 1 ? '通过' : '驳回' : <Select style={{width:'80px'}} value={text} size={'small'} onChange={(v)=>{
+                            this.changeEvidence(v,index,'status')
+                        }}>
+                            <Option value={0}>待审核</Option>
+                            <Option value={1}>通过</Option>
+                            <option value={2}>驳回</option>
+                        </Select>
+                    }
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'h',
+                    key: 'h',
+                    render: (text, record,index) => {
+                        return (
+                            !props.readOnly ? <span>
+                                <Button
+                                    size={'small'}
+                                    style={{
+                                        marginRight:'10px',
+                                        color: '#ffffff',
+                                        background: '#f00',
+                                        border: 'none',
+                                    }}
+                                    loading={this.state.loading}
+                                    onClick={()=>{
+                                        let _this = this;
+                                        if(record.isChange){
+                                            this.state.dataSource.splice(index,1)
+                                            this.setState({
+                                                dataSource: this.state.dataSource
+                                            })
+                                        }else{
+                                            confirm({
+                                                title: '提醒',
+                                                content: '确定要删除吗?',
+                                                onOk() {
+                                                    _this.delectTaskProgress(record.id)
+                                                }
+                                            })
+                                        }
+                                    }}
+                                >
+                                    删除
+                                </Button>
+                                {record.id && !record.isChange && <Button size={'small'} type='primary' onClick={()=>{
+                                    this.state.dataSource[index]['isChange'] = true
+                                    this.setState({
+                                        dataSource: this.state.dataSource
+                                    })
+                                }}>修改</Button>}
+                                {record.isChange &&<Button
+                                    size={'small'}
+                                    loading={this.state.loading}
+                                    style={{
+                                        marginLeft:'10px',
+                                        color: '#ffffff',
+                                        background: '#4ad028',
+                                        border: 'none',
+                                }} onClick={()=>{
+                                    if(record.id){
+                                        this.changeTaskProgress(record);
+                                    }else{
+                                        this.createTaskProgress(record);
+                                    }
+                                }}>保存</Button> }
+                            </span> : null
+                        )
+                    }
+                }
+            ],
+            dataSource: [],
+            visible: false,
+            columnsA: [
+                {
+                    title: '时间',
+                    dataIndex: 'createTime',
+                    key: 'createTime',
+                },
+                {
+                    title: '操作类型',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text, record) => {
+                        return text === 0 ? '新增' : text === 1 ? '删除' : '修改'
+                    }
+                },
+                {
+                    title: '专利号',
+                    dataIndex: 'patentName',
+                    key: 'patentName',
+                }
+            ],
+            dataSourceA: [],
+            progressLogLoading: false,
+            acceptCount: props.acceptCount || 0,
+            certificatesCount: props.certificatesCount || 0,
+            rejectCount: props.rejectCount || 0,
+        };
+        this.changeEvidence = this.changeEvidence.bind(this);
+        this.createTaskProgress = this.createTaskProgress.bind(this);
+        this.selectTaskProgressLog = this.selectTaskProgressLog.bind(this);
+        this.delectTaskProgress = this.delectTaskProgress.bind(this);
+        this.changeTaskProgress = this.changeTaskProgress.bind(this);
+        this.loaduserss = this.loaduserss.bind(this);
+    }
+
+    changeEvidence(value,index,key){
+        this.state.dataSource[index][key] = value;
+        this.setState({
+            dataSource: this.state.dataSource
+        })
+    }
+
+    //新增申报进度
+    createTaskProgress(record) {
+        if(!record.patentNo){
+            message.warning('请填写专利号');
+            return;
+        }
+        if(!record.patentName){
+            message.warning('请填写专利名称');
+            return;
+        }
+        if(typeof record.status !== 'number'){
+            message.warning('请选择状态');
+            return;
+        }
+        this.setState({
+            loading: true,
+        })
+        let _this = this;
+        let data = Object.assign({},record);
+        delete data.isChange;
+        delete data.key;
+        data.taskId = this.props.taskId;
+        data.alreadyNumber = 1;
+        data.type = this.props.bpType === 1 ? 1 : this.props.bpType === 6 ? 2 : '';//0软著 1专利 2商标
+        $.ajax({
+            method: 'post',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/createTaskProgress',
+            data: data,
+            success: function (data) {
+                if (data.error.length) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                }else{
+                    message.success('添加成功');
+                    delete record.isChange;
+                    delete record.key;
+                    _this.props.refresh && _this.props.refresh();
+                    _this.loaduserss();
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    //申报进度日志
+    selectTaskProgressLog() {
+        this.setState({
+            loading: true,
+        })
+        $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/selectTaskProgressLog',
+            data: {
+                tid: this.props.taskId,
+            },
+            success: function (data) {
+                let theArr = []
+                if (data.error.length || data.data.list === '') {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                } else {
+                    for (let i = 0; i < data.data.length; i++) {
+                        let thisdata = data.data[i];
+                        thisdata.key = i;
+                        theArr.push(thisdata)
+                    }
+                }
+                this.setState({
+                    dataSourceA: theArr,
+                })
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    //修改申报进度
+    changeTaskProgress(record) {
+        if(!record.patentNo){
+            message.warning('请填写专利号');
+            return;
+        }
+        if(!record.patentName){
+            message.warning('请填写专利名称');
+            return;
+        }
+        if(typeof record.status !== 'number'){
+            message.warning('请选择状态');
+            return;
+        }
+        this.setState({
+            loading: true,
+        })
+        let _this = this;
+        let data = Object.assign({},record);
+        delete data.isChange;
+        delete data.key;
+        data.taskId = this.props.taskId;
+        data.alreadyNumber = 1;
+        data.type = this.props.bpType === 1 ? 1 : this.props.bpType === 6 ? 2 : '';//0软著 1专利 2商标
+        for(let i in data){
+            if(typeof data[i] === 'object'){
+                delete data[i]
+            }
+        }
+        $.ajax({
+            method: 'post',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/updateTaskProgress',
+            data: data,
+            success: function (data) {
+                if (data.error.length) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                }else{
+                    message.success('修改成功');
+                    delete record.isChange;
+                    delete record.key;
+                    _this.props.refresh && _this.props.refresh();
+                    _this.loaduserss();
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    // 删除申报进度
+    delectTaskProgress(id) {
+        this.setState({
+            loading: true,
+        })
+        let _this = this;
+        $.ajax({
+            method: 'post',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/delectTaskProgress',
+            data: {
+                id
+            },
+            success: function (data) {
+                if (data.error.length) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                }else{
+                    message.success('删除成功');
+                    _this.loaduserss();
+                    _this.props.refresh && this.props.refresh();
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    //查看下证信息
+    loaduserss() {
+        this.setState({
+            progressLogLoading: true,
+        })
+        $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/selectTaskProgress',
+            data: {
+                tid: this.props.taskId,
+            },
+            success: function (data) {
+                let thisData = []
+                if (!thisData) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                } else {
+                    this.setState({
+                        dataSource: data.data,
+                    })
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    progressLogLoading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    componentDidMount() {
+        this.loaduserss();
+        if(this.props.bpType === 1){
+            this.state.columns.splice(-2,0,{
+                title: '授权时间',
+                dataIndex: 'authorizeTimes',
+                key: 'authorizeTimes',
+                render: (text, record,index) => {
+                    return !record.isChange ? text : <DatePicker
+                        size={'small'}
+                        style={{
+                            marginTop: '4px',
+                            width: '100px'
+                        }}
+                        value={
+                            text ? moment(text) : null
+                        }
+                        showTime
+                        format="YYYY-MM-DD"
+                        onChange={(data, dataString) => {
+                            this.changeEvidence(dataString,index,'authorizeTimes')
+                        }}
+                    />
+                }
+            });
+            this.setState({
+                columns:this.state.columns
+            })
+        }
+    }
+
+    render() {
+        return (
+            <div>
+                <div style={{
+                    display:'flex',
+                    alignItems:'center',
+                    paddingLeft: '3%',
+                    paddingRight: '10%',
+                    color: '#000',
+                    fontWeight: 400,
+                }}>
+                    <div style={{paddingRight:'10px'}}>派单项目数:{this.props.commodityQuantity}</div>
+                    <div style={{paddingRight:'10px'}}>
+                        受理数:
+                        {this.props.readOnly ?
+                            this.props.acceptCount:
+                            <Input type='number' defaultValue={this.props.acceptCount || 0} value={this.state.acceptCount} style={{width:'70px'}} onChange={(e)=>{
+                                this.setState({
+                                    acceptCount:e.target.value
+                                })
+                                this.props.onChange('acceptCount',e.target.value);
+                            }}/>
+                        }
+                    </div>
+                    <div style={{paddingRight:'10px'}}>
+                        下证数(即授权数):
+                        {this.props.readOnly ?
+                            this.props.certificatesCount:
+                            <Input type='number' defaultValue={this.props.certificatesCount || 0} value={this.state.certificatesCount || (this.props.certificatesCount || 0)} style={{width:'70px'}} onChange={(e)=>{
+                                this.setState({
+                                    certificatesCount:e.target.value
+                                })
+                                this.props.onChange('certificatesCount',e.target.value);
+                            }}/>
+                        }
+                    </div>
+                    <div>
+                        驳回数:
+                        {this.props.readOnly ?
+                            this.props.rejectCount:
+                            <Input type='number' defaultValue={this.props.rejectCount || 0} value={this.state.rejectCount || (this.props.rejectCount || 0)} style={{width:'70px'}} onChange={(e)=>{
+                                this.setState({
+                                    rejectCount:e.target.value
+                                })
+                                this.props.onChange('rejectCount',e.target.value);
+                            }}/>
+                        }
+                    </div>
+                    <div style={{display:'flex',alignItems:'center',marginLeft:'auto'}}>
+                        {!this.props.readOnly ? <Button
+                            type="primary"
+                            style={{ marginRight: '15px' }}
+                            onClick={()=>{
+                                let arr = this.state.dataSource.filter((v)=>v.isChange)
+                                if(arr.length > 0){
+                                    message.warning('已存在未保存项,请先保存!')
+                                    return;
+                                }
+                                this.state.dataSource.push({
+                                    key: this.state.dataSource.length+1,
+                                    isChange: true,
+                                })
+                                this.setState({
+                                    dataSource: this.state.dataSource
+                                })
+                            }}
+                        >
+                            {/* bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
+                            {this.props.bpType === 1 ? '增加专利信息' : this.props.bpType === 6 ? '增加商标信息' : ''}
+                        </Button> : null}
+                        <Button
+                            type="primary"
+                            onClick={()=>{
+                                this.selectTaskProgressLog();
+                                this.setState({
+                                    visible: true
+                                })
+                            }}
+                        >
+                            操作日志
+                        </Button>
+                    </div>
+                </div>
+                <div style={{
+                    paddingTop:'10px'
+                }}>
+                    <Spin spinning={this.state.progressLogLoading}>
+                        <Table
+                            columns={this.state.columns}
+                            scroll={{ x: 'max-content', y: 0 }}
+                            dataSource={this.state.dataSource}
+                            pagination={false}
+                            bordered
+                            size={'small'}
+                        />
+                    </Spin>
+                </div>
+                {this.state.visible ? <Modal
+                    maskClosable={false}
+                    width="800px"
+                    visible={this.state.visible}
+                    onCancel={()=>{
+                        this.setState({
+                            visible: false
+                        })
+                    }}
+                    title="操作日志"
+                    footer=""
+                    className="admin-desc-content"
+                >
+                    <div className="patent-table patent-table-center">
+                        <Spin spinning={this.state.loading}>
+                            <Table
+                                columns={this.state.columnsA}
+                                dataSource={this.state.dataSourceA}
+                                pagination={false}
+                                bordered
+                                size="small"
+                            />
+                        </Spin>
+                    </div>
+                </Modal> : null}
+            </div>
+        )
+    }
+}
+
+export default PatentSchedule;

+ 221 - 0
js/component/manageCenter/project/task/payApplyReject/component/orderPaymentModal.js

@@ -0,0 +1,221 @@
+import React,{Component} from 'react';
+import {Button, message, Modal, Spin, Table} from "antd";
+import $ from "jquery";
+import PayRecord from "../../../../components/checkProject/payRecord";
+
+class OrderPaymentModal extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: false,
+            selectOrderPayments: [],
+            payRecordVisible: false,
+            orderPaymentsId: 0,
+            ContactsListsNew: [
+                {
+                    title: '编号',
+                    dataIndex: 'id',
+                    key: 'id',
+                },
+                {
+                    title: '供应商名称',
+                    dataIndex: 'companyName',
+                    key: 'companyName',
+                    render: (text, record) => {
+                        return (
+                            <div>
+                                {text+'-'+record.tpcId}
+                                {
+                                    text !== record.tpcName ?
+                                        '('+record.tpcName+')' : ''
+                                }
+                            </div>
+                        )
+                    },
+                },
+                {
+                    title: '支付类型',
+                    dataIndex: 'chooseType',
+                    key: 'chooseType',
+                    render: (text, record) => {
+                        return (
+                            <div>
+                                {text === 0 ? '第三方' : text === 1 ? '催款' : '官费'}
+                            </div>
+                        )
+                    },
+                },
+                {
+                    title: '申请支付金额(万元)',
+                    dataIndex: 'applicationAmount',
+                    key: 'applicationAmount',
+                    render: (text, record) => {
+                        return (
+                            <div>
+                                {/*类型为官费时显示申请支付金额与申请支付数量*/}
+                                {/*{*/}
+                                {/*    !(this.props.projectType === 2 || (this.props.projectType === 1 && record.patentType === 0)) || record.chooseType === 2 ?*/}
+                                {/*        text :*/}
+                                {/*        '/'*/}
+                                {/*}*/}
+                                {text}
+                            </div>
+                        )
+                    }
+                },
+                {
+                    title: '申请支付数量',
+                    dataIndex: 'quantity',
+                    key: 'quantity',
+                    render: (text, record) => {
+                        return (
+                            <div>
+                                {/*类型为官费时显示申请支付金额与申请支付数量*/}
+                                {/*{*/}
+                                {/*    this.props.projectType === 2 || (this.props.projectType === 1 &&record.patentType === 0) || record.chooseType === 2?*/}
+                                {/*        text :*/}
+                                {/*        '/'*/}
+                                {/*}*/}
+                                {text}
+                            </div>
+                        )
+                    }
+                },
+                {
+                    title: '申请时间',
+                    dataIndex: 'createTimes',
+                    key: 'createTimes',
+                },
+                {
+                    title: '状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text, record) => {
+                        return (
+                            <div className="gutter-box" style={{
+                                width: '100%',
+                                display: 'flex',
+                            }}>
+                                <div className="operation">
+                                    {
+                                        text === 0 ? '审核中' :
+                                            text === 1 ? '审核通过' :
+                                                text === 2 ? '已驳回' :
+                                                    text === 3 ? '支付完成' : '已取消'
+                                    }
+                                </div>
+                                <Button type="primary" size='small' style={{marginLeft:'10px'}} onClick={()=>{
+                                    this.setState({
+                                        payRecordVisible: true,
+                                        orderPaymentsId: record.id,
+                                    })
+                                }}>
+                                    {this.operationJudgmentName(text)}
+                                </Button>
+                            </div>
+                        )
+                    },
+                },
+            ]
+        }
+        this.getSelectOrderPayment = this.getSelectOrderPayment.bind(this);
+    }
+
+    componentDidMount() {
+        if(this.props.tid){
+            this.getSelectOrderPayment();
+        }
+    }
+
+    //0审核 1待支付 2驳回 3已支付 4取消
+    operationJudgmentName(id) {
+        if(this.props.isAuditPayment){          //财务
+            return id === 0 ? '待审核' :
+                id === 1 ? '待支付' :
+                    id === 2 ? '查看详情' : '查看详情'
+        }else{
+            return id === 0 ? '待审核' :
+                id === 1 ? '待支付' :
+                    id === 2 ? '查看详情' : '查看详情'
+        }
+    }
+
+    //支付列表
+    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(
+            <Modal
+                maskClosable={false}
+                className="customeDetails"
+                footer={false}
+                title="支付记录"
+                width="900px"
+                visible={this.props.visible}
+                onOk={()=>{
+                    this.props.onSuccess && this.props.onSuccess();
+                }}
+                onCancel={()=>{
+                    this.props.onCancer && this.props.onCancer();
+                }}
+            >
+                <Spin spinning={this.state.loading}>
+                    <Table
+                        pagination={false}
+                        columns={this.state.ContactsListsNew}
+                        dataSource={this.state.selectOrderPayments}
+                        onRowClick={this.tableRowClickOne}
+                        style={{
+                            cursor: 'pointer',
+                        }}
+                        scroll={{ x: 'max-content', y: 0 }}
+                        bordered
+                        size="small"
+                    />
+                </Spin>
+                {this.state.payRecordVisible ? <PayRecord
+                    {...this.props}
+                    payId={this.state.orderPaymentsId}
+                    visible={this.state.payRecordVisible}
+                    tid={this.props.tid}
+                    isAuditPayment={this.props.isAuditPayment}
+                    projectType={this.props.projectType}
+                    changeVisible={()=>{
+                        this.getSelectOrderPayment();
+                        this.setState({
+                            payRecordVisible: false,
+                            orderPaymentsId: 0,
+                        })
+                    }}
+                /> : <div/>}
+            </Modal>
+        )
+    }
+}
+
+export default OrderPaymentModal;

+ 391 - 0
js/component/manageCenter/project/task/payApplyReject/detailsModal/index.js

@@ -0,0 +1,391 @@
+import React,{Component} from 'react';
+import {message, Modal, Tabs} from "antd";
+import { cuiJieDian } from '@/dataDic.js'
+import ProjectOverview from './projectOverview'
+import {splitUrl} from '@/tools'
+import CheckProject from "../../../../components/checkProject";
+import $ from "jquery";
+import OrderItemStatus from "../../../../../common/orderItemStatus";
+
+const { TabPane } = Tabs
+
+class DetailsModal extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: false,
+            activeKey:'1',
+            paySubject: [],
+            orderDtails: {},
+            containOfficialFees:0,//官费缴费情况
+        }
+        this.visitCancel = this.visitCancel.bind(this);
+        this.getCsortData = this.getCsortData.bind(this);
+    }
+
+    async componentDidMount() {
+        if(this.props.tid){
+            this.waiDetail();
+            this.thirdTable(this.props.tid);
+            this.getOrderNewDetail();
+            await this.xiangqing(this.props.tid);
+            await this.getCsortData(this.state.sort)
+            await this.payNodeTable(this.props.tid);
+
+        }
+    }
+
+    // 获取csort下的数据
+    getCsortData(cSort) {
+        return cuiJieDian.map((item) => {
+            if (item.value == cSort) {
+                this.setState({
+                    paySubject: item.children,
+                })
+            }
+        })
+    }
+
+    visitOk(){
+        this.setState({
+            oldInfor: {}
+        });
+    }
+
+    visitCancel(){
+        this.setState({
+            oldInfor: {}
+        });
+        this.props.visitCancel();
+    }
+
+    waiDetail() {
+        let url = window.location.href.substring(7)
+        this.setState({
+            loading: true,
+        })
+        $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url:
+                globalConfig.context + '/api/admin/outsourceOrg/orderOutsourceDtails',
+            data: {
+                tid: this.props.tid,
+                orderNo: this.props.orderNo,
+            },
+        }).done(
+            function (data) {
+                this.setState({
+                    loading: false,
+                })
+                if (!data.error.length && data.data) {
+                    if(data.data.unitNumber){
+                        this.setState({
+                            oldInfor: {
+                                companyName:data.data.companyName,
+                                unitPrice:data.data.unitPrice,
+                                unitNumber:data.data.unitNumber,
+                                amount:data.data.amount,
+                                outsourceRemarks:data.data.outsourceRemarks,
+                                refundStatus: data.data.refundStatus,
+                                pictureUrl: data.data.pictureUrl
+                                    ? splitUrl(
+                                        data.data.pictureUrl,
+                                        ',',
+                                        globalConfig.avatarHost + '/upload',
+                                        url
+                                    )
+                                    : [], //图片地址
+                            }
+                        })
+                    }else{
+                        this.setState({
+                            oldInfor: {}
+                        })
+                    }
+                    this.setState({
+                        containOfficialFees: data.data.actualOfficial,//官费类型  0实际已缴费  1实际未缴费
+                        orderDtails: data.data,
+                        startType: data.data.startType, //类型
+                        mid: data.data.id,
+                        outsourceRemarks: data.data.outsourceRemarks,
+                        refundStatus: data.data.refundStatus,
+                        pictureUrl: data.data.pictureUrl
+                            ? splitUrl(
+                                data.data.pictureUrl,
+                                ',',
+                                globalConfig.avatarHost + '/upload',
+                                url
+                            )
+                            : [], //图片地址
+                    })
+                } else if (data.error && data.error.length) {
+                    message.warning(data.error[0].message)
+                } else if (!data.data) {
+                    this.setState({
+                        refundStatus: undefined,
+                    })
+                }
+            }.bind(this)
+        )
+    }
+
+    //查看第三方信息表格
+    thirdTable(id) {
+        this.setState({
+            loadData: true,
+        })
+        $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/company/selectCompany',
+            data: {
+                tid: id,
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message)
+                } else {
+                    let companyNameArr = []
+                    let theArr = []
+                    let thisData = []
+                    let arr = data.data || []
+                    let allTotalAmount = 0
+                    for (let i = 0; i < arr.length; i++) {
+                        thisData = arr[i]
+                        allTotalAmount =
+                            (allTotalAmount * 10000 + thisData.totalAmount * 10000) / 10000
+                        companyNameArr.push(thisData.companyName);
+                        thisData.key = i;
+                        theArr.push(thisData)
+                    }
+
+                    for(let d=0;d<theArr.length;d++){
+                        theArr[d].companyName = theArr[d].companyName+ '-' + theArr[d].id;
+                        // companyNameArr[d] = {
+                        //     companyName: theArr[d].companyName,
+                        //     id: theArr[d].id,
+                        // }
+                    }
+
+                    if (!allTotalAmount) {
+                        allTotalAmount = 0
+                    }
+
+                    this.setState({
+                        thirdInfoList: theArr,
+                        allTotalAmount: allTotalAmount,
+                    })
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    payNodeTable(id) {
+        this.setState({
+            loadData: true,
+        })
+        return $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/company/selectPaymentNode',
+            data: {
+                tid: id,
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message)
+                } else {
+                    let payNodeArr = []
+                    let thisData = []
+                    let arr = data.data || []
+                    //对#5283自定义的补充展示
+                    this.state.paySubject.push({ key: '自定义', value: '0' })
+                    for (let i = 0; i < arr.length; i++) {
+                        thisData = arr[i]
+                        //遍历paySubject,获取当前dunType对应的key
+                        this.state.paySubject.map((item) => {
+                            if (item.value == thisData.dunType) {
+                                thisData.dunType = item.key
+                            }
+                        })
+                        payNodeArr.push({
+                            key: i,
+                            id: thisData.id, //付款节点Id
+                            tid: thisData.tid,
+                            companyName: thisData.companyName, //供应商名称
+                            projectType: thisData.projectType, //项目分类
+                            dunType: thisData.dunType, //催款分类
+                            unitPrice: thisData.unitPrice, //单价
+                            quantity: thisData.quantity, //数量
+                            totalAmount: thisData.totalAmount, //总价
+                            partyAmount: thisData.partyAmount, //付款
+                            partyTimes: thisData.partyTimes, //付款时间
+                            cid: thisData.cid, //机构id
+                        })
+                    }
+
+                    for(let d=0;d<payNodeArr.length;d++){
+                        payNodeArr[d].companyName = payNodeArr[d].companyName+ '-' + payNodeArr[d].cid;
+                    }
+
+                    this.setState({
+                        payNodeList: payNodeArr,
+                    })
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    //订单详情
+    xiangqing(id) {
+        return $.ajax({
+            method: 'get',
+            dataType: 'json',
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/orderProject/orderTaskDetail',
+            data: {
+                id: id,
+            },
+            success: function (data) {
+                let thisdata = data.data
+                if (data.error.length || data.data.list == '') {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message)
+                    }
+                } else {
+                    localStorage.setItem('cSort', thisdata.sort);
+                    this.setState({
+                        orderTaskOfficialCost: thisdata.officialCost,    //官费 0无 1有
+                        sort: thisdata.sort,
+                    })
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                })
+            }.bind(this)
+        )
+    }
+
+    getOrderNewDetail() {
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/newOrder/getOrderNewDetail",
+            data: {
+                orderNo: this.props.orderNo
+            },
+            success: function (data) {
+                if (data.error.length || data.data.list == "") {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                } else {
+                    let thisdata = data.data;
+                    this.setState({
+                        deleteSign:thisdata.deleteSign,
+                    });
+                }
+            }.bind(this)
+        });
+    }
+
+    render() {
+        return(
+            <Modal
+                maskClosable={false}
+                className="customeDetails"
+                footer=""
+                title=""
+                width="900px"
+                visible={this.props.visible}
+                onOk={this.visitOk}
+                onCancel={this.visitCancel}
+            >
+                <Tabs
+                    defaultActiveKey='1'
+                    activeKey={this.state.activeKey}
+                    onChange={(e) => {
+                        this.setState({
+                            activeKey: e
+                        })
+                        if(e === '1'){
+                            this.waiDetail();
+                            this.thirdTable(this.props.tid);
+                            this.payNodeTable(this.props.tid);
+                            this.xiangqing(this.props.tid);
+                        }
+                    }}
+                    tabBarExtraContent={
+                        <div style={{fontWeight:'bold',paddingRight:'15px'}}>
+                          <span>
+                            项目名称:
+                            <span style={{color:'#F00',paddingRight:'5px'}}>{this.props.taskName}</span>
+                          </span>
+                          <span style={{marginLeft:'15px'}}>
+                            项目编号:
+                              <span style={{color:'#F00',paddingRight:'5px'}}>
+                                  {this.props.taskID}
+                              </span>
+                          </span>
+                            <OrderItemStatus deleteSign={this.state.deleteSign}/>
+                        </div>
+                    }
+                >
+                    <TabPane tab="外包/供应商信息" key="1">
+                        {this.state.activeKey === '1' ? <CheckProject
+                            {...this.props}
+                            tid={this.props.tid}
+                            oldInfor={this.state.oldInfor}
+                            orderTaskOfficialCost={this.state.orderTaskOfficialCost}    //是否含官费  0无1有
+                            containOfficialFees={this.state.containOfficialFees}        //0:实际已缴费 1:实际未缴费
+                            status={this.state.refundStatus}
+                            mid={this.state.mid}
+                            patentNameType={this.state.orderDtails.patentNameType}
+                            patentName={this.state.orderDtails.patentName}
+                            patentType={this.state.orderDtails.patentType}
+                            projectType={this.props.projectType}
+                            projectStatus={this.props.projectStatus}
+                            thirdInfoList={this.state.thirdInfoList}
+                            dataSource={this.state.payNodeList}
+                            outsourceRemarks={this.state.outsourceRemarks}
+                            fileList={this.state.pictureUrl}
+                            startType={this.state.startType}
+                            onRefresh={()=>{
+                                this.waiDetail();
+                                this.thirdTable(this.props.tid);
+                                this.payNodeTable(this.props.tid);
+                                this.xiangqing(this.props.tid);
+                                this.props.refreshList && this.props.refreshList();
+                            }}
+                        /> : <div/>}
+                    </TabPane>
+                    <TabPane tab="项目概况" key="2">
+                        <ProjectOverview projectStatus={this.props.projectStatus} tid={this.props.tid} taskName={this.props.taskName}/>
+                    </TabPane>
+                </Tabs>
+            </Modal>
+        )
+    }
+}
+
+export default DetailsModal;

+ 20 - 0
js/component/manageCenter/project/task/payApplyReject/detailsModal/outsourceBlock.js

@@ -0,0 +1,20 @@
+import React,{Component} from 'react';
+
+class outsourceBlock extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+
+        }
+    }
+
+    render() {
+        return(
+            <div>
+                22
+            </div>
+        )
+    }
+}
+
+export default outsourceBlock;

File diff suppressed because it is too large
+ 1169 - 0
js/component/manageCenter/project/task/payApplyReject/detailsModal/projectOverview.js


+ 202 - 0
js/component/manageCenter/project/task/payApplyReject/filterColumn.js

@@ -0,0 +1,202 @@
+import React,{Component} from 'react';
+import {Button, Form, Input, message, Select} from "antd";
+import $ from "jquery/src/ajax";
+
+class FilterColumn extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            departmentArr: [],
+        }
+        this.handleReset = this.handleReset.bind(this);
+        this.departmentList = this.departmentList.bind(this);
+    }
+
+    componentDidMount() {
+        this.departmentList();
+    }
+
+    handleReset(){
+        this.props.form.resetFields();
+        this.props.onResetSearch && this.props.onResetSearch();
+    }
+
+    handleSubmit(e){
+        e.preventDefault();
+        this.props.form.validateFieldsAndScroll((err, values) => {
+            if (err) {
+                return;
+            }
+            this.props.onSearch(values);
+        })
+    }
+
+    //部门
+    departmentList() {
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/organization/selectSuperId",
+            data: {},
+            success: function (data) {
+                let thedata = data.data;
+                let theArr = [];
+                if (!thedata) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                } else {
+                    thedata.map(function (item, index) {
+                        theArr.push({
+                            key: index,
+                            name: item.name,
+                            id: item.id,
+                        });
+                    });
+                }
+                this.setState({
+                    departmentArr: theArr,
+                });
+            }.bind(this),
+        }).always(
+            function () {
+            }.bind(this)
+        );
+    }
+
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        return (
+            <div className="user-search">
+                <Form
+                    layout="inline"
+                    name="basic"
+                    initialValues={{
+                        remember: true,
+                    }}
+                    onSubmit={(e)=>{
+                        this.handleSubmit(e)
+                    }}
+                >
+                    <Form.Item
+                        label="合同编号"
+                    >
+                        {getFieldDecorator('contractNo', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入合同编号"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="订单编号"
+                    >
+                        {getFieldDecorator('orderNo', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入订单编号"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="客户名称"
+                    >
+                        {getFieldDecorator('userName', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入客户名称"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="部门"
+                    >
+                        {getFieldDecorator('depId', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Select placeholder="请选择部门" style={{
+                                width: '200px',
+                                marginTop: '0px',
+                            }}>
+                                {
+                                    this.state.departmentArr.map(function (item) {
+                                        return <Select.Option key={item.id} value={item.id}>{item.name}</Select.Option>
+                                    })
+                                }
+                            </Select>
+                        )}
+
+                    </Form.Item>
+                    <Form.Item
+                        label="发起人"
+                    >
+                        {getFieldDecorator('aname', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入发起人"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="财务名称"
+                    >
+                        {getFieldDecorator('financeName', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入财务名称"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="分类名称"
+                    >
+                        {getFieldDecorator('cname', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入分类名称"/>
+                        )}
+                    </Form.Item>
+                    <Form.Item
+                        label="项目名称"
+                    >
+                        {getFieldDecorator('pname', {
+                            rules: [{ required: false, message: '' }],
+                        })(
+                            <Input style={{ width: '200px' }} placeholder="请输入项目名称"/>
+                        )}
+                    </Form.Item>
+                    {/*<Form.Item*/}
+                    {/*    label="状态"*/}
+                    {/*>*/}
+                    {/*    {getFieldDecorator('status', {*/}
+                    {/*        rules: [{ required: false, message: '' }],*/}
+                    {/*    })(*/}
+                    {/*        <Select*/}
+                    {/*            placeholder="选择状态"*/}
+                    {/*            style={{*/}
+                    {/*                width: '200px',*/}
+                    {/*            }}*/}
+                    {/*        >*/}
+                    {/*            <Select.Option value={0}>审核</Select.Option>*/}
+                    {/*            <Select.Option value={1}>待支付</Select.Option>*/}
+                    {/*            <Select.Option value={2}>驳回</Select.Option>*/}
+                    {/*            <Select.Option value={3}>已支付</Select.Option>*/}
+                    {/*            <Select.Option value={4}>已取消</Select.Option>*/}
+                    {/*        </Select>*/}
+                    {/*    )}*/}
+                    {/*</Form.Item>*/}
+                    <Form.Item>
+                        <Button type="primary" htmlType="submit" style={{ marginLeft: 10 }}>
+                            搜索
+                        </Button>
+                    </Form.Item>
+                    <Form.Item>
+                        <Button style={{ marginLeft: 10 }} onClick={this.handleReset}>
+                            重置
+                        </Button>
+                    </Form.Item>
+                </Form>
+            </div>
+        )
+    }
+}
+
+const WrappedNormalLoginForm = Form.create()(FilterColumn);
+
+export default WrappedNormalLoginForm

+ 424 - 0
js/component/manageCenter/project/task/payApplyReject/index.jsx

@@ -0,0 +1,424 @@
+import React,{Component} from 'react';
+import $ from "jquery/src/ajax";
+import {
+    Spin,
+    Table,
+    message,
+    Tooltip, Tabs, Button,Modal
+} from "antd";
+import {ShowModal,getProjectStatus} from "@/tools";
+import FilterColumn from './filterColumn';
+import DetailsModal from './detailsModal/index';
+import OrderPaymentModal from './component/orderPaymentModal';
+import './index.less';
+import CheckProject from "../../../components/checkProject";
+import PayRecord from "../../../components/checkProject/payRecord";
+import {ChooseList} from "../../../order/orderNew/chooseList";
+import {getProjectName} from "../../../../tools";
+
+const { TabPane } = Tabs;
+
+class PayApplyReject extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: true,
+            columns: [
+                {
+                    title: "支付编号",
+                    dataIndex: "key",
+                    key: "key",
+                },
+                {
+                    title: "项目编号",
+                    dataIndex: "tid",
+                    key: "tid",
+                },
+                {
+                    title: "项目名称",
+                    dataIndex: "pname",
+                    key: "pname",
+                },
+                {
+                    title: "项目状态",
+                    dataIndex: "projectStatus",
+                    key: "projectStatus",
+                    render: (text) => {
+                        return getProjectName(text);
+                    },
+                },
+                {
+                    title: "分类名称",
+                    dataIndex: "cname",
+                    key: "cname",
+                },
+                {
+                    title: "合同编号",
+                    dataIndex: "contractNo",
+                    key: "contractNo",
+                },
+                {
+                    title: "订单编号",
+                    dataIndex: "orderNo",
+                    key: "orderNo",
+                },
+                {
+                    title: "客户名称",
+                    dataIndex: "userName",
+                    key: "userName",
+                    render: (text) => {
+                        return (
+                            <Tooltip placement="bottom" title={text && text.length > 9 ? text : ''}>
+                                {text && text.length > 9 ? text.substr(0, 9) + "..." : text}
+                            </Tooltip>
+                        )
+                    },
+                },
+                {
+                    title: "部门名称",
+                    dataIndex: "depName",
+                    key: "depName",
+                    render: (text) => {
+                        return (
+                            <Tooltip placement="bottom" title={text && text.length > 9 ? text : ''}>
+                                {text && text.length > 9 ? text.substr(0, 9) + "..." : text}
+                            </Tooltip>
+                        )
+                    },
+                },
+                // {
+                //     title: "实际总付款",
+                //     dataIndex: "costAmount",
+                //     key: "costAmount",
+                // },
+                {
+                    title: "付款类型",
+                    dataIndex: "chooseType",
+                    key: "chooseType",
+                    render: (text) => {
+                        return text == 0 ? '第三方成本' :
+                            text == 1 ? '催款节点' :'官费';
+                    },
+                },
+                {
+                    title: "本次申请金额",
+                    dataIndex: "applicationAmount",
+                    key: "applicationAmount",
+                    render: (text) => {
+                        return isNaN(parseFloat(text)) ? text : parseFloat(text);
+                    }
+                },
+                {
+                    title: "已支付",
+                    dataIndex: "paymentAmount",
+                    key: "paymentAmount",
+                    render: (text) => {
+                        return isNaN(parseFloat(text)) ? text : parseFloat(text);
+                    },
+                },
+                {
+                    title: "供应商",
+                    dataIndex: "companyName",
+                    key: "companyName",
+                },
+                {
+                    title: "申请人",
+                    dataIndex: "aname",
+                    key: "aname",
+                },
+                {
+                    title: "财务名称",
+                    dataIndex: "financeName",
+                    key: "financeName",
+                },
+                {
+                    title: "状态",
+                    dataIndex: "status",
+                    key: "status",
+                    render: (text) => {
+                        return text === 0 ? '审核' :
+                            text === 1 ? '待支付' :
+                                text === 2 ? '驳回' :
+                                    text === 3 ? '已支付' :
+                                        text === 4 ? '已取消' : '';
+                    },
+                },
+                {
+                    title: "创建时间",
+                    dataIndex: "createTime",
+                    key: "createTime",
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'action',
+                    key: 'action',
+                    render: (text, record) => {
+                        return (
+                            <div style={{
+                                display:'flex',
+                                alignItems:'center',
+                            }}>
+                                <Button type="primary" size="small" onClick={(e) => {
+                                    e.stopPropagation();
+                                    this.setState({
+                                        payRecordVisible: true,
+                                        orderPaymentsId: record.id,
+                                        tid: record.tid,
+                                        projectType: record.projectType,
+                                    })
+                                }}>
+                                    {
+                                        record.status === 0 ? '待审核' :
+                                            record.status === 1 ? '待支付' :
+                                                record.status === 2 ? '查看详情' : '查看详情'
+                                    }
+                                </Button>
+                                <Button
+                                    type="primary"
+                                    style={{
+                                        marginLeft: "10px",
+                                        background: "orangered",
+                                        border: "none"
+                                    }}
+                                    size="small"
+                                    onClick={(e) => {
+                                        e.stopPropagation();
+                                        this.setState({
+                                            paymentVisible: true,
+                                            tid: record.tid,
+                                            projectType: record.projectType,
+                                        })
+                                    }}>
+                                    付款记录
+                                </Button>
+                            </div>
+                        )
+                    }
+                }
+            ],
+            dataSource: [],
+            selectedRowKeys: [],
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page,this.state.searchInfor);
+                }.bind(this),
+                showTotal: function (total) {
+                    return "共" + total + "条数据";
+                },
+            },
+            page: 1,
+            selectInfor: {},
+            visible: false,
+            paymentVisible: false,
+            tid: 0,
+            projectType: 0,
+            payRecordVisible: false,
+            orderPaymentsId: 0,
+        }
+        this.changeList = this.changeList.bind(this);
+    }
+
+    componentDidMount() {
+        this.loadData()
+    }
+
+    loadData(pageNo,data={}) {
+        this.setState({
+            loading: true,
+        });
+        data.pageNo = pageNo || 1;
+        data.pageSize = this.state.pagination.pageSize;
+        data.status = 2;   //驳回状态
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/company/selectPaymentList",
+            data: data,
+            success: function (data) {
+                ShowModal(this);
+                let theArr = [];
+                if (data.error.length || data.data.list == "") {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                } else {
+                    this.setState({
+                        page: data.data.pageNo
+                    });
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        let obj = thisdata;
+                        obj.key = thisdata.id;
+                        theArr.push(obj);
+                    }
+                    this.state.pagination.total = data.data.totalCount;
+                }
+                if (data.data && data.data.list && !data.data.list.length) {
+                    this.state.pagination.total = 0;
+                }
+                this.setState({
+                    dataSource: theArr,
+                    pageNo: pageNo,
+                    pagination: this.state.pagination,
+                });
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                });
+            }.bind(this)
+        );
+    }
+
+    tableRowClick(record){
+        this.setState({
+            visible: true,
+            selectInfor: record,
+        })
+    }
+
+    changeList(arr) {
+        const newArr = [];
+        this.state.columns.forEach(item => {
+            arr.forEach(val => {
+                if (val === item.title) {
+                    newArr.push(item);
+                }
+            });
+        });
+        this.setState({
+            changeList: newArr
+        });
+    }
+
+    render() {
+        return (
+            <div className="user-content">
+                <div className="content-title">
+                    <span>付款驳回列表</span>
+                </div>
+                <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
+                    <TabPane tab="搜索" key="1">
+                        <div style={{paddingTop:'10px'}}>
+                            <FilterColumn
+                                {...this.props}
+                                onSearch={(data)=>{
+                                    this.setState({
+                                        searchInfor: data
+                                    });
+                                    this.loadData(1,data);
+                                }}
+                                onResetSearch={()=>{
+                                    this.setState({
+                                        searchInfor: {}
+                                    });
+                                    this.loadData();
+                                }}
+                            />
+                        </div>
+                    </TabPane>
+                    <TabPane tab="更改表格显示数据" key="2">
+                        <div style={{ marginLeft: 10 }}>
+                            <ChooseList
+                                columns={this.state.columns}
+                                changeFn={this.changeList}
+                                changeList={this.state.changeList}
+                                top={55}
+                                margin={11}
+                            />
+                        </div>
+                    </TabPane>
+                </Tabs>
+                <div className="patent-table">
+                    <Spin spinning={this.state.loading}>
+                        <Table
+                            columns={
+                                this.state.changeList
+                                    ? this.state.changeList
+                                    : this.state.columns
+                            }
+                            dataSource={this.state.dataSource}
+                            pagination={this.state.pagination}
+                            onRowClick={(record)=>{
+                                this.tableRowClick(record)
+                            }}
+                            style={{
+                                cursor: 'pointer',
+                            }}
+                            scroll={{ x: "max-content", y: 0 }}
+                            bordered
+                            size="small"
+                        />
+                    </Spin>
+                </div>
+                {
+                    this.state.visible ?
+                        <DetailsModal
+                            tid={this.state.selectInfor.tid}
+                            orderNo={this.state.selectInfor.orderNo}
+                            projectType={this.state.selectInfor.projectType}
+                            projectStatus={this.state.selectInfor.projectStatus}
+                            taskName={this.state.selectInfor.pname}
+                            taskID={this.state.selectInfor.tid}
+                            visible={this.state.visible}
+                            refreshList={()=>{
+                                this.loadData(this.state.page,this.state.searchInfor);
+                            }}
+                            visitCancel={()=>{
+                                this.setState({
+                                    visible: false
+                                })
+                                this.loadData(this.state.page,this.state.searchInfor);
+                            }}/> : <div/>
+                }
+                {this.state.paymentVisible ?
+                    <OrderPaymentModal
+                        tid={this.state.tid}
+                        visible={this.state.paymentVisible}
+                        projectType={this.state.projectType}
+                        onCancer={()=>{
+                            this.setState({
+                                paymentVisible: false,
+                                tid: 0,
+                                projectType: 0,
+                            });
+                            this.loadData(this.state.page,this.state.searchInfor);
+                        }}
+                        onSuccess={()=>{
+                            this.setState({
+                                paymentVisible: false,
+                                tid: 0,
+                                projectType: 0,
+                            });
+                            this.loadData(this.state.page,this.state.searchInfor);
+                        }}/> :
+                    <div/>
+                }
+                {this.state.payRecordVisible ? <PayRecord
+                    {...this.props}
+                    payId={this.state.orderPaymentsId}
+                    visible={this.state.payRecordVisible}
+                    tid={this.state.tid}
+                    projectType={this.state.projectType}
+                    changeVisible={()=>{
+                        this.loadData(this.state.page,this.state.searchInfor);
+                        this.setState({
+                            payRecordVisible: false,
+                            orderPaymentsId: 0,
+                            tid: 0,
+                            projectType: 0,
+                        })
+                    }}
+                /> : <div/>}
+            </div>
+        );
+    }
+}
+
+export default PayApplyReject

+ 0 - 0
js/component/manageCenter/project/task/payApplyReject/index.less


+ 119 - 0
js/component/manageCenter/project/task/projectLog.jsx

@@ -0,0 +1,119 @@
+import React,{Component} from "react";
+import {message, Modal, Spin, Table} from "antd";
+import $ from "jquery/src/ajax";
+
+class ProjectLog extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading:false,
+            dataSource:[],
+            colunmn:[
+                {
+                    title: "序号",
+                    dataIndex: "key",
+                    key: "key",
+                },
+                // {
+                //     title: "客户姓名",
+                //     dataIndex: "key",
+                //     key: "key",
+                // },
+                // {
+                //     title: "项目名称",
+                //     dataIndex: "key",
+                //     key: "key",
+                // },
+                {
+                    title: "操作人",
+                    dataIndex: "aName",
+                    key: "aName",
+                },
+                {
+                    title: "接收人",
+                    dataIndex: "receiveName",
+                    key: "receiveName",
+                },
+                {
+                    title: "操作类型",
+                    dataIndex: "statusName",
+                    key: "statusName",
+                },
+                {
+                    title: "操作时间",
+                    dataIndex: "createTimes",
+                    key: "createTimes",
+                },
+            ]
+        }
+        this.loadData = this.loadData.bind(this);
+    }
+
+    loadData() {
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/orderProject/taskAttributionLog",
+            data: {
+                tid: this.props.projectLogId,
+            },
+            success: function (data) {
+                if (data.error && data.error.length) {
+                    message.warning(data.error[0].message);
+                }else{
+                    let theArr = [];
+                    for (let i = 0; i < data.data.length; i++) {
+                        let thisdata = data.data[i];
+                        thisdata.key = i+1 ;
+                        theArr.push(thisdata)
+                    }
+                    this.setState({
+                        dataSource: theArr,
+                    })
+                }
+            }.bind(this),
+        }).always(
+            function () {
+                this.setState({
+                    loading: false,
+                });
+            }.bind(this)
+        );
+
+    }
+
+    componentDidMount() {
+        this.loadData();
+    }
+
+    render() {
+        return (
+            <Modal
+                style={{ position: "relative" }}
+                title="项目日志"
+                visible={this.props.visible}
+                onCancel={this.props.onCancel}
+                footer={null}
+                width={800}
+                destroyOnClose={true}
+            >
+                <Spin spinning={this.state.loading} >
+                    <Table
+                        columns={this.state.colunmn}
+                        dataSource={this.state.dataSource}
+                        pagination={false}
+                        scroll={{ x: "max-content", y: 0 }}
+                        bordered
+                        size="small"
+                    />
+                </Spin>
+            </Modal>
+        )
+    }
+}
+
+export default ProjectLog;

+ 121 - 0
js/component/manageCenter/set/projectConfigure/addOfficialFeePrice.js

@@ -0,0 +1,121 @@
+import React,{Component} from "react";
+import {Form, Input, Button, Checkbox, Select, Spin} from 'antd';
+import $ from "jquery/src/ajax";
+import {message, Modal} from "antd";
+
+class AddOfficialFeePrice extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: false
+        }
+    }
+
+    //增加 修改
+    addSoftWritingPriceFn(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                let api ;
+                if(Object.keys(this.props.infor).length){
+                    api = '/api/admin/company/updateOfficialFeePrice';
+                    values.id = this.props.infor.id;
+                } else {
+                    api = '/api/admin/company/addOfficialFeePrice';
+                }
+                $.ajax({
+                    method: "post",
+                    dataType: "json",
+                    crossDomain: false,
+                    url:globalConfig.context + api,
+                    data:values,
+                }).done(function (data) {
+                    this.setState({
+                        loading: false
+                    });
+                    if (!data.error.length) {
+                        message.success(Object.keys(this.props.infor).length ? '修改成功!' : '新增成功!');
+                        this.props.successFn();
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this));
+            }
+        });
+    }
+
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        return (
+            <Modal
+                maskClosable={false}
+                className="customeDetails"
+                title={Object.keys(this.props.infor).length ? "修改" : "新增"}
+                width='350px'
+                visible={this.props.visible}
+                onCancel={this.props.onCancel}
+                footer={null}
+            >
+                <Spin spinning={this.state.loading}>
+                    <Form onSubmit={(e)=>{
+                        this.addSoftWritingPriceFn(e)
+                    }}>
+                        <Form.Item label="专利类型">
+                            {getFieldDecorator('type', {
+                                initialValue: this.props.infor.type,
+                                rules: [{ required: true, message: '请选择专利类型!' }],
+                            })(
+                                <Select style={{ width:'200px'}}>
+                                    <Select.Option value={0}>实用新型</Select.Option>
+                                    <Select.Option value={1}>外观专利</Select.Option>
+                                    <Select.Option value={2}>发明专利</Select.Option>
+                                </Select>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="金额">
+                            {getFieldDecorator('amount', {
+                                initialValue: this.props.infor.amount,
+                                rules: [{ required: true, message: '请输入金额!' }],
+                            })(
+                                <Input placeholder="请输入金额" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="减缴比例85%">
+                            {getFieldDecorator('proportion85', {
+                                initialValue: this.props.infor.proportion85,
+                                rules: [{ required: true, message: '请输入减缴比例85%!' }],
+                            })(
+                                <Input placeholder="请输入减缴比例85%" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="备注">
+                            {getFieldDecorator('remarks', {
+                                initialValue: this.props.infor.remarks,
+                                rules: [{ required: true, message: '请输入备注!' }],
+                            })(
+                                <Input placeholder="请输入备注" type={'textarea'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item>
+                            <Button style={{
+                                width: '100%',
+                                marginTop: '18px',
+                            }} type="primary" htmlType="submit">
+                                {
+                                    Object.keys(this.props.infor).length ? '确定修改' : '确定添加'
+                                }
+                            </Button>
+                        </Form.Item>
+                    </Form>
+                </Spin>
+            </Modal>
+        )
+    }
+
+}
+
+const WrappedHorizontalLoginForm = Form.create()(AddOfficialFeePrice);
+export default WrappedHorizontalLoginForm

+ 125 - 0
js/component/manageCenter/set/projectConfigure/addPatentPrice.js

@@ -0,0 +1,125 @@
+import React,{Component} from "react";
+import {Form, Input, Button, Checkbox, Select, Spin} from 'antd';
+import $ from "jquery/src/ajax";
+import {message, Modal} from "antd";
+
+class AddPatentPrice extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: false
+        }
+    }
+
+    //增加 修改
+    addSoftWritingPriceFn(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                let api ;
+                if(Object.keys(this.props.infor).length){
+                    api = '/api/admin/company/updatePatentPrice';
+                    values.id = this.props.infor.id;
+                } else {
+                    api = '/api/admin/company/addPatentPrice';
+                }
+                $.ajax({
+                    method: "post",
+                    dataType: "json",
+                    crossDomain: false,
+                    url:globalConfig.context + api,
+                    data:values,
+                }).done(function (data) {
+                    this.setState({
+                        loading: false
+                    });
+                    if (!data.error.length) {
+                        message.success(Object.keys(this.props.infor).length ? '修改成功!' : '新增成功!');
+                        this.props.successFn();
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this));
+            }
+        });
+    }
+
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        return (
+            <Modal
+                maskClosable={false}
+                className="customeDetails"
+                title={Object.keys(this.props.infor).length ? "修改" : "新增"}
+                width='350px'
+                visible={this.props.visible}
+                onCancel={this.props.onCancel}
+                footer={null}
+            >
+                <Spin spinning={this.state.loading}>
+                    <Form onSubmit={(e)=>{
+                        this.addSoftWritingPriceFn(e)
+                    }}>
+                        <Form.Item  label="公司名称">
+                            {getFieldDecorator('companyName', {
+                                initialValue: this.props.infor.companyName,
+                                rules: [{ required: true, message: '请输入公司名称!' }],
+                            })(
+                                <Input disabled={Object.keys(this.props.infor).length !== 0} placeholder="请输入公司名称" style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="实用新型(万元)">
+                            {getFieldDecorator('utilityModel', {
+                                initialValue: this.props.infor.utilityModel,
+                                rules: [{ required: true, message: '请输入实用新型的金额!' }],
+                            })(
+                                <Input placeholder="请输入实用新型的金额" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="外观专利(万元)">
+                            {getFieldDecorator('appearancePatent', {
+                                initialValue: this.props.infor.appearancePatent,
+                                rules: [{ required: true, message: '请输入外观专利的金额!' }],
+                            })(
+                                <Input placeholder="请输入外观专利的金额" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="发明专利(万元)">
+                            {getFieldDecorator('inventionPatent', {
+                                initialValue: this.props.infor.inventionPatent,
+                                rules: [{ required: true, message: '请输入发明专利的金额!' }],
+                            })(
+                                <Input placeholder="请输入发明专利的金额" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="备注">
+                            {getFieldDecorator('remarks', {
+                                initialValue: this.props.infor.remarks,
+                                rules: [{ required: false, message: '请输入备注!' }],
+                            })(
+                                <Input placeholder="请输入备注" type={'textarea'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item>
+                            <Button style={{
+                                width: '100%',
+                                marginTop: '18px',
+                            }} type="primary" htmlType="submit">
+                                {
+                                    Object.keys(this.props.infor).length ? '确定修改' : '确定添加'
+                                }
+                            </Button>
+                        </Form.Item>
+                    </Form>
+                </Spin>
+            </Modal>
+        )
+    }
+
+}
+
+const WrappedHorizontalLoginForm = Form.create()(AddPatentPrice);
+export default WrappedHorizontalLoginForm

+ 148 - 0
js/component/manageCenter/set/projectConfigure/addSoftWritingPrice.js

@@ -0,0 +1,148 @@
+import React,{Component} from "react";
+import {Form, Input, Button, Checkbox, Select, Spin} from 'antd';
+import $ from "jquery/src/ajax";
+import {message, Modal} from "antd";
+
+class AddSoftWritingPrice extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            loading: false
+        }
+    }
+
+    //增加 修改
+    addSoftWritingPriceFn(e) {
+        e.preventDefault();
+        this.props.form.validateFields((err, values) => {
+            if (!err) {
+                this.setState({
+                    loading: true
+                });
+                let api ;
+                if(Object.keys(this.props.infor).length){
+                    api = '/api/admin/company/updateSoftWritingPrice';
+                    values.id = this.props.infor.id;
+                } else {
+                    api = '/api/admin/company/addSoftWritingPrice';
+                }
+                $.ajax({
+                    method: "post",
+                    dataType: "json",
+                    crossDomain: false,
+                    url:globalConfig.context + api,
+                    data:values,
+                }).done(function (data) {
+                    this.setState({
+                        loading: false
+                    });
+                    if (!data.error.length) {
+                        message.success(Object.keys(this.props.infor).length ? '修改成功!' : '新增成功!');
+                        this.props.successFn();
+                    } else {
+                        message.warning(data.error[0].message);
+                    }
+                }.bind(this));
+            }
+        });
+    }
+
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        return (
+            <Modal
+                maskClosable={false}
+                className="customeDetails"
+                title={Object.keys(this.props.infor).length ? "修改" : "新增"}
+                width='350px'
+                visible={this.props.visible}
+                onCancel={this.props.onCancel}
+                footer={null}
+            >
+                <Spin spinning={this.state.loading}>
+                    <Form onSubmit={(e)=>{
+                        this.addSoftWritingPriceFn(e)
+                    }}>
+                        <Form.Item label="公司名称">
+                            {getFieldDecorator('companyName', {
+                                initialValue: this.props.infor.companyName,
+                                rules: [{ required: true, message: '请输入公司名称!' }],
+                            })(
+                                <Input disabled={Object.keys(this.props.infor).length !== 0} placeholder="请输入公司名称" style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="单价">
+                            {getFieldDecorator('unitPrice', {
+                                initialValue: this.props.infor.unitPrice,
+                                rules: [{ required: true, message: '请输入单价!' }],
+                            })(
+                                <Input placeholder="请输入单价" type={'number'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="材料">
+                            {getFieldDecorator('material', {
+                                initialValue: this.props.infor.material,
+                                rules: [{ required: true, message: '请选择是否有材料!' }],
+                            })(
+                                <Select style={{ width:'200px'}}>
+                                    <Select.Option value={0}>无</Select.Option>
+                                    <Select.Option value={1}>有</Select.Option>
+                                </Select>
+                            )}
+                        </Form.Item>
+                        <Form.Item  label="加急天数">
+                            {getFieldDecorator('urgent', {
+                                initialValue: this.props.infor.urgent,
+                                rules: [{ required: true, message: '请选择加急天数!' }],
+                            })(
+                                <Select style={{ width:'200px'}}>
+                                    <Select.Option value={0}>无加急</Select.Option>
+                                    <Select.Option value={1}>加急3-5个工作日</Select.Option>
+                                    <Select.Option value={2}>加急6-10个工作日</Select.Option>
+                                    <Select.Option value={3}>加急11-15个工作日</Select.Option>
+                                    <Select.Option value={4}>加急16-20个工作日</Select.Option>
+                                    <Select.Option value={5}>加急21-25个工作日</Select.Option>
+                                    <Select.Option value={6}>加急26-30个工作日</Select.Option>
+                                </Select>
+                            )}
+                        </Form.Item>
+                        {Object.keys(this.props.infor).length ? <Form.Item label="状态">
+                            {getFieldDecorator('status', {
+                                initialValue: this.props.infor.status,
+                                rules: [{ required: true, message: '请输选择状态!' }],
+                            })(
+                                <Select style={{ width:'200px'}}>
+                                    <Select.Option value={0}>正常</Select.Option>
+                                    <Select.Option value={1}>停用</Select.Option>
+                                    <Select.Option value={2}>删除</Select.Option>
+                                </Select>
+                            )}
+                        </Form.Item> : <div/>}
+                        <Form.Item  label="备注">
+                            {getFieldDecorator('remarks', {
+                                initialValue: this.props.infor.remarks,
+                                rules: [{ required: false, message: '请输入备注!' }],
+                            })(
+                                <Input placeholder="请输入备注" type={'textarea'} style={{width:'250px'}}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item>
+                            <Button style={{
+                                width: '100%',
+                                marginTop: '18px',
+                            }} type="primary" htmlType="submit">
+                                {
+                                    Object.keys(this.props.infor).length ? '确定修改' : '确定添加'
+                                }
+                            </Button>
+                        </Form.Item>
+                    </Form>
+                </Spin>
+            </Modal>
+            )
+    }
+
+}
+
+const WrappedHorizontalLoginForm = Form.create()(AddSoftWritingPrice);
+export default WrappedHorizontalLoginForm

+ 233 - 0
js/component/manageCenter/set/projectConfigure/officialFees.js

@@ -0,0 +1,233 @@
+import React,{Component} from 'react';
+import {Button, Input, message, Select, Spin, Table, Modal, Popconfirm, Tabs} from "antd";
+import AddOfficialFeePrice from './addOfficialFeePrice'
+import $ from "jquery/src/ajax";
+import '../content.less';
+import {ChooseList} from "../../order/orderNew/chooseList";
+
+const TabPane = Tabs.TabPane;
+
+class OfficialFees extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            type:'',
+            dataSource: [],
+            columns: [
+                {
+                    title: '专利类型',
+                    dataIndex: 'type',
+                    key: 'type',
+                    render: (text) => {
+                        return text === 0 ? '实用新型' : text === 1 ? '外观专利' : '发明专利'
+                    }
+                },
+                {
+                    title: '全额(万元)',
+                    dataIndex: 'amount',
+                    key: 'amount',
+                },
+                {
+                    title: '减缴85%',
+                    dataIndex: 'proportion85',
+                    key: 'proportion85',
+                },
+                {
+                    title: '备注',
+                    dataIndex: 'remarks',
+                    key: 'remarks',
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'id',
+                    key: 'id',
+                    render: (text) => {
+                        return <div>
+                            <Popconfirm
+                                title="是否删除?"
+                                onConfirm={() => {
+                                    this.deleteOfficialFeePrice(text);
+                                }}
+                                okText="删除"
+                                cancelText="不删除"
+                            >
+                                <Button type="danger" onClick={(e) => {
+                                    e.stopPropagation()
+                                }}>
+                                    删除
+                                </Button>
+                            </Popconfirm>
+                        </div>
+                    }
+                },
+            ],
+            addSoftVisible: false,
+            infor: {},
+        }
+        this.loadData = this.loadData.bind(this);
+        this.tableRowClick = this.tableRowClick.bind(this);
+        this.reset = this.reset.bind(this);
+        this.changeList = this.changeList.bind(this);
+    }
+
+    componentDidMount() {
+        this.loadData();
+    }
+
+    //搜索功能和初始列表加载
+    loadData() {
+        this.setState({
+            loading: true,
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/company/listOfficialFeePrice',
+            data: {
+                type:this.state.type,       //名称
+            },
+            success: function (data) {
+                if (!data.data || !data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    data.data.map((v,i)=>{v.key = i})
+                    this.setState({
+                        dataSource: data.data,
+                    });
+                };
+
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    }
+
+    tableRowClick(infor) {
+        this.setState({
+            addSoftVisible : true,
+            infor: infor
+        })
+    }
+
+    reset(){
+        this.setState({
+            type:'',       //名称
+        },()=>{
+            this.loadData();
+        })
+    }
+
+    //删除
+    deleteOfficialFeePrice(id) {
+        let _this = this;
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url:globalConfig.context + '/api/admin/company/deleteOfficialFeePrice',
+            data:{
+                id: id
+            },
+        }).done(function (data) {
+            _this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('删除成功!');
+                _this.loadData();
+            } else {
+                message.warning(data.error[0].message);
+            }
+        }.bind(this));
+    }
+
+    changeList(arr) {
+        const newArr = [];
+        this.state.columns.forEach(item => {
+            arr.forEach(val => {
+                if (val === item.title) {
+                    newArr.push(item);
+                }
+            });
+        });
+        this.setState({
+            changeList: newArr
+        });
+    }
+
+    render() {
+        return(
+            <div className="user-content" >
+                <div className="content-title">
+                    <Tabs defaultActiveKey="1" className="test">
+                        <TabPane tab="操作" key="1">
+                            <div className="user-search" style={{display:'flex',flexFlow:'row',marginBottom:'10px'}}>
+                                <span style={{marginLeft: 'auto'}}>
+                                    <Button type="primary" size={'middle'} onClick={()=>{
+                                        this.setState({
+                                            addSoftVisible : true
+                                        })
+                                    }}>
+                                        增加
+                                    </Button>
+                                </span>
+                            </div>
+                        </TabPane>
+                        <TabPane tab="更改表格显示数据" key="2">
+                            <div style={{ marginLeft: 10 }}>
+                                <ChooseList
+                                    columns={this.state.columns}
+                                    changeFn={this.changeList}
+                                    changeList={this.state.changeList}
+                                    top={55}
+                                    margin={11}
+                                />
+                            </div>
+                        </TabPane>
+                    </Tabs>
+                    <div className="patent-table">
+                        <Spin spinning={this.state.loading}>
+                            <Table size="middle" columns={
+                                this.state.changeList
+                                    ? this.state.changeList
+                                    : this.state.columns
+                            }
+                                   dataSource={this.state.dataSource}
+                                   pagination={false}
+                                   style={{
+                                       cursor: 'pointer',
+                                   }}
+                                   onRowClick={this.tableRowClick}/>
+                        </Spin>
+                    </div>
+                </div>
+                {this.state.addSoftVisible ? <AddOfficialFeePrice
+                    infor={this.state.infor}
+                    visible={this.state.addSoftVisible}
+                    onCancel={()=>{
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {},
+                        })
+                    }}
+                    successFn={()=>{
+                        this.loadData();
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {}
+                        })
+                    }}/> : <div/>}
+            </div>
+        )
+    }
+}
+
+export default OfficialFees

+ 236 - 0
js/component/manageCenter/set/projectConfigure/patentFees.js

@@ -0,0 +1,236 @@
+//专利费用列表
+import React,{Component} from 'react';
+import {Button, Input, message, Select, Spin, Table, Modal, Popconfirm, Tabs} from "antd";
+import AddPatentPrice from './addPatentPrice'
+import $ from "jquery/src/ajax";
+import '../content.less';
+import {ChooseList} from "../../order/orderNew/chooseList";
+
+const TabPane = Tabs.TabPane;
+
+class PatentFees extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            type:'',
+            dataSource: [],
+            columns: [
+                {
+                    title: '公司名称',
+                    dataIndex: 'companyName',
+                    key: 'companyName',
+                },
+                {
+                    title: '实用新型(万元)',
+                    dataIndex: 'utilityModel',
+                    key: 'utilityModel',
+                },
+                {
+                    title: '外观专利(万元)',
+                    dataIndex: 'appearancePatent',
+                    key: 'appearancePatent',
+                },
+                {
+                    title: '发明专利(万元)',
+                    dataIndex: 'inventionPatent',
+                    key: 'inventionPatent',
+                },
+                {
+                    title: '备注',
+                    dataIndex: 'remarks',
+                    key: 'remarks',
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'id',
+                    key: 'id',
+                    render: (text) => {
+                        return <div>
+                            <Popconfirm
+                                title="是否删除?"
+                                onConfirm={() => {
+                                    this.deleteOfficialFeePrice(text);
+                                }}
+                                okText="删除"
+                                cancelText="不删除"
+                            >
+                                <Button type="danger" onClick={(e) => {
+                                    e.stopPropagation()
+                                }}>
+                                    删除
+                                </Button>
+                            </Popconfirm>
+                        </div>
+                    }
+                },
+            ],
+            addSoftVisible: false,
+            infor: {},
+        }
+        this.loadData = this.loadData.bind(this);
+        this.tableRowClick = this.tableRowClick.bind(this);
+        this.reset = this.reset.bind(this);
+        this.changeList = this.changeList.bind(this);
+    }
+
+    componentDidMount() {
+        this.loadData();
+    }
+
+    //搜索功能和初始列表加载
+    loadData() {
+        this.setState({
+            loading: true,
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/company/listPatentPrice',
+            data: {
+                type:this.state.type,       //名称
+            },
+            success: function (data) {
+                if (!data.data || !data.data) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    data.data.map((v,i)=>{v.key = i})
+                    this.setState({
+                        dataSource: data.data,
+                    });
+                };
+
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    }
+
+    tableRowClick(infor) {
+        this.setState({
+            addSoftVisible : true,
+            infor: infor
+        })
+    }
+
+    reset(){
+        this.setState({
+            type:'',       //名称
+        },()=>{
+            this.loadData();
+        })
+    }
+
+    //删除
+    deleteOfficialFeePrice(id) {
+        let _this = this;
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url:globalConfig.context + '/api/admin/company/deletePatentPrice',
+            data:{
+                id: id
+            },
+        }).done(function (data) {
+            _this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('删除成功!');
+                _this.loadData();
+            } else {
+                message.warning(data.error[0].message);
+            }
+        }.bind(this));
+    }
+
+    changeList(arr) {
+        const newArr = [];
+        this.state.columns.forEach(item => {
+            arr.forEach(val => {
+                if (val === item.title) {
+                    newArr.push(item);
+                }
+            });
+        });
+        this.setState({
+            changeList: newArr
+        });
+    }
+
+    render() {
+        return(
+            <div className="user-content" >
+                <div className="content-title">
+                    <Tabs defaultActiveKey="1" className="test">
+                        <TabPane tab="搜索" key="1">
+                            <div className="user-search" style={{display:'flex',flexFlow:'row',marginBottom:'10px'}}>
+                                <span style={{marginLeft: 'auto'}}>
+                                    <Button type="primary" size={'middle'} onClick={()=>{
+                                        this.setState({
+                                            addSoftVisible : true
+                                        })
+                                    }}>
+                                        增加
+                                    </Button>
+                                </span>
+                            </div>
+                        </TabPane>
+                        <TabPane tab="更改表格显示数据" key="2">
+                            <div style={{ marginLeft: 10 }}>
+                                <ChooseList
+                                    columns={this.state.columns}
+                                    changeFn={this.changeList}
+                                    changeList={this.state.changeList}
+                                    top={55}
+                                    margin={11}
+                                />
+                            </div>
+                        </TabPane>
+                    </Tabs>
+                    <div className="patent-table">
+                        <Spin spinning={this.state.loading}>
+                            <Table size="middle" columns={
+                                this.state.changeList
+                                    ? this.state.changeList
+                                    : this.state.columns
+                            }
+                                   dataSource={this.state.dataSource}
+                                   pagination={false}
+                                   style={{
+                                       cursor: 'pointer',
+                                   }}
+                                   onRowClick={this.tableRowClick}/>
+                        </Spin>
+                    </div>
+                </div>
+                {this.state.addSoftVisible ? <AddPatentPrice
+                    infor={this.state.infor}
+                    visible={this.state.addSoftVisible}
+                    onCancel={()=>{
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {},
+                        })
+                    }}
+                    successFn={()=>{
+                        this.loadData();
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {}
+                        })
+                    }}/> : <div/>}
+            </div>
+        )
+    }
+}
+
+export default PatentFees

+ 326 - 0
js/component/manageCenter/set/projectConfigure/softwareConfigure.js

@@ -0,0 +1,326 @@
+import React,{Component} from 'react';
+import {Button, Input, message, Select, Spin, Table, Tag, Popconfirm, Tabs} from "antd";
+import AddSoftWritingPrice from './addSoftWritingPrice'
+import $ from "jquery/src/ajax";
+import '../content.less';
+import {ChooseList} from "../../order/orderNew/chooseList";
+
+const TabPane = Tabs.TabPane;
+
+class SoftwareConfigure extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            companyName:'',        //公司名称
+            urgent: undefined,            //加急
+            material: undefined,          //材料
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            dataSource: [],
+            columns: [
+                {
+                    title: '供应商名称',
+                    dataIndex: 'companyName',
+                    key: 'companyName',
+                },
+                {
+                    title: '材料',
+                    dataIndex: 'material',
+                    key: 'material',
+                    render: (text) => {
+                        return text === 0 ? '无材料' : '有材料'
+                    }
+                },
+                {
+                    title: '加急天数',
+                    dataIndex: 'urgent',
+                    key: 'urgent',
+                    render: (text) => {
+                        switch (text) {
+                            case 0:
+                                return '无加急';
+                            case 1:
+                                return '加急3-5个工作日';
+                            case 2:
+                                return '加急6-10个工作日';
+                            case 3:
+                                return '加急11-15个工作日';
+                            case 4:
+                                return '加急16-20个工作日';
+                            case 5:
+                                return '加急21-25个工作日';
+                            case 6:
+                                return '加急26-30个工作日';
+                        }
+                    }
+                },
+                {
+                    title: '价格万元/个',
+                    dataIndex: 'unitPrice',
+                    key: 'unitPrice',
+                },
+                {
+                    title: '备注',
+                    dataIndex: 'remarks',
+                    key: 'remarks',
+                },
+                {
+                    title: '状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text) => {
+                        return text === 0 ? <Tag color="#87d068">正常</Tag> :
+                            text === 1 ? <Tag>停用</Tag> :  <Tag color="#f50">删除</Tag>
+                    }
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'id',
+                    key: 'id',
+                    render: (text) => {
+                        return <div>
+                            <Popconfirm
+                                title="是否删除?"
+                                onConfirm={() => {
+                                    this.deleteSoftWritingPrice(text);
+                                }}
+                                okText="删除"
+                                cancelText="不删除"
+                            >
+                                <Button type="danger" onClick={(e) => {
+                                    e.stopPropagation()
+                                }}>
+                                    删除
+                                </Button>
+                            </Popconfirm>
+                        </div>
+                    }
+                },
+            ],
+            addSoftVisible: false,
+            infor: {},
+            pageNo: 1,
+        }
+        this.loadData = this.loadData.bind(this);
+        this.tableRowClick = this.tableRowClick.bind(this);
+        this.reset = this.reset.bind(this);
+        this.changeList = this.changeList.bind(this);
+    }
+
+    componentDidMount() {
+        this.loadData();
+    }
+
+    //搜索功能和初始列表加载
+    loadData(pageNo) {
+        this.setState({
+            loading: true,
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/company/listSoftWritingPrice',
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                companyName:this.state.companyName || undefined,       //公司名称
+                urgent: this.state.urgent,    //加急
+                material: this.state.material,  //材料
+            },
+            success: function (data) {
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    }
+                } else {
+                    this.state.pagination.current = data.data.pageNo;
+                    this.state.pagination.total = data.data.totalCount;
+                    if (data.data && data.data.list && !data.data.list.length) {
+                        this.state.pagination.current = 0;
+                        this.state.pagination.total = 0;
+                    }
+                    data.data.list.map((v,i)=>{v.key = i})
+                    this.setState({
+                        dataSource: data.data.list,
+                        pagination: this.state.pagination,
+                        pageNo: data.data.pageNo
+                    });
+                }
+
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    }
+
+    tableRowClick(infor) {
+        this.setState({
+            addSoftVisible : true,
+            infor: infor
+        })
+    }
+
+    reset(){
+        this.setState({
+            companyName:'',       //公司名称
+            urgent: undefined,    //加急
+            material: undefined,  //材料
+        },()=>{
+            this.loadData();
+        })
+    }
+
+    //删除
+    deleteSoftWritingPrice(id) {
+        let _this = this;
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url:globalConfig.context + '/api/admin/company/deleteSoftWritingPrice',
+            data:{
+                id: id
+            },
+        }).done(function (data) {
+            _this.setState({
+                loading: false
+            });
+            if (!data.error.length) {
+                message.success('删除成功!');
+                _this.loadData();
+            } else {
+                message.warning(data.error[0].message);
+            }
+        }.bind(this));
+    }
+    changeList(arr) {
+        const newArr = [];
+        this.state.columns.forEach(item => {
+            arr.forEach(val => {
+                if (val === item.title) {
+                    newArr.push(item);
+                }
+            });
+        });
+        this.setState({
+            changeList: newArr
+        });
+    }
+
+    render() {
+        return(
+            <div className="user-content" >
+                <div className="content-title">
+                    <Tabs defaultActiveKey="1" className="test">
+                        <TabPane tab="搜索" key="1">
+                            <div className="user-search" style={{display:'flex',flexFlow:'row'}}>
+                                <Input placeholder="公司名称" style={{width:'150px',marginRight:'10px',marginBottom:'10px',marginLeft:10}}
+                                       value={this.state.companyName}
+                                       onChange={(e) => { this.setState({ companyName: e.target.value }); }} />
+                                <div style={{display:'flex',flexFlow:'row nowrap'}}>
+                                    <div style={{marginLeft:10,marginRight:10}}>材料:</div>
+                                    <Select
+                                        placeholder="材料"
+                                        style={{ width:'200px',marginRight:'10px' }}
+                                        value={this.state.material}
+                                        onChange={(e) => {this.setState({ material: e }) }}>
+                                        <Select.Option value={0}>无</Select.Option>
+                                        <Select.Option value={1}>有</Select.Option>
+                                    </Select>
+                                </div>
+                                <div style={{display:'flex',flexFlow:'row nowrap'}}>
+                                    <div style={{marginLeft:10,marginRight:10}}>加急天数:</div>
+                                    <Select placeholder="加急天数"
+                                            style={{ width:'200px',marginRight:'10px' }}
+                                            value={this.state.urgent}
+                                            onChange={(e) => { this.setState({ urgent: e }) }}>
+                                        <Select.Option value={0}>无加急</Select.Option>
+                                        <Select.Option value={1}>加急3-5个工作日</Select.Option>
+                                        <Select.Option value={2}>加急6-10个工作日</Select.Option>
+                                        <Select.Option value={3}>加急11-15个工作日</Select.Option>
+                                        <Select.Option value={4}>加急16-20个工作日</Select.Option>
+                                        <Select.Option value={5}>加急21-25个工作日</Select.Option>
+                                        <Select.Option value={6}>加急26-30个工作日</Select.Option>
+                                    </Select>
+                                </div>
+                                <Button type="primary" onClick={()=>{
+                                    this.loadData();
+                                }} style={{marginRight:'10px'}}>搜索</Button>
+                                <Button onClick={this.reset} style={{marginRight:'10px'}}>重置</Button>
+                                <span style={{marginLeft: 'auto'}}>
+                            <Button type="primary" size={'middle'} onClick={()=>{
+                                this.setState({
+                                    addSoftVisible : true
+                                })
+                            }}>
+                                增加
+                            </Button>
+                        </span>
+                            </div>
+                        </TabPane>
+                        <TabPane tab="更改表格显示数据" key="2">
+                            <div style={{ marginLeft: 10 }}>
+                                <ChooseList
+                                    columns={this.state.columns}
+                                    changeFn={this.changeList}
+                                    changeList={this.state.changeList}
+                                    top={55}
+                                    margin={11}
+                                />
+                            </div>
+                        </TabPane>
+                    </Tabs>
+                    <div className="patent-table">
+                        <Spin spinning={this.state.loading}>
+                            <Table size="middle" columns={
+                                this.state.changeList
+                                    ? this.state.changeList
+                                    : this.state.columns
+                                    }
+                                   style={{
+                                       cursor: 'pointer',
+                                   }}
+                                   dataSource={this.state.dataSource}
+                                   pagination={this.state.pagination}
+                                   onRowClick={this.tableRowClick}/>
+                        </Spin>
+                    </div>
+                </div>
+                {this.state.addSoftVisible ? <AddSoftWritingPrice
+                    infor={this.state.infor}
+                    visible={this.state.addSoftVisible}
+                    onCancel={()=>{
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {},
+                        })
+                    }}
+                    successFn={()=>{
+                        this.loadData(this.state.pageNo);
+                        this.setState({
+                            addSoftVisible : false,
+                            infor: {}
+                        })
+                    }}/> : <div/>}
+            </div>
+        )
+    }
+}
+
+export default SoftwareConfigure