codeMan 2 lat temu
rodzic
commit
4d18558234

+ 2 - 2
src/HManagement/clueManage/clue_import/modules/list.vue

@@ -14,14 +14,14 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="类型">
+      <!-- <el-form-item label="类型">
         <el-select v-model="search.cluetype" placeholder="请选择" @change="listData(params.content.pageNumber = 1)" clearable>
           <el-option label="经销商" value="经销商">
           </el-option>
           <el-option label="业务员" value="业务员">
           </el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
     <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght" fixedName="operation">
       <template v-slot:customcol="scope">

+ 1 - 1
src/HManagement/clueManage/clue_public/modules/distribution.vue

@@ -3,7 +3,7 @@
     <el-button type="default" size="small" @click="getWaitClue">分配经销商</el-button>
     <el-dialog title="数据预览" :visible.sync="dialogTableVisible" width="90%" top="30px">
       <p class="normal-margin">总共:&nbsp;{{total}}条</p>
-      <p class="tips normal-margin">注:1、未匹配经销商的线索,分配时,系统将自动跳过,不予以分配;2、所属经销商有且仅有一个匹配结果。</p>
+      <p class="tips normal-margin">注:1、未匹配或者存在多个所属经销商的线索,系统不自动分配,需手动分配;2、所属经销商有且仅有一个匹配结果。</p>
       <tableLayout :layout="tablecols" :data="list" :custom="true" :height="tableHieght">
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname === 'agent'">

+ 2 - 5
src/SManagement/orderclue/components/edit.vue

@@ -11,7 +11,8 @@
       title="编辑线索"
       :visible.sync="dialogVisible"
       width="30%"
-      :before-close="handleClose">
+      :before-close="handleClose"
+      append-to-body>
       <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm" label-position="left">
         <el-form-item label="客户名称" prop="name">
           <el-input v-model="param.content.name" size="small"></el-input>
