Procházet zdrojové kódy

Merge branch 'orangeUrgent' into allTestUrgent

qymljy před 8 měsíci
rodič
revize
2e2d1185dd

+ 149 - 9
src/HDrpManagement/customerData/index.vue

@@ -53,7 +53,7 @@
               <div style="margin-bottom:20px">客户数据概况</div>
               <div class="data-all-wrapper">
                 <div class="data-left">
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('客户总数')">
                     <p>{{ tool.formatAmount(dataAll.total)|| 0 }}</p>
                     <p>
                       客户总数
@@ -62,13 +62,13 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('公海客户数')">
                     <p>{{ tool.formatAmount(dataAll.customerpoolqty)}}</p>
                     <p>
                       公海客户数
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('成交客户数')">
                     <p>{{ tool.formatAmount(dataAll.tradedCustomers)}}</p>
                     <p>
                       成交客户数
@@ -77,7 +77,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('参与项目客户数')">
                     <p>{{ tool.formatAmount(dataAll.participateProject) }}</p>
                     <p>
                       参与项目客户数
@@ -88,7 +88,7 @@
                   </div>
                 </div>
                 <div class="data-right">
-                  <div class="data-item" v-for="item in dataAll.data" :key="item.rowindex">
+                  <div class="data-item" v-for="item in dataAll.data" :key="item.rowindex" @click="onClick(item.value)">
                     <p>{{ tool.formatAmount(item.qty) }}</p>
                     <p>
                       {{ item.value}}
@@ -1074,8 +1074,55 @@
             </div>
           </div>
         </el-scrollbar>
+        <dataDetail ref="detailRef" :title="title" :param="paramDetail" :person="person" :departmentid="depment" :isleave="isleave" :layout="tablecols" height="calc(100vh - 250px)">
+          <template #custom>
+            <div  class="mt-10 inline-16">
+              <label class="search__label">客户类型:</label>
+              <el-select class="inline-16" v-model="paramDetail.content.where.type" size="small" placeholder="请选择" @change="selectChange" clearable>
+                <el-option
+                    v-for="item in option.typeData"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+            <div  class="mt-10 inline-16">
+              <label class="search__label">合作状态:</label>
+              <el-select  class="inline-16" v-model="paramDetail.content.where.status" size="small" placeholder="请选择" @change="selectChange" clearable>
+                <el-option
+                    v-for="item in option.status"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+            <div  class="mt-10 inline-16">
+              <label class="search__label">成交状态:</label>
+              <el-select  class="inline-16" v-model="paramDetail.content.where.tradingstatus" size="small" placeholder="请选择" @change="selectChange" clearable>
+                <el-option
+                    v-for="item in option.tradingstatus"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+            <div  class="mt-10 inline-16">
+              <label class="search__label">标签:</label>
+              <el-select  class="inline-16" v-model="paramDetail.content.where.tag" size="small" placeholder="请选择" @change="selectChange" clearable multiple>
+                <el-option
+                    v-for="item in option.tagData"
+                    :key="item.tag"
+                    :label="item.tag"
+                    :value="item.tag">
+                </el-option>
+              </el-select>
+            </div>
+          </template>
+        </dataDetail>
       </div>
-
     </template>
   </normalLayout>
 </template>
@@ -1087,9 +1134,10 @@ import borderTemp from '@/HDrpManagement/dataanalysis/components/border.vue'
 import FullScroll from '@/components/fullScroll/index.vue'
 import exportFile from '@/components/export_file/index'
 import btnSelect from "@/components/btn_select/btnSelect";
