Browse Source

查重功能调整

qymljy 2 years ago
parent
commit
6077bd9d64

+ 6 - 1
src/HDrpManagement/competitor/detail/index.vue

@@ -18,6 +18,7 @@
       </div>
       <div slot="customOperation">
         <!-- 此区域提供了自定义操作按钮 -->
+        <duplicatesCompetitor v-if="tool.checkAuth($route.name,'queryDuplicates') " :data="mainData" class="inline-16" @dialogClose="dialogClose"></duplicatesCompetitor>
         <toVoid :id="$route.query.id" class="inline-16"></toVoid>
       </div>
       <div slot="slot0" >
@@ -46,6 +47,7 @@ import compete_projects from './modules/competeProjects/list'
 /*import product_Information from './modules/productInformation/list'*/
 import contacts from './modules/contacts/list'
 import address_manage from './modules/addressManage/list'
+import duplicatesCompetitor from "@/components/duplicatesData/duplicatesCompetitor";
 export default {
   name: "index",
   data(){
@@ -56,7 +58,7 @@ export default {
       flag:false,
     }
   },
-  components:{toVoid,detailed,compete_projects,contacts,address_manage},
+  components:{toVoid,detailed,compete_projects,contacts,address_manage,duplicatesCompetitor},
   methods:{
     async queryMainData(id){
       const res = await this.$api.requested({
@@ -114,6 +116,9 @@ export default {
           value:this.mainData.createdate
         }
       ]
+    },
+    dialogClose(){
+      this.$refs.details.$refs.tag.queryTag()
     }
   },
   mounted() {

+ 9 - 3
src/HDrpManagement/projectChange/modules/detail.vue

@@ -18,8 +18,9 @@
     <div slot="customOperation">
       <!-- 此区域提供了自定义操作按钮 -->
       <putPeople class="inline-16" @putSuccess="putSuccess" v-if="flagTag !== ''" :rowData="mainData" :flagTag="flagTag" :disabled="mainData.disabled"/>
-      <recovery class="inline-16" v-if="tool.checkAuth($route.name,'recovery')  && mainData.status === '已失败'" :rowData="mainData" :disabled="mainData.disabled" @onRecovery="onSuccess"></recovery>
-      <duplicatesProject class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'queryDuplicates') "></duplicatesProject>
+<!--      <recovery class="inline-16" v-if="tool.checkAuth($route.name,'recovery')  && mainData.status === '已失败'" :rowData="mainData" :disabled="mainData.disabled" @onRecovery="onSuccess"></recovery>-->
+      <projectRecovery class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'recovery')  && mainData.status === '已失败'" :disabled="mainData.disabled" @onRecovery="onSuccess"></projectRecovery>
+      <duplicatesProject class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'queryDuplicates') " :disabled="mainData.disabled" @dialogClose="dialogClose"></duplicatesProject>
       <finish class="inline-16" v-if="tool.checkAuth($route.name,'finish')  && mainData.status === '跟进中'" :disabled="mainData.disabled" @onFinish="onSuccess"></finish>
       <Del class="inline-16" :id="mainData.sa_projectid" :nameId="20221020144302" :rowData="mainData" nameKey="sa_projectids" v-if="tool.checkAuth($route.name,'toVoid') " :disabled="mainData.disabled" @deleteSuccess="deleteSuccess"/>
     </div>
@@ -89,6 +90,7 @@ import recovery from '../components/recovery'
 import contacts from './modules/contacts/index'
 import contract from './modules/contract/index'
 import duplicatesProject from "@/components/duplicatesData/duplicatesProject";
+import projectRecovery from "@/components/duplicatesCheck/projectRecovery";
 export default {
   components:{
     Quotation,
@@ -107,7 +109,8 @@ export default {
     recovery,
     contacts,
     contract,
-    duplicatesProject
+    duplicatesProject,
+    projectRecovery
   },
   data () {
     return {
@@ -537,6 +540,9 @@ export default {
           break
         }
       }
+    },
+    dialogClose(){
+      this.$refs.details.$refs.tag.queryTag()
     }
   },
   mounted () {

+ 0 - 11
src/components/duplicatesCheck/competitorCheck.vue

@@ -177,17 +177,6 @@ export default {
        this.setTag(id,resTagData)
      }
     },
-    /*查询规则*/
-    async queryRule(){
-      const res = await this.$api.requested({
-        "id": "20230410090502",
-        "content": {},
-      })
-      this.fields1 = res.data.custcheckrule.fields1
-      this.fields2 = res.data.custcheckrule.fields2
-      this.fields3 = res.data.custcheckrule.fields3
-      this.listData()
-    }
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).duplicatesCompetitorTable.tablecols

+ 9 - 3
src/components/duplicatesCheck/customerChangeCheck.vue

