Pārlūkot izejas kodu

feat: 文书裁判自定义页面

Satsiki 2 gadi atpakaļ
vecāks
revīzija
06e42e5748

+ 9 - 4
config.ts

@@ -6,19 +6,24 @@
  * @Description:
  */
 
-
+const currentConfig = {
+  downloadAppUrl: 'https://m.winhc.cn/wx-mobile/download/index.html'
+}
 
 const developmentConfig = {
   name: 'development',
-  baseUrl: 'https://twww.winhc.net/api'
+  baseUrl: 'https://twww.winhc.net/api',
+  ...currentConfig
 }
 const testConfig = {
   name: 'test',
-  baseUrl: 'https://twww.winhc.net/api'
+  baseUrl: 'https://twww.winhc.net/api',
+  ...currentConfig
 }
 const productionConfig = {
   name: 'production',
-  baseUrl: 'https://www.winhc.net/api'
+  baseUrl: 'https://www.winhc.net/api',
+  ...currentConfig
 }
 
 const env = [developmentConfig, testConfig, productionConfig]

+ 1 - 0
index.html

@@ -4,6 +4,7 @@
     <meta charset="UTF-8" />
     <link rel="icon" href="/favicon.ico" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
     <title>Vite App</title>
   </head>
   <body>

+ 86 - 0
src/assets/js/depend.js

@@ -0,0 +1,86 @@
+if (import.meta.env.MODE==='production') { //生产
+  window.winhc_api_restful = 'https://gw.winhc.cn/firefly-erp' //生产
+  window.winhc_ws_systemUrl='https://gw.winhc.cn/case-search-v2'
+  window.winhc_wx_frefix='https://m.winhc.cn/wx-mobile/newMobile/#/'
+  window.winhc_selfData_frefix='https://m.winhc.cn/wx-mobile/newCreditorDynamic/#/'
+  window.winhc_api_law = 'https://gw.winhc.cn/wukong'
+  window.winhc_api_common = 'https://m.winhc.cn/wx-mobile/' //生产
+  window.winhc_api_chances = 'https://gw.winhc.cn/case-chance'
+  window.winhc_api_sifacase = 'https://gw.winhc.cn/winhc-justice-service'
+  window.winhc_api_workbench = 'https://gw.winhc.cn/lawyer-workbench'
+  window.winhc_lawyer_service = 'https://gw.winhc.cn/winhc-lawyer-service'
+  window.winhc_newgraph = 'https://gw.winhc.cn/winhc-relation-ship'
+  window.winhc_api_monitors = 'https://gw.winhc.cn/radar-monitors'
+} else if(import.meta.env.MODE==='test') { //测试
+  window.winhc_api_restful = 'https://twww.winhc.net/api/firefly-erp' //测试
+  window.winhc_ws_systemUrl='https://twww.winhc.net/api/case-search-v2'
+  window.winhc_wx_frefix='https://tm.winhc.net/wx-mobile/newMobile/#/'
+  window.winhc_selfData_frefix='https://tm.winhc.net/wx-mobile/newCreditorDynamic/#/'
+  window.winhc_api_law = 'https://twww.winhc.net/api/law-search'
+  window.winhc_api_chances = 'https://twww.winhc.net/api/case-chance'
+  window.winhc_api_sifacase = 'https://twww.winhc.net/api/winhc-justice-service'
+  window.winhc_api_workbench = 'https://twww.winhc.net/api/lawyer-workbench'
+  window.winhc_lawyer_service = 'https://twww.winhc.net/api/winhc-lawyer-service'
+  window.winhc_newgraph = 'https://twww.winhc.net/api/winhc-relation-ship'
+  window.winhc_api_monitors = 'https://twww.winhc.net/api/radar-monitors'
+  window.winhc_api_common = 'https://tm.winhc.net/wx-mobile/' //测试
+} else {
+  window.winhc_api_restful = 'https://twww.winhc.net/api/firefly-erp' //测试
+  window.winhc_ws_systemUrl='https://twww.winhc.net/api/case-search-v2'
+  window.winhc_wx_frefix='https://tm.winhc.net/wx-mobile/newMobile/#/'
+  window.winhc_selfData_frefix='https://tm.winhc.net/wx-mobile/newCreditorDynamic/#/'
+  window.winhc_api_law = 'https://twww.winhc.net/api/wukong'
+  window.winhc_api_common = 'https://tm.winhc.net/wx-mobile/' //测试
+  window.winhc_api_chances = 'https://twww.winhc.net/api/case-chance'
+  window.winhc_api_sifacase = 'https://twww.winhc.net/api/winhc-justice-service'
+  window.winhc_api_workbench = 'https://twww.winhc.net/api/lawyer-workbench'
+  window.winhc_lawyer_service = 'https://twww.winhc.net/api/winhc-lawyer-service'
+  window.winhc_newgraph = 'https://twww.winhc.net/api/winhc-relation-ship'
+  window.winhc_api_monitors = 'https://twww.winhc.net/api/radar-monitors'
+}
+window.methods={
+  isemail:function (mail) {
+      // var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
+      var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
+      return reg.test(mail)
+  },
+  is_weixin:function() {
+      var ua = navigator.userAgent.toLowerCase()
+      if(ua.match(/MicroMessenger/i)=='micromessenger') { return true } else { return false }
+  }
+}
+
+/*这段代码是固定的,必须要放到js中*/
+function setupWebViewJavascriptBridge(callback) {
+  if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge) }
+  if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback) }
+  window.WVJBCallbacks = [callback]
+  var WVJBIframe = document.createElement('iframe')
+  WVJBIframe.style.display = 'none'
+  WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'
+  document.documentElement.appendChild(WVJBIframe)
+  setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
+}
+
+// ocMethod=function(method,data) {
+//   setupWebViewJavascriptBridge(function (bridge) {
+//       bridge.callHandler(method, data||{},
+//           function callback(response) {
+//               log('JS got response', response)
+//           }
+//       )
+//   })
+// }
+
+// systemJudge=function() {
+//   var systemFlag = ''
+//   var u = navigator.userAgent
+//   var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 //android终端
+//   var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios终端
+//   if(isAndroid) {
+//       systemFlag = 'Android'
+//   }else if(isiOS) {
+//       systemFlag = 'IOS'
+//   }
+//   return systemFlag
+// }

