Browse Source

会员合并

dev01 2 years ago
parent
commit
9ff1d6084b
67 changed files with 4403 additions and 1776 deletions
  1. 192 0
      js/component/common/cascaders/index.jsx
  2. 58 0
      js/component/common/cascaders/index.less
  3. 1 1
      js/component/common/departmentList/index.jsx
  4. 1 1
      js/component/common/projectDetailsReadOnly/index.jsx
  5. 5 0
      js/component/dataDic.js
  6. 1 0
      js/component/login/adminLogin.jsx
  7. 14 10
      js/component/manageCenter/channelList/channelunit/detail/visit.jsx
  8. 330 311
      js/component/manageCenter/customer/content.jsx
  9. 1 1
      js/component/manageCenter/customer/customerData/myClient.less
  10. 1 1
      js/component/manageCenter/customer/customerManagement/myClient.less
  11. 401 400
      js/component/manageCenter/customer/customerMarketing/diurnalStatistics.jsx
  12. 1 1
      js/component/manageCenter/customer/customerService/myClient.less
  13. 1 1
      js/component/manageCenter/customer/individualCustomer/myClient.less
  14. 1 1
      js/component/manageCenter/customer/managementFollow/followUpSummary/index.jsx
  15. 1 1
      js/component/manageCenter/customer/operationalData/reexamine/details.jsx
  16. 105 1
      js/component/manageCenter/customer/publicStatistics/detailedList.jsx
  17. 108 13
      js/component/manageCenter/customer/publicSummary/index.jsx
  18. 1 1
      js/component/manageCenter/customer/release/myClient.less
  19. 1 1
      js/component/manageCenter/customer/reviewed/myClient.less
  20. 415 0
      js/component/manageCenter/customer/signcustomer/detaillist.jsx
  21. 914 0
      js/component/manageCenter/customer/signcustomer/index.jsx
  22. 22 0
      js/component/manageCenter/customer/signcustomer/index.less
  23. 626 0
      js/component/manageCenter/customer/signcustomer/statistics.jsx
  24. 1 1
      js/component/manageCenter/customerService/administration/followUpDetails.jsx
  25. 1 1
      js/component/manageCenter/customerService/administration/order.jsx
  26. 1 1
      js/component/manageCenter/financialManage/distribute/approvedOutsourcing.jsx
  27. 5 5
      js/component/manageCenter/financialManage/distribute/approvedOutsourcingAll.jsx
  28. 2 2
      js/component/manageCenter/financialManage/distribute/shouKuanAll.jsx
  29. 1 1
      js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx
  30. 31 0
      js/component/manageCenter/index/content.jsx
  31. 6 6
      js/component/manageCenter/order/orderNew/addService.jsx
  32. 45 45
      js/component/manageCenter/order/orderNew/addorders.js
  33. 1 1
      js/component/manageCenter/order/orderNew/approveds.jsx
  34. 83 81
      js/component/manageCenter/order/orderNew/arrearsList.jsx
  35. 2 1
      js/component/manageCenter/order/orderNew/billing.jsx
  36. 1 1
      js/component/manageCenter/order/orderNew/changeComponent/changeApply.js
  37. 1 1
      js/component/manageCenter/order/orderNew/changeComponent/changeDetailYxy.js
  38. 3 2
      js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js
  39. 22 1
      js/component/manageCenter/order/orderNew/changeComponent/proAndCuiList.jsx
  40. 1 1
      js/component/manageCenter/order/orderNew/changeComponent/searchInput.js
  41. 1 1
      js/component/manageCenter/order/orderNew/chargeback.jsx
  42. 1 1
      js/component/manageCenter/order/orderNew/checkOutsourcing.jsx
  43. 1 1
      js/component/manageCenter/order/orderNew/contractCwjl.js
  44. 1 1
      js/component/manageCenter/order/orderNew/examine.jsx
  45. 19 18
      js/component/manageCenter/order/orderNew/inquiry.jsx
  46. 1 1
      js/component/manageCenter/order/orderNew/myprojectvip.jsx
  47. 1 1
      js/component/manageCenter/order/orderNew/outsourcingList.jsx
  48. 1 1
      js/component/manageCenter/order/orderNew/outsourcingPro.jsx
  49. 3 2
      js/component/manageCenter/order/orderNew/reject.jsx
  50. 1 1
      js/component/manageCenter/order/orderNew/updatesales.jsx
  51. 1 1
      js/component/manageCenter/order/source/index.jsx
  52. 1 1
      js/component/manageCenter/project/patent/list.jsx
  53. 1 1
      js/component/manageCenter/project/project/outsourceTaskAssignment.jsx
  54. 1 1
      js/component/manageCenter/project/project/projectAssignment.jsx
  55. 1 1
      js/component/manageCenter/project/project/projectQuery.jsx
  56. 1 1
      js/component/manageCenter/project/project/zxsglyOutSourcingPaiDan.jsx
  57. 1 1
      js/component/manageCenter/project/task/businessManagement/index.jsx
  58. 1 1
      js/component/manageCenter/project/task/myTask.jsx
  59. 206 209
      js/component/manageCenter/project/task/myTaskCount.jsx
  60. 1 1
      js/component/manageCenter/project/task/myTaskOutsource.jsx
  61. 1 1
      js/component/manageCenter/project/task/taskAssignment.jsx
  62. 1 1
      js/component/manageCenter/project/task/taskCount.jsx
  63. 1 1
      js/component/manageCenter/project/task/taskQuery.jsx
  64. 725 630
      js/component/manageCenter/set/organization/organization.jsx
  65. 20 0
      js/component/tools.js
  66. 1 1
      package.json
  67. 1 0
      webpack.config.js

+ 192 - 0
js/component/common/cascaders/index.jsx

@@ -0,0 +1,192 @@
+import React, { Component } from "react";
+import { Button, message, Modal, Spin, Table, Checkbox, Collapse, } from "antd";
+import $ from "jquery/src/ajax";
+import "./index.less";
+
+class Cascaders extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      visible: false,
+      authTree: [],
+      checkedList: [],
+    };
+    this.itemHandle = this.itemHandle.bind(this);
+    this.onSelect = this.onSelect.bind(this);
+    this.onOks = this.onOks.bind(this);
+    this.onCancel = this.onCancel.bind(this);
+  }
+
+
+  componentDidMount() {
+    // 后端返回的数据,转成前端要用的数据保存页面使用
+    // const authTree = [...params.authTree];
+    // this.setState({
+    //   authTree
+    // })
+  }
+  // 转成前端要用的数据
+  authTreeFun() {
+    const checkedList = this.state.checkedList;
+    checkedList.forEach((item) => {
+      this.itemHandle(item);
+    });
+  }
+  // 点击选择部门
+  onSelect() {
+    const list = JSON.parse(localStorage.getItem("departmentData"))
+    const authTree = list
+    this.setState({
+      visible: true,
+      authTree: authTree,
+    }, () => {
+      this.authTreeFun();
+    })
+  }
+
+  onOks() {
+    const { authTree, checkedList } = this.state
+    const { id = "id", children = "children", onSel } = this.props
+    let list = []
+    authTree.forEach((its) => {
+      if (its[children]) {
+        its[children].forEach((itl) => {
+          if (itl.checked) {
+            list.push(itl[id])
+          }
+        });
+      }
+    })
+    this.setState({
+      checkedList: list,
+      visible: false,
+    })
+    onSel(checkedList)
+  }
+
+  onCancel() {
+    this.setState({
+      visible: false,
+    })
+  }
+
+  // 代码三级联动核心就在这里
+  itemHandle(iD, checked = true) {
+    const { id = "id", children = "children" } = this.props
+    const { authTree } = this.state
+    // const authTree = [...this.state.authTree];
+    authTree.forEach((item1) => {
+      if (item1[id] == iD) {
+        item1.checked = checked;
+        if (item1[children]) {
+          item1[children].forEach((item2) => {
+            item2.checked = checked;
+          });
+        }
+      } else {
+        // 反向思路: 保存子选项框的个数, 子选项选中就-1, 等于0说明都选中了, 父选项就勾上
+        let temp1 = !!item1[children] ? item1[children].length : 0;
+        !!item1[children] && item1[children].forEach((item2) => {
+          if (item2[id] == iD) {
+            item2.checked = checked;
+          }
+          //  选中-1, 未选中不动
+          item2.checked ? temp1 -= 1 : temp1;
+        });
+        //  长度是0, 父选项框就勾选
+        !!item1[children] && temp1 === 0 ? item1.checked = true : item1.checked = false;
+      }
+    });
+    this.setState({
+      authTree,
+    });
+  }
+
+
+  render() {
+    const { Panel } = Collapse;
+    const { visible, authTree, checkedList } = this.state
+    const {
+      placeholder = "选择部门",
+      width = 200,
+      height = 32,
+      id = "id",
+      name = "name",
+      children = "children",
+    } = this.props
+    const authTreeMap = authTree.map((item1) => (
+      // Panel是手风琴
+      <Panel
+        key={item1[id]}
+        header={(
+          <div className="item" onClick={(e) => { e.stopPropagation(); }}>
+            {/* 一级复选框(向下操控二级三级) */}
+            <Checkbox
+              name={item1[id]}
+              checked={item1.checked}
+              onClick={(e) => {
+                this.itemHandle(e.target.name, e.target.checked);
+              }}
+            >
+            </Checkbox>
+            <div className="iname">{item1[name]}</div>
+          </div>
+        )}
+      >
+        {/* 二级复选框(向下操控三级,向上联动一级) */}
+        {!!item1[children] && item1[children].map((item2) => (
+          <div key={item2[id]} className="item">
+            <Checkbox
+              name={item2[id]}
+              checked={item2.checked}
+              onClick={(e) => {
+                this.itemHandle(e.target.name, e.target.checked);
+              }}
+            >
+            </Checkbox>
+            <div className="iname">{item2[name]}</div>
+          </div>
+        ))}
+      </Panel>
+    ));
+    return (
+      <div className="cascaders">
+        <div
+          className="cinput"
+          style={{
+            height: height,
+            width: width,
+            color: checkedList.length > 0 ? "rgba(0, 0, 0, 0.65)" : "rgba(191, 191, 191, 1)"
+          }}
+          onClick={this.onSelect}
+        >{checkedList.length > 0 ? `已选择${checkedList.length}个部门` : placeholder}
+        </div>
+        {
+          visible &&
+          <div
+            className="cpop"
+            style={{
+              width: width,
+            }}
+          >
+            <div className="clist">
+              <Collapse expandIconPosition="right">
+                {authTreeMap}
+              </Collapse>
+            </div>
+            <div className="cboot">
+              <Button
+                type="primary"
+                style={{ marginLeft: 10 }}
+                onClick={this.onOks}
+              >确定</Button>
+              <Button onClick={this.onCancel}>取消</Button>
+            </div>
+          </div>
+        }
+      </div>
+    );
+  }
+}
+
+export default Cascaders;

+ 58 - 0
js/component/common/cascaders/index.less

@@ -0,0 +1,58 @@
+.cascaders {
+  display: inline-block;
+  position: relative;
+  z-index: 99999999;
+}
+
+.cinput {
+  margin-right: 10px;
+  padding: 6px 7px;
+  font-size: 12px;
+  color: rgba(0, 0, 0, 0.65);
+  background-color: #fff;
+  border-radius: 4px;
+  border: 1px solid #d9d9d9;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+
+}
+
+.cpop {
+  border: 1px solid #d9d9d9;
+  border-radius: 4px;
+  position: absolute;
+
+}
+
+.clist {
+  max-height: 250px;
+  overflow: auto;
+
+}
+
+.item {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+
+}
+
+.iname {
+  width: 80%;
+  margin-left: 8px;
+  font-size: 12px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+
+}
+
+.cboot {
+  margin: 10px 0;
+  padding: 0 10px;
+  display: flex;
+  flex-direction: row-reverse;
+
+}

+ 1 - 1
js/component/common/departmentList/index.jsx

