Ben Lin
2024-07-31 08d4018e84039c5a9d400790704fa931afdc861b
src/views/tigerprojects/system/lowcode/high/edit/index.vue
@@ -4,7 +4,7 @@
 * @version: 
 * @Date: 2024-06-18 15:09:48
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-27 12:59:25
 * @LastEditTime: 2024-07-31 09:25:38
-->
<template>
  <PageWrapper
@@ -18,7 +18,12 @@
    </Suspense>
    <!-- <a-card :title="titleInfo['baseTableTitle']" :bordered="false" class="!mt-5"> -->
    <Suspense>
      <Editdtl :entityName="entityName" @search="dtlFormSearch" />
      <Editdtl
        :entityName="entityName"
        @search="dtlFormSearch"
        @gettables="GetTablesData"
        @opencust="OpenCust"
      />
    </Suspense>
    <!-- </a-card> -->
    <a-card
@@ -64,6 +69,7 @@
        </template>
      </CustModal>
    </Suspense>
    <GeneralModal @register="register" @success="handleCustSuccess" />
  </PageWrapper>
</template>
<script lang="ts" setup>
@@ -111,7 +117,7 @@
  const titleInfo = ref({}); //getTitle(objParams.value.Name);
  const isAllUpdate = ref(objParams.value.CODE != '0');
  const globSetting = useGlobSetting();
  const formSchemas = ref({}); //弹出框或高级页面多表单结构
  const colSlots = ref<any>(objParams.value.colSlots);
  const useModalData = ref({}); //表单中插槽渲染按钮打开模态框useModal方法
  const useFormData = ref({});
  const useTableData = ref({});
@@ -135,7 +141,8 @@
  provide<Ref<any>>('baseCards', baseCards);
  provide<Ref<any>>('useTables', useTables);
  const [registerCust, { openModal: openCustomModal, closeModal }] = useModal();
  const [registerCust] = useModal();
  const [register, { openModal, closeModal }] = useModal();
  const { setTitle } = useTabs();
  setTitle(objParams.value.Title); //设置标签页标题
@@ -143,7 +150,7 @@
    if (!isNullOrUnDef(custImport.value)) {
      const [{ GetHomeUrl }] = custImport.value['default']();
      // 本例的效果时点击返回始终跳转到账号列表页,实际应用时可返回上一页
      go(GetHomeUrl(entityName.value));
      go(GetHomeUrl({ colSlots: colSlots.value }));
    }
  }
@@ -160,32 +167,91 @@
  });
  /**
   * @description: 获取useTable
   * @param {*} d
   * @return {*}
   */
  function GetTablesData(d) {
    useTableData.value = d;
  }
  const currTableName = ref('');
  const currRecordId = ref('');
  /**
   * @description: 表格内打开弹框事件
   * @param {*} d
   * @return {*}
   */
  function OpenCust(d) {
    console.log(d.name);
    currTableName.value = d.name;
    currRecordId.value = d.data.ID;
    data.value[d.name].map((x) => {
      if (x.ID == currRecordId.value && x.VAR_TYPE != d.data.VAR_TYPE) {
        x.VAR_TYPE = d.data.VAR_TYPE;
      }
    });
    openModal(true, d.modalSchema);
  }
  /**
   * @description: 表格内打开弹框事件返回
   * @param {*} d
   * @param {*} u
   * @return {*}
   */
  function handleCustSuccess(d, u) {
    let currRecord = {};
    const _data = data.value[currTableName.value].map((x) => {
      if (x.ID == currRecordId.value) {
        x.VAR_VALUE = d.values.val;
        currRecord = x;
      }
      return x;
    });
    const [{ CustEditEnd }] = custImport.value['default']();
    data.value[currTableName.value] = [];
    useTables.value[currTableName.value][1].setProps({
      dataSource: [],
    });
    data.value[currTableName.value] = _data;
    useTables.value[currTableName.value][1].setProps({
      dataSource: data.value[currTableName.value],
    });
    useTables.value[currTableName.value][1].reload();
    /* 单元格编辑完成后如果有自定义方法,就调用 */
    if(CustEditEnd && isFunction(CustEditEnd)){
      CustEditEnd({record:currRecord},currTableName.value, useTables.value, data);
    }
  }
  /**
   * @description: 异步全部提交方法
   * @return {*}
   */
  async function submitAll() {
    try {
      const validates = await validate();
      const Keys = Object.getOwnPropertyNames(useFormData.value);
      let i;
      let p = [] as Promise<any>[];
      for (i = 0; i < Keys.length; i++) {
        p.push(
          SaveEntity(
            validates[Keys[i]],
            unref(isAllUpdate),
            baseCards.value[i]['entityName'],
            `${objParams.value['IsExist']}='${validates[Keys[i]][objParams.value['IsExist']]}'`,
            true,
          ),
        );
      }
      await Promise.all(p);
      if (
        !custImport.value['default']()[0].SubmitAll &&
        !isFunction(custImport.value['default']()[0].SubmitAll)
      ) {
        /* 默认提交 */
        const Keys = Object.getOwnPropertyNames(useFormData.value);
        let i;
        let p = [] as Promise<any>[];
        for (i = 0; i < Keys.length; i++) {
          p.push(
            SaveEntity(
              validates[Keys[i]],
              unref(isAllUpdate),
              baseCards.value[i]['entityName'],
              `${objParams.value['IsExist']}='${validates[Keys[i]][objParams.value['IsExist']]}'`,
              true,
            ),
          );
        }
        await Promise.all(p);
        objParams.value['drawers'].forEach((d) => {
          let where = `${d['code']} = '${keyFieldValues.value[d['code']]}'`;
          /* type: all-表示需要code的所有的值 */
@@ -206,7 +272,13 @@
        });
      } else {
        /* 如果自定义提交方法存在就用自定义提交 */
        custImport.value['default']()[0].SubmitAll(data, keyFieldValues, cancel);
        custImport.value['default']()[0].SubmitAll(
          data,
          keyFieldValues,
          cancel,
          objParams.value['drawers'],
          validates,
        );
      }
    } catch (error) {}
  }