Kaynağa Gözat

Merge branch 'master' of http://139.224.213.4:3000/wenshuai/winhc-demension-vue3

huangxiaoming 2 yıl önce
ebeveyn
işleme
14cc674372
96 değiştirilmiş dosya ile 1734 ekleme ve 140 silme
  1. BIN
      src/assets/img/arrow.png
  2. BIN
      src/assets/img/bf.png
  3. BIN
      src/assets/img/bg-lzpg.png
  4. BIN
      src/assets/img/bgjatg-bg.png
  5. BIN
      src/assets/img/bz.png
  6. BIN
      src/assets/img/comLogo.png
  7. BIN
      src/assets/img/custom-empty-image.png
  8. BIN
      src/assets/img/darrow.png
  9. BIN
      src/assets/img/dh.png
  10. BIN
      src/assets/img/email.png
  11. BIN
      src/assets/img/go.png
  12. BIN
      src/assets/img/goRight.png
  13. BIN
      src/assets/img/gs.png
  14. BIN
      src/assets/img/jcIcon.png
  15. BIN
      src/assets/img/jk.png
  16. BIN
      src/assets/img/jt.png
  17. BIN
      src/assets/img/jtw.png
  18. BIN
      src/assets/img/jypg_bg.png
  19. BIN
      src/assets/img/logo.png
  20. BIN
      src/assets/img/logoShare.png
  21. BIN
      src/assets/img/ls.png
  22. BIN
      src/assets/img/mood-bg.png
  23. BIN
      src/assets/img/more.png
  24. BIN
      src/assets/img/nemail.png
  25. BIN
      src/assets/img/nlist.png
  26. BIN
      src/assets/img/nodata.png
  27. BIN
      src/assets/img/nshare.png
  28. BIN
      src/assets/img/ntop.png
  29. BIN
      src/assets/img/pdf.png
  30. BIN
      src/assets/img/phone.png
  31. BIN
      src/assets/img/point.png
  32. BIN
      src/assets/img/point_1.png
  33. BIN
      src/assets/img/point_slt.png
  34. BIN
      src/assets/img/sdown.png
  35. BIN
      src/assets/img/sdown_slt.png
  36. BIN
      src/assets/img/sf.png
  37. BIN
      src/assets/img/shaixuan.png
  38. BIN
      src/assets/img/share.png
  39. BIN
      src/assets/img/sharexian.png
  40. BIN
      src/assets/img/shouqi.png
  41. BIN
      src/assets/img/sifapaimai/address.png
  42. BIN
      src/assets/img/sifapaimai/bg.png
  43. BIN
      src/assets/img/sifapaimai/clock.png
  44. BIN
      src/assets/img/sifapaimai/det-1.png
  45. BIN
      src/assets/img/sifapaimai/det-2.png
  46. BIN
      src/assets/img/sifapaimai/det-3.png
  47. BIN
      src/assets/img/sifapaimai/dui.png
  48. BIN
      src/assets/img/sifapaimai/feiji.png
  49. BIN
      src/assets/img/sifapaimai/link.png
  50. BIN
      src/assets/img/sifapaimai/logo.png
  51. BIN
      src/assets/img/sifapaimai/right.png
  52. BIN
      src/assets/img/sifapaimai/web.png
  53. BIN
      src/assets/img/sifapaimai/wx.png
  54. BIN
      src/assets/img/sifapaimai/zhanwei.png
  55. BIN
      src/assets/img/sybg.png
  56. BIN
      src/assets/img/tip.png
  57. BIN
      src/assets/img/ts.png
  58. BIN
      src/assets/img/vip-logo.png
  59. BIN
      src/assets/img/vip.png
  60. BIN
      src/assets/img/vipQuan.png
  61. BIN
      src/assets/img/web.png
  62. BIN
      src/assets/img/xsjt.png
  63. BIN
      src/assets/img/xz.png
  64. BIN
      src/assets/img/yc.png
  65. BIN
      src/assets/img/yjt.png
  66. BIN
      src/assets/img/zq1.png
  67. BIN
      src/assets/img/zq2.png
  68. BIN
      src/assets/img/zq3.png
  69. BIN
      src/assets/img/zq4.png
  70. BIN
      src/assets/img/zq5.png
  71. 60 15
      src/components/CommonList.vue
  72. 42 0
      src/components/vant/CommonMenu.vue
  73. 3 3
      src/components/vant/CommonTab.vue
  74. 355 2
      src/js-pages/company-detail/FaLvFengXian/index.ts
  75. 2 2
      src/js-pages/company-detail/JiBenXinXi/SheBaoRenShu.vue
  76. 7 7
      src/js-pages/company-detail/JiBenXinXi/index.ts
  77. 137 0
      src/js-pages/company-detail/JianZhuXinXi/index.ts
  78. 42 0
      src/js-pages/company-detail/JingYingFengXian/index.ts
  79. 611 0
      src/js-pages/company-detail/QiYeRongZi/index.ts
  80. 5 1
      src/js-pages/company-detail/index.ts
  81. 24 4
      src/js-pages/types.ts
  82. 3 3
      src/layout/Layout.vue
  83. 3 2
      src/plugins/vant.ts
  84. 6 1
      src/router/index.ts
  85. 0 77
      src/store/demension.ts
  86. 43 0
      src/store/demensionDetail.ts
  87. 155 0
      src/store/demensionList.ts
  88. 3 0
      src/style/global.scss
  89. 2 0
      src/style/index.scss
  90. 75 0
      src/style/reset.scss
  91. 4 1
      src/types/store.ts
  92. 34 10
      src/utils/utils.ts
  93. 76 9
      src/views/demension/detail.vue
  94. 11 3
      src/views/demension/list.vue
  95. 26 0
      src/views/index.vue
  96. 5 0
      vite.config.ts

BIN
src/assets/img/arrow.png


BIN
src/assets/img/bf.png


BIN
src/assets/img/bg-lzpg.png


BIN
src/assets/img/bgjatg-bg.png


BIN
src/assets/img/bz.png


BIN
src/assets/img/comLogo.png


BIN
src/assets/img/custom-empty-image.png


BIN
src/assets/img/darrow.png


BIN
src/assets/img/dh.png


BIN
src/assets/img/email.png


BIN
src/assets/img/go.png


BIN
src/assets/img/goRight.png


BIN
src/assets/img/gs.png


BIN
src/assets/img/jcIcon.png


BIN
src/assets/img/jk.png


BIN
src/assets/img/jt.png


BIN
src/assets/img/jtw.png


BIN
src/assets/img/jypg_bg.png


BIN
src/assets/img/logo.png


BIN
src/assets/img/logoShare.png


BIN
src/assets/img/ls.png


BIN
src/assets/img/mood-bg.png


BIN
src/assets/img/more.png


BIN
src/assets/img/nemail.png


BIN
src/assets/img/nlist.png


BIN
src/assets/img/nodata.png


BIN
src/assets/img/nshare.png


BIN
src/assets/img/ntop.png


BIN
src/assets/img/pdf.png


BIN
src/assets/img/phone.png


BIN
src/assets/img/point.png


BIN
src/assets/img/point_1.png


BIN
src/assets/img/point_slt.png


BIN
src/assets/img/sdown.png


BIN
src/assets/img/sdown_slt.png


BIN
src/assets/img/sf.png


BIN
src/assets/img/shaixuan.png


BIN
src/assets/img/share.png


BIN
src/assets/img/sharexian.png


BIN
src/assets/img/shouqi.png


BIN
src/assets/img/sifapaimai/address.png


BIN
src/assets/img/sifapaimai/bg.png


BIN
src/assets/img/sifapaimai/clock.png


BIN
src/assets/img/sifapaimai/det-1.png


BIN
src/assets/img/sifapaimai/det-2.png


BIN
src/assets/img/sifapaimai/det-3.png


