From 925a72d879f399c2597b08e0becff4f7db6d399f Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 24 十月 2024 14:52:17 +0800 Subject: [PATCH] 低代码页面更新 --- src/views/tigerprojects/system/lowcode/normalDrawer.vue | 314 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 227 insertions(+), 87 deletions(-) diff --git a/src/views/tigerprojects/system/lowcode/normalDrawer.vue b/src/views/tigerprojects/system/lowcode/normalDrawer.vue index a9d5af9..140dfaa 100644 --- a/src/views/tigerprojects/system/lowcode/normalDrawer.vue +++ b/src/views/tigerprojects/system/lowcode/normalDrawer.vue @@ -1,106 +1,246 @@ <!-- - * @Description: file content - * @Author: your name + * __----~~~~~~~~~~~------___ + * . . ~~//====...... __--~ ~~ + * -. \_|// |||\\ ~~~~~~::::... /~ + * ___-==_ _-~o~ \/ ||| \\ _/~~- + * __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + * _-~~ .=~ | \\-_ '-~7 /- / || \ / + * .~ .~ | \\ -_ / /- / || \ / + * / ____ / | \\ ~-_/ /|- _/ .|| \ / + * |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + * ' ~-| /| |-~\~~ __--~~ + * |-~~-_/ | | ~\_ _-~ /\ + * / \ \__ \/~ \__ + * _--~ _/ | .-~~____--~-/ ~~==. + * ((->/~ '.|||' -_| ~~-/ , . _|| + * -_ ~\ ~~---l__i__i__i--~~_/ + * _-~-__ ~) \--______________--~~ + * //.-~~~-~_--~- |-------~~~~~~~~ + * //.-~~~--\ + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * 绁炲吔淇濅綉 姘告棤BUG + --> + +<!-- + * @Description: 閫氱敤渚ц竟妗� + * @Author: Ben Lin * @version: * @Date: 2024-05-30 13:28:20 - * @LastEditors: your name - * @LastEditTime: 2024-06-13 20:36:33 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-06-14 09:14:35 --> <template> - <BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="600px" @ok="handleSubmit"> + <BasicDrawer + v-bind="$attrs" + @register="registerDrawer" + showFooter + :title="getTitle" + width="580px" + @ok="handleSubmit" + > <BasicForm @register="registerForm"> <template #[item]="{ field }" v-for="item in crudColSlots" :key="item"> - <a-button v-if="field" class="mt-1 ml-1" size="small" @click="handleSelectItem(item)" preIcon="search|svg" /> - <NormalModal @register="registerItemAdd" @success="(d, u) => handleItemSuccess(d, u, item)" /> + <a-button + v-if="field" + class="mt-1 ml-1" + size="small" + @click="handleSelectItem(item)" + preIcon="search|svg" + /> + <GeneralModal + v-if="showModal" + @register="useModaldata[item][0]" + @success="(d, u) => handleItemSuccess(d, u, item)" + /> </template> </BasicForm> </BasicDrawer> </template> <script lang="ts" setup> -import { ref, computed, unref, onMounted } from 'vue'; -import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; -import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; -import { useGlobSetting } from '/@/hooks/setting'; -import NormalModal from '/@/views/components/NormalModal.vue'; -import { SaveEntity, fetchJson, formatValues } from '/@/api/tigerapi/system'; -import { useModal } from '/@/components/Modal'; -import { GetSelectSuccess, OpenSelectItem } from './data'; -import { isArray, isNullOrEmpty } from '/@/utils/is'; + import { ref, computed, unref, onMounted, nextTick } from 'vue'; + import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; + import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; + import { useGlobSetting } from '/@/hooks/setting'; + import GeneralModal from '/@/views/components/GeneralModal.vue'; + import { SaveEntity, fetchJson, formatValues } from '/@/api/tigerapi/system'; + import { useModal } from '/@/components/Modal'; + import { isNullOrUnDef, isTimeViaRegExp8601 } from '/@/utils/is'; + import { useMessage } from '/@/hooks/web/useMessage'; + import { useI18n } from '/@/hooks/web/useI18n'; + import { useUserStore } from '/@/store/modules/user'; + import { dateUtil } from '/@/utils/dateUtil'; -const emit = defineEmits(['success', 'register']); -const globSetting = useGlobSetting(); -const isUpdate = ref(true); -const entityName = ref(''); -const formSchema = ref([]); -const crudColSlots = ref<any>([]); -const [registerItemAdd, { openModal: openItemModal }] = useModal(); -const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({ - labelWidth: 140, - schemas: formSchema as unknown as FormSchema[], - actionColOptions: { - span: 24, - }, - showActionButtonGroup: false, -}); + const emit = defineEmits(['success', 'register']); + const { t } = useI18n(); + const { createErrorModal } = useMessage(); + const globSetting = useGlobSetting(); + const isUpdate = ref(true); + const ifSave = ref(true); + const entityName = ref(''); + const formSchema = ref([]); + const crudColSlots = ref<any>([]); + const isExistSql = ref(''); + const useModaldata = ref({}); + const showModal = ref(false); + const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({ + labelWidth: 140, + schemas: formSchema as unknown as FormSchema[], + actionColOptions: { + span: 24, + }, + showActionButtonGroup: false, + }); -const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { - isUpdate.value = !!data?.isUpdate; - entityName.value = data?.entityName; - // formSchema.value = await fetchJson( - // `${globSetting.downloadUrl}/LowCode/${unref(entityName)}/${ - // entityName.value - // }_addEditform.json`, - // ); - formSchema.value = data?.formJson; - crudColSlots.value = data?.crudColSlots; - resetFields(); - setDrawerProps({ confirmLoading: false }); - - if (unref(isUpdate)) { - setFieldsValue({ - ...data.record, - }); - }else{ - if(!isNullOrEmpty(data?.others)){} - setFieldsValue(data?.others); - } -}); - -const getTitle = computed(() => (!unref(isUpdate) ? '鏂板' : '缂栬緫')); - -onMounted(async () => { }); -async function handleSubmit() { - try { - let values = await validate(); - //鍒ゆ柇淇濆瓨鐨勫�煎鏋滄槸[]鏁扮粍鐨勶紝灏辩洿鎺ュ彇[0]绗竴涓�硷紝涓�鑸拡瀵逛笂浼犳ā鏉跨殑鍦板潃 - values = formatValues(values); - setDrawerProps({ confirmLoading: true }); - // TODO custom api - //淇濆瓨 - SaveEntity(values, unref(isUpdate), unref(entityName)).then((action) => { - if (action.IsSuccessed) { - closeDrawer(); - emit('success'); - } - }); - } finally { + const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { + showModal.value = false; + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ + let m = {} as any; + try { + m = await import(`./entityts/${data?.keyName}.ts`); + } catch (e) {} + isUpdate.value = !!data?.isUpdate; + ifSave.value = !!data?.ifSave; + entityName.value = data?.entityName; + formSchema.value = !isNullOrUnDef(m.default) + ? m.default()[0].GetCrudForm(data?.name, data?.data, data.record) + : data?.formJson; + crudColSlots.value = data?.crudColSlots; + isExistSql.value = data?.isExistSql; + /* 濡傛灉鎻掓Ы鍒楄〃涓嶄负绌猴紝鍒欏垵濮嬪寲妯℃�佺獥鍙� */ + if (!isNullOrUnDef(crudColSlots.value) && crudColSlots.value.length > 0) { + await nextTick(); + crudColSlots.value.forEach((d) => { + useModaldata.value[d] = useModal(); + }); + showModal.value = true; + } + resetFields(); setDrawerProps({ confirmLoading: false }); + + if (unref(isUpdate)) { + /* 寰幆瀛楁鍚嶏紝鍒ゆ柇濡傛灉鏄椂闂寸殑灏辫浆鎹㈡垚dayjs鏍煎紡锛屽惁鍒欐椂闂撮�夋嫨鍣ㄤ細鍑洪敊 */ + const Keys = Object.getOwnPropertyNames(data.record); + for (const k in Keys) { + if (!isNullOrUnDef(data.record[Keys[k]]) && isTimeViaRegExp8601(data.record[Keys[k]])) { + data.record[Keys[k]] = dateUtil(data.record[Keys[k]]); //杞崲鎴恉ayjs鏍煎紡 + } + } + setFieldsValue({ + ...data.record, + }); + } else { + if (!isNullOrUnDef(data?.keyFieldValues)) { + setFieldsValue(data?.keyFieldValues); + } + } + }); + + const getTitle = computed(() => (!unref(isUpdate) ? '鏂板' : '缂栬緫')); + + onMounted(async () => {}); + async function handleSubmit() { + try { + let values = await validate(); + //鍒ゆ柇淇濆瓨鐨勫�煎鏋滄槸[]鏁扮粍鐨勶紝灏辩洿鎺ュ彇[0]绗竴涓�硷紝涓�鑸拡瀵逛笂浼犳ā鏉跨殑鍦板潃 + values = formatValues(values); + setDrawerProps({ confirmLoading: true }); + // TODO custom api + if (unref(ifSave)) { + values.AUTH_ORG = useUserStore().getUserInfo.orgCode; + //淇濆瓨 + SaveEntity( + values, + unref(isUpdate), + unref(entityName), + `${isExistSql.value}='${values[isExistSql.value]}'`, + ).then((action) => { + if (action.IsSuccessed) { + closeDrawer(); + emit('success', values, { isUpdate: isUpdate.value }); + } else { + createErrorModal({ title: t('sys.api.errorTip'), content: action.Message }); + } + }); + } else { + closeDrawer(); + emit('success', values, { isUpdate: isUpdate.value }); + } + } finally { + setDrawerProps({ confirmLoading: false }); + } } -} -/** - * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠� - * @param {*} d - * @param {*} u - * @param {*} item - * @return {*} - */ -function handleItemSuccess(d, u, item) { - setFieldsValue(GetSelectSuccess(d, u, getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`])); -} + /** + * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠� + * @param {*} d + * @param {*} u + * @param {*} item + * @return {*} + */ + function handleItemSuccess(d, u, item) { + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ + try { + import(`./entityts/${getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]}.ts`) + .then((m) => { + const [{ GetSelectSuccess }] = m.default(); + setFieldsValue(GetSelectSuccess(d, u)); + }) + .catch(() => { + setFieldsValue({ + ITEM_CODE: d.values['val'], + }); + }); + } catch (e) {} + } -/* 寮瑰嚭閫夋嫨妗� */ -function handleSelectItem(item) { - OpenSelectItem(openItemModal, getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]); -} + /** + * @description: 寮瑰嚭閫夋嫨妗� + * @param {*} item + * @return {*} + */ + function handleSelectItem(item) { + /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ + try { + import(`./entityts/${getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]}.ts`) + .then((m) => { + const [{ OpenSelectItem }] = m.default(); + OpenSelectItem(useModaldata.value[item][1].openModal); + }) + .catch((err) => { + useModaldata.value[item][1].openModal(true, { + title: '鐗╂枡鍒楄〃', + schemas: [ + { + field: 'ITEM_CODE', + component: 'Input', + label: '鐗╂枡缂栫爜', + colProps: { + span: 12, + }, + }, + ], + ItemColumns: [ + { + title: t('鐗╂枡缂栫爜'), + dataIndex: 'ITEM_CODE', + resizable: true, + sorter: true, + width: 200, + }, + { + title: t('鐗╂枡鍚嶇О'), + dataIndex: 'ITEM_NAME', + resizable: true, + sorter: true, + width: 180, + }, + ], + tableName: 'BAS_ITEM', + rowKey: 'ITEM_CODE', + searchInfo: { TABLE_NAME: 'BAS_ITEM' }, + }); + }); + } catch (e) {} + } </script> -- Gitblit v1.9.3