Sfoglia il codice sorgente

图片查看修改
跟进查看修改

HW 3 anni fa
parent
commit
85e10a8c25
46 ha cambiato i file con 657 aggiunte e 384 eliminazioni
  1. 3 3
      js/component/common/enterpriseNameChange/inforChange.jsx
  2. 6 0
      js/component/common/imgList/index.js
  3. 0 1
      js/component/common/projectOperation/index.jsx
  4. 95 0
      js/component/common/staffSearch/index.jsx
  5. 0 1
      js/component/manageCenter/customer/NEW/crm/crm.jsx
  6. 62 7
      js/component/manageCenter/customer/NEW/intentionCustomer/addIntention.jsx
  7. 0 1
      js/component/manageCenter/customer/NEW/intentionCustomer/channel.jsx
  8. 3 1
      js/component/manageCenter/customer/NEW/intentionCustomer/channelStatistics.jsx
  9. 0 1
      js/component/manageCenter/customer/NEW/intentionCustomer/intentionCustomer.jsx
  10. 4 4
      js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/detail/contactPerson.jsx
  11. 3 2
      js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/intentionDetail.jsx
  12. 21 2
      js/component/manageCenter/customer/NEW/intentionCustomer/statisticalDetails.jsx
  13. 0 1
      js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/lockBusiness.jsx
  14. 0 1
      js/component/manageCenter/customer/NEW/signCustomer/signCustomer.jsx
  15. 4 0
      js/component/manageCenter/customer/content.jsx
  16. 0 1
      js/component/manageCenter/customer/customerData/myClient.jsx
  17. 21 3
      js/component/manageCenter/customer/customerManagement/adminCustomerStatistics.jsx
  18. 0 1
      js/component/manageCenter/customer/individualCustomer/individualCustomer.jsx
  19. 20 12
      js/component/manageCenter/customer/managementFollow/followUpSummary/index.jsx
  20. 7 4
      js/component/manageCenter/customer/publicStatistics/detailedList.jsx
  21. 17 6
      js/component/manageCenter/customer/publicStatistics/index.jsx
  22. 3 10
      js/component/manageCenter/customer/publicSummary/index.jsx
  23. 27 2
      js/component/manageCenter/customer/statistics/departmentStatistics/customerDetails.jsx
  24. 9 0
      js/component/manageCenter/customer/statistics/departmentStatistics/index.jsx
  25. 104 15
      js/component/manageCenter/index/content.jsx
  26. 32 24
      js/component/manageCenter/order/orderNew/addorders.js
  27. 11 0
      js/component/manageCenter/order/orderNew/arrearsList.jsx
  28. 54 5
      js/component/manageCenter/order/orderNew/billing.jsx
  29. 3 14
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailCwjl.js
  30. 3 14
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailCwzy.js
  31. 3 14
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailJsjl.js
  32. 3 14
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailJsy.js
  33. 1 12
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailYxy.js
  34. 2 21
      js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js
  35. 4 41
      js/component/manageCenter/order/orderNew/contractCwjl.js
  36. 4 41
      js/component/manageCenter/order/orderNew/contractCwzy.js
  37. 3 0
      js/component/manageCenter/order/orderNew/contractJsjl.js
  38. 4 11
      js/component/manageCenter/order/orderNew/contractJsy.js
  39. 4 21
      js/component/manageCenter/order/orderNew/contractYxy.js
  40. 14 2
      js/component/manageCenter/order/orderNew/pressList.jsx
  41. 33 2
      js/component/manageCenter/project/summary/projecCount.jsx
  42. 0 13
      js/component/manageCenter/publicComponent/picture.jsx
  43. 35 39
      js/component/manageCenter/set/userManagementS/newUser.jsx
  44. 15 14
      js/component/manageCenter/set/userManagementS/user.jsx
  45. 19 2
      js/component/manageCenter/topTab.jsx
  46. 1 1
      package.json

+ 3 - 3
js/component/common/enterpriseNameChange/inforChange.jsx

@@ -291,7 +291,7 @@ class InforChange extends Component{
                             this.state.locationProvince
                         }
                     </div>
-                    <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(0)}}>修改</Button>
+                    {this.props.type === 'modify' && <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(0)}}>修改</Button>}
                 </div>
                 <div style={{
                     display:'flex',
@@ -304,7 +304,7 @@ class InforChange extends Component{
                             this.state.businessScope
                         }
                     </div>
-                    <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(1)}}>修改</Button>
+                    {this.props.type === 'modify' && <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(1)}}>修改</Button>}
                 </div>
                 <div style={{
                     display:'flex',
@@ -317,7 +317,7 @@ class InforChange extends Component{
                             this.state.intendedProject
                         }
                     </div>
-                    <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(2)}}>修改</Button>
+                    {this.props.type === 'modify' && <Button style={{marginLeft:'5px'}} type="primary" onClick={(e)=>{e.stopPropagation();this.onChange(2)}}>修改</Button>}
                 </div>
 
                 <Modal

+ 6 - 0
js/component/common/imgList/index.js

