Procházet zdrojové kódy

feat: 维度开发,查漏补缺

Satsiki před 2 roky
rodič
revize
e270636303

+ 5 - 5
src/components/CommonList.vue

@@ -7,7 +7,7 @@
       <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" :class="store.selectDemension.viewList?.find(listItem => listItem.valueType === 'logo') || obj.valueType === 'avatar' ? 'has-logo' : ''"> -->
-          <div v-for="obj in store.selectDemension.viewList" :key="obj.value" class="item" :class="paddingItemCom(obj)">
+          <div v-for="obj in store.selectDemension.viewList" :key="obj.value" class="item" :class="paddingItemCom()">
 
 
             <!-- 标题 -->
@@ -24,7 +24,7 @@
 
               <img v-else-if="obj.valueType === 'logo'" :src="obj.solt ? obj.solt(item) : item[obj.value]" alt="" class="logo">
 
-              <div v-else-if="obj.valueType === 'related'" class="related" @click="$goCompany(item[obj.companyName as string],item[obj.companyId as string])">
+              <div v-else-if="obj.valueType === 'related' && obj.companyId" class="related" @click="$goCompany(item[obj.companyName as string],item[obj.companyId as string])">
                 {{item[obj.companyId].length === 32 ? "投资" : "关联"}}{{ item[obj.value] }}家企业 >
               </div>
 
@@ -234,9 +234,9 @@
         left: 14px;
       }
     }
-    // .has-related{
-    //   width: 240px;
-    // }
+    .has-related{
+      width: 240px;
+    }
     p,a,div{
       font-size: 15px;
     }

+ 9 - 97
src/components/Global/Avatar.vue

@@ -1,22 +1,17 @@
 <template>
-  <div class="companyLogo" :class="[bg, size, num == '1' ? 'one' : '']">
-
-    <img v-if="!state.isError" :src="imgSrc" @error="state.isError = true" />
-    <p v-else>{{ text }}</p>
-    <!-- <Logo :humanId="humanId" :companyId="companyId" class="logoImg" /> -->
+  <div v-if="state.isError" class="companyLogo" :style="{width:width}">
+    <p :style="{width:width}">{{ text }}</p>
   </div>
+  <img v-else :src="imgSrc" :style="{width:width}" class="avatar" @error="state.isError = true" />
 </template>
 
 <script lang="ts" setup>
-  import {reactive,ref,onMounted, computed} from 'vue'
-  import { useRoute, useRouter } from 'vue-router'
-  const router = useRouter()
-  const route = useRoute()
+  import {reactive,onMounted, computed} from 'vue'
   const state = reactive({
     bg:'',
     isError:false
   })
-  const props = defineProps(['name','companyId'])
+  const props = defineProps(['name','companyId','width'])
 
   const text = computed(() => {
     return props.name.substr(0, 1)
@@ -37,6 +32,9 @@
 </script>
 
 <style lang="scss" scoped>
+.avatar{
+  border-radius: 4px;
+}
 .companyLogo {
   width: 50px;
   height: 50px;
@@ -56,93 +54,7 @@
     border-radius: 4px;
     top: 0;
     left: 0;
-  }
-  img{
-    border-radius: 4px;
-  }
-  &.bg1 {
-    background: #83caaf;
-  }
-  &.bg2 {
-    background: #8ca3cd;
-  }
-  &.small {
-    font-size: 12px;
-    line-height: 16px;
-    letter-spacing: 2px;
-    width: 40px;
-    height: 40px;
-    padding: 4px 0 0 2px;
-  }
-  &.one {
-    font-size: 16px;
-    color: #ffffff;
-    line-height: 40px;
-    padding: 0;
-    letter-spacing: 0px;
-  }
-  &.w60 {
-    font-size: 18px;
-    // letter-spacing: 2px;
-    width: 50px !important;
-    height: 50px !important;
-    line-height: 50px !important;
-    text-align: center;
-    // padding: 4px 0 0 2px;
-  }
-  &.w30 {
-    font-size: 14px;
-    // letter-spacing: 2px;
-    width: 30px !important;
-    height: 30px !important;
-    line-height: 30px !important;
-    text-align: center;
-    // padding: 4px 0 0 2px;
-  }
-
-  &.w36 {
-    font-size: 12px;
-    letter-spacing: 2px;
-    width: 36px;
-    height: 36px;
-    line-height: 36px;
-    // padding: 4px 0 0 2px;
-  }
-
-  &.w54 {
-    font-size: 20px;
-    line-height: 54px;
-    width: 54px;
-    height: 54px;
-    padding: 0;
-    letter-spacing: 0px;
-  }
-  &.w100 {
-    font-size: 40px;
-    line-height: 100px;
-    width: 100px;
-    height: 100px;
-    padding: 0;
-    letter-spacing: 0px;
-  }
-  &.wf100 {
-    font-size: 24px;
-    /*letter-spacing: 2px;*/
-    white-space: normal;
-    width: 100px;
-    height: 100px;
-    line-height: 40px;
-    padding: 10px 16px 0 16px;
-  }
-  &.one-w84 {
-    width: 84px;
-    height: 84px;
-    font-size: 24px;
-    color: #ffffff;
-    line-height: 84px;
-    padding: 0;
-    letter-spacing: 0px;
-  }
+}
 }
 
 </style>

src/components/vant/CommonMenu.vue → src/components/Global/CommonMenu.vue


+ 86 - 0
src/components/Global/CommonTab.vue