+import dataDetail from '@/template/dataDetail/index'
 export default {
   name:'customerData',
-  components:{borderTemp,pageTable,FullScroll,exportFile,btnSelect},
+  components:{borderTemp,pageTable,FullScroll,exportFile,btnSelect,dataDetail},
   data () {
     return {
       dateType:'全部',
@@ -1432,7 +1480,55 @@ export default {
       contactMapParamSalesman:[],
       projectMapParamSalesman:[],
       fllowMapParamSalesman:[],
-      unfllowMapParamSalesman:[]
+      unfllowMapParamSalesman:[],
+      paramDetail:{
+        "id": 20241008144104,
+        "content": {
+          "dataid": '',
+          "type": '',
+          "username": "",
+          "typemx": "",
+          "dateType":"",
+          "where": {
+            "isleave": "",
+            "condition": "",
+            "status": "",
+            "tradingstatus": "",
+            "type": "",
+            "tag": []
+          }
+        },
+      },
+      title:'',
+      userName:JSON.parse(window.sessionStorage.getItem('active_account')).name,
+      tablecols:'',
+      option:{
+        typeData:[],
+        customerGrade:[],
+        tagData:[],
+        status:[
+          {
+            value:'潜在'
+          },
+          {
+            value:'合作中'
+          },
+          {
+            value:'已终止'
+          }
+        ],
+        tradingstatus:[
+          {
+            value:'未成交'
+          },
+          {
+            value:'已成交'
+          },
+          {
+            value:'多次成交'
+          }
+        ]
+      },
     }
   },
   methods:{
@@ -2523,7 +2619,41 @@ export default {
     /*退出全屏*/
     backFull(){
       this.isFull = false
-    }
+    },
+    onClick(title){
+      this.title = this.dateType + '_' + title
+      this.paramDetail.content.dataid = this.person?this.person == this.userName?JSON.parse(sessionStorage.getItem('active_account')).userid:this.person:this.depment[0]
+      this.paramDetail.content.type = this.person?'0':'1'
+      this.paramDetail.content.typemx = title
+      this.paramDetail.content.where.isleave = this.isleave
+      this.paramDetail.content.dateType = this.dateType
+      this.$refs.detailRef.onShow()
+    },
+    /*标签列表*/
+    async tagList(){
+      const res = await this.$api.requested({
+        "id":20221013104401,
+        "content":{
+          "isExport":1,
+          "pageNumber":1,
+          "pageSize":100,
+          "sys_systemtagid":2,
+          "where":{
+            "condition":""
+          }
+        }
+      })
+      this.option.tagData = 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.pageNumber = 1
+      this.$refs.detailRef.listData()
+    },
   },
   async mounted () {
     this.departmentrtment()
@@ -2538,6 +2668,7 @@ export default {
     this.customerUnfllowInit(true)
     this.chart3Fun(true)
     this.getCustomerType()
+    this.tagList()
     let baseWidth = 1920
     document.querySelector('html').style.fontSize = `${100 / baseWidth}vw`
 
@@ -2546,6 +2677,12 @@ export default {
     this.customerLead = res2.data
     console.log(this.customerLead,'客户等级');
 
+    /*客户类型*/
+    let res3 = await this.$store.dispatch('optiontypeselect','customertypemx')
+    this.option.typeData = res3.data
+
+
+
     console.log(`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`);
 
     var that = this;
@@ -2557,6 +2694,9 @@ export default {
         console.log(that.windowWidth,'屏幕宽度')
       })()
     };
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).customerDetail.tablecols
   }
 }
 

+ 220 - 26
src/HDrpManagement/projectData/index.vue

@@ -55,11 +55,11 @@
               <div style="margin-bottom:20px">项目数据概况</div>
               <div class="data-all-wrapper">
                 <div class="data-left">
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('项目总数')">
                     <p>{{ tool.formatAmount(dataAll.totalqty) }}</p>
                     <p>项目总数</p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('报备项目数')">
                     <p>{{ tool.formatAmount(dataAll.reportProject)}}</p>
                     <p >
                       报备项目数
@@ -68,7 +68,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('进行中项目数')">
                     <p>{{ dataAll.startproject?tool.formatAmount(dataAll.startproject):0 }}</p>
                     <p>
                       进行中项目数
@@ -77,7 +77,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('项目成交数')">
                     <p>{{ tool.formatAmount(dataAll.dealProject) }}</p>
                     <p>
                       项目成交数
@@ -95,7 +95,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('项目失败数')">
                     <p>{{ dataAll.failedproject?tool.formatAmount(dataAll.failedproject):0 }}</p>
                     <p>
                       项目失败数
@@ -113,7 +113,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('参与项目数')">
                     <p>{{ dataAll.joinProject }}</p>
                     <p>
                       参与项目数
@@ -122,7 +122,7 @@
                       </el-tooltip>
                     </p>
                   </div>
-                  <div class="data-item">
+                  <div class="data-item" @click="onClick('参与项目成交数')">
                     <p>{{ dataAll.joinDealProject }}</p>
                     <p>
                       参与项目成交数
@@ -142,7 +142,7 @@
                   </div>
                 </div>
                 <div class="data-right">
-                  <div class="data-item" v-for="item in dataAll.projecttype" :key="item.rowindex">
+                  <div class="data-item" v-for="item in dataAll.projecttype" :key="item.rowindex" @click="onClick(item.value)">
                     <p>{{ tool.formatAmount(item.qty) }}</p>
                     <p>
                       {{ item.value }}
@@ -190,7 +190,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="typeTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {typeMapParam.content.type=0;typeMapParam.content.dataid=$event;typeTableParam.content.type=0;typeTableParam.content.dataid=$event;typeTableParam.content.depname='';typeTableParam.content.where.isleave='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()} else {typeMapParam.content.type='';typeMapParam.content.dataid='';typeTableParam.content.dataid='';typeTableParam.content.type='';typeTableParam.content.depname='';typeTableParam.content.where.isleave='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()}}"
+                      @change="$event => {if($event) {typeMapParam.content.type=0;typeMapParam.content.dataid=$event;typeTableParam.content.type=0;typeTableParam.content.dataid=$event;typeTableParam.content.depname='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()} else {typeMapParam.content.type='';typeMapParam.content.dataid='';typeTableParam.content.dataid='';typeTableParam.content.type='';typeTableParam.content.depname='';typeTableParam.content.pageNumber = 1;$refs.typeTable.listData();typeInit()}}"
                     >
                         <el-option
                             v-for="item in typeMapParamSalesman"
