From 2291b7406cdc184abfa1b1986baeb55499771343 Mon Sep 17 00:00:00 2001
From: ZN <zhang_12370@163.com>
Date: 星期一, 16 三月 2026 17:07:15 +0800
Subject: [PATCH] fix(设备管理): 修正添加维护接口的URL路径
---
src/pages/consumablesLogistics/dispatchLog/Record.vue | 197 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 197 insertions(+), 0 deletions(-)
diff --git a/src/pages/consumablesLogistics/dispatchLog/Record.vue b/src/pages/consumablesLogistics/dispatchLog/Record.vue
new file mode 100644
index 0000000..a4afc5e
--- /dev/null
+++ b/src/pages/consumablesLogistics/dispatchLog/Record.vue
@@ -0,0 +1,197 @@
+<template>
+ <div class="app-container">
+ <div class="search_form">
+ <div>
+ <span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>
+ <el-date-picker
+ v-model="searchForm.timeStr"
+ type="date"
+ placeholder="璇烽�夋嫨鏃ユ湡"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ clearable
+ @change="handleQuery"
+ />
+ <span class="search_title ml10">浜у搧鍚嶇О锛�</span>
+ <el-input
+ v-model="searchForm.productName"
+ style="width: 240px"
+ placeholder="璇疯緭鍏�"
+ clearable
+ @keyup.enter="handleQuery"
+ />
+ <span class="search_title ml10">鏉ユ簮锛�</span>
+ <el-select
+ v-model="searchForm.recordType"
+ style="width: 240px"
+ placeholder="璇烽�夋嫨"
+ clearable
+ >
+ <el-option
+ v-for="item in stockRecordTypeOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+ </div>
+ <div>
+ <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+ </div>
+ </div>
+
+ <div class="table_list">
+ <el-table
+ :data="tableData"
+ border
+ v-loading="tableLoading"
+ @selection-change="handleSelectionChange"
+ style="width: 100%"
+ height="calc(100vh - 18.5em)"
+ >
+ <el-table-column align="center" type="selection" width="55" />
+ <el-table-column align="center" label="搴忓彿" type="index" width="60" />
+ <el-table-column label="鍑哄簱鏃堕棿" prop="createTime" width="160" show-overflow-tooltip />
+ <el-table-column label="浜у搧鍚嶇О" prop="productName" min-width="160" show-overflow-tooltip />
+ <el-table-column label="瑙勬牸鍨嬪彿" prop="model" min-width="160" show-overflow-tooltip />
+ <el-table-column label="鍗曚綅" prop="unit" width="100" show-overflow-tooltip />
+ <el-table-column label="鍑哄簱鏁伴噺" prop="stockOutNum" width="110" show-overflow-tooltip />
+ <el-table-column label="鍑哄簱浜�" prop="createBy" width="120" show-overflow-tooltip />
+ <el-table-column label="鏉ユ簮" prop="recordType" width="140" show-overflow-tooltip>
+ <template #default="scope">
+ {{ getRecordType(scope.row.recordType) }}
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <Pagination
+ v-show="total > 0"
+ :total="total"
+ :page="page.current"
+ :limit="page.size"
+ @pagination="paginationChange"
+ />
+ </div>
+ </div>
+</template>
+
+<script setup>
+import { onMounted, reactive, ref, toRefs, watch } from "vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import Pagination from "@/components/PIMTable/Pagination.vue";
+import {
+ delConsumablesOutRecord,
+ getConsumablesOutRecordPage,
+} from "@/api/consumablesLogistics/consumablesOutRecord.js";
+import {
+ findAllQualifiedStockOutRecordTypeOptions,
+ findAllUnQualifiedStockOutRecordTypeOptions,
+} from "@/api/basicData/enum.js";
+
+const props = defineProps({
+ type: {
+ type: String,
+ required: true,
+ default: "0",
+ },
+});
+
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
+const stockRecordTypeOptions = ref([]);
+
+const page = reactive({
+ current: 1,
+ size: 100,
+});
+const total = ref(0);
+
+const data = reactive({
+ searchForm: {
+ timeStr: "",
+ productName: "",
+ recordType: "",
+ },
+});
+const { searchForm } = toRefs(data);
+
+const getRecordType = (recordType) => {
+ return stockRecordTypeOptions.value.find((item) => item.value === recordType)?.label || "";
+};
+
+const fetchStockRecordTypeOptions = () => {
+ const api =
+ props.type === "1"
+ ? findAllUnQualifiedStockOutRecordTypeOptions
+ : findAllQualifiedStockOutRecordTypeOptions;
+ api()
+ .then((res) => {
+ stockRecordTypeOptions.value = res.data || [];
+ })
+ .catch(() => {
+ stockRecordTypeOptions.value = [];
+ });
+};
+
+const handleQuery = () => {
+ page.current = 1;
+ getList();
+};
+
+const paginationChange = obj => {
+ page.current = obj.page;
+ page.size = obj.limit;
+ getList();
+};
+
+const getList = () => {
+ tableLoading.value = true;
+ getConsumablesOutRecordPage({ ...searchForm.value, ...page, type: props.type })
+ .then(res => {
+ tableData.value = res?.data?.records || [];
+ total.value = res?.data?.total || 0;
+ })
+ .finally(() => {
+ tableLoading.value = false;
+ });
+};
+
+const handleSelectionChange = selection => {
+ selectedRows.value = Array.isArray(selection) ? selection : [];
+};
+
+const handleDelete = () => {
+ const ids = selectedRows.value.map(i => i.id).filter(Boolean);
+ if (ids.length === 0) {
+ ElMessage.warning("璇烽�夋嫨鏁版嵁");
+ return;
+ }
+ ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎", {
+ confirmButtonText: "纭",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => delConsumablesOutRecord(ids))
+ .then(() => {
+ ElMessage.success("鍒犻櫎鎴愬姛");
+ getList();
+ })
+ .catch(() => {});
+};
+
+watch(
+ () => props.type,
+ () => {
+ searchForm.value.recordType = "";
+ fetchStockRecordTypeOptions();
+ handleQuery();
+ }
+);
+
+onMounted(() => {
+ fetchStockRecordTypeOptions();
+ getList();
+});
+</script>
--
Gitblit v1.9.3