From 323e576c64129723df20fd18effb20d96d8d18b3 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 22 七月 2024 10:27:50 +0800 Subject: [PATCH] 工单更新 --- src/views/components/CustModal.vue | 120 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 88 insertions(+), 32 deletions(-) diff --git a/src/views/components/CustModal.vue b/src/views/components/CustModal.vue index ac65729..06817d7 100644 --- a/src/views/components/CustModal.vue +++ b/src/views/components/CustModal.vue @@ -1,9 +1,18 @@ +<!-- + * @Description: 鑷畾涔夊脊鍑烘锛屽彲浠ヨ嚜瀹氫箟澶氫釜琛ㄥ崟 + * @Author: Ben Lin + * @version: + * @Date: 2024-06-05 15:46:07 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-07-22 00:51:10 +--> <template> <BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSuccess" + @cancel="handleCancel" :width="width" > <a-layout> @@ -22,70 +31,101 @@ </BasicModal> </template> <script lang="ts" setup> - import { ref, unref, nextTick, watch } from 'vue'; + import { ref, unref, nextTick, watch, Ref } from 'vue'; import { BasicModal, useModalInner } from '/@/components/Modal'; import { FormSchema } from '/@/components/Form/index'; - import { custFunction } from './data'; import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is'; import { Layout, LayoutContent, Card } from 'ant-design-vue'; import { useMessage } from '/@/hooks/web/useMessage'; import { useI18n } from '/@/hooks/web/useI18n'; + import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel'; + import { CustModalParams } from '/@/api/tigerapi/model/systemModel'; const { t } = useI18n(); const { notification, createErrorModal } = useMessage(); const ALayout = Layout; const ACard = Card; const ALayoutContent = LayoutContent; - const emit = defineEmits(['success', 'register']); + const emit = defineEmits(['success', 'register', 'modalInner', 'cancel']); const isUpdate = ref(true); const cType = ref(''); const title = ref(''); const width = ref(''); - const FnName = ref({}); + const FnName = ref(''); + const mValues = ref<Recordable>({}); const initFnName = ref({}); - const dtlSlots = ref([] as any[]); const formSchema = ref([] as FormSchema[]); const formElName = ref([]); - const useFormData = ref({}); + const useFormData = ref<any>({}); const props = defineProps({ - detailSlots: { type: Array, default: [] }, + entityName: { type: String }, }); - watch( - () => props.detailSlots, - (v) => { - if (v !== dtlSlots.value) { - dtlSlots.value = v; - } - }, - { deep: true }, - ); - const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { - await nextTick(); + const custImport = ref<any[]>([]); + const EntityCustFunction = ref([ + { + CustFunc(param: CustModalParams) {}, + } as EntityCustFunctionType, + ]); + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ + try { + custImport.value = await import( + `../tigerprojects/system/lowcode/entityts/${props.entityName}.ts` + ); + } catch (e) {} + const [{ CustFunc, GetDtlSlots }] = isNullOrUnDef(custImport.value['default']) + ? EntityCustFunction.value + : custImport.value['default'](); + const dtlSlots = ref<any[]>([]); + // watch( + // () => props.detailSlots, + // (v) => { + // if (v !== dtlSlots.value) { + // // dtlSlots.value = v; + // } + // }, + // { deep: true }, + // ); + + const [registerModal, { setModalProps, closeModal }] = useModalInner((data) => { formSchema.value = []; setModalProps({ confirmLoading: false }); isUpdate.value = !!data?.isUpdate; //鏄惁鏇存柊 cType.value = data?.ctype; //鏄摢涓〉闈� + dtlSlots.value = GetDtlSlots(cType.value); title.value = data?.title; //寮规鏍囬 width.value = data?.width; //寮规瀹藉害 formElName.value = data?.formElName; //寮规涓〃鍗曞悕瀛楁暟缁� useFormData.value = data?.formEl; //寮规涓〃鍗曞疄渚嬫暟缁� FnName.value = data?.fnName; //淇濆瓨鏁版嵁鏂规硶 - //寰幆琛ㄥ崟鍚嶆暟缁勶紝鎿嶄綔鍚勮〃鍗曞瓧娈� - formElName.value.forEach((name) => { - if (!isNullOrUnDef(useFormData.value[name])) { - useFormData.value[name][1].resetFields(); - if (unref(isUpdate)) { - useFormData.value[name][1].setFieldsValue({ - ...data, - }); + mValues.value = data?.values; //涓昏〃鍗曚紶杩囨潵鐨勬暟鎹� + + emit('modalInner', dtlSlots.value, async () => { + await nextTick(); + //寰幆琛ㄥ崟鍚嶆暟缁勶紝鎿嶄綔鍚勮〃鍗曞瓧娈� + formElName.value.forEach((name) => { + if (!isNullOrUnDef(useFormData.value[name])) { + useFormData.value[name][1]['resetFields'](); + if (unref(isUpdate)) { + useFormData.value[name][1]['setFieldsValue']({ + ...mValues.value, + }); + } } - } + }); }); //鍒濆鍖栨柟娉曡嚜瀹氫箟 if (!isNullOrEmpty(data?.initFnName)) { initFnName.value = data?.initFnName; - custFunction(unref(isUpdate.value), initFnName.value[cType.value], cType.value); + let param: CustModalParams = { + cType: cType.value, + values: unref(isUpdate.value), + mValues: mValues.value, + others: data?.others, + FnName: initFnName.value[cType.value], + initFnName: '', + }; + CustFunc(param); } }); @@ -97,7 +137,10 @@ // { deep: true }, // ); - /* 寮规纭畾鎸夐挳鏂规硶 */ + /** + * @description: 寮规纭畾鎸夐挳鏂规硶 + * @return {*} + */ async function handleSuccess() { try { var values = {} as any; @@ -109,8 +152,13 @@ } setModalProps({ confirmLoading: true }); //璋冪敤鑷畾涔変繚瀛樻柟娉曚繚瀛樻暟鎹� - const action = await custFunction(values, FnName.value[cType.value], cType.value); - if (action as boolean) { + values['mValues'] = mValues.value; + const action = await CustFunc({ + cType: cType.value, + values: values, + FnName: FnName.value, + } as unknown as CustModalParams); + if (action.IsSuccessed) { closeModal(); //鎴愬姛浜嬩欢锛屽皢鏁版嵁杩斿洖鍘熼〉闈� emit('success', { @@ -123,7 +171,7 @@ } else { createErrorModal({ title: t('璀﹀憡'), - content: t('淇濆瓨鏁版嵁澶辫触'), + content: t(action.LocaleMsg), getContainer: () => document.body, }); } @@ -131,4 +179,12 @@ setModalProps({ confirmLoading: false }); } } + + /** + * @description: 鍙栨秷鎸夐挳瑙﹀彂鍙栨秷浜嬩欢 + * @return {*} + */ + function handleCancel() { + emit('cancel'); + } </script> -- Gitblit v1.9.3