BIN
src/assets/img/sifapaimai/dui.png


BIN
src/assets/img/sifapaimai/feiji.png


BIN
src/assets/img/sifapaimai/link.png


BIN
src/assets/img/sifapaimai/logo.png


BIN
src/assets/img/sifapaimai/right.png


BIN
src/assets/img/sifapaimai/web.png


BIN
src/assets/img/sifapaimai/wx.png


BIN
src/assets/img/sifapaimai/zhanwei.png


BIN
src/assets/img/sybg.png


BIN
src/assets/img/tip.png


BIN
src/assets/img/ts.png


BIN
src/assets/img/vip-logo.png


BIN
src/assets/img/vip.png


BIN
src/assets/img/vipQuan.png


BIN
src/assets/img/web.png


BIN
src/assets/img/xsjt.png


BIN
src/assets/img/xz.png


BIN
src/assets/img/yc.png


BIN
src/assets/img/yjt.png


BIN
src/assets/img/zq1.png


BIN
src/assets/img/zq2.png


BIN
src/assets/img/zq3.png


BIN
src/assets/img/zq4.png


BIN
src/assets/img/zq5.png


+ 60 - 15
src/components/CommonList.vue

@@ -2,49 +2,66 @@
   <div class="common-list">
     <div class="fixed-num">共
       <span>{{store.totalNum}}</span>
-      条开庭公告</div>
+      条{{store.deleted ? '历史' : ''}}{{store.selectDemension.title}}</div>
     <van-list v-model:loading="loading" :finished="finished" :immediate-check="false" finished-text="没有更多了" @load="onLoad">
       <div v-for="(item,index) in store.dataList" :key="index" class="card" @click="goDetail(item)">
         <div class="list-container">
           <div v-for="obj in store.selectDemension.viewList" :key="obj.value" class="item">
 
+
+
+
             <!-- 标题 -->
             <p v-if="obj.name" class="name">{{obj.name}}:</p>
 
 
             <div>
+              <div v-if="obj.solt" @click="obj.customClick!(item)" v-html="item[obj.value] ? obj.solt : '-'"></div>
               <!-- 时间数据-->
-              <p v-if="obj.valueType === 'date'">{{dayjs(item[obj.value]).format('YYYY-MM-DD')}}</p>
+              <p v-else-if="obj.valueType === 'date'">{{item[obj.value] ? dayjs(item[obj.value]).format('YYYY-MM-DD') : '-'}}</p>
 
               <!-- 多个数据 -->
               <div v-else-if="obj.listVal">
-                <a v-for="(listItem,listIndex) in item[obj.listVal]"
-                   :key="listIndex" href="javascript:"
-                   class="block"
-                   @click.stop="$goCompany(listItem[obj.companyName as string],listItem[obj.companyId as string])">
-                  {{listItem[obj.value]}}
-                </a>
+
+                <!-- 多个数据里面数组有数据 -->
+                <div v-if="Array.isArray(item[obj.listVal]) && item[obj.listVal][0]">
+                  <p v-for="(listItem,listIndex) in item[obj.listVal]"
+                     :key="listIndex" href="javascript:"
+                     class="block"
+                     style="width: fit-content;"
+                     :class="obj.companyId && listItem[obj.companyId] ? 'company' : ''"
+                     @click.stop="$goCompany(obj,listItem)">
+                    {{listItem[obj.value || '-']}}
+                  </p>
+                </div>
+                <!-- 空数组 -->
+                <p v-else>-</p>
               </div>
 
-              <p v-else :class="obj.valueType === 'title' ? 'title' : ''">{{item[obj.value]}}</p>
+              <p v-else :class="[obj.valueType === 'title' ? 'title' : '',obj.companyId ? 'company' : '']"
+                 @click="$goCompany(obj,item)">
+                {{item[obj.value] || '-'}}{{ item[obj.value] && obj.valueType === 'w' ? '万元' : ''}}
+              </p>
             </div>
 
 
 
           </div>
         </div>
-        <van-icon v-if="store.selectDemension.hasDetail" name="arrow" color="#969696" class="arrow" />
+        <van-icon v-if="store.selectDemension.detailList" name="arrow" color="#969696" class="arrow" />
       </div>
     </van-list>
   </div>
 </template>
 
 <script lang="ts" setup>
-  import { useDemensionStore } from '@/store/demension'
+  import { useDemensionListStore } from '@/store/demensionList'
   import { $goCompany } from '@/utils/utils'
   import dayjs from 'dayjs'
   import { ref, watch } from 'vue'
-  const store = useDemensionStore()
+  import { useRouter } from 'vue-router'
+  const router = useRouter()
+  const store = useDemensionListStore()
   const loading = ref(false)
   const finished = ref(false)
 
@@ -63,9 +80,17 @@
     }
   }
 
