From 6d9ce36cc8cdc48256a7292fffea58286d409c33 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 24 六月 2025 14:49:46 +0800
Subject: [PATCH] 提交一把订单

---
 company/src/api/business/insuranceApply.js         |  193 ++++---
 company/.env.developmentCom                        |    2 
 company/src/views/business/dataBoardInusurance.vue |  648 ++++++++++++++++++++++++++++
 company/src/views/index.vue                        |  439 ++++++++++++++----
 company/src/components/common/upload.vue           |   36 +
 company/.env.development                           |    6 
 6 files changed, 1,112 insertions(+), 212 deletions(-)

diff --git a/company/.env.development b/company/.env.development
index 7f2d884..840c9ca 100644
--- a/company/.env.development
+++ b/company/.env.development
@@ -4,15 +4,15 @@
 # 鎺ュ彛鍓嶇紑
 VUE_APP_API_PREFIX = '/yyb_admin_api'
 VUE_APP_SYSTEM_TITLE = '浜戞槗淇濆鎴锋湇鍔$郴缁�-骞冲彴绔�'
-VUE_APP_CONTEXT_PATH = '/yyb_admin'
+VUE_APP_CONTEXT_PATH = '/'
 
 VUE_APP_COOKIE_NAME='dmplat-auth-token'
 
 # 娴嬭瘯鏈�
 # VUE_APP_API = 'https://test.doumee.cn:8088/yyb_admin_api/'
-VUE_APP_API = 'https://www.yyb.red/yyb_admin_api/'
+#VUE_APP_API = 'https://www.yyb.red/yyb_admin_api/'
 
 # 浠诲悍
-# VUE_APP_API = 'http://192.168.0.129:10030/'
+VUE_APP_API = 'http://192.168.0.132:10030/'
 
 # VUE_APP_API = 'http://192.168.0.131:10031/'
diff --git a/company/.env.developmentCom b/company/.env.developmentCom
index 820a72d..233168a 100644
--- a/company/.env.developmentCom
+++ b/company/.env.developmentCom
@@ -13,6 +13,6 @@
 
 # VUE_APP_API = 'http://192.168.0.138:10031/'
 
-VUE_APP_API = 'http://192.168.0.129:10031/'
+VUE_APP_API = 'http://192.168.0.132:10031/'
 
 # VUE_APP_API = 'https://www.yyb.red/yyb_web_api/'
diff --git a/company/src/api/business/insuranceApply.js b/company/src/api/business/insuranceApply.js
index 5976ae6..cccaf4b 100644
--- a/company/src/api/business/insuranceApply.js
+++ b/company/src/api/business/insuranceApply.js
@@ -2,191 +2,212 @@
 
 // 鏌ヨ
 export function fetchList (data) {
-    return request.post('/business/insuranceApply/page', data, {
-        trim: true
-    })
+  return request.post('/business/insuranceApply/page', data, {
+    trim: true
+  })
 }
