Ver Fonte

销售线索详情跟进动态调整

qymljy há 2 meses atrás
pai
commit
3eee2c0562

+ 63 - 12
src/SManagement/orderclue/components/follow.vue

@@ -3,7 +3,7 @@
     <el-button size="mini" :type="disabled || data.status === '已无效' || data.status === '已过期'?'':'primary'" @click="followBtn" :disabled="disabled || data.status === '已无效' || data.status === '已过期'">{{$t('跟进')}}</el-button>
     <el-drawer :title="$t('线索跟进')" append-to-body :visible.sync="dialogVisible" size="600px" :before-close="handleClose" :show-close="false">
       <div class="drawer__panel">
-        <el-form :model="param" :rules="rules" ref="ruleForm" :label-width="tool.onlyZh('110px')" class="demo-ruleForm"
+        <el-form :model="param" :rules="rules"  ref="ruleForm" :label-width="tool.onlyZh('110px')" class="demo-ruleForm"
           label-position="right">
           <el-form-item :label="$t('跟进时间')">
             <el-date-picker v-model="timer" type="datetime" format="yyyy-MM-dd HH:mm:ss"  size="small">
@@ -15,14 +15,33 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <!-- <el-form-item label="本次跟进结果" prop="logtype">
-            <el-radio-group v-model="param.logtype">
-              <el-radio label="跟进">跟进</el-radio>
-            </el-radio-group>
-          </el-form-item> -->
-          <el-form-item :label="$t('跟进内容')" prop="content" v-if="param.logtype == '跟进'">
-            <el-input type="textarea" v-model="param.content" size="small" :placeholder="$t('请填写跟进内容')"></el-input>
+          <el-form-item :label="$t(`跟进对象`)"  prop="dataextendContactsid" >
+            <el-tag
+                style="float: left;margin-right: 5px;margin-bottom: 5px"
+                v-for="tag in selectTag"
+                :key="tag.index"
+                closable
+                @close="closeTag(tag)"
+                :type="tag.type">
+              {{$t(tag.name)}}
+            </el-tag>
+            <contactsList style="float: left" @onSelect="onSelect" :selects="param.dataextend.contactsid"></contactsList>
           </el-form-item>
+          <el-form-item :label="$t(`目的`)" prop="target">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.target" :placeholder="$t(`请输入跟进目的`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`过程`)" prop="content">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.content" :placeholder="$t(`请输入跟进过程`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`结果`)" prop="results">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.results" :placeholder="$t(`请输入跟进结果`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`下次跟进计划`)" prop="nextplan">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.nextplan" :placeholder="$t(`请输入下次跟进计划`)" autocomplete="off"></el-input>
+          </el-form-item>
+<!--          <el-form-item :label="$t('跟进内容')" prop="content" v-if="param.logtype == '跟进'">-->
+<!--            <el-input type="textarea" v-model="param.content" size="small" :placeholder="$t('请填写跟进内容')"></el-input>-->
+<!--          </el-form-item>-->
           <upload
             ref="upload"
             :folderid="folderid"
@@ -43,8 +62,9 @@
 
 <script>
 import upload from './upload'
