From e3179b9da9ed718bb8240ee8a45b3f8c2ad479cb Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 18 十一月 2025 14:48:29 +0800
Subject: [PATCH] 1.设备台帐二维码上加上设备名称 2.设备保养和保修加上每次的保养保修金额 3.加一个汇总页面,可以看到每个设备的每个月的金额,也可以选择看每年的金额

---
 src/views/equipmentManagement/upkeep/Modal/PlanModal.vue |  123 ++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 19 deletions(-)

diff --git a/src/views/equipmentManagement/upkeep/Modal/PlanModal.vue b/src/views/equipmentManagement/upkeep/Modal/PlanModal.vue
index d9cf246..65a9640 100644
--- a/src/views/equipmentManagement/upkeep/Modal/PlanModal.vue
+++ b/src/views/equipmentManagement/upkeep/Modal/PlanModal.vue
@@ -5,7 +5,40 @@
     width="30%"
     @close="close"
   >
-    <PlanForm ref="planFormRef"></PlanForm>
+    <el-form :model="form" :rules="rules" ref="formRef" label-width="110px">
+      <el-form-item label="璁惧鍚嶇О" prop="deviceLedgerId">
+        <el-select
+          v-model="form.deviceLedgerId"
+          @change="setDeviceModel"
+          placeholder="璇烽�夋嫨璁惧"
+        >
+          <el-option
+            v-for="(item, index) in deviceOptions"
+            :key="index"
+            :label="item.deviceName"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="瑙勬牸鍨嬪彿">
+        <el-input
+          v-model="form.deviceModel"
+          placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+          disabled
+        />
+      </el-form-item>
+      <el-form-item label="璁″垝淇濆吇鏃ユ湡" prop="maintenancePlanTime">
+        <el-date-picker
+          style="width: 100%"
+          v-model="form.maintenancePlanTime"
+          format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD HH:mm:ss"
+          type="date"
+          placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡鏃ユ湡"
+          clearable
+        />
+      </el-form-item>
+    </el-form>
     <template #footer>
 			<el-button type="primary" @click="sendForm" :loading="loading">
 				{{ modalOptions.confirmText }}
@@ -16,8 +49,11 @@
 </template>
 
 <script setup>
+import { ref, nextTick, watch } from "vue";
 import { useModal } from "@/hooks/useModal";
-import PlanForm from "../Form/PlanForm";
+import useFormData from "@/hooks/useFormData";
+import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
+import dayjs from "dayjs";
 import {
   addUpkeep,
   editUpkeep,
@@ -30,7 +66,6 @@
 });
 
 const emits = defineEmits(["ok"]);
-const planFormRef = ref();
 const {
   id,
   visible,
@@ -41,32 +76,82 @@
   closeModal,
 } = useModal({ title: "璁惧淇濆吇璁″垝" });
 
-const openEdit = async (id) => {
-  const { data } = await getUpkeepById(id);
-  openModal(id);
+const deviceOptions = ref([]);
+const formRef = ref();
+const { form, resetForm } = useFormData({
+  deviceLedgerId: undefined, // 璁惧Id
+  deviceName: undefined, // 璁惧鍚嶇О
+  deviceModel: undefined, // 瑙勬牸鍨嬪彿
+  maintenancePlanTime: undefined, // 璁″垝淇濆吇鏃ユ湡
+});
+
+const rules = {
+  deviceLedgerId: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
+  maintenancePlanTime: [
+    { required: true, message: "璇烽�夋嫨璁″垝淇濆吇鏃ユ湡", trigger: "change" },
+  ],
+};
+
+const loadDeviceName = async () => {
+  const { data } = await getDeviceLedger();
+  deviceOptions.value = data;
+};
+
+const setDeviceModel = (id) => {
+  const option = deviceOptions.value.find((item) => item.id === id);
+  form.deviceModel = option ? option.deviceModel : undefined;
+};
+
+const setForm = (data) => {
+  form.deviceLedgerId = data.deviceLedgerId;
+  form.deviceName = data.deviceName;
+  form.deviceModel = data.deviceModel;
+  form.maintenancePlanTime = dayjs(data.maintenancePlanTime).format(
+    "YYYY-MM-DD HH:mm:ss"
+  );
+};
+
+const openEdit = async (editId) => {
+  const { data } = await getUpkeepById(editId);
+  openModal(editId);
   await nextTick();
-  await planFormRef.value.setForm(data);
+  await loadDeviceName();
+  setForm(data);
 };
 
 const sendForm = async () => {
-  loading.value = true;
-  const form = await planFormRef.value.getForm();
-  const { code } = id.value
-    ? await editUpkeep({ id: unref(id), ...form })
-    : await addUpkeep(form);
-  if (code == 200) {
-    ElMessage.success(`${id ? "缂栬緫" : "鏂板"}璁″垝鎴愬姛`);
-    closeModal();
-    emits("ok");
-  }
-  loading.value = false;
+  await formRef.value.validate(async (valid) => {
+    if (!valid) return;
+    loading.value = true;
+    const payload = { ...form };
+    const { code } = id.value
+      ? await editUpkeep({ id: id.value, ...payload })
+      : await addUpkeep(payload);
+    if (code == 200) {
+      ElMessage.success(`${id.value ? "缂栬緫" : "鏂板"}璁″垝鎴愬姛`);
+      closeModal();
+      emits("ok");
+    }
+    loading.value = false;
+  });
 };
 
 const close = () => {
-  planFormRef.value.resetForm();
+  resetForm();
   closeModal();
 };
 
+// load device options whenever the dialog opens (covers add and edit)
+watch(
+  () => visible.value,
+  async (val) => {
+    if (val) {
+      await nextTick();
+      await loadDeviceName();
+    }
+  }
+);
+
 defineExpose({
   openModal,
   openEdit,

--
Gitblit v1.9.3