From f40c4519fd3922ca8c9b3e08f6e8632954e6017d Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 19 九月 2025 11:59:01 +0800
Subject: [PATCH] 新需求

---
 src/views/system/work-order/distribute/index.vue |   26 +++++
 src/views/system/monitor/video/index.vue         |   13 ++
 src/api/platform/demeritRecord.js                |    9 +
 src/views/system/check/demeritRecord/index.vue   |  218 +++++++++++++++++++++++++++++++++++++++++++
 src/api/platform/work-order.js                   |    8 +
 src/views/system/check/template/index.vue        |    3 
 src/views/system/work-order/index.vue            |    3 
 7 files changed, 278 insertions(+), 2 deletions(-)

diff --git a/src/api/platform/demeritRecord.js b/src/api/platform/demeritRecord.js
new file mode 100644
index 0000000..1bc6ca9
--- /dev/null
+++ b/src/api/platform/demeritRecord.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getPage(params){
+  return request({
+    url:"/demeritRecord/getPage",
+    method:"get",
+    params: params
+  })
+}
diff --git a/src/api/platform/work-order.js b/src/api/platform/work-order.js
index 37f5e9a..fe96fcf 100644
--- a/src/api/platform/work-order.js
+++ b/src/api/platform/work-order.js
@@ -70,6 +70,14 @@
   })
 }
 
