From 61955574b77ffa740802bb8b45836ab91cb5be55 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 06 一月 2026 20:34:53 +0800
Subject: [PATCH] fix: 完成设备远程监控,车辆信息采集审批页面编写,接口联调

---
 src/views/environmentAccess/vehicleInfoAudit/index.vue |  499 +++++++++++++++++++++++++++++++++++++++++
 src/api/environmentAccess/vehicleInfo.js               |   48 ++++
 src/views/equipmentManagement/ledger/index.vue         |   93 ++++--
 src/views/equipmentManagement/ledger/Form.vue          |   43 +--
 4 files changed, 623 insertions(+), 60 deletions(-)

diff --git a/src/api/environmentAccess/vehicleInfo.js b/src/api/environmentAccess/vehicleInfo.js
new file mode 100644
index 0000000..5b25f18
--- /dev/null
+++ b/src/api/environmentAccess/vehicleInfo.js
@@ -0,0 +1,48 @@
+import request from "@/utils/request";
+
+// 鏌ヨ杞﹁締淇℃伅鍒嗛〉鍒楄〃
+export function listVehicleInfo(query) {
+  return request({
+    // 涓ょ骇璺緞锛氭ā鍧� + 鍏蜂綋鍔熻兘鍚�
+    url: "/environmentAccess/vehicleInfoPage",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏂板杞﹁締淇℃伅
+export function addVehicleInfo(data) {
+  return request({
+    url: "/environmentAccess/vehicleInfoAdd",
+    method: "post",
+    data,
+  });
+}
+
+// 淇敼杞﹁締淇℃伅
+export function updateVehicleInfo(data) {
+  return request({
+    url: "/environmentAccess/vehicleInfoUpdate",
+    method: "put",
+    data,
+  });
+}
+
+// 鍒犻櫎杞﹁締淇℃伅锛堟敮鎸佹壒閲忥級
+export function delVehicleInfo(ids) {
+  return request({
+    url: "/environmentAccess/vehicleInfoDelete",
+    method: "delete",
+    data: ids,
+  });
+}
+
+// 瀹℃牳杞﹁締淇℃伅
+export function reviewVehicleInfo(data) {
+  return request({
+    // 瀹℃牳鍗曠嫭璧勬簮锛歷ehicleInfoReview
+    url: "/environmentAccess/vehicleInfoReview",
+    method: "post",
+    data,
+  });
+}
diff --git a/src/views/environmentAccess/vehicleInfoAudit/index.vue b/src/views/environmentAccess/vehicleInfoAudit/index.vue
new file mode 100644
index 0000000..924ca55
--- /dev/null
+++ b/src/views/environmentAccess/vehicleInfoAudit/index.vue
@@ -0,0 +1,499 @@
+<template>
+  <div class="app-container">
+    <div class="search_form">
+      <div>
+        <span class="search_title">杞︾墝鍙风爜锛�</span>
+        <el-input
+          v-model="searchForm.plateNo"
+          style="width: 240px"
+          placeholder="璇疯緭鍏ヨ溅鐗屽彿鐮�"
+          clearable
+          :prefix-icon="Search"
+          @change="handleQuery"
+        />
+        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">
+          鎼滅储
+        </el-button>
+      </div>
+      <div>
+        <el-button type="primary" @click="openForm('add')">鏂板</el-button>
+        <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+      </div>
+    </div>
+
+    <div class="table_list">
+      <PIMTable
+        rowKey="id"
+        :column="tableColumn"
+        :tableData="tableData"
+        :page="page"
+        :isSelection="true"
+        :tableLoading="tableLoading"
+        @selection-change="handleSelectionChange"
+        @pagination="pagination"
+      />
+    </div>
+
+    <!-- 鏂板/缂栬緫杞﹁締淇℃伅寮圭獥 -->
+    <el-dialog
+      v-model="dialogVisible"
+      :title="operationType === 'add' ? '鏂板杞﹁締淇℃伅' : '缂栬緫杞﹁締淇℃伅'"
+      width="70%"
+      @close="closeFormDialog"
+    >
+      <el-form
+        ref="formRef"
+        :model="form"
+        :rules="rules"
+        label-width="140px"
+        label-position="top"
+      >
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="杞︾墝鍙风爜" prop="plateNo">
+              <el-input v-model="form.plateNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿鐮�" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍙风墝棰滆壊" prop="plateColor">
+              <el-input v-model="form.plateColor" placeholder="璇疯緭鍏ュ彿鐗岄鑹�" clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="杞﹁締绫诲瀷" prop="carType">
+              <el-input v-model="form.carType" placeholder="璇疯緭鍏ヨ溅杈嗙被鍨�" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="杞﹁締璇嗗埆浠g爜(VIN)" prop="carVin">
+              <el-input v-model="form.carVin" placeholder="璇疯緭鍏� VIN 鐮�" clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="杞﹁締鍨嬪彿" prop="carModel">
+              <el-input v-model="form.carModel" placeholder="璇疯緭鍏ヨ溅杈嗗瀷鍙�" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍙戝姩鏈哄瀷鍙�" prop="engineModel">
+              <el-input v-model="form.engineModel" placeholder="璇疯緭鍏ュ彂鍔ㄦ満鍨嬪彿" clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍙戝姩鏈虹敓浜у巶" prop="engineProductFactory">
+              <el-input v-model="form.engineProductFactory" placeholder="璇疯緭鍏ュ彂鍔ㄦ満鐢熶骇鍘�" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍙戝姩鏈虹紪鍙�" prop="engineNo">
+              <el-input v-model="form.engineNo" placeholder="璇疯緭鍏ュ彂鍔ㄦ満缂栧彿" clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鎺掓斁鏍囧噯" prop="emissionStandard">
+              <el-input v-model="form.emissionStandard" placeholder="璇疯緭鍏ユ帓鏀炬爣鍑�" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="娉ㄥ唽鐧昏鏃ユ湡" prop="registeDate">
+              <el-date-picker
+                v-model="form.registeDate"
+                type="date"
+                style="width: 100%"
+                value-format="YYYY-MM-DD"
+                placeholder="璇烽�夋嫨娉ㄥ唽鐧昏鏃ユ湡"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="浣跨敤鎬ц川" prop="natureOfUse">
+              <el-input v-model="form.natureOfUse" placeholder="璇疯緭鍏ヤ娇鐢ㄦ�ц川" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鐕冩枡绫诲瀷" prop="fuelType">
+              <el-input v-model="form.fuelType" placeholder="璇疯緭鍏ョ噧鏂欑被鍨�" clearable />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">纭</el-button>
+          <el-button @click="closeFormDialog">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+
+    <!-- 瀹℃牳寮圭獥 -->
+    <el-dialog
+      v-model="auditDialogVisible"
+      title="杞﹁締淇℃伅瀹℃牳"
+      width="500px"
+      @close="closeAuditDialog"
+    >
+      <el-form :model="auditForm" label-width="100px">
+        <el-form-item label="瀹℃牳缁撴灉" prop="status">
+          <el-radio-group v-model="auditForm.status">
+            <el-radio label="approved">閫氳繃</el-radio>
+            <el-radio label="rejected">涓嶉�氳繃</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="瀹℃牳鎰忚" prop="comment">
+          <el-input
+            v-model="auditForm.comment"
+            type="textarea"
+            :rows="3"
+            placeholder="璇疯緭鍏ュ鏍告剰瑙侊紙閫夊~锛�"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitAudit">纭</el-button>
+          <el-button @click="closeAuditDialog">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive } from "vue";
+import { Search } from "@element-plus/icons-vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import PIMTable from "@/components/PIMTable/PIMTable.vue";
+import {
+  listVehicleInfo,
+  addVehicleInfo,
+  updateVehicleInfo,
+  delVehicleInfo,
+  reviewVehicleInfo,
+} from "@/api/environmentAccess/vehicleInfo";
+
+// 鏌ヨ鏉′欢
+const searchForm = reactive({
+  plateNo: "",
+});
+
+// 琛ㄦ牸鍒楅厤缃�
+const tableColumn = ref([
+  {
+    label: "杞︾墝鍙风爜",
+    prop: "plateNo",
+    align: "center",
+    width: 140,
+  },
+  {
+    label: "鍙风墝棰滆壊",
+    prop: "plateColor",
+    align: "center",
+    width: 100,
+  },
+  {
+    label: "杞﹁締绫诲瀷",
+    prop: "carType",
+    align: "center",
+    width: 120,
+  },
+  {
+    label: "杞﹁締璇嗗埆浠g爜(VIN)",
+    prop: "carVin",
+    align: "center",
+    minWidth: 200,
+    showOverflowTooltip: true,
+  },
+  {
+    label: "杞﹁締鍨嬪彿",
+    prop: "carModel",
+    align: "center",
+    width: 140,
+  },
+  {
+    label: "鍙戝姩鏈哄瀷鍙�",
+    prop: "engineModel",
+    align: "center",
+    width: 140,
+  },
+  {
+    label: "鍙戝姩鏈虹敓浜у巶",
+    prop: "engineProductFactory",
+    align: "center",
+    width: 160,
+  },
+  {
+    label: "鍙戝姩鏈虹紪鍙�",
+    prop: "engineNo",
+    align: "center",
+    width: 140,
+  },
+  {
+    label: "鎺掓斁鏍囧噯",
+    prop: "emissionStandard",
+    align: "center",
+    width: 120,
+  },
+  {
+    label: "娉ㄥ唽鐧昏鏃ユ湡",
+    prop: "registeDate",
+    align: "center",
+    width: 140,
+  },
+  {
+    label: "浣跨敤鎬ц川",
+    prop: "natureOfUse",
+    align: "center",
+    width: 120,
+  },
+  {
+    label: "鐕冩枡绫诲瀷",
+    prop: "fuelType",
+    align: "center",
+    width: 120,
+  },
+  {
+    label: "瀹℃牳鐘舵��",
+    prop: "reviewStatus",
+    align: "center",
+    dataType: "tag",
+    width: 120,
+    formatData: (value) => {
+      if (value === "approved") return "宸查�氳繃";
+      if (value === "rejected") return "鏈�氳繃";
+      if (value === "pending") return "寰呭鏍�";
+      return "鏈彁浜�";
+    },
+    formatType: (value) => {
+      if (value === "approved") return "success";
+      if (value === "rejected") return "danger";
+      if (value === "pending") return "warning";
+      return "";
+    },
+  },
+  {
+    dataType: "action",
+    label: "鎿嶄綔",
+    align: "center",
+    fixed: "right",
+    width: 220,
+    operation: [
+      {
+        name: "缂栬緫",
+        type: "text",
+        clickFun: (row) => openForm("edit", row),
+      },
+      {
+        name: "瀹℃牳",
+        type: "text",
+        clickFun: (row) => openAuditDialog(row),
+      },
+      {
+        name: "鍒犻櫎",
+        type: "text",
+        clickFun: (row) => deleteRow(row),
+      },
+    ],
+  },
+]);
+
+// 琛ㄦ牸鏁版嵁
+const tableData = ref([]);
+const tableLoading = ref(false);
+const selectedRows = ref([]);
+
+// 鍒嗛〉
+const page = reactive({
+  current: 1,
+  size: 10,
+  total: 0,
+});
+
+// 琛ㄥ崟鐩稿叧
+const dialogVisible = ref(false);
+const operationType = ref("add");
+const formRef = ref(null);
+const form = reactive(createEmptyForm());
+
+function createEmptyForm() {
+  return {
+    id: undefined,
+    plateNo: "",
+    plateColor: "",
+    carType: "",
+    carVin: "",
+    carModel: "",
+    engineModel: "",
+    engineProductFactory: "",
+    engineNo: "",
+    emissionStandard: "",
+    registeDate: "",
+    natureOfUse: "",
+    fuelType: "",
+    reviewStatus: "pending",
+  };
+}
+
+const rules = {
+  plateNo: [{ required: true, message: "璇疯緭鍏ヨ溅鐗屽彿鐮�", trigger: "blur" }],
+  carVin: [{ required: true, message: "璇疯緭鍏� VIN 鐮�", trigger: "blur" }],
+};
+
+// 瀹℃牳鐩稿叧
+const auditDialogVisible = ref(false);
+const currentAuditRow = ref(null);
+const auditForm = reactive({
+  status: "approved",
+  comment: "",
+});
+
+// 鏌ヨ
+function handleQuery() {
+  page.current = 1;
+  loadTableData();
+}
+
+// 鍔犺浇鏁版嵁
+function loadTableData() {
+  tableLoading.value = true;
+  listVehicleInfo({
+    pageNum: page.current,
+    pageSize: page.size,
+    ...searchForm,
+  })
+    .then((res) => {
+      const { records, total } = res.data;
+      tableData.value = records || [];
+      page.total = total || 0;
+    })
+    .finally(() => {
+      tableLoading.value = false;
+    });
+}
+
+// 鍒嗛〉鍙樺寲
+function pagination({ page: current, limit }) {
+  page.current = current;
+  page.size = limit;
+  loadTableData();
+}
+
+// 閫夋嫨琛�
+function handleSelectionChange(selection) {
+  selectedRows.value = selection;
+}
+
+// 鎵撳紑琛ㄥ崟
+function openForm(type, row) {
+  operationType.value = type;
+  if (type === "edit" && row) {
+    Object.assign(form, row);
+  } else {
+    Object.assign(form, createEmptyForm());
+  }
+  dialogVisible.value = true;
+}
+
+function closeFormDialog() {
+  dialogVisible.value = false;
+  formRef.value?.resetFields();
+}
+
+// 鎻愪氦琛ㄥ崟
+function submitForm() {
+  formRef.value?.validate((valid) => {
+    if (!valid) return;
+
+    const api = operationType.value === "add" ? addVehicleInfo : updateVehicleInfo;
+    api({ ...form })
+      .then(() => {
+        ElMessage.success(operationType.value === "add" ? "鏂板鎴愬姛" : "缂栬緫鎴愬姛");
+        dialogVisible.value = false;
+        loadTableData();
+      })
+      .catch(() => {});
+  });
+}
+
+// 鍒犻櫎鍗曟潯
+function deleteRow(row) {
+  ElMessageBox.confirm("纭鍒犻櫎璇ヨ溅杈嗕俊鎭悧锛�", "鎻愮ず", {
+    type: "warning",
+  })
+    .then(() => {
+      delVehicleInfo([row.id]).then(() => {
+        ElMessage.success("鍒犻櫎鎴愬姛");
+        loadTableData();
+      });
+    })
+    .catch(() => {});
+}
+
+// 鎵归噺鍒犻櫎
+function handleDelete() {
+  if (!selectedRows.value.length) {
+    ElMessage.warning("璇峰厛閫夋嫨瑕佸垹闄ょ殑璁板綍");
+    return;
+  }
+  ElMessageBox.confirm("纭鍒犻櫎閫変腑鐨勮溅杈嗕俊鎭悧锛�", "鎻愮ず", {
+    type: "warning",
+  })
+    .then(() => {
+      const ids = selectedRows.value.map((item) => item.id);
+      delVehicleInfo(ids).then(() => {
+        ElMessage.success("鍒犻櫎鎴愬姛");
+        loadTableData();
+      });
+    })
+    .catch(() => {});
+}
+
+// 鎵撳紑瀹℃牳寮圭獥
+function openAuditDialog(row) {
+  currentAuditRow.value = row;
+  auditForm.status = row.reviewStatus || "pending";
+  auditForm.comment = row.auditComment || "";
+  auditDialogVisible.value = true;
+}
+
+function closeAuditDialog() {
+  auditDialogVisible.value = false;
+}
+
+// 鎻愪氦瀹℃牳
+function submitAudit() {
+  if (!currentAuditRow.value) return;
+
+  reviewVehicleInfo({
+    id: currentAuditRow.value.id,
+    reviewStatus: auditForm.status,
+    auditComment: auditForm.comment,
+  })
+    .then(() => {
+      ElMessage.success("瀹℃牳瀹屾垚");
+      auditDialogVisible.value = false;
+      loadTableData();
+    })
+    .catch(() => {});
+}
+
+// 鍒濆鍖�
+loadTableData();
+</script>
+
+<style scoped lang="scss">
+.table_list {
+  margin-top: 20px;
+}
+</style>
+
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 0951fd8..4ec7c1a 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -1,24 +1,24 @@
 <template>
-  <el-form :model="form" label-width="100px" :rules="formRules" ref="formRef">
+  <el-form :model="form" label-width="120px" :rules="formRules" ref="formRef">
     <el-row :gutter="20">
       <el-col :span="12">
-        <el-form-item label="璁惧鍚嶇О" prop="deviceName">
-          <el-input v-model="form.deviceName" placeholder="璇疯緭鍏ヨ澶囧悕绉�" />
+        <el-form-item label="鐩戞帶璁惧鍚嶇О" prop="deviceName">
+          <el-input v-model="form.deviceName" placeholder="璇疯緭鍏ョ洃鎺ц澶囧悕绉�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel">
-          <el-input v-model="form.deviceModel" :disabled="(form.deviceModel != null && operationType === 'edit')" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+        <el-form-item label="娓╁害鐩戞祴鍙傛暟" prop="deviceModel">
+          <el-input v-model="form.deviceModel" :disabled="(form.deviceModel != null && operationType === 'edit')" placeholder="璇疯緭鍏ユ俯搴︾洃娴嬪弬鏁�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="渚涘簲鍟�" prop="supplierName">
-          <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢" />
+        <el-form-item label="鍘嬪姏鐩戞祴鍙傛暟" prop="supplierName">
+          <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ュ帇鍔涚洃娴嬪弬鏁�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鍗曚綅" prop="unit">
-          <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" />
+        <el-form-item label="鑳借�楃洃娴嬪弬鏁�" prop="unit">
+          <el-input v-model="form.unit" placeholder="璇疯緭鍏ヨ兘鑰楃洃娴嬪弬鏁�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
@@ -31,17 +31,17 @@
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit">
+        <el-form-item label="鐩戞帶闃堝�间笂闄�" prop="taxIncludingPriceUnit">
           <el-input-number :step="0.01" :min="0" style="width: 100%"
             v-model="form.taxIncludingPriceUnit"
-            placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
+            placeholder="璇疯緭鍏ョ洃鎺ч槇鍊间笂闄�"
             maxlength="10"
             @change="mathNum"
           />
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal">
+        <el-form-item label="鐩戞帶闃堝�间笅闄�" prop="taxIncludingPriceTotal">
           <el-input
             v-model="form.taxIncludingPriceTotal"
             placeholder="鑷姩鐢熸垚"
@@ -51,17 +51,10 @@
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="绋庣巼(%)" prop="taxRate">
-          <!-- <el-input
-            v-model="form.taxRate"
-            placeholder="璇疯緭鍏ョ◣鐜�"
-            type="number"
-          >
-            <template #append> % </template>
-          </el-input> -->
+        <el-form-item label="瀹炴椂鐩戞祴鍊�" prop="taxRate">
           <el-select
             v-model="form.taxRate"
-            placeholder="璇烽�夋嫨"
+            placeholder="璇烽�夋嫨瀹炴椂鐩戞祴鍊�"
             clearable
             @change="mathNum"
           >
@@ -72,7 +65,7 @@
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal">
+        <el-form-item label="绱鑳借��" prop="unTaxIncludingPriceTotal">
           <el-input
             v-model="form.unTaxIncludingPriceTotal"
             placeholder="鑷姩鐢熸垚"
@@ -87,14 +80,14 @@
         </el-form-item>
       </el-col> -->
       <el-col :span="12">
-        <el-form-item label="褰曞叆鏃ユ湡" prop="createTime">
+        <el-form-item label="鐩戞帶鏃ユ湡" prop="createTime">
           <el-date-picker
             style="width: 100%"
             v-model="form.createTime"
             format="YYYY-MM-DD"
             value-format="YYYY-MM-DD HH:mm:ss"
             type="date"
-            placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"
+            placeholder="璇烽�夋嫨鐩戞帶鏃ユ湡"
             clearable
           />
         </el-form-item>
@@ -165,7 +158,7 @@
 
 const mathNum = () => {
   if (!form.taxIncludingPriceUnit) {
-    ElMessage.error("璇疯緭鍏ュ崟浠�");
+    ElMessage.error("璇疯緭鍏ョ洃鎺ч槇鍊间笂闄�");
     return;
   }
   if (!form.number) {
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index decd235..6136760 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -1,47 +1,52 @@
 <template>
   <div class="app-container">
+    <!-- 椤甸潰鍔熻兘璇存槑锛屼粎浣滀负鎻忚堪锛屼笉浣滀负鍏蜂綋瀛楁 -->
     <el-form :model="filters" :inline="true">
-      <el-form-item label="璁惧鍚嶇О">
+      <!-- 鐩戞帶璁惧鍩虹淇℃伅绛涢�� -->
+      <el-form-item label="鐩戞帶璁惧鍚嶇О">
         <el-input
           v-model="filters.deviceName"
           style="width: 240px"
-          placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+          placeholder="璇疯緭鍏ョ洃鎺ц澶囧悕绉�"
           clearable
           :prefix-icon="Search"
           @change="getTableData"
         />
       </el-form-item>
-      <el-form-item label="瑙勬牸鍨嬪彿">
+      <!-- 娓╁害鐩戞祴瀛楁锛堣嫳鏂囧瓧娈� deviceModel 涓嶅彉锛� -->
+      <el-form-item label="娓╁害鐩戞祴鍙傛暟">
         <el-input
             v-model="filters.deviceModel"
             style="width: 240px"
-            placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+            placeholder="璇疯緭鍏ユ俯搴︾浉鍏崇洃娴嬪弬鏁�"
             clearable
             :prefix-icon="Search"
             @change="getTableData"
         />
       </el-form-item>
-      <el-form-item label="渚涘簲鍟�">
+      <!-- 鍘嬪姏鐩戞祴瀛楁锛堣嫳鏂囧瓧娈� supplierName 涓嶅彉锛� -->
+      <el-form-item label="鍘嬪姏鐩戞祴鍙傛暟">
         <el-input
             v-model="filters.supplierName"
             style="width: 240px"
-            placeholder="璇疯緭鍏ヤ緵搴斿晢"
+            placeholder="璇疯緭鍏ュ帇鍔涚浉鍏崇洃娴嬪弬鏁�"
             clearable
             :prefix-icon="Search"
             @change="getTableData"
         />
       </el-form-item>
-      <el-form-item label="鍗曚綅">
+      <!-- 鑳借�楃洃娴嬪瓧娈碉紙鑻辨枃瀛楁 unit 涓嶅彉锛� -->
+      <el-form-item label="鑳借�楃洃娴嬪弬鏁�">
         <el-input
             v-model="filters.unit"
             style="width: 240px"
-            placeholder="璇疯緭鍏ュ崟浣�"
+            placeholder="璇疯緭鍏ヨ兘鑰楃浉鍏崇洃娴嬪弬鏁�"
             clearable
             :prefix-icon="Search"
             @change="getTableData"
         />
       </el-form-item>
-      <el-form-item label="褰曞叆鏃ユ湡:">
+      <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>
@@ -55,7 +60,7 @@
         <div></div>
         <div>
           <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button>
-          <el-button @click="handleOut" icon="download">瀵煎嚭</el-button>
+          <!-- <el-button @click="handleOut" icon="download">瀵煎嚭</el-button> -->
           <el-button
             type="danger"
             icon="Delete"
@@ -109,7 +114,8 @@
 import {Search} from "@element-plus/icons-vue";
 
 defineOptions({
-  name: "璁惧鍙拌处",
+  // 椤甸潰鍔熻兘锛氳澶囪繙绋嬬洃鎺�
+  name: "璁惧杩滅▼鐩戞帶",
 });
 
 // 琛ㄦ牸澶氶�夋閫変腑椤�
@@ -140,22 +146,25 @@
   },
   [
     {
-      label: "璁惧鍚嶇О",
+      label: "鐩戞帶璁惧鍚嶇О",
       align: "center",
       prop: "deviceName",
     },
     {
-      label: "瑙勬牸鍨嬪彿",
+      // 浣跨敤 deviceModel 瀛楁鎵胯浇娓╁害鐩戞祴鐩稿叧鍙傛暟
+      label: "娓╁害鐩戞祴鍙傛暟",
       align: "center",
       prop: "deviceModel",
     },
     {
-      label: "渚涘簲鍟�",
+      // 浣跨敤 supplierName 瀛楁鎵胯浇鍘嬪姏鐩戞祴鐩稿叧鍙傛暟
+      label: "鍘嬪姏鐩戞祴鍙傛暟",
       align: "center",
       prop: "supplierName",
     },
     {
-      label: "鍗曚綅",
+      // 浣跨敤 unit 瀛楁鎵胯浇鑳借�楃洃娴嬬浉鍏冲弬鏁�
+      label: "鑳借�楃洃娴嬪弬鏁�",
       align: "center",
       prop: "unit",
     },
@@ -165,32 +174,36 @@
       prop: "number",
     },
     {
-      label: "鍚◣鍗曚环",
+      // 浣跨敤 taxIncludingPriceUnit 瀛楁鎵胯浇鐩戞帶闃堝�间笂闄�
+      label: "鐩戞帶闃堝�间笂闄�",
       align: "center",
       prop: "taxIncludingPriceUnit",
     },
     {
-      label: "鍚◣鎬讳环",
+      // 浣跨敤 taxIncludingPriceTotal 瀛楁鎵胯浇鐩戞帶闃堝�间笅闄�
+      label: "鐩戞帶闃堝�间笅闄�",
       align: "center",
       prop: "taxIncludingPriceTotal",
     },
     {
-      label: "绋庣巼",
+      // 浣跨敤 taxRate 瀛楁鍛堢幇瀹炴椂鐩戞祴鍊�/褰撳墠璇绘暟
+      label: "瀹炴椂鐩戞祴鍊�",
       align: "center",
       prop: "taxRate",
     },
     {
-      label: "涓嶅惈绋庢�讳环",
+      // 浣跨敤 unTaxIncludingPriceTotal 瀛楁鎵胯浇绱鑳借��/鐩戞帶缁熻鍊�
+      label: "绱鑳借��",
       align: "center",
       prop: "unTaxIncludingPriceTotal",
     },
     {
-      label: "褰曞叆浜�",
+      label: "鐩戞帶浜�",
       align: "center",
       prop: "createUser",
     },
     {
-      label: "褰曞叆鏃ユ湡",
+      label: "鐩戞帶鏃ユ湡",
       align: "center",
       prop: "createTime",
     },
@@ -208,13 +221,13 @@
 						edit(row.id)
 					},
 				},
-				{
-					name: "鐢熸垚浜岀淮鐮�",
-					type: "text",
-					clickFun: (row) => {
-						showQRCode(row)
-					},
-				},
+				// {
+				// 	name: "鐢熸垚浜岀淮鐮�",
+				// 	type: "text",
+				// 	clickFun: (row) => {
+				// 		showQRCode(row)
+				// 	},
+				// },
 			],
 		},
   ]
@@ -285,7 +298,8 @@
     type: "warning",
   })
     .then(() => {
-      proxy.download(`/device/ledger/export`, {}, "璁惧鍙拌处妗f.xlsx");
+      // 瀵煎嚭鏂囦欢鍚嶆敼涓鸿澶囪繙绋嬬洃鎺�
+      proxy.download(`/device/ledger/export`, {}, "璁惧杩滅▼鐩戞帶.xlsx");
     })
     .catch(() => {
       proxy.$modal.msg("宸插彇娑�");
@@ -308,12 +322,12 @@
 };
 
 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")
+  // 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>
@@ -327,4 +341,13 @@
   justify-content: space-between;
   margin-bottom: 10px;
 }
+
+.feature-desc {
+  margin-bottom: 16px;
+  padding: 10px 12px;
+  background: #f5f7fa;
+  border-radius: 4px;
+  color: #606266;
+  font-size: 13px;
+}
 </style>

--
Gitblit v1.9.3