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/index.vue |  143 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 143 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/pro/line/index.vue b/src/views/mes/pro/line/index.vue
new file mode 100644
index 0000000..6c613a7
--- /dev/null
+++ b/src/views/mes/pro/line/index.vue
@@ -0,0 +1,143 @@
+<script lang="ts" setup>
+  import type { VxeTableGridOptions } from "#/adapter/vxe-table";
+  import type { MesProLineApi } from "#/api/mes/pro/line";
+
+  import { Page, useVbenModal } from "@vben/common-ui";
+  import { downloadFileFromBlobPart } from "@vben/utils";
+
+  import { Button, message } from "ant-design-vue";
+
+  import { ACTION_ICON, TableAction, useVbenVxeGrid } from "#/adapter/vxe-table";
+  import {
+    deleteLine,
+    exportLineExcel,
+    getLinePage,
+  } from "#/api/mes/pro/line";
+  import { $t } from "#/locales";
+
+  import { useGridColumns, useGridFormSchema } from "./data";
+  import Form from "./modules/form.vue";
+
+  defineOptions({ name: "MesProLine" });
+
+  const [FormModal, formModalApi] = useVbenModal({
+    connectedComponent: Form,
+    destroyOnClose: true,
+  });
+
+  /** 鍒锋柊琛ㄦ牸 */
+  function handleRefresh() {
+    gridApi.query();
+  }
+
+  /** 鏂板浜х嚎 */
+  function handleCreate() {
+    formModalApi.setData({ formType: "create" }).open();
+  }
+
+  /** 鏌ョ湅璇︽儏 */
+  function handleDetail(row: MesProLineApi.Line) {
+    formModalApi.setData({ formType: "detail", id: row.id }).open();
+  }
+
+  /** 缂栬緫浜х嚎 */
+  function handleEdit(row: MesProLineApi.Line) {
+    formModalApi.setData({ formType: "update", id: row.id }).open();
+  }
+
+  /** 鍒犻櫎浜х嚎 */
+  async function handleDelete(row: MesProLineApi.Line) {
+    await deleteLine(row.id!);
+    message.success($t("ui.actionMessage.deleteSuccess", [row.name]));
+    handleRefresh();
+  }
+
+  /** 瀵煎嚭琛ㄦ牸 */
+  async function handleExport() {
+    const data = await exportLineExcel(await gridApi.formApi.getValues());
+    downloadFileFromBlobPart({ fileName: "浜х嚎缁存姢.xls", source: data });
+  }
+
+  const [Grid, gridApi] = useVbenVxeGrid({
+    formOptions: {
+      schema: useGridFormSchema(),
+    },
+    gridOptions: {
+      columns: useGridColumns(),
+      height: "auto",
+      keepSource: true,
+      proxyConfig: {
+        ajax: {
+          query: async ({ page }, formValues) => {
+            return await getLinePage({
+              pageNo: page.currentPage,
+              pageSize: page.pageSize,
+              ...formValues,
+            });
+          },
+        },
+      },
+      rowConfig: {
+        keyField: "id",
+        isHover: true,
+      },
+      toolbarConfig: {
+        refresh: true,
+        search: true,
+      },
+    } as VxeTableGridOptions<MesProLineApi.Line>,
+  });
+</script>
+
+<template>
+  <Page auto-content-height>
+    <FormModal @success="handleRefresh" />
+    <Grid table-title="浜х嚎鍒楄〃">
+      <template #toolbar-tools>
+        <TableAction :actions="[
+            {
+              label: $t('ui.actionTitle.create', ['浜х嚎']),
+              type: 'primary',
+              icon: ACTION_ICON.ADD,
+              auth: ['mes:pro-line:create'],
+              onClick: handleCreate,
+            },
+            {
+              label: $t('ui.actionTitle.export'),
+              type: 'primary',
+              icon: ACTION_ICON.DOWNLOAD,
+              auth: ['mes:pro-line:export'],
+              onClick: handleExport,
+            },
+          ]" />
+      </template>
+      <template #code="{ row }">
+        <Button type="link" @click="handleDetail(row)">
+          {{ row.code }}
+        </Button>
+      </template>
+      <template #actions="{ row }">
+        <TableAction :actions="[
+            {
+              label: $t('common.edit'),
+              type: 'link',
+              icon: ACTION_ICON.EDIT,
+              auth: ['mes:pro-line:update'],
+              onClick: handleEdit.bind(null, row),
+            },
+            {
+              label: $t('common.delete'),
+              type: 'link',
+              danger: true,
+              icon: ACTION_ICON.DELETE,
+              auth: ['mes:pro-line:delete'],
+              popConfirm: {
+                title: $t('ui.actionMessage.deleteConfirm', [row.name]),
+                confirm: handleDelete.bind(null, row),
+              },
+            },
+          ]" />
+      </template>
+    </Grid>
+  </Page>
+</template>

--
Gitblit v1.9.3