Browse Source

项目派单完成页面

liting2017 6 years ago
parent
commit
1f62d2557d

+ 1 - 1
js/admin/project.js

@@ -8,7 +8,7 @@ import Content from '../component/manageCenter/project/content.jsx';
 
 ReactDOM.render(
     <div className="wrap clearfix">
-        <TopTab active={'myClient'}/>
+        <TopTab active={'project'}/>
         <Content />
         <Footer />
     </div>,

+ 1 - 0
js/component/dataDic.js

@@ -1850,6 +1850,7 @@ module.exports = {
 			{value:'科技成果管理',key:'achievement'},
 			{value:'科技需求管理',key:'demand'},
             {value:'财务管理',key:'idea'},
+            {value:'项目管理',key:'project'},
             {value:'数据统计',key:'statistics'},
 			{value:'用户订单管理',key:'userOrder'},
 			{value:'系统设置',key:'system'},

+ 48 - 11
js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx

@@ -70,6 +70,7 @@ const OrderDetail = Form.create()(React.createClass({
         return {
             visible: false,
             loading: false,
+            jsDate:[],
             auditStatus: 0,
             textFileList: [],
             videoFileList: [],
@@ -148,6 +149,35 @@ const OrderDetail = Form.create()(React.createClass({
             });
         }.bind(this));  
     },
+    jdDate(record){
+    	$.ajax({
+            method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + '/open/api/admin/newOrder/selectOrderDun',
+            data: {
+              orderNo:record?record.orderNo:this.props.data.orderNo
+            },
+            success: function (data) {
+                let thisData = data.data;                
+                if (!thisData.length) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                    thisData = {};
+                }else{
+                   this.setState({
+                       jsDate:thisData
+                   })
+                };
+                
+            }.bind(this),
+       }).always(function () {
+            this.setState({            	
+                loading: false
+            });
+        }.bind(this));  
+    },
     getPictureUrl(e) {
         this.setState({ pictureUrl: e });
     },
@@ -206,8 +236,9 @@ const OrderDetail = Form.create()(React.createClass({
     },
     componentWillMount() {
         if (this.props.data.orderNo) {
-            this.loadData(this.props.data.id);
-            this.loadXmu(this.props.data.data);
+            this.loadData();
+            this.loadXmu();
+            this.jdDate();
         } else {
             this.state.data = {};
         };
@@ -217,8 +248,9 @@ const OrderDetail = Form.create()(React.createClass({
             this.state.textFileList = [];
             this.state.videoFileList = [];
             if (nextProps.data.orderNo) {
-                this.loadData(nextProps.data.id);
+                this.loadData(nextProps.data);
                 this.loadXmu(nextProps.data);
+                this.jdDate(nextProps.data);
             } else {
 				this.state.data = {};
                 this.state.pictureUrl = [];
@@ -235,6 +267,7 @@ const OrderDetail = Form.create()(React.createClass({
             labelCol: { span: 6 },
             wrapperCol: { span: 12 },
         };
+        const jsDate = this.state.jsDate || [];
         return (
 			<div className='login'>
 			<Form layout="horizontal" id="demand-form">
@@ -244,10 +277,10 @@ const OrderDetail = Form.create()(React.createClass({
 							<span>{theData.orderNo}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="签单时间">
-							<span>{theData.releaseDate?(new Date(theData.releaseDate)).toLocaleString():''}</span>
+							<span>{theData.signDate?(new Date(theData.signDate)).toLocaleString():''}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="客户名称">
-							<span>{theData.name}</span>
+							<span>{theData.userName}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="流转状态">
 							<span>{getProcessStatus(theData.processStatus)}</span>
@@ -286,7 +319,7 @@ const OrderDetail = Form.create()(React.createClass({
                     </div> 
                     <div className="clearfix">
                         <FormItem className="half-item" {...formItemLayout} label="合同编号">
-							<span>{theData.orderNo}</span>
+							<span>{theData.contractNo}</span>
 						</FormItem>           
                     </div>
                     <div className="clearfix">
@@ -296,21 +329,25 @@ const OrderDetail = Form.create()(React.createClass({
 					</div>
                     <div className="clearfix">
 						<FormItem labelCol={{ span: 3 }} wrapperCol={{ span: 18 }} label="收款节点">
-							<span>{theData.introduction}</span>
+							{
+                                jsDate.map(item=>{
+                                    return <p>{item.dunSubject} -- {item.money} 万元</p>
+                                })
+                            }
 						</FormItem>
 					</div>
                     <div className="clearfix">
 						<FormItem className="half-item" {...formItemLayout} label="订单负责人">
-							<span>{theData.introduction}</span>
+							<span>{theData.salesmanName}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="订单负责人电话">
-							<span>{theData.introduction}</span>
+							<span>{theData.salesmanMobile}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="财务负责人">
-							<span>{theData.introduction}</span>
+							<span>{theData.financeName}</span>
 						</FormItem>
                         <FormItem className="half-item" {...formItemLayout} label="财务负责人电话">
-							<span>{theData.introduction}</span>
+							<span>{theData.financeMobile}</span>
 						</FormItem>
 					</div>
                     <div className="clearfix">

+ 264 - 0
js/component/manageCenter/project/project/projectAssignment.jsx

@@ -0,0 +1,264 @@
+import React,{Component} from 'react';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import moment from 'moment';
+import '@/manageCenter/financialManage/distribute/public.less';
+import { Icon, Button,Form, Input, Select, Spin, Table, Switch, message, DatePicker, Modal } from 'antd';
+import OrderDesc from '@/manageCenter/financialManage/orderDetail/orderDesc'
+import Assign from '@/manageCenter/publicComponent/assign';
+import {getProcessStatus,getApproval} from '@/tools';
+
+const PaiDan = React.createClass({
+    loadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            page:pageNo,
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/order/listAllSettlement",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.pagination.pageSize,
+                buyerName: this.state.nameSearch,//客户名称
+                orderNo:this.state.orderNoSearch,
+                distribution:this.state.distribution, //是否分配
+                startTime: this.state.releaseDate[0],
+                endTime: this.state.releaseDate[1],
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            orderNo: thisdata.orderNo,
+                            approval:thisdata.approval,
+		                    orderType:thisdata.orderType,
+		                    processStatus:thisdata.processStatus,
+                            signTotalAmount:thisdata.signTotalAmount,
+                            buyerName:thisdata.buyerName,
+                            sellerName:thisdata.sellerName,
+                            createTime:thisdata.createTime?(new Date(thisdata.createTime)).toLocaleString():'',
+                            signTime:thisdata.releaseDate?(new Date(thisdata.releaseDate)).toLocaleString():''
+                        });
+                    };
+                }
+                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
+				}
+                this.setState({
+                    dataSource: theArr,
+                    pagination: this.state.pagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            searchMore: true,
+            assignVisible:false,
+            releaseDate: [],
+            boHuivisible:false,
+            selectedRowKeys: [],
+            selectedRows: [],
+            loading: false,
+            pagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.loadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            columns: [
+                {
+                    title: '订单编号',
+                    dataIndex: 'orderNo',
+                    key: 'orderNo',
+                }, {
+                    title: '下单时间',
+                    dataIndex: 'createTime',
+                    key: 'createTime',
+                },  {
+                    title: '签单时间',
+                    dataIndex: 'signTime',
+                    key: 'signTime',
+                },
+                {
+                    title: '签单客户',
+                    dataIndex: 'buyerName',
+                    key: 'buyerName',
+                },
+                {
+                    title: '流程状态',
+                    dataIndex: 'processStatus',
+                    key: 'processStatus',
+                    render: text => { return getProcessStatus(text)}
+                },
+                {
+                    title: '订单总金额(万)',
+                    dataIndex: 'signTotalAmount',
+                    key: 'signTotalAmount'
+                },
+                {
+                    title: '是否特批',
+                    dataIndex: 'approval',
+                    key: 'approval',
+                    render: text => { return getApproval(text)}
+                },
+                {
+                    title: '订单负责人',
+                    dataIndex: 'sellerName',
+                    key: 'sellerName'
+                },
+                {
+                    title: '分派状态',
+                    dataIndex: 'sellerName1',
+                    key: 'sellerName1'
+                },
+                {
+                    title:'操作',
+                    dataIndex: 'caozuo',
+                    key: 'caouzo',
+                    render:(text,recard)=>{
+                        return <div>
+                            <Button type="primary" style={{margin:'0 10px'}} onClick={(e)=>{e.stopPropagation(),this.evaluate(recard)}}>分配任务</Button>
+                        </div>
+                    }
+                }
+            ],
+            dataSource: [],
+            searchTime: [,]
+        }
+    },
+    /* 分派 */
+    evaluate(recard){
+        this.state.assignData=recard;
+        this.setState({
+            assignVisible:true
+        })
+    },
+   
+    componentWillMount() {
+        this.loadData();
+    },
+    tableRowClick(record, index) {
+        this.state.RowData = record;
+        this.setState({
+            showDesc: true,
+        });
+    },
+    closeDesc(e, s) {
+        this.state.showDesc = e;
+        if (s) {
+            this.loadData(this.state.page);
+        };
+    },
+    closeAssign(e, s) {
+        this.state.assignVisible = e;
+        if (s) {
+            this.loadData(this.state.page);
+        };
+    },
+    search() {
+        this.loadData();
+    },
+    reset() {
+        this.state.nameSearch = '';
+        this.state.releaseDate = [];
+        this.state.orderNoSearch=''
+        this.state.distribution=undefined;
+        this.loadData();
+    },
+    searchSwitch() {
+        this.setState({
+            searchMore: !this.state.searchMore
+        });
+    },
+    render() { 
+        const rowSelection = {
+            selectedRowKeys: this.state.selectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+                this.setState({
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1)
+                });
+            }
+        };
+        const hasSelected = this.state.selectedRowKeys.length > 0;
+        const { RangePicker } = DatePicker;
+        return ( <div className="user-content">
+            <div className="content-title">
+                    <span>项目派单管理</span>
+                </div>
+                <div className="user-search">
+                    <Input placeholder="客户名称"
+                        value={this.state.nameSearch}
+                        onChange={(e) => { this.setState({ nameSearch: e.target.value }); }} />
+                    <Input placeholder="订单编号"
+                        value={this.state.orderNoSearch}
+                        onChange={(e) => { this.setState({ orderNoSearch: e.target.value }); }} />
+                    <Select 
+                        onChange={(e)=>{this.setState({distribution:e})}} 
+                        style={{width:160,marginRight:5}} 
+                        placeholder="分派状态"
+                        value={this.state.distribution}>
+                        <Option value="0">未分配</Option>
+                        <Option value="1">已分配</Option>
+                    </Select>
+                    <Button type="primary" onClick={this.search}>搜索</Button>
+                    <Button onClick={this.reset}>重置</Button>
+                    <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch.bind(this)} /></span>
+                    <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
+                        <span>订单时间 :</span>
+                        <RangePicker
+                            value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
+                            this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
+                            onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
+                    </div>
+                </div>
+                <div className="patent-table">
+                    <Spin spinning={this.state.loading}>
+                        <Table columns={this.state.columns}
+                            dataSource={this.state.dataSource}
+                            rowSelection={rowSelection}
+                            pagination={this.state.pagination}
+                            onRowClick={this.tableRowClick.bind(this)} />
+                    </Spin>
+                </div>
+                <OrderDesc
+                    data={this.state.RowData}
+                    showDesc={this.state.showDesc}
+                    closeDesc={this.closeDesc.bind(this)}
+                />
+                <Assign
+                    selApi="/api/admin/financial/distributionFinance"
+                    data={this.state.assignData}
+                    showDesc={this.state.assignVisible}
+                    closeDesc={this.closeAssign.bind(this)}
+                />
+        </div> )
+    }
+})
+ 
+export default PaiDan;

+ 12 - 0
js/component/manageCenter/project/project/projectQuery.jsx

@@ -0,0 +1,12 @@
+import React,{Component} from 'react';
+class Task extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {  }
+    }
+    render() { 
+        return (<div>项目查询</div>  );
+    }
+}
+ 
+export default Task;

+ 12 - 0
js/component/manageCenter/project/task/myTask.jsx

@@ -0,0 +1,12 @@
+import React,{Component} from 'react';
+class Task extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {  }
+    }
+    render() { 
+        return (<div>我的任务</div>  );
+    }
+}
+ 
+export default Task;

+ 12 - 0
js/component/manageCenter/project/task/taskAssignment.jsx

@@ -0,0 +1,12 @@
+import React,{Component} from 'react';
+class Task extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {  }
+    }
+    render() { 
+        return (<div>任务派单</div>  );
+    }
+}
+ 
+export default Task;

+ 12 - 0
js/component/manageCenter/project/task/taskCount.jsx

@@ -0,0 +1,12 @@
+import React,{Component} from 'react';
+class Task extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {  }
+    }
+    render() { 
+        return (<div>任务统计</div>  );
+    }
+}
+ 
+export default Task;

+ 13 - 0
js/component/manageCenter/project/task/taskQuery.jsx

@@ -0,0 +1,13 @@
+
+import React,{Component} from 'react';
+class Task extends React.Component {
+    constructor(props) {
+        super(props);
+        this.state = {  }
+    }
+    render() { 
+        return (<div>任务查询</div>  );
+    }
+}
+ 
+export default Task;

+ 4 - 3
js/component/manageCenter/publicComponent/assign.jsx

@@ -222,7 +222,7 @@ const Assign=React.createClass({
                                         <Radio value={0}>否</Radio>
                                         <Radio value={1}>是</Radio>
                                     </Radio.Group>
-			                		<Select placeholder="订单部门"
+			                		<Select placeholder="部门"
 				                            style={{ width: 150 ,marginRight:'10px',marginLeft:'10px'}}
 				                            value={this.state.departmenttList}
 				                            onChange={(e) => { this.setState({ departmenttList: e }) }}>
@@ -232,7 +232,7 @@ const Assign=React.createClass({
 			                                    })
 			                                }
 				                    </Select>
-				                    <Input placeholder="任务负责人" style={{width:'150px',marginLeft:'10px'}}
+				                    <Input placeholder="姓名" style={{width:'150px',marginLeft:'10px'}}
 				                        value={this.state.financeNameSearch}
 				                        onChange={(e) => { this.setState({ financeNameSearch: e.target.value }); }} />  
 				                    <Button type="primary" onClick={this.searchOrder} style={{marginLeft:'10px',marginRight:'10px'}}>搜索</Button>
@@ -242,7 +242,8 @@ const Assign=React.createClass({
 				                    <Spin spinning={this.state.loading}>
 				                        <Table columns={this.state.userList}
 				                            dataSource={this.state.distributionList}
-				                            pagination={false}
+                                            pagination={false}
+                                            scroll={{y:400}}
 				                             />
 				                    </Spin>
 				                </div>

+ 2 - 2
webpack.config.js

@@ -304,7 +304,7 @@ module.exports = (function () {
     }
 
     //let staticHost = 'http://afts.hnzhiming.com';
-    let staticHost = 'http://192.168.0.190';
+    let staticHost = 'http://192.168.0.188';
     switch (argv.env.deploy) {
         case 'test':
             staticHost = 'http://static.jishutao.com';
@@ -343,7 +343,7 @@ module.exports = (function () {
         // }
         devServer: {
             disableHostCheck: true,
-            host: '192.168.0.190',
+            host: '192.168.0.188',
             port: 80,
             allowedHosts: ['127.0.0.1','192.168.0.20','192.168.0.99'],
             headers: {

+ 6 - 5
webpack/entry.config.js

@@ -36,11 +36,8 @@ module.exports = {
     'admin/userOrder': './js/admin/userOrder.js',
     'admin/order': './js/admin/order.js',
     'admin/operate': './js/admin/operate.js',
-<<<<<<< HEAD
     'admin/project': './js/admin/project.js',
-=======
     'admin/statistics': './js/admin/statistics.js',
->>>>>>> 3aefd2cc29064776957628ff9a0bdddb184a4098
     //portal  门户
     // 'portal/search/demand': './js/portal/search/demand.js',
     // 'portal/search/achievement': './js/portal/search/achievement.js',
@@ -142,9 +139,9 @@ module.exports = {
       'webpack/hot/only-dev-server',
       './js/admin/operate.js'
     ],
-    'admin/peoject': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    'admin/project': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
       'webpack/hot/only-dev-server',
-      './js/admin/peoject.js'
+      './js/admin/project.js'
     ],
     //admin-servicesManage
     'admin/servicesManage/contract': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
@@ -179,6 +176,10 @@ module.exports = {
     'webpack/hot/only-dev-server',
     './js/admin/statistics.js'
     ],
+    'admin/project': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
+    'webpack/hot/only-dev-server',
+    './js/admin/project.js'
+    ],
     //portal  门户
     // 'portal/search/demand': ['webpack-dev-server/client?http://127.0.0.1:80', // WebpackDevServer host and port
     //   'webpack/hot/only-dev-server',