From 16697df76d7b27ff65d229937b3f3ac4cc0e56a0 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 09 六月 2026 17:27:27 +0800
Subject: [PATCH] docs(knowledge-base): 添加知识库模块传参方式和参数命名规范文档
---
src/views/equipmentManagement/repair/Modal/RepairModal.vue | 314 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 256 insertions(+), 58 deletions(-)
diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index 586960d..4a10071 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -1,70 +1,268 @@
<template>
- <el-dialog v-model="visible" :title="modalOptions.title" @close="close">
- <RepairForm ref="repairFormRef" />
- <template #footer>
- <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
- <el-button type="primary" @click="sendForm" :loading="loading">
- {{ modalOptions.confirmText }}
- </el-button>
- </template>
- </el-dialog>
+ <FormDialog v-model="visible"
+ :title="computedTitle"
+ :operation-type="operationType"
+ width="800px"
+ @confirm="sendForm"
+ @cancel="handleCancel"
+ @close="handleClose">
+ <el-form :model="form"
+ label-width="100px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍚嶇О">
+ <el-select v-model="form.deviceLedgerId"
+ @change="setDeviceModel"
+ filterable
+ :disabled="operationType === 'view'">
+ <el-option v-for="(item, index) in deviceOptions"
+ :key="index"
+ :label="item.deviceName"
+ :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-input v-model="form.deviceModel"
+ placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ disabled />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶ヤ慨鏃ユ湡">
+ <el-date-picker v-model="form.repairTime"
+ placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ type="date"
+ clearable
+ style="width: 100%"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶ヤ慨浜�">
+ <el-input v-model="form.repairName"
+ placeholder="璇疯緭鍏ユ姤淇汉"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶ヤ慨鎶ヤ慨椤圭洰">
+ <el-input v-model="form.machineryCategory"
+ placeholder="璇疯緭鍏ユ姤淇姤淇」鐩�"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="缁翠慨浜�">
+ <el-input v-model="form.maintenanceName"
+ placeholder="璇疯緭鍏ョ淮淇汉濮撳悕"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row v-if="id">
+ <el-col :span="12">
+ <el-form-item label="鎶ヤ慨鐘舵��">
+ <el-select v-model="form.status"
+ disabled>
+ <el-option label="寰呯淮淇�"
+ :value="0"></el-option>
+ <el-option label="宸查獙鏀�"
+ :value="1"></el-option>
+ <el-option label="澶辫触"
+ :value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <!-- 楠屾敹淇℃伅灞曠ず -->
+ <el-row v-if="id && (form.status === 1 || form.status === 3)">
+ <el-col :span="12">
+ <el-form-item label="楠屾敹浜�">
+ <el-input v-model="form.acceptanceName"
+ disabled />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="楠屾敹鏃堕棿">
+ <el-input v-model="form.acceptanceTime"
+ disabled />
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="楠屾敹澶囨敞">
+ <el-input v-model="form.acceptanceRemark"
+ type="textarea"
+ :rows="2"
+ disabled />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="鏁呴殰鐜拌薄">
+ <el-input v-model="form.remark"
+ :rows="2"
+ type="textarea"
+ placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row v-if="operationType !== 'view'"
+ :gutter="30">
+ <el-col :span="24">
+ <el-form-item label="闄勪欢"
+ prop="attachmentIds">
+ <FileUpload v-model:file-list="form.storageBlobDTOs"
+ :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </FormDialog>
</template>
<script setup>
-import { useModal } from "@/hooks/useModal";
-import RepairForm from "../Form/RepairForm.vue";
-import {
- addRepair,
- editRepair,
- getRepairById,
-} from "@/api/equipmentManagement/repair";
-import { ElMessage } from "element-plus";
+ import FormDialog from "@/components/Dialog/FormDialog.vue";
+ import FileUpload from "@/components/AttachmentUpload/file/index.vue";
+ import {
+ addRepair,
+ editRepair,
+ getRepairById,
+ } from "@/api/equipmentManagement/repair";
+ import { ElMessage } from "element-plus";
+ import dayjs from "dayjs";
+ import useFormData from "@/hooks/useFormData";
+ import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
+ import useUserStore from "@/store/modules/user";
-defineOptions({
- name: "璁惧鎶ヤ慨寮圭獥",
-});
+ defineOptions({
+ name: "璁惧鎶ヤ慨寮圭獥",
+ });
-const emits = defineEmits(["ok"]);
+ const emits = defineEmits(["ok"]);
-const repairFormRef = ref();
-const {
- id,
- visible,
- loading,
- openModal,
- modalOptions,
- handleConfirm,
- closeModal,
-} = useModal({ title: "璁惧鎶ヤ慨" });
+ const id = ref();
+ const visible = ref(false);
+ const loading = ref(false);
+ const operationType = ref(""); // add, edit, view
-const sendForm = async () => {
- loading.value = true;
- const form = await repairFormRef.value.getForm();
- const { code } = id.value
- ? await editRepair({ id: unref(id), ...form })
- : await addRepair(form);
- if (code == 200) {
- ElMessage.success(`${id ? "缂栬緫" : "鏂板"}鎶ヤ慨鎴愬姛`);
- closeModal();
- emits("ok");
- }
- loading.value = false;
-};
+ const computedTitle = computed(() => {
+ if (operationType.value === "add") return "鏂板璁惧鎶ヤ慨";
+ if (operationType.value === "edit") return "缂栬緫璁惧鎶ヤ慨";
+ if (operationType.value === "view") return "璁惧鎶ヤ慨璇︽儏";
+ return "";
+ });
-const openEdit = async (id) => {
- const { data } = await getRepairById(id);
- openModal(id);
- await nextTick();
- await repairFormRef.value.setForm(data);
-};
+ const userStore = useUserStore();
+ const deviceOptions = ref([]);
+ const fileList = ref([]);
-const close = () => {
- repairFormRef.value.resetForm();
- closeModal();
-};
+ const loadDeviceName = async () => {
+ const { data } = await getDeviceLedger();
+ deviceOptions.value = data;
+ };
-defineExpose({
- openModal,
- openEdit,
-});
+ const { form, resetForm } = useFormData({
+ deviceLedgerId: undefined, // 璁惧Id
+ deviceName: undefined, // 璁惧鍚嶇О
+ deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ repairTime: dayjs().format("YYYY-MM-DD"), // 鎶ヤ慨鏃ユ湡锛岄粯璁ゅ綋澶�
+ repairName: userStore.nickName, // 鎶ヤ慨浜�
+ remark: undefined, // 鏁呴殰鐜拌薄
+ status: 0, // 鎶ヤ慨鐘舵��
+ machineryCategory: undefined,
+ storageBlobDTOs: [],
+ maintenanceName: undefined, // 缁翠慨浜�
+ });
+
+ const setDeviceModel = deviceId => {
+ const option = deviceOptions.value.find(item => item.id === deviceId);
+ form.deviceModel = option.deviceModel;
+ };
+
+ const setForm = data => {
+ form.deviceLedgerId = data.deviceLedgerId;
+ form.deviceName = data.deviceName;
+ form.deviceModel = data.deviceModel;
+ form.repairTime = data.repairTime;
+ form.repairName = data.repairName;
+ form.remark = data.remark;
+ form.status = data.status;
+ form.machineryCategory = data.machineryCategory;
+ form.storageBlobDTOs = data.storageBlobVOs || [];
+ form.maintenanceName = data.maintenanceName;
+ form.acceptanceName = data.acceptanceName;
+ form.acceptanceTime = data.acceptanceTime;
+ form.acceptanceRemark = data.acceptanceRemark;
+ };
+
+ const sendForm = async () => {
+ loading.value = true;
+ try {
+ const { code } = id.value
+ ? await editRepair({ id: unref(id), ...form })
+ : await addRepair(form);
+ if (code == 200) {
+ ElMessage.success(`${id.value ? "缂栬緫" : "鏂板"}鎶ヤ慨鎴愬姛`);
+ visible.value = false;
+ emits("ok");
+ }
+ } finally {
+ loading.value = false;
+ }
+ };
+
+ const handleCancel = () => {
+ resetForm();
+ visible.value = false;
+ };
+
+ const handleClose = () => {
+ resetForm();
+ visible.value = false;
+ };
+
+ const openAdd = async () => {
+ id.value = undefined;
+ operationType.value = "add";
+ visible.value = true;
+ fileList.value = [];
+ await nextTick();
+ await loadDeviceName();
+ };
+
+ const openEdit = async editId => {
+ const { data } = await getRepairById(editId);
+ id.value = editId;
+ operationType.value = "edit";
+ visible.value = true;
+ await nextTick();
+ await loadDeviceName();
+ setForm(data);
+ };
+
+ const openView = async viewId => {
+ const { data } = await getRepairById(viewId);
+ id.value = viewId;
+ operationType.value = "view";
+ visible.value = true;
+ await nextTick();
+ await loadDeviceName();
+ setForm(data);
+ };
+
+ defineExpose({
+ openAdd,
+ openEdit,
+ openView,
+ });
</script>
+
+<style lang="scss" scoped></style>
--
Gitblit v1.9.3