@@ -106,8 +107,6 @@ export default {
   watch:{
     detailInfo: {
       handler(val) {
-        console.log(1111);
-        
         this.param = {
           "classname": "saletool.orderclue.web.orderclue",
           "method": "edit",
@@ -123,8 +122,6 @@ export default {
             "cluesource": val.data.cluesource
           }
         }
-        console.log(this.param);
-        
         this.areaSelectResult = val.data.city ? [val.data.province,val.data.city,val.data.county] : [val.data.province]
         let is 
         if(JSON.parse(window.sessionStorage.getItem('userInfo')).name == this.detailInfo.data.leadername) {

+ 14 - 28
src/SManagement/orderclue/components/follow.vue

@@ -3,12 +3,11 @@
     <el-button 
               size="small" 
               type="warning" 
-              style="margin-left:10px" 
               v-if="position == 'detail'" 
               :disabled="!isHandle"
               @click="dialogVisible=true">跟进</el-button>
     <p @click="dialogVisible=true" v-else>跟进</p>
-    <el-dialog title="线索跟进" :visible.sync="dialogVisible" width="900" :before-close="handleClose">
+    <el-dialog title="线索跟进" :visible.sync="dialogVisible" width="900" :before-close="handleClose" append-to-body>
       <el-form :model="param.content" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm"
         label-position="left">
         <el-row :gutter="10">
@@ -29,29 +28,29 @@
             <el-select v-model="param.content.followupmode" placeholder="请选择方式" size="small">
               <el-option label="当面拜访" value="当面拜访"></el-option>
               <el-option label="电话沟通" value="电话沟通"></el-option>
+              <el-option label="微信沟通" value="微信沟通"></el-option>
             </el-select>
           </el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="本次跟进结果" label-width="150px" label-position="left" prop="logtype">
-              <el-radio-group v-model="param.content.logtype" @change="changeClick">
-                <el-radio label="跟进">跟进</el-radio>
-                <el-radio label="已成交">成交</el-radio>
-                <el-radio label="丢单">丢单</el-radio>
-                <el-radio label="无效">无效</el-radio>
+              <el-radio-group v-model="param.content.logtype">
+                <el-radio label="继续跟进">继续跟进</el-radio>
+                <el-radio label="预约到店">预约到店</el-radio>
+                <el-radio label="互加微信">互加微信</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
-          <el-col :span="24" v-if="param.content.logtype == '丢单'">
+          <!-- <el-col :span="24" v-if="param.content.logtype == '丢单'">
             <el-form-item label="已购买商品" prop="competitor" label-width="200px">
               <el-input v-model="param.content.competitor" size="small"></el-input>
             </el-form-item>
-          </el-col>
+          </el-col> -->
           <el-col :span="24">
-            <el-form-item label="跟进内容" prop="content" v-if="param.content.logtype == '跟进'">
+            <el-form-item label="跟进内容" prop="content">
               <el-input type="textarea" v-model="param.content.content" size="small"></el-input>
             </el-form-item>
-            <el-form-item label="丢单原因" prop="content" v-if="param.content.logtype == '丢单'">
+            <!-- <el-form-item label="丢单原因" prop="content" v-if="param.content.logtype == '丢单'">
               <el-input type="textarea" v-model="param.content.content" size="small"></el-input>
             </el-form-item>
             <el-form-item label="添加备注" prop="content" v-if="param.content.logtype == '已成交'">
@@ -59,7 +58,7 @@
             </el-form-item>
             <el-form-item label="无效原因" prop="content" v-if="param.content.logtype == '无效'">
               <el-input type="textarea" v-model="param.content.content" size="small"></el-input>
-            </el-form-item>
+            </el-form-item> -->
           </el-col>
         </el-row>
       </el-form>
@@ -84,7 +83,7 @@ export default {
             "sat_orderclueid":0,
             "content": "",
             "followupmode": "", //当面拜访、电话沟通
-            "logtype": "跟进", //跟进、成交、丢单、无效
+            "logtype": "继续跟进", //跟进、成交、丢单、无效
             "competitor": ""
         }
       },
@@ -94,12 +93,12 @@ export default {
           {required:true,message:'内容不能为空',trigger:'blur'},
         ],
         followupmode:[
-          {required:true,message:'内容不能为空',trigger:'blur'},
+          {required:true,message:'请选择跟进方式',trigger:'blur'},
         ],
         logtype:[
           {required:true,message:'内容不能为空',trigger:'blur'},
         ],
-        competitor:[
+        content:[
           {required:true,message:'内容不能为空',trigger:'blur'},
         ],
       },
@@ -150,19 +149,6 @@ export default {
     handleClose() {
       this.dialogVisible = false
     },
-    changeClick() {
-      this.param = {
-        "classname": "saletool.orderclue.web.orderclue",
-        "method": "addFollowUpLog",
-        "content": {
-            "sat_orderclueid":0,
-            "content": "",
-            "followupmode": "", //当面拜访、电话沟通
-            "logtype": this.param.content.logtype, //跟进、成交、丢单、无效
-            "competitor": ""
-        }
-      }
-    },
     followAction() {
       this.$refs.ruleForm.validate( async val => {
         if(!val) return this.$notify({

+ 2 - 1
src/SManagement/orderclue/components/list.vue

@@ -3,7 +3,7 @@
     <Header>
       <add @updataList="updataList" v-if="tool.checkAuth($route.name,'insert')"></add>
       <export-btn v-if="tool.checkAuth($route.name,'export')"></export-btn>
-      <move type="more" :teamList="teamList" :data="checkboxArr" @updataList="getList()" v-show="checkboxArr.length >= 1"></move>
+      <move type="more" :teamList="teamList" :sat_orderclueid="checkboxArr" @updataList="getList()" v-show="checkboxArr.length >= 1"></move>
     </Header>
     <div class="content">
       <div class="select" v-if="tool.checkAuth($route.name,'read')">
@@ -14,6 +14,7 @@
             <el-option value="待跟进">待跟进</el-option>
             <el-option value="跟进中">跟进中</el-option>
             <el-option value="已成交">已成交</el-option>
+            <el-option value="已无效">已无效</el-option>
           </el-select>
         </div>
       </div>

+ 16 - 4
src/SManagement/orderclue/components/move.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="move">
     <el-button type="warning" size="small" style="margin-left:10px" @click="dialogVisible=true" v-if="type == 'more'">批量转移</el-button>
-    <p @click="dialogVisible=true" v-else>转移</p>
-    <el-dialog title="转移" :visible.sync="dialogVisible" width="500px" :before-close="handleClose">
+    <p @click="moveBtn" v-else>转移</p>
+    <el-dialog title="转移" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" append-to-body>
       <div class="handle">
         <p class="title">团队成员</p>
         <el-select placeholder="请选择转移人" v-model="param.content.sa_agent_hrid" size="small">
@@ -34,9 +34,15 @@ export default {
     };
   },
   props: {
-    data: {
+    sat_orderclueid: {
       type:Array
     },
+    sa_agent_hrid: {
+      type: Number,
+      default () {
+        return 0
+      }
+    },
     type: {
       type:String
     },
@@ -55,11 +61,17 @@ export default {
   created() {
   },
   methods: {
+    moveBtn () {
+      this.dialogVisible=true
+      if(this.sa_agent_hrid) {
+        this.param.content.sa_agent_hrid = this.sa_agent_hrid
+      }
+    },
     handleClose () {
       this.dialogVisible = false
     },
     async followAction () {
-      this.param.content.sat_orderclueid = this.data
+      this.param.content.sat_orderclueid = this.sat_orderclueid
       let res = await this.$api.requested(this.param)
       this.tool.showMessage(res,() => {
         this.dialogVisible = false

+ 5 - 4
src/SManagement/orderclue/index.vue

@@ -2,7 +2,7 @@
   <div class="orderclue">
     <list ref="list" :teamList="teamList">
       <template v-slot:detail="scope">
-          <p @click="detail(scope.data)" v-if="tool.checkAuth($route.name,'read')">详情</p>
+          <p @click="detail(scope.data)" v-if="tool.checkAuth($route.name,'read')">执行</p>
       </template>
       <template v-slot:edit="scope">
           <edit :detailInfo="scope.data" 
@@ -10,13 +10,14 @@
                 :arealist="arealist" 
                 v-if="userInfo.name == scope.data.data.leadername ? scope.data.data.status == '待跟进' || scope.data.data.status == '跟进中' : ''"></edit>
       </template>
-      <template v-slot:goUp="scope">
+      <!-- <template v-slot:goUp="scope">
         <follow :detailInfo="scope.data" 
                 @updataList="updataList" 
                 v-if="userInfo.name == scope.data.data.leadername  ? scope.data.data.status == '待跟进' || scope.data.data.status == '跟进中' : ''"></follow>
-      </template>
+      </template> -->
       <template v-slot:move="scope">
-        <move :data="[scope.data.data.sat_orderclueid]" 
+        <move :sat_orderclueid="[scope.data.data.sat_orderclueid]" 
+              :sa_agent_hrid="scope.data.data.sa_agent_hrid"
               @updataList="updataList" 
               :teamList="teamList"  
               v-if="userInfo.isAuth == 1 ? scope.data.data.status == '待跟进' || scope.data.data.status == '跟进中' : ''"></move>

+ 58 - 2
src/SManagement/orderclue_detail/index.vue

@@ -1,8 +1,10 @@
 <template>
   <div class="detail">
     <Header>
-      <edit position="detail" @getDetail="getDetail" :arealist="arealist" :detailInfo="{data:detail}"></edit>
       <follow :detailInfo="{data:detail}" @getDetail="getDetail" position="detail"></follow>
+      <el-button :disabled="!isHandle" style="margin-left:10px" type="success" size="small" @click="successClick">成交</el-button>
+      <el-button :disabled="!isHandle" style="margin-left:10px" type="info" size="small" @click="nullClick">无效</el-button>
+      <edit position="detail" style="margin-left:10px" @getDetail="getDetail" :arealist="arealist" :detailInfo="{data:detail}"></edit>
     </Header>
     <div class="normal-card">
       <el-descriptions :column="5" title="线索信息">
@@ -61,13 +63,33 @@ export default {
         '已过期':'#999999'
       },
       detail: '',
-      arealist:[]
+      arealist:[],
+      isHandle:''
     };
   },
   components:{ Header , followDetail , edit , follow },
   computed:{
   },
   watch:{
+    detail: {
+      handler(val) {
+        // this.isHandle =
+        let is 
+        if(JSON.parse(window.sessionStorage.getItem('userInfo')).name == val.leadername) {
+          is = true
+          if(val.status == '待跟进' || val.status == '跟进中') {
+            is = true
+          } else {
+            is = false
+          }
+        } else {
+          is = false
+        }
+        this.isHandle = is
+        console.log(this.isHandle);
+        
+      }
+    }
   },
   created() {
     this.getDetail()
@@ -81,6 +103,8 @@ export default {
       this.param.content.sat_orderclueid = this.$route.query.id
       let res = await this.$api.requested(this.param)
       this.detail = res.data
+      console.log(this.detail);
+      
     },
     async query_arealist() {
       const res = await this.$api.requested({
@@ -90,6 +114,38 @@ export default {
         }
       })
       this.arealist = this.tool.createMenu(res.data)
+    },
+    async nullClick () {
+      let res = await this.$api.requested({
+        "classname": "saletool.orderclue.web.orderclue",
+        "method": "addFollowUpLog",
+        "content": {
+            "sat_orderclueid": this.$route.query.id,
+            "content": "无效处理",
+            "followupmode": "", //当面拜访、电话沟通
+            "logtype": "无效", //跟进、成交、丢单、无效
+            "competitor": ""
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.getDetail()
+      })
+    },
+    async successClick () {
+      let res = await this.$api.requested({
+        "classname": "saletool.orderclue.web.orderclue",
+        "method": "addFollowUpLog",
+        "content": {
+            "sat_orderclueid": this.$route.query.id,
+            "content": "已成交",
+            "followupmode": "", //当面拜访、电话沟通
+            "logtype": "成交", //跟进、成交、丢单、无效
+            "competitor": ""
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.getDetail()
+      })
     }
   },
 };

+ 0 - 2
src/utils/tool.js

@@ -13,8 +13,6 @@ export default {
       let active_modules = module_list.filter(item => {
         return item.name === appname
       })
-      console.log(active_modules);
-      
       // 获取当前应用权限
       let auth_list = active_modules[0].meta.auth
       // 判断是否拥有权限

+ 1 - 1
yos/index.html

@@ -1 +1 @@
-<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"><link rel="icon" href="favicon.ico"><title>美大营销管理平台</title><script defer="defer" type="module" src="js/chunk-vendors.8e4fd6d5.js"></script><script defer="defer" type="module" src="js/app.5f24b6e5.js"></script><link href="css/app.e05006d8.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.25c4112b.js" nomodule></script><script defer="defer" src="js/app-legacy.d1195a45.js" nomodule></script></head><body><noscript><strong>We're sorry but 美大营销管理平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"><link rel="icon" href="favicon.ico"><title>美大营销管理平台</title><script defer="defer" type="module" src="js/chunk-vendors.8e4fd6d5.js"></script><script defer="defer" type="module" src="js/app.30880ea4.js"></script><link href="css/app.e05006d8.css" rel="stylesheet"><script defer="defer" src="js/chunk-vendors-legacy.25c4112b.js" nomodule></script><script defer="defer" src="js/app-legacy.24f47c86.js" nomodule></script></head><body><noscript><strong>We're sorry but 美大营销管理平台 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>