-  const goDetail = (item:{id:string}) => {
-    console.log(`跳转详情:${item.id}`)
-
+  const goDetail = (item:{id:string,companyName:string}) => {
+    if(store.selectDemension.detailList) {
+      router.push({
+        path: store.selectDemension.routing + 'Det',
+        query:{
+          id:item.id,
+          companyName:item.companyName
+        }
+      })
+      console.log(`跳转详情:${item.id}`)
+    }
   }
 
   watch(() => store.dataList.length,(newVal) => {
@@ -77,6 +102,7 @@
 </script>
 
 <style lang="scss" scoped>
+
 .card{
   width: 100%;
   background: #fff;
@@ -88,6 +114,18 @@
     width: inherit;
     .item{
       display: flex;
+      :deep().source-pdf{
+        display: flex;
+        align-items: center;
+        span{
+          color: #088BFE;
+        }
+        img{
+          width: 16px;
+          padding-left: 6px;
+        }
+      }
+
       // align-items: center;
       .title{
         font-weight: bold;
@@ -106,11 +144,18 @@
         color: #088BFE;
         font-size: 15px;
       }
+      .company{
+        color: #088BFE;
+      }
+    }
+    p,a,div{
+      font-size: 15px;
     }
     .arrow{
       // align-items: center;
       // display: flex;
     }
+
   }
 
 }

+ 42 - 0
src/components/vant/CommonMenu.vue

@@ -0,0 +1,42 @@
+<template>
+
+  <div class="fixed w-full z-10">
+
+    <van-dropdown-menu active-color="#1989fa">
+      <van-dropdown-item
+        v-for="(item,index) in store.selectDemension.menuList"
+        :key="index"
+        v-model="item.value"
+        :options="item.list"
+        @change="tabChange(item)"
+      >
+        <!--                        <div slot="title">{{lxType?lxType:'身份筛选'}}</div>-->
+      </van-dropdown-item>
+    </van-dropdown-menu>
+
+  </div>
+  <van-dropdown-menu>
+  </van-dropdown-menu>
+</template>
+
+<script lang="ts" setup>
+  import { useDemensionListStore } from '@/store/demensionList'
+  import { onMounted, reactive } from 'vue'
+
+  const store = useDemensionListStore()
+  const state = reactive<{params:any}>({
+    params:{}
+  })
+  onMounted(() => {
+
+  })
+  const tabChange = (item: { paramsValue: string; value: string; }) => {
+    state.params[item.paramsValue] = item.value
+    store.clearState()
+    store.getList(state.params)
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 3 - 3
src/components/vant/CommonTab.vue

@@ -14,7 +14,7 @@
 
 <script lang="ts" setup>
   import { onMounted, reactive } from 'vue'
-  import { useDemensionStore } from '@/store/demension'
+  import { useDemensionListStore } from '@/store/demensionList'
 
   interface tabItem {
     name:string,
@@ -31,7 +31,7 @@
     active:0
   })
 
-  const store = useDemensionStore()
+  const store = useDemensionListStore()
 
   onMounted(() => {
     getTabs()
@@ -63,6 +63,6 @@
 
 </script>
 
-<style lang="less" scoped>
+<style lang="scss" scoped>
 
 </style>

+ 355 - 2
src/js-pages/company-detail/FaLvFengXian/index.ts

@@ -7,7 +7,37 @@ export const FaLvFengXian: DemensionPagesInter = {
       routing: 'KaiTingGongGao',
       title: '开庭公告',
       tabs: 'deleted',
-      hasDetail: true,
+      menuList: [
+        {
+          paramsValue: 'identity',
+          value: '',   // v-model绑定的值
+          list: [
+            {
+              text: '身份不限',
+              value: ''
+            },
+            {
+              text: '原告/公诉人/上诉人/申请人',
+              value: '1'
+            },
+            {
+              text: '被告/被上诉人/被申请人',
+              value: '2'
+            }
+          ]
+        },
+        {
+          paramsValue: 'caseReason',
+          value: '',   // v-model绑定的值
+          paramsId: 'case_reason',
+          list: [
+            {
+              text: '案由不限',
+              value: ''
+            }
+          ]
+        }
+      ],
       viewList: [
         {
           value: 'caseReason',
@@ -39,20 +69,343 @@ export const FaLvFengXian: DemensionPagesInter = {
       ]
     },
     {
+      code: 'dishonesty',
+      routing: 'ShiXinQingKuang',
+      title: '失信信息',
+      tabs: 'deleted',
+      menuList: [
+        {
+          paramsValue: 'performance',
+          value: '',   // v-model绑定的值
+          list: [
+            {
+              text: '履行情况不限',
+              value: ''
+            },
+            {
+              text: '全部未履行',
+              value: '全部未履行'
+            },
+            {
+              text: '部分未履行',
+              value: '部分未履行'
+            }
+          ]
+        },
+        {
+          paramsValue: 'year',
+          value: '',   // v-model绑定的值
+          paramsId: 'pub_date',
+          list: [
+            {
+              text: '年份不限',
+              value: ''
+            }
+          ]
+        }
+      ],
+      viewList: [
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '执行法院',
+          value: 'court'
+        },
+        {
+          name: '执行依据文号',
+          value: 'gistDd'
+        },
+        {
+          name: '履行情况',
+          value: 'performance'
+        },
+        {
+          name: '立案日期',
+          value: 'regTime',
+          valueType: 'date'
+        },
+        {
+          name: '发布日期',
+          value: 'pubDate',
+          valueType: 'date'
+        }
+      ]
+    },
+    {
       code: 'case_filing',
       routing: 'LiAnXinXi',
       title: '立案信息',
+      detailList: [
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '法院',
+          value: 'court'
+        },
+        {
+          name: '承办部门',
+          value: 'department'
+        },
+        {
+          name: '承办法官',
+          value: 'judge'
+        },
+        {
+          name: '法官助理',
+          value: 'assistant'
+        },
+        {
+          name: '立案时间',
+          value: 'filingDate',
+          valueType: 'date'
+        },
+        {
+          name: '开庭时间',
+          value: 'startTime',
+          valueType: 'date'
+        },
+        {
+          name: '结案时间',
+          value: 'closeDate',
+          valueType: 'date'
+        },
+        {
+          name: '案件状态',
+          value: 'caseStatus'
+        },
+        {
+          name: '案由',
+          value: 'caseReason'
+        },
+        {
+          name: '案件类型',
+          value: 'caseType'
+        },
+        {
+          name: '原告/上诉人/申请人/公诉人',
+          listVal: 'plaintiffInfo',
+          value: 'name',
+          companyId: 'litigant_id'
+        },
+        {
+          name: '被告人/被告/被上诉人/被申请人',
+          listVal: 'defendantInfo',
+          value: 'name',
+          companyId: 'litigant_id'
+        }
+      ],
       viewList: [
         {
           name: '案号',
           value: 'caseNo'
         },
         {
+          name: '上诉人/原告',
+          listVal: 'plaintiffInfo',
+          value: 'name',
+          companyId: 'litigantId',
+          companyName: 'name'
+        },
+        {
+          name: '被上诉人/被告',
+          listVal: 'defendantInfo',
+          value: 'name',
+          companyId: 'litigantId',
+          companyName: 'name'
+        },
+        {
+          name: '立案日期',
+          value: 'filingDate',
+          valueType: 'date'
+        }
+      ]
+    },
+    {
+      code: 'send_announcement',
+      routing: 'SongDaGongGao',
+      tabs: 'deleted',
+      title: '送达公告',
+      menuList: [
+        {
+          paramsValue: 'identity',
+          value: '',   // v-model绑定的值
+          list: [
+            {
+              text: '身份不限',
+              value: ''
+            },
+            {
+              text: '原告/公诉人/上诉人/申请人',
+              value: '1'
+            },
+            {
+              text: '被告/被上诉人/被申请人',
+              value: '2'
+            }
+          ]
+        },
+        {
+          paramsValue: 'year',
+          value: '',   // v-model绑定的值
+          paramsId: 'startYear',
+          list: [
+            {
+              text: '年份不限',
+              value: ''
+            }
+          ]
+        }
+      ],
+      detailList: [
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '法院',
+          value: 'court'
+        },
+        {
+          name: '承办部门',
+          value: 'department'
+        },
+        {
+          name: '承办法官',
+          value: 'judge'
+        },
+        {
+          name: '法官助理',
+          value: 'assistant'
+        },
+        {
+          name: '立案时间',
+          value: 'filingDate',
+          valueType: 'date'
+        },
+        {
           name: '开庭时间',
-          value: 'startDate',
+          value: 'startTime',
+          valueType: 'date'
+        },
+        {
+          name: '结案时间',
+          value: 'closeDate',
+          valueType: 'date'
+        },
+        {
+          name: '案件状态',
+          value: 'caseStatus'
+        },
+        {
+          name: '案由',
+          value: 'caseReason'
+        },
+        {
+          name: '案件类型',
+          value: 'caseType'
+        },
+        {
+          name: '原告/上诉人/申请人/公诉人',
+          listVal: 'plaintiffInfo',
+          value: 'name',
+          companyId: 'litigant_id'
+        },
+        {
+          name: '被告人/被告/被上诉人/被申请人',
+          listVal: 'defendantInfo',
+          value: 'name',
+          companyId: 'litigant_id'
+        }
+      ],
+      viewList: [
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '上诉人/原告',
+          listVal: 'plaintiffInfo',
+          value: 'name',
+          companyId: 'litigantId',
+          companyName: 'name'
+        },
+        {
+          name: '被上诉人/被告',
+          listVal: 'defendantInfo',
+          value: 'name',
+          companyId: 'litigantId',
+          companyName: 'name'
+        },
+        {
+          name: '立案日期',
+          value: 'filingDate',
           valueType: 'date'
         }
       ]
+    },
+    {
+      code: 'judicial_auction',
+      routing: 'SiFaPaiMai',
+      title: '司法拍卖',
+      viewList: [
+        {
+          value: 'auctionTitle',
+          valueType: 'title'
+        },
+        {
+          name: '起拍价(元)',
+          value: 'initialPrice'
+        },
+        {
+          name: '拍卖时间',
+          value: 'startTime',
+          valueType: 'date'
+        },
+        {
+          name: '报名人数',
+          value: 'applyCount'
+        }
+      ]
+    },
+    {
+      code: 'evaluation_result',
+      routing: 'XunJiaPingGu',
+      title: '询价评估',
+      viewList: [
+        {
+          name: '标的物所有人',
+          value: 'name'
+        },
+        {
+          name: '询价结果(元)',
+          value: 'money'
+        },
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '法院名称',
+          value: 'courtName'
+        },
+        {
+          name: '发布日期',
+          value: 'publishTime',
+          valueType: 'date'
+        },
+        {
+          name: '财产类型',
+          value: 'assetType'
+        },
+        {
+          name: '确定参考价方式',
+          value: 'referencePrice'
+        }
+      ]
     }
   ]
 }