@@ -74,9 +74,15 @@ export default {
     async listData(){
       console.log(this.data,'data')
       this.param.content.sa_customersid = this.data.sa_customersid || 0
-      this.param.content.enterprisename = this.data.enterprisename_customer
-      this.param.content.taxno = this.data.taxno
-      this.param.content.address = this.data.address
+      this.fields1.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields2.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields3.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
       const res = await this.$api.requested(this.param)
       if (res.total > 0){
         this.list = res.data

+ 12 - 5
src/components/duplicatesCheck/projectChangeCheck.vue

@@ -73,8 +73,15 @@ export default {
     async listData(){
       console.log(this.data,'data')
       this.param.content.sa_projectid = this.data.sa_projectid || 0
-      this.param.content.projectname = this.data.projectname
-      this.param.content.address = this.data.address
+      this.fields1.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields2.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields3.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
       const res = await this.$api.requested(this.param)
       if (res.total > 0){
         this.list = res.data
@@ -195,9 +202,9 @@ export default {
         "id": "20230410090502",
         "content": {},
       })
-      this.fields1 = res.data.custcheckrule.fields1
-      this.fields2 = res.data.custcheckrule.fields2
-      this.fields3 = res.data.custcheckrule.fields3
+      this.fields1 = res.data.projectcheckrule.fields1
+      this.fields2 = res.data.projectcheckrule.fields2
+      this.fields3 = res.data.projectcheckrule.fields3
       this.listData()
     }
   },

+ 13 - 5
src/components/duplicatesCheck/projectCheck.vue

@@ -71,9 +71,17 @@ export default {
   },
   methods:{
     async listData(){
+      console.log(this.data,'项目商机data')
       this.param.content.sa_projectid = this.data.sa_projectid || 0
-      this.param.content.projectname = this.data.projectname
-      this.param.content.address = this.data.address
+      this.fields1.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields2.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields3.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
       const res = await this.$api.requested(this.param)
       if (res.total > 0){
         this.list = res.data
@@ -236,9 +244,9 @@ export default {
         "id": "20230410090502",
         "content": {},
       })
-      this.fields1 = res.data.custcheckrule.fields1
-      this.fields2 = res.data.custcheckrule.fields2
-      this.fields3 = res.data.custcheckrule.fields3
+      this.fields1 = res.data.projectcheckrule.fields1
+      this.fields2 = res.data.projectcheckrule.fields2
+      this.fields3 = res.data.projectcheckrule.fields3
       this.listData()
     }
   },

+ 230 - 0
src/components/duplicatesCheck/projectRecovery.vue

@@ -0,0 +1,230 @@
+<template>
+  <div>
+    <el-button size="mini" :type="!disabled ?'':'primary'" @click="queryRule" :disabled="!disabled ">恢 复</el-button>
+    <el-dialog title="重复项目" :visible.sync="dialogTableVisible" append-to-body width="1000px">
+      <tableLayout :layout="tablecols"   :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname === 'tag'">
+            <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>
+          <div v-else-if="scope.column.columnname === 'leader'">
+            <span>{{scope.column.data.leader?scope.column.data.leader.length !== 0 ? scope.column.data.leader[0].name:'--':'--'}}</span>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+        </template>
+      </tableLayout>
+      <div  class="container normal-panel" style="text-align:right">
+        <el-pagination
+            background
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[20, 50, 100, 200]"
+            :page-size="20"
+            :total="total">
+        </el-pagination>
+      </div>
+      <span slot="footer" class="dialog-footer" >
+        <el-button @click="dialogTableVisible = false" size="small" class="normal-btn-width">取 消</el-button>
+        <el-button  type="primary" @click="onCheck" size="small" class="normal-btn-width">确定恢复</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "customerCheck",
+  props:["data","disabled"],
+  data(){
+    return {
+      dialogTableVisible:false,
+      list:[],
+      tablecols:[],
+      total:0,
+      currentPage:0,
+      duplicates:false,
+      creatShow:false,
+      message:'该项目疑似重复,是否确认创建项目?',
+      buttonTitle:'确定创建',
+      param:{
+        "id": 20221208184202,
+        "content": {
+          "sa_projectid":"",
+          "projectname":"",
+          "address":""
+        },
+      },
+      fields1:[],
+      fields2:[],
+      fields3:[],
+    }
+  },
+  methods:{
+    async listData(){
+      this.param.content.sa_projectid = this.data.sa_projectid || 0
+      this.fields1.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields2.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      this.fields3.forEach(item=>{
+        this.param.content[item] = this.data[item] || ""
+      })
+      const res = await this.$api.requested(this.param)
+      if (res.total > 0){
+        this.list = res.data
+        this.total = res.total
+        this.currentPage = res.pageNumber
+        this.dialogTableVisible = true
+      }else {
+        if (this.creatShow){
+          this.onSubmit()
+        }else {
+          this.onRecovery()
+        }
+      }
+    },
+    onCheck(){
+      this.message = '该项目疑似重复,是否确认恢复项目?'
+      this.$confirm(this.message, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.duplicates = true
+        this.onSubmit()
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消'
+        });
+      });
+    },
+    async onSubmit(){
+      const res = await this.$api.requested({
+        "id": 20221215164002,
+        "content": {
+          "sa_projectid": this.$route.query.id
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        console.log(this.duplicates,'duplicates')
+        this.tagData(res.data.sa_projectid)
+      })
+    },
+    async setTag(id,data){
+      console.log(id,data,'设置标签')
+      const res = await this.$api.requested({
+        "id": 20220929090901,
+        "content": {
+          "ownertable":"sa_project",
+          "ownerid":this.$route.query.id,
+          "datatag":data
+        }
+      })
+      this.dialogTableVisible = false
+      this.duplicates = false
+      this.$emit('onRecovery')
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    // 获取标签数据
+    async tagData(id){
+      const res = await this.$api.requested({
+        content: {
+          ownertable: "sa_project",
+          ownerid: this.$route.query.id
+        },
+        id: 20220929085401
+      })
+      console.log(res,'获取标签')
+      console.log(this.duplicates)
+      var resTagData = []
+      resTagData = res.data.datatag
+     if (this.duplicates){
+       let flag = 0
+       for (var i=0;i<res.data.datatag.length;i++){
+         if (res.data.datatag[i] === '疑似重复'){
+           flag = 1
+           break
+         }
+       }
+       if (flag === 1){
+         this.setTag(id,resTagData)
+       }else {
+         resTagData.push('疑似重复')
+         this.setTag(id,resTagData)
+       }
+     }else {
+       for (var k=0;k<res.data.datatag.length;k++){
+         if (res.data.datatag[k] === '疑似重复'){
+           resTagData.splice(k)
+           break
+         }
+       }
+       this.setTag(id,resTagData)
+     }
+    },
+    /*查询规则*/
+    async queryRule(){
+      const res = await this.$api.requested({
+        "id": "20230410090502",
+        "content": {},
+      })
+      this.fields1 = res.data.projectcheckrule.fields1
+      this.fields2 = res.data.projectcheckrule.fields2
+      this.fields3 = res.data.projectcheckrule.fields3
+      this.listData()
+    },
+    /*恢复项目*/
+    onRecovery() {
+      this.$confirm('确定恢复当前项目吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "id": 20221215164002,
+          "content": {
+            "sa_projectid": this.$route.query.id
+          },
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit("onRecovery")
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消恢复项目'
+        });
+      });
+    }
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).duplicatesProjectTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 93 - 0
src/components/duplicatesData/duplicatesCompetitor.vue

