From 91c82965b2d987452ca276e3a03b48c8dcda2ae9 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 19 八月 2026 11:47:26 +0800
Subject: [PATCH] config(env): 更新生产环境配置和公司名称

---
 src/views/mes/pro/line/modules/form.vue |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/pro/line/modules/form.vue b/src/views/mes/pro/line/modules/form.vue
new file mode 100644
index 0000000..067e1e0
--- /dev/null
+++ b/src/views/mes/pro/line/modules/form.vue
@@ -0,0 +1,111 @@
+<script lang="ts" setup>
+  import type { FormType } from "../data";
+  import type { MesProLineApi } from "#/api/mes/pro/line";
+
+  import { computed, ref } from "vue";
+
+  import { useVbenModal } from "@vben/common-ui";
+
+  import { Button, message } from "ant-design-vue";
+
+  import { useVbenForm } from "#/adapter/form";
+  import { createLine, getLine, updateLine } from "#/api/mes/pro/line";
+  import { $t } from "#/locales";
+
+  import { useFormSchema } from "../data";
+
+  defineOptions({ name: "MesProLineForm" });
+
+  const emit = defineEmits(["success"]);
+
+  const formType = ref<FormType>("create");
+  const formData = ref<MesProLineApi.Line>();
+
+  const isEditable = computed(() =>
+    ["create", "update"].includes(formType.value)
+  );
+
+  const getTitle = computed(() => {
+    switch (formType.value) {
+      case "detail": {
+        return $t("ui.actionTitle.view", ["浜х嚎"]);
+      }
+      case "update": {
+        return $t("ui.actionTitle.edit", ["浜х嚎"]);
+      }
+      default: {
+        return $t("ui.actionTitle.create", ["浜х嚎"]);
+      }
+    }
+  });
+
+  const [Form, formApi] = useVbenForm({
+    commonConfig: {
+      componentProps: {
+        class: "w-full",
+      },
+      formItemClass: "col-span-1",
+      labelWidth: 100,
+    },
+    layout: "horizontal",
+    schema: [],
+    showDefaultActions: false,
+    wrapperClass: "grid-cols-2",
+  });
+
+  const [Modal, modalApi] = useVbenModal({
+    async onConfirm() {
+      if (!isEditable.value) {
+        await modalApi.close();
+        return;
+      }
+      const { valid } = await formApi.validate();
+      if (!valid) return;
+      modalApi.lock();
+      try {
+        const data = (await formApi.getValues()) as MesProLineApi.Line;
+        if (formData.value?.id) {
+          await updateLine({ ...data, id: formData.value.id });
+        } else {
+          await createLine(data);
+        }
+        message.success($t("ui.actionMessage.operationSuccess"));
+        emit("success");
+        await modalApi.close();
+      } finally {
+        modalApi.unlock();
+      }
+    },
+    async onOpenChange(isOpen: boolean) {
+      if (!isOpen) {
+        formData.value = undefined;
+        return;
+      }
+      const data = modalApi.getData<{ formType: FormType; id?: number }>();
+      formType.value = data.formType;
+      formApi.setState({ schema: useFormSchema(formType.value) });
+      if (data?.id) {
+        modalApi.lock();
+        try {
+          formData.value = await getLine(data.id);
+          await formApi.setValues(formData.value);
+        } finally {
+          modalApi.unlock();
+        }
+      }
+    },
+  });
+</script>
+
+<template>
+  <Modal :title="getTitle" class="w-2/5">
+    <Form class="mx-4" />
+    <template #append-footer>
+      <div class="flex gap-2">
+        <Button @click="modalApi.close()">
+          {{ isEditable ? '鍙栨秷' : '鍏抽棴' }}
+        </Button>
+      </div>
+    </template>
+  </Modal>
+</template>

--
Gitblit v1.9.3