@@ -330,7 +330,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="gradTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {gradMapParam.content.type=0;gradMapParam.content.dataid=$event;gradTableParam.content.type=0;gradTableParam.content.dataid=$event;gradTableParam.content.depname='';gradTableParam.content.where.isleave='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()} else {gradMapParam.content.type='';gradMapParam.content.dataid='';gradTableParam.content.dataid='';gradTableParam.content.type='';gradTableParam.content.depname='';gradTableParam.content.where.isleave='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()}}"
+                      @change="$event => {if($event) {gradMapParam.content.type=0;gradMapParam.content.dataid=$event;gradTableParam.content.type=0;gradTableParam.content.dataid=$event;gradTableParam.content.depname='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()} else {gradMapParam.content.type='';gradMapParam.content.dataid='';gradTableParam.content.dataid='';gradTableParam.content.type='';gradTableParam.content.depname='';gradTableParam.content.pageNumber = 1;$refs.gradTable.listData();gradInit()}}"
                       >
                         <el-option
                             v-for="item in gradMapParamSalesman"
@@ -478,7 +478,7 @@
                   <div class="mt-10 inline-16">
                     <label  class="search__label" >业务员:</label>
                     <el-select v-model="scoreTableParam1.content.username" filterable placeholder="请选择" size="small"
-                    @change="$event => {if($event) {scoreMapParam1.content.type=0;scoreMapParam1.content.dataid=$event;scoreTableParam1.content.type=0;scoreTableParam1.content.dataid=$event;scoreTableParam1.content.depname='';scoreTableParam1.content.where.isleave='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()} else {scoreMapParam1.content.type='';gradMapParam.content.dataid='';scoreTableParam1.content.dataid='';scoreTableParam1.content.type='';scoreTableParam1.content.depname='';scoreTableParam1.content.where.isleave='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()}}"
+                    @change="$event => {if($event) {scoreMapParam1.content.type=0;scoreMapParam1.content.dataid=$event;scoreTableParam1.content.type=0;scoreTableParam1.content.dataid=$event;scoreTableParam1.content.depname='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()} else {scoreMapParam1.content.type='';gradMapParam.content.dataid='';scoreTableParam1.content.dataid='';scoreTableParam1.content.type='';scoreTableParam1.content.depname='';scoreTableParam1.content.pageNumber = 1;$refs.scoreTable.listData();scoreInit()}}"
                     >
                       <el-option
                           v-for="item in scoreMapParam1Salesman"
@@ -602,7 +602,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="addParam.content.username" filterable placeholder="请选择" size="small"
                         :popper-append-to-body="false"
-                        @change="$event => {if($event) {addParam.content.type=0;addParam.content.dataid=$event;addParam.content.depname='';addParam.content.where.isleave='';addFun()} else {addParam.content.dataid='';addParam.content.type='';addParam.content.depname='';addParam.content.where.isleave='';addFun()}}"
+                        @change="$event => {if($event) {addParam.content.type=0;addParam.content.dataid=$event;addParam.content.depname='';addFun()} else {addParam.content.dataid='';addParam.content.type='';addParam.content.depname='';addFun()}}"
                         >
                         <el-option
                             v-for="item in addParamSalesman"
@@ -662,7 +662,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="baobeiParam.content.username" filterable placeholder="请选择" size="small"
                         :popper-append-to-body="false"
-                        @change="$event => {if($event) {baobeiParam.content.type=0;baobeiParam.content.dataid=$event;baobeiParam.content.depname='';baobeiParam.content.where.isleave='';baobeiFun()} else {baobeiParam.content.dataid='';baobeiParam.content.type='';baobeiParam.content.depname='';baobeiParam.content.where.isleave='';baobeiFun()}}"
+                        @change="$event => {if($event) {baobeiParam.content.type=0;baobeiParam.content.dataid=$event;baobeiParam.content.depname='';baobeiFun()} else {baobeiParam.content.dataid='';baobeiParam.content.type='';baobeiParam.content.depname='';baobeiFun()}}"
                         >
                         <el-option
                             v-for="item in baobeiParamSalesman"
@@ -722,7 +722,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="baojiaParam.content.username" filterable placeholder="请选择" size="small"
                         :popper-append-to-body="false"
-                        @change="$event => {if($event) {baojiaParam.content.type=0;baojiaParam.content.dataid=$event;baojiaParam.content.depname='';baojiaParam.content.where.isleave='';baojiaFun()} else {baojiaParam.content.dataid='';baojiaParam.content.type='';baojiaParam.content.depname='';baojiaParam.content.where.isleave='';baojiaFun()}}"
+                        @change="$event => {if($event) {baojiaParam.content.type=0;baojiaParam.content.dataid=$event;baojiaParam.content.depname='';baojiaFun()} else {baojiaParam.content.dataid='';baojiaParam.content.type='';baojiaParam.content.depname='';baojiaFun()}}"
                         >
                         <el-option
                             v-for="item in baojiaParamSalesman"
@@ -782,7 +782,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="fllowParam.content.username" filterable placeholder="请选择" size="small"
                         :popper-append-to-body="false"
-                        @change="$event => {if($event) {fllowParam.content.type=0;fllowParam.content.dataid=$event;fllowParam.content.depname='';fllowParam.content.where.isleave='';fllowFun()} else {fllowParam.content.dataid='';fllowParam.content.type='';fllowParam.content.depname='';fllowParam.content.where.isleave='';fllowFun()}}"
+                        @change="$event => {if($event) {fllowParam.content.type=0;fllowParam.content.dataid=$event;fllowParam.content.depname='';fllowFun()} else {fllowParam.content.dataid='';fllowParam.content.type='';fllowParam.content.depname='';fllowFun()}}"
                         >
                         <el-option
                             v-for="item in fllowParamSalesman"