@@ -52,7 +52,7 @@ class DepartmentList extends Component{
         return(
             <Select
                 placeholder="订单部门"
-                style={{ width: 150, marginRight: 10 }}
+                style={{ width: 200, marginRight: 10 }}
                 value={this.props.value}
                 onChange={e => {
                     this.props.onChange(e);

+ 1 - 1
js/component/common/projectDetailsReadOnly/index.jsx

@@ -201,7 +201,7 @@ class ProjectDetailsReadOnly extends Component {
                             <FormItem
                                 labelCol={{ span: 4 }}
                                 wrapperCol={{ span: 16 }}
-                                label="服务说明"
+                                label="项目说明"
                             >
                                 <span>{taskComment}</span>
                             </FormItem>

+ 5 - 0
js/component/dataDic.js

@@ -4066,6 +4066,11 @@ module.exports = {
       id: 4,
       color: '#242424'
     },
+    {
+      title: '修改',
+      id: 5,
+      color: '#1E90FF'
+    },
   ],
   //会员服务年限
   vipYear: [

+ 1 - 0
js/component/login/adminLogin.jsx

@@ -47,6 +47,7 @@ var Login = React.createClass({
         };
     },
 
+
     keyboard(event) {
         if (event.keyCode == 13) {
             this.handleSubmit()

+ 14 - 10
js/component/manageCenter/channelList/channelunit/detail/visit.jsx

@@ -312,22 +312,26 @@ const Visit = React.createClass({
     });
   },
   render() {
+    const { addbt = true } = this.props
     return (
       <div className="clearfix">
         <Alert
           message="注:面谈公出补充,沟通完后记录今天交流的情况。计划下一次什么时候再面谈?该如何面谈?该如何跟进?"
           banner
         />
-        <Button
-          onClick={(e) => {
-            e.stopPropagation();
-            this.visit();
-          }}
-          type="primary"
-          style={{ marginTop: "10px", float: "right" }}
-        >
-          渠道跟进
-        </Button>
+        {
+          addbt &&
+          <Button
+            onClick={(e) => {
+              e.stopPropagation();
+              this.visit();
+            }}
+            type="primary"
+            style={{ marginTop: "10px", float: "right" }}
+          >
+            渠道跟进
+          </Button>
+        }
         <Spin spinning={this.state.loading}>
           <Table
             size="middle"

+ 330 - 311
js/component/manageCenter/customer/content.jsx

@@ -1,10 +1,10 @@
 import React, { Component } from 'react';
 import '../content.less';
 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";
+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() {
@@ -15,250 +15,250 @@ class Content extends Component {
         };
     }
     componentWillMount() {
-        var ids=window.location.href.indexOf('rid=');
-        var idk=window.location.href.substr(ids+4);
-        var rid=idk.split('#');
-        let menu=getMenu(rid);
+        var ids = window.location.href.indexOf('rid=');
+        var idk = window.location.href.substr(ids + 4);
+        var rid = idk.split('#');
+        let menu = getMenu(rid);
         let curry;
-        if(menu[0].subMenus.length>0){
-        	curry=menu[0].subMenus[0].url.split('#');
-        }else{
-        	curry=menu[0].url.split('#');
+        if (menu[0].subMenus.length > 0) {
+            curry = menu[0].subMenus[0].url.split('#');
+        } else {
+            curry = menu[0].url.split('#');
         };
         if (window.location.hash) {
             this.getKey(window.location.hash.substr(1));
         } else {
-         this.getKey(curry[1]);
+            this.getKey(curry[1]);
         };
     }
     getKey(key) {
         switch (key) {
-//      	//我的单位客户
-//          case 'myOrganization':
-//              require.ensure([], () => {
-//                  const MyClient = require('./customerData/myClient').default;
-//                  this.setState({
-//                      component: <MyClient ApiUrl={''}/>
-//                  });
-//              });
-//              break;
-//         // 单位客户查询
-//          case 'organizationQuery':
-//              require.ensure([], () => {
-//	                const CompanyCustomer = require('./customerData/companyCustomer').default;
-//	                this.setState({
-//	                    component:<CompanyCustomer ApiUrl={''}/>,
-//	                });
-//        	    });
-//        	    break;
-          	//我的个人客户
-//        	case 'myPersonal':
-//              require.ensure([], () => {
-//                  const IndividualCustomer = require('./individualCustomer/individualCustomer').default;
-//                  this.setState({
-//                      component: <IndividualCustomer ApiUrl={''}/>
-//
-//                  });
-//              });
-//              break;
+            //      	//我的单位客户
+            //          case 'myOrganization':
+            //              require.ensure([], () => {
+            //                  const MyClient = require('./customerData/myClient').default;
+            //                  this.setState({
+            //                      component: <MyClient ApiUrl={''}/>
+            //                  });
+            //              });
+            //              break;
+            //         // 单位客户查询
+            //          case 'organizationQuery':
+            //              require.ensure([], () => {
+            //	                const CompanyCustomer = require('./customerData/companyCustomer').default;
+            //	                this.setState({
+            //	                    component:<CompanyCustomer ApiUrl={''}/>,
+            //	                });
+            //        	    });
+            //        	    break;
+            //我的个人客户
+            //        	case 'myPersonal':
+            //              require.ensure([], () => {
+            //                  const IndividualCustomer = require('./individualCustomer/individualCustomer').default;
+            //                  this.setState({
+            //                      component: <IndividualCustomer ApiUrl={''}/>
+            //
+            //                  });
+            //              });
+            //              break;
             //我的被拒绝客户
             case 'myReject':
                 require.ensure([], () => {
                     const MyReject = require('./individualCustomer/myReject').default;
                     this.setState({
-                        component: <MyReject ApiUrl={''}/>
+                        component: <MyReject ApiUrl={''} />
 
                     });
                 });
                 break;
-//          //个人客户查询
-//          case 'personalQuery':
-//              require.ensure([], () => {
-//	                const QueryCustomer = require('./individualCustomer/queryCustomer').default;
-//	                this.setState({
-//	                    component:<QueryCustomer ApiUrl={''}/>,
-//	                });
-//        	    });
-//        	    break;
-          	//专家查询
-			case 'expertQuery':
-                require.ensure([], () => {
-	                const ExpertQuery = require('./individualCustomer/expertQuery').default;
-	                this.setState({
-	                    component:<ExpertQuery ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//公共客户查询
-          	case 'publicQuery':
-                require.ensure([], () => {
-	                const Qublicquery = require('./individualCustomer/publicQuery').default;
-	                this.setState({
-	                    component:<Qublicquery ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//个人客户管理
-          	case 'personalManage':
-                require.ensure([], () => {
-	                const PersonalManage = require('./customerManagement/personalManages').default;
-	                this.setState({
-	                    component:<PersonalManage ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//专家管理
-          	case 'expertManage':
-                require.ensure([], () => {
-	                const ExpertManage = require('./customerManagement/expertManage').default;
-	                this.setState({
-	                    component:<ExpertManage ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//专家审核
-          	case 'expertAudit':
-                require.ensure([], () => {
-	                const ExpertReview = require('./reviewed/expertReview').default;
-	                this.setState({
-	                    component:<ExpertReview ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//实名认证审核
-          	case 'identityAudit':
-                require.ensure([], () => {
-	                const IdentityAudits = require('./reviewed/identityAudits').default;
-	                this.setState({
-	                    component:<IdentityAudits ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//客户录入审核
-          	case 'enteringAudit':
-                require.ensure([], () => {
-	                const EnteringAudit = require('./reviewed/enteringAudit').default;
-	                this.setState({
-	                    component:<EnteringAudit ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//专家发布
-          	case 'expertPublish':
-                require.ensure([], () => {
-	                const ExpertRelease = require('./release/expertRelease').default;
-	                this.setState({
-	                    component:<ExpertRelease ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//专家发布新
-          	case 'releaseExpert':
-                require.ensure([], () => {
-	                const ReleaseExpert = require('./release/releaseExpert').default;
-	                this.setState({
-	                    component:<ReleaseExpert ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//公共客户管理
-          	case 'publicManage':
-                require.ensure([], () => {
-	                const PublicManages = require('./customerManagement/publicManages').default;
-	                this.setState({
-	                    component:<PublicManages ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-			//部门客户管理
-			case 'adminCustomerStatistics':
-			    require.ensure([], () => {
-			        const AdminCustomerStatistics = require('./customerManagement/adminCustomerStatistics').default;
-			        this.setState({
-			            component:<AdminCustomerStatistics ApiUrl={''}/>,
-			        });
-			    });
-			    break;
-			//部门客户管理3
-// 			case 'adminCustomerStatistics3':
-// 				require.ensure([], () => {
-// 				    const AdminCustomerStatistics3 = require('./customerManagement/adminCustomerStatistics3').default;
-// 				    this.setState({
-// 				        component:<AdminCustomerStatistics3 ApiUrl={''}/>,
-// 				    });
-// 				});
-// 				break;
-          	//单位客户管理
-          	case 'organizationManage':
-                require.ensure([], () => {
-	                const OrganizationManage = require('./customerManagement/organizationManages').default;
-	                this.setState({
-	                    component:<OrganizationManage ApiUrl={''}/>,
-	                });
-          	    });
-          	    break;
-          	//我的业务
-      	    case 'myBusiness':
-	            require.ensure([], () => {
-	                const MyBusiness = require('./customerService/myBusiness').default;
-	                this.setState({
-	                    component:<MyBusiness ApiUrl={''}/>,
-	                });
-	      	    });
-	      	    break;
-	      	//业务管理
-	      	case 'businessMange':
-	            require.ensure([], () => {
-	                const BusinessMange = require('./customerService/businessManges').default;
-	                this.setState({
-	                    component:<BusinessMange ApiUrl={''}/>,
-	                });
-	      	    });
-	      	    break;
-	      	//业务查询
-      	    case 'businessQuery':
-            require.ensure([], () => {
-                const ServiceQuery = require('./customerService/serviceQuery').default;
-                this.setState({
-                    component:<ServiceQuery ApiUrl={''}/>,
-                });
-      	    });
-      	    break;
-      	    //客户拜访统计
-      	    case 'visitStatistics':
-            require.ensure([], () => {
-                const VisitStatistics = require('./statistics/visitStatistics').default;
-                this.setState({
-                    component:<VisitStatistics ApiUrl={''}/>,
-                });
-      	    });
-      	    break;
-      	    //状态统计
-      	    case 'statusStatistics':
-            require.ensure([], () => {
-                const StatusStatistics = require('./statistics/statusStatistics').default;
-                this.setState({
-                    component:<StatusStatistics ApiUrl={''}/>,
-                });
-      	    });
-      	    break;
-      	    //进度统计
-      	    case 'followStatistics':
-            require.ensure([], () => {
-                const FollowStatistics = require('./statistics/followStatistics').default;
-                this.setState({
-                    component:<FollowStatistics ApiUrl={''}/>,
-                });
-      	    });
-      	    break;
-      	    /*
-      	     *报表开发
-      	     */
-      	    case 'personalReport':
+            //          //个人客户查询
+            //          case 'personalQuery':
+            //              require.ensure([], () => {
+            //	                const QueryCustomer = require('./individualCustomer/queryCustomer').default;
+            //	                this.setState({
+            //	                    component:<QueryCustomer ApiUrl={''}/>,
+            //	                });
+            //        	    });
+            //        	    break;
+            //专家查询
+            case 'expertQuery':
+                require.ensure([], () => {
+                    const ExpertQuery = require('./individualCustomer/expertQuery').default;
+                    this.setState({
+                        component: <ExpertQuery ApiUrl={''} />,
+                    });
+                });
+                break;
+            //公共客户查询
+            case 'publicQuery':
+                require.ensure([], () => {
+                    const Qublicquery = require('./individualCustomer/publicQuery').default;
+                    this.setState({
+                        component: <Qublicquery ApiUrl={''} />,
+                    });
+                });
+                break;
+            //个人客户管理
+            case 'personalManage':
+                require.ensure([], () => {
+                    const PersonalManage = require('./customerManagement/personalManages').default;
+                    this.setState({
+                        component: <PersonalManage ApiUrl={''} />,
+                    });
+                });
+                break;
+            //专家管理
+            case 'expertManage':
+                require.ensure([], () => {
+                    const ExpertManage = require('./customerManagement/expertManage').default;
+                    this.setState({
+                        component: <ExpertManage ApiUrl={''} />,
+                    });
+                });
+                break;
+            //专家审核
+            case 'expertAudit':
+                require.ensure([], () => {
+                    const ExpertReview = require('./reviewed/expertReview').default;
+                    this.setState({
+                        component: <ExpertReview ApiUrl={''} />,
+                    });
+                });
+                break;
+            //实名认证审核
+            case 'identityAudit':
+                require.ensure([], () => {
+                    const IdentityAudits = require('./reviewed/identityAudits').default;
+                    this.setState({
+                        component: <IdentityAudits ApiUrl={''} />,
+                    });
+                });
+                break;
+            //客户录入审核
+            case 'enteringAudit':
+                require.ensure([], () => {
+                    const EnteringAudit = require('./reviewed/enteringAudit').default;
+                    this.setState({
+                        component: <EnteringAudit ApiUrl={''} />,
+                    });
+                });
+                break;
+            //专家发布
+            case 'expertPublish':
+                require.ensure([], () => {
+                    const ExpertRelease = require('./release/expertRelease').default;
+                    this.setState({
+                        component: <ExpertRelease ApiUrl={''} />,
+                    });
+                });
+                break;
+            //专家发布新
+            case 'releaseExpert':
+                require.ensure([], () => {
+                    const ReleaseExpert = require('./release/releaseExpert').default;
+                    this.setState({
+                        component: <ReleaseExpert ApiUrl={''} />,
+                    });
+                });
+                break;
+            //公共客户管理
+            case 'publicManage':
+                require.ensure([], () => {
+                    const PublicManages = require('./customerManagement/publicManages').default;
+                    this.setState({
+                        component: <PublicManages ApiUrl={''} />,
+                    });
+                });
+                break;
+            //部门客户管理
+            case 'adminCustomerStatistics':
+                require.ensure([], () => {
+                    const AdminCustomerStatistics = require('./customerManagement/adminCustomerStatistics').default;
+                    this.setState({
+                        component: <AdminCustomerStatistics ApiUrl={''} />,
+                    });
+                });
+                break;
+            //部门客户管理3
+            // 			case 'adminCustomerStatistics3':
+            // 				require.ensure([], () => {
+            // 				    const AdminCustomerStatistics3 = require('./customerManagement/adminCustomerStatistics3').default;
+            // 				    this.setState({
+            // 				        component:<AdminCustomerStatistics3 ApiUrl={''}/>,
+            // 				    });
+            // 				});
+            // 				break;
+            //单位客户管理
+            case 'organizationManage':
+                require.ensure([], () => {
+                    const OrganizationManage = require('./customerManagement/organizationManages').default;
+                    this.setState({
+                        component: <OrganizationManage ApiUrl={''} />,
+                    });
+                });
+                break;
+            //我的业务
+            case 'myBusiness':
+                require.ensure([], () => {
+                    const MyBusiness = require('./customerService/myBusiness').default;
+                    this.setState({
+                        component: <MyBusiness ApiUrl={''} />,
+                    });
+                });
+                break;
+            //业务管理
+            case 'businessMange':
+                require.ensure([], () => {
+                    const BusinessMange = require('./customerService/businessManges').default;
+                    this.setState({
+                        component: <BusinessMange ApiUrl={''} />,
+                    });
+                });
+                break;
+            //业务查询
+            case 'businessQuery':
+                require.ensure([], () => {
+                    const ServiceQuery = require('./customerService/serviceQuery').default;
+                    this.setState({
+                        component: <ServiceQuery ApiUrl={''} />,
+                    });
+                });
+                break;
+            //客户拜访统计
+            case 'visitStatistics':
+                require.ensure([], () => {
+                    const VisitStatistics = require('./statistics/visitStatistics').default;
+                    this.setState({
+                        component: <VisitStatistics ApiUrl={''} />,
+                    });
+                });
+                break;
+            //状态统计
+            case 'statusStatistics':
+                require.ensure([], () => {
+                    const StatusStatistics = require('./statistics/statusStatistics').default;
+                    this.setState({
+                        component: <StatusStatistics ApiUrl={''} />,
+                    });
+                });
+                break;
+            //进度统计
+            case 'followStatistics':
+                require.ensure([], () => {
+                    const FollowStatistics = require('./statistics/followStatistics').default;
+                    this.setState({
+                        component: <FollowStatistics ApiUrl={''} />,
+                    });
+                });
+                break;
+            /*
+             *报表开发
+             */
+            case 'personalReport':
                 require.ensure([], () => {
                     const Jurisdiction = require('./report/personalReport').default;
                     this.setState({
-                        component: <Jurisdiction ApiUrl={''}/>
+                        component: <Jurisdiction ApiUrl={''} />
                     });
                 });
                 break;
@@ -266,17 +266,17 @@ class Content extends Component {
                 require.ensure([], () => {
                     const DepartmentReport = require('./report/departmentReport').default;
                     this.setState({
-                        component: <DepartmentReport ApiUrl={''}/>
+                        component: <DepartmentReport ApiUrl={''} />
                     });
                 });
                 break;
             /*拜访记录统计*/
-           //客户营销日统计
-           case 'diurnalStatistics':
+            //客户营销日统计
+            case 'diurnalStatistics':
                 require.ensure([], () => {
                     const DiurnalStatistics = require('./customerMarketing/diurnalStatistics').default;
                     this.setState({
-                        component: <DiurnalStatistics ApiUrl={''}/>
+                        component: <DiurnalStatistics ApiUrl={''} />
                     });
                 });
                 break;
@@ -285,21 +285,21 @@ class Content extends Component {
                 require.ensure([], () => {
                     const TimeStatistics = require('./customerMarketing/timeStatistics').default;
                     this.setState({
-                        component: <TimeStatistics ApiUrl={''}/>
+                        component: <TimeStatistics ApiUrl={''} />
                     });
                 });
                 break;
             /*意向客户*/
             //个人意向客户
-           	case 'personalIntention':
+            case 'personalIntention':
                 require.ensure([], () => {
                     const PersonalIntention = require('./NEW/intentionCustomer/intentionCustomer').default;
                     this.setState({
                         component: <PersonalIntention
-                        			intentionState={1}
-                        		    ApiUrl={'/api/admin/customer/listPrivatePersonalCustomer'}
-                        		    detailApi={'/api/admin/customer/findPersonalCustomerDetail'}
-                        			/>
+                            intentionState={1}
+                            ApiUrl={'/api/admin/customer/listPrivatePersonalCustomer'}
+                            detailApi={'/api/admin/customer/findPersonalCustomerDetail'}
+                        />
                     });
                 });
                 break;
@@ -380,9 +380,9 @@ class Content extends Component {
                 require.ensure([], () => {
                     const CompanyIntention = require('./NEW/intentionCustomer/channelStatistics').default;
                     this.setState({
-                        component: <CompanyIntention/>
+                        component: <CompanyIntention />
                     });
-                 });
+                });
                 break;
             //单位意向客户
             case 'companyIntention':
@@ -390,10 +390,10 @@ class Content extends Component {
                     const CompanyIntention = require('./NEW/intentionCustomer/intentionCustomer').default;
                     this.setState({
                         component: <CompanyIntention
-	                        		intentionState={0}
-	                        		ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
-	                        		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
-                        		/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
+                        />
                     });
                 });
                 break;
@@ -468,7 +468,7 @@ class Content extends Component {
                 require.ensure([], () => {
                     const DepartmentStatistics = require('./statistics/departmentStatistics/index').default;
                     this.setState({
-                        component: <DepartmentStatistics/>
+                        component: <DepartmentStatistics />
                     });
                 });
                 break;
@@ -478,10 +478,10 @@ class Content extends Component {
                     const Crm = require('./NEW/crm/crm').default;
                     this.setState({
                         component: <Crm
-	                        		intentionState={0}
-	                        		ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
-	                        		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
-                        		/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
+                        />
                     });
                 });
                 break;
@@ -530,16 +530,16 @@ class Content extends Component {
                     });
                 });
                 break;
-             //客户资料
+            //客户资料
             case 'crmCount':
                 require.ensure([], () => {
                     const CrmCount = require('./NEW/crm/crmCount').default;
                     this.setState({
                         component: <CrmCount
-	                        		intentionState={0}
-	                        		ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
-	                        		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
-                        		/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
+                        />
                     });
                 });
                 break;
@@ -549,26 +549,26 @@ class Content extends Component {
                     const CrmAll = require('./NEW/crm/crmAll').default;
                     this.setState({
                         component: <CrmAll
-	                        		intentionState={0}
-	                        		ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
-	                        		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
-                        		/>
-                    });
-                });
-                break;
-			//客户资料
-			case 'patentPayment':
-			    require.ensure([], () => {
-			        const PatentPayment = require('./NEW/crm/patentPayment').default;
-			        this.setState({
-			            component: <PatentPayment
-			                		intentionState={0}
-			                		ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
-			                		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
-			            		/>
-			        });
-			    });
-			    break;
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
+                        />
+                    });
+                });
+                break;
+            //客户资料
+            case 'patentPayment':
+                require.ensure([], () => {
+                    const PatentPayment = require('./NEW/crm/patentPayment').default;
+                    this.setState({
+                        component: <PatentPayment
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPrivateOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}
+                        />
+                    });
+                });
+                break;
             //客户资料-仅读
             case 'patentPaymentOnlyRead':
                 require.ensure([], () => {
@@ -590,10 +590,10 @@ class Content extends Component {
                     const PersonalSign = require('./NEW/signCustomer/signCustomer').default;
                     this.setState({
                         component: <PersonalSign
-                    			intentionState={1}
-                    		    ApiUrl={'/api/admin/customer/listSignPersonalCustomer'}
-                    		    //ApiUrl={'/api/admin/customer/listPrivatePersonalCustomer'}
-                    		    detailApi={'/api/admin/customer/findPersonalCustomerDetail'}
+                            intentionState={1}
+                            ApiUrl={'/api/admin/customer/listSignPersonalCustomer'}
+                            //ApiUrl={'/api/admin/customer/listPrivatePersonalCustomer'}
+                            detailApi={'/api/admin/customer/findPersonalCustomerDetail'}
                         />
                     });
                 });
@@ -601,24 +601,24 @@ class Content extends Component {
             //单位签单客户
             case 'companySign':
                 require.ensure([], () => {
-                    const CompanySign =  require('./NEW/signCustomer/signCustomer').default;
+                    const CompanySign = require('./NEW/signCustomer/signCustomer').default;
                     this.setState({
                         component: <CompanySign
-                    			intentionState={0}
-                        		ApiUrl={'/api/admin/customer/listSignOrganizationCustomer'}
-                        		detailApi={'/api/admin/customer/findOrganizationCustomerDetail'}/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listSignOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/findOrganizationCustomerDetail'} />
                     });
                 });
                 break;
-             //个人客户查询
+            //个人客户查询
             case 'personalQuery':
                 require.ensure([], () => {
                     const PersonalQuery = require('./NEW/query/queryCutomer').default;
                     this.setState({
                         component: <PersonalQuery
-                			intentionState={1}
-                		    ApiUrl={'/api/admin/customer/listAllPersonalCustomer'}
-                		    detailApi={'/api/admin/customer/getLockedProject'}
+                            intentionState={1}
+                            ApiUrl={'/api/admin/customer/listAllPersonalCustomer'}
+                            detailApi={'/api/admin/customer/getLockedProject'}
                         />
                     });
                 });
@@ -626,24 +626,24 @@ class Content extends Component {
             //单位客户查询
             case 'organizationQuery':
                 require.ensure([], () => {
-                    const CompanyQuery =  require('./NEW/query/queryCutomer').default;
+                    const CompanyQuery = require('./NEW/query/queryCutomer').default;
                     this.setState({
                         component: <CompanyQuery
-                			intentionState={0}
-                    		ApiUrl={'/api/admin/customer/listAllOrganizationCustomer'}
-                    		detailApi={'/api/admin/customer/getLockedProject'}
-                    	/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listAllOrganizationCustomer'}
+                            detailApi={'/api/admin/customer/getLockedProject'}
+                        />
                     });
                 });
                 break;
-             //个人公共客户
+            //个人公共客户
             case 'personalPublicCustomer':
                 require.ensure([], () => {
                     const PersonalPublicCustomer = require('./NEW/publicCustomer/publicCustomer').default;
                     this.setState({
                         component: <PersonalPublicCustomer
-                			intentionState={1}
-                		    ApiUrl={'/api/admin/customer/listPublicPersonalCustomer'}
+                            intentionState={1}
+                            ApiUrl={'/api/admin/customer/listPublicPersonalCustomer'}
                         />
                     });
                 });
@@ -653,7 +653,7 @@ class Content extends Component {
                 require.ensure([], () => {
                     const Reexamine = require('./operationalData/reexamine').default;
                     this.setState({
-                        component: <Reexamine/>
+                        component: <Reexamine />
                     });
                 });
                 break;
@@ -662,7 +662,7 @@ class Content extends Component {
                 require.ensure([], () => {
                     const SignatureStatistics = require('./operationalData/signatureStatistics').default;
                     this.setState({
-                        component: <SignatureStatistics/>
+                        component: <SignatureStatistics />
                     });
                 });
                 break;
@@ -671,16 +671,16 @@ class Content extends Component {
                 require.ensure([], () => {
                     const InterviewStatistics = require('./operationalData/interviewStatistics').default;
                     this.setState({
-                        component: <InterviewStatistics/>
+                        component: <InterviewStatistics />
                     });
                 });
                 break;
-                //全国应收款统计表
+            //全国应收款统计表
             case 'receivablesStatistics':
                 require.ensure([], () => {
                     const ReceivablesStatistics = require('./operationalData/receivablesStatistics').default;
                     this.setState({
-                        component: <ReceivablesStatistics/>
+                        component: <ReceivablesStatistics />
                     });
                 });
                 break;
@@ -689,7 +689,7 @@ class Content extends Component {
                 require.ensure([], () => {
                     const PublicStatistics = require('./publicStatistics/index').default;
                     this.setState({
-                        component: <PublicStatistics/>
+                        component: <PublicStatistics />
                     });
                 });
                 break;
@@ -698,28 +698,47 @@ class Content extends Component {
                 require.ensure([], () => {
                     const PublicSummary = require('./publicSummary/index').default;
                     this.setState({
-                        component: <PublicSummary/>
+                        component: <PublicSummary />
                     });
                 });
                 break;
             //单位公共客户
             case 'organizationPublicCustomer':
                 require.ensure([], () => {
-                    const OrganizationPublicCustomer =  require('./NEW/publicCustomer/publicCustomer').default;
+                    const OrganizationPublicCustomer = require('./NEW/publicCustomer/publicCustomer').default;
                     this.setState({
                         component: <OrganizationPublicCustomer
-                			intentionState={0}
-                    		ApiUrl={'/api/admin/customer/listPublicOrganizationCustomer'}
-                    	/>
+                            intentionState={0}
+                            ApiUrl={'/api/admin/customer/listPublicOrganizationCustomer'}
+                        />
+                    });
+                });
+                break;
+            // 签单客户汇总
+            case 'signCustomer':
+                require.ensure([], () => {
+                    const SignCustomer = require('./signcustomer/index').default;
+                    this.setState({
+                        component: <SignCustomer />
                     });
                 });
                 break;
-      	    default:
-            require.ensure([], () => {
-                const Module = require('../module').default;
-                this.setState({
-                    component:<Module ApiUrl={''}/>
-                	});
+            // 签单客户数据统计
+            case 'signStatistics':
+                require.ensure([], () => {
+                    const SignStatistics = require('./signcustomer/statistics').default;
+                    this.setState({
+                        component: <SignStatistics />
+                    });
+                });
+                break;
+
+            default:
+                require.ensure([], () => {
+                    const Module = require('../module').default;
+                    this.setState({
+                        component: <Module ApiUrl={''} />
+                    });
                 });
 
 
@@ -732,7 +751,7 @@ class Content extends Component {
             <div className="manage-content">
                 <LeftTab handlekey={this.getKey.bind(this)} />
                 <div className="content-right">
-                   {this.state.component}
+                    {this.state.component}
                 </div>
             </div>
         )

+ 1 - 1
js/component/manageCenter/customer/customerData/myClient.less

@@ -80,7 +80,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .saveBtn{margin-left: 190px;margin-right: 30px;margin-top: 20px;margin-bottom: 50px;}
 .ContactsList{float: right;margin-right: 100px;margin-bottom: 30px;margin-top: 10px;}
 .pictures .ant-row{display: inline-block;width: 550px;}

+ 1 - 1
js/component/manageCenter/customer/customerManagement/myClient.less

@@ -81,7 +81,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .ContactsList{float: right;}
 #demand-form {
     .half-item {

+ 401 - 400
js/component/manageCenter/customer/customerMarketing/diurnalStatistics.jsx

@@ -1,16 +1,16 @@
 import React from 'react';
-import { Select, Spin, Input, Table, Button ,DatePicker, Form  , Tabs , Switch,message} from 'antd';
+import { Select, Spin, Input, Table, Button, DatePicker, Form, Tabs, Switch, message } from 'antd';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
 import './report.less';
 import DiurnalStatisticsOne from './diurnalStatisticsOne.jsx';
 import { post } from '../../../dataDic.js';
-import {ChooseList} from "../../order/orderNew/chooseList";
+import { ChooseList } from "../../order/orderNew/chooseList";
 const TabPane = Tabs.TabPane;
 
 const DiurnalStatistics = React.createClass({
 	loadData(totalArr) {
-		let total=totalArr;
+		let total = totalArr;
 		this.setState({
 			loading: true
 		});
@@ -20,70 +20,70 @@ const DiurnalStatistics = React.createClass({
 			crossDomain: false,
 			url: globalConfig.context + "/api/admin/report/sales/marketingStatistics",
 			data: {
-				type:'1',
-				depId:this.state.superId,//部门机构
+				type: '1',
+				depId: this.state.superId,//部门机构
 			},
-			success: function(data) {
+			success: function (data) {
 				let thedata = data.data;
 				let theArr = [];
-				if(!thedata) {
-					if(data.error && data.error.length) {
+				if (!thedata) {
+					if (data.error && data.error.length) {
 						message.warning(data.error[0].message);
 					};
 					thedata = {};
 				} else {
-					thedata.map(function(item, index) {
-						let nub=index+1;
+					thedata.map(function (item, index) {
+						let nub = index + 1;
 						theArr.push({
 							key: index,
-							theNumber:false,
-							nub:nub,
+							theNumber: false,
+							nub: nub,
 							id: item.id,
-							departmentId:item.departmentId,//部门ID
-							departmentName:item.departmentName,//部门名称
-							departmentManagerName:item.departmentManagerName,//部门负责人名称
-							departmentNumber:item.departmentNumber, //部门人数
-							privateCustomersCount:item.privateCustomersCount,// 部门客户数
-							dataCount:item.dataCount,// 新增客户数
-							dailyTelNo:item.dayTelNo,//日电话量
-							dailyVisitNo:item.dayVisitNo,//日外拜量
-							dailyFollowNo:item.dayFollowNo,//日营销总量
-							dailyAVG:parseFloat(item.dayAVG).toFixed(2),//日人均营销量
-							weekTelNo:item.weeklyTelNo,//周电话量
-							weekFollowNo:item.weeklyFollowNo,//周总量
-							weekVisitNo:item.weeklyVisitNo,//周外拜量
-							monthsTelNo:item.monthTelNo,//月电话量
-							monthsFollowNo:item.monthFollowNo,//月总量
-							monthsVisitNo:item.monthVisitNo,//月外拜量
-							annualTelNo:item.yearTelNo,//年电话量
-							annualFollowNo:item.yearFollowNo,//年总量
-							annualVisitNo:item.yearVisitNo,//年外拜量
-							
+							departmentId: item.departmentId,//部门ID
+							departmentName: item.departmentName,//部门名称
+							departmentManagerName: item.departmentManagerName,//部门负责人名称
+							departmentNumber: item.departmentNumber, //部门人数
+							privateCustomersCount: item.privateCustomersCount,// 部门客户数
+							dataCount: item.dataCount,// 新增客户数
+							dailyTelNo: item.dayTelNo,//日电话量
+							dailyVisitNo: item.dayVisitNo,//日外拜量
+							dailyFollowNo: item.dayFollowNo,//日营销总量
+							dailyAVG: parseFloat(item.dayAVG).toFixed(2),//日人均营销量
+							weekTelNo: item.weeklyTelNo,//周电话量
+							weekFollowNo: item.weeklyFollowNo,//周总量
+							weekVisitNo: item.weeklyVisitNo,//周外拜量
+							monthsTelNo: item.monthTelNo,//月电话量
+							monthsFollowNo: item.monthFollowNo,//月总量
+							monthsVisitNo: item.monthVisitNo,//月外拜量
+							annualTelNo: item.yearTelNo,//年电话量
+							annualFollowNo: item.yearFollowNo,//年总量
+							annualVisitNo: item.yearVisitNo,//年外拜量
+
 						})
 					})
 				}
-				if(theArr.length){
+				if (theArr.length) {
 					theArr.push(
 						{
-							key:9999999,
-							theNumber:true,
-							departmentName:'合计',							
-							departmentNumber:total.departmentNumber, //部门人数
-							privateCustomersCount:total.privateCustomersCount,// 部门客户数
-							dataCount:total.dataCount,// 新增客户数
-							dailyTelNo:total.dayTelNo,//日电话量
-							dailyVisitNo:total.dayVisitNo,//日外拜量
-							dailyFollowNo:total.dayFollowNo,//日营销总量
-							dailyAVG:parseFloat(total.dayAVG).toFixed(2),//日人均营销量
-							weekTelNo:total.weeklyTelNo,//周电话量
-							weekFollowNo:total.weeklyFollowNo,//周总量
-							weekVisitNo:total.weeklyVisitNo,//周外拜量
-							monthsTelNo:total.monthTelNo,//月电话量
-							monthsFollowNo:total.monthFollowNo,//月总量
-							monthsVisitNo:total.monthVisitNo,//月外拜量
-							annualTelNo:total.yearTelNo,//年电话量
-							annualFollowNo:total.yearFollowNo,//年总量
-							annualVisitNo:total.yearVisitNo,//年外拜量
+							key: 9999999,
+							theNumber: true,
+							departmentName: '合计',
+							departmentNumber: total.departmentNumber, //部门人数
+							privateCustomersCount: total.privateCustomersCount,// 部门客户数
+							dataCount: total.dataCount,// 新增客户数
+							dailyTelNo: total.dayTelNo,//日电话量
+							dailyVisitNo: total.dayVisitNo,//日外拜量
+							dailyFollowNo: total.dayFollowNo,//日营销总量
+							dailyAVG: parseFloat(total.dayAVG).toFixed(2),//日人均营销量
+							weekTelNo: total.weeklyTelNo,//周电话量
+							weekFollowNo: total.weeklyFollowNo,//周总量
+							weekVisitNo: total.weeklyVisitNo,//周外拜量
+							monthsTelNo: total.monthTelNo,//月电话量
+							monthsFollowNo: total.monthFollowNo,//月总量
+							monthsVisitNo: total.monthVisitNo,//月外拜量
+							annualTelNo: total.yearTelNo,//年电话量
+							annualFollowNo: total.yearFollowNo,//年总量
+							annualVisitNo: total.yearVisitNo,//年外拜量
 						}
 					)
 				}
@@ -91,7 +91,7 @@ const DiurnalStatistics = React.createClass({
 					dataSource: theArr,
 				})
 			}.bind(this),
-		}).always(function() {
+		}).always(function () {
 			this.setState({
 				loading: false
 			});
@@ -107,110 +107,110 @@ const DiurnalStatistics = React.createClass({
 			crossDomain: false,
 			url: globalConfig.context + "/api/admin/report/sales/countMarketingStatistics",
 			data: {
-				type:'1',
-				depId:this.state.superId,//部门机构
+				type: '1',
+				depId: this.state.superId,//部门机构
 			},
-			success: function(data) {
+			success: function (data) {
 				let thedata = data.data;
 				let theArr = [];
-				if(!thedata) {
-					if(data.error && data.error.length) {
+				if (!thedata) {
+					if (data.error && data.error.length) {
 						message.warning(data.error[0].message);
 					};
 					thedata = {};
-				} 
+				}
 				this.loadData(thedata)
 				this.selectSuperId();
 			}.bind(this),
-		}).always(function() {
+		}).always(function () {
 			this.setState({
 				loading: false
 			});
 		}.bind(this));
 	},
 	//时间选择
-    selTime(value,index){
-    	this.setState({
-    		Dtime:value,
-    		selTime:index
-    	})
-    },
-    //获取上级组织
-    selectSuperId() {  
-    	this.state.data = []
-         $.ajax({
-                method: "get",
-                dataType: "json",
-                crossDomain: false,
-                url: globalConfig.context + "/api/admin/organization/selectSuperId",
-                data:{
-                  
-                },
-                success: function (data) {                	  
-                		let theArr = [];
-                		let theId=[];//用于保存上级组织的ID和名称
-					    let thedata=data.data;
-					    if (!thedata) {
-		                    if (data.error && data.error.length) {
-		                        message.warning(data.error[0].message);
-		                    };	
-		                    thedata = {}; 
-		              };   
-					    var contactIds=[];
-				        for(var i=0;i<data.data.length;i++){
-		                    let theData = data.data[i];
-		                    theArr.push(
-		                        <Select.Option value={theData.id} key={theData.id}>{theData.name}</Select.Option>
-		                    );
-		                    theId.push(
-		                        [theData.id,theData.name]
-		                    );
-		                };
-						this.setState({	
-							SuperArr:thedata,
-		                    contactsOption: theArr, 
-		                    theId: theId, 
-		                    orderStatusOptions:data.data,
-	                    });
-	                    
-					}.bind(this),
-				}).always(function () {
+	selTime(value, index) {
+		this.setState({
+			Dtime: value,
+			selTime: index
+		})
+	},
+	//获取上级组织
+	selectSuperId() {
+		this.state.data = []
+		$.ajax({
+			method: "get",
+			dataType: "json",
+			crossDomain: false,
+			url: globalConfig.context + "/api/admin/organization/selectSuperId",
+			data: {
+
+			},
+			success: function (data) {
+				let theArr = [];
+				let theId = [];//用于保存上级组织的ID和名称
+				let thedata = data.data;
+				if (!thedata) {
+					if (data.error && data.error.length) {
+						message.warning(data.error[0].message);
+					};
+					thedata = {};
+				};
+				var contactIds = [];
+				for (var i = 0; i < data.data.length; i++) {
+					let theData = data.data[i];
+					theArr.push(
+						<Select.Option value={theData.id} key={theData.id}>{theData.name}</Select.Option>
+					);
+					theId.push(
+						[theData.id, theData.name]
+					);
+				};
 				this.setState({
-	                loading: false
-	            });
-	        }.bind(this));
+					SuperArr: thedata,
+					contactsOption: theArr,
+					theId: theId,
+					orderStatusOptions: data.data,
+				});
+
+			}.bind(this),
+		}).always(function () {
+			this.setState({
+				loading: false
+			});
+		}.bind(this));
 	},
 	//判断浏览器类型
 	getExplorer() {
 		var explorer = window.navigator.userAgent;
 		//ie 
-		if(explorer.indexOf("MSIE") >= 0) {
+		if (explorer.indexOf("MSIE") >= 0) {
 			return 'ie';
 		}
 		//firefox 
-		else if(explorer.indexOf("Firefox") >= 0) {
+		else if (explorer.indexOf("Firefox") >= 0) {
 			return 'Firefox';
 		}
 		//Chrome
-		else if(explorer.indexOf("Chrome") >= 0) {
+		else if (explorer.indexOf("Chrome") >= 0) {
 			return 'Chrome';
 		}
 		//Opera
-		else if(explorer.indexOf("Opera") >= 0) {
+		else if (explorer.indexOf("Opera") >= 0) {
 			return 'Opera';
 		}
 		//Safari
-		else if(explorer.indexOf("Safari") >= 0) {
+		else if (explorer.indexOf("Safari") >= 0) {
 			return 'Safari';
 		}
 	},
-    //导出为exel表格
+	//导出为exel表格
 	tabExel() {
 		var table = document.querySelector('#daochu');
 		var idTmr;
 		//debugger;
 		//整个表格拷贝到EXCEL中
-		if(this.getExplorer() == 'ie') {
+		if (this.getExplorer() == 'ie') {
 			var curTbl = document.getElementById(tableid);
 			var oXL = new ActiveXObject("Excel.Application");
 			//创建AX对象excel 
@@ -231,7 +231,7 @@ const DiurnalStatistics = React.createClass({
 			//设置excel可见属性
 			try {
 				var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
-			} catch(e) {
+			} catch (e) {
 				print("Nested catch caught " + e);
 			} finally {
 				oWB.SaveAs(fname);
@@ -245,31 +245,31 @@ const DiurnalStatistics = React.createClass({
 				idTmr = window.setInterval("Cleanup();", 1);
 			}
 		} else {
-			this.tableToExcel(table,this.getExplorer());
+			this.tableToExcel(table, this.getExplorer());
 		}
 		function Cleanup() {
 			window.clearInterval(idTmr);
 			CollectGarbage();
 		}
 	},
-	tableToExcel(table,name) {
+	tableToExcel(table, name) {
 		var uri = 'data:application/vnd.ms-excel;base64,',
 			template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
-			base64 = function(s) {
+			base64 = function (s) {
 				return window.btoa(unescape(encodeURIComponent(s)))
 			},
-			format = function(s, c) {
+			format = function (s, c) {
 				return s.replace(/{(\w+)}/g,
-					function(m, p) {
+					function (m, p) {
 						return c[p];
 					})
 			}
-			if(!table.nodeType) table = document.getElementById(table);
-			var ctx = {
-				worksheet: name || 'Worksheet',
-				table: table.innerHTML
-			};
-			window.location.href = uri + base64(format(template, ctx))
+		if (!table.nodeType) table = document.getElementById(table);
+		var ctx = {
+			worksheet: name || 'Worksheet',
+			table: table.innerHTML
+		};
+		window.location.href = uri + base64(format(template, ctx))
 	},
 	getInitialState() {
 		return {
@@ -278,235 +278,235 @@ const DiurnalStatistics = React.createClass({
 			loading: false,
 			visible: false,
 			showDesc: false,
-			timeState:false,
-			Dtime:undefined,
-			selTime:'',
+			timeState: false,
+			Dtime: undefined,
+			selTime: '',
 			columns: [
-			{
-				title: '序号',
-				dataIndex: 'nub',
-				width:50,
-				key: 'nub',
-				fixed:false,
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:0
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			},
-			{
-				title: '部门',
-				dataIndex: 'departmentName',
-				key: 'departmentName',
-				width:230,
-				fixed:false,
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text//&&text.length>6?<span title={text}>{text.substr(0,6)+'…'}</span>:text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:3
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			}, {
-				title: '总经理',
-				width:100,
-				fixed:false,
-				dataIndex: 'departmentManagerName',
-				key: 'departmentManagerName',
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:0
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			},
-			{
-				title: '部门人数',
-				width:100,
-				fixed:false,
-				dataIndex: 'departmentNumber',
-				key: 'departmentNumber',
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:1
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			},
-			{
-				title: '部门客户数',
-				width:100,
-				fixed:false,
-				dataIndex: 'privateCustomersCount',
-				key: 'privateCustomersCount',
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:1
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			},{
-				title: '新增客户数',
-				width:100,
-				fixed:false,
-				dataIndex: 'dataCount',
-				key: 'dataCount',
-				render:(text,record)=>{
-				     if(!record.theNumber){
-				     	return text
-				     }else{
-				     	return {
-				     		children: text,
-      						props: {
-      							colSpan:1
-      						},
-				     	}
-				     	
-				     }
-				     
-				}
-			},
-			{			
-				title: '今日营销',
-				children: [
-					{
-						title: '营销总量(所有)',
-						width:100,
-						dataIndex: 'dailyFollowNo',
-						key: 'nudailyFollowNom',
-						sorter: (a, b) => a.dailyFollowNo - b.dailyFollowNo,
-//						sortOrder:'ascend'
-					},{
-						title: '电话量',
-						width:80,
-						dataIndex: 'dailyTelNo',
-						key: 'dailyTelNo',
-						sorter: (a, b) => a.dailyTelNo - b.dailyTelNo,
-					},{
-						title: '外拜量',
-						width:80,
-						dataIndex: 'dailyVisitNo',
-						key: 'dailyVisitNo',
-						sorter: (a, b) => a.dailyVisitNo - b.dailyVisitNo,
-					},{
-						title: '人均营销量',
-						width:110,
-						dataIndex: 'dailyAVG',
-						key: 'dailyAVG',
-						sorter: (a, b) => a.dailyAVG - b.dailyAVG,
+				{
+					title: '序号',
+					dataIndex: 'nub',
+					width: 50,
+					key: 'nub',
+					fixed: false,
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 0
+								},
+							}
+
+						}
+
 					}
-				],
-			}, 
-			{   
-				title: '周营销累计',
-				children: [
-					{
-						title: '周营销总量(所有)',
-						width:110,
-						dataIndex: 'weekFollowNo',
-						key: 'weekFollowNo',
-						sorter: (a, b) => a.weekFollowNo - b.weekFollowNo,
-					},{
-						title: '电话量',
-						width:80,
-						dataIndex: 'weekTelNo',
-						key: 'weekTelNo',
-						sorter: (a, b) => a.weekTelNo - b.weekTelNo,
-					},{
-						title: '外拜量',
-						width:80,
-						dataIndex: 'weekVisitNo',
-						key: 'weekVisitNo',
-						sorter: (a, b) => a.weekVisitNo - b.weekVisitNo,
+				},
+				{
+					title: '部门',
+					dataIndex: 'departmentName',
+					key: 'departmentName',
+					width: 230,
+					fixed: false,
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text//&&text.length>6?<span title={text}>{text.substr(0,6)+'…'}</span>:text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 3
+								},
+							}
+
+						}
+
 					}
-				],
-			},{
-				title: '月营销累计',
-				children: [
-					{
-						title: '月营销总量(所有)',
-						width:110,
-						dataIndex: 'monthsFollowNo',
-						key: 'monthsFollowNo',
-						sorter: (a, b) => a.monthsFollowNo - b.monthsFollowNo,
-					},{
-						title: '电话量',
-						width:80,
-						dataIndex: 'monthsTelNo',
-						key: 'monthsTelNo',
-						sorter: (a, b) => a.monthsTelNo - b.monthsTelNo,
-					},{
-						title: '外拜量',
-						width:80,
-						dataIndex: 'monthsVisitNo',
-						key: 'monthsVisitNo',
-						sorter: (a, b) => a.monthsVisitNo - b.monthsVisitNo,
+				}, {
+					title: '总经理',
+					width: 100,
+					fixed: false,
+					dataIndex: 'departmentManagerName',
+					key: 'departmentManagerName',
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 0
+								},
+							}
+
+						}
+
+					}
+				},
+				{
+					title: '部门人数',
+					width: 100,
+					fixed: false,
+					dataIndex: 'departmentNumber',
+					key: 'departmentNumber',
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 1
+								},
+							}
+
+						}
+
 					}
-				],
-			},{
-				title: '年营销累计',
-				children: [
-					{
-						title: '年营销总量(所有)',
-						width:110,
-						dataIndex: 'annualFollowNo',
-						key: 'annualFollowNo',
-						sorter: (a, b) => a.annualFollowNo - b.annualFollowNo,
-					},{
-						title: '电话量',
-						width:80,
-						dataIndex: 'annualTelNo',
-						key: 'annualTelNo',
-						sorter: (a, b) => a.annualTelNo - b.annualTelNo,
-					},{
-						title: '外拜量',
-						width:80,
-						dataIndex: 'annualVisitNo',
-						key: 'annualVisitNo',
-						sorter: (a, b) => a.annualVisitNo - b.annualVisitNo,
+				},
+				{
+					title: '部门客户数',
+					width: 100,
+					fixed: false,
+					dataIndex: 'privateCustomersCount',
+					key: 'privateCustomersCount',
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 1
+								},
+							}
+
+						}
+
 					}
-				],
-			}
+				}, {
+					title: '新增客户数',
+					width: 100,
+					fixed: false,
+					dataIndex: 'dataCount',
+					key: 'dataCount',
+					render: (text, record) => {
+						if (!record.theNumber) {
+							return text
+						} else {
+							return {
+								children: text,
+								props: {
+									colSpan: 1
+								},
+							}
+
+						}
+
+					}
+				},
+				{
+					title: '今日营销',
+					children: [
+						{
+							title: '营销总量(所有)',
+							width: 100,
+							dataIndex: 'dailyFollowNo',
+							key: 'nudailyFollowNom',
+							sorter: (a, b) => a.dailyFollowNo - b.dailyFollowNo,
+							//						sortOrder:'ascend'
+						}, {
+							title: '电话量',
+							width: 80,
+							dataIndex: 'dailyTelNo',
+							key: 'dailyTelNo',
+							sorter: (a, b) => a.dailyTelNo - b.dailyTelNo,
+						}, {
+							title: '外拜量',
+							width: 80,
+							dataIndex: 'dailyVisitNo',
+							key: 'dailyVisitNo',
+							sorter: (a, b) => a.dailyVisitNo - b.dailyVisitNo,
+						}, {
+							title: '人均营销量',
+							width: 110,
+							dataIndex: 'dailyAVG',
+							key: 'dailyAVG',
+							sorter: (a, b) => a.dailyAVG - b.dailyAVG,
+						}
+					],
+				},
+				{
+					title: '周营销累计',
+					children: [
+						{
+							title: '周营销总量(所有)',
+							width: 110,
+							dataIndex: 'weekFollowNo',
+							key: 'weekFollowNo',
+							sorter: (a, b) => a.weekFollowNo - b.weekFollowNo,
+						}, {
+							title: '电话量',
+							width: 80,
+							dataIndex: 'weekTelNo',
+							key: 'weekTelNo',
+							sorter: (a, b) => a.weekTelNo - b.weekTelNo,
+						}, {
+							title: '外拜量',
+							width: 80,
+							dataIndex: 'weekVisitNo',
+							key: 'weekVisitNo',
+							sorter: (a, b) => a.weekVisitNo - b.weekVisitNo,
+						}
+					],
+				}, {
+					title: '月营销累计',
+					children: [
+						{
+							title: '月营销总量(所有)',
+							width: 110,
+							dataIndex: 'monthsFollowNo',
+							key: 'monthsFollowNo',
+							sorter: (a, b) => a.monthsFollowNo - b.monthsFollowNo,
+						}, {
+							title: '电话量',
+							width: 80,
+							dataIndex: 'monthsTelNo',
+							key: 'monthsTelNo',
+							sorter: (a, b) => a.monthsTelNo - b.monthsTelNo,
+						}, {
+							title: '外拜量',
+							width: 80,
+							dataIndex: 'monthsVisitNo',
+							key: 'monthsVisitNo',
+							sorter: (a, b) => a.monthsVisitNo - b.monthsVisitNo,
+						}
+					],
+				}, {
+					title: '年营销累计',
+					children: [
+						{
+							title: '年营销总量(所有)',
+							width: 110,
+							dataIndex: 'annualFollowNo',
+							key: 'annualFollowNo',
+							sorter: (a, b) => a.annualFollowNo - b.annualFollowNo,
+						}, {
+							title: '电话量',
+							width: 80,
+							dataIndex: 'annualTelNo',
+							key: 'annualTelNo',
+							sorter: (a, b) => a.annualTelNo - b.annualTelNo,
+						}, {
+							title: '外拜量',
+							width: 80,
+							dataIndex: 'annualVisitNo',
+							key: 'annualVisitNo',
+							sorter: (a, b) => a.annualVisitNo - b.annualVisitNo,
+						}
+					],
+				}
 			],
 			dataSource: [],
 		};
@@ -518,11 +518,11 @@ const DiurnalStatistics = React.createClass({
 		this.state.superId = undefined;//部门机构清零
 		this.totalData()
 		this.setState({
-			order:"false"
+			order: "false"
 		})
 	},
 	//重构排序
-	tabChange(pagination,filter,sorter){
+	tabChange(pagination, filter, sorter) {
 		console.log(pagination)
 		console.log(sorter)
 	},
@@ -542,30 +542,30 @@ const DiurnalStatistics = React.createClass({
 	componentWillMount() {
 		//this.loadData();
 		this.totalData();
-		let times=new Date();
-		let nowTime=times.getFullYear()+'年'+(times.getMonth()+1)+'月'+times.getDate()+'日';
+		let times = new Date();
+		let nowTime = times.getFullYear() + '年' + (times.getMonth() + 1) + '月' + times.getDate() + '日';
 		this.setState({
-			Nowtime:nowTime
+			Nowtime: nowTime
 		})
 	},
 	render() {
 		let departmentArr = this.state.departmentArr || [];
-		return(
+		return (
 			<div className='set-content'>
-				<p style={{fontSize:'20px',marginBottom:'10px'}}>客户营销统计表(部门)</p>
+				<p style={{ fontSize: '20px', marginBottom: '10px' }}>客户营销统计表(部门)</p>
 				<Tabs defaultActiveKey="1" className="test">
 					<TabPane tab="搜索" key="1">
-						<div className="clearfix" style={{paddingTop:'11px'}}>
-							<Button type="primary" onClick={this.tabExel} style={{ float:'right' }}>导出到表格</Button>
-							<span style={{fontSize:'16px'}}>部门机构 : </span>
+						<div className="clearfix" style={{ paddingTop: '11px' }}>
+							<Button type="primary" onClick={this.tabExel} style={{ float: 'right' }}>导出到表格</Button>
+							<span style={{ fontSize: '16px' }}>部门机构 : </span>
 							<Select placeholder="选择部门"
-									style={{ width:'200px',marginRight:'10px' }}
-									value={this.state.superId}
-									onChange={(e) => { this.setState({ superId: e }) }} notFoundContent="未获取到上级组织列表">
-									{this.state.contactsOption}
+								style={{ width: '200px', marginRight: '10px' }}
+								value={this.state.superId}
+								onChange={(e) => { this.setState({ superId: e }) }} notFoundContent="未获取到上级组织列表">
+								{this.state.contactsOption}
 							</Select>
 
-							<Button type="primary" onClick={this.search} style={{marginLeft:'10px',marginRight:'10px'}}>搜索</Button>
+							<Button type="primary" onClick={this.search} style={{ marginLeft: '10px', marginRight: '10px' }}>搜索</Button>
 							<Button onClick={this.reset}>重置</Button>
 						</div>
 					</TabPane>
@@ -583,27 +583,28 @@ const DiurnalStatistics = React.createClass({
 				</Tabs>
 				<div id='daochu'>
 					<div className="surfaceTitle">
-						<span className="nowtime" style={{fontWeight:'bold'}}>{this.state.timeState?this.state.txtTime:this.state.Nowtime}</span>
-						<span style={{fontWeight:'bold'}}>客户营销统计表(部门)</span>
+						<span className="nowtime" style={{ fontWeight: 'bold' }}>{this.state.timeState ? this.state.txtTime : this.state.Nowtime}</span>
+						<span style={{ fontWeight: 'bold' }}>客户营销统计表(部门)</span>
 					</div>
 					<div className="patent-table" id='daochu'>
 						<div className="scroll">
-		                    <Spin spinning={this.state.loading}>
-		                        <Table columns={
-									this.state.changeList
-										? this.state.changeList
-										: this.state.columns
+							<Spin spinning={this.state.loading}>
+								<Table
+									columns={
+										this.state.changeList
+											? this.state.changeList
+											: this.state.columns
 									}
-		                            dataSource={this.state.dataSource}
-		                            //scroll={{ x: 600,y:500}}
-		                            bordered
-		                            onChange={this.tabChange}
-		                            pagination={false}
-		                            />
-		                    </Spin>
-		                </div>
-		            </div>
-	            </div>
+									dataSource={this.state.dataSource}
+									//scroll={{ x: 600,y:500}}
+									bordered
+									onChange={this.tabChange}
+									pagination={false}
+								/>
+							</Spin>
+						</div>
+					</div>
+				</div>
 			</div>
 		)
 	}
@@ -611,19 +612,19 @@ const DiurnalStatistics = React.createClass({
 
 
 
-const Tablees=Form.create()(React.createClass({
+const Tablees = Form.create()(React.createClass({
 	//详情tab切换数据处理
 	callbacks(e) {
 		this.setState({
 			callnubs: e,
 		})
-		if(e == '1') {
-			
+		if (e == '1') {
+
 		}
-		if(e == '2') {
-			
+		if (e == '2') {
+
 		}
-		
+
 	},
 	getInitialState() {
 		return {
@@ -631,16 +632,16 @@ const Tablees=Form.create()(React.createClass({
 		}
 	},
 	render() {
-		return(
-			<div className="clearfix" style={{marginTop:'0px',marginLeft:'10px'}}>
-			    <Tabs onChange={this.callbacks} type="card" activeKey={this.state.callnubs} style={{paddingLeft:'15px',paddingRight:'15px',marginRight:'20px'}}>
-			         <TabPane tab="客户营销统计表(部门)" key="1" >
-			         	<DiurnalStatistics />
-			         </TabPane>
-					 <TabPane tab="客户营销统计表(员工)" key="2">
-					 	<DiurnalStatisticsOne />
-					 </TabPane>
-			    </Tabs>
+		return (
+			<div className="clearfix" style={{ marginTop: '0px', marginLeft: '10px' }}>
+				<Tabs onChange={this.callbacks} type="card" activeKey={this.state.callnubs} style={{ paddingLeft: '15px', paddingRight: '15px', marginRight: '20px' }}>
+					<TabPane tab="客户营销统计表(部门)" key="1" >
+						<DiurnalStatistics />
+					</TabPane>
+					<TabPane tab="客户营销统计表(员工)" key="2">
+						<DiurnalStatisticsOne />
+					</TabPane>
+				</Tabs>
 			</div>
 		);
 	}

+ 1 - 1
js/component/manageCenter/customer/customerService/myClient.less

@@ -80,7 +80,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .saveBtn{margin-left: 190px;margin-right: 30px;margin-top: 20px;margin-bottom: 50px;}
 .ContactsList{float: right;margin-right: 100px;margin-bottom: 30px;margin-top: 10px;}
 .pictures .ant-row{display: inline-block;width: 550px;}

+ 1 - 1
js/component/manageCenter/customer/individualCustomer/myClient.less

@@ -81,7 +81,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .ContactsList{float: right;}
 #demand-form {
     .half-item {

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

@@ -277,7 +277,7 @@ class FollowUpSummary extends Component{
                     for(let i=0;i<data.data.length;i++){
                         let theData = data.data[i];
                         theArr.push(
-                            <Select.Option value={theData.name} key={theData.name}>{theData.name}</Select.Option>
+                            <Select.Option value={theData.id} key={theData.name}>{theData.name}</Select.Option>
                         );
                     }
                     this.setState({

+ 1 - 1
js/component/manageCenter/customer/operationalData/reexamine/details.jsx

@@ -154,7 +154,7 @@ class Details extends Component {
                     render: (text, record) => {
                         if (record.dunTypeName) {
                             if (record.appropriationRatio) {
-                                let percent = Number(record.appropriationRatio * 100);
+                                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                                 percent += "%";
                                 return <span>{percent}(拨款比例)</span>;
                             } else {

+ 105 - 1
js/component/manageCenter/customer/publicStatistics/detailedList.jsx

@@ -36,6 +36,7 @@ class DetailedList extends Component {
       annexUrlArr: [],
       photoUrlArr: [],
       imgListVisible: false,
+      logVisible: false,
       columns: [
         {
           title: "编号",
@@ -278,10 +279,62 @@ class DetailedList extends Component {
               >
                 查看附件
               </Button>
+              <Button
+                type="primary"
+                style={{ marginTop: 10 }}
+                onClick={() => {
+                  this.getLog(record.id)
+                }}
+              >
+                公出日志
+              </Button>
             </div>
           ),
         },
       ],
+      logColumns: [
+        {
+          title: "状态",
+          dataIndex: "status",
+          key: "status",
+          render: (text) => (
+            <Tag color={getClockState(text, true).color}>
+              {getClockState(text, true).title}
+            </Tag>
+          ),
+        },
+        {
+          title: "操作人",
+          dataIndex: "aname",
+          key: "aname",
+        },
+        {
+          title: "操作时间",
+          dataIndex: "createTimes",
+          key: "createTimes",
+        },
+        {
+          title: "备注",
+          dataIndex: "remarks",
+          key: "remarks",
+          render: (text) => {
+            return (
+              <Tooltip placement="topLeft" title={text}>
+                <div
+                  style={{
+                    maxWidth: "250px",
+                    overflow: "hidden",
+                    textOverflow: "ellipsis",
+                    whiteSpace: "nowrap",
+                  }}
+                >
+                  {text}
+                </div>
+              </Tooltip>
+            );
+          },
+        }
+      ],
       pagination: {
         defaultCurrent: 1,
         defaultPageSize: 10,
@@ -295,7 +348,7 @@ class DetailedList extends Component {
         },
       },
       dataSource: [],
-
+      logData: [],
       releaseDate: [],
       status: props.status,
       clockIn: props.clockIn,
@@ -686,6 +739,36 @@ class DetailedList extends Component {
     window.location.href =
       globalConfig.context + "/open/download?fileName=" + fileName;
   }
+  // 公出日志
+  getLog(e) {
+    this.setState({
+      loading: true,
+      logVisible: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      url: globalConfig.context + "/api/admin/release/listPublicReleaseLog",
+      data: {
+        id: e,
+      },
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.setState({
+            logData: data.data || [],
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  }
 
   render() {
     const dataSources = this.state.customerArr || [];
@@ -958,6 +1041,27 @@ class DetailedList extends Component {
             </div>
           </Modal>
         ) : null}
+        {
+          this.state.logVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.logVisible}
+            width="700px"
+            title="公出日志"
+            footer=""
+            onCancel={() => {
+              this.setState({
+                logVisible: false,
+              });
+            }}
+          >
+            <Table
+              pagination={false}
+              columns={this.state.logColumns}
+              dataSource={this.state.logData}
+            />
+          </Modal>
+        }
       </div>
     );
   }

+ 108 - 13
js/component/manageCenter/customer/publicSummary/index.jsx

@@ -34,6 +34,7 @@ class PublicSummary extends Component {
       annexUrlArr: [],
       photoUrlArr: [],
       imgListVisible: false,
+      logVisible: false,
       columns: [
         {
           title: "编号",
@@ -236,18 +237,9 @@ class PublicSummary extends Component {
                   let arr2 = record.photoUrl || [];
                   this.setState(
                     {
-                      annexUrlArr: splitUrl(
-                        arr1,
-                        ",",
-                        globalConfig.avatarHost + "/upload"
-                      ),
-                      photoUrlArr: splitUrl(
-                        arr2,
-                        ",",
-                        globalConfig.avatarHost + "/upload"
-                      ),
-                    },
-                    () => {
+                      annexUrlArr: splitUrl(arr1, ",", globalConfig.avatarHost + "/upload"),
+                      photoUrlArr: splitUrl(arr2, ",", globalConfig.avatarHost + "/upload"),
+                    }, () => {
                       this.setState({
                         imgListVisible: true,
                       });
@@ -257,10 +249,62 @@ class PublicSummary extends Component {
               >
                 查看附件
               </Button>
+              <Button
+                type="primary"
+                style={{ marginTop: 10 }}
+                onClick={() => {
+                  this.getLog(record.id)
+                }}
+              >
+                公出日志
+              </Button>
             </div>
           ),
         },
       ],
+      logColumns: [
+        {
+          title: "状态",
+          dataIndex: "status",
+          key: "status",
+          render: (text) => (
+            <Tag color={getClockState(text, true).color}>
+              {getClockState(text, true).title}
+            </Tag>
+          ),
+        },
+        {
+          title: "操作人",
+          dataIndex: "aname",
+          key: "aname",
+        },
+        {
+          title: "操作时间",
+          dataIndex: "createTimes",
+          key: "createTimes",
+        },
+        {
+          title: "备注",
+          dataIndex: "remarks",
+          key: "remarks",
+          render: (text) => {
+            return (
+              <Tooltip placement="topLeft" title={text}>
+                <div
+                  style={{
+                    maxWidth: "250px",
+                    overflow: "hidden",
+                    textOverflow: "ellipsis",
+                    whiteSpace: "nowrap",
+                  }}
+                >
+                  {text}
+                </div>
+              </Tooltip>
+            );
+          },
+        }
+      ],
       pagination: {
         defaultCurrent: 1,
         defaultPageSize: 10,
@@ -274,7 +318,7 @@ class PublicSummary extends Component {
         },
       },
       dataSource: [],
-
+      logData: [],
       releaseDate: [],
       status: undefined,
       clockIn: undefined,
@@ -655,6 +699,36 @@ class PublicSummary extends Component {
     window.location.href =
       globalConfig.context + "/open/download?fileName=" + fileName;
   }
+  // 公出日志
+  getLog(e) {
+    this.setState({
+      loading: true,
+      logVisible: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      url: globalConfig.context + "/api/admin/release/listPublicReleaseLog",
+      data: {
+        id: e,
+      },
+      success: function (data) {
+        if (data.error.length === 0) {
+          this.setState({
+            logData: data.data || [],
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  }
 
   render() {
     const dataSources = this.state.customerArr || [];
@@ -912,6 +986,27 @@ class PublicSummary extends Component {
             </div>
           </Modal>
         ) : null}
+        {
+          this.state.logVisible &&
+          <Modal
+            maskClosable={false}
+            visible={this.state.logVisible}
+            width="700px"
+            title="公出日志"
+            footer=""
+            onCancel={() => {
+              this.setState({
+                logVisible: false,
+              });
+            }}
+          >
+            <Table
+              pagination={false}
+              columns={this.state.logColumns}
+              dataSource={this.state.logData}
+            />
+          </Modal>
+        }
       </div>
     );
   }

+ 1 - 1
js/component/manageCenter/customer/release/myClient.less

@@ -81,7 +81,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .ContactsList{float: right;}
 #demand-form {
     .half-item {

+ 1 - 1
js/component/manageCenter/customer/reviewed/myClient.less

@@ -81,7 +81,7 @@
 .ant-modal-footer{text-align: left;}
 .ant-modal-footer button{width: 100px;margin-top: 15px;margin-bottom: 15px;}
 .ant-modal-footer button:first-child{margin-left: 80px;margin-right: 30px;}
-.ant-modal-title{font-size: 20px;}
+.ant-modal-title{font-size: 16px;}
 .ContactsList{float: right;}
 #demand-form {
     .half-item {

+ 415 - 0
js/component/manageCenter/customer/signcustomer/detaillist.jsx

@@ -0,0 +1,415 @@
+import React, { Component } from "react";
+import {
+  AutoComplete,
+  Button,
+  DatePicker,
+  Input,
+  message,
+  Modal,
+  Select,
+  Spin,
+  Table,
+  Tabs,
+  Tag,
+  Tooltip,
+} from "antd";
+import {
+  ShowModal,
+  getProcessStatus,
+  getLiquidationStatus,
+  getNewOrderStatus
+} from "@/tools";
+import { salesList, } from "@/dataDic"
+import { ChooseList } from "../../order/orderNew/chooseList";
+import OrderDesc from "../../financialManage/orderDetail/orderDesc";
+import $ from "jquery/src/ajax";
+import "./index.less";
+import moment from "moment";
+
+const { TabPane } = Tabs;
+const { RangePicker } = DatePicker;
+
+class DetailList extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      pageNo: 1,
+      details: false,
+      loading: false,
+      changeList: undefined,
+      columns: [
+        {
+          title: "销售类型",
+          dataIndex: "salesType",
+          key: "salesType",
+          render: (text, record) => {
+            return (
+              <Tooltip
+                title={salesList[text] + ((text == 3 || text == 4 || text == 5) ? (!record.other ? "" : "," + record.other) : "")}
+              >
+                <span>
+                  {salesList[text]}
+                </span>
+              </Tooltip>
+            );
+          },
+        },
+        {
+          title: "合同编号",
+          dataIndex: "contractNo",
+          key: "contractNo",
+        },
+        {
+          title: "订单编号",
+          dataIndex: "orderNo",
+          key: "orderNo",
+        },
+        {
+          title: "客户名称",
+          dataIndex: "userName",
+          key: "userName",
+        },
+        {
+          title: "订单部门",
+          dataIndex: "depName",
+          key: "depName",
+        },
+        {
+          title: "营销员",
+          dataIndex: "salesmanName",
+          key: "salesmanName",
+        },
+        {
+          title: "下单时间",
+          dataIndex: "createDate",
+          key: "createDate",
+        },
+        {
+          title: "合同签订时间",
+          dataIndex: "signDate",
+          key: "signDate",
+        },
+        {
+          title: "流程状态",
+          dataIndex: "processStatus",
+          key: "processStatus",
+          render: (text, record) =>
+            <span >
+              {getProcessStatus(text)}
+            </span>
+        },
+        {
+          title: "签单金额(万元)",
+          dataIndex: "totalAmount",
+          key: "totalAmount",
+          render: (text, record) =>
+            <span >
+              {text}
+            </span>
+        },
+        {
+          title: "开单金额(万元)",
+          dataIndex: "invoiceAmount",
+          key: "invoiceAmount",
+          render: (text, record) =>
+            <span >
+              {text}
+            </span>
+        },
+        {
+          title: "已收款(万元)",
+          dataIndex: "settlementAmount",
+          key: "settlementAmount",
+          render: (text, record) =>
+            <span >
+              {text}
+            </span>
+        },
+        {
+          title: "结算状态",
+          dataIndex: "liquidationStatus",
+          key: "liquidationStatus",
+          render: (text, record) =>
+            <span >
+              {getLiquidationStatus(text)}
+            </span>
+        },
+        {
+          title: "是否特批",
+          dataIndex: "approval",
+          key: "approval",
+          render: (text, record) =>
+            <span >
+              {["非特批", "特批", "特批通过"][text]}
+            </span>
+        },
+        {
+          title: "订单状态",
+          dataIndex: "orderStatus",
+          key: "orderStatus",
+          render: (text, record) =>
+            <span >
+              {getNewOrderStatus(text)}
+            </span>
+        },
+      ],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      dataSource: [],
+      searchInfor: {}
+    };
+    this.loadData = this.loadData.bind(this);
+    this.resetAll = this.resetAll.bind(this);
+    this.changeList = this.changeList.bind(this);
+  }
+
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  }
+
+  loadData(pageNo) {
+    const { searchInfor, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let prs = this.props.data;
+    prs.pageNo = pageNo || 1;
+    prs.pageSize = pagination.pageSize;
+    delete prs.nickname
+    let datas = Object.assign(searchInfor, prs);
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/statistis/signStatistics/orderList",
+      data: datas,
+      success: function (data) {
+        ShowModal(this);
+        this.setState({
+          loading: false,
+        });
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  }
+
+  resetAll() {
+    this.setState(
+      {
+        searchInfor: JSON.parse(JSON.stringify({})),
+        selectedRowKeys: [],
+      },
+      () => {
+        this.loadData();
+      }
+    );
+  }
+  // 整行点击
+  tableRowClick(record) {
+    this.state.orderData = record;
+    this.setState({
+      details: true,
+    });
+  }
+  // 详情弹窗
+  closeDesc() {
+    this.setState({
+      details: false
+    })
+    this.loadData(this.state.pageNo);
+  }
+
+  componentWillMount() {
+    this.loadData();
+  }
+
+  render() {
+    const { searchInfor, details } = this.state
+    return (
+      <div>
+        <div className="user-content">
+          <Tabs defaultActiveKey="1" className="test">
+            <TabPane tab="搜索" key="1">
+              <div
+                className="user-search"
+                style={{
+                  marginTop: "10px",
+                  marginLeft: "10px",
+                  marginRight: "10px",
+                }}
+              >
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="签单金额"
+                    value={searchInfor.amountType}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          amountType: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value="0">全部</Option>
+                    <Option value="1">小于10万</Option>
+                    <Option value="2">10-20万</Option>
+                    <Option value="3">20-30万</Option>
+                    <Option value="4">30万以上</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="最新签单类型"
+                    value={searchInfor.orderType}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          orderType: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value="0">所有</Option>
+                    <Option value="1">新签</Option>
+                    <Option value="2">复购</Option>
+                    <Option value="3">渠道</Option>
+                  </Select>
+                </span>
+
+
+                <span style={{ marginRight: "10px" }}>
+                  <span style={{ marginRight: "5px", marginBottom: "10px" }}>
+                    签单时间 :
+                  </span>
+                  <RangePicker
+                    style={{ marginRight: "10px", marginBottom: "10px" }}
+                    value={[
+                      searchInfor.signTimeStart
+                        ? moment(searchInfor.signTimeStart)
+                        : null,
+                      searchInfor.signTimeEnd
+                        ? moment(searchInfor.signTimeEnd)
+                        : null,
+                    ]}
+                    onChange={(data, dataString) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          signTimeStart: dataString[0],
+                          signTimeEnd: dataString[1],
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+
+                <Button
+                  type="primary"
+                  onClick={() => {
+                    this.loadData();
+                  }}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  搜索
+                </Button>
+                <Button
+                  onClick={this.resetAll}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  重置
+                </Button>
+              </div>
+            </TabPane>
+            <TabPane tab="更改表格显示数据" key="2">
+              <div style={{ marginLeft: 10 }}>
+                <Spin spinning={this.state.loading}>
+                  <ChooseList
+                    columns={this.state.columns}
+                    changeFn={this.changeList}
+                    changeList={this.state.changeList}
+                    top={55}
+                    margin={11}
+                  />
+                </Spin>
+              </div>
+            </TabPane>
+          </Tabs>
+          <div className="patent-table">
+            <Spin spinning={this.state.loading}>
+              <Table
+                bordered
+                size="middle"
+                columns={
+                  this.state.changeList
+                    ? this.state.changeList
+                    : this.state.columns
+                }
+                dataSource={this.state.dataSource}
+                pagination={this.state.pagination}
+                onRowClick={this.tableRowClick.bind(this)}
+              />
+            </Spin>
+          </div>
+        </div>
+        {/* 订单详情 */}
+        <OrderDesc
+          data={this.state.orderData}
+          showDesc={details}
+          closeDesc={this.closeDesc.bind(this)}
+        />
+      </div>
+    );
+  }
+}
+
+export default DetailList;

+ 914 - 0
js/component/manageCenter/customer/signcustomer/index.jsx

@@ -0,0 +1,914 @@
+import React, { Component } from "react";
+import {
+  AutoComplete,
+  Button,
+  DatePicker,
+  Input,
+  message,
+  Modal,
+  Select,
+  Spin,
+  Table,
+  Tabs,
+  Tag,
+  Tooltip,
+} from "antd";
+import { ShowModal, getContactType } from "@/tools";
+import { salesList, } from "@/dataDic"
+import { ChooseList } from "../../order/orderNew/chooseList";
+import $ from "jquery/src/ajax";
+import "./index.less";
+import moment from "moment";
+import ChannelLog from "../../channelList/channelunit/channellog"; //转交日志
+import ChangeLog from "../../channelList/channelunit/changelog"; //更名日志
+import DetailList from "./detaillist";//客户订单列表
+import Visit from "../../channelList/channelunit/detail/visit"
+
+const { TabPane } = Tabs;
+const { RangePicker } = DatePicker;
+
+class SignCustomer extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      pageNo: 1,
+      loading: false,
+      changeList: undefined,
+      selectedRowKeys: [],
+      columns: [
+        {
+          title: "客户名称",
+          dataIndex: "nickname",
+          key: "nickname",
+          fixed: "left",
+          width: 200,
+          render: (text, record) => {
+            return (
+              <div>
+                {text}
+                {record.member == 1 && <Tag color="#1E90FF">会员</Tag>}
+                {record.chargeback == 1 && <Tag color="#F21212">退</Tag>}
+                {record.bigCustomer == 1 && <Tag color="#F21212">大客户</Tag>}
+              </div>
+            );
+          },
+        },
+        {
+          title: "签单次数",
+          dataIndex: "signNumber",
+          key: "signNumber",
+          onCellClick: (r) => {
+            let rows = {};
+            rows["nickname"] = r.nickname
+            rows["uid"] = r.id
+            this.setState({
+              rowData: rows,
+              showDetail: true,
+            });
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "总金额(万元)",
+          dataIndex: "signAmount",
+          key: "signAmount",
+        },
+        {
+          title: "首次签单时间",
+          dataIndex: "firstSigningTime",
+          key: "firstSigningTime",
+        },
+        {
+          title: "最新签单时间",
+          dataIndex: "lastSigningTime",
+          key: "lastSigningTime",
+        },
+        {
+          title: "签单类型",
+          dataIndex: "lastSalesType",
+          key: "lastSalesType",
+          render: (text) => (
+            <div>{salesList[text]}</div>
+          )
+        },
+        {
+          title: "归属人",
+          dataIndex: "name",
+          key: "name",
+        },
+        {
+          title: "归属部门",
+          dataIndex: "depName",
+          key: "depName",
+        },
+        {
+          title: "跟进人",
+          dataIndex: "followAname",
+          key: "followAname",
+        },
+        {
+          title: "跟进方式",
+          dataIndex: "lastFollowType",
+          key: "lastFollowType",
+          render: (text) => (
+            <div>{getContactType(text)}</div>
+          )
+        },
+        {
+          title: "跟进说明",
+          dataIndex: "followExplain",
+          key: "followExplain",
+          width: 200,
+        },
+        {
+          title: "次数",
+          dataIndex: "followNumber",
+          key: "followNumber",
+          onCellClick: (r) => {
+            let rows = {};
+            rows["nickname"] = r.nickname
+            rows["id"] = r.id
+            this.setState({
+              rowData: rows,
+              followup: true,
+            });
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "最新跟进时间",
+          dataIndex: "lastFollowTime",
+          key: "lastFollowTime",
+        },
+        {
+          title: "已签项目",
+          dataIndex: "taskNames",
+          key: "taskNames",
+          width: "15%",
+        },
+      ],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      dataSource: [],
+      searchInfor: {},
+      mvisible: "",
+      showDetail: false,
+      followup: false,
+    };
+    this.loadData = this.loadData.bind(this);
+    this.resetAll = this.resetAll.bind(this);
+    this.changeList = this.changeList.bind(this);
+    this.selectSuperId = this.selectSuperId.bind(this);
+    this.supervisor = this.supervisor.bind(this);
+    this.supervisor1 = this.supervisor1.bind(this);
+    this.httpChange = this.httpChange.bind(this);
+    this.httpChange1 = this.httpChange1.bind(this);
+    this.selectAuto = this.selectAuto.bind(this);
+    this.selectAuto1 = this.selectAuto1.bind(this);
+    this.blurChange = this.blurChange.bind(this);
+    this.blurChange1 = this.blurChange1.bind(this);
+    this.exportExec = this.exportExec.bind(this);
+  }
+  //获取上级组织
+  selectSuperId() {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/organization/selectSuperId",
+      data: {},
+      success: function (data) {
+        let theArr = [];
+        if (data.error && data.error.length === 0) {
+          for (let i = 0; i < data.data.length; i++) {
+            let theData = data.data[i];
+            theArr.push(
+              <Select.Option value={theData.id} key={theData.id}>
+                {theData.name}
+              </Select.Option>
+            );
+          }
+          this.setState({
+            contactsOption: theArr,
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          // loading: false,
+        });
+      }.bind(this)
+    );
+  }
+
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  }
+
+  loadData(pageNo) {
+    const { searchInfor, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchInfor, {
+      pageNo: pageNo || 1,
+      pageSize: pagination.pageSize,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/statistis/signSummary",
+      data: datas,
+      success: function (data) {
+        ShowModal(this);
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  }
+
+  resetAll() {
+    this.setState(
+      {
+        searchInfor: JSON.parse(JSON.stringify({})),
+        selectedRowKeys: [],
+      },
+      () => {
+        this.loadData();
+      }
+    );
+  }
+
+  supervisor(e) {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+        status: "2",
+      },
+      success: function (data) {
+        if (data.error && data.error.length === 0) {
+          this.setState({
+            customerArr: data.data,
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(function () { }.bind(this));
+  }
+
+  supervisor1(e) {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+        status: "2",
+      },
+      success: function (data) {
+        if (data.error && data.error.length === 0) {
+          this.setState({
+            customerArr1: data.data,
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(function () { }.bind(this));
+  }
+
+  httpChange(e) {
+    if (e.length >= 1) {
+      this.supervisor(e);
+    }
+    this.setState({
+      followAname: e,
+    });
+  }
+
+  httpChange1(e) {
+    if (e.length >= 1) {
+      this.supervisor1(e);
+    }
+    this.setState({
+      adminName: e,
+    });
+  }
+
+  selectAuto(value, options) {
+    this.setState({
+      followAname: value,
+    });
+  }
+
+  selectAuto1(value, options) {
+    this.setState({
+      adminName: value,
+    });
+  }
+
+  blurChange(e) {
+    const { searchInfor } = this.state
+    let theType = undefined;
+    let contactLists = this.state.customerArr || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      searchInfor: Object.assign(searchInfor, {
+        followAid: theType,
+      }),
+    });
+  }
+
+  blurChange1(e) {
+    const { searchInfor } = this.state
+    let theType = undefined;
+    let contactLists = this.state.customerArr1 || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      searchInfor: Object.assign(searchInfor, {
+        aid: theType,
+      }),
+    });
+  }
+  // 导出Excel
+  exportExec() {
+    this.setState({
+      exportPendingLoading: true,
+    });
+    message.config({
+      duration: 20,
+    });
+    let loading = message.loading("下载中...");
+    let data = this.state.searchInfor;
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url:
+        globalConfig.context + "/api/admin/statistis/signSummary/export",
+      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;
+  }
+  // 选择行
+  onSelectChange(selectedRowKeys, selectedRows) {
+    this.setState({
+      selectedRowKeys,
+      selectedRows,
+    });
+  }
+  // 关闭弹窗
+  closeDesc() {
+    this.setState({
+      mvisible: "",
+      showDetail: false,
+      followup: false,
+      rowData: {}
+    });
+    this.loadData(this.state.pageNo);
+  }
+
+  componentWillMount() {
+    this.loadData();
+    this.selectSuperId();
+  }
+
+  render() {
+    const { searchInfor, selectedRowKeys, selectedRows, showDetail, followup, rowData } = this.state
+    const dataSources = this.state.customerArr || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    const dataSources1 = this.state.customerArr1 || [];
+    const options1 = dataSources1.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    const rowSelection = {
+      hideDefaultSelections: true,
+      selectedRowKeys,
+      onChange: this.onSelectChange.bind(this),
+    };
+    return (
+      <div>
+        <div className="user-content">
+          <div className="content-title">
+            <span style={{ fontWeight: 900, fontSize: 16 }}>签单客户汇总</span>
+          </div>
+          <Tabs defaultActiveKey="1" className="test">
+            <TabPane tab="搜索" key="1">
+              <div
+                className="user-search"
+                style={{
+                  marginTop: "10px",
+                  marginLeft: "10px",
+                  marginRight: "10px",
+                }}
+              >
+                <span style={{ marginRight: "10px" }}>
+                  <Input
+                    style={{ width: 160 }}
+                    placeholder="输入客户名称"
+                    value={searchInfor.userName}
+                    onChange={e => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          userName: e.target.value,
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <AutoComplete
+                    className="certain-category-search"
+                    dropdownClassName="certain-category-search-dropdown"
+                    dropdownMatchSelectWidth={false}
+                    style={{ width: 160 }}
+                    dataSource={options}
+                    placeholder="跟进人姓名"
+                    value={this.state.followAname}
+                    onChange={this.httpChange}
+                    filterOption={true}
+                    onBlur={this.blurChange}
+                    onSelect={this.selectAuto}
+                  >
+                    <Input />
+                  </AutoComplete>
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <AutoComplete
+                    className="certain-category-search"
+                    dropdownClassName="certain-category-search-dropdown"
+                    dropdownMatchSelectWidth={false}
+                    style={{ width: 160 }}
+                    dataSource={options1}
+                    placeholder="所属人姓名"
+                    value={this.state.adminName}
+                    onChange={this.httpChange1}
+                    filterOption={true}
+                    onBlur={this.blurChange1}
+                    onSelect={this.selectAuto1}
+                  >
+                    <Input />
+                  </AutoComplete>
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="会员状态"
+                    value={searchInfor.member}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          member: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value={undefined}>全部</Option>
+                    <Option value="0">非会员</Option>
+                    <Option value="1">会员</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="有无退单"
+                    value={searchInfor.chargeback}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          chargeback: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value={undefined}>全部</Option>
+                    <Option value="0">无退单</Option>
+                    <Option value="1">有退单</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="选择跟进方式"
+                    value={searchInfor.lastFollowType}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          lastFollowType: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value={undefined}>全部</Option>
+                    <Option value="0">外出</Option>
+                    <Option value="1">电话</Option>
+                    <Option value="2">QQ</Option>
+                    <Option value="3">微信</Option>
+                    <Option value="4">邮件</Option>
+                    <Option value="5">公出打卡</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="是否大客户"
+                    value={searchInfor.bigCustomer}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          bigCustomer: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value={undefined}>全部</Option>
+                    <Option value="0">非大客户</Option>
+                    <Option value="1">大客户</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="签单次数"
+                    value={searchInfor.signNumber}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          signNumber: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value={undefined}>全部</Option>
+                    <Option value="1">1次</Option>
+                    <Option value="2">2次</Option>
+                    <Option value="3">3次</Option>
+                    <Option value="4">3次以上</Option>
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="最新签单类型"
+                    value={searchInfor.lastSalesType}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          lastSalesType: e,
+                        }),
+                      });
+                    }}
+                  >
+                    {
+                      salesList.map((item, index) =>
+                        <Option value={index}>{item}</Option>
+                      )
+                    }
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    placeholder="选择归属部门"
+                    style={{ width: 200 }}
+                    value={searchInfor.depId}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          depId: e,
+                        }),
+                      });
+                    }}
+                    notFoundContent="未获取到上级组织列表"
+                  >
+                    {this.state.contactsOption}
+                  </Select>
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <span style={{ marginRight: "5px", marginBottom: "10px" }}>
+                    跟进时间 :
+                  </span>
+                  <RangePicker
+                    style={{ marginRight: "10px", marginBottom: "10px" }}
+                    value={[
+                      searchInfor.lastFollowTimeStart
+                        ? moment(searchInfor.lastFollowTimeStart)
+                        : null,
+                      searchInfor.lastFollowTimeEnd ? moment(searchInfor.lastFollowTimeEnd) : null,
+                    ]}
+                    onChange={(data, dataString) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          lastFollowTimeStart: dataString[0],
+                          lastFollowTimeEnd: dataString[1],
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <span style={{ marginRight: "5px", marginBottom: "10px" }}>
+                    首次签单 :
+                  </span>
+                  <RangePicker
+                    style={{ marginRight: "10px", marginBottom: "10px" }}
+                    value={[
+                      searchInfor.firstSigningTimeStart
+                        ? moment(searchInfor.firstSigningTimeStart)
+                        : null,
+                      searchInfor.firstSigningTimeEnd ? moment(searchInfor.firstSigningTimeEnd) : null,
+                    ]}
+                    onChange={(data, dataString) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          firstSigningTimeStart: dataString[0],
+                          firstSigningTimeEnd: dataString[1],
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+
+                <span style={{ marginRight: "10px" }}>
+                  <span style={{ marginRight: "5px", marginBottom: "10px" }}>
+                    最新签单 :
+                  </span>
+                  <RangePicker
+                    style={{ marginRight: "10px", marginBottom: "10px" }}
+                    value={[
+                      searchInfor.lastSigningTimeStart
+                        ? moment(searchInfor.lastSigningTimeStart)
+                        : null,
+                      searchInfor.lastSigningTimeEnd ? moment(searchInfor.lastSigningTimeEnd) : null,
+                    ]}
+                    onChange={(data, dataString) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          lastSigningTimeStart: dataString[0],
+                          lastSigningTimeEnd: dataString[1],
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+
+                <Button
+                  type="primary"
+                  onClick={() => {
+                    this.loadData();
+                  }}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  搜索
+                </Button>
+                <Button
+                  onClick={this.resetAll}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  重置
+                </Button>
+              </div>
+            </TabPane>
+            <TabPane tab="更改表格显示数据" key="2">
+              <div style={{ marginLeft: 10 }}>
+                <Spin spinning={this.state.loading}>
+                  <ChooseList
+                    columns={this.state.columns}
+                    changeFn={this.changeList}
+                    changeList={this.state.changeList}
+                    top={55}
+                    margin={11}
+                  />
+                </Spin>
+              </div>
+            </TabPane>
+            <TabPane tab="操作" key="3">
+              <div style={{ float: "left" }}>
+                <Button
+                  type="primary"
+                  loading={this.state.exportPendingLoading}
+                  onClick={this.exportExec}
+                  style={{ margin: 10 }}
+                >
+                  导出Excel
+                </Button>
+              </div>
+              <div style={{ float: "left" }}>
+                <Button
+                  type="primary"
+                  onClick={() => {
+                    this.setState({
+                      mvisible: "changelog",
+                    });
+                  }}
+                  style={{ margin: 10 }}
+                  disabled={this.state.selectedRowKeys.length !== 1}
+                >
+                  客户日志
+                </Button>
+              </div>
+              <div style={{ float: "left" }}>
+                <Button
+                  type="primary"
+                  onClick={() => {
+                    this.setState({
+                      mvisible: "channellog",
+                    });
+                  }}
+                  style={{ margin: 10 }}
+                  disabled={this.state.selectedRowKeys.length !== 1}
+                >
+                  转交日志
+                </Button>
+              </div>
+            </TabPane>
+          </Tabs>
+          <div className="patent-table">
+            <Spin spinning={this.state.loading}>
+              <Table
+                bordered
+                size="middle"
+                scroll={{ x: "110%" }}
+                columns={
+                  this.state.changeList
+                    ? this.state.changeList
+                    : this.state.columns
+                }
+                dataSource={this.state.dataSource}
+                pagination={this.state.pagination}
+                rowSelection={rowSelection}
+              />
+            </Spin>
+          </div>
+        </div>
+        {this.state.mvisible == "channellog" && (
+          <ChannelLog
+            cancel={this.closeDesc.bind(this)}
+            visible={this.state.mvisible}
+            id={selectedRows[0].id}
+          />
+        )}
+        {this.state.mvisible == "changelog" && (
+          <ChangeLog
+            cancel={this.closeDesc.bind(this)}
+            visible={this.state.mvisible}
+            id={selectedRows[0].id}
+          />
+        )}
+        {
+          showDetail &&
+          <Modal
+            visible={showDetail}
+            title={<div>
+              <span style={{ marginRight: 20 }}>客户订单列表</span>
+              <span style={{ color: "red" }}>客户名称:{rowData.nickname}</span>
+            </div>}
+            width="90%"
+            footer={null}
+            onCancel={this.closeDesc.bind(this)}
+          >
+            <DetailList
+              // data={Object.assign(rowData, params)}
+              data={rowData}
+            />
+          </Modal>
+        }
+        {
+          followup &&
+          <Modal
+            visible={followup}
+            title={<div>
+              <span style={{ marginRight: 20 }}>客户跟进列表</span>
+              <span style={{ color: "red" }}>客户名称:{rowData.nickname}</span>
+            </div>}
+            width="90%"
+            footer={null}
+            onCancel={this.closeDesc.bind(this)}
+          >
+            <Visit
+              data={rowData}
+              addbt={false}
+            />
+          </Modal>
+        }
+      </div>
+    );
+  }
+}
+
+export default SignCustomer;

+ 22 - 0
js/component/manageCenter/customer/signcustomer/index.less

@@ -0,0 +1,22 @@
+.projectTable {
+  cursor: pointer;
+}
+
+.projectTable:hover {
+  background: #71a7e885 !important;
+}
+
+.ant-upload-list {
+  display: inline-block !important;
+}
+
+.light {
+  // background: #87CEEB;
+  background: #D3D3D3;
+  // background: #CD8162;
+}
+
+.dark {
+  background: white;
+  // background: #87CEEB;
+}

+ 626 - 0
js/component/manageCenter/customer/signcustomer/statistics.jsx

@@ -0,0 +1,626 @@
+import React, { Component } from "react";
+import {
+  AutoComplete,
+  Button,
+  DatePicker,
+  Input,
+  message,
+  Modal,
+  Select,
+  Spin,
+  Table,
+  Tabs,
+  Tag,
+  Tooltip,
+} from "antd";
+import { ShowModal, getPercentage } from "@/tools";
+import { salesList, } from "@/dataDic"
+import { ChooseList } from "../../order/orderNew/chooseList";
+import $ from "jquery/src/ajax";
+import "./index.less";
+import moment from "moment";
+import DetailList from "./detaillist";
+
+const { TabPane } = Tabs;
+const { RangePicker } = DatePicker;
+
+class SignStatistics extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      pageNo: 1,
+      loading: false,
+      changeList: undefined,
+      columns: [
+        {
+          title: "营销员",
+          dataIndex: "name",
+          key: "name",
+        },
+        {
+          title: "签单客户",
+          dataIndex: "userCount",
+          key: "userCount",
+          sorter: (a, b) => a.userCount - b.userCount,
+        },
+        {
+          title: "签单个数",
+          dataIndex: "orderCount",
+          key: "orderCount",
+          sorter: (a, b) => a.orderCount - b.orderCount,
+          onCellClick: (r) => {
+            let cellData = {};
+            cellData["aid"] = r.id
+            cellData["aname"] = r.name
+            this.setState({
+              showDetail: true,
+              rowData: cellData,
+            })
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "签单总金额(万元)",
+          dataIndex: "totalAmount",
+          key: "totalAmount",
+          sorter: (a, b) => a.totalAmount - b.totalAmount,
+        },
+        {
+          title: "新签数",
+          dataIndex: "newSignNumber",
+          key: "newSignNumber",
+          sorter: (a, b) => a.newSignNumber - b.newSignNumber,
+          onCellClick: (r) => {
+            let cellData = {};
+            cellData["aid"] = r.id
+            cellData["aname"] = r.name
+            cellData["orderType"] = "1"
+            this.setState({
+              showDetail: true,
+              rowData: cellData,
+            })
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "新签率",
+          dataIndex: "newRatio",
+          key: "newRatio",
+          render: (text) =>
+            <span >
+              {getPercentage(text)}
+            </span>
+        },
+        {
+          title: "复购数",
+          dataIndex: "repeatSignNumber",
+          key: "repeatSignNumber",
+          sorter: (a, b) => a.repeatSignNumber - b.repeatSignNumber,
+          onCellClick: (r) => {
+            let cellData = {};
+            cellData["aid"] = r.id
+            cellData["aname"] = r.name
+            cellData["orderType"] = "2"
+            this.setState({
+              showDetail: true,
+              rowData: cellData,
+            })
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "复购率",
+          dataIndex: "repeatRatio",
+          key: "repeatRatio",
+          render: (text) =>
+            <span >
+              {getPercentage(text)}
+            </span>
+        },
+        {
+          title: "渠道签单数",
+          dataIndex: "channelSignNumber",
+          key: "channelSignNumber",
+          sorter: (a, b) => a.channelSignNumber - b.channelSignNumber,
+          onCellClick: (r) => {
+            let cellData = {};
+            cellData["aid"] = r.id
+            cellData["aname"] = r.name
+            cellData["orderType"] = "3"
+            this.setState({
+              showDetail: true,
+              rowData: cellData,
+            })
+          },
+          render: (text) =>
+            <div
+              style={{
+                color: "#58A3FF",
+                textDecoration: "underline",
+                cursor: "pointer"
+              }}>
+              {text}
+            </div>
+        },
+        {
+          title: "渠道签单率",
+          dataIndex: "channelRatio",
+          key: "channelRatio",
+          render: (text) =>
+            <span >
+              {getPercentage(text)}
+            </span>
+        },
+      ],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 99999,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return "共" + total + "条数据";
+        },
+      },
+      dataSource: [],
+      searchInfor: {},
+      params: {},
+      showDetail: false,
+      companyList: [],
+    };
+    this.loadData = this.loadData.bind(this);
+    this.resetAll = this.resetAll.bind(this);
+    this.changeList = this.changeList.bind(this);
+    this.selectSuperId = this.selectSuperId.bind(this);
+    this.supervisor = this.supervisor.bind(this);
+    this.httpChange = this.httpChange.bind(this);
+    this.blurChange = this.blurChange.bind(this);
+    this.selectAuto = this.selectAuto.bind(this);
+    this.exportExec = this.exportExec.bind(this);
+  }
+  //获取上级组织
+  selectSuperId() {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/organization/selectSuperId",
+      data: {},
+      success: function (data) {
+        let theArr = [];
+        if (data.error && data.error.length === 0) {
+          for (let i = 0; i < data.data.length; i++) {
+            let theData = data.data[i];
+            theArr.push(
+              <Select.Option value={theData.id} key={theData.id}>
+                {theData.name}
+              </Select.Option>
+            );
+          }
+          this.setState({
+            contactsOption: theArr,
+            companyList: data.data,
+            searchInfor: Object.assign(this.state.searchInfor, {
+              depId: data.data[0].id,
+            }),
+          }, () => {
+            this.loadData();
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          // loading: false,
+        });
+      }.bind(this)
+    );
+  }
+
+  changeList(arr) {
+    const newArr = [];
+    this.state.columns.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  }
+  // 搜索
+  submit() {
+    this.setState({
+      params: this.state.searchInfor
+    })
+    this.loadData()
+  }
+
+  loadData(pageNo) {
+    const { searchInfor, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchInfor, {
+      pageNo: pageNo || 1,
+      pageSize: pagination.pageSize,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/statistis/signStatistics",
+      data: datas,
+      success: function (data) {
+        ShowModal(this);
+        if (data.error && data.error.length === 0) {
+          if (data.data.list) {
+            pagination.current = data.data.pageNo;
+            pagination.total = data.data.totalCount;
+            if (data.data && data.data.list && !data.data.list.length) {
+              pagination.current = 0;
+              pagination.total = 0;
+            }
+            this.setState({
+              dataSource: data.data.list,
+              pagination: this.state.pagination,
+              pageNo: data.data.pageNo,
+            });
+          } else {
+            this.setState({
+              dataSource: data.data,
+              pagination: false,
+            });
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+        this.setState({
+          loading: false,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  }
+
+  resetAll() {
+    const { companyList } = this.state
+    this.setState(
+      {
+        searchInfor: { depId: companyList[0].id },
+        params: JSON.parse(JSON.stringify({})),
+        aname: "",
+      },
+      () => {
+        this.loadData();
+      }
+    );
+  }
+
+  supervisor(e) {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+        status: "2",
+      },
+      success: function (data) {
+        if (data.error && data.error.length === 0) {
+          this.setState({
+            customerArr: data.data,
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(function () { }.bind(this));
+  }
+
+  httpChange(e) {
+    if (e.length >= 1) {
+      this.supervisor(e);
+    }
+    this.setState({
+      aname: e,
+    });
+  }
+
+  selectAuto(value, options) {
+    this.setState({
+      aname: value,
+    });
+  }
+
+  blurChange(e) {
+    const { searchInfor } = this.state
+    let theType = undefined;
+    let contactLists = this.state.customerArr || [];
+    if (e) {
+      contactLists.map(function (item) {
+        if (item.name == e.toString()) {
+          theType = item.id;
+        }
+      });
+    }
+    this.setState({
+      searchInfor: Object.assign(searchInfor, {
+        aid: theType,
+      }),
+    });
+  }
+  // 导出Excel
+  exportExec() {
+    this.setState({
+      exportPendingLoading: true,
+    });
+    message.config({
+      duration: 20,
+    });
+    let loading = message.loading("下载中...");
+    let data = this.state.searchInfor;
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url:
+        globalConfig.context + "/api/admin/statistis/signStatistics/export",
+      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;
+  }
+  // 关闭弹窗
+  closeDesc() {
+    this.setState({
+      showDetail: false,
+      params: {},
+    });
+    this.loadData(this.state.pageNo);
+  }
+
+  componentWillMount() {
+    this.selectSuperId();
+  }
+
+  render() {
+    const { searchInfor, showDetail, rowData, params, dataSource } = this.state
+    const dataSources = this.state.customerArr || [];
+    const options = dataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div>
+        <div className="user-content">
+          <div className="content-title">
+            <span style={{ fontWeight: 900, fontSize: 16 }}>签单客户数据统计(销售角度)</span>
+          </div>
+          <Tabs defaultActiveKey="1" className="test">
+            <TabPane tab="搜索" key="1">
+              <div
+                className="user-search"
+                style={{
+                  marginTop: "10px",
+                  marginLeft: "10px",
+                  marginRight: "10px",
+                }}
+              >
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    placeholder="选择部门"
+                    style={{ width: 200 }}
+                    value={searchInfor.depId}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          depId: e,
+                        }),
+                      });
+                    }}
+                    notFoundContent="未获取到上级组织列表"
+                  >
+                    {this.state.contactsOption}
+                  </Select>
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <AutoComplete
+                    className="certain-category-search"
+                    dropdownClassName="certain-category-search-dropdown"
+                    dropdownMatchSelectWidth={false}
+                    style={{ width: 160 }}
+                    dataSource={options}
+                    placeholder="输入姓名"
+                    value={this.state.aname}
+                    onChange={this.httpChange}
+                    filterOption={true}
+                    onBlur={this.blurChange}
+                    onSelect={this.selectAuto}
+                  >
+                    <Input />
+                  </AutoComplete>
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <Select
+                    style={{ width: 160 }}
+                    placeholder="签单金额"
+                    value={searchInfor.amountType}
+                    onChange={(e) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          amountType: e,
+                        }),
+                      });
+                    }}
+                  >
+                    <Option value="0">全部</Option>
+                    <Option value="1">小于10万</Option>
+                    <Option value="2">10-20万</Option>
+                    <Option value="3">20-30万</Option>
+                    <Option value="4">30万以上</Option>
+                  </Select>
+                </span>
+                <span style={{ marginRight: "10px" }}>
+                  <span style={{ marginRight: "5px", marginBottom: "10px" }}>
+                    签单时间 :
+                  </span>
+                  <RangePicker
+                    style={{ marginRight: "10px", marginBottom: "10px" }}
+                    value={[
+                      searchInfor.signTimeStart
+                        ? moment(searchInfor.signTimeStart)
+                        : null,
+                      searchInfor.signTimeEnd ? moment(searchInfor.signTimeEnd) : null,
+                    ]}
+                    onChange={(data, dataString) => {
+                      this.setState({
+                        searchInfor: Object.assign(searchInfor, {
+                          signTimeStart: dataString[0],
+                          signTimeEnd: dataString[1],
+                        }),
+                      });
+                    }}
+                  />
+                </span>
+                <Button
+                  type="primary"
+                  onClick={() => {
+                    this.submit()
+                  }}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  搜索
+                </Button>
+                <Button
+                  onClick={this.resetAll}
+                  style={{ marginRight: "10px", marginBottom: "10px" }}
+                >
+                  重置
+                </Button>
+              </div>
+            </TabPane>
+            <TabPane tab="更改表格显示数据" key="2">
+              <div style={{ marginLeft: 10 }}>
+                <Spin spinning={this.state.loading}>
+                  <ChooseList
+                    columns={this.state.columns}
+                    changeFn={this.changeList}
+                    changeList={this.state.changeList}
+                    top={55}
+                    margin={11}
+                  />
+                </Spin>
+              </div>
+            </TabPane>
+            <TabPane tab="导出" key="3">
+              <div style={{ float: "left" }}>
+                <Button
+                  type="primary"
+                  loading={this.state.exportPendingLoading}
+                  onClick={this.exportExec}
+                  style={{ margin: 10 }}
+                >
+                  导出Excel
+                </Button>
+              </div>
+            </TabPane>
+          </Tabs>
+          <div className="patent-table">
+            <div style={{ padding: "0px 10px 10px" }}>
+              总计:签单客户&nbsp;
+              <span style={{ color: "#58A3FF" }}>{dataSource.reduce((prev, next) => { return prev + next.userCount }, 0)}</span>&nbsp;个,签单个数&nbsp;
+              <span style={{ color: "#58A3FF" }}>{dataSource.reduce((prev, next) => { return prev + next.orderCount }, 0)}</span>&nbsp;个
+            </div>
+            <Spin spinning={this.state.loading}>
+              <Table
+                bordered
+                size="middle"
+                columns={
+                  this.state.changeList
+                    ? this.state.changeList
+                    : this.state.columns
+                }
+                dataSource={dataSource}
+                pagination={false}
+              />
+            </Spin>
+          </div>
+        </div>
+        {
+          showDetail &&
+          <Modal
+            visible={showDetail}
+            title={<div>
+              <span style={{ marginRight: 20 }}>客户订单列表</span>
+              <span style={{ color: "red" }}>归属人:{rowData["aname"]}</span>
+            </div>}
+            width="90%"
+            footer={null}
+            onCancel={this.closeDesc.bind(this)}
+          >
+            <DetailList
+              data={Object.assign(rowData, params)}
+            />
+          </Modal>
+        }
+      </div>
+    );
+  }
+}
+
+export default SignStatistics;

+ 1 - 1
js/component/manageCenter/customerService/administration/followUpDetails.jsx

@@ -157,7 +157,7 @@ class FollowUpDetails extends Component {
                     render: (text, record) => {
                         if (record.dunTypeName) {
                             if (record.appropriationRatio) {
-                                let percent = Number(record.appropriationRatio * 100);
+                                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                                 percent += "%";
                                 return <span>{percent}(拨款比例)</span>;
                             } else {

+ 1 - 1
js/component/manageCenter/customerService/administration/order.jsx

@@ -383,7 +383,7 @@ const Order = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

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

@@ -815,7 +815,7 @@ const approvedOutsourcing = React.createClass({
           render: (text, record) => {
             if (record.dunTypeName) {
               if (record.appropriationRatio) {
-                let percent = Number(record.appropriationRatio * 100);
+                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                 percent += "%";
                 return <span>{percent}(拨款比例)</span>;
               } else {

+ 5 - 5
js/component/manageCenter/financialManage/distribute/approvedOutsourcingAll.jsx

@@ -526,7 +526,7 @@ const approvedOutsourcing = React.createClass({
           render: (text, record) => {
             if (record.dunTypeName) {
               if (record.appropriationRatio) {
-                let percent = Number(record.appropriationRatio * 100);
+                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                 percent += "%";
                 return <span>{percent}(拨款比例)</span>;
               } else {
@@ -4011,7 +4011,7 @@ const approvedOutsourcing = React.createClass({
           className="admin-desc-content"
           width="1300px"
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               dvisible: false,
             });
@@ -4067,7 +4067,7 @@ const approvedOutsourcing = React.createClass({
           width="1300px"
           pagination={false}
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               timeVisible: false,
             });
@@ -4126,7 +4126,7 @@ const approvedOutsourcing = React.createClass({
           width="1300px"
           pagination={false}
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               cuiVisible: false,
               cuiTabKey: "1",
@@ -4218,7 +4218,7 @@ const approvedOutsourcing = React.createClass({
           width="1300px"
           pagination={false}
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               proVisible: false,
             });

+ 2 - 2
js/component/manageCenter/financialManage/distribute/shouKuanAll.jsx

@@ -3107,7 +3107,7 @@ const ShouKuang = React.createClass({
           width="1300px"
           pagination={false}
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               timeVisible: false,
             });
@@ -3178,7 +3178,7 @@ const ShouKuang = React.createClass({
           width="1300px"
           pagination={false}
           onCancel={() => {
-            this.loadData();
+            this.loadData(this.state.page);
             this.setState({
               cuiVisible: false,
               cuiTabKey: "1",

+ 1 - 1
js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx

@@ -291,7 +291,7 @@ const OrderDetail = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 31 - 0
js/component/manageCenter/index/content.jsx

@@ -249,6 +249,35 @@ const MessageModal = React.createClass({
             }.bind(this),
         });
     },
+    // 获取部门数据
+    selectSuperId() {
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            url: globalConfig.context + "/api/admin/organization/selectSuperId",
+            data: {},
+            success: function (data) {
+                let theArr = [];
+                if (data.error && data.error.length === 0) {
+                    // for (let i = 0; i < data.data.length; i++) {
+                    //     let theData = data.data[i];
+                    //     theArr.push({
+                    //         value: theData.id,
+                    //         label: theData.name,
+                    //     });
+                    // }
+                    // this.setState({
+                    //     contactsOption: theArr,
+                    // });
+                    localStorage.setItem("departmentData", JSON.stringify(data.data))
+                } else {
+                    // message.warning(data.error[0].message);
+                }
+            }.bind(this),
+        }).always(
+
+        );
+    },
     //主菜单请求
     mainMenu() {
         this.setState({
@@ -513,8 +542,10 @@ const MessageModal = React.createClass({
     },
     componentWillMount() {
         // this.loadReaded();
+        this.selectSuperId();
         this.loadUnread();
         this.mainMenu();
+
     },
     handleOk() {
         let arr = this.state.unreadData.filter(v => v.list.length > 0 && !v.isRead);

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

@@ -786,7 +786,7 @@ const NewService = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -1215,7 +1215,7 @@ const NewService = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -1685,7 +1685,7 @@ const NewService = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -2042,7 +2042,7 @@ const NewService = Form.create()(
         loading: true,
       });
       let api = this.props.userDetaile
-        ? "/api/admin/newOrder/updateServiceOrderNew"
+        ? this.state.isSubmit == 1 ? "/api/admin/newOrder/submitOrder" : "/api/admin/newOrder/updateServiceOrderNew"
         : "/api/admin/newOrder/createOrder";
       const { selectSales, other, channelid, channelname, userType } = this.state
       let datas = {
@@ -2151,7 +2151,7 @@ const NewService = Form.create()(
         return;
       }
       $.ajax({
-        url: globalConfig.context + "/api/admin/newOrder/updateServiceOrderNew",
+        url: globalConfig.context + this.state.isSubmit == 1 ? "/api/admin/newOrder/submitOrder" : "/api/admin/newOrder/updateServiceOrderNew",
         method: "post",
         data: {
           orderNo: this.state.orderNo, //订单编号
@@ -5115,7 +5115,7 @@ const NewService = Form.create()(
                             ? ssalesType : this.state.userType == "1"
                               ? qsalesType : []).map(function (item) {
                                 return (
-                                  <Select.Option key={item.value}>
+                                  <Select.Option key={item.value} disabled={item.value == "5"}>
                                     {item.key}
                                   </Select.Option>
                                 );

+ 45 - 45
js/component/manageCenter/order/orderNew/addorders.js

@@ -156,9 +156,9 @@ const Addorders = Form.create()(
             key: "commodityName",
             render: (text, record) => {
               return (
-                  <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
+                <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
               )
-          }
+            }
           },
           {
             title: "项目类别",
@@ -630,7 +630,7 @@ const Addorders = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -932,7 +932,7 @@ const Addorders = Form.create()(
       this.setState({
         loading: true,
       });
-      let api = "/api/admin/newOrder/updateServiceOrderNew";
+      let api = this.state.isSubmit == 1 ? "/api/admin/newOrder/submitOrder" : "/api/admin/newOrder/updateServiceOrderNew";
       $.ajax({
         method: "POST",
         dataType: "json",
@@ -980,7 +980,7 @@ const Addorders = Form.create()(
         loading: true,
       });
       $.ajax({
-        url: globalConfig.context + "/api/admin/newOrder/updateServiceOrderNew",
+        url: globalConfig.context + this.state.isSubmit == 1 ? "/api/admin/newOrder/submitOrder" : "/api/admin/newOrder/updateServiceOrderNew",
         method: "post",
         data: {
           orderNo: this.state.orderNo, //订单编号
@@ -1051,17 +1051,17 @@ const Addorders = Form.create()(
             contractNo: thisData.contractNo, //合同编号
             orgCodeUrl: thisData.contractPictureUrl
               ? splitUrl(
-                  thisData.contractPictureUrl,
-                  ",",
-                  globalConfig.avatarHost + "/upload"
-                )
+                thisData.contractPictureUrl,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
               : [], //图片地址
             replenishUrl: thisData.agreementUrl
               ? splitUrl(
-                  thisData.agreementUrl,
-                  ",",
-                  globalConfig.avatarHost + "/upload"
-                )
+                thisData.agreementUrl,
+                ",",
+                globalConfig.avatarHost + "/upload"
+              )
               : [],
             signDate: thisData.signDate, //签单时间
             userName: thisData.userName, //客户名称
@@ -1183,7 +1183,7 @@ const Addorders = Form.create()(
             totalCui = (Math.round(totalCui * 1000000) / 1000000).toFixed(6);
             this.setState({
               contactListNew: theArr,
-              totalCui:parseFloat(totalCui),
+              totalCui: parseFloat(totalCui),
             });
           }
         }.bind(this),
@@ -1511,8 +1511,8 @@ const Addorders = Form.create()(
     nextCancel() {
       this.setState({
         projectOperationVisible: false,
-        dataInfor:{},
-      },()=>{
+        dataInfor: {},
+      }, () => {
         this.loadData(this.props.data);
       });
     },
@@ -1602,12 +1602,12 @@ const Addorders = Form.create()(
         url: globalConfig.context + api,
         data: state
           ? {
-              name: e,
-              type: this.state.customType,
-            }
+            name: e,
+            type: this.state.customType,
+          }
           : {
-              businessName: e,
-            },
+            businessName: e,
+          },
         success: function (data) {
           let thedata = data.data;
           if (!thedata) {
@@ -1698,8 +1698,8 @@ const Addorders = Form.create()(
     //点击打卡项目详情
     tableRowClick(record) {
       this.setState({
-        projectOperationVisible:true,
-        dataInfor:record,
+        projectOperationVisible: true,
+        dataInfor: record,
       });
     },
     //签单时间选择
@@ -2048,15 +2048,15 @@ const Addorders = Form.create()(
       const cuiDataList = this.state.contactList || [];
       const options = this.state.states
         ? dataSources.map((group) => (
-            <Select.Option key={group.id} value={group.name}>
-              {group.name}
-            </Select.Option>
-          ))
+          <Select.Option key={group.id} value={group.name}>
+            {group.name}
+          </Select.Option>
+        ))
         : dataSources.map((group, index) => (
-            <Select.Option key={index} value={group.bname}>
-              {group.bname}
-            </Select.Option>
-          ));
+          <Select.Option key={index} value={group.bname}>
+            {group.bname}
+          </Select.Option>
+        ));
 
       return (
         <div>
@@ -2139,7 +2139,7 @@ const Addorders = Form.create()(
                       }}
                       showTime
                       format="YYYY-MM-DD"
-                      onOk={() => {}}
+                      onOk={() => { }}
                       value={
                         this.state.signDate ? moment(this.state.signDate) : null
                       }
@@ -2311,9 +2311,9 @@ const Addorders = Form.create()(
                   >
                     <span>{this.state.userName}</span>
                     <EnterpriseNameChange
-                        type='journal'
-                        style={{ marginLeft: 10 }}
-                        enterpriseId={this.props.orderUid}/>
+                      type='journal'
+                      style={{ marginLeft: 10 }}
+                      enterpriseId={this.props.orderUid} />
                   </FormItem>
                 </div>
                 <FormItem
@@ -2450,8 +2450,8 @@ const Addorders = Form.create()(
                     wrapperCol={{ span: 18 }}
                     label="合同扫描件"
                   >
-                    <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
-                      <ImgList domId={'addorders'} fileList={this.state.orgCodeUrl} ItemWidth={'96px'}/>
+                    <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
+                      <ImgList domId={'addorders'} fileList={this.state.orgCodeUrl} ItemWidth={'96px'} />
                     </div>
                     {/*<Upload*/}
                     {/*  className="demandDetailShow-upload"*/}
@@ -2541,8 +2541,8 @@ const Addorders = Form.create()(
                     {/*    });*/}
                     {/*  }}*/}
                     {/*/>*/}
-                    <div style={{paddingTop:'10px',paddingBottom:'10px'}}>
-                      <ImgList domId='addorders1' fileList={this.state.replenishUrl} ItemWidth={'96px'}/>
+                    <div style={{ paddingTop: '10px', paddingBottom: '10px' }}>
+                      <ImgList domId='addorders1' fileList={this.state.replenishUrl} ItemWidth={'96px'} />
                     </div>
                     <Modal
                       maskClosable={false}
@@ -2962,7 +2962,7 @@ const Addorders = Form.create()(
                 </div>
               </Spin>
             </Form>
-          </Modal> : <div/>}
+          </Modal> : <div />}
           <Modal
             visible={this.state.rizhivisible}
             className="admin-desc-content"
@@ -2983,11 +2983,11 @@ const Addorders = Form.create()(
             </div>
           </Modal>
           {this.state.projectOperationVisible ? <ProjectOperation
-              readOnly={this.state.dataInfor && Object.keys(this.state.dataInfor).length > 0 && this.state.processStatus !== 0}
-              orderNo={this.props.datauser.orderNo}
-              visible={this.state.projectOperationVisible}
-              dataInfor={this.state.dataInfor}
-              onCancel={this.nextCancel}
+            readOnly={this.state.dataInfor && Object.keys(this.state.dataInfor).length > 0 && this.state.processStatus !== 0}
+            orderNo={this.props.datauser.orderNo}
+            visible={this.state.projectOperationVisible}
+            dataInfor={this.state.dataInfor}
+            onCancel={this.nextCancel}
           /> : null}
         </div>
       );

+ 1 - 1
js/component/manageCenter/order/orderNew/approveds.jsx

@@ -492,7 +492,7 @@ const IntentionCustomer = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 83 - 81
js/component/manageCenter/order/orderNew/arrearsList.jsx

@@ -22,8 +22,8 @@ import {
   ShowModal,
 } from "@/tools.js";
 import "./customer.less";
-import {ChooseList} from "./chooseList";
-import {getProjectName} from "../../../tools";
+import { ChooseList } from "./chooseList";
+import { getProjectName } from "../../../tools";
 import DepartmentList from "../../../common/departmentList";
 
 const ArrearsList = Form.create()(
@@ -98,7 +98,7 @@ const ArrearsList = Form.create()(
           defaultPageSize: 10,
           showQuickJumper: true,
           pageSize: 10,
-          modalVisible:false,
+          modalVisible: false,
           onChange: function (page) {
             this.loadData(page);
           }.bind(this),
@@ -128,14 +128,14 @@ const ArrearsList = Form.create()(
             key: "userName",
             render: text => {
               return (
-                  <Tooltip title={text}>
-                    <div style={{
-                      maxWidth:'150px',
-                      overflow:'hidden',
-                      textOverflow: "ellipsis",
-                      whiteSpace:'nowrap',
-                    }}>{text}</div>
-                  </Tooltip>
+                <Tooltip title={text}>
+                  <div style={{
+                    maxWidth: '150px',
+                    overflow: 'hidden',
+                    textOverflow: "ellipsis",
+                    whiteSpace: 'nowrap',
+                  }}>{text}</div>
+                </Tooltip>
               )
             }
           },
@@ -198,16 +198,16 @@ const ArrearsList = Form.create()(
               return getLiquidationStatus(text);
             },
           },
-            {
-              title: "催收科目",
-              dataIndex: "type",
-              key: "type",
-                render: text => {
-                  if(text == 0) {
-                    return "按时触发应收欠款"
-                  }
-                }
-            },
+          {
+            title: "催收科目",
+            dataIndex: "type",
+            key: "type",
+            render: text => {
+              if (text == 0) {
+                return "按时触发应收欠款"
+              }
+            }
+          },
           {
             title: "催款状态",
             dataIndex: "dunStatus",
@@ -240,7 +240,7 @@ const ArrearsList = Form.create()(
             key: "legalTimes",
           },
         ],
-        legalColumns:[
+        legalColumns: [
           {
             title: "序号",
             dataIndex: "key",
@@ -276,7 +276,7 @@ const ArrearsList = Form.create()(
             dataIndex: "type",
             key: "type",
             width: 140,
-            render:(text,data) => {
+            render: (text, data) => {
               let status;
               if (data.status == 0) {
                 status = "否";
@@ -308,8 +308,8 @@ const ArrearsList = Form.create()(
             width: 140,
           },
         ],
-        legalDataSource:[],
-        legalPagination:{
+        legalDataSource: [],
+        legalPagination: {
           defaultCurrent: 1,
           defaultPageSize: 10,
           showQuickJumper: true,
@@ -390,14 +390,14 @@ const ArrearsList = Form.create()(
         changeList: newArr
       });
     },
-    viewLegal(){
+    viewLegal() {
       console.log(this.state.rowkey);
-      if(this.state.recordt == undefined || this.state.recordt == [] || this.state.rowkey.length == 0  ) {
+      if (this.state.recordt == undefined || this.state.recordt == [] || this.state.rowkey.length == 0) {
         message.info("请选择查看的单号")
         return
       }
       this.setState({
-        modalVisible:true
+        modalVisible: true
       })
       $.ajax({
         method: "get",
@@ -405,9 +405,9 @@ const ArrearsList = Form.create()(
         crossDomain: false,
         url: globalConfig.context + "/api/admin/lagalAffairs/lagalAffairsLogList",
         data: {
-          pageNo:  1,
+          pageNo: 1,
           pageSize: 10,
-          orderNo:this.state.recordt
+          orderNo: this.state.recordt
         },
         success: function (data) {
           let theArr = []
@@ -428,11 +428,11 @@ const ArrearsList = Form.create()(
               legalPagination: this.state.legalPagination
             });
             this.state.legalPagination.total = data.data.totalCount;
-              this.state.legalPagination.current = data.data.pageNo;
-            }
-            if (data.data && data.data.list && !data.data.list.length) {
-              this.state.legalPagination.total = 0;
-            }  
+            this.state.legalPagination.current = data.data.pageNo;
+          }
+          if (data.data && data.data.list && !data.data.list.length) {
+            this.state.legalPagination.total = 0;
+          }
         }.bind(this),
       }).always(
         function () {
@@ -456,12 +456,12 @@ const ArrearsList = Form.create()(
             modalVisible: false,
             selectedRows: selectedRows.slice(-1),
             selectedRowKeys: selectedRowKeys.slice(-1),
-          },() =>{
+          }, () => {
             this.setState({
-              rowkey:this.state.selectedRowKeys
+              rowkey: this.state.selectedRowKeys
             })
           });
-         
+
         },
         onSelect: (recordt) => {
           this.setState({
@@ -506,12 +506,12 @@ const ArrearsList = Form.create()(
                   }}
                 />
                 <Input
-                    placeholder="合同编号"
-                    style={{ width: "150px", marginRight: 10 }}
-                    value={this.state.contractNo}
-                    onChange={(e) => {
-                      this.setState({ contractNo: e.target.value });
-                    }}
+                  placeholder="合同编号"
+                  style={{ width: "150px", marginRight: 10 }}
+                  value={this.state.contractNo}
+                  onChange={(e) => {
+                    this.setState({ contractNo: e.target.value });
+                  }}
                 />
                 <Input
                   placeholder="营销员名称"
@@ -526,10 +526,10 @@ const ArrearsList = Form.create()(
                   }}
                 />
                 <DepartmentList
-                    value={this.state.departmenttSearch}
-                    onChange={e => {
-                      this.setState({ departmenttSearch: e });
-                    }}/>
+                  value={this.state.departmenttSearch}
+                  onChange={e => {
+                    this.setState({ departmenttSearch: e });
+                  }} />
                 <span style={{ marginRight: "10px" }}>下单时间 :</span>
                 <RangePicker
                   value={[
@@ -558,14 +558,16 @@ const ArrearsList = Form.create()(
                     this.setState({ chufaDate: dataString });
                   }}
                 />
-                <Button
-                  type="primary"
-                  onClick={this.search}
-                  style={{ marginLeft: "10px", marginRight: 10 }}
-                >
-                  搜索
-                </Button>
-                <Button onClick={this.reset}>重置</Button>
+                <div>
+                  <Button
+                    type="primary"
+                    onClick={this.search}
+                    style={{ marginLeft: "10px", marginRight: 10 }}
+                  >
+                    搜索
+                  </Button>
+                  <Button onClick={this.reset}>重置</Button>
+                </div>
               </TabPane>
               <TabPane tab="导出催款列表" key="2">
                 <Button
@@ -579,16 +581,16 @@ const ArrearsList = Form.create()(
               <TabPane tab="更改表格显示数据" key="3">
                 <div style={{ marginLeft: 10 }}>
                   <ChooseList
-                      columns={this.state.columns}
-                      changeFn={this.changeList}
-                      changeList={this.state.changeList}
-                      top={55}
-                      margin={11}
+                    columns={this.state.columns}
+                    changeFn={this.changeList}
+                    changeList={this.state.changeList}
+                    top={55}
+                    margin={11}
                   />
                 </div>
               </TabPane>
               <TabPane tab="查看" key="4">
-              <Button
+                <Button
                   // disabled={ this.state.rowkey.length == 0 ? true : false}
                   type="primary"
                   onClick={this.viewLegal}
@@ -601,32 +603,32 @@ const ArrearsList = Form.create()(
             <div className="patent-table">
               <Spin spinning={this.state.loading}>
                 <Table
-                    columns={
-                      this.state.changeList
-                          ? this.state.changeList
-                          : this.state.columns
-                    }
+                  columns={
+                    this.state.changeList
+                      ? this.state.changeList
+                      : this.state.columns
+                  }
                   dataSource={this.state.dataSource}
                   pagination={this.state.pagination}
                   scroll={{ x: "max-content", y: 0 }}
-                  rowSelection={rowSelection} 
+                  rowSelection={rowSelection}
                   bordered
                   size="small"
                 />
               </Spin>
             </div>
-          <Modal
-          title="欠款法务列表"
-          footer=""
-          width={1000}
-          visible={this.state.modalVisible}
-          onCancel={()=>{
-            this.setState({
-              modalVisible:false
-            })
-          }}
-        >
-          <Spin spinning={this.state.loadLegal}>
+            <Modal
+              title="欠款法务列表"
+              footer=""
+              width={1000}
+              visible={this.state.modalVisible}
+              onCancel={() => {
+                this.setState({
+                  modalVisible: false
+                })
+              }}
+            >
+              <Spin spinning={this.state.loadLegal}>
                 <Table
                   columns={this.state.legalColumns}
                   dataSource={this.state.legalDataSource}
@@ -636,7 +638,7 @@ const ArrearsList = Form.create()(
                   size="small"
                 />
               </Spin>
-        </Modal>
+            </Modal>
           </div>
         </div>
       );

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

@@ -47,6 +47,7 @@ import Project from "../../../../component/project";
 import ImgList from "../../../common/imgList";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import LogPopup from "../../../common/logPopup";
+
 const { Option } = Select;
 const { TabPane } = Tabs;
 const PicturesWall = React.createClass({
@@ -1919,7 +1920,7 @@ const MyService = Form.create()(
                     />
                     <Select
                       placeholder="订单部门"
-                      style={{ width: 150, marginRight: 10 }}
+                      style={{ width: 200, marginRight: 10 }}
                       value={this.state.departmenttList}
                       onChange={(e) => {
                         this.setState({ departmenttList: e });

+ 1 - 1
js/component/manageCenter/order/orderNew/changeComponent/changeApply.js

@@ -356,7 +356,7 @@ class ChangeApply extends Component {
           render: (text, record) => {
             if (record.dunTypeName) {
               if (record.appropriationRatio) {
-                let percent = Number(record.appropriationRatio * 100);
+                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                 percent += "%";
                 return <span>{percent}(拨款比例)</span>;
               } else {

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

@@ -307,7 +307,7 @@ class ChangeDetail extends Component {
       data: {
         orderNo: this.props.data.orderNo,
         type: this.props.data.type,
-        id: this.props.data.id,
+        id: this.props.id,
         attachmentUrl: this.state.refundUrl,
       },
       success: data => {

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

@@ -84,7 +84,7 @@ class OrderDetail extends Component {
           render: (text, record) => {
             if (record.dunTypeName) {
               if (record.appropriationRatio) {
-                let percent = Number(record.appropriationRatio * 100);
+                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                 percent += "%";
                 return <span>{percent}(拨款比例)</span>;
               } else {
@@ -881,7 +881,8 @@ class OrderDetail extends Component {
             <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col>
           </Form>
         </div>
-        {this.state.visible && <ProjectDetailsReadOnly
+        {this.state.visible && 
+        <ProjectDetailsReadOnly
           infor={this.state.dataInfor}
           visible={this.state.visible}
           onCancel={this.nextCancel}

+ 22 - 1
js/component/manageCenter/order/orderNew/changeComponent/proAndCuiList.jsx

@@ -13,11 +13,13 @@ import {
 import $ from "jquery/src/ajax";
 import { getProjectStatus } from "@/tools.js"
 import ResolutionDetail from "@/resolutionDetail";
+import ProjectDetailsReadOnly from "../../../../common/projectDetailsReadOnly/index";
 
 
 const ProAndCuiList = React.createClass({
   getInitialState() {
     return {
+      visible: false,
       resVisible: false,
       columns: [
         {
@@ -208,7 +210,7 @@ const ProAndCuiList = React.createClass({
           render: (text, record) => {
             if (record.dunTypeName) {
               if (record.appropriationRatio) {
-                let percent = Number(record.appropriationRatio * 100);
+                let percent = Number(record.appropriationRatio * 100).toFixed(2);
                 percent += "%";
                 return <span>{percent}(拨款比例)</span>;
               } else {
@@ -309,6 +311,14 @@ const ProAndCuiList = React.createClass({
     });
   },
 
+  //点击打卡项目详情
+  tableRowClickX(record) {
+    this.setState({
+      dataInfor: record,
+      visible: true,
+    });
+  },
+
   render() {
     const expandedRowRender = e => {
       const data = e.list;
@@ -473,6 +483,7 @@ const ProAndCuiList = React.createClass({
             pagination={false}
             expandedRowRender={expandedRowRender}
             dataSource={this.state.dataSource}
+            onRowClick={this.tableRowClickX.bind(this)}
             bordered
             size="small"
           />
@@ -495,6 +506,16 @@ const ProAndCuiList = React.createClass({
             <Col span={24} offset={9} style={{ marginTop: "15px" }}></Col>
           </Form>
         </div>
+        {this.state.visible &&
+          <ProjectDetailsReadOnly
+            infor={this.state.dataInfor}
+            visible={this.state.visible}
+            onCancel={() => {
+              this.setState({
+                visible: false
+              });
+            }}
+          />}
       </div>
     );
   }

+ 1 - 1
js/component/manageCenter/order/orderNew/changeComponent/searchInput.js

@@ -247,7 +247,7 @@ class SearchInput extends Component {
     const SearchSelectData = [
       {
         placeholder: "订单部门",
-        width: 120,
+        width: 200,
         defaultValue: undefined,
         content: this.state.departmentArr,
         getValue: value => {

+ 1 - 1
js/component/manageCenter/order/orderNew/chargeback.jsx

@@ -347,7 +347,7 @@ const IntentionCustomer = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 1 - 1
js/component/manageCenter/order/orderNew/checkOutsourcing.jsx

@@ -362,7 +362,7 @@ const checkOutsourcing = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 1 - 1
js/component/manageCenter/order/orderNew/contractCwjl.js

@@ -1417,7 +1417,7 @@ const contractChange = Form.create()(
                             : undefined
                         }
                         data={this.state.contractData}
-                        loadData={this.ChangeDetail}
+                        // loadData={this.ChangeDetail}
                         txt={this.state.processStateText}
                         pictureUrl={this.state.voucherUrl}
                          attachment = {this.state.attachment}

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

@@ -560,7 +560,7 @@ const IntentionCustomer = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 19 - 18
js/component/manageCenter/order/orderNew/inquiry.jsx

@@ -394,7 +394,7 @@ const IntentionCustomer = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -2376,7 +2376,7 @@ const IntentionCustomer = Form.create()(
                   />
                   <Select
                     placeholder="订单部门"
-                    style={{ width: 140, marginRight: 10 }}
+                    style={{ width: 200, marginRight: 10 }}
                     value={this.state.departmenttList}
                     onChange={(e) => {
                       this.setState({ departmenttList: e });
@@ -2455,7 +2455,7 @@ const IntentionCustomer = Form.create()(
                     <Option value="0">非会员</Option>
                   </Select>
                   <Select
-                    style={{ width: 140 }}
+                    style={{ width: 160 }}
                     placeholder="流程状态"
                     value={this.state.processStatusSearch}
                     onChange={e => {
@@ -2473,21 +2473,6 @@ const IntentionCustomer = Form.create()(
                     <Option value="5">已部分派咨询师经理</Option>
                     <Option value="6">已部全部派咨询师经理</Option>
                   </Select>
-                  <span style={{ marginRight: "10px" }}>下单时间 :</span>
-                  <RangePicker
-                    value={[
-                      this.state.releaseDate[0]
-                        ? moment(this.state.releaseDate[0])
-                        : null,
-                      this.state.releaseDate[1]
-                        ? moment(this.state.releaseDate[1])
-                        : null,
-                    ]}
-                    onChange={(data, dataString) => {
-                      this.setState({ releaseDate: dataString });
-                    }}
-                  />
-
                   <Button
                     type="primary"
                     onClick={this.search}
@@ -2499,6 +2484,22 @@ const IntentionCustomer = Form.create()(
                   <Button onClick={this.reset}>
                     重置 <Icon type="reload" />
                   </Button>
+                  <div>
+                    <span style={{ marginRight: "10px" }}>下单时间 :</span>
+                    <RangePicker
+                      value={[
+                        this.state.releaseDate[0]
+                          ? moment(this.state.releaseDate[0])
+                          : null,
+                        this.state.releaseDate[1]
+                          ? moment(this.state.releaseDate[1])
+                          : null,
+                      ]}
+                      onChange={(data, dataString) => {
+                        this.setState({ releaseDate: dataString });
+                      }}
+                    />
+                  </div>
                 </div>
               </TabPane>
               <TabPane tab="查看" key="3">

+ 1 - 1
js/component/manageCenter/order/orderNew/myprojectvip.jsx

@@ -605,7 +605,7 @@ const MyProjectVip = React.createClass({
               />
               <Select
                 placeholder="订单部门"
-                style={{ width: 190, marginRight: 10 }}
+                style={{ width: 200, marginRight: 10 }}
                 value={searchValues["depId"]
                   ? searchValues["depId"]
                   : undefined}

+ 1 - 1
js/component/manageCenter/order/orderNew/outsourcingList.jsx

@@ -391,7 +391,7 @@ const outsourcingList = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 1 - 1
js/component/manageCenter/order/orderNew/outsourcingPro.jsx

@@ -469,7 +469,7 @@ const outsourcingPro = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {

+ 3 - 2
js/component/manageCenter/order/orderNew/reject.jsx

@@ -613,7 +613,7 @@ const IntentionCustomer = Form.create()(
             render: (text, record) => {
               if (record.dunTypeName) {
                 if (record.appropriationRatio) {
-                  let percent = Number(record.appropriationRatio * 100);
+                  let percent = Number(record.appropriationRatio * 100).toFixed(2);
                   percent += "%";
                   return <span>{percent}(拨款比例)</span>;
                 } else {
@@ -1555,7 +1555,8 @@ const IntentionCustomer = Form.create()(
         method: "post",
         dataType: "json",
         crossDomain: false,
-        url: globalConfig.context + "/api/admin/newOrder/updateServiceOrderNew",
+        // url: globalConfig.context + "/api/admin/newOrder/updateServiceOrderNew",
+        url: globalConfig.context + "/api/admin/newOrder/submitOrder",
         data: {
           orderNo: this.state.orderNo, //订单编号
           totalAmount: this.state.totalAmount, //总金额

+ 1 - 1
js/component/manageCenter/order/orderNew/updatesales.jsx

@@ -237,7 +237,7 @@ class UpdateSales extends Component {
                       ? qsalesType : datas.userType == "2"
                         ? [...ssalesType, ...qsalesType] : []).map(function (item) {
                           return (
-                            <Select.Option key={item.value}>
+                            <Select.Option key={item.value} disabled={item.value == "5"}>
                               {item.key}
                             </Select.Option>
                           );

+ 1 - 1
js/component/manageCenter/order/source/index.jsx

@@ -500,7 +500,7 @@ class Source extends Component {
                 <FormItem>
                   <Select
                     placeholder={"请选择部门"}
-                    style={{ width: 150 }}
+                    style={{ width: 200 }}
                     value={searchValues["depId"]
                       ? searchValues["depId"]
                       : undefined}

+ 1 - 1
js/component/manageCenter/project/patent/list.jsx

@@ -791,7 +791,7 @@ class List extends Component{
                                         <Select placeholder="请选择派单部门" value={this.state.depName} onSelect={e=>{this.setState({depName:e})}} style={{ width: "240px" }}>
                                             {
                                                 this.state.departmentArr.map(function (item) {
-                                                    return <Select.Option key={item.id} value={item.id}>{item.name}</Select.Option>
+                                                    return <Select.Option key={item.id} value={item.name}>{item.name}</Select.Option>
                                                 })
                                             }
                                         </Select>

+ 1 - 1
js/component/manageCenter/project/project/outsourceTaskAssignment.jsx

@@ -1022,7 +1022,7 @@ const OutsourceTaskAssignment = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

+ 1 - 1
js/component/manageCenter/project/project/projectAssignment.jsx

@@ -1032,7 +1032,7 @@ const PaiDan = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

+ 1 - 1
js/component/manageCenter/project/project/projectQuery.jsx

@@ -745,7 +745,7 @@ const PaiDan = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

+ 1 - 1
js/component/manageCenter/project/project/zxsglyOutSourcingPaiDan.jsx

@@ -1108,7 +1108,7 @@ const zxsglyOutSourcingPaiDan = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={e => {
                   this.setState({ departmenttSearch: e });

+ 1 - 1
js/component/manageCenter/project/task/businessManagement/index.jsx

@@ -331,7 +331,7 @@ class BusinessManagement extends Component {
                                 />
                                 <Select
                                     placeholder="选择部门"
-                                    style={{ width: 150, marginRight: '10px' }}
+                                    style={{ width: 200, marginRight: '10px' }}
                                     value={this.state.departmenttSearch}
                                     onChange={(e) => {
                                         this.setState({ departmenttSearch: e })

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

@@ -3583,7 +3583,7 @@ const Task = React.createClass({
                             </Select>
                             <Select
                                 placeholder="选择部门"
-                                style={{ width: 150, marginRight: '10px' }}
+                                style={{ width: 200, marginRight: '10px' }}
                                 value={this.state.departmenttSearch}
                                 onChange={(e) => {
                                     this.setState({ departmenttSearch: e })

+ 206 - 209
js/component/manageCenter/project/task/myTaskCount.jsx

@@ -26,7 +26,7 @@ import {
   getprovince,
   getProjectName,
 } from "@/tools.js";
-import {ChooseList} from "../../order/orderNew/chooseList";
+import { ChooseList } from "../../order/orderNew/chooseList";
 import PatentSchedule from './patentSchedule';
 import DeclarationProgress from "../../../common/declarationProgress";
 import ProjectDetailsReadOnly from "../../../common/projectDetailsReadOnly";
@@ -43,7 +43,7 @@ const MyTaskCount = Form.create()(
         crossDomain: false,
         url: globalConfig.context + "/api/admin/organization/selectSuperId",
         data: {},
-        success: function(data) {
+        success: function (data) {
           let thedata = data.data;
           let theArr = [];
           if (!thedata) {
@@ -51,7 +51,7 @@ const MyTaskCount = Form.create()(
               message.warning(data.error[0].message);
             }
           } else {
-            thedata.map(function(item, index) {
+            thedata.map(function (item, index) {
               theArr.push({
                 key: index,
                 name: item.name,
@@ -64,7 +64,7 @@ const MyTaskCount = Form.create()(
           });
         }.bind(this)
       }).always(
-        function() {
+        function () {
         }.bind(this)
       );
     },
@@ -99,7 +99,7 @@ const MyTaskCount = Form.create()(
             depId: this.state.departmenttList, //部门ID
             outsource: this.state.outsourceSearch
           },
-          success: function(data) {
+          success: function (data) {
             let theArr = [];
             if (data.error.length || data.data.list == "") {
               if (data.error && data.error.length) {
@@ -147,7 +147,7 @@ const MyTaskCount = Form.create()(
             });
           }.bind(this)
         }).always(
-          function() {
+          function () {
             this.setState({
               loading: false
             });
@@ -171,7 +171,7 @@ const MyTaskCount = Form.create()(
             depId: this.state.departmenttList, //部门ID
             outsource: this.state.outsourceSearch
           },
-          success: function(data) {
+          success: function (data) {
             let theArr = [];
             if (data.error.length || data.data.list == "") {
               if (data.error && data.error.length) {
@@ -196,7 +196,7 @@ const MyTaskCount = Form.create()(
             });
           }.bind(this)
         }).always(
-          function() {
+          function () {
             this.setState({
               loading: false
             });
@@ -213,7 +213,7 @@ const MyTaskCount = Form.create()(
         declarationBatch: 1,
         dataInfor: {},
         selectedRowKeys: [],
-        timeRecordparse:{},
+        timeRecordparse: {},
         orgCodeUrl: [],
         paginations: false,
         pagination: {
@@ -221,10 +221,10 @@ const MyTaskCount = Form.create()(
           defaultPageSize: 10,
           showQuickJumper: true,
           pageSize: 10,
-          onChange: function(page) {
+          onChange: function (page) {
             this.loadData(page);
           }.bind(this),
-          showTotal: function(total) {
+          showTotal: function (total) {
             return "共" + total + "条数据";
           }
         },
@@ -257,14 +257,14 @@ const MyTaskCount = Form.create()(
             key: "userName",
             render: text => {
               return (
-                  <Tooltip title={text}>
-                    <div style={{
-                      maxWidth:'150px',
-                      overflow:'hidden',
-                      textOverflow: "ellipsis",
-                      whiteSpace:'nowrap',
-                    }}>{text}</div>
-                  </Tooltip>
+                <Tooltip title={text}>
+                  <div style={{
+                    maxWidth: '150px',
+                    overflow: 'hidden',
+                    textOverflow: "ellipsis",
+                    whiteSpace: 'nowrap',
+                  }}>{text}</div>
+                </Tooltip>
               )
             }
           },
@@ -377,9 +377,9 @@ const MyTaskCount = Form.create()(
             key: "commodityName",
             render: (text, record) => {
               return (
-                  <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
+                <span>{text}<span style={{ color: "red" }}>{record.patentTypeName}</span></span>
               )
-          }
+            }
           },
           {
             title: "项目类别",
@@ -535,7 +535,7 @@ const MyTaskCount = Form.create()(
         data: {
           id: id
         },
-        success: function(data) {
+        success: function (data) {
           if (data.error.length || data.data.list == "") {
             if (data.error && data.error.length) {
               message.warning(data.error[0].message);
@@ -558,10 +558,10 @@ const MyTaskCount = Form.create()(
               taskComment: thisdata.taskComment, //说明
               attachmentUrl: thisdata.attachmentUrl
                 ? splitUrl(
-                    thisdata.attachmentUrl,
-                    ",",
-                    globalConfig.avatarHost + "/upload"
-                  )
+                  thisdata.attachmentUrl,
+                  ",",
+                  globalConfig.avatarHost + "/upload"
+                )
                 : [], //图片地址
               salesmanName: thisdata.salesmanName, //订单负责人
               startDate: thisdata.startDate, //启动日期
@@ -588,7 +588,7 @@ const MyTaskCount = Form.create()(
               outsourceName: thisdata.outsourceName, //外包公司名称
               outsourcePrice: thisdata.outsourcePrice, //外包价格
               declarationBatch: thisdata.declarationBatch,
-              bpType:thisdata.bpType,//0 正常 1专利 2软著 3审计 4双软 5高新 6商标
+              bpType: thisdata.bpType,//0 正常 1专利 2软著 3审计 4双软 5高新 6商标
               cSort: thisdata.sort,
               specialComment: thisdata.specialComment,
               urgentDay: thisdata.urgentDay, //有无材料
@@ -597,16 +597,16 @@ const MyTaskCount = Form.create()(
               setUpStatus: thisdata.setUpStatus,
               setUpTime: thisdata.setUpTime,
               highTechStatus: thisdata.highTechStatus,
-              acceptCount:thisdata.acceptCount,       //受理数
-              certificatesCount:thisdata.certificatesCount, //授权数
-              rejectCount:thisdata.rejectCount,       //驳回数
-              commodityQuantity:thisdata.commodityQuantity, //派单项目数
+              acceptCount: thisdata.acceptCount,       //受理数
+              certificatesCount: thisdata.certificatesCount, //授权数
+              rejectCount: thisdata.rejectCount,       //驳回数
+              commodityQuantity: thisdata.commodityQuantity, //派单项目数
               timeRecordparse: thisdata.timeRecord ? JSON.parse(thisdata.timeRecord) : {},
             });
           }
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.setState({
             loading: false
           });
@@ -637,7 +637,7 @@ const MyTaskCount = Form.create()(
         data: {
           orderNo: orderNos
         },
-        success: function(data) {
+        success: function (data) {
           let thisdata = data.data;
           let ProvinceCityArr = [];
           let ProvinceS = thisdata.locationProvince; //省
@@ -666,12 +666,12 @@ const MyTaskCount = Form.create()(
               ProvinceCity: ProvinceCityArr,
               postalAddress: thisdata.postalAddress, //详细地址
               outsource: thisdata.outsource,
-              deleteSign:thisdata.deleteSign,
+              deleteSign: thisdata.deleteSign,
             });
           }
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.setState({
             loading: false
           });
@@ -690,7 +690,7 @@ const MyTaskCount = Form.create()(
         data: {
           tid: record.id
         },
-        success: function(data) {
+        success: function (data) {
           let theArr = [];
           let thisData = [];
           if (!thisData) {
@@ -717,7 +717,7 @@ const MyTaskCount = Form.create()(
           }
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.setState({
             loading: false
           });
@@ -736,7 +736,7 @@ const MyTaskCount = Form.create()(
         data: {
           id: this.state.id
         },
-        success: function(data) {
+        success: function (data) {
           let theArr = [];
 
           if (data.error.length || data.data.list == "") {
@@ -761,7 +761,7 @@ const MyTaskCount = Form.create()(
           });
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.setState({
             loading: false
           });
@@ -785,7 +785,7 @@ const MyTaskCount = Form.create()(
         data: {
           orderNo: orderNos
         },
-        success: function(data) {
+        success: function (data) {
           let theArr = [];
 
           if (data.error.length || data.data.list == "") {
@@ -804,7 +804,7 @@ const MyTaskCount = Form.create()(
           });
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.setState({
             loading: false
           });
@@ -893,7 +893,7 @@ const MyTaskCount = Form.create()(
         taskComment: record.taskComment, //备注
         main: record.main.toString(), //是否为主要
         addnextVisible: true,
-        dataInfor:record,
+        dataInfor: record,
         addState: 0
       });
     },
@@ -983,7 +983,7 @@ const MyTaskCount = Form.create()(
         data: {
           flag: 0
         },
-        success: function(data) {
+        success: function (data) {
           let theArr = [];
           let thedata = data.data;
           if (!thedata) {
@@ -1008,7 +1008,7 @@ const MyTaskCount = Form.create()(
           });
         }.bind(this)
       }).always(
-        function() {
+        function () {
           this.loadData(this.state.ispage);
         }.bind(this)
       );
@@ -1032,7 +1032,7 @@ const MyTaskCount = Form.create()(
         wrapperCol: { span: 14 }
       };
       const utils = {
-        getSatisfaction: function(num) {
+        getSatisfaction: function (num) {
           switch (num) {
             case 0:
               return "未收回";
@@ -1042,7 +1042,7 @@ const MyTaskCount = Form.create()(
               return "其它";
           }
         },
-        getChargeback: function(num) {
+        getChargeback: function (num) {
           switch (num) {
             case 0:
               return "已完成";
@@ -1131,7 +1131,7 @@ const MyTaskCount = Form.create()(
                 />
                 <Select
                   placeholder="订单部门"
-                  style={{ width: 150, marginRight: 10 }}
+                  style={{ width: 200, marginRight: 10 }}
                   value={this.state.departmenttList}
                   onChange={(e) => {
                     this.setState({ departmenttList: e });
@@ -1145,7 +1145,7 @@ const MyTaskCount = Form.create()(
                 </Select>
                 <Select
                   placeholder="项目类别"
-                  style={{ width: "150", marginRight: "10px" }}
+                  style={{ width: 120, marginRight: "10px" }}
                   value={this.state.cid}
                   onChange={(e) => {
                     this.setState({ cid: e });
@@ -1156,7 +1156,7 @@ const MyTaskCount = Form.create()(
                 </Select>
                 <Select
                   placeholder="是否外包"
-                  style={{ width: "150", marginRight: "10px" }}
+                  style={{ width: 100, marginRight: "10px" }}
                   value={this.state.outsourceSearch}
                   onChange={(e) => {
                     this.setState({ outsourceSearch: e });
@@ -1207,11 +1207,11 @@ const MyTaskCount = Form.create()(
               <TabPane tab="更改表格显示数据" key="3">
                 <div style={{ marginLeft: 10 }}>
                   <ChooseList
-                      columns={this.state.columns}
-                      changeFn={this.changeList}
-                      changeList={this.state.changeList}
-                      top={55}
-                      margin={11}
+                    columns={this.state.columns}
+                    changeFn={this.changeList}
+                    changeList={this.state.changeList}
+                    top={55}
+                    margin={11}
                   />
                 </div>
               </TabPane>
@@ -1221,8 +1221,8 @@ const MyTaskCount = Form.create()(
                 <Table
                   columns={
                     this.state.changeList
-                        ? this.state.changeList
-                        : this.state.columns
+                      ? this.state.changeList
+                      : this.state.columns
                   }
                   dataSource={this.state.dataSource}
                   pagination={this.state.pagination}
@@ -1251,21 +1251,21 @@ const MyTaskCount = Form.create()(
             >
               <Spin spinning={this.state.loading}>
                 <div className="clearfix">
-                  <div style={{position:"absolute",top:'-52px',left:'81px',zIndex:10000}}>
-                    <OrderItemStatus deleteSign={this.state.deleteSign}/>
+                  <div style={{ position: "absolute", top: '-52px', left: '81px', zIndex: 10000 }}>
+                    <OrderItemStatus deleteSign={this.state.deleteSign} />
                   </div>
                   <div className="clearfix">
                     <FormItem
-                        className="half-item"
-                        {...formItemLayout}
-                        label="项目状态"
+                      className="half-item"
+                      {...formItemLayout}
+                      label="项目状态"
                     >
                       <span>{getProjectName(parseInt(this.state.projectStatus))}</span>
                       <Button
-                          type="primary"
-                          size="small"
-                          style={{ marginTop: '5px', position: 'absolute' }}
-                          onClick={this.caozuorizhi}
+                        type="primary"
+                        size="small"
+                        style={{ marginTop: '5px', position: 'absolute' }}
+                        onClick={this.caozuorizhi}
                       >
                         操作日志
                       </Button>
@@ -1322,9 +1322,9 @@ const MyTaskCount = Form.create()(
                     </FormItem>
                     {
                       <FormItem
-                          className="half-item"
-                          {...formItemLayout}
-                          label="(满意度)备注"
+                        className="half-item"
+                        {...formItemLayout}
+                        label="(满意度)备注"
                       >
                         <span>{this.state.retrieveContent}</span>
                       </FormItem>
@@ -1341,14 +1341,14 @@ const MyTaskCount = Form.create()(
                     <div style={{
                       paddingLeft: '8%',
                     }}>
-                      <div style={{color:'#000',fontWeight:500}}>
+                      <div style={{ color: '#000', fontWeight: 500 }}>
                         特别说明
-                        <span style={{color: '#58a3ff',}}>(针对项目的特殊情况说明)</span>
+                        <span style={{ color: '#58a3ff', }}>(针对项目的特殊情况说明)</span>
                       </div>
                       <div style={{
-                        display:'flex',
+                        display: 'flex',
                       }}>
-                        <span style={{paddingRight:'10px',whiteSpace:"nowrap"}}>备注:</span>
+                        <span style={{ paddingRight: '10px', whiteSpace: "nowrap" }}>备注:</span>
                         <span style={{
                           flex: 1,
                           wordBreak: 'break-all',
@@ -1369,44 +1369,40 @@ const MyTaskCount = Form.create()(
                     {/*贯标需要显示*/}
                     {
                       this.state.isIso ?
-                          <div>
-                            <FormItem
-                                className="half-item"
-                                {...formItemLayout}
-                                label="认证费"
-                            >
-                                <span>
-                                  {
-                                    this.state.ifCertificationFee === 1 ? '包含' : '不包含'
-                                  }
-                                </span>
-                            </FormItem>
-                            {this.state.ifCertificationFee === 1 ?<FormItem
-                                className="half-item"
-                                {...formItemLayout}
-                                label="认证费(万元)"
-                            >
-                                <span>
-                                    {
-                                      this.state.certificationFee
-                                    }
-                                </span>
-                            </FormItem> : null}
-                            {this.state.ifCertificationFee === 1 ? <FormItem
-                                className="half-item"
-                                {...formItemLayout}
-                                label=""
-                            /> : null}
-                            {this.state.ifCertificationFee === 1 ? <FormItem
-                                className="half-item"
-                                {...formItemLayout}
-                                label="付款公司名称"
-                            >
-                                <span>
-                                    {this.state.certificationCorporate}
-                                </span>
-                            </FormItem>:null}
-                          </div> : null
+                        <div>
+                          <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label="认证费"
+                          >
+                            <span>
+                              {this.state.ifCertificationFee === 1 ? '包含' : '不包含'}
+                            </span>
+                          </FormItem>
+                          {this.state.ifCertificationFee === 1 ? <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label="认证费(万元)"
+                          >
+                            <span>
+                              {this.state.certificationFee}
+                            </span>
+                          </FormItem> : null}
+                          {this.state.ifCertificationFee === 1 ? <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label=""
+                          /> : null}
+                          {this.state.ifCertificationFee === 1 ? <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label="付款公司名称"
+                          >
+                            <span>
+                              {this.state.certificationCorporate}
+                            </span>
+                          </FormItem> : null}
+                        </div> : null
                     }
                     <FormItem
                       className="half-item"
@@ -1479,9 +1475,9 @@ const MyTaskCount = Form.create()(
                     >
                       <span>{this.state.userName}</span>
                       <EnterpriseNameChange
-                          type='journal'
-                          style={{ marginLeft: 10 }}
-                          enterpriseId={this.state.orderUid}/>
+                        type='journal'
+                        style={{ marginLeft: 10 }}
+                        enterpriseId={this.state.orderUid} />
                     </FormItem>
                     <FormItem
                       className="half-item"
@@ -1591,66 +1587,66 @@ const MyTaskCount = Form.create()(
                   <div className="clearfix">
                     <h3 className="sub-title">项目申报进度</h3>
                     <DeclarationProgress
-                        timeRecordparse={this.state.timeRecordparse}
-                        startDate={this.state.startDate}
-                        taskDate={this.state.taskDate}
-                        list={[
-                          {id:4,name:'完成时间',value:this.state.endDate},
-                          {id:6,name:'受理时间',value:this.state.acceptDate},
-                          {id:8,name:'公示时间',value:this.state.publicityDate},
-                          {id:10,name:'发证时间',value:this.state.licenceDate},
-                          {id:15,name:'立项金额',value:this.state.setUpAmount}
-                        ]}/>
+                      timeRecordparse={this.state.timeRecordparse}
+                      startDate={this.state.startDate}
+                      taskDate={this.state.taskDate}
+                      list={[
+                        { id: 4, name: '完成时间', value: this.state.endDate },
+                        { id: 6, name: '受理时间', value: this.state.acceptDate },
+                        { id: 8, name: '公示时间', value: this.state.publicityDate },
+                        { id: 10, name: '发证时间', value: this.state.licenceDate },
+                        { id: 15, name: '立项金额', value: this.state.setUpAmount }
+                      ]} />
                     {/*专利显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
                     {
                       this.state.bpType === 1 || this.state.bpType === 6 ?
-                          <div>
-                            <FormItem
-                                labelCol={{ span: 3 }}
-                                wrapperCol={{ span: 16 }}
-                                label="是否高新企业"
-                            >
-                                <span>
-                                  {
-                                    this.state.highTechStatus === 1 ? '是':
-                                        this.state.highTechStatus === 0 ? '否' : ''
-                                  }
-                                </span>
-                            </FormItem>
-                            <FormItem/>
-                            <PatentSchedule
-                                readOnly
-                                bpType={this.state.bpType}
-                                taskId={this.state.id}
-                                acceptCount={this.state.acceptCount}
-                                certificatesCount={this.state.certificatesCount}
-                                rejectCount={this.state.rejectCount}
-                                commodityQuantity={this.state.commodityQuantity}
-                                refresh={()=>{this.xiangqing(this.state.id)}}
-                            />
-                          </div> :
-                          <div>
-                            {/*高新和科技项目显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
-                            {/*cSort: 3 科技项目  6: 会员*/}
-                            {(this.state.bpType  === 5 || this.state.cSort === 3) && <FormItem
-                              className="half-item"
-                              {...formItemLayout}
-                              label="申报批次"
-                            >
-                              <span>{this.state.declarationBatch}</span>
-                            </FormItem>}
-                            {/*只有科技项目才有是否到款*/}
-                            {/*cSort: 3 科技项目  6: 会员*/}
-                            {this.state.cSort === 3 && <FormItem
-                              className="half-item"
-                              {...formItemLayout}
-                              label="是否到款"
-                            >
-                              <span>
-                                {this.state.arrivalMoney ? "已到企业" : "未到企业"}
-                              </span>
-                            </FormItem>}
-                          </div>}
+                        <div>
+                          <FormItem
+                            labelCol={{ span: 3 }}
+                            wrapperCol={{ span: 16 }}
+                            label="是否高新企业"
+                          >
+                            <span>
+                              {
+                                this.state.highTechStatus === 1 ? '是' :
+                                  this.state.highTechStatus === 0 ? '否' : ''
+                              }
+                            </span>
+                          </FormItem>
+                          <FormItem />
+                          <PatentSchedule
+                            readOnly
+                            bpType={this.state.bpType}
+                            taskId={this.state.id}
+                            acceptCount={this.state.acceptCount}
+                            certificatesCount={this.state.certificatesCount}
+                            rejectCount={this.state.rejectCount}
+                            commodityQuantity={this.state.commodityQuantity}
+                            refresh={() => { this.xiangqing(this.state.id) }}
+                          />
+                        </div> :
+                        <div>
+                          {/*高新和科技项目显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
+                          {/*cSort: 3 科技项目  6: 会员*/}
+                          {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label="申报批次"
+                          >
+                            <span>{this.state.declarationBatch}</span>
+                          </FormItem>}
+                          {/*只有科技项目才有是否到款*/}
+                          {/*cSort: 3 科技项目  6: 会员*/}
+                          {this.state.cSort === 3 && <FormItem
+                            className="half-item"
+                            {...formItemLayout}
+                            label="是否到款"
+                          >
+                            <span>
+                              {this.state.arrivalMoney ? "已到企业" : "未到企业"}
+                            </span>
+                          </FormItem>}
+                        </div>}
                   </div>
                   {this.state.bpType !== 1 && this.state.bpType !== 6 ? <div className="clearfix">
                     <FormItem
@@ -1752,16 +1748,16 @@ const MyTaskCount = Form.create()(
           >
             <div className="clearfix">
               <FormItem
-                  className="half-item"
-                  {...formItemLayout}
-                  label="项目状态"
+                className="half-item"
+                {...formItemLayout}
+                label="项目状态"
               >
                 <span>{getProjectName(parseInt(this.state.projectStatus))}</span>
                 <Button
-                    type="primary"
-                    size="small"
-                    style={{ marginTop: '5px', position: 'absolute' }}
-                    onClick={this.caozuorizhi}
+                  type="primary"
+                  size="small"
+                  style={{ marginTop: '5px', position: 'absolute' }}
+                  onClick={this.caozuorizhi}
                 >
                   操作日志
                 </Button>
@@ -1816,9 +1812,9 @@ const MyTaskCount = Form.create()(
               </FormItem>
               {
                 <FormItem
-                    className="half-item"
-                    {...formItemLayout}
-                    label="(满意度)备注"
+                  className="half-item"
+                  {...formItemLayout}
+                  label="(满意度)备注"
                 >
                   <span>{this.state.retrieveContent}</span>
                 </FormItem>
@@ -1830,23 +1826,23 @@ const MyTaskCount = Form.create()(
             {/*软著显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
             {this.state.bpType === 2 ? <div className="clearfix">
               <FormItem
-                  className="half-item"
-                  {...formItemLayout}
-                  label="加急天数"
+                className="half-item"
+                {...formItemLayout}
+                label="加急天数"
               >
                 {
                   this.state.urgentDay === 1 ? '是' :
-                      this.state.urgentDay === 0 ? '否' : ''
+                    this.state.urgentDay === 0 ? '否' : ''
                 }
               </FormItem>
               <FormItem
-                  className="half-item"
-                  {...formItemLayout}
-                  label="有无材料"
+                className="half-item"
+                {...formItemLayout}
+                label="有无材料"
               >
                 {
-                  this.state.ifMaterial === 1 ? '是':
-                      this.state.ifMaterial === 0 ? '否': ''
+                  this.state.ifMaterial === 1 ? '是' :
+                    this.state.ifMaterial === 0 ? '否' : ''
                 }
               </FormItem>
             </div> : null}
@@ -1854,14 +1850,14 @@ const MyTaskCount = Form.create()(
               <div style={{
                 paddingLeft: '8%',
               }}>
-                <div style={{color:'#000',fontWeight:500}}>
+                <div style={{ color: '#000', fontWeight: 500 }}>
                   特别说明
-                  <span style={{color: '#58a3ff',}}>(针对项目的特殊情况说明)</span>
+                  <span style={{ color: '#58a3ff', }}>(针对项目的特殊情况说明)</span>
                 </div>
                 <div style={{
-                  display:'flex',
+                  display: 'flex',
                 }}>
-                  <span style={{paddingRight:'10px',whiteSpace:"nowrap"}}>备注:</span>
+                  <span style={{ paddingRight: '10px', whiteSpace: "nowrap" }}>备注:</span>
                   <span style={{
                     flex: 1,
                     wordBreak: 'break-all',
@@ -1930,9 +1926,9 @@ const MyTaskCount = Form.create()(
               >
                 <span>{this.state.userName}</span>
                 <EnterpriseNameChange
-                    type='journal'
-                    style={{ marginLeft: 10 }}
-                    enterpriseId={this.state.orderUid}/>
+                  type='journal'
+                  style={{ marginLeft: 10 }}
+                  enterpriseId={this.state.orderUid} />
               </FormItem>
               <FormItem
                 className="half-item"
@@ -2063,19 +2059,19 @@ const MyTaskCount = Form.create()(
             <div className="clearfix">
               <h3 className="sub-title">项目申报进度</h3>
               <DeclarationProgress
-                  timeRecordparse={this.state.timeRecordparse}
-                  startDate={this.state.startDate}
-                  taskDate={this.state.taskDate}
-                  list={[
-                    {id:4,name:'完成时间',value:this.state.endDate},
-                    {id:6,name:'受理时间',value:this.state.acceptDate},
-                    {id:8,name:'公示时间',value:this.state.publicityDate},
-                    {id:10,name:'发证时间',value:this.state.licenceDate},
-                    {id:15,name:'立项金额',value:this.state.setUpAmount}
-                  ]}/>
+                timeRecordparse={this.state.timeRecordparse}
+                startDate={this.state.startDate}
+                taskDate={this.state.taskDate}
+                list={[
+                  { id: 4, name: '完成时间', value: this.state.endDate },
+                  { id: 6, name: '受理时间', value: this.state.acceptDate },
+                  { id: 8, name: '公示时间', value: this.state.publicityDate },
+                  { id: 10, name: '发证时间', value: this.state.licenceDate },
+                  { id: 15, name: '立项金额', value: this.state.setUpAmount }
+                ]} />
               {/*高新和科技项目显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
               {/*cSort: 3 科技项目  6: 会员*/}
-              {(this.state.bpType  === 5 || this.state.cSort === 3) && <FormItem
+              {(this.state.bpType === 5 || this.state.cSort === 3) && <FormItem
                 className="half-item"
                 {...formItemLayout}
                 label="申报批次"
@@ -2137,11 +2133,12 @@ const MyTaskCount = Form.create()(
               </Spin>
             </div>
           </Modal>
-          {this.state.addnextVisible && <ProjectDetailsReadOnly
+          {this.state.addnextVisible &&
+            <ProjectDetailsReadOnly
               infor={this.state.dataInfor}
               visible={this.state.addnextVisible}
               onCancel={this.nextCancel}
-          />}
+            />}
         </div>
       );
     }

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

@@ -3222,7 +3222,7 @@ const MyTaskOutsource = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

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

@@ -1019,7 +1019,7 @@ const Task = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

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

@@ -1161,7 +1161,7 @@ const IntentionCustomer = Form.create()(
                 />
                 <Select
                   placeholder="订单部门"
-                  style={{ width: 150, marginRight: 10 }}
+                  style={{ width: 200, marginRight: 10 }}
                   value={this.state.departmenttList}
                   onChange={(e) => {
                     this.setState({ departmenttList: e });

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

@@ -1099,7 +1099,7 @@ const Task = React.createClass({
               />
               <Select
                 placeholder="选择部门"
-                style={{ width: 150, marginRight: "10px" }}
+                style={{ width: 200, marginRight: "10px" }}
                 value={this.state.departmenttSearch}
                 onChange={(e) => {
                   this.setState({ departmenttSearch: e });

File diff suppressed because it is too large
+ 725 - 630
js/component/manageCenter/set/organization/organization.jsx


+ 20 - 0
js/component/tools.js

@@ -116,6 +116,26 @@ import { provinceList } from './NewDicProvinceList.js';
 import ShowModal from './showModal.jsx';
 
 module.exports = {
+  // deepClone: function (data) {
+  //   let type = typeof data;
+  //   let tempValue;
+  //   if (!(type === 'array' || type === 'object')) return data;
+  //   if (type === 'array') {
+  //     tempValue = [];
+  //     data.forEach((item) => {
+  //       tempValue.push(deepClone(item));
+  //     })
+  //     return tempValue;
+  //   } else if (type === 'object') {
+  //     tempValue = {};
+  //     for (const key in data) {
+  //       if (data.hasOwnProperty(key)) {
+  //         tempValue[key] = deepClone(data[key]);
+  //       }
+  //     }
+  //     return tempValue;
+  //   }
+  // },
   onReplace: function (val) {
     let text = val.replace(/ /gm, ' ⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤ ⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤⁠⁡ ⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤ ⁠⁡⁢⁣⁤⁠⁡⁢⁣⁤ ⁠⁡⁢⁣⁠⁡⁢⁣⁤⁠')
     return text

+ 1 - 1
package.json

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

+ 1 - 0
webpack.config.js

@@ -398,3 +398,4 @@ module.exports = (function () {
         },
     }
 })()
+