Selaa lähdekoodia

SPD营销-第一波问题处理

001295 2 vuotta sitten
vanhempi
commit
444bfeaafa

+ 27 - 2
src/store/modules/user.js

@@ -8,7 +8,12 @@ const user = {
     name: '',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+    nickName: '',
+    deptId: '',
+    deptName: '',
+    orgId: '',
+    orgName: ''
   },
 
   mutations: {
@@ -29,7 +34,22 @@ const user = {
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
-    }
+    },
+    NICKNAME: (state, nickName) => {
+      state.nickName = nickName
+    },
+    DEPTID: (state, deptId) => {
+      state.deptId = deptId
+    },
+    DEPTNAME: (state, deptName) => {
+      state.deptName = deptName
+    },
+    ORGID: (state, orgId) => {
+      state.orgId = orgId
+    },
+    ORGNAME: (state, orgName) => {
+      state.orgName = orgName
+    },
   },
 
   actions: {
@@ -65,6 +85,11 @@ const user = {
           commit('SET_NAME', user.userName)
           commit('SET_ID', user.userId)
           commit('SET_AVATAR', avatar)
+          commit('NICKNAME', user.nickName)
+          commit('DEPTID', user.deptId)
+          commit('DEPTNAME', user.deptName)
+          commit('ORGID', user.orgId)
+          commit('ORGNAME', user.orgName)
           resolve(res)
         }).catch(error => {
           reject(error)

+ 95 - 94
src/views/business/spd/bo/basic/details.vue

@@ -13,7 +13,7 @@
         <el-col :span="6">
           <el-select v-model="form.basic.boState" placeholder="商机状态" :disabled="true">
                 <el-option
-                  v-for="dict in dict.type.mk_bo_type"
+                  v-for="dict in dict.type.mk_bo_state"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -71,73 +71,6 @@
           <!-- <el-button style="margin-top: 12px;" @click="before" v-if="form.basic.boStage > 1">上一步</el-button> -->
           <el-button style="margin-top: 12px;" v-hasPermi="['mk:bo:basic:next']" @click="next" v-if="!(form.basic.boStage == 0 || form.basic.boFlow.projectApproval == 0) && !isUpdate">下一步</el-button>
         </div>
-        <!-- 基本信息 -->
-        <el-form ref="form" :model="form.basic" label-width="80px">
-          <el-row>
-            基本信息
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="商机来源" prop="boSource">
-                <el-select v-model="form.basic.boSource" placeholder="商机来源" :disabled="true">
-                  <el-option
-                    v-for="dict in dict.type.mk_bo_source"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="商机类型" prop="boType">
-                <el-select v-model="form.basic.boType" placeholder="商机类型" :disabled="true">
-                  <el-option
-                    v-for="dict in dict.type.mk_bo_type"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="客户名称" prop="customerName">
-                <el-input v-model="form.basic.customerName" placeholder="请输入客户名称" :disabled="true"/>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="医院营收总额" prop="totalHosRevenue">
-                <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
-                  <el-option
-                    v-for="dict in dict.type.mk_bo_total_revenue"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-                <!-- <el-input v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true"/> -->
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
-                <el-input v-model="form.basic.hosDiscreetValue" placeholder="请输入医院耗材预估值" :disabled="true"/>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="赢单率" prop="abc">
-                <el-input v-model="form.basic.abc" placeholder="赢单率" :disabled="true"/>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-form-item label="商机内容" prop="boContent">
-              <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
-            </el-form-item>
-          </el-row>
-        </el-form>
         <!-- 编辑按钮组 -->
         <el-row type="flex" class="row-bg" justify="end">
           <el-col :span="24">
@@ -215,7 +148,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.businessCouncilAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.businessCouncilAccessoryUrlId,form.basic.boFlow.businessCouncilAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -249,7 +182,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.projectProposalAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.projectProposalAccessoryUrlId,form.basic.boFlow.projectProposalAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -324,7 +257,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.preSaleProposalAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.preSaleProposalAccessoryUrlId,form.basic.boFlow.preSaleProposalAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -385,7 +318,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.investigationReportAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.investigationReportAccessoryUrlId,form.basic.boFlow.investigationReportAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -475,7 +408,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.investigateReportAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.investigateReportAccessoryUrlId,form.basic.boFlow.investigateReportAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -526,7 +459,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.biddingDocumentsAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.biddingDocumentsAccessoryUrlId,form.basic.boFlow.biddingDocumentsAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -574,7 +507,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.letterAcceptanceAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.letterAcceptanceAccessoryUrlId,form.basic.boFlow.letterAcceptanceAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -625,7 +558,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(form.basic.boFlow.contractDocumentAccessoryUrlId)"
+                    @click="exportAccessory(form.basic.boFlow.contractDocumentAccessoryUrlId,form.basic.boFlow.contractDocumentAccessoryName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -646,6 +579,73 @@
             <BehaviorList :source = "'BoDetails'" :bo="this.form.basic" v-if="secondTabs == 'gj'"/>
           </el-tab-pane>
         </el-tabs>
+        <!-- 基本信息 -->
+        <el-form ref="form" :model="form.basic" label-width="80px">
+          <el-row>
+            基本信息
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="商机来源" prop="boSource">
+                <el-select v-model="form.basic.boSource" placeholder="商机来源" :disabled="true">
+                  <el-option
+                    v-for="dict in dict.type.mk_bo_source"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="商机类型" prop="boType">
+                <el-select v-model="form.basic.boType" placeholder="商机类型" :disabled="true">
+                  <el-option
+                    v-for="dict in dict.type.mk_bo_type"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="客户名称" prop="customerName">
+                <el-input v-model="form.basic.customerName" placeholder="请输入客户名称" :disabled="true"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="医院营收总额" prop="totalHosRevenue">
+                <el-select v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true">
+                  <el-option
+                    v-for="dict in dict.type.mk_bo_total_revenue"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
+                <!-- <el-input v-model="form.basic.totalHosRevenue" placeholder="请输入医院营收总额" :disabled="true"/> -->
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="医院耗材预估值" prop="hosDiscreetValue">
+                <el-input v-model="form.basic.hosDiscreetValue" placeholder="请输入医院耗材预估值" :disabled="true"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="赢单率" prop="winningRate">
+                <el-input v-model="form.basic.winningRate" placeholder="赢单率" :disabled="true"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-form-item label="商机内容" prop="boContent">
+              <el-input v-model="form.basic.boContent" placeholder="商机内容" :disabled="true"/>
+            </el-form-item>
+          </el-row>
+        </el-form>
         <!-- 其它信息 -->
         <el-form ref="form" :model="form.basic" label-width="80px">
           <el-row>
@@ -731,7 +731,7 @@
                     plain
                     icon="el-icon-download"
                     size="mini"
-                    @click="exportAccessory(scope.row.urlId)"
+                    @click="exportAccessory(scope.row.url,scope.row.fileName)"
                     v-hasPermi="['system:user:export']"
                   >下载</el-button>
                 </el-col>
@@ -930,23 +930,24 @@ export default {
       this.getBasic();
     },
     //下载附件
-    exportAccessory(urlId){
-      console.log('urlId',urlId);
-      axios.get('https://test-sy.derom.com/document-center/fastdfs/download?id=' + urlId).then(response => {
-        let blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", });
-        let fileName = decodeURI(res.headers["content-disposition"].split("=")[1]);
-         if ("download" in document.createElement("a")) {
-          let link = document.createElement("a");
-          link.download = fileName;
-          link.style.display = "none";
-          link.href = URL.createObjectURL(blob);
-          document.body.appendChild(link);
-          link.click();
-          URL.revokeObjectURL(link.href);
-          document.body.removeChild(link);
-         } else {
-          navigator.msSaveBlob(blob, fileName);
-         }
+    exportAccessory(urlId,fileName){
+      let resUrl = "https://test-sy.derom.com/document-center/fastdfs/download?id=" + urlId;
+      axios.create({
+        timeout: 3000,
+        responseType: "blob", // 响应类型, 将响应数据转换为二进制数据
+        headers: {},
+      })
+      .get(resUrl)
+      .then((res) => {
+        console.log(res);
+        // 地址转换
+        let url = window.URL.createObjectURL(res.data);
+        const a = document.createElement("a");
+        a.setAttribute("href", url);
+        a.setAttribute("download", fileName);
+        document.body.append(a);
+        a.click();
+        document.body.removeChild(a);
       });
     },
     //删除附件

+ 46 - 22
src/views/business/spd/bo/basic/index.vue

@@ -138,7 +138,7 @@
       <el-table-column label="销售组织" align="center" prop="marketingOrganizingName" />
       <el-table-column label="部门" align="center" prop="deptName" />
       <el-table-column label="商机负责人" align="center" prop="principalName" />
-      <!-- <el-table-column label="创建人" align="center" prop="createBy" /> -->
+      <el-table-column label="创建人" align="center" prop="createBy" />
       <el-table-column label="创建时间" align="center" prop="createTime" />
       <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -181,7 +181,7 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="商机名称" prop="boName">
-              <el-input v-model="form.boName" placeholder="请输入商机名称" :disabled="true"/>
+              <el-input v-model="form.boName" placeholder="商机名称自动生成" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -197,8 +197,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="推荐人" prop="referrer">
-              <el-input v-model="form.referrer" placeholder="请输入推荐人" />
+            <el-form-item label="推荐人" prop="referrerName" v-show="form.boSource == 2" :rules="form.boSource == 2 ? rules.referrer : [{require: false}]">
+              <el-input v-model="form.referrerName" placeholder="请输入推荐人" >
+                <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -242,9 +244,19 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="商机内容">
-          <editor v-model="form.boContent" :min-height="192"/>
-        </el-form-item>
+        <el-row>
+          <el-col>
+            <el-form-item label="商机内容"  prop="boContent">
+              <el-input
+                type="textarea"
+                :rows="2"
+                placeholder="请输入商机内容"
+                autosize
+                v-model="form.boContent">
+              </el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="6">
             <el-form-item label="销售区域" prop="marketingArea">
@@ -253,22 +265,22 @@
           </el-col>
           <el-col :span="6">
             <el-form-item label="销售组织" prop="marketingOrganizingName">
-              <el-input v-model="form.marketingOrganizingName">
-                <el-button slot="append" icon="el-icon-more" @click="refereOrg"></el-button>
+              <el-input v-model="form.marketingOrganizingName" :disabled="true">
+                <!-- <el-button slot="append" icon="el-icon-more" @click="refereOrg"></el-button> -->
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="部门" prop="deptName">
-              <el-input v-model="form.deptName">
-                <el-button slot="append" icon="el-icon-more" @click="refereDept"></el-button>
+              <el-input v-model="form.deptName" :disabled="true">
+                <!-- <el-button slot="append" icon="el-icon-more" @click="refereDept"></el-button> -->
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="商机负责人" prop="principalName">
-              <el-input v-model="form.principalName">
-                <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
+              <el-input v-model="form.principalName" :disabled="true">
+                <!-- <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button> -->
               </el-input>
             </el-form-item>
           </el-col>
@@ -354,6 +366,7 @@ export default {
         biddingDocumentsPass: null,
         startConSignTime: null,
         endConSignTime: null,
+        boContent: null,
         marketingOrganizingName: null,
         marketingArea: null,
         deptName: null,
@@ -368,6 +381,9 @@ export default {
         boSource: [
           { required: true, message: "商机来源不能为空", trigger: "blur" }
         ],
+        referrer: [
+          { required: true, message: "推荐人不能为空", trigger: "blur" }
+        ],
         boType: [
           { required: true, message: "商机类型不能为空", trigger: "blur" }
         ],
@@ -378,7 +394,8 @@ export default {
           { required: true, message: "医院营收总额不能为空", trigger: "blur" }
         ],
         hosDiscreetValue: [
-          { required: true, message: "医院耗材预估值不能为空", trigger: "blur" }
+          { required: true, message: "医院耗材预估值不能为空", trigger: "blur" },
+          { type: "number", message: '请输入数值', trigger: 'blur' }
         ],
         boContent: [
           { required: true, message: "商机内容不能为空", trigger: "blur" }
@@ -394,27 +411,27 @@ export default {
         switch(newName) {
           //5000万以下
           case '0':
-            this.form.hosDiscreetValue = 5000 * 0.02;
+            this.form.hosDiscreetValue = 5000 * 0.2;
             break;
           //5000万-1亿
           case '1':
-            this.form.hosDiscreetValue = 10000 * 0.02;
+            this.form.hosDiscreetValue = 10000 * 0.2;
             break;
           //1亿-2亿
           case '2':
-            this.form.hosDiscreetValue = 20000 * 0.02;
+            this.form.hosDiscreetValue = 20000 * 0.2;
             break;
           //2亿-5亿
           case '3':
-            this.form.hosDiscreetValue = 50000 * 0.02;
+            this.form.hosDiscreetValue = 50000 * 0.2;
             break;
           //5亿-10亿
           case '4':
-            this.form.hosDiscreetValue = 100000 * 0.02;
+            this.form.hosDiscreetValue = 100000 * 0.2;
             break;
           //10亿以上
           case '5':
-            this.form.hosDiscreetValue = 100000 * 0.02;
+            this.form.hosDiscreetValue = 100000 * 0.2;
             break;
         }
       },
@@ -448,6 +465,7 @@ export default {
         boStage: null,
         boName: null,
         referrer: null,
+        referrerName: null,
         boType: null,
         customerName: null,
         totalHosRevenue: null,
@@ -490,6 +508,12 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
+      this.form.principal = this.$store.state.user.id;
+      this.form.principalName = this.$store.state.user.nickName;
+      this.form.dept = this.$store.state.user.deptId;
+      this.form.deptName = this.$store.state.user.deptName;
+      this.form.marketingOrganizing = this.$store.state.user.orgId;
+      this.form.marketingOrganizingName = this.$store.state.user.orgName;
       this.title = "添加商机基础信息";
     },
     /** 进入详情按钮操作 */
@@ -576,8 +600,8 @@ export default {
     },
     //员工参照列表选择后
     staffSelectionsToInput (selections) {
-      this.form.principal = selections[0].userId;
-      this.form.principalName = selections[0].nickName;
+      this.form.referrer = selections[0].userId;
+      this.form.referrerName = selections[0].nickName;
     }
   }
 };

+ 56 - 28
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -95,7 +95,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -138,8 +138,8 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="客户" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入客户" />
+            <el-form-item label="客户" prop="customerName" disabled="this.source == 'BoDetails'">
+              <el-input v-model="form.customerName" placeholder="请输入客户" :disabled="this.source == 'BoDetails'"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -164,10 +164,10 @@
         </el-row>
         <el-row>
           <el-col  :span="8">
-            <el-form-item label="是否上级协助" prop="assist">
-              <el-select v-model="form.assist" placeholder="请输入是否上级协助">
+            <el-form-item label="拜访效果" prop="result">
+              <el-select v-model="form.result" placeholder="请输入拜访效果">
                 <el-option
-                  v-for="dict in dict.type.sys_yes_no"
+                  v-for="dict in dict.type.mk_bo_behavior_res"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -176,15 +176,10 @@
             </el-form-item>
           </el-col>
           <el-col  :span="8">
-            <el-form-item label="协助内容" prop="assistContent">
-              <el-input v-model="form.assistContent" placeholder="请输入协助内容" />
-            </el-form-item>
-          </el-col>
-          <el-col  :span="8">
-            <el-form-item label="拜访效果" prop="result">
-              <el-select v-model="form.result" placeholder="请输入拜访效果">
+            <el-form-item label="是否上级协助" prop="assist">
+              <el-select v-model="form.assist" placeholder="请输入是否上级协助">
                 <el-option
-                  v-for="dict in dict.type.mk_bo_behavior_res"
+                  v-for="dict in dict.type.sys_yes_no"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -192,26 +187,37 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col  :span="8">
+            <el-form-item label="协助内容" prop="assistContent" v-show="form.assist == 'Y'" :rules="form.assist == 'Y' ? rules.assistContent : [{require: false}]">
+              <el-input v-model="form.assistContent" placeholder="请输入协助内容" />
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row>
           <el-col  :span="8">
             <el-form-item label="销售组织" prop="salesOrgName">
-              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织" />
+              <el-input v-model="form.salesOrgName" placeholder="请输入销售组织" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col  :span="8">
              <el-form-item label="部门" prop="deptName">
-              <el-input v-model="form.deptName" placeholder="请输入部门" />
+              <el-input v-model="form.deptName" placeholder="请输入部门" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col  :span="8">
             <el-form-item label="负责人" prop="staffName">
-              <el-input v-model="form.staffName" placeholder="请输入负责人" />
+              <el-input v-model="form.staffName" placeholder="请输入负责人" :disabled="true"/>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="洽谈内容">
-          <editor v-model="form.content" :min-height="192"/>
+        <el-form-item label="洽谈内容" prop="content">
+          <el-input
+            type="textarea"
+            :rows="2"
+            placeholder="请输入洽谈内容"
+            autosize
+            v-model="form.content">
+          </el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -224,6 +230,7 @@
       ref="contactSelect"
       @doSubmit="contactSelectionsToInput"
       :single="true"
+      :outerQueryParams="this.bo"
     />
   </div>
 </template>
@@ -262,7 +269,9 @@ export default {
         pageNum: 1,
         pageSize: 10,
         bo: null,
-        task: 1,
+        boName: null,
+        task: null,
+        taskCode: null,
       },
       // 表单参数
       form: {},
@@ -286,21 +295,25 @@ export default {
         assist: [
           { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
         ],
-        assist: [
-          { required: true, message: "是否需要上级协助不能为空", trigger: "blur" }
+        assistContent: [
+          { required: true, message: "协助内容不能为空", trigger: "blur" }
+        ],
+        staffName: [
+          { required: true, message: "负责人不能为空", trigger: "blur" }
         ],
         content: [
           { required: true, message: "洽谈内容不能为空", trigger: "blur" }
         ],
+        result: [
+          { required: true, message: "拜访效果不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
-    console.log("this.bo",this.bo);
-    //设置查询条件
-    this.queryParams.bo = this.bo.id;
-    this.queryParams.task = this.bo.task;
-    this.queryParams.taskCode = this.bo.taskCode;
+    if(this.source == 'BoDetails'){
+      this.queryParams.bo = this.bo.id;
+    }
     this.getList();
   },
   methods: {
@@ -322,6 +335,9 @@ export default {
     reset() {
       this.form = {
         id: null,
+        bo: null,
+        boName: null,
+        task: null,
         taskCode: null,
         type: null,
         time: null,
@@ -369,10 +385,22 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      if(this.bo.id){
+      //新增行动设置默认值
+      if(this.source == 'BoDetails'){
+        this.queryParams.bo = this.bo.id;
         this.form.bo = this.bo.id;
         this.form.boName = this.bo.boName;
+        this.form.boStage = this.bo.boStage;
+        this.form.customer = this.bo.customer;
+        this.form.customerName = this.bo.customerName;
       }
+      this.form.type = '0';
+      this.form.staff = this.$store.state.user.id;
+      this.form.staffName = this.$store.state.user.nickName;
+      this.form.dept = this.$store.state.user.deptId;
+      this.form.deptName = this.$store.state.user.deptName;
+      this.form.salesOrg = this.$store.state.user.orgId;
+      this.form.salesOrgName = this.$store.state.user.orgName;
       this.open = true;
       this.title = "添加行动";
     },

+ 67 - 13
src/views/business/spd/bo/contact/contactList.vue

@@ -50,13 +50,31 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="编号" align="center" prop="code" />
       <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="性别" align="center" prop="gander" />
+      <el-table-column label="性别" align="center" prop="gander" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.gander"/>
+        </template>
+      </el-table-column>
       <el-table-column label="联系电话" align="center" prop="telephone" />
+      <el-table-column label="所属客户" align="center" prop="customerName" />
       <el-table-column label="部门名称" align="center" prop="departmentName" />
-      <el-table-column label="职务" align="center" prop="position" />
-      <el-table-column label="决策力" align="center" prop="power" />
-      <el-table-column label="状态" align="center" prop="state" />
+      <el-table-column label="职务" align="center" prop="position" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.mk_bo_position" :value="scope.row.position"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="决策力" align="center" prop="power" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.mk_bo_power" :value="scope.row.power"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="业务爱好" align="center" prop="hobby" />
       <el-table-column label="家庭地址" align="center" prop="address" />
+      <el-table-column label="状态" align="center" prop="state" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.mk_bo_contact_state" :value="scope.row.state"/>
+        </template>
+      </el-table-column>
       <!-- <el-table-column label="商机id" align="center" prop="boId" /> -->
       <!-- <el-table-column label="创建日期" align="center" prop="createDate" width="180">
         <template slot-scope="scope">
@@ -79,7 +97,6 @@
       <el-table-column label="职称" align="center" prop="jobTitle" />
       <el-table-column label="任职科室" align="center" prop="section" />
       <el-table-column label="上级联系人" align="center" prop="superiorContact" />
-      <el-table-column label="业务爱好" align="center" prop="hobby" />
       <el-table-column label="籍贯" align="center" prop="birthplace" />
       <el-table-column label="生日" align="center" prop="birthday" width="180">
         <template slot-scope="scope">
@@ -87,7 +104,7 @@
         </template>
       </el-table-column>
       <el-table-column label="联系人分类" align="center" prop="contactClassification" />
-      <el-table-column label="所属客户名称" align="center" prop="customerName" />
+
       <el-table-column label="所属客户编码" align="center" prop="customerCode" /> -->
       <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -108,7 +125,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -130,6 +147,11 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
+            <el-form-item label="编码" prop="code">
+              <el-input v-model="form.code" placeholder="系统自动生成编码" :disabled = "true"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
             <el-form-item label="姓名" prop="name">
               <el-input v-model="form.name" placeholder="请输入姓名" />
             </el-form-item>
@@ -149,8 +171,10 @@
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="所属客户名称" prop="customerName">
-              <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
+            <el-form-item label="所属客户" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入所属客户" :disabled="this.source == 'BoDetails'">
+                <el-button slot="append" icon="el-icon-more" @click="refereCustomer" :disabled="this.source == 'BoDetails'"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -358,16 +382,24 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 客户参照 -->
+    <CustomerRef
+      ref="customerSelect"
+      @doSubmit="customerSelectionsToInput"
+      :single="true"
+    />
   </div>
 </template>
 
 <script>
 import { listContact, getContact, delContact, addContact, updateContact } from "@/api/business/spd/bo/contact";
+import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
 
 export default {
   name: "contactList",
   props:["source","bo"],
   dicts: ['sys_user_sex','mk_bo_contact_state','mk_bo_section','mk_bo_position','mk_bo_job_title','mk_bo_power','mk_bo_support','mk_bo_field_expertise','sys_yes_no'],
+  components: {CustomerRef},
   data() {
     return {
       // 遮罩层
@@ -429,13 +461,24 @@ export default {
         ],
         telephone: [
           { required: true, message: "联系电话不能为空", trigger: "blur" },
-          // { pattern: /^1[3|5|7|8|9]\d{9}$/, message: '请输入正确的号码格式', trigger: 'change' }
+          {
+            validator: function(rule, value, callback) {
+              if (/^1[34578]\d{9}$/.test(value) == false) {
+                callback(new Error("手机号格式错误"));
+              } else {
+                callback();
+              }
+            },
+            trigger: "blur"
+          }
         ],
       }
     };
   },
   created() {
-    this.queryParams.boId = this.bo.id;
+    if(this.source == 'BoDetails'){
+      this.queryParams.boId = this.bo.id;
+    }
     this.getList();
   },
   methods: {
@@ -512,8 +555,10 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      if(this.bo.id){
+      if(this.source == 'BoDetails'){
         this.form.boId = this.bo.id;
+        this.form.customer = this.bo.customer;
+        this.form.customerName = this.bo.customerName;
       }
       this.open = true;
       this.title = "添加联系人管理";
@@ -563,7 +608,16 @@ export default {
       this.download('system/contact/export', {
         ...this.queryParams
       }, `contact_${new Date().getTime()}.xlsx`)
-    }
+    },
+    // 触发客户参照列表
+    refereCustomer() {
+      this.$refs.customerSelect.init()
+    },
+    //客户参照列表选择后
+    customerSelectionsToInput (selections) {
+      this.form.customer = selections[0].id;
+      this.form.customerName = selections[0].name;
+    },
   }
 };
 </script>

+ 11 - 19
src/views/business/spd/bo/contact/index.vue

@@ -73,14 +73,6 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="联系电话" prop="telephone">
-        <el-input
-          v-model="queryParams.telephone"
-          placeholder="请输入联系电话"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="关键决策人" prop="decisionMaker">
         <el-input
           v-model="queryParams.decisionMaker"
@@ -185,14 +177,6 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="所属客户名称" prop="customerName">
-        <el-input
-          v-model="queryParams.customerName"
-          placeholder="请输入所属客户名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="所属客户编码" prop="customerCode">
         <el-input
           v-model="queryParams.customerCode"
@@ -217,10 +201,18 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="编号" prop="code">
+      <el-form-item label="联系电话" prop="telephone">
         <el-input
-          v-model="queryParams.code"
-          placeholder="请输入编号"
+          v-model="queryParams.telephone"
+          placeholder="请输入联系电话"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="所属客户" prop="customerName">
+        <el-input
+          v-model="queryParams.customerName"
+          placeholder="请输入所属客户"
           clearable
           @keyup.enter.native="handleQuery"
         />

+ 16 - 10
src/views/business/spd/bo/pojpsn/pojpsnList.vue

@@ -46,7 +46,7 @@
           <dict-tag :options="dict.type.mk_bo_pojpsn_post" :value="scope.row.post"/>
         </template>
       </el-table-column>
-      <el-table-column label="责" align="center" prop="job" >
+      <el-table-column label="责" align="center" prop="job" >
         <template slot-scope="scope">
           <dict-tag :options="dict.type.mk_bo_pojpsn_job" :value="scope.row.job"/>
         </template>
@@ -100,8 +100,8 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="责" prop="job">
-          <el-select v-model="form.job" placeholder="请选择责">
+        <el-form-item label="责" prop="job">
+          <el-select v-model="form.job" placeholder="请选择责">
             <el-option
               v-for="dict in dict.type.mk_bo_pojpsn_job"
               :key="dict.value"
@@ -168,16 +168,22 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        staffName: [
+          { required: true, message: "员工不能为空", trigger: "blur" }
+        ],
+        post: [
+          { required: true, message: "岗位不能为空", trigger: "blur" }
+        ],
+        job: [
+          { required: true, message: "职责不能为空", trigger: "blur" }
+        ],
       },
     };
   },
   created() {
-    //设置查询条件
-    this.queryParams.bo = this.bo.id;
-    this.queryParams.boName = this.bo.boName;
-    this.queryParams.staffName = this.bo.staffName;
-    this.queryParams.post = this.bo.post;
-    this.queryParams.job = this.bo.job;
+    if(this.source == 'BoDetails'){
+      this.queryParams.bo = this.bo.id;
+    }
     this.getList();
   },
   methods: {
@@ -234,7 +240,7 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      if(this.bo.id){
+      if(this.source == 'BoDetails'){
         this.form.bo = this.bo.id;
         this.form.boName = this.bo.boName;
       }

+ 7 - 1
src/views/business/spd/bo/refer/contact/index.vue

@@ -159,6 +159,11 @@ export default {
     single: {
       type: Boolean,
       default: false
+    },
+    //外部查询参数
+    outerQueryParams:{
+      type: Object,
+      default: null
     }
   },
   methods: {
@@ -172,6 +177,7 @@ export default {
     // 获取数据列表
     getList() {
       this.loading = true;
+      this.queryParams.customer = this.outerQueryParams.customer;
       listContact(this.addDateRange(this.queryParams)).then(response => {
           this.dataList = response.rows;
           this.total = response.total;
@@ -239,4 +245,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 53 - 22
src/views/business/spd/bo/task/taskList.vue

@@ -36,7 +36,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange" >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="商机id" align="center" prop="bo" v-if="source == 'Task'"/>
       <el-table-column label="商机阶段" align="center" prop="boStage" v-if="source == 'Task'"/>
@@ -82,7 +82,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -96,8 +96,8 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="商机名称" prop="boName" v-if="source == 'Task'">
-              <el-input v-model="form.boName" placeholder="请输入商机名称" />
+            <el-form-item label="商机名称" prop="boName">
+              <el-input v-model="form.boName" placeholder="请输入商机名称"  :disabled="this.source == 'BoDetails'"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -113,9 +113,9 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="客户" prop="customerName" v-if="source == 'Task'">
-              <el-input v-model="form.customerName" placeholder="请输入客户" >
-                <el-button slot="append" icon="el-icon-more" @click="refereCustomer"></el-button>
+            <el-form-item label="客户" prop="customerName">
+              <el-input v-model="form.customerName" placeholder="请输入客户" :disabled="this.source == 'BoDetails'">
+                <el-button slot="append" icon="el-icon-more" @click="refereCustomer" :disabled="this.source == 'BoDetails'"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
@@ -124,7 +124,7 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="任务编码" prop="code">
-              <el-input v-model="form.code" placeholder="请输入任务编码" />
+              <el-input v-model="form.code" placeholder="系统自动生成编码" :disabled="true"/>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -133,7 +133,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="任务状态">
+            <el-form-item label="任务状态" prop="state">
               <el-select v-model="form.state" placeholder="请输入任务状态">
                 <el-option
                   v-for="dict in dict.type.mk_bo_taskstate"
@@ -148,7 +148,7 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="联系人" prop="linkmanName">
-              <el-input v-model="form.linkmanName" placeholder="请输入联系人" >
+              <el-input v-model="form.linkmanName" >
                 <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
               </el-input>
             </el-form-item>
@@ -166,7 +166,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="任务类型">
+            <el-form-item label="任务类型" prop="type">
               <el-select v-model="form.type" placeholder="请选择任务类型">
                 <el-option
                   v-for="dict in dict.type.mk_bo_tasktype"
@@ -181,28 +181,34 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="销售组织" prop="salesOrgName">
-              <el-input v-model="form.salesOrgName">
-                <el-button slot="append" icon="el-icon-more" @click="refereOrg"></el-button>
+              <el-input v-model="form.salesOrgName" :disabled="true">
+                <el-button slot="append" icon="el-icon-more" @click="refereOrg" :disabled="true"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="部门" prop="deptName">
-              <el-input v-model="form.deptName">
-                <el-button slot="append" icon="el-icon-more" @click="refereDept"></el-button>
+              <el-input v-model="form.deptName" :disabled="true">
+                <el-button slot="append" icon="el-icon-more" @click="refereDept" :disabled="true"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="负责人" prop="staff">
+            <el-form-item label="负责人" prop="staffName">
               <el-input v-model="form.staffName">
                 <el-button slot="append" icon="el-icon-more" @click="refereStaff"></el-button>
               </el-input>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="任务内容">
-          <editor v-model="form.content" :min-height="192"/>
+        <el-form-item label="任务内容" prop="content">
+          <el-input
+            type="textarea"
+            :rows="2"
+            placeholder="请输入任务内容"
+            autosize
+            v-model="form.content">
+          </el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -221,6 +227,7 @@
       ref="contactSelect"
       @doSubmit="contactSelectionsToInput"
       :single="true"
+      :outerQueryParams="this.bo"
     />
     <!-- 组织参照 -->
     <OrgRef
@@ -291,6 +298,7 @@ export default {
         customer: null,
         customerName: null,
         linkman: null,
+        linkmanName: null,
         salesOrg: null,
         salesOrgName: null,
         dept: null,
@@ -307,23 +315,37 @@ export default {
       // 表单校验
       rules: {
         customerName: [
-          { required: true, message: "客户名称不能为空", trigger: "blur" }
+          { required: true, message: "客户不能为空", trigger: "blur" }
         ],
         name: [
           { required: true, message: "任务名称不能为空", trigger: "blur" }
         ],
+        state: [
+          { required: true, message: "任务状态不能为空", trigger: "blur" }
+        ],
+        type: [
+          { required: true, message: "任务类型不能为空", trigger: "blur" }
+        ],
         linkmanName: [
           { required: true, message: "联系人不能为空", trigger: "blur" }
         ],
+        staffName: [
+          { required: true, message: "负责人不能为空", trigger: "blur" }
+        ],
         deadlineDate: [
           { required: true, message: "截止日期不能为空", trigger: "blur" }
         ],
+        content: [
+          { required: true, message: "任务内容不能为空", trigger: "blur" }
+        ],
       }
     };
   },
   created() {
-    //两种方式都可以用
-    this.queryParams.bo = this.bo.id;
+    if(this.source == 'BoDetails'){
+      this.queryParams.bo = this.bo.id;
+      this.queryParams.boStage = this.bo.boStage;
+    }
     this.getList();
   },
   methods: {
@@ -354,6 +376,7 @@ export default {
         customer: null,
         customerName: null,
         linkman: null,
+        linkmanName: null,
         salesOrg: null,
         salesOrgName: null,
         dept: null,
@@ -391,11 +414,14 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
-      if(this.bo.id){
+      if(this.source == 'BoDetails'){
         this.form.bo = this.bo.id;
         this.form.boName = this.bo.boName;
         this.form.boStage = this.bo.boStage;
+        this.form.customer = this.bo.customer;
+        this.form.customerName = this.bo.customerName;
       }
+      this.form.state = '0';
       this.open = true;
       this.title = "添加任务";
     },
@@ -463,6 +489,7 @@ export default {
       console.log('selections',selections);
       this.form.linkman = selections[0].id;
       this.form.linkmanName = selections[0].name;
+      console.log('this.form',this.form);
     },
     // 触发组织参照列表
     refereOrg() {
@@ -490,6 +517,10 @@ export default {
     staffSelectionsToInput (selections) {
       this.form.staff = selections[0].userId;
       this.form.staffName = selections[0].nickName;
+      this.form.dept = selections[0].deptId;
+      this.form.deptName = selections[0].deptName;
+      this.form.salesOrg = selections[0].orgId;
+      this.form.salesOrgName = selections[0].orgName;
     }
   }
 };