+import contactsList from '@/template/projectChange/contactsList.vue'
 export default {
-  components:{upload},
+  components:{upload,contactsList},
   name: '',
   data () {
     return {
@@ -62,12 +82,19 @@ export default {
         "longitude":"",//纬度,可选
         "address":"",//解析地址,
         "sat_ordercluefollowuplogid":0,//传0新增
-        "resource":"销售线索"
+        "resource":"销售线索",
+        "dataextend": {
+          "contactsid": []
+        },
+        "target": "",
+        "results": "",
+        "nextplan": "",
+        "dataextendContactsid":[],
       },
       timer: '',
       rules: {
         content: [
-          { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
+          { required: false, message: this.$t('内容不能为空'), trigger: 'blur' },
         ],
         followupmode: [
           { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
@@ -78,10 +105,14 @@ export default {
         competitor: [
           { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
         ],
+        dataextendContactsid:[
+          { required: true, message: this.$t('请选择跟进对象'), trigger: 'blur'}
+        ]
       },
       time: '',
       dialogVisible: false,
-      followTypeList: []
+      followTypeList: [],
+      selectTag:[],
     }
   },
   props: {
@@ -129,6 +160,10 @@ export default {
     },
     handleClose () {
       this.dialogVisible = false
+      this.selectTag = []
+      this.param.dataextend.contactsid = []
+      this.param.dataextendContactsid = []
+      this.$refs.ruleForm.resetFields()
     },
     followAction () {
       this.$refs.ruleForm.validate(async val => {
@@ -153,6 +188,22 @@ export default {
         })
       })
     },
+    onSelect(row){
+      this.selectTag = row
+      this.param.dataextend.contactsid = row.map(item=>item.sys_phonebookid)
+      this.param.dataextendContactsid = this.param.dataextend.contactsid
+      // this.$refs.form.validateField('dataextend.contactsid')
+    },
+    closeTag(row){
+      for (var i=0;i<this.selectTag.length;i++){
+        if (row.contactsid === this.selectTag[i].contactsid){
+          this.selectTag.splice(i,1)
+          this.param.dataextend.contactsid.splice(i,1)
+          this.param.dataextendContactsid.splice(i,1)
+          break
+        }
+      }
+    },
     onSuccess () {
 
     }

+ 60 - 21
src/SManagement/orderclue_detail/components/editFollow.vue

@@ -17,24 +17,30 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <!-- <el-form-item label="本次跟进结果" prop="logtype">
-            <el-radio-group v-model="param.logtype">
-              <el-radio label="跟进">跟进</el-radio>
-            </el-radio-group>
-          </el-form-item> -->
-          <el-form-item :label="$t('跟进内容')" prop="content" >
-            <el-input type="textarea" v-model="param.content" size="small" :placeholder="$t('请填写跟进内容')"></el-input>
+          <el-form-item :label="$t(`跟进对象`)"  prop="dataextendContactsid" >
+            <el-tag
+                style="float: left;margin-right: 5px;margin-bottom: 5px"
+                v-for="tag in selectTag"
+                :key="tag.index"
+                closable
+                @close="closeTag(tag)"
+                :type="tag.type">
+              {{$t(tag.name)}}
+            </el-tag>
+            <contactsList style="float: left" @onSelect="onSelect" :selects="param.dataextend.contactsid"></contactsList>
+          </el-form-item>
+          <el-form-item :label="$t(`目的`)" prop="target">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.target" :placeholder="$t(`请输入跟进目的`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`过程`)" prop="content">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.content" :placeholder="$t(`请输入跟进过程`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`结果`)" prop="results">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.results" :placeholder="$t(`请输入跟进结果`)" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item :label="$t(`下次跟进计划`)" prop="nextplan">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="param.nextplan" :placeholder="$t(`请输入下次跟进计划`)" autocomplete="off"></el-input>
           </el-form-item>
-<!--          <div class="flex-align-center flex-between pionter" v-for="file in data.attinfo" :key="file.index">
-            <div class="flex-align-center">
-              <img width="38" :src="checkFileType(file.postfix) === 'file'?require('@/assets/file_icons/file.svg'):file.url" class="inline-16" alt="">
-              <div class="file__link inline-16">
-                <a :href="file.url">{{file.document}}</a>
-                <p>{{(file.contentlength / 1024).toFixed(2)}}kb</p>
-              </div>
-            </div>
-            <i style="color:red;" class="el-icon-delete" @click="deleteFile(file)"></i>
-          </div>-->
           <file-item
               :auto="true"
               :isDownLoad="true"
@@ -65,9 +71,10 @@
 <script>
 import upload from './upload'
 import FileItem from '@/SManagement/orderclue/components/file/index3'
+import contactsList from '@/template/projectChange/contactsList.vue'
 export default {
   name: "editFollow",
-  components:{upload,FileItem},
+  components:{upload,FileItem,contactsList},
   data () {
     return {
       loading:false,
@@ -84,12 +91,19 @@ export default {
         "longitude":"",//纬度,可选
         "address":"",//解析地址,
         "sat_ordercluefollowuplogid":0,//传0新增
-        "resource":"销售线索"
+        "resource":"销售线索",
+        "dataextend": {
+          "contactsid": []
+        },
+        "target": "",
+        "results": "",
+        "nextplan": "",
+        "dataextendContactsid":[],
       },
       timer: '',
       rules: {
         content: [
-          { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
+          { required: false, message: this.$t('请填写跟进动态'), trigger: 'blur' },
         ],
         followupmode: [
           { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
@@ -100,10 +114,14 @@ export default {
         competitor: [
           { required: true, message: this.$t('内容不能为空'), trigger: 'blur' },
         ],
+        dataextendContactsid:[
+          { required: true, message: this.$t('请选择跟进对象'), trigger: 'blur'}
+        ]
       },
       time: '',
       dialogVisible: false,
-      followTypeList: []
+      followTypeList: [],
+      selectTag:[],
     }
   },
   props: {
@@ -150,6 +168,8 @@ export default {
       this.dialogVisible = true
       this.getFollowType()
       this.param = Object.assign({},this.param,this.data)
+      this.selectTag = this.param.contacts
+      this.param.dataextendContactsid = this.param.dataextend.contactsid
     },
     handleClose () {
       this.dialogVisible = false
@@ -161,6 +181,7 @@ export default {
         this.param.sat_orderclueid = this.detailInfo.sat_orderclueid
         this.param.createdate = this.timer
         this.param.createdate = `${this.timer.getFullYear()}-${this.timer.getMonth() + 1}-${this.timer.getDate()} ${this.timer.getHours()}:${this.timer.getMinutes()}:${this.timer.getSeconds()}`
+
         let res = await this.$api.requested({
           "id":20221208100602,
           "content": this.param
@@ -223,6 +244,24 @@ export default {
         }
       })
     },
+    onSelect(row){
+      console.log(this.selectTag,'selectTag')
+      console.log(row,'333333')
+      this.selectTag = row
+      this.param.dataextend.contactsid = row.map(item=>item.sys_phonebookid)
+      this.param.dataextendContactsid = this.param.dataextend.contactsid
+      // this.$refs.form.validateField('dataextend.contactsid')
+    },
+    closeTag(row){
+      for (var i=0;i<this.selectTag.length;i++){
+        if (row.contactsid === this.selectTag[i].contactsid){
+          this.selectTag.splice(i,1)
+          this.param.dataextend.contactsid.splice(i,1)
+          this.param.dataextendContactsid.splice(i,1)
+          break
+        }
+      }
+    },
   },
 }
 </script>

+ 24 - 4
src/SManagement/orderclue_detail/components/followDetail.vue

@@ -51,11 +51,31 @@
                 <small style="color:#999999ad;margin-top:10px">{{$t(`部门`)}}:{{ item.depname?item.depname:"--" }}&emsp;{{$t(`职位`)}}:{{ item.position?item.position:"--" }}</small>
               </div>
             </div>
-            <div style="margin-top: 10px;margin-bottom: 10px">
-              <p>{{$t(`跟进类型`)}}:{{item.followupmode}}</p>
+            <div style="margin-top: 10px;margin-bottom: 10px;display: flex;justify-content: left">
+              <div>{{$t(`跟进类型`)}}:{{item.followupmode}}</div>
+              <div style="margin-left: 20px">
+                <span class="span-style">{{$t(`跟进对象`)}}:</span>
+                <span  v-for="k in item.contacts" :key="k.index">
+                    <span v-if="k.rowindex === item.contacts.length" class="span-style">
+                      {{k.name}}
+                    </span>
+                    <span v-else class="span-style">
+                       {{k.name + ','}}
+                    </span>
+                </span>
+              </div>
+            </div>
+            <div style="margin-bottom: 10px;">
+              <span>{{$t(`目的`)}}:{{item.target}}</span>
+            </div>
+            <div style="margin-bottom: 10px;">
+              <span>{{$t(`过程`)}}:{{item.content}}</span>
+            </div>
+            <div style="margin-bottom: 10px;">
+              <span>{{$t(`结果`)}}:{{item.results}}</span>
             </div>
-            <div style="margin-top: 10px;margin-bottom: 10px">
-              <p>{{$t(`跟进内容`)}}:{{item.content}}</p>
+            <div style="margin-bottom: 10px;">
+              <span>{{$t(`下次跟进计划`)}}:{{item.nextplan}}</span>
             </div>
             <div style="float: left">{{$t(`营销费用`)}}:</div>
             <div style="float: left">

+ 1 - 1
src/SManagement/orderclue_detail/index.vue

@@ -30,7 +30,7 @@
         <changeProject v-if="mainData.isproject == 0 && tool.checkAuth($route.name,'changeProject') && mainData.istransformingtoproject == 0" :data="mainData" :disabled="!isHandle" class="inline-16" @onChangeProject="queryMainData('转化')"/>
         <customerAudit v-if="mainData.iscustomer == 0 && tool.checkAuth($route.name,'customerAudit') && mainData.istransformingtocustomer == 1 && siteid == 'HY'" :disabled="mainData.iscustomer == 1" class="inline-16" :data="mainData" @onCustomerAudit="queryMainData('审核')"></customerAudit>
         <projectAudit v-if="mainData.isproject == 0 && tool.checkAuth($route.name,'projectAudit') && mainData.istransformingtoproject == 1 && siteid == 'HY'" :disabled="mainData.isproject == 1" class="inline-16" :data="mainData" @onProjectAudit="queryMainData('审核')"></projectAudit>
-        <el-button :type="!isHandle || mainData.status === '已无效'?'':'primary'" v-if="tool.checkAuth($route.name,'goBack') && mainData.status != '已转化' && mainData.isprivate !== 1" :disabled="!isHandle || mainData.status === '已无效'" class="inline-16" size="mini" @click="goBack">退 回</el-button>
+        <el-button :type="!isHandle || mainData.status === '已无效'?'':'primary'" v-if="tool.checkAuth($route.name,'goBack') && mainData.status != '已转化' && mainData.isprivate !== 1" :disabled="!isHandle || mainData.status === '已无效'" class="inline-16" size="mini" @click="goBack">{{$t(`退 回`)}}</el-button>
         <noNull v-if="tool.checkAuth($route.name,'noNull') && mainData.status != '已转化' " class="inline-16" :data="mainData" :disabled="!isHandle" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid"/>
         <Del v-if="tool.checkAuth($route.name,'toVoid') " class="inline-16" :data="mainData" :disabled="!isHandle" :idName="20221123193702" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid" idKey="sat_orderclueids"/>
         <changeSite v-if="tool.checkAuth($route.name,'changeSite')" class="inline-16"></changeSite>