dev01 3 years ago
parent
commit
a57a8928b2

+ 46 - 0
js/component/common/projectDetailsReadOnly/index.jsx

@@ -35,6 +35,10 @@ class ProjectDetailsReadOnly extends Component {
             declarationBatch,//批次
             type,//项目类型  0 正常 1专利 2软著 3审计 4双软 5高新 6商标,
             patentTypeName,//专利类型
+            yearSum,//会员总服务年限
+            serviceLife,//会员服务年限
+            serviceYear,//本次派单
+            cSort,//6会员项目
         } = this.props.infor;
         const { isIso } = this.state;
         return (
@@ -151,6 +155,48 @@ class ProjectDetailsReadOnly extends Component {
                         {/*>*/}
                         {/*    <span>{certificationCorporate || '暂无'}</span>*/}
                         {/*</FormItem>:null}*/}
+                        {
+                            cSort == 6 &&
+                            <FormItem
+                                className="half-item"
+                                {...formItemLayout}
+                                label="会员总服务年限"
+                            >
+                                <span>
+                                    {
+                                        yearSum == null ? "" :
+                                            [
+                                                { value: 0, key: "" },
+                                                { value: 1, key: "一年" },
+                                                { value: 2, key: "二年" },
+                                                { value: 3, key: "三年" },
+                                                { value: 4, key: "四年" },
+                                                { value: 5, key: "五年" },
+                                            ][yearSum]["key"]
+                                    }
+                                </span>
+                            </FormItem>
+                        }
+                        {
+                            cSort == 6 &&
+                            <FormItem
+                                className="half-item"
+                                {...formItemLayout}
+                                label="会员服务年限"
+                            >
+                                <span>{!!serviceLife && JSON.parse(serviceLife).toString()}</span>
+                            </FormItem>
+                        }
+                        {
+                            cSort == 6 &&
+                            <FormItem
+                                className="half-item"
+                                {...formItemLayout}
+                                label="本次派单"
+                            >
+                                <span>{serviceYear}</span>
+                            </FormItem>
+                        }
                         <div className="clearfix">
                             <FormItem
                                 labelCol={{ span: 4 }}

+ 198 - 10
js/component/common/projectOperation/index.jsx

@@ -4,9 +4,11 @@ import { AutoComplete, Button, Upload, Form, Input, message, Modal, Radio, Selec
 import { boutique } from "../../dataDic";
 import $ from "jquery";
 import { getboutique, splitUrl } from "../../tools";
+import { vipYear } from "../../dataDic";
 import ImgList from "../imgList";
 
 const FormItem = Form.Item;
+const Option = Select.Option;
 
 const formItemLayout = {
     labelCol: { span: 8 },
@@ -32,7 +34,10 @@ class ProjectOperation extends Component {
             patentTypeList: [],
             loading: false,
             orgCodeUrl: [],
-            patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0  //收否为专利转让 0 否 1 是
+            patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0, //收否为专利转让 0 否 1 是
+            serviceLife: [],
+            isVip: undefined,
+            histYear: [],
         }
         this.onSubmit = this.onSubmit.bind(this);
         this.httpChange = this.httpChange.bind(this);
@@ -83,6 +88,10 @@ class ProjectOperation extends Component {
                     globalConfig.avatarHost + "/upload"
                 )
                 : [],
+            isVip: dataInfor.cSort,
+            yearSum: parseInt(dataInfor.yearSum).toString(),//会员总服务年限
+            serviceLife: JSON.parse(dataInfor.serviceLife) || [],//会员服务年限
+            serviceYear: dataInfor.serviceYear,//本次派单
         });
     }
 
@@ -129,6 +138,24 @@ class ProjectOperation extends Component {
             message.warning("请选择是否包含认证费用!");
             return false;
         }
+        if (this.state.isVip == 6) {
+            if (this.state.yearSum === undefined) {
+                message.warning("请选择会员总服务年限!");
+                return
+            }
+            if (this.state.serviceLife.length === 0) {
+                message.warning("请添加会员服务年限!");
+                return
+            }
+            if (this.state.serviceLife.length != this.state.yearSum) {
+                message.warning("会员服务年限与总年限不符合!");
+                return
+            }
+            if (this.state.serviceYear === undefined) {
+                message.warning("请选择本次派单年份!");
+                return
+            }
+        }
         this.setState({
             loading: true,
         });
@@ -151,6 +178,11 @@ class ProjectOperation extends Component {
         if (this.state.isIso) {
             infor.ifCertificationFee = this.state.ifCertificationFee || undefined;//是否包含认证费用
         }
+        if (this.state.isVip == 6) {//会员
+            infor.yearSum = this.state.yearSum //会员总服务年限
+            infor.serviceLife = JSON.stringify(this.state.serviceLife) //会员服务年限
+            infor.serviceYear = this.state.serviceYear //本次派单年份
+        }
         $.ajax({
             method: "POST",
             dataType: "json",
@@ -189,6 +221,24 @@ class ProjectOperation extends Component {
             message.warning("请选择是否为主要项目!");
             return false;
         }
+        if (this.state.isVip == 6) {
+            if (this.state.yearSum === undefined) {
+                message.warning("请选择会员总服务年限!");
+                return
+            }
+            if (this.state.serviceLife.length === 0) {
+                message.warning("请添加会员服务年限!");
+                return
+            }
+            if (this.state.serviceLife.length != this.state.yearSum) {
+                message.warning("会员服务年限与总年限不符合!");
+                return
+            }
+            if (this.state.serviceYear === undefined) {
+                message.warning("请选择本次派单年份!");
+                return
+            }
+        }
         this.setState({
             loading: true,
         });
@@ -209,7 +259,10 @@ class ProjectOperation extends Component {
                 costReduction: this.state.displayFees === 'block' ? ((this.state.patentType === 0 || this.state.patentType === 2) ? (this.state.officialCost === 1 ? this.state.costReduction : 0) : 0) : '', //是否有费减
                 patentType: this.state.displayFees === 'block' ? this.state.patentType : '', //专利类型
                 declarationBatch: this.state.declarationBatch || undefined,//申报批次
-                ifCertificationFee: isNaN(parseInt(this.state.ifCertificationFee)) ? undefined : this.state.ifCertificationFee,
+                ifCertificationFee: isNaN(parseInt(this.state.ifCertificationFee)) ? undefined : this.state.ifCertificationFee,//是否包含认证费用
+                yearSum: this.state.isVip == 6 ? this.state.yearSum : undefined,
+                serviceLife: this.state.isVip == 6 ? JSON.stringify(this.state.serviceLife) : undefined,
+                serviceYear: this.state.isVip == 6 ? this.state.serviceYear : undefined,
             },
         }).done(
             function (data) {
@@ -276,6 +329,7 @@ class ProjectOperation extends Component {
 
     //上级主管输入框失去焦点是判断客户是否存在
     selectAuto(value) {
+        const { newData } = this.props
         let kid = {};
         let fwList = this.state.customerArr;
         fwList.map(function (item) {
@@ -293,14 +347,45 @@ class ProjectOperation extends Component {
                 displayFees: "none",
             });
         }
-        console.log(value.indexOf("贯标"), 'value.indexOf("贯标")')
+        // console.log(value.indexOf("贯标"), 'value.indexOf("贯标")')
         //0通用 1专利 2软著 3审计 4双软 5高新 6商标
         this.setState({
             commodityName: value,
             gid: kid.id,
             addProjectType: kid.type,
             isIso: value.indexOf("贯标") !== -1,// 是否为贯标项目
+            isVip: kid.cSort,//暂时判断等于6的时候会员
+            commodityQuantity: kid.cSort == 6 ? 1 : undefined,//服务数量
+            histYear: [],
         });
+
+        console.log("newData===", newData)
+        if (newData && newData.length > 0 && kid.cSort == 6) {
+            let llist = []
+            for (var i = 0; i < newData.length; i++) {
+                if (newData[i].commodityId == kid.id) {
+                    llist.push(newData[i].serviceYear)
+                }
+            }
+            this.setState({
+                histYear: llist
+            })
+            for (var i = newData.length - 1; i >= 0; i--) {
+                if (newData[i].commodityId == kid.id) {
+                    this.setState({
+                        yearSum: newData[i].yearSum.toString(), // 会员总服务年限
+                        serviceLife: JSON.parse(newData[i].serviceLife) || [], // 会员服务年限
+                    })
+                } else {
+                    this.setState({
+                        yearSum: undefined,
+                        serviceLife: [],
+                    })
+                }
+                return
+            }
+        }
+
     }
 
     getpatentTypeList() {
@@ -333,7 +418,11 @@ class ProjectOperation extends Component {
                     {group.bname}
                 </Select.Option>
             ));
+        let children = vipYear.map(its => (
+            <Option key={its}>{its}</Option>
+        ));
         const { readOnly } = this.props;
+        const { isVip, histYear } = this.state
         return (
             <Modal
                 maskClosable={false}
@@ -369,7 +458,7 @@ class ProjectOperation extends Component {
                                 >
                                     <Input />
                                 </AutoComplete>}
-                                <span className="mandatory">*</span>
+                                {!readOnly && <span className="mandatory">*</span>}
                             </FormItem>
                             <FormItem
                                 className="half-item"
@@ -378,6 +467,7 @@ class ProjectOperation extends Component {
                             >
                                 {readOnly ? this.state.commodityQuantity : <Input
                                     placeholder="请输入服务数量"
+                                    disabled={isVip == 6}
                                     value={this.state.commodityQuantity}
                                     style={{ width: "200px" }}
                                     onChange={(e) => {
@@ -385,7 +475,7 @@ class ProjectOperation extends Component {
                                     }}
                                     ref="commodityQuantity"
                                 />}
-                                <span className="mandatory">*</span>
+                                {!readOnly && <span className="mandatory">*</span>}
                             </FormItem>
                             <div style={{ marginTop: "33px", color: "red", textAlign: "right", position: "relative", top: "-8", left: "0" }}>如会员项目,服务一年,请填写1,服务二年,请填写2,依次类推</div>
                             {!this.state.patentTransfer && <FormItem
@@ -511,7 +601,7 @@ class ProjectOperation extends Component {
                                     }}
                                     ref="commodityPrice"
                                 />}
-                                <span className="mandatory">*</span>
+                                {!readOnly && <span className="mandatory">*</span>}
                             </FormItem>
                             <FormItem
                                 className="half-item"
@@ -534,8 +624,106 @@ class ProjectOperation extends Component {
                                         );
                                     })}
                                 </Select>}
-                                <span className="mandatory">*</span>
+                                {!readOnly && <span className="mandatory">*</span>}
                             </FormItem>
+                            {
+                                isVip == 6 &&
+                                <FormItem
+                                    className="half-item"
+                                    {...formItemLayout}
+                                    label="会员总服务年限"
+                                >
+                                    {readOnly ?
+                                        this.state.yearSum == null ? "" :
+                                            [
+                                                { value: "0", key: "" },
+                                                { value: "1", key: "一年" },
+                                                { value: "2", key: "二年" },
+                                                { value: "3", key: "三年" },
+                                                { value: "4", key: "四年" },
+                                                { value: "5", key: "五年" },
+                                            ][this.state.yearSum]["key"] :
+                                        <Select
+                                            placeholder="请选择会员总服务年限"
+                                            style={{ width: "200px" }}
+                                            value={this.state.yearSum}
+                                            onChange={(e) => {
+                                                this.setState({ yearSum: e });
+                                            }}
+                                        >
+                                            {[
+                                                { value: "1", key: "一年" },
+                                                { value: "2", key: "二年" },
+                                                { value: "3", key: "三年" },
+                                                { value: "4", key: "四年" },
+                                                { value: "5", key: "五年" },
+                                            ].map(function (item) {
+                                                return (
+                                                    <Select.Option key={item.value}>
+                                                        {item.key}
+                                                    </Select.Option>
+                                                );
+                                            })}
+                                        </Select>}
+                                    {!readOnly && <span className="mandatory">*</span>}
+                                </FormItem>
+                            }
+                            {
+                                isVip == 6 &&
+                                <FormItem
+                                    className="half-item"
+                                    {...formItemLayout}
+                                    label="会员服务年限"
+                                >
+                                    {
+                                        readOnly ?
+                                            !!this.state.serviceLife ? this.state.serviceLife.toString() : "" :
+                                            <Select
+                                                mode="multiple"
+                                                style={{ width: '200px' }}
+                                                placeholder="请选择服务年限"
+                                                value={this.state.serviceLife}
+                                                onChange={e => {
+                                                    this.setState({
+                                                        serviceLife: e,
+                                                        serviceYear: undefined,
+                                                    })
+                                                }}
+                                            >
+                                                {children}
+                                            </Select>
+                                    }
+                                    {!readOnly && <span className="mandatory">*</span>}
+                                </FormItem>
+                            }
+                            {
+                                isVip == 6 &&
+                                <FormItem
+                                    className="half-item"
+                                    {...formItemLayout}
+                                    label="本次派单"
+                                >
+                                    {readOnly ?
+                                        this.state.serviceYear :
+                                        <Select
+                                            placeholder="请选择本次派单年份"
+                                            style={{ width: "200px" }}
+                                            value={this.state.serviceYear}
+                                            onChange={(e) => {
+                                                this.setState({ serviceYear: e });
+                                            }}
+                                        >
+                                            {this.state.serviceLife.length > 0 && this.state.serviceLife.map(function (item) {
+                                                return (
+                                                    <Select.Option key={item} disabled={histYear.includes(item)}>
+                                                        {item}
+                                                    </Select.Option>
+                                                );
+                                            })}
+                                        </Select>}
+                                    {!readOnly && <span className="mandatory">*</span>}
+                                </FormItem>
+                            }
                             {/* {
                                 this.state.orgCodeUrl.length > 0 &&
                                 <div className="clearfix">
@@ -608,7 +796,7 @@ class ProjectOperation extends Component {
                                                     第四批
                                                 </Select.Option>
                                             </Select>}
-                                        <span className="mandatory">*</span>
+                                        {!readOnly && <span className="mandatory">*</span>}
                                     </FormItem>
                                 </div> : null
                             }
@@ -633,7 +821,7 @@ class ProjectOperation extends Component {
                                             <Select.Option value={"0"}>否</Select.Option>
                                             <Select.Option value={"1"}>是</Select.Option>
                                         </Select>}
-                                        <span className="mandatory">*</span>
+                                        {!readOnly && <span className="mandatory">*</span>}
                                     </FormItem>
                                 </div> : null
                             }
@@ -665,7 +853,7 @@ class ProjectOperation extends Component {
                         </div>
                     </Spin>
                 </Form>
-            </Modal>
+            </Modal >
         )
     }
 }

+ 195 - 27
js/component/common/projectOperation/vip.jsx

@@ -3,8 +3,10 @@ import { AutoComplete, Button, Form, Input, message, Modal, Select, Spin } from
 import $ from "jquery";
 import ImgList from "../../common/imgList";
 import { splitUrl } from "../../tools";
+import { vipYear } from "../../dataDic";
 
 const FormItem = Form.Item;
+const Option = Select.Option;
 
 const formItemLayout = {
   labelCol: { span: 8 },
@@ -68,7 +70,7 @@ class ProjectOperationVip extends Component {
     super(props);
     this.state = {
       commodityName: '',
-      commodityQuantity: '',
+      commodityQuantity: 1,
       patentType: 0,
       officialCost: '',
       costReduction: '',
@@ -83,6 +85,8 @@ class ProjectOperationVip extends Component {
       loading: false,
       patentTransfer: props.dataInfor ? props.dataInfor.patentTransfer : 0, //收否为专利转让 0 否 1 是
       orgCodeUrl: [],
+      serviceLife: [],
+      histYear: [],
     }
     this.onSubmit = this.onSubmit.bind(this);
     this.httpChange = this.httpChange.bind(this);
@@ -97,16 +101,22 @@ class ProjectOperationVip extends Component {
 
   setValue() {
     const { dataInfor } = this.props;
-    if (!(dataInfor && Object.keys(dataInfor).length > 0)) { return; }
-    this.setState({
-      fid: dataInfor.id,
-      commodityId: dataInfor.commodityId, //项目ID
-      commodityName: dataInfor.commodityName, //项目名称
-      commodityQuantity: dataInfor.commodityQuantity, // 数量
-      memberType: dataInfor.memberType.toString(),// 付款情况
-      taskComment: dataInfor.taskComment, // 备注
-      orgCodeUrl: dataInfor.pictureUrl ? splitUrl(dataInfor.pictureUrl, ",", globalConfig.avatarHost + "/upload") : [],// 附件
-    });
+    if (!(dataInfor && Object.keys(dataInfor).length > 0)) {
+
+    } else {
+      this.setState({
+        fid: dataInfor.id,
+        commodityId: dataInfor.commodityId, //项目ID
+        commodityName: dataInfor.commodityName, //项目名称
+        commodityQuantity: dataInfor.commodityQuantity, // 数量
+        memberType: dataInfor.memberType.toString(),// 付款情况
+        taskComment: dataInfor.taskComment, // 备注
+        orgCodeUrl: dataInfor.pictureUrl ? splitUrl(dataInfor.pictureUrl, ",", globalConfig.avatarHost + "/upload") : [],// 附件
+        yearSum: dataInfor.yearSum,//会员总服务年限
+        serviceLife: JSON.parse(dataInfor.serviceLife) || [],//会员服务年限
+        serviceYear: dataInfor.serviceYear,//本次派单
+      });
+    }
   }
   //
   getOrgCodeUrl(e) {
@@ -146,6 +156,22 @@ class ProjectOperationVip extends Component {
       message.warning("请选择付款情况!");
       return
     }
+    if (this.state.yearSum === undefined) {
+      message.warning("请选择会员总服务年限!");
+      return
+    }
+    if (this.state.serviceLife.length === 0) {
+      message.warning("请添加会员服务年限!");
+      return
+    }
+    if (this.state.serviceLife.length != this.state.yearSum) {
+      message.warning("会员服务年限与总年限不符合!");
+      return
+    }
+    if (this.state.serviceYear === undefined) {
+      message.warning("请选择本次派单年份!");
+      return
+    }
     if (this.state.memberType == "1" || this.state.memberType == "2") {
       if (typeof pictureUrl !== "string") {
         message.warning("请上传附件!");
@@ -163,6 +189,9 @@ class ProjectOperationVip extends Component {
       commodityPrice: 0, //签单总价
       taskComment: this.state.taskComment, //服务说明
       memberType: this.state.memberType,//会员付款状态
+      yearSum: this.state.yearSum,//会员总服务年限
+      serviceLife: JSON.stringify(this.state.serviceLife),//会员服务年限
+      serviceYear: this.state.serviceYear,//本次派单
       pictureUrl: pictureUrl.length ? pictureUrl : "",//附件
     }
     $.ajax({
@@ -227,6 +256,22 @@ class ProjectOperationVip extends Component {
       message.warning("请选择付款情况!");
       return
     }
+    if (this.state.yearSum === undefined) {
+      message.warning("请选择会员总服务年限!");
+      return
+    }
+    if (this.state.serviceLife.length === 0) {
+      message.warning("请添加会员服务年限!");
+      return
+    }
+    if (this.state.serviceLife.length != this.state.yearSum) {
+      message.warning("会员服务年限与总年限不符合!");
+      return
+    }
+    if (this.state.serviceYear === undefined) {
+      message.warning("请选择本次派单年份!");
+      return
+    }
     if (this.state.memberType == "1" || this.state.memberType == "2") {
       if (typeof pictureUrl !== "string") {
         message.warning("请上传附件!");
@@ -249,6 +294,9 @@ class ProjectOperationVip extends Component {
         commodityQuantity: this.state.commodityQuantity, //数量
         taskComment: this.state.taskComment, //备注
         memberType: this.state.memberType,//会员付款状态
+        yearSum: this.state.yearSum,//会员总服务年限
+        serviceLife: JSON.stringify(this.state.serviceLife),//会员服务年限
+        serviceYear: this.state.serviceYear,//本次派单
         pictureUrl: pictureUrl.length ? pictureUrl : "",//附件
       },
     }).done(
@@ -265,7 +313,7 @@ class ProjectOperationVip extends Component {
       }.bind(this)
     );
   }
-
+  //
   httpChange(e) {
     this.setState({
       commodityName: e,
@@ -308,11 +356,39 @@ class ProjectOperationVip extends Component {
   //上级主管输入框失去焦点是判断客户是否存在
   selectAuto(value) {
     const { customerArr } = this.state;
+    const { newData } = this.props
     const newdataSources = JSON.stringify(customerArr) == "{}" ? [] : customerArr;
+    let cid = newdataSources.find((item) => item.bname == value).id
     this.setState({
       commodityName: value,
-      commodityId: newdataSources.find((item) => item.bname == value).id,
+      commodityId: cid,
+      histYear: [],
     });
+    if (newData && newData.length > 0) {
+      let llist = []
+      for (var i = 0; i < newData.length; i++) {
+        if (newData[i].commodityId == cid) {
+          llist.push(newData[i].serviceYear)
+        }
+      }
+      this.setState({
+        histYear: llist
+      })
+      for (var i = newData.length - 1; i >= 0; i--) {
+        if (newData[i].commodityId == cid) {
+          this.setState({
+            yearSum: newData[i].yearSum.toString(), // 会员总服务年限
+            serviceLife: JSON.parse(newData[i].serviceLife) || [], // 会员服务年限
+          })
+        } else {
+          this.setState({
+            yearSum: undefined,
+            serviceLife: [],
+          })
+        }
+        return
+      }
+    }
   }
 
   render() {
@@ -321,7 +397,12 @@ class ProjectOperationVip extends Component {
         {group.bname}
       </Select.Option>
     ));
+    let children = vipYear.map(its => (
+      <Option key={its}>{its}</Option>
+    ));
+
     const { readOnly } = this.props;
+    const { histYear } = this.state
     return (
       <Modal
         maskClosable={false}
@@ -358,7 +439,7 @@ class ProjectOperationVip extends Component {
                   >
                     <Input />
                   </AutoComplete>}
-                <span className="mandatory">*</span>
+                {!readOnly && <span className="mandatory">*</span>}
               </FormItem>
               <FormItem
                 className="half-item"
@@ -370,23 +451,21 @@ class ProjectOperationVip extends Component {
                     placeholder="请输入服务数量"
                     value={this.state.commodityQuantity}
                     style={{ width: "200px" }}
+                    disabled={true}
                     onChange={(e) => {
                       this.setState({ commodityQuantity: e.target.value });
                     }}
                     ref="commodityQuantity"
                   />}
-                <span className="mandatory">*</span>
+                {!readOnly && <span className="mandatory">*</span>}
+                <div
+                  style={{
+                    color: "red",
+                    position: "relative",
+                    left: "0"
+                  }}
+                >注:会员项目单次限制,只能派一年</div>
               </FormItem>
-              <div
-                style={{
-                  marginTop: "33px",
-                  color: "red",
-                  textAlign: "right",
-                  position: "relative",
-                  top: "-8",
-                  left: "0"
-                }}
-              >如会员项目,服务一年,请填写1,服务二年,请填写2,依次类推</div>
               <FormItem
                 className="half-item"
                 {...formItemLayout}
@@ -416,7 +495,96 @@ class ProjectOperationVip extends Component {
                         );
                       })}
                   </Select>}
-                <span className="mandatory">*</span>
+                {!readOnly && <span className="mandatory">*</span>}
+              </FormItem>
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="会员总服务年限"
+              >
+                {readOnly ?
+                  this.state.yearSum == null ? "" :
+                    [
+                      { value: "0", key: "" },
+                      { value: "1", key: "一年" },
+                      { value: "2", key: "二年" },
+                      { value: "3", key: "三年" },
+                      { value: "4", key: "四年" },
+                      { value: "5", key: "五年" },
+                    ][this.state.yearSum]["key"] :
+                  <Select
+                    placeholder="请选择会员总服务年限"
+                    style={{ width: "200px" }}
+                    value={this.state.yearSum}
+                    onChange={(e) => {
+                      this.setState({ yearSum: e });
+                    }}
+                  >
+                    {[
+                      { value: "1", key: "一年" },
+                      { value: "2", key: "二年" },
+                      { value: "3", key: "三年" },
+                      { value: "4", key: "四年" },
+                      { value: "5", key: "五年" },
+                    ].map(function (item) {
+                      return (
+                        <Select.Option key={item.value}>
+                          {item.key}
+                        </Select.Option>
+                      );
+                    })}
+                  </Select>}
+                {!readOnly && <span className="mandatory">*</span>}
+              </FormItem>
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="会员服务年限"
+              >
+                {
+                  readOnly ?
+                    this.state.serviceLife.toString() :
+                    <Select
+                      mode="multiple"
+                      style={{ width: '200px' }}
+                      placeholder="请选择服务年限"
+                      value={this.state.serviceLife}
+                      onChange={e => {
+                        this.setState({
+                          serviceLife: e,
+                          serviceYear: undefined,
+                        })
+                      }}
+                    >
+                      {children}
+                    </Select>
+                }
+                {!readOnly && <span className="mandatory">*</span>}
+              </FormItem>
+              <FormItem
+                className="half-item"
+                {...formItemLayout}
+                label="本次派单"
+              >
+                {readOnly ?
+                  this.state.serviceYear :
+                  <Select
+                    placeholder="请选择本次派单年份"
+                    style={{ width: "200px" }}
+                    value={this.state.serviceYear}
+                    onChange={(e) => {
+                      this.setState({ serviceYear: e });
+                    }}
+                  >
+                    {this.state.serviceLife.length > 0 && this.state.serviceLife.map(function (item) {
+                      return (
+                        <Select.Option key={item} disabled={histYear.includes(item)}>
+                          {item}
+                        </Select.Option>
+                      );
+                    })}
+                  </Select>}
+                {!readOnly && <span className="mandatory">*</span>}
               </FormItem>
               {
                 (this.state.memberType == "1" || this.state.memberType == "2") &&
@@ -431,7 +599,7 @@ class ProjectOperationVip extends Component {
                       fileList={this.getOrgCodeUrl}
                       pictureUrl={this.state.orgCodeUrl}
                     />
-                    <span className="mandatory">*</span>
+                    {!readOnly && <span className="mandatory">*</span>}
                   </FormItem>
                   <div style={{ color: "red", marginLeft: 144, marginBottom: 15 }}>
                     特批需上传附件图,请上传客户同意我方继续服务并安排给我司付款的聊天记录截图,

+ 10 - 4
js/component/dataDic.js

@@ -1440,10 +1440,10 @@ module.exports = {
       value: "4",
       key: "转介绍",
     },
-    {
-      value: "5",
-      key: "其他",
-    },
+    // {
+    //   value: "5",
+    //   key: "其他",
+    // },
   ],
   qsalesType: [
     {
@@ -4067,4 +4067,10 @@ module.exports = {
       color: '#242424'
     },
   ],
+  //会员服务年限
+  vipYear: [
+    '2017', '2018', '2019', '2020', '2021',
+    '2022', '2023', '2024', '2025', '2026',
+    '2027', '2028', '2029', '2030', '2031',
+  ]
 };

+ 40 - 15
js/component/manageCenter/financialManage/distribute/projectvip.jsx

@@ -49,7 +49,6 @@ const ProjectVip = React.createClass({
           title: "销售类型",
           dataIndex: "salesType",
           key: "salesType",
-          className: "title-table",
           render: (text, record) => {
             return (
               <Tooltip
@@ -66,7 +65,6 @@ const ProjectVip = React.createClass({
           title: "合同编号",
           dataIndex: "contractNo",
           key: "contractNo",
-          className: "title-table",
           width: 160,
           render: (text, record) => {
             return (
@@ -106,8 +104,7 @@ const ProjectVip = React.createClass({
           title: "客户名称",
           dataIndex: "userName",
           key: "userName",
-          className: "title-table",
-          width: 200,
+          width: 160,
           render: text => {
             return (
               <Tooltip title={text}>
@@ -120,7 +117,6 @@ const ProjectVip = React.createClass({
           title: "订单编号",
           dataIndex: "orderNo",
           key: "orderNo",
-          className: "title-table",
           width: 140,
           render: (text, record) => {
             return (
@@ -156,25 +152,21 @@ const ProjectVip = React.createClass({
           title: "订单部门",
           dataIndex: "depName",
           key: "depName",
-          className: "title-table",
         },
         {
           title: "订单负责人",
           dataIndex: "salesmanName",
           key: "salesmanName",
-          className: "title-table",
         },
         {
           title: "财务负责人",
           dataIndex: "financeName",
           key: "financeName",
-          className: "title-table",
         },
         {
           title: "会员项目",
           dataIndex: "projectName",
           key: "projectName",
-          className: "title-table",
           render: (text, record) => {
             return (
               <div>
@@ -188,21 +180,54 @@ const ProjectVip = React.createClass({
           title: "数量",
           dataIndex: "commodityQuantity",
           key: "commodityQuantity",
-          className: "title-table",
+        },
+        {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
         },
         {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",
-          className: "title-table",
-          width: 300,
+          render: (text, record) => {
+            return (
+              <div style={{ maxWidth: 220 }}>{text}</div>
+            );
+          }
         },
         {
           title: "状态",
           dataIndex: "status",
           key: "status",
-          className: "title-table",
-          width: 80,
           render: (text) => {
             return (
               <div>
@@ -215,7 +240,7 @@ const ProjectVip = React.createClass({
           title: "操作",
           dataIndex: "pictureUrl",
           key: "pictureUrl",
-          className: "title-table",
+          width: 90,
           render: (text, recard) => {
             return (
               <div>

+ 40 - 15
js/component/manageCenter/financialManage/distribute/projectvipall.jsx

@@ -48,7 +48,6 @@ const ProjectVipAll = React.createClass({
           title: "销售类型",
           dataIndex: "salesType",
           key: "salesType",
-          className: "title-table",
           render: (text, record) => {
             return (
               <Tooltip
@@ -65,7 +64,6 @@ const ProjectVipAll = React.createClass({
           title: "合同编号",
           dataIndex: "contractNo",
           key: "contractNo",
-          className: "title-table",
           width: 160,
           render: (text, record) => {
             return (
@@ -105,8 +103,7 @@ const ProjectVipAll = React.createClass({
           title: "客户名称",
           dataIndex: "userName",
           key: "userName",
-          className: "title-table",
-          width: 200,
+          width: 160,
           render: text => {
             return (
               <Tooltip title={text}>
@@ -119,7 +116,6 @@ const ProjectVipAll = React.createClass({
           title: "订单编号",
           dataIndex: "orderNo",
           key: "orderNo",
-          className: "title-table",
           width: 140,
           render: (text, record) => {
             return (
@@ -155,25 +151,21 @@ const ProjectVipAll = React.createClass({
           title: "订单部门",
           dataIndex: "depName",
           key: "depName",
-          className: "title-table",
         },
         {
           title: "订单负责人",
           dataIndex: "salesmanName",
           key: "salesmanName",
-          className: "title-table",
         },
         {
           title: "财务负责人",
           dataIndex: "financeName",
           key: "financeName",
-          className: "title-table",
         },
         {
           title: "会员项目",
           dataIndex: "projectName",
           key: "projectName",
-          className: "title-table",
           render: (text, record) => {
             return (
               <div>
@@ -187,21 +179,54 @@ const ProjectVipAll = React.createClass({
           title: "数量",
           dataIndex: "commodityQuantity",
           key: "commodityQuantity",
-          className: "title-table",
+        },
+        {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
         },
         {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",
-          className: "title-table",
-          width: 300,
+          render: (text, record) => {
+            return (
+              <div style={{ maxWidth: 220 }}>{text}</div>
+            );
+          }
         },
         {
           title: "状态",
           dataIndex: "status",
           key: "status",
-          className: "title-table",
-          width: 80,
           render: (text) => {
             return (
               <div>
@@ -214,7 +239,7 @@ const ProjectVipAll = React.createClass({
           title: "操作",
           dataIndex: "pictureUrl",
           key: "pictureUrl",
-          className: "title-table",
+          width: 110,
           render: (text, recard) => {
             return (
               <div>

+ 1 - 0
js/component/manageCenter/financialManage/distribute/shouKuanAll.jsx

@@ -3540,6 +3540,7 @@ const ShouKuang = React.createClass({
             content={() => this.refs.all}
           />
         </Modal>
+        <textarea id="copyText" style={{ opacity: 0 }} />
       </div>
     );
   },

+ 37 - 0
js/component/manageCenter/financialManage/orderDetail/orderDetail.jsx

@@ -166,6 +166,39 @@ const OrderDetail = Form.create()(
             },
           },
           {
+            title: "总年限",
+            dataIndex: "yearSum",
+            key: "yearSum",
+            render: (text, record) => {
+              return (
+                <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+              );
+            }
+          },
+          {
+            title: "年限",
+            dataIndex: "serviceLife",
+            key: "serviceLife",
+            width: 60,
+            render: (text, record) => {
+              return (
+                !!text && JSON.parse(text).map(item =>
+                  <div>{item}年 </div>
+                )
+              );
+            }
+          },
+          {
+            title: "本次派单",
+            dataIndex: "serviceYear",
+            key: "serviceYear",
+            render: (text, record) => {
+              return (
+                <div>{!text ? "" : text + "年"}</div>
+              );
+            }
+          },
+          {
             title: "项目说明",
             dataIndex: "taskComment",
             key: "taskComment",
@@ -332,6 +365,10 @@ const OrderDetail = Form.create()(
         commodityQuantity: record.commodityQuantity, //数量
         taskComment: record.taskComment, //备注
         main: record.main.toString(), //是否为主要
+        yearSum: record.yearSum,//会员总服务年限
+        serviceLife: record.serviceLife,//会员服务年限
+        serviceYear: record.serviceYear,//本次派单
+        cSort: record.cSort,
         addnextVisible: true,
         dataInfor: record,
         addState: 0,

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

@@ -531,6 +531,7 @@ const MessageModal = React.createClass({
     render() {
         return (
             <div className="set-content">
+                <textarea id="copyText" style={{ opacity: 0 }} />
                 <div className="set-title" style={{ marginBottom: 10 }}>
                     <span style={{ fontWeight: 900, fontSize: 16 }}>信息中心</span>
                 </div>

+ 43 - 4
js/component/manageCenter/order/orderNew/addService.jsx

@@ -30,8 +30,6 @@ import ResolutionDetail from "@/resolutionDetail";
 import quxiao from "../../../../../image/quxiao.png";
 import tongguo from "../../../../../image/tongguo.png";
 import $ from "jquery";
-import { salesList } from "@/dataDic.js";
-
 import OrderRiZi from "@/orderRiZi.jsx";
 import {
   orderTypes,
@@ -41,6 +39,7 @@ import {
   ssalesType,
   qsalesType,
   cuiJieDian,
+  salesList,
 } from "@/dataDic.js";
 import {
   splitUrl,
@@ -393,6 +392,39 @@ const NewService = Form.create()(
             },
           },
           {
+            title: "总年限",
+            dataIndex: "yearSum",
+            key: "yearSum",
+            render: (text, record) => {
+              return (
+                <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+              );
+            }
+          },
+          {
+            title: "年限",
+            dataIndex: "serviceLife",
+            key: "serviceLife",
+            width: 60,
+            render: (text, record) => {
+              return (
+                !!text && JSON.parse(text).map(item =>
+                  <div>{item}年 </div>
+                )
+              );
+            }
+          },
+          {
+            title: "本次派单",
+            dataIndex: "serviceYear",
+            key: "serviceYear",
+            render: (text, record) => {
+              return (
+                <div>{!text ? "" : text + "年"}</div>
+              );
+            }
+          },
+          {
             title: "项目说明",
             dataIndex: "taskComment",
             key: "taskComment",
@@ -1824,6 +1856,7 @@ const NewService = Form.create()(
           },
         ],
         updatas: {},//销售类型修改数据
+        newData: {},//新建会员记忆数据
       };
     },
     getpatentTypeList() {
@@ -3228,14 +3261,18 @@ const NewService = Form.create()(
     },
     //点击添加项目明细
     addDetailed() {
+      const { dataSource = [] } = this.state
       this.setState({
         projectOperationVisible: true,
+        newData: dataSource,
       });
     },
     //点击添加会员项目明细
     addVip() {
+      const { dataSource = [] } = this.state
       this.setState({
         vipVisible: true,
+        newData: dataSource,
       });
     },
     //点击打卡项目详情
@@ -6699,7 +6736,7 @@ const NewService = Form.create()(
                                 >
                                   重置
                                 </Button>
-                                {this.state.status === 3 ? (
+                                {(this.state.status === 3 || this.state.status == 0) ? (
                                   <Button
                                     type="danger"
                                     style={{
@@ -7793,11 +7830,12 @@ const NewService = Form.create()(
               orderNo={this.props.datauser.orderNo}
               visible={this.state.projectOperationVisible}
               dataInfor={this.state.dataInfor}
+              newData={this.state.newData}
               onCancel={this.nextCancel}
             />
           }
           {
-            // 会员项目添加编辑(暂时废弃)
+            // 会员项目添加编辑
             this.state.vipVisible &&
             <ProjectOperationVip
               readOnly={
@@ -7808,6 +7846,7 @@ const NewService = Form.create()(
               orderNo={this.props.datauser.orderNo}
               visible={this.state.vipVisible}
               dataInfor={this.state.dataInfor}
+              newData={this.state.newData}
               onCancel={this.nextCancel}
             />
           }

+ 40 - 10
js/component/manageCenter/order/orderNew/approvedvipproject.jsx

@@ -102,7 +102,7 @@ const ApprovedVipProject = React.createClass({
           title: "客户名称",
           dataIndex: "userName",
           key: "userName",
-          width: 200,
+          width: 160,
           render: text => {
             return (
               <Tooltip title={text}>
@@ -150,25 +150,21 @@ const ApprovedVipProject = React.createClass({
           title: "订单部门",
           dataIndex: "depName",
           key: "depName",
-          className: "title-table",
         },
         {
           title: "订单负责人",
           dataIndex: "salesmanName",
           key: "salesmanName",
-          className: "title-table",
         },
         {
           title: "财务负责人",
           dataIndex: "financeName",
           key: "financeName",
-          className: "title-table",
         },
         {
           title: "会员项目",
           dataIndex: "projectName",
           key: "projectName",
-          className: "title-table",
           render: (text, record) => {
             return (
               <div>
@@ -182,21 +178,54 @@ const ApprovedVipProject = React.createClass({
           title: "数量",
           dataIndex: "commodityQuantity",
           key: "commodityQuantity",
-          className: "title-table",
+        },
+        {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
         },
         {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",
-          className: "title-table",
-          width: 300,
+          render: (text, record) => {
+            return (
+              <div style={{ maxWidth: 220 }}>{text}</div>
+            );
+          }
         },
         {
           title: "状态",
           dataIndex: "status",
           key: "status",
-          className: "title-table",
-          width: 80,
           render: (text) => {
             return (
               <div>
@@ -209,6 +238,7 @@ const ApprovedVipProject = React.createClass({
           title: "操作",
           dataIndex: "pictureUrl",
           key: "pictureUrl",
+          width: 90,
           render: (text, recard) => {
             return (
               <div>

+ 0 - 3
js/component/manageCenter/order/orderNew/billing.jsx

@@ -338,9 +338,6 @@ const MyService = Form.create()(
             title: "催收科目",
             dataIndex: "dunSubject",
             key: "dunSubject",
-            // render: text => {
-            //   return getjiedian(text);
-            // }
           },
           {
             title: "催款状态",

+ 188 - 22
js/component/manageCenter/order/orderNew/changeComponent/changeApply.js

@@ -15,6 +15,7 @@ import {
   AutoComplete,
   DatePicker,
   Radio,
+  Tooltip,
 } from "antd";
 import $ from "jquery/src/ajax";
 import moment from "moment";
@@ -27,11 +28,11 @@ import {
   customerType,
   jiedian,
   tepi,
-  boutique
+  boutique,
+  vipYear,
 } from "@/dataDic.js";
 import { moneyVerify } from "@/tools.js"
 import EnterpriseNameChange from "../../../../common/enterpriseNameChange";
-// F:\developmentFile\kede-client\js\component\common\projectOperation\index.jsx
 import ProjectOperation from "../../../../common/projectOperation";
 const FormItem = Form.Item;
 const confirm = Modal.confirm;
@@ -623,11 +624,50 @@ class ChangeApply extends Component {
           key: "receiverName",
         },
         {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
+        },
+        {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",
           render: (text) => {
-            return text && text.length > 8 ? text.substr(0, 8) + "…" : text;
+            return (
+              <Tooltip title={text}>
+                <span>
+                  {text && text.length > 8 ? text.substr(0, 8) + "…" : text}
+                </span>
+              </Tooltip>
+            )
           },
         },
         {
@@ -656,6 +696,8 @@ class ChangeApply extends Component {
       ],
       patentTypeList: [],
       displayFees: "none",
+      serviceLife: [],
+      isVip: undefined,
     };
     this.departmentList = this.departmentList.bind(this);
     this.changeApply = this.changeApply.bind(this);
@@ -798,6 +840,8 @@ class ChangeApply extends Component {
       //commodityPrice:kid.price==0?kid.price.toString():kid.price,
       commodityFirstPayment: kid.firstPayment == 0 ? kid.firstPayment.toString() : kid.firstPayment,
       isIso: value.indexOf("贯标") !== -1,// 是否为贯标项目
+      isVip: kid.cSort,//暂时判断等于6的时候会员
+      commodityQuantity: kid.cSort == 6 ? 1 : undefined,//服务数量
     });
   }
 
@@ -1079,7 +1123,7 @@ class ChangeApply extends Component {
   changeProSubmit() {
     if (this.state.gid == undefined || !this.state.gid) {
       message.warning("服务名称不匹配!");
-      return 
+      return
     }
     let reg = /^([0]|[1-9][0-9]*)$/;
     if (
@@ -1087,12 +1131,12 @@ class ChangeApply extends Component {
       !reg.test(this.state.commodityQuantity)
     ) {
       message.warning("请输入正确商品数量!");
-      return 
+      return
     }
     if (this.state.displayFees === 'block') {
       if (this.state.patentType === "" && !this.state.patentTransfer) {
         message.warning("请选择专利类型!");
-        return 
+        return
       }
       if (this.state.officialCost === '') {
         message.warning("请选择官费!");
@@ -1105,11 +1149,29 @@ class ChangeApply extends Component {
     }
     if (!this.state.commodityPrice) {
       message.warning("请输入金额!");
-      return 
+      return
     }
     if (!this.state.main) {
       message.warning("请选择是否为主要项目!");
-      return 
+      return
+    }
+    if (this.state.isVip == 6) {
+      if (this.state.yearSum === undefined) {
+        message.warning("请选择会员总服务年限!");
+        return
+      }
+      if (this.state.serviceLife.length === 0) {
+        message.warning("请添加会员服务年限!");
+        return
+      }
+      if (this.state.serviceLife.length != this.state.yearSum) {
+        message.warning("会员服务年限与总年限不符合!");
+        return
+      }
+      if (this.state.serviceYear === undefined) {
+        message.warning("请选择本次派单年份!");
+        return
+      }
     }
     this.setState({
       loading: true
@@ -1118,22 +1180,28 @@ class ChangeApply extends Component {
     if (this.state.typeChange == 4 || this.state.typeChange == 5) {
       type = 1;
     }
+    let infor = {
+      commodityId: this.state.gid, //商品ID
+      orderNo: this.state.data.orderNo, //订单编号
+      commodityName: this.state.commodityName, //商品名称
+      commodityQuantity: this.state.commodityQuantity, //商品数量
+      commodityPrice: this.state.commodityPrice, //签单总价
+      taskComment: this.state.taskComment, //服务说明
+      main: this.state.main, //是否为主要项目
+      cid: this.state.data.id, //变更ID
+      type,
+    }
+    if (this.state.isVip == 6) {//会员
+      infor.yearSum = this.state.yearSum //会员总服务年限
+      infor.serviceLife = JSON.stringify(this.state.serviceLife) //会员服务年限
+      infor.serviceYear = this.state.serviceYear //本次派单年份
+    }
     $.ajax({
       method: "post",
       dataType: "json",
       crossDomain: false,
       url: globalConfig.context + "/api/admin/orderChange/addChangeTask",
-      data: {
-        commodityId: this.state.gid, //商品ID
-        orderNo: this.state.data.orderNo, //订单编号
-        commodityName: this.state.commodityName, //商品名称
-        commodityQuantity: this.state.commodityQuantity, //商品数量
-        commodityPrice: this.state.commodityPrice, //签单总价
-        taskComment: this.state.taskComment, //服务说明
-        main: this.state.main, //是否为主要项目
-        cid: this.state.data.id, //变更ID
-        type
-      },
+      data: infor,
       success: function (data) {
         let theArr = [];
         if (data.error && data.error.length) {
@@ -1872,6 +1940,10 @@ class ChangeApply extends Component {
           {group.bname}
         </Select.Option>
       ));
+    let children = vipYear.map(its => (
+      <Option key={its}>{its}</Option>
+    ));
+    const { isVip } = this.state
     return (
       <div>
         <Spin spinning={this.state.loading}>
@@ -2032,7 +2104,7 @@ class ChangeApply extends Component {
               >
                 重置
               </Button>
-              {this.state.data.status == 3 ? (
+              {(this.state.data.status == 3 || this.state.data.status == 0) ? (
                 <Button
                   type="danger"
                   style={{
@@ -2300,7 +2372,7 @@ class ChangeApply extends Component {
           </div>
           <Modal
             maskClosable={false}
-            title="修改项目金额及数量"
+            title="修改项目金额及数量00"
             visible={this.state.editProVisible}
             onOk={this.submitEditPro}
             width={300}
@@ -2433,6 +2505,7 @@ class ChangeApply extends Component {
                 >
                   <Input
                     placeholder="请输入服务数量"
+                    disabled={isVip == 6}
                     value={this.state.commodityQuantity}
                     style={{ width: "200px" }}
                     onChange={(e) => {
@@ -2572,6 +2645,94 @@ class ChangeApply extends Component {
                   </Select>
                   <span className="mandatory">*</span>
                 </FormItem>
+                {
+                  isVip == 6 &&
+                  <FormItem
+                    className="half-item"
+                    {...formItemLayout}
+                    label="会员总服务年限"
+                  >
+                    {
+                      <Select
+                        placeholder="请选择会员总服务年限"
+                        style={{ width: "200px" }}
+                        value={this.state.yearSum}
+                        onChange={(e) => {
+                          this.setState({ yearSum: e });
+                        }}
+                      >
+                        {[
+                          { value: 1, key: "一年" },
+                          { value: 2, key: "二年" },
+                          { value: 3, key: "三年" },
+                          { value: 4, key: "四年" },
+                          { value: 5, key: "五年" },
+                        ].map(function (item) {
+                          return (
+                            <Select.Option key={item.value}>
+                              {item.key}
+                            </Select.Option>
+                          );
+                        })}
+                      </Select>
+                    }
+                    <span className="mandatory">*</span>
+                  </FormItem>
+                }
+                {
+                  isVip == 6 &&
+                  <FormItem
+                    className="half-item"
+                    {...formItemLayout}
+                    label="会员服务年限"
+                  >
+                    {
+                      <Select
+                        mode="multiple"
+                        style={{ width: '200px' }}
+                        placeholder="请选择服务年限"
+                        defaultValue={this.state.serviceLife}
+                        onChange={e => {
+                          this.setState({
+                            serviceLife: e,
+                            serviceYear: undefined,
+                          })
+                        }}
+                      >
+                        {children}
+                      </Select>
+                    }
+                    <span className="mandatory">*</span>
+                  </FormItem>
+                }
+                {
+                  isVip == 6 &&
+                  <FormItem
+                    className="half-item"
+                    {...formItemLayout}
+                    label="本次派单"
+                  >
+                    {
+                      <Select
+                        placeholder="请选择本次派单年份"
+                        style={{ width: "200px" }}
+                        value={this.state.serviceYear}
+                        onChange={(e) => {
+                          this.setState({ serviceYear: e });
+                        }}
+                      >
+                        {this.state.serviceLife.length > 0 && this.state.serviceLife.map(function (item) {
+                          return (
+                            <Select.Option key={item}>
+                              {item}
+                            </Select.Option>
+                          );
+                        })}
+                      </Select>
+                    }
+                    <span className="mandatory">*</span>
+                  </FormItem>
+                }
                 <div className="clearfix">
                   <FormItem
                     labelCol={{ span: 4 }}
@@ -2580,13 +2741,18 @@ class ChangeApply extends Component {
                   >
                     <Input
                       type="textarea"
-                      placeholder="如会员项目请详细描写会员项目的服务年限、详细服务时间段段,如第一年从2021年1月至2021年12月31日止,第二年从。。。"
+                      placeholder="如:派2022年会员服务,总会员服务三年,客户付款情况说明"
+                      autosize={{ minRows: 4 }}
                       value={this.state.taskComment}
                       onChange={(e) => {
                         this.setState({ taskComment: e.target.value });
                       }}
                     />
                   </FormItem>
+                  <div style={{ color: "red", marginLeft: 144 }}>
+                    请详细说明项目服务时间,总服务时间及付款情况,如:<span style={{ color: "#333" }}>派2022年会员服务,总会员服务三年,客户付款情况说明</span>
+                    <p>未付款时,需进行特批审核,请详细说明预计付款时间等详细情况</p>
+                  </div>
                 </div>
                 {/*0通用 1专利 2软著 3审计 4双软 5高新 6商标*/}
                 {this.state.addProjectType === 5 ?

+ 33 - 0
js/component/manageCenter/order/orderNew/changeComponent/orderDetail.js

@@ -211,6 +211,39 @@ class OrderDetail extends Component {
           }
         },
         {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
+        },
+        {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",

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

@@ -1459,6 +1459,7 @@ const IntentionCustomer = Form.create()(
       const cuiDataList = this.state.contactList || [];
       return (
         <div className="user-content">
+          <textarea id="copyText" style={{ opacity: 0 }} />
           {this.state.resVisible ? (
             <ResolutionDetail
               cancel={this.resCancel}

+ 1 - 0
js/component/manageCenter/order/orderNew/inquiry.jsx

@@ -4591,6 +4591,7 @@ const IntentionCustomer = Form.create()(
             visible={this.state.addnextVisible}
             onCancel={this.nextCancel}
           />}
+          <textarea id="copyText" style={{ opacity: 0 }} />
         </div>
       );
     },

+ 41 - 12
js/component/manageCenter/order/orderNew/myprojectvip.jsx

@@ -101,7 +101,7 @@ const MyProjectVip = React.createClass({
           title: "客户名称",
           dataIndex: "userName",
           key: "userName",
-          width: 200,
+          width: 160,
           render: text => {
             return (
               <Tooltip title={text}>
@@ -149,25 +149,21 @@ const MyProjectVip = React.createClass({
           title: "订单部门",
           dataIndex: "depName",
           key: "depName",
-          className: "title-table",
         },
         {
           title: "订单负责人",
           dataIndex: "salesmanName",
           key: "salesmanName",
-          className: "title-table",
         },
         {
           title: "财务负责人",
           dataIndex: "financeName",
           key: "financeName",
-          className: "title-table",
         },
         {
           title: "会员项目",
           dataIndex: "projectName",
           key: "projectName",
-          className: "title-table",
           render: (text, record) => {
             return (
               <div>
@@ -181,21 +177,54 @@ const MyProjectVip = React.createClass({
           title: "数量",
           dataIndex: "commodityQuantity",
           key: "commodityQuantity",
-          className: "title-table",
+        },
+        {
+          title: "总年限",
+          dataIndex: "yearSum",
+          key: "yearSum",
+          render: (text, record) => {
+            return (
+              <div>{["", "一年", "二年", "三年", "四年", "五年"][text]}</div>
+            );
+          }
+        },
+        {
+          title: "年限",
+          dataIndex: "serviceLife",
+          key: "serviceLife",
+          width: 60,
+          render: (text, record) => {
+            return (
+              !!text && JSON.parse(text).map(item =>
+                <div>{item}年 </div>
+              )
+            );
+          }
+        },
+        {
+          title: "本次派单",
+          dataIndex: "serviceYear",
+          key: "serviceYear",
+          render: (text, record) => {
+            return (
+              <div>{!text ? "" : text + "年"}</div>
+            );
+          }
         },
         {
           title: "项目说明",
           dataIndex: "taskComment",
           key: "taskComment",
-          className: "title-table",
-          width: 300,
+          render: (text, record) => {
+            return (
+              <div style={{ maxWidth: 220 }}>{text}</div>
+            );
+          }
         },
         {
           title: "状态",
           dataIndex: "status",
-          key: "status",
-          className: "title-table",
-          render: (text) => {
+          key: "status", render: (text) => {
             return (
               <div style={{ maxWidth: 115, color: text == 4 && "red" }}>
                 {["", "财务审核", "特批审核", "通过", "驳回"][text]}
@@ -207,7 +236,7 @@ const MyProjectVip = React.createClass({
           title: "操作",
           dataIndex: "pictureUrl",
           key: "pictureUrl",
-          className: "title-table",
+          width: 110,
           render: (text, recard) => {
             return (
               <div>

+ 68 - 11
js/component/manageCenter/order/source/index.jsx

@@ -19,6 +19,8 @@ import { ChooseList } from "../../../manageCenter/order/orderNew/chooseList";
 import OrderList from "./order"; //客户订单列表
 import './index.less';
 import ShowModalDiv from "@/showModal.jsx";
+import ReactEcharts from 'echarts-for-react/lib/core';
+const echarts = require('echarts');
 
 const { TabPane } = Tabs;
 const FormItem = Form.Item;
@@ -74,7 +76,6 @@ class Source extends Component {
           title: "省份",
           dataIndex: "province",
           key: "province",
-          width: 120,
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -92,7 +93,7 @@ class Source extends Component {
           title: "签单数(个)",
           dataIndex: "counts",
           key: "counts",
-          width: 120,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -106,7 +107,7 @@ class Source extends Component {
           title: "签单金额(万元)",
           dataIndex: "totalAmount",
           key: "totalAmount",
-          width: 170,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -120,7 +121,7 @@ class Source extends Component {
           title: "电话新开发/占比",
           dataIndex: "dhxkfl",
           key: "dhxkfl",
-          width: 170,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -139,7 +140,7 @@ class Source extends Component {
           title: "电话自带资源/占比",
           dataIndex: "dhzdzyl",
           key: "dhzdzyl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -158,7 +159,7 @@ class Source extends Component {
           title: "网络/占比",
           dataIndex: "wll",
           key: "wll",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -177,7 +178,7 @@ class Source extends Component {
           title: "渠道/占比",
           dataIndex: "qdl",
           key: "qdl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -196,7 +197,7 @@ class Source extends Component {
           title: "高新复购/占比",
           dataIndex: "gxfgl",
           key: "gxfgl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -215,7 +216,7 @@ class Source extends Component {
           title: "其他复购/占比",
           dataIndex: "qtfgl",
           key: "qtfgl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -234,7 +235,7 @@ class Source extends Component {
           title: "转介绍/占比",
           dataIndex: "zjsl",
           key: "zjsl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -253,7 +254,7 @@ class Source extends Component {
           title: "其他/占比",
           dataIndex: "qtl",
           key: "qtl",
-          width: 150,
+          width: '9%',
           onCellClick: (r) => {
             let cellData = {};
             cellData["province"] = r.province
@@ -433,6 +434,52 @@ class Source extends Component {
       globalConfig.context + "/open/download?fileName=" + fileName;
   }
 
+  getBarChartOption(data) {
+    const wz = data.counts - data.qt - data.zjs - data.qtfg - data.gxfg - data.qd - data.wl - data.dhzdzy - data.dhxkf;
+    return {
+      title: {
+        text: '湖南',
+        subtext: '签单金额(万元): ' + data.totalAmount,
+        left: 'center',
+        padding: 20,
+      },
+      tooltip: {
+        trigger: 'item',
+        formatter: '{a} <br/>{b}/占比 : {c} ({d}%)',
+      },
+      legend: {
+        orient: 'vertical',
+        left: 'left',
+      },
+      series: [
+        {
+          name: '签单数: ' + data.counts,
+          type: 'pie',
+          radius: '60%',
+          avoidLabelOverlap: true,
+          data: [
+            { value: data.dhxkf, name: '电话新开发' },
+            { value: data.dhzdzy, name: '电话自带资源' },
+            { value: data.wl, name: '网络' },
+            { value: data.qd, name: '渠道' },
+            { value: data.gxfg, name: '高新复购' },
+            { value: data.qtfg, name: '其他复购' },
+            { value: data.zjs, name: '转介绍' },
+            { value: data.qt, name: '其他' },
+            { value: wz, name: '未知' },
+          ],
+          emphasis: {
+            itemStyle: {
+              shadowBlur: 10,
+              shadowOffsetX: 0,
+              shadowColor: 'rgba(0, 0, 0, 0.5)',
+            }
+          }
+        }
+      ]
+    }
+  }
+
   componentWillMount() {
     this.selectSuperId();
     this.loadData();
@@ -579,6 +626,16 @@ class Source extends Component {
               pagination={this.state.pagination}
             />
           </Spin>
+          {
+            // this.state.dataSource.length > 0 &&
+            false &&
+            <ReactEcharts
+              style={{ height: "500px" }}
+              option={this.getBarChartOption(this.state.dataSource[0])}
+              echarts={echarts}
+            />
+          }
+
         </div>
         {
           visible &&

+ 1 - 1
package.json

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