dev01 2 月之前
父节点
当前提交
6869fd69e8
共有 33 个文件被更改,包括 2429 次插入641 次删除
  1. 1 1
      js/component/account/set/changeMobile.jsx
  2. 1 1
      js/component/account/set/group.jsx
  3. 1 1
      js/component/certify/personal.jsx
  4. 551 489
      js/component/common/enterpriseNameChange/inforChange.jsx
  5. 10 10
      js/component/common/flowchart/index.jsx
  6. 1 2
      js/component/common/staffSearch/index.jsx
  7. 1 1
      js/component/groupCertify/personal.jsx
  8. 1 1
      js/component/login/forgetPw.jsx
  9. 2 2
      js/component/login/loginFooter.jsx
  10. 4 1
      js/component/login/loginTop.jsx
  11. 2 2
      js/component/manageCenter/bottom.jsx
  12. 394 4
      js/component/manageCenter/channelList/channelunit/detail/contactPerson.jsx
  13. 587 0
      js/component/manageCenter/customer/NEW/crm/customerProfile.jsx
  14. 357 0
      js/component/manageCenter/customer/NEW/intentionCustomer/intentionDetail/detail/contactPerson.jsx
  15. 2 0
      js/component/manageCenter/customer/NEW/signCustomer/customer.less
  16. 5 1
      js/component/manageCenter/customer/NEW/signCustomer/followDetail/addContact.jsx
  17. 409 67
      js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/contactPerson.jsx
  18. 12 0
      js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/index.less
  19. 23 1
      js/component/manageCenter/customer/content.jsx
  20. 3 1
      js/component/manageCenter/customer/publicStatistics/detailedList.jsx
  21. 6 6
      js/component/manageCenter/customer/publicSummary/index.jsx
  22. 6 4
      js/component/manageCenter/financialManage/account/accountDetails.jsx
  23. 3 1
      js/component/manageCenter/financialManage/account/accountTotal.jsx
  24. 4 10
      js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx
  25. 16 13
      js/component/manageCenter/order/orderNew/addService.jsx
  26. 15 12
      js/component/manageCenter/order/orderNew/reject.jsx
  27. 4 4
      js/component/manageCenter/project/summary/projectDetails.jsx
  28. 1 1
      js/component/manageCenter/set/userManagementS/newUser.jsx
  29. 2 1
      js/component/manageCenter/topTab.jsx
  30. 2 2
      js/component/portal/footer.jsx
  31. 1 1
      js/component/sign/account.jsx
  32. 1 1
      js/component/sign/groupAccount.jsx
  33. 1 0
      package.json

+ 1 - 1
js/component/account/set/changeMobile.jsx

