Quellcode durchsuchen

业务数据大屏

qymljy vor 1 Jahr
Ursprung
Commit
2115c176a9

+ 13 - 3
src/HManagement/serviceDataScreen/components/PieCharts.vue

@@ -52,6 +52,9 @@ export default {
           radius: 1,
           innerRadius: 0.79,
           label:{
+            style:{
+              fill:'#CFDCE5'
+            },
             /*type: 'inner',
             offset: '-50%',
             style: {
@@ -69,7 +72,8 @@ export default {
             title: {
               offsetY: -4,
               style: {
-                fontSize:'16px'
+                fontSize:'0.833vw',
+                color:'#E6F4FF'
               },
               content:this.title == '客户跟进情况' || title == '客户跟进情况'?'客户总数':'项目总数'
             },
@@ -79,7 +83,8 @@ export default {
                 whiteSpace: 'pre-wrap',
                 overflow: 'hidden',
                 textOverflow: 'ellipsis',
-                fontSize:'16px'
+                fontSize:'0.833vw',
+                color:'#FFFFFF'
               },
               customHtml: (container, view, datum, data) => {
                 const text = data[0].totalqty
@@ -88,7 +93,12 @@ export default {
             },
           },
           legend: {
-            position:'top'
+            position:'top',
+            itemName:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            },
           },
           // 添加 中心统计文本 交互
           interactions: [{ type: 'element-single-selected' },{ type: 'element-active' }],

+ 32 - 6
src/HManagement/serviceDataScreen/components/borderTemplate.vue

@@ -6,22 +6,47 @@
         <div class="title inline-left">{{$t(title)}}</div>
         <slot name="operation"></slot>
       </div>
-      <div class="detail-title justify-style-right" @click="detailClick">
-        <div>{{$t(detailTitle)}}</div>
-        <div style="margin-left: 0.260vw"> > </div>
+      <div class="justify-style-right">
+        <el-button type="text" class="detail-title" @click="detailClick">{{$t(detailTitle)}}
+          <i class="el-icon-arrow-right el-icon--right"></i>
+        </el-button>
       </div>
+<!--        <div style="margin-left: 0.260vw"> > </div>-->
+
     </div>
     <slot name="content"></slot>
   </div>
 </template>
 
 <script>
+import {Message} from "element-ui";
+
 export default {
   name: "borderTemplate",
-  props:["borderBox","title","detailTitle"],
+  props:["borderBox","title","detailTitle","systemappid","push_path"],
+  data(){
+    return {
+      /*是否拥有跳转权限*/
+      param:{
+        "id": 20241029155004,
+        "content": {
+          "systemappid":"",
+          "userid":JSON.parse(sessionStorage.getItem('active_account')).userid
+        }
+      },
+      dialogVisible:false
+    }
+  },
   methods:{
-    detailClick(){
-      this.$emit('detailClick')
+    async detailClick(){
+      this.param.content.systemappid = this.systemappid
+      const res = await this.$api.requested(this.param)
+      console.log(res.data,'权限结果')
+      if (res.data){
+        this.$router.push(this.push_path)
+      }else {
+        this.$emit('dialog')
+      }
     }
   },
   mounted() {
@@ -45,6 +70,7 @@ export default {
   .justify-style-right{
     display: flex;
     justify-content: right;
+    margin-top: -0.421vw;
   }
   .justify-style{
     display: flex;

+ 0 - 1
src/HManagement/serviceDataScreen/components/datePicker.vue

@@ -8,7 +8,6 @@
         :format="format"
         :append-to-body="false"
         :clearable="false"
-        style="z-index: 999"
         placeholder="选择日期">
     </el-date-picker>
   </div>

+ 129 - 0
src/HManagement/serviceDataScreen/components/lineCharts.vue

@@ -0,0 +1,129 @@
+<template>
+  <div :style="{'width':width,'height':height }">
+    <div ref="lineRef" :style="{'width':wChart,'height':hChart }"></div>
+  </div>
+</template>
+
+<script>
+import {G2, Column, Line} from "@antv/g2plot";
+
+const G = G2.getEngine('canvas');
+const seriesKey = 'series';
+const valueKey = 'value';
+const meta = {
+  date: {
+    alias: '日期',
+  },
+  oldtotalqty: {
+    alias: '去年同期报价总数量',
+  },
+  oldproqty: {
+    alias: '去年同期项目报价数量',
+  },
+  newproqty:{
+    alias: '项目报价数量'
+  },
+  newtotalqty:{
+    alias: '报价总数量'
+  },
+  oldcusqty:{
+    alias: '去年同期客户报价数量'
+  },
+  newcusqty:{
+    alias: '客户报价数量'
+  }
+};
+export default {
+  name: "columnCharts",
+  props:["width",'height','wChart','hChart'],
+  data(){
+    return {
+      param:{
+        "id": 20231011154704,
+        "content": {
+          "type": 0,//0人员 1部门
+          "dataid": '',
+          "enddate": new Date().getFullYear() + '-' +  (new Date().getMonth() + 1) + '-' + new Date().getDate(), //分析日期
+          "where":{
+            "isleave":'1'
+          }
+        }
+      },
+      typeMap:null,
+      proqty: '',//项目报价总数
+      proamount: '',//项目报价金额
+      cusqty: '',//客户报价总数
+      totalamount: '',//报价总金额
+      totalqty: '',//报价总数量
+      cusamount: '',//客户报价金额,
+      mapData:[]
+    }
+  },
+  methods:{
+    async lineInit(init){
+      let res = await this.$api.requested(this.param)
+      this.mapData = res.data
+      if (init) {
+        this.typeMap = new Line(this.$refs.lineRef,{
+          data:this.processData(this.mapData, ['newtotalqty', 'newcusqty','newproqty','oldtotalqty','oldcusqty','oldproqty']),
+          xField: 'date',
+          yField: valueKey,
+          seriesField: seriesKey,
+          smooth: true,
+          xAxis:{
+            label:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            }
+          },
+          yAxis:{
+            label:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            }
+          },
+          legend:{
+            itemName:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            },
+          }
+          // label:{
+          //   // 可手动配置 label 数据标签位置
+          //   position: 'top', // 'top', 'bottom', 'middle',
+          //   // 配置样式
+          //   layout: [],
+          // }
+          /*label: {
+            // 可手动配置 label 数据标签位置
+            position: 'top', // 'top', 'bottom', 'middle',
+            // 配置样式
+            layout: [{ type: 'hide-overlap' }],
+           /!* formatter: (item) => item.value + '%',*!/
+          },*/
+        });
+        this.typeMap.render()
+      }else {
+        this.typeMap.changeData(this.processData(this.mapData, ['newtotalqty', 'newcusqty','newproqty','oldtotalqty','oldcusqty','oldproqty']))
+      }
+    },
+    processData(data, yFields) {
+      const result = [];
+      data.forEach((d) => {
+        yFields.forEach((yField) => {
+          const name = meta?.[yField]?.alias || yField;
+          result.push({ ...d, date: d.date, [seriesKey]: name, [valueKey]: d[yField] });
+        });
+      });
+      return result;
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 50 - 16
src/HManagement/serviceDataScreen/components/profileTemplate.vue

@@ -3,7 +3,38 @@
     <div class="box-margin">
       <div class="box-content" v-for="item in dataProfile" :key="item.index">
         <div class="justify">
-          <div>
+          <el-popover
+              v-if="item.tips"
+              :append-to-body="false"
+              placement="top-start"
+              width="200"
+              trigger="hover"
+              >
+            <template slot="default">
+              <span v-if="item.title == '已转化线索数'">
+                {{$t('①已转化线索数:销售线索应用中,已分配给业务员,已转化状态的线索数量。')}}<br/>
+                {{$t('②一条线索可进行两次转化:转化客户、转化项目,因此,已转化线索数≠转化客户线索数+转化项目线索数。')}}
+              </span>
+              <span v-else>
+                {{item.tips}}
+              </span>
+            </template>
+            <div slot="reference">
+              <div class="value-style">
+              <span v-if="item.title == '报价总金额' || item.title == '客户报价金额' || item.title == '项目报价金额'">
+                <span v-if="item.value > 10000" >
+                  {{tool.formatAmount(tool.unitConversion(item.value,10000),2)}}<span style="font-size: 0.729vw">{{$t('万元')}}</span>
+                </span>
+                <span v-else>
+                  {{tool.formatAmount(item.value,2)}}<span style="font-size: 0.729vw">{{$t(' 元')}}</span>
+                </span>
+              </span>
+                <span v-else>{{item.value}}</span>
+              </div>
+              <div class="title-style">{{item.title}}</div>
+            </div>
+          </el-popover>
+          <div v-else>
             <div class="value-style">
               <span v-if="item.title == '报价总金额' || item.title == '客户报价金额' || item.title == '项目报价金额'">
                 <span v-if="item.value > 10000" >
@@ -17,27 +48,30 @@
             </div>
             <div class="title-style">{{item.title}}</div>
           </div>
-<!--          <div style="margin-right: 0.252vw;margin-top: 0.1vw" v-if="item.tips">-->
-<!--            <el-tooltip placement="top" >-->
-<!--              <div slot="content">-->
-<!--              <span v-if="item.title == '已转化线索数'">-->
-<!--                {{$t('①已转化线索数:销售线索应用中,已分配给业务员,已转化状态的线索数量。')}}<br/>-->
-<!--                {{$t('②一条线索可进行两次转化:转化客户、转化项目,因此,已转化线索数≠转化客户线索数+转化项目线索数。')}}-->
-<!--              </span>-->
-<!--                <span v-else>-->
-<!--                {{item.tips}}-->
-<!--              </span>-->
-<!--              </div>-->
-<!--              <img style="vertical-align: middle" width="14px" height="14px" src="../../../assets/icons/Tips.svg" >-->
-<!--            </el-tooltip>-->
-<!--          </div>-->
         </div>
       </div>
     </div>
     <div class="box-margin" v-if="profileType && profileType.length > 0">
       <div class="box-content" v-for="k in profileType" :key="k.index">
         <div class="justify">
-          <div>
+          <el-popover
+              v-if="k.value == '无分类客户'"
+              :append-to-body="false"
+              placement="top-start"
+              width="200"
+              trigger="hover"
+          >
+            <template slot="default">
+              <span v-if="k.value == '无分类客户'">
+               {{$t('无分类客户数:统计没有客户分类信息的客户数量')}}<br/>
+              </span>
+            </template>
+            <div slot="reference">
+              <div class="value-style">{{k.qty}}</div>
+              <div class="title-style">{{k.value}}</div>
+            </div>
+          </el-popover>
+          <div v-else>
             <div class="value-style">{{k.qty}}</div>
             <div class="title-style">{{k.value}}</div>
           </div>

+ 51 - 7
src/HManagement/serviceDataScreen/index.vue

@@ -35,18 +35,18 @@
       <div>
         <div class="justify-style">
           <!-- 业务员账户 -->
-          <salesmanAccount ref="accountRef"></salesmanAccount>
+          <salesmanAccount ref="accountRef" @dialog="detailClick"></salesmanAccount>
           <!-- 作业数据 -->
-          <jobData ref="jobRef"></jobData>
+          <jobData ref="jobRef" @dialog="detailClick"></jobData>
         </div>
         <div class="inline-top-20">
           <!-- 销售面板 -->
-          <salesPanel style="z-index: 99;position: absolute" ref="panelRef"></salesPanel>
+          <salesPanel  ref="panelRef" style="position: relative;z-index: 900"></salesPanel>
         </div>
       </div>
-      <div style="z-index: 10">
+      <div>
         <!-- 销售漏斗 -->
-        <salesFunnel ref="funnelRef"></salesFunnel>
+        <salesFunnel ref="funnelRef" style="position: relative;z-index: 900"></salesFunnel>
         <div class="justify-style inline-top-20">
           <!-- 营销费用 -->
           <marketingExpenses ref="expensesRef"></marketingExpenses>
@@ -62,6 +62,30 @@
       </div>
     </div>
     <fullScreen ref="fullRef" class="inline-16" domId="fullScreen" style="visibility: hidden" @backFull="backFull"></fullScreen>
+    <el-dialog
+        title="提示"
+        :visible.sync="dialogVisible"
+        :showClose="false"
+        width="500px"
+    >
+      <span>暂无权限,请开通权限</span>
+      <span slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+        </span>
+    </el-dialog>
+    <el-dialog
+        :title="$t('提示')"
+        style="margin-top: calc(28vh)"
+        :visible.sync="dialogVisible"
+        width="500px"
+        :before-close="handleClose"
+    >
+      <span>{{$t('当前密码为初始密码,请前往修改密码')}}</span>
+      <span slot="footer" class="dialog-footer">
+    <el-button size="small" @click="onClose">{{$t('取 消')}}</el-button>
+    <el-button size="small" type="primary" @click="goPassword">{{$t('确 定')}}</el-button>
+  </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -97,7 +121,9 @@ export default {
         }
       },
       windowWidth: document.documentElement.clientWidth,  //实时屏幕宽度
-      windowHeight: document.documentElement.clientHeight
+      windowHeight: document.documentElement.clientHeight,
+      dialogVisible:false,
+      dialogPaw:false
     }
   },
   mounted() {
@@ -163,6 +189,15 @@ export default {
     },
     backFull(){
       this.$router.push('/message')
+      if (JSON.parse(sessionStorage.getItem('active_password')) == '1' && JSON.parse(sessionStorage.getItem('password')) != '1' && JSON.parse(sessionStorage.getItem('active_account')).usertype != 0 && JSON.parse(sessionStorage.getItem('active_account')).usertype != 1){
+        this.dialogPaw = true
+      }
+    },
+    goPassword(){
+      this.dialogPaw = false
+      this.$router.push('/user_center')
+      sessionStorage.setItem('password','1')
+      sessionStorage.setItem('isPassword','1')
     },
     leaveChange(){
       const type = this.depment?'1':'0'
@@ -301,7 +336,8 @@ export default {
       this.$refs.exStatisticsRef.param.content.dataid = id
       this.$refs.exStatisticsRef.param.content.type = this.departmentid !== ''?1:0
       this.$refs.exStatisticsRef.param.content.where.isleave = this.isleave
-      this.$refs.exStatisticsRef.typeInit(true)
+      this.$refs.exStatisticsRef.cusInit(true)
+      this.$refs.exStatisticsRef.proInit(true)
 
       /*应收账款*/
       this.$refs.receivableRef.param.content.dataid = id
@@ -325,6 +361,14 @@ export default {
       this.$refs.profileRef.$refs.proTypRef.typeInit(true,'项目类型分析')
       this.$refs.profileRef.$refs.proFowRef.typeInit(true,'项目跟进情况')
       this.$refs.profileRef.$refs.cusFowRef.typeInit(true,'客户跟进情况')
+      this.$refs.profileRef.$refs.analyzeRef.param.content.dataid = id
+      this.$refs.profileRef.$refs.analyzeRef.param.content.type = this.departmentid !== ''?1:0
+      this.$refs.profileRef.$refs.analyzeRef.param.content.where.isleave = this.isleave
+      this.$refs.profileRef.$refs.analyzeDateRef.value = new Date().getFullYear() + '-' +  (new Date().getMonth() + 1) + '-' + new Date().getDate()
+      this.$refs.profileRef.$refs.analyzeRef.lineInit(true)
+    },
+    detailClick(){
+      this.dialogVisible = true
     }
   },
   created() {

+ 1 - 1
src/HManagement/serviceDataScreen/modules/accountsReceivable.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 31.250vw;height: 15.104vw;" title="应收账款" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 31.250vw;height: 15.104vw;" title="应收账款" detailTitle="查看详情" @dialog="$emit('dialog')"  systemappid="286" push_path="/accountsReceivable">
       <template slot="operation">
         <div style="padding-left: 0.521vw">
           <el-radio v-model="param.content.querytype" label="2" @input="listData">按业务员</el-radio>

+ 17 - 4
src/HManagement/serviceDataScreen/modules/dataProfile.vue

@@ -1,6 +1,8 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 31.250vw;height: 32.813vw;" title="数据概况" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 31.250vw;height: 32.813vw;" title="数据概况" detailTitle="查看详情" @dialog="$emit('dialog')"
+                    :systemappid="typeSelect == '线索'?'278':typeSelect == '客户'?'276':typeSelect == '项目'?'275':'277'"
+                    :push_path="typeSelect == '线索'?'/clueData':typeSelect == '客户'?'/customerData':typeSelect == '项目'?'/projectData':'/salesData'">
       <template slot="content">
         <div class="justify-content">
           <div class="justify-content-left">
@@ -36,7 +38,7 @@
           <div class="title_font">
             {{$t(`数据图例`)}}
           </div>
-          <div class="title_right">
+          <div class="title_right" v-show="typeSelect !== '报价'">
             <el-select v-model="dateType"  class="inline-16" size="small" @change="dateTypeChange"  :popper-append-to-body="false">
               <el-option :label="$t('全部')" value="全部"></el-option>
               <el-option :label="$t('本年')" value="本年"></el-option>
@@ -50,12 +52,18 @@
               <datePicker ref="endRef" type="date" @selectTime="endDateChange" format="yyyy-MM" value_format="yyyy-MM"></datePicker>
             </div>
           </div>
+          <div class="title_right" v-show="typeSelect == '报价'">
+            <datePicker ref="analyzeDateRef" type="date" @selectTime="analyzeChange" format="yyyy-MM-dd" value_format="yyyy-MM-dd"></datePicker>
+          </div>
         </div>
-        <div style="display:flex;justify-content: left;margin-top: 1.042vw">
+        <div v-show="typeSelect !== '报价'" style="display:flex;justify-content: left;margin-top: 1.042vw">
           <PieCharts ref="proTypRef" height="10.844vw" width="12.125vw" h-chart="9.633vw" w-chart="10.125vw" title="项目类型分析"></PieCharts>
           <PieCharts ref="proFowRef" height="10.844vw" width="11.125vw" h-chart="9.633vw" w-chart="10.125vw" title="项目跟进情况"></PieCharts>
           <PieCharts ref="cusFowRef" height="10.844vw" width="11.125vw" h-chart="9.633vw" w-chart="10.125vw" title="客户跟进情况"></PieCharts>
         </div>
+        <div v-show="typeSelect == '报价'" style="margin-top: 1.042vw">
+          <LineCharts ref="analyzeRef" height="10.844vw" width="29.125vw" h-chart="10.633vw" w-chart="29.125vw"></LineCharts>
+        </div>
       </template>
     </borderTemplate>
   </div>
@@ -66,9 +74,10 @@ import borderTemplate from '../components/borderTemplate'
 import profileTemplate from "../components/profileTemplate";
 import datePicker from "../components/datePicker";
 import PieCharts from "../components/PieCharts";
+import LineCharts from '../components/lineCharts'
 export default {
   name: "dataProfile",
-  components:{borderTemplate,profileTemplate,datePicker,PieCharts},
+  components:{borderTemplate,profileTemplate,datePicker,PieCharts,LineCharts},
   data(){
     return {
       typeSelect:'线索',
@@ -364,6 +373,10 @@ export default {
       this.$refs.proFowRef.typeInit(null,'项目跟进情况')
       this.$refs.cusFowRef.param.content.where.begdate = val
       this.$refs.cusFowRef.typeInit(null,'客户跟进情况')
+    },
+    analyzeChange(val){
+      this.$refs.analyzeRef.param.content.enddate = val
+      this.$refs.analyzeRef.lineInit(false)
     }
   }
 }

+ 5 - 2
src/HManagement/serviceDataScreen/modules/jobData.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 15.208vw;height: 12.500vw;" title="作业数据" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 15.208vw;height: 12.500vw;" title="作业数据" detailTitle="查看详情" @dialog="detailClick" systemappid="42" push_path="/dataanalysis">
       <template slot="content">
         <div style="display: flex;justify-content: right">
           <el-select v-model="dateType"  class="inline-16" size="small"  @change="dateTypeChange" :popper-append-to-body="false">
@@ -103,7 +103,10 @@ export default {
         this.list.xsgj = this.listNew.bnxsgj
         this.list.xsxz = this.listNew.bnxsxz
       }
-    }
+    },
+    detailClick(){
+      this.$emit('dialog')
+    },
   }
 }
 </script>

+ 122 - 28
src/HManagement/serviceDataScreen/modules/marketingExpenseStatistics.vue

@@ -1,17 +1,18 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 17.083vw;height: 12.500vw;" title="营销费用统计" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 17.083vw;height: 12.500vw;" title="营销费用统计" detailTitle="查看详情" @dialog="$emit('dialog')" systemappid="290" push_path="/salerpriceData">
       <template slot="content">
         <div>
           <div style="display: flex;justify-content: right">
-            <el-button  type="text" class="inline-16" @click="btnTitle == '客户'?btnTitle = '项目':btnTitle ='客户';typeInit(false)">切换{{btnTitle}}</el-button>
-            <el-select v-model="param.content.dateType"  class="inline-16" size="small" @change="typeInit(false)" :popper-append-to-body="false">
+            <el-button  type="text" class="inline-16" @click="onChange">切换{{btnTitle}}</el-button>
+            <el-select v-model="param.content.dateType"  class="inline-16" size="small" @change="onChange" :popper-append-to-body="false">
               <el-option :label="$t('全部')" value="全部"></el-option>
               <el-option :label="$t('本年')" value="本年"></el-option>
             </el-select>
           </div>
-          <div style="width: 15.125vw;height: 7.233vw;margin-top: 0.464vw;position: relative" ref="expenseRefChar">
-<!--            <el-button style="position: absolute;left: 90px;top: 90px" type="text" size="mini">切换{{btnTitle}}</el-button>-->
+          <div v-show="btnTitle == '项目'" style="width: 16.525vw;height: 7.533vw;margin-top: 0.464vw;position: relative" ref="customerRefChar">
+          </div>
+          <div v-show="btnTitle == '客户'" style="width: 16.525vw;height: 7.533vw;margin-top: 0.464vw;position: relative" ref="projectRefChar">
           </div>
         </div>
       </template>
@@ -41,22 +42,99 @@ export default {
           }
         }
       },