+ 2 - 2
src/js-pages/company-detail/JiBenXinXi/SheBaoRenShu.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: 文帅
  * @Date: 2022-03-10 09:35:39
- * @LastEditTime: 2022-03-10 09:35:42
+ * @LastEditTime: 2022-03-31 15:19:10
  * @LastEditors: 文帅
  * @Description:
 -->
@@ -22,5 +22,5 @@
   })
 </script>
 <!--
-<style lang="less" scoped>
+<style lang="scss" scoped>
 </style> -->

+ 7 - 7
src/js-pages/company-detail/JiBenXinXi/index.ts

@@ -1,13 +1,13 @@
 import { DemensionPagesInter } from './../../types'
-import SheBaoRenShuVue from './SheBaoRenShu.vue'
+// import SheBaoRenShuVue from './SheBaoRenShu.vue'
 export const JiBenXinXi: DemensionPagesInter = {
   projectName: '基本信息',
   list: [
-    {
-      code: 'open_announcement',
-      routing: 'SheBaoRenShu',
-      title: '社保人数',
-      customRender: SheBaoRenShuVue
-    }
+    // {
+    //   code: 'open_announcement',
+    //   routing: 'SheBaoRenShu',
+    //   title: '社保人数',
+    //   customRender: SheBaoRenShuVue
+    // }
   ]
 }

+ 137 - 0
src/js-pages/company-detail/JianZhuXinXi/index.ts

@@ -0,0 +1,137 @@
+import { DemensionPagesInter } from './../../types'
+export const JianZhuXinXi: DemensionPagesInter = {
+  projectName: '建筑信息',
+  list: [
+    {
+      code: 'construction_qualification',
+      routing: 'JianZhuZiZhi',
+      title: '建筑资质',
+      viewList: [
+        {
+          name: '资质名称',
+          value: 'certName'
+        },
+        {
+          name: '证书单位名称',
+          value: 'companyName',
+          companyId: 'companyId',
+          companyName: 'companyName'
+        },
+        {
+          name: '证书编号',
+          value: 'certId'
+        },
+        {
+          name: '发证机关',
+          value: 'organName'
+        },
+        {
+          name: '发证日期',
+          value: 'organDate',
+          valueType: 'date'
+        },
+        {
+          name: '有效期至',
+          value: 'endDate',
+          valueType: 'date'
+        }
+      ]
+    },
+    {
+      code: 'construction_person',
+      routing: 'JianZhuRenYuan',
+      title: '建筑人员',
+      viewList: [
+        {
+          name: '姓名',
+          value: 'personName'
+        },
+        {
+          name: '注册类别',
+          value: 'regtypeName'
+        },
+        {
+          name: '注册号(执业印章号)',
+          value: 'sealCode'
+        },
+        {
+          name: '注册专业',
+          value: 'zczyName'
+        },
+        {
+          name: '有效期',
+          value: 'regEdate',
+          valueType: 'date'
+        },
+        {
+          name: '证件号码',
+          value: 'idCard'
+        }
+      ]
+    },
+    {
+      code: 'construction_project',
+      routing: 'JianZhuXiangMu',
+      title: '建筑项目',
+      detailList: [
+        {
+          name: '项目名称',
+          value: 'prjName'
+        },
+        {
+          name: '建设单位',
+          value: 'buildCorpName'
+        },
+        {
+          name: '项目编号',
+          value: 'prjNum'
+        },
+        {
+          name: '所在区划',
+          value: 'countyNum'
+        },
+        {
+          name: '项目类别',
+          value: 'prjType'
+        },
+        {
+          name: '立项级别',
+          value: 'approvalLevel'
+        },
+        {
+          name: '总投资',
+          value: 'money',
+          valueType: 'w'
+        },
+        {
+          name: '总面积',
+          value: 'totalArea'
+        },
+        {
+          name: '立项文号',
+          value: 'approvalNumber'
+        }
+      ],
+      viewList: [
+        {
+          name: '建筑名称',
+          value: 'prjName'
+        },
+        {
+          name: '项目总投资',
+          value: 'money',
+          valueType: 'w'
+        },
+        {
+          name: '项目类别',
+          value: 'prjType'
+        },
+        {
+          name: '建设单位',
+          value: 'buildCorpName'
+        }
+      ]
+    }
+
+  ]
+}

+ 42 - 0
src/js-pages/company-detail/JingYingFengXian/index.ts

@@ -0,0 +1,42 @@
+import { DemensionPagesInter } from './../../types'
+export const JingYingFengXian: DemensionPagesInter = {
+  projectName: '经营风险',
+  list: [
+    {
+      code: 'penalties',
+      routing: 'XingZhengChuFa',
+      title: '行政处罚',
+      tabs: 'deleted',
+      detailList: [
+        {
+          name: '违法类型',
+          value: 'type'
+        }
+      ],
+      viewList: [
+        {
+          value: 'punishNumber',
+          valueType: 'title'
+        },
+        {
+          name: '违法类型',
+          value: 'type'
+        },
+        {
+          name: '决定日期',
+          value: 'decisionDate',
+          valueType: 'date'
+        },
+        {
+          name: '公示日期',
+          value: 'publishDate',
+          valueType: 'date'
+        },
+        {
+          name: '决定机关',
+          value: 'departmentName'
+        }
+      ]
+    }
+  ]
+}

+ 611 - 0
src/js-pages/company-detail/QiYeRongZi/index.ts

