Selaa lähdekoodia

跟进动态新增编辑调整

qymljy 2 vuotta sitten
vanhempi
commit
9dcd6f107b

+ 1 - 1
src/HManagement/siteManage/systemRemind/components/edit.vue

@@ -19,7 +19,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="提醒方式" prop="remindmode">
-              <el-select style="width:250px" v-model="form.remindmode" multiple>
+              <el-select style="width:100%" v-model="form.remindmode" multiple>
                 <el-option label="短信" value="短信"></el-option>
                 <el-option label="邮件" value="邮件"></el-option>
                 <el-option label="弹框" value="弹框"></el-option>

+ 0 - 3
src/SDrpManagement/salerPrivatecustomer/detail/customerDetail.vue

@@ -215,8 +215,6 @@ export default {
       },1000)
     },
     async queryMainData(id) {
-      console.log('触发');
-      console.log(this.$route,'$route')
       const res = await this.$api.requested({
         "id": 20221012164302,
         "content": {
@@ -225,7 +223,6 @@ export default {
       })
      /* this.mainData = res.data*/
       this.mainData = Object.assign({},this.mainData,res.data)
-      console.log(this.mainData,"输出数据用户id",res.data)
       this.$refs['details'].param.content.type = this.$route.query.tabIndex
       this.$refs['details'].param.content.isExport = false
       this.changeDataStructure()

+ 1 - 0
src/SDrpManagement/salerPrivatecustomer/index.vue

@@ -181,6 +181,7 @@ export default {
   data() {
     return {
       value:'',
+      sys_enterpriseid:'',
       editableTabsValue: "我负责的",
       editableTabs: [
       ],

+ 107 - 25
src/components/normal-basic-layout/details/modules/followUp/addLog.vue

@@ -1,49 +1,94 @@
 <template>
   <div>
-    <el-button type="default" size="mini" @click="dialogFormVisible = true" :disabled="status === '已结案' || status === '已失败'">新 建</el-button>
-    <el-dialog title=" 新建跟进动态" width="600px" append-to-body :visible.sync="dialogFormVisible">
-      <el-form :model="form" ref="form" label-position="top" label-width="80px">
-        <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
-          <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <upload
-            ref="upload"
-            :folderid="folderid"
-            @onSuccess="onSuccess"
-            :bindData="bindData"
-            type="button">
-          </upload>
-          <!-- <previewImage :image="{}" :deletebtn="true"></previewImage> -->
-        </el-form-item>
+    <el-button type="default" size="mini" @click="onShow" :disabled="status === '已结案' || status === '已失败'">新 建</el-button>
+    <el-drawer title=" 新建跟进动态" size="600px" append-to-body :visible.sync="dialogFormVisible" @close="onClose">
+      <div class="drawer__panel">
+        <el-form :model="form" ref="form" label-position="top" label-width="80px">
+          <el-form-item v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" label="跟进类型" prop="type" :rules="{ required: true, message: '请选择跟进类型', trigger: 'change'}">
+            <el-select v-model="form.type" placeholder="请选择" style="width: 100%">
+              <el-option
+                  v-for="item in followUpType"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="跟进对象" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" prop="dataextend.contactsid" :rules="{ required: true, message: '请选择跟进对象', trigger: 'change'}">
+            <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">
+              {{tag.name}}
+            </el-tag>
+            <contactsList style="float: left" @onSelect="onSelect" :selects="form.dataextend.contactsid"></contactsList>
+          </el-form-item>
+          <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <upload
+              ref="upload"
+              :folderid="folderid"
+              @onSuccess="onSuccess"
+              :bindData="bindData"
+              type="button">
+            </upload>
+            <!-- <previewImage :image="{}" :deletebtn="true"></previewImage> -->
+          </el-form-item>
 
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+        </el-form>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose">取 消</el-button>
         <el-button type="warning" size="small" @click="submitLog">保 存</el-button>
       </div>
-    </el-dialog>
+    </el-drawer>
   </div>
 </template>
 
 <script>
 import upload from '@/components/upload/preview_upload.vue'
 import previewImage from '@/components/previewImage/index.vue'
+import contactsList from '@/template/projectChange/contactsList.vue'
 export default {
   props:['ownertable','status'],
   components:{
     upload,
-    previewImage
+    previewImage,
+    contactsList
   },
   data () {
     return {
       dialogFormVisible:false,
       form:{
-        content:''
+        content:'',
+        type:'',
+        dataextend: {
+          contactsid: [] // 跟进对象
+        }//扩展参数
       },
+      selectTag:[],
       bindData:{},
       folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
-      attachmentids:[]
+      attachmentids:[],
+      path:'',
+      followUpType:[],
+      projectParam:{
+        id:20221111131004,
+        content:{
+          pageNumber:1,
+          pageSize:20,
+          sa_projectid:'',
+          nocache:true,
+          where:{
+            condition:''
+          }
+        }
+      }
     }
   },
 
@@ -51,6 +96,18 @@ export default {
     onSuccess(res) {
       this.attachmentids = res.data.attachmentids
     },
+    onShow(){
+      this.dialogFormVisible = true
+      console.log(this.$route,'route')
+      this.path = this.$route.path
+      console.log(this.path)
+      this.queryFollowUpType()
+    },
+    /*获取跟进类型*/
+    async queryFollowUpType(){
+      const res = await this.$store.dispatch('optiontypeselect','datafollowuptype')
+      this.followUpType = res.data
+    },
     submitLog () {
       this.$refs.form.validate(async (valid)=>{
         if (!valid) return false
@@ -60,8 +117,11 @@ export default {
             "sys_datafollowupid":0,
             "ownertable":this.ownertable,
             "ownerid":this.$route.query.id,
-            "type":"",
-            "content":this.form.content
+            "type":this.form.type,
+            "content":this.form.content,
+            "dataextend": {
+              "contactsid": this.form.dataextend.contactsid // 跟进对象
+            }
           }
         })
         this.tool.showMessage(res,()=>{
@@ -75,6 +135,8 @@ export default {
 
           this.$refs['upload'].toUpload()
           this.$emit('onSuccess')
+          this.selectTag = []
+          this.form.dataextend.contactsid = []
         })
       })
 
@@ -82,6 +144,26 @@ export default {
     onSuccess() {
       this.$emit('onSuccess')
       this.dialogFormVisible = false
+    },
+    onSelect(row){
+      this.selectTag = row
+      this.form.dataextend.contactsid = row.map(item=>item.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.form.dataextend.contactsid.splice(i,1)
+          break
+        }
+      }
+    },
+    onClose(){
+      this.dialogFormVisible = false
+      this.selectTag = []
+      this.form.dataextend.contactsid = []
+      this.$refs.form.resetFields()
     }
   }
 }

+ 94 - 0
src/components/normal-basic-layout/details/modules/followUp/addLogCopy.vue

@@ -0,0 +1,94 @@
+<template>
+  <div>
+    <el-button type="default" size="mini" @click="dialogFormVisible = true" :disabled="status === '已结案' || status === '已失败'">新 建</el-button>
+    <el-dialog title=" 新建跟进动态" width="600px" append-to-body :visible.sync="dialogFormVisible">
+      <el-form :model="form" ref="form" label-position="top" label-width="80px">
+        <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
+          <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <upload
+            ref="upload"
+            :folderid="folderid"
+            @onSuccess="onSuccess"
+            :bindData="bindData"
+            type="button">
+          </upload>
+          <!-- <previewImage :image="{}" :deletebtn="true"></previewImage> -->
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="warning" size="small" @click="submitLog">保 存</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload/preview_upload.vue'
+import previewImage from '@/components/previewImage/index.vue'
+export default {
+  props:['ownertable','status'],
+  components:{
+    upload,
+    previewImage
+  },
+  data () {
+    return {
+      dialogFormVisible:false,
+      form:{
+        content:''
+      },
+      bindData:{},
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+      attachmentids:[]
+    }
+  },
+
+  methods:{
+    onSuccess(res) {
+      this.attachmentids = res.data.attachmentids
+    },
+    submitLog () {
+      this.$refs.form.validate(async (valid)=>{
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20220930121601,
+          "content": {
+            "sys_datafollowupid":0,
+            "ownertable":this.ownertable,
+            "ownerid":this.$route.query.id,
+            "type":"",
+            "content":this.form.content
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.bindData = {
+            "ownertable": 'sys_datafollowup',
+            "ownerid": res.data.sys_datafollowupid,
+            "usetype": 'default',
+          }
+          this.dialogFormVisible = false
+          this.$refs['form'].resetFields();
+
+          this.$refs['upload'].toUpload()
+          this.$emit('onSuccess')
+        })
+      })
+
+    },
+    onSuccess() {
+      this.$emit('onSuccess')
+      this.dialogFormVisible = false
+    }
+  }
+}
+
+</script>
+<style>
+</style>
+<style scoped>
+
+</style>

+ 92 - 28
src/components/normal-basic-layout/details/modules/followUp/editLog.vue

@@ -1,52 +1,85 @@
 <template>
   <div class="inline-16">
     <el-button icon="el-icon-edit" type="text" size="mini" @click="onShow(dialogFormVisible = true)" :disabled="status === '已结案' || status === '已失败'">编 辑</el-button>
-    <el-dialog title="编辑跟进动态" width="600px" append-to-body :visible.sync="dialogFormVisible">
-      <el-form ref="form" :model="form" label-position="top" label-width="80px">
-        <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
-          <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
-        </el-form-item>
-        <div class="flex-align-center flex-between pionter" v-for="file in data.attinfos" :key="file.index">
-          <div class="flex-align-center">
-            <img width="30" :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>
+    <el-drawer title="编辑跟进动态" size="600px" append-to-body :visible.sync="dialogFormVisible" @close="onClose">
+      <div class="drawer__panel">
+        <el-form ref="form" :model="form" label-position="top" label-width="80px">
+          <el-form-item v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" label="跟进类型" prop="type" :rules="{ required: true, message: '请选择跟进类型', trigger: 'change'}">
+            <el-select v-model="form.type" placeholder="请选择" style="width: 100%">
+              <el-option
+                  v-for="item in followUpType"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" label="跟进对象" prop="dataextend.contactsid" :rules="{ required: true, message: '请选择跟进对象', trigger: 'change'}">
+            <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">
+              {{tag.name}}
+            </el-tag>
+            <contactsList style="float: left" @onSelect="onSelect" ref="listData" :selects="form.dataextend.contactsid" :sys_enterpriseid="sys_enterpriseid"></contactsList>
+          </el-form-item>
+          <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
+          </el-form-item>
+          <div class="flex-align-center flex-between pionter" v-for="file in data.attinfos" :key="file.index">
+            <div class="flex-align-center">
+              <img width="30" :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>
-          <i style="color:red;" class="el-icon-delete" @click="deleteFile(file)"></i>
-        </div>
-        <upload
-          :folderid="folderid"
-          btntype="icon"
-          @onSuccess="onSuccess"
-          :hidemediastock="false"
-          :bindData=" {ownertable: 'sys_datafollowup', ownerid: data.sys_datafollowupid,usetype: 'default'}">
-        </upload>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+          <upload
+            :folderid="folderid"
+            btntype="icon"
+            @onSuccess="onSuccess"
+            :hidemediastock="false"
+            :bindData=" {ownertable: 'sys_datafollowup', ownerid: data.sys_datafollowupid,usetype: 'default'}">
+          </upload>
+        </el-form>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose">取 消</el-button>
         <el-button type="warning" size="small" @click="submitLog">保 存</el-button>
       </div>
-    </el-dialog>
+    </el-drawer>
   </div>
 </template>
 
 <script>
 import upload from '@/components/upload/hw_obs_upload.vue'
 import previewImage from '@/components/previewImage/index.vue'
+import contactsList from '@/template/projectChange/contactsList.vue'
 export default {
   props:['data','ownertable','status'],
   components:{
     upload,
-    previewImage
+    previewImage,
+    contactsList
   },
   data () {
     return {
       dialogFormVisible:false,
+      sys_enterpriseid:'',
       form:{
-        content:''
+        content:'',
+        type:'',
+        dataextend: {
+          contactsid: [] // 跟进对象
+        }//扩展参数
       },
+      followUpType:[],
+      selectTag:[],
       folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
       attachmentids:[]
     }
@@ -55,6 +88,14 @@ export default {
   methods:{
     onShow () {
       this.form = Object.assign({},this.form,this.data)
+      console.log(this.form,'表单数据')
+      this.selectTag = this.form.contacts
+      this.queryFollowUpType()
+    },
+    /*获取跟进类型*/
+    async queryFollowUpType(){
+      const res = await this.$store.dispatch('optiontypeselect','datafollowuptype')
+      this.followUpType = res.data
     },
     onSuccess(res) {
       res.attinfos = JSON.parse(res.attinfos)
@@ -72,8 +113,11 @@ export default {
             "sys_datafollowupid":this.data.sys_datafollowupid,
             "ownertable":this.ownertable,
             "ownerid":this.$route.query.id,
-            "type":"",
-            "content":this.form.content
+            "type":this.form.type,
+            "content":this.form.content,
+            "dataextend": {
+              "contactsid": this.form.dataextend.contactsid // 跟进对象
+            }
           }
         })
         this.tool.showMessage(res,()=>{
@@ -114,6 +158,26 @@ export default {
       this.tool.showMessage(res,()=>{
         this.queryLogs()
       })
+    },
+    onSelect(row){
+      this.selectTag = row
+      this.form.dataextend.contactsid = row.map(item=>item.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.form.dataextend.contactsid.splice(i,1)
+          break
+        }
+      }
+    },
+    onClose(){
+      this.dialogFormVisible = false
+      this.selectTag = []
+      this.form.dataextend.contactsid = []
+      this.$refs.form.resetFields()
     }
   }
 }

+ 146 - 0
src/components/normal-basic-layout/details/modules/followUp/editLogCopy.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class="inline-16">
+    <el-button icon="el-icon-edit" type="text" size="mini" @click="onShow(dialogFormVisible = true)" :disabled="status === '已结案' || status === '已失败'">编 辑</el-button>
+    <el-drawer title="编辑跟进动态" size="600px" append-to-body :visible.sync="dialogFormVisible">
+      <div class="drawer__panel">
+        <el-form ref="form" :model="form" label-position="top" label-width="80px">
+          <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}">
+            <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
+          </el-form-item>
+          <div class="flex-align-center flex-between pionter" v-for="file in data.attinfos" :key="file.index">
+            <div class="flex-align-center">
+              <img width="30" :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>
+          <upload
+            :folderid="folderid"
+            btntype="icon"
+            @onSuccess="onSuccess"
+            :hidemediastock="false"
+            :bindData=" {ownertable: 'sys_datafollowup', ownerid: data.sys_datafollowupid,usetype: 'default'}">
+          </upload>
+        </el-form>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="warning" size="small" @click="submitLog">保 存</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload/hw_obs_upload.vue'
+import previewImage from '@/components/previewImage/index.vue'
+export default {
+  props:['data','ownertable','status'],
+  components:{
+    upload,
+    previewImage
+  },
+  data () {
+    return {
+      dialogFormVisible:false,
+      form:{
+        content:''
+      },
+      folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
+      attachmentids:[]
+    }
+  },
+
+  methods:{
+    onShow () {
+      this.form = Object.assign({},this.form,this.data)
+    },
+    onSuccess(res) {
+      res.attinfos = JSON.parse(res.attinfos)
+      this.attachmentids = [...this.attachmentids,...res.attinfos.data]
+      this.$emit('onSuccess')
+    },
+
+    // 更新接口
+     submitLog () {
+      this.$refs.form.validate(async(valid)=>{
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20220930121601,
+          "content": {
+            "sys_datafollowupid":this.data.sys_datafollowupid,
+            "ownertable":this.ownertable,
+            "ownerid":this.$route.query.id,
+            "type":"",
+            "content":this.form.content
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.form.content = ''
+          this.dialogFormVisible = false
+          this.$store.dispatch('bindFileToData',{
+            "ownertable": 'sys_datafollowup',
+            "ownerid": res.data.sys_datafollowupid,
+            "usetype": 'default',
+            "attachmentids": this.attachmentids
+
+          }).then(rs=>{
+            this.attachmentids = []
+            this.dialogFormVisible = false
+            this.$emit('onSuccess')
+          })
+
+        })
+      })
+
+    },
+    checkFileType (type) {
+      let arr = ['JPG','JPEG','PNG']
+      if (arr.includes(type.toUpperCase())) {
+        return 'img'
+      } else {
+        return 'file'
+      }
+    },
+    async deleteFile (row) {
+      const res = await this.$api.requested({
+        "classname": "system.attachment.Attachment",
+        "method": "deleteFileLink",
+        "content": {
+          "linksids":[row.linksid]
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.queryLogs()
+      })
+    }
+  }
+}
+
+</script>
+<style>
+</style>
+<style scoped>
+.file__link,.file__link > a{
+  color:#999;
+  font-size: 12px;
+  display:block;
+  width: 100%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.pionter{
+  margin:6px 0;
+  padding: 10px;
+  transition: .2s linear;
+  cursor: pointer;
+  border-radius: 5px;
+}
+.pionter:hover{
+  box-shadow: 0 5px 10px rgb(0 0 0 / 10%);
+}
+</style>

+ 16 - 1
src/components/normal-basic-layout/details/modules/followUp/followUp.vue

@@ -57,6 +57,21 @@
                     <small>职位:{{i.userextend[0].position}}</small>
                   </span>
                 </div>-->
+                <div v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
+                  <span>跟进类型:{{i.type}}</span>
+                </div>
+                <div v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
+                  <span>跟进对象:</span>
+                  <span v-for="item in i.contacts" :key="item.index">
+                    <span v-if="item.rowindex === i.contacts.length">
+                      {{item.name}}
+                    </span>
+                    <span v-else>
+                       {{item.name + ','}}
+                    </span>
+
+                  </span>
+                </div>
                 <div class="follow-progress">
                   <p>{{i.content}}</p>
                   <div>
@@ -84,7 +99,7 @@
                       :bindData="{ ownertable: 'sys_datafollowup', ownerid: i.sys_datafollowupid,usetype: 'default' }"
                       @onSuccess="queryLogs">
                     </upload>
-                    <editLog :status="status" :data="i" :ownertable="ownertable" @onSuccess="queryLogs"></editLog>
+                    <editLog :status="status" ref="edits" :data="i" :ownertable="ownertable" @onSuccess="queryLogs"></editLog>
                     <el-button icon="el-icon-delete" size="mini" type="text" @click="deleteLogs(i)" :disabled="status === '已结案' || status === '已失败'">删 除</el-button>
                   </div>
                 </div>

+ 1 - 1
src/template/menber/index.vue

@@ -210,4 +210,4 @@ export default {
   background: #b5e4ff6e;
   cursor: pointer;
 }
-</style>
+</style>

+ 140 - 0
src/template/projectChange/contactsList.vue

@@ -0,0 +1,140 @@
+<template>
+  <div>
+    <el-popover
+        placement="top"
+        width="800"
+        trigger="click"
+        v-model="popoverShow"
+       >
+      <span style="margin-right: 10px">标签:</span>
+      <el-select v-model="param.content.where.tag" placeholder="请选择" size="small" clearable  @change="listData(param.content.pageNumber = 1)" class="inline-16">
+        <el-option
+            v-for="item in tagOptions"
+            :key="item.tag"
+            :label="item.tag"
+            :value="item.tag">
+        </el-option>
+      </el-select>
+      <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+      </el-input>
+      <el-button type="primary" size="small" @click="onSelect">确定</el-button>
+      <tableList ref="table" height="600px"  style="margin-top: 10px" :checkbox="true"   :layout="tablecols" :data="list" :opwidth="200" :custom="true" @selectionChange="selectionChange"
+      >
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname === 'tag'">
+            <div v-if="scope.column.data.tag_sys.length > 0 || scope.column.data.tag.length > 0">
+              <div v-for="item in scope.column.data.tag_sys" :key="item.index"  style="float: left;margin-left: 5px;margin-bottom: 5px">
+                <el-tag  color="#3874F6" size="mini" type="primary" effect="dark">
+                  <span>{{item}}</span>
+                </el-tag>
+              </div>
+              <div v-for="item in scope.column.data.tag" :key="item.index"  style="float: left;margin-left: 5px;margin-bottom: 5px">
+                <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
+                  <span>{{item}}</span>
+                </el-tag>
+              </div>
+            </div>
+            <p v-else>--</p>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+        </template>
+      </tableList>
+      <el-button slot="reference" style="float: left" @click="listData" size="small" type="primary" icon="el-icon-plus">添加</el-button>
+    </el-popover>
+  </div>
+</template>
+
+<script>
+import tableList from '@/components/table/index5';
+export default {
+  name: "contactsList",
+  props:["selects","sys_enterpriseid"],
+  components:{tableList},
+  data(){
+    return {
+      popoverShow:false,
+      contactsname:[],
+      select:[],
+      tablecols:[],
+      list:[],
+      tagOptions:[],
+      tag:'',
+      total:0,
+      tagParam:{
+        "id": "20221013104401",
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 999,
+          "sys_systemtagid":'',
+          "nocache":true,
+          "where": {
+            "condition": "",
+          }
+        }
+      },
+      param:{
+        "id": 20221111131004,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 999,
+          "sa_customersid":'',
+          "sa_projectid":'',
+          "nocache":true,
+          "where": {
+            "condition": "",
+            "tag":'',
+            "workaddress":0
+          }
+        }
+      },
+    }
+  },
+  methods:{
+    async listData(){
+      console.log(this.$route.path,'path')
+      if (this.$route.path === '/projectChangeDetail'){
+        this.param.id = 20221111131004
+        this.param.content.sa_projectid = this.$route.query.id
+        this.tagParam.content.sys_systemtagid = '3'
+        this.queryTags()
+      }else if (this.$route.path === '/customerDetail' || this.$route.path === '/PublicCustomerDetail'){
+        this.param.id = 20221022165503
+        this.param.content.sa_customersid = this.$route.query.id
+        this.tagParam.content.sys_systemtagid = '16'
+        this.queryTags()
+      }
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.$nextTick(()=>{
+        for (var i=0;i<this.selects.length;i++){
+          for (var k=0;k<this.list.length;k++){
+            if (this.selects[i] === this.list[k].contactsid){
+              this.$refs.table.$refs.table.toggleRowSelection(this.list[k])
+              break
+            }
+          }
+        }
+      })
+    },
+    selectionChange(row){
+      this.select = row
+    },
+    onSelect(){
+      this.popoverShow = false
+      this.$emit('onSelect',this.select)
+    },
+    async queryTags(){
+      const res = await this.$api.requested(this.tagParam)
+      this.tagOptions = res.data
+      console.log(this.tagOptions,'111tag')
+    }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).followUpObjectTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+</style>