From aab6b50f31e0da9736a8a221b082b246cd47c498 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 21 一月 2026 16:35:13 +0800
Subject: [PATCH] 录像扣分页面调整新增内容

---
 src/views/system/check/demeritRecord/index.vue |  228 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 136 insertions(+), 92 deletions(-)

diff --git a/src/views/system/check/demeritRecord/index.vue b/src/views/system/check/demeritRecord/index.vue
index c29d7c5..c793bf1 100644
--- a/src/views/system/check/demeritRecord/index.vue
+++ b/src/views/system/check/demeritRecord/index.vue
@@ -1,10 +1,9 @@
-
 <template>
   <div class="demerit-record-table">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
       <el-form-item label="鍖哄煙" prop="belongUnit">
         <el-select v-model="queryParams.deptId" @change="handleQuery" clearable placeholder="杩愮淮鑰冩牳鍗曚綅">
-          <el-option v-for="(item,index) in deptList" :key="index" :label="item.label" :value="item.value">
+          <el-option v-for="(item, index) in deptList" :key="index" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </el-form-item>
@@ -17,111 +16,73 @@
       </el-form-item>
 
       <el-form-item label="閫夋嫨鏃ユ湡:" v-show="queryParams.searchType === 'day'">
-        <el-date-picker
-          v-model="queryParams.dayDate"
-          type="date"
-          placeholder="閫夋嫨鏃ユ湡"
-          format="yyyy-MM-dd"
-          value-format="yyyy-MM-dd"
-          size="small"
-        ></el-date-picker>
+        <el-date-picker v-model="queryParams.dayDate" type="daterange"  range-separator="鑷�" start-placeholder="閫夋嫨鏃ユ湡"
+        end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd"  value-format="yyyy-MM-dd" size="small"></el-date-picker>
       </el-form-item>
 
-      <el-form-item label="閫夋嫨鏈堜唤:"  v-show="queryParams.searchType === 'month'">
-        <el-date-picker
-          v-model="queryParams.monthDate"
-          type="month"
-          placeholder="閫夋嫨鏈堜唤"
-          format="yyyy-MM"
-          value-format="yyyy-MM"
-          size="small"
-        ></el-date-picker>
+      <el-form-item label="閫夋嫨鏈堜唤:" v-show="queryParams.searchType === 'month'">
+        <el-date-picker v-model="queryParams.monthDate" type="monthrange" range-separator="鑷�" start-placeholder="寮�濮嬫湀浠�"
+          end-placeholder="缁撴潫鏈堜唤" format="yyyy-MM" value-format="yyyy-MM" size="small"></el-date-picker>
       </el-form-item>
       <el-form-item label="鍒嗗缓绫诲瀷">
         <el-select v-model="queryParams.constructionType" @change="handleQuery" clearable placeholder="鍒嗗缓绫诲瀷">
-          <el-option v-for="(item,index) in constructionTypeList" :key="index" :label="item.label" :value="item.value">
+          <el-option v-for="(item, index) in constructionTypeList" :key="index" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">鎼滅储</el-button>
         <el-button icon="el-icon-refresh" size="small" @click="resetQuery">閲嶇疆</el-button>
+        <el-button size="small" @click="updateData">鏇存柊</el-button>
       </el-form-item>
     </el-form>
-    <el-table
-      :data="tableData"
-      border
-      stripe
-      style="width: 100%"
-      :header-cell-style="{ 'background-color': '#f5f7fa', 'font-weight': 'bold' }"
-    >
-      <el-table-column
-        prop="deptName"
-        label="鍖哄煙鍚�"
-        align="center"
-        min-width="150"
-      ></el-table-column>
+    <el-table :data="tableData" border stripe style="width: 100%" v-loading="loading"
+      :header-cell-style="{ 'background-color': '#f5f7fa', 'font-weight': 'bold' }">
+      <el-table-column prop="deptName" label="鍖哄煙鍚�" align="center" min-width="150"></el-table-column>
 
-      <el-table-column
-        prop="constructionType"
-        label="鍒嗗缓璁剧被鍨�"
-        align="center"
-        min-width="180"
-      >
+      <el-table-column prop="constructionType" label="鍒嗗缓璁剧被鍨�" align="center" min-width="180">
         <template slot-scope="scope">
           {{ formatConstructionType(scope.row.constructionType) }}
         </template>
       </el-table-column>
 
-      <el-table-column
-        prop="demerit"
-        label="鎵e垎"
-        align="center"
-        min-width="120"
-      >
+      <el-table-column prop="demerit" label="鎵e垎" align="center" min-width="120">
         <template slot-scope="scope">
           {{ formatDemerit(scope.row.demerit) }}
         </template>
       </el-table-column>
 
-      <el-table-column
-        prop="recordTime"
-        label="鏃ユ湡"
-        align="center"
-        min-width="200"
-      >
+      <el-table-column prop="recordTime" label="鏃ユ湡" align="center" min-width="200">
         <template slot-scope="scope">
           <!-- recordTime鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"锛岄�氳繃split鎴彇鏃ユ湡閮ㄥ垎 -->
           {{ scope.row.recordTime ? scope.row.recordTime.split(' ')[0] : '-' }}
         </template>
       </el-table-column>