@@ -0,0 +1,611 @@
+import { DemensionPagesInter } from './../../types'
+import pdfImg from '@/assets/img/pdf.png'
+import { $goOuterUrl } from '@/utils/utils'
+export const QiYeRongZi: DemensionPagesInter = {
+  projectName: '法律风险',
+  list: [
+    {
+      code: 'accounts_receivablae',
+      routing: 'YingShouZhangKuanRongZi',
+      title: '应收账款融资',
+      hasDetail: true,
+      detailList: [
+        {
+          name: '公告日期',
+          value: 'noticeDate',
+          valueType: 'date'
+        },
+        {
+          name: '质权人信息',
+          listVal: 'pledgeeInfo',
+          value: 'pledgee',
+          companyId: 'pledgeeId',
+          companyName: 'pledgee'
+        },
+        {
+          name: '受让人',
+          listVal: 'assigneeInfo',
+          value: 'assignee',
+          companyId: 'assignee_id',
+          companyName: 'assignee'
+        },
+        {
+          name: '融资金额',
+          value: 'financeOrig',
+          valueType: 'w'
+        },
+        {
+          name: '类型',
+          value: 'financeType'
+        },
+        {
+          name: '期限',
+          value: 'deadline'
+        },
+        {
+          name: '起始日期',
+          value: 'startDate',
+          valueType: 'date'
+        },
+        {
+          name: '截止日期',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '财产价值',
+          value: 'pledgeAsset',
+          valueType: 'w'
+        },
+        {
+          name: '质押/转让财产描述',
+          value: 'pledgeAssetDescri'
+        }
+
+      ],
+      viewList: [
+        {
+          name: '公告日期',
+          value: 'noticeDate',
+          valueType: 'date'
+        },
+        {
+          name: '质权人信息',
+          listVal: 'pledgeeInfo',
+          value: 'pledgee',
+          companyId: 'pledgeeId',
+          companyName: 'pledgee'
+        },
+        {
+          name: '受让人',
+          listVal: 'assigneeInfo',
+          value: 'assignee',
+          companyId: 'assigneeId',
+          companyName: 'assignee'
+        },
+        {
+          name: '融资金额',
+          value: 'financeOrig',
+          valueType: 'w'
+        },
+        {
+          name: '类型',
+          value: 'financeType'
+        },
+        {
+          name: '期限',
+          value: 'deadLine',
+          valueType: 'date'
+        }
+      ]
+    },
+    {
+      code: 'dcm_registration_limit',
+      routing: 'DCMZhuCeEDu',
+      title: 'DCM注册额度',
+      viewList: [
+        {
+          name: 'DCM分类',
+          value: 'bondLassify'
+        },
+        {
+          name: '初始注册额度',
+          value: 'initRegist',
+          valueType: 'w'
+        },
+        {
+          name: '累计使用',
+          value: 'sumissueScale',
+          valueType: 'w'
+        },
+        {
+          name: '已使用',
+          value: 'sumoccLimit',
+          valueType: 'w'
+        },
+        {
+          name: '有效起始日',
+          value: 'startDate',
+          valueType: 'date'
+        },
+        {
+          name: '注册文件号',
+          value: 'fileno'
+        },
+        {
+          name: '主承销商信息',
+          listVal: 'underwriterInfo',
+          value: 'companyName',
+          companyId: 'companyId',
+          companyName: 'companyName'
+        }
+      ]
+    },
+    {
+      code: 'bond_financing',
+      routing: 'ZhaiQuanRongZi',
+      title: '债券融资',
+      viewList: [
+        {
+          name: '债券简称',
+          value: 'abbreviation'
+        },
+        {
+          name: '债券简称编号',
+          value: 'symbol'
+        },
+        {
+          name: '债券类型',
+          value: 'typedesc_1'
+        },
+        {
+          name: '债券余额',
+          value: 'issuedValue',
+          valueType: 'w'
+        },
+        {
+          name: '票面利率(%)',
+          value: 'coupon'
+        },
+        {
+          name: '到期日',
+          value: 'maturityDate',
+          valueType: 'date'
+        },
+        {
+          name: '开始日',
+          value: 'beginDate',
+          valueType: 'date'
+        }
+      ]
+    },
+    {
+      code: 'overseas_bond_financing',
+      routing: 'JingWaiZhaiQuanRongZi',
+      title: '境外债券融资',
+      hasDetail: true,
+      detailList: [
+        {
+          name: '债券简称',
+          value: 'bondSimpleName'
+        },
+        {
+          name: '余额',
+          value: 'teminalAmount',
+          valueType: 'w'
+        },
+        {
+          name: '发行规模',
+          value: 'issueVolume',
+          valueType: 'w'
+        },
+        {
+          name: '票面利率(%)',
+          value: 'couponsWill'
+        },
+        {
+          name: '剩余年限',
+          value: 'residualMaturity'
+        },
+        {
+          name: '面值',
+          value: 'faceValue'
+        },
+        {
+          name: '币种',
+          value: 'currency'
+        },
+        {
+          name: '发行人',
+          value: 'issuerCnname'
+        },
+        {
+          name: '公司类型',
+          value: 'companyType'
+        },
+        {
+          name: '币种',
+          value: 'currency'
+        },
+        {
+          name: '主要上市地区',
+          value: 'majorListPlace'
+        },
+        {
+          name: '债券全称',
+          value: 'bondName'
+        },
+        {
+          name: '债务类型',
+          value: 'bondType'
+        },
+        {
+          name: '发行日',
+          value: 'issueDate'
+        },
+        {
+          name: '到期日',
+          value: 'expiringDate'
+        },
+        {
+          name: '计息方式',
+          value: 'benchmark'
+        },
+        {
+          name: '最新票息',
+          value: 'lastestCoupon'
+        },
+        {
+          name: '首个支付日',
+          value: 'firstPaymentDay'
+        },
+        {
+          name: 'ISIN',
+          value: 'isin'
+        },
+        {
+          name: 'Common code',
+          value: 'commonCode'
+        },
+        {
+          name: '牵头经办人',
+          value: 'leadManager'
+        },
+        {
+          name: '所属集团',
+          value: 'issuerParentFirm'
+        },
+        {
+          name: '国家/地区',
+          value: 'countriesAndRegions'
+        },
+        {
+          name: '发行价',
+          value: 'issuePrice'
+        },
+        {
+          name: '起息日',
+          value: 'valueDate'
+        },
+        {
+          name: '息票类型',
+          value: 'typeOfCoupon'
+        },
+        {
+          name: '付息频率',
+          value: 'frequency'
+        },
+        {
+          name: '担保',
+          value: 'guarantee'
+        },
+        {
+          name: '托管场所',
+          value: 'custodianNstitution'
+        },
+        {
+          name: 'CUSIP NUMber',
+          value: 'cusipNumber'
+        },
+        {
+          name: 'Fitch',
+          value: 'fitch'
+        }
+
+      ],
+      viewList: [
+        {
+          name: '债券简称',
+          value: 'bondSimpleName'
+        },
+        {
+          name: '余额',
+          value: 'teminalAmount',
+          valueType: 'w'
+        },
+        {
+          name: '发行规模',
+          value: 'issueVolume',
+          valueType: 'w'
+        },
+        {
+          name: '票面利率(%)',
+          value: 'couponsWill'
+        },
+        {
+          name: '剩余年限',
+          value: 'residualMaturity'
+        },
+        {
+          name: '面值',
+          value: 'faceValue'
+        },
+        {
+          name: '币种',
+          value: 'currency'
+        }
+      ]
+    },
+    {
+      code: 'trust_financing',
+      routing: 'XinTuoRongZi',
+      title: '信托融资',
+      viewList: [
+        {
+          name: '公告日期',
+          value: 'noticeDate',
+          valueType: 'date'
+        },
+        {
+          name: '信托公司',
+          listVal: 'consigneeNameList',
+          value: 'companyName',
+          companyId: 'companyId',
+          companyName: 'companyName'
+        },
+        {
+          name: '担保人',
+          listVal: 'guarantorNameList',
+          value: 'companyName',
+          companyId: 'companyId'
+        },
+        {
+          name: '融资金额',
+          value: 'financeOrig',
+          valueType: 'w'
+        },
+        {
+          name: '利率(%)',
+          value: 'annualRate'
+        },
+        {
+          name: '期限',
+          value: 'deadline'
+        },
+        {
+          name: '起始日期',
+          value: 'startDate',
+          valueType: 'date'
+        },
+        {
+          name: '截止日期',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '来源',
+          value: 'fileUrl',
+          solt: `
+            <div class="source-pdf">
+              <span>说明书</span>
+              <img src="${pdfImg}"/>
+            </div>`,
+          customClick: (item: { fileUrl: string }) => {
+            $goOuterUrl(item.fileUrl)
+          }
+        }
+      ]
+    },
+    {
+      code: 'bank_loan',
+      routing: 'YingHangJieKuan',
+      title: '银行借款',
+      viewList: [
+        {
+          name: '公告日期',
+          value: 'declareDate',
+          valueType: 'date'
+        },
+        {
+          name: '银行',
+          value: 'creditor'
+        },
+        {
+          name: '融资额',
+          value: 'amountFinanced',
+          valueType: 'w'
+        },
+        {
+          name: '年利率(%)',
+          value: 'annualInterestRate'
+        },
+        {
+          name: '期限',
+          value: 'expireDate'
+        },
+        {
+          name: '起始日期',
+          value: 'startDate',
+          valueType: 'date'
+        },
+        {
+          name: '截止日期',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '来源',
+          value: 'fileUrl',
+          solt: `
+            <div class="source-pdf">
+              <span>说明书</span>
+              <img src="${pdfImg}"/>
+            </div>`,
+          customClick: (item: { fileUrl: string }) => {
+            $goOuterUrl(item.fileUrl)
+          }
+        }
+      ]
+    },
+    {
+      code: 'credit_line',
+      routing: 'ShouXinEDu',
+      title: '授信额度',
+      viewList: [
+        {
+          name: '截止日',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '披露日期',
+          value: 'discloureDate',
+          valueType: 'date'
+        },
+        {
+          name: '授信额度',
+          value: 'creditLine',
+          valueType: 'w'
+        },
+        {
+          name: '已使用',
+          value: 'creditLineUsed',
+          valueType: 'w'
+        },
+        {
+          name: '未使用',
+          value: 'creditLineUnused',
+          valueType: 'w'
+        },
+        {
+          name: '授信家数',
+          value: 'creditEntityCount'
+        }
+      ]
+    },
+    {
+      code: 'other_financing',
+      routing: 'QiTaRongZi',
+      title: '其他融资',
+      viewList: [
+        {
+          name: '企业名称',
+          value: 'companyName',
+          companyId: 'companyId'
+        },
+        {
+          name: '披露日期',
+          value: 'declareDate',
+          valueType: 'date'
+        },
+        {
+          name: '融资类型',
+          value: 'financingType'
+        },
+        {
+          name: '融资额',
+          value: 'financingAmount',
+          valueType: 'w'
+        },
+        {
+          name: '利率(%)',
+          value: 'interestRate'
+        },
+        {
+          name: '债权人信息',
+          listVal: 'clientInfo',
+          value: 'companyName',
+          companyId: 'companyId'
+        },
+        {
+          name: '起始日期',
+          value: 'beginDate',
+          valueType: 'date'
+        },
+        {
+          name: '截止日期',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '来源',
+          value: 'fileUrl',
+          solt: `
+            <div class="source-pdf">
+              <span>说明书</span>
+              <img src="${pdfImg}"/>
+            </div>`,
+          customClick: (item: { fileUrl: string }) => {
+            $goOuterUrl(item.fileUrl)
+          }
+        }
+      ]
+    },
+    {
+      code: 'lease_financing',
+      routing: 'ZuLinRongZi',
+      title: '租赁融资',
+      viewList: [
+        {
+          name: '公告日期',
+          value: 'noticeDate',
+          valueType: 'date'
+        },
+        {
+          name: '出租人',
+          value: 'companyName',
+          listVal: 'leaserInfo',
+          companyId: 'companyId'
+        },
+        {
+          name: '担保人',
+          value: 'companyName',
+          listVal: 'guaranteelabel',
+          companyId: 'companyId'
+        },
+        {
+          name: '租金总额',
+          value: 'finance',
+          valueType: 'w'
+        },
+        {
+          name: '财产价值',
+          value: 'equity',
+          valueType: 'w'
+        },
+        {
+          name: '利率(%)',
+          value: 'rate'
+        },
+        {
+          name: '期限',
+          value: 'deadline'
+        },
+        {
+          name: '起始日期',
+          value: 'startDate',
+          valueType: 'date'
+        },
+        {
+          name: '截止日期',
+          value: 'endDate',
+          valueType: 'date'
+        },
+        {
+          name: '方式',
+          value: 'leasingMethod'
+        }
+      ]
+    }
+  ]
+}

