From e176ec0f4e2e35342bef6c909786c31d7fd8316f Mon Sep 17 00:00:00 2001
From: zh <314079846@qq.com>
Date: 星期一, 25 十一月 2024 10:07:03 +0800
Subject: [PATCH] 首頁

---
 src/views/index.vue |  603 ++++++++++++++++++++++++++++-------------------------
 1 files changed, 318 insertions(+), 285 deletions(-)

diff --git a/src/views/index.vue b/src/views/index.vue
index 614cabe..b4cd025 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,130 +1,143 @@
 <template>
-  <div class="home">
-    <div class="overview">
-      <div class="overview-top">
-        <div class="title">椤圭洰鎬昏</div>
-        <div class="qurey">
-          <el-form ref="queryFormRef" :model="queryParams">
-            <div class="search_from">
-              <el-form-item label="鏃ユ湡">
-                <el-date-picker
-                  style="width: 300px"
-                  v-model="timeMerge"
-                  clearable
-                  end-placeholder="缁撴潫鏃堕棿"
-                  format="YYYY-MM-DD"
-                  placeholder="璇烽�夋嫨鏃ユ湡"
-                  size="default"
-                  start-placeholder="寮�濮嬫椂闂�"
-                  type="daterange"
-                  value-format="YYYY-MM-DD"
-                  @change="dataPickerChange"
-                />
-              </el-form-item>
-              <el-form-item label="琛屾斂鍖哄垝">
-                <el-select
-                  v-model="queryParams.area"
-                  clearable
-                  placeholder="璇烽�夋嫨鍖哄垝"
-                  style="width: 180px"
-                >
-                  <el-option
-                    v-for="item in sys_administrative_divisions"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  />
-                </el-select>
-              </el-form-item>
-              <el-form-item label="鎶曡祫閲戦" style="margin-right: 50px">
-                <div class="from_input">
-                  <el-input
-                    v-model="queryParams.start"
-                    clearable
-                    placeholder="璇疯緭鍏�"
-                    style="width: 100px"
-                    type="number"
-                  />
-                  鑷�
-                  <el-input
-                    v-model="queryParams.end"
-                    clearable
-                    placeholder="璇疯緭鍏�"
-                    style="width: 100px"
-                    type="number"
-                  />
+    <div class="home">
+        <div class="overview">
+            <div class="overview-top">
+                <div class="title">椤圭洰鎬昏</div>
+                <div class="qurey">
+                    <el-form ref="queryFormRef" :model="queryParams">
+                        <div class="search_from">
+                            <el-form-item label="鏃ユ湡">
+                                <el-date-picker
+                                    style="width: 300px"
+                                    v-model="timeMerge"
+                                    clearable
+                                    end-placeholder="缁撴潫鏃堕棿"
+                                    format="YYYY-MM-DD"
+                                    placeholder="璇烽�夋嫨鏃ユ湡"
+                                    size="default"
+                                    start-placeholder="寮�濮嬫椂闂�"
+                                    type="daterange"
+                                    value-format="YYYY-MM-DD"
+                                    @change="dataPickerChange"
+                                />
+                            </el-form-item>
+                            <el-form-item label="琛屾斂鍖哄垝">
+                                <el-select
+                                    v-model="queryParams.area"
+                                    clearable
+                                    placeholder="璇烽�夋嫨鍖哄垝"
+                                    style="width: 180px"
+                                >
+                                    <el-option
+                                        v-for="item in sys_administrative_divisions"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value"
+                                    />
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item
+                                label="鎶曡祫閲戦"
+                                style="margin-right: 50px"
+                            >
+                                <div class="from_input">
+                                    <el-input
+                                        v-model="queryParams.start"
+                                        clearable
+                                        placeholder="璇疯緭鍏�"
+                                        style="width: 100px"
+                                        type="number"
+                                    />
+                                    鑷�
+                                    <el-input
+                                        v-model="queryParams.end"
+                                        clearable
+                                        placeholder="璇疯緭鍏�"
+                                        style="width: 100px"
+                                        type="number"
+                                    />
+                                </div>
+                            </el-form-item>
+                            <el-form-item style="margin-right: 20px">
+                                <el-button
+                                    icon="Search"
+                                    type="primary"
+                                    @click="handleQuery"
+                                    >鎼滅储</el-button
+                                >
+                                <el-button icon="Refresh" @click="resetQuery"
+                                    >閲嶇疆</el-button
+                                >
+                            </el-form-item>
+                        </div>
+                    </el-form>
                 </div>