-export function findAllApply(data) {
-    return request.post('/business/insuranceApply/findListByDTO', data, {
-        trim: true
-    })
+export function findAllApply (data) {
+  return request.post('/business/insuranceApply/findListByDTO', data, {
+    trim: true
+  })
 }
 
 // 淇敼
 export function updateById (data) {
-    return request.post('/business/insuranceApply/updateById', data)
+  return request.post('/business/insuranceApply/updateById', data)
 }
 
 // 鏂板缓
 export function create (data) {
-    return request.post('/business/insuranceApply/create', data)
+  return request.post('/business/insuranceApply/create', data)
 }
 
 export function check (data) {
-    return request.post('/business/insuranceApply/check', data)
+  return request.post('/business/insuranceApply/check', data)
 }
 export function back (data) {
-    return request.post('/business/insuranceApply/back', data)
+  return request.post('/business/insuranceApply/back', data)
 }
-export function backWtb(data) {
-    return request.post('/business/insuranceApply/back', data)
+export function backWtb (data) {
+  return request.post('/business/insuranceApply/back', data)
 }
 export function closeWtbForShop (data) {
-    return request.post('/business/insuranceApply/closeWtbForShop', data)
+  return request.post('/business/insuranceApply/closeWtbForShop', data)
 }
 
 export function uploadToubaodan (data) {
-    return request.post('/business/insuranceApply/uploadToubaodan', data)
+  return request.post('/business/insuranceApply/uploadToubaodan', data)
 }
-export function uploadBaoxiandan(data) {
-    return request.post('/business/insuranceApply/uploadBaoxiandan', data)
+export function uploadBaoxiandan (data) {
+  return request.post('/business/insuranceApply/uploadBaoxiandan', data)
 }
-export function editBaoxiandan(data) {
-    return request.post('/business/insuranceApply/editBaoxiandan', data)
+export function editBaoxiandan (data) {
+  return request.post('/business/insuranceApply/editBaoxiandan', data)
 }
-export function dealBackApply(data) {
-    return request.post('/business/insuranceApply/dealBackApply', data)
+export function dealBackApply (data) {
+  return request.post('/business/insuranceApply/dealBackApply', data)
 }
 
 // 鑾峰彇淇濆崟姝㈡湡涓庡垵濮嬮噾棰�
 export function getCountCyclePriceVO (data) {
-    return request.post('/business/insuranceApply/getCountCyclePriceVO', data)
+  return request.post('/business/insuranceApply/getCountCyclePriceVO', data)
 }
 
 // 鐢宠璁板綍鐘舵�佸鐞�
 export function applyOpt (data) {
-    return request.post('/business/insuranceApply/applyOpt', data)
+  return request.post('/business/insuranceApply/applyOpt', data)
 }
 
 export function exportDetailExcel (data) {
-    return request.post('/business/insuranceApply/exportDetailExcel', data, {
-        trim: true,
-        download: true
-    })
+  return request.post('/business/insuranceApply/exportDetailExcel', data, {
+    trim: true,
+    download: true
+  })
 }
 export function getDetail (id) {
-    return request.get(`business/insuranceApply/${id}`)
+  return request.get(`business/insuranceApply/${id}`)
+}
+export function getAddReduceData () {
+  return request.get('business/insuranceApply/getAddReduceData')
+}
+export function getInsuranceNum () {
+  return request.get('business/insuranceApply/getInsuranceNum')
+}
+export function getSettleClaimsMoney () {
+  return request.get('business/insuranceApply/getSettleClaimsMoney')
+}
+export function getInsuranceMemberData () {
+  return request.get('business/insuranceApply/getInsuranceMemberData')
+}
+export function getInsuranceApplyStatusData () {
+  return request.get('business/insuranceApply/getInsuranceApplyStatusData')
+}
+export function getInsuranceApplyDataVO () {
+  return request.get('business/insuranceApply/getInsuranceApplyDataVO')
+}
+export function getInsuranceApplyReportDataVO () {
+  return request.get('business/insuranceApply/getInsuranceApplyReportDataVO')
 }
 export function getChangeDetail (id) {
-    return request.get(`business/applyChange/${id}`)
+  return request.get(`business/applyChange/${id}`)
 }
 export function getSignLink (id) {
-    return request.get(`business/insuranceApply/getSignLink/${id}`)
+  return request.get(`business/insuranceApply/getSignLink/${id}`)
 }
 export function getSignWTBTBDLink (data) {
-    return request.post(`business/insuranceApply/getSignWTBTBDLink`,data)
+  return request.post('business/insuranceApply/getSignWTBTBDLink', data)
 }
 export function getSignTBQRSLink (data) {
-    // return request.get('/business/insuranceApply/signTBQRSLink')
-    return request.post('/business/insuranceApply/signTBQRSLink', data)
+  // return request.get('/business/insuranceApply/signTBQRSLink')
+  return request.post('/business/insuranceApply/signTBQRSLink', data)
 }
 export function findListByDTO (data) {
-    return request.post('/business/insuranceApply/findListByDTO', data)
+  return request.post('/business/insuranceApply/findListByDTO', data)
 }
 export function getMemberListOnlineSignLink (data) {
-    return request.post('/business/insuranceApply/getMemberListOnlineSignLink', data, {
-        trim: true
-    })
+  return request.post('/business/insuranceApply/getMemberListOnlineSignLink', data, {
+    trim: true
+  })
 }
 export function getSignWTBTBDLinkk (data) {
-    return request.post('/business/insuranceApply/getSignWTBTBDLinkk', data, {
-        trim: true
-    })
+  return request.post('/business/insuranceApply/getSignWTBTBDLinkk', data, {
+    trim: true
+  })
 }
 export function getJiajianBaoSignLink (data) {
-    return request.post('/business/applyChange/getJiajianBaoSignLink', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/getJiajianBaoSignLink', data, {
+    trim: true
+  })
 }
 
 export function getChangeUnitSignLink (data) {
-    return request.post('/business/applyChange/getChangeUnitSignLink', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/getChangeUnitSignLink', data, {
+    trim: true
+  })
 }
 export function getDetailList (data) {
-    return request.post('/business/applyDetail/list', data, {
-        trim: true
-    })
+  return request.post('/business/applyDetail/list', data, {
+    trim: true
+  })
 }
 export function getChangeDetailList (data) {
-    return request.post('/business/applyChagneDetail/list', data, {
-        trim: true
-    })
+  return request.post('/business/applyChagneDetail/list', data, {
+    trim: true
+  })
 }
 
 // 鍒楄〃鏌ヨ
 export function findList (data) {
-    return request.post('/business/applyDetail/findList', data)
+  return request.post('/business/applyDetail/findList', data)
 }
 
 // 淇敼
 export function updateData (data) {
-    return request.post('/business/insuranceApply/updateData', data)
+  return request.post('/business/insuranceApply/updateData', data)
 }
 
 // 鍦ㄤ繚鍒嗛〉鏌ヨ
 export function applyDetailPage (data) {
-    return request.post('/business/applyDetail/page', data)
+  return request.post('/business/applyDetail/page', data)
 }
 
 // 鍔犲噺銆佹崲鍦哄垎椤垫煡璇�
 export function applyChagneDetailPage (data) {
-    return request.post('/business/applyChagneDetail/page', data)
+  return request.post('/business/applyChagneDetail/page', data)
 }
 // 瀵煎嚭鍦ㄤ繚浜哄憳璇﹀崟Excel
 export function exportExcel (data) {
-    return request.post('/business/applyDetail/exportExcel', data, {
-        trim: true,
-        download: true
-    })
+  return request.post('/business/applyDetail/exportExcel', data, {
+    trim: true,
+    download: true
+  })
 }
 export function exportJiajianBaoExcel (data) {
-    return request.post('/business/applyChange/exportJiajianBaoExcel', data, {
-        trim: true,
-        download: true
-    })
+  return request.post('/business/applyChange/exportJiajianBaoExcel', data, {
+    trim: true,
+    download: true
+  })
 }
 export function backChagne (data) {
-    return request.post('/business/applyChange/back', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/back', data, {
+    trim: true
+  })
 }
 export function editChangePidan (data) {
-    return request.post('/business/applyChange/editPidan', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/editPidan', data, {
+    trim: true
+  })
 }
 export function uploadChangePidan (data) {
-    return request.post('/business/applyChange/uploadPidan', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/uploadPidan', data, {
+    trim: true
+  })
 }
 export function dealBackChangeApply (data) {
-    return request.post('/business/applyChange/dealBackApply', data, {
-        trim: true
-    })
+  return request.post('/business/applyChange/dealBackApply', data, {
+    trim: true
+  })
 }
 export function exportChangeUnitExcel (data) {
-    return request.post('/business/applyChange/exportChangeUnitExcel', data, {
-        trim: true,
-        download: true
-    })
+  return request.post('/business/applyChange/exportChangeUnitExcel', data, {
+    trim: true,
+    download: true
+  })
 }
 
 // 瀵煎嚭Excel
 export function applyChagneDetailExcel (data) {
-    return request.post('/business/applyChagneDetail/exportExcel', data, {
-        trim: true,
-        download: true
-    })
+  return request.post('/business/applyChagneDetail/exportExcel', data, {
+    trim: true,
+    download: true
+  })
 }
 // 鏌ヨ淇濆崟鏄惁鍙繘琛屽姞鍑忎繚
 export function getApplyPower (data) {
-    return request.post('/business/insuranceApply/getApplyPower', data)
+  return request.post('/business/insuranceApply/getApplyPower', data)
 }
 
 // 鎶曚繚澶嶅
 export function reexamineCheck (data) {
-    return request.post('/business/insuranceApply/reexamineCheck', data)
+  return request.post('/business/insuranceApply/reexamineCheck', data)
 }