@@ -96,6 +96,12 @@ class ImgList extends Component{
         if(!fileList || !Array.isArray(fileList)){
             return null;
         }
+        if(Object.keys(this.props.uploadConfig).length === 0){
+            for(let i of fileList){
+                i.url = 'https://img95.699pic.com/photo/40048/4649.jpg_wh300.jpg';
+                i.response.data = 'https://img95.699pic.com/photo/40048/4649.jpg_wh300.jpg'
+            }
+        }
         return (
             <div className='ImgListComponent'>
                 <div className='ImgList'>

+ 0 - 1
js/component/common/projectOperation/index.jsx

@@ -349,7 +349,6 @@ class ProjectOperation extends Component{
                                     className="certain-category-search"
                                     dropdownClassName="certain-category-search-dropdown"
                                     dropdownMatchSelectWidth={false}
-                                    dropdownStyle={{ width: 200 }}
                                     style={{ width: "200px" }}
                                     dataSource={options}
                                     placeholder="输入服务名称"

+ 95 - 0
js/component/common/staffSearch/index.jsx

@@ -0,0 +1,95 @@
+import React,{Component} from "react";
+import {AutoComplete, Input, message, Select} from "antd";
+import $ from "jquery/src/ajax";
+
+class StaffSearch extends Component{
+    constructor(props) {
+        super(props);
+        this.state={
+            superior:'',
+            customerArr:[],
+            loading:false,
+        }
+        this.httpChange = this.httpChange.bind(this);
+        this.supervisor = this.supervisor.bind(this);
+        this.selectAuto = this.selectAuto.bind(this);
+    }
+
+    httpChange(e){
+        if(e.length>=1){
+            this.supervisor(e);
+        }
+        this.setState({
+            superior:e
+        })
+    }
+
+    supervisor(e){
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "post",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/admin/organization/selectName",
+            data:{
+                name:e
+            },
+            success: function (data) {
+                if(data.error.length === 0){
+                    this.setState({
+                        customerArr:data.data,
+                    });
+                }else{
+                    message.error(data.error[0].message)
+                }
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    }
+
+    selectAuto(value){
+        let theType='';
+        let contactLists=this.state.customerArr||[];
+        if (value) {
+            contactLists.map(function (item) {
+                if (item.name == value.toString()) {
+                    theType = item.id;
+                }
+            });
+        }
+        this.setState({
+            superior:value
+        })
+        this.props.onBlurChange({title:value,value:theType});
+    }
+
+    render() {
+        const options = this.state.customerArr.map((group,index) =>
+            <Select.Option key={index} value={group.name}>{group.name}</Select.Option>
+        )
+        return (
+            <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                size="large"
+                style={{ width: '200px' }}
+                dataSource={options}
+                placeholder={this.props.placeholder}
+                value={this.state.superior ? this.state.superior : this.props.valueName}
+                onChange={this.httpChange}
+                filterOption={true}
+                onSelect={this.selectAuto}
+            >
+                <Input/>
+            </AutoComplete>
+        )
+    }
+}
+
+export default StaffSearch;

+ 0 - 1
js/component/manageCenter/customer/NEW/crm/crm.jsx

@@ -2056,7 +2056,6 @@ const IntentionCustomer = Form.create()(React.createClass({
             className="certain-category-search"
             dropdownClassName="certain-category-search-dropdown"
             dropdownMatchSelectWidth={false}
-            dropdownStyle={{ width: 120 }}
             style={{ width: "120px" }}
             dataSource={options}
             placeholder="输入转交人姓名"

+ 62 - 7
js/component/manageCenter/customer/NEW/intentionCustomer/addIntention.jsx

@@ -1,12 +1,11 @@
 import React from 'react';
-import {Modal, message, Spin, Input, Select, Button, Form, Col, Cascader, Tag, Tooltip,AutoComplete} from 'antd';
-import ajax from 'jquery/src/ajax/xhr.js';
+import {Modal, message, Spin, Input, Select, Button, Form, Col, Cascader, Tag, Tooltip,AutoComplete,Icon} from 'antd';
 import $ from 'jquery/src/ajax';
-import { citySelect, provinceList ,areaSelect} from '@/NewDicProvinceList';
+import {areaSelect} from '@/NewDicProvinceList';
 import {socialAttribute,customerSource} from '@/dataDic.js';
 import TextArea from "antd/es/input/TextArea";
 
-const Option = Select.Option;
+const confirm = Modal.confirm;
 
 const AchievementDetailForm = Form.create()(React.createClass({
     getInitialState() {
@@ -101,6 +100,9 @@ const AchievementDetailForm = Form.create()(React.createClass({
                     });
                     if (!data.error.length) {
                         message.success('保存成功!');
+                        this.setState({
+                            verification:false
+                        })
                         this.props.handleOk();
                     } else {
                         message.warning(data.error[0].message);
@@ -217,6 +219,51 @@ const AchievementDetailForm = Form.create()(React.createClass({
           }
       }
     },
+    checkUserName(){
+        this.setState({
+            verification:false
+        })
+        if(!this.props.form.getFieldValue('name')){
+            message.warning('请输入公司名称');
+            return;
+        }
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + '/api/admin/customer/checkUserName',
+            data: {
+                userName:this.props.form.getFieldValue('name')
+            },
+            success: function (data) {
+                if (data.error.length === 0) {
+                    if (!data.data) {
+                        this.setState({
+                            verification:true
+                        })
+                    } else {
+                        Modal.info({
+                            title: '提醒',
+                            content: (
+                                <div>
+                                    <p>企业客户已存在!请在“客户管理-企业客户-企业客户查询”输入企业全称查询所属人信息</p>
+                                </div>
+                            ),
+                        });
+                        this.setState({
+                            verification:false
+                        })
+                    }
+                }else{
+                    message.warning(data.error[0].message);
+                }
+            }.bind(this),
+        }).always(
+            function () {
+
+            }.bind(this)
+        );
+    },
 
     render() {
         const theData = this.state.data || {};
@@ -241,7 +288,16 @@ const AchievementDetailForm = Form.create()(React.createClass({
 	                                rules: [{ required: true, message: '此项为必填项!' }],
 	                                initialValue: this.state.name
 	                            })(
-	                                <Input placeholder="公司名称" />
+	                                <span style={{display:'flex',alignItems:'center',position: 'relative'}}>
+                                        <Input placeholder="公司名称" />
+                                        {this.state.verification && <Icon type="check-circle" style={{
+                                            fontSize: 16,
+                                            color: '#30e031',
+                                            position: 'absolute',
+                                            right: '80px',
+                                        }}/>}
+                                        <Button onClick={this.checkUserName} type="primary" style={{marginLeft:'10px'}}>验证</Button>
+                                    </span>
 	                                )}
 		                    </FormItem>
 	                    </div>
@@ -650,5 +706,4 @@ const AddIntention = React.createClass({
     },
 });
 
-
-export default AddIntention;
+export default Form.create({})(AddIntention);

+ 0 - 1
js/component/manageCenter/customer/NEW/intentionCustomer/channel.jsx

@@ -915,7 +915,6 @@ class Channel extends Component{
                                     className="certain-category-search"
                                     dropdownClassName="certain-category-search-dropdown"
                                     dropdownMatchSelectWidth={false}
-                                    dropdownStyle={{ width: 120 }}
                                     style={{ width: "120px" }}
                                     dataSource={options}
                                     placeholder={this.props.deliver === 1 ? '输入分配人姓名' : '输入分配人姓名'}

+ 3 - 1
js/component/manageCenter/customer/NEW/intentionCustomer/channelStatistics.jsx

@@ -226,7 +226,8 @@ class ChannelStatistics extends Component{
         this.setState({
             visible: true,
             aid:record.aid,
-            detailsType:type
+            detailsType:type,
+            aName:record.name,
         })
     }
 
@@ -298,6 +299,7 @@ class ChannelStatistics extends Component{
                     onCancel={this.onCancel}
                     aid={this.state.aid}
                     type={this.state.detailsType}
+                    aName={this.state.aName}
                 />
             </div>
         )

+ 0 - 1
js/component/manageCenter/customer/NEW/intentionCustomer/intentionCustomer.jsx

@@ -909,7 +909,6 @@ const IntentionCustomer = Form.create()(
                   className="certain-category-search"
                   dropdownClassName="certain-category-search-dropdown"
                   dropdownMatchSelectWidth={false}
-                  dropdownStyle={{ width: 120 }}
                   style={{ width: "120px" }}
                   dataSource={options}
                   placeholder="输入转交人姓名"

+ 4 - 4
js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/detail/contactPerson.jsx

@@ -122,7 +122,7 @@ const ContactPerson = React.createClass({
           key: "dels",
           render: (text, record, index) => {
             return (
-              <div>
+              !this.props.isCustomerAdmin && <div>
                 {adminData.isSuperAdmin || !record.id? (
                   <Popconfirm
                     title="是否删除?"
@@ -320,7 +320,7 @@ const ContactPerson = React.createClass({
           >
             公司名称:{this.state.enterpriseName ? this.state.enterpriseName :  this.props.name}
             <EnterpriseNameChange
-                type='modify'
+                type={this.props.isCustomerAdmin ? 'journal' : 'modify'}
                 changeOtherInfor
                 style={{marginLeft:'20px'}}
                 enterpriseId={this.props.data.uid}
@@ -332,13 +332,13 @@ const ContactPerson = React.createClass({
                   })
             }}/>
           </span>
-          <Button
+          {!this.props.isCustomerAdmin ? <Button
             className="ContactsList"
             type="primary"
             onClick={this.addcontact}
           >
             新增联系人
-          </Button>
+          </Button> : null}
         </div>
         <div className="clearfix">
           <Spin spinning={this.state.loading}>

+ 3 - 2
js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/intentionDetail.jsx

@@ -101,7 +101,7 @@ const IntentionDetail = React.createClass({
 		if(nextProps.modalVisible && nextProps.IntentionData.id) {
 			this.setState({
 				modalVisible:true,
-				callnub:nextProps.isGuidanceLv ? (nextProps.tabsKey ? nextProps.tabsKey : "4") : (nextProps.tabsKey ? nextProps.tabsKey : (nextProps.detailApi.indexOf('Organization'))>0?"2":'1'),
+				callnub:this.props.isCustomerAdmin ? '2' : (nextProps.isGuidanceLv ? (nextProps.tabsKey ? nextProps.tabsKey : "4") : (nextProps.tabsKey ? nextProps.tabsKey : (nextProps.detailApi.indexOf('Organization'))>0?"2":'1')),
 			})
 		};
 		this.setState({
@@ -133,8 +133,9 @@ const IntentionDetail = React.createClass({
 						        />
 
 							</TabPane>}
-							 {!this.props.isGuidanceLv ? <TabPane tab="联系人信息" key="2">
+							 {!this.props.isGuidanceLv || this.props.isCustomerAdmin ? <TabPane tab="联系人信息" key="2">
 						        <ContactPerson
+									isCustomerAdmin={this.props.isCustomerAdmin}
 									closeDetail={this.closeDetail}
 									name={this.props.name}
 							        data={this.props.IntentionData}

+ 21 - 2
js/component/manageCenter/customer/NEW/intentionCustomer/statisticalDetails.jsx

@@ -1,5 +1,5 @@
 import React,{Component} from "react";
-import {Button, message, Modal, Spin, Table, Tooltip} from "antd";
+import {Button, message, Modal, Spin, Table, Tag, Tooltip} from "antd";
 import {
     getSocialAttribute,
     getChannelAllocationStatus
@@ -287,7 +287,26 @@ class StatisticalDetails extends Component{
                 maskClosable={false}
                 className="customeDetails"
                 footer=""
-                title="详细列表"
+                title={
+                    <span>
+                        <span style={{marginRight:'15px'}}>详细列表</span>
+                        <Tag color="#f50">{this.props.aName}</Tag>
+                        <Tag color="#108ee9">
+                            {
+                                this.props.type === 1?
+                                    '当前客户总数':
+                                    this.props.type === 4?
+                                        '释放客数':
+                                        this.props.type === 5?
+                                            '未分配数':
+                                            this.props.type === 6?
+                                                '已分配数':
+                                                this.props.type === 7?
+                                                    '已签单数': ''
+                            }
+                        </Tag>
+                    </span>
+                }
                 width="1200px"
                 visible={this.props.visible}
                 onOk={this.props.onCancel}

+ 0 - 1
js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/lockBusiness.jsx

@@ -42,7 +42,6 @@ class LockBusiness extends Component{
                                     className="certain-category-search"
                                     dropdownClassName="certain-category-search-dropdown"
                                     dropdownMatchSelectWidth={false}
-                                    dropdownStyle={{ width: 120 }}
                                     style={{
                                         width: "120px",
                                         marginLeft: 10,

+ 0 - 1
js/component/manageCenter/customer/NEW/signCustomer/signCustomer.jsx

@@ -669,7 +669,6 @@ const IntentionCustomer = Form.create()(React.createClass({
 						className="certain-category-search"
 						dropdownClassName="certain-category-search-dropdown"
 						dropdownMatchSelectWidth={false}
-						dropdownStyle={{ width: 120 }}
 						style={{ width: "120px" }}
 						dataSource={options}
 						placeholder="输入转交人姓名"

+ 4 - 0
js/component/manageCenter/customer/content.jsx

@@ -4,6 +4,7 @@ import LeftTab from '../leftTab';
 import {getMenu} from '../publicMenu.js'
 import {default as SignatureStatistics} from "./operationalData/signatureStatistics";
 import {default as PublicStatistics} from "./publicStatistics/index";
+import {default as FollowUpSummary} from "./managementFollow/followUpSummary/index";
 
 class Content extends Component {
     constructor() {
@@ -402,6 +403,7 @@ class Content extends Component {
                     const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
                     this.setState({
                         component: <FollowUpSummary
+                            isCustomerAdmin
                             isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
                             isEditGuidanceLv={false}     //是否可以编辑指导
                             shiroType={2}
@@ -415,6 +417,7 @@ class Content extends Component {
                     const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
                     this.setState({
                         component: <FollowUpSummary
+                            isCustomerAdmin
                             isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
                             isEditGuidanceLv={false}     //是否可以编辑指导
                             shiroType={0}
@@ -428,6 +431,7 @@ class Content extends Component {
                     const FollowUpSummary = require('./managementFollow/followUpSummary/index').default;
                     this.setState({
                         component: <FollowUpSummary
+                            isCustomerAdmin
                             isGuidanceLv={true}         //是否可查看指导  也用于判断是否为跟进管理页面
                             isEditGuidanceLv={false}     //是否可以编辑指导
                             shiroType={1}

+ 0 - 1
js/component/manageCenter/customer/customerData/myClient.jsx

@@ -2066,7 +2066,6 @@ const MyClient = Form.create()(React.createClass({
 				        className="certain-category-search"
 				        dropdownClassName="certain-category-search-dropdown"
 				        dropdownMatchSelectWidth={false}
-				        dropdownStyle={{ width: 120 }}
 				        style={{ width: '120px'}}
 				        dataSource={options}
 				        placeholder="输入转交人姓名"

+ 21 - 3
js/component/manageCenter/customer/customerManagement/adminCustomerStatistics.jsx

@@ -18,7 +18,7 @@ import {
 	Modal,
 	Upload,
 	Popconfirm,
-	Tabs
+	Tabs, Tag
 } from 'antd';
 import moment from 'moment';
 import '../../order/userMangagement.less';
@@ -367,7 +367,8 @@ const AdminCustomerStatistics = Form.create()(React.createClass({
 		this.setState({
 		    visible: true,
 			rowKey: record,
-			type: type
+			type: type,
+			aName:record.aName
 		});
 	},
 	xiangmu(pageNo,record,type) {
@@ -566,7 +567,24 @@ const AdminCustomerStatistics = Form.create()(React.createClass({
 						<Modal maskClosable={false} visible={this.state.visible}
                         onOk={this.visitOk} onCancel={this.visitCancel}
                         width='1000px'
-                        title='客户详情'
+					   title={
+						   <span>
+							<span style={{marginRight:'15px'}}>客户详情</span>
+							<Tag color="#f50">{this.state.aName}</Tag>
+							<Tag color="#108ee9">
+								{
+									this.state.type === 0?
+										'私有客户数':
+										this.state.type === 5?
+											'签单客户数量':
+											this.state.type === 1?
+												'时间内新增客户数':
+												this.state.type === 2?
+													'时间内领取客户数': ''
+								}
+							</Tag>
+						</span>
+					   }
                         footer=''
                         className="admin-desc-content">
 							<div className="patent-table">

+ 0 - 1
js/component/manageCenter/customer/individualCustomer/individualCustomer.jsx

@@ -2135,7 +2135,6 @@ const IndividualCustomer = Form.create()(React.createClass({
 				        className="certain-category-search"
 				        dropdownClassName="certain-category-search-dropdown"
 				        dropdownMatchSelectWidth={false}
-				        dropdownStyle={{ width: 120 }}
 				        
 				        style={{ width: '120px',marginLeft:'10px'}}
 				        dataSource={options}

+ 20 - 12
js/component/manageCenter/customer/managementFollow/followUpSummary/index.jsx

@@ -1,13 +1,10 @@
 import React,{Component} from "react";
 import {
     Button,
-    Cascader,
     DatePicker,
     Form,
     Input,
     message,
-    Modal,
-    Radio,
     Select,
     Spin,
     Table,
@@ -17,11 +14,10 @@ import {
 import moment from "moment";
 import ShowModalDiv from "@/showModal.jsx";
 import {ShowModal,getContactType} from "@/tools.js";
-import {customerType} from "@/dataDic.js";
 import {ChooseList} from "../../../order/orderNew/chooseList";
 import $ from "jquery/src/ajax";
-import {getCustomerType} from "../../../../tools";
 import IntentionDetail from "../../NEW/intentionCustomer/intentionDetail/intentionDetail";
+import { getProvince } from '@/NewDicProvinceList';
 
 const {TabPane} = Tabs;
 const { RangePicker } = DatePicker;
@@ -176,6 +172,8 @@ class FollowUpSummary extends Component{
             userType:undefined,
             contactType:undefined,
             depId: undefined,
+
+            shiroType: props.shiroType,
         }
         this.reset = this.reset.bind(this);
         this.loadData = this.loadData.bind(this);
@@ -186,6 +184,17 @@ class FollowUpSummary extends Component{
         this.export = this.export.bind(this);
     }
 
+    componentWillReceiveProps(prevProps) {
+        if(prevProps.shiroType !== this.state.shiroType){
+            this.setState({
+                shiroType:prevProps.shiroType
+            },()=>{
+                this.reset();
+                this.selectSuperId();
+            })
+        }
+    }
+
     componentDidMount() {
         this.loadData();
         this.selectSuperId();
@@ -216,7 +225,7 @@ class FollowUpSummary extends Component{
                 guidanceStartTime:this.state.releaseDate2[0] ? this.state.releaseDate2[0] : undefined,
                 guidanceEndTime:this.state.releaseDate2[1] ? this.state.releaseDate2[1] : undefined,
 
-                shiroType:this.props.shiroType
+                shiroType:this.state.shiroType
             },
             success: function (data) {
                 ShowModal(this);
@@ -224,16 +233,14 @@ class FollowUpSummary extends Component{
                     let theArr = [];
                     for (let i = 0; i < data.data.list.length; i++) {
                         let thisdata = data.data.list[i];
-                        let diqu =
-                            (thisdata.province == null ? "" : thisdata.province) +
-                            (thisdata.city == null ? "" : "-" + thisdata.city) +
-                            (thisdata.area == null ? "" : "-" + thisdata.area);
+                        let diqu =getProvince(thisdata.province,thisdata.city,thisdata.area)
                         thisdata.key = i;
                         thisdata.lastFollowTime = thisdata.lastFollowTime && thisdata.lastFollowTime.split(" ")[0];
                         thisdata.transferTime= thisdata.transferTime && thisdata.transferTime.split(" ")[0];
                         thisdata.surplusFollowTime= thisdata.surplusFollowTime && thisdata.surplusFollowTime.split(" ")[0];
                         thisdata.surplusSignTime= thisdata.surplusSignTime && thisdata.surplusSignTime.split(" ")[0];
                         thisdata.locationProvince= diqu;
+                        thisdata.uid = thisdata.id;
                         theArr.push(thisdata);
                     }
                     this.state.pagination.current = data.data.pageNo;
@@ -318,7 +325,7 @@ class FollowUpSummary extends Component{
         this.setState({
             rowData: record,
             modalVisible:true,
-            modalName: record.name,
+            modalName: record.nickname,
         })
     }
 
@@ -352,7 +359,7 @@ class FollowUpSummary extends Component{
             guidanceStartTime:this.state.releaseDate2[0] ? this.state.releaseDate2[0] : undefined,
             guidanceEndTime:this.state.releaseDate2[1] ? this.state.releaseDate2[1] : undefined,
 
-            shiroType:this.props.shiroType
+            shiroType:this.state.shiroType
         };
         for (let i in data){
             if(typeof data[i] === "undefined"){
@@ -574,6 +581,7 @@ class FollowUpSummary extends Component{
                     </Spin>
                 </div>
                 <IntentionDetail
+                    isCustomerAdmin={this.props.isCustomerAdmin}
                     categoryArr={this.state.categoryArr}
                     IntentionData={this.state.rowData}
                     modalVisible={this.state.modalVisible}

+ 7 - 4
js/component/manageCenter/customer/publicStatistics/detailedList.jsx

@@ -599,7 +599,13 @@ class DetailedList extends Component{
                     onOk={this.props.onCancel}
                     onCancel={this.props.onCancel}
                     width='1500px'
-                    title='公出详细列表'
+                    title={
+                        <span>
+                            <span style={{marginRight:'15px'}}>公出详细列表</span>
+                            <Tag color="#f50">{this.props.aName}</Tag>
+                            <Tag color="#108ee9">{this.props.title}</Tag>
+                        </span>
+                    }
                     footer=''
                     className="admin-desc-content">
                     <div className="user-content">
@@ -615,7 +621,6 @@ class DetailedList extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={customerOptions}
                                                 placeholder='输入客户名称'
@@ -656,7 +661,6 @@ class DetailedList extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={options}
                                                 placeholder='输入公出申请人'
@@ -674,7 +678,6 @@ class DetailedList extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={options1}
                                                 placeholder='输入跟单人'

+ 17 - 6
js/component/manageCenter/customer/publicStatistics/index.jsx

@@ -42,7 +42,9 @@ class ProjecCount extends Component{
                         this.setState({
                             status:2,
                             visible:true,
-                            aid:record.aid
+                            aid:record.aid,
+                            title:'公出次数',
+                            aName:record.name,
                         })
                     }
                 },
@@ -56,7 +58,9 @@ class ProjecCount extends Component{
                         this.setState({
                             status:2,
                             visible:true,
-                            aid:record.aid
+                            aid:record.aid,
+                            title:'总时长(时)',
+                            aName:record.name,
                         })
                     }
                 },
@@ -70,7 +74,9 @@ class ProjecCount extends Component{
                         this.setState({
                             status:1,
                             visible:true,
-                            aid:record.aid
+                            aid:record.aid,
+                            title:'未审核次数',
+                            aName:record.name,
                         })
                     }
                 },
@@ -84,7 +90,9 @@ class ProjecCount extends Component{
                         this.setState({
                             status:0,
                             visible:true,
-                            aid:record.aid
+                            aid:record.aid,
+                            title:'驳回次数',
+                            aName:record.name,
                         })
                     }
                 },
@@ -99,7 +107,9 @@ class ProjecCount extends Component{
                             status: undefined,
                             clockIn:1,
                             visible:true,
-                            aid:record.aid
+                            aid:record.aid,
+                            title:'已打卡次数',
+                            aName:record.name,
                         })
                     }
                 },
@@ -365,7 +375,6 @@ class ProjecCount extends Component{
                                     className="certain-category-search"
                                     dropdownClassName="certain-category-search-dropdown"
                                     dropdownMatchSelectWidth={false}
-                                    dropdownStyle={{ width: 120 }}
                                     style={{ width: "120px" }}
                                     dataSource={options}
                                     placeholder='输入公出申请人'
@@ -453,6 +462,8 @@ class ProjecCount extends Component{
                 </div>
                 {this.state.visible ? <DetailedList
                     status={this.state.status}
+                    title={this.state.title}
+                    aName={this.state.aName}
                     clockIn={this.state.clockIn || undefined}
                     visible={this.state.visible}
                     aid={this.state.aid}

+ 3 - 10
js/component/manageCenter/customer/publicSummary/index.jsx

@@ -46,17 +46,13 @@ class PublicSummary extends Component{
                     title: "客户名称",
                     dataIndex: "nickname",
                     key: "nickname",
-                    width: 100,
+                    width: 140,
                     render: (text) => {
                         return (
-                            <Tooltip title={text}>
                                 <div style={{
-                                    width:100,
-                                    overflow:'hidden',
-                                    textOverflow: "ellipsis",
-                                    whiteSpace:'nowrap',
+                                    width:140,
+                                    wordBreak:'break-all',
                                 }}>{text}</div>
-                            </Tooltip>
                         )
                     },
                 },
@@ -614,7 +610,6 @@ class PublicSummary extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={customerOptions}
                                                 placeholder='输入客户名称'
@@ -655,7 +650,6 @@ class PublicSummary extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={options}
                                                 placeholder='输入公出申请人'
@@ -673,7 +667,6 @@ class PublicSummary extends Component{
                                                 className="certain-category-search"
                                                 dropdownClassName="certain-category-search-dropdown"
                                                 dropdownMatchSelectWidth={false}
-                                                dropdownStyle={{ width: 120 }}
                                                 style={{ width: "120px" }}
                                                 dataSource={options1}
                                                 placeholder='输入跟单人'

+ 27 - 2
js/component/manageCenter/customer/statistics/departmentStatistics/customerDetails.jsx

@@ -1,5 +1,5 @@
 import React,{Component} from 'react';
-import {message, Modal, Spin, Table, Tooltip} from "antd";
+import {message, Modal, Spin, Table, Tooltip,Tag} from "antd";
 import PropTypes from 'prop-types';
 import $ from "jquery/src/ajax";
 
@@ -162,7 +162,32 @@ class CustomerDetails extends Component{
                     onOk={this.props.onCancel}
                     onCancel={this.props.onCancel}
                     width='1300px'
-                    title='客户详情'
+                    title={
+                        <span>
+                            <span style={{marginRight:'15px'}}>客户详情</span>
+                            <Tag color="#f50">{this.props.aName}</Tag>
+                            <Tag color="#108ee9">
+                                {
+                                    this.props.type === 0?
+                                        '私有客户':
+                                        this.props.type === 1?
+                                            '渠道客户':
+                                            this.props.type === 2?
+                                                '签单客户':
+                                                this.props.type === 3?
+                                                    '私有新增客户':
+                                                    this.props.type === 4?
+                                                        '渠道新增客户':
+                                                        this.props.type === 5?
+                                                            '私有面谈客户':
+                                                            this.props.type === 6?
+                                                                '渠道面谈客户':
+                                                                this.props.type === 7?
+                                                                    '私有领取客户': ''
+                                }
+                            </Tag>
+                        </span>
+                    }
                     footer=''
                     className="admin-desc-content">
                     <div className="patent-table">

+ 9 - 0
js/component/manageCenter/customer/statistics/departmentStatistics/index.jsx

@@ -47,6 +47,7 @@ class DepartmentStatistics extends Component{
                                         this.setState({
                                             customerVisible: true,
                                             aid: record.aid,
+                                            aName: record.aName,
                                             type: 0,
                                         })
                                     }
@@ -72,6 +73,7 @@ class DepartmentStatistics extends Component{
                                         this.setState({
                                             customerVisible: true,
                                             aid: record.aid,
+                                            aName: record.aName,
                                             type: 1,
                                         })
                                     }
@@ -96,6 +98,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 2,
                                         })
@@ -121,6 +124,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 3,
                                         })
@@ -146,6 +150,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 4,
                                         })
@@ -171,6 +176,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 5,
                                         })
@@ -196,6 +202,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 6,
                                         })
@@ -221,6 +228,7 @@ class DepartmentStatistics extends Component{
                                         e.stopPropagation();
                                         this.setState({
                                             customerVisible: true,
+                                            aName: record.aName,
                                             aid: record.aid,
                                             type: 7,
                                         })
@@ -492,6 +500,7 @@ class DepartmentStatistics extends Component{
                 {this.state.customerVisible ? <CustomerDetails
                     aid={this.state.aid}
                     type={this.state.type}
+                    aName={this.state.aName}
                     startTime={this.state.releaseDate[0]}
                     endTime={this.state.releaseDate[1]}
                     visible={this.state.customerVisible}

+ 104 - 15
js/component/manageCenter/index/content.jsx

@@ -60,6 +60,82 @@ const MessageModal = React.createClass({
                     title: '内容',
                     dataIndex: 'content',
                     key: 'content',
+                    width:1189,
+                    render: (text, record) => {
+                        return(
+                            <Tooltip placement="topLeft" title={text}>
+                                <div style={{
+                                    width: 1189,
+                                    textOverflow: "ellipsis",
+                                    whiteSpace: "nowrap",
+                                    overflow: 'hidden',
+                                }}>
+                                    {text}
+                                </div>
+                            </Tooltip>
+                        )
+                    }
+                },
+                {
+                    title: "操作",
+                    dataIndex: "abc",
+                    key: "abc",
+                    width:150,
+                    render: (text, record) => {
+                        let contractNo = '';
+                        if((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1){
+                            let arr = record.content.split('合同编号-');
+                            contractNo = arr[1].match(/(\S*), 订单编号/)[1];
+                        }
+                        return (
+                            record.noticeType === 48 || record.noticeType === 49 ?
+                                <Button type="primary" onClick={()=>{
+                                    this.category();
+                                    record.id = record.uid;
+                                    this.setState({
+                                        followData: record,
+                                        visitModul: true,
+                                    });
+                                }}>立即跟进</Button> :
+                                record.noticeType === 14 || record.noticeType === 40 ?
+                                    <Button disabled={!contractNo} type="primary" onClick={(e)=>{
+                                        e.stopPropagation();
+                                        let input = document.getElementById("copyText1");
+                                        input.value = contractNo;
+                                        input.select();
+                                        document.execCommand("copy");
+                                        message.success('复制成功')
+                                    }}>
+                                        复制合同号
+                                    </Button> :  null
+                        )
+                    }
+                }
+                //  {
+                //     title: '公司',
+                //     dataIndex: 'unitName',
+                //     key: 'unitName',
+                // }, {
+                //     title: '业务员',
+                //     dataIndex: 'principle',
+                //     key: 'principle',
+                // }
+            ],
+            columns1: [
+                {
+                    title: '类型',
+                    dataIndex: 'noticeTypeName',
+                    key: 'noticeTypeName',
+                    width: 120,
+                }, {
+                    title: '时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                    width: 120
+                }, {
+                    title: '内容',
+                    dataIndex: 'content',
+                    key: 'content',
                     width:610,
                     render: (text, record) => {
                         return(
@@ -82,20 +158,32 @@ const MessageModal = React.createClass({
                     key: "abc",
                     width:150,
                     render: (text, record) => {
+                        let contractNo = '';
+                        if((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1){
+                            let arr = record.content.split('合同编号-');
+                            contractNo = arr[1].match(/(\S*), 订单编号/)[1];
+                        }
                         return (
-                            <div style={{width:150}}>
-                                {
-                                    record.noticeType === 48 || record.noticeType === 49 ?
-                                        <Button type="primary" onClick={()=>{
-                                            this.category();
-                                            record.id = record.uid;
-                                            this.setState({
-                                                followData: record,
-                                                visitModul: true,
-                                            });
-                                        }}>立即跟进</Button> : null
-                                }
-                            </div>
+                            record.noticeType === 48 || record.noticeType === 49 ?
+                                <Button type="primary" onClick={()=>{
+                                    this.category();
+                                    record.id = record.uid;
+                                    this.setState({
+                                        followData: record,
+                                        visitModul: true,
+                                    });
+                                }}>立即跟进</Button> :
+                                record.noticeType === 14 || record.noticeType === 40 ?
+                                    <Button disabled={!contractNo} type="primary" onClick={(e)=>{
+                                        e.stopPropagation();
+                                        let input = document.getElementById("copyText1");
+                                        input.value = contractNo;
+                                        input.select();
+                                        document.execCommand("copy");
+                                        message.success('复制成功')
+                                    }}>
+                                        复制合同号
+                                    </Button> :  null
                         )
                     }
                 }
@@ -492,7 +580,7 @@ const MessageModal = React.createClass({
               style={{ position: "relative" }}
               title="消息提醒"
               visible={this.state.newVisible}
-              width={1000}
+              width={1400}
               closable={false}
               footer={null}
             >
@@ -519,7 +607,7 @@ const MessageModal = React.createClass({
                         }
                     </Tabs>
                     <Table
-                        columns={this.state.columns}
+                        columns={this.state.columns1}
                         dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
                         pagination={false}
                         scroll={{ y: 600, x: 1000 }}
@@ -544,6 +632,7 @@ const MessageModal = React.createClass({
                   visitModul={this.state.visitModul}
                   closeDesc={this.closeDesc}
               />
+              <textarea id='copyText1' style={{opacity:0}}/>
           </div>
         );
     }

+ 32 - 24
js/component/manageCenter/order/orderNew/addorders.js

@@ -8,7 +8,6 @@ import {
   Select,
   Button,
   Form,
-  Upload,
   Popconfirm,
   AutoComplete,
   DatePicker,
@@ -35,6 +34,7 @@ import PicturesWall from "./changeComponent/picturesWall.js";
 import ResolutionDetail from "@/resolutionDetail";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 import ProjectOperation from "../../../common/projectOperation";
+import ImgList from "../../../common/imgList";
 
 const Addorders = Form.create()(
   React.createClass({
@@ -2367,6 +2367,7 @@ const Addorders = Form.create()(
                     }
                   >
                     <PicturesWall
+                      domId={this.props.domId}
                       fileList={this.getOrgCodeUrl}
                       pictureUrl={this.state.orgCodeUrl}
                       url="/api/admin/order/uploadOrderImg"
@@ -2394,6 +2395,7 @@ const Addorders = Form.create()(
                     }
                   >
                     <PicturesWall
+                      domId={this.props.domId + '1'}
                       fileList={this.getReplenishUrl}
                       pictureUrl={this.state.replenishUrl}
                       url="/api/admin/order/uploadOrderImg"
@@ -2409,17 +2411,20 @@ const Addorders = Form.create()(
                     wrapperCol={{ span: 18 }}
                     label="合同扫描件"
                   >
-                    <Upload
-                      className="demandDetailShow-upload"
-                      listType="picture-card"
-                      fileList={this.state.orgCodeUrl}
-                      onPreview={(file) => {
-                        this.setState({
-                          previewImage: file.url || file.thumbUrl,
-                          previewVisible: true,
-                        });
-                      }}
-                    ></Upload>
+                    <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+                      <ImgList domId={'addorders'} fileList={this.state.orgCodeUrl} ItemWidth={'96px'}/>
+                    </div>
+                    {/*<Upload*/}
+                    {/*  className="demandDetailShow-upload"*/}
+                    {/*  listType="picture-card"*/}
+                    {/*  fileList={this.state.orgCodeUrl}*/}
+                    {/*  onPreview={(file) => {*/}
+                    {/*    this.setState({*/}
+                    {/*      previewImage: file.url || file.thumbUrl,*/}
+                    {/*      previewVisible: true,*/}
+                    {/*    });*/}
+                    {/*  }}*/}
+                    {/*/>*/}
                     <Modal
                       maskClosable={false}
                       footer={null}
@@ -2486,17 +2491,20 @@ const Addorders = Form.create()(
                     wrapperCol={{ span: 18 }}
                     label="补充协议"
                   >
-                    <Upload
-                      className="demandDetailShow-upload"
-                      listType="picture-card"
-                      fileList={this.state.replenishUrl}
-                      onPreview={(file) => {
-                        this.setState({
-                          previewImage: file.url || file.thumbUrl,
-                          previewVisibles: true,
-                        });
-                      }}
-                    ></Upload>
+                    {/*<Upload*/}
+                    {/*  className="demandDetailShow-upload"*/}
+                    {/*  listType="picture-card"*/}
+                    {/*  fileList={this.state.replenishUrl}*/}
+                    {/*  onPreview={(file) => {*/}
+                    {/*    this.setState({*/}
+                    {/*      previewImage: file.url || file.thumbUrl,*/}
+                    {/*      previewVisibles: true,*/}
+                    {/*    });*/}
+                    {/*  }}*/}
+                    {/*/>*/}
+                    <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+                      <ImgList domId='addorders1' fileList={this.state.replenishUrl} ItemWidth={'96px'}/>
+                    </div>
                     <Modal
                       maskClosable={false}
                       footer={null}
@@ -2842,7 +2850,7 @@ const Addorders = Form.create()(
                     label="终止合同"
                   >
                     <Picture
-                      domId={'addorders1'}
+                      domId='zhongzhihetong'
                       fileList={(e) => {
                         this.setState({ contractUrl: e });
                       }}

+ 11 - 0
js/component/manageCenter/order/orderNew/arrearsList.jsx

@@ -45,6 +45,7 @@ const ArrearsList = Form.create()(
           pageSize: this.state.pagination.pageSize,
           name: this.state.customerName, //名称
           orderNo: this.state.orderNo, //订单编号
+          contractNo: this.state.contractNo,
           depId: this.state.departmenttSearch, //订单部门
           starTime: this.state.releaseDate[0], //开始时间
           endTime: this.state.releaseDate[1], //结束时间
@@ -249,6 +250,7 @@ const ArrearsList = Form.create()(
         name: this.state.customerName ? this.state.customerName : undefined, //客户名称
         adminName: this.state.adminName ? this.state.adminName : undefined, //订单负责人
         orderNo: this.state.orderNo ? this.state.orderNo : undefined, //订单编号
+        contractNo: this.state.contractNo ? this.state.contractNo : undefined,
         starTime: this.state.releaseDate[0]
           ? this.state.releaseDate[0]
           : undefined,
@@ -270,6 +272,7 @@ const ArrearsList = Form.create()(
     //重置
     reset() {
       this.state.orderNo = "";
+      this.state.contractNo = '';
       this.state.customerName = "";
       this.state.adminName = "";
       this.state.departmenttSearch = undefined;
@@ -351,6 +354,14 @@ const ArrearsList = Form.create()(
                   }}
                 />
                 <Input
+                    placeholder="合同编号"
+                    style={{ width: "150px", marginRight: 10 }}
+                    value={this.state.contractNo}
+                    onChange={(e) => {
+                      this.setState({ contractNo: e.target.value });
+                    }}
+                />
+                <Input
                   placeholder="营销员名称"
                   style={{
                     width: "150px",

+ 54 - 5
js/component/manageCenter/order/orderNew/billing.jsx

@@ -447,14 +447,48 @@ const MyService = Form.create()(
           {
             title: "合同编号",
             dataIndex: "contractNo",
-            key: "contractNo"
-            // fixed: 'left'
+            key: "contractNo",
+            render: (text) => {
+              return (
+                    <Tooltip title={
+                      <Button type="primary" onClick={(e)=>{
+                        e.stopPropagation();
+                        let input = document.getElementById("copyText");
+                        input.value = text;
+                        input.select();
+                        document.execCommand("copy");
+                        message.success('复制成功')
+                      }}>
+                        复制
+                      </Button>
+                    }>
+                      {text}
+                    </Tooltip>
+              )
+            }
           },
           {
             title: "订单编号",
             dataIndex: "orderNo",
-            key: "orderNo"
-            // fixed: 'left'
+            key: "orderNo",
+            render: (text) => {
+              return (
+                  <Tooltip title={
+                    <Button type="primary" onClick={(e)=>{
+                      e.stopPropagation();
+                      let input = document.getElementById("copyText");
+                      input.value = text;
+                      input.select();
+                      document.execCommand("copy");
+                      message.success('复制成功')
+                    }}>
+                      复制
+                    </Button>
+                  }>
+                    {text}
+                  </Tooltip>
+              )
+            }
           },
           {
             title: "客户名称",
@@ -463,7 +497,21 @@ const MyService = Form.create()(
             render: (text,record) => {
               return (
                   <span>
-                    <Tooltip title={text}>
+                    <Tooltip title={
+                      <span>
+                        <span style={{paddingRight:"10px"}}>{text}</span>
+                        <Button type="primary" onClick={(e)=>{
+                          e.stopPropagation();
+                          let input = document.getElementById("copyText");
+                          input.value = text;
+                          input.select();
+                          document.execCommand("copy");
+                          message.success('复制成功')
+                        }}>
+                          复制
+                        </Button>
+                      </span>
+                    }>
                       <div style={{
                         maxWidth:'150px',
                         overflow:'hidden',
@@ -1953,6 +2001,7 @@ const MyService = Form.create()(
                 />
               </Spin>
             </div>
+            <textarea id='copyText' style={{opacity:0}}/>
             <NewService
               uid={this.state.uid}
               signBillVisible={this.state.signBillVisible}

+ 3 - 14
js/component/manageCenter/order/orderNew/changeComponent/changeDetailCwjl.js

@@ -1137,20 +1137,9 @@ class ChangeDetail extends Component {
             labelCol={{ span: 4 }}
             wrapperCol={{ span: 18 }}
           >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={orgCodeUrl}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                });
-              }}
-            />
-            {/*<div style={{paddingTop:'10px',paddingBottom:'10px'}}>*/}
-            {/*  <ImgList fileList={orgCodeUrl} ItemWidth={'96px'}/>*/}
-            {/*</div>*/}
+            <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+              <ImgList domId={this.props.domId ? this.props.domId : 'changeDetailCwjlqq'} fileList={orgCodeUrl} ItemWidth={'96px'}/>
+            </div>
             <Modal
               maskClosable={false}
               footer={null}

+ 3 - 14
js/component/manageCenter/order/orderNew/changeComponent/changeDetailCwzy.js

@@ -1147,20 +1147,9 @@ class ChangeDetail extends Component {
             labelCol={{ span: 4 }}
             wrapperCol={{ span: 18 }}
           >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={orgCodeUrl}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                });
-              }}
-            />
-            {/*<div style={{paddingTop:'10px',paddingBottom:'10px'}}>*/}
-            {/*  <ImgList fileList={orgCodeUrl} ItemWidth={'96px'}/>*/}
-            {/*</div>*/}
+            <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+              <ImgList domId={this.props.domId ? this.props.domId : 'hetongbiangenjilu'} fileList={orgCodeUrl} ItemWidth={'96px'}/>
+            </div>
             <Modal
               maskClosable={false}
               footer={null}

+ 3 - 14
js/component/manageCenter/order/orderNew/changeComponent/changeDetailJsjl.js

@@ -439,20 +439,9 @@ class ChangeDetail extends Component {
             labelCol={{ span: 4 }}
             wrapperCol={{ span: 18 }}
           >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={orgCodeUrl}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                });
-              }}
-            />
-            {/*<div style={{paddingTop:'10px',paddingBottom:'10px'}}>*/}
-            {/*  <ImgList fileList={orgCodeUrl} ItemWidth={'96px'}/>*/}
-            {/*</div>*/}
+            <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+              <ImgList domId={this.props.domId ? this.props.domId+'1' : 'changeDetailJsjl1'} fileList={orgCodeUrl} ItemWidth={'96px'}/>
+            </div>
             <Modal
               maskClosable={false}
               footer={null}

+ 3 - 14
js/component/manageCenter/order/orderNew/changeComponent/changeDetailJsy.js

@@ -431,20 +431,9 @@ class ChangeDetail extends Component {
             labelCol={{ span: 4 }}
             wrapperCol={{ span: 18 }}
           >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={orgCodeUrl}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                });
-              }}
-            />
-            {/*<div style={{paddingTop:'10px',paddingBottom:'10px'}}>*/}
-            {/*  <ImgList fileList={orgCodeUrl} ItemWidth={'96px'}/>*/}
-            {/*</div>*/}
+            <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
+              <ImgList domId={this.props.domId ? this.props.domId : 'changeDetailJsy1'} fileList={orgCodeUrl} ItemWidth={'96px'}/>
+            </div>
             <Modal
               maskClosable={false}
               footer={null}

+ 1 - 12
js/component/manageCenter/order/orderNew/changeComponent/changeDetailYxy.js

@@ -470,19 +470,8 @@ class ChangeDetail extends Component {
             labelCol={{ span: 4 }}
             wrapperCol={{ span: 18 }}
           >
-            {/*<Upload*/}
-            {/*  className="demandDetailShow-upload"*/}
-            {/*  listType="picture-card"*/}
-            {/*  fileList={orgCodeUrl}*/}
-            {/*  onPreview={(file) => {*/}
-            {/*    this.setState({*/}
-            {/*      previewImage: file.url || file.thumbUrl,*/}
-            {/*      previewVisible: true,*/}
-            {/*    });*/}
-            {/*  }}*/}
-            {/*/>*/}
             {orgCodeUrl ? <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
-              <ImgList fileList={orgCodeUrl} ItemWidth={'96px'}/>
+              <ImgList domId={this.props.domId ? this.props.domId+'1' : 'changeDetailYxy1'} fileList={orgCodeUrl} ItemWidth={'96px'}/>
             </div> : <div/>}
             <div style={{marginLeft: '-60px'}}>
               <Rizhi changeId={this.props.id} />

+ 2 - 21
js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js

@@ -530,28 +530,9 @@ class OrderDetail extends Component {
             wrapperCol={{ span: 18 }}
             label="合同扫描件"
           >
-            {/*<Upload*/}
-            {/*  className="demandDetailShow-upload"*/}
-            {/*  listType="picture-card"*/}
-            {/*  fileList={*/}
-            {/*    data.contractPictureUrl*/}
-            {/*      ? splitUrl(*/}
-            {/*          data.contractPictureUrl,*/}
-            {/*          ",",*/}
-            {/*          globalConfig.avatarHost + "/upload"*/}
-            {/*        )*/}
-            {/*      : []*/}
-            {/*  }*/}
-            {/*  onPreview={(file) => {*/}
-            {/*    this.setState({*/}
-            {/*      previewImage: file.url || file.thumbUrl,*/}
-            {/*      previewVisible: true,*/}
-            {/*    });*/}
-            {/*  }}*/}
-            {/*/>*/}
             {this.props.orderData && data.contractPictureUrl ?
                 <ImgList
-                    domId={'orderDetail1'}
+                    domId={this.props.domId ? this.props.domId : 'orderDetail1'}
                     fileList={
                       data.contractPictureUrl ? splitUrl(data.contractPictureUrl, ",", globalConfig.avatarHost + "/upload") : []
                     }
@@ -651,7 +632,7 @@ class OrderDetail extends Component {
             {/*/>*/}
             <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
               <ImgList
-                  domId={'orderDetail2'}
+                  domId={this.props.domId ? this.props.domId+'1' : 'orderDetail2'}
                   fileList={
                     data.agreementUrl ? splitUrl(data.agreementUrl, ",", globalConfig.avatarHost + "/upload") : []
                   }/>

+ 4 - 41
js/component/manageCenter/order/orderNew/contractCwjl.js

@@ -1377,6 +1377,7 @@ const contractChange = Form.create()(
                   >
                     <Spin spinning={this.state.loading}>
                       <OrderDetail
+                        domId='dindanxiangqing'
                         orderData={this.state.orderData}
                         getOrderLog={this.getOrderLog}
                         dataSourceX={this.state.dataSourceX}
@@ -1390,26 +1391,11 @@ const contractChange = Form.create()(
                     </Spin>
                   </Form>
                 </TabPane>
-                {/* <TabPane tab="合同变更记录" key="2">
-                  <ChangeDetail
-                    data={this.state.contractData}
-                    txt={this.state.processStateText}
-                    pictureUrl={this.state.voucherUrl}
-                    processState={this.props.processState}
-                    loadData={this.callback}
-                    reset={this.state.visible}
-                    dataSource={this.state.dataProps}
-                    proceedsData={this.state.proceedsData}
-                    proceedsTotal={this.state.proTotal}
-                    invoiceTotal={this.state.invTotal}
-                    contactList={this.state.refundInvoice}
-                    onCancel={this.visitCancel}
-                  />
-                </TabPane> */}
                 {tabList.map((item, index, arr) => {
                   return (
                     <TabPane tab={"合同变更记录" + (index + 1)} key={item.id}>
                       <ChangeDetail
+                        domId={'changeDetail'+(index + 1)}
                         id={item.id}
                         money={
                           index == arr.length - 1
@@ -1433,31 +1419,6 @@ const contractChange = Form.create()(
                     </TabPane>
                   );
                 })}
-                {/* {this.state.status === 4 ? (
-                  <TabPane tab="原订单" key="3">
-                    <Form
-                      layout="horizontal"
-                      onSubmit={this.handleSubmit}
-                      id="demand-form"
-                      style={{ paddingBottom: "40px" }}
-                    >
-                      <Spin spinning={this.state.loading}>
-                        <OrderDetail
-                          orderData={this.state.primaryOrderData}
-                          getOrderLog={this.getOrderLog}
-                          dataSourceX={this.state.dataSourceX}
-                          contactList={this.state.contactList}
-                          orderNo={this.state.primaryOrderNo}
-                          totalCui={this.state.totalCui}
-                          contactListNew={this.state.contactListNew}
-                          isCaiWu={true}
-                        />
-                      </Spin>
-                    </Form>
-                  </TabPane>
-                ) : (
-                  ""
-                )} */}
                 {tabList.map((item, index) => {
                   if (item.usedOrder) {
                     return (
@@ -1473,6 +1434,7 @@ const contractChange = Form.create()(
                         >
                           <Spin spinning={this.state.loading}>
                             <OrderDetail
+                              domId={'yuandingdan' + (index + 1)}
                               orderData={this.state.primaryOrderData}
                               getOrderLog={this.getOrderLog}
                               dataSourceX={this.state.dataSourceX}
@@ -1494,6 +1456,7 @@ const contractChange = Form.create()(
                   this.state.type === 4 || this.state.type === 5 ? (
                     <TabPane tab="附加订单" key="c">
                       <OrderDetail
+                        domId='fujiadingdan'
                         orderData={this.state.additionalOrderData}
                         getOrderLog={this.getOrderLog}
                         dataSourceX={this.state.dataSourceX}

+ 4 - 41
js/component/manageCenter/order/orderNew/contractCwzy.js

@@ -1374,6 +1374,7 @@ const contractChange = Form.create()(
                   >
                     <Spin spinning={this.state.loading}>
                       <OrderDetail
+                        domId='dingdanxiangqing'
                         orderData={this.state.orderData}
                         getOrderLog={this.getOrderLog}
                         dataSourceX={this.state.dataSourceX}
@@ -1387,26 +1388,11 @@ const contractChange = Form.create()(
                     </Spin>
                   </Form>
                 </TabPane>
-                {/* <TabPane tab="合同变更记录" key="2">
-                  <ChangeDetail
-                    data={this.state.contractData}
-                    txt={this.state.processStateText}
-                    pictureUrl={this.state.voucherUrl}
-                    processState={this.props.processState}
-                    loadData={this.callback}
-                    reset={this.state.visible}
-                    dataSource={this.state.dataProps}
-                    proceedsData={this.state.proceedsData}
-                    proceedsTotal={this.state.proTotal}
-                    invoiceTotal={this.state.invTotal}
-                    contactList={this.state.refundInvoice}
-                    onCancel={this.visitCancel}
-                  />
-                </TabPane> */}
                 {tabList.map((item, index, arr) => {
                   return (
                     <TabPane tab={"合同变更记录" + (index + 1)} key={item.id}>
                       <ChangeDetail
+                        domId={'hetongbiangenjilu' + (index + 1)}
                         id={item.id}
                         money={index == arr.length - 1 ? this.state.orderData.totalAmount + "" : undefined}
                         data={this.state.contractData}
@@ -1426,31 +1412,6 @@ const contractChange = Form.create()(
                     </TabPane>
                   );
                 })}
-                {/* {this.state.status === 4 ? (
-                  <TabPane tab="原订单" key="3">
-                    <Form
-                      layout="horizontal"
-                      onSubmit={this.handleSubmit}
-                      id="demand-form"
-                      style={{ paddingBottom: "40px" }}
-                    >
-                      <Spin spinning={this.state.loading}>
-                        <OrderDetail
-                          orderData={this.state.primaryOrderData}
-                          getOrderLog={this.getOrderLog}
-                          dataSourceX={this.state.dataSourceX}
-                          contactList={this.state.contactList}
-                          orderNo={this.state.primaryOrderNo}
-                          totalCui={this.state.totalCui}
-                          contactListNew={this.state.contactListNew}
-                          isCaiWu={true}
-                        />
-                      </Spin>
-                    </Form>
-                  </TabPane>
-                ) : (
-                  ""
-                )} */}
                 {tabList.map((item, index) => {
                   if (item.usedOrder) {
                     return (
@@ -1466,6 +1427,7 @@ const contractChange = Form.create()(
                         >
                           <Spin spinning={this.state.loading}>
                             <OrderDetail
+                              domId={'yuandingdan'+(index + 1)}
                               orderData={this.state.primaryOrderData}
                               getOrderLog={this.getOrderLog}
                               dataSourceX={this.state.dataSourceX}
@@ -1487,6 +1449,7 @@ const contractChange = Form.create()(
                   this.state.type === 4 || this.state.type === 5 ? (
                     <TabPane tab="附加订单" key="c">
                       <OrderDetail
+                        domId='fujiadingdan'
                         orderData={this.state.additionalOrderData}
                         getOrderLog={this.getOrderLog}
                         dataSourceX={this.state.dataSourceX}

+ 3 - 0
js/component/manageCenter/order/orderNew/contractJsjl.js

@@ -1199,6 +1199,7 @@ const contractChange = Form.create()(
                   >
                     <Spin spinning={this.state.loading}>
                       <OrderDetail
+                        domId='dindanxiangqing'
                         orderData={this.state.orderData}
                         getOrderLog={this.getOrderLog}
                         dataSourceX={this.state.dataSourceX}
@@ -1230,6 +1231,7 @@ const contractChange = Form.create()(
                     <TabPane tab={"合同变更记录" + (index + 1)} key={item.id}>
                           <ChangeDetail
                             id={item.id}
+                            domId={'hetongbiangenjilu' + (index + 1)}
                             money={index == arr.length - 1 ? this.state.orderData.totalAmount + "" : undefined}
                             data={this.state.contractData}
                             pictureUrl={this.state.voucherUrl}
@@ -1285,6 +1287,7 @@ const contractChange = Form.create()(
                         >
                           <Spin spinning={this.state.loading}>
                             <OrderDetail
+                              domId={'yuandingdan' + (index + 1)}
                               orderData={this.state.primaryOrderData}
                               getOrderLog={this.getOrderLog}
                               dataSourceX={this.state.dataSourceX}

+ 4 - 11
js/component/manageCenter/order/orderNew/contractJsy.js

@@ -1143,6 +1143,7 @@ const contractChange = Form.create()(
                   >
                     <Spin spinning={this.state.loading}>
                       <OrderDetail
+                        domId='orderDetail2'
                         orderUid={this.state.orderUid}
                         processState={this.props.processState}
                         orderData={this.state.orderData}
@@ -1156,23 +1157,13 @@ const contractChange = Form.create()(
                     </Spin>
                   </Form>
                 </TabPane>
-                {/* <TabPane tab="合同变更记录" key="2">
-                  <ChangeDetail
-                    data={this.state.contractData}
-                    pictureUrl={this.state.voucherUrl}
-                    processState={this.props.processState}
-                    loadData={this.callback}
-                    reset={this.state.visible}
-                    dataSource={this.state.dataProps}
-                    onCancel={this.visitCancel}
-                  />
-                </TabPane> */}
                 {tabList.map((item, index) => {
                   return (
                     <TabPane tab={"合同变更记录" + (index + 1)} key={item.id}>
 
                           <ChangeDetail
                             id={item.id}
+                            domId={'hetongbiangenjilu' + (index + 1)}
                             orderUid={this.state.orderUid}
                             data={this.state.contractData}
                             pictureUrl={this.state.voucherUrl}
@@ -1200,6 +1191,7 @@ const contractChange = Form.create()(
                         >
                           <Spin spinning={this.state.loading}>
                             <OrderDetail
+                              domId={'yuandingdan' + (index + 1)}
                               orderUid={this.state.orderUid}
                               processState={this.props.processState}
                               orderData={this.state.primaryOrderData}
@@ -1247,6 +1239,7 @@ const contractChange = Form.create()(
                   this.state.type === 4 || this.state.type === 5 ? (
                     <TabPane tab="附加订单" key="c">
                       <OrderDetail
+                        domId='fujiadingdan'
                         orderUid={this.state.orderUid}
                         processState={this.props.processState}
                         orderData={this.state.additionalOrderData}

+ 4 - 21
js/component/manageCenter/order/orderNew/contractYxy.js

@@ -1221,6 +1221,7 @@ const contractChange = Form.create()(
                         >
                           <Spin spinning={this.state.loading}>
                             <OrderDetail
+                                domId='dindanxiangqing'
                                 orderUid={this.state.orderUid}
                                 orderData={this.state.orderData}
                                 getOrderLog={this.getOrderLog}
@@ -1235,27 +1236,6 @@ const contractChange = Form.create()(
                     ) }
                   </div>:<div/>}
                 </TabPane>
-                {/* <TabPane tab="合同变更记录" key="2">
-                  {this.state.contractData.processState === 0 ? (
-                    <ChangeApply
-                      orderData={this.state.contractData}
-                      voucherUrl={this.state.voucherUrl}
-                      onCancel={this.visitCancel}
-                    />
-                  ) : (
-                    <ChangeDetail
-                      data={this.state.contractData}
-                      pictureUrl={this.state.voucherUrl}
-                      processState={this.props.processState}
-                      dataSource={this.state.dataProps}
-                      proceedsData={this.state.proceedsData}
-                      proceedsTotal={this.state.proTotal}
-                      invoiceTotal={this.state.invTotal}
-                      contactList={this.state.refundInvoice}
-                    />
-                  )}
-                </TabPane> */}
-
                 {tabList.map((item, index, arr) => {
                   return (
                     <TabPane tab={"合同变更记录" + (index + 1)} key={item.id}>
@@ -1273,6 +1253,7 @@ const contractChange = Form.create()(
                                     />
                                 ) : (
                                     <ChangeDetail
+                                        domId={'hetongbiangenjilu' + (index + 1)}
                                         orderUid={this.state.orderUid}
                                         id={item.id}
                                         money={
@@ -1312,6 +1293,7 @@ const contractChange = Form.create()(
                               >
                                 <Spin spinning={this.state.loading}>
                                   <OrderDetail
+                                      domId={'yuandingdan' + (index + 1)}
                                       orderUid={this.state.orderUid}
                                       orderData={this.state.primaryOrderData}
                                       getOrderLog={this.getOrderLog}
@@ -1360,6 +1342,7 @@ const contractChange = Form.create()(
                       {
                         this.state.activeKey === "c" ?
                             <AddOrders
+                                domId='fujiadingdan'
                                 orderUid={this.state.orderUid}
                                 processStatus={0}
                                 data={this.state.orderData.additionalOrder}

+ 14 - 2
js/component/manageCenter/order/orderNew/pressList.jsx

@@ -27,6 +27,7 @@ const IntentionCustomer = Form.create()(React.createClass({
 				pageSize: this.state.pagination.pageSize,
 				name: this.state.customerName,//名称
 				orderNo: this.state.orderNo,//订单编号
+				contractNo: this.state.contractNo,
 				depId: this.state.departmenttSearch,//订单部门
 				adminName:this.state.adminName,//责任人名称
 				starTime: this.state.releaseDate[0],//开始时间
@@ -379,6 +380,7 @@ const IntentionCustomer = Form.create()(React.createClass({
     		signBillVisible:false
     	})
     	this.state.orderNo='';
+		this.state.contractNo='';
     	this.state.customerName='';
     	this.state.adminName='';
     	this.state.departmenttSearch=undefined;
@@ -388,6 +390,7 @@ const IntentionCustomer = Form.create()(React.createClass({
     },
     resets(){
     	this.state.orderNo='';
+		this.state.contractNo='';
     	this.state.customerName='';
     	this.state.adminName='';
     	this.state.departmenttSearch=undefined;
@@ -423,6 +426,7 @@ const IntentionCustomer = Form.create()(React.createClass({
             name: this.state.customerName?this.state.customerName:undefined,//客户名称
             adminName:this.state.adminName?this.state.adminName:undefined,//订单负责人
             orderNo: this.state.orderNo?this.state.orderNo:undefined,//订单编号
+			contractNo: this.state.contractNo?this.state.contractNo:undefined,
             starTime: this.state.releaseDate[0]?this.state.releaseDate[0]:undefined,
             endTime: this.state.releaseDate[1]?this.state.releaseDate[1]:undefined,
             depId: this.state.departmenttSearch ? this.state.departmenttSearch : undefined,//订单部门
@@ -506,7 +510,7 @@ const IntentionCustomer = Form.create()(React.createClass({
           />
           <Input
             placeholder="营销员名称"
-            style={{ width: "150px", marginBottom: "10px" }}
+            style={{ width: "150px", marginBottom: "10px" ,marginRight:10 }}
             value={this.state.adminName}
             onChange={e => {
               this.setState({ adminName: e.target.value });
@@ -514,12 +518,20 @@ const IntentionCustomer = Form.create()(React.createClass({
           />
           <Input
             placeholder="订单编号"
-            style={{ width: "150px" }}
+            style={{ width: "150px",marginBottom: "10px" ,marginRight:10 }}
             value={this.state.orderNo}
             onChange={e => {
               this.setState({ orderNo: e.target.value });
             }}
           />
+		  <Input
+			  placeholder="合同编号"
+			  style={{ width: "150px",marginBottom: "10px" ,marginRight:10 }}
+			  value={this.state.contractNo}
+			  onChange={e => {
+				  this.setState({ contractNo: e.target.value });
+			  }}
+		  />
 		  <DepartmentList
 			  value={this.state.departmenttSearch}
 			  onChange={e => {

+ 33 - 2
js/component/manageCenter/project/summary/projecCount.jsx

@@ -210,6 +210,14 @@ class ProjecCount extends Component{
     }
 
     exportPending() {
+        message.config({
+            duration: 20,
+        });
+        let loading = message.loading('下载中...');
+        this.setState({
+            exportPendingLoading: true
+        })
+
         let url = `/api/admin/statistis/exporProvincialList?status=${this.state.status}`;
         let dep = this.state.departmentArr.filter((e)=> e.id === this.state.depId);//责任部门名称
         let option = this.state.contactsOptionData.filter((e)=> e.id === this.state.projectStatus); //项目类别名称
@@ -242,7 +250,30 @@ class ProjecCount extends Component{
                 url = url+`&${key}=${data[key]}`;
             }
         }
-        window.open(globalConfig.context +url);
+
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: url,
+            data:{},
+            success: function(data) {
+                if(data.error.length === 0){
+                    this.download(data.data);
+                }else{
+                    message.warning(data.error[0].message);
+                }
+            }.bind(this),
+        }).always(function() {
+            loading();
+            this.setState({
+                exportPendingLoading: false
+            })
+        }.bind(this));
+    }
+
+    download(fileName){
+        window.location.href = globalConfig.context + "/open/download?fileName=" + fileName
     }
 
     //项目类别
@@ -545,7 +576,7 @@ class ProjecCount extends Component{
                         </div>
                     </TabPane>
                     <TabPane tab="导出EXCEL" key="3">
-                        <Button type="primary" style={{margin: '10px'}} onClick={this.exportPending}>导出</Button>
+                        <Button type="primary" style={{margin: '10px'}} loading={this.state.exportPendingLoading} onClick={this.exportPending}>导出</Button>
                     </TabPane>
                 </Tabs>
                 <div className="patent-table">

+ 0 - 13
js/component/manageCenter/publicComponent/picture.jsx

@@ -51,19 +51,6 @@ const PicturesWall = React.createClass({
                     }}
                     fileList={fileList}
                 />
-                {/*<Upload*/}
-                {/*    action={globalConfig.context + this.props.data.url}*/}
-                {/*    data={{ 'sign': this.props.data.sign }}*/}
-                {/*    listType="picture-card"*/}
-                {/*    fileList={fileList}*/}
-                {/*    multiple={true}*/}
-                {/*    onPreview={this.handlePreview}*/}
-                {/*    onChange={this.handleChange} >*/}
-                {/*    {uploadButton}*/}
-                {/*</Upload>*/}
-                {/*<Modal maskClosable={false} visible={previewVisible} footer={null} onCancel={this.handleCancel}>*/}
-                {/*    <img alt="example" style={{ width: '100%' }} src={previewImage} />*/}
-                {/*</Modal>*/}
             </div>
         );
     }

+ 35 - 39
js/component/manageCenter/set/userManagementS/newUser.jsx

@@ -1,14 +1,14 @@
 import React from 'react';
-import { Icon,  Modal, message,  AutoComplete,Spin, Input, Select, Button, Form,Upload,Popconfirm ,DatePicker} from 'antd';
-import ajax from 'jquery/src/ajax/xhr.js';
+import { Icon,  Modal, message,  AutoComplete,Spin, Input, Select, Button, Form,Popconfirm} from 'antd';
 import $ from 'jquery/src/ajax';
 import './userMangagement.less';
-import {socialAttribute,cityArr,station,post} from '../../../dataDic.js';
+import {cityArr,station,post} from '../../../dataDic.js';
 import {splitUrl} from '../../../tools.js';
-const Option = AutoComplete.Option;
 import moment from 'moment';
 import ImgList from "../../../common/imgList";
 
+import StaffSearch from '../../../../component/common/staffSearch';
+
 //图片组件
 const PicturesWall = React.createClass({
     getInitialState() {
@@ -72,7 +72,6 @@ const Newuser = Form.create()(React.createClass({
         	orgCodeUrl:[],
             loading: false,
             loaduser: {},
-            visible:false,
             datauser:[],
             role:[]
         };
@@ -102,6 +101,10 @@ const Newuser = Form.create()(React.createClass({
         	message.warning('请输入正确的上级主管');
         	return false;
         };
+        if(!this.state.reviewer){
+            message.warning('请输入正确的公出审核人');
+            return false;
+        }
         if(this.state.contactMobile){
         	if(!(/^1[1-9][0-9]\d{4,8}$/.test(this.state.contactMobile))){
 			  message.warning("不是完整的11位手机号或者正确的手机号前七位");
@@ -143,6 +146,7 @@ const Newuser = Form.create()(React.createClass({
 					position:this.state.position,//岗位
 					email:this.state.email,
 					superiorId:this.state.theTypes?this.state.theTypes:this.state.superiorId,
+                    reviewer:this.state.reviewer,
 					district:this.state.district,
 					headPortraitUrl:theorgCodeUrl.length?theorgCodeUrl:'',
 					entryTime:this.state.selTime
@@ -205,7 +209,6 @@ const Newuser = Form.create()(React.createClass({
            });
    	   }
 		this.setState({
-			theName:e,
 			theTypes:theType
 		})
 	},
@@ -247,6 +250,11 @@ const Newuser = Form.create()(React.createClass({
                     position: thisdata.position?thisdata.position:undefined,
                     superior:thisdata.superior,
                     superiorId: thisdata.superiorId,//上级Id
+
+                    reviewerName:thisdata.reviewerName,
+                    reviewer:thisdata.reviewer,
+
+                    theTypes:'',
                     duty:thisdata.duty?thisdata.duty:undefined,//职务
                     status:thisdata.status?thisdata.status:undefined,
                     contactMobile:thisdata.contactMobile?thisdata.contactMobile:undefined,//手机号
@@ -254,7 +262,6 @@ const Newuser = Form.create()(React.createClass({
                     userNo:thisdata.userNo,
                 	orgCodeUrl: thisdata.headPortraitUrl? splitUrl(thisdata.headPortraitUrl, ',', globalConfig.avatarHost + '/upload') : [],
                 	role:this.props.role,
-                	theTypes:'',
 	                entryTime:thisdata.entryTime?moment(thisdata.entryTime,'YYYY-MM-DD'):undefined,
 	                selTime:thisdata.entryTime
                 });
@@ -292,15 +299,9 @@ const Newuser = Form.create()(React.createClass({
         });
     },
     handleOk(e) {
-        this.setState({
-            visible: false,
-        });
         this.props.closeDesc(false, true);
     },
     handleCancel(e) {
-        this.setState({
-            visible: false,
-        });
         this.props.closeDesc(false);
     },
     //入职时间选择
@@ -322,32 +323,13 @@ const Newuser = Form.create()(React.createClass({
         });
         this.state.cityOption=cityArrs;
     },
-    componentWillReceiveProps(nextProps) {
-		if(nextProps.userDetaile&&nextProps.datauser.id){
-			this.loaduser(nextProps.datauser)
+    componentDidMount() {
+		if(this.props.datauser.id){
+			this.loaduser(this.props.datauser)
 			this.setState({
-				rolek:nextProps.role
+				rolek:this.props.role
 			})
-   		}else{
-    		this.state.name='';
-			this.state.role=[];
-			this.state.departmentId=undefined;
-			this.state.mobile='';
-			this.state.duty=undefined;
-			this.state.position=undefined;
-			this.state.station=undefined;
-			this.state.contactMobile='';
-			this.state.email='';
-			this.state.superiorId='';
-			this.state.superior='';
-			this.state.district=[];
-			this.state.orgCodeUrl=[];
-			this.state.id='';
-			this.state.rolek=[];
-			this.state.entryTime=undefined;
-    	   }
-		   this.state.visible = nextProps.showDesc;
-
+   		}
       },
     render() {
         const FormItem = Form.Item
@@ -364,7 +346,7 @@ const Newuser = Form.create()(React.createClass({
         const rolst=this.state.rolek || [];
         return (
         <div>
-           <Modal maskClosable={false} visible={this.state.visible}
+           <Modal maskClosable={false} visible={this.props.showDesc}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='800px'
                         title={this.props.userDetaile?'用户详情':'新建用户'}
@@ -513,7 +495,6 @@ const Newuser = Form.create()(React.createClass({
 											        className="certain-category-search"
 											        dropdownClassName="certain-category-search-dropdown"
 											        dropdownMatchSelectWidth={false}
-											        dropdownStyle={{ width: 200 }}
 											        size="large"
 											        style={{ width: '200px' }}
 											        dataSource={options}
@@ -535,6 +516,21 @@ const Newuser = Form.create()(React.createClass({
 						                            <span>{this.state.userNo}</span>
 						                    </FormItem>
 						                :''}
+                                        <FormItem className="half-item"
+                                                  {...formItemLayout}
+                                                  label="公出审核"
+                                        >
+                                            <StaffSearch
+                                                valueName={this.state.reviewerName}
+                                                placeholder="输入名称"
+                                                onBlurChange={(obj)=>{
+                                                    this.setState({
+                                                        reviewer:obj.value
+                                                    })
+                                                }}
+                                            />
+                                            <span className="mandatory">*</span>
+                                        </FormItem>
 							            <div className='clearfix'>
 							            	<FormItem className="half-item"
 						                        {...formItemLayout}

+ 15 - 14
js/component/manageCenter/set/userManagementS/user.jsx

@@ -62,7 +62,7 @@ const User = Form.create()(React.createClass({
 							userNo: thisdata.userNo,
 							departmentName: thisdata.departmentName, //部门名称
 							departmentId: thisdata.departmentId, //部门id
-							roles:thisdata.roles[0],
+							roles:thisdata.roles.join(','),
 							rolesId:thisdata.rolesId,
 							lastLoginTime:thisdata.lastLoginTime,
 						});
@@ -137,7 +137,7 @@ const User = Form.create()(React.createClass({
 							userNo: thisdata.userNo,
 							departmentName: thisdata.departmentName, //部门名称
 							departmentId: thisdata.departmentId, //部门id
-							roles:thisdata.roles[0],
+							roles:thisdata.roles.join(','),
 							rolesId:thisdata.rolesId
 						});
 					};
@@ -336,11 +336,6 @@ const User = Form.create()(React.createClass({
 	},
 	tableRowClick(record, index) {
 		this.rolesArrS(record)
-		this.setState({
-			userDetaile:true,
-			showDesc: true,
-			datauser:record
-		});
 	},
 	//新建获取id
 	addIdS() {
@@ -425,7 +420,10 @@ const User = Form.create()(React.createClass({
 
 				}
 				this.setState({
-					role:thedata
+					role:thedata,
+					userDetaile:true,
+					showDesc: true,
+					datauser:e
 				})
 			}.bind(this),
 		}).always(function() {
@@ -604,15 +602,18 @@ const User = Form.create()(React.createClass({
 	},
 	addClick() {
 		this.addIdS()
-		this.state.userDetaile = false;
 		this.setState({
-			showDesc: true
+			datauser:{},
+			showDesc: true,
+			userDetaile: false,
 		});
 	},
 
 	closeDesc(e, s) {
-		this.state.userDetaile=false;
-		this.state.showDesc = e;
+		this.setState({
+			userDetaile:false,
+			showDesc:e
+		})
 		if(s) {
 			this.loadData(this.state.page);
 		};
@@ -971,7 +972,7 @@ const User = Form.create()(React.createClass({
               />
             </Spin>
           </div>
-          <Newuser
+			{this.state.showDesc && <Newuser
             role={this.state.role}
             addId={this.state.addId}
             roleArr={this.state.roleArr}
@@ -980,7 +981,7 @@ const User = Form.create()(React.createClass({
             datauser={this.state.datauser}
             showDesc={this.state.showDesc}
             closeDesc={this.closeDesc}
-          />
+          />}
           <div className="patent-desc">
             <Modal
               maskClosable={false}

+ 19 - 2
js/component/manageCenter/topTab.jsx

@@ -64,6 +64,11 @@ const MessageModal = React.createClass({
                     dataIndex: "abc",
                     key: "abc",
                     render: (text, record) => {
+                        let contractNo = '';
+                        if((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1){
+                            let arr = record.content.split('合同编号-');
+                            contractNo = arr[1].match(/(\S*), 订单编号/)[1];
+                        }
                         return (
                             record.noticeType === 48 || record.noticeType === 49 ?
                                 <Button type="primary" onClick={()=>{
@@ -73,7 +78,18 @@ const MessageModal = React.createClass({
                                         followData: record,
                                         visitModul: true,
                                     });
-                                }}>立即跟进</Button> : null
+                                }}>立即跟进</Button> :
+                                record.noticeType === 14 || record.noticeType === 40 ?
+                                    <Button disabled={!contractNo} type="primary" onClick={(e)=>{
+                                        e.stopPropagation();
+                                        let input = document.getElementById("copyText");
+                                        input.value = contractNo;
+                                        input.select();
+                                        document.execCommand("copy");
+                                        message.success('复制成功')
+                                    }}>
+                                        复制合同号
+                                    </Button> :  null
                         )
                     }
                 },
@@ -256,7 +272,7 @@ const MessageModal = React.createClass({
                 <Spin spinning={this.state.loading} className='spin-box'>
                     <Modal maskClosable={false} title="信息中心" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
-                        width='1000px' footer=''
+                        width='1200px' footer=''
                     >
                         <Spin spinning={this.state.loading} className="spin-box">
                             <Tabs defaultActiveKey={this.state.unreadDataType} activeKey={this.state.unreadDataType} onChange={v=>{
@@ -310,6 +326,7 @@ const MessageModal = React.createClass({
                                 </Tabs.TabPane>
                             </Tabs>
                         </Spin>
+                        <textarea id='copyText' style={{opacity:0}}/>
                     </Modal>
                 </Spin>
                 <FollowDetail

+ 1 - 1
package.json

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