From 14c7c489dccd062244410afd27c7235db3d27d63 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 24 四月 2024 16:00:08 +0800
Subject: [PATCH] 考核结果一级页面

---
 src/views/system/result/index.vue |  371 ++++++++++++++++++++--------------------------------
 1 files changed, 145 insertions(+), 226 deletions(-)

diff --git a/src/views/system/result/index.vue b/src/views/system/result/index.vue
index 334fc76..ac0043a 100644
--- a/src/views/system/result/index.vue
+++ b/src/views/system/result/index.vue
@@ -1,5 +1,12 @@
 <template>
   <div id="warp">
+    <div>
+      <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" style="margin-bottom: 10px">
+        <el-menu-item index="1">鐪佸巺鑰冩牳</el-menu-item>
+        <el-menu-item index="2">甯傚眬鑰冩牳</el-menu-item>
+      </el-menu>
+    </div>
+
     <div class="data-chart-container">
       <el-card class="data-card" :body-style="{ height: '100%' }">
         <div class="card-content">
@@ -10,239 +17,56 @@
             </el-date-picker>
           </div>
           </div>
-
           <div class="echart-container">
             <div id="barChart" ref="barChart"></div>
           </div>
         </div>
       </el-card>
     </div>
-    <el-row :gutter="100">
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              鑷祦浜�
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
+
+    <div>
+      <el-row :gutter="100">
+        <el-col :span="6" v-for="(city, index) in checkScoreList" :key="index">
+          <div class="city-warp">
+            <div class="city">
+              <div class="title">
+                  {{ translateDeptId(index) }}
               </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
+              <div class="score-warp">
+                  <div class="score-item">
+                  <div style="font-size: 15px; margin-bottom: 15px">{{ formatCreateDate(city[0].createTime) }}</div>
+                  </div>
+                <div v-for="(score, scoreIndex) in city" :key="scoreIndex">
+                  <div class="score-item">
+                    <div v-if="score.examineCategory == 0">杞﹁締锛�</div>
+                    <div v-else-if="score.examineCategory == 1">浜鸿劯锛�</div>
+                    <div v-else-if="score.examineCategory == 2">瑙嗛锛�</div>
+                    <div class="score">{{ score.score }}</div>
+                  </div>
+                </div>
               </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
+              <div class="bottom-publish">
+                <el-button
+                  size="medium"
+                  :type="isAnyUnpublished(city) ? 'success' : 'danger'"
+                  @click="publish(city)"
+                >
+                  {{ isAnyUnpublished(city) ? '鍙戝竷' : '鍙栨秷' }}
+                </el-button>
+                <el-button size="medium" @click="jumpDetail(index)" type="info">璇︽儏</el-button>
               </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
             </div>
           </div>
-        </div>
-      </el-col>
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              瀵岄『
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" v-hasPermi="['calculate:rule:add']" type="success">鍙戝竷</el-button>
-              <el-button size="medium" v-hasPermi="['calculate:rule:query']" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              鑽e幙
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              娌挎哗鍖�
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-
-
-    </el-row>
-
-    <el-row style="margin-top: 30px" :gutter="100">
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              楂樻柊鍖�
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              澶у畨鍖�
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="6">
-        <div class="city-warp">
-          <div class="city">
-            <div class="title">
-              璐′簳鍖�
-            </div>
-            <div class="score-warp">
-              <div class="score-item">
-                <div style="font-size: 15px;margin-bottom: 15px">2024骞�4鏈�12鏃�</div>
-              </div>
-              <div class="score-item">
-                <div>瑙嗛锛�</div>
-                <div class="score">99.5</div>
-              </div>
-              <div class="score-item">
-                <div>浜鸿劯锛�</div>
-                <div class="score">87</div>
-              </div>
-              <div class="score-item">
-                <div>杞﹁締锛�</div>
-                <div class="score">94</div>
-              </div>
-
-            </div>
-            <div class="bottom-publish">
-              <el-button size="medium" type="success">鍙戝竷</el-button>
-              <el-button size="medium" @click="jumpDetail" type="info">璇︽儏</el-button>
-            </div>
-          </div>
-        </div>
-      </el-col>
-    </el-row>
+        </el-col>
+      </el-row>
+    </div>
   </div>
 
 </template>
 
 <script>
+import { areaSelect } from '@/api/system/dept';
+import { listScore, getScore, delScore, addScore, updateScore,publishScore} from "@/api/platform/check-score";
 import * as echarts from 'echarts';
 let observer = null;
 let chart = null;
@@ -250,8 +74,14 @@
   name: 'index',
   data() {
     return {
+      province:{
+        id: [],
+        publish: null,
+      },
+      checkScoreList:[],
+      areaList:[],
       activeIndex: '1',
-      activeIndex2: '1',
+      activeIndex2: '2',
       date: '',
       company: '',
       dataList: {
@@ -260,11 +90,29 @@
         data2: [93.7, 93.5, 94.3, 96.5, 95.3, 94.2, 93.3],
         data3: [98.3, 94.3, 93.3, 95.5, 96.8, 96.1, 95.8],
       },
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        examineTag: null,
+        createTime: null
+      },
     }
   },
