From 69250232abffb8b578d9b94c20f4d560492efa02 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期日, 04 一月 2026 19:26:33 +0800
Subject: [PATCH] Merge branch 'dev_tide_gybjyhglxt' into dev_tide_gybjyhglxt_xindao
---
src/views/alarmManagement/alarmConfig/alarmRule.vue | 355 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 202 insertions(+), 153 deletions(-)
diff --git a/src/views/alarmManagement/alarmConfig/alarmRule.vue b/src/views/alarmManagement/alarmConfig/alarmRule.vue
index ef90a36..b2e44be 100644
--- a/src/views/alarmManagement/alarmConfig/alarmRule.vue
+++ b/src/views/alarmManagement/alarmConfig/alarmRule.vue
@@ -1,173 +1,222 @@
<template>
- <div class="alarm-rule-config">
- <el-card shadow="never" class="search-card">
- <el-form :inline="true" :model="searchForm" class="demo-form-inline">
- <el-form-item label="瑙勫垯鍚嶇О">
- <el-input v-model="searchForm.ruleName" placeholder="璇疯緭鍏ヨ鍒欏悕绉�" />
- </el-form-item>
- <el-form-item label="璁惧绫诲瀷">
- <el-select v-model="searchForm.equipmentType" placeholder="璇烽�夋嫨璁惧绫诲瀷">
- <el-option label="宸ヨ壓璁惧" value="宸ヨ壓璁惧" />
- <el-option label="妫�娴嬭澶�" value="妫�娴嬭澶�" />
- <el-option label="鍏朵粬璁惧" value="鍏朵粬璁惧" />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" icon="el-icon-search" @click="handleSearch">鎼滅储</el-button>
- <el-button icon="el-icon-refresh" @click="handleReset">閲嶇疆</el-button>
- </el-form-item>
- </el-form>
- </el-card>
-
- <el-card shadow="never" class="table-card">
- <template #header>
- <div class="card-header">
- <span>鎶ヨ瑙勫垯閰嶇疆</span>
- <el-button type="primary" icon="el-icon-plus" @click="handleAdd">鏂板瑙勫垯</el-button>
- </div>
- </template>
- <el-table :data="ruleList" style="width: 100%" :header-cell-style="{textAlign: 'center'}" :cell-style="{textAlign: 'center'}">
- <el-table-column type="index" label="搴忓彿" width="80" />
- <el-table-column prop="ruleName" label="瑙勫垯鍚嶇О" />
- <el-table-column prop="equipmentType" label="璁惧绫诲瀷" />
- <el-table-column prop="parameter" label="鐩戞帶鍙傛暟" />
- <el-table-column prop="alarmLevel" label="鎶ヨ绾у埆" />
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="180" show-overflow-tooltip/>
- <el-table-column prop="status" label="鐘舵��" width="150">
- <template #default="scope">
- <el-switch v-model="scope.row.status" active-text="鍚敤" inactive-text="绂佺敤" />
- </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="150" fixed="right">
- <template #default="scope">
- <el-button size="small" type="text" @click="handleEdit(scope.row)">缂栬緫</el-button>
- <el-button size="small" type="text" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pagination">
- <el-pagination
- layout="total, sizes, prev, pager, next, jumper"
- :total="ruleList.length"
- :page-size="10"
- :page-sizes="[10, 20, 30, 50]"
+ <div class="app-container">
+ <el-form :model="filters" :inline="true">
+ <el-form-item label="瑙勫垯鍚嶇О">
+ <el-input
+ v-model="filters.deviceName"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ヨ鍒欏悕绉�"
+ clearable
+ @change="getTableData"
/>
+ </el-form-item>
+ <el-form-item label="璁惧绫诲瀷">
+ <el-input
+ v-model="filters.deviceModel"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ヨ澶囩被鍨�"
+ clearable
+ @change="getTableData"
+ />
+ </el-form-item>
+ <el-form-item label="鐩戞帶鍙傛暟">
+ <el-input
+ v-model="filters.supplierName"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ョ洃鎺у弬鏁�"
+ clearable
+ @change="getTableData"
+ />
+ </el-form-item>
+ </el-form>
+ <div class="table_list">
+ <div class="actions">
+ <div></div>
+ <div>
+ <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
+ <el-button
+ type="danger"
+ icon="Delete"
+ :disabled="multipleList.length <= 0"
+ @click="deleteRow(multipleList.map((item) => item.id))"
+ >
+ 鎵归噺鍒犻櫎
+ </el-button>
+ </div>
</div>
- </el-card>
+ <PIMTable
+ rowKey="id"
+ isSelection
+ :column="columns"
+ :tableData="dataList"
+ :page="{
+ current: pagination.currentPage,
+ size: pagination.pageSize,
+ total: pagination.total,
+ }"
+ @selection-change="handleSelectionChange"
+ @pagination="changePage"
+ >
+ </PIMTable>
+ </div>
+ <Modal ref="modalRef" @success="getTableData"></Modal>
+ <el-dialog v-model="qrDialogVisible" title="浜岀淮鐮�" width="300px">
+ <div style="text-align:center;">
+ <img :src="qrCodeUrl" alt="浜岀淮鐮�" style="width:200px;height:200px;" />
+ <div style="margin:10px 0;">
+ <el-button type="primary" @click="downloadQRCode">涓嬭浇浜岀淮鐮佸浘鐗�</el-button>
+ </div>
+ </div>
+ </el-dialog>
</div>
</template>
-<script>
-export default {
- name: 'AlarmRule',
- data() {
- return {
- searchForm: {
- ruleName: '',
- equipmentType: ''
- },
- ruleList: [
- {
- id: 1,
- ruleName: '娓╁害杩囬珮鎶ヨ',
- equipmentType: '宸ヨ壓璁惧',
- parameter: '娓╁害',
- alarmLevel: '涓ラ噸',
- createTime: '2025-12-01 10:30:00',
- status: true
- },
- {
- id: 2,
- ruleName: '鍘嬪姏寮傚父鎶ヨ',
- equipmentType: '宸ヨ壓璁惧',
- parameter: '鍘嬪姏',
- alarmLevel: '涓瓑',
- createTime: '2025-12-02 14:20:00',
- status: true
- },
- {
- id: 3,
- ruleName: '娴侀噺杩囦綆鎶ヨ',
- equipmentType: '妫�娴嬭澶�',
- parameter: '娴侀噺',
- alarmLevel: '杞诲井',
- createTime: '2025-12-03 09:15:00',
- status: false
- },
- {
- id: 4,
- ruleName: '鐢靛帇涓嶇ǔ瀹氭姤璀�',
- equipmentType: '鍏朵粬璁惧',
- parameter: '鐢靛帇',
- alarmLevel: '涓瓑',
- createTime: '2025-12-04 16:45:00',
- status: true
- },
- {
- id: 5,
- ruleName: '娑蹭綅寮傚父鎶ヨ',
- equipmentType: '宸ヨ壓璁惧',
- parameter: '娑蹭綅',
- alarmLevel: '涓ラ噸',
- createTime: '2025-12-05 11:20:00',
- status: true
- }
- ]
- }
+<script setup>
+import { usePaginationApi } from "../../../hooks/usePaginationApi.jsx";
+import { getLedgerPage, delLedger } from "../../..//api/equipmentManagement/ledger.js";
+import { onMounted, getCurrentInstance } from "vue";
+import Modal from "./Modal.vue";
+import { ElMessageBox, ElMessage } from "element-plus";
+import dayjs from "dayjs";
+import { ref } from "vue";
+
+defineOptions({
+ name: "璁惧鍙拌处",
+});
+
+// 琛ㄦ牸澶氶�夋閫変腑椤�
+const multipleList = ref([]);
+const { proxy } = getCurrentInstance();
+const modalRef = ref();
+const qrDialogVisible = ref(false);
+const qrCodeUrl = ref("");
+const qrRowData = ref(null);
+
+const {
+ filters,
+ columns,
+ dataList,
+ pagination,
+ getTableData,
+ resetFilters,
+ onCurrentChange,
+} = usePaginationApi(
+ getLedgerPage,
+ {
+ deviceName: undefined,
+ deviceModel: undefined,
+ supplierName: undefined,
+ unit: undefined,
+ entryDateStart: undefined,
+ entryDateEnd: undefined,
},
- methods: {
- handleSearch() {
- console.log('鎼滅储', this.searchForm)
+ [
+ {
+ label: "瑙勫垯鍚嶇О",
+ align: "center",
+ prop: "deviceName",
},
- handleReset() {
- this.searchForm = {
- ruleName: '',
- equipmentType: ''
- }
+ {
+ label: "璁惧绫诲瀷",
+ align: "center",
+ prop: "deviceModel",
},
- handleAdd() {
- console.log('鏂板瑙勫垯')
+ {
+ label: "鐩戞帶鍙傛暟",
+ align: "center",
+ prop: "supplierName",
},
- handleEdit(row) {
- console.log('缂栬緫瑙勫垯', row)
+ {
+ label: "鎶ヨ绾у埆",
+ align: "center",
+ prop: "unit",
},
- handleDelete(row) {
- console.log('鍒犻櫎瑙勫垯', row)
+ {
+ label: "鍒涘缓鏃堕棿",
+ align: "center",
+ prop: "createTime",
+ },
+ {
+ label: "鏄惁鍚敤",
+ align: "center",
+ prop: "status",
+ },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ align: "center",
+ fixed: 'right',
+ width: 150,
+ operation: [
+ {
+ name: "缂栬緫",
+ type: "text",
+ clickFun: (row) => {
+ edit(row.id)
+ },
+ },
+ ],
+ },
+ ]
+);
+
+// 澶氶�夊悗鍋氫粈涔�
+const handleSelectionChange = (selectionList) => {
+ multipleList.value = selectionList;
+};
+
+const add = () => {
+ modalRef.value.openModal();
+};
+const edit = (id) => {
+ modalRef.value.loadForm(id);
+};
+const changePage = ({ page, limit }) => {
+ pagination.currentPage = page;
+ pagination.pageSize = limit;
+ onCurrentChange(page);
+};
+const deleteRow = (id) => {
+ ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }).then(async () => {
+ const { code } = await delLedger(id);
+ if (code == 200) {
+ ElMessage({
+ type: "success",
+ message: "鍒犻櫎鎴愬姛",
+ });
+ getTableData();
}
+ });
+};
+
+const changeDaterange = (value) => {
+ if (value) {
+ filters.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
+ filters.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
+ } else {
+ filters.entryDateStart = undefined;
+ filters.entryDateEnd = undefined;
}
-}
+ getTableData();
+};
+
+
+onMounted(() => {
+ getTableData();
+});
</script>
-<style scoped>
-.alarm-rule-config {
- padding: 16px;
- background-color: #f0f2f5;
- min-height: 100vh;
+<style lang="scss" scoped>
+.table_list {
+ margin-top: unset;
}
-
-.search-card {
- margin-bottom: 16px;
- border-radius: 8px;
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-}
-
-.table-card {
- border-radius: 8px;
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-}
-
-.card-header {
+.actions {
display: flex;
justify-content: space-between;
- align-items: center;
- padding: 0 20px;
+ margin-bottom: 10px;
}
-
-.pagination {
- margin-top: 16px;
- display: flex;
- justify-content: flex-end;
- padding-right: 20px;
-}
-
</style>
--
Gitblit v1.9.3