+ 11 - 0
src/components/DetailCustom/PoChanChongZheng.vue

@@ -13,6 +13,7 @@
           justify="space-between"
           align="center"
           class="yhc-nb-list guanlianInfo"
+          @click="goGonGaoDet(val, '1')"
         >
           <div class="left" style="flex: 1">
             <div class="left-top">
@@ -47,6 +48,7 @@
           justify="space-between"
           align="center"
           class="yhc-nb-list guanlianInfo"
+          @click="goGonGaoDet(val, '2')"
         >
           <div class="left" style="flex: 1">
             <div class="left-top">
@@ -76,13 +78,22 @@
 <script lang="ts" setup>
   import { useDemensionDetailStore } from '@/store/demensionDetail'
   import {onMounted, ref} from 'vue'
+  import { useRouter } from 'vue-router'
   const store = useDemensionDetailStore()
+
+  const router = useRouter()
   // const Detail = store.allRes.bankruptcyOpenCase
   const activeNames =  ref(['1', '2'])
   const gongGaoList = store.allRes.bankruptcyOpenAnnouncements
   const caiPanList = store.allRes.bankruptcyJudgmentDocuments
   onMounted(() => {
   })
+
+  const goGonGaoDet =(item: { rowKey: string; }, type: string) => {
+    router.push(
+      `/PoChanChongZhengDetail?id=${item.rowKey}&type=${type}`
+    )
+  }
 </script>
 
 <style lang="scss" scoped>

+ 14 - 10
src/components/Global/CommonTab.vue

@@ -1,12 +1,20 @@
 <template>
 
-  <div>
+  <div v-if="state.tabList.length">
     <van-tabs></van-tabs>
     <van-tabs v-model:active="active" class="fixed w-full top-0 z-10"
               swipeable animated
               @change="change">
-      <van-tab v-for="(item,index) in state.tabList" :key="item.value" :title="`${item.name}${store.tabInfo.totalNumList[index] || ''}`" :name="item.value" title-style="font-weight:bold">
-      </van-tab>
+
+      <div v-if="store.selectDemension.tabs.key === 'deleted'" title-style="font-weight:bold">
+        <van-tab :name="0" :title="`${store.selectDemension.title}${store.tabInfo.totalNumList[0]}`"></van-tab>
+        <van-tab :name="1" :title="`历史${store.selectDemension.title}${store.tabInfo.totalNumList[1]}`"></van-tab>
+      </div>
+      <div v-else>
+        <van-tab v-for="(item,index) in state.tabList" :key="item.value" :title="`${item.name}${store.tabInfo.totalNumList[index] || ''}`" :name="item.value" title-style="font-weight:bold">
+        </van-tab>
+      </div>
+
     </van-tabs>
 
   </div>
@@ -24,13 +32,11 @@
   }
   interface tabState {
     tabList:tabItem[],
-    active:number
   }
 
   const active = ref(0)
-  const state =reactive<tabState>({
-    tabList:[{name:'',value:0,num:0}],
-    active:0
+  const state = reactive<tabState>({
+    tabList:[{name:'',value:0,num:0}]
   })
 
   const store = useDemensionListStore()
@@ -56,9 +62,7 @@
         }
       ]
       if(route.path.includes('_history')) {
-        // change(1)
-        // active.value = 1
-        // console.log(active)
+        active.value = 1
       }
 
       return

+ 64 - 0
src/components/Global/DownApp.vue

