linwenxin 1 سال پیش
والد
کامیت
0101b73a98

+ 12 - 7
package-lock.json

@@ -8832,14 +8832,19 @@
       }
     },
     "echarts": {
-      "version": "5.3.2",
-      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
-      "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.0.tgz",
+      "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
       "requires": {
         "tslib": "2.3.0",
-        "zrender": "5.3.1"
+        "zrender": "5.5.0"
       }
     },
+    "echarts-china-cities-js": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmmirror.com/echarts-china-cities-js/-/echarts-china-cities-js-0.1.1.tgz",
+      "integrity": "sha512-Xc7ShyUCaKeS5JHLygvpdZQ6A2nPN8MdVSMLMJhnl7Inatu1eRCJ6DtkeN4WtrjjpRmFYuQfYxKJ2K6Nb+3KLg=="
+    },
     "editorconfig": {
       "version": "0.15.3",
       "resolved": "https://registry.npmmirror.com/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -26364,9 +26369,9 @@
       }
     },
     "zrender": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
-      "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz",
+      "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==",
       "requires": {
         "tslib": "2.3.0"
       }

+ 2 - 1
package.json

@@ -26,7 +26,8 @@
     "clipboard": "^2.0.8",
     "concurrent-tasks": "^1.0.7",
     "core-js": "^3.6.5",
-    "echarts": "^5.1.1",
+    "echarts": "^5.5.0",
+    "echarts-china-cities-js": "^0.1.1",
     "file-saver": "^2.0.5",
     "html2canvas": "^1.4.1",
     "js-cookie": "2.2.0",

+ 8 - 0
src/api/common.js

@@ -17,6 +17,14 @@ export function commonCompanywechatGet(params) {
   })
 }
 
