Bladeren bron

feature(400资讯): 去掉经销商,添加客户、项目、状态字段

likai 1 jaar geleden
bovenliggende
commit
d10e8e0278
5 gewijzigde bestanden met toevoegingen van 103 en 27 verwijderingen
  1. 0 1
      package.json
  2. 3 0
      src/api/consult/index.js
  3. 60 23
      src/views/consult/components/FollowUp.vue
  4. 8 2
      src/views/consult/detail.vue
  5. 32 1
      src/views/consult/index.vue

+ 0 - 1
package.json

@@ -29,7 +29,6 @@
     "jsencrypt": "^3.2.1",
     "jsplumb": "^2.15.6",
     "lodash": "^4.17.21",
-    "mockjs": "^1.1.0",
     "mysql": "^2.18.1",
     "nprogress": "^0.2.0",
     "qs": "^6.10.2",

+ 3 - 0
src/api/consult/index.js

@@ -16,4 +16,7 @@ export default {
   update(query) {
     return micro_request.postRequest(basePath, 'ProductConsultRecord', 'Update', query)
   },
+  followUp(query) {
+    return micro_request.postRequest(basePath, 'ProductConsultRecord', 'FollowUp', query)
+  },
 }

+ 60 - 23
src/views/consult/components/FollowUp.vue

@@ -96,22 +96,33 @@
         <el-form-item label="下一步计划" prop="nextPlan">
           <el-input v-model="form.nextPlan" maxlength="500" resize="none" :rows="4" show-word-limit type="textarea" />
         </el-form-item>
-
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="经销商/代理商" prop="distributorName">
-              <el-input v-model="form.distributorName" suffix-icon="el-icon-search" @focus="handleSelectDistributor" />
+            <el-form-item label="客户信息" prop="custName">
+              <el-input v-model="form.custName" readonly suffix-icon="el-icon-search" @focus="handleSelectCustomer" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="是否创建项目" prop="isBig">
-              <el-select v-model="createProj" placeholder="请选择" style="width: 100%">
+              <el-select v-model="createProj" placeholder="请选择" style="width: 100%" @change="changeIsProject">
                 <el-option label="是" :value="true" />
                 <el-option label="否" :value="false" />
               </el-select>
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row :gutter="20">
+          <el-col v-if="createProj" :span="12">
+            <el-form-item label="关联项目" prop="nboName">
+              <el-input
+                v-model="form.nboName"
+                placeholder="请选择关联项目"
+                readonly
+                suffix-icon="el-icon-search"
+                @focus="openProject" />
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <span slot="footer">
         <el-button type="primary" @click="consultEdit">保存</el-button>
@@ -120,8 +131,10 @@
     </el-dialog>
     <!-- 选择销售工程师弹窗 -->
     <select-user ref="selectSales" :query-params="{ roles: ['SalesEngineer'] }" @save="selectSales" />
-    <!-- 选择经销商弹窗 -->
-    <select-distributor ref="selectDistributor" @save="selectDistributor" />
+    <!-- 客户 -->
+    <select-customer ref="selectCustomer" @save="selectCustomer" />
+    <!-- 选择项目 -->
+    <select-business ref="project" :multiple="false" @save="getBusinessInfo" />
   </div>
 </template>
 
@@ -130,10 +143,11 @@
   import customerApi from '@/api/customer'
   import consultApi from '@/api/consult'
   import SelectUser from '@/components/select/SelectUser'
