Ben Lin
2024-06-13 1b970c588245935181610e93e84a9a3a10d80ecd
src/views/components/CustModal.vue
@@ -1,3 +1,11 @@
<!--
 * @Description: 自定义弹出框,可以自定义多个表单
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-05 15:46:07
 * @LastEditors: your name
 * @LastEditTime: 2024-06-10 23:48:05
-->
<template>
  <BasicModal
    v-bind="$attrs"
@@ -42,6 +50,7 @@
  const title = ref('');
  const width = ref('');
  const FnName = ref({});
  const mValues = ref<Recordable>({});
  const initFnName = ref({});
  const dtlSlots = ref([] as any[]);
  const formSchema = ref([] as FormSchema[]);
@@ -71,13 +80,14 @@
    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({
            ...data,
            ...mValues.value,
          });
        }
      }
@@ -85,7 +95,13 @@
    //初始化方法自定义
    if (!isNullOrEmpty(data?.initFnName)) {
      initFnName.value = data?.initFnName;
      custFunction(unref(isUpdate.value), initFnName.value[cType.value], cType.value);
      custFunction(
        unref(isUpdate.value),
        initFnName.value[cType.value],
        cType.value,
        mValues.value,
        data?.others,
      );
    }
  });
@@ -97,7 +113,10 @@
  //   { deep: true },
  // );
  /* 弹框确定按钮方法 */
  /**
   * @description: 弹框确定按钮方法
   * @return {*}
   */
  async function handleSuccess() {
    try {
      var values = {} as any;
@@ -109,6 +128,7 @@
      }
      setModalProps({ confirmLoading: true });
      //调用自定义保存方法保存数据
      values['mValues'] = mValues.value;
      const action = await custFunction(values, FnName.value[cType.value], cType.value);
      if (action as boolean) {
        closeModal();