@@ -842,9 +842,9 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="fllowTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {fllowMapParam.content.type=0;fllowMapParam.content.dataid=$event;fllowTableParam.content.type=0;fllowTableParam.content.dataid=$event;fllowTableParam.content.depname='';fllowTableParam.content.where.isleave='';
+                      @change="$event => {if($event) {fllowMapParam.content.type=0;fllowMapParam.content.dataid=$event;fllowTableParam.content.type=0;fllowTableParam.content.dataid=$event;fllowTableParam.content.depname='';
                         fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()} else {fllowMapParam.content.type='';fllowMapParam.content.dataid='';fllowTableParam.content.dataid='';fllowTableParam.content.type='';
-                        fllowTableParam.content.depname='';fllowTableParam.content.where.isleave='';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()}}"
+                        fllowTableParam.content.depname='';fllowTableParam.content.pageNumber = 1;$refs.projectFllowTable.listData();fllowInit()}}"
                       >
                         <el-option
                             v-for="item in fllowMapParamSalesman"
@@ -982,7 +982,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="contactTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {contactMapParam.content.type=0;contactMapParam.content.dataid=$event;contactTableParam.content.type=0;contactTableParam.content.dataid=$event;contactTableParam.content.depname='';contactTableParam.content.where.isleave='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()} else {contactMapParam.content.type='';contactMapParam.content.dataid='';contactTableParam.content.dataid='';contactTableParam.content.type='';contactTableParam.content.depname='';contactTableParam.content.where.isleave='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()}}"
+                      @change="$event => {if($event) {contactMapParam.content.type=0;contactMapParam.content.dataid=$event;contactTableParam.content.type=0;contactTableParam.content.dataid=$event;contactTableParam.content.depname='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()} else {contactMapParam.content.type='';contactMapParam.content.dataid='';contactTableParam.content.dataid='';contactTableParam.content.type='';contactTableParam.content.depname='';contactTableParam.content.pageNumber = 1;$refs.projectContactTable.listData();contactInit()}}"
                       >
                         <el-option
                             v-for="item in contactMapParamSalesman"
@@ -1120,7 +1120,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="customerTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {customerMapParam.content.type=0;customerMapParam.content.dataid=$event;customerTableParam.content.type=0;customerTableParam.content.dataid=$event;customerTableParam.content.depname='';customerTableParam.content.where.isleave='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()} else {customerMapParam.content.type='';customerMapParam.content.dataid='';customerTableParam.content.dataid='';customerTableParam.content.type='';customerTableParam.content.depname='';customerTableParam.content.where.isleave='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()}}"
+                      @change="$event => {if($event) {customerMapParam.content.type=0;customerMapParam.content.dataid=$event;customerTableParam.content.type=0;customerTableParam.content.dataid=$event;customerTableParam.content.depname='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()} else {customerMapParam.content.type='';customerMapParam.content.dataid='';customerTableParam.content.dataid='';customerTableParam.content.type='';customerTableParam.content.depname='';customerTableParam.content.pageNumber = 1;$refs.projectCustomerTable.listData();customerInit()}}"
                       >
                         <el-option
                             v-for="item in customerMapParamSalesman"
@@ -1258,7 +1258,7 @@
                       <label  class="search__label" >业务员:</label>
                       <el-select v-model="scoreTableParam.content.username" filterable placeholder="请选择" size="small"
                       :popper-append-to-body="false"
-                      @change="$event => {if($event) {scoreMapParam.content.type=0;scoreMapParam.content.dataid=$event;scoreTableParam.content.type=0;scoreTableParam.content.dataid=$event;scoreTableParam.content.depname='';scoreTableParam.content.where.isleave='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()} else {scoreMapParam.content.type='';scoreMapParam.content.dataid='';scoreTableParam.content.dataid='';scoreTableParam.content.type='';scoreTableParam.content.depname='';scoreTableParam.content.where.isleave='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()}}"
+                      @change="$event => {if($event) {scoreMapParam.content.type=0;scoreMapParam.content.dataid=$event;scoreTableParam.content.type=0;scoreTableParam.content.dataid=$event;scoreTableParam.content.depname='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()} else {scoreMapParam.content.type='';scoreMapParam.content.dataid='';scoreTableParam.content.dataid='';scoreTableParam.content.type='';scoreTableParam.content.depname='';scoreTableParam.content.pageNumber = 1;$refs.projectScoreTable.listData();projectScoreInit()}}"
                       >
                         <el-option
                             v-for="item in scoreMapParamSalesman"
@@ -1551,7 +1551,7 @@
                     <label  class="search__label" >业务员:</label>
                     <el-select v-model="dateParam.content.username" filterable placeholder="请选择" size="small"
                                :popper-append-to-body="false"