@@ -0,0 +1,86 @@
+<template>
+
+  <div>
+    <van-tabs></van-tabs>
+    <van-tabs v-model:active="state.active" class="fixed w-full top-0 z-10"
+              swipeable animated
+              @change="change">
+      <van-tab v-for="(item,index) in state.tabList" :key="item.value" :title="`${item.name}${store.tabInfo.totalNumList[index] || ''}`" :name="item.value" title-style="font-weight:bold">
+      </van-tab>
+    </van-tabs>
+
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { onMounted, reactive } from 'vue'
+  import { useDemensionListStore } from '@/store/demensionList'
+
+  interface tabItem {
+    name:string,
+    value:number,
+    num?:number
+  }
+  interface tabState {
+    tabList:tabItem[],
+    active:number
+  }
+
+  const state =reactive<tabState>({
+    tabList:[{name:'',value:0,num:0}],
+    active:0
+  })
+
+  const store = useDemensionListStore()
+
+  onMounted(() => {
+    getTabs()
+  })
+
+  const getTabs = () => {
+    if(store.selectDemension.tabs && store.selectDemension.tabs.key === 'deleted') {
+      state.tabList = [
+        {
+          name:store.selectDemension.title,
+          value:0,
+          num:0
+        },
+        {
+          name:`历史${store.selectDemension.title}`,
+          value:1,
+          num:0
+        }
+      ]
+      return
+    }
+    if(store.selectDemension.tabs) {
+      state.tabList = store.selectDemension.tabs.list as any
+    }
+  }
+
+  const change = (deleted:number | string) => {
+    // store.pageNum = 1
+    // store.dataList = []
+    store.clearState()
+    if(store.selectDemension.tabs && store.selectDemension.tabs.key && store.selectDemension.tabs.list) {
+      const key = store.selectDemension.tabs.key
+      if(key === 'dimensionCode') {
+        const valueInfo = store.selectDemension.tabs.list?.find(item => item.value === deleted) as any
+        store.selectDemension.viewList = valueInfo.viewList
+        store.selectDemension.code = valueInfo.value
+        if(valueInfo.detailList) {
+          store.selectDemension.detailList = valueInfo.detailList
+        }
+      }
+      store.getList({[key]:deleted})
+      return
+    }
+    store.deleted = deleted as number
+    store.getList()
+  }
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 348 - 0
src/components/ListCustom/GongShangXinXi.vue