+ 5 - 1
src/js-pages/company-detail/index.ts

@@ -1,11 +1,15 @@
+import { JingYingFengXian } from './JingYingFengXian/index'
+import { QiYeRongZi } from './QiYeRongZi/index'
 import { JiBenXinXi } from './JiBenXinXi/index'
 import { TotalDemensionInter } from './../types'
 import { FaLvFengXian } from './FaLvFengXian/index'
+import { JianZhuXinXi } from './JianZhuXinXi/index'
+
 const companyDetail: TotalDemensionInter = {
   companyName: '企业详情',
   list: []
 }
 
-companyDetail.list.push(FaLvFengXian, JiBenXinXi)
+companyDetail.list.push(FaLvFengXian, JiBenXinXi, JianZhuXinXi, QiYeRongZi, JingYingFengXian)
 
 export default companyDetail

+ 24 - 4
src/js-pages/types.ts

@@ -15,9 +15,11 @@ export interface DemensionPagesListInter {
   title: string,
   //是否有详情页
   hasDetail?: boolean
+  detailList?: ViewListInter[],
   viewList?: ViewListInter[],
+  menuList?: MenuListInter[],  //tab下面的下拉菜单列表
   tabs?: 'deleted' | [],  //是否有tabs,历史列表deleted,普通tab传数组
-  customRender?: any
+  customRender?: any,
 }
 
 