@@ -0,0 +1,64 @@
+<template>
+  <div class="global_shareTop">
+    <div class="left">
+      <div class="img">
+        <img src="@/assets/img/logoShare.png" alt="">
+      </div>
+      <div class="txt">
+        <p style="font-size: 14px;font-weight: 600;">赢火虫</p>
+        <p style="font-size: 12px;">大数据+法律+资本</p>
+      </div>
+    </div>
+    <div class="right">
+      <button @click="$downApp">下载</button>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import {$downApp} from '@/utils/utils'
+  // const downApp = () => {
+  //   window.location.href = import.meta.env.downloadAppUrl as string
+  // }
+</script>
+
+<style scoped lang='scss'>
+    .global_shareTop  {
+        background: #fff;
+        padding: 10px 13px;
+        border-bottom: 5px solid #F2F2F1;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .left {
+            display: flex;
+            .img {
+                margin-right: 10px;
+                img {
+                    width: 25px;
+                    height: 33px;
+                }
+            }
+            .txt {
+                line-height: 18px;
+                p{
+                    color: #0a0204;
+                    margin: 0;
+                }
+            }
+        }
+        .right {
+            button {
+                background: #fff;
+                border: 1px solid #3A75F6;
+                width: 60px;
+                height: 30px;
+                border-radius: 3px;
+                color: #3A75F6;
+                padding: 0;
+                line-height: 28px;
+            }
+        }
+    }
+
+</style>

+ 98 - 0
src/components/Global/Nav.vue

@@ -0,0 +1,98 @@
+<template>
+  <div class="navDefault">
+
+    <div class="nav">
+      <div class="navLeft">
+        <img src="@/assets/img/arrow.png" alt="" class="back" @click="goBack">
+      </div>
+      <span class="navMid">
+        <slot name="title"></slot>
+      </span>
+      <div class="navRight">
+        <slot name="nav-right"></slot>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<script>
+  export default {
+    name:'navDefault',
+    props: {
+      title: {
+        type: String,
+        default: '赢火虫'
+      }
+    },
+    data() {
+      return {
+
+      }
+    },
+    methods: {
+      goBack() {
+        this.$historyGoBack()
+      },
+      showExplain() {
+        this.$emit('explain')
+      }
+    }
+  }
+</script>
+
+<style lang='scss' scoped>
+    .navDefault{
+        background: #fff;
+        position: fixed;
+        left: 0;
+        right: 0;
+        padding: 50px 15px 15px;
+        z-index: 10;
+        top: 0;
+        .nav{
+            position: relative;
+            display: flex;
+            align-items: center;
+            flex: 1;
+            justify-content: center;
+            .navLeft{
+                position: absolute;
+                left: 0;
+                img{
+                    width: 20px;
+                    height: 20px;
+                }
+            }
+            .navMid{
+                font-weight: bold;
+                font-size: 18px;
+                color: #191A22;
+                span{
+                    position: relative;
+                }
+                .vip{
+                    width: 0.48rem;
+                    height: 0.22rem;
+                    position: absolute;
+                    right: -26px;
+                    top: -2px;
+                }
+            }
+           .navRight{
+                position: absolute;
+                right: 0;
+                color: #64696E;
+                font-size: 14px;
+                img{
+                    width: 20px;
+                    height: 20px;
+                }
+                .nemail{
+                    margin-left: 16px;
+                }
+            }
+        }
+
+    }
+</style>

+ 83 - 1
src/js-pages/company-detail/pages/FaLvFengXian.ts

@@ -1,7 +1,9 @@
+import { $goOuterUrl } from '@/utils/utils'
 import { shallowRef } from 'vue'
 import { DemensionPagesInter } from '../../types'
 import PoChanChongZheng from '@/components/DetailCustom/PoChanChongZheng.vue'
 import SiFaPaiMaiVue from '@/components/DetailCustom/SiFaPaiMai.vue'