@@ -0,0 +1,93 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="queryData">查看重复</el-button>
+    <el-dialog title="重复竞争对手" :visible.sync="dialogTableVisible" append-to-body width="1000px" @close="onClose">
+      <tableLayout :layout="tablecols"   :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true">
+        <template v-slot:customcol="scope">
+          <p >{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+        </template>
+      </tableLayout>
+      <div  class="container normal-panel" style="text-align:right">
+        <el-pagination
+            background
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[20, 50, 100, 200]"
+            :page-size="20"
+            :total="total">
+        </el-pagination>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import tableLayout from '@/components/table/index5'
+export default {
+  name: "duplicatesCustomer",
+  components:{tableLayout},
+  props:["data"],
+  data(){
+    return {
+      dialogTableVisible:false,
+      list:[],
+      tablecols:[],
+      total:0,
+      currentPage:0,
+      param:{
+        "id": 20230324132602,
+        "pageNumber": 1,
+        "pageSize": 999,
+        "content": {
+          "sa_competitorid":"",
+          "enterprisename":"",
+        },
+      },
+      fields1:[],
+      fields2:[],
+      fields3:[],
+    }
+  },
+  methods:{
+    async queryData(){
+      this.param.content.sa_competitorid = this.data.sa_competitorid || 0
+      this.param.content.enterprisename = this.data.enterprisename
+      const res = await this.$api.requested(this.param)
+      console.log(res,'res')
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+      this.dialogTableVisible = true
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.queryData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.queryData()
+    },
+    onClose(){
+      this.$emit('dialogClose')
+    }
+  },
+  mounted() {
+
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).duplicatesCompetitorTable.tablecols
+
+  }
+}
+</script>
+
+<style scoped>
+  /deep/.el-dialog__title {
+    line-height: 20px;
+    font-size: 16px;
+    color: #303133;
+  }
+</style>

+ 5 - 2
src/components/duplicatesData/duplicatesProject.vue

@@ -1,8 +1,8 @@
 <template>
   <div>
     <el-button size="mini" type="primary" @click="onShow">查看重复</el-button>
-    <el-dialog title="重复项目" :visible.sync="dialogTableVisible" append-to-body width="1000px">
-      <tableLayout :layout="tablecols"   :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true">
+    <el-dialog title="重复项目" :visible.sync="dialogTableVisible" append-to-body width="1000px" @close="onClose">
+      <tableLayout :layout="tablecols"   :data="list" :opwidth="200" height="calc(100vh - 550px)" :width="true" :custom="true" >
         <template v-slot:customcol="scope">
           <div v-if="scope.column.columnname === 'tag'">
             <div v-for="item in scope.column.data.tag_sys" :key="item.index"  style="float: left;margin-left: 5px;margin-bottom: 5px">
@@ -103,6 +103,9 @@ export default {
       this.fields2 = res.data.projectcheckrule.fields2
       this.fields3 = res.data.projectcheckrule.fields3
       this.queryData()
+    },
+    onClose(){
+      this.$emit('dialogClose')
     }
   },
   created() {