From 1c1f20aa356e90b59964dda3c0d7d1eb7f7e950f Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期五, 10 七月 2026 16:20:40 +0800
Subject: [PATCH] 修复mes菜单路径问题
---
src/views/warehouse/location/modules/form.vue | 2
src/views/mes/pro/card/index.vue | 2
src/views/itemreceipt/modules/line-list.vue | 2
src/views/mes/md/workstation/modules/form.vue | 249 +++---
src/views/sn/modules/detail.vue | 2
src/views/returnvendor/modules/line-list.vue | 2
src/views/mes/md/item/modules/form.vue | 2
src/views/productreceipt/modules/line-list.vue | 2
src/views/warehouse/area/modules/form.vue | 2
src/views/warehouse/modules/form.vue | 2
src/views/mes/tm/tool/modules/form.vue | 199 +++---
src/views/mes/dv/machinery/modules/form.vue | 230 +++---
src/views/outsourcereceipt/modules/line-list.vue | 2
src/views/returnissue/modules/line-list.vue | 2
src/views/mes/md/item/index.vue | 282 ++++----
src/views/mes/pro/workorder/modules/form.vue | 481 +++++++-------
src/views/mes/pro/card/modules/form.vue | 2
src/views/mes/pro/workorder/index.vue | 271 ++++----
src/views/transfer/modules/line-list.vue | 2
src/views/mes/md/workstation/index.vue | 2
src/views/mes/md/workstation/workshop/modules/form.vue | 198 +++--
src/views/returnsales/modules/line-list.vue | 2
22 files changed, 972 insertions(+), 968 deletions(-)
diff --git a/src/views/itemreceipt/modules/line-list.vue b/src/views/itemreceipt/modules/line-list.vue
index e3fcb74..9a88157 100644
--- a/src/views/itemreceipt/modules/line-list.vue
+++ b/src/views/itemreceipt/modules/line-list.vue
@@ -18,7 +18,7 @@
getItemReceiptLinePage,
} from '#/api/mes/wm/itemreceipt/line';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/mes/dv/machinery/modules/form.vue b/src/views/mes/dv/machinery/modules/form.vue
index cd33dba..5a9a3f9 100644
--- a/src/views/mes/dv/machinery/modules/form.vue
+++ b/src/views/mes/dv/machinery/modules/form.vue
@@ -1,144 +1,144 @@
<script lang="ts" setup>
-import type { FormType } from '../data';
+ import type { FormType } from "../data";
-import type { MesDvMachineryApi } from '#/api/mes/dv/machinery';
+ import type { MesDvMachineryApi } from "#/api/mes/dv/machinery";
-import { computed, ref } from 'vue';
+ import { computed, ref } from "vue";
-import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
-import { BarcodeBizTypeEnum } from '../../../../../packages/constants/src';
+ import { useVbenModal } from "../../../../../packages/effects/common-ui/src";
+ import { BarcodeBizTypeEnum } from "../../../../../packages/constants/src";
-import { Button, message, Tabs } from 'ant-design-vue';
+ import { Button, message, Tabs } from "ant-design-vue";
-import { useVbenForm } from '#/adapter/form';
-import {
- createMachinery,
- getMachinery,
- updateMachinery,
-} from '#/api/mes/dv/machinery';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { useVbenForm } from "#/adapter/form";
+ import {
+ createMachinery,
+ getMachinery,
+ updateMachinery,
+ } from "#/api/mes/dv/machinery";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useFormSchema } from '../data';
-import CheckRecordList from './check-record-list.vue';
-import MaintenRecordList from './mainten-record-list.vue';
-import RepairList from './repair-list.vue';
+ import { useFormSchema } from "../data";
+ import CheckRecordList from "./check-record-list.vue";
+ import MaintenRecordList from "./mainten-record-list.vue";
+ import RepairList from "./repair-list.vue";
-const emit = defineEmits(['success']);
-const formType = ref<FormType>('create'); // 琛ㄥ崟妯″紡
-const subTabsName = ref('check'); // 褰撳墠璧勬簮椤电
-const formData = ref<MesDvMachineryApi.Machinery>();
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-const isDetail = computed(() => formType.value === 'detail'); // 鏄惁鏌ョ湅妯″紡
-const getTitle = computed(() => {
- if (formType.value === 'detail') {
- return '鏌ョ湅璁惧';
- }
- return formType.value === 'update' ? '淇敼璁惧' : '鏂板璁惧';
-});
+ const emit = defineEmits(["success"]);
+ const formType = ref<FormType>("create"); // 琛ㄥ崟妯″紡
+ const subTabsName = ref("check"); // 褰撳墠璧勬簮椤电
+ const formData = ref<MesDvMachineryApi.Machinery>();
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+ const isDetail = computed(() => formType.value === "detail"); // 鏄惁鏌ョ湅妯″紡
+ const getTitle = computed(() => {
+ if (formType.value === "detail") {
+ return "鏌ョ湅璁惧";
+ }
+ return formType.value === "update" ? "淇敼璁惧" : "鏂板璁惧";
+ });
-const [Form, formApi] = useVbenForm({
- commonConfig: {
- componentProps: {
- class: 'w-full',
+ const [Form, formApi] = useVbenForm({
+ commonConfig: {
+ componentProps: {
+ class: "w-full",
+ },
+ formItemClass: "col-span-1",
+ labelWidth: 110,
},
- formItemClass: 'col-span-1',
- labelWidth: 110,
- },
- wrapperClass: 'grid-cols-3',
- layout: 'horizontal',
- schema: [],
- showDefaultActions: false,
-});
+ wrapperClass: "grid-cols-3",
+ layout: "horizontal",
+ schema: [],
+ showDefaultActions: false,
+ });
-/** 鏌ョ湅璁惧鏉$爜 */
-function handleBarcode() {
- if (!formData.value?.id) {
- return;
+ /** 鏌ョ湅璁惧鏉$爜 */
+ function handleBarcode() {
+ if (!formData.value?.id) {
+ return;
+ }
+ barcodeDetailRef.value?.openByBusiness(
+ formData.value.id,
+ BarcodeBizTypeEnum.MACHINERY,
+ formData.value.code,
+ formData.value.name
+ );
}
- barcodeDetailRef.value?.openByBusiness(
- formData.value.id,
- BarcodeBizTypeEnum.MACHINERY,
- formData.value.code,
- formData.value.name,
- );
-}
-const [Modal, modalApi] = useVbenModal({
- async onConfirm() {
- if (isDetail.value) {
- await modalApi.close();
- return;
- }
- const { valid } = await formApi.validate();
- if (!valid) {
- return;
- }
- modalApi.lock();
- // 鎻愪氦琛ㄥ崟
- const data = (await formApi.getValues()) as MesDvMachineryApi.Machinery;
- try {
- await (data.id ? updateMachinery(data) : createMachinery(data));
- // 鍏抽棴骞舵彁绀�
- await modalApi.close();
- emit('success');
- message.success($t('ui.actionMessage.operationSuccess'));
- } finally {
- modalApi.unlock();
- }
- },
- async onOpenChange(isOpen: boolean) {
- if (!isOpen) {
- formData.value = undefined;
- return;
- }
- subTabsName.value = 'check';
- // 鍔犺浇鏁版嵁
- const data = modalApi.getData<{ formType: FormType; id?: number }>();
- formType.value = data.formType;
- formApi.setState({ schema: useFormSchema(formType.value, formApi) });
- formApi.setDisabled(formType.value === 'detail');
- modalApi.setState({ showConfirmButton: formType.value !== 'detail' });
- if (!data?.id) {
- return;
- }
- modalApi.lock();
- try {
- formData.value = await getMachinery(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
- } finally {
- modalApi.unlock();
- }
- },
-});
+ const [Modal, modalApi] = useVbenModal({
+ async onConfirm() {
+ if (isDetail.value) {
+ await modalApi.close();
+ return;
+ }
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
+ modalApi.lock();
+ // 鎻愪氦琛ㄥ崟
+ const data = (await formApi.getValues()) as MesDvMachineryApi.Machinery;
+ try {
+ await (data.id ? updateMachinery(data) : createMachinery(data));
+ // 鍏抽棴骞舵彁绀�
+ await modalApi.close();
+ emit("success");
+ message.success($t("ui.actionMessage.operationSuccess"));
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ async onOpenChange(isOpen: boolean) {
+ if (!isOpen) {
+ formData.value = undefined;
+ return;
+ }
+ subTabsName.value = "check";
+ // 鍔犺浇鏁版嵁
+ const data = modalApi.getData<{ formType: FormType; id?: number }>();
+ formType.value = data.formType;
+ formApi.setState({ schema: useFormSchema(formType.value, formApi) });
+ formApi.setDisabled(formType.value === "detail");
+ modalApi.setState({ showConfirmButton: formType.value !== "detail" });
+ if (!data?.id) {
+ return;
+ }
+ modalApi.lock();
+ try {
+ formData.value = await getMachinery(data.id);
+ // 璁剧疆鍒� values
+ await formApi.setValues(formData.value);
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ });
</script>
<template>
- <Modal :title="getTitle" class="w-4/5">
+ <Modal :title="getTitle"
+ class="w-4/5">
<Form class="mx-4" />
- <Tabs
- v-if="formType !== 'create' && formData?.id"
- v-model:active-key="subTabsName"
- class="mx-4 mt-4"
- >
- <Tabs.TabPane key="check" tab="鐐规璁板綍">
+ <Tabs v-if="formType !== 'create' && formData?.id"
+ v-model:active-key="subTabsName"
+ class="mx-4 mt-4">
+ <Tabs.TabPane key="check"
+ tab="鐐规璁板綍">
<CheckRecordList :machinery-id="formData.id" />
</Tabs.TabPane>
- <Tabs.TabPane key="mainten" tab="淇濆吇璁板綍">
+ <Tabs.TabPane key="mainten"
+ tab="淇濆吇璁板綍">
<MaintenRecordList :machinery-id="formData.id" />
</Tabs.TabPane>
- <Tabs.TabPane key="repair" tab="缁翠慨璁板綍">
+ <Tabs.TabPane key="repair"
+ tab="缁翠慨璁板綍">
<RepairList :machinery-id="formData.id" />
</Tabs.TabPane>
</Tabs>
<template #prepend-footer>
<div class="flex flex-auto items-center">
- <Button
- v-if="isDetail && formData?.id"
- type="primary"
- @click="handleBarcode"
- >
+ <Button v-if="isDetail && formData?.id"
+ type="primary"
+ @click="handleBarcode">
鏌ョ湅鏉$爜
</Button>
</div>
diff --git a/src/views/mes/md/item/index.vue b/src/views/mes/md/item/index.vue
index 5a9253c..85c3375 100644
--- a/src/views/mes/md/item/index.vue
+++ b/src/views/mes/md/item/index.vue
@@ -1,149 +1,156 @@
<script lang="ts" setup>
-import type { VxeTableGridOptions } from '#/adapter/vxe-table';
-import type { MesMdItemApi } from '#/api/mes/md/item';
-import type { MesMdItemTypeApi } from '#/api/mes/md/item/type';
+ import type { VxeTableGridOptions } from "#/adapter/vxe-table";
+ import type { MesMdItemApi } from "#/api/mes/md/item";
+ import type { MesMdItemTypeApi } from "#/api/mes/md/item/type";
-import { ref } from 'vue';
+ import { ref } from "vue";
-import { confirm, Page, useVbenModal } from '../../../../packages/effects/common-ui/src';
-import { DICT_TYPE } from '../../../../packages/constants/src';
-import { getDictLabel } from '../../../../packages/effects/hooks/src';
-import { downloadFileFromBlobPart } from '../../../../packages/utils/src';
+ import {
+ confirm,
+ Page,
+ useVbenModal,
+ } from "../../../../packages/effects/common-ui/src";
+ import { DICT_TYPE } from "../../../../packages/constants/src";
+ import { getDictLabel } from "../../../../packages/effects/hooks/src";
+ import { downloadFileFromBlobPart } from "../../../../packages/utils/src";
-import { Button, Card, message } from 'ant-design-vue';
+ import { Button, Card, message } from "ant-design-vue";
-import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
-import {
- deleteItem,
- exportItem,
- getItemPage,
- updateItemStatus,
-} from '#/api/mes/md/item';
-import { $t } from '#/locales';
-import { MdItemTypeTree } from '#/views/mes/md/item/type/components';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+ import { ACTION_ICON, TableAction, useVbenVxeGrid } from "#/adapter/vxe-table";
+ import {
+ deleteItem,
+ exportItem,
+ getItemPage,
+ updateItemStatus,
+ } from "#/api/mes/md/item";
+ import { $t } from "#/locales";
+ import { MdItemTypeTree } from "#/views/mes/md/item/type/components";
+ import { PrinterLabel } from "#/views/wls/barcode/components";
-import { useGridColumns, useGridFormSchema } from './data';
-import Form from './modules/form.vue';
-import ImportForm from './modules/import-form.vue';
+ import { useGridColumns, useGridFormSchema } from "./data";
+ import Form from "./modules/form.vue";
+ import ImportForm from "./modules/import-form.vue";
-const selectedItemTypeId = ref<number>(); // 褰撳墠閫変腑鐨勭墿鏂欏垎绫荤紪鍙�
+ const selectedItemTypeId = ref<number>(); // 褰撳墠閫変腑鐨勭墿鏂欏垎绫荤紪鍙�
-const [FormModal, formModalApi] = useVbenModal({
- connectedComponent: Form,
- destroyOnClose: true,
-});
-
-const [ImportModal, importModalApi] = useVbenModal({
- connectedComponent: ImportForm,
- destroyOnClose: true,
-});
-
-/** 鍒锋柊琛ㄦ牸 */
-function handleRefresh() {
- gridApi.query();
-}
-
-/** 鍒涘缓鐗╂枡 */
-function handleCreate() {
- formModalApi.setData({ formType: 'create' }).open();
-}
-
-/** 鏌ョ湅鐗╂枡 */
-function handleDetail(row: MesMdItemApi.Item) {
- formModalApi.setData({ id: row.id, formType: 'detail' }).open();
-}
-
-/** 缂栬緫鐗╂枡 */
-function handleEdit(row: MesMdItemApi.Item) {
- formModalApi.setData({ id: row.id, formType: 'update' }).open();
-}
-
-/** 鍒犻櫎鐗╂枡 */
-async function handleDelete(row: MesMdItemApi.Item) {
- const hideLoading = message.loading({
- content: $t('ui.actionMessage.deleting', [row.name]),
- duration: 0,
+ const [FormModal, formModalApi] = useVbenModal({
+ connectedComponent: Form,
+ destroyOnClose: true,
});
- try {
- await deleteItem(row.id!);
- message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
+
+ const [ImportModal, importModalApi] = useVbenModal({
+ connectedComponent: ImportForm,
+ destroyOnClose: true,
+ });
+
+ /** 鍒锋柊琛ㄦ牸 */
+ function handleRefresh() {
+ gridApi.query();
+ }
+
+ /** 鍒涘缓鐗╂枡 */
+ function handleCreate() {
+ formModalApi.setData({ formType: "create" }).open();
+ }
+
+ /** 鏌ョ湅鐗╂枡 */
+ function handleDetail(row: MesMdItemApi.Item) {
+ formModalApi.setData({ id: row.id, formType: "detail" }).open();
+ }
+
+ /** 缂栬緫鐗╂枡 */
+ function handleEdit(row: MesMdItemApi.Item) {
+ formModalApi.setData({ id: row.id, formType: "update" }).open();
+ }
+
+ /** 鍒犻櫎鐗╂枡 */
+ async function handleDelete(row: MesMdItemApi.Item) {
+ const hideLoading = message.loading({
+ content: $t("ui.actionMessage.deleting", [row.name]),
+ duration: 0,
+ });
+ try {
+ await deleteItem(row.id!);
+ message.success($t("ui.actionMessage.deleteSuccess", [row.name]));
+ handleRefresh();
+ } finally {
+ hideLoading();
+ }
+ }
+
+ /** 瀵煎嚭鐗╂枡 */
+ async function handleExport() {
+ const data = await exportItem(await gridApi.formApi.getValues());
+ downloadFileFromBlobPart({ fileName: "鐗╂枡浜у搧.xls", source: data });
+ }
+
+ /** 瀵煎叆鐗╂枡 */
+ function handleImport() {
+ importModalApi.open();
+ }
+
+ /** 鍒嗙被鏍戠偣鍑� */
+ function handleTypeNodeClick(row: MesMdItemTypeApi.ItemType | undefined) {
+ selectedItemTypeId.value = row?.id;
handleRefresh();
- } finally {
- hideLoading();
}
-}
-/** 瀵煎嚭鐗╂枡 */
-async function handleExport() {
- const data = await exportItem(await gridApi.formApi.getValues());
- downloadFileFromBlobPart({ fileName: '鐗╂枡浜у搧.xls', source: data });
-}
-
-/** 瀵煎叆鐗╂枡 */
-function handleImport() {
- importModalApi.open();
-}
-
-/** 鍒嗙被鏍戠偣鍑� */
-function handleTypeNodeClick(row: MesMdItemTypeApi.ItemType | undefined) {
- selectedItemTypeId.value = row?.id;
- handleRefresh();
-}
-
-/** 鏇存柊鐗╂枡鐘舵�� */
-async function handleStatusChange(
- newStatus: number,
- row: MesMdItemApi.Item,
-): Promise<boolean | undefined> {
- try {
- await confirm(
- `纭瑕佸皢"${row.name}"鐗╂枡鍒囨崲涓恒��${getDictLabel(DICT_TYPE.COMMON_STATUS, newStatus)}銆戝悧锛焋,
- );
- } catch {
- return false;
+ /** 鏇存柊鐗╂枡鐘舵�� */
+ async function handleStatusChange(
+ newStatus: number,
+ row: MesMdItemApi.Item
+ ): Promise<boolean | undefined> {
+ try {
+ await confirm(
+ `纭瑕佸皢"${row.name}"鐗╂枡鍒囨崲涓恒��${getDictLabel(
+ DICT_TYPE.COMMON_STATUS,
+ newStatus
+ )}銆戝悧锛焋
+ );
+ } catch {
+ return false;
+ }
+ await updateItemStatus(row.id!, newStatus);
+ message.success($t("ui.actionMessage.operationSuccess"));
+ return true;
}
- await updateItemStatus(row.id!, newStatus);
- message.success($t('ui.actionMessage.operationSuccess'));
- return true;
-}
-const [Grid, gridApi] = useVbenVxeGrid({
- formOptions: {
- schema: useGridFormSchema(),
- },
- gridOptions: {
- columns: useGridColumns(handleStatusChange),
- height: 'auto',
- keepSource: true,
- proxyConfig: {
- ajax: {
- query: async ({ page }, formValues) => {
- return await getItemPage({
- pageNo: page.currentPage,
- pageSize: page.pageSize,
- ...formValues,
- itemTypeId: selectedItemTypeId.value,
- });
+ const [Grid, gridApi] = useVbenVxeGrid({
+ formOptions: {
+ schema: useGridFormSchema(),
+ },
+ gridOptions: {
+ columns: useGridColumns(handleStatusChange),
+ height: "auto",
+ keepSource: true,
+ proxyConfig: {
+ ajax: {
+ query: async ({ page }, formValues) => {
+ return await getItemPage({
+ pageNo: page.currentPage,
+ pageSize: page.pageSize,
+ ...formValues,
+ itemTypeId: selectedItemTypeId.value,
+ });
+ },
},
},
- },
- rowConfig: {
- keyField: 'id',
- isHover: true,
- },
- toolbarConfig: {
- refresh: true,
- search: true,
- },
- } as VxeTableGridOptions<MesMdItemApi.Item>,
-});
+ rowConfig: {
+ keyField: "id",
+ isHover: true,
+ },
+ toolbarConfig: {
+ refresh: true,
+ search: true,
+ },
+ } as VxeTableGridOptions<MesMdItemApi.Item>,
+ });
</script>
<template>
- <Page auto-content-height><FormModal @success="handleRefresh" />
+ <Page auto-content-height>
+ <FormModal @success="handleRefresh" />
<ImportModal @success="handleRefresh" />
-
<div class="flex h-full w-full">
<Card class="mr-4 h-full w-1/6">
<MdItemTypeTree @node-click="handleTypeNodeClick" />
@@ -151,8 +158,7 @@
<div class="w-5/6">
<Grid table-title="鐗╂枡浜у搧鍒楄〃">
<template #toolbar-tools>
- <TableAction
- :actions="[
+ <TableAction :actions="[
{
label: $t('ui.actionTitle.create', ['鐗╂枡']),
type: 'primary',
@@ -174,18 +180,17 @@
auth: ['mes:md-item:export'],
onClick: handleExport,
},
- ]"
- />
+ ]" />
</template>
<template #code="{ row }">
- <Button type="link" @click="handleDetail(row)">
+ <Button type="link"
+ @click="handleDetail(row)">
{{ row.code }}
</Button>
</template>
<template #actions="{ row }">
<div class="flex items-center justify-center">
- <TableAction
- :actions="[
+ <TableAction :actions="[
{
label: $t('common.edit'),
type: 'link',
@@ -204,13 +209,10 @@
confirm: handleDelete.bind(null, row),
},
},
- ]"
- />
- <PrinterLabel
- :biz-id="row.id"
- :biz-code="row.code"
- biz-type="ITEM"
- />
+ ]" />
+ <PrinterLabel :biz-id="row.id"
+ :biz-code="row.code"
+ biz-type="ITEM" />
</div>
</template>
</Grid>
diff --git a/src/views/mes/md/item/modules/form.vue b/src/views/mes/md/item/modules/form.vue
index b666528..3295fb3 100644
--- a/src/views/mes/md/item/modules/form.vue
+++ b/src/views/mes/md/item/modules/form.vue
@@ -13,7 +13,7 @@
import { useVbenForm } from '#/adapter/form';
import { createItem, getItem, updateItem } from '#/api/mes/md/item';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useFormSchema } from '../data';
import ItemBatchConfigForm from './item-batch-config-form.vue';
diff --git a/src/views/mes/md/workstation/index.vue b/src/views/mes/md/workstation/index.vue
index 17021d7..528c523 100644
--- a/src/views/mes/md/workstation/index.vue
+++ b/src/views/mes/md/workstation/index.vue
@@ -17,7 +17,7 @@
getWorkstationPage,
} from '#/api/mes/md/workstation';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
diff --git a/src/views/mes/md/workstation/modules/form.vue b/src/views/mes/md/workstation/modules/form.vue
index c8070f9..5abf364 100644
--- a/src/views/mes/md/workstation/modules/form.vue
+++ b/src/views/mes/md/workstation/modules/form.vue
@@ -1,151 +1,154 @@
<script lang="ts" setup>
-import type { FormType } from '../data';
+ import type { FormType } from "../data";
-import type { MesMdWorkstationApi } from '#/api/mes/md/workstation';
+ import type { MesMdWorkstationApi } from "#/api/mes/md/workstation";
-import { computed, ref } from 'vue';
+ import { computed, ref } from "vue";
-import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
-import { BarcodeBizTypeEnum } from '../../../../../packages/constants/src';
+ import { useVbenModal } from "../../../../../packages/effects/common-ui/src";
+ import { BarcodeBizTypeEnum } from "../../../../../packages/constants/src";
-import { Button, message, Tabs } from 'ant-design-vue';
+ import { Button, message, Tabs } from "ant-design-vue";
-import { useVbenForm } from '#/adapter/form';
-import {
- createWorkstation,
- getWorkstation,
- updateWorkstation,
-} from '#/api/mes/md/workstation';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { useVbenForm } from "#/adapter/form";
+ import {
+ createWorkstation,
+ getWorkstation,
+ updateWorkstation,
+ } from "#/api/mes/md/workstation";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useFormSchema } from '../data';
-import MachineList from './machine-list.vue';
-import ToolList from './tool-list.vue';
-import WorkerList from './worker-list.vue';
+ import { useFormSchema } from "../data";
+ import MachineList from "./machine-list.vue";
+ import ToolList from "./tool-list.vue";
+ import WorkerList from "./worker-list.vue";
-const emit = defineEmits(['success']);
-const formType = ref<FormType>('create'); // 琛ㄥ崟妯″紡
-const subTabsName = ref('machine'); // 褰撳墠璧勬簮椤电
-const formData = ref<MesMdWorkstationApi.Workstation>();
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+ const emit = defineEmits(["success"]);
+ const formType = ref<FormType>("create"); // 琛ㄥ崟妯″紡
+ const subTabsName = ref("machine"); // 褰撳墠璧勬簮椤电
+ const formData = ref<MesMdWorkstationApi.Workstation>();
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-const isDetail = computed(() => formType.value === 'detail'); // 鏄惁鏌ョ湅妯″紡
-const getTitle = computed(() => {
- if (formType.value === 'detail') {
- return '鏌ョ湅宸ヤ綔绔�';
- }
- return formType.value === 'update' ? '淇敼宸ヤ綔绔�' : '鏂板宸ヤ綔绔�';
-});
+ const isDetail = computed(() => formType.value === "detail"); // 鏄惁鏌ョ湅妯″紡
+ const getTitle = computed(() => {
+ if (formType.value === "detail") {
+ return "鏌ョ湅宸ヤ綔绔�";
+ }
+ return formType.value === "update" ? "淇敼宸ヤ綔绔�" : "鏂板宸ヤ綔绔�";
+ });
-const [Form, formApi] = useVbenForm({
- commonConfig: {
- componentProps: {
- class: 'w-full',
+ const [Form, formApi] = useVbenForm({
+ commonConfig: {
+ componentProps: {
+ class: "w-full",
+ },
+ formItemClass: "col-span-1",
+ labelWidth: 110,
},
- formItemClass: 'col-span-1',
- labelWidth: 110,
- },
- wrapperClass: 'grid-cols-3',
- layout: 'horizontal',
- schema: [],
- showDefaultActions: false,
-});
+ wrapperClass: "grid-cols-3",
+ layout: "horizontal",
+ schema: [],
+ showDefaultActions: false,
+ });
-/** 鏌ョ湅宸ヤ綔绔欐潯鐮� */
-function handleBarcode() {
- if (!formData.value?.id) {
- return;
+ /** 鏌ョ湅宸ヤ綔绔欐潯鐮� */
+ function handleBarcode() {
+ if (!formData.value?.id) {
+ return;
+ }
+ barcodeDetailRef.value?.openByBusiness(
+ formData.value.id,
+ BarcodeBizTypeEnum.WORKSTATION,
+ formData.value.code,
+ formData.value.name
+ );
}
- barcodeDetailRef.value?.openByBusiness(
- formData.value.id,
- BarcodeBizTypeEnum.WORKSTATION,
- formData.value.code,
- formData.value.name,
- );
-}
-const [Modal, modalApi] = useVbenModal({
- async onConfirm() {
- if (isDetail.value) {
- await modalApi.close();
- return;
- }
- const { valid } = await formApi.validate();
- if (!valid) {
- return;
- }
- modalApi.lock();
- // 鎻愪氦琛ㄥ崟
- const data = (await formApi.getValues()) as MesMdWorkstationApi.Workstation;
- try {
- if (formType.value === 'create') {
- const id = await createWorkstation(data);
- formData.value = { ...data, id };
- await formApi.setFieldValue('id', id);
- formType.value = 'update';
- } else {
- await updateWorkstation(data);
- formData.value = { ...formData.value, ...data };
+ const [Modal, modalApi] = useVbenModal({
+ async onConfirm() {
+ if (isDetail.value) {
+ await modalApi.close();
+ return;
}
- emit('success');
- message.success($t('ui.actionMessage.operationSuccess'));
- } finally {
- modalApi.unlock();
- }
- },
- async onOpenChange(isOpen: boolean) {
- if (!isOpen) {
- formData.value = undefined;
- return;
- }
- subTabsName.value = 'machine';
- // 鍔犺浇鏁版嵁
- const data = modalApi.getData<{ formType: FormType; id?: number }>();
- formType.value = data.formType;
- formApi.setState({ schema: useFormSchema(data.formType, formApi) });
- formApi.setDisabled(formType.value === 'detail');
- modalApi.setState({ showConfirmButton: formType.value !== 'detail' });
- if (!data?.id) {
- return;
- }
- modalApi.lock();
- try {
- formData.value = await getWorkstation(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
- } finally {
- modalApi.unlock();
- }
- },
-});
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
+ modalApi.lock();
+ // 鎻愪氦琛ㄥ崟
+ const data = (await formApi.getValues()) as MesMdWorkstationApi.Workstation;
+ try {
+ if (formType.value === "create") {
+ const id = await createWorkstation(data);
+ formData.value = { ...data, id };
+ await formApi.setFieldValue("id", id);
+ formType.value = "update";
+ } else {
+ await updateWorkstation(data);
+ formData.value = { ...formData.value, ...data };
+ }
+ emit("success");
+ message.success($t("ui.actionMessage.operationSuccess"));
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ async onOpenChange(isOpen: boolean) {
+ if (!isOpen) {
+ formData.value = undefined;
+ return;
+ }
+ subTabsName.value = "machine";
+ // 鍔犺浇鏁版嵁
+ const data = modalApi.getData<{ formType: FormType; id?: number }>();
+ formType.value = data.formType;
+ formApi.setState({ schema: useFormSchema(data.formType, formApi) });
+ formApi.setDisabled(formType.value === "detail");
+ modalApi.setState({ showConfirmButton: formType.value !== "detail" });
+ if (!data?.id) {
+ return;
+ }
+ modalApi.lock();
+ try {
+ formData.value = await getWorkstation(data.id);
+ // 璁剧疆鍒� values
+ await formApi.setValues(formData.value);
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ });
</script>
<template>
- <Modal :title="getTitle" class="w-4/5">
+ <Modal :title="getTitle"
+ class="w-4/5">
<Form class="mx-4" />
- <Tabs
- v-if="formType !== 'create' && formData?.id"
- v-model:active-key="subTabsName"
- class="mx-4 mt-4"
- >
- <Tabs.TabPane key="machine" tab="璁惧璧勬簮">
- <MachineList :form-type="formType" :workstation-id="formData.id" />
+ <Tabs v-if="formType !== 'create' && formData?.id"
+ v-model:active-key="subTabsName"
+ class="mx-4 mt-4">
+ <Tabs.TabPane key="machine"
+ tab="璁惧璧勬簮">
+ <MachineList :form-type="formType"
+ :workstation-id="formData.id" />
</Tabs.TabPane>
- <Tabs.TabPane key="tool" tab="宸ヨ澶瑰叿">
- <ToolList :form-type="formType" :workstation-id="formData.id" />
+ <Tabs.TabPane key="tool"
+ tab="宸ヨ澶瑰叿">
+ <ToolList :form-type="formType"
+ :workstation-id="formData.id" />
</Tabs.TabPane>
- <Tabs.TabPane key="worker" tab="浜哄姏璧勬簮">
- <WorkerList :form-type="formType" :workstation-id="formData.id" />
+ <Tabs.TabPane key="worker"
+ tab="浜哄姏璧勬簮">
+ <WorkerList :form-type="formType"
+ :workstation-id="formData.id" />
</Tabs.TabPane>
</Tabs>
<template #prepend-footer>
<div class="flex flex-auto items-center">
- <Button
- v-if="isDetail && formData?.id"
- type="primary"
- @click="handleBarcode"
- >
+ <Button v-if="isDetail && formData?.id"
+ type="primary"
+ @click="handleBarcode">
鏌ョ湅鏉$爜
</Button>
</div>
diff --git a/src/views/mes/md/workstation/workshop/modules/form.vue b/src/views/mes/md/workstation/workshop/modules/form.vue
index 7ae08f9..ba98f53 100644
--- a/src/views/mes/md/workstation/workshop/modules/form.vue
+++ b/src/views/mes/md/workstation/workshop/modules/form.vue
@@ -1,119 +1,121 @@
<script lang="ts" setup>
-import type { FormType } from '../data';
+ import type { FormType } from "../data";
-import type { MesMdWorkshopApi } from '#/api/mes/md/workstation/workshop';
+ import type { MesMdWorkshopApi } from "#/api/mes/md/workstation/workshop";
-import { computed, ref } from 'vue';
+ import { computed, ref } from "vue";
-import { useVbenModal } from '../../../../../../packages/effects/common-ui/src';
-import { BarcodeBizTypeEnum } from '../../../../../../packages/constants/src';
+ import { useVbenModal } from "../../../../../../packages/effects/common-ui/src";
+ import { BarcodeBizTypeEnum } from "../../../../../../packages/constants/src";
-import { Button, message } from 'ant-design-vue';
+ import { Button, message } from "ant-design-vue";
-import { useVbenForm } from '#/adapter/form';
-import {
- createWorkshop,
- getWorkshop,
- updateWorkshop,
-} from '#/api/mes/md/workstation/workshop';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { useVbenForm } from "#/adapter/form";
+ import {
+ createWorkshop,
+ getWorkshop,
+ updateWorkshop,
+ } from "#/api/mes/md/workstation/workshop";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useFormSchema } from '../data';
+ import { useFormSchema } from "../data";
-const emit = defineEmits(['success']);
-const formType = ref<FormType>('create'); // 琛ㄥ崟妯″紡
-const formData = ref<MesMdWorkshopApi.Workshop>();
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+ const emit = defineEmits(["success"]);
+ const formType = ref<FormType>("create"); // 琛ㄥ崟妯″紡
+ const formData = ref<MesMdWorkshopApi.Workshop>();
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-const isDetail = computed(() => formType.value === 'detail'); // 鏄惁鏌ョ湅妯″紡
-const getTitle = computed(() => {
- if (formType.value === 'detail') {
- return '鏌ョ湅杞﹂棿';
- }
- return formType.value === 'update' ? '淇敼杞﹂棿' : '鏂板杞﹂棿';
-});
+ const isDetail = computed(() => formType.value === "detail"); // 鏄惁鏌ョ湅妯″紡
+ const getTitle = computed(() => {
+ if (formType.value === "detail") {
+ return "鏌ョ湅杞﹂棿";
+ }
+ return formType.value === "update" ? "淇敼杞﹂棿" : "鏂板杞﹂棿";
+ });
-const [Form, formApi] = useVbenForm({
- commonConfig: {
- componentProps: {
- class: 'w-full',
+ const [Form, formApi] = useVbenForm({
+ commonConfig: {
+ componentProps: {
+ class: "w-full",
+ },
+ formItemClass: "col-span-1",
+ labelWidth: 100,
},
- formItemClass: 'col-span-1',
- labelWidth: 100,
- },
- wrapperClass: 'grid-cols-2',
- layout: 'horizontal',
- schema: [],
- showDefaultActions: false,
-});
+ wrapperClass: "grid-cols-2",
+ layout: "horizontal",
+ schema: [],
+ showDefaultActions: false,
+ });
-/** 鏌ョ湅杞﹂棿鏉$爜 */
-function handleBarcode() {
- if (!formData.value?.id) {
- return;
+ /** 鏌ョ湅杞﹂棿鏉$爜 */
+ function handleBarcode() {
+ if (!formData.value?.id) {
+ return;
+ }
+ barcodeDetailRef.value?.openByBusiness(
+ formData.value.id,
+ BarcodeBizTypeEnum.WORKSHOP,
+ formData.value.code,
+ formData.value.name
+ );
}
- barcodeDetailRef.value?.openByBusiness(
- formData.value.id,
- BarcodeBizTypeEnum.WORKSHOP,
- formData.value.code,
- formData.value.name,
- );
-}
-const [Modal, modalApi] = useVbenModal({
- async onConfirm() {
- if (isDetail.value) {
- await modalApi.close();
- return;
- }
- const { valid } = await formApi.validate();
- if (!valid) {
- return;
- }
- modalApi.lock();
- // 鎻愪氦琛ㄥ崟
- const data = (await formApi.getValues()) as MesMdWorkshopApi.Workshop;
- try {
- await (formData.value?.id ? updateWorkshop(data) : createWorkshop(data));
- // 鍏抽棴骞舵彁绀�
- await modalApi.close();
- emit('success');
- message.success($t('ui.actionMessage.operationSuccess'));
- } 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(data.formType, formApi) });
- formApi.setDisabled(formType.value === 'detail');
- modalApi.setState({ showConfirmButton: formType.value !== 'detail' });
- if (!data?.id) {
- return;
- }
- modalApi.lock();
- try {
- formData.value = await getWorkshop(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
- } finally {
- modalApi.unlock();
- }
- },
-});
+ const [Modal, modalApi] = useVbenModal({
+ async onConfirm() {
+ if (isDetail.value) {
+ await modalApi.close();
+ return;
+ }
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
+ modalApi.lock();
+ // 鎻愪氦琛ㄥ崟
+ const data = (await formApi.getValues()) as MesMdWorkshopApi.Workshop;
+ try {
+ await (formData.value?.id ? updateWorkshop(data) : createWorkshop(data));
+ // 鍏抽棴骞舵彁绀�
+ await modalApi.close();
+ emit("success");
+ message.success($t("ui.actionMessage.operationSuccess"));
+ } 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(data.formType, formApi) });
+ formApi.setDisabled(formType.value === "detail");
+ modalApi.setState({ showConfirmButton: formType.value !== "detail" });
+ if (!data?.id) {
+ return;
+ }
+ modalApi.lock();
+ try {
+ formData.value = await getWorkshop(data.id);
+ // 璁剧疆鍒� values
+ await formApi.setValues(formData.value);
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ });
</script>
<template>
- <Modal :title="getTitle" class="w-1/2">
+ <Modal :title="getTitle"
+ class="w-1/2">
<Form class="mx-4" />
- <template v-if="isDetail && formData?.id" #prepend-footer>
+ <template v-if="isDetail && formData?.id"
+ #prepend-footer>
<div class="flex flex-auto items-center">
<Button @click="handleBarcode">鏌ョ湅鏉$爜</Button>
</div>
diff --git a/src/views/mes/pro/card/index.vue b/src/views/mes/pro/card/index.vue
index 292a6ac..f4ff261 100644
--- a/src/views/mes/pro/card/index.vue
+++ b/src/views/mes/pro/card/index.vue
@@ -16,7 +16,7 @@
getCardPage,
} from '#/api/mes/pro/card';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useGridColumns, useGridFormSchema } from './data';
import Form from './modules/form.vue';
diff --git a/src/views/mes/pro/card/modules/form.vue b/src/views/mes/pro/card/modules/form.vue
index 2539cca..365329c 100644
--- a/src/views/mes/pro/card/modules/form.vue
+++ b/src/views/mes/pro/card/modules/form.vue
@@ -19,7 +19,7 @@
updateCard,
} from '#/api/mes/pro/card';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useFormSchema } from '../data';
import ProcessList from './process-list.vue';
diff --git a/src/views/mes/pro/workorder/index.vue b/src/views/mes/pro/workorder/index.vue
index ce3b3cc..34b4a20 100644
--- a/src/views/mes/pro/workorder/index.vue
+++ b/src/views/mes/pro/workorder/index.vue
@@ -1,152 +1,151 @@
-锘�<script lang="ts" setup>
-import type { VxeTableGridOptions } from '#/adapter/vxe-table';
-import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder';
+<script lang="ts" setup>
+ import type { VxeTableGridOptions } from "#/adapter/vxe-table";
+ import type { MesProWorkOrderApi } from "#/api/mes/pro/workorder";
-import { ref } from 'vue';
+ import { ref } from "vue";
-import { Page, useVbenModal } from '../../../../packages/effects/common-ui/src';
-import {
- BarcodeBizTypeEnum,
- MesProWorkOrderStatusEnum,
- MesProWorkOrderTypeEnum,
-} from '../../../../packages/constants/src';
-import { downloadFileFromBlobPart } from '../../../../packages/utils/src';
+ import { Page, useVbenModal } from "../../../../packages/effects/common-ui/src";
+ import {
+ BarcodeBizTypeEnum,
+ MesProWorkOrderStatusEnum,
+ MesProWorkOrderTypeEnum,
+ } from "../../../../packages/constants/src";
+ import { downloadFileFromBlobPart } from "../../../../packages/utils/src";
-import { Button, message } from 'ant-design-vue';
+ import { Button, message } from "ant-design-vue";
-import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
-import {
- cancelWorkOrder,
- deleteWorkOrder,
- exportWorkOrder,
- getWorkOrderPage,
-} from '#/api/mes/pro/workorder';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { ACTION_ICON, TableAction, useVbenVxeGrid } from "#/adapter/vxe-table";
+ import {
+ cancelWorkOrder,
+ deleteWorkOrder,
+ exportWorkOrder,
+ getWorkOrderPage,
+ } from "#/api/mes/pro/workorder";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useGridColumns, useGridFormSchema } from './data';
-import Form from './modules/form.vue';
+ import { useGridColumns, useGridFormSchema } from "./data";
+ import Form from "./modules/form.vue";
-const [FormModal, formModalApi] = useVbenModal({
- connectedComponent: Form,
- destroyOnClose: true,
-});
-
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-
-/** 鍒锋柊琛ㄦ牸 */
-function handleRefresh() {
- gridApi.query();
-}
-
-/** 鍒涘缓璁㈠崟 */
-function handleCreate() {
- formModalApi.setData({ formType: 'create' }).open();
-}
-
-/** 鏂板瀛愯鍗� */
-function handleAddChild(row: MesProWorkOrderApi.WorkOrder) {
- formModalApi.setData({ formType: 'create', parentRow: row }).open();
-}
-
-/** 鏌ョ湅璁㈠崟璇︽儏 */
-function handleDetail(row: MesProWorkOrderApi.WorkOrder) {
- formModalApi.setData({ formType: 'detail', id: row.id }).open();
-}
-
-/** 缂栬緫璁㈠崟 */
-function handleEdit(row: MesProWorkOrderApi.WorkOrder) {
- formModalApi.setData({ formType: 'update', id: row.id }).open();
-}
-
-/** 瀹屾垚璁㈠崟 */
-function handleFinish(row: MesProWorkOrderApi.WorkOrder) {
- formModalApi.setData({ formType: 'finish', id: row.id }).open();
-}
-
-/** 鍒犻櫎璁㈠崟 */
-async function handleDelete(row: MesProWorkOrderApi.WorkOrder) {
- const hideLoading = message.loading({
- content: $t('ui.actionMessage.deleting', [row.code]),
- duration: 0,
+ const [FormModal, formModalApi] = useVbenModal({
+ connectedComponent: Form,
+ destroyOnClose: true,
});
- try {
- await deleteWorkOrder(row.id!);
- message.success($t('ui.actionMessage.deleteSuccess', [row.code]));
- handleRefresh();
- } finally {
- hideLoading();
+
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+
+ /** 鍒锋柊琛ㄦ牸 */
+ function handleRefresh() {
+ gridApi.query();
}
-}
-/** 鍙栨秷璁㈠崟 */
-async function handleCancel(row: MesProWorkOrderApi.WorkOrder) {
- await cancelWorkOrder(row.id!);
- message.success('璁㈠崟宸插彇娑�');
- handleRefresh();
-}
+ /** 鍒涘缓璁㈠崟 */
+ function handleCreate() {
+ formModalApi.setData({ formType: "create" }).open();
+ }
-/** 鏌ョ湅璁㈠崟鏉$爜 */
-function handleBarcode(row: MesProWorkOrderApi.WorkOrder) {
- barcodeDetailRef.value?.openByBusiness(
- row.id!,
- BarcodeBizTypeEnum.WORKORDER,
- row.code,
- row.name,
- );
-}
+ /** 鏂板瀛愯鍗� */
+ function handleAddChild(row: MesProWorkOrderApi.WorkOrder) {
+ formModalApi.setData({ formType: "create", parentRow: row }).open();
+ }
-/** 瀵煎嚭琛ㄦ牸 */
-async function handleExport() {
- const data = await exportWorkOrder(await gridApi.formApi.getValues());
- downloadFileFromBlobPart({ fileName: '鐢熶骇璁㈠崟.xls', source: data });
-}
+ /** 鏌ョ湅璁㈠崟璇︽儏 */
+ function handleDetail(row: MesProWorkOrderApi.WorkOrder) {
+ formModalApi.setData({ formType: "detail", id: row.id }).open();
+ }
-const [Grid, gridApi] = useVbenVxeGrid({
- formOptions: {
- schema: useGridFormSchema(),
- },
- gridOptions: {
- columns: useGridColumns(),
- height: 'auto',
- keepSource: true,
- proxyConfig: {
- ajax: {
- query: async ({ page }, formValues) => {
- return await getWorkOrderPage({
- pageNo: page.currentPage,
- pageSize: page.pageSize,
- ...formValues,
- });
+ /** 缂栬緫璁㈠崟 */
+ function handleEdit(row: MesProWorkOrderApi.WorkOrder) {
+ formModalApi.setData({ formType: "update", id: row.id }).open();
+ }
+
+ /** 瀹屾垚璁㈠崟 */
+ function handleFinish(row: MesProWorkOrderApi.WorkOrder) {
+ formModalApi.setData({ formType: "finish", id: row.id }).open();
+ }
+
+ /** 鍒犻櫎璁㈠崟 */
+ async function handleDelete(row: MesProWorkOrderApi.WorkOrder) {
+ const hideLoading = message.loading({
+ content: $t("ui.actionMessage.deleting", [row.code]),
+ duration: 0,
+ });
+ try {
+ await deleteWorkOrder(row.id!);
+ message.success($t("ui.actionMessage.deleteSuccess", [row.code]));
+ handleRefresh();
+ } finally {
+ hideLoading();
+ }
+ }
+
+ /** 鍙栨秷璁㈠崟 */
+ async function handleCancel(row: MesProWorkOrderApi.WorkOrder) {
+ await cancelWorkOrder(row.id!);
+ message.success("璁㈠崟宸插彇娑�");
+ handleRefresh();
+ }
+
+ /** 鏌ョ湅璁㈠崟鏉$爜 */
+ function handleBarcode(row: MesProWorkOrderApi.WorkOrder) {
+ barcodeDetailRef.value?.openByBusiness(
+ row.id!,
+ BarcodeBizTypeEnum.WORKORDER,
+ row.code,
+ row.name
+ );
+ }
+
+ /** 瀵煎嚭琛ㄦ牸 */
+ async function handleExport() {
+ const data = await exportWorkOrder(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 getWorkOrderPage({
+ pageNo: page.currentPage,
+ pageSize: page.pageSize,
+ ...formValues,
+ });
+ },
},
},
- },
- rowConfig: {
- keyField: 'id',
- isHover: true,
- },
- toolbarConfig: {
- refresh: true,
- search: true,
- },
- treeConfig: {
- parentField: 'parentId',
- rowField: 'id',
- transform: true,
- expandAll: true,
- reserve: true,
- },
- } as VxeTableGridOptions<MesProWorkOrderApi.WorkOrder>,
-});
+ rowConfig: {
+ keyField: "id",
+ isHover: true,
+ },
+ toolbarConfig: {
+ refresh: true,
+ search: true,
+ },
+ treeConfig: {
+ parentField: "parentId",
+ rowField: "id",
+ transform: true,
+ expandAll: true,
+ reserve: true,
+ },
+ } as VxeTableGridOptions<MesProWorkOrderApi.WorkOrder>,
+ });
</script>
<template>
- <Page auto-content-height><FormModal @success="handleRefresh" />
-
+ <Page auto-content-height>
+ <FormModal @success="handleRefresh" />
<Grid table-title="鐢熶骇璁㈠崟鍒楄〃">
<template #toolbar-tools>
- <TableAction
- :actions="[
+ <TableAction :actions="[
{
label: $t('ui.actionTitle.create', ['璁㈠崟']),
type: 'primary',
@@ -161,17 +160,16 @@
auth: ['mes:pro-work-order:export'],
onClick: handleExport,
},
- ]"
- />
+ ]" />
</template>
<template #code="{ row }">
- <Button type="link" @click="handleDetail(row)">
+ <Button type="link"
+ @click="handleDetail(row)">
{{ row.code }}
</Button>
</template>
<template #actions="{ row }">
- <TableAction
- :actions="[
+ <TableAction :actions="[
{
label: $t('common.edit'),
type: 'link',
@@ -225,8 +223,7 @@
auth: ['mes:pro-work-order:query'],
onClick: handleBarcode.bind(null, row),
},
- ]"
- />
+ ]" />
</template>
</Grid>
<BarcodeDetail ref="barcodeDetailRef" />
diff --git a/src/views/mes/pro/workorder/modules/form.vue b/src/views/mes/pro/workorder/modules/form.vue
index f01e02f..831b7fb 100644
--- a/src/views/mes/pro/workorder/modules/form.vue
+++ b/src/views/mes/pro/workorder/modules/form.vue
@@ -1,292 +1,293 @@
-锘�<script lang="ts" setup>
-import type { FormType } from '../data';
+<script lang="ts" setup>
+ import type { FormType } from "../data";
-import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder';
-import type { MesProWorkOrderBomApi } from '#/api/mes/pro/workorder/bom';
+ import type { MesProWorkOrderApi } from "#/api/mes/pro/workorder";
+ import type { MesProWorkOrderBomApi } from "#/api/mes/pro/workorder/bom";
-import { computed, ref } from 'vue';
+ import { computed, ref } from "vue";
-import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
-import { BarcodeBizTypeEnum, MesProWorkOrderStatusEnum } from '../../../../../packages/constants/src';
+ import { useVbenModal } from "../../../../../packages/effects/common-ui/src";
+ import {
+ BarcodeBizTypeEnum,
+ MesProWorkOrderStatusEnum,
+ } from "../../../../../packages/constants/src";
-import { Button, message, Popconfirm, Tabs } from 'ant-design-vue';
+ import { Button, message, Popconfirm, Tabs } from "ant-design-vue";
-import { useVbenForm } from '#/adapter/form';
-import {
- confirmWorkOrder,
- createWorkOrder,
- finishWorkOrder,
- getWorkOrder,
- updateWorkOrder,
-} from '#/api/mes/pro/workorder';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { useVbenForm } from "#/adapter/form";
+ import {
+ confirmWorkOrder,
+ createWorkOrder,
+ finishWorkOrder,
+ getWorkOrder,
+ updateWorkOrder,
+ } from "#/api/mes/pro/workorder";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useFormSchema } from '../data';
-import BomList from './bom-list.vue';
-import ItemList from './item-list.vue';
+ import { useFormSchema } from "../data";
+ import BomList from "./bom-list.vue";
+ import ItemList from "./item-list.vue";
-const emit = defineEmits(['success']);
-const formType = ref<FormType>('create');
-const formData = ref<MesProWorkOrderApi.WorkOrder>();
-const originalSnapshot = ref(''); // 琛ㄥ崟鍘熷鏁版嵁蹇収锛岀敤浜庣‘璁ゆ椂璺宠繃鏈彉鏇寸殑淇濆瓨璇锋眰
-const subTabsName = ref('bom'); // 褰撳墠閫変腑鐨勫瓙琛� Tab
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+ const emit = defineEmits(["success"]);
+ const formType = ref<FormType>("create");
+ const formData = ref<MesProWorkOrderApi.WorkOrder>();
+ const originalSnapshot = ref(""); // 琛ㄥ崟鍘熷鏁版嵁蹇収锛岀敤浜庣‘璁ゆ椂璺宠繃鏈彉鏇寸殑淇濆瓨璇锋眰
+ const subTabsName = ref("bom"); // 褰撳墠閫変腑鐨勫瓙琛� Tab
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-const isEditable = computed(() =>
- // 鏄惁涓虹紪杈戞ā寮忥紙鍙繚瀛橈級
- ['create', 'update'].includes(formType.value),
-);
-const isConfirm = computed(() => formType.value === 'confirm'); // 鏄惁涓虹‘璁ゆā寮�
-const isFinish = computed(() => formType.value === 'finish'); // 鏄惁涓哄畬鎴愭ā寮�
-const canConfirm = computed(
- () =>
- // 缂栬緫鎬佽崏绋垮彲纭
- formType.value === 'update' &&
- formData.value?.status === MesProWorkOrderStatusEnum.PREPARE,
-);
-const getTitle = computed(() => {
- const isChild = !!formData.value?.parentId;
- switch (formType.value) {
- case 'confirm': {
- return '纭璁㈠崟';
- }
- case 'detail': {
- return $t('ui.actionTitle.view', ['璁㈠崟']);
- }
- case 'finish': {
- return '瀹屾垚璁㈠崟';
- }
- case 'update': {
- return isChild ? '缂栬緫瀛愯鍗�' : $t('ui.actionTitle.edit', ['璁㈠崟']);
- }
- default: {
- return isChild ? '鏂板瀛愯鍗�' : $t('ui.actionTitle.create', ['璁㈠崟']);
- }
- }
-});
-
-const [Form, formApi] = useVbenForm({
- commonConfig: {
- componentProps: {
- class: 'w-full',
- },
- formItemClass: 'col-span-1',
- labelWidth: 110,
- },
- layout: 'horizontal',
- schema: [],
- showDefaultActions: false,
- wrapperClass: 'grid-cols-3',
-});
-
-/** 閲嶆柊鎸傝浇 schema 骞舵寜琛ㄥ崟鎬佹帶鍒跺簳閮ㄧ‘璁ゆ寜閽� */
-function applySchema() {
- formApi.setState({ schema: useFormSchema(formType.value, formApi) });
- modalApi.setState({ showConfirmButton: isEditable.value });
-}
-
-/** 鏌ョ湅璁㈠崟鏉$爜 */
-function handleBarcode() {
- if (!formData.value?.id) {
- return;
- }
- barcodeDetailRef.value?.openByBusiness(
- formData.value.id,
- BarcodeBizTypeEnum.WORKORDER,
- formData.value.code,
- formData.value.name,
+ const isEditable = computed(() =>
+ // 鏄惁涓虹紪杈戞ā寮忥紙鍙繚瀛橈級
+ ["create", "update"].includes(formType.value)
);
-}
-
-/** 纭璁㈠崟锛氱紪杈戞�佹湁淇敼鏃跺厛淇濆瓨锛屽啀纭 */
-async function handleConfirm() {
- const { valid } = await formApi.validate();
- if (!valid || !formData.value?.id) {
- return;
- }
- modalApi.lock();
- try {
- if (isEditable.value) {
- const current = JSON.stringify(await formApi.getValues());
- if (current !== originalSnapshot.value) {
- const data =
- (await formApi.getValues()) as MesProWorkOrderApi.WorkOrder;
- await updateWorkOrder({ ...formData.value, ...data });
- originalSnapshot.value = current;
+ const isConfirm = computed(() => formType.value === "confirm"); // 鏄惁涓虹‘璁ゆā寮�
+ const isFinish = computed(() => formType.value === "finish"); // 鏄惁涓哄畬鎴愭ā寮�
+ const canConfirm = computed(
+ () =>
+ // 缂栬緫鎬佽崏绋垮彲纭
+ formType.value === "update" &&
+ formData.value?.status === MesProWorkOrderStatusEnum.PREPARE
+ );
+ const getTitle = computed(() => {
+ const isChild = !!formData.value?.parentId;
+ switch (formType.value) {
+ case "confirm": {
+ return "纭璁㈠崟";
+ }
+ case "detail": {
+ return $t("ui.actionTitle.view", ["璁㈠崟"]);
+ }
+ case "finish": {
+ return "瀹屾垚璁㈠崟";
+ }
+ case "update": {
+ return isChild ? "缂栬緫瀛愯鍗�" : $t("ui.actionTitle.edit", ["璁㈠崟"]);
+ }
+ default: {
+ return isChild ? "鏂板瀛愯鍗�" : $t("ui.actionTitle.create", ["璁㈠崟"]);
}
}
- await confirmWorkOrder(formData.value.id);
- message.success('璁㈠崟宸茬‘璁�');
- await modalApi.close();
- emit('success');
- } finally {
- modalApi.unlock();
- }
-}
-
-/** 瀹屾垚璁㈠崟 */
-async function handleFinish() {
- if (!formData.value?.id) {
- return;
- }
- modalApi.lock();
- try {
- await finishWorkOrder(formData.value.id);
- message.success('璁㈠崟宸插畬鎴�');
- await modalApi.close();
- emit('success');
- } finally {
- modalApi.unlock();
- }
-}
-
-/** 浠� BOM 鐗╂枡琛岄濉瓙璁㈠崟锛氬鐢ㄥ綋鍓嶈鍗曚笂涓嬫枃锛岃繘鍏ユ柊澧炴�� */
-async function handleGenerateWorkOrder(
- bomRow: MesProWorkOrderBomApi.WorkOrderBom,
-) {
- const current = formData.value;
- if (!current) {
- return;
- }
- formData.value = undefined;
- formType.value = 'create';
- subTabsName.value = 'bom';
- applySchema();
- await formApi.resetForm();
- await formApi.setValues({
- clientId: current.clientId,
- name: `${bomRow.itemName}銆�${bomRow.quantity}銆�${bomRow.unitMeasureName || ''}`,
- orderSourceCode: current.orderSourceCode,
- orderSourceType: current.orderSourceType,
- parentId: current.id,
- productId: bomRow.itemId,
- quantity: bomRow.quantity,
- requestDate: current.requestDate,
- type: current.type,
- vendorId: current.vendorId,
});
- originalSnapshot.value = JSON.stringify(await formApi.getValues());
- message.info('宸蹭粠 BOM 鐗╂枡棰勫~瀛愯鍗曪紝璇疯ˉ鍏呰鍗曠紪鐮佺瓑淇℃伅鍚庝繚瀛�');
-}
-const [Modal, modalApi] = useVbenModal({
- async onConfirm() {
- if (!isEditable.value) {
- await modalApi.close();
+ const [Form, formApi] = useVbenForm({
+ commonConfig: {
+ componentProps: {
+ class: "w-full",
+ },
+ formItemClass: "col-span-1",
+ labelWidth: 110,
+ },
+ layout: "horizontal",
+ schema: [],
+ showDefaultActions: false,
+ wrapperClass: "grid-cols-3",
+ });
+
+ /** 閲嶆柊鎸傝浇 schema 骞舵寜琛ㄥ崟鎬佹帶鍒跺簳閮ㄧ‘璁ゆ寜閽� */
+ function applySchema() {
+ formApi.setState({ schema: useFormSchema(formType.value, formApi) });
+ modalApi.setState({ showConfirmButton: isEditable.value });
+ }
+
+ /** 鏌ョ湅璁㈠崟鏉$爜 */
+ function handleBarcode() {
+ if (!formData.value?.id) {
return;
}
+ barcodeDetailRef.value?.openByBusiness(
+ formData.value.id,
+ BarcodeBizTypeEnum.WORKORDER,
+ formData.value.code,
+ formData.value.name
+ );
+ }
+
+ /** 纭璁㈠崟锛氱紪杈戞�佹湁淇敼鏃跺厛淇濆瓨锛屽啀纭 */
+ async function handleConfirm() {
const { valid } = await formApi.validate();
- if (!valid) {
+ if (!valid || !formData.value?.id) {
return;
}
modalApi.lock();
- // 鎻愪氦琛ㄥ崟
- const data = (await formApi.getValues()) as MesProWorkOrderApi.WorkOrder;
try {
- if (formData.value?.id) {
- await updateWorkOrder({ ...formData.value, ...data });
- formData.value = { ...formData.value, ...data };
- } else {
- const id = await createWorkOrder(data);
- formData.value = {
- ...data,
- id,
- status: MesProWorkOrderStatusEnum.PREPARE,
- };
- formType.value = 'update';
- // 鍒涘缓鎴愬姛鍚庡垏鎹㈢紪杈戞�侊紝閲嶆寕 schema 璁┿�岃鍗曠姸鎬併�嶅瓧娈垫樉鐜�
- applySchema();
- await formApi.setValues(formData.value);
+ if (isEditable.value) {
+ const current = JSON.stringify(await formApi.getValues());
+ if (current !== originalSnapshot.value) {
+ const data =
+ (await formApi.getValues()) as MesProWorkOrderApi.WorkOrder;
+ await updateWorkOrder({ ...formData.value, ...data });
+ originalSnapshot.value = current;
+ }
}
- originalSnapshot.value = JSON.stringify(await formApi.getValues());
- emit('success');
- message.success($t('ui.actionMessage.operationSuccess'));
+ await confirmWorkOrder(formData.value.id);
+ message.success("璁㈠崟宸茬‘璁�");
+ await modalApi.close();
+ emit("success");
} finally {
modalApi.unlock();
}
- },
- async onOpenChange(isOpen: boolean) {
- if (!isOpen) {
- formData.value = undefined;
- originalSnapshot.value = '';
+ }
+
+ /** 瀹屾垚璁㈠崟 */
+ async function handleFinish() {
+ if (!formData.value?.id) {
return;
}
- // 鍔犺浇鏁版嵁
- const data = modalApi.getData<{
- formType: FormType;
- id?: number;
- parentRow?: MesProWorkOrderApi.WorkOrder;
- }>();
- formType.value = data.formType;
- subTabsName.value = 'bom';
+ modalApi.lock();
+ try {
+ await finishWorkOrder(formData.value.id);
+ message.success("璁㈠崟宸插畬鎴�");
+ await modalApi.close();
+ emit("success");
+ } finally {
+ modalApi.unlock();
+ }
+ }
+
+ /** 浠� BOM 鐗╂枡琛岄濉瓙璁㈠崟锛氬鐢ㄥ綋鍓嶈鍗曚笂涓嬫枃锛岃繘鍏ユ柊澧炴�� */
+ async function handleGenerateWorkOrder(
+ bomRow: MesProWorkOrderBomApi.WorkOrderBom
+ ) {
+ const current = formData.value;
+ if (!current) {
+ return;
+ }
+ formData.value = undefined;
+ formType.value = "create";
+ subTabsName.value = "bom";
applySchema();
- if (data?.id) {
+ await formApi.resetForm();
+ await formApi.setValues({
+ clientId: current.clientId,
+ name: `${bomRow.itemName}銆�${bomRow.quantity}銆�${
+ bomRow.unitMeasureName || ""
+ }`,
+ orderSourceCode: current.orderSourceCode,
+ orderSourceType: current.orderSourceType,
+ parentId: current.id,
+ productId: bomRow.itemId,
+ quantity: bomRow.quantity,
+ requestDate: current.requestDate,
+ type: current.type,
+ vendorId: current.vendorId,
+ });
+ originalSnapshot.value = JSON.stringify(await formApi.getValues());
+ message.info("宸蹭粠 BOM 鐗╂枡棰勫~瀛愯鍗曪紝璇疯ˉ鍏呰鍗曠紪鐮佺瓑淇℃伅鍚庝繚瀛�");
+ }
+
+ const [Modal, modalApi] = useVbenModal({
+ async onConfirm() {
+ if (!isEditable.value) {
+ await modalApi.close();
+ return;
+ }
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
modalApi.lock();
+ // 鎻愪氦琛ㄥ崟
+ const data = (await formApi.getValues()) as MesProWorkOrderApi.WorkOrder;
try {
- formData.value = await getWorkOrder(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
+ if (formData.value?.id) {
+ await updateWorkOrder({ ...formData.value, ...data });
+ formData.value = { ...formData.value, ...data };
+ } else {
+ const id = await createWorkOrder(data);
+ formData.value = {
+ ...data,
+ id,
+ status: MesProWorkOrderStatusEnum.PREPARE,
+ };
+ formType.value = "update";
+ // 鍒涘缓鎴愬姛鍚庡垏鎹㈢紪杈戞�侊紝閲嶆寕 schema 璁┿�岃鍗曠姸鎬併�嶅瓧娈垫樉鐜�
+ applySchema();
+ await formApi.setValues(formData.value);
+ }
+ originalSnapshot.value = JSON.stringify(await formApi.getValues());
+ emit("success");
+ message.success($t("ui.actionMessage.operationSuccess"));
} finally {
modalApi.unlock();
}
- } else if (data?.parentRow) {
- // 鏂板瀛愯鍗曟椂锛岄濉埗璁㈠崟淇℃伅
- const parent = data.parentRow;
- await formApi.setValues({
- clientId: parent.clientId,
- orderSourceCode: parent.orderSourceCode,
- orderSourceType: parent.orderSourceType,
- parentId: parent.id,
- requestDate: parent.requestDate,
- type: parent.type,
- vendorId: parent.vendorId,
- });
- }
- originalSnapshot.value = JSON.stringify(await formApi.getValues());
- },
-});
+ },
+ async onOpenChange(isOpen: boolean) {
+ if (!isOpen) {
+ formData.value = undefined;
+ originalSnapshot.value = "";
+ return;
+ }
+ // 鍔犺浇鏁版嵁
+ const data = modalApi.getData<{
+ formType: FormType;
+ id?: number;
+ parentRow?: MesProWorkOrderApi.WorkOrder;
+ }>();
+ formType.value = data.formType;
+ subTabsName.value = "bom";
+ applySchema();
+ if (data?.id) {
+ modalApi.lock();
+ try {
+ formData.value = await getWorkOrder(data.id);
+ // 璁剧疆鍒� values
+ await formApi.setValues(formData.value);
+ } finally {
+ modalApi.unlock();
+ }
+ } else if (data?.parentRow) {
+ // 鏂板瀛愯鍗曟椂锛岄濉埗璁㈠崟淇℃伅
+ const parent = data.parentRow;
+ await formApi.setValues({
+ clientId: parent.clientId,
+ orderSourceCode: parent.orderSourceCode,
+ orderSourceType: parent.orderSourceType,
+ parentId: parent.id,
+ requestDate: parent.requestDate,
+ type: parent.type,
+ vendorId: parent.vendorId,
+ });
+ }
+ originalSnapshot.value = JSON.stringify(await formApi.getValues());
+ },
+ });
</script>
<template>
- <Modal :title="getTitle" class="w-3/5">
+ <Modal :title="getTitle"
+ class="w-3/5">
<Form class="mx-4" />
<!-- BOM / 鐗╂枡闇�姹� Tab锛氶潪鏂板缓鎬佸睍绀� -->
<template v-if="formData?.id">
- <Tabs v-model:active-key="subTabsName" class="mx-4">
- <Tabs.TabPane key="bom" tab="璁㈠崟 BOM">
- <BomList
- :form-type="formType"
- :work-order="formData"
- :work-order-id="formData.id"
- @generate-work-order="handleGenerateWorkOrder"
- />
+ <Tabs v-model:active-key="subTabsName"
+ class="mx-4">
+ <Tabs.TabPane key="bom"
+ tab="璁㈠崟 BOM">
+ <BomList :form-type="formType"
+ :work-order="formData"
+ :work-order-id="formData.id"
+ @generate-work-order="handleGenerateWorkOrder" />
</Tabs.TabPane>
- <Tabs.TabPane key="item" tab="鐗╂枡闇�姹�">
+ <Tabs.TabPane key="item"
+ tab="鐗╂枡闇�姹�">
<ItemList :work-order-id="formData.id" />
</Tabs.TabPane>
</Tabs>
</template>
<template #prepend-footer>
<div class="flex flex-auto items-center gap-2">
- <Popconfirm
- v-if="canConfirm || isConfirm"
- title="纭瑕佸畬鎴愯鍗曠紪鍒跺悧锛熺‘璁ゅ悗灏嗕笉鑳芥洿鏀广��"
- @confirm="handleConfirm"
- >
+ <Popconfirm v-if="canConfirm || isConfirm"
+ title="纭瑕佸畬鎴愯鍗曠紪鍒跺悧锛熺‘璁ゅ悗灏嗕笉鑳芥洿鏀广��"
+ @confirm="handleConfirm">
<Button type="primary">纭</Button>
</Popconfirm>
- <Popconfirm
- v-if="isFinish"
- title="纭瑕佸畬鎴愯璁㈠崟鍚楋紵"
- @confirm="handleFinish"
- >
+ <Popconfirm v-if="isFinish"
+ title="纭瑕佸畬鎴愯璁㈠崟鍚楋紵"
+ @confirm="handleFinish">
<Button type="primary">瀹屾垚</Button>
</Popconfirm>
- <Button
- v-if="formType === 'detail' && formData?.id"
- @click="handleBarcode"
- >
+ <Button v-if="formType === 'detail' && formData?.id"
+ @click="handleBarcode">
鏌ョ湅鏉$爜
</Button>
</div>
diff --git a/src/views/mes/tm/tool/modules/form.vue b/src/views/mes/tm/tool/modules/form.vue
index a436904..4cfc871 100644
--- a/src/views/mes/tm/tool/modules/form.vue
+++ b/src/views/mes/tm/tool/modules/form.vue
@@ -1,123 +1,122 @@
<script lang="ts" setup>
-import type { FormType } from '../data';
+ import type { FormType } from "../data";
-import type { MesTmToolApi } from '#/api/mes/tm/tool';
+ import type { MesTmToolApi } from "#/api/mes/tm/tool";
-import { computed, ref } from 'vue';
+ import { computed, ref } from "vue";
-import { useVbenModal } from '../../../../../packages/effects/common-ui/src';
-import { BarcodeBizTypeEnum } from '../../../../../packages/constants/src';
+ import { useVbenModal } from "../../../../../packages/effects/common-ui/src";
+ import { BarcodeBizTypeEnum } from "../../../../../packages/constants/src";
-import { Button, message } from 'ant-design-vue';
+ import { Button, message } from "ant-design-vue";
-import { useVbenForm } from '#/adapter/form';
-import { createTool, getTool, updateTool } from '#/api/mes/tm/tool';
-import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+ import { useVbenForm } from "#/adapter/form";
+ import { createTool, getTool, updateTool } from "#/api/mes/tm/tool";
+ import { $t } from "#/locales";
+ import { BarcodeDetail } from "#/views/wls/barcode/components";
-import { useFormSchema } from '../data';
+ import { useFormSchema } from "../data";
-const emit = defineEmits(['success']);
-const formType = ref<FormType>('create'); // 琛ㄥ崟妯″紡
-const formData = ref<MesTmToolApi.Tool>();
-const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
+ const emit = defineEmits(["success"]);
+ const formType = ref<FormType>("create"); // 琛ㄥ崟妯″紡
+ const formData = ref<MesTmToolApi.Tool>();
+ const barcodeDetailRef = ref<InstanceType<typeof BarcodeDetail>>(); // 鏉$爜璇︽儏寮圭獥
-const isDetail = computed(() => formType.value === 'detail'); // 鏄惁鏌ョ湅妯″紡
-const getTitle = computed(() => {
- if (formType.value === 'detail') {
- return $t('ui.actionTitle.view', ['宸ュ叿']);
- }
- return formType.value === 'update'
- ? $t('ui.actionTitle.edit', ['宸ュ叿'])
- : $t('ui.actionTitle.create', ['宸ュ叿']);
-});
+ const isDetail = computed(() => formType.value === "detail"); // 鏄惁鏌ョ湅妯″紡
+ const getTitle = computed(() => {
+ if (formType.value === "detail") {
+ return $t("ui.actionTitle.view", ["宸ュ叿"]);
+ }
+ return formType.value === "update"
+ ? $t("ui.actionTitle.edit", ["宸ュ叿"])
+ : $t("ui.actionTitle.create", ["宸ュ叿"]);
+ });
-const [Form, formApi] = useVbenForm({
- commonConfig: {
- componentProps: {
- class: 'w-full',
+ const [Form, formApi] = useVbenForm({
+ commonConfig: {
+ componentProps: {
+ class: "w-full",
+ },
+ formItemClass: "col-span-1",
+ labelWidth: 110,
},
- formItemClass: 'col-span-1',
- labelWidth: 110,
- },
- wrapperClass: 'grid-cols-3',
- layout: 'horizontal',
- schema: [],
- showDefaultActions: false,
-});
+ wrapperClass: "grid-cols-3",
+ layout: "horizontal",
+ schema: [],
+ showDefaultActions: false,
+ });
-/** 鏌ョ湅宸ュ叿鏉$爜 */
-function handleBarcode() {
- if (!formData.value?.id) {
- return;
+ /** 鏌ョ湅宸ュ叿鏉$爜 */
+ function handleBarcode() {
+ if (!formData.value?.id) {
+ return;
+ }
+ barcodeDetailRef.value?.openByBusiness(
+ formData.value.id,
+ BarcodeBizTypeEnum.TOOL,
+ formData.value.code,
+ formData.value.name
+ );
}
- barcodeDetailRef.value?.openByBusiness(
- formData.value.id,
- BarcodeBizTypeEnum.TOOL,
- formData.value.code,
- formData.value.name,
- );
-}
-const [Modal, modalApi] = useVbenModal({
- async onConfirm() {
- if (isDetail.value) {
- await modalApi.close();
- return;
- }
- const { valid } = await formApi.validate();
- if (!valid) {
- return;
- }
- modalApi.lock();
- // 鎻愪氦琛ㄥ崟
- const data = (await formApi.getValues()) as MesTmToolApi.Tool;
- try {
- await (data.id ? updateTool(data) : createTool(data));
- // 鍏抽棴骞舵彁绀�
- await modalApi.close();
- emit('success');
- message.success($t('ui.actionMessage.operationSuccess'));
- } 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(data.formType, formApi) });
- formApi.setDisabled(formType.value === 'detail');
- modalApi.setState({ showConfirmButton: formType.value !== 'detail' });
- if (!data?.id) {
- return;
- }
- modalApi.lock();
- try {
- formData.value = await getTool(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
- } finally {
- modalApi.unlock();
- }
- },
-});
+ const [Modal, modalApi] = useVbenModal({
+ async onConfirm() {
+ if (isDetail.value) {
+ await modalApi.close();
+ return;
+ }
+ const { valid } = await formApi.validate();
+ if (!valid) {
+ return;
+ }
+ modalApi.lock();
+ // 鎻愪氦琛ㄥ崟
+ const data = (await formApi.getValues()) as MesTmToolApi.Tool;
+ try {
+ await (data.id ? updateTool(data) : createTool(data));
+ // 鍏抽棴骞舵彁绀�
+ await modalApi.close();
+ emit("success");
+ message.success($t("ui.actionMessage.operationSuccess"));
+ } 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(data.formType, formApi) });
+ formApi.setDisabled(formType.value === "detail");
+ modalApi.setState({ showConfirmButton: formType.value !== "detail" });
+ if (!data?.id) {
+ return;
+ }
+ modalApi.lock();
+ try {
+ formData.value = await getTool(data.id);
+ // 璁剧疆鍒� values
+ await formApi.setValues(formData.value);
+ } finally {
+ modalApi.unlock();
+ }
+ },
+ });
</script>
<template>
- <Modal :title="getTitle" class="w-4/5">
+ <Modal :title="getTitle"
+ class="w-4/5">
<Form class="mx-4" />
<template #prepend-footer>
<div class="flex flex-auto items-center">
- <Button
- v-if="isDetail && formData?.id"
- type="primary"
- @click="handleBarcode"
- >
+ <Button v-if="isDetail && formData?.id"
+ type="primary"
+ @click="handleBarcode">
鏌ョ湅鏉$爜
</Button>
</div>
diff --git a/src/views/outsourcereceipt/modules/line-list.vue b/src/views/outsourcereceipt/modules/line-list.vue
index b83d9c4..8f63e8c 100644
--- a/src/views/outsourcereceipt/modules/line-list.vue
+++ b/src/views/outsourcereceipt/modules/line-list.vue
@@ -18,7 +18,7 @@
getOutsourceReceiptLinePage,
} from '#/api/mes/wm/outsourcereceipt/line';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/productreceipt/modules/line-list.vue b/src/views/productreceipt/modules/line-list.vue
index af90793..8274f2e 100644
--- a/src/views/productreceipt/modules/line-list.vue
+++ b/src/views/productreceipt/modules/line-list.vue
@@ -19,7 +19,7 @@
getProductReceiptLinePage,
} from '#/api/mes/wm/productreceipt/line';
import { $t } from '#/locales';
-import { BarcodeDetail, PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail, PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/returnissue/modules/line-list.vue b/src/views/returnissue/modules/line-list.vue
index 5359435..d402586 100644
--- a/src/views/returnissue/modules/line-list.vue
+++ b/src/views/returnissue/modules/line-list.vue
@@ -19,7 +19,7 @@
getReturnIssueLinePage,
} from '#/api/mes/wm/returnissue/line';
import { $t } from '#/locales';
-import { BarcodeDetail, PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail, PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/returnsales/modules/line-list.vue b/src/views/returnsales/modules/line-list.vue
index 454b71d..5ad1a81 100644
--- a/src/views/returnsales/modules/line-list.vue
+++ b/src/views/returnsales/modules/line-list.vue
@@ -18,7 +18,7 @@
getReturnSalesLinePage,
} from '#/api/mes/wm/returnsales/line';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/returnvendor/modules/line-list.vue b/src/views/returnvendor/modules/line-list.vue
index d8fcec5..80467ef 100644
--- a/src/views/returnvendor/modules/line-list.vue
+++ b/src/views/returnvendor/modules/line-list.vue
@@ -18,7 +18,7 @@
getReturnVendorLinePage,
} from '#/api/mes/wm/returnvendor/line';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/sn/modules/detail.vue b/src/views/sn/modules/detail.vue
index d9b4933..f29cfdb 100644
--- a/src/views/sn/modules/detail.vue
+++ b/src/views/sn/modules/detail.vue
@@ -11,7 +11,7 @@
import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import { getSnListByUuid } from '#/api/mes/wm/sn';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useDetailGridColumns } from '../data';
diff --git a/src/views/transfer/modules/line-list.vue b/src/views/transfer/modules/line-list.vue
index a2c2016..f047061 100644
--- a/src/views/transfer/modules/line-list.vue
+++ b/src/views/transfer/modules/line-list.vue
@@ -18,7 +18,7 @@
getTransferLineList,
} from '#/api/mes/wm/transfer/line';
import { $t } from '#/locales';
-import { PrinterLabel } from '#/views/mes/wm/barcode/components';
+import { PrinterLabel } from '#/views/wls/barcode/components';
import { useLineGridColumns } from '../data';
import DetailForm from './detail-form.vue';
diff --git a/src/views/warehouse/area/modules/form.vue b/src/views/warehouse/area/modules/form.vue
index cd57d58..0c0c81e 100644
--- a/src/views/warehouse/area/modules/form.vue
+++ b/src/views/warehouse/area/modules/form.vue
@@ -18,7 +18,7 @@
} from '#/api/mes/wm/warehouse/area';
import { getWarehouseLocation } from '#/api/mes/wm/warehouse/location';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useFormSchema } from '../data';
diff --git a/src/views/warehouse/location/modules/form.vue b/src/views/warehouse/location/modules/form.vue
index 97c4899..1e918a6 100644
--- a/src/views/warehouse/location/modules/form.vue
+++ b/src/views/warehouse/location/modules/form.vue
@@ -18,7 +18,7 @@
updateWarehouseLocation,
} from '#/api/mes/wm/warehouse/location';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useFormSchema } from '../data';
diff --git a/src/views/warehouse/modules/form.vue b/src/views/warehouse/modules/form.vue
index 84216e2..32997a0 100644
--- a/src/views/warehouse/modules/form.vue
+++ b/src/views/warehouse/modules/form.vue
@@ -17,7 +17,7 @@
updateWarehouse,
} from '#/api/mes/wm/warehouse';
import { $t } from '#/locales';
-import { BarcodeDetail } from '#/views/mes/wm/barcode/components';
+import { BarcodeDetail } from '#/views/wls/barcode/components';
import { useFormSchema } from '../data';
--
Gitblit v1.9.3