middle.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <div class="hc-project-collect-middle hc-h-full">
  3. <div class="menu hc-h-full inline-block w-[180px]">
  4. <hc-card>
  5. <HcMenuBar :cur="menuKey" :datas="menuData" @change="menuChange" />
  6. </hc-card>
  7. </div>
  8. <div class="content hc-h-full inline-block">
  9. <AdminCreate v-if="menuKey === 'project-collect-admin-create'" :form="adminFormInfo" @back="adminCreateBack" />
  10. <AdminListe v-else-if="menuKey === 'project-collect-admin-list'" @edit="adminListeEdit" />
  11. <GistCreate v-else-if="menuKey === 'project-collect-gist-create'" :form="gistFormInfo" @back="gistCreateBack" />
  12. <GistListe v-else-if="menuKey === 'project-collect-gist-list'" @edit="gistListeEdit" />
  13. <hc-card v-else>
  14. <hc-empty />
  15. </hc-card>
  16. </div>
  17. </div>
  18. </template>
  19. <script setup>
  20. import { onMounted, ref } from 'vue'
  21. import { useRoute, useRouter } from 'vue-router'
  22. import { isArray, isNullES } from 'js-fast-way'
  23. import { getStore } from 'hc-vue3-ui'
  24. //子组件
  25. import HcMenuBar from '~src/layout/modules/MenuBar.vue'
  26. import AdminCreate from './admin/create.vue'
  27. import AdminListe from './admin/list.vue'
  28. import GistCreate from './gist/create.vue'
  29. import GistListe from './gist/list.vue'
  30. //初始化
  31. const router = useRouter()
  32. const useRoutes = useRoute()
  33. //渲染完成
  34. onMounted(() => {
  35. getMenuDataKey()
  36. })
  37. //左侧菜单
  38. const menuKey = ref('')
  39. const menuData = ref([])
  40. const menuChange = ({ code }) => {
  41. adminFormInfo.value = {}
  42. gistFormInfo.value = {}
  43. menuKey.value = code
  44. router.push({
  45. path: useRoutes.path,
  46. query: { code },
  47. })
  48. }
  49. //获取菜单数据
  50. const getMenuDataKey = async () => {
  51. const menu = getStore('projectMenu')
  52. if (!isArray(menu)) return
  53. //获取当前左侧菜单
  54. menuData.value = menu
  55. if (menu.length <= 0) return
  56. //获取当前页面key
  57. const df_key = await getMenuDefaultKey(menu)
  58. const { code } = useRoutes.query
  59. menuKey.value = code || df_key
  60. }
  61. //获取菜单默认key
  62. const getMenuDefaultKey = async (data) => {
  63. const children = data[0].children
  64. if (!isNullES(children) && children.length > 0) {
  65. return await getMenuDefaultKey(children)
  66. } else {
  67. return data[0].code
  68. }
  69. }
  70. //项目列表编辑
  71. const adminFormInfo = ref({})
  72. const adminListeEdit = (row) => {
  73. toCollectAdmin('project-collect-admin-create', row)
  74. }
  75. //返回
  76. const adminCreateBack = () => {
  77. toCollectAdmin('project-collect-admin-list')
  78. }
  79. //跳转到项目管理相关页面
  80. const toCollectAdmin = (code, row = {}) => {
  81. adminFormInfo.value = row
  82. menuKey.value = code
  83. router.push({
  84. path: useRoutes.path,
  85. query: { code },
  86. })
  87. }
  88. //工作要点列表编辑
  89. const gistFormInfo = ref({})
  90. const gistListeEdit = (row) => {
  91. toCollectGist('project-collect-gist-create', row)
  92. }
  93. //返回
  94. const gistCreateBack = () => {
  95. toCollectGist('project-collect-gist-list')
  96. }
  97. //跳转到工作要点相关页面
  98. const toCollectGist = (code, row = {}) => {
  99. gistFormInfo.value = row
  100. menuKey.value = code
  101. router.push({
  102. path: useRoutes.path,
  103. query: { code },
  104. })
  105. }
  106. </script>
  107. <style lang="scss">
  108. @import '~src/styles/project/middle';
  109. </style>