Browse Source

SPD营销-第二波问题处理

001295 2 years ago
parent
commit
04cc01283a

+ 9 - 0
src/api/business/spd/bo/iuapquery/basic.js

@@ -7,4 +7,13 @@ export function listCustomer(query) {
     method: 'get',
     params: query
   })
+}
+
+// 查询销售区域列表
+export function listSaleArea(query) {
+  return request({
+    url: '/mk/bo/iuapquery/saleAreaList',
+    method: 'get',
+    params: query
+  })
 }

File diff suppressed because it is too large
+ 506 - 151
src/views/business/spd/bo/basic/details.vue


+ 48 - 20
src/views/business/spd/bo/basic/index.vue

@@ -11,7 +11,7 @@
         />
       </el-form-item>
       <el-form-item label="商机类型" prop="boType">
-        <el-select v-model="form.boType" placeholder="请输入商机类型">
+        <el-select v-model="form.boType" placeholder="请输入商机类型" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_type"
             :key="dict.value"
@@ -20,8 +20,8 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="商机状态" prop="boState">
-        <el-select v-model="queryParams.boState" placeholder="请输入商机状态">
+      <el-form-item label="商机状态" prop="boState" clearable>
+        <el-select v-model="queryParams.boState" placeholder="请输入商机状态" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_state"
             :key="dict.value"
@@ -31,7 +31,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机来源" prop="boSource">
-        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源">
+        <el-select v-model="queryParams.boSource" placeholder="请输入商机来源" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_source"
             :key="dict.value"
@@ -41,7 +41,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="商机阶段" prop="boStage">
-        <el-select v-model="queryParams.boStage" placeholder="请输入商机阶段">
+        <el-select v-model="queryParams.boStage" placeholder="请输入商机阶段" clearable>
           <el-option
             v-for="dict in dict.type.mk_bo_stage"
             :key="dict.value"
@@ -134,7 +134,7 @@
       <el-table-column label="客户名称" align="center" prop="customerName" />
       <el-table-column label="医院耗材预估值(万元)" align="center" prop="hosDiscreetValue" />
       <el-table-column label="赢单率" align="center" prop="winningRate" />
-      <el-table-column label="销售区域" align="center" prop="marketingArea" />
+      <el-table-column label="销售区域" align="center" prop="marketingAreaName" />
       <el-table-column label="销售组织" align="center" prop="marketingOrganizingName" />
       <el-table-column label="部门" align="center" prop="deptName" />
       <el-table-column label="商机负责人" align="center" prop="principalName" />
@@ -259,8 +259,10 @@
         </el-row>
         <el-row>
           <el-col :span="6">
-            <el-form-item label="销售区域" prop="marketingArea">
-              <el-input v-model="form.marketingArea" placeholder="请输入销售区域" />
+            <el-form-item label="销售区域" prop="marketingAreaName">
+              <el-input v-model="form.marketingAreaName" placeholder="请输入销售区域">
+                <el-button slot="append" icon="el-icon-more" @click="refereSaleaea"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="6">
@@ -297,6 +299,12 @@
       @doSubmit="customerSelectionsToInput"
       :single="true"
     />
+    <!-- 销售区域参照 -->
+    <SaleaeaRef
+      ref="saleaeaSelect"
+      @doSubmit="saleaeaSelectionsToInput"
+      :single="true"
+    />
     <!-- 组织参照 -->
     <OrgRef
       ref="orgSelect"
@@ -321,6 +329,7 @@
 <script>
 import { listBasic, getBasic, addBasic, updateBasic, delBasic } from "@/api/business/spd/bo/basic";
 import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
+import SaleaeaRef from '@/views/business/spd/bo/refer/saleaea/index.vue';
 import OrgRef from '@/views/business/spd/bo/refer/org/index.vue';
 import DeptRef from '@/views/business/spd/bo/refer/dept/index.vue';
 import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
