From 27c8277d717b34b55f3ea967027b53b067f77df3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 20 八月 2026 16:58:49 +0800
Subject: [PATCH] feat 功能变更

---
 src/views/mes/pd/product/modules/audit.vue |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/pd/product/modules/audit.vue b/src/views/mes/pd/product/modules/audit.vue
new file mode 100644
index 0000000..99b8627
--- /dev/null
+++ b/src/views/mes/pd/product/modules/audit.vue
@@ -0,0 +1,94 @@
+<script lang="ts" setup>
+  import type { VbenFormSchema } from '#/adapter/form';
+  import type { MesPdProductApi } from '#/api/mes/pd/product';
+
+  import { computed, ref } from 'vue';
+
+  import { useVbenModal } from '@vben/common-ui';
+  import { $t } from '@vben/locales';
+
+  import { message } from 'ant-design-vue';
+
+  import { useVbenForm } from '#/adapter/form';
+  import { auditProduct } from '#/api/mes/pd/product';
+
+  const emit = defineEmits(['success']);
+  const pass = ref(true); // true=閫氳繃 / false=椹冲洖
+  const rowData = ref<MesPdProductApi.Product>();
+  const getTitle = computed(() => (pass.value ? '瀹℃牳閫氳繃' : '瀹℃牳椹冲洖'));
+
+  const [Form, formApi] = useVbenForm({
+    commonConfig: {
+      componentProps: {
+        class: 'w-full',
+      },
+      formItemClass: 'col-span-1',
+      labelWidth: 130,
+    },
+    wrapperClass: 'grid-cols-1',
+    layout: 'horizontal',
+    schema: [],
+    showDefaultActions: false,
+  });
+
+  /** 瀹℃牳琛ㄥ崟瀛楁 */
+  function useAuditSchema(): VbenFormSchema[] {
+    return [
+      {
+        fieldName: 'auditRemark',
+        label: '瀹℃壒鎰忚',
+        component: 'Textarea',
+        formItemClass: 'col-span-1',
+        componentProps: {
+          rows: 3,
+          placeholder: pass.value
+            ? '璇疯緭鍏ュ鎵规剰瑙侊紙鍙�夛級'
+            : '璇疯緭鍏ラ┏鍥炲師鍥狅紙蹇呭~锛�',
+        },
+        rules: pass.value ? '' : 'required',
+      },
+    ];
+  }
+
+  const [Modal, modalApi] = useVbenModal({
+    async onConfirm() {
+      const { valid } = await formApi.validate();
+      if (!valid) {
+        return;
+      }
+      modalApi.lock();
+      const values = await formApi.getValues();
+      try {
+        await auditProduct({
+          id: rowData.value!.id!,
+          pass: pass.value,
+          auditRemark: values.auditRemark,
+        });
+        await modalApi.close();
+        emit('success');
+        message.success(pass.value ? '瀹℃壒閫氳繃' : '瀹℃壒椹冲洖');
+      } finally {
+        modalApi.unlock();
+      }
+    },
+    async onOpenChange(isOpen: boolean) {
+      if (!isOpen) {
+        return;
+      }
+      const data = modalApi.getData<{
+        row: MesPdProductApi.Product;
+        pass: boolean;
+      }>();
+      rowData.value = data.row;
+      pass.value = data.pass;
+      formApi.setState({ schema: useAuditSchema() });
+      formApi.resetForm();
+    },
+  });
+</script>
+
+<template>
+  <Modal :title="getTitle" class="w-2/5">
+    <Form class="mx-4" />
+  </Modal>
+</template>

--
Gitblit v1.9.3