-
-      <el-table-column
-        prop="action"
-        label="鎿嶄綔"
-        align="=center">
+      <el-table-column prop="videoOnlineRate" label="鍦ㄧ嚎鐜�" align="center" min-width="200">
+        <template slot-scope="scope">
+          {{ formatDemeritRate(scope.row.videoOnlineRate) }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="action" label="鎿嶄綔" align="=center">
         <template slot-scope="scope">
           <el-button type="primary" size="mini" @click="exportInfo(scope.row)">瀵煎嚭璇︽儏</el-button>
 
         </template>
       </el-table-column>
     </el-table>
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getPage"
-    />
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getPage" />
   </div>
 </template>
 <script>
-import { getPage,exportInfo
+import {
+  getPage, exportInfo,executeDecemberStats
 } from "@/api/platform/demeritRecord"
 export default {
   name: 'DemeritRecordTable',
   data() {
     return {
+      loading:false,
       deptList: [
         { value: 201, label: '鑷祦浜曞尯' },   // ZLJQ鏈�鍚庝竴涓睘鎬�201锛岀涓�涓睘鎬�"鑷祦浜曞尯"
         { value: 202, label: '璐′簳鍖�' },     // GJQ鏈�鍚庝竴涓睘鎬�202锛岀涓�涓睘鎬�"璐′簳鍖�"
@@ -131,25 +92,29 @@
         { value: 101, label: '瀵岄『鍘�' },     // FSX鏈�鍚庝竴涓睘鎬�101锛岀涓�涓睘鎬�"瀵岄『鍘�"
         { value: 210, label: '楂樻柊鍖�' }      // GXQ鏈�鍚庝竴涓睘鎬�210锛岀涓�涓睘鎬�"楂樻柊鍖�"
       ],
-      queryParams:{
+      queryParams: {
         searchType: 'day',
         dayDate: null,
-        monthDate:null,
+        monthDate: null,
+        dayStart: null,
+        dayEnd: null,
+        monthStart: null,
+        monthEnd: null,
         deptId: '',
         constructionType: '',
         pageNum: 1,
         pageSize: 20
       },
-      constructionTypeList:[
-        { label:'涓�浜屾湡',value:'PHASE_ONE_TWO' },
-        { label:'涓夋湡',value:'PHASE_THREE' },
-        { label:'鍥涘尯浜鸿劯',value:'PHASE_FOURTH' },
-        { label:'涓滈儴鏂板煄',value:'EASTERN_NEW_CITY' },
-        { label:'娌挎哗浜屾湡浜鸿劯',value:'YAN_TAN_PHASE_TWO_FACE' },
-        { label: '鍏ュ窛鍗虫',value: 'CHECK_ENTER_SICHUAN'}
+      constructionTypeList: [
+        { label: '涓�浜屾湡', value: 'PHASE_ONE_TWO' },
+        { label: '涓夋湡', value: 'PHASE_THREE' },
+        { label: '鍥涘尯浜鸿劯', value: 'PHASE_FOURTH' },
+        { label: '涓滈儴鏂板煄', value: 'EASTERN_NEW_CITY' },
+        { label: '娌挎哗浜屾湡浜鸿劯', value: 'YAN_TAN_PHASE_TWO_FACE' },
+        { label: '鍏ュ窛鍗虫', value: 'CHECK_ENTER_SICHUAN' }
       ],
       // 琛ㄦ牸鏁版嵁锛屽疄闄呴」鐩腑浠庢帴鍙h幏鍙�
-      total:0,
+      total: 0,
       tableData: [
       ],
       // 寤鸿绫诲瀷鏄犲皠锛岀敤浜庡皢鑻辨枃鏍囪瘑杞崲涓轰腑鏂囨樉绀�
@@ -157,9 +122,9 @@
         'PHASE_ONE_TWO': '涓�浜屾湡',
         'PHASE_THREE': '涓夋湡',
         'PHASE_FOURTH': '鍥涘尯浜鸿劯',
-        'EASTERN_NEW_CITY':'涓滈儴鏂板煄',
-        'YAN_TAN_PHASE_TWO_FACE':'娌挎哗浜屾湡浜鸿劯',
-        'CHECK_ENTER_SICHUAN':'鍏ュ窛鍗虫',
+        'EASTERN_NEW_CITY': '涓滈儴鏂板煄',
+        'YAN_TAN_PHASE_TWO_FACE': '娌挎哗浜屾湡浜鸿劯',
+        'CHECK_ENTER_SICHUAN': '鍏ュ窛鍗虫',
       }
     };
   },
@@ -175,42 +140,113 @@
 
   },
   methods: {
-    exportInfo(row){
+    updateData(){
+      if (this.loading){
+        return
+      }
+      this.loading = true
+      executeDecemberStats().then(res =>{
+        if (res.code === 200){
+          this.$message("鎵ц鎴愬姛")
+        }
+        this.loading = false
+      })
+    },
+    exportInfo(row) {
       console.log(row)
       let name = row.deptName + '璁惧璇︽儏.xlsx'
-      this.download('demeritRecord/exportInfo/' +row.id,
-        {},
+      this.download('demeritRecord/exportInfo',
+        {
+          id:row.id,
+          date:row.recordTime,
+          deptId:row.deptId,
+          type:row.constructionType
+        },
         `${name}`)
     },
-    init(){
+    init() {
       // 鍒濆鍖栨煡璇㈠弬鏁�
       this.getPage();
 
     },
-    getPage(){
-      if (this.queryParams.searchType === "day"){
+    getPage() {
+      console.log(this.queryParams.dayDate)
+      this.queryParams.dayStart = null;
+      this.queryParams.dayEnd = null;
+      this.queryParams.monthStart = null;
+      this.queryParams.monthEnd = null;
+      let from = null;
+      if (this.queryParams.searchType === "day") {
         this.queryParams.monthDate = null;
-      }else{
-        this.queryParams.dayDate = null;
-      }
-      let from = {...this.queryParams}
 
-      getPage(from).then(res =>{
-        if (res.code === 200){
+        if (this.queryParams.dayDate && this.queryParams.dayDate.length === 2) {
+          this.queryParams.dayStart = this.queryParams.dayDate[0];
+          this.queryParams.dayEnd = this.queryParams.dayDate[1];
+        }
+        from = {
+          searchType: this.queryParams.searchType,
+          dayStart: this.queryParams.dayStart,
+          dayEnd: this.queryParams.dayEnd,
+          deptId: this.queryParams.deptId,
+          constructionType: this.queryParams.constructionType,
+          pageNum: this.queryParams.pageNum,
+          pageSize: this.queryParams.pageSize
+        }
+      } else {
+        this.queryParams.dayDate = null;
+        if (this.queryParams.monthDate && this.queryParams.monthDate.length === 2) {
+          const monthStart = this.queryParams.monthDate[0];
+          const monthEnd = this.queryParams.monthDate[1];
+
+
+          const [startYear, startMonth] = monthStart.split('-').map(Number);
+          // 鏈堜唤琛ラ浂锛屾瘮濡� 2025-1 鈫� 2025-01
+          const formattedStartMonth = String(startMonth).padStart(2, '0');
+          // 鎷兼帴鎴愬畬鏁寸殑鏃ユ湡鏃堕棿鏍煎紡锛屽吋瀹筎imestamp瑙f瀽
+          this.queryParams.monthStart = `${startYear}-${formattedStartMonth}-01 00:00:00`;
+
+
+          // 淇2锛氭爣鍑嗗寲缁撴潫鏈堜唤鏍煎紡锛屾坊鍔犳椂闂存埑骞惰ˉ闆�
+
+          const [year, month] = monthEnd.split('-').map(Number);
+          const lastDay = new Date(year, month, 0).getDate();
+          // 鏈堜唤鍜屾棩鏈熼兘琛ラ浂锛屾瘮濡� 2025-11-3 鈫� 2025-11-03
+          const formattedMonth = String(month).padStart(2, '0');
+          const formattedDay = String(lastDay).padStart(2, '0');
+          // 鎷兼帴鎴愬綋鏈堟渶鍚庝竴澶╃殑23:59:59锛岀‘淇濊鐩栨暣涓湀浠�
+          this.queryParams.monthEnd = `${year}-${formattedMonth}-${formattedDay} 23:59:59`;
+
+          from = {
+            searchType: this.queryParams.searchType,
+            monthStart: this.queryParams.monthStart,
+            monthEnd: this.queryParams.monthEnd,
+            deptId: this.queryParams.deptId,
+            constructionType: this.queryParams.constructionType,
+            pageNum: this.queryParams.pageNum,
+            pageSize: this.queryParams.pageSize
+          }
+        }
+      }
+      getPage(from).then(res => {
+        if (res.code === 200) {
           this.tableData = res.data;
           this.total = res.total
         }
       })
     },
-    handleQuery(){
+    handleQuery() {
       this.queryParams.pageNum = 1;
       this.getPage()
     },
-    resetQuery(){
+    resetQuery() {
       this.queryParams = {
         searchType: 'day',
         dayDate: null,
-        monthDate:null,
+        monthDate: null,
+        dayStart: null,
+        dayEnd: null,
+        monthStart: null,
+        monthEnd: null,
         deptId: '',
         constructionType: '',
         pageNum: 1,
@@ -225,6 +261,14 @@
     // 鏍煎紡鍖栨墸鍒嗘樉绀猴紝淇濈暀涓�浣嶅皬鏁�
     formatDemerit(value) {
       return value.toFixed(1);
+    },
+    formatDemeritRate(value) {
+      if (value !== null && value !== 0) {
+        return value.toFixed(1) + "%";
+      } else {
+        return "鏆傛棤"
+      }
+
     }
   }
 };

--
Gitblit v1.8.0