diff --git a/company/src/components/common/upload.vue b/company/src/components/common/upload.vue
index a0fcf08..4e350a5 100644
--- a/company/src/components/common/upload.vue
+++ b/company/src/components/common/upload.vue
@@ -12,7 +12,11 @@
                 <i class="el-icon-plus"></i>
             </div>
         </div>
-        <input type="file" ref="file" :accept="accept" @change="getFile" />
+        <div style="display: block;">
+          <input type="file" ref="file" :accept="accept" @change="getFile" />
+          <progress id="progressBar" value="0" max="100"></progress>
+          <span id="status">0%</span>
+        </div>
     </div>
 </template>
 
@@ -57,17 +61,29 @@
     },
     getFile (e) {
       if (e.target && e.target.files.length > 0) {
-          const loading = this.$loading({
-              lock: true,
-              text: '涓婁紶涓紝璇风瓑寰�',
-              spinner: 'el-icon-loading',
-              background: 'rgba(0, 0, 0, 0.7)'
-          });
-        this.$emit('loading')
+        const config = {
+          onUploadProgress: function(progressEvent) {
+            console.log(progressEvent)
+            const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
+            document.getElementById('progressBar').value = percentCompleted;
+            document.getElementById('status').textContent = percentCompleted + '%';
+          },
+          headers: {
+            'Content-Type': 'multipart/form-data'
+          }
+        }
+
+        // const loading = this.$loading({
+        //       lock: true,
+        //       text: '涓婁紶涓紝璇风瓑寰�',
+        //       spinner: 'el-icon-loading',
+        //       background: 'rgba(0, 0, 0, 0.7)'
+        //   });
+        // this.$emit('loading')
         const formdate = new FormData()
         formdate.append('file', e.target.files[0])
         formdate.append('folder', this.folder)
-        axios.post(this.uploadImgUrl, formdate)
+        axios.post(this.uploadImgUrl, formdate,config)
           .then(res => {
             this.$emit('success', res.data.data)
           })
@@ -75,7 +91,7 @@
             this.$message.error(e)
           })
           .finally(() => {
-              loading.close();
+            // loading.close();
             this.$refs.file.value = null
           })
       }