+export function delWorkOrderByIds(data){
+  return request({
+    url: '/work-order/delByIds',
+    method:'delete',
+    data:data
+  })
+}
+
 // 瀹℃牳宸ュ崟
 export function auditing(data) {
   return request({
diff --git a/src/views/system/check/demeritRecord/index.vue b/src/views/system/check/demeritRecord/index.vue
new file mode 100644
index 0000000..59b3c85
--- /dev/null
+++ b/src/views/system/check/demeritRecord/index.vue
@@ -0,0 +1,218 @@
+
+<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>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="鎼滅储绫诲瀷:">
+        <el-radio-group v-model="queryParams.searchType" size="small">
+          <el-radio label="day">鎸夋棩</el-radio>
+          <el-radio label="month">鎸夋湀</el-radio>
+        </el-radio-group>
+      </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-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>
+      <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>
+        </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-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-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"
+      >
+        <template slot-scope="scope">
+          {{ formatDemerit(scope.row.demerit) }}
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        prop="createTime"
+        label="鍒涘缓鏃ユ湡"
+        align="center"
+        min-width="200"
+      >
+        <template slot-scope="scope">
+          <!-- createTime鏍煎紡涓� "yyyy-MM-dd HH:mm:ss"锛岄�氳繃split鎴彇鏃ユ湡閮ㄥ垎 -->
+          {{ scope.row.createTime ? scope.row.createTime.split(' ')[0] : '-' }}
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getPage"
+    />
+  </div>
+</template>
+<script>
+import { getPage
+} from "@/api/platform/demeritRecord"
+export default {
+  name: 'DemeritRecordTable',
+  data() {
+    return {
+      deptList: [
+        { value: 201, label: '鑷祦浜曞尯' },   // ZLJQ鏈�鍚庝竴涓睘鎬�201锛岀涓�涓睘鎬�"鑷祦浜曞尯"
+        { value: 202, label: '璐′簳鍖�' },     // GJQ鏈�鍚庝竴涓睘鎬�202锛岀涓�涓睘鎬�"璐′簳鍖�"
+        { value: 102, label: '澶у畨鍖�' },     // DAQ鏈�鍚庝竴涓睘鎬�102锛岀涓�涓睘鎬�"澶у畨鍖�"
+        { value: 211, label: '娌挎哗鍖�' },     // YTQ鏈�鍚庝竴涓睘鎬�211锛岀涓�涓睘鎬�"娌挎哗鍖�"
+        { value: 203, label: '鑽e幙' },       // RX鏈�鍚庝竴涓睘鎬�203锛岀涓�涓睘鎬�"鑽e幙"
+        { value: 101, label: '瀵岄『鍘�' },     // FSX鏈�鍚庝竴涓睘鎬�101锛岀涓�涓睘鎬�"瀵岄『鍘�"
+        { value: 210, label: '楂樻柊鍖�' }      // GXQ鏈�鍚庝竴涓睘鎬�210锛岀涓�涓睘鎬�"楂樻柊鍖�"
+      ],
+      queryParams:{
+        searchType: 'day',
+        dayDate: null,
+        monthDate:null,
+        deptId: '',
+        constructionType: '',
+        pageNum: 1,
+        pageSize: 20
+      },
+      constructionTypeList:[
+        { label:'涓�浜屾湡',value:'PHASE_ONE_TWO' },
+        { label:'涓夋湡',value:'PHASE_THREE' },
+        { label:'鍥涙湡',value:'PHASE_FOURTH' }
+      ],
+      // 琛ㄦ牸鏁版嵁锛屽疄闄呴」鐩腑浠庢帴鍙h幏鍙�
+      total:0,
+      tableData: [
+      ],
+      // 寤鸿绫诲瀷鏄犲皠锛岀敤浜庡皢鑻辨枃鏍囪瘑杞崲涓轰腑鏂囨樉绀�
+      constructionTypeMap: {
+        'PHASE_ONE_TWO': '涓�浜屾湡',
+        'PHASE_THREE': '涓夋湡',
+        'PHASE_FOURTH': '鍥涙湡'
+      }
+    };
+  },
+  mounted() {
+    // 鍏抽敭淇锛氱Щ闄ゅ師鐢焤adio鐨刟ria-hidden灞炴��
+    this.$nextTick(() => {
+      const radioInputs = document.querySelectorAll('.el-radio__original');
+      radioInputs.forEach(input => {
+        input.removeAttribute('aria-hidden'); // 璁╄緟鍔╂妧鏈兘璇嗗埆鐒︾偣
+      });
+    });
+    this.init();
+
+  },
+  methods: {
+    init(){
+      // 鍒濆鍖栨煡璇㈠弬鏁�
+      this.getPage();
+
+    },
+    getPage(){
+      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){
+          this.tableData = res.data;
+          this.total = res.total
+        }
+      })
+    },
+    handleQuery(){
+      this.queryParams.pageNum = 1;
+      this.getPage()
+    },
+    resetQuery(){
+      this.queryParams = {
+        searchType: 'day',
+        dayDate: null,
+        monthDate:null,
+        deptId: '',
+        constructionType: '',
+        pageNum: 1,
+        pageSize: 20
+      };
+      this.getPage()
+    },
+    // 鏍煎紡鍖栧缓璁剧被鍨嬫樉绀�
+    formatConstructionType(type) {
+      return this.constructionTypeMap[type] || type;
+    },
+    // 鏍煎紡鍖栨墸鍒嗘樉绀猴紝淇濈暀涓�浣嶅皬鏁�
+    formatDemerit(value) {
+      return value.toFixed(1);
+    }
+  }
+};
+</script>
+<style>
+.demerit-record-table {
+  padding: 20px;
+  background-color: #fff;
+  border-radius: 4px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
+
+
+}
+</style>
diff --git a/src/views/system/check/template/index.vue b/src/views/system/check/template/index.vue
index 964d6d3..7f70c66 100644
--- a/src/views/system/check/template/index.vue
+++ b/src/views/system/check/template/index.vue
@@ -12,6 +12,7 @@
           />
         </el-select>
       </el-form-item>
+
       <el-form-item label="鑰冩牳鏍囩" prop="examineTag">
         <el-select v-model="queryParams.examineTag" placeholder="鑰冩牳鏍囩" clearable @change="handleQuery">
           <el-option
@@ -492,6 +493,8 @@
             }
           }
           this.form.ruleFormList = this.tempRuleFormList;