@@ -25,12 +27,30 @@ export interface DemensionPagesListInter {
 export interface ViewListInter {
   name?: string,
   value: string,
-  //类型 时间、标题
-  valueType?: 'date' | 'title',
+  //类型 时间、标题、万元
+  valueType?: 'date' | 'title' | 'w',
   //数组字段名
   listVal?: string,
   //需要跳转企业详情的ID和Name
   companyId?: string,
-  companyName?: string
+  companyName?: string,
+  //自定义HTML元素
+  solt?: string,
+  customClick?: Function
 }
 
+export interface MenuListInter {
+  /**
+   * 提交给后端的字段名
+   */
+  paramsValue: string,
+  /**
+   * v-model绑定的值
+   */
+  value: string,
+  /**
+   * 对应后端的ID匹配数组
+   */
+  paramsId?: string
+  list: { text: string, value: string }[]
+}

+ 3 - 3
src/layout/Layout.vue

@@ -7,16 +7,16 @@
 </template>
 <script setup lang="ts">
 
-  import { useDemensionStore } from '@/store/demension'
+  import { useDemensionListStore } from '@/store/demensionList'
   import { onMounted, watch } from 'vue'
   import { useRoute } from 'vue-router'
-  const store = useDemensionStore()
+  const store = useDemensionListStore()
   const route = useRoute()
 
   watch(() => route.path,() => {
     if(!store.entityId) {
       store.entityId = route.query.companyId  || '88f04cbfab150fe2bccdeec3aea32750'
-      store.entityName = route.query.companyName  || '乐视网信息技术(北京)股份有限公司'
+      store.entityName = route.query.companyName  || '广州天力建筑工程有限公司'
     }
   })
 

+ 3 - 2
src/plugins/vant.ts

@@ -1,4 +1,4 @@
-import { Button, Row, Tab, Tabs, List, Icon } from 'vant'
+import { Button, Row, Tab, Tabs, List, Icon, DropdownMenu, DropdownItem } from 'vant'
 import { App } from 'vue'
 
 export const useVant = (app: App<Element>) => {
@@ -8,5 +8,6 @@ export const useVant = (app: App<Element>) => {
   app.use(Tabs)
   app.use(List)
   app.use(Icon)
-
+  app.use(DropdownMenu)
+  app.use(DropdownItem)
 }

+ 6 - 1
src/router/index.ts

@@ -5,13 +5,18 @@ const routes: Array<RouteRecordRaw> = [
     name: 'demension',
     component: () => import('@/views/demension/list.vue')
   },
+  {
+    path: '/',
+    name: 'index',
+    component: () => import('@/views/index.vue')
+  },
   // {
   //   path: '/demension',
   //   name: 'demension',
   //   component: () => import('@/views/demension/list.vue')
   // },
   {
-    path: '/det',
+    path: '/:routerName*Det',
     name: 'detail',
     component: () => import('@/views/demension/detail.vue')
   }

+ 0 - 77
src/store/demension.ts

@@ -1,77 +0,0 @@
-import { DemensionStoreInter } from './../types/store'
-import { DemensionPagesListInter, DemensionPagesInter } from '@/js-pages/types'
-import { defineStore } from 'pinia'
-import pagesArr from '@/js-pages'
-import $axios from '@/api'
-import { useRoute } from 'vue-router'
-
-export const useDemensionStore = defineStore({
-  id: 'process',
-  state: () => {
-    return <DemensionStoreInter>{
-      pageNum: 1,
-      pageSize: 10,
-      deleted: 0,
-      entityType: 2,
-      entityName: '',
-      entityId: '',
-      totalNum: 0,
-      totalPage: 0,
-      selectDemension: {},
-      dataList: [],
-      tabInfo: {
-        totalNumList: [0, 0]
-      }
-    }
-  },
-  actions: {
-    getDemension() {
-      const route = useRoute()
-      //遍历获取所有维度列表
-      const allDemensionArr = [] as DemensionPagesListInter[]
-      const demensionArr = (arr: any[]): DemensionPagesInter[] => {
-        return arr.reduce((total, item: any) => item.list ? demensionArr(item.list) : allDemensionArr.push(item), [])
-      }
-      demensionArr(pagesArr)
-
-      //根据路由名称匹配对应维度
-      this.selectDemension = allDemensionArr.find(item => route.path === `/${item.routing}`)!
-
-      if (this.selectDemension.tabs === 'deleted') {
-        this.getDeletedList()
-        return
-      }
-      this.getList()
-    },
-
-    //有历史tab页的请求,自定义请求获取额外数据
-    async getDeletedList() {
-      this.deleted = 1
-      const totalNum1 = await (await this.getList()).totalNum
-      this.dataList = []
-      this.deleted = 0
-      const totalNum2 = await (await this.getList()).totalNum
-      this.tabInfo.totalNumList = [totalNum2, totalNum1]
-      // console.log()
-    },
-    async getList(extraParams?: {}) {
-      //发起请求
-      const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
-      const params = {
-        dimensionCode: this.selectDemension?.code,
-        pageNum,
-        pageSize,
-        deleted,
-        entityType,
-        entityName,
-        entityId,
-        ...extraParams
-      }
-      const res = await $axios.get('lawyer-workbench/risk/dimension/page', { params }) as { totalNum: number, totalPage: number, dataList: [] }
-      this.totalNum = res.totalNum
-      this.totalPage = res.totalPage
-      this.dataList.push(...res.dataList)
-      return res
-    }
-  }
-})

+ 43 - 0
src/store/demensionDetail.ts

@@ -0,0 +1,43 @@
+import { useRoute } from 'vue-router'
+import { $getDemension } from '@/utils/utils'
+import { DemensionDetailStoreInter } from '../types/store'
+import { defineStore } from 'pinia'
+import $axios from '@/api'
+export const useDemensionDetailStore = defineStore({
+  id: 'demensionDetail',
+  state: () => {
+    return <DemensionDetailStoreInter>{
+      selectDemension: {},
+      info: {}
+    }
+  },
+  actions: {
+    //初始化列表状态
+    getDemension(routerName?: string) {
+      console.log(78, routerName)
+
+      const demensionInfo = $getDemension(routerName)
+
+      //首页返回所有维度列表,列表页正常返回
+      if (demensionInfo.selectDemension) {
+        this.selectDemension = demensionInfo.selectDemension
+      } else {
+        return demensionInfo.allDemensionArr
+      }
+      this.getDetail()
+    },
+    async getDetail() {
+      const route = useRoute()
+      // $axios
+      const params = {
+        id: route.query.id,
+        code: this.selectDemension.code
+      }
+      const res = await $axios.get('lawyer-workbench/risk/dimension/detail', { params })
+      // console.log(res)
+
+      this.info = res
+    }
+
+  }
+})

+ 155 - 0
src/store/demensionList.ts

@@ -0,0 +1,155 @@
+import { MenuListInter } from './../js-pages/types'
+import { DemensionStoreInter } from '../types/store'
+import { defineStore } from 'pinia'
+import $axios from '@/api'
+import { $getDemension } from '@/utils/utils'
+
+export const useDemensionListStore = defineStore({
+  id: 'demensionList',
+  state: () => {
+    return <DemensionStoreInter>{
+      pageNum: 1,
+      pageSize: 10,
+      deleted: 0,
+      entityType: 2,
+      entityName: '',
+      entityId: '',
+      totalNum: 0,
+      totalPage: 0,
+      selectDemension: {},
+      dataList: [],
+      tabInfo: {
+        totalNumList: [0, 0]
+      }
+    }
+  },
+  actions: {
+    //初始化列表状态
+    clearState() {
+      this.pageNum = 1
+      this.pageSize = 10
+      this.totalNum = 0
+      this.totalPage = 0
+      this.dataList = []
+    },
+    getDemension() {
+      //先清除历史的状态
+      this.clearState()
+      const demensionInfo = $getDemension()
+
+      //首页返回所有维度列表,列表页正常返回
+      if (demensionInfo.selectDemension) {
+        this.selectDemension = demensionInfo.selectDemension
+      } else {
+        return demensionInfo.allDemensionArr
+      }
+
+      //有tab的列表
+      if (demensionInfo.selectDemension.tabs === 'deleted') {
+        this.getDeletedList()
+        return
+      }
+
+      this.getList()
+    },
+
+    //有历史tab页的请求,自定义请求获取额外数据
+    async getDeletedList() {
+      this.deleted = 1
+      const totalNum1 = await (await this.getList()).totalNum
+      this.dataList = []
+      this.deleted = 0
+      const totalNum2 = await (await this.getList()).totalNum
+      this.tabInfo.totalNumList = [totalNum2, totalNum1]
+      // console.log()
+    },
+
+    //有menu页的请求,修改menu动态数据
+    getMenuList(dataExtra: { field: string, keyValueBOS: any[] }[]) {
+
+
+      const newArr: MenuListInter[] = []
+      //结合后端返回的数组
+      if (this.selectDemension.menuList) {
+
+        this.selectDemension.menuList.map(item => {
+          item.value = ''
+          if (!item.paramsId) {
+            newArr.push(item)
+          } else {
+
+            // console.log(dataExtra, 8888)
+            const listArr: { text: string; value: string }[] = []
+            //初始化数据
+            item.list.length = 1
+            listArr.push(...item.list)
+
+            //如果menu是数组
+            if (Array.isArray(dataExtra)) {
+              //添加接口返回的数据
+              dataExtra.map(dataItem => {
+                if (item.paramsId === dataItem.field) {
+                  dataItem.keyValueBOS.map(item => {
+                    listArr.push({
+                      text: item.key,
+                      value: item.key
+                    })
+                  })
+                }
+              })
+              //如果menu是对象
+            } else {
+              const dataExtraArr = Object.keys(dataExtra)
+              dataExtraArr.map(dataExtraItem => {
+                const extraList = dataExtra[dataExtraItem] as []
+                if (extraList.length) {
+                  extraList.map((extraListItem: { key: string }) => {
+                    listArr.push({
+                      text: extraListItem.key,
+                      value: extraListItem.key
+                    })
+                  })
+                }
+              })
+            }
+
+            newArr.push(
+              {
+                ...item,
+                list: listArr
+              }
+            )
+
+          }
+        })
+      }
+      this.selectDemension.menuList = newArr
+    },
+
+    async getList(extraParams = {}) {
+      //发起请求
+      const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
+      const params = {
+        dimensionCode: this.selectDemension?.code,
+        pageNum,
+        pageSize,
+        deleted,
+        entityType,
+        entityName,
+        entityId,
+        ...extraParams
+      }
+      const res = await $axios.get('lawyer-workbench/risk/dimension/page', { params }) as { totalNum: number, totalPage: number, dataList: [], dataExtra?: { field: string, keyValueBOS: any[] }[] }
+      this.totalNum = res.totalNum
+      this.totalPage = res.totalPage
+      this.dataList.push(...res.dataList)
+
+
+      if (!Object.keys(extraParams).length) {
+        this.getMenuList(res.dataExtra!)
+      }
+
+      return res
+    }
+  }
+})

+ 3 - 0
src/style/global.scss

@@ -0,0 +1,3 @@
+p,span{
+  font-size: 15px;
+}

+ 2 - 0
src/style/index.scss

@@ -0,0 +1,2 @@
+@import "./reset.scss";
+@import "./global.scss";

+ 75 - 0
src/style/reset.scss

@@ -0,0 +1,75 @@
+/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */
+html,
+body,
+p,
+ol,
+ul,
+li,
+dl,
+dt,
+dd,
+blockquote,
+figure,
+fieldset,
+legend,
+textarea,
+pre,
+iframe,
+hr,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 0;
+  padding: 0;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-size: 100%;
+  font-weight: normal;
+}
+
+ul {
+  list-style: none;
+}
+
+button,
+input,
+select {
+  margin: 0;
+}
+
+html {
+  box-sizing: border-box;
+}
+
+*, *::before, *::after {
+  box-sizing: inherit;
+}
+
+img,
+video {
+  height: auto;
+  max-width: 100%;
+}
+
+iframe {
+  border: 0;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+td,
+th {
+  padding: 0;
+}

+ 4 - 1
src/types/store.ts

@@ -14,4 +14,7 @@ export interface DemensionStoreInter {
     totalNumList: number[]
   }
 }
-
+export interface DemensionDetailStoreInter {
+  selectDemension: DemensionPagesListInter;
+  info: any
+}

+ 34 - 10
src/utils/utils.ts

@@ -1,11 +1,35 @@
-/*
- * @Author: 文帅
- * @Date: 2022-03-14 16:09:28
- * @LastEditTime: 2022-03-14 16:10:48
- * @LastEditors: 文帅
- * @Description:
- */
-
-export const $goCompany = (companyName: string, companyId: string) => {
-  console.log(companyName, companyId)
+import { DemensionPagesListInter, DemensionPagesInter } from './../js-pages/types'
+import { useRoute } from 'vue-router'
+import { ViewListInter } from '@/js-pages/types'
+import pagesArr from '@/js-pages'
+
+
+//跳转企业
+export const $goCompany = (item: ViewListInter, dataItem: any) => {
+  // console.log(item.companyId, dataItem[item.value])
+
+  if (item.companyId && dataItem[item.value] && dataItem[item.companyId]) {
+    console.log(dataItem[item.companyId], dataItem[item.value])
+  }
+}
+
+//选择匹配的企业维度
+export const $getDemension = (routerName?: string) => {
+  const route = useRoute()
+  const allDemensionArr = [] as DemensionPagesListInter[]
+  const demensionArr = (arr: any[]): DemensionPagesInter[] => {
+    return arr.reduce((total, item: any) => item.list ? demensionArr(item.list) : allDemensionArr.push(item), [])
+  }
+  demensionArr(pagesArr)
+  const selectDemension = allDemensionArr.find(item => (routerName ? `/${routerName}` : route.path) === `/${item.routing}`)!
+
+  return {
+    selectDemension,
+    allDemensionArr
+  }
+}
+
+//跳转外部URL
+export const $goOuterUrl = (url: string) => {
+  window.open(url)
 }

+ 76 - 9
src/views/demension/detail.vue

@@ -1,23 +1,90 @@
 <template>
-  <div>
-    fdsfsdfds
+  <div class="demension-detail">
+    <van-row>
+      <div v-for="(item,index) in store.selectDemension.detailList" :key="index" class="min-w-[calc(50%)]">
+        <div class="demension-detail-item">
+          <p>{{item.name}}</p>
+
+          <!-- 时间 -->
+          <span v-if="item.valueType === 'date'">{{store.info[item.value] ? dayjs(store.info[item.value]).format('YYYY-MM-DD') : '-'}}</span>
+
+
+          <!-- 多个数据 -->
+          <div v-else-if="item.listVal">
+
+            <!-- 多个数据里面数组有数据 -->
+            <div v-if="isArrayCom(item)">
+              <span v-for="(listItem,listIndex) in JSON.parse(store.info[item.listVal])"
+                    :key="listIndex" href="javascript:"
+                    class="block"
+                    :class="item.companyId && listItem[item.companyId] ? 'company' : ''"
+                    @click.stop="$goCompany(item,listItem)">
+                {{listItem[item.value] || '-'}}
+              </span>
+            </div>
+            <!-- 空数组 -->
+            <div v-else>
+              <span>-</span>
+            </div>
+          </div>
+          <span v-else>
+            {{store.info[item.value] || '-'}}{{ store.info[item.value] && item.valueType === 'w' ? '万元' : ''}}
+          </span>
+
+
+        </div>
+      </div>
+    </van-row>
   </div>
 </template>
 
 <script lang="ts" setup>
-  import {reactive,ref,onMounted} from 'vue'
-  import { useRoute, useRouter } from 'vue-router'
-  const router = useRouter()
+  import {computed, onMounted} from 'vue'
+  import { useRoute } from 'vue-router'
+  import { $goCompany } from '@/utils/utils'
+  import dayjs from 'dayjs'
+  import {useDemensionDetailStore} from '@/store/demensionDetail'
+  import { ViewListInter } from '@/js-pages/types'
+
   const route = useRoute()
-  const state = reactive({
+  const store = useDemensionDetailStore()
+  store.getDemension(route.params.routerName[0])
+
+
+  const isArrayCom = computed(() => {
+    return (item:ViewListInter) => {
+      if(item.listVal && store.info[item.listVal]) {
+        const arr = JSON.parse(store.info[item.listVal])
+        if(Array.isArray(arr) && arr.length) {
+          return true
+        }
+      }
+      return false
+    }
   })
+
   onMounted(() => {
+    document.title = store.selectDemension.title
   })
+
 </script>
 
 <style lang="scss" scoped>
-div{
-  display: flex;
-  align-items: center;
+.demension-detail{
+  padding: 15px 10px;
+  .demension-detail-item{
+    margin: 15px 0;
+    p{
+      color: #969696;
+    }
+    span{
+      margin-top: 10px;
+    }
+
+  }
+  .company{
+        color: #088BFE;
+      }
 }
+
 </style>

+ 11 - 3
src/views/demension/list.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="page">
     <!-- <List /> -->
-    <CommonTab></CommonTab>
+    <CommonTab v-if="store.selectDemension.tabs"></CommonTab>
+    <CommonMenu v-if="store.selectDemension.menuList && store.selectDemension.menuList.length"></CommonMenu>
     <CommonList></CommonList>
   </div>
 </template>
@@ -9,10 +10,17 @@
 <script lang="ts" setup>
   import CommonList from '@/components/CommonList.vue'
   import CommonTab from '@/components/vant/CommonTab.vue'
-  import { useDemensionStore } from '@/store/demension'
-  const store = useDemensionStore()
+  import { useDemensionListStore } from '@/store/demensionList'
+  import { onMounted } from 'vue'
+  import CommonMenu from '@/components/vant/CommonMenu.vue'
+  const store = useDemensionListStore()
   store.getDemension()
 
+
+  onMounted(() => {
+    document.title = store.selectDemension.title
+  })
+
 </script>
 
 <style lang="scss" scoped>

+ 26 - 0
src/views/index.vue

@@ -0,0 +1,26 @@
+<!--
+ * @Author: 文帅
+ * @Date: 2022-04-01 09:57:12
+ * @LastEditTime: 2022-04-01 10:19:16
+ * @LastEditors: 文帅
+ * @Description:
+-->
+
+<template>
+  <div>
+    <div v-for="(item,index) in store.getDemension()" :key="index">
+      <p class="text-xs" @click="$router.push(item.routing)">
+        {{item.title}}:
+        <span class="text-blue-600 ">{{item.routing}}</span>
+      </p>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { useDemensionListStore } from '@/store/demensionList'
+  const store = useDemensionListStore()
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 5 - 0
vite.config.ts

@@ -55,6 +55,11 @@ export default defineConfig({
     }
   },
   css: {
+    preprocessorOptions: {
+      scss: {
+        additionalData: '@import "./src/style/index.scss";' // 添加公共样式
+      }
+    },
     postcss: {
       plugins: [
         postCssPxToRem({