diff --git a/company/src/views/business/dataBoardInusurance.vue b/company/src/views/business/dataBoardInusurance.vue
new file mode 100644
index 0000000..8058e89
--- /dev/null
+++ b/company/src/views/business/dataBoardInusurance.vue
@@ -0,0 +1,648 @@
+<template>
+    <div class="box">
+        <div class="box_shua">
+            <el-button icon="el-icon-refresh" type="primary" @click="getChatData(),getData()">鍒锋柊鏁版嵁</el-button>
+        </div>
+        <div class="box_head">
+            <div class="box_head_info">
+                <i class="el-icon-info"></i>
+                <span>灞曠ず褰撳墠绯荤粺鍚堣鎬绘暟锛屾瘡澶╂洿鏂版暟鎹�</span>
+            </div>
+            <div class="box_head_list"  >
+                <div class="box_head_list_item">
+                    <div class="box_head_list_item_top">
+                        <span>绱鎶曚繚浼佷笟</span>
+                        <span>鏈湀 +{{info.monthAddInsuranceCompanyNum || 0}}</span>
+                    </div>
+                    <div class="box_head_list_item_bottom">{{info.insuranceCompanyNum || 0}}</div>
+                </div>
+                <div class="box_head_list_item">
+                    <div class="box_head_list_item_top">
+                        <span>绱鏈夋晥淇濆崟</span>
+                        <span>鏈湀 +{{info.monthAddInsuranceNum || 0 }}</span>
+                    </div>
+                    <div class="box_head_list_item_bottom">{{info.insuranceNum || 0}}</div>
+                </div>
+                <div class="box_head_list_item">
+                    <div class="box_head_list_item_top">
+                        <span>绱淇濋殰浜哄憳</span>
+                        <span>鏈湀 +{{info.monthAddMemberNum || 0}}</span>
+                    </div>
+                    <div class="box_head_list_item_bottom">{{info.memberNum || 0}}</div>
+                </div>
+                <div class="box_head_list_item">
+                    <div class="box_head_list_item_top">
+                        <span>鍚堣鎬昏垂鐢�(鍏�)</span>
+                        <span>鏈湀 +楼{{info.monthAddTotalFee || 0}}</span>
+                    </div>
+                    <div class="box_head_list_item_bottom">楼{{info.totalFee || 0}}</div>
+                </div>
+            </div>
+        </div>
+        <div class="box_content">
+            <div class="box_content_left">
+                <div class="box_content_left_title">褰撳墠鍦ㄤ繚鏁版嵁</div>
+                <div class="box_content_left_list">
+                    <div class="box_content_left_list_item"   :style="{ backgroundColor: item.title!= ''? item.backgroundColor :'#fff'}" v-for="(item, index) in list" :key="index">
+                        <div class="box_content_left_list_item_top" v-if="item.title != ''" >
+                            <span>{{item.title}}</span>
+                        </div>
+                        <div class="box_content_left_list_item_bottom" v-if="item.title!= ''">
+                            <span>{{item.num}}</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+      <div class="box_chart" >
+        <div class="box_chart_item" style="height: 400px">
+          <div class="box_content_right_title">
+            <span>鐩翠繚鍜屽鎵樹繚鍗犳瘮</span>
+          </div>
+          <div class="box_chart_item_tu" id="tu1" ></div>
+        </div>
+        <div class="box_chart_item"  style="height: 400px">
+          <div class="box_content_right_title">
+            <span>姣忔湀鍔犲噺淇濅汉鏁�</span>
+          </div>
+          <div class="box_chart_item_tu" id="tu2"></div>
+        </div>
+      </div>
+      <div class="box_chart">
+        <div class="box_chart_item" style=" width: 49.5%;height: 600px;">
+          <div class="box_content_right_title"  >
+            <span>绱浼佷笟鎶曚繚閲戦top10</span>
+          </div>
+          <div class="box_chart_item_tu" id="tu3"></div>
+        </div>
+        <div class="box_chart_item"  style=" width: 49.5%;height: 600px;">
+          <div class="box_content_right_title">
+            <span>鐑棬淇濋櫓鏂规</span>
+          </div>
+          <div class="box_chart_item_tu" >
+            <el-table
+                v-loading="isWorking"
+                :data="dataList"
+                stripe
+            >
+              <el-table-column label="鎺掑悕" width="80px">
+                <template slot-scope="scope">
+                  <span>{{scope.$index + 1}}</span>
+                </template>
+              </el-table-column>
+              <el-table-column prop="name" label="瀛愭柟妗堝悕绉�" min-width="100px">
+                <template slot-scope="{row}" >{{row.solutions.name||''}}</template>
+              </el-table-column>
+              <el-table-column prop="solutionBaseName" label="鎵�灞炰富鏂规" min-width="100px">
+                <template slot-scope="{row}">{{row.solutions.solutionBaseName}}</template>
+              </el-table-column>
+              <el-table-column prop="price" label="鏂规璐圭敤" min-width="100px">
+                <template slot-scope="{row}">
+                  <span v-if="row.solutions.timeUnit == 3">   {{row.solutions.price ||0}}/浜�/骞�</span>
+                  <span v-else-if="row.solutions.timeUnit == 2">   {{row.solutions.price ||0}}/浜�/鏈�</span>
+                  <span v-else-if="row.solutions.timeUnit == 1">   {{row.solutions.price ||0}}/浜�/鍗婃湀</span>
+                  <span v-else>   {{row.solutions.fee ||0}}/浜�/澶�</span>
+                </template>
+              </el-table-column>
+              <el-table-column prop="dataSecond" label="浣跨敤鏁伴噺" min-width="100px"></el-table-column>
+            </el-table>
+          </div>
+        </div>
+      </div>
+    </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import 'echarts-wordcloud'
+import { getInsuranceApplyDataVO, getInsuranceApplyReportDataVO } from '@/api/business/insuranceApply'
+export default {
+  name: 'dataBoard',
+  data () {
+    return {
+      isWorking: false,
+      dataList: [],
+      dateType: 0,
+      list: [
+        {
+          title: '鍦ㄤ繚浼佷笟鏁�',
+          num: 0,
+          percentage: 0,
+          color: '#EF4444',
+          backgroundColor: '#fdf6ec'
+        },
+        {
+          title: '鍦ㄤ繚淇濆崟鏁�',
+          num: 0,
+          percentage: 0,
+          color: '#368157',
+          backgroundColor: '#fcfbe7'
+        },
+        {
+          title: '鍦ㄤ繚浜烘暟',
+          num: 0,
+          percentage: 0,
+          color: '#CA8A04',
+          backgroundColor: '#d6f7e5'
+        },
+        {
+          title: '',
+          num: 0,
+          color: '#9333EA',
+          backgroundColor: '#FAF5FF'
+        }
+      ],
+      info: {},
+      tu1Data: [{ name: '鐩翠繚', value: 0 }, { name: '濮旀墭淇�', value: 0 }],
+      chatData: null
+    }
+  },
+  created () {
+    this.$nextTick(() => {
+      this.setChartTu1(this.tu1Data)
+      this.setChartTu2(['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�']
+        , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
+      this.setChartTu3([]
+        , [])
+      // this.setChartTu4([],[])
+    })
+    this.getInsuranceApplyReportDataVO()
+    this.getInsuranceApplyDataVO()
+  },
+  methods: {
+    getInsuranceApplyDataVO () {
+      getInsuranceApplyDataVO()
+        .then(res => {
+          this.info = res
+          this.info.monthAddTotalFee = (res.monthAddTotalFee || 0).toFixed(2)
+          this.info.totalFee = (res.totalFee || 0).toFixed(2)
+          this.list[0].num = this.info.useCompanyNum || 0
+          this.list[1].num = this.info.useInsuranceNum || 0
+          this.list[2].num = this.info.useMemberNum || 0
+          this.tu1Data[0].value = this.info.zbInsuranceNum || 0
+          this.tu1Data[1].value = this.info.wtbInsuranceNum || 0
+          this.setChartTu1(this.tu1Data)
+          console.log(res)
+        })
+    },
+    getInsuranceApplyReportDataVO () {
+      getInsuranceApplyReportDataVO()
+        .then(res => {
+          this.initChartData2(res)
+          this.initChartData3(res)
+          this.initChartData4(res)
+        })
+    },
+    initChartData4(res){
+      this.dataList = res.hotSolutionList || []
+    },
+    initChartData2 (res) {
+      var monthAddReduceList = res.monthAddReduceList || []
+      if (monthAddReduceList.length > 0) {
+        var data1 = []
+        var data2 = []
+        var data3 = []
+        monthAddReduceList.forEach(item => {
+          data1.push(item.dataFirst)
+          data2.push(item.dataSecond)
+          data3.push(item.dataThird)
+        })
+        this.setChartTu2(data1, data2, data3)
+      }
+    },
+    initChartData3 (res) {
+      var companyTopFeeList = res.companyTopFeeList || []
+      if (companyTopFeeList.length > 0) {
+        var data1 = []
+        var data2 = []
+        companyTopFeeList.forEach(item => {
+          data1.push(item.dataFirst)
+          data2.push(item.dataSecond)
+        })
+        this.setChartTu3(data1, data2)
+      }
+    },
+    changeDataType (type) {
+      this.dateType = type
+    },
+    setChartTu1 (data) {
+      const chartDom = document.getElementById('tu1')
+      const myChart = echarts.init(chartDom)
+      const option = {
+        tooltip: {
+          trigger: 'item'
+        },
+        label: {
+          alignTo: 'edge',
+          formatter: '{b}: ({d}%)',
+          minMargin: 5,
+          edgeDistance: 10,
+          lineHeight: 15,
+          rich: {
+            time: {
+              fontSize: 10,
+              color: '#999'
+            }
+          }
+        },
+        labelLine: {
+          length: 15,
+          length2: 0,
+          maxSurfaceAngle: 80
+        },
+        legend: {
+          top: '5%',
+          left: 'center'
+        },
+        series: [
+          {
+            name: '鐩翠繚鍜屽鎵樹繚鍗犳瘮',
+            type: 'pie',
+            radius: ['40%', '70%'],
+            avoidLabelOverlap: false,
+            // label: {
+            //   show: false,
+            //   position: 'center'
+            // },
+            // emphasis: {
+            //   label: {
+            //     show: true,
+            //     fontSize: 40,
+            //     fontWeight: 'bold'
+            //   }
+            // },
+            // labelLine: {
+            //   show: true
+            // },
+            data: data
+          }
+        ]
+      }
+      option && myChart.setOption(option)
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    setChartTu2 (xData, yData, yData2) {
+      const chartDom = document.getElementById('tu2')
+      const myChart = echarts.init(chartDom)
+      const option = this.getBarOption2(xData, yData, yData2, 'rgba(207,58,24,0.83)')
+      option && myChart.setOption(option)
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    setChartTu3 (dataX, dataY) {
+      var chartDom = document.getElementById('tu3')
+      var myChart = echarts.init(chartDom)
+      var option = {
+        grid: {
+          left: '3%',
+          right: '4%',
+          bottom: '3%',
+          containLabel: true
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          }
+        },
+        xAxis: {
+          // position: 'top',
+          type: 'value'
+          // boundaryGap: [0, 0.01]
+        },
+        yAxis: {
+          type: 'category',
+          data: dataX,
+          inverse: true
+        },
+        series: [
+          {
+            name: '閲戦(鍏�)',
+            type: 'bar',
+            itemStyle: {
+              color: '#f6d68d'
+            },
+            data: dataY
+          }
+        ]
+      }
+      option && myChart.setOption(option)
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    getBarOption2 (xd, yd, yd1, color) {
+      const option = {
+        grid: {
+          left: '3%',
+          right: '3%',
+          top: '10%',
+          bottom: '0%',
+          containLabel: true
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          }
+        },
+        legend: {},
+        xAxis: {
+          type: 'category',
+          // boundaryGap: false,
+          data: xd
+        },
+        yAxis: {
+          type: 'value'
+        },
+        series: [
+          {
+            data: yd,
+            type: 'bar',
+            areaStyle: {
+              opacity: 0.5,
+              color: color || '#f07e6f'
+            },
+            lineStyle: {
+              color: color || '#f07e6f'
+            }
+          },
+          {
+            data: yd1,
+            type: 'bar',
+            areaStyle: {
+              opacity: 0.5,
+              color: color || '#f07e6f'
+            },
+            lineStyle: {
+              color: color || '#f07e6f'
+            }
+          }
+        ]
+      }
+      return option
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+    .box {
+        width: 100%;
+        padding: 0 10px 30px 10px;
+
+        box-sizing: border-box;
+        .box_shua {
+            width: 100%;
+            display: flex;
+            justify-content: end;
+            margin-bottom: 10px;
+        }
+        .box_head {
+            width: 100%;
+            padding: 0 15px 15px 15px;
+            box-sizing: border-box;
+            background-color: #ffffff;
+            border-radius: 20px;
+            display: flex;
+            flex-direction: column;
+            box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
+            .box_head_info {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                margin: 8px 0;
+                span {
+                    color: rgba(16,16,16,1);
+                    font-size: 14px;
+                    margin-left: 5px;
+                }
+            }
+            .box_head_list {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                .box_head_list_item {
+                    width: 24%;
+                    height: 100px;
+                    padding: 15px;
+                    box-sizing: border-box;
+                    background-color: rgba(239,246,255,1);
+                    border-radius: 20px;
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: space-between;
+                    .box_head_list_item_top {
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        span {
+                            &:nth-child(1) {
+                                color: rgba(154,154,154,1);
+                                font-size: 14px;
+                            }
+                            &:nth-child(2) {
+                                color: rgba(255,58,48,1);
+                                font-size: 14px;
+                            }
+                        }
+                    }
+                    .box_head_list_item_bottom {
+                        color: rgba(16,16,16,1);
+                        font-size: 22px;
+                        font-weight: bold;
+                    }
+                }
+            }
+        }
+        .box_chart {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-top: 15px;
+            .datetype{
+              cursor: pointer;
+              color: #8c939d;
+              margin-right: 10px;
+              padding: 2px 10px;
+              font-size: 14px;
+              border: solid 1px  #8c939d;
+            }
+            .seldatetype{
+              cursor: pointer;
+              color: #3170fe;
+              margin-right: 10px;
+              padding: 2px 10px;
+              font-size: 14px;
+              border: solid 1px  #3170fe;
+            }
+            .box_chart_item {
+              &:nth-child(1) {
+                width: 32.5%;
+              }
+              &:nth-child(2) {
+                width: 67%;
+              }
+                height: 225px;
+                padding: 15px;
+                box-sizing: border-box;
+                background-color: #ffffff;
+                border-radius: 20px;
+                box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
+                .box_chart_item_info {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        color: rgba(154,154,154,1);
+                        font-size: 14px;
+                        margin-right: 5px;
+                    }
+                }
+              .box_content_right_title {
+                font-weight: bold;
+                font-size: 16px;
+                color: #101010;
+                margin-bottom: 15px;
+              }
+                .box_chart_item_price {
+                    color: rgba(16,16,16,1);
+                    font-size: 22px;
+                    margin-top: 4px;
+                    font-weight: bold;
+                }
+                .box_chart_item_tu {
+                    width: 100%;
+                    height: 90%;
+                }
+            }
+        }
+        .box_shuju {
+            width: 32.5%;
+            height: 93px;
+            border-radius: 20px;
+            margin-top: 15px;
+            margin-bottom: 15px;
+            padding: 15px;
+            box-sizing: border-box;
+            background-color: #ffffff;
+            box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            .box_shuju_item {
+                width: 33%;
+                height: 100%;
+                display: flex;
+                flex-direction: column;
+                justify-content: space-between;
+                align-items: center;
+                .box_shuju_item_top {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        color: rgba(154,154,154,1);
+                        font-size: 14px;
+                        margin-right: 4px;
+                    }
+                }
+                .box_shuju_item_bottom {
+                    color: rgba(16,16,16,1);
+                    font-size: 22px;
+                    font-weight: bold;
+                }
+            }
+        }
+        .box_content {
+            width: 100%;
+            height: 32s0px;
+            margin-top: 15px;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            .box_content_left {
+                width: 100%;
+                height: 100%;
+                background-color: #fff;
+                padding: 15px;
+                box-sizing: border-box;
+                .box_content_left_title {
+                    font-weight: bold;
+                    font-size: 22px;
+                    color: #101010;
+                    margin-top: 50px;
+                    margin-bottom: 30px;
+                }
+                .box_content_left_list {
+                    width: 100%;
+                    display: flex;
+                    flex-wrap: wrap;
+                    align-items: center;
+                    justify-content: space-between;
+                    .box_content_left_list_item {
+                        width: 24%;
+                        height: 150px;
+                        padding: 16px 20px;
+                        box-sizing: border-box;
+                        border-radius: 15px;
+                        background-color: #FEF2F2;
+                        display: flex;
+                        flex-direction: column;
+                        justify-content: space-between;
+                        margin-bottom: 15px;
+                        .box_content_left_list_item_top {
+                            width: 100%;
+                            flex: 1;
+                            display: flex;
+                            align-items: center;
+                            text-align: center;
+                            span {
+                              width: 100%;
+                                &:nth-child(1) {
+                                    color: rgba(75,85,99,1);
+                                    font-size: 18px;
+                                }
+                            }
+                        }
+                        .box_content_left_list_item_bottom {
+                            width: 100%;
+                            flex: 2;
+                            display: flex;
+                            align-items: center;
+                            text-align: center;
+                            font-weight: bold;
+                            span {
+                               width: 100%;
+                                color: rgba(16,16,16,1);
+                                font-size: 22px;
+                                margin-right: 6px;
+                            }
+                        }
+                    }
+                }
+            }
+            .box_content_right {
+                width: 0%;
+                height: 100%;
+                padding: 15px;
+                box-sizing: border-box;
+                background-color: #fff;
+                .box_content_right_title {
+                    font-weight: bold;
+                    font-size: 16px;
+                    color: #101010;
+                    margin-bottom: 15px;
+                }
+              .box_chart_item_tu {
+                width: 100%;
+                height: 130px;
+              }
+            }
+        }
+    }
+</style>
diff --git a/company/src/views/index.vue b/company/src/views/index.vue
index 2ee998d..13ee9ea 100644
--- a/company/src/views/index.vue
+++ b/company/src/views/index.vue
@@ -16,10 +16,12 @@
       </div>
     </div>
     <div class="home_content">
-      <div class="home_content_left">
-        <div class="home_content_left_item" ref="picture1"></div>
+      <div class="home_content_left" >
+        <div class="home_content_left_item" v-if="userInfo.type == 0" ref="picture1"></div>
+        <div class="home_content_left_item" v-if="userInfo.type == 1" ref="picture4"></div>
         <div class="home_content_left_item" ref="picture2"></div>
-        <div class="home_content_left_item" ref="picture3"></div>
+        <div class="home_content_left_item" v-if="userInfo.type == 0" ref="picture3"></div>
+        <div class="home_content_left_item" v-if="userInfo.type == 1" ref="picture6"></div>
       </div>
       <div class="home_content_right">
         <div class="home_content_right_label" v-if="tabs && tabs.length>0" >寰呭姙浜嬮」</div>
@@ -126,7 +128,6 @@
             </el-pagination>
           </div>
         </div>
-
         <div v-if="activeName === '6'">
           <div class="home_content_right_list" v-if="tableData6 && tableData6.length">
             <div class="list_item" v-for="(item, index) in tableData6" :key="index">
@@ -243,8 +244,9 @@
 import OperaApplyChangeDetailWindow from '@/components/business/OperaApplyChangeDetailWindow'
 import OperaTaxesWindow from '@/components/business/OperaTaxesWindow'
 import { fetchList as noticeList, deleById } from '@/api/business/notices'
-import { getChangeDetail, getDetail } from '@/api/business/insuranceApply'
+import { getAddReduceData, getSettleClaimsMoney, getInsuranceNum, getInsuranceApplyStatusData, getInsuranceMemberData, getInsuranceApplyDataVO, getInsuranceApplyReportDataVO } from '@/api/business/insuranceApply'
 import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
+
 export default {
   components: {
     OperaWtbApplyShopWindow,
@@ -343,9 +345,14 @@
     ...mapState(['userInfo'])
   },
   mounted () {
-    this.setPicture1()
+    if (this.userInfo.type == 0) {
+      this.setPicture1()
+      this.setPicture3()
+    } else if (this.userInfo.type == 1) {
+      this.setPicture4()
+      this.setPicture6()
+    }
     this.setPicture2()
-    this.setPicture3()
     this.initPanel()
     this.setLoadTimer()
   },
@@ -393,7 +400,7 @@
         this.$refs.OperaTaxesWindow.open('寮�绁ㄧ敵璇疯鎯�', { id: obj.objId })
       } else if (obj.objType === 5) {
         this.$refs.operaSettleClaimsWindow.open('鎶ユ鐞嗚禂璇︽儏', obj.objId)
-        if ([1,4, 7,13, 14, 15, 16, 17, 18].includes(obj.type)) {
+        if ([1, 4, 7, 13, 14, 15, 16, 17, 18].includes(obj.type)) {
           // 濡傛灉鏄彁閱掔疮娑堟伅锛屽垹闄ら�氱煡
           deleById(obj.id)
             .then(res => {
@@ -544,122 +551,329 @@
       this.$router.push({ path: url })
     },
     setPicture1 () {
-      const chartDom = this.$refs.picture1
-      const myChart = echarts.init(chartDom)
-      let option
-      option = {
-        title: {
-          text: '褰撴湀淇濋櫓閲戦',
-          left: '5%',
-          top: '5%'
-        },
-        tooltip: {
-          trigger: 'item'
-        },
-        series: [
-          {
-            type: 'pie',
-            radius: '50%',
-            data: [
-              { value: 1048, name: '淇濋殰涓�' },
-              { value: 735, name: '涓嶅湪淇�' }
-            ],
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: 'rgba(0, 0, 0, 0.5)'
+      getInsuranceNum()
+        .then(res => {
+          const chartDom = this.$refs.picture1
+          const myChart = echarts.init(chartDom)
+          const option = {
+            title: {
+              text: '宸叉姇淇濆崟',
+              left: '5%',
+              top: '5%'
+            },
+            legend: {
+              orient: 'vertical',
+              left: 'right',
+              top: '30%'
+            },
+            tooltip: {
+              trigger: 'item'
+            },
+            label: {
+              alignTo: 'edge',
+              formatter: '{b}: ({d}%)',
+              minMargin: 5,
+              edgeDistance: 10,
+              lineHeight: 15,
+              rich: {
+                time: {
+                  fontSize: 10,
+                  color: '#999'
+                }
               }
-            }
+            },
+            series: [
+              {
+                type: 'pie',
+                data: [
+                  { value: res.zbInsuranceNum || 0, name: '鐩翠繚' },
+                  { value: res.wtbInsuranceNum || 0, name: '濮旀墭鎶曚繚' }
+                ],
+                radius: ['30%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                  itemStyle: {
+                    shadowBlur: 10,
+                    shadowOffsetX: 0,
+                    shadowColor: 'rgba(0, 0, 0, 0.5)'
+                  }
+                }
+              }
+            ]
           }
-        ]
-      }
 
-      option && myChart.setOption(option)
+          option && myChart.setOption(option)
+        })
+    },
+    setPicture4 () {
+      getInsuranceApplyStatusData()
+        .then(res => {
+          const chartDom = this.$refs.picture4
+          const myChart = echarts.init(chartDom)
+          var yd = []
+          if (res && res.length > 0) {
+            res.forEach(item => {
+              yd.push({ name: item.dataFirst, value: item.dataSecond || 0 })
+            })
+          }
+          const option = {
+            title: {
+              text: '宸叉姇淇濆崟鍚勭姸鎬佸崰姣�',
+              left: '5%',
+              top: '5%'
+            },
+            legend: {
+              orient: 'vertical',
+              left: 'right',
+              top: '30%'
+            },
+            tooltip: {
+              trigger: 'item'
+            },
+            label: {
+              alignTo: 'edge',
+              formatter: '{b}: ({c}涓�)',
+              minMargin: 5,
+              edgeDistance: 10,
+              lineHeight: 15,
+              rich: {
+                time: {
+                  fontSize: 10,
+                  color: '#999'
+                }
+              }
+            },
+            series: [
+              {
+                type: 'pie',
+                data: yd,
+                radius: ['30%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                  itemStyle: {
+                    shadowBlur: 10,
+                    shadowOffsetX: 0,
+                    shadowColor: 'rgba(0, 0, 0, 0.5)'
+                  }
+                }
+              }
+            ]
+          }
+
+          option && myChart.setOption(option)
+        })
+    },
+    setPicture6 () {
+      getInsuranceMemberData()
+        .then(res => {
+          const chartDom = this.$refs.picture6
+          const myChart = echarts.init(chartDom)
+          var yd = []
+          if (res && res.length > 0) {
+            res.forEach(item => {
+              yd.push({ name: item.dataFirst, value: item.dataSecond || 0 })
+            })
+          }
+          const option = {
+            title: {
+              text: '鍦ㄤ繚鍛樺伐',
+              left: '5%',
+              top: '5%'
+            },
+            grid: {
+              left: '3%',
+              right: '3%',
+              top: '25%',
+              bottom: '0%',
+              containLabel: true
+            },
+            legend: {
+              orient: 'vertical',
+              left: 'right',
+              top: '30%'
+            },
+            tooltip: {
+              trigger: 'item'
+            },
+            label: {
+              alignTo: 'edge',
+              formatter: '{b}: ({c}浜�)',
+              minMargin: 5,
+              edgeDistance: 10,
+              lineHeight: 15,
+              rich: {
+                time: {
+                  fontSize: 10,
+                  color: '#999'
+                }
+              }
+            },
+            series: [
+              {
+                type: 'pie',
+                data: yd,
+                radius: ['30%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                  itemStyle: {
+                    shadowBlur: 10,
+                    shadowOffsetX: 0,
+                    shadowColor: 'rgba(0, 0, 0, 0.5)'
+                  }
+                }
+              }
+            ]
+          }
+
+          option && myChart.setOption(option)
+        })
     },
     setPicture2 () {
-      const chartDom = this.$refs.picture2
-      const myChart = echarts.init(chartDom)
-      let option
-      option = {
-        title: {
-          text: '褰撴湀鍦ㄤ繚浜烘暟',
-          left: '5%',
-          top: '5%'
-        },
-        grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '13%',
-          containLabel: true
-        },
-        tooltip: {
-          trigger: 'axis'
-        },
-        xAxis: {
-          type: 'category',
-          data: ['涓�鏈�', '浜屾湀', '涓夋湀', '鍥涙湀', '浜旀湀', '鍏湀', '涓冩湀', '鍏湀', '涔濇湀', '鍗佹湀', '鍗佷竴鏈�', '鍗佷簩鏈�']
-        },
-        yAxis: {
-          type: 'value'
-        },
-        series: [
-          {
-            data: [10, 30, 25, 16, 21, 18, 5, 30, 30, 30, 30, 30],
-            type: 'line'
+      getAddReduceData()
+        .then(res => {
+          var xd = ['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�']
+          var yd = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+          var yd1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+          if (res && res.length > 0) {
+            xd = []
+            yd = []
+            yd1 = []
+            res.forEach(item => {
+              xd.push(item.dataFirst)
+              yd.push(item.dataSecond)
+              yd1.push(item.dataThird)
+            })
           }
-        ]
-      }
+          const chartDom = this.$refs.picture2
+          const myChart = echarts.init(chartDom)
+          const option = {
+            title: {
+              text: '姣忔湀鍔犲噺淇濅汉鏁�',
+              left: '5%',
+              top: '1%'
+            },
+            grid: {
+              left: '3%',
+              right: '3%',
+              top: '25%',
+              bottom: '0%',
+              containLabel: true
+            },
+            tooltip: {
+              trigger: 'axis',
+              axisPointer: {
+                type: 'shadow'
+              }
+            },
+            legend: {
+              top: '5%',
+              left: 'right'
+            },
+            xAxis: {
+              type: 'category',
+              // boundaryGap: false,
+              data: xd
+            },
+            yAxis: {
+              type: 'value'
+            },
+            series: [
+              {
+                name: '鍔犱繚',
+                data: yd,
+                type: 'bar',
+                areaStyle: {
+                  opacity: 0.5,
+                  color: '#f07e6f'
+                },
+                lineStyle: {
+                  color: '#f07e6f'
+                }
+              },
+              {
+                name: '鍑忎繚',
+                data: yd1,
+                type: 'bar',
+                areaStyle: {
+                  opacity: 0.5,
+                  color: '#f07e6f'
+                },
+                lineStyle: {
+                  color: '#f07e6f'
+                }
+              }
+            ]
+          }
+          option && myChart.setOption(option)
 
-      option && myChart.setOption(option)
+          console.log(res)
+        })
     },
     setPicture3 () {
-      const chartDom = this.$refs.picture3
-      const myChart = echarts.init(chartDom)
-      let option
-      option = {
-        title: {
-          text: '鎬昏禂浠樼巼 78%',
-          left: '5%',
-          top: '5%'
-        },
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: {
-            type: 'shadow'
+      getSettleClaimsMoney()
+        .then(res => {
+          var xd = ['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�']
+          var yd = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+          if (res && res.length > 0) {
+            xd = []
+            yd = []
+            res.forEach(item => {
+              xd.push(item.dataFirst)
+              yd.push(item.dataSecond)
+            })
           }
-        },
-        grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '25%',
-          containLabel: true
-        },
-        xAxis: {
-          type: 'value'
-          // boundaryGap: [0, 0.01]
-        },
-        yAxis: {
-          type: 'category',
-          data: ['淇濋櫓A璧斾粯鐜�', '淇濋櫓B璧斾粯鐜�', '鎬昏禂浠樼巼']
-        },
-        series: [
-          {
-            type: 'bar',
-            stack: 'total',
-            barWidth: '60%',
-            data: [10, 20, 30]
-          },
-          {
-            type: 'bar',
-            stack: 'total',
-            barWidth: '60%',
-            data: [15, 16, 24]
+          const chartDom = this.$refs.picture3
+          const myChart = echarts.init(chartDom)
+          const option = {
+            title: {
+              text: '姣忔湀璧斾粯閲戦',
+              left: '5%',
+              top: '5%'
+            },
+            grid: {
+              left: '3%',
+              right: '3%',
+              top: '25%',
+              bottom: '0%',
+              containLabel: true
+            },
+            tooltip: {
+              trigger: 'axis',
+              axisPointer: {
+                type: 'shadow'
+              }
+            },
+            legend: {
+              top: '5%',
+              left: 'right'
+            },
+            xAxis: {
+              type: 'category',
+              // boundaryGap: false,
+              data: xd
+            },
+            yAxis: {
+              type: 'value'
+            },
+            series: [
+              {
+                data: yd,
+                type: 'line',
+                smooth: true,
+                areaStyle: {
+                  opacity: 0.5,
+                  color: '#f07e6f'
+                },
+                lineStyle: {
+                  color: '#f07e6f'
+                }
+              }
+            ]
           }
-        ]
-      }
+          option && myChart.setOption(option)
 
-      option && myChart.setOption(option)
+          console.log(res)
+        })
     }
   }
 }
@@ -717,6 +931,7 @@
     /*justify-content: space-between;*/
     .home_content_left {
       width: 350px;
+
       /*height: 100%;*/
       height: auto;
       flex-shrink: 0;

--
Gitblit v1.9.3