Просмотр исходного кода

联系人数据新增数据概况

qymljy 9 месяцев назад
Родитель
Сommit
f8aa2a24c6
2 измененных файлов с 217 добавлено и 31 удалено
  1. 160 30
      src/HDrpManagement/contactData/index.vue
  2. 57 1
      src/template/dataDetail/index.vue

+ 160 - 30
src/HDrpManagement/contactData/index.vue

@@ -45,7 +45,7 @@
                   <el-option :label="$t('离职')" value="2"></el-option>
                 </el-select>
               </div>
-              <div class="inline-16 mt-10" v-if="typeSelect">
+              <div class="inline-16 mt-10" v-if="titleHeader == '关联客户数'">
                 <label class="search__label">{{ $t("客户类型") }}:</label>
                 <el-select
                     class="inline-16"
@@ -64,7 +64,7 @@
                   </el-option>
                 </el-select>
               </div>
-              <div class="mt-10 inline-16" v-if="statusSelect">
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联客户数'">
                 <label class="search__label">{{ $t("合作状态") }}:</label>
                 <el-select
                     class="inline-16"
@@ -83,7 +83,7 @@
                   </el-option>
                 </el-select>
               </div>
-              <div class="mt-10 inline-16" v-if="tradingstatusSelect">
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联客户数'">
                 <label class="search__label">{{ $t("成交状态") }}:</label>
                 <el-select
                     class="inline-16"
@@ -102,7 +102,55 @@
                   </el-option>
                 </el-select>
               </div>
-              <div class="inline-16 mt-10" v-if="tagSelect">
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联项目数'">
+                <label  class="search__label">{{$t(`项目阶段`)}}:</label>
+                <el-select class="inline-16" v-model="paramDetail.content.where.stagename" :placeholder="$t(`请选择项目阶段`)" @change="selectChange" size="small" clearable>
+                  <el-option
+                      v-for="item in option.stageList"
+                      :key="item.stagename"
+                      :label="$t(item.stagename)"
+                      :value="item.stagename">
+                  </el-option>
+                </el-select>
+              </div>
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联项目数'">
+                <label  class="search__label">{{$t(`报备进度`)}}:</label>
+                <el-select class="inline-16" v-model="paramDetail.content.where.reportstatus" :placeholder="$t(`请选择报备进度`)" @change="selectChange" size="small" clearable>
+                  <el-option
+                      v-for="item in option.reportstatus"
+                      :key="item.value"
+                      :label="$t(item.label)"
+                      :value="item.value">
+                  </el-option>
+                </el-select>
+              </div>
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联项目数'">
+                <label  class="search__label">{{$t(`项目类型`)}}:</label>
+                <el-select class="inline-16" v-model="paramDetail.content.where.projecttype" :placeholder="$t('请选择项目类型')" @change="selectChange" size="small" clearable>
+                  <el-option
+                      v-for="item in projectType"
+                      :key="item.value"
+                      :label="$t(item.value)"
+                      :value="item.value">
+                    <span style="float: left">{{ $t(item.value) }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
+                  </el-option>
+                </el-select>
+              </div>
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联项目数' || titleHeader == '关联客户成交金额'">
+                <label  class="search__label">{{$t('领域')}}:</label>
+                <el-select class="inline-16" v-model="paramDetail.content.where.tradefield" :placeholder="$t('请选择领域')" @change="selectChange" size="small" clearable>
+                  <el-option
+                      v-for="item in tradefieldSelect"
+                      :key="item.value"
+                      :label="$t(item.value)"
+                      :value="item.value">
+                    <span style="float: left">{{ $t(item.value) }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?$t(item.remarks):$t('暂无描述') }}</span>
+                  </el-option>
+                </el-select>
+              </div>
+              <div class="inline-16 mt-10" v-if="titleHeader == '联系人总数' || titleHeader == '关联项目数' || titleHeader == '关联客户数'">
                 <span class="search__label">{{$t('标签')}}:</span>
                 <el-select  v-model="tags" :placeholder="$t('请选择标签')" size="small" @change="selectChange" clearable @clear="selectChange" filterable class="inline-16" multiple>
                   <el-option
@@ -114,7 +162,18 @@
                   </el-option>
                 </el-select>
               </div>
-              <div class="inline-16" v-if="associationSelect">
+              <div class="mt-10 inline-16" v-if="titleHeader == '关联项目数'">
+                <label  class="search__label">{{$t(`项目状态`)}}:</label>
+                <el-select class="inline-24" v-model="paramDetail.content.where.status" :placeholder="$t(`请选择项目状态`)" @change="selectChange" size="small" clearable>
+                  <el-option
+                      v-for="item in option.statusTab"
+                      :key="item.value"
+                      :label="$t(item.label)"
+                      :value="item.value">
+                  </el-option>
+                </el-select>
+              </div>
+              <div class="inline-16" v-if="titleHeader == '联系人总数'">
                 <label class="search__label">{{ $t('关联') }}:</label>
                 <el-select  v-model="paramDetail.content.where.contactstype" :placeholder="$t('请选择关联')" size="small" @change="selectChange" clearable @clear="selectChange" class="inline-16">
                   <el-option :label="$t(`关联线索`)" value="关联线索"></el-option>