-                               @change="$event => {if($event) {dateParam.content.type=0;dateParam.content.dataid=$event;dateParam.content.depname='';dateParam.content.where.isleave='';getDate()} else {dateParam.content.type='';dateParam.content.dataid='';dateParam.content.depname='';dateParam.content.where.isleave='';getDate()}}"
+                               @change="$event => {if($event) {dateParam.content.type=0;dateParam.content.dataid=$event;dateParam.content.depname='';getDate()} else {dateParam.content.type='';dateParam.content.dataid='';dateParam.content.depname='';getDate()}}"
                     >
                       <el-option
                           v-for="item in dateParamSalesman"
@@ -1645,8 +1645,81 @@
             </div>
           </div>
         </el-scrollbar>
+        <dataDetail ref="detailRef" :title="title" :param="paramDetail" :person="person" :departmentid="depment" :isleave="isleave" :layout="tablecols" height="calc(100vh - 250px)">
+          <template #custom>
+            <div class="mt-10 inline-16">
+              <label  class="search__label">项目阶段:</label>
+              <el-select class="inline-24" v-model="paramDetail.content.where.stagename" placeholder="请选择项目阶段" @change="selectChange" size="small" clearable>
+                <el-option
+                    v-for="item in option.stageList"
+                    :key="item.stagename"
+                    :label="item.stagename"
+                    :value="item.stagename">
+                </el-option>
+              </el-select>
+            </div>
+            <div class="mt-10 inline-16">
+              <label  class="search__label">报备进度:</label>
+              <el-select class="inline-24" v-model="paramDetail.content.where.reportstatus" placeholder="请选择报备进度" @change="selectChange" size="small" clearable>
+                <el-option
+                    v-for="item in option.reportstatus"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+            <div class="mt-10 inline-16">
+              <label  class="search__label">项目类型:</label>
+              <el-select class="inline-24" v-model="paramDetail.content.where.projecttype" placeholder="请选择项目类型" @change="selectChange" size="small" clearable>
+                <el-option
+                    v-for="item in projectType"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value">
+                  <span style="float: left">{{ item.value }}</span>
+                  <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
+                </el-option>
+              </el-select>
+            </div>
+            <div class="mt-10 inline-16">
+              <label  class="search__label">领域:</label>
+              <el-select class="inline-24" v-model="paramDetail.content.where.tradefield" placeholder="请选择领域" @change="selectChange" size="small" clearable>
+                <el-option
+                    v-for="item in tradefieldSelect"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value">
+                  <span style="float: left">{{ item.value }}</span>
+                  <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
+                </el-option>
+              </el-select>
+            </div>
+            <div  class="mt-10 inline-16">
+              <label class="search__label">标签:</label>
+              <el-select  class="inline-24" v-model="paramDetail.content.where.tag" size="small" placeholder="请选择" @change="selectChange" clearable multiple>
+                <el-option
+                    v-for="item in option.tagData"
+                    :key="item.tag"
+                    :label="item.tag"
+                    :value="item.tag">
+                </el-option>
+              </el-select>
+            </div>
+            <div class="mt-10 inline-16">
+              <label  class="search__label">项目状态:</label>
+              <el-select class="inline-24" v-model="paramDetail.content.where.status" placeholder="请选择项目状态" @change="selectChange" size="small" clearable>
+                <el-option
+                    v-for="item in option.statusTab"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </div>
+          </template>
+        </dataDetail>
       </div>
-
     </template>
   </normalLayout>
 </template>
@@ -1659,9 +1732,15 @@ import borderTemp from '@/HDrpManagement/dataanalysis/components/border.vue'
 import FullScroll from '@/components/fullScroll/index.vue'
 import exportFile from '@/components/export_file/index'
 import btnSelect from "@/components/btn_select/btnSelect";
