From 46c3d28c5633baaddad0da441185310b9360a45b Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期三, 03 七月 2024 14:56:21 +0800 Subject: [PATCH] 高级表单优化 --- src/views/tigerprojects/system/lowcode/normal/index.vue | 232 ++++++--------------------------------------------------- 1 files changed, 25 insertions(+), 207 deletions(-) diff --git a/src/views/tigerprojects/system/lowcode/normal/index.vue b/src/views/tigerprojects/system/lowcode/normal/index.vue index 794ea73..6b80bfd 100644 --- a/src/views/tigerprojects/system/lowcode/normal/index.vue +++ b/src/views/tigerprojects/system/lowcode/normal/index.vue @@ -4,33 +4,13 @@ * @version: * @Date: 2024-05-30 13:28:20 * @LastEditors: Ben Lin - * @LastEditTime: 2024-06-22 23:11:47 + * @LastEditTime: 2024-07-03 08:52:44 --> <template> <div> - <BasicTable @register="registerTable" v-if="isMounted"> - <template #toolbar> - <a-button type="primary" @click="handleCreate" preIcon="add_02|svg"> 鏂板 </a-button> - </template> - <template #action="{ record }"> - <TableAction :actions="createActions(record)" /> - </template> - <template #[item]="{ field }" v-for="item in colSlots" :key="item"> - <!-- <template #form-BAS_REASON3aadd="{ field }"> --> - <a-button - v-if="field" - class="mt-1 ml-1" - size="small" - @click="handleSelectItem(item)" - preIcon="search|svg" - /> - <GeneralModal - @register="registerItemAdd" - @success="(d, u) => handleItemSuccess(d, u, item)" - /> - </template> - </BasicTable> - <normalDrawer @register="registerDrawer" @success="handleSuccess" /> + <Suspense> + <mainTable /> + </Suspense> <CustModal @register="registerCust" @success="custSuccess" @@ -60,182 +40,50 @@ </div> </template> <script lang="ts" setup> - import { h, onMounted, ref, unref } from 'vue'; - import { BasicTable, useTable, TableAction, BasicColumn, FormSchema } from '/@/components/Table'; - import { useDrawer } from '/@/components/Drawer'; - import normalDrawer from '../normalDrawer.vue'; + import { Ref, h, onMounted, provide, ref, unref } from 'vue'; + import mainTable from './mainTable.vue'; import GeneralModal from '/@/views/components/GeneralModal.vue'; import { DeleteEntity, GetEnum, getEntity, getListByPage } from '/@/api/tigerapi/system'; - import { useGlobSetting } from '/@/hooks/setting'; - import { useRoute } from 'vue-router'; + import { useRoute, useRouter } from 'vue-router'; import { Tag, Tooltip } from 'ant-design-vue'; import CustModal from '/@/views/components/CustModal.vue'; import { BasicForm, useForm } from '/@/components/Form/index'; import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is'; - import { OpenSelectItem, custOnChange, OpenCustModal, GetUseModalData } from '../data'; + import { custOnChange, OpenCustModal, GetUseModalData } from '../data'; import { useModal } from '/@/components/Modal'; import { useLocale } from '/@/locales/useLocale'; import { uploadApi } from '/@/api/sys/upload'; import { useGo } from '/@/hooks/web/usePage'; + import { useI18n } from '/@/hooks/web/useI18n'; + import { getRoleButtons } from '/@/api/sys/menu'; const { getLocale } = useLocale(); + const { t } = useI18n(); const route = useRoute(); + const { currentRoute } = useRouter(); const go = useGo(); const objParams = ref(JSON.parse(decodeURI(route.params?.id as string))); - const entityName = ref(objParams.value.ID); - const globSetting = useGlobSetting(); const _columns = ref([]); const _searchFormSchema = ref([]); const _crudFormSchema = ref([]); - const formSchemas = ref({}); //寮瑰嚭妗嗗琛ㄥ崟缁撴瀯 const useModalData = ref({}); //琛ㄥ崟涓彃妲芥覆鏌撴寜閽墦寮�妯℃�佹useModal鏂规硶 const useFormData = ref({}); - const colSlots = ref<any>(objParams.value.colSlots); //鎸夐挳鎻掓Ы - const crudColSlots = ref<any>(objParams.value.crudColSlots); const cType = ref(''); const dtlSlots = ref([] as any[]); const selectVals = ref({}); const isExistSql = ref(''); - const custImport = ref(null); + const custImport = ref<any>(null); const isMounted = ref(false); + const buttons = ref([]); + const keyFieldValues = ref<any>(null); + provide<Ref<any>>('objParams', objParams.value); + provide<Ref<any[]>>('_columns', _columns); + provide<Ref<any[]>>('_searchFormSchema', _searchFormSchema); + provide<Ref<any[]>>('_crudFormSchema', _crudFormSchema); + provide<Ref<string>>('isExistSql', isExistSql); + provide<Ref<any>>('keyFieldValues', keyFieldValues); const [registerCust, { openModal: openCustomModal, closeModal }] = useModal(); - const [registerItemAdd, { openModal: openItemModal }] = useModal(); - const [registerDrawer, { openDrawer }] = useDrawer(); - const [registerTable, { getForm, reload, setProps }] = useTable({ - title: '鍒楄〃淇℃伅', - api: getListByPage, - searchInfo: { TABLE_NAME: objParams.value.ID }, - columns: _columns as unknown as BasicColumn[], - formConfig: { - labelWidth: 140, - schemas: _searchFormSchema as unknown as FormSchema[], - }, - useSearchForm: true, - showTableSetting: true, - bordered: true, - canResize: true, - showIndexColumn: false, - actionColumn: { - width: 80, - title: '鎿嶄綔', - dataIndex: 'action', - slots: { customRender: 'action' }, - fixed: undefined, - }, //鑷畾涔夋搷浣滃垪 - }); - - /** - * @description: 鐢熸垚鍒楄〃涓搷浣滈」鐨勬寜閽� - * @param {*} record - * @return {*} - */ - function createActions(record) { - const params = { - record, - isUpdate: true, - entityName: objParams.value.ID, - formJson: _crudFormSchema.value, - cType, - dtlSlots, - formSchemas, - useModalData, - useFormData, - crudColSlots, - }; - const actionItem = [ - { - icon: 'clarity:note-edit-line', - onClick: editRecord.bind(null, openDrawer, params), - }, - { - icon: 'ant-design:delete-outlined', - color: 'error', - popConfirm: { - title: '鏄惁纭鍒犻櫎?', - placement: 'left', - confirm: deleteRecord.bind(null, reload, params), - }, - }, - ]; - if (isNullOrUnDef(custImport.value)) { - return actionItem; - } - const [{ ActionItem }] = custImport.value.default(); - return ActionItem( - params, - actionItem, - openDrawer, - reload, - openCustomModal, - useForm, - useModal, - go, - ); - } - - /** - * @description: 鍏敤缂栬緫鏂规硶 - * @param {Fn} fn - * @param {*} params - * @return {*} - */ - function editRecord(fn: Fn, params: {}) { - fn(true, params); - } - - /** - * @description: 鍏敤鍒犻櫎鏂规硶 - * @param {Fn} fn - * @param {*} params - * @return {*} - */ - function deleteRecord(fn: Fn, params: {}) { - console.log(params['record']); - //鍒犻櫎 - DeleteEntity(params['record'], params['entityName']).then((action) => { - if (action.IsSuccessed) { - fn(); - } - }); - } - - /** - * @description: 鑾峰彇鏂板鎸夐挳鐨勮涓� - * @return {*} - */ - function handleCreate() { - if (isNullOrUnDef(custImport.value)) { - openDrawer(true, { - isUpdate: false, - entityName: objParams.value.ID, - formJson: _crudFormSchema.value, - crudColSlots, - isExistSql: isExistSql.value, - }); - } else { - const [{ CreateAction }] = custImport.value.default(); - const result = CreateAction(objParams.value.ID); - switch (result.action) { - case 'go': - go(`/${result.url}/${encodeURI(JSON.stringify(result.params))}`); - break; - case 'drawer': - openDrawer(true, { - isUpdate: false, - entityName: objParams.value.ID, - formJson: _crudFormSchema.value, - crudColSlots, - isExistSql: isExistSql.value, - }); - break; - } - } - } - - function handleSuccess() { - reload(); - } onMounted(async () => { /* 鐢╦son鑾峰彇鍒� */ @@ -261,7 +109,7 @@ isMounted.value = false; /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ try { - custImport.value = await import(/* @vite-ignore */ `../entityts/${objParams.value.ID}`); + custImport.value = await import(`../entityts/${objParams.value.ID}.ts`); } catch (e) {} isMounted.value = true; @@ -340,38 +188,8 @@ } } _columns.value = objs; + buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); }); - - /** - * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠� - * @param {*} d - * @param {*} u - * @param {*} item - * @return {*} - */ - function handleItemSuccess(d, u, item) { - /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ - try { - import( - /* @vite-ignore */ `../entityts/${getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` - ).then((m) => { - const [{ GetSelectSuccess }] = m.default(); - getForm().setFieldsValue(GetSelectSuccess(d, u)); - }); - } catch (e) {} - } - - /** - * @description: 寮瑰嚭閫夋嫨妗� - * @param {*} item - * @return {*} - */ - function handleSelectItem(item) { - OpenSelectItem( - openItemModal, - getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`], - ); - } /** * @description: Select 鑷畾涔塷nChange鏂规硶 @@ -393,7 +211,7 @@ //寮瑰嚭妗嗙‘瀹氳繑鍥� function custSuccess(d) { - reload(); + // reload(); } /** @@ -406,7 +224,7 @@ function handleEntSuccess(d, u, item) { /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ try { - import(/* @vite-ignore */ `../entityts/${cType.value}`).then((m) => { + import(`../entityts/${cType.value}.ts`).then((m) => { const [{ GetSelectSuccess }] = m.default(); var values = GetSelectSuccess(d, u); selectVals.value = values; //淇濆瓨寮瑰嚭妗嗛�夋嫨鐨勭粨鏋� -- Gitblit v1.9.3