@@ -66,7 +66,7 @@ const ChangePw = React.createClass({
     },
     newMobileChange(e) {
         this.state.mobile = e.target.value;
-        if (/^1[34578]\d{9}$/.test(this.state.mobile)) {
+        if (/^1[3-9]\d{9}$/.test(this.state.mobile)) {
             this.state.checkMobile = true
         }
     },

+ 1 - 1
js/component/account/set/group.jsx

@@ -113,7 +113,7 @@ const BaseFrom = Form.create()(React.createClass({
     },
     checkPhone(rule, value, callback) {
         const form = this.props.form;
-        if (value && value.length !== 0 && !(/^1[34578]\d{9}$/.test(value))) {
+        if (value && value.length !== 0 && !(/^1[3-9]\d{9}$/.test(value))) {
             callback('请输入正确的手机号码!');
         } else {
             callback();

+ 1 - 1
js/component/certify/personal.jsx

@@ -133,7 +133,7 @@ const Content = Form.create()(React.createClass({
     checkPhone(rule, value, callback) {
         const form = this.props.form;
         const _me = this;
-        if (!(/^1[34578]\d{9}$/.test(value))) {
+        if (!(/^1[3-9]\d{9}$/.test(value))) {
             callback('请输入正确的手机号码!');
             _me.setState({
                 getCodeButton: true

文件差异内容过多而无法显示
+ 551 - 489
js/component/common/enterpriseNameChange/inforChange.jsx


+ 10 - 10
js/component/common/flowchart/index.jsx

@@ -72,7 +72,7 @@ class FlowChart extends Component {
               { status: 1, title: "经理审核", name: !info.yxjl ? "-" : info.yxjl, time: "" },
               { status: 2, title: "营销管理员审核", name: info.yxgly, time: "" },
               { status: 3, title: "财务/复审/技术总监审核", name: info.cwzy, time: "" },
-              { status: 4, title: "运营保障审核 ", name: info.yybz, time: "" },
+              { status: 4, title: "运营保障审核 ", name: info.approval === 0 ? "-" : info.approvalStatus === 0 ? "-" : info.yybz, time: "" },
               { status: 5, title: "特批审核", name: tpname, time: "" },
               { status: 6, title: "技术总监派单", name: info.zxsgly, time: "" },
               { status: 7, title: "技术接单", name: "", time: "" },
@@ -140,7 +140,7 @@ class FlowChart extends Component {
               { status: 5, title: "技术总监审核", name: info.zxsgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.special == 1 ? "-" : info.approvalName },
               { status: 10, title: "董事长审核", name: info.special == 1 ? info.dsz : (info.changeAmount > 0.2 ? info.dsz : "-"), time: "" },
             ]
@@ -154,7 +154,7 @@ class FlowChart extends Component {
               { status: 5, title: "技术总监审核", name: info.zxsgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 2 仅项目
@@ -167,7 +167,7 @@ class FlowChart extends Component {
               { status: 5, title: "技术总监审核", name: info.zxsgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 3 仅金额
@@ -178,7 +178,7 @@ class FlowChart extends Component {
               { status: 5, title: "技术总监审核", name: info.zxsgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 4 重报
@@ -190,7 +190,7 @@ class FlowChart extends Component {
               // { status: 4, title: "技术经理审核", name: info.zxsjl, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 5 赠送
@@ -199,7 +199,7 @@ class FlowChart extends Component {
               { status: 1, title: "经理审核", name: !info.yxjl ? "-" : info.yxjl, time: "" },
               { status: 2, title: "营销管理员审核", name: info.yxgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 6 退单不退款
@@ -212,14 +212,14 @@ class FlowChart extends Component {
               { status: 5, title: "技术总监审核", name: info.zxsgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
               { status: 7, title: "财务总监审核", name: info.cwgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
               { status: 9, title: "公司/部门管理审核", name: info.approvalName, time: "" },
             ]
             // 7 仅变更合同
             let theArr7 = [
               { status: 0, title: "营销员发起", name: info.yxy, time: "" },
               { status: 2, title: "营销管理员审核", name: info.yxgly, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
             ]
 
             // 8 框架协议
@@ -228,7 +228,7 @@ class FlowChart extends Component {
               { status: 1, title: "经理审核", name: !info.yxjl ? "-" : info.yxjl, time: "" },
               { status: 2, title: "营销管理员审核", name: info.yxgly, time: "" },
               { status: 6, title: "财务专员审核", name: info.cwzy, time: "" },
-              { status: 8, title: "运营保障审核", name: info.yybz, time: "" },
+              { status: 8, title: "运营保障审核", name: !info.yybz ? "-" : info.yybz, time: "" },
             ]
 
             theArr = info.type == 0

+ 1 - 2
js/component/common/staffSearch/index.jsx

@@ -85,8 +85,7 @@ class StaffSearch extends Component {
         style={{ width: this.props.width || '200px' }}
         dataSource={options}
         placeholder={this.props.placeholder}
-        value={this.props.valueName}
-        // value={this.state.superior ? this.state.superior : this.props.valueName}
+        value={this.state.superior ? this.state.superior : this.props.valueName}
         onChange={this.httpChange}
         filterOption={true}
         onSelect={this.selectAuto}

+ 1 - 1
js/component/groupCertify/personal.jsx

@@ -181,7 +181,7 @@ const Content = Form.create()(React.createClass({
     checkPhone(rule, value, callback) {
         const form = this.props.form;
         const _me = this;
-        if (!(/^1[34578]\d{9}$/.test(value))) {
+        if (!(/^1[3-9]\d{9}$/.test(value))) {
             callback('请输入正确的手机号码!');
             _me.setState({
                 getCodeButton: true

+ 1 - 1
js/component/login/forgetPw.jsx

@@ -81,7 +81,7 @@ const ChangePw = React.createClass({
     },
     newMobileChange(e) {
         this.state.mobile = e.target.value;
-        if (/^1[34578]\d{9}$/.test(this.state.mobile)) {
+        if (/^1[3-9]\d{9}$/.test(this.state.mobile)) {
             this.state.checkMobile = true
         }
     },

+ 2 - 2
js/component/login/loginFooter.jsx

@@ -5,8 +5,8 @@ const LoginFooter = React.createClass({
     render() {
         return (
             <div className="footer">
-                <p>Copyright © 2016-2017 阿凡提 版权所有</p>
-                <p>技术支持:湖南阿凡提科技有限公司</p>
+                <p>Copyright © 2016-2024 科德集团 版权所有</p>
+                <p>技术支持:湖南科德信息咨询集团有限公司</p>
             </div>
         )
     }

+ 4 - 1
js/component/login/loginTop.jsx

@@ -16,7 +16,10 @@ const LoginTop = React.createClass({
           </div>
 
           <div className="logo-text">
-            <span>科技交易认知计算平台</span>
+            <span>
+              {/* 科技交易认知计算平台 */}
+              科德人力资源服务管理系统V1.0
+            </span>
             <span className="back">
               {/* <a href={jumpUrl + "/portal/index.html"}>返回首页</a> */}
               <a href={globalConfig.context + "/RD/admin/login"}>前往RD库</a>

+ 2 - 2
js/component/manageCenter/bottom.jsx

@@ -8,8 +8,8 @@ const Bottom = React.createClass({
             className="account-bottom"
             style={{ background: "rgb(0,0,0,.5)", color: "white" }}
           >
-            <p>阿凡提科技</p>
-            <p>技术支持@阿凡提</p>
+            <p>科德集团</p>
+            <p>技术支持@科德</p>
           </div>
         );
     }

+ 394 - 4
js/component/manageCenter/channelList/channelunit/detail/contactPerson.jsx

@@ -10,6 +10,9 @@ import {
   Input,
   Cascader,
   Select,
+  InputNumber,
+  AutoComplete,
+  Tag
 } from "antd";
 import $ from "jquery/src/ajax";
 import AddContact from "../../../customer/NEW/signCustomer/followDetail/addContact";
@@ -194,6 +197,9 @@ const ContactPerson = React.createClass({
       dataArrar: [],
       newintroduction: "",
       newtype: 0,
+      enterpriseCount: 0,
+      channelIndicators: "",
+      cooperationProjects: [],
     };
   },
   //tab2删除
@@ -334,7 +340,11 @@ const ContactPerson = React.createClass({
       locationProvince: (data.province || "") + (!data.city ? "" : "-") + (data.city || "") + (!data.area ? "" : "-") + (data.area || ""),
       introduction: this.props.data.introduction,
       type: this.props.data.type,
+      enterpriseCount: this.props.data.enterpriseCount,
+      channelIndicators: this.props.data.channelIndicators,
+      intendedProject: this.props.data.intendedProject,
     });
+    this.queryByUid(this.props.data.id)
   },
   componentWillReceiveProps(nextProps) {
     // if (nextProps.data.id && nextProps.contactState) {
@@ -342,6 +352,84 @@ const ContactPerson = React.createClass({
       this.contactLists(nextProps.data.id);
     }
   },
+
+  // 查询企业信息
+  queryByUid() {
+    this.setState({
+      loading: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/queryByUid",
+      data: {
+        id: this.props.data.id,
+      },
+      success: function (data) {
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          this.setState({
+            interviewDistribution: data.data.interviewDistribution,
+            interviewIdeas: data.data.interviewIdeas,
+            // detail: data.data
+          })
+        }
+      }.bind(this)
+    }).always(
+      function () {
+        this.setState({
+          loading: false
+        });
+      }.bind(this)
+    );
+  },
+
+  supervisor(value) {
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + '/api/admin/order/getBusinessProjectByName',
+      data: {
+        businessName: value
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (data.error.length === 0) {
+          this.setState({
+            cooperationProjects: thedata,
+          });
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this),
+    }).always(
+      function () {
+
+      }.bind(this)
+    );
+  },
+  onSelect(value) {
+    let arr = this.state.cooperationProjects.filter(v => v.id === value);
+    let arr1 = this.state.dataArrar.filter(v => v.value === value);
+    if (arr.length > 0) {
+      if (arr1.length > 0) {
+        message.warning('选项已存在');
+      } else {
+        this.state.dataArrar.push({
+          label: arr[0].bname,
+          value: arr[0].id,
+        })
+        this.setState({
+          dataArrar: this.state.dataArrar
+        })
+      }
+    }
+  },
   // 修改渠道名称
   onOk() {
     if (!this.state.newname) {
@@ -377,7 +465,7 @@ const ContactPerson = React.createClass({
   },
   // 修改信息
   updateDate() {
-    const { dataArrar, visible, newintroduction, newtype } = this.state;
+    const { dataArrar, visible, newintroduction, newtype, newenterpriseCount, newchannelIndicators, newinterviewIdeas, newinterviewDistribution } = this.state;
     if (dataArrar.length === 0 && visible == "city") {
       message.warning("请选择省-市-区");
       return;
@@ -390,6 +478,26 @@ const ContactPerson = React.createClass({
       message.warning("请选择渠道类别");
       return;
     }
+    if (!newenterpriseCount && newenterpriseCount != 0 && visible == "enterpriseCount") {
+      message.warning("请输入渠道覆盖企业数");
+      return;
+    }
+    if (!newchannelIndicators && visible == "channelIndicators") {
+      message.warning("请输入渠道考核标准");
+      return;
+    }
+    if (dataArrar.length == 0 && visible == "intendedProject") {
+      message.warning("请输入面谈项目");
+      return;
+    }
+    if (!newinterviewIdeas && visible == "interviewIdeas") {
+      message.warning("请输入面谈思路及目的");
+      return;
+    }
+    if (!newinterviewDistribution && visible == "interviewDistribution") {
+      message.warning("请输入我方主要面谈及分工");
+      return;
+    }
     this.setState({
       loading: true,
     });
@@ -407,8 +515,32 @@ const ContactPerson = React.createClass({
     if (visible == "type") {
       data.channelType = newtype;
     }
+    if (visible == "enterpriseCount") {
+      data.enterpriseCount = newenterpriseCount;
+    }
+    if (visible == "channelIndicators") {
+      data.channelIndicators = newchannelIndicators
+    }
+    if (visible == "intendedProject") {
+      let arr = [];
+      for (let i of dataArrar) {
+        arr.push(i.label)
+      }
+      data.intendedProject = arr.join(',')
+    }
+    if (visible == "interviewIdeas") {
+      data.interviewIdeas = newinterviewIdeas
+    }
+    if (visible == "interviewDistribution") {
+      data.interviewDistribution = newinterviewDistribution
+    }
     $.ajax({
-      url: globalConfig.context + "/api/admin/customer/updateUserDate",
+      url: globalConfig.context +
+        visible == "channelIndicators"
+        ? "/api/admin/userArchives/update" : visible == "enterpriseCount"
+          ? "/api/admin/userArchives/update" : visible == "interviewIdeas"
+            ? "/api/admin/userArchives/update" : visible == "interviewDistribution"
+              ? "/api/admin/userArchives/update" : "/api/admin/customer/updateUserDate",
       method: "post",
       data: data,
     }).done(
@@ -440,6 +572,35 @@ const ContactPerson = React.createClass({
               type: newtype,
             });
           }
+          if (visible == "enterpriseCount") {
+            this.setState({
+              enterpriseCount: newenterpriseCount,
+            });
+          }
+          if (visible == "channelIndicators") {
+            this.setState({
+              channelIndicators: newchannelIndicators,
+            });
+          }
+          if (visible == "intendedProject") {
+            let arr = [];
+            for (let i of dataArrar) {
+              arr.push(i.label)
+            }
+            this.setState({
+              intendedProject: arr.join(',')
+            })
+          }
+          if (visible == "interviewIdeas") {
+            this.setState({
+              interviewIdeas: newinterviewIdeas,
+            });
+          }
+          if (visible == "interviewDistribution") {
+            this.setState({
+              interviewDistribution: newinterviewDistribution,
+            });
+          }
         } else {
           message.warning(data.error[0].message);
         }
@@ -447,6 +608,11 @@ const ContactPerson = React.createClass({
     );
   },
 
+  handleCloseCooperation(removedTag) {
+    let dataArrar = this.state.dataArrar.filter(tag => { return tag.value !== removedTag.value });
+    this.setState({ dataArrar });
+  },
+
   render() {
     const { visible } = this.state;
     return (
@@ -535,7 +701,37 @@ const ContactPerson = React.createClass({
                   onClick={() => {
                     this.setState({
                       visible: "introduction",
-                      newintroduction: [],
+                      newintroduction: "",
+                    });
+                  }}
+                >
+                  修改
+                </Button>
+              </div>
+              <div style={{ padding: "5px 0" }}>
+                <span>渠道覆盖企业数:{this.state.enterpriseCount}</span>
+                <Button
+                  type="primary"
+                  style={{ marginLeft: "20px" }}
+                  onClick={() => {
+                    this.setState({
+                      visible: "enterpriseCount",
+                      newenterpriseCount: "",
+                    });
+                  }}
+                >
+                  修改
+                </Button>
+              </div>
+              <div style={{ padding: "5px 0" }}>
+                <span>渠道考核指标:{this.state.channelIndicators}</span>
+                <Button
+                  type="primary"
+                  style={{ marginLeft: "20px" }}
+                  onClick={() => {
+                    this.setState({
+                      visible: "channelIndicators",
+                      newchannelIndicators: "",
                     });
                   }}
                 >
@@ -561,6 +757,68 @@ const ContactPerson = React.createClass({
             />
           </Spin>
         </div>
+
+        <div style={{
+          fontSize: 14,
+          marginTop: 20,
+        }}>
+          <div style={{ fontWeight: "bold", marginBottom: 5, color: "#58A3FF" }}>面谈的渠道情况</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            面谈项目&nbsp;&nbsp;&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: "intendedProject",
+                    dataArrar: [],
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{this.state.intendedProject || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            面谈思路及目的&nbsp;&nbsp;&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: "interviewIdeas",
+                    newinterviewIdeas: "",
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{this.state.interviewIdeas || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            我方主要面谈人及分工&nbsp;&nbsp;&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: "interviewDistribution",
+                    newinterviewDistribution: "",
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{this.state.interviewDistribution || "无"}</div>
+        </div>
+
         {/* 新增联系人 */}
         <AddContact
           addcontactModul={this.state.addcontactModul}
@@ -694,7 +952,139 @@ const ContactPerson = React.createClass({
                 </div>
               </div>
             )}
-
+            {visible == "enterpriseCount" && (
+              <div className="enterpriseNameContent">
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改前:</div>
+                  <div className="enterpriseNameValue">{this.state.enterpriseCount}</div>
+                </div>
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改后:</div>
+                  <div className="enterpriseNameValue">
+                    <InputNumber
+                      value={this.state.newenterpriseCount}
+                      onChange={(e) => {
+                        this.setState({
+                          newenterpriseCount: e,
+                        });
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            )}
+            {visible == "channelIndicators" && (
+              <div className="enterpriseNameContent">
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改前:</div>
+                  <div className="enterpriseNameValue">
+                    {this.state.channelIndicators}
+                  </div>
+                </div>
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改后:</div>
+                  <div className="enterpriseNameValue">
+                    <TextArea
+                      style={{ width: "200px" }}
+                      value={this.state.newchannelIndicators}
+                      onChange={(e) => {
+                        this.setState({
+                          newchannelIndicators: e.target.value,
+                        });
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            )}
+            {visible == "intendedProject" && (
+              <div className="enterpriseNameContent">
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">意向合作项目:</div>
+                  <div className="enterpriseNameValue">
+                    {this.state.intendedProject}
+                  </div>
+                </div>
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改后:</div>
+                  <div className="enterpriseNameValue">
+                    <div style={{ paddingBottom: this.state.dataArrar.length === 0 ? 0 : '10px' }}>
+                      {this.state.dataArrar.map((tag, index) => {
+                        const isLongTag = tag.label.length > 20;
+                        const tagElem = (
+                          <Tag closable key={tag.label} afterClose={() => this.handleCloseCooperation(tag)}>
+                            {isLongTag ? `${tag.label.slice(0, 20)}...` : tag.label}
+                          </Tag>
+                        );
+                        return isLongTag ? <Tooltip title={tag.label} key={tag.label}>{tagElem}</Tooltip> : tagElem;
+                      })}
+                    </div>
+                    <div>
+                      <AutoComplete
+                        style={{ width: 200 }}
+                        onSearch={this.supervisor}
+                        onSelect={this.onSelect}
+                        placeholder="请输入关键字"
+                      >
+                        {
+                          this.state.cooperationProjects.map(function (item) {
+                            return <Select.Option key={item.id} value={item.id}>{item.bname}</Select.Option>
+                          })
+                        }
+                      </AutoComplete>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            )}
+            {visible == "interviewIdeas" && (
+              <div className="enterpriseNameContent">
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改前:</div>
+                  <div className="enterpriseNameValue">
+                    {this.state.interviewIdeas}
+                  </div>
+                </div>
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改后:</div>
+                  <div className="enterpriseNameValue">
+                    <TextArea
+                      style={{ width: "200px" }}
+                      value={this.state.newinterviewIdeas}
+                      onChange={(e) => {
+                        this.setState({
+                          newinterviewIdeas: e.target.value,
+                        });
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            )}
+            {visible == "interviewDistribution" && (
+              <div className="enterpriseNameContent">
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改前:</div>
+                  <div className="enterpriseNameValue">
+                    {this.state.interviewDistribution}
+                  </div>
+                </div>
+                <div className="enterpriseNameItem">
+                  <div className="enterpriseNameTitle">更改后:</div>
+                  <div className="enterpriseNameValue">
+                    <TextArea
+                      style={{ width: "200px" }}
+                      value={this.state.newinterviewDistribution}
+                      onChange={(e) => {
+                        this.setState({
+                          newinterviewDistribution: e.target.value,
+                        });
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            )}
             <Popconfirm
               placement="top"
               title="确定要修改吗?"

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

@@ -0,0 +1,587 @@
+import React from 'react';
+import {
+  Tooltip,
+  Button,
+  AutoComplete,
+  Input,
+  Select,
+  Spin,
+  Table,
+  message,
+  Form,
+  Tabs,
+} from 'antd';
+import $ from 'jquery/src/ajax';
+import { ShowModal, } from "@/tools.js";
+import { industry } from "@/dataDic.js"
+import ShowModalDiv from "@/showModal.jsx";
+import { ChooseList } from "../../../order/orderNew/chooseList";
+import MainBusinessLog from './mainBusinessLog';
+
+import './customer.less';
+
+const TabPane = Tabs.TabPane;
+
+const IntentionCustomer = Form.create()(React.createClass({
+
+  getInitialState() {
+    return {
+      searchInfor: {},
+      fjlist: [],
+      loading: false,
+      visible: false,
+      changeList: undefined,
+      uid: '',
+      dataSource: [],
+      pagination: {
+        defaultCurrent: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return '共' + total + '条数据';
+        }
+      },
+      columns: [{
+        title: '客户名称',
+        dataIndex: 'nickname',
+        key: 'nickname',
+        fixed: 'left',
+        width: 200,
+        render: text => {
+          return (
+            <Tooltip title={text}>
+              <div>{text}</div>
+            </Tooltip>
+          )
+        }
+      },
+      {
+        title: '地区',
+        dataIndex: 'area',
+        key: 'area',
+        width: 150,
+        render: (text, record) => {
+          return (record.province || "") + (!record.city ? "" : "-") + (record.city || "") + (!record.area ? "" : "-") + (record.area || "");
+        },
+      },
+      {
+        title: '客户类型',
+        dataIndex: 'shareType',
+        key: 'shareType',
+        render: text => {
+          return (
+            <div>{["私有客户", "公共客户", "签单客户", "外联客户"][text]}</div>
+          )
+        }
+      },
+      {
+        title: '主营产品',
+        dataIndex: 'businessScope',
+        key: 'businessScope',
+        width: 200,
+      },
+      {
+        title: '行业',
+        dataIndex: 'industry',
+        key: 'industry',
+      },
+      {
+        title: '联系人',
+        dataIndex: 'contactName',
+        key: 'contactName',
+      },
+      {
+        title: '所属人',
+        dataIndex: 'adminName',
+        key: 'adminName',
+      },
+      {
+        title: '意向合作项目',
+        dataIndex: 'intendedProject',
+        key: 'intendedProject'
+      },
+      {
+        title: '知产情况',
+        dataIndex: 'patentCount',
+        key: 'patentCount',
+        width: 220,
+        render: (text, record) => {
+          return (
+            <div>
+              专利&nbsp;{text || 0}&nbsp;
+              其中发明专利&nbsp;{record.inventionPatentCount || 0}&nbsp;
+              实用新型&nbsp;{record.utilityModelCount || 0}&nbsp;
+              外观设计&nbsp;{record.appearancePatentCount || 0}&nbsp;
+              软著&nbsp;{record.softwareWorksCount || 0}&nbsp;
+              其他类型&nbsp;{record.otherCount || 0}
+            </div>
+          )
+        }
+      },
+      {
+        title: '财务数据',
+        dataIndex: 'financialData',
+        key: 'financialData',
+        width: 200,
+      },
+      {
+        title: '前期沟通',
+        dataIndex: 'earlyCommunication',
+        key: 'earlyCommunication',
+        width: 200,
+      },
+      {
+        title: '面谈思路及目的',
+        dataIndex: 'interviewIdeas',
+        key: 'interviewIdeas',
+        width: 200,
+      },
+      {
+        title: '所属部门',
+        dataIndex: 'depName',
+        key: 'depName',
+      },
+      {
+        title: '操作',
+        dataIndex: 'id',
+        key: 'id',
+        render: text => {
+          return (
+            <div>
+              <Button
+                onClick={(e) => {
+                  e.stopPropagation();
+                  this.setState({
+                    visible: true,
+                    uid: text
+                  })
+                }} type="primary" style={{ marginLeft: '10px' }}>主营日志</Button>
+            </div>
+          )
+        }
+      }
+      ],
+      columnsX: [
+        {
+          title: '客户名称',
+          dataIndex: 'nickname',
+          key: 'nickname',
+          fixed: 'left',
+          width: 200,
+          render: text => {
+            return (
+              <Tooltip title={text}>
+                <div>{text}</div>
+              </Tooltip>
+            )
+          }
+        },
+        {
+          title: '地区',
+          dataIndex: 'area',
+          key: 'area',
+          width: 150,
+          render: (text, record) => {
+            return (record.province || "") + (!record.city ? "" : "-") + (record.city || "") + (!record.area ? "" : "-") + (record.area || "");
+          },
+        },
+        {
+          title: '客户类型',
+          dataIndex: 'shareType',
+          key: 'shareType',
+          render: text => {
+            return (
+              <div>{["私有客户", "公共客户", "签单客户", "外联客户"][text]}</div>
+            )
+          }
+        },
+        {
+          title: '渠道类别',
+          dataIndex: 'channelType',
+          key: 'channelType',
+          render: text => {
+            return (
+              <div>{["", "其他", "民主党派", "园区", "民间组织", "战略合作单位"][text]}</div>
+            )
+          }
+        },
+        {
+          title: '企业数',
+          dataIndex: 'enterpriseCount',
+          key: 'enterpriseCount',
+        },
+        {
+          title: '联系人',
+          dataIndex: 'contactName',
+          key: 'contactName',
+        },
+        {
+          title: '所属人',
+          dataIndex: 'adminName',
+          key: 'adminName',
+        },
+        {
+          title: '面谈项目',
+          dataIndex: 'intendedProject',
+          key: 'intendedProject',
+          width: 200,
+        },
+        {
+          title: '考核指标',
+          dataIndex: 'channelIndicators',
+          key: 'channelIndicators',
+          width: 200,
+        },
+        {
+          title: '面谈思路及目的',
+          dataIndex: 'interviewIdeas',
+          key: 'interviewIdeas',
+          width: 200,
+        },
+        {
+          title: '面谈人及分工',
+          dataIndex: 'interviewDistribution',
+          key: 'interviewDistribution',
+          width: 200,
+        },
+        {
+          title: '所属部门',
+          dataIndex: 'depName',
+          key: 'depName',
+        },
+        {
+          title: '操作',
+          dataIndex: 'id',
+          key: 'id',
+          render: text => {
+            return (
+              <div>
+                <Button
+                  onClick={(e) => {
+                    e.stopPropagation();
+                    this.setState({
+                      visible: true,
+                      uid: text
+                    })
+                  }} type="primary" style={{ marginLeft: '10px' }}>主营日志</Button>
+              </div>
+            )
+          }
+        }
+      ],
+      dataSource: [],
+    };
+  },
+
+  componentWillMount() {
+    this.loadData();
+  },
+
+  componentWillReceiveProps(nextProps) {
+    if (nextProps.newChannel !== this.props.newChannel) {
+      this.setState({
+        changeList: undefined
+      })
+      this.reset();
+    }
+  },
+
+  loadData(pageNo) {
+    const { searchInfor, pagination } = this.state;
+    this.setState({
+      loading: true,
+    });
+    let datas = Object.assign(searchInfor, {
+      newChannel: this.props.newChannel,
+      pageNo: pageNo || 1,
+      pageSize: pagination.pageSize,
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/selectUserArchives",
+      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)
+    );
+  },
+
+  followUp(e) {
+    const { searchInfor } = this.state;
+    this.setState({
+      searchInfor: Object.assign(searchInfor, {
+        aname: e,
+      }),
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/listAdminByName",
+      data: {
+        adminName: e,
+      },
+      success: function (data) {
+        let thedata = data.data;
+        if (!thedata) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+          thedata = {};
+        }
+        this.setState({
+          fjlist: thedata,
+        });
+      }.bind(this),
+    }).always(
+      function () {
+        this.setState({
+          loading: false,
+        });
+      }.bind(this)
+    );
+  },
+
+  selectF(value) {
+    const { searchInfor, fjlist } = this.state;
+    const newdataSources = JSON.stringify(fjlist) == "{}" ? [] : fjlist;
+    this.setState({
+      searchInfor: Object.assign(searchInfor, {
+        aid: newdataSources.find((item) => item.name == value).id,
+      }),
+    });
+  },
+
+  changeList(arr) {
+    const newArr = [];
+    let list = this.props.newChannel == 1
+      ? this.state.columnsX
+      : this.state.columns
+    list.forEach((item) => {
+      arr.forEach((val) => {
+        if (val === item.title) {
+          newArr.push(item);
+        }
+      });
+    });
+    this.setState({
+      changeList: newArr,
+    });
+  },
+
+  search() {
+    this.loadData();
+  },
+
+  reset() {
+    this.setState({
+      searchInfor: JSON.parse(JSON.stringify({})),
+    }, () => {
+      this.loadData();
+    })
+  },
+
+  render() {
+    const { searchInfor } = this.state
+    const { newChannel } = this.props
+    const newdataSources =
+      JSON.stringify(this.state.fjlist) == "{}" ? [] : this.state.fjlist;
+    const newoptions = newdataSources.map((group) => (
+      <Select.Option key={group.id} value={group.name}>
+        {group.name}
+      </Select.Option>
+    ));
+    return (
+      <div className="user-content">
+        <ShowModalDiv ShowModal={this.state.showModal} onClose={() => { this.setState({ showModal: false }) }} />
+        <div className="content-title" style={{ marginBottom: 10 }}>
+          <span style={{ fontWeight: 900, fontSize: 16 }}>{newChannel == 1 ? "渠道档案汇总" : "客户档案汇总"}</span>
+        </div>
+        <div className="user-search">
+          <Tabs
+            defaultActiveKey="1"
+            className="test">
+            <TabPane tab="搜索" key="1" style={{ paddingTop: '10px' }}>
+              <Input
+                placeholder={newChannel == 1 ? "渠道名称" : "客户名称"}
+                value={searchInfor.name || undefined}
+                style={{ width: 150, marginRight: 10 }}
+                onChange={e => {
+                  this.setState({
+                    searchInfor: Object.assign(searchInfor, {
+                      name: e.target.value,
+                    }),
+                  });
+                }}
+              />
+              <AutoComplete
+                className="certain-category-search"
+                dropdownClassName="certain-category-search-dropdown"
+                dropdownMatchSelectWidth={false}
+                style={{ width: "150px" }}
+                dataSource={newoptions}
+                placeholder="所属人"
+                value={searchInfor.aname || undefined}
+                onChange={this.followUp.bind(this)}
+                filterOption={true}
+                onSelect={this.selectF.bind(this)}
+              >
+                <Input />
+              </AutoComplete>
+              {newChannel == 1 &&
+                <Select
+                  mode="multiple"
+                  placeholder={"请选择渠道类别"}
+                  style={{ width: 200 }}
+                  value={searchInfor.channelType ? searchInfor.channelType.split(",") : undefined}
+                  onChange={(e) => {
+                    this.setState({
+                      searchInfor: Object.assign(searchInfor, {
+                        channelType: e.toString(),
+                      }),
+                    });
+                  }}
+                >
+                  {[
+                    { name: "民主党派", val: 2 },
+                    { name: "园区", val: 3 },
+                    { name: "民间组织", val: 4 },
+                    { name: "战略合作单位", val: 5 },
+                    { name: "其他", val: 1 },].map((it, ins) => (
+                      <Option key={it.val}>{it.name}</Option>
+                    ))}
+                </Select>}
+              {newChannel == 0 && <Input
+                placeholder="产品关键字"
+                value={searchInfor.businessScope || undefined}
+                style={{ width: 150, marginRight: 10 }}
+                onChange={e => {
+                  this.setState({
+                    searchInfor: Object.assign(searchInfor, {
+                      businessScope: e.target.value,
+                    }),
+                  });
+                }}
+              />}
+              {newChannel == 0 &&
+                <Select
+                  mode="multiple"
+                  placeholder={"请选择行业"}
+                  style={{ width: 200 }}
+                  value={searchInfor.industry ? searchInfor.industry.split(",") : undefined}
+                  onChange={(e) => {
+                    this.setState({
+                      searchInfor: Object.assign(searchInfor, {
+                        industry: e.toString(),
+                      }),
+                    });
+                  }}
+                >
+                  {industry.map((it, ins) => (
+                    <Option key={it.value}>{it.key}</Option>
+                  ))}
+                </Select>}
+              <Select
+                placeholder={"请选择客户类型"}
+                style={{ width: 150 }}
+                value={searchInfor.shareType}
+                onChange={(e) => {
+                  this.setState({
+                    searchInfor: Object.assign(searchInfor, {
+                      shareType: e,
+                    }),
+                  });
+                }}
+              >
+                <Option value="">全部客户</Option>
+                <Option value="0">私有客户</Option>
+                <Option value="1">公共客户</Option>
+                <Option value="2">签单客户</Option>
+                <Option value="3">外联客户</Option>
+              </Select>
+              <Button type="primary" onClick={this.search} style={{ marginRight: 10 }}>
+                搜索
+              </Button>
+              <Button onClick={this.reset}>重置</Button>
+            </TabPane>
+            <TabPane tab="更改表格显示数据" key="2">
+              <div style={{ marginLeft: 10 }}>
+                <ChooseList
+                  columns={newChannel == 1 ? this.state.columnsX : this.state.columns}
+                  changeFn={this.changeList}
+                  changeList={this.state.changeList}
+                  top={55}
+                  margin={11}
+                />
+              </div>
+            </TabPane>
+          </Tabs>
+        </div>
+        <div className="patent-table">
+          <Spin spinning={this.state.loading}>
+            <Table
+              columns={this.state.changeList
+                ? this.state.changeList
+                : newChannel == 1
+                  ? this.state.columnsX
+                  : this.state.columns}
+              dataSource={this.state.dataSource}
+              pagination={this.state.pagination}
+              bordered
+              scroll={{ x: newChannel == 0 ? "130%" : "120%" }}
+            />
+          </Spin>
+        </div>
+        {this.state.visible &&
+          <MainBusinessLog
+            visible={this.state.visible}
+            uid={this.state.uid}
+            onCancel={() => {
+              this.setState({
+                visible: false,
+                uid: ''
+              })
+            }}
+          />}
+      </div>
+    );
+  }
+}));
+export default IntentionCustomer;

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

@@ -6,14 +6,22 @@ import {
   message,
   Popconfirm,
   Alert,
+  Modal,
+  Input,
+  InputNumber,
 } from "antd";
 import $ from "jquery/src/ajax";
 import EnterpriseNameChange from '../../../../../../../component/common/enterpriseNameChange';
 import AddContact from "../../../signCustomer/followDetail/addContact";
 
+const { TextArea } = Input;
 const ContactPerson = React.createClass({
   getInitialState() {
     return {
+      upType: 0,
+      visible: false,
+      upData: {},
+      detail: {},
       major: 0,
       loading: false,
       addcontactModul: false,
@@ -296,6 +304,7 @@ const ContactPerson = React.createClass({
   },
   componentWillMount() {
     this.contactLists(this.props.data.id);
+    this.queryByUid(this.props.data.id)
   },
   detailsModal() {
     this.props.closeDetail(false, false);
@@ -305,7 +314,77 @@ const ContactPerson = React.createClass({
       this.contactLists(nextProps.data.id);
     }
   },
+  // 查询企业信息
+  queryByUid() {
+    this.setState({
+      loading: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/queryByUid",
+      data: {
+        id: this.props.data.id,
+      },
+      success: function (data) {
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          this.setState({
+            detail: data.data
+          })
+        }
+      }.bind(this)
+    }).always(
+      function () {
+        this.setState({
+          loading: false
+        });
+      }.bind(this)
+    );
+  },
+  // 修改
+  update() {
+    const { upData } = this.state
+    $.ajax({
+      method: "post",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/update",
+      data: upData,
+      success: function (data) {
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          message.success("修改成功!")
+          this.queryByUid()
+          this.setState({
+            visible: false
+          })
+        }
+      }.bind(this)
+    }).always(
+      function () {
+        this.setState({
+          loading: false
+        });
+      }.bind(this)
+    );
+  },
+  onUpCancel() {
+    this.setState({
+      visible: false
+    })
+  },
+
+
   render() {
+    const { detail, upType, upData } = this.state
     return (
       <div>
         <div className="clearfix">
@@ -350,6 +429,117 @@ const ContactPerson = React.createClass({
             />
           </Spin>
         </div>
+
+        <div style={{
+          fontSize: 14,
+          marginTop: 20,
+        }}>
+          <div style={{ fontWeight: "bold", marginBottom: 5, color: "#58A3FF" }}>企业情况及前期准备工作</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            1.知识产权情况&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: true,
+                    upType: 1,
+                    upData: {
+                      uid: this.props.data.id,
+                      id: detail.id || undefined,
+                      inventionPatentCount: detail.inventionPatentCount,
+                      utilityModelCount: detail.utilityModelCount,
+                      appearancePatentCount: detail.appearancePatentCount,
+                      softwareWorksCount: detail.softwareWorksCount,
+                      otherCount: detail.otherCount,
+                    }
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>
+            专利总数&nbsp;{detail.patentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            发明专利&nbsp;{detail.inventionPatentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            实用新型&nbsp;{detail.utilityModelCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            外观专利&nbsp;{detail.appearancePatentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            软著&nbsp;{detail.softwareWorksCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            其他&nbsp;{detail.otherCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+          </div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            2.财务数据<span style={{ color: "red" }}>(包括营收、税收、资产、研发费用等)</span>&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: true,
+                    upType: 2,
+                    upData: {
+                      uid: this.props.data.id,
+                      id: detail.id || undefined,
+                      financialData: detail.financialData,
+                    }
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.financialData || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            3.前期沟通<span style={{ color: "red" }}>(客户的难处、需求)</span>&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: true,
+                    upType: 3,
+                    upData: {
+                      uid: this.props.data.id,
+                      id: detail.id || undefined,
+                      earlyCommunication: detail.earlyCommunication,
+                    }
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.earlyCommunication || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            4.面谈思路及目的&nbsp;&nbsp;
+            {
+              !this.props.isCustomerAdmin &&
+              <Button
+                type="primary"
+                onClick={() => {
+                  this.setState({
+                    visible: true,
+                    upType: 4,
+                    upData: {
+                      uid: this.props.data.id,
+                      id: detail.id || undefined,
+                      interviewIdeas: detail.interviewIdeas,
+                    }
+                  })
+                }}
+              >
+                修改
+              </Button>
+            }
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.interviewIdeas || "无"}</div>
+        </div>
+
         {/* 新增联系人 */}
         <AddContact
           addcontactModul={this.state.addcontactModul}
@@ -362,6 +552,173 @@ const ContactPerson = React.createClass({
             })
           }}
         />
+
+        <Modal
+          footer={null}
+          maskClosable={false}
+          width="400px"
+          title='信息修改'
+          visible={this.state.visible}
+          onCancel={this.onUpCancel}
+        >
+          <div>
+            {
+              upType == 1 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>发明专利:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.inventionPatentCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            inventionPatentCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>实用新型:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.utilityModelCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            utilityModelCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>外观专利:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.appearancePatentCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            appearancePatentCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>软著:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.softwareWorksCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            softwareWorksCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>其他:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.otherCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            otherCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 2 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>财务数据:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.financialData}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            financialData: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 3 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>前期沟通:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.earlyCommunication}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            earlyCommunication: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 4 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>面谈思路及目的:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.interviewIdeas}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            interviewIdeas: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+
+            <div>
+              <Button type='primary'
+                onClick={this.update}
+              >
+                确定修改
+              </Button>
+            </div>
+          </div>
+        </Modal>
+
       </div>
     );
   }

+ 2 - 0
js/component/manageCenter/customer/NEW/signCustomer/customer.less

@@ -13,3 +13,5 @@
     margin-right: 40px;
     margin-bottom: 50px;
 }
+
+

+ 5 - 1
js/component/manageCenter/customer/NEW/signCustomer/followDetail/addContact.jsx

@@ -31,7 +31,11 @@ const AddContact = React.createClass({
       message.error("请填写正确的姓名,且至少包含一个汉字");
       return;
     };
-    if (this.state.newmobile.length != 11) {
+    // if (this.state.newmobile.length != 11) {
+    //   message.error('请填写正确的手机号码');
+    //   return
+    // }
+    if (!(/^1[3-9]\d{9}$/.test(this.state.newmobile))) {
       message.error('请填写正确的手机号码');
       return
     }

+ 409 - 67
js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/contactPerson.jsx

@@ -4,25 +4,33 @@ import {
   Button,
   Spin,
   message,
-  Popconfirm,
-  Alert
+  Alert,
+  Modal,
+  Input,
+  InputNumber,
 } from "antd";
 import $ from "jquery/src/ajax";
 import EnterpriseNameChange from "../../../../../../common/enterpriseNameChange";
 import AddContact from "../../followDetail/addContact";
+import "./index.less"
+const { TextArea } = Input;
 
 const ContactPerson = React.createClass({
   getInitialState() {
     return {
+      upType: 0,
+      visible: false,
+      upData: {},
+      detail: {},
       loading: false,
-      addcontactModul:false,
+      addcontactModul: false,
       ContactsLists: [
         {
           title: "姓名",
           dataIndex: "name",
           key: "name",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -30,7 +38,7 @@ const ContactPerson = React.createClass({
           dataIndex: "department",
           key: "department",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -38,7 +46,7 @@ const ContactPerson = React.createClass({
           dataIndex: "position",
           key: "position",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -55,7 +63,7 @@ const ContactPerson = React.createClass({
           dataIndex: "cityName",
           key: "cityName",
           render: (text, record, index) => {
-          if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -63,7 +71,7 @@ const ContactPerson = React.createClass({
           dataIndex: "mobile",
           key: "mobile",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -71,7 +79,7 @@ const ContactPerson = React.createClass({
           dataIndex: "fixedTel",
           key: "fixedTel",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -79,7 +87,7 @@ const ContactPerson = React.createClass({
           dataIndex: "wechat",
           key: "wechat",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -87,7 +95,7 @@ const ContactPerson = React.createClass({
           dataIndex: "qq",
           key: "qq",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -95,7 +103,7 @@ const ContactPerson = React.createClass({
           dataIndex: "email",
           key: "email",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -103,7 +111,7 @@ const ContactPerson = React.createClass({
           dataIndex: "createTimes",
           key: "createTimes",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -111,7 +119,7 @@ const ContactPerson = React.createClass({
           dataIndex: "aname",
           key: "aname",
           render: (text, record, index) => {
-            if(record.id) return <div>{text}</div>
+            if (record.id) return <div>{text}</div>
           }
         },
         {
@@ -145,7 +153,7 @@ const ContactPerson = React.createClass({
                 ) : (
                   ""
                 )} */}
-                {record.major!=1 ? (
+                {record.major != 1 ? (
                   <Button
                     style={{
                       marginRight: "10px",
@@ -184,7 +192,7 @@ const ContactPerson = React.createClass({
           ocbId: e.id //删除的ID
         }
       }).done(
-        function(data) {
+        function (data) {
           if (!data.error.length) {
             message.success("删除成功!");
             this.setState({
@@ -203,27 +211,27 @@ const ContactPerson = React.createClass({
   //选择主要联系人
   mainContact(record) {
     this.setState({
-    	loading: true
+      loading: true
     });
     $.ajax({
-    	method: "get",
-    	dataType: "json",
-    	crossDomain: false,
-    	url: globalConfig.context + "/api/admin/customer/updateMainContact",
-    	data: {
-    		uid:this.props.data.id,
-    		ocbId: record.id
-    	}
-    }).done(function(data) {
-    	if(!data.error.length) {
-    		message.success('设为主要联系人成功!');
-    		this.setState({
-    			loading: false,
-    		});
-    	} else {
-    		message.warning(data.error[0].message);
-    	};
-    	this.contactLists();
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/customer/updateMainContact",
+      data: {
+        uid: this.props.data.id,
+        ocbId: record.id
+      }
+    }).done(function (data) {
+      if (!data.error.length) {
+        message.success('设为主要联系人成功!');
+        this.setState({
+          loading: false,
+        });
+      } else {
+        message.warning(data.error[0].message);
+      };
+      this.contactLists();
     }.bind(this));
     this.state.contactList.forEach(item => {
       item.major = 0;
@@ -247,7 +255,7 @@ const ContactPerson = React.createClass({
       data: {
         uid: ids || this.props.data.id //名称1
       },
-      success: function(data) {
+      success: function (data) {
         let theArr = [];
         if (data.error.length || data.data.list == "") {
           if (data.error && data.error.length) {
@@ -267,10 +275,10 @@ const ContactPerson = React.createClass({
               department: thisdata.department,
               position: thisdata.position,
               major: thisdata.major,
-              createTimes:thisdata.createTimes,
-              fixedTel:thisdata.fixedTel,
-              aname:thisdata.aname,
-              cityName:thisdata.provinceName+thisdata.cityName+thisdata.areaName
+              createTimes: thisdata.createTimes,
+              fixedTel: thisdata.fixedTel,
+              aname: thisdata.aname,
+              cityName: thisdata.provinceName + thisdata.cityName + thisdata.areaName
             });
           }
         }
@@ -279,7 +287,7 @@ const ContactPerson = React.createClass({
         });
       }.bind(this)
     }).always(
-      function() {
+      function () {
         this.setState({
           loading: false
         });
@@ -295,6 +303,7 @@ const ContactPerson = React.createClass({
   },
   componentWillMount() {
     this.contactLists(this.props.data.id);
+    this.queryByUid(this.props.data.id)
   },
   detailsModal() {
     this.props.closeDetail(false, false);
@@ -304,7 +313,76 @@ const ContactPerson = React.createClass({
       this.contactLists(nextProps.data.id);
     }
   },
+  // 查询企业信息
+  queryByUid() {
+    this.setState({
+      loading: true
+    });
+    $.ajax({
+      method: "get",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/queryByUid",
+      data: {
+        id: this.props.data.id,
+      },
+      success: function (data) {
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          this.setState({
+            detail: data.data
+          })
+        }
+      }.bind(this)
+    }).always(
+      function () {
+        this.setState({
+          loading: false
+        });
+      }.bind(this)
+    );
+  },
+  // 修改
+  update() {
+    const { upData } = this.state
+    $.ajax({
+      method: "post",
+      dataType: "json",
+      crossDomain: false,
+      url: globalConfig.context + "/api/admin/userArchives/update",
+      data: upData,
+      success: function (data) {
+        if (data.error.length || data.data.list == "") {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          message.success("修改成功!")
+          this.queryByUid()
+          this.setState({
+            visible: false
+          })
+        }
+      }.bind(this)
+    }).always(
+      function () {
+        this.setState({
+          loading: false
+        });
+      }.bind(this)
+    );
+  },
+  onUpCancel() {
+    this.setState({
+      visible: false
+    })
+  },
+
   render() {
+    const { detail, upType, upData } = this.state
     return (
       <div>
         <div className="clearfix">
@@ -317,20 +395,20 @@ const ContactPerson = React.createClass({
               display: "inline-block",
             }}
           >
-            公司名称:{this.state.enterpriseName ? this.state.enterpriseName :  this.props.name}
+            公司名称:{this.state.enterpriseName ? this.state.enterpriseName : this.props.name}
             <EnterpriseNameChange
-                type='modify'
-                changeOtherInfor
-                style={{marginLeft:'20px'}}
-                enterpriseId={this.props.data.uid}
-                enterpriseName={this.props.name}
-                data={this.props.data}
-                onCancel={this.props.onCancel}
-                onChangeSuccess={(value)=>{
-                  this.setState({
-                    enterpriseName:value
-                  })
-                }}/>
+              type='modify'
+              changeOtherInfor
+              style={{ marginLeft: '20px' }}
+              enterpriseId={this.props.data.uid}
+              enterpriseName={this.props.name}
+              data={this.props.data}
+              onCancel={this.props.onCancel}
+              onChangeSuccess={(value) => {
+                this.setState({
+                  enterpriseName: value
+                })
+              }} />
           </span>
           <Button
             className="ContactsList"
@@ -343,24 +421,288 @@ const ContactPerson = React.createClass({
         <div className="clearfix">
           <Spin spinning={this.state.loading}>
             <Table
-                size="middle"
-                pagination={false}
-                columns={this.state.ContactsLists}
-                dataSource={this.state.contactList}
+              size="middle"
+              pagination={false}
+              columns={this.state.ContactsLists}
+              dataSource={this.state.contactList}
             />
           </Spin>
         </div>
+
+        <div style={{
+          fontSize: 14,
+          marginTop: 20,
+        }}>
+          <div style={{ fontWeight: "bold", marginBottom: 5, color: "#58A3FF" }}>企业情况及前期准备工作</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            1.知识产权情况&nbsp;&nbsp;
+            <Button
+              type="primary"
+              onClick={() => {
+                this.setState({
+                  visible: true,
+                  upType: 1,
+                  upData: {
+                    uid: this.props.data.id,
+                    id: detail.id || undefined,
+                    inventionPatentCount: detail.inventionPatentCount,
+                    utilityModelCount: detail.utilityModelCount,
+                    appearancePatentCount: detail.appearancePatentCount,
+                    softwareWorksCount: detail.softwareWorksCount,
+                    otherCount: detail.otherCount,
+                  }
+                })
+              }}
+            >
+              修改
+            </Button>
+          </div>
+          <div style={{ fontSize: 12, }}>
+            专利总数&nbsp;{detail.patentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            发明专利&nbsp;{detail.inventionPatentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            实用新型&nbsp;{detail.utilityModelCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            外观专利&nbsp;{detail.appearancePatentCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            软著&nbsp;{detail.softwareWorksCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+            其他&nbsp;{detail.otherCount || 0}&nbsp;&nbsp;&nbsp;&nbsp;
+          </div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            2.财务数据<span style={{ color: "red" }}>(包括营收、税收、资产、研发费用等)</span>&nbsp;&nbsp;
+            <Button
+              type="primary"
+              onClick={() => {
+                this.setState({
+                  visible: true,
+                  upType: 2,
+                  upData: {
+                    uid: this.props.data.id,
+                    id: detail.id || undefined,
+                    financialData: detail.financialData,
+                  }
+                })
+              }}
+            >
+              修改
+            </Button>
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.financialData || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            3.前期沟通<span style={{ color: "red" }}>(客户的难处、需求)</span>&nbsp;&nbsp;
+            <Button
+              type="primary"
+              onClick={() => {
+                this.setState({
+                  visible: true,
+                  upType: 3,
+                  upData: {
+                    uid: this.props.data.id,
+                    id: detail.id || undefined,
+                    earlyCommunication: detail.earlyCommunication,
+                  }
+                })
+              }}
+            >
+              修改
+            </Button>
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.earlyCommunication || "无"}</div>
+          <div style={{ fontWeight: "bold", marginTop: 10 }}>
+            4.面谈思路及目的&nbsp;&nbsp;
+            <Button
+              type="primary"
+              onClick={() => {
+                this.setState({
+                  visible: true,
+                  upType: 4,
+                  upData: {
+                    uid: this.props.data.id,
+                    id: detail.id || undefined,
+                    interviewIdeas: detail.interviewIdeas,
+                  }
+                })
+              }}
+            >
+              修改
+            </Button>
+          </div>
+          <div style={{ fontSize: 12, }}>{detail.interviewIdeas || "无"}</div>
+        </div>
+
         <AddContact
-            addcontactModul={this.state.addcontactModul}
-            uids={this.props.data.id}
-            closeFollow={()=>{
-              this.setState({
-                addcontactModul:false
-              },()=>{
-                this.contactLists()
-              })
-            }}
+          addcontactModul={this.state.addcontactModul}
+          uids={this.props.data.id}
+          closeFollow={() => {
+            this.setState({
+              addcontactModul: false
+            }, () => {
+              this.contactLists()
+            })
+          }}
         />
+        <Modal
+          footer={null}
+          maskClosable={false}
+          width="400px"
+          title='信息修改'
+          visible={this.state.visible}
+          onCancel={this.onUpCancel}
+        >
+          <div>
+            {
+              upType == 1 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>发明专利:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.inventionPatentCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            inventionPatentCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>实用新型:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.utilityModelCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            utilityModelCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>外观专利:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.appearancePatentCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            appearancePatentCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>软著:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.softwareWorksCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            softwareWorksCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>其他:</div>
+                  <div className='enterpriseNameValue'>
+                    <InputNumber
+                      value={upData.otherCount || 0}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            otherCount: e,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 2 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>财务数据:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.financialData}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            financialData: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 3 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>前期沟通:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.earlyCommunication}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            earlyCommunication: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+            {
+              upType == 4 &&
+              <div>
+                <div className='enterpriseNameItem'>
+                  <div className='enterpriseNameTitle'>面谈思路及目的:</div>
+                  <div className='enterpriseNameValue'>
+                    <TextArea
+                      style={{ width: "250px" }}
+                      rows={4}
+                      value={upData.interviewIdeas}
+                      onChange={e => {
+                        this.setState({
+                          upData: Object.assign(upData, {
+                            interviewIdeas: e.target.value,
+                          }),
+                        })
+                      }}
+                    />
+                  </div>
+                </div>
+              </div>
+            }
+
+            <div>
+              <Button type='primary'
+                onClick={this.update}
+              >
+                确定修改
+              </Button>
+            </div>
+          </div>
+        </Modal>
       </div>
     );
   }

+ 12 - 0
js/component/manageCenter/customer/NEW/signCustomer/intentionDetail/detail/index.less

@@ -0,0 +1,12 @@
+.enterpriseNameItem{
+  display: flex;
+  flex-flow: row nowrap;
+  align-items: center;
+  padding-bottom: 20px;
+  .enterpriseNameTitle{
+
+  }
+  .enterpriseNameValue{
+    padding-left: 15px;
+  }
+}

+ 23 - 1
js/component/manageCenter/customer/content.jsx

@@ -402,7 +402,7 @@ class Content extends Component {
         require.ensure([], () => {
           const Limit = require('./NEW/intentionCustomer/limit').default;
           this.setState({
-            component: <Limit  />
+            component: <Limit />
           });
         });
         break;
@@ -494,6 +494,28 @@ class Content extends Component {
           });
         });
         break;
+      // 客户档案汇总
+      case 'customerProfile':
+        require.ensure([], () => {
+          const Crm = require('./NEW/crm/customerProfile').default;
+          this.setState({
+            component: <Crm
+              newChannel={0}
+            />
+          });
+        });
+        break;
+      // 渠道档案汇总
+      case 'channelArchives':
+        require.ensure([], () => {
+          const Crm = require('./NEW/crm/customerProfile').default;
+          this.setState({
+            component: <Crm
+              newChannel={1}
+            />
+          });
+        });
+        break;
       //客户资料维护(营销员)
       case 'crmMaintain':
         require.ensure([], () => {

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

@@ -128,7 +128,9 @@ class DetailedList extends Component {
           render: (text, record) => (
             <div>
               {text}
-              <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>
+              {record.alone == 2 && record.assist == 1
+                ? <Tag color="#58a3ff">无需打卡</Tag>
+                : <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>}
             </div>
           )
         },

+ 6 - 6
js/component/manageCenter/customer/publicSummary/index.jsx

@@ -146,12 +146,12 @@ class PublicSummary extends Component {
           width: 120,
           render: (text, record) => (
             <div>
-              {
-                text.split("\n").map(it =>
-                  <div>{it}</div>
-                )
-              }
-              <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>
+              {text.split("\n").map(it =>
+                <div>{it}</div>
+              )}
+              {record.alone == 2 && record.assist == 1
+                ? <Tag color="#58a3ff">无需打卡</Tag>
+                : <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>}
             </div>
           )
         },

+ 6 - 4
js/component/manageCenter/financialManage/account/accountDetails.jsx

@@ -566,7 +566,9 @@ class AccountDetails extends Component {
           render: (text, record) => (
             <span>
               <div style={{ width: 70 }}>{text}</div>
-              <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>
+              {record.alone == 2 && record.assist == 1
+                ? <Tag color="#58a3ff">无需打卡</Tag>
+                : <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>}
             </span>
           )
         },
@@ -1535,10 +1537,10 @@ class AccountDetails extends Component {
                   size="middle"
                   pagination={false}
                 />
-                <div className="m_head">
+                <div className="m_head" style={{ marginTop: 8 }}>
                   {
-                    !!data.sonList && data.sonList.length > 0 && data.sonList.map(it =>
-                      !!it.countStr && <div style={{ width: "100%", marginTop: 8 }}>{it.countStr}</div>
+                    !!data.strList && data.strList.length > 0 && data.strList.map(it =>
+                      <div style={{ width: "100%", fontSize: "14px" }}>{it}</div>
                     )
                   }
                   <div style={{ width: "100%", marginTop: 8 }}>审核日志:

+ 3 - 1
js/component/manageCenter/financialManage/account/accountTotal.jsx

@@ -394,7 +394,9 @@ const AccountTotal = React.createClass({
           render: (text, record) => (
             <span>
               <div style={{ width: 70 }}>{text}</div>
-              <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>
+              {record.alone == 2 && record.assist == 1
+                ? <Tag color="#58a3ff">无需打卡</Tag>
+                : <Tag color={["#F21212", "#34DE38", "#ffd400"][record.clockIn]}>{["未打卡", "已打卡", "异常打卡"][record.clockIn]}</Tag>}
             </span>
           )
         },

+ 4 - 10
js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx

@@ -767,19 +767,13 @@ const OrderDetail = Form.create()(
             columns = [
               {
                 title: "负责人",
-                dataIndex: "contacts",
-                key: "contacts",
-                render: (text, record) => {
-                  return text || record.receiverName;
-                },
+                dataIndex: "receiverName",
+                key: "receiverName",
               },
               {
                 title: "负责人电话",
-                dataIndex: "contactsMobile",
-                key: "contactsMobile",
-                render: (text, record) => {
-                  return text || record.receiverMobile;
-                },
+                dataIndex: "receiverMobile",
+                key: "receiverMobile",
               },
               {
                 title: "项目状态",

+ 16 - 13
js/component/manageCenter/order/orderNew/addService.jsx

@@ -5856,7 +5856,6 @@ const NewService = Form.create()(
       let children = vipYear.map(its => (
         <Option key={its}>{its}</Option>
       ));
-
       let approvalOptions = [
         { label: '无前期款', value: 1 },
         { label: '暂无合同款', value: 2 },
@@ -5866,18 +5865,22 @@ const NewService = Form.create()(
         { label: '3万以下会员', value: 6 },
         { label: '认证首期5K以下', value: 7 },
         {
-          label: <Input
-            type="text"
-            style={{ width: 150, borderStyle: "none none solid none" }}
-            value={this.state.typeExplain}
-            disabled={this.state.approvaType.indexOf(0) === -1 ? true : false}
-            placeholder="其他"
-            onChange={e => {
-              this.setState({
-                typeExplain: e.target.value
-              })
-            }}
-          />, value: 0
+          label: <span>
+            <span>其他&nbsp;&nbsp;</span>
+            <Input
+              type="text"
+              style={{ width: 150, borderStyle: "none none solid none" }}
+              value={this.state.typeExplain}
+              // disabled={this.state.approvaType.indexOf(0) === -1 ? true : false}
+              placeholder=""
+              onChange={e => {
+                this.setState({
+                  typeExplain: e.target.value
+                })
+              }}
+            />
+          </span>
+          , value: 0
         },
       ];
 

+ 15 - 12
js/component/manageCenter/order/orderNew/reject.jsx

@@ -2175,18 +2175,21 @@ const IntentionCustomer = Form.create()(
         { label: '3万以下会员', value: 6 },
         { label: '认证首期5K以下', value: 7 },
         {
-          label: <Input
-            type="text"
-            style={{ width: 150, borderStyle: "none none solid none" }}
-            value={this.state.typeExplain}
-            disabled={this.state.approvaType.indexOf(0) === -1 ? true : false}
-            placeholder="其他"
-            onChange={e => {
-              this.setState({
-                typeExplain: e.target.value
-              })
-            }}
-          />, value: 0
+          label: <span>
+            <span>其他&nbsp;&nbsp;</span>
+            <Input
+              type="text"
+              style={{ width: 150, borderStyle: "none none solid none" }}
+              value={this.state.typeExplain}
+              // disabled={this.state.approvaType.indexOf(0) === -1 ? true : false}
+              placeholder=""
+              onChange={e => {
+                this.setState({
+                  typeExplain: e.target.value
+                })
+              }}
+            />
+          </span>, value: 0
         },
       ];
 

+ 4 - 4
js/component/manageCenter/project/summary/projectDetails.jsx

@@ -965,13 +965,13 @@ class ProjectDetails extends Component {
           columns = [
             {
               title: "负责人",
-              dataIndex: "contacts",
-              key: "contacts",
+              dataIndex: "receiverName",
+              key: "receiverName",
             },
             {
               title: "负责人电话",
-              dataIndex: "contactsMobile",
-              key: "contactsMobile",
+              dataIndex: "receiverMobile",
+              key: "receiverMobile",
             },
             {
               title: "项目状态",

+ 1 - 1
js/component/manageCenter/set/userManagementS/newUser.jsx

@@ -103,7 +103,7 @@ const Newuser = Form.create()(React.createClass({
       message.warning('请输入正确的上级主管');
       return false;
     };
-    if (!getNewArray(this.state.Business, "value").toString()) {
+    if (!getNewArray(this.state.Business, "reviewerId").toString()) {
       message.warning('请输入正确的公出审核人');
       return false;
     }

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

@@ -878,7 +878,8 @@ const TopTab = React.createClass({
           </div>
           <span>
             <a href={globalConfig.context + "/admin/index.html"}>
-              管理中心首页
+              {/* 管理中心首页 */}
+              科德人力资源
             </a>
           </span>
         </div>

+ 2 - 2
js/component/portal/footer.jsx

@@ -50,8 +50,8 @@ const Footer = React.createClass({
                     <a href="#">联系我们</a>
                 </div>
                 <div className="container support">
-                    <a href="#">Copyright © 2016-2017 阿凡提 版权所有</a>
-                    <a href="#">技术支持:湖南阿凡提科技有限公司</a>
+                    <a href="#">Copyright © 2016-2024 科德集团 版权所有</a>
+                    <a href="#">技术支持:湖南科德信息咨询集团有限公司</a>
                 </div>
             </footer >
         )

+ 1 - 1
js/component/sign/account.jsx

@@ -76,7 +76,7 @@ const LoginContent = Form.create()(React.createClass({
     checkPhone(rule, value, callback) {
         const form = this.props.form;
         const _me = this;
-        if (!(/^1[34578]\d{9}$/.test(value))) {
+        if (!(/^1[3-9]\d{9}$/.test(value))) {
             callback('请输入正确的手机号码!');
             _me.setState({
                 getCodeButton: true

+ 1 - 1
js/component/sign/groupAccount.jsx

@@ -123,7 +123,7 @@ const Group = Form.create()(React.createClass({
     checkPhone(rule, value, callback) {
         const form = this.props.form;
         const _me = this;
-        if (!(/^1[34578]\d{9}$/.test(value))) {
+        if (!(/^1[3-9]\d{9}$/.test(value))) {
             callback('请输入正确的手机号码!');
             _me.setState({
                 getCodeButton: true

+ 1 - 0
package.json

@@ -1,6 +1,7 @@
 {
   "name": "afanti",
   "version": "1.3.19",
+>>>>>>>>> Temporary merge branch 2
   "description": "",
   "main": "index.js",
   "scripts": {