-  import SelectDistributor from '@/components/select/SelectDistributor'
+  import SelectCustomer from '@/components/select/SelectCustomer'
+  import SelectBusiness from '@/components/select/SelectBusiness'
 
   export default {
-    components: { SelectUser, SelectDistributor },
+    components: { SelectUser, SelectCustomer, SelectBusiness },
     data() {
       return {
         title: '',
@@ -159,8 +173,10 @@
           content: '', // 内容
           progress: '', // 进展描述
           nextPlan: '', // 下一步计划
-          distributorId: 0, // 经销商ID
-          distributorName: '', // 经销商
+          custId: 0, // 客户ID
+          custName: '', // 客户
+          nboId: 0, // 关联项目
+          nboName: '', // 项目名称
         },
         rules: {},
       }
@@ -177,10 +193,10 @@
         this.createProj = false
         this.visible = true
         if (!id) {
-          this.title = '新建咨询记录'
+          this.title = '新建跟进记录'
           return
         }
-        this.title = '更新咨询记录'
+        this.title = '新建跟进记录' //'更新跟进记录'
         const [err, res] = await to(consultApi.get({ id: id }))
         if (err) return
         this.form = res.data
@@ -189,7 +205,7 @@
         this.$refs.form.validate(async (valid) => {
           if (valid) {
             let params = { ...this.form }
-            const [err, res] = await to(consultApi.update(params))
+            const [err, res] = await to(consultApi.followUp(params))
             if (err) return
             this.$message.success(res.msg)
             this.visible = false
@@ -216,17 +232,19 @@
           this.form.inchargeName = val.map((item) => item.nickName).join()
         }
       },
-      selectDistributor(val) {
-        if (val && val.length > 0) {
-          this.form.distributorId = val[0].id
-          this.form.distributorName = val.map((item) => item.distName).join()
-        }
-      },
       handleSelectSale() {
         this.$refs.selectSales.open()
       },
-      handleSelectDistributor() {
-        this.$refs.selectDistributor.open()
+      handleSelectCustomer() {
+        this.$refs.selectCustomer.open()
+      },
+      selectCustomer(val) {
+        this.form.custId = 0
+        this.form.custName = ''
+        if (val && val.length > 0) {
+          this.form.custId = val[0].id
+          this.form.custName = val.map((item) => item.custName).join()
+        }
       },
       close() {
         this.form = {
@@ -246,11 +264,30 @@
           content: '', // 内容
           progress: '', // 进展描述
           nextPlan: '', // 下一步计划
-          distributorId: 0, // 经销商ID
-          distributorName: '', // 经销商
+          custId: 0, // 客户ID
+          custName: '', // 客户
+          nboId: 0, // 关联项目
+          nboName: '', // 项目名称
         }
         this.$refs['form'].resetFields()
       },
+      changeIsProject() {
+        this.form.nboId = 0
+        this.form.nboName = ''
+      },
+      // 打开选择项目
+      openProject() {
+        this.$refs.project.open()
+      },
+      // 关闭选择项目获取项目信息
+      getBusinessInfo(data) {
+        this.form.nboId = 0
+        this.form.nboName = ''
+        let business = data[0] || null
+        if (!business) return
+        this.form.nboId = business.id
+        this.form.nboName = business.nboName
+      },
     },
   }
 </script>

+ 8 - 2
src/views/consult/detail.vue

@@ -67,12 +67,18 @@
               <el-descriptions-item label="对接人">
                 {{ details.inchargeName }}
               </el-descriptions-item>
-              <el-descriptions-item label="经销商/代理商">
+              <!-- <el-descriptions-item label="经销商/代理商">
                 {{ details.distributorName }}
-              </el-descriptions-item>
+              </el-descriptions-item> -->
               <el-descriptions-item label="内容" :span="24">
                 {{ details.content }}
               </el-descriptions-item>
+              <el-descriptions-item label="客户">
+                {{ details.custName }}
+              </el-descriptions-item>
+              <el-descriptions-item label="项目">
+                {{ details.nboName }}
+              </el-descriptions-item>
               <el-descriptions-item label="进展描述" :span="24">
                 {{ details.progress }}
               </el-descriptions-item>

+ 32 - 1
src/views/consult/index.vue

@@ -19,6 +19,11 @@
           <el-form-item prop="unit">
             <el-input v-model="queryForm.unit" clearable placeholder="单位" @keyup.enter.native="queryData" />
           </el-form-item>
+          <el-form-item prop="state">
+            <el-select v-model="queryForm.state" clearable placeholder="状态" @keyup.enter.native="queryData">
+              <el-option v-for="state in statusOptions" :key="state.value" :label="state.label" :value="state.value" />
+            </el-select>
+          </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
           </el-form-item>
@@ -50,13 +55,20 @@
           <span v-else-if="item.label === '日期时间'">
             {{ parseTime(row.consultTime, '{y}-{m}-{d}') }}
           </span>
+          <span v-else-if="item.prop === 'state'">
+            {{ row[item.prop] == '20' ? '已跟进' : '未跟进' }}
+          </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作" width="140px">
         <template slot-scope="scope">
           <el-button v-permissions="['consult:manage:edit']" type="text" @click="handleEdit(scope.row)">编辑</el-button>
-          <el-button v-permissions="['consult:manage:followup']" type="text" @click="handleFollowUp(scope.row)">
+          <el-button
+            v-show="scope.row.state != '20'"
+            v-permissions="['consult:manage:followup']"
+            type="text"
+            @click="handleFollowUp(scope.row)">
             跟进
           </el-button>
           <el-button v-permissions="['consult:manage:delete']" type="text" @click="handleDelete(scope.row)">
@@ -105,10 +117,21 @@
           name: '', // 联系人
           inchargeName: '', //对接人
           unit: '', //单位
+          state: '', // 状态
         },
         selectRows: [], //选择的表格数据
         contractOptions: {}, //合同类型
         productLineOptions: {}, //产品线
+        statusOptions: [
+          {
+            value: '10',
+            label: '未跟进',
+          },
+          {
+            value: '20',
+            label: '已跟进',
+          },
+        ],
         lines: [],
         // 自定义列表
         showColumns: [],
@@ -160,6 +183,13 @@
             sortable: false,
             disableCheck: false,
           },
+          {
+            label: '状态',
+            width: '120px',
+            prop: 'state',
+            sortable: false,
+            disableCheck: false,
+          },
         ],
       }
     },
@@ -208,6 +238,7 @@
           name: '', // 联系人
           inchargeName: '', //对接人
           unit: '', //单位
+          state: '', // 状态
         }
         this.queryData()
       },