+import dataDetail from '@/template/dataDetail/index'
 export default {
   name:'projectData',
-  components:{borderTemp,pageTable,selectProject,FullScroll,exportFile,btnSelect},
+  components:{borderTemp,pageTable,selectProject,FullScroll,exportFile,btnSelect,dataDetail},
+  provide () {
+    return {
+      projectType:() => this.projectType,
+    }
+  },
   data () {
     return {
       dateType:'全部',
@@ -2102,7 +2181,67 @@ export default {
       customerMapParamSalesman:[],
       scoreMapParamSalesman:[],
       unfllowMapParamSalesman:[],
-      dateParamSalesman:[]
+      dateParamSalesman:[],
+      paramDetail:{
+        "id": 20241008152904,
+        "content": {
+          "dataid": '',
+          "type": '',
+          "typemx": "",
+          "dateType":"",
+          "where": {
+            "isleave": "1",
+            "condition":"",
+            "stagename":"",
+            "projecttype":"",
+            "tradefield":"",
+            "status":"",
+            "tag":[],
+            "reportstatus":""
+          }
+        },
+      },
+      title:'',
+      userName:JSON.parse(window.sessionStorage.getItem('active_account')).name,
+      tablecols:'',
+      option:{
+        statusTab:[
+          {
+            value:"跟进中",
+            label:"跟进中"
+          },
+          {
+            value:"已成交",
+            label:"已成交"
+          },
+          {
+            value:"已失败",
+            label:"已失败"
+          },
+          {
+            value:"已结案",
+            label:"已结案"
+          }
+        ],
+        stageList:[
+
+        ],
+        tagData:[],
+        reportstatus:[
+          {
+            value:"未报备",
+            label:"未报备"
+          },
+          {
+            value:"报备中",
+            label:"报备中"
+          },
+          {
+            value:"已报备",
+            label:"已报备"
+          },
+        ],
+      },
     }
   },
   methods:{
@@ -3571,10 +3710,61 @@ export default {
     format (labels, selectedData) {
       const index = labels.length - 1;
       return labels[index];
-    }
-
+    },
+    onClick(title){
+      this.title = this.dateType + '_' + title
+      this.paramDetail.content.dataid = this.person?this.person == this.userName?JSON.parse(sessionStorage.getItem('active_account')).userid:this.person:this.depment[0]
+      this.paramDetail.content.type = this.person?'0':'1'
+      this.paramDetail.content.typemx = title
+      this.paramDetail.content.where.isleave = this.isleave
+      this.paramDetail.content.dateType = this.dateType
+      this.$refs.detailRef.onShow()
+    },
+    /*获取阶段*/
+    async stageData(){
+      const res = await this.$api.requested({
+        "id": 20221128143604,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 99,
+          "where": {
+            "condition": "",
+            "allprojecttype":"",
+            "projecttype":""
+          }
+        }
+      })
+      this.option.stageList = res.data
+    },
+    /*标签列表*/
+    async tagList(){
+      const res = await this.$api.requested({
+        "id":20221013104401,
+        "content":{
+          "isExport":1,
+          "pageNumber":1,
+          "pageSize":100,
+          "sys_systemtagid":1,
+          "where":{
+            "condition":""
+          }
+        }
+      })
+      this.option.tagData = 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.pageNumber = 1
+      this.$refs.detailRef.listData()
+    },
   },
   async mounted () {
+    this.tagList()
+    this.stageData()
     this.getProjectScoreDescript()
     this.departmentrtment()
     this.getdataAll()
@@ -3604,6 +3794,7 @@ export default {
     let res3 = await this.$store.dispatch('optiontypeselect','tradefield')
     this.tradefieldSelect = res3.data
 
+
     var that = this;
     // <!--把window.onresize事件挂在到mounted函数上-->
     window.onresize = () => {
@@ -3613,6 +3804,9 @@ export default {
         console.log(that.windowWidth,'屏幕宽度')
       })()
     };
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).projectDetail.tablecols
   }
 }
 

+ 230 - 0
src/template/dataDetail/index.vue

