From c8f8a9c645f7857859a9d56fac96192d994be70b Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 24 六月 2024 18:48:29 +0800 Subject: [PATCH] 按钮权限更新 --- src/views/tigerprojects/system/lowcode/normal/index.vue | 262 ++++++---------------------------------------------- 1 files changed, 31 insertions(+), 231 deletions(-) diff --git a/src/views/tigerprojects/system/lowcode/normal/index.vue b/src/views/tigerprojects/system/lowcode/normal/index.vue index 5ea5e10..d3a3514 100644 --- a/src/views/tigerprojects/system/lowcode/normal/index.vue +++ b/src/views/tigerprojects/system/lowcode/normal/index.vue @@ -4,19 +4,26 @@ * @version: * @Date: 2024-05-30 13:28:20 * @LastEditors: Ben Lin - * @LastEditTime: 2024-06-23 00:03:51 + * @LastEditTime: 2024-06-24 18:10:10 --> <template> <div> - <BasicTable @register="registerTable" v-if="isMounted"> + <!-- <BasicTable @register="registerTable" v-if="isMounted"> <template #toolbar> - <a-button type="primary" @click="handleCreate" preIcon="add_02|svg"> 鏂板 </a-button> + <a-button + type="primary" + @click="handleCreate(item['DO_METHOD'])" + :preIcon="item['ICON_URL']" + v-for="item in buttons.filter((m) => m['BUTTON_TYPE'] == 0)" + :key="item" + > + {{ item['FUNC_NAME'] }} + </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" @@ -30,7 +37,10 @@ /> </template> </BasicTable> - <normalDrawer @register="registerDrawer" @success="handleSuccess" /> + <normalDrawer @register="registerDrawer" @success="handleSuccess" /> --> + <Suspense> + <mainTable /> + </Suspense> <CustModal @register="registerCust" @success="custSuccess" @@ -60,14 +70,11 @@ </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'; @@ -78,166 +85,35 @@ 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 others = 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>>('others', others); 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: 130, - 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鑾峰彇鍒� */ @@ -342,84 +218,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(() => { - getForm().setFieldsValue({ - ITEM_CODE: d.values['val'], - }); - }); - } catch (e) {} - } - - /** - * @description: 寮瑰嚭閫夋嫨妗� - * @param {*} item - * @return {*} - */ - function handleSelectItem(item) { - /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */ - try { - import( - /* @vite-ignore */ `../entityts/${getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]}` - ) - .then((m) => { - const [{ OpenSelectItem }] = m.default(); - OpenSelectItem(openItemModal); - }) - .catch(() => { - openItemModal(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) {} - } /** * @description: Select 鑷畾涔塷nChange鏂规硶 @@ -441,7 +241,7 @@ //寮瑰嚭妗嗙‘瀹氳繑鍥� function custSuccess(d) { - reload(); + // reload(); } /** -- Gitblit v1.9.3