+import JYNewCaselibDetVue from '@/views/CustomPage/JYNewCaselibDet.vue'
 
 const judgeTendencyCom = (judgeTendency: string) => {
   if (['撤诉', '对方撤诉'].includes(judgeTendency)) {
@@ -737,6 +739,62 @@ export const pageArr: DemensionPagesInter = {
       title: '限制高消费',
       tabs: { key: 'deleted' },
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
+      detailType: '5',
+      detailList: [
+        {
+          name: '案号',
+          value: 'caseNo'
+        },
+        {
+          name: '身份证号码/组织机构代码',
+          value: 'cardNum'
+        },
+        {
+          name: '性别',
+          value: 'sex'
+        },
+        {
+          name: '关联对象',
+          value: 'personName',
+          companyId: 'pid'
+        },
+        {
+          name: '申请执行人',
+          listVal: 'applicantInfo',
+          value: 'name',
+          companyId: 'litigant_id'
+        },
+        {
+          name: '限消令对象',
+          value: 'companyName',
+          companyId: 'companyId',
+          isProperty: true
+        },
+        {
+          name: '执行法院名称',
+          value: 'courtName'
+        },
+        {
+          name: '立案日期',
+          value: 'caseCreateTime',
+          valueType: 'date'
+        },
+        {
+          name: '发布日期',
+          value: 'publishDate',
+          valueType: 'date'
+        },
+        {
+          name: '省份',
+          value: 'province'
+        },
+        {
+          name: '相关文件详情',
+          value: 'filePath',
+          solt: () => `<span class="link">查看详情</span>`,
+          customClick: (item: { filePath: string }) => $goOuterUrl(item.filePath)
+        }
+      ],
       viewList: [
         {
           name: '案号',
@@ -774,6 +832,7 @@ export const pageArr: DemensionPagesInter = {
       code: 'wenshu',
       routing: 'CaiPanWenShu',
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
+      detailCustomRender: shallowRef(JYNewCaselibDetVue),
       title: '裁判文书',
       menuList: [
         {
@@ -934,6 +993,30 @@ export const pageArr: DemensionPagesInter = {
       routing: 'FaYuanGongGao',
       title: '法院公告',
       tabs: { key: 'deleted' },
+      menuList: [
+        {
+          paramsValue: 'announcementType',
+          paramsId: 'announcement_type',
+          value: '',   // v-model绑定的值
+          list: [
+            {
+              text: '公告类型不限',
+              value: ''
+            }
+          ]
+        },
+        {
+          paramsValue: 'year',
+          value: '',   // v-model绑定的值
+          paramsId: 'publish_date',
+          list: [
+            {
+              text: '年份不限',
+              value: ''
+            }
+          ]
+        }
+      ],
       companyId: '88f04cbfab150fe2bccdeec3aea32750',
       detailList: [
         {
@@ -1056,7 +1139,6 @@ export const pageArr: DemensionPagesInter = {
       ]
     },
     {
-      //正文详情页未完成
       code: 'bankruptcy',
       routing: 'PoChanChongZheng',
       title: '破产重整',

+ 1 - 0
src/main.ts

@@ -4,6 +4,7 @@ import { createPinia } from 'pinia'
 import router from './router'
 import 'lib-flexible/flexible' // px在h5自动转rem
 import 'virtual:windi.css'
+import '@/assets/js/depend.js'
 // import 'virtual:windi-devtools'
 
 

+ 6 - 1
src/plugins/vant.ts

@@ -1,7 +1,8 @@
 import {
   Button, Empty, Row,
   Tab, Tabs, List, Icon, DropdownMenu, DropdownItem,
-  Toast, Collapse, CollapseItem, Cell, Col, Step, Steps, Skeleton, Popup, Swipe, SwipeItem, ActionSheet
+  Toast, Collapse, CollapseItem, Cell, Col, Step, Steps, Skeleton, Popup, Swipe, SwipeItem, ActionSheet,
+  Loading, Divider, Dialog, PullRefresh
 } from 'vant'
 import { App } from 'vue'
 
@@ -27,5 +28,9 @@ export const useVant = (app: App<Element>) => {
   app.use(Swipe)
   app.use(SwipeItem)
   app.use(ActionSheet)
+  app.use(Loading)
+  app.use(Divider)
+  app.use(Dialog)
+  app.use(PullRefresh)
 
 }

+ 20 - 0
src/router/index.ts

@@ -28,6 +28,26 @@ const routes: Array<RouteRecordRaw> = [
     path: '/notFound',
     name: 'notFound',
     component: () => import('@/views/notFound.vue')
+  },
+  {
+    path: '/JYNewCaselibDet',
+    name: 'JYNewCaselibDet',
+    component: () => import('@/views/CustomPage/JYNewCaselibDet.vue')
+  },
+  {
+    path: '/newCaseDetail',
+    name: 'newCaseDetail',
+    component: () => import('@/views/CustomPage/newCaseDetail.vue')
+  },
+  {
+    path: '/MonitiorList',
+    name: 'MonitiorList',
+    component: () => import('@/views/CustomPage/MonitiorList.vue')
+  },
+  {
+    path: '/PoChanChongZhengDetail',
+    name: 'PoChanChongZhengDetail',
+    component: () => import('@/views/CustomPage/PoChanChongZhengDetail.vue')
   }
 
 ]

+ 14 - 6
src/store/demensionDetail.ts

@@ -33,13 +33,21 @@ export const useDemensionDetailStore = defineStore({
     },
     async getDetail() {
       const route = useRoute()
-      // $axios
-      const params = {
-        id: route.query.id,
-        code: this.selectDemension.code
+
+      let res = {}
+      if (route.query.fromBusiness !== 'dynamic') {
+        const params = {
+          id: route.query.id,
+          code: this.selectDemension.code
+        }
+        res = await $axios.get('lawyer-workbench/risk/dimension/detail', { params })
+      } else {
+        const params = {
+          tn: route.query.tn,
+          rowkey: route.query.rowkey
+        }
+        res = await $axios.get('radar-monitors/v8/radar/detail', { params })
       }
-      const res = await $axios.get('lawyer-workbench/risk/dimension/detail', { params })
-      // console.log(res)
       this.allRes = res
       if (this.selectDemension.detailValue) {
         this.info = res[this.selectDemension.detailValue]

+ 7 - 10
src/store/demensionList.ts

@@ -3,6 +3,7 @@ import { DemensionStoreInter } from '../types/store'
 import { defineStore } from 'pinia'
 import $axios from '@/api'
 import { $getDemension } from '@/utils/utils'
+import { useRoute } from 'vue-router'
 
 export const useDemensionListStore = defineStore({
   id: 'demensionList',
@@ -83,13 +84,14 @@ export const useDemensionListStore = defineStore({
 
     //有历史tab页的请求,自定义请求获取额外数据
     async getDeletedList() {
-      this.deleted = 1
+      const route = useRoute()
+      const isHistory = route.path.includes('_history')
+      this.deleted = isHistory ? 0 : 1
       const totalNum1 = await (await this.getList()).totalNum
       this.dataList = []
-      this.deleted = 0
+      this.deleted = isHistory ? 1 : 0
       const totalNum2 = await (await this.getList()).totalNum
-      this.tabInfo.totalNumList = [totalNum2, totalNum1]
-      // console.log()
+      this.tabInfo.totalNumList = [isHistory ? totalNum1 : totalNum2, isHistory ? totalNum2 : totalNum1]
     },
 
     //有menu页的请求,修改menu动态数据
@@ -106,7 +108,6 @@ export const useDemensionListStore = defineStore({
             newArr.push(item)
           } else {
 
-            // console.log(dataExtra, 8888)
             const listArr: { text: string; value: string }[] = []
             //初始化数据
             item.list.length = 1
@@ -129,17 +130,13 @@ export const useDemensionListStore = defineStore({
             } else {
               const dataExtraArr = Object.keys(dataExtra)
 
-              // console.log(dataExtraArr)
 
               dataExtraArr.map(dataExtraItem => {
 
 
-                // console.log(dataExtraItem)
 
                 if (dataExtraItem === item.paramsId) {
                   const extraList = dataExtra[dataExtraItem] as []
-                  console.log(dataExtraItem)
-                  console.log(extraList)
                   if (extraList.length) {
                     extraList.map((extraListItem: { key: string, desc?: string }) => {
                       listArr.push({
@@ -153,7 +150,7 @@ export const useDemensionListStore = defineStore({
 
               })
             }
-            console.log(item)
+            // console.log(item)
 
 
             newArr.push(

+ 105 - 0
src/utils/share.ts

@@ -0,0 +1,105 @@
+import { useRoute } from 'vue-router'
+import axios from 'axios'
+const route = useRoute()
+
+
+//未完成方法 分享APP内部页面
+export const $shareH5 = (obj: any) => { //跳企业Native
+  console.log(obj)
+  return
+}
+
+export const $methods = {
+  wx_shareConfig: function (config) { //二次分享
+    if (import.meta.env.MODE !== 'production' || route.query.pageType !== 'H5' || !window.methods.is_weixin()) {
+      return
+    }
+    console.log('shareConfig', window.wx)
+    if (window.wx) {
+      shareConfig(config)
+    } else {
+      const script = document.createElement('script')
+      script.src = './jweixin-1.2.0.js'
+      document.querySelector('body').append(script)
+      const Timer = setInterval(() => {
+        if (window.wx) {
+          shareConfig(config)
+          clearInterval(Timer)
+        }
+      }, 300)
+    }
+  }
+}
+
+
+
+const shareConfig = (config) => {
+  axios({
+    // url: '/getConfigSign.ajax',
+    url: '/getConfigSignSimple.ajax',
+    method: 'GET',
+    params: {
+      'url': encodeURIComponent(window.location.href),
+      'money': '',
+      'openId': '',
+      'orderId': '',
+      'prepayId': ''
+    }
+  }).then(function (res) {
+    console.log(res)
+    window.wx.config({
+      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+      appId: res.data.appId, // 必填,公众号的唯一标识
+      timestamp: res.data.signParam.timestamp, // 必填,生成签名的时间戳
+      nonceStr: res.data.signParam.noncestr, // 必填,生成签名的随机串
+      signature: res.data.signParam.signature, // 必填,签名,见附录1
+      jsApiList: ['hideMenuItems', 'onMenuShareTimeline', 'onMenuShareAppMessage']
+      // ,jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','onMenuShareQQ','onMenuShareQZone', 'chooseImage', 'uploadImage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+    })
+
+    window.wx.ready(function () {
+      //批量隐藏功能
+      window.wx.hideMenuItems({
+        menuList: [
+          // 'menuItem:share:appMessage',
+          // 'menuItem:share:timeline',
+          'menuItem:exposeArticle',
+          'menuItem:share:qq',
+          'menuItem:share:weiboApp',
+          'menuItem:share:facebook',
+          'menuItem:share:QZone',
+          'menuItem:editTag',
+          //'menuItem:copyUrl',
+          // 'menuItem:openWithQQBrowser',
+          // 'menuItem:openWithSafari',
+          'menuItem:share:email'
+        ],
+        success: function () {
+          // alert('已隐藏“阅读模式”,“分享到朋友圈”,“复制链接”等按钮');
+        },
+        fail: function () {
+          // alert(JSON.stringify(res));
+        }
+      })
+      window.wx.onMenuShareAppMessage({
+        title: config.title, // 分享标题
+        desc: config.desc, // 分享描述
+        link: config.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
+        imgUrl: config.imgUrl, // 分享图标
+        success: function () {
+          // 设置成功
+        }
+      })
+      window.wx.onMenuShareTimeline({
+        title: config.title, // 分享标题
+        link: config.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
+        imgUrl: config.imgUrl, // 分享图标
+        success: function () {
+          // 设置成功
+        }
+      })
+    })
+  }).catch(function (error) {
+    console.log(error)
+  })
+}

+ 13 - 1
src/utils/utils.ts

@@ -2,6 +2,16 @@ import { DemensionPagesListInter, DemensionPagesInter } from './../js-pages/type
 import { useRoute } from 'vue-router'
 import pagesArr from '@/js-pages'
 import dayjs from 'dayjs'
+import { config } from '../../config'
+
+
+
+export const $downApp = () => { //跳企业Native
+  window.location.href = config.downloadAppUrl
+  return
+}
+
+
 
 
 
@@ -49,6 +59,8 @@ export const $isCompanyClass = (companyId: string) => {
 
 //选择匹配的企业维度
 export const $getDemension = (routerName?: string) => {
+  console.log(routerName)
+
   const route = useRoute()
   console.log(route.params.routerName)
 
@@ -57,7 +69,7 @@ export const $getDemension = (routerName?: string) => {
     return arr.reduce((total, item: any) => item.list ? demensionArr(item.list) : allDemensionArr.push(item), [])
   }
   demensionArr(pagesArr)
-  const selectDemension = allDemensionArr.find(item => (routerName ? `/${routerName}` : route.params.routerName) === `${item.routing}`)!
+  const selectDemension = allDemensionArr.find(item => (routerName ? `${routerName}` : route.params.routerName) === `${item.routing}`)!
 
   return {
     selectDemension,

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1674 - 0
src/views/CustomPage/JYNewCaselibDet.vue


+ 305 - 0
src/views/CustomPage/MonitiorList.vue

@@ -0,0 +1,305 @@
+<template>
+  <div class="monitorList">
+    <van-loading v-show="loading" type="spinner" color="#1989fa" />
+    <div class="navDefault">
+      <div class="nav">
+        <div class="navLeft">
+          <img src="@/assets/img/arrow.png" alt="" class="back" @click="goBack">
+        </div>
+        <span class="navMid">
+          <slot name="title">案件监测</slot>
+        </span>
+      </div>
+    </div>
+    <van-empty v-if="monitoList.length==0 && !loading" :image="$emptyImg" class="custom-image" description="暂时没有找到相关数据" />
+
+    <div class="wrapMonitorList">
+      <van-pull-refresh
+        v-model="refreshing"
+        pulling-text="下拉开始刷新..."
+        loosing-text="释放刷新..."
+        loading-text="正在刷新"
+        head-height="50"
+        @refresh="refreshList"
+      >
+        <div v-show="totalNum" class="mo-tips">已为您监测{{totalNum}}个案件</div>
+        <van-list
+          class="content sifa-yhc-case-info"
+          @load="onLoad"
+        >
+          <van-row v-for="(e,index) in monitoList" :key="index" class="four-info-item" @click="goDetail(e.id)">
+            <van-row class="case-item-title"><span v-if="e.caseEnd && e.caseEnd == 1" class="ja">[疑似结案]</span>{{e.title}}</van-row>
+            <div class="case-lables">
+              <span v-for="(item,index) in (e.caseType || [])" :key="index + 100" class="itm">{{item}}</span>
+              <span v-for="(item,index) in (e.lable || [])" :key="index" class="itm oth">{{item}}</span>
+            </div>
+            <van-row class="case-info-block">
+              <van-row class="case-info-block-left">
+                <van-row class="left-item">
+                  <span>案件类型:</span>
+                  <span class="left-item-value">{{e.caseType && e.caseType.join(',')}}</span>
+                </van-row>
+                <van-row v-for="item in e.showPresonList" :key="item.title" class="left-item">
+                  <span class="ybgTitle">{{item.title}}:</span>
+                  <div style="display:flex;flex-direction:column;flex:1">
+                    <span v-for="(em,index) in item.list" :key="index" :class="['left-item-value', em.litigant_id?'link':'']" @click.stop="goFilterNewUnknowCompony(em)">{{em.name}}</span>
+                  </div>
+                </van-row>
+
+                <van-row class="left-item">
+                  <span>案由:</span>
+                  <span class="left-item-value">{{e.caseReason || '-'}}</span>
+                </van-row>
+                <van-row class="left-item">
+                  <span>当前审理阶段:</span>
+                  <span class="left-item-value">{{e.caseStage}}</span>
+                </van-row>
+                <van-row class="left-item">
+                  <span>最新审理日期:</span>
+                  <span class="left-item-value">{{e.date && e.date.substring(0,11)}}</span>
+                </van-row>
+              </van-row>
+              <!-- <van-icon name="arrow" color='#BDBFC1'/> -->
+            </van-row>
+          </van-row>
+
+        </van-list>
+      </van-pull-refresh>
+    </div>
+
+
+  </div>
+</template>
+
+<script lang="ts">
+  import $axios from '@/api'
+  import {Toast} from 'vant'
+  import {$goCompany} from '@/utils/utils'
+  export default {
+    data() {
+      return {
+        loading:false,
+        monitoList:[],
+        pageNum:1,
+        totalNum:0,
+        totalPage:0,
+        companyName:'',
+        refreshing: false
+      }
+    },
+    created () {
+
+    },
+    mounted() {
+      document.querySelector('title').innerText='案件监测'
+      window.refreshMonitorList = this.refreshList
+      this.getMonitorList()
+    },
+    methods: {
+      onLoad() {
+        //    let totalPage = Math.ceil(this.totalNum / 10);
+        // console.log(this.totalPage,this.pageNum)
+        if(!this.loading && this.totalPage > this.pageNum) {
+          this.pageNum++
+          this.getMonitorList()
+
+        }
+      },
+
+      refreshList() {
+        setTimeout(() => {
+          if (this.refreshing) {
+            this.refreshing = false
+          }
+        },800)
+        this.pageNum = 1
+        this.getMonitorList()
+      },
+
+      getMonitorList:async function() {
+        if(this.pageNum != 1) {
+          window.globalVariables.cancelLoadingOnce = true
+        }else{
+          this.monitoList = []
+          this.totalNum = 0
+          this.totalPage = 0
+        }
+        try {
+          this.loading=true
+          const res = await $axios.post('winhc-justice-service/justice/case/v8',{
+            'follow':1,
+            'pageNum':this.pageNum,
+            'pageSize':1000
+          })
+          this.loading = false
+          console.log('res=',res)
+          if( res) {
+            const monitoList = res
+
+            if(monitoList.length > 0) {
+              monitoList.forEach(e => {
+                //合并原告被告
+                const ybList = [...(e.ygName || []),...(e.bgName || [])]
+                const showPresonList = []
+                ybList.forEach((item) => {
+                  const showTitle = item.partyTitle
+                  let hasIndex = 'none'
+                  showPresonList.forEach((pre,i) => {
+                    if(pre.title === showTitle) {
+                      hasIndex = i
+                    }
+                  })
+                  const obj={
+                    litigant_id:item.litigantId,
+                    name: item.name
+                  }
+                  if(hasIndex==='none') {
+                    showPresonList.push({
+                      title:showTitle,
+                      list:[obj]
+                    })
+                  } else {
+                    showPresonList[hasIndex].list.push(obj)
+                  }
+                })
+                e.showPresonList = showPresonList
+              })
+              this.monitoList = this.monitoList.concat(monitoList)
+              this.totalNum = monitoList.length
+            }
+
+          }else{
+            if(this.pageNum == 1) {
+              this.$toast(res.errorMsg)
+            }
+          }
+
+
+
+        } catch (error) {
+          this.loading=false
+        }
+      },
+      goFilterNewUnknowCompony(val) {
+        if(val.litigant_id) {
+          $goCompany(val.name,val.litigant_id)
+        }
+      },
+
+
+      goDetail(id) {
+        if(id) {
+          this.$router.push('/NewCaseDetail?id='+id)
+        }
+      }
+
+
+    },
+    filters: {
+
+    }
+
+  }
+</script>
+
+<style lang='scss' scoped>
+.navDefault{
+        background: #fff;
+        position: fixed;
+        left: 0;
+        right: 0;
+        padding: 50px 15px 15px;
+        z-index: 10;
+        top: 0;
+        .nav{
+            position: relative;
+            display: flex;
+            align-items: center;
+            flex: 1;
+            justify-content: center;
+            .navLeft{
+                position: absolute;
+                left: 0;
+                img{
+                    width: 20px;
+                    height: 20px;
+                }
+            }
+            .navMid{
+                font-weight: bold;
+                font-size: 18px;
+                color: #191A22;
+                span{
+                    position: relative;
+                }
+                .vip{
+                    width: 0.48rem;
+                    height: 0.22rem;
+                    position: absolute;
+                    right: -26px;
+                    top: -2px;
+                }
+            }
+           .navRight{
+                position: absolute;
+                right: 0;
+                color: #64696E;
+                font-size: 14px;
+                img{
+                    width: 20px;
+                    height: 20px;
+                }
+                .nemail{
+                    margin-left: 16px;
+                }
+            }
+        }
+
+    }
+    #app {
+        overflow: hidden;
+    }
+    .van-pull-refresh{
+        min-height: calc(100vh - 80px);
+    }
+    .monitorList{
+        height: 100%;
+        -webkit-overflow-scrolling: touch;
+        overflow: hidden;
+        background: #F2F6F9;
+        padding-top: 81px;
+        font-size: 0.28rem;
+
+        .wrapMonitorList{
+            height: 100%;
+            overflow: auto;
+            .mo-tips{
+                color: #A7AAAD;
+                font-size: 0.24rem;
+               margin: 0.64rem 0.24rem 0;
+            }
+            .sifa-yhc-case-info{
+                background: #F2F6F9;
+                padding: 0;
+                .four-info-item{
+                    background: #fff;
+                    margin: 0.24rem;
+                    border-radius: 0.24rem;
+                    padding: 0 0.4rem;
+                    .case-item-title{
+                        // padding: 0.4rem 0;
+                    }
+                    .case-lables .itm{
+                        border-radius: 0.04rem;
+                    }
+                }
+            }
+        }
+
+
+    }
+
+
+
+
+</style>

+ 143 - 0
src/views/CustomPage/PoChanChongZhengDetail.vue

@@ -0,0 +1,143 @@
+<template>
+  <div id="GongGaoXiangqing">
+    <div class="title-top">
+      {{ info.title }}
+    </div>
+    <div class="top-info">
+      <div class="item">公开日期:{{ dateFormat(info.publicDate) }}</div>
+      <div class="item">公告类型:{{ info.caseType || "--" }}</div>
+      <div
+        class="item"
+      >
+        公开人:{{ agencyCourt || "--" }}
+      </div>
+      <div
+        class="item"
+      >
+        债务人:{{ respondentInfo || "--" }}
+      </div>
+    </div>
+    <div v-if="fileName" class="gonggao-wj">
+      <div class="wz">P</div>
+      <div class="mc">
+        <a rel="nofollow" :href="info.annexUrl" style="color: #000">{{
+          fileName
+        }}</a>
+      </div>
+    </div>
+    <van-divider>文书正文</van-divider>
+    <div class="contentHtml" v-html="info.content"></div>
+  </div>
+</template>
+
+<script lang="ts">
+  import $axios from '@/api'
+  import { $dateFormat } from '@/utils/utils'
+  export default {
+    data() {
+      return {
+        info: {},
+        agencyCourt: '',
+        respondentInfo: ''
+      }
+    },
+    computed:{
+      dateFormat() {
+        return (val) => {
+          return $dateFormat(val)
+        }
+      }
+    },
+    methods: {
+      async getInfo() {
+        const res = await $axios.get(
+          `firefly-erp/eci/bankruptcy/opencase/v8/relate?id=${this.$route.query.id}&type=${this.$route.query.type}`
+        )
+        this.info = res.detail
+        this.agencyCourt = res.agencyCourt
+        this.respondentInfo = res.respondentInfo
+        if (
+          res.detail.title.substring(0, 1) !== '(' &&
+          res.detail.title.substring(0, 1) !== '('
+        ) {
+          this.info.title = res.detail.caseNo + res.detail.title
+        }
+      }
+    },
+    mounted() {
+      this.getInfo()
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+:deep().detail_text {
+  padding-bottom: 20px;
+  div {
+    font-size: 14px;
+  }
+  div:first-child {
+    margin-left: 0 !important;
+    margin-top: 0px !important;
+    width: auto !important;
+    margin-right: 0 !important;
+  }
+  p,
+  span {
+    font-size: 14px !important;
+  }
+}
+#GongGaoXiangqing {
+  background-color: white;
+  padding: 10px;
+  height: 100%;
+  width: 100%;
+  line-height: 22px;
+  overflow: auto;
+  .title-top {
+    font-size: 16px;
+    font-weight: bold;
+  }
+  .top-info {
+    margin-top: 15px;
+    .item {
+      margin-bottom: 5px;
+    }
+  }
+  .gonggao-wj {
+    background: #eee;
+    font-size: 12px;
+    padding: 5px 10px;
+    align-items: center;
+    display: flex;
+    border-radius: 5px;
+    margin-top: 15px;
+    .wz {
+      background: #e81d1d;
+      color: #fff;
+      width: 30px;
+      height: 30px;
+      border-radius: 5px;
+      text-align: center;
+      line-height: 30px;
+    }
+    .mc {
+      font-size: 12px;
+      flex: 1;
+      margin-left: 10px;
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      color: #000;
+    }
+  }
+  .contentHtml {
+    span {
+      font-size: 14px !important;
+    }
+    p {
+      margin-bottom: 10px !important;
+    }
+  }
+}
+</style>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1033 - 0
src/views/CustomPage/newCaseDetail.vue


+ 3 - 1
src/views/demension/detail.vue

@@ -45,7 +45,7 @@
         </div>
       </div>
     </div>
-    <GlSiFaCase v-if="store.info?.caseNo && store.selectDemension.detailType" :caseNo="store.info.caseNo" :rowKey="store.info.rowKey"></GlSiFaCase>
+    <GlSiFaCase v-if="store.info && store.info.caseNo && store.selectDemension.detailType" :caseNo="store.info.caseNo" :rowKey="store.info.rowKey"></GlSiFaCase>
     <DetailCustomComponent v-if="store.selectDemension" />
   </div>
 </template>
@@ -85,6 +85,8 @@
   })
 
   onMounted(() => {
+    console.log('detail')
+
     document.title = store.selectDemension.title
   })