@@ -0,0 +1,348 @@
+<template>
+  <div class="yhc-white">
+    <!-- <div class="yhc-tittle">工商信息</div> -->
+    <van-skeleton
+      title
+      :row="20"
+      :loading="loadingSkeleton"
+      style="padding-top: 10px"
+    >
+      <div class="yhc-subject">
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col v-if="details.legalEntityVOList" class="yhc-item-left">
+            <div>
+              {{ store.entityName.includes("有限合伙") ? "执行事务合伙人" : "法定代表人" }}
+            </div>
+            <div
+              v-for="(oper, o) in details.legalEntityVOList.slice(0, 5)"
+              :key="o"
+              class="name"
+              @click="$goCompany(oper.name, oper.id)"
+            >
+              <div v-if="oper.name" class="gongshang-name">
+                <!-- <Avata -->
+                <AvatarVue :name="oper.name" :companyId="oper.id" width="42px" />
+                <div class="name-right">
+                  <div>{{ oper.name }}</div>
+                  <span
+                    v-if="oper.relateCompanyCount"
+                    style="color: #ff722d !important"
+                  >关联{{ oper.relateCompanyCount }}家企业></span
+                  >
+                </div>
+              </div>
+              <!-- {{ details.operName || "-" }} -->
+              <div></div>
+            </div>
+          </van-col>
+          <!-- <van-col span="12" class="yhc-item-link"
+                    >他关联27家企业 <van-icon name="arrow" class="right-icon"
+                    /></van-col> -->
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="12" class="yhc-item-left">
+            <div class="left-first">登记状态</div>
+            <div class="black">{{ details.regStatus || "-" }}</div>
+          </van-col>
+
+          <van-col span="12" class="yhc-item-right">
+            <div class="right-first">成立日期</div>
+            <div class="black">{{ $dateFormat(details.estiblishTime) }}</div>
+          </van-col>
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="12" class="yhc-item-left">
+            <div class="left-first">注册资本</div>
+            <div class="black">{{ details.regCapital || "-" }}</div>
+          </van-col>
+          <van-col span="12" class="yhc-item-right">
+            <div class="right-first">实缴资本</div>
+            <!-- <div class="black">{{ details.actualC apitalAmount || "-" }}</div> -->
+            <div v-if="details.actualCapitalAmount" class="black">
+              {{
+                isNaN(details.actualCapitalAmount)
+                  ? details.actualCapitalAmount
+                  : details.actualCapitalAmount / 1000000 + "万"
+              }}{{ details.actualCapitalCurrency || "" }}
+            </div>
+            <div v-else class="black">-</div>
+          </van-col>
+        </van-row>
+
+        <!-- <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="12" class="yhc-item-left">
+            <div class="left-first">人员规模</div>
+            <div class="black">{{ details.personScope || "-" }}</div>
+          </van-col>
+          <van-col span="12" class="yhc-item-right">
+            <div class="right-first">
+              参保人数
+              <van-icon name="info-o" @click="dialogclick" />
+            </div>
+            <div class="black">{{ details.insuredCount || "-" }}</div>
+          </van-col>
+        </van-row> -->
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">企业类型</div>
+            <!--                        <div class="black">{{details.entType|EntTypeFlt}}</div>-->
+            <div class="black">{{ details.companyOrgType }}</div>
+          </van-col>
+        </van-row>
+      </div>
+
+      <!-- 第二块 -->
+      <div class="yhc-subject">
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">统一社会信用代码</div>
+            <div class="black">{{ details.creditCode || "-" }}</div>
+          </van-col>
+          <!-- <van-col span="12" class="yhc-item-right">
+                    <div class="right-first">纳税人识别号</div>
+                    <div class="black">{{details.personScope}}</div>
+                    </van-col> -->
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="12" class="yhc-item-left">
+            <div class="left-first">工商注册号</div>
+            <div class="black">{{ details.regNumber || "-" }}</div>
+          </van-col>
+          <van-col span="12" class="yhc-item-right">
+            <div class="right-first">组织机构代码</div>
+            <div class="black">{{ details.orgNumber || "-" }}</div>
+          </van-col>
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <!-- <van-col span="12" class="yhc-item-left">
+                    <div class="left-first">进出口企业代码</div>
+                    <div class="black">{{details.personScope}}</div>
+                    </van-col> -->
+        </van-row>
+      </div>
+
+      <!-- 第三块 -->
+      <div class="yhc-subject">
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">曾用名</div>
+            <div class="entireLine" style="border: none">
+              <div>
+                {{
+                  details.historyNames
+                    ? details.historyNames
+                      .split("\t;\t")
+                      .filter((i:number) => i)
+                      .join("、")
+                    : "-"
+                }}
+              </div>
+              <!-- <span>{{ details.originalName.length ? "" : "-" }}</span> -->
+            </div>
+          </van-col>
+        </van-row>
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">经营期限</div>
+            <div class="black">
+              {{ $dateFormat(details.fromTime) }} 至
+              {{
+                details.toTime
+                  ? details.toTime.substring(0, 10)
+                  : details.fromTime
+                    ? "无固定期限"
+                    : "-"
+              }}
+            </div>
+          </van-col>
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">所属行业</div>
+            <div class="black">{{ details.cateFirst || "-" }}</div>
+          </van-col>
+        </van-row>
+      </div>
+
+      <!-- 第四块 -->
+      <div class="yhc-subject">
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">注册地址</div>
+          </van-col>
+        </van-row>
+        <van-row type="flex" justify="space-between" class="yhc-ghxixi-address">
+          <van-col class="yhc-item-left">
+            {{ details.regLocation || "-" }}
+          </van-col>
+        </van-row>
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">登记机关</div>
+            <div class="black">
+              {{ details.regInstitute || "-" }}
+            </div>
+          </van-col>
+        </van-row>
+
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">经营范围</div>
+            <div class="entireLine" style="line-height: 22px; border: none">
+              {{ details.businessScope || "-" }}
+            </div>
+          </van-col>
+        </van-row>
+      </div>
+
+      <div class="yhc-subject">
+        <van-row type="flex" justify="space-between" class="yhc-item-row">
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">成立日期</div>
+            <div class="entireLine" style="border: none">
+              {{ $dateFormat(details.estiblishTime) }}
+            </div>
+          </van-col>
+          <van-col span="24" class="yhc-item-left">
+            <div class="left-first">核准日期</div>
+            <div class="entireLine" style="border: none">
+              {{ $dateFormat(details.approvedTime) }}
+            </div>
+          </van-col>
+        </van-row>
+      </div>
+    </van-skeleton>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import $axios from '@/api'
+  import { useDemensionListStore } from '@/store/demensionList'
+  import { $goCompany,$dateFormat } from '@/utils/utils'
+  import { onMounted, ref } from 'vue'
+  import AvatarVue from '../Global/Avatar.vue'
+  const store =useDemensionListStore()
+  // const state = reactive({
+  //   details: [] as any
+  // })
+  const details = ref<any>({})
+  const loadingSkeleton = ref(false)
+  const getData = async () => {
+    loadingSkeleton.value = true
+    const params = {
+      dimensionCode: useDemensionListStore().selectDemension?.code,
+      entityId: useDemensionListStore().entityId,
+      entityName: useDemensionListStore().entityName,
+      entityType: useDemensionListStore().entityType
+    }
+    const res:any = await $axios.get('lawyer-workbench/risk/dimension/page',{params})
+    details.value = res
+    loadingSkeleton.value = false
+  }
+  onMounted(() => {
+    getData()
+  })
+</script>
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+
+.gongshang-name {
+  display: flex;
+  align-items: center;
+  .name-right {
+    margin-left: 6px;
+    div {
+      font-size: 14px;
+    }
+    span {
+      display: block;
+      font-size: 14px;
+      margin-top: 6px;
+    }
+  }
+}
+.yhc-subject {
+  padding: 6px $padding 10px $padding;
+  border-bottom: 12px solid #f1f2f4;
+  background-color: white;
+}
+
+.yhc-item-row {
+  padding-top: 12px;
+
+  .yhc-item-left {
+    color: $grayFont;
+
+    .left-first {
+      padding: 2px 0px;
+    }
+
+    .name {
+      color: $link;
+      padding-top: 8px;
+    }
+
+    .black {
+      color: $blackColor;
+      padding-top: 8px;
+      line-height: 16px;
+      padding-right: $padding;
+    }
+
+    .entireLine {
+      color: $blackColor;
+      padding: 8px 0;
+      line-height: 16px;
+      border-bottom: 0.5px solid $border;
+    }
+  }
+
+  .yhc-item-link {
+    color: $yellowColor;
+    text-align: right;
+  }
+
+  .right-icon {
+    vertical-align: bottom;
+  }
+
+  .yhc-item-right {
+    color: $grayFont;
+
+    .right-first {
+      padding: 2px $padding;
+      border-left: 1px solid $border;
+
+      i {
+        color: $link;
+        vertical-align: bottom;
+        margin-left: 10px;
+        font-size: 16px;
+      }
+    }
+
+    .black {
+      padding-left: $padding;
+      color: $blackColor;
+      padding-top: 8px;
+    }
+  }
+}
+
+.yhc-ghxixi-address {
+  margin-top: 10px;
+  padding-bottom: 8px;
+
+  i {
+    font-size: 16px;
+    vertical-align: bottom;
+    margin-right: 3px;
+  }
+}
+</style>

