Browse Source

客服满意度调查表需求

dev01 2 years ago
parent
commit
8af41b074a

+ 79 - 74
js/component/common/orderDetail/gxczx.jsx

@@ -1,5 +1,5 @@
 import React, { Component } from "react";
-import { Form, Button, Radio, Modal, Input, message } from "antd";
+import { Form, Button, Radio, Modal, Input, message, Switch } from "antd";
 import { knowledgeList, auditList, addDeductionList, } from "@/dataDic.js";
 
 /**
@@ -90,7 +90,7 @@ class Gxczx extends Component {
 
 
   render() {
-    const { knowledgeServices, auditServices, addDeductionServices, isCreat = false } = this.props
+    const { knowledgeServices, auditServices, addDeductionServices, isCreat = false, isShow } = this.props
     return (
       <div>
         {
@@ -104,79 +104,84 @@ class Gxczx extends Component {
                   marginBottom: 10,
                 }}
               >
-                高新纯咨询合同说明
+                高新纯咨询合同说明 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+                <Switch checkedChildren="开" unCheckedChildren="关" checked={isShow}
+                  onChange={e => { this.props.onSwitch(e) }} />
               </h3>
-              <div>
-                <FormItem
-                  labelCol={{ span: 5 }}
-                  wrapperCol={{ span: 19 }}
-                  label={<span><strong style={{ color: "#f00" }}>*</strong>知识产权</span>}
-                >
-                  <RadioGroup
-                    value={this.state.zscq}
-                    onChange={e => {
-                      num = 2
-                      this.setState({
-                        knowledgeServices: e.target.value == 1 ? 1 : undefined,
-                        zscq: e.target.value,
-                        gxczx: e.target.value == -1 ? "zscq" : "",
-                      })
-                      this.props.selknowledge({ knowledgeServices: e.target.value })
-                    }}>
-                    <RadioButton value={1}>已签</RadioButton>
-                    <RadioButton value={-1}>未签</RadioButton>
-                  </RadioGroup>
-                  <span style={{ marginLeft: 19 }}>
-                    {this.props.knowledgeServices == 1 ? "" : this.state.knowledgeText}
-                  </span>
-                </FormItem>
-                <FormItem
-                  labelCol={{ span: 5 }}
-                  wrapperCol={{ span: 19 }}
-                  label={<span><strong style={{ color: "#f00" }}>*</strong>审计服务</span>}
-                >
-                  <RadioGroup
-                    value={this.state.sjfw}
-                    onChange={e => {
-                      num = 2
-                      this.setState({
-                        auditServices: e.target.value == 1 ? 1 : undefined,
-                        sjfw: e.target.value,
-                        gxczx: e.target.value == -1 ? "sjfw" : "",
-                      })
-                      this.props.selaudit({ auditServices: e.target.value })
-                    }}>
-                    <RadioButton value={1}>已签</RadioButton>
-                    <RadioButton value={-1}>未签</RadioButton>
-                  </RadioGroup>
-                  <span style={{ marginLeft: 19 }}>
-                    {this.props.auditServices == 1 ? "" : this.state.auditText}
-                  </span>
-                </FormItem>
-                <FormItem
-                  labelCol={{ span: 5 }}
-                  wrapperCol={{ span: 19 }}
-                  label={<span><strong style={{ color: "#f00" }}>*</strong>加计扣除服务</span>}
-                >
-                  <RadioGroup
-                    value={this.state.jjkc}
-                    onChange={e => {
-                      num = 2
-                      this.setState({
-                        addDeductionServices: e.target.value == 1 ? 1 : undefined,
-                        jjkc: e.target.value,
-                        gxczx: e.target.value == -1 ? "jjkc" : ""
-                      })
-                      this.props.seladdDeduction({ addDeductionServices: e.target.value })
-                    }}>
-                    <RadioButton value={1}>已签</RadioButton>
-                    <RadioButton value={-1}>未签</RadioButton>
-                  </RadioGroup>
-                  <span style={{ marginLeft: 19 }}>
-                    {this.props.addDeductionServices == 1 ? "" : this.state.addDeductionText}
-                  </span>
-                </FormItem>
-              </div>
+              {
+                isShow &&
+                <div>
+                  <FormItem
+                    labelCol={{ span: 5 }}
+                    wrapperCol={{ span: 19 }}
+                    label={<span><strong style={{ color: "#f00" }}>*</strong>知识产权</span>}
+                  >
+                    <RadioGroup
+                      value={this.state.zscq}
+                      onChange={e => {
+                        num = 2
+                        this.setState({
+                          knowledgeServices: e.target.value == 1 ? 1 : undefined,
+                          zscq: e.target.value,
+                          gxczx: e.target.value == -1 ? "zscq" : "",
+                        })
+                        this.props.selknowledge({ knowledgeServices: e.target.value })
+                      }}>
+                      <RadioButton value={1}>已签</RadioButton>
+                      <RadioButton value={-1}>未签</RadioButton>
+                    </RadioGroup>
+                    <span style={{ marginLeft: 19 }}>
+                      {this.props.knowledgeServices == 1 ? "" : this.state.knowledgeText}
+                    </span>
+                  </FormItem>
+                  <FormItem
+                    labelCol={{ span: 5 }}
+                    wrapperCol={{ span: 19 }}
+                    label={<span><strong style={{ color: "#f00" }}>*</strong>审计服务</span>}
+                  >
+                    <RadioGroup
+                      value={this.state.sjfw}
+                      onChange={e => {
+                        num = 2
+                        this.setState({
+                          auditServices: e.target.value == 1 ? 1 : undefined,
+                          sjfw: e.target.value,
+                          gxczx: e.target.value == -1 ? "sjfw" : "",
+                        })
+                        this.props.selaudit({ auditServices: e.target.value })
+                      }}>
+                      <RadioButton value={1}>已签</RadioButton>
+                      <RadioButton value={-1}>未签</RadioButton>
+                    </RadioGroup>
+                    <span style={{ marginLeft: 19 }}>
+                      {this.props.auditServices == 1 ? "" : this.state.auditText}
+                    </span>
+                  </FormItem>
+                  <FormItem
+                    labelCol={{ span: 5 }}
+                    wrapperCol={{ span: 19 }}
+                    label={<span><strong style={{ color: "#f00" }}>*</strong>加计扣除服务</span>}
+                  >
+                    <RadioGroup
+                      value={this.state.jjkc}
+                      onChange={e => {
+                        num = 2
+                        this.setState({
+                          addDeductionServices: e.target.value == 1 ? 1 : undefined,
+                          jjkc: e.target.value,
+                          gxczx: e.target.value == -1 ? "jjkc" : ""
+                        })
+                        this.props.seladdDeduction({ addDeductionServices: e.target.value })
+                      }}>
+                      <RadioButton value={1}>已签</RadioButton>
+                      <RadioButton value={-1}>未签</RadioButton>
+                    </RadioGroup>
+                    <span style={{ marginLeft: 19 }}>
+                      {this.props.addDeductionServices == 1 ? "" : this.state.addDeductionText}
+                    </span>
+                  </FormItem>
+                </div>
+              }
             </div> :
             <div>
               {

+ 22 - 0
js/component/dataDic.js

@@ -3959,6 +3959,28 @@ module.exports = {
       label: '暂停(业务线、总经理通知暂停)',
     },
   ],
+  // 项目满意度调查表
+  formRetrieveList:[
+    {
+      value: 0,
+      label: '未发送',
+      color:'red',
+    },
+    {
+      value: 1,
+      label: '已发送,未回收',
+      color:'#1d4fea',
+    },
+    {
+      value: 2,
+      label: '已回收',
+      color:'#34de38',
+    },
+    {
+      value: 3,
+      label: '其他',
+    },
+  ],
   //转交类型
   transferType: [
     {

+ 43 - 5
js/component/manageCenter/customer/NEW/intentionCustomer/intentionCustomer.jsx

@@ -536,13 +536,51 @@ const IntentionCustomer = Form.create()(
       this.category();
     },
     addClick() {
-      this.state.RowData = {};
       this.setState({
-        detailApi: this.props.detailApi,
-        showDesc: true,
-        modalVisible: false,
-        visitModul: false,
+        loading: true,
       });
+      $.ajax({
+        method: "get",
+        dataType: "json",
+        crossDomain: false,
+        url: globalConfig.context + "/api/admin/customer/queryUserMax",
+        data: {},
+        success: function (data) {
+          let thedata = data.data;
+          if (!thedata) {
+            if (data.error && data.error.length) {
+              message.warning(data.error[0].message);
+            } else {
+              if (thedata == 1) {
+                Modal.warning({
+                  title: '温馨提示',
+                  content: (
+                    <div>
+                      <p>不可添加!您的客户数已达最大值,可移除部分客户后添加!</p>
+                    </div>
+                  ),
+                  onOk() { },
+                });
+                return
+              }
+              this.state.RowData = {};
+              this.setState({
+                detailApi: this.props.detailApi,
+                showDesc: true,
+                modalVisible: false,
+                visitModul: false,
+              });
+            }
+          }
+
+        }.bind(this),
+      }).always(
+        function () {
+          this.setState({
+            loading: false,
+          });
+        }.bind(this)
+      );
     },
     closeDesc(e, s) {
       this.state.basicState = e;

File diff suppressed because it is too large
+ 493 - 491
js/component/manageCenter/customer/statistics/departmentStatistics/index.jsx


+ 12 - 2
js/component/manageCenter/financialManage/distribute/shouKuang.jsx

@@ -922,7 +922,7 @@ const ShouKuang = React.createClass({
           render: text => {
             return (
               <Tooltip title={text}>
-                <div 
+                <div
                 // style={{
                 //   maxWidth: '150px',
                 //   overflow: 'hidden',
@@ -1103,7 +1103,7 @@ const ShouKuang = React.createClass({
           render: text => {
             return (
               <Tooltip title={text}>
-                <div 
+                <div
                 // style={{
                 //   maxWidth: '150px',
                 //   overflow: 'hidden',
@@ -1700,6 +1700,15 @@ const ShouKuang = React.createClass({
       showDesc: true,
     });
   },
+  tableonRowClick(record) {
+    if (this.state.newVisible == "项目进度") {
+      this.state.onRowData = record;
+      this.setState({
+        pvisible: true,
+        record
+      })
+    }
+  },
   closeDesc(e, s) {
     this.state.showDesc = e;
     if (s) {
@@ -4228,6 +4237,7 @@ const ShouKuang = React.createClass({
                         pagination={false}
                         scroll={{ x: "max-content", y: 0 }}
                         size="small"
+                        onRowClick={this.tableonRowClick.bind(this)}
                       />
                       {
                         this.state.newVisible == "开票历史记录" &&

+ 47 - 19
js/component/manageCenter/order/orderNew/addService.jsx

@@ -180,7 +180,7 @@ const NewService = Form.create()(
     },
     getInitialState() {
       return {
-        gxczx: "", //高新纯咨询合同说明弹窗
+        isShow: true, // 高新纯咨询合同默认填写
         knowledgeOther: "",
         auditOther: "",
         addDeductionOther: "",
@@ -2119,6 +2119,11 @@ const NewService = Form.create()(
         }
       }
       if (this.props.userDetaile) {
+        if (!this.state.signDate) {
+          message.warning("签单日期不能为空");
+          $(".signDateRef input").focus();
+          return false;
+        }
         if (isNaN(parseInt(this.state.totalAmount))) {
           message.warning("签单金额不能为空");
           this.refs.totalAmountRef.focus();
@@ -2135,21 +2140,32 @@ const NewService = Form.create()(
         if (moneyVerify(this.state.totalAmount)) {
           return;
         }
+        if (!this.state.contacts) {
+          message.warning("企业联系人不能为空");
+          return
+        }
+        if (!this.state.contactMobile) {
+          message.warning("企业联系人电话不能为空");
+          return
+        }
+        var regeX1 = /^1[3456789]\d{9}$/;
+        var regex2 = /^((0\d{2,3})-)?(\d{7,8})$/;
+        if (regeX1.test(this.state.contactMobile) == false && regex2.test(this.state.contactMobile) == false) {
+          message.warning("请输入正确的企业联系人电话");
+          return false;
+        }
         if (!theorgCodeUrl) {
           message.warning("图片过大,上传失败");
           this.refs.signFirstPayment.focus();
           return false;
         }
-        if (!this.state.signDate) {
-          message.warning("签单日期不能为空");
-          $(".signDateRef input").focus();
-          return false;
-        }
-        if (this.state.knowledgeServices == null ||
-          this.state.auditServices == null ||
-          this.state.addDeductionServices == null) {
-          message.warn("请完善高新纯咨询合同说明!")
-          return
+        if (this.state.isShow) {
+          if (this.state.knowledgeServices == null ||
+            this.state.auditServices == null ||
+            this.state.addDeductionServices == null) {
+            message.warn("请完善高新纯咨询合同说明!")
+            return
+          }
         }
         if (!this.state.orderRemarks) {
           message.warning("订单留言不能为空");
@@ -2234,12 +2250,12 @@ const NewService = Form.create()(
             serviceContent: contentUrl.length ? contentUrl : "",
             orderDep: this.state.organizationSearch,
 
-            knowledgeServices: this.state.knowledgeServices, //知识产权服务
-            auditServices: this.state.auditServices, //审计服务
-            addDeductionServices: this.state.addDeductionServices, //加计扣除服务
-            knowledgeOther: this.state.knowledgeOther, //知识产权服务其他描述
-            auditOther: this.state.auditOther, //审计服务其他描述
-            addDeductionOther: this.state.addDeductionOther, //加计扣除服务其他描述
+            knowledgeServices: this.state.isShow ? this.state.knowledgeServices : undefined, //知识产权服务
+            auditServices: this.state.isShow ? this.state.auditServices : undefined, //审计服务
+            addDeductionServices: this.state.isShow ? this.state.addDeductionServices : undefined, //加计扣除服务
+            knowledgeOther: this.state.isShow ? this.state.knowledgeOther : undefined, //知识产权服务其他描述
+            auditOther: this.state.isShow ? this.state.auditOther : undefined, //审计服务其他描述
+            addDeductionOther: this.state.isShow ? this.state.addDeductionOther : undefined, //加计扣除服务其他描述
           },
       }).done(
         function (data) {
@@ -6275,7 +6291,12 @@ const NewService = Form.create()(
                                 <FormItem
                                   className="half-item"
                                   {...formItemLayout}
-                                  label="企业联系人"
+                                  label={
+                                    <span>
+                                      <strong style={{ color: "#f00" }}>*</strong>
+                                      企业联系人
+                                    </span>
+                                  }
                                 >
                                   <Input
                                     placeholder="请输入联系人"
@@ -6290,7 +6311,12 @@ const NewService = Form.create()(
                                 <FormItem
                                   className="half-item"
                                   {...formItemLayout}
-                                  label="联系人电话"
+                                  label={
+                                    <span>
+                                      <strong style={{ color: "#f00" }}>*</strong>
+                                      联系人电话
+                                    </span>
+                                  }
                                 >
                                   <Input
                                     placeholder="请输入联系人电话"
@@ -6393,6 +6419,7 @@ const NewService = Form.create()(
                                   </FormItem>
 
                                   <Gxczx
+                                    isShow={this.state.isShow}
                                     isCreat={true}
                                     knowledgeServices={this.state.knowledgeServices}
                                     auditServices={this.state.auditServices}
@@ -6403,6 +6430,7 @@ const NewService = Form.create()(
                                     selknowledge={e => { this.setState({ knowledgeServices: e.knowledgeServices, knowledgeOther: e.knowledgeOther }) }}
                                     selaudit={e => { this.setState({ auditServices: e.auditServices, auditOther: e.auditOther }) }}
                                     seladdDeduction={e => { this.setState({ addDeductionServices: e.addDeductionServices, addDeductionOther: e.addDeductionOther }) }}
+                                    onSwitch={e => { this.setState({ isShow: e }) }}
                                   />
 
                                   <FormItem

File diff suppressed because it is too large
+ 1007 - 1021
js/component/manageCenter/order/orderNew/costAuditList/detailsModal/projectOverview.js


+ 57 - 17
js/component/manageCenter/order/orderNew/reject.jsx

@@ -109,6 +109,7 @@ const IntentionCustomer = Form.create()(
     },
     getInitialState() {
       return {
+        isShow: true, // 高新纯咨询合同默认填写
         page: 1,
         orderNos: '',
         patentTypeList: [],
@@ -161,7 +162,7 @@ const IntentionCustomer = Form.create()(
             render: (text) => {
               return (
                 <Tooltip title={text}>
-                  <div 
+                  <div
                   // style={{
                   //   maxWidth: '150px',
                   //   overflow: 'hidden',
@@ -1077,6 +1078,7 @@ const IntentionCustomer = Form.create()(
               knowledgeOther: thisdata.knowledgeOther, //知识产权服务其他描述
               auditOther: thisdata.auditOther, //审计服务其他描述
               addDeductionOther: thisdata.addDeductionOther, //加计扣除服务其他描述
+              isShow: thisdata.knowledgeServices ? true : false, //无数据默认隐藏
 
             });
           }
@@ -1537,18 +1539,44 @@ const IntentionCustomer = Form.create()(
         this.refs.signFirstPayment.focus();
         return false;
       }
+      if (!this.state.contacts) {
+        message.warning("企业联系人不能为空");
+        return
+      }
+      if (!this.state.contactMobile) {
+        message.warning("企业联系人电话不能为空");
+        return
+      }
+      var regeX1 = /^1[3456789]\d{9}$/;
+      var regex2 = /^((0\d{2,3})-)?(\d{7,8})$/;
+      if (regeX1.test(this.state.contactMobile) == false && regex2.test(this.state.contactMobile) == false) {
+        message.warning("请输入正确的企业联系人电话");
+        return false;
+      }
+      if (this.state.isShow) {
+        if (this.state.knowledgeServices == null ||
+          this.state.auditServices == null ||
+          this.state.addDeductionServices == null) {
+          message.warn("请完善高新纯咨询合同说明!")
+          return
+        }
+      }
+      if (!this.state.orderRemarks) {
+        message.warning("订单留言不能为空");
+        return false;
+      }
       // if (!theorgCodeUrl) {
-      //   message.warning("企业负责人不能为空");
+      //   message.warning("图片过大,上传失败");
       //   this.refs.signFirstPayment.focus();
       //   return false;
       // }
-      if (
-        this.state.approval == "特批通过" ||
-        this.state.approval == "特批驳回"
-      ) {
-        message.warning("特批状态不正确,请重新填写");
-        return false;
-      }
+      // if (
+      //   this.state.approval == "特批通过" ||
+      //   this.state.approval == "特批驳回"
+      // ) {
+      //   message.warning("特批状态不正确,请重新填写");
+      //   return false;
+      // }
       const arr = this.state.contactListNew || [];
       for (let i = 0; i < arr.length; i++) {
         if (
@@ -1606,12 +1634,12 @@ const IntentionCustomer = Form.create()(
           serviceContent: contentUrl.length ? contentUrl : "",
           orderDep: this.state.organizationSearch,
 
-          knowledgeServices: this.state.knowledgeServices, //知识产权服务
-          auditServices: this.state.auditServices, //审计服务
-          addDeductionServices: this.state.addDeductionServices, //加计扣除服务
-          knowledgeOther: this.state.knowledgeOther, //知识产权服务其他描述
-          auditOther: this.state.auditOther, //审计服务其他描述
-          addDeductionOther: this.state.addDeductionOther, //加计扣除服务其他描述
+          knowledgeServices: this.state.isShow ? this.state.knowledgeServices : undefined, //知识产权服务
+          auditServices: this.state.isShow ? this.state.auditServices : undefined, //审计服务
+          addDeductionServices: this.state.isShow ? this.state.addDeductionServices : undefined, //加计扣除服务
+          knowledgeOther: this.state.isShow ? this.state.knowledgeOther : undefined, //知识产权服务其他描述
+          auditOther: this.state.isShow ? this.state.auditOther : undefined, //审计服务其他描述
+          addDeductionOther: this.state.isShow ? this.state.addDeductionOther : undefined, //加计扣除服务其他描述
         },
         success: function (data) {
           if (data.error.length || data.data.list == "") {
@@ -2307,7 +2335,12 @@ const IntentionCustomer = Form.create()(
                     <FormItem
                       className="half-item"
                       {...formItemLayout}
-                      label="企业联系人"
+                      label={
+                        <span>
+                          <strong style={{ color: "#f00" }}>*</strong>
+                          企业联系人
+                        </span>
+                      }
                     >
                       <Input
                         placeholder="请输入联系人"
@@ -2322,7 +2355,12 @@ const IntentionCustomer = Form.create()(
                     <FormItem
                       className="half-item"
                       {...formItemLayout}
-                      label="联系人电话"
+                      label={
+                        <span>
+                          <strong style={{ color: "#f00" }}>*</strong>
+                          联系人电话
+                        </span>
+                      }
                     >
                       <Input
                         placeholder="请输入联系人电话"
@@ -2538,6 +2576,7 @@ const IntentionCustomer = Form.create()(
                     </div>
 
                     <Gxczx
+                      isShow={this.state.isShow}
                       isCreat={true}
                       knowledgeServices={this.state.knowledgeServices}
                       auditServices={this.state.auditServices}
@@ -2548,6 +2587,7 @@ const IntentionCustomer = Form.create()(
                       selknowledge={e => { this.setState({ knowledgeServices: e.knowledgeServices, knowledgeOther: e.knowledgeOther }) }}
                       selaudit={e => { this.setState({ auditServices: e.auditServices, auditOther: e.auditOther }) }}
                       seladdDeduction={e => { this.setState({ addDeductionServices: e.addDeductionServices, addDeductionOther: e.addDeductionOther }) }}
+                      onSwitch={e => { this.setState({ isShow: e }) }}
                     />
 
                     {/* 服务内容 */}