+  created() {
+    this.getList();
+    this.areaSelect();
+  },
+  mounted() {
+    chart = echarts.init(this.$refs.barChart);
+    this.initEchart();
+  },
   methods: {
-    jumpDetail() {
-      this.$router.push("/examine/detail")
+    jumpDetail(index) {
+      this.$router.push({
+        path: '/examine/detail',
+        query: {
+          index: index
+        }
+      })
     },
     initEchart() {
       const option = {
@@ -319,13 +167,82 @@
         ]
       }
       chart.setOption(option, true);
+    },
+    // 鍖哄煙涓嬫媺鏁版嵁
+    areaSelect() {
+      areaSelect().then(res => {
+        this.areaList = res.data;
+      })
+    },
+    translateDeptId(deptId) {
+      const department = this.areaList.find(dept => dept.id === deptId);
+      return department ? department.value : '鏈煡';
+    },
 
-    }
+    isAnyUnpublished(city) {
+      // 妫�鏌� city 鐨� score 鏁扮粍涓槸鍚︽湁浠讳綍涓�涓殑 publish 灞炴�т负 'UNPUBLISHED'
+      return city.some(score => score.publish === 'UNPUBLISHED');
+    },
+    formatCreateDate(dateString) {
+      const date = new Date(dateString);
+      const year = date.getFullYear();
+      const month = date.getMonth() + 1; // getMonth() 杩斿洖鐨勬湀浠芥槸浠� 0 寮�濮嬬殑锛屾墍浠ヨ鍔� 1
+      const day = date.getDate();
+
+      // 浣跨敤 padStart 鏂规硶纭繚鏈堜唤鍜屾棩鏈熷缁堟槸涓や綅鏁�
+      const formattedMonth = month.toString().padStart(2, '0');
+      const formattedDay = day.toString().padStart(2, '0');
+
+      return `${year}骞�${formattedMonth}鏈�${formattedDay}鍙穈;
+    },
+    /** 瀵艰埅鍒囨崲 */
+    handleSelect(key){
+      this.activeIndex = key; // 鏇存柊褰撳墠婵�娲荤殑鑿滃崟椤�
+      this.getList();
+    },
+    /** 鏌ヨ鑰冩牳鎴愮哗鍒楄〃 */
+    getList() {
+      this.loading = true;
+      if (this.activeIndex === '1') {
+        this.queryParams.examineTag = '0'; // 鐪佸巺鑰冩牳
+      } else if (this.activeIndex === '2') {
+        this.queryParams.examineTag = '1'; // 鍖哄煙鑰冩牳
+      }
+      // 鑾峰彇褰撳墠鏃ユ湡
+      const today = new Date();
+
+      // 璁$畻鏄ㄥぉ鐨勬棩鏈�
+      const yesterday = new Date(today);
+      yesterday.setDate(today.getDate() - 1);
+
+      // 灏嗘槰澶╃殑鏃ユ湡鏍煎紡鍖栦负瀛楃涓诧紝杩欓噷鍋囪鍚庣鏈熸湜鐨勬槸ISO 8601鏍煎紡
+      this.queryParams.createTime = yesterday.toISOString().split('T')[0];
+
+      console.log(this.queryParams);
+      listScore(this.queryParams).then(response => {
+        this.checkScoreList = response.data;
+        console.log(this.checkScoreList);
+        this.loading = false;
+      });
+    },
+    publish(city){
+      let text = this.isAnyUnpublished(city) ? "鍙戝竷":"鍙栨秷鍙戝竷";
+      const cityName = this.translateDeptId(parseInt(city[0].deptId));
+      this.province.publish = text === "鍙戝竷" ? "PUBLISHED" : "UNPUBLISHED";
+      this.province.id = city.map(city => city.id);
+      this.$modal.confirm('鏄惁纭' + text + '鑰冩牳鍚嶄负"' + cityName + '"鐨勬暟鎹」锛�')
+        .then(() => {
+          return publishScore(this.province);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(() => {
+          // 閿欒澶勭悊閫昏緫
+        });
+    },
   },
-  mounted() {
-    chart = echarts.init(this.$refs.barChart);
-    this.initEchart();
-  }
 }
 </script>
 
@@ -345,9 +262,10 @@
 .score {
   width: 60px;
   text-align: right;
+  padding: 3px 0;
 }
 #warp {
-  padding: 20px;
+  padding: 0 10px;
 }
 .city-warp {
   display: flex;
@@ -355,6 +273,7 @@
   align-items: center;
   justify-content: center;
   height: 210px;
+  margin-bottom: 25px;
 }
 .city {
   width: 240px;

--
Gitblit v1.8.0