import {
Component,
DefineComponent,
defineComponent,
markRaw,
ref,
SetupContext,
onMounted,
} from 'vue'
import styles from './$EntityName$.module.scss'
import Tab from '@/components/Tab/Tab'
import { useProvideModels } from '@/libs/Provider/app'
import { usePermission } from '@/libs/Permission/Permission'
import { permissionCodes } from '../enum'
import { ModuleType, TabItem } from '../type/Type'
import { getEntityNames } from '@/hooks/hook'
import TabPane from '@/components/Tab/TabPane'
const Models: ModuleType = import.meta.glob('./config/*.json', {
eager: true,
})
const entityNames = getEntityNames(Models)
const nameToLabelMap = [{ name: '$EntityName$', label: '$PageMenuName$' }]
export default defineComponent({
name: '$EntityName$',
setup(props, ctx: SetupContext) {
useProvideModels()
usePermission(props, permissionCodes)
const rf = ref<{
[key: string]: any
}>({})
const tabData = ref([])
const onTabChange = (v: string) => {
rf.value?.[v]?.reloadList()
}
const initTableData = async () => {
for (const i in entityNames) {
const name = entityNames[i]
const module = await import(`./Pages/${name}/${name}.tsx`)
const $EntityName$ = markRaw(module.default)
const foundLabel =
nameToLabelMap.find((item) => item.name === name)?.label || name
tabData.value.push({
label: foundLabel,
name,
component: $EntityName$,
})
}
}
initTableData()
return () => {
return (
{tabData.value.map((widgetInfo) => {
const Widget: any = widgetInfo.component
return (
(rf.value['$EntityName$'] = r)}
>
)
})}
)
}
},
})