Ver código fonte

风险扫描及详细数据

风险扫描及详细数据
huangxiaoming 2 anos atrás
pai
commit
fc7a7c207e

+ 8 - 3
config.ts

@@ -1,28 +1,33 @@
 /*
  * @Author: 文帅
  * @Date: 2022-03-08 16:37:24
- * @LastEditTime: 2022-03-08 17:35:36
- * @LastEditors: 文帅
+ * @LastEditTime: 2022-04-20 17:04:23
+ * @LastEditors: 狼牙
  * @Description:
  */
 
 const currentConfig = {
-  downloadAppUrl: 'https://m.winhc.cn/wx-mobile/download/index.html'
+  downloadAppUrl: 'https://m.winhc.cn/wx-mobile/download/index.html',
+  
+
 }
 
 const developmentConfig = {
   name: 'development',
   baseUrl: 'https://twww.winhc.net/api',
+  commonUrl:'https://tm.winhc.net/wx-mobile/newMobile/#/',
   ...currentConfig
 }
 const testConfig = {
   name: 'test',
   baseUrl: 'https://twww.winhc.net/api',
+  commonUrl:'https://tm.winhc.net/wx-mobile/newMobile/#/',
   ...currentConfig
 }
 const productionConfig = {
   name: 'production',
   baseUrl: 'https://www.winhc.net/api',
+  commonUrl:'https://m.winhc.cn/wx-mobile/newMobile/#/',
   ...currentConfig
 }
 

+ 29 - 14
src/components/Global/Avatar.vue

@@ -1,31 +1,41 @@
 <template>
-  <div v-if="state.isError" class="companyLogo" :style="{width:width}">
-    <p :style="{width:width}">{{ text }}</p>
+  <div v-if="state.isError" class="companyLogo" :style="{width:width,height:width}">
+    <p :style="{width:width,height:width}">{{ text }}</p>
   </div>
-  <img v-else :src="imgSrc" :style="{width:width}" class="avatar" @error="state.isError = true" />
+  <img v-else :src="state.imgSrc" :style="{width:width}" class="avatar" @error="error" />
 </template>
 
 <script lang="ts" setup>
-  import {reactive,onMounted, computed} from 'vue'
+import {reactive,onMounted, computed} from 'vue'
+import defCompanyLogo from '../../assets/img/comLogo.png'
   const state = reactive({
     bg:'',
-    isError:false
+    isError:false,
+    imgSrc:''
   })
-  const props = defineProps(['name','companyId','width'])
-
+  const props = defineProps(['name','companyId','width','defaultPic'])
   const text = computed(() => {
     return props.name.substr(0, 1)
   })
 
-  const imgSrc = computed(() => {
-    if(props.companyId.length === '32') {
-      return  `https://winhc.oss-cn-shanghai.aliyuncs.com/bigdata/companyLogo/${props.companyId}.jpg?x-oss-process=image/resize,m_pad,w_150,h_150,color_FFFFFF`
-    }else{
-      return `https://winhc.oss-cn-shanghai.aliyuncs.com/bigdata/humanLogo/${props.companyId}.jpg?x-oss-process=image/resize,m_fill,w_150,h_150,color_FFFFFF`
-    }
-  })
+  const error =()=>{
+     if(props.defaultPic && props.defaultPic == 'company'){
+          state.imgSrc = defCompanyLogo;
+      } else {
+          state.isError = true;
+      }
+  }
+
+ 
+
+  
   onMounted(() => {
     state.bg = 'bg' + Math.floor(Math.random() * 3)
+    if(props.companyId.length === 32) {
+       state.imgSrc = `https://winhc.oss-cn-shanghai.aliyuncs.com/bigdata/companyLogo/${props.companyId}.jpg?x-oss-process=image/resize,m_pad,w_150,h_150,color_FFFFFF`
+    }else{
+       state.imgSrc =  `https://winhc.oss-cn-shanghai.aliyuncs.com/bigdata/humanLogo/${props.companyId}.jpg?x-oss-process=image/resize,m_fill,w_150,h_150,color_FFFFFF`
+    }
   })
 
 
@@ -46,6 +56,11 @@
   display: flex;
   align-items: center;
   justify-content: center;
+  p{
+     display: flex;
+    align-items: center;
+    justify-content: center;
+  }
 :deep() .logoImg {
     position: absolute;
     width: 100%;

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

@@ -241,7 +241,6 @@
       entityType: useDemensionListStore().entityType
     }
     const res:any = await $axios.get('lawyer-workbench/risk/dimension/page',{params})
-    
     details.value = res
     loadingSkeleton.value = false
   }

+ 25 - 1
src/router/index.ts

@@ -48,8 +48,27 @@ const routes: Array<RouteRecordRaw> = [
     path: '/PoChanChongZhengDetail',
     name: 'PoChanChongZhengDetail',
     component: () => import('@/views/CustomPage/PoChanChongZhengDetail.vue')
+  },
+  {
+    path: '/FengXianSaoMiaoDet',
+    name: 'FengXianSaoMiaoDet',
+    component: () => import('@/views/CustomPage/FengXianSaoMiao/Company/FengXianSaoMiaoDet.vue')
+  },
+  {
+    path: '/FengXianMoreList',
+    name: 'FengXianMoreList',
+    component: () => import('@/views/CustomPage/FengXianSaoMiao/Company/FengXianMoreList.vue')
+  },
+  {
+    path: '/FengXianSaoMiaoPerDet',
+    name: 'FengXianSaoMiaoPerDet',
+    component: () => import('@/views/CustomPage/FengXianSaoMiao/Personal/FengXianSaoMiaoPerDet.vue')
+  },
+  {
+    path: '/SxXgDataDet',
+    name: 'SxXgDataDet',
+    component: () => import('@/views/CustomPage/SxXgDataDet.vue')
   }