+ 128 - 0
src/components/ListCustom/ZuiZhongShouYiRen.vue

@@ -0,0 +1,128 @@
+<template>
+  <!-- <div></div> -->
+  <van-row id="ZuiZhongShouYiRen" class="zuizhongshouyiren" style="padding-top: 15px">
+
+    <div class="content">
+      <div class="caichan-tip">
+        已查询到该企业最终受益人信息 <span class="red">{{dataList.length||'0'}}</span> 条。最终受益人为疑似直接或间接持有该企业超过25%股权的主体。具体信息如下:
+      </div>
+      <van-row v-for="(item,index) in dataList" :key="index" class="zzsyr-top yhc-padding" style="margin-bottom: 15px;">
+        <van-row class="zzsyr-item">
+          <van-row class="zzsyr-title">最终受益人名称</van-row>
+          <van-row type="flex" justify="space-between" align="center">
+            <van-col>{{item.name||'-'}}</van-col>
+          </van-row>
+        </van-row>
+        <van-row class="zzsyr-item">
+          <van-row class="zzsyr-title">{{$nameByCompanyName(store.entityName,'持股比例')}}</van-row>
+          <van-row type="flex" justify="start" align="center">{{item.percent||'-'}}</van-row>
+        </van-row>
+        <van-row v-if="item.chainList" class="zzsyr-item">
+          <van-row class="zzsyr-title">股权链</van-row>
+          <van-row v-for="(info,index) in item.chainList" :key="index" class="zzsyr-ljdet">
+            <van-row>{{info[0].title}} (占比约{{info[0].value}})</van-row>
+            <van-row class="zzsyr-ms-det">
+              <van-row class="yhc-zzsyr-ms">
+                <div v-for="(item,index1) in info.slice(1)" :key="index1">
+                  <a v-if="item.type=='human'||item.type=='company'" class="link">{{item.value}}</a>
+                  <span v-else-if="item.type=='percent'" class="jiantou">{{item.value}}</span>
+                </div>
+
+              </van-row>
+            </van-row>
+          </van-row>
+        </van-row>
+      </van-row>
+    </div>
+    <van-row v-show="dataList.length > 0" class="yhc-footer">
+      <img src="@/assets/img/logo.png" alt="">
+      <p>企业最终受益人为疑似直接或间接拥有超过25%及以上企业股权的自然人或企业。仅供参考</p>
+    </van-row>
+  </van-row>
+</template>
+
+<script lang="ts" setup>
+  import $axios from '@/api'
+  import { useDemensionListStore } from '@/store/demensionList'
+  import { onMounted, ref } from 'vue'
+  import { $nameByCompanyName } from '@/utils/utils'
+  const store = useDemensionListStore()
+  const dataList = ref<any>([])
+  const getData = async () => {
+    const params = {
+      infoCode: useDemensionListStore().selectDemension?.code,
+      companyName: useDemensionListStore().entityName
+    }
+    const res:any = await $axios.get('firefly-erp/eci/dimension/detail',{params})
+    dataList.value = res.dataList
+    // info.value = res
+  }
+  onMounted(() => {
+    getData()
+  })
+</script>
+
+<style lang='scss'>
+
+    body{
+        background: #f3f3f3;
+    }
+    #ZuiZhongShouYiRen {
+        display: flex;
+        flex-direction: column;
+        .content {
+            flex: 1;
+            overflow: auto;
+        }
+
+    }
+    .zuizhongshouyiren{
+    padding-top: 20px;
+
+     .zzsyr-top{
+         background: #fff;
+         &.yhc-padding{
+             padding: 0px 10px;
+         }
+         &.zzsyr-top-oth{
+             margin-top: 20px;
+         }
+         .zzsyr-item{
+             border-bottom: 1px solid $border;
+             padding: 15px 0px;
+             display: block;
+             width: 100%;
+             &:last-child{
+                 border-bottom: none;
+             }
+         }
+         .zzsyr-title{
+             color:$grayFont;
+             margin-bottom: 15px;
+         }
+         .zzsyr-ljdet{
+             .zzsyr-ms-det{
+                 background: #f8f8f8;
+                 padding: 15px;
+                 margin: 15px 0px;
+             }
+             .zzsyr-tips{
+                 color: $grayFont;
+                 line-height: 24px;
+             }
+         }
+     }
+ }
+ .yhc-footer{
+   display: flex;
+   flex-wrap: nowrap!important;
+   img{
+     height: 14px;
+     width: 14px;
+     margin-right: 2px;
+   }
+   p{
+     font-size: 12px;
+   }
+ }
+</style>

+ 0 - 68
src/components/vant/CommonTab.vue