@@ -328,7 +337,7 @@ import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
 export default {
   name: "Basic",
   dicts: ['mk_bo_type','mk_bo_state','mk_bo_stage','mk_bo_source','mk_bo_total_revenue'],
-  components: {CustomerRef,OrgRef,DeptRef,StaffRef},
+  components: {CustomerRef,SaleaeaRef,OrgRef,DeptRef,StaffRef},
   data() {
     return {
       // 遮罩层
@@ -354,25 +363,33 @@ export default {
         pageNum: 1,
         pageSize: 10,
         id: null,
-        boName: null,
-        boType: null,
-        boState: null,
         boSource: null,
+        boState: null,
         boStage: null,
+        boName: null,
+        referrer: null,
+        referrerName: null,
+        boType: null,
+        customerName: null,
         totalHosRevenue: null,
-        projectApproval: null,
-        startWinningRate: null,
-        endWinningRate: null,
-        biddingDocumentsPass: null,
-        startConSignTime: null,
-        endConSignTime: null,
+        hosDiscreetValue: null,
         boContent: null,
+        marketingArea: null,
+        marketingAreaName: null,
+        marketingOrganizing: null,
         marketingOrganizingName: null,
         marketingArea: null,
+        dept: null,
         deptName: null,
+        principal: null,
+        principalName: null,
+        delFlag: null,
+        tenantId: null,
+        revision: null,
         createBy: null,
-        startCreateTime: null,
-        endCreateTime: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
       },
       // 表单参数
       form: {},
@@ -471,6 +488,8 @@ export default {
         totalHosRevenue: null,
         hosDiscreetValue: null,
         boContent: null,
+        marketingArea: null,
+        marketingAreaName: null,
         marketingOrganizing: null,
         marketingOrganizingName: null,
         marketingArea: null,
@@ -576,6 +595,15 @@ export default {
       this.form.customer = selections[0].id;
       this.form.customerName = selections[0].name;
     },
+    // 触发销售区域参照列表
+    refereSaleaea() {
+      this.$refs.saleaeaSelect.init()
+    },
+    //销售区域参照列表选择后
+    saleaeaSelectionsToInput (selections) {
+      this.form.marketingArea = selections[0].id;
+      this.form.marketingAreaName = selections[0].name;
+    },
     // 触发组织参照列表
     refereOrg() {
       this.$refs.orgSelect.init()

+ 65 - 1
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -39,6 +39,7 @@
     <el-table v-loading="loading" :data="behaviorList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="负责人" align="center" prop="staffName" />
+      <el-table-column label="行动日期" align="center" prop="time" />
       <el-form-item label="行动日期" prop="time">
         <el-date-picker clearable
           v-model="form.time"
@@ -194,6 +195,15 @@
           </el-col>
         </el-row>
         <el-row>
+          <el-col :span="6">
+            <el-form-item label="销售区域" prop="marketingAreaName">
+              <el-input v-model="form.marketingAreaName" placeholder="请输入销售区域">
+                <el-button slot="append" icon="el-icon-more" @click="refereSaleaea"></el-button>
+              </el-input>
+            </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="请输入销售组织" :disabled="true"/>
@@ -219,6 +229,23 @@
             v-model="form.content">
           </el-input>
         </el-form-item>
+        <div class="md-auditInfo">
+          <el-divider content-position="left">其它信息</el-divider>
+          <el-form :inline="true" label-position="right" :model="form">
+            <el-form-item label="创建人">
+              <el-input v-model="form.createBy" size="small" readonly placeholder="创建人"></el-input>
+            </el-form-item>
+            <el-form-item label="创建时间">
+              <el-input v-model="form.createTime" size="small" readonly placeholder="创建时间"></el-input>
+            </el-form-item>
+            <el-form-item label="修改人">
+              <el-input v-model="form.updateBy" size="small" readonly placeholder="修改人"></el-input>
+            </el-form-item>
+            <el-form-item label="修改时间">
+              <el-input v-model="form.updateTime" size="small" readonly placeholder="修改时间"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -232,18 +259,25 @@
       :single="true"
       :outerQueryParams="this.bo"
     />
+    <!-- 销售区域参照 -->
+    <SaleaeaRef
+      ref="saleaeaSelect"
+      @doSubmit="saleaeaSelectionsToInput"
+      :single="true"
+    />
   </div>
 </template>
 
 <script>
 import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior } from "@/api/business/spd/bo/behavior";
 import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
+import SaleaeaRef from '@/views/business/spd/bo/refer/saleaea/index.vue';
 
 export default {
   name: "BehaviorList",
   props:["source","bo"],
   dicts: ['mk_bo_behavior_res','mk_bo_behavior_type','sys_yes_no','mk_bo_behavior_goal'],
-  components: {ContactRef},
+  components: {ContactRef,SaleaeaRef},
   data() {
     return {
       // 遮罩层
@@ -269,6 +303,7 @@ export default {
         pageNum: 1,
         pageSize: 10,
         bo: null,
+        boStage: null,
         boName: null,
         task: null,
         taskCode: null,
@@ -311,8 +346,17 @@ export default {
     };
   },
   created() {
+    console.log('行动组件初始化',this.source);
+    console.log('行动组件初始化',this.bo);
     if(this.source == 'BoDetails'){
+      console.log('行动组件初始化-进去了第二个');
       this.queryParams.bo = this.bo.id;
+      this.queryParams.boStage = this.bo.boStage;
+    }
+    if(this.source == 'TaskList'){
+      console.log('行动组件初始化-进去了第三个');
+      console.log('this.bo-----',this.bo);
+      this.queryParams.taskCode = this.bo.code;
     }
     this.getList();
   },
@@ -349,6 +393,8 @@ export default {
         result: null,
         assist: null,
         assistContent: null,
+        marketingArea: null,
+        marketingAreaName: null,
         salesOrg: null,
         salesOrgName: null,
         dept: null,
@@ -394,6 +440,15 @@ export default {
         this.form.customer = this.bo.customer;
         this.form.customerName = this.bo.customerName;
       }
+      if(this.source == 'TaskList'){
+        this.form.bo = this.bo.bo;
+        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.task = this.bo.id;
+        this.form.taskCode = this.bo.code;
+      }
       this.form.type = '0';
       this.form.staff = this.$store.state.user.id;
       this.form.staffName = this.$store.state.user.nickName;
@@ -460,6 +515,15 @@ export default {
       this.form.linkman = selections[0].id;
       this.form.linkmanName = selections[0].name;
     },
+    // 触发销售区域参照列表
+    refereSaleaea() {
+      this.$refs.saleaeaSelect.init()
+    },
+    //销售区域参照列表选择后
+    saleaeaSelectionsToInput (selections) {
+      this.form.marketingArea = selections[0].id;
+      this.form.marketingAreaName = selections[0].name;
+    },
   }
 };
 </script>

+ 29 - 36
src/views/business/spd/bo/contact/contactList.vue

@@ -135,11 +135,9 @@
     />
 
     <!-- 添加或修改联系人管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="1100px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-row>
-          基本信息
-        </el-row>
+        <el-divider content-position="left">基本信息</el-divider>
         <el-row>
           <el-col :span="8">
             <el-form-item label="商机id" prop="boId" v-if="source == 'Contact'">
@@ -179,7 +177,14 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="联系人分类" prop="contactClassification">
-              <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
+              <el-select v-model="form.contactClassification" placeholder="请输入联系人分类">
+                <el-option
+                  v-for="dict in dict.type.mk_bo_contact_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -200,7 +205,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="业务爱好" prop="hobby">
+            <el-form-item label="兴趣爱好" prop="hobby">
               <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
             </el-form-item>
           </el-col>
@@ -217,9 +222,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          工作信息
-        </el-row>
+        <el-divider content-position="left">工作信息</el-divider>
         <el-row>
           <el-col :span="8">
             <el-form-item label="上级联系人" prop="superiorContact">
@@ -317,9 +320,7 @@
           <el-col :span="8">
           </el-col>
         </el-row>
-        <el-row>
-          联系信息
-        </el-row>
+        <el-divider content-position="left">联系信息</el-divider>
         <el-row>
           <el-col :span="8">
             <el-form-item label="联系电话" prop="telephone">
@@ -340,12 +341,7 @@
         <el-row>
           <el-col :span="8">
             <el-form-item label="最佳拜访时间" prop="visitTime">
-              <el-date-picker clearable
-                v-model="form.visitTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-                placeholder="请选择最佳拜访时间">
-              </el-date-picker>
+              <el-input v-model="form.visitTime" placeholder="请选择最佳拜访时间" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -356,26 +352,23 @@
           <el-col :span="8">
           </el-col>
         </el-row>
-        <el-row>
-          其它信息
-        </el-row>
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="部门名称" prop="departmentName">
-              <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
+        <div class="md-auditInfo">
+          <el-divider content-position="left">其它信息</el-divider>
+          <el-form :inline="true" label-position="right" :model="form">
+            <el-form-item label="创建人">
+              <el-input v-model="form.departmentName" size="small" readonly></el-input>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="销售区域" prop="area">
-              <el-input v-model="form.area" placeholder="请输入销售区域" />
+            <el-form-item label="创建时间">
+              <el-input v-model="form.departmentName" size="small" readonly></el-input>
             </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="销售组织" prop="organization">
-              <el-input v-model="form.organization" placeholder="请输入销售组织" />
+            <el-form-item label="修改人">
+              <el-input v-model="form.departmentName" size="small" readonly></el-input>
             </el-form-item>
-          </el-col>
-        </el-row>
+            <el-form-item label="修改时间">
+              <el-input v-model="form.departmentName" size="small" readonly></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -398,7 +391,7 @@ 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'],
+  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','mk_bo_contact_type'],
   components: {CustomerRef},
   data() {
     return {

+ 29 - 4
src/views/business/spd/bo/task/taskList.vue

@@ -39,7 +39,11 @@
     <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'"/>
+      <el-table-column label="商机阶段" align="center" prop="boStage">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.mk_bo_stage" :value="scope.row.boStage"/>
+        </template>
+      </el-table-column>
       <el-table-column label="客户名称" align="center" prop="customerName" v-if="source == 'Task'"/>
       <el-table-column label="任务编码" align="center" prop="code" />
       <el-table-column label="任务名称" align="center" prop="name" />
@@ -210,6 +214,24 @@
             v-model="form.content">
           </el-input>
         </el-form-item>
+        <BehaviorList  :key="timer" :source="'TaskList'" :bo="this.form" />
+        <div class="md-auditInfo">
+          <el-divider content-position="left">其它信息</el-divider>
+          <el-form :inline="true" label-position="right" :model="form">
+            <el-form-item label="创建人">
+              <el-input v-model="form.createBy" size="small" readonly></el-input>
+            </el-form-item>
+            <el-form-item label="创建时间">
+              <el-input v-model="form.createTime" size="small" readonly></el-input>
+            </el-form-item>
+            <el-form-item label="修改人">
+              <el-input v-model="form.updateBy" size="small" readonly></el-input>
+            </el-form-item>
+            <el-form-item label="修改时间">
+              <el-input v-model="form.updateTime" size="small" readonly></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -258,13 +280,14 @@ import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 import OrgRef from '@/views/business/spd/bo/refer/org/index.vue';
 import DeptRef from '@/views/business/spd/bo/refer/dept/index.vue';
 import StaffRef from '@/views/business/spd/bo/refer/staff/index.vue';
+import BehaviorList from '../behavior/behaviorList.vue'
 
 
 export default {
   name: "TaskList",
   props:["source","bo"],
   dicts: ['mk_bo_taskstate','mk_bo_tasktype','mk_bo_stage'],
-  components: {CustomerRef,ContactRef,OrgRef,DeptRef,StaffRef},
+  components: {CustomerRef,ContactRef,OrgRef,DeptRef,StaffRef,BehaviorList},
   data() {
     return {
       // 遮罩层
@@ -338,13 +361,14 @@ export default {
         content: [
           { required: true, message: "任务内容不能为空", trigger: "blur" }
         ],
-      }
+      },
+      //重新加载子组件参数
+      timer: '',
     };
   },
   created() {
     if(this.source == 'BoDetails'){
       this.queryParams.bo = this.bo.id;
-      this.queryParams.boStage = this.bo.boStage;
     }
     this.getList();
   },
@@ -427,6 +451,7 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
+      this.timer = new Date().getTime();
       this.reset();
       const id = row.id || this.ids
       getTask(id).then(response => {

Some files were not shown because too many files changed in this diff