-
 ]
 
 const router = createRouter({
@@ -63,6 +82,11 @@ router.beforeEach((to, from, next) => {
   // if (!to.path.includes('Det')) {
   // next({ path: '/demension' })
   // }
+  let sessionId:any = to.query.sessionId;
+  if(sessionId){
+    localStorage.setItem("qccSessionId",sessionId)//'210806152721X239EH08CUOXGEY50353'
+  }
+  
   next()
   // console.log(to)
 

+ 1 - 1
src/store/demensionDetail.ts

@@ -30,7 +30,7 @@ export const useDemensionDetailStore = defineStore({
     async getDetail() {
       const route = useRoute()
 
-      let res = {}
+      let res:any= {}
       if (route.query.fromBusiness !== 'dynamic') {
         const params = {
           id: route.query.id,

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
src/style/fxsm.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
src/style/fxsm.min.css


+ 381 - 0
src/style/fxsm.scss

@@ -0,0 +1,381 @@
+@import "./config.scss";
+body{
+    background: #F2F6F9;
+    font-size: 14px;
+}
+
+.van-tabs--line .van-tabs__wrap{
+    border-bottom: 1px solid #F8FAFC;
+}
+.fenxiansaomiaodet{
+    
+    &.oth{
+        background:#fff
+    }
+    .van-tabs{
+        width: 100%;
+    }
+    .fxsmmd-det{
+        width: 100%;
+        .fxsmmd-det-item{
+            background: #fff;
+            margin-top: 15px;
+            margin: 15px 8px 0;
+            border-radius: 8px;
+          
+            .fxsmmd-det-item-tl{
+                width: 100%;
+                height: 45px;
+                // padding: 15px 0;
+                margin: 0 15px;
+                border-bottom: 1px solid #F8FAFC;
+                color: #000;
+                font-weight: bold;
+                display: flex;
+                align-items: center;
+                .tl-tag{
+                    margin-left: 10px;
+                    color: #d55b60;
+                    font-weight: normal;
+                    font-size: 10px;
+                    text-align: center;
+                    width: 40px;
+                    height: 16px;
+                    position: relative;
+                    span{
+                        position: absolute;
+                        left: 0;
+                        right: 0;
+                        font-size: 10px;
+                    }
+                    &.gfx{
+                        color: #ED4033;
+                        background: rgba(237, 64, 51, 0.1);
+                    }
+                    &.js{
+                        color: #ED9233;
+                        background: rgba(237, 147, 51, 0.1);
+                        border: none;
+                       
+                    }
+                    &.ts{
+                        color:#EDBF33;
+                        background: rgba(237, 191, 51, 0.1);
+                    }
+                }
+            }
+            .fxsmmd-det-item-info{
+                width: 100%;
+                padding: 0 15px;
+                .fxsmmd-det-item-i{
+                    width: 100%;
+                     padding: 15px 0;
+                     border-bottom: 1px solid #F8FAFC;
+                     &:last-child{
+                         border-bottom: none;
+                     }
+                     &.oth{
+                         color:#088BFE;
+                     }
+                     .fxsmmd-det-item-mc{
+                         flex: 1;
+                         font-size: 14px;
+                         color: #242A32;
+                         .mc{
+                             line-height: 18px;
+                             em{
+                                color: #d55b60;
+                                font-style: normal; 
+                             }
+                             a{
+                               color:#088BFE;  
+                             }
+                         }
+                     }
+                     label{
+                        display: flex;
+                        align-items: center;
+                        padding-left: 5px;
+                        color:rgb(150, 150, 150)
+                    }
+                    
+                }
+            }
+        }
+       .fxsmmd-noData{
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            padding: 100px;
+            span{
+                margin-top: 15px;
+                color: #999;
+            }
+        }
+    }
+    .fxsmd-top{
+        background: #fff;
+        display: flex;
+        align-items: center;
+        padding: 10px 16px;
+        justify-content: space-between;
+        border-bottom: 1px solid #F8FAFC;
+        width: 100%;
+        .fxsmd-top-left{
+            display: flex;
+            align-items: center;
+            overflow: hidden;
+            white-space: nowrap;
+            flex: 1;
+            .fxsmd-top-left-img{
+                img{
+                    width: 36px;
+                    height: auto;
+                }
+                .fxsmd-top-left-img-block{
+                    background: #70d3e0;
+                    color: #fff;
+                    font-size: 18px;
+                    width: 30px;
+                    height: 30px;
+                    text-align: center;
+                    line-height: 30px;
+                }
+            }
+            .fxsmd-top-left-gs{
+                padding-left: 10px;
+                height: 26px;
+                line-height: 26px;
+                flex: 1;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+                font-weight: bold;
+            }
+        }
+        .fxsmd-top-right{
+            display: flex;
+            align-items: center;
+            font-size: 14px;
+            margin-left: 10px;
+            margin-left: 10px;
+            color: #0265D9;
+            img{
+                width: 16px;
+                height: 16px;
+                vertical-align: middle;
+                margin-right: 5px
+            }
+        }
+    }
+    .bzDetail{
+        background: #fff;
+        margin: 12px 8px;
+        border-radius: 12px;
+        padding-bottom: 16px;
+        width: 100%;
+        .bz-top{
+            padding: 16px 0;
+            display: flex;
+            text-align: center;
+            color: #242A32;
+            font-size: 12px;
+            .its{
+                flex: 1;
+                border-right: 1px solid #F8FAFC;
+                &:last-child{
+                    border-right: none;
+                }
+                &.gray{
+                    color: #A7AAAD;
+                }
+                .num{
+                    font-size: 13px;
+                    font-weight: bold;
+                    color: #ED4033;
+                    padding-top: 10px;
+                    &.gray{
+                        color: #A7AAAD;
+                    }
+                    span{
+                        color: #ED4033;
+                        font-size: 10px;
+                         color: #ED4033;
+                         font-weight: normal;
+                         &.gray{
+                            color: #A7AAAD;
+                        }
+                    }
+                }
+            }
+        }
+        .nz-btm{
+            background: #F2F3F4;
+            margin: 0 8px;
+            padding: 10px 0px;
+            border-radius: 10px;
+            display: flex;
+            .its{
+                flex: 1;
+                border-right: 1px solid #E9EAEB;
+                padding-left: 16px;
+                position: relative;
+                &:last-child{
+                    border-right: none;
+                }
+                .tp{
+                    color: #64696E;
+                    font-size: 12px;
+                }
+                .bt{
+                    color: #242A32;
+                    font-size: 13px;
+                    padding-top: 8px;
+                }
+                .gright{
+                    position: absolute;
+                    width: 14px;
+                    height: 14px;
+                    right: 10px;
+                    top: 10px;
+                }
+            }
+            
+        }
+    }
+    
+    .fxsmListInfo{
+        position: relative;
+        width: 100%;
+        .selectType{
+            background: #fff;
+            font-size: 12px;
+            height: 38px;
+            color: #919498;
+            display: flex;
+            align-items: center;
+            position: relative;
+            left: 0;
+            right: 0;
+            top: 0px;
+            z-index: 10;
+            border-bottom: 1px solid #F8FAFC;
+            .sitem{
+                flex: 1;
+                text-align: center;
+                height: 38px;
+                line-height: 38px; 
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                span{
+                    display: inline-block;
+                    max-width: 120px;
+                    overflow: hidden;
+                    white-space: nowrap;
+                    text-overflow: ellipsis;
+                    &.slt{
+                        color: #0265D9;
+                    }
+                }
+                
+                img{
+                    width: 14px;
+                    height: 14px;
+                }
+            }
+            .blockMask{
+                background: rgba(0 ,0 ,0,0.2);
+                position: absolute;
+                top: 38px;
+                left: 0;
+                right: 0;
+                z-index: 10;
+                bottom: 0;
+                width: 100%;
+                height: 0;
+                overflow: hidden;
+                transition: all 0.3s;
+                .selectItems{
+                    background: #fff;
+                    padding: 16px 0px 8px;
+                    border-radius: 0px 0px 12px 12px;
+                    .itemContainer{
+                        max-height: 340px;
+                        overflow: auto;
+                        .blocks{
+                            padding: 0 16px 16px;
+                            .btitle{
+                                color: #919498;
+                                font-size: 12px;
+                            }
+                            .items{
+                                display: flex;
+                                flex-wrap: wrap;
+                                width: 100%;
+                                .its{
+                                    width: 30%;
+                                    height: 33px;
+                                    color: #242A32;
+                                    font-size: 13px;
+                                    border: 1px solid #F2F6F9;
+                                    background: #F8FAFC;
+                                    text-align: center;
+                                    line-height: 31px;
+                                    margin-top: 8px;
+                                    margin-right: 3%;
+                                    border-radius: 4px;
+                                    &.slt{
+                                        background: #0265D9;
+                                        color: #fff;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    
+                    .bottomBtn{
+                        font-size: 15px;
+                        text-align: center;
+                        display: flex;
+                        justify-content: space-between;
+                        padding: 10px 16px;
+                        border-top: 1px solid #F8FAFC;
+                        .restBtn{
+                            width: 30%;
+                            height: 45px;
+                            background: #F2F6F9;
+                            border-radius: 4px;
+                            line-height: 45px;
+                            color: #64696E;
+                        }
+                        .confirmBtn{
+                            width: 60%;
+                            height: 45px;
+                            line-height: 45px;
+                            background: #0265D9;
+                            border-radius: 4px;
+                            color: #FFFFFF;
+                        }
+                    }
+                }
+            }
+        
+        }
+        .scrollInfo{
+            .fxsm-more-item{
+                width: 100%;
+                display: flex;
+                justify-content: center;
+                color: #0265D9;
+                font-size: 14px;
+                border-top: 1px solid #ebedf0;
+                padding: 18px 0;
+                align-items: center;
+                font-weight: bold;
+            }
+        }
+        
+    }
+}

+ 3 - 3
src/utils/app.ts

@@ -2,8 +2,8 @@
 /*
  * @Author: 文帅
  * @Date: 2022-03-08 15:35:36
- * @LastEditTime: 2022-03-08 16:02:08
- * @LastEditors: 文帅
+ * @LastEditTime: 2022-04-20 14:50:22
+ * @LastEditors: 狼牙
  * @Description:
  */
 declare const window: Window & { WebViewJavascriptBridge: any, WVJBCallbacks: any }
@@ -14,7 +14,7 @@ class h5JumpApp {
       bridge.callHandler(method, data || {},
         function callback(response: unknown) {
           // eslint-disable-next-line no-undef
-          log('JS got response', response)
+          console.log('JS got response', response)
         }
       )
     })

+ 156 - 0
src/utils/sfaj.ts

@@ -0,0 +1,156 @@
+/*
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-20 13:47:01
+ * @LastEditTime: 2022-04-20 14:03:38
+ * @LastEditors: 狼牙
+ */
+type RouteInter = {
+    name:string,
+    code:string,
+    route:string
+} 
+const EnterpriseEnum:RouteInter[]= [
+    {name:'注册资本',code:'registered_capital',route:'ZhuCeZiBen'},
+    {name:'实缴资本',code:'paid_capital',route:'ShiJiaoZiBen'},
+    {name:'未缴资本',code:'unpaid_capital',route:'WeiJiaoZiBen'},
+    {name:'增资记录',code:'increase_record',route:'ZengZiJiLu'},
+    {name:'银行账户',code:'bank_account',route:'YingHangZhangHu'},
+    {name:'股权出质质权人',code:'pledgee_equity',route:'GuQuanChuZhiZhiQuanRen'},
+    {name:'股权出质',code:'pledge_equity',route:'GuQuanChuZhi'},
+    {name:'参股企业',code:'equity_participation',route:'CanGuQiYe'},
+    {name:'控股企业',code:'holding_shares',route:'KongGuQiYe'},
+
+    {name:'分支机构',code:'eci_branch',route:'FenZhiJiGou'},
+    {name:'动产抵押',code:'mortgage',route:'DongChanDiYa'},
+    {name:'土地抵押',code:'land_mortgage',route:'TuDiDiYa'},
+    {name:'土地抵押抵押权人',code:'land_mortgagee',route:'JYTuDiDiYaDiYaQuanRen'},
+    {name:'土地抵押抵押人',code:'land_mortgagor',route:'JYTuDiDiYaDiYaRen'},
+    {name:'土地公示',code:'land_public',route:'TuDiGongShi'},
+    {name:'购地信息',code:'land_purchase',route:'GouDiXinXi'},
+    {name:'土地转让',code:'land_transfer',route:'TuDiZhuanRang'},
+    {name:'直接债权',code:'direct_debt',route:'ZhiJieZaiQuan'},
+    {name:'间接债权',code:'indirect_debt',route:'JianJieZaiQuan'},
+    {name:'招投标',code:'eci_bidding',route:'ZhaoTouBiao'},
+    {name:'特殊资质',code:'special_qualification',route:'TeShuZiZhi'},
+    {name:'进出口信用证',code:'import_export_credit',route:'JinChuKouXinYongZheng'},
+    {name:'行政许可',code:'permission_eci',route:'XingZhenXuKe'},
+    {name:'商标',code:'trade_mark',route:'ShangBiao'},
+    {name:'专利',code:'eci_patent',route:'ZhuanLi'},
+    {name:'软件著作权',code:'soft_copy_right',route:'RuanJianZhuZuoQuan'},
+    {name:'作品著作权',code:'copy_right',route:'ZuoPinZhuZuoQuan'},
+    {name:'网站域名',code:'web_site',route:'ZhuCeWangZhan'},
+    {name:'融资信息',code:'company_financing',route:'RongZhiXinXi'},
+    {name:'债券信息',code:'bond_info',route:'ZhaiQuanXinXi'},
+    {name:'注册地址',code:'registered_address',route:'ZhuCeDiZhi'},
+    {name:'个体工商户',code:'individual_business',route:'GeTiGongShangHu'},
+    {name:'一人有限责任公司',code:'liability_company',route:'YiRenYouXianZeRenGongSi'},
+    {name:'个人独资企业',code:'sole_company',route:'GeRenDuZiQiYe'},
+    {name:'产品信息',code:'product_info',route:'ChanPinXinXi'},
+    {name:'主要客户',code:'eci_customers',route:'ZhuYaoKeHu'},
+    {name:'信用评级',code:'credit_rating',route:'XinYongPingJi'},
+    {name:'税务信用',code:'tax_credit',route:'ShuiWuXinYong'},
+    {name:'供应商',code:'eci_supply',route:'GongYingShang'},
+    {name:'工商信息',code:'eci_info',route:'GongShangXinXi'},
+    {name:'股东信息',code:'shareholder_info',route:'GuDongXinXi'},
+    {name:'法定代表人',code:'legal_representative',route:''},
+    {name:'最终受益人',code:'final_beneficiary',route:'ZuiZhongShouYiRen'},
+    {name:'主要人员',code:'eci_employees',route:'ZhuYaoRenYuan'},
+    {name:'对外投资',code:'eci_invest',route:'DuiWaiTouZi'},
+    {name:'历史变更',code:'eci_changes',route:'LiShiBianGeng'},
+    {name:'招聘信息',code:'eci_recruitment',route:'ZhaoPinXinxi'},
+    {name:'企业年报',code:'annual_report',route:'QiYeNianBao'},
+    {name:'抽查检查',code:'check_info',route:'ChouChaJianCha'},
+    {name:'新闻舆情',code:'news_neutral',route:'XinWenYuQing'},
+    {name:'简易注销',code:'simple_cancel',route:'JianYiZhuXiao'},
+    {name:'严重违法',code:'illegal_info',route:'YanZhongWeiFaXingWei'},
+    {name:'减资记录',code:'reduce_record',route:'JianZiJiLu'},
+    {name:'土地转让出让人',code:'land_transfer_old',route:'TuDiZhuanRang'},
+    {name:'土地转让受让人',code:'land_transfer_new',route:'TuDiZhuanRangShouRangRen'},
+    {name:'经营异常',code:'exception',route:'JingYingYiChang'},
+    {name:'行政处罚',code:'penalties',route:'XingZhengChuFa'},
+    {name:'行政处罚_信用中国',code:'penalties_creditchina',route:'XingZhengChuFa'},
+    {name:'环保处罚',code:'environmental_penalty',route:'HuanBaoChuFa'},
+    {name:'税收违法',code:'tax_violation',route:'ShuiShouWeiFa'},
+    {name:'欠税公告',code:'own_tax',route:'QianShuiGongGao'},
+    {name:'公示催告',code:'public_announcement',route:'GongShiCuiGao'},
+    {name:'新闻舆情消极',code:'news_negative',route:'XinWenYuQingXiaoJi'},
+    {name:'立案信息',code:'case_filing',route:'LiAnXinXi'},
+    {name:'开庭公告',code:'open_announcement',route:'KaiTingGongGao'},
+    {name:'法院公告',code:'court_announcement',route:'FaYuanGongGao'},
+    {name:'司法案件',code:'judgement_doc',route:''},//原生自跳转
+    {name:'股权冻结',code:'equity_freeze',route:'GuQuanDongJie'},
+    {name:'被执行人',code:'executed_person',route:'BeiZhiXingRen'},
+    {name:'失信情况',code:'dishonesty',route:'ShiXinQingKuang'},
+    {name:'历史失信',code:'history_dishonesty',route:'LiShiShiXinQingKuang'},
+    {name:'破产重整',code:'bankruptcy',route:'PoChanChongZheng'},
+    {name:'解散清算',code:'eci_liquidation',route:'QingSuanXinXi'},
+    {name:'司法拍卖',code:'judicial_auction',route:'SiFaPaiMai'},
+    {name:'询价评估结果',code:'evaluation_result',route:'XunJiaPingGu'},
+    {name:'询价评估',code:'evaluation',route:'XunJiaPingGu'},
+    {name:'行政许可信用中国',code:'permission_china',route:'XingZhenXuKe'},
+    {name:'历史工商信息',code:'history_eci',route:'lsGongShangXinXi'},
+    {name:'历史股东',code:'history_sh',route:'lsGuDong'},
+    {name:'历史法定代表人',code:'history_op',route:'lsFaDingDaiBiaoRen'},
+    {name:'历史高管',code:'history_emp',route:'lsGaoGuan'},
+    {name:'历史对外投资',code:'history_invest',route:'LiShiDuiWaiTouZi'},
+    {name:'历史被执行人',code:'history_bz',route:'LiShiBeiZhiXingRen'},
+    {name:'历史法院公告',code:'history_cta',route:'LiShiFaYuanGongGao'},
+    {name:'历史动产抵押',code:'history_mle',route:'LiShiDongChanDiYa'},
+    {name:'历史股权出质',code:'history_ple',route:'LiShiGuQuanChuZhi'},
+    {name:'历史行政处罚',code:'history_adp',route:'LiShiXingZhengChuFa'},
+    {name:'历史行政许可',code:'history_adl',route:'LiShiXingZhengXuKe'},
+    {name:'实际控制人',code:'suspected_actual_control',route:'ShiJiKongZhiRen'},
+    {name:'限制高消费',code:'limit_high_consumption',route:'JYXianZhiGaoXiaoFei'},
+    {name:'裁判文书',code:'wenshu',route:'CaiPanWenShu'},
+    {name:'终本案件',code:'final_case',route:'ZhongBenAnJian'},
+    {name:'送达公告',code:'send_announcement',route:'SongDaGongGao'},
+    {name:'财产线索',code:'finance_dynamic',route:''},//原生自跳转
+    {name:'限制出境',code:'outbound_restrictions',route:'XianZhiChuJing'},
+    {name:'双随机抽查',code:'double_random',route:'ShuangSuiJiChouCha'},
+
+]
+const DimensionEnum:RouteInter[] = [
+    {name:'法定代表人',code:'legal_representative',route:'DanRenFaRenGeRen'},
+    {name:'对外投资',code:'investment',route:'DuiwaiTouZiGeRen'},
+    {name:'在外任职',code:'work_outside',route:'ZaiWaiRenZhiGeRen'},
+    {name:'合作伙伴',code:'partner',route:'HeZuoHuoBan'},
+    {name:'数据分析',code:'data_analysis',route:'ShuJuFenXi'},
+    {name:'人物百科',code:'people_encyclopedia',route:'RenWuBaiKe'},
+    {name:'被执行人',code:'executed_person',route:'BeiZhiXingRen'},
+    {name:'失信信息',code:'dishonesty',route:'ShiXinQingKuang'},
+    {name:'限制高消费',code:'limit_high_consumption',route:'JYXianZhiGaoXiaoFei'},
+    {name:'限制出境',code:'outbound_restrictions',route:'XianZhiChuJing'},
+    {name:'终本案件',code:'final_case',route:'ZhongBenAnJian'},
+    {name:'股权出质',code:'pledge_equity',route:'GuQuanChuZhi'},
+    {name:'股权出质_质权人',code:'pledgee_equity',route:'GuQuanChuZhiZhiQuanRen'},
+    {name:'股权质押',code:'equity_pledge',route:''},
+    {name:'股权冻结',code:'equity_freeze',route:'GuQuanDongJie'},
+    {name:'开庭公告',code:'open_announcement',route:'KaiTingGongGao'},
+    {name:'法院公告',code:'court_announcement',route:'FaYuanGongGao'},
+    {name:'立案信息',code:'case_filing',route:'LiAnXinXi'},
+    {name:'裁判文书',code:'wenshu',route:'CaiPanWenShu'},
+    {name:'送达公告',code:'send_announcement',route:'SongDaGongGao'},
+    {name:'询价评估',code:'evaluation',route:'XunJiaPingGu'},
+    {name:'询价评估_结果',code:'evaluation_result',route:'XunJiaPingGu'},
+    {name:'行政处罚',code:'penalties',route:'XingZhengChuFa'},
+    {name:'行政处罚_信用中国',code:'penalties_creditchina',route:'XingZhengChuFa'},
+    {name:'税收违法',code:'tax_violation',route:'ShuiShouWeiFa'},
+    {name:'破产信息',code:'bankruptcy',route:'PoChanChongZheng'},
+    {name:'经营异常',code:'exception',route:'JingYingYiChang'},
+    {name:'抽查检查',code:'check_info',route:'ChouChaJianCha'},
+    {name:'双随机抽查',code:'double_random',route:'ShuangSuiJiChouCha'},
+    {name:'严重违法',code:'illegal_info',route:'YanZhongWeiFaXingWei'},
+    {name:'土地抵押',code:'land_mortgage',route:'TuDiDiYa'},
+    {name:'土地抵押抵押权人',code:'land_mortgagee',route:'JYTuDiDiYaDiYaQuanRen'},
+    {name:'土地抵押抵押人',code:'land_mortgagor',route:'JYTuDiDiYaDiYaRen'},
+    {name:'动产抵押',code:'mortgage',route:'DongChanDiYa'},
+    {name:'欠税公告',code:'own_tax',route:'QianShuiGongGao'},
+    {name:'公示催告',code:'public_announcement',route:'GongShiCuiGao'},
+    {name:'简易注销',code:'simple_cancel',route:'JianYiZhuXiao'},
+]
+
+export {
+    EnterpriseEnum,DimensionEnum
+}

+ 37 - 0
src/utils/utils.ts

@@ -1,8 +1,10 @@
 import { DemensionPagesListInter, DemensionPagesInter } from './../js-pages/types'
 import { useRoute } from 'vue-router'
+import router from '@/router'
 import pagesArr from '@/js-pages'
 import dayjs from 'dayjs'
 import { config } from '../../config'
+import h5JumpApp from './app'
 
 
 
@@ -77,6 +79,41 @@ export const $getDemension = (routerName?: string) => {
   }
 }
 
+export const $goDetail = (url:string,type?:string)=>{//跳详情
+  let tempUrl = url + (url.indexOf('?') == -1 ? '?' : '&') + 'sessionId=' + localStorage.getItem('qccSessionId')
+  if(type == 'ws'){
+      tempUrl += '&immersion=all'
+  }
+  
+  //开发环境直接跳转
+  if(import.meta.env.MODE === 'development'){
+    router.push('/'+url)
+    return
+  }
+
+  // console.log('tempUrl=', tempUrl)
+  // if (new h5JumpApp().systemJudge() == 'Android') {
+  //     if(type == 'ws'){
+  //         winhc.openLegalServiceWebPage(config.commonUrl + tempUrl,"Y")
+  //     }else{
+  //         winhc.qccDetail(tempUrl)
+  //     }
+  // } else {
+  //     if(type == 'ws'){//文书详情是自定义头部
+  //         const obj = {
+  //             pageUrl: config.commonUrl + tempUrl, // 页面打开连接
+  //             immersion:'all'  //是否是沉浸式标题, Y  是沉浸式
+  //         }
+  //         new h5JumpApp().ocMethod('openPageWithShareBtn', obj)
+  //     }else{
+  //       new h5JumpApp().ocMethod('qccDetail', {
+  //             "url": tempUrl,
+  //         })
+  //     }
+     
+  // }
+}
+
 //跳转外部URL
 export const $goOuterUrl = (url: string) => {
   window.open(url)

+ 307 - 0
src/views/CustomPage/FengXianSaoMiao/Company/FengXianMoreList.vue

@@ -0,0 +1,307 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-19 19:44:19
+ * @LastEditTime: 2022-04-20 19:28:43
+ * @LastEditors: 狼牙
+-->
+<template>
+    <div id="FengXianMoreList">
+        <div class="content">
+          <van-list @load="onLoad" offset='200'>
+            <van-row class="fxsmmd-det-item">
+                    <van-row class="fxsmmd-det-item-tl">
+                        <span>{{$route.query.types}}</span><div :class="['tl-tag',dataList[0]&&dataList[0].riskLevel=='4'?'gfx':dataList[0]&&dataList[0].riskLevel=='3'?'js':dataList[0]&&dataList[0].riskLevel=='2'?'ts':'']"><span>{{filterRiskLevel(dataList[0]&&dataList[0].riskLevel)}}</span></div>
+                    </van-row>
+                    <van-row class="fxsmmd-det-item-info">
+                        <van-row class="fxsmmd-det-item-i" type='flex' justify='space-between' align='center' v-for="(e,idx) in dataList" :key='idx' @click="goList(e)">
+                            <van-row type='flex' justify='space-between'  align='center' class="fxsmmd-det-item-mc">
+                                <van-col class="mc" v-html="filterDesc(e.description)"></van-col> 
+                            </van-row>
+                            <label>
+                                共<span style="color:#ED4033">{{e?.count}}</span>条 
+                                <van-icon name="arrow" color='#969696' class="fxsmmd-det-item-jt"/>
+                            </label>
+                        </van-row>
+                    </van-row>
+                </van-row>
+          </van-list>
+        </div>
+    </div>
+</template>
+
+<script lang='ts' setup>
+    import $axios from "@/api";
+    import {EnterpriseEnum} from '@/utils/sfaj';
+    import { $goDetail } from '@/utils/utils';
+    import { ref,reactive,toRefs, onMounted } from 'vue';
+    import { useRoute } from 'vue-router';
+
+    type SendInter = {
+        entityType: number,
+        riskScanType: string,
+        entityName: string,
+        entityId?:string,
+        types: Array<string>,
+        pageNum: number,
+        pageSize: number
+    }
+
+    const state = reactive<any>({
+        dataList:[],
+        loading:false,
+        pageNum:1,
+        totalPage:0,
+        totalNum:''
+    });
+    const { dataList,loading,pageNum,totalPage,totalNum } = toRefs(state);
+    const route = useRoute()
+    document.title= route.query.types
+
+    onMounted(()=>{
+        getData()
+    })
+
+    const getData = async()=>{
+        try {
+            state.loading = true
+            
+            let sendData:SendInter = {
+                entityType:route.query.entityType,
+                riskScanType:route.query.riskScanType == 'zsfx'?'1':route.query.riskScanType == 'glfx'?'2':'',
+                entityName: route.query.entityName,
+                types:[route.query.types],
+                pageNum: state.pageNum,
+                pageSize: 20
+            }
+            if(route.query.entityId && route.query.entityId != 'undefined'){
+                sendData.entityId = route.query.entityId
+            }
+
+            let res = await $axios.post('lawyer-workbench/risk/summary/relate/page',sendData)
+            console.log("res==", res)
+           
+            state.dataList = state.dataList.concat(res);
+            state.totalPage = res.totalPage;
+            state.totalNum = res.totalNum;
+            state.loading = false
+        } catch (err) {
+            state.loading = false
+            console.log(err)
+        }
+    }
+
+    const onLoad = ()=>{
+        if (state.loading && state.totalPage > state.pageNum) {
+            state.pageNum++;
+            getData()
+        }
+    }
+
+    const goDet =(val:any)=> {
+        localStorage.setItem("ztbDet",JSON.stringify(val))
+        $goDetail("ZhaoTouBiaoDet")
+    }
+    const filterRiskLevel =(type:string):string=>{
+        let name = "";
+        if(type){
+            name = type == '1'?'良好':type == '2'?'提示':type == '3'?'警示':type == '4'?'高风险':''
+        }
+        return name
+    }
+    const filterDesc = (des:string):string=>{
+        return des.replace(/ /g,'');
+    }
+    const goList=(item:any)=>{
+        let routeUrl = '';
+        EnterpriseEnum.forEach((e)=>{
+            if(e.code == item.dimensionCode){
+                routeUrl =e.route + '?companyName='+route.query.entityName + "&companyId="+item.companyId
+            }
+        })
+        if(routeUrl){
+            //  window.location.hash= '#/' + route;
+            $goDetail(routeUrl)
+        }
+    
+    }
+  
+
+    // export default {
+    //     name: "FengXianMoreList",
+    //     data() {
+    //         return {
+    //             dataList: [],
+    //             loading: false,
+    //             pageNum: 1,
+    //             totalPage: 0,
+    //             totalNum: "", // 总条数
+    //         }
+    //     },
+    //     methods: {
+    //         onLoad() {
+    //             if (!this.loading && this.totalPage > this.pageNum) {
+    //                 this.pageNum++;
+    //                 this.getData()
+    //             }
+    //         },
+    //         async getData() {
+    //             try {
+    //                 this.loading = true
+    //                 if (this.pageNum != 1) {
+    //                     window.globalVariables.cancelLoadingOnce = true
+    //                 }
+    //                 let sendData = {
+    //                     entityType:this.$route.query.entityType,
+    //                     riskScanType:this.$route.query.riskScanType == 'zsfx'?'1':this.$route.query.riskScanType == 'glfx'?'2':'',
+    //                     // entityId : this.$route.query.entityId,
+    //                     entityName: this.$route.query.entityName,
+    //                     types:[this.$route.query.types],
+    //                     pageNum: this.pageNum,
+    //                     pageSize: '20'
+    //                 }
+    //                 if(this.$route.query.entityId && this.$route.query.entityId != 'undefined'){
+    //                     sendData.entityId = this.$route.query.entityId
+    //                 }
+
+    //                 let res = await $axios.post('lawyer-workbench/risk/summary/relate/page',sendData)
+    //                 console.log("res==", res)
+    //                 let dataList = res;
+    //                 this.dataList = this.dataList.concat(dataList);
+    //                 this.totalPage = res.totalPage;
+    //                 this.totalNum = res.totalNum;
+    //                 this.loading = false
+    //             } catch (err) {
+    //                 this.loading = false
+    //                 console.log(err)
+    //             }
+    //         },
+    //         goDet(val) {
+    //             localStorage.setItem("ztbDet",JSON.stringify(val))
+    //             $goDetail("ZhaoTouBiaoDet")
+    //         },
+    //         filterRiskLevel(type){
+    //             let name = "";
+    //             if(type){
+    //                 name = type == '1'?'良好':type == '2'?'提示':type == '3'?'警示':type == '4'?'高风险':''
+    //             }
+    //             return name
+    //         },
+    //          filterDesc(des){
+    //             return des.replace(/ /g,'');
+    //         },
+    //         goList(item) {
+    //             let route = '';
+    //             EnterpriseEnum.forEach((e)=>{
+    //                 if(e.code == item.dimensionCode){
+    //                     route =e.route + '?companyName='+this.$companyName + "&companyId="+item.companyId
+    //                 }
+    //             })
+    //             if(route){
+    //                 //  window.location.hash= '#/' + route;
+    //                 $goDetail(route)
+    //             }
+            
+    //         },
+
+    //     },
+    //     async mounted() {
+            
+
+    //     }
+    // };
+</script>
+
+<style scoped lang="scss">
+     @import "@/style/fxsm.scss"; 
+    #FengXianMoreList {
+        display: flex;
+        flex-direction: column;
+        font-size: 14px;
+        .content {
+            flex: 1;
+            overflow: auto;
+        }
+        .fxsmmd-det-item{
+            background: #fff;
+            // margin-top: 15px;
+            
+            .fxsmmd-det-item-tl{
+                padding: 0 15px;
+                height: 45px;
+                border-bottom: 1px solid #F8FAFC;
+                border-top: 1px solid #F8FAFC;
+                color: #000;
+                font-weight: bold;
+                display: flex;
+                align-items: center;
+                width: 100%;
+                .tl-tag{
+                    margin-left: 10px;
+                    color: #d55b60;
+                    font-weight: normal;
+                    font-size: 10px;
+                    text-align: center;
+                    width: 40px;
+                    height: 16px;
+                    position: relative;
+                    span{
+                        position: absolute;
+                        left: 0;
+                        right: 0;
+                        font-size: 10px;
+                    }
+                    &.gfx{
+                        color: #ED4033;
+                        background: rgba(237, 64, 51, 0.1);
+                    }
+                    &.js{
+                        color: #ED9233;
+                        background: rgba(237, 147, 51, 0.1);
+                        border: none;
+                        
+                    }
+                    &.ts{
+                        color:#EDBF33;
+                        background: rgba(237, 191, 51, 0.1);
+                    }
+                }
+            }
+            .fxsmmd-det-item-info{
+                padding: 0 15px;
+                .fxsmmd-det-item-i{
+                        padding: 15px 0;
+                        border-bottom: 1px solid #F8FAFC;
+                        &:last-child{
+                            border-bottom: none;
+                        }
+                        &.oth{
+                            color:#088BFE;
+                        }
+                        .fxsmmd-det-item-mc{
+                            flex: 1;
+                            .mc{
+                                line-height: 18px;
+                                color: #242A32;
+                                em{
+                                color: #d55b60;
+                                font-style: normal; 
+                                }
+                                a{
+                                color:#088BFE;  
+                                }
+                            }
+                        }
+                        label{
+                        display: flex;
+                        align-items: center;
+                        padding-left: 5px;
+                        color:rgb(150, 150, 150)
+                    }
+                    
+                }
+            }
+        }
+    }
+</style>

+ 293 - 0
src/views/CustomPage/FengXianSaoMiao/Company/FengXianSaoMiaoDet.vue

@@ -0,0 +1,293 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-19 19:42:09
+ * @LastEditTime: 2022-04-20 15:30:18
+ * @LastEditors: 狼牙
+-->
+<template>
+    <van-row :class="['fenxiansaomiaodet',loadingSkeleton?'oth':'']">
+       <van-row class="fxsmmd-det">
+          <van-row class='fxsmd-top'>
+            <van-row class="fxsmd-top-left">
+                <van-col class="fxsmd-top-left-img">
+                    <Logo :name='$route.query.companyName' :companyId='$route.query.companyId' defaultPic='company' width='36px'/>
+                </van-col>
+                <van-col class="fxsmd-top-left-gs">{{companyName}}</van-col>
+            </van-row>
+          </van-row>
+        <div class="bzDetail" v-if="sXData.numVOList">
+            <div class="bz-top">
+                <div class="its" v-for="(item,index) in numVOList" :key="index" @click="goNativeHandle(item)" :class="{'gray':(item.currentNum + item.historyNum) == 0}">
+                    <p>{{filteTypes(item.creditPunishmentType)}}</p>
+                    <p class="num" :class="{'gray':(item.currentNum) == 0}">{{item.currentNum}}<span :class="{'gray':(item.historyNum) == 0}">(历史{{item.historyNum}})</span></p>
+                </div>
+            </div>
+            <div class="nz-btm" @click="goBzNativeHandle">
+                <div class="its">
+                    <p class="tp">累计被执行人总金额</p>
+                    <p class="bt">{{sXData.totalExecAmount}}万元</p>
+                </div>
+                <div class="its">
+                    <p class="tp">疑似当前欠款总金额</p>
+                    <p class="bt">{{sXData.totalNoExecAmount}}万元</p>
+                    <img src="@/assets/img/goRight.png" alt="" class="gright">
+                </div>
+            </div>
+        </div>
+        <van-skeleton title :row="20" :loading="loadingSkeleton"> 
+            <van-tabs 
+                v-model="activeName" 
+                @change="onChangeTab"
+                color="#088BFE"
+                title-active-color="#088BFE"
+                swipeable
+                line-width='30px'
+                sticky
+            >
+                <van-tab :title="'自身风险'+zsCount" name="zsfx" title-style="font-weight:bold" :style='minstyle'>
+                   <yhc-zishenfenxian :zishenfengxianList='zishenfengxianList' :companyName ="companyName" :personName="personName" types="自身风险" fixed.sync="fixed" @getGuanLianData="getGuanLianData" :activeName="activeName" :showNoData="showZsNoData"></yhc-zishenfenxian>
+                </van-tab>
+                <van-tab :title="'关联风险'+glCount" name="glfx" title-style="font-weight:bold" :style='minstyle'>
+                    <yhc-zishenfenxian :zishenfengxianList='guanlianfengxianList' :companyName ="companyName" :personName="personName" types="关联风险" fixed.sync="fixed" @getGuanLianData="getGuanLianData" :activeName="activeName" :showNoData="showGlNoData"></yhc-zishenfenxian>
+                </van-tab>
+                 
+            </van-tabs>
+        </van-skeleton>
+       </van-row>
+       <!-- <VipQuan :isShow='isShowQuan' @changeShow="changShow" :quanData="quanData" @refreshHandle="refreshHandle"></VipQuan> -->
+    </van-row>
+</template>
+
+<script lang="ts">
+import $axios from '@/api'
+import fxcomponent from './components/tabs.vue';
+import Logo from '@/components/Global/Avatar.vue';
+import { $goDetail } from "@/utils/utils"
+// import VipQuan from '../../components/VipQuan.vue'
+export default {
+    data() {
+        return {
+            loadingSkeleton:true,
+            personName:this.$route.query.personName,
+            companyName:this.$route.query.companyName,//河南亚华安全玻璃有限公司
+            minstyle:{
+                minHeight:(document.body.clientHeight-90)+'px'
+            },
+            fixed:false,
+            activeName: 'zsfx',
+            zsCount:0,
+            glCount:0,
+            guanlianfengxianList:[],
+            zishenfengxianList:[],
+            showZsNoData:false,
+            showGlNoData:false,
+            isFirstZs:true,
+            isFirstGl:true,
+            isMonitor:false,
+
+            numVOList:[],
+            sXData:{},
+            isShowQuan:false,
+            quanData:{},
+            voucherCode:''
+        }
+    },
+    components: {
+        Logo,
+        'yhc-zishenfenxian':fxcomponent,
+        // VipQuan
+    },
+    mounted () {
+        document.title = '风险扫描'
+        //获取是自身风险还是个人风险
+        this.activeName = this.$route.query.fengxianType || 'zsfx'
+        this.zsCount = this.$route.query.zsCount || 0;
+        this.glCount = this.$route.query.glCount || 0;
+        
+        this.loadingSkeleton = true;
+        window.callBackOpenVipPopup= this.getGuanLianData;
+        if(this.$signTagKey){
+            this.voucherCode = this.$signTagKey;
+        }
+        this.getRiskInfo();
+        this.getBzDataInfo();
+        this.getGuanLianData();
+
+        window.addEventListener('scroll', this.handleScroll, true);
+    },
+    destroyed () {
+        window.removeEventListener('scroll', this.handleScroll, true);
+    },
+    methods: {
+        changShow(){
+            this.isShowQuan = false;
+        },
+        refreshHandle(data){
+            this.isShowQuan = false;
+            this.voucherCode = data;
+            this.$nextTick(()=>{
+                this.getGuanLianData()
+            })
+        },
+        handleScroll () {
+            let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
+            // console.log("scrollTop====",scrollTop)
+            let limitTop = this.sXData.numVOList?220:57;
+            if(scrollTop >= limitTop){
+                this.fixed = true;
+            }else{
+                this.fixed =false
+            }
+        },
+        goNativeHandle(item){
+            if(item.currentNum + item.historyNum == 0){
+                return
+            }
+            if(item.currentNum != 0 ){
+                $goDetail(item.currentRouting)
+                return
+            }
+            if(item.currentNum == 0 && item.historyNum > 0){
+                $goDetail(item.historyRouting)
+                return
+            }
+        },
+        goBzNativeHandle(){
+            let sXData = this.sXData;
+            $goDetail(`SxXgDataDet?totalExecAmount=${sXData.totalExecAmount}&totalNoExecAmount=${sXData.totalNoExecAmount}&zxrTotalExecAmount=${sXData.zxrTotalExecAmount}&finalCaseExecAmount=${sXData.finalCaseExecAmount}&finalCaseNoExecAmount=${sXData.finalCaseNoExecAmount}&noExecPercent=${sXData.noExecPercent || ''}`)
+        },
+
+        //获取失信限制高数据
+        async getBzDataInfo(){
+            try {
+                let sendData = {
+                    // 'entityId':this.$route.query.companyId,
+                    'entityName':this.companyName,
+                    'entityType':0
+                }
+                let res = await $axios.post('winhc-justice-service/credit/count',sendData)
+                console.log("失信限高=",res)
+                this.sXData = res || {};
+                this.numVOList = res.numVOList;
+                    
+            } catch (error) {
+                
+            }
+        },
+
+        async getRiskInfo(){//获取自身和关联风险数量
+            try {
+                let sendData = {
+                    'entityType':'2',
+                    'keyWord':this.companyName
+                }
+                let res = await $axios.get('lawyer-workbench/risk/summary',{params:sendData})
+                 console.log('风险数量=',res);
+                 res.forEach((e)=>{
+                    if(e.riskScanType == '1'){
+                        this.zsCount = e.total || 0;
+                    }else if(e.riskScanType == '2'){
+                        this.glCount = e.total || 0;
+                    }
+                })
+            } catch (error) {
+                
+            }
+        },
+
+        getGuanLianData:async function(data={}){
+            let sendData = {
+                    entityType:'2',
+                    riskScanType:this.activeName == 'zsfx'?'1':this.activeName == 'glfx'?'2':'',
+                    entityId:this.$route.query.companyId,
+                    entityName:this.companyName
+            }
+            sendData = {...sendData,...data}
+            if(this.voucherCode){
+                sendData.voucherCode = this.voucherCode;
+            }
+             try {
+                let res = await $axios.post('lawyer-workbench/risk/summary/infos',sendData)
+                console.log('企业风险扫描=',res);
+                if(this.activeName == 'zsfx'){
+                    this.isFirstZs = false;
+                    if(res.length == 0){
+                        this.showZsNoData = true;
+                    }else{
+                        this.showZsNoData = false;
+                    }
+                    this.zishenfengxianList = res;
+                }else if(this.activeName == 'glfx'){
+                    this.isFirstGl = false;
+                    if(res.length == 0){
+                        this.showGlNoData = true;
+                    }else{
+                        this.showGlNoData = false;
+                    }
+                    this.guanlianfengxianList = res ;
+                }
+                   
+                this.loadingSkeleton = false;
+            } catch (error) {
+                this.loadingSkeleton = false;
+                if(error.errorCode == '79'){
+                    let tempData = JSON.parse(error.errorMsg)
+                    if(tempData.voucherCount > 0){
+                        this.isShowQuan = true;
+                        this.quanData = tempData;
+                    }else{//VIP购买弹框
+                        this.$openBuyVipPopup(12)
+                    }
+                }
+            }
+        },
+        onChangeTab(name,title) {
+            // console.log('name=',name)+'---' +title;
+            this.activeName = name;
+            if(name == 'zsfx'){
+                if(this.isFirstZs){
+                    this.getGuanLianData()
+                }
+            }else if(name == 'glfx'){
+                if(this.isFirstGl){
+                     this.getGuanLianData()
+                }
+            }
+           
+        },
+        getXZCFNum(list){
+            let num = 0;
+            if(list.__proto__.constructor == Array){//instanceof
+                 list.forEach(e => {
+                    num +=e.count*1;
+                });
+               
+            }else{
+                num = list
+            }
+            return num
+        },
+        filteTypes(val){
+            let type = ""
+            if(val){
+                switch (val) {
+                    case 1:type = '被执行人'; break;
+                    case 2:type = '失信信息'; break;
+                    case 3:type = '限制高消费'; break;
+                    case 4:type = '终本案件'; break;
+                    
+                }
+            }
+            return type
+        }
+    },
+    
+    
+}
+</script>
+
+<style lang='scss'>
+    @import "@/style/fxsm.scss"; 
+</style>

+ 461 - 0
src/views/CustomPage/FengXianSaoMiao/Company/components/tabs.vue

@@ -0,0 +1,461 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-19 19:44:34
+ * @LastEditTime: 2022-04-20 15:29:12
+ * @LastEditors: 狼牙
+-->
+<template>
+  <van-row>
+      <div class="fxsmListInfo">
+        <div :style="fixed?{height:'38px'}:{}">
+            <div class="selectType" :style="fixed?fixedStyle:''">
+                <div class="sitem" @click="selectTypeFun('obj')" v-show="types == '关联风险'">
+                    <span :class="{slt:(showSelect && selectType=='obj') || selectObjType}">{{ selectObjType || '全部对象'}}</span>
+                    <img :src="showSelect && selectType=='obj'?sdown_slt.png:sdown" alt="">
+                </div>
+                <div class="sitem" @click="selectTypeFun('risk')">
+                    <span :class="{slt:(showSelect && selectType=='risk') || tempSelectItems.length>0}">{{tempSelectItems.join('、') || '风险类型'}}</span>
+                    <img :src="showSelect && selectType=='risk'?sdown_slt.png:sdown" alt="">
+                </div>
+                <div class="sitem" @click="selectTypeFun('level')">
+                    <span :class="{slt:(showSelect && selectType=='level') || selectedLevel}">{{selectedLevel || '风险等级'}}</span>
+                    <img :src="showSelect && selectType=='level'?sdown_slt.png:sdown" alt="">
+                </div>
+                <div class="blockMask" :style="showSelect?maskStyle:''" @click="showSelect = false">
+                    <div class="selectItems" @click.stop>
+                        <div class='itemContainer' v-show="selectType=='obj'">
+                            <div class="blocks" v-for="(item,index) in objItemList" :key="index">
+                                <div class="btitle">{{item.name}}</div>
+                                <div class="items">
+                                    <div class="its" v-for="(e,idx) in item.list" :key="idx" @click="setleOhjItems(e,index,idx)" :class="{'slt':e.slt}">{{e.name}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class='itemContainer' v-show="selectType=='risk'">
+                            <div class="blocks" v-for="(item,index) in riskItemList" :key="index">
+                                <div class="btitle">{{item.name}}</div>
+                                <div class="items">
+                                    <div class="its" v-for="(e,idx) in item.list" :key="idx" @click="setleRistItems(e.name,index,idx)" :class="{'slt':e.slt}">{{e.name}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class='itemContainer' v-show="selectType=='level'">
+                            <div class="blocks">
+                                <div class="items">
+                                    <div class="its" v-for="(item,index) in levelList" :key="index" @click="setleLevelItems(item)" :class="{'slt':item == selectedLevel}">{{item}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="bottomBtn"  v-show="selectType=='risk'">
+                            <div class="restBtn" @click="resetItems">重置</div>
+                            <div class="confirmBtn" @click="confirmItems">确定</div>
+                        </div>
+                    </div>
+                </div>
+                
+            </div>
+        </div>
+        <div class="scrollInfo">
+            <van-row class="fxsmmd-det-item" v-for="(item,index) in zishenfengxianList" :key="index">
+                <van-row class="fxsmmd-det-item-tl">
+                    <span>{{item.type}}</span> <div :class="['tl-tag',item.riskVOList[0].riskLevel=='4'?'gfx':item.riskVOList[0].riskLevel=='3'?'js':item.riskVOList[0].riskLevel=='2'?'ts':'']"><span>{{filterRiskLevel(item.riskVOList[0].riskLevel)}}</span></div>
+                </van-row>
+                <van-row class="fxsmmd-det-item-info">
+                    <van-row class="fxsmmd-det-item-i" type='flex' justify='space-between' align='center' v-for="(e,idx) in item.riskVOList" :key='idx' @click="goList(e,item.relateEntityType)">
+                        <van-row type='flex' justify='space-between'  align='center' class="fxsmmd-det-item-mc">
+                            <van-col class="mc" v-html="filterDesc(e.description)"></van-col> 
+                        </van-row>
+                        <label>
+                            共<span style="color:#ED4033">{{e.count}}</span>条 
+                            <van-icon name="arrow" color='#969696' class="fxsmmd-det-item-jt"/>
+                        </label>
+                    </van-row>
+                </van-row>
+                <div class="fxsm-more-item" v-show="types=='关联风险' && item.totalPage && item.totalPage > 1" @click="goMore(item)">
+                    <span>查看更多</span> <van-icon name="arrow" color="#0265D9" style="margin-left:5px"/>
+                </div>
+            </van-row>
+            <van-row class="fxsmmd-noData" v-if="showNoData">
+                <van-row>
+                    <img src="../../../assets/img/nodata.png" alt="">
+                </van-row>
+                <span>暂无{{types}}数据</span>
+            </van-row>
+        </div>
+           
+       </div>
+        
+  </van-row>
+</template>
+
+<script>
+import {EnterpriseEnum,DimensionEnum} from '@/utils/sfaj'
+import { $goDetail } from '@/utils/utils'
+import sdown_slt from '@/assets/img/sdown_slt.png'
+import sdown from '@/assets/img/sdown.png'
+
+export default {
+    data() {
+        return {
+            sdown_slt,
+            sdown,
+            maskStyle:{
+                height:(document.body.clientHeight-44)+'px',
+            },
+            fixedStyle:{
+                position:'fixed',
+                top:'44px'
+            },
+            showSelect:false,
+            selectType:'risk',
+            objItemList:[
+                {name:'全部',list:[
+                    {name:'全部对象',slt:false,val:0},
+                ]}, 
+               {name:'关联企业',list:[
+                    {name:'全部关联企业',slt:false,val:2},
+                    {name:'股东',slt:false,val:'target'},
+                    {name:'对外投资',slt:false,val:'source'},
+                ]}, 
+                {name:'关联人员',list:[
+                    {name:'全部关联人员',slt:false,val:1},
+                    {name:'法定代表人',slt:false,val:1},
+                    {name:'投资人',slt:false,val:2},
+                    {name:'主要人员',slt:false,val:3},
+                ]}, 
+            ],
+            riskItemList:[
+                {name:'司法风险',list:[
+                    {name:'全部司法风险',slt:false},
+                    {name:'破产重整',slt:false},
+                    {name:'失信信息',slt:false},
+                    {name:'被执行人',slt:false},
+                    {name:'限制高消费',slt:false},
+                    {name:'终本案件',slt:false},
+                    {name:'限制出境',slt:false},
+                    {name:'裁判文书',slt:false},
+                    {name:'立案信息',slt:false},
+                    {name:'开庭公告',slt:false},
+                    {name:'法院公告',slt:false},
+                    {name:'送达公告',slt:false},
+                    {name:'询价评估',slt:false},
+                    {name:'司法拍卖',slt:false},
+                    {name:'股权冻结',slt:false},
+                ]},
+                {name:'监管风险',list:[
+                    {name:'全部监管风险',slt:false},
+                    {name:'严重违法',slt:false},
+                    {name:'经营异常',slt:false},
+                    {name:'税收违法',slt:false},
+                    {name:'欠税公告',slt:false},
+                    {name:'抽查检查',slt:false},
+                    {name:'双随机抽查',slt:false},
+                    {name:'行政处罚',slt:false},
+                    {name:'环保处罚',slt:false},
+                    
+                ]},
+                {name:'经营风险',list:[
+                    {name:'全部经营风险',slt:false},
+                    {name:'简易注销',slt:false},
+                    {name:'注销备案',slt:false},
+                    {name:'动产抵押',slt:false},
+                    {name:'土地抵押',slt:false},
+                    {name:'股权出质',slt:false},
+                    {name:'公示催告',slt:false},
+                    {name:'担保信息',slt:false},
+                ]}
+            ],
+            riskItemListStr:"",
+            levelList:['全部','高风险','警示','提示'],
+            selectedRiskList:[],//真实选中
+            selectedLevel:'',
+            selectObjType:'',
+            selectObjVal:'',
+            tempSelectItems:[],//临时选中items
+            realRiskItemListStr:""//真实选中
+        }
+    },
+    mounted () {
+    },
+    created () {
+        
+    },
+    destroyed () {
+    },
+    
+    props: {
+        zishenfengxianList: {
+            type: Array,
+            default: function(){
+                return []
+            }
+        },
+        types:{
+            type:String,
+            default:""
+        },
+        companyName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        fixed:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        },
+        activeName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        showNoData:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        }
+    },
+    mounted () {
+        this.riskItemListStr = JSON.stringify(this.riskItemList);
+    },
+    methods: {
+        filterDesc(des){
+            return des.replace(/ /g,'');
+        },
+        //风险类型选择
+        setleRistItems(e,index,idx) {
+            let riskItemList = this.riskItemList;
+            let firName = riskItemList[index].name
+            
+            if(firName == '司法风险'){
+                this.checkItems(e,index,idx,'全部司法风险',riskItemList);
+            }else if(firName == '监管风险'){
+               this.checkItems(e,index,idx,'全部监管风险',riskItemList);
+            }else if(firName == '经营风险'){
+               this.checkItems(e,index,idx,'全部经营风险',riskItemList);
+            }
+        },
+
+        checkItems(e,index,idx,type,list){
+            let riskItemList = list;
+            if(e == type){
+                //取消司法风险的其它选项
+                riskItemList[index].list.forEach(item => {
+                    if(item.name != type){
+                        item.slt = false
+                    }
+                });
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+            }else{
+                //如果其它选项都选中则会默认选中全部司法风险按钮
+                let flag = true;
+                riskItemList[index]['list'][0].slt = false;
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+                riskItemList[index].list.forEach(item=>{
+                    if(item.name != type && !item.slt){
+                        flag = false
+                    }
+                })
+                if(flag){
+                    riskItemList[index].list.forEach(item => {
+                        item.slt = false
+                    });
+                        riskItemList[index]['list'][0].slt = true;
+                }
+            }
+            // console.log("riskItemList===",riskItemList)
+            this.riskItemList = riskItemList;
+
+            let tempSelectItems = [];
+            riskItemList.forEach((item)=>{
+                item.list.forEach((e)=>{
+                    if(e.slt){
+                        tempSelectItems.push(e.name)
+                    }
+                })
+            })
+            this.tempSelectItems = tempSelectItems;
+
+        },
+
+        //选择对象
+        setleOhjItems(e,index,idx){
+           let objList = this.objItemList;
+           objList.forEach((e)=>{
+               e.list.forEach((item)=>{
+                   item.slt = false;
+               })
+           })
+           objList[index].list[idx].slt = true;
+            this.selectObjType = e.name;
+            this.selectObjVal = e.val
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //选择风险等级
+        setleLevelItems(e){
+            this.selectedLevel = e;
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //确认选择条件
+        confirmItems(){
+            // let riskItemList = this.riskItemList;
+            // let selectedRiskList = [];
+            // riskItemList.forEach((item)=>{
+            //     item.list.forEach((e)=>{
+            //         if(e.slt){
+            //             selectedRiskList.push(e.name)
+            //         }
+            //     })
+            // })
+            // console.log("selectedRiskList==",selectedRiskList)
+            this.selectedRiskList = [...this.tempSelectItems];
+            this.realRiskItemListStr = JSON.stringify(this.riskItemList);//只做记录使用
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //重置
+        resetItems(){
+            this.selectedRiskList = [];
+            this.tempSelectItems = [];
+            this.realRiskItemListStr = "";
+            this.riskItemList = JSON.parse(this.riskItemListStr);
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        requestData:async function(){
+            let sendData = {
+                // entityType:'1',
+                // riskScanType:'1',
+                // entityId:this.$humanId,
+                // entityName:this.$personName
+            }
+
+            //风险类型和风险等级
+            let selectedRiskList = this.selectedRiskList;
+            let typeParent = [];
+            let types = [];
+            selectedRiskList.forEach((item)=>{
+                if(item == '全部司法风险'){
+                    typeParent.push('司法风险');
+                }else if(item == '全部经营风险'){
+                    typeParent.push('经营风险');
+                }else if(item == '全部监管风险'){
+                    typeParent.push('监管风险');
+                }else{
+                    types.push(item)
+                }
+            })
+
+            let riskLevel = this.selectedLevel == '高风险'?'4':this.selectedLevel == '警示'?'3':this.selectedLevel == '提示'?'2':''
+            sendData.types = types;
+            sendData.riskLevel = riskLevel;
+            if(typeParent.length>0){
+                 sendData.typeParents = typeParent;
+            }
+
+            //关联风险新增对象维度
+            if(this.types == '关联风险'){
+                // alert(this.selectObjType)
+                if(['全部对象','全部关联企业','全部关联人员'].includes(this.selectObjType)){
+                    sendData.relateEntityType = this.selectObjVal;
+                }else if(["股东","对外投资"].includes(this.selectObjType)){
+                     sendData.direction = this.selectObjVal;
+                     sendData.relateEntityType = 2;
+                }else if(["法定代表人","投资人","主要人员"].includes(this.selectObjType)){
+                     sendData.personType = this.selectObjVal;
+                      sendData.relateEntityType = 1;
+                }
+            }
+            this.$emit('getGuanLianData', sendData);
+           
+        },
+
+        filterRiskLevel(type){
+            let name = "";
+            if(type){
+                name = type == '1'?'良好':type == '2'?'提示':type == '3'?'警示':type == '4'?'高风险':''
+            }
+            return name
+        },
+
+        selectTypeFun(type){
+           
+            if(this.showSelect && this.selectType == type){
+                this.showSelect = false;
+            }else{
+              this.showSelect = true  
+            }
+             this.selectType = type;
+            
+        },
+       
+        goList(item,type) {
+            // relateEntityType
+            console.log("type=",type)
+            console.log("item==",item)
+            let route = '';
+            if(type == 1){
+                DimensionEnum.forEach((e)=>{
+                    if(e.code == item.dimensionCode){
+                        route =e.route + '?humanId='+item.personId + "&sourceType=zrr"
+                    }
+                })
+            }else{
+                EnterpriseEnum.forEach((e)=>{
+                    if(e.code == item.dimensionCode){
+                        route =e.route + '?companyName='+this.$route.query.companyName + "&companyId="+item.companyId
+                    }
+                })
+            }   
+           
+            if(route){
+                //  window.location.hash= '#/' + route;
+                $goDetail(route)
+            }
+           
+        },
+
+        goMore(item){
+            $goDetail('FengXianMoreList?entityName='+this.$route.query.companyName +"&entityType=2&entityId="+item.companyId+"&riskScanType="+this.activeName+"&types="+item.type)
+        }
+       
+    },
+    watch: {
+        showSelect(newValue, oldValue) {
+            if(newValue){
+                document.body.style.overflow = 'hidden'
+            }else{
+                document.body.style.overflow = 'auto'
+                if(this.selectType == 'risk'){
+                    if(this.realRiskItemListStr){
+                        this.riskItemList = [...JSON.parse(this.realRiskItemListStr)];
+                    }
+                    this.tempSelectItems = [...this.selectedRiskList]
+                }
+                  
+            }
+        },
+        activeName(){
+            this.showSelect = false
+        }
+    },
+    
+}
+</script>
+
+<style scoped lang='scss'>
+    
+    
+</style>

+ 318 - 0
src/views/CustomPage/FengXianSaoMiao/Personal/FengXianSaoMiaoPerDet.vue

@@ -0,0 +1,318 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-20 15:55:02
+ * @LastEditTime: 2022-04-20 17:00:37
+ * @LastEditors: 狼牙
+-->
+<template>
+    <van-row :class="['fenxiansaomiaodet',loadingSkeleton?'oth':'']">
+       <van-row class="fxsmmd-det">
+          <van-row class='fxsmd-top'>
+            <van-row class="fxsmd-top-left">
+                <van-col class="fxsmd-top-left-img">
+                    <Logo :name='$route.query.personName' :companyId='$route.query.humanId' width='36px'/>
+                </van-col>
+                <van-col class="fxsmd-top-left-gs">{{personName}}</van-col>
+            </van-row>
+        </van-row>
+        <div class="bzDetail" v-if='sXData.numVOList'>
+            <div class="bz-top">
+                <div class="its" v-for="(item,index) in numVOList" :key="index" @click="goNativeHandle(item)" :class="{'gray':(item.currentNum + item.historyNum) == 0}">
+                    <p>{{filteTypes(item.creditPunishmentType)}}</p>
+                    <p class="num" :class="{'gray':(item.currentNum) == 0}">{{item.currentNum}}<span :class="{'gray':(item.historyNum) == 0}">(历史{{item.historyNum}})</span></p>
+                </div>
+                
+            </div>
+            <div class="nz-btm" @click="goBzNativeHandle">
+                <div class="its">
+                    <p class="tp">累计被执行人总金额</p>
+                    <p class="bt">{{sXData.totalExecAmount}}万元</p>
+                </div>
+                <div class="its">
+                    <p class="tp">疑似当前欠款总金额</p>
+                    <p class="bt">{{sXData.totalNoExecAmount}}万元</p>
+                    <img src="@/assets/img/goRight.png" alt="" class="gright">
+                </div>
+                
+            </div>
+        </div>
+        <van-skeleton title :row="20" :loading="loadingSkeleton"> 
+            <van-tabs 
+                v-model="activeName" 
+                @change="onChangeTab"
+                color="#088BFE"
+                title-active-color="#088BFE"
+                swipeable
+             
+                line-width='30px'
+                sticky
+            >
+                <van-tab :title="'自身风险'+zsCount" name="zsfx" title-style="font-weight:bold" :style='minstyle'>
+                   <yhc-zishenfenxian :zishenfengxianList='zishenfengxianList' :companyName ="companyName" :personName="personName" types="自身风险" :fixed="fixed" @getGuanLianData="getGuanLianData" :activeName="activeName" :showNoData="showZsNoData"></yhc-zishenfenxian>
+                </van-tab>
+                <van-tab :title="'关联风险'+glCount" name="glfx" title-style="font-weight:bold" :style='minstyle'>
+                    <yhc-guanliangenxian :guanlianList='guanlianfengxianList' :companyName ="companyName" :personName="personName" types="关联风险" :fixed="fixed" @getGuanLianData="getGuanLianData" :activeName="activeName" :showNoData="showGlNoData"></yhc-guanliangenxian>
+                </van-tab>
+                 
+            </van-tabs>
+        </van-skeleton>
+       </van-row>
+       <!-- <VipQuan :isShow='isShowQuan' @changeShow="changShow" :quanData="quanData" @refreshHandle="refreshHandle"></VipQuan> -->
+    </van-row>
+</template>
+
+<script>
+import $axios from '@/api';
+import glfx from './components/glfx.vue';
+import zsfx from './components/zsfx.vue';
+import Logo from '@/components/Global/Avatar.vue';
+import { $goDetail } from '@/utils/utils'
+// import VipQuan from '../../components/VipQuan'
+export default {
+    data() {
+        return {
+            loadingSkeleton:true,
+            personName:this.$route.query.personName,
+            companyName:this.$route.query.companyName,//河南亚华安全玻璃有限公司
+            humanId:this.$route.query.humanId,
+            minstyle:{
+                minHeight:(document.body.clientHeight-90)+'px'
+            },
+            fixed:false,
+            activeName: 'zsfx',
+            zsCount:0,
+            glCount:0,
+            guanlianfengxianList:[],
+            zishenfengxianList:[],
+            showZsNoData:false,
+            showGlNoData:false,
+            isFirstZs:true,
+            isFirstGl:true,
+
+            numVOList:[],
+            sXData:{},
+            isShowQuan:false,
+            quanData:{},
+            voucherCode:''
+        }
+    },
+    components: {
+        Logo,
+        'yhc-guanliangenxian':glfx,
+        'yhc-zishenfenxian':zsfx,
+        // VipQuan
+    },
+    mounted () {
+        document.title = '风险扫描'
+        //获取是自身风险还是个人风险
+        this.activeName = this.$route.query.fengxianType || 'zsfx'
+        this.zsCount = this.$route.query.zsCount || 0;
+        this.glCount = this.$route.query.glCount || 0;
+        this.loadingSkeleton = true;
+        window.callBackOpenVipPopup= this.getGuanLianData;
+        if(this.$signTagKey){
+            this.voucherCode = this.$signTagKey;
+        }
+        window.addEventListener('scroll', this.handleScroll, true);
+
+        //如果从VIP样例跳转过来没有humanid的情况下,需要调用接口获取humanid
+        if(!this.humanId){
+            this.getHumanIdByName()
+        }else{
+            this.getRiskInfo();
+             this.getBzDataInfo();
+            this.getGuanLianData();
+        }
+        
+    },
+    destroyed () {
+        window.removeEventListener('scroll', this.handleScroll, true);
+    },
+    methods: {
+        changShow(){
+            this.isShowQuan = false;
+        },
+        refreshHandle(data){
+            this.isShowQuan = false;
+            this.voucherCode = data;
+            this.$nextTick(()=>{
+                this.getGuanLianData()
+            })
+        },
+        handleScroll () {
+            let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
+            // console.log("scrollTop====",scrollTop)
+            let limitTop = this.sXData.numVOList?220:57;
+            if(scrollTop >= limitTop){
+                this.fixed = true;
+            }else{
+                this.fixed =false
+            }
+        },
+        goNativeHandle(item){
+            if(item.currentNum + item.historyNum == 0){
+                return
+            }
+            if(item.currentNum != 0 ){
+                $goDetail(item.currentRouting+'?sourceType=zrr&humanId='+this.humanId)
+                return
+            }
+            if(item.currentNum == 0 && item.historyNum > 0){
+                $goDetail(item.historyRouting+'?sourceType=zrr&humanId='+this.humanId)
+                return
+            }
+        },
+        goBzNativeHandle(){
+            let sXData = this.sXData;
+            console.log("sXData==",sXData)
+            $goDetail(`SxXgDataDet?totalExecAmount=${sXData.totalExecAmount}&totalNoExecAmount=${sXData.totalNoExecAmount}&zxrTotalExecAmount=${sXData.zxrTotalExecAmount}&finalCaseExecAmount=${sXData.finalCaseExecAmount}&finalCaseNoExecAmount=${sXData.finalCaseNoExecAmount}&noExecPercent=${sXData.noExecPercent}`)
+        },
+        async getHumanIdByName(){
+            try {
+                let sendData = {
+                    'companyName':this.companyName,
+                    'humanName':this.personName
+                }
+                let res = await $axios.get('winhc_newgraph/person/humaId',{params:sendData})
+                console.log('风险数量=',res);
+                this.humanId = res;
+                this.getRiskInfo();
+                this.getBzDataInfo();
+                this.getGuanLianData();
+                
+            } catch (error) {
+                console.log('error=',error);
+            }
+        },
+        async getRiskInfo(){//获取自身和关联风险数量
+            try {
+                let sendData = {
+                    'entityType':'1',
+                    'keyWord':this.humanId
+                }
+                let res = await $axios.get('lawyer-workbench/risk/summary',{params:sendData})
+                console.log("风险扫描数量=",res)
+                res.forEach((e)=>{
+                    if(e.riskScanType == '1'){
+                        this.zsCount = e.total || 0;
+                    }else if(e.riskScanType == '2'){
+                        this.glCount = e.total || 0;
+                    }
+                })
+            } catch (error) {
+                console.log('error=',error);
+            }
+        },
+
+        //获取失信限制高数据
+        async getBzDataInfo(){
+            try {
+                let sendData = {
+                    'entityId':this.humanId,
+                    'entityName':this.personName,
+                    'entityType':1
+                }
+                let res = await $axios.post('winhc-justice-service/credit/count',sendData)
+                this.sXData = res || {};
+                this.numVOList = res.numVOList;
+            } catch (error) {
+                
+            }
+        },
+        getGuanLianData:async function(data={}){
+            let sendData = {
+                    entityType:'1',
+                    riskScanType:this.activeName == 'zsfx'?'1':this.activeName == 'glfx'?'2':'',
+                    entityId:this.humanId,
+                    entityName:this.personName
+            }
+            sendData = {...sendData,...data}
+            if(this.voucherCode){
+                sendData.voucherCode = this.voucherCode;
+            }
+             try {
+                let res = await $axios.post('lawyer-workbench/risk/summary/infos',sendData)
+
+                console.log('自然人风险扫描=',res);
+                if(this.activeName == 'zsfx'){
+                    this.isFirstZs = false;
+                    if(res.length == 0){
+                        this.showZsNoData = true;
+                    }else{
+                        this.showZsNoData = false;
+                    }
+                    this.zishenfengxianList = res;
+                }else if(this.activeName == 'glfx'){
+                        this.isFirstGl = false;
+                    if(res.length == 0){
+                        this.showGlNoData = true;
+                    }else{
+                        this.showGlNoData = false;
+                    }
+                    this.guanlianfengxianList = res ;
+                }
+                this.loadingSkeleton = false;
+            } catch (error) {
+                this.loadingSkeleton = false;
+                console.log('error=',error);
+                if(error.errorCode == '79'){
+                    let tempData = JSON.parse(error.errorMsg)
+                    if(tempData.voucherCount > 0){
+                        this.isShowQuan = true;
+                        this.quanData = tempData;
+                    }else{//VIP购买弹框
+                        this.$openBuyVipPopup(13)
+                    }
+                }
+            }
+        },
+        onChangeTab(name,title) {
+            // console.log('name=',name)+'---' +title;
+            this.activeName = name;
+            if(name == 'zsfx'){
+                if(this.isFirstZs){
+                    this.getGuanLianData()
+                }
+            }else if(name == 'glfx'){
+                if(this.isFirstGl){
+                     this.getGuanLianData()
+                }
+            }
+        },
+        getXZCFNum(list){
+            let num = 0;
+            if(list.__proto__.constructor == Array){//instanceof
+                 list.forEach(e => {
+                    num +=e.count*1;
+                });
+               
+            }else{
+                num = list
+            }
+            return num
+        },
+        filteTypes(val) {
+            let type = ""
+            if(val){
+                switch (val) {
+                    case 1:type = '被执行人'; break;
+                    case 2:type = '失信信息'; break;
+                    case 3:type = '限制高消费'; break;
+                    case 4:type = '终本案件'; break;
+                    
+                }
+            }
+            return type
+        }
+    },
+    filters: {
+         
+    }
+}
+</script>
+
+<style lang='scss'>
+    @import "@/style/fxsm.scss"; 
+</style>

+ 425 - 0
src/views/CustomPage/FengXianSaoMiao/Personal/components/glfx.vue

@@ -0,0 +1,425 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-20 15:56:09
+ * @LastEditTime: 2022-04-20 16:59:55
+ * @LastEditors: 狼牙
+-->
+<template>
+  <van-row>
+      <div class="fxsmListInfo">
+        <div :style="fixed?{height:'38px'}:{}">
+            <div class="selectType" :style="fixed?fixedStyle:''">
+                <div class="sitem" @click="selectTypeFun('obj')">
+                    <span :class="{slt:(showSelect && selectType=='obj') || selectObjType}">{{ selectObjType || '全部对象'}}</span>
+                    <img :src="showSelect && selectType=='obj'?sdown_slt:sdown " alt="">
+                </div>
+                <div class="sitem" @click="selectTypeFun('risk')">
+                    <span :class="{slt:(showSelect && selectType=='risk') || tempSelectItems.length>0}">{{tempSelectItems.join('、') || '风险类型'}}</span>
+                    <img :src="showSelect && selectType=='risk'?sdown_slt.png:sdown" alt="">
+                </div>
+                <div class="sitem" @click="selectTypeFun('level')">
+                    <span :class="{slt:(showSelect && selectType=='level') || selectedLevel}">{{selectedLevel || '风险等级'}}</span>
+                    <img :src="showSelect && selectType=='level'?sdown_slt:sdown" alt="">
+                </div>
+                <div class="blockMask" :style="showSelect?maskStyle:''" @click="showSelect = false">
+                    <div class="selectItems" @click.stop>
+                        <div class='itemContainer' v-show="selectType=='obj'">
+                            <div class="blocks">
+                                <div class="items">
+                                    <div class="its" v-for="(e,idx) in objItemList" :key="idx" @click="setleOhjItems(e,idx)" :class="{'slt':e.slt}">{{e.name}}</div>
+                                </div>
+                             </div>
+                        </div>
+                        <div class='itemContainer' v-show="selectType=='risk'">
+                            <div class="blocks" v-for="(item,index) in riskItemList" :key="index">
+                                <div class="btitle">{{item.name}}</div>
+                                <div class="items">
+                                    <div class="its" v-for="(e,idx) in item.list" :key="idx" @click="setleRistItems(e.name,index,idx)" :class="{'slt':e.slt}">{{e.name}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class='itemContainer' v-show="selectType=='level'">
+                            <div class="blocks">
+                                <div class="items">
+                                    <div class="its" v-for="(item,index) in levelList" :key="index" @click="setleLevelItems(item)" :class="{'slt':item == selectedLevel}">{{item}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="bottomBtn"  v-show="selectType=='risk'">
+                            <div class="restBtn" @click="resetItems">重置</div>
+                            <div class="confirmBtn" @click="confirmItems">确定</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="scrollInfo">
+            <van-row class="fxsmmd-det-item" v-for="(item,index) in guanlianList" :key="index">
+                <van-row class="fxsmmd-det-item-tl">
+                   <span>{{item.type}}</span><div :class="['tl-tag',item.riskVOList[0].riskLevel=='4'?'gfx':item.riskVOList[0].riskLevel=='3'?'js':item.riskVOList[0].riskLevel=='2'?'ts':'']"><span>{{filterRiskLevel(item.riskVOList[0].riskLevel)}}</span></div>
+                </van-row>
+                <van-row class="fxsmmd-det-item-info">
+                    <van-row class="fxsmmd-det-item-i" type='flex' justify='space-between' align='center' v-for="(e,idx) in item.riskVOList" :key='idx' @click="goList(e)">
+                        <van-row type='flex' justify='space-between'  align='center' class="fxsmmd-det-item-mc">
+                            <van-col class="mc" v-html="filterDesc(e.description)"></van-col> 
+                        </van-row>
+                        <label>
+                            共<span style="color:#ED4033">{{e.count}}</span>条 
+                            <van-icon name="arrow" color='#969696' class="fxsmmd-det-item-jt"/>
+                        </label>
+                    </van-row>
+                </van-row>
+                <div class="fxsm-more-item" v-show="item.totalPage && item.totalPage > 1" @click="goMore(item)">
+                    <span>查看更多</span> <van-icon name="arrow" color="#0265D9" style="margin-left:5px"/>
+                </div>
+            </van-row>
+            <van-row class="fxsmmd-noData" v-if="showNoData">
+                <van-row>
+                    <img src="@/assets/img/nodata.png" alt="">
+                </van-row>
+                <span>暂无{{types}}数据</span>
+            </van-row>
+        </div>
+       </div>
+  </van-row>
+</template>
+
+<script>
+import {EnterpriseEnum,DimensionEnum} from '@/utils/sfaj'
+import { $goDetail } from '@/utils/utils'
+import sdown_slt from '@/assets/img/sdown_slt.png'
+import sdown from '@/assets/img/sdown.png'
+export default {
+    data() {
+        return {
+            sdown_slt,
+            sdown,
+            maskStyle:{
+                height:(document.body.clientHeight-44)+'px',
+            },
+            fixedStyle:{
+                position:'fixed',
+                top:'44px'
+            },
+            showSelect:false,
+            selectType:'risk',
+            objItemList:[
+                {name:'全部对象',val:0,slt:false},
+                {name:'担任法定代表人',val:1,slt:false},
+                {name:'对外投资',val:2,slt:false},
+                {name:'在外任职',val:3,slt:false},
+
+            ],
+            riskItemList:[
+                {name:'司法风险',list:[
+                    {name:'全部司法风险',slt:false},
+                    {name:'破产重整',slt:false},
+                    {name:'失信信息',slt:false},
+                    {name:'被执行人',slt:false},
+                    {name:'限制高消费',slt:false},
+                    {name:'终本案件',slt:false},
+                    {name:'限制出境',slt:false},
+                    {name:'裁判文书',slt:false},
+                    {name:'立案信息',slt:false},
+                    {name:'开庭公告',slt:false},
+                    {name:'法院公告',slt:false},
+                    {name:'送达公告',slt:false},
+                    {name:'询价评估',slt:false},
+                    {name:'司法拍卖',slt:false},
+                    {name:'股权冻结',slt:false},
+                ]},
+                {name:'监管风险',list:[
+                    {name:'全部监管风险',slt:false},
+                    {name:'严重违法',slt:false},
+                    {name:'经营异常',slt:false},
+                    {name:'税收违法',slt:false},
+                    {name:'欠税公告',slt:false},
+                    {name:'抽查检查',slt:false},
+                    {name:'双随机抽查',slt:false},
+                    {name:'行政处罚',slt:false},
+                    {name:'环保处罚',slt:false},
+                    
+                ]},
+                {name:'经营风险',list:[
+                    {name:'全部经营风险',slt:false},
+                    {name:'简易注销',slt:false},
+                    {name:'注销备案',slt:false},
+                    {name:'动产抵押',slt:false},
+                    {name:'土地抵押',slt:false},
+                    {name:'股权出质',slt:false},
+                    {name:'公示催告',slt:false},
+                    {name:'担保信息',slt:false},
+                ]}
+            ],
+            riskItemListStr:"",
+            levelList:['全部','高风险','警示','提示'],
+            selectedRiskList:[],//真实选中
+            selectedLevel:'',
+            selectObjType:'',
+            selectObjVal:'',
+            tempSelectItems:[],//临时选中items
+            realRiskItemListStr:""//真实选中
+        }
+    },
+    mounted () {
+    },
+    created () {
+        
+    },
+    destroyed () {
+    },
+    
+    props: {
+        guanlianList: {
+            type: Array,
+            default: function(){
+                return []
+            }
+        },
+        types:{
+            type:String,
+            default:""
+        },
+        companyName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        fixed:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        },
+        activeName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        showNoData:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        }
+    },
+    mounted () {
+        this.riskItemListStr = JSON.stringify(this.riskItemList);
+    },
+    methods: {
+        
+        filterDesc(des){
+            return des.replace(/ /g,'');
+        },
+        //选择对象
+        setleOhjItems(item,idx){
+           let objList = this.objItemList;
+           objList.forEach((e)=>{
+                e.slt = false;
+           })
+            objList[idx].slt = true;
+            this.selectObjType = item.name;
+            this.selectObjVal = item.val
+            this.showSelect = false;
+            this.requestData();
+        },
+        //风险类型选择
+        setleRistItems(e,index,idx) {
+            let riskItemList = this.riskItemList;
+            let firName = riskItemList[index].name
+            if(firName == '司法风险'){
+                this.checkItems(e,index,idx,'全部司法风险',riskItemList);
+            }else if(firName == '监管风险'){
+                this.checkItems(e,index,idx,'全部监管风险',riskItemList);
+            }else if(firName == '经营风险'){
+               this.checkItems(e,index,idx,'全部经营风险',riskItemList);
+            }
+        },
+
+        checkItems(e,index,idx,type,list){
+            let riskItemList = list;
+            if(e == type){
+                //取消司法风险的其它选项
+                riskItemList[index].list.forEach(item => {
+                    if(item.name != type){
+                        item.slt = false
+                    }
+                });
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+            }else{
+                //如果其它选项都选中则会默认选中全部司法风险按钮
+                let flag = true;
+                riskItemList[index]['list'][0].slt = false;
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+                riskItemList[index].list.forEach(item=>{
+                    if(item.name != type && !item.slt){
+                        flag = false
+                    }
+                })
+                if(flag){
+                    riskItemList[index].list.forEach(item => {
+                        item.slt = false
+                    });
+                        riskItemList[index]['list'][0].slt = true;
+                }
+            }
+            // console.log("riskItemList===",riskItemList)
+            this.riskItemList = riskItemList;
+
+            let tempSelectItems = [];
+            riskItemList.forEach((item)=>{
+                item.list.forEach((e)=>{
+                    if(e.slt){
+                        tempSelectItems.push(e.name)
+                    }
+                })
+            })
+            this.tempSelectItems = tempSelectItems;
+
+        },
+
+        //选择风险等级
+        setleLevelItems(e){
+            this.selectedLevel = e;
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //确认选择条件
+        confirmItems(){
+            // let riskItemList = this.riskItemList;
+            // let selectedRiskList = [];
+            // riskItemList.forEach((item)=>{
+            //     item.list.forEach((e)=>{
+            //         if(e.slt){
+            //             selectedRiskList.push(e.name)
+            //         }
+            //     })
+            // })
+            // console.log("selectedRiskList==",selectedRiskList)
+            this.selectedRiskList = [...this.tempSelectItems];
+            this.realRiskItemListStr = JSON.stringify(this.riskItemList);//只做记录使用
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //重置
+        resetItems(){
+            this.selectedRiskList = [];
+            this.tempSelectItems = [];
+            this.realRiskItemListStr = "";
+            this.riskItemList = JSON.parse(this.riskItemListStr);
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        requestData:async function(){
+            let sendData = {
+                // entityType:'1',
+                // riskScanType:'1',
+                // entityId:this.$humanId,
+                // entityName:this.$personName
+            }
+
+            //风险类型和风险等级
+            let selectedRiskList = this.selectedRiskList;
+            let typeParent = [];
+            let types = [];
+            selectedRiskList.forEach((item)=>{
+                if(item == '全部司法风险'){
+                    typeParent.push('司法风险');
+                }else if(item == '全部经营风险'){
+                    typeParent.push('经营风险');
+                }else if(item == '全部监管风险'){
+                    typeParent.push('监管风险');
+                }else{
+                    types.push(item)
+                }
+            })
+
+            if(typeParent.length > 0){
+                sendData.typeParents = typeParent;
+            }
+
+            let riskLevel = this.selectedLevel == '高风险'?'4':this.selectedLevel == '警示'?'3':this.selectedLevel == '提示'?'2':''
+            sendData.types = types;
+            sendData.riskLevel = riskLevel;
+
+            if(this.selectObjType){
+                sendData.personType = this.selectObjVal;
+            }
+
+
+            this.$emit('getGuanLianData', sendData);
+           
+        },
+
+        filterRiskLevel(type){
+            let name = "";
+            if(type){
+                name = type == '1'?'良好':type == '2'?'提示':type == '3'?'警示':type == '4'?'高风险':''
+            }
+            return name
+        },
+
+        selectTypeFun(type){
+           
+            if(this.showSelect && this.selectType == type){
+                this.showSelect = false;
+            }else{
+              this.showSelect = true  
+            }
+             this.selectType = type;
+            
+        },
+       
+        
+        goList(item) {
+            let route = '';
+            EnterpriseEnum.forEach((e)=>{
+                if(e.code == item.dimensionCode){
+                    route =e.route + '?companyName='+this.$companyName + "&companyId="+item.companyId
+                }
+            })
+            if(route){
+                $goDetail(route)
+            }
+           
+        },
+
+        goMore(item){
+            // window.location.hash='#/FengXianMoreList?entityName='+this.$personName +"&entityType=1&entityId="+this.$humanId+"&riskScanType="+this.activeName+"&types="+item.type;
+            $goDetail('FengXianMoreList?entityName='+this.$personName +"&entityType=1&entityId="+this.$humanId+"&riskScanType="+this.activeName+"&types="+item.type)
+        }
+       
+    },
+    watch: {
+        showSelect(newValue, oldValue) {
+            if(newValue){
+                document.body.style.overflow = 'hidden'
+            }else{
+                document.body.style.overflow = 'auto'
+                if(this.selectType == 'risk'){
+                    if(this.realRiskItemListStr){
+                        this.riskItemList = [...JSON.parse(this.realRiskItemListStr)];
+                    }
+                    this.tempSelectItems = [...this.selectedRiskList]
+                }
+                  
+            }
+        },
+        activeName(){
+            this.showSelect = false
+        }
+    },
+}
+</script>
+
+<style scoped lang='scss'>
+    
+   
+</style>

+ 357 - 0
src/views/CustomPage/FengXianSaoMiao/Personal/components/zsfx.vue

@@ -0,0 +1,357 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-20 15:58:35
+ * @LastEditTime: 2022-04-20 17:00:19
+ * @LastEditors: 狼牙
+-->
+<template>
+  <van-row>
+      <div class="fxsmListInfo">
+        <div :style="fixed?{height:'38px'}:{}">
+            <div class="selectType" :style="fixed?fixedStyle:''">
+                <div class="sitem" @click="selectTypeFun('risk')">
+                    <span :class="{slt:(showSelect && selectType=='risk') || tempSelectItems.length>0}">{{tempSelectItems.join('、') || '风险类型'}}</span>
+                    <img :src="showSelect && selectType=='risk'?sdown_slt:sdown" alt="">
+                </div>
+                <div class="sitem" @click="selectTypeFun('level')">
+                    <span :class="{slt:(showSelect && selectType=='level') || selectedLevel}">{{selectedLevel || '风险等级'}}</span>
+                    <img :src="showSelect && selectType=='level'?sdown_slt.png:sdown" alt="">
+                </div>
+                <div class="blockMask" :style="showSelect?maskStyle:''" @click="showSelect = false">
+                    <div class="selectItems" @click.stop>
+                        <div class='itemContainer' v-show="selectType=='risk'">
+                            <div class="blocks" v-for="(item,index) in riskItemList" :key="index">
+                                <div class="btitle">{{item.name}}</div>
+                                <div class="items">
+                                    <div class="its" v-for="(e,idx) in item.list" :key="idx" @click="setleRistItems(e.name,index,idx)" :class="{'slt':e.slt}">{{e.name}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class='itemContainer' v-show="selectType=='level'">
+                            <div class="blocks">
+                                <div class="items">
+                                    <div class="its" v-for="(item,index) in levelList" :key="index" @click="setleLevelItems(item)" :class="{'slt':item == selectedLevel}">{{item}}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="bottomBtn"  v-show="selectType=='risk'">
+                            <div class="restBtn" @click="resetItems">重置</div>
+                            <div class="confirmBtn" @click="confirmItems">确定</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="scrollInfo">
+            <van-row class="fxsmmd-det-item" v-for="(item,index) in zishenfengxianList" :key="index">
+                <van-row class="fxsmmd-det-item-tl">
+                    <span>{{item.type}}</span> <div :class="['tl-tag',item.riskVOList[0].riskLevel=='4'?'gfx':item.riskVOList[0].riskLevel=='3'?'js':item.riskVOList[0].riskLevel=='2'?'ts':'']"><span>{{filterRiskLevel(item.riskVOList[0].riskLevel)}}</span></div>
+                </van-row>
+                <van-row class="fxsmmd-det-item-info">
+                    <van-row class="fxsmmd-det-item-i" type='flex' justify='space-between' align='center' v-for="(e,idx) in item.riskVOList" :key='idx' @click="goList(e)">
+                        <van-row type='flex' justify='space-between'  align='center' class="fxsmmd-det-item-mc">
+                            <van-col class="mc" v-html="filterDesc(e.description)"></van-col> 
+                        </van-row>
+                        <label>
+                            共<span style="color:#ED4033">{{e.count}}</span>条 
+                            <van-icon name="arrow" color='#969696' class="fxsmmd-det-item-jt"/>
+                        </label>
+                    </van-row>
+                </van-row>
+            </van-row>
+            <van-row class="fxsmmd-noData" v-if="showNoData">
+                <van-row>
+                    <img src="@/assets/img/nodata.png" alt="">
+                </van-row>
+                <span>暂无{{types}}数据</span>
+            </van-row>
+        </div>
+       </div>
+  </van-row>
+</template>
+
+<script>
+import {EnterpriseEnum,DimensionEnum} from '@/utils/sfaj'
+import { $goDetail } from '@/utils/utils'
+import sdown_slt from '@/assets/img/sdown_slt.png'
+import sdown from '@/assets/img/sdown.png'
+export default {
+    data() {
+        return {
+            sdown_slt,
+            sdown,
+            maskStyle:{
+                height:(document.body.clientHeight-44)+'px',
+            },
+            fixedStyle:{
+                position:'fixed',
+                top:'44px'
+            },
+            padTop:{
+                paddingTop:'38px',
+            },
+            showSelect:false,
+            selectType:'risk',
+            riskItemList:[
+                {name:'司法风险',list:[
+                    {name:'全部司法风险',slt:false},
+                    {name:'失信信息',slt:false},
+                    {name:'被执行人',slt:false},
+                    {name:'限制高消费',slt:false},
+                    {name:'终本案件',slt:false},
+                    {name:'限制出境',slt:false},
+                    {name:'裁判文书',slt:false},
+                    {name:'立案信息',slt:false},
+                    {name:'开庭公告',slt:false},
+                    {name:'法院公告',slt:false},
+                    {name:'送达公告',slt:false},
+                    {name:'询价评估',slt:false},
+                    {name:'股权冻结',slt:false},
+                ]},
+                {name:'经营风险',list:[
+                    {name:'全部经营风险',slt:false},
+                    {name:'股权出质',slt:false},
+                ]}
+            ],
+            riskItemListStr:"",
+            levelList:['全部','高风险','警示','提示'],
+            selectedRiskList:[],//真实选中
+            selectedLevel:'',
+            tempSelectItems:[],//临时选中items
+            realRiskItemListStr:""//真实选中
+        }
+    },
+    mounted () {
+    },
+    created () {
+        
+    },
+    destroyed () {
+    },
+    
+    props: {
+        zishenfengxianList: {
+            type: Array,
+            default: function(){
+                return []
+            }
+        },
+        types:{
+            type:String,
+            default:""
+        },
+        companyName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        fixed:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        },
+        activeName:{
+            type:String,
+            default(){
+                return ""
+            }
+        },
+        showNoData:{
+            type:Boolean,
+            default(){
+                return false
+            }
+        }
+    },
+    mounted () {
+        this.riskItemListStr = JSON.stringify(this.riskItemList);
+    },
+    methods: {
+        
+        filterDesc(des){
+            return des.replace(/ /g,'');
+        },
+        //风险类型选择
+        setleRistItems(e,index,idx) {
+            let riskItemList = this.riskItemList;
+            let firName = riskItemList[index].name
+            if(firName == '司法风险'){
+                this.checkItems(e,index,idx,'全部司法风险',riskItemList);
+            }else if(firName == '经营风险'){
+               this.checkItems(e,index,idx,'全部经营风险',riskItemList);
+            }
+        },
+
+        checkItems(e,index,idx,type,list){
+            let riskItemList = list;
+            if(e == type){
+                //取消司法风险的其它选项
+                riskItemList[index].list.forEach(item => {
+                    if(item.name != type){
+                        item.slt = false
+                    }
+                });
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+            }else{
+                //如果其它选项都选中则会默认选中全部司法风险按钮
+                let flag = true;
+                riskItemList[index]['list'][0].slt = false;
+                riskItemList[index]['list'][idx].slt = !riskItemList[index]['list'][idx].slt;
+                riskItemList[index].list.forEach(item=>{
+                    if(item.name != type && !item.slt){
+                        flag = false
+                    }
+                })
+                if(flag){
+                    riskItemList[index].list.forEach(item => {
+                        item.slt = false
+                    });
+                        riskItemList[index]['list'][0].slt = true;
+                }
+            }
+            // console.log("riskItemList===",riskItemList)
+            this.riskItemList = riskItemList;
+
+            let tempSelectItems = [];
+            riskItemList.forEach((item)=>{
+                item.list.forEach((e)=>{
+                    if(e.slt){
+                        tempSelectItems.push(e.name)
+                    }
+                })
+            })
+            this.tempSelectItems = tempSelectItems;
+
+        },
+
+        //选择风险等级
+        setleLevelItems(e){
+            this.selectedLevel = e;
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //确认选择条件
+        confirmItems(){
+            // let riskItemList = this.riskItemList;
+            // let selectedRiskList = [];
+            // riskItemList.forEach((item)=>{
+            //     item.list.forEach((e)=>{
+            //         if(e.slt){
+            //             selectedRiskList.push(e.name)
+            //         }
+            //     })
+            // })
+            // console.log("selectedRiskList==",selectedRiskList)
+            this.selectedRiskList = [...this.tempSelectItems];
+            this.realRiskItemListStr = JSON.stringify(this.riskItemList);//只做记录使用
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        //重置
+        resetItems(){
+            this.selectedRiskList = [];
+            this.tempSelectItems = [];
+            this.realRiskItemListStr = "";
+            this.riskItemList = JSON.parse(this.riskItemListStr);
+            this.showSelect = false;
+            this.requestData();
+        },
+
+        requestData:async function(){
+            let sendData = {
+                // entityType:'1',
+                // riskScanType:'1',
+                // entityId:this.$humanId,
+                // entityName:this.$personName
+            }
+
+            //风险类型和风险等级
+            let selectedRiskList = this.selectedRiskList;
+            let typeParent = [];
+            let types = [];
+            selectedRiskList.forEach((item)=>{
+                if(item == '全部司法风险'){
+                    typeParent.push('司法风险')
+                }else if(item == '全部经营风险'){
+                    typeParent.push('经营风险')
+                }else{
+                    types.push(item)
+                }
+            })
+
+            if(typeParent.length > 0){
+                 sendData.typeParents = typeParent;
+            }
+
+            let riskLevel = this.selectedLevel == '高风险'?'4':this.selectedLevel == '警示'?'3':this.selectedLevel == '提示'?'2':''
+            sendData.types = types;
+            sendData.riskLevel = riskLevel;
+            this.$emit('getGuanLianData', sendData);
+           
+        },
+
+        filterRiskLevel(type){
+            let name = "";
+            if(type){
+                name = type == '1'?'良好':type == '2'?'提示':type == '3'?'警示':type == '4'?'高风险':''
+            }
+            return name
+        },
+
+        selectTypeFun(type){
+           
+            if(this.showSelect && this.selectType == type){
+                this.showSelect = false;
+            }else{
+              this.showSelect = true  
+            }
+             this.selectType = type;
+            
+        },
+       
+       goList(item) {
+            let route = '';
+            DimensionEnum.forEach((e)=>{
+                if(e.code == item.dimensionCode){
+                    route =e.route + '?companyName='+this.$companyName + "&humanId="+item.personId + "&sourceType=zrr"
+                }
+            })
+            if(route){
+                $goDetail(route)
+            }
+        },
+    },
+    watch: {
+        showSelect(newValue, oldValue) {
+            if(newValue){
+                document.body.style.overflow = 'hidden'
+            }else{
+                document.body.style.overflow = 'auto'
+                if(this.selectType == 'risk'){
+                    if(this.realRiskItemListStr){
+                        this.riskItemList = [...JSON.parse(this.realRiskItemListStr)];
+                    }
+                    this.tempSelectItems = [...this.selectedRiskList]
+                }
+                  
+            }
+        },
+        activeName(){
+            this.showSelect = false
+        }
+        
+    },
+    
+}
+</script>
+
+<style scoped lang='scss'>
+    
+    
+</style>

+ 100 - 0
src/views/CustomPage/SxXgDataDet.vue

@@ -0,0 +1,100 @@
+<!--
+ * @Description: 
+ * @Author: 狼牙
+ * @Email: huangxiaoming@winhc.cn
+ * @Date: 2022-04-20 17:06:02
+ * @LastEditTime: 2022-04-20 17:45:01
+ * @LastEditors: 狼牙
+-->
+<template>
+    <div class="SxXgDataDet">
+        <div class="container">
+            <div class="s-top">
+                <div class="its">
+                    <p>累计被执行人总金额</p>
+                    <p class="je">{{$route.query.totalExecAmount}}万元</p>
+                </div>
+                <div class="its">
+                    <p>疑似当前欠款总金额</p>
+                    <p class="je">{{$route.query.totalNoExecAmount}}万元</p>
+                </div>
+            </div>
+            <div class="s-mid">
+                <p class="tl">被执行人</p>
+                <div class="ls">
+                    <span>当前被执行人金额</span>
+                    <span class="je">{{$route.query.zxrTotalExecAmount}}万元</span>
+                </div>
+            </div>
+            <div class="s-mid">
+                <p class="tl">终本案件</p>
+                <div class="ls">
+                    <span>执行标的总金额</span>
+                    <span class="je">{{$route.query.finalCaseExecAmount}}万元</span>
+                </div>
+                <div class="ls">
+                    <span>未履行总金额</span>
+                    <span class="je">{{$route.query.finalCaseNoExecAmount}}万元</span>
+                </div>
+                <div class="ls">
+                    <span>未履行比例</span>
+                    <span class="je">{{$route.query.noExecPercent}}</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script lang='ts' setup>
+    document.title = '详细数据';
+</script>
+
+<style lang='scss' scoped>
+    .SxXgDataDet{
+        padding: 0.52rem 0.24rem;
+        .container{
+               background: #fff;
+                border-radius: 0.16rem;
+                padding: 0 0.32rem;
+                color: #242A32;
+            .s-top{
+                display: flex;
+                padding: 0.4rem 0;
+                font-size: 0.24rem;
+                border-bottom: 1px solid #F8FAFC;
+                .its{
+                    flex: 1;
+                    .je{
+                        padding-top: 0.16rem;
+                    }
+                    &:last-child{
+                        border-left: 1px solid #F8FAFC;
+                        padding-left: 0.32rem;
+                    }
+                }
+            }
+            .s-mid{
+                padding: 0.4rem 0;
+                border-bottom: 1px solid #F8FAFC;
+                &:last-child{
+                    border-bottom: none;
+                }
+                .tl{
+                    color: #242A32;
+                    font-weight: bold;
+                    font-size: 15px;
+                }
+                .ls{
+                    display: flex;
+                    justify-content: space-between;
+                    padding-top: 0.32rem;
+                    color: #919498;
+                    font-size: 0.26rem;
+                    .je{
+                        color: #242A32;
+                    }
+                }
+            }
+        }
+    }
+</style>