@@ -1,68 +0,0 @@
-<template>
-
-  <div>
-    <van-tabs></van-tabs>
-    <van-tabs v-model:active="state.active" class="fixed w-full top-0 z-10"
-              swipeable animated
-              @change="change">
-      <van-tab v-for="(item,index) in state.tabList" :key="index" :title="`${item.name}${store.tabInfo.totalNumList[index] || ''}`" :name="item.deleted" title-style="font-weight:bold">
-      </van-tab>
-    </van-tabs>
-
-  </div>
-</template>
-
-<script lang="ts" setup>
-  import { onMounted, reactive } from 'vue'
-  import { useDemensionListStore } from '@/store/demensionList'
-
-  interface tabItem {
-    name:string,
-    deleted:number,
-    num:number
-  }
-  interface tabState {
-    tabList:tabItem[],
-    active:number
-  }
-
-  const state =reactive<tabState>({
-    tabList:[{name:'',deleted:0,num:0}],
-    active:0
-  })
-
-  const store = useDemensionListStore()
-
-  onMounted(() => {
-    getTabs()
-  })
-
-  const getTabs = () => {
-    if(store.selectDemension.tabs === 'deleted') {
-      state.tabList = [
-        {
-          name:store.selectDemension.title,
-          deleted:0,
-          num:0
-        },
-        {
-          name:`历史${store.selectDemension.title}`,
-          deleted:1,
-          num:0
-        }
-      ]
-    }
-  }
-
-  const change = (deleted:number) => {
-    store.deleted = deleted
-    store.pageNum = 1
-    store.dataList = []
-    store.getList()
-  }
-
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 11 - 8
src/js-pages/company-detail/FaLvFengXian/index.ts

@@ -1,4 +1,5 @@
 import { DemensionPagesInter } from './../../types'
