dengzhiguo 6 years ago
parent
commit
a42cf19479

+ 1 - 1
js/component/dataDic.js

@@ -2456,7 +2456,7 @@ module.exports = {
 	        key: "项目公示(高新项目等)"
         },{
 	        value: "5",
-	        key: "项目抽查"
+	        key: "项目抽查(未通过)"
 	    },{
 	        value: "6",
 	        key: "项目备案"

+ 14 - 1
js/component/manageCenter/financialManage/distribute/paiDan.jsx

@@ -147,7 +147,7 @@ const PaiDan = React.createClass({
                     key: 'caouzo',
                     render:(text,recard)=>{
                         return <div>
-                            {recard.processStatus>2||<Button type="primary" onClick={(e)=>{e.stopPropagation(),this.evaluate(recard)}}>分派</Button>}
+                            {this.judgeFenpai(recard)}
                         </div>
                     }
                 }
@@ -156,6 +156,18 @@ const PaiDan = React.createClass({
             searchTime: [,]
         }
     },
+	
+	/* 判断是否有分派按钮 */
+	judgeFenpai(recard){
+		if (recard.approval===2) {
+			return <Button type="primary" onClick={(e)=>{e.stopPropagation(),this.evaluate(recard)}}>分派</Button>;
+		} else if(recard.processStatus<=2){
+			return <Button type="primary" onClick={(e)=>{e.stopPropagation(),this.evaluate(recard)}}>分派</Button>;
+		}else{
+			return undefined;
+		}
+	},
+	
     /* 分派 */
     evaluate(recard){
         this.state.assignData=recard;
@@ -282,6 +294,7 @@ const PaiDan = React.createClass({
                     title='订单'
                     selApi="/api/admin/financial/distributionFinance"
                     data={this.state.assignData}
+					fenpaiData={4}
                     showDesc={this.state.assignVisible}
                     closeDesc={this.closeAssign.bind(this)
 					}

+ 1 - 1
js/component/manageCenter/financialManage/distribute/shouKuang.jsx

@@ -399,7 +399,7 @@ const ShouKuang = React.createClass({
 				    data={this.state.assignDataY}
 				    showDesc={this.state.assignVisibleY}
 				    closeDesc={this.closeAssignY.bind(this)}
-				    fenpaiData={8}
+				    // fenpaiData={8}
 				    specially={0}
 				    roleName={this.state.nub}
 					requestMethod={"get"}

+ 9 - 0
js/component/manageCenter/order/content.jsx

@@ -41,6 +41,15 @@ class Content extends Component {
                     });
                 });
                 break;
+			//催款列表
+			case 'pressList':
+			    require.ensure([], () => {
+			        const PressList = require('./orderNew/pressList').default;
+			        this.setState({
+			            component: <PressList />
+			        });
+			    });
+			    break;
             //开单与签单
             case 'billing':
                 require.ensure([], () => {

+ 2 - 2
js/component/manageCenter/order/orderNew/addService.jsx

@@ -1387,14 +1387,14 @@ const NewService = Form.create()(React.createClass({
 					                            label="服务数量" >   
 				                                    <Input placeholder="请输入服务数量" value={this.state.commodityQuantity} style={{width:'200px'}}
 				                                    onChange={(e)=>{this.setState({commodityQuantity:e.target.value})}} ref="commodityQuantity"/>
-				                                <span className="mandatory">*</span>    
+				                                <span className="mandatory">*</span>
 					                    </FormItem>
 					                    <FormItem className="half-item"
 					                            {...formItemLayout}
 					                            label="实签价格(万元)" >   
 				                                    <Input placeholder="请输入实签价格" value={this.state.commodityPrice} style={{width:'200px'}}
 				                                    onChange={(e)=>{this.setState({commodityPrice:e.target.value})}} ref="commodityPrice"/>
-				                                <span className="mandatory">*</span>    
+				                                <span className="mandatory">*</span>
 					                    </FormItem>
 					                    <FormItem className="half-item"
 				                            {...formItemLayout}

+ 2 - 1
js/component/manageCenter/order/orderNew/examine.jsx

@@ -505,7 +505,7 @@ const IntentionCustomer = Form.create()(React.createClass({
 					message.success("该订单已被拒绝~");
 					this.setState({
 						visible:false,
-						aloading:true,
+						aloading:false,
 						noVisible:false,
 						reason:'',
 					});
@@ -531,6 +531,7 @@ const IntentionCustomer = Form.create()(React.createClass({
 	noCancel(){
 		this.setState({
 			noVisible:false,
+			aloading:false,
 			reason:'',
 		});
 	},

+ 617 - 0
js/component/manageCenter/order/orderNew/pressList.jsx

@@ -0,0 +1,617 @@
+import React from 'react';
+import { Radio, Icon, Button, AutoComplete,Cascader,Input, Select, Spin, Popconfirm, Table, Switch, message,Calendar , DatePicker, Upload, Form ,Modal,Tabs,Card ,Col} from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js';
+import $ from 'jquery/src/ajax';
+import Jquery from 'jquery/dist/jquery.js';
+import moment from 'moment';
+import {boutique } from '@/dataDic.js';
+import { getLiquidationStatus,getApprovedState,getProcessStatus,splitUrl,getjiedian,getboutique,getNewOrderStatus,getProjectStatus} from '@/tools.js';
+import './customer.less';
+const TabPane = Tabs.TabPane;
+const Dragger = Upload.Dragger;
+//图片组件
+const PicturesWall = React.createClass({
+	getInitialState() {
+		return {
+			previewVisible: false,
+			previewImage: '',
+			fileList: [],
+		}
+	},
+	handleCancel() {
+		this.setState({
+			previewVisible: false
+		})
+	},
+	handlePreview(file) {
+		this.setState({
+			previewImage: file.url || file.thumbUrl,
+			previewVisible: true,
+		});
+	},
+	handleChange(info) {
+		let fileList = info.fileList;
+		this.setState({
+			fileList
+		});
+		this.props.fileList(fileList);
+	},
+	componentWillReceiveProps(nextProps) {
+		this.state.fileList = nextProps.pictureUrl;
+		this.state.pojectApplicationUrl = undefined;
+	},
+	render() {
+		const {
+			previewVisible,
+			previewImage,
+			fileList
+		} = this.state;
+		const uploadButton = (
+			<div>
+                <Icon type="plus" />
+                <div className="ant-upload-text">点击上传</div>
+            </div>
+		);
+		return(
+			<div style={{display:"inline-block"}}>
+                <Upload
+                    action={globalConfig.context + "/api/admin/customer/uploadCustomerImg"}
+                    data={{ 'sign': '' }}
+                    listType="picture-card"
+                    fileList={fileList}
+                    onPreview={this.handlePreview}
+                    onChange={this.handleChange} >
+                    {fileList.length >= 1 ? null : uploadButton}
+                </Upload>
+                <Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>
+                    <img alt="example" style={{ width: '100%' }} src={previewImage} />
+                </Modal>
+            </div>
+		);
+	}
+});
+
+
+const IntentionCustomer = Form.create()(React.createClass({
+	loadData(pageNo, apiUrl) {
+		this.setState({
+			visitModul:false,
+			loading: true,
+			ispage:pageNo,
+			modalVisible:false
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +"/api/admin/newOrder/dunOrderNewList",
+			data: {
+				pageNo: pageNo || 1,
+				pageSize: this.state.pagination.pageSize,
+				name: this.state.customerName,//名称
+				orderNo: this.state.orderNo,//订单编号
+				depId: this.state.departmenttSearch,//订单部门
+				adminName:this.state.adminName,//责任人名称
+				starTime: this.state.releaseDate[0],//开始时间
+				endTime: this.state.releaseDate[1],//结束时间
+				specially:1
+			},
+			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.list.length; i++) {
+						let thisdata = data.data.list[i];
+						theArr.push({
+							 key: i,
+							 id:thisdata.id,//ID
+							 orderNo: thisdata.orderNo,//订单编号
+	                         totalAmount:thisdata.totalAmount,//签单金额
+	                         settlementAmount:thisdata.settlementAmount,//已收款
+	                         accountsReceivable:thisdata.accountsReceivable,//应收款
+	                         uncollectedAmount:thisdata.uncollectedAmount,//应收款
+	                         orderStatus:thisdata.orderStatus,//订单状态
+	                         projectStatus:thisdata.projectStatus,//项目状态
+	                         liquidationStatus:thisdata.liquidationStatus,//结算状态
+	                         signDate:thisdata.signDate,//签单时间
+	                          userName:thisdata.userName,//客户名称
+	                         salesmanName:thisdata.salesmanName,//营销员名称
+	                         dunSubject:thisdata.dunSubject,//催收科目
+	                         startDate:thisdata.startDate,//催收启动时间
+	                         depName:thisdata.depName,//部门名称
+	                        
+						});
+					};
+				    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,
+					selectedRowKeys:[]
+				});
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	loadDatas(dunId) {
+		this.setState({
+			loading: true,
+		});
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +"/api/admin/newOrder/selectDunLogList",
+			data: {
+				dunId:dunId,
+			},
+			success: function(data) {
+				let theArr = [];
+				if(data.error.length || data.data == "") {
+					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];
+						theArr.push({
+							 key: i,
+							 id:thisdata.id,//ID
+							 dunId: thisdata.dunId,//催款ID
+	                         dumBy:thisdata.dumBy,//催款人
+	                         dumTime:thisdata.dumDate,//催款时间
+	                         remarks:thisdata.remarks,//备注
+						});
+					};
+				};
+				this.setState({
+					dataSources: theArr,
+				});
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	getInitialState() {
+		return {
+			page:1,
+			releaseDate: [],
+			selectedRowKeys: [],
+			orgCodeUrl:[],
+			departmentArr: [],
+			paginations: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: 'signDate',
+                    key: 'signDate'
+                },{
+                    title: '客户名称',
+                    dataIndex: 'userName',
+                    key: 'userName',
+                    render:(text)=>{
+                    	return (text&&text.length>9?text.substr(0,9)+'...':text)
+                    }
+                },{
+                    title: '订单状态',
+                    dataIndex: 'orderStatus',
+                    key: 'orderStatus',
+                    render:text=>{return getNewOrderStatus(text)}
+                }, {
+                    title: '签单金额(万元)',
+                    dataIndex: 'totalAmount',
+                    key: 'totalAmount'
+                },{
+                    title: '项目状态',
+                    dataIndex: 'projectStatus',
+                    key: 'projectStatus',
+                    render:text=>{return getProjectStatus(text)}
+                },{
+                    title: '结算状态',
+                    dataIndex: 'liquidationStatus',
+                    key: 'liquidationStatus',
+                    render:text=>{return getLiquidationStatus(text)}
+                }, {
+                    title: '应收款(万)',
+                    dataIndex: 'accountsReceivable',
+                    key: 'accountsReceivable'
+                }, {
+                    title: '已收款(万)',
+                    dataIndex: 'settlementAmount',
+                    key: 'settlementAmount'
+                }, {
+                    title: '未收款(万)',
+                    dataIndex: 'uncollectedAmount',
+                    key: 'uncollectedAmount'
+                },{
+                    title: '订单负责人',
+                    dataIndex: 'salesmanName',
+                    key: 'salesmanName'
+                },{
+                    title: '订单部门',
+                    dataIndex: 'depName',
+                    key: 'depName'
+                },{
+                    title: '催收科目',
+                    dataIndex: 'dunSubject',
+                    key: 'dunSubject',
+                    render: text=>{return getjiedian(text)}
+                },{
+                    title: '催款启动日期',
+                    dataIndex: 'startDate',
+                    key: 'startDate'
+                }, {
+					title: '催收操作',
+					dataIndex: 'abc',
+					key: 'abc',
+					render: (text, record, index) => {
+						return <div>
+                            <Button onClick={(e) =>{ e.stopPropagation(), this.visit(record)}} type="primary">添加催款记录</Button>                            							    
+                        </div>
+					}
+				}
+			],
+			data: [],
+			dataSource: [],
+			columnsX: [
+				{
+                    title: '催款人',
+                    dataIndex: 'dumBy',
+                    key: 'dumBy'
+                }, {
+                    title: '催款时间',
+                    dataIndex: 'dumTime',
+                    key: 'dumTime',
+                    
+                },{
+                    title: '催款情况',
+                    dataIndex: 'remarks',
+                    key: 'remarks'
+                }
+			],
+			dataSources: [],
+			
+		}
+	},
+	
+	//页面加载函数
+	componentWillMount() {
+		this.departmentList();
+		this.loadData();
+	},
+	//进入新增拜访记录
+	visit(record) {
+		this.setState({
+			visible:true,
+			dunId:record.id
+		})
+	},
+//	//整行点击
+	tableRowClick(record, index) {
+		this.setState({
+			visibles:true,
+		});
+		this.loadDatas(record.id);
+	},	
+	
+    
+	
+	//新增催款记录
+	examOk(){
+		$.ajax({
+			method: "post",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +"/api/admin/newOrder/createDunLog",
+			data: {
+				dunId:this.state.dunId,
+				dumTime:this.state.dumTime,
+				remarks:this.state.remarks,
+			},
+			success: function(data) {
+				if(data.error.length || data.data.list == "") {
+					if(data.error && data.error.length) {
+						message.warning(data.error[0].message);
+					};
+				} else {
+					message.success("新增催款记录成功~");
+					this.setState({
+						visible:false,
+					});
+					this.loadData();
+					this.resets();
+				};
+				
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	
+	
+	//关闭输入理由框
+	noCancel(){
+		this.setState({
+			noVisible:false
+		})
+	},
+	//搜索
+	search() {
+    	this.setState({
+    		//signBillVisible:false
+    	})
+        this.loadData();
+    },
+    //重置
+    reset() {
+    	this.setState({
+    		signBillVisible:false
+    	})
+    	this.state.orderNo='';
+    	this.state.customerName='';
+    	this.state.adminName='';
+    	this.state.departmenttSearch=undefined;
+    	this.state.releaseDate[0] = undefined;
+		this.state.releaseDate[1] = undefined;
+        this.loadData();       
+    },
+    resets(){
+    	this.state.orderNo='';
+    	this.state.customerName='';
+    	this.state.adminName='';
+    	this.state.departmenttSearch=undefined;
+    	this.state.releaseDate[0] = undefined;
+		this.state.releaseDate[1] = undefined;
+    },
+	getOrgCodeUrl(e) {
+        this.setState({ orgCodeUrl: e });
+    },
+	//关闭详情
+	visitCancel(e){
+		this.setState({
+			visible:false
+		})
+		this.resets();
+	},
+	visitOk(e){
+		this.setState({
+			visible:false
+		})
+		this.resets();
+	},
+	//关闭详情
+	visitCancels(e){
+		this.setState({
+			visibles:false
+		})
+		this.resets();
+	},
+	//导出
+    exportExec(){
+        var data = {
+            name: this.state.customerName?this.state.customerName:undefined,//客户名称
+            adminName:this.state.adminName?this.state.adminName:undefined,//订单负责人
+            orderNo: this.state.orderNo?this.state.orderNo:undefined,//订单编号
+            starTime: this.state.releaseDate[0]?this.state.releaseDate[0]:undefined,
+            endTime: this.state.releaseDate[1]?this.state.releaseDate[1]:undefined,
+        }
+        window.location.href=(globalConfig.context+'/api/admin/newOrder/exportOrderDunData?'+$.param(data));
+    },
+	visitOks(e){
+		this.setState({
+			visibles:false
+		})
+		this.resets();
+	},
+	 //部门
+	departmentList() {
+		this.setState({
+			loading: true
+		});
+		$.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);
+					};
+					thedata = {};
+				} else {
+					thedata.map(function(item, index) {
+						theArr.push({
+							key: index,
+							name: item.name,
+							id: item.id,
+						})
+					})
+				}
+				this.setState({
+					departmentArr: theArr,
+				})
+			}.bind(this),
+		}).always(function() {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
+	},
+	render() {
+		const formItemLayout = {
+			labelCol: { span: 8 },
+			wrapperCol: { span: 14 },
+		};
+		const FormItem = Form.Item;
+		const { RangePicker } = DatePicker;
+		const rowSelection = {
+			selectedRowKeys: this.state.selectedRowKeys,
+			onChange: (selectedRowKeys, selectedRows) => {
+				this.setState({
+					modalVisible:false,
+					selectedRows: selectedRows.slice(-1),
+					selectedRowKeys: selectedRowKeys.slice(-1)
+				});
+			},
+			onSelect: (recordt, selected, selectedRows) => {
+				this.setState({
+					modalVisible:false,
+					recordt: recordt.id
+				})
+			},
+		};
+		let departmentArr = this.state.departmentArr || [];
+		const hasSelected = this.state.selectedRowKeys.length > 0;
+		return(
+			<div className="user-content">
+				<div className="content-title">                  
+                    <span>催款节点统计</span>
+                </div>
+               	<div className="user-search">             
+               		<Button type="primary" onClick={this.exportExec} style={{float:'right'}}>导出催款列表</Button>
+                   <Input placeholder="客户名称" style={{width:'150px',marginBottom:'10px'}}
+	                        value={this.state.customerName}
+	                        onChange={(e) => { this.setState({ customerName: e.target.value }); }} />
+                    <Input placeholder="营销员名称" style={{width:'150px',marginBottom:'10px'}}
+	                        value={this.state.adminName}
+	                        onChange={(e) => { this.setState({ adminName: e.target.value }); }} />
+                    <Input placeholder="订单编号" style={{width:'150px'}}
+                        value={this.state.orderNo}
+                        onChange={(e) => { this.setState({ orderNo: e.target.value }); }} />
+                    <Select placeholder="选择部门"
+                        style={{ width: 150 ,marginRight:'10px'}}
+                        value={this.state.departmenttSearch}
+                        onChange={(e) => { this.setState({ departmenttSearch: e }) }}>
+                        {
+                            departmentArr.map(function (item) {
+                                    return <Select.Option key={item.id} >{item.name}</Select.Option>
+                            })
+                        }
+               		 </Select>  
+                    <span style={{marginRight:"10px"}}>下单时间 :</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 }); }} />
+                    <Button type="primary" onClick={this.search} style={{marginLeft:'10px'}}>搜索</Button>
+                    <Button onClick={this.reset}>重置</Button> 
+                   	<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}
+	                           />
+	                    </Spin>
+               		 </div> 
+               		<Modal	
+				      className="customeDetails"
+				      footer=''
+			          title="新增催款记录"
+			          width='500px'
+			          visible={this.state.visible}
+			          onOk={this.visitOk}
+					  onCancel={this.visitCancel}							          							          
+			        >	
+				        <Form layout="horizontal" onSubmit={this.handleSubmit} id="demand-form" style={{paddingBottom:'40px'}} >
+				            <Spin spinning={this.state.loading}>
+				                <div className="clearfix">
+				                	<div className='clearfix'>
+				                    	<FormItem className="half-item" {...formItemLayout} label="催款时间">
+	                                        <DatePicker 
+	                                            style={{marginTop:"2px",width: '240px',height:"32px" }}
+	                                            showTime
+	                                            format="YYYY-MM-DD"
+	                                            onOk={(e)=>{}}
+	                                            value={this.state.dumTime ? moment(this.state.dumTime) : null}
+	                                            onChange={(data, dataString) => { this.setState({ dumTime: dataString }); }} />
+	                                    </FormItem>
+				                	 </div>
+				                	<div className='clearfix'>
+				                    	<FormItem
+								            labelCol={{ span: 4 }}
+								            wrapperCol={{ span: 16 }}
+								            label="催款情况" >
+								                <Input type="textarea" placeholder="请输入催款情况" rows={4}  value={this.state.remarks} 
+									    				onChange={(e)=>{this.setState({remarks:e.target.value})}}/>	
+								        </FormItem>
+				                    </div>	
+				                     <div className='clearfix'>
+						                   <Button className="cancel" type="primary" onClick={this.examOk} style={{marginLeft:"50px"}} htmlType="submit">添加</Button>
+			                               <Button className="cancel" type="ghost" onClick={this.noCancel} style={{marginLeft:"50px"}}>取消</Button>
+	                            	</div>
+				                </div>
+				            </Spin>
+				        </Form>
+			        </Modal>
+			        <Modal	
+				      className="customeDetails"
+				      footer=''
+			          title="催款记录查看"
+			          width='500px'
+			          visible={this.state.visibles}
+			          onOk={this.visitOks}
+					  onCancel={this.visitCancels}							          							          
+			        >	
+			        	<div className="user-content">
+					        <div className="patent-table">
+			                    <Spin spinning={this.state.loading}>
+			                        <Table columns={this.state.columnsX}
+			                            dataSource={this.state.dataSources}    
+			                            rowSelection={rowSelection}
+			                            pagination={this.state.paginations} 
+			                            onRowClick={this.tableRowClick}
+			                           />
+			                    </Spin>
+		               		 </div>
+		                </div>
+			        </Modal>
+               	</div>  
+            </div>
+			);
+	}
+}));
+export default IntentionCustomer;
+
+
+
+
+
+

+ 266 - 7
js/component/manageCenter/project/project/projectAssignment.jsx

@@ -2,8 +2,10 @@ import React,{Component} from 'react';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import moment from 'moment';
+import '../../order/userMangagement.less';
+import {boutique} from '../../../dataDic.js';
 import '@/manageCenter/financialManage/distribute/public.less';
-import { Icon, Button,Form, Input, Select, Spin, Table, Switch, message, DatePicker, Modal,Upload ,Col} from 'antd';
+import { Icon, Button,Form, Input, Select, Spin, Table, Switch, message, DatePicker, Modal,Upload ,Col,AutoComplete} from 'antd';
 import OrderDesc from '@/manageCenter/financialManage/orderDetail/orderDesc'
 import Assign from '@/manageCenter/publicComponent/assign';
 import {getProcessStatus,getApproval,getLiquidationStatus,getApprovedState,splitUrl,getjiedian,getboutique} from '@/tools';
@@ -78,6 +80,7 @@ const PaiDan = React.createClass({
     },
     getInitialState() {
         return {
+			customerArr: [],
             searchMore: true,
             assignVisible:false,
             releaseDate: [],
@@ -391,6 +394,183 @@ const PaiDan = React.createClass({
 			});
 		}.bind(this));
 	},
+	
+	supervisor(e,state){ //客户名称与服务名称自动补全
+		$.ajax({
+	        method: "get",
+	        dataType: "json",
+	        crossDomain: false,
+	        url: '/api/admin/order/getBusinessProjectByName',
+	        data:{
+	        	businessName:e
+	        },
+	        success: function (data) {                	  
+				    let thedata=data.data;
+				    if (!thedata) {
+	                if (data.error && data.error.length) {
+	                    message.warning(data.error[0].message);
+	                };	
+	                thedata = {}; 
+	                }; 
+					this.setState({
+						states:state,
+						customerArr:thedata,	
+	                });
+				}.bind(this),
+			}).always(function () {
+	        this.setState({
+	            loading: false
+	        });
+	    }.bind(this));  
+	},
+	
+	//服务值改变时请求客户名称
+	httpChange(e){
+		this.state.gid='';
+		if(e.length>=1){
+			this.supervisor(e,false); 
+		}	
+		this.setState({
+			commodityName:e
+		})
+	},
+	
+	//新建项目明细保存
+	nextSubmit(e) {
+		e.preventDefault();
+		if(this.state.gid==undefined||!this.state.gid){
+			message.warning('服务名称不匹配!');
+			return false;
+		};
+		if(!this.state.commodityPrice){
+			message.warning('请输入金额!');
+			this.refs.commodityPrice.focus();
+			return false;
+		};
+		if(!this.state.commodityQuantity){
+			message.warning('请输入商品数量!');
+			this.refs.commodityQuantity.focus();
+			return false;
+		};
+		if(!this.state.main){
+			message.warning('请选择是否为主要项目!');
+			this.refs.commodityQuantity.focus();
+			return false;
+		};
+		this.setState({
+			loading: true
+		});
+		let api=this.state.addState?'/api/admin/newOrder/addOrderTask':'/api/bianji';
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +api ,
+			data: {
+				commodityId:this.state.gid,//商品ID
+				orderNo:this.state.RowData.orderNo,//订单编号
+				commodityName:this.state.commodityName,//商品名称
+				commodityQuantity:this.state.commodityQuantity,//商品数量
+				commodityPrice:this.state.commodityPrice,//签单总价
+				taskComment:this.state.taskComment,//服务说明
+				main:this.state.main,//是否为主要项目
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.nextCancel()
+				//this.loaduser(this.props.datauser);
+				this.xiangmu(this.state.RowData.orderNo)
+				this.loadData();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	
+	//上级主管输入框失去焦点是判断客户是否存在
+	selectAuto(value){
+		let kid=[];
+		let fwList=this.state.customerArr;
+		fwList.map(function(item){
+			if(value==item.bname){
+				kid=item
+			}
+		})
+		this.setState({
+			commodityName:value,
+			gid:kid.id,
+			//commodityPrice:kid.price==0?kid.price.toString():kid.price,
+			commodityFirstPayment:kid.firstPayment==0?kid.firstPayment.toString():kid.firstPayment
+		})
+		console.log(this.state.commodityName,"jjjj",this.state.gid);
+	},
+	
+	//点击添加项目明细
+	addDetailed(){
+		this.setState({
+			gid:'',
+			customerArr:[],
+			commodityName:'',
+			commodityQuantity:'',
+			commodityId:'',
+			taskComment:'',
+			main:undefined,
+			commodityPrice:'',
+			addState:1,
+			addserviceVisible: true
+		})
+	},
+	
+	//修改项目详情
+	tabRowSave(e){
+		e.preventDefault();
+		if(!this.state.commodityPrice){
+			message.warning('金额不能为空!');
+			return false;
+		};
+		if(!this.state.commodityQuantity){
+			message.warning('数量不能为空!');
+			return false;
+		};
+		if(!this.state.main){
+			message.warning('请选择是否为主要项目!');
+			this.refs.commodityQuantity.focus();
+			return false;
+		};
+		console.log(this.state.gid);
+		$.ajax({
+			method: "POST",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context +'/api/admin/newOrder/updateOrderTask' ,
+			data: {
+				id:this.state.jid,//项目ID
+				commodityId:this.state.gid,//商品ID
+				orderNo:this.state.RowData.orderNo,//订单编号
+				main:this.state.main,//是否为主要
+				commodityPrice:this.state.commodityPrice,//金额
+				commodityQuantity:this.state.commodityQuantity,//数量
+				taskComment:this.state.taskComment//备注
+			}
+		}).done(function(data) {
+			this.setState({
+				loading: false
+			});
+			if(!data.error.length) {
+				message.success('保存成功!');
+				this.nextCancel()
+				//this.loaduser(this.props.datauser);
+				this.loadData();
+			} else {
+				message.warning(data.error[0].message);
+			}
+		}.bind(this));
+	},
+	
 	//节点列表
 	jiedian(orderNos) {
 		$.ajax({
@@ -432,7 +612,6 @@ const PaiDan = React.createClass({
 		}.bind(this));
 	},
     closeDesc(e, s) {
-    	console.log(this.state.page);
         this.state.showDesc = e;
         if (s) {
             this.loadData(this.state.page);
@@ -460,6 +639,7 @@ const PaiDan = React.createClass({
     },
     nextCancel() {
 		this.setState({
+			addserviceVisible: false,
 			addnextVisible: false
 		})
 	},
@@ -552,10 +732,14 @@ const PaiDan = React.createClass({
                 });
             }
         };
-        const formItemLayout = {
+		const formItemLayout = {
 			labelCol: { span: 8 },
 			wrapperCol: { span: 14 },
 		};
+		const dataSources=this.state.customerArr || [];
+		const options = dataSources.map((group,index) =>
+				      <Select.Option key={index} value={group.bname}>{group.bname}</Select.Option>
+				     )
         const FormItem = Form.Item;
         const hasSelected = this.state.selectedRowKeys.length > 0;
         const { RangePicker } = DatePicker;
@@ -740,10 +924,10 @@ const PaiDan = React.createClass({
                             				<span>{this.state.financeMobile}</span>
 			                    		</FormItem>
 			                    	</div>
-						            <div>
-					                	<span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
-					                	{this.state.processStatus==0?<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px',marginBottom:'15px'}}>添加项目明细</Button>:""}
-					                </div>
+						            {<div>
+						            	<span style={{marginLeft:'50px',fontSize:'20px'}}>项目业务</span>
+						            	{/*<Button type='primary' onClick={this.addDetailed} style={{float:'right',marginRight:'50px'}}>添加项目明细</Button>*/}
+						            </div>}
 					                <div className="patent-table">
 					                    <Spin spinning={this.state.loading}>
 					                        <Table columns={this.state.columnsX}
@@ -798,6 +982,81 @@ const PaiDan = React.createClass({
 			                </Spin>
 			            </Form >
 			        </Modal>
+					
+					<Modal maskClosable={false} visible={this.state.addserviceVisible}
+					    onOk={this.nextCancel} onCancel={this.nextCancel}
+					    width='800px'
+					    title={'添加项目明细'}                     
+					    footer=''
+					    className="admin-desc-content">
+					    <Form layout="horizontal" onSubmit={this.nextSubmit} id="demand-form">
+							<Spin spinning={this.state.loading}>
+								<div className="clearfix">
+									<FormItem className="half-item"
+										{...formItemLayout}
+										label="服务名称" >
+										<AutoComplete className="certain-category-search"
+													dropdownClassName="certain-category-search-dropdown"
+													dropdownMatchSelectWidth={false}
+													dropdownStyle={{ width: 200 }}
+													style={{ width: '200px' }}
+													placeholder="输入服务名称"
+													dataSource={options}
+													value={this.state.commodityName}
+													onChange={this.httpChange}
+													filterOption={true}
+													onSelect={this.selectAuto}>
+											<Input/>
+										</AutoComplete>
+										<span className="mandatory">*</span>
+									</FormItem>
+									
+									<FormItem className="half-item"
+									        {...formItemLayout}
+									        label="服务数量" >   
+									            <Input placeholder="请输入服务数量" style={{width:'200px'}} value={this.state.commodityQuantity}
+												onChange={(e)=>{this.setState({commodityQuantity:e.target.value})}} ref="commodityQuantity"/>
+									        <span className="mandatory">*</span>
+									</FormItem>
+									
+									<FormItem className="half-item"
+									        {...formItemLayout}
+									        label="实签价格(万元)" >   
+									            <Input placeholder="请输入实签价格" style={{width:'200px'}} value={this.state.commodityPrice}
+												onChange={(e)=>{this.setState({commodityPrice:e.target.value})}} ref="commodityPrice"/>
+									        <span className="mandatory">*</span>    
+									</FormItem>
+									<FormItem className="half-item"
+									    {...formItemLayout}
+									    label="主要业务" >  
+									    <Select placeholder="选择是否为主要业务"
+									        style={{ width:'200px'}} value={this.state.main} onChange={(e)=>{this.setState({main:e})}}
+									        >
+									        {
+									            boutique.map(function (item) {
+									                return <Select.Option key={item.value} >{item.key}</Select.Option>
+									            })
+									        }
+										 </Select>
+										 <span className="mandatory">*</span>   
+									</FormItem>
+									<div className='clearfix'>
+									    <FormItem 
+									            labelCol={{ span: 4 }}
+									            wrapperCol={{ span: 16 }}
+									            label="服务说明" >   
+									                <Input type='textarea' placeholder="请输入服务说明" value={this.state.taskComment} onChange={(e)=>{this.setState({taskComment:e.target.value})}}/>
+									    </FormItem>
+									</div>
+									<FormItem wrapperCol={{ span: 12, offset: 4 }} className="half-middle">
+									    <Button className="submitSave" type="primary" htmlType="submit">保存</Button>  
+									    <Button className="submitSave" type="ghost" onClick={this.nextCancel}>取消</Button>
+									</FormItem>
+								</div>
+							</Spin>
+						</Form>
+					</Modal>
+					
 			        <Modal maskClosable={false} visible={this.state.noVisible}
                         onOk={this.noCancel} onCancel={this.noCancel}
                         width='400px'

+ 1 - 1
js/component/manageCenter/project/task/myTask.jsx

@@ -667,7 +667,7 @@ const Task = React.createClass({
                     data={this.state.assignData}
                     showDesc={this.state.assignVisible}
                     closeDesc={this.closeAssign.bind(this)}
-                    // fenpaiData={8}
+                    fenpaiData={8}
                     specially={0}
                     roleName={this.state.nub}
 					requestMethod = {"post"}

+ 24 - 11
js/component/manageCenter/publicComponent/assign.jsx

@@ -195,17 +195,7 @@ const Assign=React.createClass({
 // 				newFinance:this.state.contact?record.id:record.contactId
 // 				
 // 			}
-            data: this.props.fenpaiData==8?{
-            	taskId:this.props.data.id,//任务ID
-            	taskReceiverId:this.state.contact?record.id:record.contactId,//分配人物ID
-            	specially:this.props.specially,//是否是咨询师管理员
-				orderNo:this.state.orderNo,
-				newFinance:this.state.contact?record.id:record.contactId
-            }:{
-            	orderNo:this.state.orderNo,
-                financeId: this.state.contact?record.id:record.contactId,    //分配人物id
-                approval:this.props.data.approval   //是否特批
-            }
+            data: this.judge(this.props,record)
         }).done(function (data) {
             if (!data.error.length) {
                 message.success('派单成功');
@@ -218,6 +208,29 @@ const Assign=React.createClass({
             });
         }.bind(this));
     },
+	
+	/* 区分分派和两种转交 */
+	judge(props,record){
+		if (props.fenpaiData===8) {
+			return {
+            	taskId:props.data.id,//任务ID
+            	taskReceiverId:this.state.contact?record.id:record.contactId,//分配人物ID
+            	specially:props.specially//是否是咨询师管理员
+            };
+		} else if(props.fenpaiData===4){
+			return {
+				orderNo:this.state.orderNo,
+				financeId: this.state.contact?record.id:record.contactId,    //分配人物id
+				approval:props.data.approval   //是否特批
+			};
+		} else {
+			return {
+            	orderNo:this.state.orderNo,
+				newFinance:this.state.contact?record.id:record.contactId
+            };
+		}
+	},
+	
     searchOrder(){
     	this.contactList({},this.state.contact);
     },

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "afanti",
-  "version": "1.0.52",
+  "version": "1.0.96",
   "description": "",
   "main": "index.js",
   "scripts": {