+ 32 - 5
js/component/manageCenter/project/summary/highTech.jsx

@@ -142,6 +142,7 @@ class HighTech extends Component {
           status: this.state.status,
           thchId: this.state.thchId || undefined, //咨询师/咨询经理id
           taskProjectStatus: this.state.taskProjectStatus || undefined,//项目状态
+          sdStatus: this.state.sdStatus,//满意度
         },
       success: function (data) {
         ShowModal(this);
@@ -198,6 +199,7 @@ class HighTech extends Component {
         thchId: "",
         auto: "",
         taskProjectStatus: "",
+        sdStatus: undefined,
       },
       () => {
         this.Cascaders1.empty();
@@ -300,6 +302,7 @@ class HighTech extends Component {
       projectAmount: this.state.projectAmount || undefined, //项目金额
       thchId: this.state.thchId || undefined, //咨询师/咨询经理id
       taskProjectStatus: this.state.taskProjectStatus || undefined,//项目状态
+      sdStatus: this.state.sdStatus,//满意度
     };
     $.ajax({
       method: "get",
@@ -652,10 +655,9 @@ class HighTech extends Component {
                   <span
                     style={{
                       display: "inline-block",
-                      marginRight: "10px",
                     }}
                   >
-                    <span style={{ marginRight: "10px", marginBottom: "10px" }}>订单部门:</span>
+                    <span style={{ marginBottom: "10px" }}>订单部门:</span>
                     <Cascaders
                       ref={ref => this.Cascaders1 = ref}
                       placeholder="请选择订单部门"
@@ -671,10 +673,9 @@ class HighTech extends Component {
                   <span
                     style={{
                       display: "inline-block",
-                      marginRight: "10px",
                     }}
                   >
-                    <span style={{ marginRight: "10px", marginBottom: "10px" }}>负责部门:</span>
+                    <span style={{ marginBottom: "10px" }}>负责部门:</span>
                     <Cascaders
                       ref={ref => this.Cascaders2 = ref}
                       placeholder="请选择负责部门"
@@ -695,7 +696,7 @@ class HighTech extends Component {
                       className="certain-category-search"
                       dropdownClassName="certain-category-search-dropdown"
                       dropdownMatchSelectWidth={false}
-                      style={{ width: "120px" }}
+                      style={{ width: 130 }}
                       dataSource={options}
                       placeholder='请输入姓名'
                       value={this.state.auto}
@@ -803,6 +804,31 @@ class HighTech extends Component {
                   {/*        <Option value={6}>项目未完成 已退单</Option>*/}
                   {/*    </Select>*/}
                   {/*</span>*/}
+                  <span style={{ display: "inline-block" }}>
+                    <span style={{ marginRight: "10px" }}>
+                      满&nbsp;&nbsp;意&nbsp;&nbsp;度:
+                    </span>
+                    <Select
+                      value={this.state.sdStatus}
+                      placeholder="请选择满意度"
+                      style={{
+                        width: 150,
+                        marginRight: "10px",
+                      }}
+                      onChange={(e) => {
+                        this.setState({
+                          sdStatus: e,
+                        });
+                      }}
+                    >
+                      <Option value={0}>未发放</Option>
+                      <Option value={1}>已发放</Option>
+                      <Option value={2}>已回收(非常满意)</Option>
+                      <Option value={3}>已回收(满意)</Option>
+                      <Option value={4}>已回收(一般)</Option>
+                      <Option value={5}>已回收(不满意)</Option>
+                    </Select>
+                  </span>
 
                   <span style={{ display: "inline-block" }}>
                     <span style={{ marginRight: "10px" }}>
@@ -913,6 +939,7 @@ class HighTech extends Component {
               });
             }}
             visitCancel={() => {
+              this.loadData(this.state.page);
               this.setState({
                 visible: false,
               });

+ 100 - 8
js/component/manageCenter/project/summary/highTechConfig.jsx

@@ -1,6 +1,7 @@
 import { Tooltip } from 'antd';
 import React from 'react';
-import { getProjectName } from '@/tools';
+import { getProjectName, getFormRetrieves } from '@/tools';
+import { Button } from 'antd';
 
 
 // 高新会员服务
@@ -167,7 +168,20 @@ const member = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 高新
@@ -339,7 +353,20 @@ const highTechColumns = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 双软
@@ -478,7 +505,20 @@ const doubleSoft = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 软著
@@ -656,7 +696,20 @@ const softWriting = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 专利
@@ -846,7 +899,20 @@ const patent = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 审计
@@ -1016,7 +1082,20 @@ const audit = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 // 通用表
@@ -1158,7 +1237,20 @@ const currency = [
     dataIndex: "orderRemarks",
     key: "orderRemarks",
     isNoD: true,
-  }
+  },
+  {
+    title: "满意度调查表",
+    dataIndex: "formRetrieve",
+    key: "formRetrieve",
+    render: (value, record) => {
+      return (
+        <div style={{ maxWidth: "110px" }}>
+          {getFormRetrieves(value, record.satisfactionDegree)}
+          {(value == 0 || value == 1) && <Button type="primary">{value == 0 ? "已发送" : value == 1 && "上传回收表"}</Button>}
+        </div>
+      );
+    }
+  },
 ];
 
 export {

+ 159 - 25
js/component/manageCenter/project/summary/projectDetails.jsx

@@ -1,5 +1,5 @@
 import React, { Component } from 'react';
-import { Button, Form, Input, message, Modal, Spin, Table, Tabs, Tag, Tooltip } from "antd";
+import { Button, Form, Input, message, Modal, Spin, Table, Tabs, Tag, Tooltip, Radio } from "antd";
 import PatentSchedule from "../task/patentSchedule";
 import ImgList from "../../../common/imgList";
 import OrderDetail from "../../order/orderNew/changeComponent/orderDetail";
@@ -13,14 +13,17 @@ import {
   getboutique,
   getprovince,
   ShowModal,
-  getProjectName
+  getProjectName,
+  getFormRetrieve,
 } from "@/tools";
 import OrderRiZi from "@/orderRiZi.jsx";
+import Picture from '@/manageCenter/publicComponent/picture'
 import $ from "jquery";
 import DeclarationProgress from "../../../common/declarationProgress";
 import OrderItemStatus from "../../../common/orderItemStatus";
 import EnterpriseNameChange from "../../../common/enterpriseNameChange";
 
+
 const FormItem = Form.Item;
 const { TabPane } = Tabs;
 const formItemLayout = {
@@ -54,11 +57,13 @@ class ProjectDetails extends Component {
   constructor(props) {
     super(props);
     this.state = {
-      timeRecordparse: {},
+      satisfactionDegreeUrl: [], // 满意度调查表
+      satisfactionDegree: "", // 满意度
+      formRetrieve: "",// 满意调查表上传状态
 
+      timeRecordparse: {},
       activeKey: '1',
       loading: false,
-
       orderData: [],
       orderNo: "",
       jiedian: [],
@@ -124,12 +129,12 @@ class ProjectDetails extends Component {
             return (
               <Tooltip title={text}>
                 <div
-                  // style={{
-                  //   maxWidth: '150px',
-                  //   overflow: 'hidden',
-                  //   textOverflow: "ellipsis",
-                  //   whiteSpace: 'nowrap',
-                  // }}
+                // style={{
+                //   maxWidth: '150px',
+                //   overflow: 'hidden',
+                //   textOverflow: "ellipsis",
+                //   whiteSpace: 'nowrap',
+                // }}
                 >{text}</div>
               </Tooltip>
             )
@@ -538,7 +543,13 @@ class ProjectDetails extends Component {
             legalPersonTel: thisdata.legalPersonTel, //法人电话
             certificateNumber: thisdata.certificateNumber, //证书编号
             status: thisdata.status, //状态
-            formRetrieve: thisdata.formRetrieve, //满意度表格
+
+            formRetrieve: thisdata.formRetrieve, //满意调查表状态
+            satisfactionDegree: thisdata.satisfactionDegree, //满意度
+            satisfactionDegreeUrl: thisdata.satisfactionDegreeUrl
+              ? splitUrl(thisdata.satisfactionDegreeUrl, ',', globalConfig.avatarHost + '/upload')
+              : [], //满意度调查表
+
             taskRefund: thisdata.taskRefund, //退单
             refundContent: thisdata.refundContent, //退单信息
             retrieveContent: thisdata.retrieveContent, //回收信息
@@ -874,6 +885,68 @@ class ProjectDetails extends Component {
     this.loaduserss(this.props.id);
   }
 
+  // 修改项目满意度
+  updateSatisfactionDegree(status) {
+    let satisfactionDegreeUrls = []
+    if (this.state.satisfactionDegreeUrl.length) {
+      let picArr = []
+      this.state.satisfactionDegreeUrl.map(function (item) {
+        if (item.response && item.response.data && item.response.data.length) {
+          picArr.push(item.response.data)
+        }
+      })
+      satisfactionDegreeUrls = picArr.join(',')
+    }
+    if (status == 2) {
+      if (satisfactionDegreeUrls.length == 0) {
+        message.warning("请先上传满意度调查表!");
+        return
+      }
+      if (!this.state.formRetrieve) {
+        message.warning("请先选择满意度!");
+        return
+      }
+    }
+    let obj1 = {
+      id: this.props.id,
+      formRetrieve: 1,
+    }
+    let obj2 = {
+      id: this.props.id,
+      formRetrieve: status,
+      satisfactionDegree: this.state.satisfactionDegree,
+      satisfactionDegreeUrl: satisfactionDegreeUrls.length ? satisfactionDegreeUrls : '',
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      url: globalConfig.context + "/api/admin/orderProject/updateSatisfactionDegree",
+      method: "post",
+      data: status == 1 ? obj1 : obj2,
+    }).done(
+      function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (data.error.length === 0) {
+          if (status == 1) {
+            this.setState({
+              formRetrieve: 1
+            })
+          } else if (status == 2) {
+            this.setState({
+              formRetrieve: 2
+            })
+            message.success("保存成功!");
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  }
+
   // 可展开颜色不同
   addRowColor(record) {
     if (!!record.splitList && record.splitList.length > 0) {
@@ -995,7 +1068,7 @@ class ProjectDetails extends Component {
           </div>
         }>
           <TabPane tab="项目概况" key="1">
-            {this.state.activeKey === "1" ? <Form
+            <Form
               layout="horizontal"
               id="demand-form"
               style={{ paddingBottom: "0px" }}
@@ -1092,24 +1165,85 @@ class ProjectDetails extends Component {
                       <span>{this.state.outsource === 0 ? "否" : "是"}</span>
                     </FormItem>
                   </div>
+
                   <div className="clearfix">
                     <FormItem
-                      className="half-item"
-                      {...formItemLayout}
+                      labelCol={{ span: 3 }}
+                      wrapperCol={{ span: 16 }}
                       label="满意度表格"
                     >
-                      <span>
-                        {utils.getSatisfaction(this.state.formRetrieve)}
-                      </span>
-                    </FormItem>
-                    <FormItem
-                      className="half-item"
-                      {...formItemLayout}
-                      label="(满意度)备注"
-                    >
-                      <span>{this.state.retrieveContent}</span>
+                      <div>
+                        {getFormRetrieve(this.state.formRetrieve)}
+                        {this.state.formRetrieve == 0 &&
+                          <Button
+                            type="primary"
+                            size="small"
+                            style={{ marginTop: "5px", marginLeft: '5px', }}
+                            onClick={() => { this.updateSatisfactionDegree(1) }}
+                          >已发送至客户</Button>}
+                        {
+                          (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
+                          <div className="clearfix">
+                            <FormItem
+                              labelCol={{ span: 3 }}
+                              wrapperCol={{ span: 16 }}
+                              label="满意度调查整表"
+                            >
+                              <Picture
+                                showRemove={false} //删除图标
+                                domId={'table'}
+                                fileList={(e) => {
+                                  this.setState({ satisfactionDegreeUrl: e })
+                                }}
+                                pictureUrl={this.state.satisfactionDegreeUrl}
+                                visible={this.props.visible}
+                                data={{
+                                  sign: 'satisfactionDegree',
+                                  url: '/api/admin/orderProject/upload/satisfactionDegree',
+                                }}
+                              />
+                            </FormItem>
+                          </div>
+                        }
+                        <p style={{ color: 'red' }}>
+                          {
+                            this.state.formRetrieve == 0
+                              ? "注:满意度调查整表,已发送时,即可上传回复件了!"
+                              : "注:回收表格后,即可上传回复件了"
+                          }
+                        </p>
+                        {
+                          (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
+                          <div className="clearfix">
+                            <FormItem
+                              labelCol={{ span: 3 }}
+                              wrapperCol={{ span: 16 }}
+                              label="满意度"
+                            >
+                              <Radio.Group
+                                value={this.state.satisfactionDegree}
+                                onChange={(e) => {
+                                  this.setState({ satisfactionDegree: e.target.value })
+                                }}
+                              >
+                                <Radio value={0}>非常满意</Radio>
+                                <Radio value={1}>满意</Radio>
+                                <Radio value={2}>一般</Radio>
+                                <Radio value={3}>不满意</Radio>
+                              </Radio.Group>
+                              <div>
+                                <Button type="primary" size="small"
+                                  onClick={() => {
+                                    this.updateSatisfactionDegree(2)
+                                  }}>保存并上传</Button>
+                              </div>
+                            </FormItem>
+                          </div>
+                        }
+                      </div>
                     </FormItem>
                   </div>
+
                   {/*软著显示  bpType: 0 正常 1专利 2软著 3审计 4双软 5高新 6商标*/}
                   {this.state.bpType === 2 ? <div className="clearfix">
                     <FormItem
@@ -1603,7 +1737,7 @@ class ProjectDetails extends Component {
                   </div>
                 </div>
               </Spin>
-            </Form> : null}
+            </Form>
           </TabPane>
           {!this.props.isZxs || (this.state.isHuiyuan && this.props.isZxs) ? (
             <TabPane tab="订单详情" key="2">

+ 155 - 22
js/component/manageCenter/project/task/myTask.jsx

@@ -42,7 +42,8 @@ import {
   getboutique,
   ShowModal,
   getRefundStatus,
-  getProjectName
+  getProjectName,
+  getFormRetrieve,
 } from '@/tools'
 import { cuiJieDian, projectStatusCascader } from '@/dataDic.js'
 import ShowModalDiv from '@/showModal.jsx';
@@ -180,6 +181,10 @@ const Task = React.createClass({
   },
   getInitialState() {
     return {
+      satisfactionDegreeUrl: [], // 满意度调查表
+      satisfactionDegree: "", // 满意度
+      formRetrieve: "",// 满意调查表上传状态
+
       containOfficialFees: 0,//官费缴费情况
       audit: 1,
       declarationBatch: 1,
@@ -1546,7 +1551,7 @@ const Task = React.createClass({
         legalPersonTel: this.state.legalPersonTel, //法人电话
         certificateNumber: this.state.certificateNumber, //证书编号
         status: this.state.status, //状态
-        formRetrieve: this.state.formRetrieve, //满意度表格
+        // formRetrieve: this.state.formRetrieve, //满意度
         taskRefund: this.state.taskRefund, //退单
         refundContent: this.state.refundContent, //退单信息
         retrieveContent: this.state.retrieveContent, //回收信息
@@ -1667,11 +1672,7 @@ const Task = React.createClass({
             taskComment: thisdata.taskComment, //说明
             taskCommentData: thisdata.taskComment,
             attachmentUrl: thisdata.attachmentUrl
-              ? splitUrl(
-                thisdata.attachmentUrl,
-                ',',
-                globalConfig.avatarHost + '/upload'
-              )
+              ? splitUrl(thisdata.attachmentUrl, ',', globalConfig.avatarHost + '/upload')
               : [], //图片地址
             salesmanName: thisdata.salesmanName, //订单负责人
             startDate: thisdata.startDate, //启动日期
@@ -1686,7 +1687,13 @@ const Task = React.createClass({
             legalPersonTel: thisdata.legalPersonTel, //法人电话
             certificateNumber: thisdata.certificateNumber, //证书编号
             status: thisdata.status, //状态  0未开始 1已开始 2已暂停 3已完成 4已驳回 5已退单
-            formRetrieve: thisdata.formRetrieve, //满意度表格
+
+            formRetrieve: thisdata.formRetrieve, //满意调查表状态
+            satisfactionDegree: thisdata.satisfactionDegree, //满意度
+            satisfactionDegreeUrl: thisdata.satisfactionDegreeUrl
+              ? splitUrl(thisdata.satisfactionDegreeUrl, ',', globalConfig.avatarHost + '/upload')
+              : [], //满意度调查表
+
             taskRefund: thisdata.taskRefund, //退单
             refundContent: thisdata.refundContent, //退单信息
             retrieveContent: thisdata.retrieveContent, //回收信息
@@ -3550,6 +3557,71 @@ const Task = React.createClass({
       }.bind(this)
     )
   },
+
+  // 修改项目满意度
+  updateSatisfactionDegree(status) {
+    let satisfactionDegreeUrls = []
+    if (this.state.satisfactionDegreeUrl.length) {
+      let picArr = []
+      this.state.satisfactionDegreeUrl.map(function (item) {
+        if (item.response && item.response.data && item.response.data.length) {
+          picArr.push(item.response.data)
+        }
+      })
+      satisfactionDegreeUrls = picArr.join(',')
+    }
+    if (status == 2) {
+      if (satisfactionDegreeUrls.length == 0) {
+        message.warning("请先上传满意度调查表!");
+        return
+      }
+      if (!this.state.formRetrieve) {
+        message.warning("请先选择满意度!");
+        return
+      }
+    }
+    let obj1 = {
+      id: this.state.tid,
+      formRetrieve: 1,
+    }
+    let obj2 = {
+      id: this.state.tid,
+      formRetrieve: status,
+      satisfactionDegree: this.state.satisfactionDegree,
+      satisfactionDegreeUrl: satisfactionDegreeUrls.length ? satisfactionDegreeUrls : '',
+    }
+    this.setState({
+      loading: true,
+    });
+    $.ajax({
+      url: globalConfig.context + "/api/admin/orderProject/updateSatisfactionDegree",
+      method: "post",
+      data: status == 1 ? obj1 : obj2,
+    }).done(
+      function (data) {
+        this.setState({
+          loading: false,
+        });
+        if (data.error.length === 0) {
+          if (status == 1) {
+            this.setState({
+              formRetrieve: 1
+            })
+          } else if (status == 2) {
+            this.setState({
+              formRetrieve: 2
+            })
+            message.success("保存成功!");
+          }
+        } else {
+          message.warning(data.error[0].message);
+        }
+      }.bind(this)
+    );
+  },
+
+
+
   //会员 可展开颜色不同
   addRowColor(record) {
     if (!!record.splitList && record.splitList.length > 0) {
@@ -4057,22 +4129,82 @@ const Task = React.createClass({
                       </div>
                       <div className="clearfix">
                         <FormItem
-                          className="half-item"
-                          {...formItemLayout}
+                          labelCol={{ span: 3 }}
+                          wrapperCol={{ span: 16 }}
                           label="满意度表格"
                         >
-                          <Radio.Group
-                            value={this.state.formRetrieve}
-                            onChange={(e) => {
-                              this.setState({ formRetrieve: e.target.value })
-                            }}
-                          >
-                            <Radio value={0}>未收回</Radio>
-                            <Radio value={1}>已收回</Radio>
-                            <Radio value={2}>其他</Radio>
-                          </Radio.Group>
+                          <div>
+                            {getFormRetrieve(this.state.formRetrieve)}
+                            {this.state.formRetrieve == 0 &&
+                              <Button
+                                type="primary"
+                                size="small"
+                                style={{ marginTop: "5px", marginLeft: '5px', }}
+                                onClick={() => { this.updateSatisfactionDegree(1) }}
+                              >已发送至客户</Button>}
+                            {
+                              (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
+                              <div className="clearfix">
+                                <FormItem
+                                  labelCol={{ span: 3 }}
+                                  wrapperCol={{ span: 16 }}
+                                  label="满意度调查整表"
+                                >
+                                  <Picture
+                                    showRemove={false} //删除图标
+                                    domId={'table'}
+                                    fileList={(e) => {
+                                      this.setState({ satisfactionDegreeUrl: e })
+                                    }}
+                                    pictureUrl={this.state.satisfactionDegreeUrl}
+                                    visible={this.props.visible}
+                                    data={{
+                                      sign: 'satisfactionDegree',
+                                      url: '/api/admin/orderProject/upload/satisfactionDegree',
+                                    }}
+                                  />
+                                </FormItem>
+                              </div>
+                            }
+                            <p style={{ color: 'red' }}>
+                              {
+                                this.state.formRetrieve == 0
+                                  ? "注:满意度调查整表,已发送时,即可上传回复件了!"
+                                  : "注:回收表格后,即可上传回复件了"
+                              }
+                            </p>
+                            {
+                              (this.state.formRetrieve == 1 || this.state.formRetrieve == 2) &&
+                              <div className="clearfix">
+                                <FormItem
+                                  labelCol={{ span: 3 }}
+                                  wrapperCol={{ span: 16 }}
+                                  label="满意度"
+                                >
+                                  <Radio.Group
+                                    value={this.state.satisfactionDegree}
+                                    onChange={(e) => {
+                                      this.setState({ satisfactionDegree: e.target.value })
+                                    }}
+                                  >
+                                    <Radio value={0}>非常满意</Radio>
+                                    <Radio value={1}>满意</Radio>
+                                    <Radio value={2}>一般</Radio>
+                                    <Radio value={3}>不满意</Radio>
+                                  </Radio.Group>
+                                  <div>
+                                    <Button type="primary" size="small"
+                                      onClick={() => {
+                                        this.updateSatisfactionDegree(2)
+                                      }}>保存并上传</Button>
+                                  </div>
+                                </FormItem>
+                              </div>
+                            }
+                          </div>
                         </FormItem>
-                        <FormItem
+
+                        {/* <FormItem
                           className="half-item"
                           {...formItemLayout}
                           label="(满意度)备注"
@@ -4088,7 +4220,8 @@ const Task = React.createClass({
                               })
                             }}
                           />
-                        </FormItem>
+                        </FormItem> */}
+
                         {/*<FormItem*/}
                         {/*  className="half-item"*/}
                         {/*  {...formItemLayout}*/}

+ 54 - 51
js/component/manageCenter/publicComponent/picture.jsx

@@ -1,59 +1,62 @@
 
 import React from 'react';
-import {Icon,Upload,Modal} from 'antd';
+import { Icon, Upload, Modal } from 'antd';
 import ImgList from "../../common/imgList";
 
 const PicturesWall = React.createClass({
-    getInitialState() {
-        return {
-            previewVisible: false,
-            previewImage: '',
-            fileList: [],
-        }
-    },
-    handleCancel() {
-        this.setState({ previewVisible: false })
-    },
-    handlePreview(file) {
-        this.setState({
-            previewImage: file.url || file.thumbUrl,
-            previewVisible: true,
-        });
-    },
-    handleChange(info) {
-        let fileList = info.fileList;
-        this.setState({ fileList });
-        this.props.fileList(fileList);
-    },
-    componentWillReceiveProps(nextProps) {
-        this.state.fileList = nextProps.pictureUrl;
-    },
-    render() {
-        const { previewVisible, previewImage, fileList } = this.state;
-        const uploadButton = (
-            <div>
-                <Icon type="plus" />
-                <div className="ant-upload-text">点击上传</div>
-            </div>
-        );
-        return (
-            <div className="clearfix">
-                <ImgList
-                    domId={this.props.domId}
-                    uploadConfig={{
-                        action:globalConfig.context + this.props.data.url,
-                        data:{ 'sign': this.props.data.sign },
-                        listType:"picture-card",
-                        multiple:true,
-                    }}
-                    onChange={(infor)=>{
-                        this.handleChange(infor)
-                    }}
-                    fileList={fileList}
-                />
-            </div>
-        );
+  getInitialState() {
+    return {
+      previewVisible: false,
+      previewImage: '',
+      fileList: [],
     }
+  },
+  handleCancel() {
+    this.setState({ previewVisible: false })
+  },
+  handlePreview(file) {
+    this.setState({
+      previewImage: file.url || file.thumbUrl,
+      previewVisible: true,
+    });
+  },
+  handleChange(info) {
+    let fileList = info.fileList;
+    this.setState({ fileList });
+    this.props.fileList(fileList);
+  },
+  componentWillReceiveProps(nextProps) {
+    this.state.fileList = nextProps.pictureUrl;
+  },
+  render() {
+    const { previewVisible, previewImage, fileList } = this.state;
+    //      预览图标             删除图标
+    const { showPreview = true, showRemove = true } = this.props
+    const uploadButton = (
+      <div>
+        <Icon type="plus" />
+        <div className="ant-upload-text">点击上传</div>
+      </div>
+    );
+    return (
+      <div className="clearfix">
+        <ImgList
+          domId={this.props.domId}
+          uploadConfig={{
+            action: globalConfig.context + this.props.data.url,
+            data: { 'sign': this.props.data.sign },
+            listType: "picture-card",
+            multiple: true,
+            showUploadList: { 'showPreviewIcon': showPreview, 'showRemoveIcon': showRemove }
+          }}
+          onChange={(infor) => {
+            this.handleChange(infor)
+          }}
+          fileList={fileList}
+        />
+      </div>
+    );
+  }
 });
- 
+
 export default PicturesWall;

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

@@ -759,7 +759,7 @@ const TopTab = React.createClass({
     clearInterval(this.timerID)
     this.timerID = setInterval(
       () => this.tick(),
-      3000
+      5000
     );
   },
 

+ 25 - 3
js/component/project.jsx

@@ -23,6 +23,7 @@ import {
   getprovince,
   ShowModal,
   getRefundStatus,
+  getFormRetrieves,
 } from '@/tools'
 const FormItem = Form.Item
 import ResolutionDetail from '@/resolutionDetail'
@@ -258,6 +259,7 @@ const project = React.createClass({
       resVisible: false,
     })
   },
+  // 详情
   xiangqing(id) {
     this.setState({
       loading: true,
@@ -313,7 +315,11 @@ const project = React.createClass({
             legalPersonTel: thisdata.legalPersonTel, //法人电话
             certificateNumber: thisdata.certificateNumber, //证书编号
             status: thisdata.status, //状态
-            formRetrieve: thisdata.formRetrieve, //满意度表格
+
+            formRetrieve: thisdata.formRetrieve, // 满意度调查表状态
+            satisfactionDegree: thisdata.satisfactionDegree, // 满意度
+            satisfactionDegreeUrl: thisdata.satisfactionDegreeUrl ? splitUrl(thisdata.satisfactionDegreeUrl, ",", globalConfig.avatarHost + "/upload") : [], // 满意度调查表
+
             taskRefund: thisdata.taskRefund, //退单
             refundContent: thisdata.refundContent, //退单信息
             retrieveContent: thisdata.retrieveContent, //回收信息
@@ -1003,12 +1009,27 @@ const project = React.createClass({
                       <FormItem
                         className="half-item"
                         {...formItemLayout}
-                        label="满意度表格"
+                        label="满意度"
                       >
                         <span>
-                          {utils.getSatisfaction(this.state.formRetrieve)}
+                          {getFormRetrieves(this.state.formRetrieve, this.state.satisfactionDegree)}
                         </span>
                       </FormItem>
+                      <div className="clearfix">
+                        <FormItem
+                          className="half-item"
+                          {...formItemLayout}
+                          label="满意度调查表"
+                        >
+                          <div>
+                            <ImgList
+                              domId={"satisfactionDegree"}
+                              fileList={this.state.satisfactionDegreeUrl}
+                              ItemWidth={"96px"}
+                            />
+                          </div>
+                        </FormItem>
+                      </div>
                       {/*<FormItem*/}
                       {/*  className="half-item"*/}
                       {/*  {...formItemLayout}*/}
@@ -1017,6 +1038,7 @@ const project = React.createClass({
                       {/*  <span>{utils.getChargeback(this.state.taskRefund)}</span>*/}
                       {/*</FormItem>*/}
                     </div>
+
                     <div className="clearfix">
                       {
                         <FormItem

+ 26 - 0
js/component/tools.js

@@ -3,6 +3,7 @@ import { Tag } from 'antd';
 import React from 'react';
 import $ from 'jquery/src/ajax';
 import {
+  formRetrieveList,
   projectStatusList,
   patentTypeList,
   patentStateList,
@@ -2153,6 +2154,7 @@ const obj = {
       <span style={{ color: "red", fontWeight: 900, fontSize: 16 }}>{e}</span>
     );
   },
+  // 
   getProjectName(e) {
     let arr = projectStatusList.filter(v => {
       return v.value === e
@@ -2162,6 +2164,30 @@ const obj = {
     }
     return '';
   },
+  // 详情--满意度调查
+  getFormRetrieve(e, showColor = true) {
+    let arr = formRetrieveList.filter(v => {
+      return v.value === e
+    });
+    if (arr.length) {
+      return <span style={{ color: showColor && arr[0].color }}>{arr[0].label}</span>
+    }
+    return '';
+  },
+
+  // 列表--满意度调查
+  getFormRetrieves(e, i) {
+    let str1 = ["未发送", "已发送,未回收", "已回收", "其他"][e]
+    let str2 = ""
+    if (e == 2) {
+      str2 = i == 0
+        ? "(非常满意)" : i == 1
+          ? "(满意 )" : i == 2
+            ? "(一般)" : i == 3 && "(不满意)"
+    }
+    return str1 + str2;
+  },
+
   download(fileName, deleteLv = true) {
     window.open(globalConfig.context + `${'/open/download?fileName=' + fileName + '&delete=' + deleteLv}`);
   },

+ 1 - 1
package.json

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