detail.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div class="demension-detail">
  3. <van-row>
  4. <div v-for="(item,index) in store.selectDemension.detailList" :key="index" class="min-w-[calc(50%)]">
  5. <div class="demension-detail-item">
  6. <p>{{item.name}}</p>
  7. <!-- 时间 -->
  8. <span v-if="item.valueType === 'date'">{{store.info[item.value] ? dayjs(store.info[item.value]).format('YYYY-MM-DD') : '-'}}</span>
  9. <!-- 多个数据 -->
  10. <div v-else-if="item.listVal">
  11. <!-- 多个数据里面数组有数据 -->
  12. <div v-if="isArrayCom(item)">
  13. <span v-for="(listItem,listIndex) in JSON.parse(store.info[item.listVal])"
  14. :key="listIndex" href="javascript:"
  15. class="block"
  16. :class="item.companyId && listItem[item.companyId] ? 'company' : ''"
  17. @click.stop="$goCompany(item,listItem)">
  18. {{listItem[item.value] || '-'}}
  19. </span>
  20. </div>
  21. <!-- 空数组 -->
  22. <div v-else>
  23. <span>-</span>
  24. </div>
  25. </div>
  26. <span v-else>
  27. {{store.info[item.value] || '-'}}{{ store.info[item.value] && item.valueType === 'w' ? '万元' : ''}}
  28. </span>
  29. </div>
  30. </div>
  31. </van-row>
  32. </div>
  33. </template>
  34. <script lang="ts" setup>
  35. import {computed, onMounted} from 'vue'
  36. import { useRoute } from 'vue-router'
  37. import { $goCompany } from '@/utils/utils'
  38. import dayjs from 'dayjs'
  39. import {useDemensionDetailStore} from '@/store/demensionDetail'
  40. import { ViewListInter } from '@/js-pages/types'
  41. const route = useRoute()
  42. const store = useDemensionDetailStore()
  43. store.getDemension(route.params.routerName[0])
  44. const isArrayCom = computed(() => {
  45. return (item:ViewListInter) => {
  46. if(item.listVal && store.info[item.listVal]) {
  47. const arr = JSON.parse(store.info[item.listVal])
  48. if(Array.isArray(arr) && arr.length) {
  49. return true
  50. }
  51. }
  52. return false
  53. }
  54. })
  55. onMounted(() => {
  56. document.title = store.selectDemension.title
  57. })
  58. </script>
  59. <style lang="scss" scoped>
  60. .demension-detail{
  61. padding: 15px 10px;
  62. .demension-detail-item{
  63. margin: 15px 0;
  64. p{
  65. color: #969696;
  66. }
  67. span{
  68. margin-top: 10px;
  69. }
  70. }
  71. .company{
  72. color: #088BFE;
  73. }
  74. }
  75. </style>