Ben Lin
2024-07-22 c24509087b1193c18ee4c87487b0fc4bf8ee0918
src/views/tigerprojects/system/lowcode/high/index.vue
@@ -4,7 +4,7 @@
 * @version: 
 * @Date: 2024-06-18 15:09:48
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-03 14:36:19
 * @LastEditTime: 2024-07-22 16:02:35
-->
<!--
 *                        _oo0oo_
@@ -70,32 +70,35 @@
      <a-button class="mr-4" type="info" @click="cancel"> 取消 </a-button>
      <a-button type="primary" @click="submitAll"> 提交 </a-button>
    </template>
    <CustModal
      @register="registerCust"
      @success="custSuccess"
      :type="cType"
      :detailSlots="dtlSlots"
    >
      <!-- 用插槽自定义多表单 -->
      <template #[item.name] v-for="item in dtlSlots" :key="item.name">
        <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]">
          <!-- 用插槽自定义弹出选择框 -->
          <template #[name]="{ field }" v-for="name in item.slots" :key="name">
            <a-button
              class="mt-1 ml-1"
              size="small"
              @click="handleCustClick(field)"
              :preIcon="item.preIcons[name]"
            />
            <GeneralModal
              @register="useModalData[name][0]"
              @success="(d, u) => handleEntSuccess(d, u, item.name)"
            />
          </template>
        </BasicForm>
        <!-- 自定义内容 -->
      </template>
    </CustModal>
    <Suspense>
      <CustModal
        @register="registerCust"
        @success="custSuccess"
        :type="cType"
        :detailSlots="dtlSlots"
        :entityName="entityName"
      >
        <!-- 用插槽自定义多表单 -->
        <template #[item.name] v-for="item in dtlSlots" :key="item.name">
          <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]">
            <!-- 用插槽自定义弹出选择框 -->
            <template #[name]="{ field }" v-for="name in item.slots" :key="name">
              <a-button
                class="mt-1 ml-1"
                size="small"
                @click="handleCustClick(field)"
                :preIcon="item.preIcons[name]"
              />
              <GeneralModal
                @register="useModalData[name][0]"
                @success="(d, u) => handleEntSuccess(d, u, item.name)"
              />
            </template>
          </BasicForm>
          <!-- 自定义内容 -->
        </template>
      </CustModal>
    </Suspense>
  </PageWrapper>
</template>
<script lang="ts" setup>
@@ -105,13 +108,7 @@
  import dtl from './dtl.vue';
  import baseForm from './baseForm.vue';
  import GeneralModal from '/@/views/components/GeneralModal.vue';
  import {
    AddAfterDelete,
    AddListEntity,
    DeleteWhere,
    SaveEntity,
    getEntity,
  } from '/@/api/tigerapi/system';
  import { AddAfterDelete, SaveEntity } from '/@/api/tigerapi/system';
  import { useGlobSetting } from '/@/hooks/setting';
  import { useRoute, useRouter } from 'vue-router';
  import CustModal from '/@/views/components/CustModal.vue';
@@ -142,10 +139,10 @@
  }
  const currentTab = getCurrentTab();
  const routeParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
  const entityName = ref(routeParams.value.Name);
  // 从sessionStorage中读取参数并转换回对象
  const savedParams = sessionStorage.getItem(`${routeParams.value.sName}_params`);
  const objParams = savedParams ? ref(JSON.parse(decodeURI(savedParams))) : ref({});
  const entityName = ref(routeParams.value.Name);
  const titleInfo = ref({}); //getTitle(objParams.value.Name);
  const isAllUpdate = ref(objParams.value.CODE != '0');
  const globSetting = useGlobSetting();
@@ -209,7 +206,13 @@
      let p = [] as Promise<any>[];
      for (i = 0; i < Keys.length; i++) {
        p.push(
          SaveEntity(validates[Keys[i]], unref(isAllUpdate), baseCards.value[i]['entityName']),
          SaveEntity(
            validates[Keys[i]],
            unref(isAllUpdate),
            baseCards.value[i]['entityName'],
            `${objParams.value['IsExist']}='${validates[Keys[i]][objParams.value['IsExist']]}'`,
            true,
          ),
        );
      }
      await Promise.all(p);
@@ -221,17 +224,16 @@
        objParams.value['drawers'].forEach((d) => {
          let where = `${d['code']} = '${keyFieldValues.value[d['code']]}'`;
          /* type: all-表示需要code的所有的值 */
          if(d['type'] == 'all'){
            where = `${d['code']} in (${data.value[d['keyName']].map(value => `'${value[d['code']]}'`).join(',')})`;
          if (d['type'] == 'all' && data.value[d['keyName']].length > 0) {
            where = `${d['code']} in (${data.value[d['keyName']].map((value) => `'${value[d['code']]}'`).join(',')})`;
          }
          data.value[d['name']].map((item) => {
            item.ID = buildUUID();
          });
          AddAfterDelete(
            d['name'],
            data.value[d['name']],
            where,
          ).then((action) => {
          /* 如果高级表单中关联的是ID(IsID == true),则不用初始化ID */
          if (!objParams.value['IsID']) {
            data.value[d['name']].map((item) => {
              item.ID = buildUUID();
            });
          }
          AddAfterDelete(d['name'], data.value[d['name']], where).then((action) => {
            if (action.IsSuccessed) {
              cancel();
            }
@@ -239,7 +241,7 @@
        });
      } else {
        /* 如果自定义提交方法存在就用自定义提交 */
        custImport.value['default']()[0].SubmitAll(data);
        custImport.value['default']()[0].SubmitAll(data, keyFieldValues, cancel);
      }
    } catch (error) {}
  }
@@ -324,7 +326,9 @@
        var values = GetSelectSuccess(d, u);
        selectVals.value = values; //保存弹出框选择的结果
        let _val = {};
        _val[d.returnFieldName] = values[d.returnFieldName];
        d.returnFieldName.map((x) => {
          _val[x] = values[x];
        });
        useFormData.value[item][1].setFieldsValue(_val);
      });
    } catch (e) {}