-              </el-form-item>
-              <el-form-item style="margin-right: 20px">
-                <el-button icon="Search" type="primary" @click="handleQuery"
-                  >鎼滅储</el-button
-                >
-                <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
-              </el-form-item>
             </div>
-          </el-form>
-        </div>
-      </div>
-      <!-- 缁熻鎯呭喌 -->
-      <ProjectOverview
-        :calculation="calculation"
-        :countExceptionProjectData="countExceptionProjectData"
-      />
-    </div>
-    <!-- 浠e姙浜嬮」 -->
-    <div class="flex">
-      <div class="flex_card">
-        <el-card>
-          <NoticeTable style="height: 360px" />
-        </el-card>
-      </div>
-      <!-- 娑堟伅閫氱煡 -->
-      <div class="flex_card">
-        <el-card>
-          <TidingsTable style="height: 360px" />
-        </el-card>
-      </div>
-      <!-- 鍦板浘 -->
-    </div>
-    <div class="mt-[10px] min-w-[1600px]">
-      <el-card>
-        <div>
-          <div class="search-form">
-            <el-form :model="searchForm" inline>
-              <el-form-item label=" ">
-                <el-input
-                  v-model="searchForm.name"
-                  clearable
-                  placeholder="璇疯緭鍏ラ」鐩悕绉版垨椤圭洰浠g爜"
-                  style="width: 180px"
-                />
-              </el-form-item>
-              <el-form-item style="margin-right: 0px">
-                <el-button icon="Search" type="primary" @click="searchList"
-                  >鎼滅储</el-button
-                >
-                <el-button icon="Refresh" @click="mapQuery">閲嶇疆</el-button>
-              </el-form-item>
-            </el-form>
-          </div>
-          <div class="flex w-full h-[500px] border border-[#DBDEEA]">
-            <Map
-              id="DangerSourceId"
-              ref="mapRef"
-              :is-show-control="true"
-              :list-type="true"
-              :map-list="tableDatas"
-              :map-type="true"
-              class="w-full h-full border-r border-[#DBDEEA]"
-              @label-click="showDetails"
-              @mark-click="showDetails"
-              @current-label-style-change="labelStyleChange"
+            <!-- 缁熻鎯呭喌 -->
+            <ProjectOverview
+                :calculation="calculation"
+                :countExceptionProjectData="countExceptionProjectData"
             />
-          </div>
         </div>
-      </el-card>
+        <!-- 浠e姙浜嬮」 -->
+        <div class="flex">
+            <div class="flex_card">
+                <el-card>
+                    <NoticeTable style="height: 360px" />
+                </el-card>
+            </div>
+            <!-- 娑堟伅閫氱煡 -->
+            <div class="flex_card">
+                <el-card>
+                    <TidingsTable style="height: 360px" />
+                </el-card>
+            </div>
+            <!-- 鍦板浘 -->
+        </div>
+        <div style="margin-top: 10px">
+            <el-card>
+                <div>
+                    <div class="search-form">
+                        <el-form :model="searchForm" inline>
+                            <el-form-item label=" ">
+                                <el-input
+                                    v-model="searchForm.name"
+                                    clearable
+                                    placeholder="璇疯緭鍏ラ」鐩悕绉版垨椤圭洰浠g爜"
+                                    style="width: 180px"
+                                />
+                            </el-form-item>
+                            <el-form-item style="margin-right: 0px">
+                                <el-button
+                                    icon="Search"
+                                    type="primary"
+                                    @click="searchList"
+                                    >鎼滅储</el-button
+                                >
+                                <el-button icon="Refresh" @click="mapQuery"
+                                    >閲嶇疆</el-button
+                                >
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <div class="map_div">
+                        <Map
+                            id="DangerSourceId"
+                            ref="mapRef"
+                            :is-show-control="true"
+                            :list-type="true"
+                            :map-list="tableDatas"
+                            :map-type="true"
+                            class="w-full h-full border-r border-[#DBDEEA]"
+                            @label-click="showDetails"
+                            @mark-click="showDetails"
+                            @current-label-style-change="labelStyleChange"
+                        />
+                    </div>
+                </div>
+            </el-card>
+        </div>
     </div>
