| | |
| | | * @version: |
| | | * @Date: 2024-06-05 15:46:07 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-07-16 16:55:52 |
| | | * @LastEditTime: 2024-07-20 06:31:16 |
| | | --> |
| | | <template> |
| | | <BasicModal |
| | |
| | | const ALayout = Layout; |
| | | const ACard = Card; |
| | | const ALayoutContent = LayoutContent; |
| | | const emit = defineEmits(['success', 'register']); |
| | | const emit = defineEmits(['success', 'register', 'modalInner']); |
| | | 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<any>({}); |
| | | const props = defineProps({ |
| | | detailSlots: { type: Array, default: [] }, |
| | | entityName: { type: String }, |
| | | }); |
| | | |
| | |
| | | ]); |
| | | /* 动态import实体名.ts的自定义方法 */ |
| | | try { |
| | | custImport.value = await import(`../tigerprojects/system/lowcode/entityts/${props.entityName}.ts`); |
| | | custImport.value = await import( |
| | | `../tigerprojects/system/lowcode/entityts/${props.entityName}.ts` |
| | | ); |
| | | } catch (e) {} |
| | | const [{ CustFunc }] = isNullOrUnDef(custImport.value['default']) |
| | | 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 }, |
| | | // ); |
| | | |
| | | watch( |
| | | () => props.detailSlots, |
| | | (v) => { |
| | | if (v !== dtlSlots.value) { |
| | | dtlSlots.value = v; |
| | | } |
| | | }, |
| | | { deep: true }, |
| | | ); |
| | | |
| | | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| | | await nextTick(); |
| | | 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; //保存数据方法 |
| | | mValues.value = data?.values; //主表单传过来的数据 |
| | | //循环表单名数组,操作各表单字段 |
| | | formElName.value.forEach((name) => { |
| | | if (!isNullOrUnDef(useFormData.value[name])) { |
| | | useFormData.value[name][1]['resetFields'](); |
| | | if (unref(isUpdate)) { |
| | | useFormData.value[name][1]['setFieldsValue']({ |
| | | ...mValues.value, |
| | | }); |
| | | |
| | | 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)) { |
| | |
| | | let param: CustModalParams = { |
| | | cType: cType.value, |
| | | values: unref(isUpdate.value), |
| | | initFnName: initFnName.value[cType.value], |
| | | mValues: mValues.value, |
| | | others: data?.others, |
| | | FnName: '', |
| | | FnName: initFnName.value[cType.value], |
| | | initFnName: '', |
| | | }; |
| | | CustFunc(param); |
| | | } |
| | |
| | | const action = await CustFunc({ |
| | | cType: cType.value, |
| | | values: values, |
| | | FnName: FnName.value[cType.value], |
| | | FnName: FnName.value, |
| | | } as unknown as CustModalParams); |
| | | if (action.IsSuccessed) { |
| | | closeModal(); |