+          //鑰冩牳棰戠巼鍒濆鍖�
+          this.form.frequency = 0;
           if (this.form.id != null) {
             updateCheckTemplate(this.form).then(response => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
diff --git a/src/views/system/monitor/video/index.vue b/src/views/system/monitor/video/index.vue
index 7cf8ee8..5875df6 100644
--- a/src/views/system/monitor/video/index.vue
+++ b/src/views/system/monitor/video/index.vue
@@ -92,11 +92,19 @@
             </el-select>
           </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>
+            </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-form-item>
+
         </el-form>
         <!-- 瀵煎嚭鎸夐挳 -->
         <div v-hasPermi="['system:monitor:export']">
@@ -330,6 +338,11 @@
   dicts: ['sys_normal_disable', 'platform_yes_no', 'camera_state'],
   data() {
     return {
+      constructionTypeList:[
+        { label:'涓�浜屾湡',value:'PHASE_ONE_TWO' },
+        { label:'涓夋湡',value:'PHASE_THREE' },
+        { label:'鍥涙湡',value:'PHASE_FOURTH' }
+      ],
       deptList: [],
       // 鍒椾俊鎭�
       columns: [
diff --git a/src/views/system/work-order/distribute/index.vue b/src/views/system/work-order/distribute/index.vue
index f9177b6..803a7f9 100644
--- a/src/views/system/work-order/distribute/index.vue
+++ b/src/views/system/work-order/distribute/index.vue
@@ -112,6 +112,18 @@
           <el-button slot="reference" type="primary" size="mini" plain>蹇嵎涓嬪彂</el-button>
         </el-popover>
         <el-button size="mini" plain type="success" @click="handleAdd">鎵嬪姩鏂板宸ュ崟</el-button>
+        <el-popconfirm
+          @confirm="delDistribute"
+          title="纭畾瑕佸垹闄ゆ墍閫夊伐鍗曞悧锛�"
+          >
+          <el-button size="mini" plain type="danger" class="op" slot="reference">鎵归噺鍒犻櫎</el-button>
+        </el-popconfirm>
+        <el-popconfirm
+          @confirm="allDistribute"
+          title="纭畾瑕佷笅鍙戞墍鏈夊伐鍗曞悧锛�"
+        >
+          <el-button size="mini" plain type="danger" class="op" slot="reference">鍏ㄩ儴涓嬪彂</el-button>
+        </el-popconfirm>
         <right-toolbar :showSearch.sync="showSearch" @queryTable="page"></right-toolbar>
       </el-row>
     </el-row>
@@ -211,7 +223,7 @@
 import {distributeWorkOrder, fastDistribute, addWorkOrder, updateWorkOrder, selectedIdsDistribute, errorTypeAll} from '@/api/platform/work-order'
 import {workList} from "@/api/platform/unit";
 import { pointSelectData } from "@/api/platform/point";
-import {delWorkOrder} from "../../../../api/platform/work-order";
+import {delWorkOrder,delWorkOrderByIds} from "../../../../api/platform/work-order";
 export default {
   dicts: ['error_type'],
   name: 'Work-order-distribute',
@@ -329,6 +341,18 @@
     },
   },
   methods: {
+    delDistribute(){
+      console.log(this.multipleSelection)
+      this.multipleSelection.forEach(item =>{
+        console.log(item)
+      })
+      delWorkOrderByIds(this.multipleSelection).then(res =>{
+        if (res.code === 200){
+          this.$message.success("鍒犻櫎鎴愬姛!")
+        }
+        this.page();
+      })
+    },
     delWorkOrderClick(row){
       delWorkOrder(row.id)
       this.page()
diff --git a/src/views/system/work-order/index.vue b/src/views/system/work-order/index.vue
index 49fa946..36fa82f 100644
--- a/src/views/system/work-order/index.vue
+++ b/src/views/system/work-order/index.vue
@@ -99,7 +99,7 @@
           v-hasPermi="['work:order:delete']"
         >鍒犻櫎
         </el-button>
-        <el-button size="mini" plain type="info" @click="selectedDistribute" class="op">鎵归噺涓婃姤</el-button>
+        <el-button size="mini" plain type="primary" @click="selectedDistribute" class="op">鎵归噺涓婃姤</el-button>
       </el-col>
     </el-row>
 
@@ -201,6 +201,7 @@
                       @click="handleYwCondition(item)"
                     >澶勭悊涓婃姤
                     </el-button>
+
                     <el-button
                       class="my-button"
                       size="mini"

--
Gitblit v1.8.0