index.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import {NTabPane, NTabs} from 'naive-ui'
  2. import {defineComponent, h, onMounted, reactive} from 'vue'
  3. import {useRoute} from 'vue-router'
  4. import {getTabsCache, setTabsCaches} from '@/hooks/use-async'
  5. import {appKey} from "@/utils/constant";
  6. import {sysApplicationPage} from "@views/menu-manage/api";
  7. import ProjectSetting from "@views/system-manage/param-settings/component/project-setting";
  8. export default defineComponent({
  9. name: 'param-settings',
  10. setup() {
  11. const state = reactive({
  12. tabName: 'KT' as 'KT' | 'GYT' | 'KLX' | 'GYM',
  13. appKeyList: [] as any,
  14. appNameList: [] as any,
  15. })
  16. const route = useRoute()
  17. getTabsCache((val: any) => {
  18. if (val.form.tabName) {
  19. state.tabName = val.form.tabName
  20. }
  21. })
  22. const setTabs = (val: any) => {
  23. setTabsCaches(val, 'tabName', route)
  24. }
  25. onMounted(async () => {
  26. // 获取应用APP信息
  27. {
  28. const appKeys = Object.keys(appKey);
  29. const {data} = await sysApplicationPage({page: 1, rows: 99, parentId: 0})
  30. const tempList = data.rows || []
  31. tempList.forEach((next: any) => {
  32. if (appKeys.includes(next.appKey)) {
  33. state.appKeyList.push(next.appKey)
  34. state.appNameList.push(next.appName)
  35. }
  36. })
  37. }
  38. })
  39. return () => {
  40. return (
  41. <div class="system-menu-container">
  42. <h2>参数设置</h2>
  43. <div class={['section-container']} style="padding-top: 0">
  44. <NTabs
  45. type="line"
  46. size="large"
  47. v-model:value={state.tabName}
  48. onUpdate:value={(val: any) => setTabs(val)}
  49. >
  50. {state.appKeyList.map((app: any, index: number) => {
  51. return h(
  52. NTabPane,
  53. {
  54. name: app,
  55. tab: state.appNameList[index]
  56. },
  57. {
  58. default: () => {
  59. return h(ProjectSetting, {'appKey': app})
  60. }
  61. }
  62. )
  63. })}
  64. </NTabs>
  65. </div>
  66. </div>
  67. )
  68. }
  69. }
  70. })