From 35e8bd80ff9d33a7ab01777f863a41ce97a2051a Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 14 八月 2025 14:54:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev_7004' into dev_7004 --- src/views/equipmentManagement/ledger/index.vue | 145 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 117 insertions(+), 28 deletions(-) diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue index fceba64..428a6d9 100644 --- a/src/views/equipmentManagement/ledger/index.vue +++ b/src/views/equipmentManagement/ledger/index.vue @@ -1,21 +1,55 @@ <template> <div class="app-container"> - <!-- <el-form :model="filters" :inline="true"> - <el-form-item label="鎼滅储"> + <el-form :model="filters" :inline="true"> + <el-form-item label="璁惧鍚嶇О"> <el-input - v-model="filters.searchText" + v-model="filters.deviceName" style="width: 240px" - placeholder="璇疯緭鍏�" + placeholder="璇疯緭鍏ヨ澶囧悕绉�" clearable :prefix-icon="Search" @change="getTableData" /> </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿"> + <el-input + v-model="filters.deviceModel" + style="width: 240px" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + clearable + :prefix-icon="Search" + @change="getTableData" + /> + </el-form-item> + <el-form-item label="渚涘簲鍟�"> + <el-input + v-model="filters.supplierName" + style="width: 240px" + placeholder="璇疯緭鍏ヤ緵搴斿晢" + clearable + :prefix-icon="Search" + @change="getTableData" + /> + </el-form-item> + <el-form-item label="鍗曚綅"> + <el-input + v-model="filters.unit" + style="width: 240px" + placeholder="璇疯緭鍏ュ崟浣�" + clearable + :prefix-icon="Search" + @change="getTableData" + /> + </el-form-item> + <el-form-item label="褰曞叆鏃ユ湡:"> + <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange" /> + </el-form-item> <el-form-item> <el-button type="primary" @click="getTableData">鎼滅储</el-button> <el-button @click="resetFilters">閲嶇疆</el-button> </el-form-item> - </el-form> --> + </el-form> <div class="table_list"> <div class="actions"> <div></div> @@ -45,22 +79,17 @@ @selection-change="handleSelectionChange" @pagination="changePage" > - <template #operation="{ row }"> - <el-button type="primary" text @click="edit(row.id)" icon="editPen"> - 缂栬緫 - </el-button> - <el-button - type="danger" - text - icon="delete" - @click="deleteRow(row.id)" - > - 鍒犻櫎 - </el-button> - </template> </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> @@ -71,6 +100,9 @@ import { onMounted, getCurrentInstance } from "vue"; import Modal from "./Modal.vue"; import { ElMessageBox, ElMessage } from "element-plus"; +import dayjs from "dayjs"; +import QRCode from "qrcode"; +import { ref } from "vue"; defineOptions({ name: "璁惧鍙拌处", @@ -80,6 +112,10 @@ const multipleList = ref([]); const { proxy } = getCurrentInstance(); const modalRef = ref(); +const qrDialogVisible = ref(false); +const qrCodeUrl = ref(""); +const qrRowData = ref(null); + const { filters, columns, @@ -91,7 +127,12 @@ } = usePaginationApi( getLedgerPage, { - searchText: undefined, + deviceName: undefined, + deviceModel: undefined, + supplierName: undefined, + unit: undefined, + entryDateStart: undefined, + entryDateEnd: undefined, }, [ { @@ -149,14 +190,29 @@ align: "center", prop: "createTime", }, - { - fixed: "right", - label: "鎿嶄綔", - dataType: "slot", - slot: "operation", - align: "center", - width: "200px", - }, + { + dataType: "action", + label: "鎿嶄綔", + align: "center", + fixed: 'right', + width: 140, + operation: [ + { + name: "缂栬緫", + type: "text", + clickFun: (row) => { + edit(row.id) + }, + }, + { + name: "鐢熸垚浜岀淮鐮�", + type: "text", + clickFun: (row) => { + showQRCode(row) + }, + }, + ], + }, ] ); @@ -171,8 +227,9 @@ const edit = (id) => { modalRef.value.loadForm(id); }; -const changePage = ({ page }) => { +const changePage = ({ page, limit }) => { pagination.currentPage = page; + pagination.pageSize = limit; onCurrentChange(page); }; const deleteRow = (id) => { @@ -192,6 +249,17 @@ }); }; +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(); +}; + const handleOut = () => { ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", { confirmButtonText: "纭", @@ -206,7 +274,28 @@ }); }; +const showQRCode = async (row) => { + // 浣犲彲浠ヨ嚜瀹氫箟浜岀淮鐮佸唴瀹癸紝姣斿 row.id 鎴� row.deviceName + const qrContent = JSON.stringify(row); // 鎴� `${row.id}` + qrCodeUrl.value = await QRCode.toDataURL(qrContent); + qrRowData.value = row; + qrDialogVisible.value = true; +}; + +const downloadQRCode = () => { + const a = document.createElement("a"); + a.href = qrCodeUrl.value; + a.download = `${qrRowData.value.deviceName || "浜岀淮鐮�"}.png`; + a.click(); +}; + onMounted(() => { + filters.entryDate = [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ] + filters.entryDateStart = dayjs().format("YYYY-MM-DD") + filters.entryDateEnd = dayjs().add(1, "day").format("YYYY-MM-DD") getTableData(); }); </script> -- Gitblit v1.9.3