@@ -174,6 +233,8 @@ export default {
           "type": 1,
           "dataid": 58,
           "dateType": "本年",
+          "pageNumber":1,
+          "pageSize":100,
           "where": {
             "isleave": "",
             "condition": "",
@@ -181,7 +242,11 @@ export default {
             "contactstype": "", //关联线索,关联客户,关联项目
             "type":"",
             "status":"",
-            "tradingstatus":""
+            "tradingstatus":"",
+            "stagename":'',
+            "projecttype":'',
+            "tradefield":'',
+            "reportstatus":''
           }
         },
       },
@@ -189,18 +254,16 @@ export default {
       detailTitle:'',
       tagList:[],
       tags:[],
-      tagSelect:false,
-      associationSelect:false,
-      typeSelect:false,
-      statusSelect:false,
-      tradingstatusSelect:false,
       titleHeader:'',
+      projectType:[],
+      tradefieldSelect:[],
       option: {
         typeData: [],
         customerClassification: [],
         customerGrade: [],
         industryData: [],
         tagData: [],
+        stageList:[],
         status: [
           {
             value: "潜在",
@@ -226,6 +289,38 @@ export default {
             value: "多次成交",
           },
         ],
+        reportstatus:[
+          {
+            value:"未报备",
+            label:"未报备"
+          },
+          {
+            value:"报备中",
+            label:"报备中"
+          },
+          {
+            value:"已报备",
+            label:"已报备"
+          },
+        ],
+        statusTab:[
+          {
+            value:"跟进中",
+            label:"跟进中"
+          },
+          {
+            value:"已成交",
+            label:"已成交"
+          },
+          {
+            value:"已失败",
+            label:"已失败"
+          },
+          {
+            value:"已结案",
+            label:"已结案"
+          }
+        ],
       },
     }
   },