-      mapData:'',
-      typeMap:''
+      cusData:'',
+      proData:'',
+      cusMap:'',
+      proMap:''
     }
   },
   methods:{
-    async typeInit(init){
-      if (this.btnTitle == '客户'){
-        this.param.id = 2024062915152702
-        this.param.content.ownertable = 'sa_project'
-      }else if (this.btnTitle == '项目'){
-        this.param.id = 2024062615133802
-        this.param.content.ownertable = 'sa_customers'
+    async cusInit(init){
+      this.param.id = 2024062615133802
+      this.param.content.ownertable = 'sa_customers'
+      let res = await this.$api.requested(this.param)
+      // this.mapData = res.data[0].ratio
+      this.cusData = res.data[0].ratio.map(item=>{
+        return {
+          "totalamount": this.totalamount,//值
+          "type": item.type,
+          "rowindex": item.rowindex,
+          "ratio": Math.round(((item.ratio * 100)*100)/100), //比例
+          "value":item.value
+        }
+      })
+      console.log('客户类型数据',this.cusData)
+      if (init) {
+        this.cusMap = new Pie(this.$refs.customerRefChar, {
+          appendPadding: 2,
+          data:this.cusData,
+          angleField: 'ratio',
+          colorField: 'type',
+          radius: 1,
+          innerRadius: 0.79,
+          label:{
+            style:{
+              fill:'#CFDCE5'
+            },
+            /*type: 'inner',
+            offset: '-50%',
+            style: {
+              textAlign: 'center',
+            },
+            autoRotate: false,*/
+            formatter: (datum) => `${datum.ratio}%`
+          },
+          tooltip:{
+            formatter: (datum) => {
+              return { name: datum.key, value: datum.ratio + '%' };
+            },
+          },
+          statistic: {
+            title: {
+              offsetY: -4,
+              style: {
+                fontSize:'0.833vw',
+                color:'#E6F4FF'
+              },
+              content:'客户营销费用'
+            },
+            content: {
+              offsetY: 4,
+              style: {
+                whiteSpace: 'pre-wrap',
+                overflow: 'hidden',
+                textOverflow: 'ellipsis',
+                fontSize:'0.833vw',
+                color:'#FFFFFF'
+              },
+              customHtml: (container, view, datum, data) => {
+                const text = this.totalamount = '¥'+this.tool.formatAmount(res.data[0].ratio[0].total/10000,2)+'万'
+                return text
+              },
+            },
+          },
+          legend: {
+            position:'right',
+            itemName:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            },
+          },
+          // 添加 中心统计文本 交互
+          interactions: [{ type: 'element-single-selected' },{ type: 'element-active' }],
+        });
+        this.cusMap.render();
+      } else {
+        this.cusMap.changeData(this.cusData)
       }
+    },
+    async proInit(init){
+      this.param.id = 2024062915152702
+      this.param.content.ownertable = 'sa_project'
       let res = await this.$api.requested(this.param)
       // this.mapData = res.data[0].ratio
-      this.mapData = res.data[0].ratio.map(item=>{
+      this.proData = res.data[0].ratio.map(item=>{
         return {
           "totalamount": this.totalamount,//值
           "type": item.type,
@@ -65,18 +143,19 @@ export default {
           "value":item.value
         }
       })
-      console.log('项目类型数据',this.mapData)
-      let content = this.btnTitle == '项目'?'客户营销费用':'项目营销费用'
+      console.log('项目类型数据',this.proData)
       if (init) {
-        console.log('11111ce')
-        this.typeMap = new Pie(this.$refs.expenseRefChar, {
-          appendPadding: 10,
-          data:this.mapData,
+        this.proMap = new Pie(this.$refs.projectRefChar, {
+          appendPadding: 2,
+          data:this.proData,
           angleField: 'ratio',
           colorField: 'type',
           radius: 1,
           innerRadius: 0.79,
           label:{
+            style:{
+              fill:'#CFDCE5'
+            },
             /*type: 'inner',
             offset: '-50%',
             style: {
@@ -94,9 +173,10 @@ export default {
             title: {
               offsetY: -4,
               style: {
-                fontSize:'16px'
+                fontSize:'0.833vw',
+                color:'#E6F4FF'
               },
-              content:content
+              content:'项目营销费用'
             },
             content: {
               offsetY: 4,
@@ -104,24 +184,38 @@ export default {
                 whiteSpace: 'pre-wrap',
                 overflow: 'hidden',
                 textOverflow: 'ellipsis',
-                fontSize:'16px'
+                fontSize:'0.833vw',
+                color:'#FFFFFF'
               },
               customHtml: (container, view, datum, data) => {
-                const text = res.data[0].ratio[0].total
+                const text = this.totalamount = '¥'+this.tool.formatAmount(res.data[0].ratio[0].total/10000,2)+'万'
                 return text
               },
             },
           },
           legend: {
             position:'right',
-            top:'20px'
+            itemName:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            },
           },
           // 添加 中心统计文本 交互
           interactions: [{ type: 'element-single-selected' },{ type: 'element-active' }],
         });
-        this.typeMap.render();
+        this.proMap.render();
       } else {
-        this.typeMap.changeData(this.mapData)
+        this.proMap.changeData(this.proData)
+      }
+    },
+    onChange(){
+      if (this.btnTitle == '客户'){
+        this.btnTitle = '项目'
+        this.cusInit(false)
+      }else {
+        this.btnTitle = '客户'
+        this.proInit(false)
       }
     }
   }

+ 1 - 1
src/HManagement/serviceDataScreen/modules/marketingExpenses.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 15.104vw;height: 12.500vw;" title="营销费用" detailTitle="金额明细">
+    <borderTemplate borderBox="width: 15.104vw;height: 12.500vw;" title="营销费用" detailTitle="金额明细" @dialog="$emit('dialog')" systemappid="290" push_path="/salerpriceData">
       <template slot="content">
         <div class="money-style">{{tool.formatAmount(amount,2)}}</div>
         <div class="title-style">{{$t(`营销费用总金额(元)`)}}</div>

+ 1 - 1
src/HManagement/serviceDataScreen/modules/salesFunnel.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 33.333vw;height: 35.417vw;" title="销售漏斗" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 33.333vw;height: 35.417vw;" title="销售漏斗"  detailTitle="查看详情" @dialog="$emit('dialog')" systemappid="260" push_path="/salesfunnel">
       <template slot="content">
         <div style="display: flex;justify-content: space-between">
           <div>

+ 36 - 14
src/HManagement/serviceDataScreen/modules/salesPanel.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 31.250vw;height: 35.417vw;" title="销售面板" detailTitle="查看详情">
+    <borderTemplate borderBox="width: 31.250vw;height: 35.417vw;" title="销售面板" detailTitle="查看详情" @dialog="$emit('dialog')" systemappid="277" push_path="/salesData">
       <template slot="content">
         <div class="justify-content">
           <div class="justify-content-left">
@@ -156,7 +156,6 @@ export default {
       const res = await this.$api.requested(this.param)
       this.list = res.data
       this.percentage = Math.round(this.list.wcamount * 100 * 100) / 100;
-      console.log(this.list,'销售看板')
       if (init){
         this.renderPie()
       }else {
@@ -239,29 +238,45 @@ export default {
         data: [this.saledateRows,this.tbzzl],
         xField: 'date',
         yField: ['value','value'],
+        xAxis:{
+          label:{
+            style:{
+              fill:'#CFDCE5'
+            }
+          }
+        },
+        yAxis:{
+          value:{
+            label:{
+              style:{
+                fill:'#CFDCE5'
+              }
+            }
+          }
+        },
         geometryOptions: [
           {
             geometry: 'column',
             isGroup: true,
             seriesField: 'name',
             color:['#3685FC','#6CD2A1'],
-            label:{
-              position:top,
-              formatter: (datum) =>{
-                return '¥' + this.tool.formatAmount(datum.value,2)
-              }
-            }
+            // label:{
+            //   position:top,
+            //   formatter: (datum) =>{
+            //     return '¥' + this.tool.formatAmount(datum.value,2)
+            //   }
+            // }
           },
           {
             geometry: 'line',
             seriesField: 'name',
             color: '#ECB937',
             smooth: true,
-            label:{
-              formatter: (datum) =>{
-                return  datum.value + '%'
-              }
-            }
+            // label:{
+            //   formatter: (datum) =>{
+            //     return  datum.value + '%'
+            //   }
+            // }
           },
         ],
         tooltip: {
@@ -270,7 +285,14 @@ export default {
               name:datum.name,
               value:datum.name != '同比增长率'?'¥'+this.tool.formatAmount(datum.value,2):datum.value + '%'
             }
-          }
+          },
+        },
+        legend:{
+          itemName:{
+            style:{
+              fill:'#CFDCE5'
+            }
+          },
         }
       });
       this.chartCustomerLine.render();

+ 2 - 2
src/HManagement/serviceDataScreen/modules/salesmanAccount.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <borderTemplate borderBox="width: 15.104vw;height: 12.500vw;" title="业务员账户" detailTitle="金额明细" @detailClick="detailClick">
+    <borderTemplate borderBox="width: 15.104vw;height: 12.500vw;" title="业务员账户" detailTitle="金额明细" @dialog="detailClick" systemappid="280" push_path="/salerAccount">
       <template slot="content">
         <div class="money-style">{{tool.formatAmount(balance,2)}}</div>
         <div class="title-style">{{$t(`提成账户(元)`)}}</div>
@@ -42,7 +42,7 @@ export default {
       this.expectedreward = res.data.expectedreward
     },
     detailClick(){
-      // this.drawerShow = true
+      this.$emit('dialog')
     },
     onClose(){
       this.drawerShow = false

+ 0 - 1
src/components/newLayout/index.vue

@@ -109,7 +109,6 @@ export default {
   mounted() {
 
     if (JSON.parse(sessionStorage.getItem('active_password')) == '1' && JSON.parse(sessionStorage.getItem('password')) != '1' && JSON.parse(sessionStorage.getItem('active_account')).usertype != 0 && JSON.parse(sessionStorage.getItem('active_account')).usertype != 1){
-      console.log('3333执行')
       this.dialogVisible = true
     }
     /*this.debouned()*/

+ 3 - 2
src/components/newLayout/modules/header.vue

@@ -39,7 +39,7 @@
       </el-dropdown-menu>
     </el-dropdown>-->
       <!--    <el-divider direction="vertical"></el-divider>-->
-      <el-button size="mint" type="primary"  style="background-color:rgb(52 106 145);margin-right: 20px;color: #FFFFFF" v-if="usertype == 1 || usertype == 0" @click="$router.push('/serviceDataScreen')">{{$t(`业务数据大屏`)}}</el-button>
+      <el-button size="mint" type="primary"  style="background-color:rgb(52 106 145);margin-right: 20px;color: #FFFFFF" v-if="(usertype == 1 || usertype == 0) && siteid == 'HY'" @click="$router.push('/serviceDataScreen')">{{$t(`业务数据大屏`)}}</el-button>
       <svg
         t="1725853431060"
         class="icon"
@@ -142,7 +142,8 @@ export default {
       langusge: [],
       nowType: "ZH",
       languagename: "",
-      usertype : JSON.parse(sessionStorage.getItem('active_account')).usertype
+      usertype : JSON.parse(sessionStorage.getItem('active_account')).usertype,
+      siteid: JSON.parse(sessionStorage.getItem('active_account')).siteid
     };
   },
   computed: {