Quellcode durchsuchen

feat: 添加维度,menu

Satsiki vor 2 Jahren
Ursprung
Commit
7f167ecd6a

+ 2 - 1
src/components/CommonList.vue

@@ -2,7 +2,7 @@
   <div class="common-list">
     <div class="fixed-num">共
       <span>{{store.totalNum}}</span>
-      条{{store.selectDemension.title}}</div>
+      条{{store.deleted ? '历史' : ''}}{{store.selectDemension.title}}</div>
     <van-list v-model:loading="loading" :finished="finished" :immediate-check="false" finished-text="没有更多了" @load="onLoad">
       <div v-for="(item,index) in store.dataList" :key="index" class="card" @click="goDetail(item)">
         <div class="list-container">
@@ -28,6 +28,7 @@
                   <p v-for="(listItem,listIndex) in item[obj.listVal]"
                      :key="listIndex" href="javascript:"
                      class="block"
+                     style="width: fit-content;"
                      :class="obj.companyId && listItem[obj.companyId] ? 'company' : ''"
                      @click.stop="$goCompany(obj,listItem)">
                     {{listItem[obj.value || '-']}}

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

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

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

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

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

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

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

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

+ 16 - 1
src/js-pages/types.ts

@@ -1,4 +1,3 @@
-import { HtmlHTMLAttributes } from 'vue'
 
 export interface TotalDemensionInter {
   companyName: string,
@@ -18,6 +17,7 @@ export interface DemensionPagesListInter {
   hasDetail?: boolean
   detailList?: ViewListInter[],
   viewList?: ViewListInter[],
+  menuList?: MenuListInter[],  //tab下面的下拉菜单列表
   tabs?: 'deleted' | [],  //是否有tabs,历史列表deleted,普通tab传数组
   customRender?: any,
 }
@@ -39,3 +39,18 @@ export interface ViewListInter {
   customClick?: Function
 }
 
+export interface MenuListInter {
+  /**
+   * 提交给后端的字段名
+   */
+  paramsValue: string,
+  /**
+   * v-model绑定的值
+   */
+  value: string,
+  /**
+   * 对应后端的ID匹配数组
+   */
+  paramsId?: string
+  list: { text: string, value: string }[]
+}

+ 1 - 1
src/layout/Layout.vue

@@ -15,7 +15,7 @@
 
   watch(() => route.path,() => {
     if(!store.entityId) {
-      store.entityId = route.query.companyId  || '2dbe147fbfba2415a0e3fdacd4082198'
+      store.entityId = route.query.companyId  || '88f04cbfab150fe2bccdeec3aea32750'
       store.entityName = route.query.companyName  || '广州天力建筑工程有限公司'
     }
   })

+ 3 - 2
src/plugins/vant.ts

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

+ 71 - 2
src/store/demensionList.ts

@@ -1,3 +1,4 @@
+import { MenuListInter } from './../js-pages/types'
 import { DemensionStoreInter } from '../types/store'
 import { defineStore } from 'pinia'
 import $axios from '@/api'
@@ -63,7 +64,69 @@ export const useDemensionListStore = defineStore({
       // console.log()
     },
 
-    async getList(extraParams?: {}) {
+    //有menu页的请求,修改menu动态数据
+    getMenuList(dataExtra: { field: string, keyValueBOS: any[] }[]) {
+
+
+      const newArr: MenuListInter[] = []
+      //结合后端返回的数组
+      if (this.selectDemension.menuList) {
+
+        this.selectDemension.menuList.map(item => {
+          item.value = ''
+          if (!item.paramsId) {
+            newArr.push(item)
+          } else {
+
+            // console.log(dataExtra, 8888)
+            const listArr: { text: string; value: string }[] = []
+            //初始化数据
+            item.list.length = 1
+            listArr.push(...item.list)
+
+            //如果menu是数组
+            if (Array.isArray(dataExtra)) {
+              //添加接口返回的数据
+              dataExtra.map(dataItem => {
+                if (item.paramsId === dataItem.field) {
+                  dataItem.keyValueBOS.map(item => {
+                    listArr.push({
+                      text: item.key,
+                      value: item.key
+                    })
+                  })
+                }
+              })
+              //如果menu是对象
+            } else {
+              const dataExtraArr = Object.keys(dataExtra)
+              dataExtraArr.map(dataExtraItem => {
+                const extraList = dataExtra[dataExtraItem] as []
+                if (extraList.length) {
+                  extraList.map((extraListItem: { key: string }) => {
+                    listArr.push({
+                      text: extraListItem.key,
+                      value: extraListItem.key
+                    })
+                  })
+                }
+              })
+            }
+
+            newArr.push(
+              {
+                ...item,
+                list: listArr
+              }
+            )
+
+          }
+        })
+      }
+      this.selectDemension.menuList = newArr
+    },
+
+    async getList(extraParams = {}) {
       //发起请求
       const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
       const params = {
@@ -76,10 +139,16 @@ export const useDemensionListStore = defineStore({
         entityId,
         ...extraParams
       }
-      const res = await $axios.get('lawyer-workbench/risk/dimension/page', { params }) as { totalNum: number, totalPage: number, dataList: [] }
+      const res = await $axios.get('lawyer-workbench/risk/dimension/page', { params }) as { totalNum: number, totalPage: number, dataList: [], dataExtra?: { field: string, keyValueBOS: any[] }[] }
       this.totalNum = res.totalNum
       this.totalPage = res.totalPage
       this.dataList.push(...res.dataList)
+
+
+      if (!Object.keys(extraParams).length) {
+        this.getMenuList(res.dataExtra!)
+      }
+
       return res
     }
   }

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

@@ -2,6 +2,7 @@
   <div class="page">
     <!-- <List /> -->
     <CommonTab v-if="store.selectDemension.tabs"></CommonTab>
+    <CommonMenu v-if="store.selectDemension.menuList && store.selectDemension.menuList.length"></CommonMenu>
     <CommonList></CommonList>
   </div>
 </template>
@@ -11,6 +12,7 @@
   import CommonTab from '@/components/vant/CommonTab.vue'
   import { useDemensionListStore } from '@/store/demensionList'
   import { onMounted } from 'vue'
+  import CommonMenu from '@/components/vant/CommonMenu.vue'
   const store = useDemensionListStore()
   store.getDemension()