form.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <HcTabsSimple :cur="tabsKey" :datas="tabsData" @tabClick="tabsClick">
  3. <template #tab-base>
  4. <baseTabCard :datas="infoData" :disabled="dataType === 'view'" v-if="tabsKey === 'base'"/>
  5. </template>
  6. <template #tab-file>
  7. <fileTabCard :datas="infoData" :disabled="dataType === 'view'" v-if="tabsKey === 'file'"/>
  8. </template>
  9. <template #tab-milestone>
  10. <milestoneTab :datas="infoData" :disabled="dataType === 'view'" v-if="tabsKey === 'milestone'"/>
  11. </template>
  12. <template #tab-record>
  13. <recordTabCard :datas="infoData" v-if="tabsKey === 'record'"/>
  14. </template>
  15. </HcTabsSimple>
  16. </template>
  17. <script setup>
  18. import {onActivated, ref} from "vue";
  19. import {useRouter, useRoute} from 'vue-router'
  20. import baseTabCard from "./components/base.vue";
  21. import fileTabCard from "./components/file.vue";
  22. import milestoneTab from "./components/milestone.vue";
  23. import recordTabCard from "./components/record.vue";
  24. import {arrIndex} from "js-fast-way";
  25. //初始变量
  26. const router = useRouter()
  27. const useRoutes = useRoute()
  28. const dataId = ref(useRoutes?.query?.id ?? '')
  29. const dataType = ref(useRoutes?.query?.type ?? '')
  30. //缓存页面被激活时
  31. onActivated(() => {
  32. dataId.value = useRoutes?.query?.id ?? ''
  33. dataType.value = useRoutes?.query?.type ?? ''
  34. setTabsData()
  35. })
  36. //设置选项卡数据
  37. const setTabsData = () => {
  38. const index = arrIndex(tabsData.value, 'key', 'record')
  39. if (dataType.value === 'view') {
  40. //预览模式下,索引不存在,就添加此选项
  41. if (index === -1) {
  42. tabsData.value.push({
  43. icon: 'file-history',
  44. label: '合同开票记录',
  45. key: 'record'
  46. })
  47. }
  48. } else {
  49. //编辑模式下,索引存在,就删除此选项
  50. if (index !== -1) {
  51. tabsData.value.splice(index, 1)
  52. }
  53. }
  54. }
  55. //选项卡
  56. const tabsKey = ref('base')
  57. const tabsData = ref([
  58. {icon: 'file-list-3', label: '合同基础信息', key: 'base'},
  59. {icon: 'file-word', label: '合同附件', key: 'file'},
  60. {icon: 'creative-commons-sa', label: '合同回款里程碑', key: 'milestone'},
  61. ])
  62. const tabsClick = (key) => {
  63. tabsKey.value = key
  64. }
  65. const infoData = ref({})
  66. const isNoDropShadow = ref(false)
  67. </script>