import {
|
Component,
|
DefineComponent,
|
defineComponent,
|
markRaw,
|
ref,
|
SetupContext,
|
onMounted,
|
} from 'vue'
|
import styles from './PipeAccessoryWeld.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: 'PipeAccessoryWeld', label: '管附件焊接' }]
|
|
export default defineComponent({
|
name: 'PipeAccessoryWeld',
|
|
setup(props, ctx: SetupContext) {
|
useProvideModels()
|
usePermission(props, permissionCodes)
|
|
const rf = ref<{
|
[key: string]: any
|
}>({})
|
|
const tabData = ref<TabItem[]>([])
|
|
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 PipeAccessoryWeld = markRaw(module.default)
|
const foundLabel =
|
nameToLabelMap.find((item) => item.name === name)?.label || name
|
tabData.value.push({
|
label: foundLabel,
|
name,
|
component: PipeAccessoryWeld,
|
})
|
}
|
}
|
|
initTableData()
|
|
return () => {
|
return (
|
<div class={styles.PipeAccessoryWeld}>
|
<Tab data={tabData.value} type="list" onTab={onTabChange}>
|
{tabData.value.map((widgetInfo) => {
|
const Widget: any = widgetInfo.component
|
return (
|
<TabPane label={widgetInfo.label} name={widgetInfo.name}>
|
<Widget
|
ref={(r: any) => (rf.value['PipeAccessoryWeld'] = r)}
|
></Widget>
|
</TabPane>
|
)
|
})}
|
</Tab>
|
</div>
|
)
|
}
|
},
|
})
|