+//数量全完成
 export const FaLvFengXian: DemensionPagesInter = {
   projectName: '法律风险',
   list: [
@@ -7,7 +8,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       routing: 'KaiTingGongGao',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
       title: '开庭公告',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       detailType: '1',
       menuList: [
         {
@@ -131,7 +132,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       routing: 'ShiXinQingKuang',
       title: '失信信息',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       menuList: [
         {
           paramsValue: 'performance',
@@ -349,7 +350,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       code: 'send_announcement',
       routing: 'SongDaGongGao',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       title: '送达公告',
       menuList: [
         {
@@ -536,7 +537,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       routing: 'ZhongBenAnJian',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
       title: '终本案件',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       detailList: [
         {
           name: '案号',
@@ -610,7 +611,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       routing: 'BeiZhiXingRen',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
       title: '被执行人',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       viewList: [
         {
           name: '案号',
@@ -635,7 +636,8 @@ export const FaLvFengXian: DemensionPagesInter = {
       code: 'limit_high_consumption',
       routing: 'JYXianZhiGaoXiaoFei',
       title: '限制高消费',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
+      companyId: '88f04cbfab150fe2bccdeec3aea32750',
       viewList: [
         {
           name: '案号',
@@ -846,7 +848,8 @@ export const FaLvFengXian: DemensionPagesInter = {
       code: 'court_announcement',
       routing: 'FaYuanGongGao',
       title: '法院公告',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
+      companyId: '88f04cbfab150fe2bccdeec3aea32750',
       detailList: [
         {
           name: '公告类型',
@@ -917,7 +920,7 @@ export const FaLvFengXian: DemensionPagesInter = {
       code: 'equity_freeze',
       routing: 'GuQuanDongJie',
       title: '股权冻结',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       menuList: [
         {
           paramsValue: 'role',

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

@@ -2,21 +2,60 @@ import { DemensionPagesInter } from './../../types'
 import SheBaoRenShuVue from '@/components/ListCustom/SheBaoRenShu.vue'
 import NianDuBaoGao from '@/components/DetailCustom/NianDuBaoGao.vue'
 import CaiWuShuJu from '@/components/ListCustom/CaiWuShuJu.vue'
+import GongShangXinXi from '@/components/ListCustom/GongShangXinXi.vue'
+import ZuiZhongShouYiRen from '@/components/ListCustom/ZuiZhongShouYiRen.vue'
 import { shallowRef } from 'vue'
 export const JiBenXinXi: DemensionPagesInter = {
   projectName: '基本信息',
   list: [
     {
+      code: 'eci_info_v8',
+      routing: 'GongShangXinXiNew',
+      title: '工商信息',
+      listCustomRender: shallowRef(GongShangXinXi),
+      companyId: '88f04cbfab150fe2bccdeec3aea32750'
+    },
+    {
+      code: 'final_beneficiary',
+      routing: 'ZuiZhongShouYiRen',
+      title: '最终受益人',
+      listCustomRender: shallowRef(ZuiZhongShouYiRen),
+      companyId: '88f04cbfab150fe2bccdeec3aea32750'
+    },
+    {
       code: 'empum',
       routing: 'SheBaoRenShu',
       title: '社保人数',
-      listCustomRender: SheBaoRenShuVue
+      listCustomRender: shallowRef(SheBaoRenShuVue),
+      companyId: '88f04cbfab150fe2bccdeec3aea32750'
     },
     {
       routing: 'GuDongXinXiNew',
       code: 'shareholder_info_v8',
       title: '股东信息',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
+      menuList: [
+        {
+          paramsValue: 'holderType',
+          value: '',
+          list: [
+            { text: '全部类型', value: '' },
+            { text: '自然人股东', value: '1' },
+            { text: '企业法人', value: '2' }
+          ]
+        },
+        {
+          paramsValue: 'minValue',
+          value: '',
+          list: [
+            { text: '持股比例不限', value: '' },
+            { text: '5%以上', value: '0.05' },
+            { text: '25%以上(超过25%的为最终受益人)', value: '0.25' },
+            { text: '50%以上', value: '0.5' },
+            { text: '90%以上', value: '0.9' }
+          ]
+        }
+      ],
       viewList: [
         {
           companyId: 'holderId',

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

@@ -6,6 +6,7 @@ export const JianZhuXinXi: DemensionPagesInter = {
       code: 'construction_qualification',
       routing: 'JianZhuZiZhi',
       title: '建筑资质',
+      companyId: 'fc9bf0bdc706f5593dd3c8fed3ef957b',
       viewList: [
         {
           name: '资质名称',
@@ -41,6 +42,7 @@ export const JianZhuXinXi: DemensionPagesInter = {
       code: 'construction_person',
       routing: 'JianZhuRenYuan',
       title: '建筑人员',
+      companyId: 'fc9bf0bdc706f5593dd3c8fed3ef957b',
       viewList: [
         {
           name: '姓名',
@@ -72,6 +74,7 @@ export const JianZhuXinXi: DemensionPagesInter = {
     {
       code: 'construction_project',
       routing: 'JianZhuXiangMu',
+      companyId: 'fc9bf0bdc706f5593dd3c8fed3ef957b',
       title: '建筑项目',
       detailList: [
         {

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

@@ -4,6 +4,7 @@ import { shallowRef } from 'vue'
 import DongChanDiYaVue from '@/components/DetailCustom/DongChanDiYa.vue'
 import JieSanQingSuan from '@/components/ListCustom/JieSanQingSuan.vue'
 import ZhuXiaoBeiAn from '@/components/ListCustom/ZhuXiaoBeiAn.vue'
+//数量全完成
 export const JingYingFengXian: DemensionPagesInter = {
   projectName: '经营风险',
   list: [
@@ -11,8 +12,8 @@ export const JingYingFengXian: DemensionPagesInter = {
       code: 'penalties',
       routing: 'XingZhengChuFa',
       title: '行政处罚',
-      tabs: 'deleted',
-      companyId: '4cc3861734ecd09b00ab34afdf8f94cc',
+      tabs: { key: 'deleted' },
+      companyId: '88f04cbfab150fe2bccdeec3aea32750',
       detailList: [
         {
           name: '违法类型',
@@ -48,7 +49,7 @@ export const JingYingFengXian: DemensionPagesInter = {
       code: 'exception',
       routing: 'JingYingYiChang',
       title: '经营异常',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       companyId: '190f4302a77d2c5fec225d19c173f76e',
       viewList: [
         {
@@ -71,7 +72,7 @@ export const JingYingFengXian: DemensionPagesInter = {
       routing: 'GuQuanChuZhi',
       title: '股权出质',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       viewList: [
         {
           value: 'pledgee',
@@ -168,7 +169,7 @@ export const JingYingFengXian: DemensionPagesInter = {
       routing: 'TuDiDiYa',
       title: '土地抵押',
       companyId: 'cbe86f02d808d1698677d9530935d14c',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       detailList: [
         {
           name: '土地抵押人名称',
@@ -265,7 +266,7 @@ export const JingYingFengXian: DemensionPagesInter = {
       title: '动产抵押',
       companyId: 'ccb293ad96c184506aa54f95f7284929',
       detailCustomRender: shallowRef(DongChanDiYaVue),
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       detailList: [],
       viewList: [
         {
@@ -578,7 +579,7 @@ export const JingYingFengXian: DemensionPagesInter = {
       routing: 'YanZhongWeiFaXingWei',
       title: '严重违法',
       companyId: '09fefa057533a9b161fa041154dc73f9',
-      tabs: 'deleted',
+      tabs: { key: 'deleted' },
       viewList: [
         {
           name: '列入严重违法失信企业名单原因',

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

@@ -264,7 +264,148 @@ export const JingYingXinXi: DemensionPagesInter = {
       code: 'permission_eci',
       routing: 'XingZhenXuKe',
       title: '行政许可',
-      companyId: 'a10a3675d3f4e38af372dcd8eddce29f'
+      tabs: {
+        key: 'dimensionCode',
+        list: [
+          {
+            name: '工商局',
+            value: 'permission_eci',
+            viewList: [
+              {
+                name: '许可文件名称',
+                value: 'licenseName'
+              },
+              {
+                name: '许可文件编号',
+                value: 'licenseNumber'
+              },
+              {
+                name: '许可机关',
+                value: 'department'
+              },
+              {
+                name: '有效期起始日',
+                value: 'startDate'
+              },
+              {
+                name: '有效期至',
+                value: 'endDate'
+              }
+            ],
+            detailList: [
+              {
+                name: '许可文件名称',
+                value: 'licenseName'
+              },
+              {
+                name: '许可文件编号',
+                value: 'licenseNumber'
+              },
+              {
+                name: '有效期起始日',
+                value: 'startDate'
+              },
+              {
+                name: '有效期至',
+                value: 'endDate'
+              },
+              {
+                name: '发证日期',
+                value: 'issueDate',
+                valueType: 'date'
+              },
+              {
+                name: '类型',
+                value: 'type'
+              },
+              {
+                name: '证书状态',
+                value: 'status'
+              },
+              {
+                name: '等级',
+                value: 'grade'
+              },
+              {
+                name: '许可机关',
+                value: 'department'
+              },
+              {
+                name: '许可内容',
+                value: 'scope'
+              }
+            ]
+          },
+          {
+            name: '信用中国',
+            value: 'permission_china',
+            viewList: [
+              {
+                name: '许可证号',
+                value: 'licenceNumber'
+              },
+              {
+                name: '内容许可',
+                value: 'licenceContent'
+              },
+              {
+                name: '许可机关',
+                value: 'department'
+              },
+              {
+                name: '决定日期',
+                value: 'decisionDate',
+                valueType: 'date'
+              },
+              {
+                name: '许可截止日期',
+                value: 'endDate',
+                valueType: 'date'
+              }
+            ],
+            detailList: [
+              {
+                name: '名称',
+                value: 'companyName',
+                companyId: 'companyId'
+              },
+              {
+                name: '许可证号',
+                value: 'licenceNumber'
+              },
+              {
+                name: '许可证状态',
+                value: 'licenceStatus'
+              },
+              {
+                name: '许可决定日期',
+                value: 'decisionDate'
+              },
+              {
+                name: '许可截止日期',
+                value: 'endDate'
+              },
+              {
+                name: '审批类别',
+                value: 'auditYpe'
+              },
+              {
+                name: '地域',
+                value: 'areaName'
+              },
+              {
+                name: '许可机关',
+                value: 'department'
+              },
+              {
+                name: '许可内容',
+                value: 'licenceContent'
+              }
+            ]
+          }
+        ]
+      },
+      companyId: '88f04cbfab150fe2bccdeec3aea32750'
     },
     {
       code: 'land_purchase',

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

@@ -1,6 +1,7 @@
 import { DemensionPagesInter } from './../../types'
 import pdfImg from '@/assets/img/pdf.png'
 import { $goOuterUrl } from '@/utils/utils'
+//维度已完成
 export const QiYeRongZi: DemensionPagesInter = {
   projectName: '法律风险',
   list: [
@@ -8,6 +9,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'accounts_receivablae',
       routing: 'YingShouZhangKuanRongZi',
       title: '应收账款融资',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       hasDetail: true,
       detailList: [
         {
@@ -103,6 +105,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'dcm_registration_limit',
       routing: 'DCMZhuCeEDu',
       title: 'DCM注册额度',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: 'DCM分类',
@@ -145,6 +148,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'bond_financing',
       routing: 'ZhaiQuanRongZi',
       title: '债券融资',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: '债券简称',
@@ -183,6 +187,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'overseas_bond_financing',
       routing: 'JingWaiZhaiQuanRongZi',
       title: '境外债券融资',
+      companyId: 'b78f5b2efb1d15921787201595f0ee2b',
       hasDetail: true,
       detailList: [
         {
@@ -350,6 +355,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'trust_financing',
       routing: 'XinTuoRongZi',
       title: '信托融资',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: '公告日期',
@@ -411,6 +417,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'bank_loan',
       routing: 'YingHangJieKuan',
       title: '银行借款',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: '公告日期',
@@ -463,6 +470,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'credit_line',
       routing: 'ShouXinEDu',
       title: '授信额度',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: '截止日',
@@ -499,6 +507,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'other_financing',
       routing: 'QiTaRongZi',
       title: '其他融资',
+      companyId: '28f42c6b13f261514b2ed684034615d4',
       viewList: [
         {
           name: '企业名称',
@@ -558,6 +567,7 @@ export const QiYeRongZi: DemensionPagesInter = {
       code: 'lease_financing',
       routing: 'ZuLinRongZi',
       title: '租赁融资',
+      companyId: '88f04cbfab150fe2bccdeec3aea32750',
       viewList: [
         {
           name: '公告日期',

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

@@ -50,6 +50,7 @@ const shangBiaoSelectList = [
   { text: '社会服务', value: 45 }
 ]
 
+//维度已完成
 
 const returnShangBiaoStatus = (stamp: string) => {
   return {
@@ -129,11 +130,35 @@ export const ZhiShiChanQuan: DemensionPagesInter = {
       ]
     },
     {
-      //tab未完成
       code: 'eci_patent',
       routing: 'ZhuanLi',
       title: '专利',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
+      tabs: {
+        key: 'patType',
+        list: [
+          {
+            name: '全部',
+            value: ''
+          },
+          {
+            name: '发明公布',
+            value: '1'
+          },
+          {
+            name: '发明授权',
+            value: '2'
+          },
+          {
+            name: '实用新型',
+            value: '3'
+          },
+          {
+            name: '外观设计',
+            value: '4'
+          }
+        ]
+      },
       viewList: [
         {
           value: 'title',

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

@@ -12,6 +12,14 @@ const companyDetail: TotalDemensionInter = {
   list: []
 }
 
+console.log('FaLvFengXian:' + FaLvFengXian.list.length)
+console.log('JiBenXinXi:' + JiBenXinXi.list.length)
+console.log('JianZhuXinXi:' + JianZhuXinXi.list.length)
+console.log('QiYeRongZi:' + QiYeRongZi.list.length)
+console.log('JingYingFengXian:' + JingYingFengXian.list.length)
+console.log('JingYingXinXi:' + JingYingXinXi.list.length)
+console.log('ZhiShiChanQuan:' + ZhiShiChanQuan.list.length)
+
 companyDetail.list.push(FaLvFengXian, JiBenXinXi, JianZhuXinXi, QiYeRongZi, JingYingFengXian, JingYingXinXi, ZhiShiChanQuan)
 
 export default companyDetail

+ 13 - 3
src/js-pages/types.ts

@@ -27,7 +27,7 @@ export interface DemensionPagesListInter {
   */
   contentList?: MenuListInter[],
   menuList?: MenuListInter[],  //tab下面的下拉菜单列表
-  tabs?: 'deleted' | [],  //是否有tabs,历史列表deleted,普通tab传数组
+  tabs?: tabsInter,  //是否有tabs,历史列表deleted,普通tab传数组
   /**
   * 详情页所属司法案件所传的type
   */
@@ -39,9 +39,9 @@ export interface DemensionPagesListInter {
   listCustomRender?: any,
   detailCustomRender?: any,
   /**
-  * 公司的ID,方便调试用
+  * 公司的ID,方便调试用,88f开头是乐视
   */
-  companyId?: string,
+  companyId: '88f04cbfab150fe2bccdeec3aea32750' | string,
   /**
   * 是否不取dataList,是的话直接取
   */
@@ -93,3 +93,13 @@ export interface MenuListInter {
   name?: string,
   list: { text: string, value: string | number }[]
 }
+
+export interface tabsInter {
+  key: 'deleted' | string,
+  list?: {
+    name: string,
+    value: string,
+    viewList?: ViewListInter[],
+    detailList?: ViewListInter[]
+  }[]
+}

+ 2 - 1
src/plugins/vant.ts

@@ -1,4 +1,4 @@
-import { Button, Row, Tab, Tabs, List, Icon, DropdownMenu, DropdownItem, Collapse, CollapseItem, Cell, Col, Step, Steps } from 'vant'
+import { Button, Row, Tab, Tabs, List, Icon, DropdownMenu, DropdownItem, Collapse, CollapseItem, Cell, Col, Step, Steps, Skeleton } from 'vant'
 import { App } from 'vue'
 
 export const useVant = (app: App<Element>) => {
@@ -16,4 +16,5 @@ export const useVant = (app: App<Element>) => {
   app.use(Col)
   app.use(Step)
   app.use(Steps)
+  app.use(Skeleton)
 }

+ 7 - 7
src/router/index.ts

@@ -7,11 +7,11 @@ const routes: Array<RouteRecordRaw> = [
   },
   {
     path: '/',
-    redirect:'/index'
+    redirect: '/index'
   },
   {
-    path:'/index',
-    name:'index',
+    path: '/index',
+    name: 'index',
     component: () => import('@/views/index.vue')
   },
   // {
@@ -25,11 +25,11 @@ const routes: Array<RouteRecordRaw> = [
     component: () => import('@/views/demension/detail.vue')
   },
   {
-    path: "/notFound",
+    path: '/notFound',
     name: 'notFound',
     component: () => import('@/views/notFound.vue')
-  },
-  
+  }
+
 ]
 
 const router = createRouter({
@@ -39,7 +39,7 @@ const router = createRouter({
 
 
 router.beforeEach((to, from, next) => {
-  console.log('to=',to)
+  console.log('to=', to)
   // if (!to.path.includes('Det')) {
   // next({ path: '/demension' })
   // }

+ 13 - 1
src/store/demensionList.ts

@@ -42,11 +42,22 @@ export const useDemensionListStore = defineStore({
 
 
 
+
       //首页返回所有维度列表,列表页正常返回
       if (demensionInfo.selectDemension) {
         this.selectDemension = demensionInfo.selectDemension
         //方便本地调试的企业id
         this.entityId = import.meta.env.MODE === 'development' && demensionInfo.selectDemension.companyId ? demensionInfo.selectDemension.companyId : this.entityId
+
+
+
+        if (this.selectDemension.tabs?.key === 'dimensionCode' && this.selectDemension.tabs.list) {
+          this.selectDemension.viewList = this.selectDemension.tabs.list[0].viewList
+          this.selectDemension.code = this.selectDemension.tabs.list[0].value
+          if (this.selectDemension.tabs.list[0].detailList) {
+            this.selectDemension.detailList = this.selectDemension.tabs.list[0].detailList
+          }
+        }
       } else {
         return demensionInfo.allDemensionArr
       }
@@ -55,7 +66,7 @@ export const useDemensionListStore = defineStore({
 
 
       //有tab的列表
-      if (demensionInfo.selectDemension.tabs === 'deleted') {
+      if (demensionInfo.selectDemension.tabs?.key === 'deleted') {
         this.getDeletedList()
         return
       }
@@ -160,6 +171,7 @@ export const useDemensionListStore = defineStore({
     async getList(extraParams = {}) {
       //发起请求
       const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
+
       const params = {
         dimensionCode: this.selectDemension?.code,
         pageNum,

+ 1 - 1
src/style/oldStyle.scss

@@ -303,7 +303,7 @@
   display: inline-block;
   width: 84px;
   height: 30px;
-  background: url("../img/jt.png") no-repeat right bottom;
+  background: url("@/assets/img/jt.png") no-repeat right bottom;
   background-size: 75px 8px;
   padding-bottom: 10px;
   font-size: 12px;

+ 4 - 2
src/views/demension/list.vue

@@ -14,16 +14,18 @@
 
 <script lang="ts" setup>
   import CommonList from '@/components/CommonList.vue'
-  import CommonTab from '@/components/vant/CommonTab.vue'
+  import CommonTab from '@/components/Global/CommonTab.vue'
   import { useDemensionListStore } from '@/store/demensionList'
   import { onMounted } from 'vue'
   import listCustomComponent from '@/components/ListCustomComponent.vue'
-  import CommonMenu from '@/components/vant/CommonMenu.vue'
+  import CommonMenu from '@/components/Global/CommonMenu.vue'
   import { $getDemension } from '@/utils/utils'
   import { useRoute ,useRouter} from 'vue-router'
 
   const store = useDemensionListStore()
+  store.clearState()
   store.getDemension()
+
   const route = useRoute()
   const router = useRouter()
   const { allDemensionArr } = $getDemension()