@@ -420,16 +515,9 @@ export default {
     },
     goDetail(data){
       this.titleHeader = data
-      this.tagSelect = false
-      this.associationSelect = false
-      this.typeSelect = false
-      this.statusSelect = false
-      this.tradingstatusSelect = false
       if (data == '联系人总数'){
         this.paramDetail.id =2025072213574102
         this.tablecols = this.tool.tabelCol(this.$route.name).contactsTotalTable.tablecols
-        this.tagSelect = true
-        this.associationSelect = true
         this.getTagList()
       }else if (data == '联系人跟进次数'){
         this.paramDetail.id = 2025072213575402
@@ -437,24 +525,24 @@ export default {
       }else if (data == '关联客户数'){
         this.paramDetail.id = 2025072213580402
         this.tablecols = this.tool.tabelCol(this.$route.name).associatedCustomersTable.tablecols
-        this.typeSelect = true
-        this.statusSelect = true
-        this.tradingstatusSelect = true
-        this.tagSelect = true
         this.getSelectData()
         this.getTagList()
       }else if (data == '关联项目数'){
         this.paramDetail.id = 2025072213581302
         this.tablecols = this.tool.tabelCol(this.$route.name).associatedProjectsTable.tablecols
+        this.stageData()
+        this.getSelectData()
+        this.getTagList()
       }else if (data == '关联客户成交金额'){
         this.paramDetail.id = 2025072213582002
         this.tablecols = this.tool.tabelCol(this.$route.name).associatedAmountTable.tablecols
+        this.getSelectData()
       }else if (data == '关联项目成交金额'){
         this.paramDetail.id = 2025072213582602
         this.tablecols = this.tool.tabelCol(this.$route.name).associatedAmountTable.tablecols
+        this.getSelectData()
       }
       this.detailTitle = this.$t(this.dateType) + '_' + this.$t(data)
-      this.titleHeader = data
       this.paramDetail.content.dataid = this.paramMain.content.dataid
       this.paramDetail.content.type = this.paramMain.content.type
       this.paramDetail.content.dateType = this.paramMain.content.dateType
@@ -463,8 +551,6 @@ export default {
     },
     /*获取联系人标签*/
     async getTagList () {
-      console.log('联系人标签')
-      console.log(this.titleHeader,'titleHeader')
       if (this.titleHeader == '联系人总数'){
         let res = await this.$api.requested({
           "id": 20220929085401,
@@ -487,10 +573,28 @@ export default {
             },
           },
         });
-        this.tagList = res.data
-
+        this.tagList = this.unique(res.data)
+      }else if (this.titleHeader == '关联项目数'){
+        const res = await this.$api.requested({
+          "id":20221013104401,
+          "content":{
+            "isExport":1,
+            "pageNumber":1,
+            "pageSize":100,
+            "sys_systemtagid":1,
+            "where":{
+              "condition":""
+            }
+          }
+        })
+        this.tagList = this.unique(res.data)
       }
     },
+    /*去重*/
+    unique(arr) {
+      const res = new Map();
+      return arr.filter((arr) => !res.has(arr.tag) && res.set(arr.tag, 1));
+    },
     selectChange(){
       this.paramDetail.content.where.tag = this.tags
       this.$refs.detailRef.listData()
@@ -514,9 +618,35 @@ export default {
     },
     /*获取自定义选项数据*/
     async getSelectData(){
-      const res = await this.$store.dispatch("optiontypeselect", "customertypemx")
-      this.option.typeData = res.data
-    }
+      if (this.titleHeader == '关联客户数'){
+        const res = await this.$store.dispatch("optiontypeselect", "customertypemx")
+        this.option.typeData = res.data
+      }else if (this.titleHeader == '关联项目数'){
+        const res = await this.$store.dispatch("optiontypeselect", "projecttype")
+        this.projectType = res.data
+        const res1 = await this.$store.dispatch("optiontypeselect", "tradefield")
+        this.tradefieldSelect = res1.data
+      }else {
+        const res1 = await this.$store.dispatch("optiontypeselect", "tradefield")
+        this.tradefieldSelect = res1.data
+      }
+    },
+    /*获取阶段*/
+    async stageData(){
+      const res = await this.$api.requested({
+        "id": 20221128143604,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 99,
+          "where": {
+            "condition": "",
+            "allprojecttype":"",
+            "projecttype":""
+          }
+        }
+      })
+      this.option.stageList = res.data
+    },
   },
   mounted() {
     this.departmentrtment()

+ 57 - 1
src/template/dataDetail/index.vue

@@ -83,6 +83,63 @@
                   {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
                 </div>
               </div>
+              <div v-else-if="titleHeader == '关联项目数'">
+                <div v-if="scope.column.columnname === 'status'">
+                  <span :style="scope.column.data[[scope.column.columnname]] == '跟进中'?'color:#3874f6':tool.getStatusColor(scope.column.data[[scope.column.columnname]])">{{$t(scope.column.data[[scope.column.columnname]])}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname === 'reportstatus'">
+                  <span :style="tool.getStatusColor(scope.column.data[[scope.column.columnname]])">{{$t(scope.column.data[[scope.column.columnname]])}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname === 'tag'">
+                  <div v-if="scope.column.data.sys_tag">
+                    <div v-for="item in scope.column.data.sys_tag" :key="item.index"  style="float: left;margin-left: 5px;margin-bottom: 5px">
+                      <el-tag  color="#3874F6" size="mini" type="primary" effect="dark">
+                        <span>{{$t(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>{{$t(item)}}</span>
+                      </el-tag>
+                    </div>
+                  </div>
+                </div>
+                <div v-else-if="scope.column.columnname === 'leader'">
+                  <span>{{scope.column.data['leader'][0]?scope.column.data['leader'][0].name:'--'}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname === 'depname'">
+                  <span>{{scope.column.data['leader'][0]?scope.column.data['leader'][0].depname:'--'}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname == 'dealamount'">
+                  <span>{{scope.column.data[[scope.column.columnname]] ?tool.formatAmount(scope.column.data[[scope.column.columnname]],2,'¥'):'--'}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname == 'signamount_due'">
+                  <span>{{scope.column.data[[scope.column.columnname]] ?tool.formatAmount(scope.column.data[[scope.column.columnname]],2,'¥'):'--'}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname == 'scale'">
+                  <span>{{scope.column.data[[scope.column.columnname]]?$t(scope.column.data[[scope.column.columnname]]) + $t(scope.column.data.unitname):'--'}}</span>
+                </div>
+                <div v-else-if="scope.column.columnname == 'address'">
+                  <span>{{scope.column.data.address || scope.column.data.province?scope.column.data.province+scope.column.data.city+scope.column.data.county+scope.column.data.address:'--'}}</span>
+                </div>
+                <div v-else>
+                  {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
+                </div>
+              </div>
+              <div v-else-if="titleHeader == '关联客户成交金额' || titleHeader == '关联项目成交金额'">
+                <div v-if="scope.column.columnname === 'nominalpressure'">
+                  {{tool.nominalPressureSet(scope.column.data.nominalpressure)}}
+                </div>
+                <div v-else-if="scope.column.columnname == 'qty' || scope.column.columnname == 'undeliqty' || scope.column.columnname == 'bookedqty' || scope.column.columnname == 'returnqty'"  >
+                  {{tool.qtyShow(scope.column.data[[scope.column.columnname]])}}
+                </div>
+                <div v-else-if="scope.column.columnname == 'defaultprice' || scope.column.columnname == 'defaultamount' || scope.column.columnname == 'price' || scope.column.columnname == 'amount' || scope.column.columnname == 'returnamount'"  >
+                  {{tool.formatAmount(scope.column.data[[scope.column.columnname]],2,'¥')}}
+                </div>
+                <div v-else>
+                  {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
+                </div>
+              </div>
             </div>
             <div v-else>
               <div v-if="scope.column.columnname === 'tag'">
@@ -199,7 +256,6 @@ export default {
     },
     async listData(){
       const res = await this.$api.requested(this.param)
-      console.log(res.data,'222222')
       this.list = res.data
       this.total = res.total
       this.currentPage = res.pageNumber