@@ -0,0 +1,230 @@
+<template>
+  <div>
+    <el-drawer
+        :title="title"
+        :visible.sync="dialogFormVisible"
+        size="85%"
+        direction="rtl"
+        append-to-body
+        :show-close="false"
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 0!important;">
+        <div class="inline-16">
+          <label  class="search__label" >部门:</label>
+          <el-cascader disabled class="inline-16" placement="bottom" ref="selectdep" size="small" v-model="departmentid" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}" ></el-cascader>
+        </div>
+        <div class="inline-16">
+          <label  class="search__label" >业务员:</label>
+          <el-select v-model="person" filterable placeholder="请选择" size="small" disabled >
+            <el-option
+                v-for="item in personnelList"
+                :key="item.index"
+                :label="item.name"
+                :value="item.userid">
+            </el-option>
+          </el-select>
+        </div>
+        <slot name="custom"></slot>
+        <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="clearSearchValue" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+        </el-input>
+        <table-detail :layout="layout" :data="list" :custom="true" :height="height" :width="true" style="margin-top: 10px">
+          <template v-slot:customcol="scope">
+            <div v-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>{{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>--</div>
+            </div>
+            <div v-else-if="scope.column.columnname == 'status'">
+              <span style="color:#999999" v-if="scope.column.data[[scope.column.columnname]] == '已过期'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '跟进中'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#3874f6" v-else-if="scope.column.data[[scope.column.columnname]] == '待跟进'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#333333" v-else-if="scope.column.data[[scope.column.columnname]] == '已无效'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已转化'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#3874f6" v-else-if="scope.column.data[[scope.column.columnname]] == '潜在'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '合作中'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已终止'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已失败'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '已结案'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span v-else>{{scope.column.data[[scope.column.columnname]]}}</span>
+            </div>
+            <div v-else-if="scope.column.columnname === 'reportstatus'">
+              <span style="color:#3874f6" v-if="scope.column.data[[scope.column.columnname]] == '已报备'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#52c41a" v-else-if="scope.column.data[[scope.column.columnname]] == '报备中'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#999999" v-else-if="scope.column.data[[scope.column.columnname]] == '未报备'">{{scope.column.data[[scope.column.columnname]]}}</span>
+            </div>
+            <div v-else-if="scope.column.columnname === 'projecttype'">
+              {{scope.column.data.projecttype + '-' + scope.column.data.projecttype_remarks}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'tradingstatus'">
+              <span style="color:#3874f6" v-if="scope.column.data[[scope.column.columnname]] == '未成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#fa8c16" v-else-if="scope.column.data[[scope.column.columnname]] == '已成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
+              <span style="color:#333333" v-else-if="scope.column.data[[scope.column.columnname]] == '多次成交'">{{scope.column.data[[scope.column.columnname]]}}</span>
+            </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 === 'address'">
+              <span>{{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-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 == '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 == 'scale'">
+              <span>{{scope.column.data[[scope.column.columnname]]?scope.column.data[[scope.column.columnname]] + scope.column.data.unitname:'--'}}</span>
+            </div>
+            <div v-else>
+              {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
+            </div>
+          </template>
+        </table-detail>
+        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[100, 150, 200, 250]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  props:["title","layout","param","person","departmentid","isleave","height"],
+  data(){
+    return {
+      dialogFormVisible:false,
+      list:[],
+      total:0,
+      currentPage:0,
+      deplist:[],
+      personnelList:[],
+      nowPerson:'',
+      nowDep:'',
+      depmentParam:{
+        "id": 20230620102004,
+        "content": {
+          "isleave":1
+        }
+      },
+    }
+  },
+  methods:{
+    onShow(){
+      this.dialogFormVisible = true
+      this.departmentrtment()
+      this.param.content.pageNumber = 1
+      this.listData()
+    },
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    clearSearchValue () {
+      this.$store.dispatch('clearSearchValue')
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    onClose(){
+      this.dialogFormVisible = false
+    },
+    async departmentrtment() {
+      const res = await this.$api.requested(this.depmentParam)
+      this.deplist = this.createMenu(res.data.dep)
+      this.personnelList = res.data.hr
+    },
+    createMenu (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0){
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+          }
+        }else {
+          var elNode = {
+            label: node["depname"],
+            parentid:node['parentid'],
+            parentname:node['parentname'],
+            departmentid:node["departmentid"],
+            value:node["departmentid"],
+            remarks:node["remarks"],
+            isused:node["isused"],
+            changedate:node['changedate'],
+            changeby:node['changeby'],
+            createdate:node['createdate'],
+            createby:node['createby'],
+            depno:node['depno'],
+            disabled:that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 5 - 2
src/views/clueData/index.vue

@@ -39,7 +39,7 @@
           </div>
 
           <!--  数字看板      -->
-          <digitalSigns ref="digitalSigns"></digitalSigns>
+          <digitalSigns ref="digitalSigns" :person="person" :depment="departmentid" :dateType="dateType" :isleave="isleave" :userName="userName"></digitalSigns>
           <!--  线索新增      -->
           <clueAdd ref="clueAdd" :dataid="departmentid" :scrollHeight="scrollData" :windowWidth="windowWidth" @backFull="backFull" ></clueAdd>
           <!--  线索跟进      -->
@@ -69,7 +69,7 @@ export default {
     return {
       depment:'',
       departmentid:'',
-      person:'',
+      person:'0028',
       isleave:'1',
       deplist:[],
       personnelList:[],
@@ -82,6 +82,7 @@ export default {
       scrollData:'',
       dateType:'全部',
       windowWidth: document.documentElement.clientWidth,  //实时屏幕宽度
+      userName:JSON.parse(window.sessionStorage.getItem('active_account')).name
     }
   },
   watch: {
@@ -228,12 +229,14 @@ export default {
       return arr
     },
     selectDep(val) {
+      console.log(val,'val2222')
       if (val.length === 0){
         const userid = JSON.parse(sessionStorage.getItem('active_account')).userid
         this.otherModel(userid,'0')
       }else {
         this.person = ''
         this.departmentid = val[val.length -1]
+
         this.otherModel(this.departmentid,'1',this.isleave)
       }
 

+ 108 - 17
src/views/clueData/modules/digitalSigns.vue

@@ -3,7 +3,7 @@
     <div class="div-box-new">
       <div style="font-size: 16px;color: #333333;margin-bottom: 20px">线索数据概况</div>
       <div class="div-border-new">
-        <div class="item">
+        <div class="item" @click="onClick('线索总数')">
           <p class="title">{{list.total}}</p>
           <span class="content-font-new">线索总数</span>
           <el-tooltip placement="top">
@@ -11,7 +11,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('待分配未过期线索数')">
           <p class="title">{{ list.dfp }}</p>
           <span class="content-font-new">待分配未过期线索数</span>
           <el-tooltip placement="top">
@@ -19,7 +19,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('待跟进线索数')">
           <p class="title">{{ list.dgj }}</p>
           <span class="content-font-new">待跟进线索数</span>
           <el-tooltip placement="top">
@@ -27,7 +27,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('跟进中线索数')">
           <p class="title">{{ list.gjz }}</p>
           <span class="content-font-new">跟进中线索数</span>
           <el-tooltip placement="top">
@@ -35,7 +35,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('已转化线索数')">
           <p class="title">{{ list.yzh }}</p>
           <span class="content-font-new">已转化线索数</span>
           <el-tooltip placement="top">
@@ -44,7 +44,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('已无效线索数')">
           <p class="title">{{ list.ywx }}</p>
           <span class="content-font-new">已无效线索数</span>
           <el-tooltip placement="top">
@@ -52,7 +52,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('待分配已过期线索数')">
           <p class="title">{{ list.ygq }}</p>
           <span class="content-font-new">待分配已过期线索数</span>
           <el-tooltip placement="top">
@@ -68,7 +68,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('转化客户线索数')">
           <p class="title">{{ list.covercusomers }}</p>
           <span class="content-font-new">转化客户线索数</span>
           <el-tooltip placement="top">
@@ -76,7 +76,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('转化项目线索数')">
           <p class="title">{{ list.coverproject }}</p>
           <span class="content-font-new">转化项目线索数</span>
           <el-tooltip placement="top">
@@ -92,7 +92,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('线索成交数')">
           <p class="title">{{ list.dealqty }}</p>
           <span class="content-font-new">线索成交数</span>
           <el-tooltip placement="top">
@@ -100,7 +100,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" >
           <p class="title">{{ Math.round(((list.cjl*100)*100)/100) }}%</p>
           <span class="content-font-new">线索成交率</span>
           <el-tooltip placement="top">
@@ -108,9 +108,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-
-
-        <div class="item">
+        <div class="item" @click="onClick('参与线索数')">
           <p class="title">{{ list.joinordercluesize }}</p>
           <span class="content-font-new">参与线索数</span>
           <el-tooltip placement="top">
@@ -118,7 +116,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('参与线索转化数')">
           <p class="title">{{ list.joincoverorderclue }}</p>
           <span class="content-font-new">参与线索转化数</span>
           <el-tooltip placement="top">
@@ -134,7 +132,7 @@
             <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/prompt_icon.svg" >
           </el-tooltip>
         </div>
-        <div class="item">
+        <div class="item" @click="onClick('参与线索成交数')">
           <p class="title">{{ list.joindealorderclue }}</p>
           <span class="content-font-new">参与线索成交数</span>
           <el-tooltip placement="top">
@@ -152,15 +150,71 @@
         </div>
       </div>
     </div>
+    <dataDetail ref="detailRef" :title="title" :param="paramDetail" :person="person" :departmentid="depment" :isleave="isleave" :layout="tablecols" height="calc(100vh - 230px)">
+      <template #custom>
+        <div class="mt-10 inline-16">
+          <p class="search__label">跟进状态:</p>
+          <el-select v-model="paramDetail.content.where.status" clearable class="inline-24" size="small" placeholder="请选择线索状态" @change="selectChange">
+            <el-option v-for="item in statusList" :label="item.value" :key="item.rowindex" :value="item.remarks">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10 inline-16">
+          <p class="search__label">领域:</p>
+          <el-select v-model="paramDetail.content.where.tradefield" clearable style="margin-right:10px" size="small" placeholder="请选择领域" @change="selectChange">
+            <el-option v-for="item in tradefields" :label="item.value" :key="item.rowindex" :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10 inline-16">
+          <p class="search__label">标签:</p>
+          <el-select v-model="paramDetail.content.where.tag" clearable style="margin-right:10px" size="small" placeholder="请选择标签" @change="selectChange" multiple>
+            <el-option v-for="item in tagData" :label="item.tag" :key="item.tag" :value="item.tag">
+            </el-option>
+          </el-select>
+        </div>
+      </template>
+    </dataDetail>
   </div>
 </template>
 
 <script>
+import dataDetail from '@/template/dataDetail/index'
 export default {
   name: "digitalSigns",
+  components:{dataDetail},
+  props:["person","depment","dateType","isleave","userName"],
   data(){
     return {
       list:[],
+      title:'',
+      tablecols:'',
+      status:'',
+      statusList:[],
+      tradefield:'',
+      tradefields:[],
+      tagData:[],
+      tag:'',
+      paramDetail:{
+        "id": 20241008125804,
+        "content": {
+          "dataid": '',
+          "type": '',
+          "username": "",
+          "typemx": "",
+          "pageNumber":1,
+          "pageSize":100,
+          "dateType":"",
+          "where": {
+            "isleave": "",
+            "condition": "",
+            "allocationstatus": "",
+            "tradefield": "",
+            "status": "",
+            "tag": []
+          }
+        },
+      },
       param:{
         "id": 20231014114204,
         "content": {
@@ -180,7 +234,44 @@ export default {
       this.param.content.dateType = dateType
       const res = await this.$api.requested(this.param)
       this.list = res.data
-    }
+    },
+    selectChange(){
+      this.paramDetail.content.pageNumber = 1
+      this.$refs.detailRef.listData()
+    },
+    onClick(title){
+      this.title = this.dateType + '_' + title
+      this.paramDetail.content.dataid = this.person?this.person == this.userName?JSON.parse(sessionStorage.getItem('active_account')).userid:this.person:this.depment
+      this.paramDetail.content.type = this.person?'0':'1'
+      this.paramDetail.content.typemx = title
+      this.paramDetail.content.where.isleave = this.isleave
+      this.paramDetail.content.dateType = this.dateType
+      this.$refs.detailRef.onShow()
+    },
+    /*标签列表*/
+    async tagList(){
+      const res = await this.$api.requested({
+        "id":20221013104401,
+        "content":{
+          "isExport":1,
+          "pageNumber":1,
+          "pageSize":100,
+          "sys_systemtagid":14,
+          "where":{
+            "condition":""
+          }
+        }
+      })
+      this.tagData = res.data
+    },
+  },
+  async created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).clueDetail.tablecols
+    const res2 = await this.$store.dispatch('optiontypeselect','datafollowuptype')
+    this.statusList = res2.data
+    const res3 = await this.$store.dispatch('optiontypeselect','tradefield')
+    this.tradefields = res3.data
+    this.tagList()
   }
 }
 </script>