From 3baaad59171ded6aca17340fcc907acbeeb45b7b Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期二, 08 四月 2025 08:14:43 +0800 Subject: [PATCH] Merge branch 'main' of http://lanpucloud.cn:1111/r/eims-master --- eims-ui/apps/web-antd/src/views/eims/spare/spare-drawer.vue | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 149 insertions(+), 0 deletions(-) diff --git a/eims-ui/apps/web-antd/src/views/eims/spare/spare-drawer.vue b/eims-ui/apps/web-antd/src/views/eims/spare/spare-drawer.vue new file mode 100644 index 0000000..3ddb4f6 --- /dev/null +++ b/eims-ui/apps/web-antd/src/views/eims/spare/spare-drawer.vue @@ -0,0 +1,149 @@ +<script setup lang="ts"> +import { computed, ref } from 'vue'; + +import { useVbenDrawer } from '@vben/common-ui'; +import { $t } from '@vben/locales'; +import { addFullName, cloneDeep, getPopupContainer, listToTree } from '@vben/utils'; + +import { useVbenForm } from '#/adapter/form'; +import { addSpare, getSpare, updateSpare } from '#/api/eims/spare'; +import { listSpareType } from '#/api/eims/spare-type'; +import { ImageUpload } from '#/components/upload'; + +import { drawerSchema } from './data'; + +const emit = defineEmits<{ reload: [] }>(); + +const isUpdate = ref(false); +const title = computed(() => { + return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add'); +}); + + +const [BasicForm, formApi] = useVbenForm({ + commonConfig: { + formItemClass: 'col-span-2', + componentProps: { + class: 'w-full' + }, + labelWidth: 120 + }, + schema: drawerSchema(), + showDefaultActions: false, + wrapperClass: 'grid-cols-2' +}); + +const [BasicDrawer, drawerApi] = useVbenDrawer({ + onCancel: handleCancel, + onConfirm: handleConfirm, + async onOpenChange(isOpen) { + if (!isOpen) { + return null; + } + drawerApi.drawerLoading(true); + const { id } = drawerApi.getData() as { id?: number | string }; + await setupSpareTypeSelect(); + onImageChange(); + isUpdate.value = !!id; + + // 鏇存柊 && 璧嬪�� + if (isUpdate.value && id) { + const record = await getSpare(id); + await formApi.setValues(record); + } + drawerApi.drawerLoading(false); + } +}); + +async function handleConfirm() { + try { + drawerApi.drawerLoading(true); + const { valid } = await formApi.validate(); + if (!valid) { + return; + } + const data = cloneDeep(await formApi.getValues()); + await (isUpdate.value ? updateSpare(data) : addSpare(data)); + emit('reload'); + await handleCancel(); + } catch (error) { + console.error(error); + } finally { + drawerApi.drawerLoading(false); + } +} + +async function handleCancel() { + drawerApi.close(); + await formApi.resetForm(); +} + +async function setupSpareTypeSelect() { + // status-0 鍙煡璇㈡湭鍋滅敤 + const equArray = await listSpareType({ status: 0 }); + // support i18n + equArray.forEach((item) => { + item.typeName = $t(item.typeName); + }); + const equTree = listToTree(equArray, { id: 'id', pid: 'parentId' }); + const fullEquTree = [ + { + id: 0, + typeName: $t('menu.root'), + children: equTree + } + ]; + addFullName(fullEquTree, 'typeName', ' / '); + formApi.updateSchema([ + { + componentProps: { + fieldNames: { + label: 'typeName', + value: 'id' + }, + getPopupContainer, + // 璁剧疆寮圭獥婊氬姩楂樺害 榛樿256 + listHeight: 300, + showSearch: true, + treeData: fullEquTree, + treeDefaultExpandAll: false, + // 榛樿灞曞紑鐨勬爲鑺傜偣 + treeDefaultExpandedKeys: [0], + treeLine: { showLeafIcon: false }, + // 绛涢�夌殑瀛楁 + treeNodeFilterProp: 'typeName', + treeNodeLabelProp: 'fullName' + }, + fieldName: 'type' + } + ]); +} + +const accept = ref(['jpg', 'jpeg', 'png', 'gif', 'webp']); +const maxNumber = ref(1); + +function onImageChange() { + formApi.updateSchema([ + { + componentProps: () => ({ + async onChange(value: any) { + await formApi.setValues({ 'img': value }); + } + }), + fieldName: 'imgUrl' + } + ]); +} +</script> + +<template> + <BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]"> + <BasicForm> + <template #imgUrl="slotProps"> + <!--娉ㄦ剰锛氫笂浼犳垚鍔熷悗杩斿洖ossid--> + <ImageUpload v-bind="slotProps" :accept="accept" :max-number="maxNumber" + result-field="ossId" /> + </template> + </BasicForm> + </BasicDrawer> +</template> -- Gitblit v1.9.3