-  </div>
 </template>
 
 <script>
@@ -133,216 +146,236 @@
 import NoticeTable from "./components/noticeTable.vue";
 import TidingsTable from "./components/tidingsTable.vue";
 import Map from "./components/Map/index.vue";
+import { getCalculatioln, getAbnormalData } from '@/api/login';
 export default {
-  name: "Index",
-  data() {
-    return {
-      queryParams: {},
-      timeMerge: [],
-      sys_administrative_divisions: [],
-      calculation: [],
-      countExceptionProjectData: {},
-      searchForm: {},
-      tableDatas: [
-        {
-          name: "灏勬椽甯�",
-          value: 105.37281,
-          lat: 30.87145,
-          lon: 105.37281,
-          id: "222222222",
+    name: "Index",
+    data() {
+        return {
+            queryParams: {},
+            timeMerge: [],
+            sys_administrative_divisions: [],
+            countExceptionProjectData: {},
+            searchForm: {},
+            tableDatas: [
+                {
+                    name: "灏勬椽甯�",
+                    value: 105.37281,
+                    lat: 30.87145,
+                    lon: 105.37281,
+                    id: "222222222",
+                },
+                {
+                    name: "xxxx",
+                    value: 105.22332,
+                    lat: 31.52421,
+                    lon: 106.22332,
+                    id: "11112",
+                },
+            ],
+            calculation: [
+                { text: '鍌�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '寤�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '鐪�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '甯�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '鏂�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '绔�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '鍘�', mun: 0, statistics: '', statisticsMun: '0' },
+                { text: '鏅�', mun: 0, statistics: '', statisticsMun: '0' }
+            ]
+        };
+    },
+    components: {
+        SvgIcon,
+        ProjectOverview,
+        NoticeTable,
+        TidingsTable,
+        Map,
+    },
+    created() {
+        this.handleQuery()
+    },
+    methods: {
+        dataPickerChange(val) {
+            if (!val) {
+                this.queryParams.startTime = "";
+                this.queryParams.endTime = "";
+                return;
+            }
+
+            this.queryParams.startTime = this.timeMerge[0];
+            this.queryParams.endTime = this.timeMerge[1];
         },
-        {
-          name: "xxxx",
-          value: 105.22332,
-          lat: 31.52421,
-          lon: 106.22332,
-          id: "11112",
+        handleQuery() {
+            console.log(this.queryParams);
+            const obj = {
+                startDate: this.queryParams.startTime,
+                endDate: this.queryParams.endTime,
+                areaCode: this.queryParams.area,
+                minInvestment: this.queryParams.start,
+                maxInvestment: this.queryParams.end,
+            };
+
+            getCalculatioln(obj).then((res) => {
+
+                const arr = res.data.proPhaseCountVO?.concat(res.data.impTypeCountVO);
+                const newArr = arr.map((item) => ({
+                    text: item.text,
+                    mun: item.count,
+                    statistics: item.type,
+                    statisticsMun: item.amount,
+                }));
+                // 鍒涘缓涓�涓璞★紝浠ヤ究鏍规嵁 text 灞炴�у揩閫熸煡鎵� newArr 涓殑瀵硅薄
+                const newArrLookup = newArr.reduce((lookup, item) => {
+                    lookup[item.text] = item;
+                    return lookup;
+                }, {});
+
+                // 鏇存柊 calculation 鏁扮粍锛屼繚鎸佸叾鍘熷椤哄簭
+                this.calculation = this.calculation.map((item) => {
+                    const newItem = newArrLookup[item.text];
+                    return newItem ? newItem : item; // 濡傛灉 newItem 瀛樺湪锛屽垯杩斿洖 newItem锛屽惁鍒欒繑鍥炲師濮� item
+                });
+
+            });
+
+            this.abnormalData(obj);
         },
-      ],
-    };
-  },
-  components: {
-    SvgIcon,
-    ProjectOverview,
-    NoticeTable,
-    TidingsTable,
-    Map,
-  },
-  methods: {
-    dataPickerChange(val) {
-      if (!val) {
-        this.queryParams.startTime = "";
-        this.queryParams.endTime = "";
-        return;
-      }
 
-      this.queryParams.startTime = timeMerge[0];
-      this.queryParams.endTime = timeMerge[1];
+        // 鑾峰彇寮傚父鏁版嵁
+        async abnormalData(obj) {
+            const res = await getAbnormalData(obj);
+            this.countExceptionProjectData = res.data;
+        },
+
+        //鍦板浘璇︽儏
+        showDetails(row) {
+            console.log(row);
+        },
+
+        labelStyleChange(currentLabel) {
+            if (lastLabel) {
+                lastLabel.setBackgroundColor("#fff");
+                lastLabel.setFontColor("var(--el-color-primary)");
+            }
+            currentLabel.setBackgroundColor("var(--el-color-primary)");
+            currentLabel.setFontColor("#fff");
+            lastLabel = currentLabel;
+        },
+        resetQuery() {
+            this.queryParams = {
+                area: "",
+                start: "",
+                end: "",
+                startTime: "",
+                endTime: "",
+            };
+            this.timeMerge = [];
+            this.handleQuery();
+        },
+
+        // 鍦板浘鎼滅储
+        async searchList() {
+            // await search()
+            this.mapRef.moveTo(105.37281, 30.87145);
+        },
+        mapQuery() { },
     },
-    handleQuery() {
-      console.log(queryParams);
-      const obj = {
-        startDate: queryParams.startTime,
-        endDate: queryParams.endTime,
-        areaCode: queryParams.area,
-        minInvestment: queryParams.start,
-        maxInvestment: queryParams.end,
-      };
-
-      this.getCalculatioln(obj).then((res) => {
-        const arr = res.data.proPhaseCountVO?.concat(res.data.impTypeCountVO);
-        const newArr = arr.map((item) => ({
-          text: item.text,
-          mun: item.count,
-          statistics: item.type,
-          statisticsMun: item.amount,
-        }));
-
-        // 鍒涘缓涓�涓璞★紝浠ヤ究鏍规嵁 text 灞炴�у揩閫熸煡鎵� newArr 涓殑瀵硅薄
-        const newArrLookup = newArr.reduce((lookup, item) => {
-          lookup[item.text] = item;
-          return lookup;
-        }, {});
-
-        // 鏇存柊 calculation 鏁扮粍锛屼繚鎸佸叾鍘熷椤哄簭
-        calculation.value = calculation.value.map((item) => {
-          const newItem = newArrLookup[item.text];
-          return newItem ? newItem : item; // 濡傛灉 newItem 瀛樺湪锛屽垯杩斿洖 newItem锛屽惁鍒欒繑鍥炲師濮� item
-        });
-      });
-
-      abnormalData(obj);
-    },
-
-    // 鑾峰彇寮傚父鏁版嵁
-    async abnormalData(obj) {
-      const res = await getAbnormalData(obj);
-      this.countExceptionProjectData = res.data;
-    },
-
-    //鍦板浘璇︽儏
-    showDetails(row) {
-      console.log(row);
-    },
-
-    labelStyleChange(currentLabel) {
-      if (lastLabel) {
-        lastLabel.setBackgroundColor("#fff");
-        lastLabel.setFontColor("var(--el-color-primary)");
-      }
-      currentLabel.setBackgroundColor("var(--el-color-primary)");
-      currentLabel.setFontColor("#fff");
-      lastLabel = currentLabel;
-    },
-    resetQuery() {
-      this.queryParams = {
-        area: "",
-        start: "",
-        end: "",
-        startTime: "",
-        endTime: "",
-      };
-      this.timeMerge = [];
-      this.handleQuery();
-    },
-
-    // 鍦板浘鎼滅储
-    async searchList() {
-      // await search()
-      this.mapRef.moveTo(105.37281, 30.87145);
-    },
-    mapQuery() {},
-  },
 };
 </script>
 
 <style scoped lang="scss">
 .home {
-  padding: 10px;
-  background-color: #f3f7fc;
-  min-height: calc(100vh - 85px);
-  overflow-x: auto;
+    padding: 10px;
+    background-color: #f3f7fc;
+    min-height: calc(100vh - 85px);
+    overflow-x: auto;
 
-  .overview {
-    padding: 10px 0 0 10px;
-    height: 280px;
-    min-width: 1600px;
-    background-color: #fff;
-    border-radius: 6px;
+    .overview {
+        padding: 10px 0 0 10px;
+        height: 280px;
+        min-width: 1600px;
+        background-color: #fff;
+        border-radius: 6px;
 
-    .overview-top {
-      display: flex;
-      justify-content: space-between;
+        .overview-top {
+            display: flex;
+            justify-content: space-between;
 
-      .title {
-        font-size: 16px;
-      }
+            .title {
+                font-size: 16px;
+            }
 
-      .qurey {
-        font-size: 12px;
-        font-weight: 100;
-      }
+            .qurey {
+                font-size: 12px;
+                font-weight: 100;
+            }
+        }
     }
-  }
 
-  .search-form {
-    display: flex;
-    justify-content: flex-end;
-  }
+    .search-form {
+        display: flex;
+        justify-content: flex-end;
+    }
 }
 // ::v-deep .el-form-item {
 //     display: inline-block !important;
 //     margin-right: 10px;
 // }
 ::v-deep .el-form-item--medium .el-form-item__content {
-  display: inline-block !important;
+    display: inline-block !important;
 }
 ::v-deep .el-form-item__label {
-  font-size: 12px;
-  font-weight: 400;
+    font-size: 12px;
+    font-weight: 400;
 }
 
 ::v-deep .el-button {
-  font-size: 12px;
+    font-size: 12px;
 }
 
 ::v-deep.el-input__inner {
-  font-size: 12px;
-  height: 32px;
+    font-size: 12px;
+    height: 32px;
 }
 
 ::v-deep.el-range-input {
-  font-size: 12px;
+    font-size: 12px;
 }
 
 ::v-deep.el-select__placeholder {
-  font-size: 12px;
+    font-size: 12px;
 }
-::v-deep input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  -webkit-appearance: none;
-  margin: 0;
+::v-deep input[type='number']::-webkit-inner-spin-button,
+input[type='number']::-webkit-outer-spin-button {
+    -webkit-appearance: none;
+    margin: 0;
 }
-input[type="number"] {
-  -moz-appearance: textfield;
+input[type='number'] {
+    -moz-appearance: textfield;
 }
 .search_from {
-  display: flex;
-  justify-self: justify-end;
-  gap: 10px;
+    display: flex;
+    justify-self: justify-end;
+    gap: 10px;
 }
 .flex {
-  display: flex;
-  gap: 2%;
+    display: flex;
+    gap: 2%;
 }
 .flex_card {
-  width: 49%;
-  margin: 10px 0px;
+    width: 49%;
+    margin: 10px 0px;
 }
 .from_input {
-  display: flex;
-  gap: 10px;
-  font-size: 12px;
+    display: flex;
+    gap: 10px;
+    font-size: 12px;
+}
+.map_div {
+    display: flex;
+    width: 100%;
+    height: 500px;
+    border: #dbdeea;
 }
 </style>
 

--
Gitblit v1.8.0