Sfoglia il codice sorgente

公出增加客户面谈功能

雷佳斌 1 settimana fa
parent
commit
b90a871c50

+ 56 - 6
src/pages/applyDepart/index.jsx

@@ -17,6 +17,7 @@ import Result from "./result";
 import "./index.less";
 import Taro from "@tarojs/taro";
 import MessageNoticebar from "../../components/common/messageNoticebar";
+import InterviewCustomer from "../../pages/interview/index"
 
 const items = [
   { title: "选择公出企业" },
@@ -56,6 +57,12 @@ class ApplyDepart extends Component {
       type: 0,
       isShow: false,
       tipList: [],
+
+      // 需要面谈的客户列表,只有业务员自己的客户才能面谈
+      interviewCustomerList: [],
+      interviewIdx: 0,
+      // 面谈后返回的id
+      uaiIdList: []
     };
   }
 
@@ -66,6 +73,8 @@ class ApplyDepart extends Component {
       this.setState({
         current: 1,
         enterpriseInfor: arg,
+        interviewCustomerList: arg.list.filter(item => item.myUser === 1),
+        interviewIdx: 0
       });
     });
     Taro.eventCenter.on("publicContent", (arg) => {
@@ -79,9 +88,15 @@ class ApplyDepart extends Component {
       });
     });
     Taro.eventCenter.on("enterpriseBack", () => {
-      this.setState({
-        current: 0,
-      });
+        const { interviewCustomerList } = this.state;
+        if (interviewCustomerList.length) {
+            this.setState({ interviewIdx: interviewCustomerList.length - 1 });
+        } else {
+            this.setState({
+                current: 0,
+              });
+        }
+      
     });
     Taro.eventCenter.on("result", () => {
       this.setState({
@@ -111,8 +126,26 @@ class ApplyDepart extends Component {
     }
   }
 
+  handleCustomerPrev() {
+      const { interviewIdx } = this.state;
+      if (interviewIdx == 0) {
+          this.setState({ current: 0, interviewIdx: -1 });
+      } else {
+          interviewIdx -= 1;
+          this.setState({ interviewIdx });
+      }
+  }
+
+  handleCustomerNext({ uaiId }) {
+    let { interviewIdx, uaiIdList } = this.state;
+    interviewIdx = interviewIdx + 1;
+    uaiIdList.push(uaiId);
+    this.setState({ interviewIdx, uaiIdList });
+  }
+
   render() {
     let userInfor = Taro.getStorageSync('userInfor');
+    const { interviewCustomerList, interviewIdx } = this.state;
     return (
       <View className="applyDepart">
         <MessageNoticebar />
@@ -153,15 +186,32 @@ class ApplyDepart extends Component {
             <View
               style={{ display: this.state.current === 0 ? "block" : "none" }}
             >
-              <Enterprise type={this.state.type} />
+                <Enterprise type={this.state.type} />
             </View>
             <View
               style={{ display: this.state.current === 1 ? "block" : "none" }}
             >
-              <PublicContent
+                {
+                    this.state.type == 0 && interviewCustomerList.length && interviewIdx < interviewCustomerList.length ? (
+                        <InterviewCustomer
+                            interviewIdx={interviewIdx}
+                            customerList={interviewCustomerList}
+                            onPrevClick={this.handleCustomerPrev.bind(this)}
+                            onNextClick={this.handleCustomerNext.bind(this)}
+                        />
+                    ) : (
+                        <PublicContent
+                            enterpriseInfor={this.state.enterpriseInfor}
+                            selectArrderLocation={this.state.selectArrderLocation}
+                            uaiIdList={this.state.uaiIdList}
+                        />
+                    )
+                }
+                
+              {/* <PublicContent
                 enterpriseInfor={this.state.enterpriseInfor}
                 selectArrderLocation={this.state.selectArrderLocation}
-              />
+              /> */}
             </View>
             <View
               style={{ display: this.state.current === 2 ? "block" : "none" }}

+ 35 - 36
src/pages/applyDepart/publicContent.jsx

@@ -135,7 +135,6 @@ class PublicContent extends Component {
       uids: this.props.enterpriseInfor.id,
       releaseStarts: this.state.rangeStartMinuteVal,
       releaseEnds: this.state.rangeEndMinuteVal,
-      remarks: this.state.reason,
       districtName: this.getArea(),
       addressName: this.props.selectArrderLocation.province + this.props.selectArrderLocation.city + this.props.selectArrderLocation.district,
       longitude: this.props.selectArrderLocation.longitude,
@@ -149,26 +148,23 @@ class PublicContent extends Component {
       assistAid: this.state.coorderList.length === 0 ? "" : this.state.coorderList.join(","),
       assistAidName: this.state.coorderList.length === 0 ? "" : getNameList(this.state.coorderList, this.state.cList).join(","),
     };
-    if (this.props.enterpriseInfor.type == 0) {
-      datas = {
-        ...datas,
-        ...{
-          plan: this.state.plan,
-          expectedEffect: this.state.expectedEffect,
-        }
-      };
+    if (this.props.enterpriseInfor.type == 0 && this.props.uaiIdList.length) {
+      datas.uaiId = this.props.uaiIdList.join(',');
     } else if (this.props.enterpriseInfor.type == 2) {
       datas = datas;
+      datas = { ...datas, remarks: this.state.reason };
     } else {
       datas = {
         ...datas,
         ...{
+          remarks: this.state.reason,
           plan: this.state.plan,
           expectedEffect: this.state.expectedEffect,
           orderNo: this.props.enterpriseInfor.orderNo,
         }
       };
     }
+
     addPublicRelease(datas)
       .then((v) => {
         this.setState({
@@ -664,31 +660,34 @@ class PublicContent extends Component {
           style={{ display: "block", paddingTop: "10px" }}
         >
           {/* 公出目标 */}
-          <View className="formName">
-            <Text><Text style={{ color: "red" }}>*</Text>公出目标:</Text>
-            <View
-              className="formValue"
-              style={{ paddingTop: "10px", textAlign: "left" }}
-            >
-              <AtTextarea
-                height={46}
-                value={this.state.reason}
-                onChange={(v) => {
-                  this.setState({
-                    reason: v,
-                  });
-                }}
-                maxLength={200}
-                placeholder={
-                  this.props.enterpriseInfor.type == 2
-                    ? "详细说明本次公出的内容,预计完成的内容"
-                    : "本次公出目标,谈的思路与步骤?"
-                }
-              />
+          {[2, 3].indexOf(this.props.enterpriseInfor.type) > -1 && (
+            <View className="formName">
+                <Text><Text style={{ color: "red" }}>*</Text>公出目标:</Text>
+                <View
+                className="formValue"
+                style={{ paddingTop: "10px", textAlign: "left" }}
+                >
+                <AtTextarea
+                    height={46}
+                    value={this.state.reason}
+                    onChange={(v) => {
+                    this.setState({
+                        reason: v,
+                    });
+                    }}
+                    maxLength={200}
+                    placeholder={
+                    this.props.enterpriseInfor.type == 2
+                        ? "详细说明本次公出的内容,预计完成的内容"
+                        : "本次公出目标,谈的思路与步骤?"
+                    }
+                />
+                </View>
             </View>
-          </View>
+          )}
+          
           {/* 公出计划 */}
-          {this.props.enterpriseInfor.type != 2 && (
+          {this.props.enterpriseInfor.type == 1 && (
             <View className="formName">
               <Text><Text style={{ color: "red" }}>*</Text>公出计划:</Text>
               <View
@@ -710,7 +709,7 @@ class PublicContent extends Component {
             </View>
           )}
           {/* 预计效果 */}
-          {this.props.enterpriseInfor.type != 2 && (
+          {this.props.enterpriseInfor.type == 1 && (
             <View className="formName">
               <Text><Text style={{ color: "red" }}>*</Text>预计效果:</Text>
               <View
@@ -790,15 +789,15 @@ class PublicContent extends Component {
                 Taro.showToast({ title: "请选择公出地点", icon: "none" });
                 return;
               }
-              if (!this.state.reason) {
+              if (this.props.enterpriseInfor.type !=0 && !this.state.reason) {
                 Taro.showToast({ title: "请输入公出目标", icon: "none" });
                 return;
               }
-              if (!this.state.plan && this.props.enterpriseInfor.type != 2) {
+              if (this.props.enterpriseInfor.type == 1 && !this.state.plan) {
                 Taro.showToast({ title: "请输入公出计划", icon: "none" });
                 return;
               }
-              if (!this.state.expectedEffect && this.props.enterpriseInfor.type != 2) {
+              if (this.props.enterpriseInfor.type == 1 && !this.state.expectedEffect) {
                 Taro.showToast({ title: "请输入预计效果", icon: "none" });
                 return;
               }

+ 8 - 4
src/pages/customerProfile/index.jsx

@@ -339,6 +339,7 @@ class CustomerProfile extends Component {
         locationCityName: dtails.locationCityName,
         locationArea: dtails.locationArea,
         locationAreaName: dtails.locationAreaName,
+        type: 0, // 1、更新档案和面谈,0、只更新档案
     };
     if (dtails.newChannel == 1) {
         // 渠道客户
@@ -349,9 +350,12 @@ class CustomerProfile extends Component {
             channelIndicators: dtails.channelIndicators,
         };
     } else {
-        const externalInvestIdArr = dtails.externalInvestName.split('、').map(() => {
-            return '0';
-        })
+        let externalInvestIdArr = [];
+        if (!!dtails.externalInvestName) {
+            externalInvestIdArr = dtails.externalInvestName.split('、').map(() => {
+                return '0';
+            })
+        }
         params = {
             ...params,
             industry: dtails.industry,
@@ -887,7 +891,7 @@ class CustomerProfile extends Component {
                 dtails.newChannel == 1
                   ?
                   <View className="first">
-                      <View className="title">渠道档案</View>
+                    <View className="title">渠道档案</View>
                     <View className="val" style={{ display: 'flex' }}>
                         企业所在地省市区:
                         <View onClick={() => {this.setState({ addressPickerShow: true })}}>

+ 382 - 136
src/pages/interview/index.jsx

@@ -111,12 +111,31 @@ class CustomerProfile extends Component {
     })
     this.queryByUidAll();
     this.getProjectList();
-    if (!this.isLogin()) {
-      Taro.setStorageSync('currentPage', `/pages/customerProfile/index?id=${this.$instance.router.params.id}`)
+  }
+
+  componentDidUpdate(prevProps) {
+      const { interviewIdx, customerList } = this.props;
+    if (interviewIdx != prevProps.interviewIdx && interviewIdx >= 0 && interviewIdx < customerList.length) {
+        this.queryByUidAll();
+        this.getProjectList();
     }
+  } 
+
+  handlePrevClick() {
+      this.props.onPrevClick();
+  }
+
+  handleNextClick() {
+    this.onSaveAllData((resData) => {
+        this.props.onNextClick(resData);
+    })
   }
 
   toggleAddressPicker(e) {
+      if (!e.province) {
+        this.setState({ addressPickerShow: false });
+        return;
+      }
       const addressIds = getProvince(e.province, e.city, e.area);
       const { dtails } = this.state;
       dtails.locationProvince = addressIds[0];
@@ -220,9 +239,10 @@ class CustomerProfile extends Component {
 
   // 客户档案详情
   queryByUidAll() {
+    const id = this.props.customerList[this.props.interviewIdx].id;
     queryByUidAll(
-      this.$instance.router.params.notRequired,
-      { id: this.$instance.router.params.id, }
+        false,
+        { id }
     )
       .then((v) => {
         if (v.error.length === 0) {
@@ -264,118 +284,173 @@ class CustomerProfile extends Component {
   }
 
   validParams(params) {
+    const { dtails } = this.state;
     let flag = true;
     let message = '';
-    if (!params.locationProvince) {
-        message = '请选择企业所在地省市区';
-        flag = false;
-    } else if (!params.industry) {
-        message = '请选择企业所属行业';
-        flag = false;
-    } else if (!params.businessScope) {
-        message = '主营产品不能为空';
-        flag = false;
-    } else if (params.companyCount === '' || params.companyCount === undefined || params.companyCount === null) {
-        message = '请输入母/子公司数';
-        flag = false;
-    } else if (params.socialSecurityCount === '' || params.socialSecurityCount === undefined || params.socialSecurityCount === null) {
-        message = '请输入社保人数';
-        flag = false;
-    } else if (params.externalInvestCount === '' || params.externalInvestCount === undefined || params.externalInvestCount === null) {
-        message = '请输入对外投资控股的企业数';
-        flag = false;
-    } else if (params.financialRevenue === '' || params.financialRevenue === undefined || params.financialRevenue === null) {
-        message = '请输入营收数据';
-        flag = false;
-    } else if (params.financialTax === '' || params.financialTax === undefined || params.financialTax === null) {
-        message = '请输入税收数据';
-        flag = false;
-    } else if (params.financialProperty === '' || params.financialProperty === undefined || params.financialProperty === null) {
-        message = '请输入资产数据';
-        flag = false;
-    } else if (params.financialRd === '' || params.financialRd === undefined || params.financialRd === null) {
-        message = '请输入研发费用';
-        flag = false;
-    } else if (!params.externalInvestIndustry) {
-        message = '请选择对外投资控股的行业';
-        flag = false;
-    } else if (!params.externalInvestName) {
-        message = '请选择对外投资控股的企业';
-        flag = false;
-    } else if (!params.earlyCommunication || (params.earlyCommunication && params.earlyCommunication.length < 20)) {
-        message = '请输入客户的难处,并且在20字以上';
-        flag = false;
-    } else if (!params.customerDemand || (params.customerDemand && params.customerDemand.length < 20)) {
-        message = '请输入客户的需求,并且在20字以上';
-        flag = false;
-    } else if (!params.interviewIdeas || (params.interviewIdeas && params.interviewIdeas.length < 20)) {
-        message = '请输入面谈思路,并且在20字以上';
-        flag = false;
-    } else if (!params.interviewPurpose || (params.interviewPurpose && params.interviewPurpose.length < 20)) {
-        message = '请输入面谈达成的目的,并且在20字以上';
-        flag = false;
-    } else if (!params.interviewRecommend || (params.interviewRecommend && params.interviewRecommend.length < 20)) {
-        message = '请输入经理/上级面谈建议,并且在20字以上';
-        flag = false;
+    if (dtails.newChannel == 1) {
+        // 渠道客户
+        if (!params.channelType) {
+            flag = false;
+            message = '请选择渠道性质';
+        } else if (!params.enterpriseCount) {
+            flag = false;
+            message = '请输入渠道所覆盖企业数';
+        } else if (!params.channelIndicators) {
+            flag = false;
+            message = '请输入渠道考核指标';
+        } else if (!params.interviewIdeas || (params.interviewIdeas && params.interviewIdeas.length < 20)) {
+            message = '请输入面谈思路,并且在20字以上';
+            flag = false;
+        } else if (!params.interviewPurpose || (params.interviewPurpose && params.interviewPurpose.length < 20)) {
+            message = '请输入面谈达成的目的,并且在20字以上';
+            flag = false;
+        }  else {
+            if (this.state.dtails.interviewList.length) {
+                if (!params.interviewFeedback || (params.interviewFeedback && params.interviewFeedback.length < 20)) {
+                    message = '请输入面谈后的反馈,并且在20字以上';
+                    flag = false;
+                } else if (!params.followUpPlan || (params.followUpPlan && params.followUpPlan.length < 20)) {
+                    message = '请输入后续跟进计划,并且在20字以上';
+                    flag = false;
+                }
+            }
+        }
     } else {
-        if (this.state.dtails.interviewList.length) {
-            if (!params.interviewFeedback || (params.interviewFeedback && params.interviewFeedback.length < 20)) {
-                message = '请输入面谈后的反馈,并且在20字以上';
-                flag = false;
-            } else if (!params.followUpPlan || (params.followUpPlan && params.followUpPlan.length < 20)) {
-                message = '请输入后续跟进计划,并且在20字以上';
-                flag = false;
+        if (!params.locationProvince) {
+            message = '请选择企业所在地省市区';
+            flag = false;
+        } else if (!params.industry) {
+            message = '请选择企业所属行业';
+            flag = false;
+        } else if (!params.businessScope) {
+            message = '主营产品不能为空';
+            flag = false;
+        } else if (params.companyCount === '' || params.companyCount === undefined || params.companyCount === null) {
+            message = '请输入母/子公司数';
+            flag = false;
+        } else if (params.socialSecurityCount === '' || params.socialSecurityCount === undefined || params.socialSecurityCount === null) {
+            message = '请输入社保人数';
+            flag = false;
+        } else if (params.externalInvestCount === '' || params.externalInvestCount === undefined || params.externalInvestCount === null) {
+            message = '请输入对外投资控股的企业数';
+            flag = false;
+        } else if (params.financialRevenue === '' || params.financialRevenue === undefined || params.financialRevenue === null) {
+            message = '请输入营收数据';
+            flag = false;
+        } else if (params.financialTax === '' || params.financialTax === undefined || params.financialTax === null) {
+            message = '请输入税收数据';
+            flag = false;
+        } else if (params.financialProperty === '' || params.financialProperty === undefined || params.financialProperty === null) {
+            message = '请输入资产数据';
+            flag = false;
+        } else if (params.financialRd === '' || params.financialRd === undefined || params.financialRd === null) {
+            message = '请输入研发费用';
+            flag = false;
+        } else if (!params.externalInvestIndustry) {
+            message = '请选择对外投资控股的行业';
+            flag = false;
+        } else if (!params.externalInvestName) {
+            message = '请选择对外投资控股的企业';
+            flag = false;
+        } else if (!params.earlyCommunication || (params.earlyCommunication && params.earlyCommunication.length < 20)) {
+            message = '请输入客户的难处,并且在20字以上';
+            flag = false;
+        } else if (!params.customerDemand || (params.customerDemand && params.customerDemand.length < 20)) {
+            message = '请输入客户的需求,并且在20字以上';
+            flag = false;
+        } else if (!params.interviewIdeas || (params.interviewIdeas && params.interviewIdeas.length < 20)) {
+            message = '请输入面谈思路,并且在20字以上';
+            flag = false;
+        } else if (!params.interviewPurpose || (params.interviewPurpose && params.interviewPurpose.length < 20)) {
+            message = '请输入面谈达成的目的,并且在20字以上';
+            flag = false;
+        } else if (!params.interviewRecommend || (params.interviewRecommend && params.interviewRecommend.length < 20)) {
+            message = '请输入经理/上级面谈建议,并且在20字以上';
+            flag = false;
+        } else {
+            if (this.state.dtails.interviewList.length) {
+                if (!params.interviewFeedback || (params.interviewFeedback && params.interviewFeedback.length < 20)) {
+                    message = '请输入面谈后的反馈,并且在20字以上';
+                    flag = false;
+                } else if (!params.followUpPlan || (params.followUpPlan && params.followUpPlan.length < 20)) {
+                    message = '请输入后续跟进计划,并且在20字以上';
+                    flag = false;
+                }
             }
         }
     }
-
     return { flag, message };
   }
 
-  onSaveAllData() {
+  onSaveAllData(callback) {
     const { dtails } = this.state;
-    const externalInvestIdArr = dtails.externalInvestName.split[','].map(() => {
-        return '0';
-    })
-    const params = {
+
+    let params = {
         id: dtails.id,
         uid: dtails.uid,
-        industry: dtails.industry,
-        industryName: dtails.industryName,
-        earlyCommunication: dtails.earlyCommunication,
-        customerDemand: dtails.customerDemand,
-        interviewIdeas: dtails.interviewIdeas,
-        interviewPurpose: dtails.interviewPurpose,
-        interviewRecommend: dtails.interviewRecommend,
-        interviewFeedback: dtails.interviewFeedback,
-        followUpPlan: dtails.followUpPlan,
-        patentCount: dtails.patentCount,
-        inventionPatentCount: dtails.inventionPatentCount,
-        utilityModelCount: dtails.utilityModelCount,
-        appearancePatentCount: dtails.appearancePatentCount,
-        softwareWorksCount: dtails.softwareWorksCount,
-        otherCount: dtails.otherCount,
-        financialData: dtails.financialData,
-        companyCount: dtails.companyCount,
-        socialSecurityCount: dtails.socialSecurityCount,
-        externalInvestCount: dtails.externalInvestCount,
-        externalInvestIndustry: dtails.externalInvestIndustry,
-        externalInvestIndustryName: dtails.externalInvestIndustryName,
-        externalInvestId: externalInvestIdArr.join(','),
-        externalInvestName: dtails.externalInvestName,
-        financialRevenue: dtails.financialRevenue,
-        financialTax: dtails.financialTax,
-        financialProperty: dtails.financialProperty,
-        financialRd: dtails.financialRd,
         locationProvince: dtails.locationProvince,
         locationProvinceName: dtails.locationProvinceName,
         locationCity: dtails.locationCity,
         locationCityName: dtails.locationCityName,
         locationArea: dtails.locationArea,
         locationAreaName: dtails.locationAreaName,
-        standard: dtails.standard,
-        businessScope: dtails.businessScope
+        type: 1, // 1、更新档案和面谈,0、只更新档案
     };
+
+    if (dtails.newChannel == 1) {
+        // 渠道客户
+        params = {
+            ...params,
+            channelType: dtails.channelType,
+            enterpriseCount: dtails.enterpriseCount,
+            channelIndicators: dtails.channelIndicators,
+            interviewIdeas: dtails.interviewIdeas,
+            interviewPurpose: dtails.interviewPurpose,
+            interviewFeedback: dtails.interviewFeedback,
+            followUpPlan: dtails.followUpPlan,
+        };
+    } else {
+        let externalInvestIdArr = [];
+        if (!!dtails.externalInvestName) {
+            externalInvestIdArr = dtails.externalInvestName.split('、').map(() => {
+                return '0';
+            })
+        }
+        params = {
+            ...params,
+            industry: dtails.industry,
+            industryName: dtails.industryName,
+            earlyCommunication: dtails.earlyCommunication,
+            customerDemand: dtails.customerDemand,
+            interviewIdeas: dtails.interviewIdeas,
+            interviewPurpose: dtails.interviewPurpose,
+            interviewRecommend: dtails.interviewRecommend,
+            interviewFeedback: dtails.interviewFeedback,
+            followUpPlan: dtails.followUpPlan,
+            patentCount: dtails.patentCount,
+            inventionPatentCount: dtails.inventionPatentCount,
+            utilityModelCount: dtails.utilityModelCount,
+            appearancePatentCount: dtails.appearancePatentCount,
+            softwareWorksCount: dtails.softwareWorksCount,
+            otherCount: dtails.otherCount,
+            financialData: dtails.financialData,
+            companyCount: dtails.companyCount,
+            socialSecurityCount: dtails.socialSecurityCount,
+            externalInvestCount: dtails.externalInvestCount,
+            externalInvestIndustry: dtails.externalInvestIndustry,
+            externalInvestIndustryName: dtails.externalInvestIndustryName,
+            externalInvestId: externalInvestIdArr.join(','),
+            externalInvestName: dtails.externalInvestName,
+            financialRevenue: dtails.financialRevenue,
+            financialTax: dtails.financialTax,
+            financialProperty: dtails.financialProperty,
+            financialRd: dtails.financialRd,
+            standard: dtails.standard,
+            businessScope: dtails.businessScope,
+        };
+    }
+
+    
     for (let key in params) {
         if (params[key] === undefined || params[key] === 'undefined' || params[key] === null || params[key] === 'null') {
             delete params[key];
@@ -396,12 +471,8 @@ class CustomerProfile extends Component {
           Taro.showToast({
             title: "修改成功",
           });
-          setTimeout(() => {
-            //表示回到上一页面
-            Taro.navigateBack({
-                delta: 1
-            });
-          }, 1000)
+          
+          callback && callback(v.data);
         } else {
           Taro.showToast({
             title: v.error[0].message,
@@ -555,10 +626,10 @@ class CustomerProfile extends Component {
 
   /**
    * 获取项目列表
-   * @param {*} uid 客户编号
    */
-  getProjectList(uid) {
-    const params = { uid: this.$instance.router.params.id, pageNo: 1, pageSize: 9999 }
+  getProjectList() {
+    let uid = this.props.customerList[this.props.interviewIdx].id;
+    const params = { uid, pageNo: 1, pageSize: 9999 }
     queryProjectList(params).then(res => {
         if (!res.error.length) {
             this.setState({ projectList: res.data.list });
@@ -877,35 +948,69 @@ class CustomerProfile extends Component {
                 dtails.newChannel == 1
                   ?
                   <View className="first">
-                    <View className="tit">
-                      已知渠道情况
-                      {
-                        dtails.myUser == 1 &&
-                        <View className="up"
-                          onClick={e => {
-                            e.stopPropagation()
-                            this.setState({
-                              upType: 7,
-                              isOpened: true,
-                              info: {
-                                uid: this.$instance.router.params.id,
-                                channelType: dtails.channelType,
-                                enterpriseCount: dtails.enterpriseCount,
-                                channelIndicators: dtails.channelIndicators,
-                              },
-                              channe: {
-                                id: dtails.channelType,
-                                title: getChannel(dtails.channelType)
-                              }
-                            })
-                          }}
-                        >修改</View>
-                      }
+                    <View className="title">渠道面谈思路表</View>
+                    <View className="val" style={{ display: 'flex' }}>
+                        企业所在地省市区:
+                        <View onClick={() => {this.setState({ addressPickerShow: true })}}>
+                            { dtails.locationProvince ? `${dtails.locationProvinceName}-${dtails.locationCityName}-${dtails.locationAreaName}` : '请选择' }
+                        </View>
+                        <AddressPicker
+                            pickerShow={this.state.addressPickerShow}
+                            onHandleToggleShow={this.toggleAddressPicker.bind(this)}
+                        />
                     </View>
-                    <View className="val">渠道类别:{getChannel(dtails.channelType)}</View>
-                    <View className="val">渠道企业数:{dtails.enterpriseCount}</View>
-                    <View className="val">渠道考核指标:{dtails.channelIndicators}</View>
-                    <View className="tit">
+                    <View className="val" style={{ display: 'flex', alignItems: 'center' }}>
+                        渠道类别:
+                        <Picker
+                            value={dtails.channelType}
+                            range={channelTypeList}
+                            rangeKey='title'
+                            mode='selector'
+                            onChange={(e) => {
+                                const { dtails } = this.state; 
+                                dtails.channelType = e.detail.value;
+                                console.log(dtails.channelType)
+                                this.setState({ dtails })
+                            }}>
+                            <View>
+                            {!getChannel(dtails.channelType) ? "请选择" : getChannel(dtails.channelType)}
+                            </View>
+                        </Picker>
+                    </View>
+                    <View className="val" style={{ display: 'flex', alignItems: 'center' }}>
+                        渠道企业数:
+                        <View style={{width: '120rpx'}}>
+                            <AtInputNumber
+                            min={0}
+                            max={99999}
+                            value={dtails.enterpriseCount}
+                            name='companyCount'
+                            type='number'
+                            placeholder='请输入数量'
+                            size='mini'
+                            onChange={value => {
+                                dtails.enterpriseCount = value;
+                                this.setState({ dtails })
+                            }}
+                            />
+                        </View>
+                    </View>
+                    <View className="val" style={{display: 'flex'}}>
+                        渠道考核指标:
+                        <AtTextarea
+                            value={dtails.channelIndicators || ''}
+                            onChange={e => {
+                                this.setState({
+                                    dtails: Object.assign(dtails, {
+                                        channelIndicators: e,
+                                    }),
+                                })
+                            }}
+                            maxLength={200}
+                            placeholder='请填写渠道考核指标~'
+                        />
+                    </View>
+                    <View className="tit" style={{ marginTop: '60rpx' }}>
                       <Text>
                         联系人
                         <Text className="txt">(面谈人)</Text>
@@ -935,6 +1040,146 @@ class CustomerProfile extends Component {
                         <View className="val" key={k}>{v.name}&nbsp;&nbsp;{v.position}&nbsp;&nbsp;{v.department}&nbsp;&nbsp;{v.mobile}</View>
                       )
                     }
+                    <View className="tit" style={{marginTop: '60rpx'}}>
+                      本次面谈项目
+                      {
+                        dtails.myUser == 1 &&
+                        <View className="up"
+                          onClick={e => {
+                            e.stopPropagation()
+                            this.getBusinessProjectByName("")
+                            this.setState({
+                              upType: 5,
+                              isOpened: true,
+                              info: {
+                                uid: this.$instance.router.params.id,
+                                intendedProject: dtails.intendedProject,
+                              },
+                              checkOptions: []
+                            })
+                          }}
+                        >新增</View>
+                      }
+                    </View>
+                    <View className="val">{
+                        this.state.projectList.map(item => {
+                            return <View style={{ display: 'flex', alignItems: 'center' }}>
+                                <Text style={{ fontSize: '30rpx' }} style={{marginRight: '10rpx'}}>
+                                    { this.renderProjectItemName(item) }
+                                </Text>
+                                <AtIcon value="close" size='15' color="#f00" onClick={() => {this.handleDelProject(item)}} />
+                            </View>
+                        })
+                    }</View>
+
+                    <View className="tit">
+                        <Text>
+                        面谈思路
+                        <Text className="txt">(20字以上)</Text>
+                        </Text>
+                        { dtails.interviewList.length ? (
+                            <AtIcon value='clock' size='20' color='#1E90FF' onClick={() => this.openInteractHis('interviewIdeas')}></AtIcon>
+                        ) : null }
+                        
+                    </View>
+                    <View className="val">
+                        <AtTextarea
+                        value={dtails.interviewIdeas}
+                        maxLength={200}
+                        placeholder='请编写本次面谈客户思路~'
+                        height={70}
+                        onChange={value => {
+                            dtails.interviewIdeas = value;
+                            this.setState({ dtails });
+                        }}
+                        />
+                    </View>
+                    <View className="tit">
+                        <Text>
+                        面谈达成的目的
+                        <Text className="txt">(20字以上)</Text>
+                        </Text>
+                        { dtails.interviewList.length ? (
+                            <AtIcon value='clock' size='20' color='#1E90FF' onClick={() => this.openInteractHis('interviewPurpose')}></AtIcon>
+                        ) : null }
+                    </View>
+                    <View className="val">
+                        <AtTextarea
+                        value={dtails.interviewPurpose}
+                        maxLength={200}
+                        placeholder='请编写本次面谈达成的目的~'
+                        height={70}
+                        onChange={value => {
+                            dtails.interviewPurpose = value;
+                            this.setState({ dtails });
+                        }}
+                        />
+                    </View>
+                    <View className="tit">
+                        <Text>
+                        经理/上级面谈建议
+                        <Text className="txt">(由经理/上级口述,本人整理,20字以上)</Text>
+                        </Text>
+                        { dtails.interviewList.length ? (
+                            <AtIcon value='clock' size='20' color='#1E90FF' onClick={() => this.openInteractHis('interviewRecommend')}></AtIcon>
+                        ) : null }
+                    </View>
+                    <View className="val">
+                        <AtTextarea
+                        value={dtails.interviewRecommend}
+                        maxLength={200}
+                        placeholder='请编写本次面谈建议~'
+                        height={70}
+                        onChange={value => {
+                            dtails.interviewRecommend = value;
+                            this.setState({ dtails });
+                        }}
+                        />
+                    </View>
+
+                    { dtails.interviewList && dtails.interviewList.length ? (
+                        <>
+                            <View className="tit">
+                                <Text>
+                                面谈后的反馈
+                                <Text className="txt">(20字以上)</Text>
+                                </Text>
+                                <AtIcon value='clock' size='20' color='#1E90FF' onClick={() => this.openInteractHis('interviewFeedback')}></AtIcon>
+                            </View>
+                            <View className="val">
+                                <AtTextarea
+                                value={dtails.interviewFeedback}
+                                maxLength={200}
+                                placeholder='请编写本次面谈后的反馈~'
+                                height={70}
+                                onChange={value => {
+                                    dtails.interviewFeedback = value;
+                                    this.setState({ dtails });
+                                }}
+                                />
+                            </View>
+
+                            <View className="tit">
+                                <Text>
+                                后续跟进计划
+                                <Text className="txt">(20字以上)</Text>
+                                </Text>
+                                <AtIcon value='clock' size='20' color='#1E90FF' onClick={() => this.openInteractHis('followUpPlan')}></AtIcon>
+                            </View>
+                            <View className="val">
+                                <AtTextarea
+                                value={dtails.followUpPlan}
+                                maxLength={200}
+                                placeholder='请编写后续跟进计划~'
+                                height={70}
+                                onChange={value => {
+                                    dtails.followUpPlan = value;
+                                    this.setState({ dtails });
+                                }}
+                                />
+                            </View>
+                        </>
+                    ) : null }
                   </View>
                   :
                   <View className="first">
@@ -1407,8 +1652,9 @@ class CustomerProfile extends Component {
                             </>
                         ) : null }
 
-                        <View style={{ marginTop: '24rpx'}}>
-                            <AtButton type="primary" onClick={this.onSaveAllData.bind(this)}>保存</AtButton>
+                        <View style={{ display: 'flex', marginTop: '24rpx'}}>
+                            <AtButton type="secondary" circle onClick={this.handlePrevClick.bind(this)}>上一页</AtButton>
+                            <AtButton type="primary" circle onClick={this.handleNextClick.bind(this)}>下一页</AtButton>
                         </View>
                     </View>
                   </View>