+export function bigGetRegion(params) {
+  return request({
+    url: '/big/getRegion',
+    method: 'post',
+    params
+  })
+}
+
 
 // 模板下载
 export function commonTemplateDownload(params, name) {

+ 58 - 618
src/views/bigViews/dataView1/components/mapDataStatistics.vue

@@ -1,152 +1,29 @@
 <template>
   <div class="heat-lay">
     <div class="heat-lay-flex">
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">今日新增安装单</div>
-          <div class="duplicatelay">
-            <div
-              id="lingshou1"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'lingshou1', '今日新增安装单-零售(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">零售</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.machineTotalR || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c2">
-                  {{ info.orderTotalR || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
-            <div
-              id="gongcheng1"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'gongcheng1', '今日新增安装单-工程(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">工程</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.machineTotalP || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c2">
-                  {{ info.orderTotalP || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
           </div>
         </div>
       </div>
       <div class="averticalBart"></div>
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">今日完工安装单</div>
-          <div class="duplicatelay">
-            <div
-              id="lingshou2"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'lingshou2', '今日完工安装单-零售(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">零售</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.machineCompleteR || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c2">
-                  {{ info.orderCompleteR || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
-            <div
-              id="gongcheng2"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'gongcheng2', '今日完工安装单-工程(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">工程</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.machineCompleteP || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c2">
-                  {{ info.orderCompleteP || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
           </div>
         </div>
       </div>
       <div class="averticalBart"></div>
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">安装未完工累计</div>
-          <div class="duplicatelay">
-            <div
-              id="lingshou3"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'lingshou3', '安装未完工累计-零售(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">零售</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c4">
-                  {{ info.machineOpenR || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c3">
-                  {{ info.orderOpenR || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
-            <div
-              id="gongcheng3"
-              style="cursor: pointer"
-              @click="
-                openPopUp($event, 'gongcheng3', '安装未完工累计-工程(台/单)')
-              "
-            >
-              <div class="heat-item-style1-num1-2">工程</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c4">
-                  {{ info.machineOpenP || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 台 </span>
-              </div>
-              <div class="heat-item-style1-num2">
-                <span class="heat-item-style1-num2-1 c3">
-                  {{ info.orderOpenP || 0 }}
-                </span>
-                <span class="heat-item-style1-num2-2">单</span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
           </div>
         </div>
       </div>
@@ -156,132 +33,42 @@
           id="jinrshifucq"
           class="heat-item-style1"
           style="cursor: pointer"
-          @click="openPopUp($event, 'jinrshifucq', '今日出勤师傅')"
         >
           <div class="heat-item-style1-title">今日出勤师傅</div>
-          <br />
-          <div class="heat-item-style1-num1">
-            <span class="heat-item-style1-num1-1 c2">
-              {{ info.cqry || 0 }}
-            </span>
-            <span class="heat-item-style1-num1-2"> 人 </span>
-          </div>
-        </div>
-      </div>
-      <div class="averticalBart"></div>
-      <div class="heat-lay-item" style="cursor: pointer" @click="jinrhaop(0)">
-        <div class="heat-item-style1">
-          <div class="heat-item-style1-title">今日差评数</div>
-          <br />
-          <div class="heat-item-style1-num1">
-            <span class="heat-item-style1-num1-1 c4">
-              {{ info.badNum || 0 }}
-            </span>
-            <span class="heat-item-style1-num1-2"> 单 </span>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
           </div>
         </div>
       </div>
     </div>
     <div class="horizontalLine"></div>
     <div class="heat-lay-flex">
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">今日新增维修单</div>
-          <div class="duplicatelay">
-            <div
-              id="weixiu1"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'weixiu1', '今日新增维修单-维修(单)')"
-            >
-              <div class="heat-item-style1-num1-2">维修</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.newwx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
-            <div
-              id="qingxi1"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'qingxi1', '今日新增清洗单-清洗(单)')"
-            >
-              <div class="heat-item-style1-num1-2">清洗</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.newqx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
+            <div class="subText">55.9%</div>
           </div>
         </div>
       </div>
       <div class="averticalBarb"></div>
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">今日完工维修单</div>
-          <div class="duplicatelay">
-            <div
-              id="weixiu2"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'weixiu2', '今日完工维修单-维修(单)')"
-            >
-              <div class="heat-item-style1-num1-2">维修</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.completewx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
-            <div
-              id="qingxi2"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'qingxi2', '今日完工清洗单-清洗(单)')"
-            >
-              <div class="heat-item-style1-num1-2">清洗</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c1">
-                  {{ info.completeqx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
+            <div class="subText">55.9%</div>
           </div>
         </div>
       </div>
       <div class="averticalBarb"></div>
-      <div class="heat-lay-item" style="width: 190%">
+      <div class="heat-lay-item" style="width: 100%">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">维修未完工累计</div>
-          <div class="duplicatelay">
-            <div
-              id="weixiu3"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'weixiu3', '维修未完工累计-维修(单)')"
-            >
-              <div class="heat-item-style1-num1-2">维修</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c4">
-                  {{ info.openwx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
-            <div
-              id="qingxi3"
-              style="cursor: pointer"
-              @click="openPopUp($event, 'qingxi3', '清洗未完工累计-清洗(单)')"
-            >
-              <div class="heat-item-style1-num1-2">清洗</div>
-              <div class="heat-item-style1-num1">
-                <span class="heat-item-style1-num1-1 c4">
-                  {{ info.openqx || 0 }}
-                </span>
-                <span class="heat-item-style1-num1-2"> 单 </span>
-              </div>
-            </div>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
+            <div class="subText">55.9%</div>
           </div>
         </div>
       </div>
@@ -289,366 +76,66 @@
       <div class="heat-lay-item">
         <div class="heat-item-style1">
           <div class="heat-item-style1-title">今日回收工单</div>
-          <br />
-          <div class="heat-item-style1-num1">
-            <span class="heat-item-style1-num1-1 c1">
-              {{ info.hsgd || 0 }}
-            </span>
-            <span class="heat-item-style1-num1-2"> 单 </span>
-          </div>
-        </div>
-      </div>
-      <div class="averticalBarb"></div>
-      <!-- style="cursor: pointer" @click="jinrhaop(1)" -->
-      <div class="heat-lay-item">
-        <div class="heat-item-style1">
-          <div class="heat-item-style1-title">今日好评率</div>
-          <br />
-          <div class="heat-item-style1-num1">
-            <span class="heat-item-style1-num1-1 c2">
-              {{ info.goodRate || 0 }}
-            </span>
-            <span class="heat-item-style1-num1-2"> % </span>
+          <div class="fujimaintext">
+            <div class="mainText">6256</div>
+            <div class="subText">55.9%</div>
           </div>
         </div>
       </div>
     </div>
-    <Teleport to="body">
-      <popUp
-        :show="show"
-        :top="top"
-        :left="left"
-        :title="title"
-        :item="item"
-        :style="style"
-        @col="
-          (bool) => {
-            show = bool;
-            if (!bool) {
-              style = {};
-              item = [];
-              renshu = false;
-              timeId2 && timeId2();
-            }
-          }
-        "
-      >
-        <div v-if="renshu">
-          <div v-for="(item, index) in renshuliev" :key="index">
-            <br />
-            <div style="display: flex; justify-content: space-between">
-              <span class="subheading">{{ item.typeName }}:</span
-              ><span class="jinge">{{ item.numbers }}人</span>
-            </div>
-          </div>
-        </div>
-      </popUp>
-      <el-dialog
-        width="70%"
-        v-model="dialogVisible"
-        :before-close="handleClose"
-        style="z-index: 10000000000"
-      >
-        <table border="1" style="width: 100%">
-          <thead>
-            <tr>
-              <th>类型</th>
-              <th>工单号</th>
-              <th>网点名称</th>
-              <th>主服务人员编号</th>
-              <th>主服务人员名称</th>
-              <th>评价述</th>
-            </tr>
-          </thead>
-          <tbody>
-            <tr v-for="(item, index) in cplie" :key="index">
-              <td class="xiaolie">{{ item.type }}</td>
-              <td class="xiaolie300">{{ item.workerOrderNo }}</td>
-              <td class="xiaolie320">{{ item.websitName }}</td>
-              <td class="xiaolie150">{{ item.wonumber }}</td>
-              <td class="xiaolie120">{{ item.woname }}</td>
-              <td>{{ item.tips }}</td>
-            </tr>
-          </tbody>
-        </table>
-        <el-pagination
-          layout="prev, pager, next"
-          :page-size="pageSize"
-          :current-page="pageNum"
-          :total="total"
-          @current-change="currentChange"
-        />
-      </el-dialog>
-    </Teleport>
   </div>
 </template>
 
 <script>
-import {
-  getCommonly,
-  getQuery15,
-  getQuery22,
-  getQuery23_1,
-} from '@/api/bigView.js';
-import popUp from '@/components/pop-up.vue';
-import bus from '@/utils/eventBus.js';
 export default {
-  components: { popUp },
+  components: {  },
   data() {
     return {
-      info: {},
-      show: false,
-      top: 0,
-      left: 0,
-      title: '',
-      item: [],
-      timeId2: null,
-      renshu: false,
-      style: {},
-      renshuliev: [],
-      dialogVisible: false,
-      cplie: [],
-      total: 0,
-      pageNum: 1,
-      pageSize: 10,
-      typenum: null,
+      
     };
   },
   watch: {
-    dialogVisible() {
-      if (this.dialogVisible) {
-        bus.emit('autoplay', false);
-      } else {
-        bus.emit('autoplay', true);
-      }
-    },
+    
   },
   mounted() {
-    this.timeId = getCommonly((res) => {
-      this.info = res.data;
-    }, 60000);
+    
   },
   beforeUnmount() {
-    this.timeId();
   },
   methods: {
-    currentChange(a) {
-      this.pageNum = a;
-      this.jinrhaop();
-    },
-    jinrhaop() {
-      getQuery23_1({
-        params: {
-          typeCode: 0,
-          pageNum: this.pageNum,
-          pageSize: this.pageSize,
-        },
-      }).then((res) => {
-        if (!this.dialogVisible) {
-          this.dialogVisible = true;
-        }
-        this.total = res.data.total;
-        this.cplie = res.data.records;
-      });
-    },
-    handleClose() {
-      this.pageNum = 1;
-      this.dialogVisible = false;
-    },
-    openPopUp(e, id, title) {
-      if (id === 'jinrshifucq') {
-        getQuery22((res) => {
-          var { height, top, left } = document
-            .getElementById(id)
-            .getBoundingClientRect();
-          this.renshuliev = res.data;
-          this.title = title;
-          this.top = top + height;
-          this.left = left;
-          this.show = true;
-          this.renshu = true;
-          this.style = {
-            width: 'auto',
-          };
-        });
-      } else {
-        this.timeId2 = getQuery15((res) => {
-          var list = [
-            { city: '广州公司' },
-            { city: '佛山公司' },
-            { city: '天猫优品' },
-          ];
-          var keys = [];
-          var gz = [];
-          var fs = [];
-          res.data.map((item) => {
-            var { city, ...obj } = item;
-            var ind = ~['广州市', '清远市', '韶关市'].indexOf(city)
-              ? 0
-              : ~['佛山市', '肇庆市', '云浮市'].indexOf(city)
-              ? 1
-              : 2;
-            if (ind === 0) {
-              gz.push(item);
-            }
-            if (ind === 1) {
-              fs.push(item);
-            }
-            keys = Object.keys(obj);
-            keys.map((key) => {
-              if (list[ind][key] === undefined) {
-                list[ind][key] = 0;
-              }
-              list[ind][key] += obj[key];
-            });
-          });
-          list.map((obj) => {
-            if (Object.keys(obj).length === 1) {
-              keys.map((key) => {
-                obj[key] = 0;
-              });
-            }
-          });
-          gz.sort((a, b) => {
-            return (
-              ['广州市', '清远市', '韶关市'].indexOf(a.city) -
-              ['广州市', '清远市', '韶关市'].indexOf(b.city)
-            );
-          });
-          fs.sort((a, b) => {
-            return (
-              ['佛山市', '肇庆市', '云浮市'].indexOf(a.city) -
-              ['佛山市', '肇庆市', '云浮市'].indexOf(b.city)
-            );
-          });
-          this.item = [list[0], ...gz, list[1], ...fs, list[2]].map((item) => {
-            var obj = {
-              area: item.city,
-            };
-            if (id === 'lingshou1') {
-              obj.amount = item.insMacNewR;
-              obj.bills = item.insNewR;
-            } else if (id === 'lingshou2') {
-              obj.amount = item.insMacFinishR;
-              obj.bills = item.insFinishR;
-            } else if (id === 'lingshou3') {
-              obj.amount = item.insMacOpenR;
-              obj.bills = item.insOpenR;
-            } else if (id === 'gongcheng1') {
-              obj.amount = item.insMacNewP;
-              obj.bills = item.insNewP;
-            } else if (id === 'gongcheng2') {
-              obj.amount = item.insMacFinishP;
-              obj.bills = item.insFinishP;
-            } else if (id === 'gongcheng3') {
-              obj.amount = item.insMacOpenP;
-              obj.bills = item.insOpenP;
-            } else if (id === 'weixiu1') {
-              obj.amount = item.repNew;
-            } else if (id === 'weixiu2') {
-              obj.amount = item.repFinish;
-            } else if (id === 'weixiu3') {
-              obj.amount = item.repOpen;
-            } else if (id === 'qingxi1') {
-              obj.amount = item.repNewqx;
-            } else if (id === 'qingxi2') {
-              obj.amount = item.repFinishqx;
-            } else if (id === 'qingxi3') {
-              obj.amount = item.repOpenqx;
-            }
-            return obj;
-          });
-          var { height, top, left } = document
-            .getElementById(id)
-            .getBoundingClientRect();
-          this.title = title;
-          this.top = top + height;
-          this.left = left;
-          this.show = true;
-        }, 100000000000000);
-      }
-    },
+   
   },
 };
 </script>
 
 <style scoped lang="scss">
-table {
-  width: 100%;
-  border-collapse: collapse;
-}
-
-table caption {
-  font-size: 2em;
-  font-weight: bold;
-  margin: 1em 0;
-}
-
-th,
-td {
-  border: 1px solid #ddd;
-  text-align: center;
-  padding: 6px 6px;
-}
-
-table thead tr {
-  background-color: #008c8c;
-  color: #fff;
-}
-
-table tbody tr:nth-child(odd) {
-  background-color: #eee;
-}
-
-table tbody tr:hover {
-  background-color: #ccc;
-}
-table tfoot tr td {
-  text-align: right;
-  padding-right: 20px;
-}
-.xiaolie {
-  width: 80px;
-}
-.xiaolie300 {
-  width: 220px;
-}
-.xiaolie320 {
-  width: 280px;
-}
-.xiaolie150 {
-  width: 150px;
-}
-.xiaolie120 {
-  width: 100px;
-}
 .heat-lay {
   width: 100%;
-  height: 180px;
+  height: 160px;
   & > div:nth-child(1) {
-    height: 90px;
+    height: 80px;
   }
   & > div:nth-child(3) {
-    height: 90px;
+    height: 80px;
   }
   .horizontalLine {
     width: 100%;
     height: 1px;
     border-radius: 2px;
-    background: linear-gradient(to right, #082570, #156ccf, #156ccf, #082570);
+    // background: linear-gradient(to right, #082570, #156ccf, #156ccf, #082570);
   }
   .averticalBart {
     height: 100%;
     min-width: 1px;
     border-radius: 2px;
-    background: linear-gradient(#082570, #156ccf);
+    // background: linear-gradient(#082570, #156ccf);
   }
 
   .averticalBarb {
     height: 100%;
     min-width: 1px;
     border-radius: 2px;
-    background: linear-gradient(#156ccf, #082570);
+    // background: linear-gradient(#156ccf, #082570);
   }
   .heat-lay-item {
     height: 100%;
@@ -663,13 +150,6 @@ table tfoot tr td {
     flex-direction: row;
     align-items: center;
   }
-  .heat-item-style1-num1-2 {
-    font-size: 14px;
-    font-family: Source Han Sans CN, Source Han Sans CN-Regular;
-    font-weight: 400;
-    // margin-left: 10px;
-    color: #8ab1dc;
-  }
   .heat-item-style1 {
     width: 100%;
     height: 100%;
@@ -677,73 +157,33 @@ table tfoot tr td {
       font-size: 14px;
       font-family: Source Han Sans CN, Source Han Sans CN-Regular;
       font-weight: 400;
-      // text-align: center;
-      color: #8ab1dc;
+      color: #fff;
       margin-bottom: 5px;
+      line-height: 28px;
+      box-sizing: border-box;
+      padding: 0 5px;
+      background:repeating-linear-gradient(to right, rgba(250,250,250,.3),rgba(250,250,250,.0));
     }
-    .heat-item-style1-num1,
-    .heat-item-style1-num2 {
-      width: 100%;
-      height: auto;
+    .fujimaintext{
+      width:100%;
       display: flex;
+      justify-content: space-between;
+      align-items: flex-end;
       flex-direction: row;
-      align-items: center;
-      // justify-content: flex-end;
-      .heat-item-style1-num1-1 {
-        font-size: 18px;
-        font-family: Source Han Sans CN, Source Han Sans CN-Medium;
-        font-weight: 500;
-      }
-
-      .heat-item-style1-num2-1 {
-        font-size: 14px;
-        font-family: Source Han Sans CN, Source Han Sans CN-Regular;
-        font-weight: 400;
-      }
-      .heat-item-style1-num2-2 {
-        font-size: 14px;
-        font-family: Source Han Sans CN, Source Han Sans CN-Regular;
-        font-weight: 400;
-        color: #8ab1dc;
-      }
-      .c1 {
-        color: #3be9ff;
-      }
-      .c2 {
-        color: #3ce783;
-      }
-      .c3 {
-        color: #e15960;
-      }
-      .c4 {
-        color: #ff9900;
-      }
+      margin-top: 18px;
+      box-sizing: border-box;
+      padding-right: 10px;
     }
-  }
-  .duplicatelay {
-    width: 100%;
-    height: auto;
-    display: flex;
-    justify-content: space-between;
-    & > div {
-      width: 100%;
+    .mainText{
+      font-size: 30px;
+      font-weight: bold;
+      line-height: 22px;
+      color: #fff;
+    }
+    .subText{
+      font-size: 14px;
+      color: #ff0;
     }
   }
 }
-.subheading {
-  font-size: 16px;
-  font-family: Source Han Sans CN, Source Han Sans CN-Medium;
-  font-weight: 500;
-  color: #93b0d8;
-  line-height: 25px;
-  text-align: right;
-}
-.jinge {
-  font-size: 16px;
-  font-family: Source Han Sans CN, Source Han Sans CN-Medium;
-  font-weight: 500;
-  color: #ffffff;
-  line-height: 25px;
-  text-align: right;
-}
 </style>

+ 156 - 154
src/views/bigViews/dataView1/components/mapdata.vue

@@ -3,19 +3,13 @@
     <zj-page-container>
       <map-data-statistics />
       <zj-page-fill>
-        <div
-          style="
+        <div style="
             width: 100%;
             height: 100%;
             overflow: hidden;
             position: relative;
-          "
-        >
-          <div
-            id="chart_7"
-            class="chart t_btn9"
-            style="width: 100%; height: 100%"
-          ></div>
+          ">
+          <div id="chart_7" class="chart t_btn9" style="width: 100%; height: 100%"></div>
           <div class="leixingxianshi">
             <div class="viewfilediv">
               <div class="zfx c1"></div>
@@ -53,8 +47,38 @@ import zhejiang from './js/zhejiang.js';
 import moduleEnclosure from '@/components/moduleEnclosure.vue';
 import mapDataStatistics from './mapDataStatistics.vue';
 import * as echarts from 'echarts';
-import { getQuery15 } from '@/api/bigView.js';
-import { csize } from '@/utils/const.js';
+import { bigGetRegion } from '@/api/common.js';
+// 计算 GeoJSON 数据的边界框
+function calculateBoundingBox(geoJsonData) {
+  let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
+  geoJsonData.features.forEach(feature => {
+    feature.geometry.coordinates[0].forEach(coord => {
+      minX = Math.min(minX, coord[0]);
+      minY = Math.min(minY, coord[1]);
+      maxX = Math.max(maxX, coord[0]);
+      maxY = Math.max(maxY, coord[1]);
+    });
+  });
+  return { minX, minY, maxX, maxY };
+}
+
+// 计算缩放比例
+function calculateZoom(boundingBox, containerWidth, containerHeight) {
+  const geoWidth = boundingBox.maxX - boundingBox.minX;
+  const geoHeight = boundingBox.maxY - boundingBox.minY;
+
+  // 打印调试信息
+  console.log('BoundingBox:', boundingBox);
+  console.log('GeoWidth:', geoWidth, 'GeoHeight:', geoHeight);
+
+  if (geoWidth === 0 || geoHeight === 0) {
+    return 1;  // 如果宽度或高度为0,返回默认缩放比例1
+  }
+
+  const scaleX = containerWidth / geoWidth;
+  const scaleY = containerHeight / geoHeight;
+  return Math.min(scaleX, scaleY);
+}
 export default {
   components: {
     moduleEnclosure,
@@ -80,161 +104,118 @@ export default {
     };
   },
   mounted() {
-    echarts.registerMap('guangdong', zhejiang);
-    this.timeId = getQuery15((res) => {
-      var names = this.data.map((item) => item.name);
-      this.list = res.data.filter((item) => ~names.indexOf(item.city));
-      this.list.sort((a, b) => {
-        return names.indexOf(a.city) - names.indexOf(b.city);
-      });
-    }, 60000);
     this.echart_7();
   },
-  beforeUnmount() {
-    this.timeId();
-  },
   methods: {
     echart_7() {
-      var that = this;
-      if (this.myChart) {
-        this.myChart.dispose();
+      var that = this
+      if (that.myChart) {
+        that.myChart.dispose();
       }
-      this.myChart = new echarts.init(document.getElementById('chart_7'));
-      function showProvince() {
-        var map = {
-          map: 'guangdong',
-          zoom: 1.2,
-          // roam: true,
-          label: {
-            normal: {
-              show: true,
-              textStyle: {
-                color: '#beecff',
-                fontSize: csize(20),
-              },
-            },
-            emphasis: {
-              textStyle: {
-                color: '#beecff',
-                fontSize: csize(24),
-              },
-            },
-          },
-          itemStyle: {
-            normal: {
-              borderColor: 'rgba(0,144,255, 1)',
-              borderWidth: 1,
-              areaColor: {
-                type: 'radial',
-                x: 0.4,
-                y: 0.5,
-                r: 1,
-                colorStops: [
-                  {
-                    offset: 0,
-                    color: 'rgba(0,144,255, 0)', // 0% 处的颜色
-                  },
-                  {
-                    offset: 1,
-                    color: 'rgba(0,144,255, .2)', // 100% 处的颜色
-                  },
-                  {
-                    offset: 1,
-                    color: 'rgba(0,144,255, 1)', // 100% 处的颜色
-                  },
-                ],
-                globalCoord: false, // 缺省为 false
+      bigGetRegion({
+        country: 100000,
+        // province:"广东省",
+        // city: "广州市"
+      }).then(res => {
+        // 初始化 ECharts 实例
+        that.myChart = echarts.init(document.getElementById('chart_7'));
+        const geoJsonData = JSON.parse(res.data)
+        // 假设第一个省份的中心点为地图的中心点
+        const center = geoJsonData.features[0].properties.center;
+        // 计算边界框
+        const boundingBox = calculateBoundingBox(geoJsonData);
+        // 获取容器尺寸
+        const containerWidth = that.myChart.getWidth();
+        const containerHeight = that.myChart.getHeight();
+        // 计算合适的缩放比例
+        const zoom = calculateZoom(boundingBox, containerWidth, containerHeight);
+        console.log(center, zoom)
+        // 注册地图
+        echarts.registerMap('china', geoJsonData);
+        // 指定城市和颜色
+        var cityColors = {
+          '北京市': '#ff7f50',
+          '上海': '#87cefa',
+          '广州': '#da70d6',
+          '深圳': '#32cd32',
+          '成都': '#6495ed'
+        };
+        // 构建 series 数据
+        var seriesData = Object.keys(cityColors).map(function (city) {
+          return {
+            name: city,
+            itemStyle: {
+              normal: {
+                areaColor: cityColors[city]
               },
-              shadowColor: 'rgba(0,144,255, 1)',
-              shadowOffsetX: -1,
-              shadowOffsetY: 1,
-              shadowBlur: 10,
-            },
-            emphasis: {
-              areaColor: '#0082ff',
-              borderWidth: 0,
-            },
+              emphasis: {
+                areaColor: '#ffcc33'
+              }
+            }
+          };
+        });
+        // 配置项
+        var option = {
+          tooltip: {
+            trigger: 'item',
+            formatter: '{b}'
           },
-          select: {
-            // 地图选中区域样式
-            label: {
-              // 选中区域的label(文字)样式
-              color: '#fff',
-            },
+          geo: {
+            map: 'china',
+            roam: true,
+            zoom: isNaN(zoom) ? 1.2 : zoom, // 设置缩放比例
+            center: center,
             itemStyle: {
-              // 选中区域的默认样式
-              // areaColor: 'transparent',
-              areaColor: '#0082ff',
+              normal: {
+                areaColor: '#eeeeee',
+                borderColor: '#111'
+              },
+              emphasis: {
+                areaColor: '#ffcc33'
+              }
             },
+            regions: [
+              ...seriesData,
+              {
+                name: "南海诸岛",
+                itemStyle: {
+                  // 隐藏地图
+                  normal: {
+                    opacity: 0, // 为 0 时不绘制该图形
+                  }
+                },
+                label: {
+                  show: false // 隐藏文字
+                }
+              }
+            ]
           },
-          animation: false,
+          series: [{
+            type: 'map',
+            map: 'china',
+            geoIndex: 0,
+            data: seriesData
+          }]
         };
-        that.myChart.setOption({
-          backgroundColor: '', //设置无背景色
-          visualMap: {
-            show: false,
-            min: 0,
-            max: 100,
-            left: 'left',
-            top: 'bottom',
-            text: ['高', '低'], // 文本,默认为数值文本
-            calculable: true,
-          },
-          grid: {
-            top: '-20px', //生成的图片和顶部的间距
-            containLabel: true, //为ture才会生效以上的设置
-          },
-          geo: map,
-          series: [
-            {
-              type: 'map',
-              ...map,
-              data: that.data,
-            },
-          ],
-        });
-
-        var hourIndex = 0;
-        var fhourTime = null;
-        function gl(index) {
-          that.cIndex = index;
-          setTimeout(() => {
-            that.oldcIndex = index;
-          }, 1000);
-          that.myChart.dispatchAction({
-            type: 'downplay',
-            seriesIndex: 0,
-          });
-          that.myChart.dispatchAction({
-            type: 'highlight',
-            seriesIndex: 0,
-            dataIndex: index,
-          });
-          that.myChart.dispatchAction({
-            type: 'showTip',
-            seriesIndex: 0,
-            dataIndex: index,
-          });
-        }
-        function lbgl() {
-          gl(hourIndex);
-          hourIndex++;
-          if (hourIndex >= that.data.length) {
-            hourIndex = 0;
+        // 使用配置项生成图表
+        that.myChart.setOption(option);
+        // 鼠标点击事件
+        that.myChart.on('click', function (params) {
+          var cityName = params.name;
+          if (cityColors[cityName]) {
+            seriesData.forEach(function (city) {
+              if (city.name === cityName) {
+                city.itemStyle.normal.areaColor = '#ffcc33'; // 设置点击后的颜色
+              }
+            });
+            that.myChart.setOption({
+              series: [{
+                data: seriesData
+              }]
+            });
           }
-          fhourTime = setTimeout(lbgl, 8000);
-        }
-        lbgl();
-        //鼠标移入停止轮播
-        that.myChart.on('mousemove', function (e) {
-          clearTimeout(fhourTime);
-          hourIndex = e.dataIndex;
-          gl(e.dataIndex);
         });
-        //鼠标移出恢复轮播
-        that.myChart.on('mouseout', lbgl);
-      }
-      showProvince();
+      })
     },
   },
 };
@@ -252,6 +233,7 @@ export default {
   border-radius: 5px;
   box-sizing: border-box;
   padding: 16px 20px;
+
   .shujuxianshiTitle {
     font-size: 16px;
     font-family: Source Han Sans CN, Source Han Sans CN-Regular;
@@ -260,10 +242,12 @@ export default {
     color: #5fe3ff;
     margin-bottom: 12px;
   }
+
   .shujuxianshidw {
     margin-left: 5px;
   }
 }
+
 .leixingxianshi {
   width: 120px;
   height: auto;
@@ -271,15 +255,18 @@ export default {
   bottom: 0px;
   right: -10px;
 }
+
 .viewfilediv {
   width: 100%;
   height: auto;
   display: flex;
   flex-direction: row;
   align-items: center;
+
   &:not(:last-child) {
     margin-bottom: 10px;
   }
+
   span {
     font-size: 14px;
     font-family: Source Han Sans CN, Source Han Sans CN-Regular;
@@ -288,56 +275,71 @@ export default {
     color: #8ab1dc;
   }
 }
+
 .zfx {
   width: 14px;
   height: 14px;
   margin-right: 6px;
 }
+
 .c1 {
   background: linear-gradient(0deg, #21c8fb 0%, #21c8fb 100%);
 }
+
 .c2 {
   background: linear-gradient(0deg, #ffc737 0%, #ffc737 100%);
 }
+
 .c3 {
   background: linear-gradient(0deg, #ea539b 0%, #e34691 100%);
 }
+
 .c4 {
   background: linear-gradient(0deg, #59cfe6 0%, #59cfe6 100%);
 }
+
 .c5 {
   background: linear-gradient(0deg, #8061ff 0%, #8061ff 100%);
 }
+
 .c6 {
   color: #e15960 !important;
 }
+
 .c7 {
   color: #ffffff !important;
 }
+
 .c8 {
   color: #ff9900 !important;
 }
+
 .c9 {
   background: linear-gradient(0deg, #3ce783 0%, #3ce783 100%);
 }
+
 @keyframes xing {
   0% {
     transform: scale(1);
   }
+
   25% {
     transform: scale(1.1);
   }
+
   50% {
     transform: scale(0.95);
   }
+
   75% {
     transform: scale(1.05);
   }
 }
+
 .my_xing {
   -webkit-animation-name: xing;
   -webkit-animation-timing-function: ease-in-out;
   -webkit-animation-iteration-count: infinite;
   -webkit-animation-duration: 1s;
 }
-</style>
+</style>

+ 3 - 6
src/views/bigViews/dataView1/components/orderStatistics.vue

@@ -15,9 +15,6 @@
         class="echarts5div"
       ></div>
     </div>
-    <Teleport to="body">
-      <div class="niiono" v-if="aaaaa"></div>
-    </Teleport>
   </moduleEnclosure>
 </template>
 
@@ -46,9 +43,9 @@ export default {
     },
   },
   mounted() {
-    this.timeId = getQuery8((res) => {
-      this.echarts_5(res.data);
-    }, 50000);
+    // this.timeId = getQuery8((res) => {
+    //   this.echarts_5(res.data);
+    // }, 50000);
   },
   beforeUnmount() {
     this.timeId();

+ 3 - 3
src/views/bigViews/dataView1/components/orderTrend.vue

@@ -20,9 +20,9 @@ export default {
     };
   },
   mounted() {
-    this.timeId = getQuery10((res) => {
-      this.init_myChart2(res.data);
-    }, 40000);
+    // this.timeId = getQuery10((res) => {
+    //   this.init_myChart2(res.data);
+    // }, 40000);
   },
   beforeUnmount() {
     this.timeId();

+ 4 - 4
src/views/bigViews/dataView1/components/trendChart.vue

@@ -56,10 +56,10 @@ export default {
     };
   },
   mounted() {
-    this.timeId = getQuery12((res) => {
-      this.eac(res.data);
-      this.init_myChart2(res.data);
-    }, 70000);
+    // this.timeId = getQuery12((res) => {
+    //   this.eac(res.data);
+    //   this.init_myChart2(res.data);
+    // }, 70000);
     this.cindex = 0;
   },
   beforeUnmount() {

+ 3 - 3
src/views/bigViews/dataView1/components/workOrderStatistics.vue

@@ -20,9 +20,9 @@ export default {
     };
   },
   mounted() {
-    this.timeId = getQuery9((res) => {
-      this.eac(res.data);
-    }, 60000);
+    // this.timeId = getQuery9((res) => {
+    //   this.eac(res.data);
+    // }, 60000);
   },
   beforeUnmount() {
     this.timeId();

+ 3 - 3
src/views/bigViews/dataView1/components/workOrderTrend.vue

@@ -20,9 +20,9 @@ export default {
     };
   },
   mounted() {
-    this.timeId = getQuery11((res) => {
-      this.init_myChart2(res.data);
-    }, 30000);
+    // this.timeId = getQuery11((res) => {
+    //   this.init_myChart2(res.data);
+    // }, 30000);
   },
   beforeUnmount() {
     this.timeId();

+ 1 - 1
src/views/bigViews/dataView1/index.vue

@@ -25,7 +25,7 @@
           <div style="width: 48%">
             <zj-page-container>
               <div class="module-inner-margin h70">
-                <mapdata v-if="showMap" />
+                <mapdata />
               </div>
               <div class="module-inner-margin h30">
                 <trendChart />