From e312d5fcded7492d434d3bab48d31f0c3fc1dbfb Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 30 十一月 2023 15:44:19 +0800
Subject: [PATCH] 新增

---
 src/layout/components/Register/index.vue |    5 
 src/views/components/notice.vue          |   16 +
 src/api/home/homePage.js                 |   27 +++
 src/views/homePage.vue                   |   42 ++---
 src/assets/images/avator.png             |    0 
 src/assets/styles/sidebar.scss           |    2 
 src/layout/components/Navbar.vue         |    3 
 src/views/components/loginForm.vue       |   29 ++--
 src/views/components/laws.vue            |   18 +
 src/views/components/details.vue         |  226 ++++++++++++++++++++++++++++++-
 src/views/components/home.vue            |   18 +-
 src/views/components/publish.vue         |   20 +-
 12 files changed, 324 insertions(+), 82 deletions(-)

diff --git a/src/api/home/homePage.js b/src/api/home/homePage.js
index eba3b5d..4a7e564 100644
--- a/src/api/home/homePage.js
+++ b/src/api/home/homePage.js
@@ -9,6 +9,15 @@
     })
 }
 
+// 获取详情
+export function getNoticeDetails(params) {
+    return request({
+        url: '/system/notice/getNoticeById',
+        method: 'get',
+        params: params
+    })
+}
+
 // 获取分页
 export function getLaws(params) {
     return request({
@@ -18,6 +27,15 @@
     })
 }
 
+// 获取详情
+export function getLawsDetails(params) {
+    return request({
+        url: '/system/law/getLawById',
+        method: 'get',
+        params: params
+    })
+}
+
 // 获取分页
 export function getPublish(params) {
     return request({
@@ -25,4 +43,13 @@
         method: 'get',
         params: params
     })
+}
+
+// 获取详情
+export function getPublishDetails(params) {
+    return request({
+        url: '/system/agency/getAgencyById',
+        method: 'get',
+        params: params
+    })
 }
\ No newline at end of file
diff --git a/src/assets/images/avator.png b/src/assets/images/avator.png
new file mode 100644
index 0000000..cfa804c
--- /dev/null
+++ b/src/assets/images/avator.png
Binary files differ
diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss
index b6cdd17..62cafc1 100644
--- a/src/assets/styles/sidebar.scss
+++ b/src/assets/styles/sidebar.scss
@@ -120,7 +120,7 @@
     }
 
     .main-container {
-      margin-left: 54px;
+      margin-left: 84px;
     }
 
     .sub-menu-title-noDropdown {
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 4bc452f..7f3f305 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -25,7 +25,8 @@
       <div class="avatar-container">
         <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
           <div class="avatar-wrapper">
-            <img :src="userStore.avatar" class="user-avatar" />
+<!--            <img :src="userStore.avatar" class="user-avatar" />-->
+            <img src="../../assets/images/avator.png" class="user-avatar" />
             <el-icon><caret-bottom /></el-icon>
           </div>
           <template #dropdown>
diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue
index a7eae8c..9732e21 100644
--- a/src/layout/components/Register/index.vue
+++ b/src/layout/components/Register/index.vue
@@ -179,12 +179,12 @@
           </el-col>
           <el-col :span="8">
             <el-form-item prop="agency.business" label="申请的法定安全评价业务范围">
-              <el-select v-model="registerForm.agency.business" placeholder="请选择业务范围" size="large" style="width: 100%">
+              <el-select v-model="registerForm.agency.business" placeholder="请选择业务范围" multiple size="large" style="width: 100%">
                 <el-option
                     v-for="item in state.busList"
                     :key="item.id"
                     :label="item.label"
-                    :value="item.label"
+                    :value="item.id"
                 />
               </el-select>
             </el-form-item>
@@ -516,6 +516,7 @@
       loading.value = true;
       const {confirmPassword, ...data} = registerForm.value
       data.password = Base64.encode(data.password)
+      data.agency.business = data.agency.business.join(',')
       delete data.agency.area
       register(data).then(res => {
         if(res.code == 200){
diff --git a/src/views/components/details.vue b/src/views/components/details.vue
index b2eb8c9..985fbe8 100644
--- a/src/views/components/details.vue
+++ b/src/views/components/details.vue
@@ -6,34 +6,95 @@
           <Location />
         </el-icon>
         <span>我的位置:</span>
+        <el-breadcrumb :separator-icon="ArrowRight">
+          <el-breadcrumb-item><a href="#" @click="back">{{ state.firstClass }}</a></el-breadcrumb-item>
+          <el-breadcrumb-item>查看详情</el-breadcrumb-item>
+        </el-breadcrumb>
       </div>
-      <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item>{{ state.firstClass }}</el-breadcrumb-item>
-        <el-breadcrumb-item>{{state.firstClass}}</el-breadcrumb-item>
-      </el-breadcrumb>
+      <div>
+        <el-button plain @click="back">返回上级</el-button>
+      </div>
     </div>
-    <div class="main">
-
+    <div class="main" v-if="state.firstClass == '通知公告'">
+      <div class="title">{{state.content.title}}</div>
+      <el-divider border-style="dashed"/>
+      <div class="time">更新时间:{{state.content.updateTime?state.content.updateTime:state.content.createTime}}</div>
+      <div v-html="state.content.content"></div>
+    </div>
+    <div class="main" v-if="state.firstClass == '法律法规'">
+      <div class="title">{{state.content.title}}</div>
+      <div class="sub-title">{{state.content.subTitle}}</div>
+      <div class="info"><span>法律法规类别:{{state.content.lawType}}</span><span>颁布机构:{{state.content.pubAgency}}</span><span>颁布日期:{{state.content.pubDate}}</span></div>
+      <el-divider border-style="dashed"/>
+      <div class="time">更新时间:{{state.content.updateTime?state.content.updateTime:state.content.createTime}}</div>
+      <div v-html="state.content.content"></div>
+    </div>
+    <div class="main" v-if="state.firstClass == '机构公示'">
+      <div class="title">{{state.content.name}}</div>
+      <el-divider border-style="dashed"/>
+      <div class="time">更新时间:{{state.content.updateTime?state.content.updateTime:state.content.createTime}}</div>
+      <el-row>
+        <el-col :span="4">所在地区:</el-col>
+        <el-col :span="8">{{state.content.province}}<span v-if="state.content.province&&state.content.city">/</span>{{state.content.city}}<span v-if="state.content.city&&state.content.district">/</span>{{state.content.district}}</el-col>
+        <el-col :span="4">详细地址:</el-col>
+        <el-col :span="8">{{state.content.address}}</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">社会信用代码:</el-col>
+        <el-col :span="8">{{state.content.creditCode}}</el-col>
+        <el-col :span="4">资质证书编号:</el-col>
+        <el-col :span="8">{{state.content.certNumber}}</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">发证日期:</el-col>
+        <el-col :span="8">{{state.content.issueDate}}</el-col>
+        <el-col :span="4">有效日期:</el-col>
+        <el-col :span="8">{{state.content.validDate}}</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">办公场所面积:</el-col>
+        <el-col :span="8">{{state.content.workArea}}㎡</el-col>
+        <el-col :span="4">档案室面积:</el-col>
+        <el-col :span="8">{{state.content.archiveArea}}㎡</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">法定代表人:</el-col>
+        <el-col :span="8">{{state.content.legalPerson}}</el-col>
+        <el-col :span="4">法人电话:</el-col>
+        <el-col :span="8">{{state.content.legalPhone}}</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">机构负责人:</el-col>
+        <el-col :span="8">{{state.content.manager}}</el-col>
+        <el-col :span="4">负责人电话:</el-col>
+        <el-col :span="8">{{state.content.managerPhone}}</el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="4">业务范围:</el-col>
+        <el-col :span="20">{{state.content.business}}</el-col>
+      </el-row>
     </div>
   </div>
 </template>
 
 <script setup>
-import {onMounted, ref, reactive, watch, onUnmounted, defineExpose} from "vue"
+import {onMounted, ref, reactive, watch, onUnmounted, defineExpose, defineEmits} from "vue"
 import { ArrowRight } from '@element-plus/icons-vue'
 import {ElMessage} from "element-plus";
+import {getLawsDetails, getNoticeDetails, getPublishDetails} from "../../api/home/homePage";
+import { getDict } from "@/api/login"
 
 const route = useRoute()
 const router = useRouter()
 const redirect = ref(undefined);
 const state = reactive({
-  firstClass: '第一级菜单'
+  firstClass: '',
+  content: {},
+  busList: []
 })
-
-
-
+const emit = defineEmits(['backJump'])
 onMounted(()=>{
-
+  getBusiness()
 })
 
 onUnmounted(()=>{
@@ -44,9 +105,76 @@
   redirect.value = newRoute.query && newRoute.query.redirect;
 }, { immediate: true });
 
+const openDetail = async (type,id)=>{
+  state.content = {}
+  state.firstClass = type
+  if(type == '通知公告'){
+    const res = await getNoticeDetails({noticeId: id})
+    if(res.code == 200){
+      state.content = res.data
+      if(state.content.updateTime){state.content.updateTime.substring(0.,16)}
+      state.content.createTime = state.content.createTime.substring(0.,16)
+    }else{
+      ElMessage.warning(res.message)
+    }
+  }
+  if(type == '法律法规'){
+    const res = await getLawsDetails({lawId: id})
+    if(res.code == 200){
+      state.content = res.data
+      if(state.content.updateTime){state.content.updateTime.substring(0.,16)}
+      state.content.createTime = state.content.createTime.substring(0.,16)
+    }else{
+      ElMessage.warning(res.message)
+    }
+  }
+  if(type == '机构公示'){
+    const res = await getPublishDetails({agencyId: id})
+    if(res.code == 200){
+      state.content = res.data
+      if(state.content.updateTime){state.content.updateTime.substring(0.,16)}
+      state.content.createTime = state.content.createTime.substring(0.,16)
+      state.content.issueDate = state.content.issueDate.substring(0,10)
+      state.content.validDate = state.content.validDate.substring(0,10)
+      state.content.business = getName(state.content.business)
+    }else{
+      ElMessage.warning(res.message)
+    }
+  }
+}
+
+
+const back = ()=>{
+  if(state.firstClass == '通知公告'){
+    emit('backJump',2)
+  }
+  if(state.firstClass == '法律法规'){
+    emit('backJump',3)
+  }
+  if(state.firstClass == '机构公示'){
+    emit('backJump',4)
+  }
+}
+
+const getBusiness = async ()=>{
+  const res = await getDict({dictType: 'sys_business_scope'})
+  if(res.code == 200){
+    state.busList = res.data
+  }else{
+    ElMessage.warning(res.message)
+  }
+}
+
+const getName = (str)=>{
+  const arr = str.split(',')
+  const newArr = arr.map((item)=>{
+    return state.busList.find(i=>i.id == Number(item))?.label
+  })
+  return newArr.join(',')
+}
 
 defineExpose({
-
+  openDetail
 })
 
 </script>
@@ -58,13 +186,85 @@
   flex-direction: column;
   align-items: center;
   margin-top: 170px;
+
   .header{
+    width: 1200px;
+    height: 60px;
+    margin: 20px 0 0;
+    padding: 0 15px;
+    border-radius: 4px;
+    background: #f5f5f5;
     display: flex;
     align-items: center;
+    justify-content: space-between;
     &>div{
       display: flex;
       align-items: center;
     }
   }
+  .main{
+    width: 1200px;
+    border-radius: 4px;
+    box-shadow: 1px 1px 3px rgba(0,0,0,.04);
+    padding: 20px 15px 40px;
+    background: #fff;
+    max-height: calc(100vh - 330px);
+    overflow-y: auto;
+
+    .title{
+      font-size: 1.8rem;
+      color: #333;
+      font-weight: bolder;
+      text-align: center;
+    }
+    .sub-title{
+      font-size: 1.6rem;
+      color: #333;
+      text-align: center;
+      margin: 10px 0;
+    }
+    .info{
+      display: flex;
+      align-items: center;
+      justify-content: space-around;
+      text-align: center;
+      font-size: 15px;
+      color: #666;
+    }
+    .time{
+      display: flex;
+      align-items: center;
+      justify-content: space-around;
+      text-align: center;
+      font-size: 15px;
+      color: #666;
+      margin-bottom: 15px;
+    }
+
+    .el-row{
+      border: 1px solid #e6e6e6;
+      border-bottom: none;
+      font-size: 18px;
+      color: #333;
+      font-weight: 600;
+      font-family: "PingFang SC";
+
+      &:last-of-type{
+        border-bottom: 1px solid #e6e6e6;
+      }
+      .el-col{
+        padding: 15px;
+        border-right: 1px solid #e6e6e6;
+
+        &:last-of-type{
+          border-right: none;
+        }
+      }
+      .el-col-4{
+        color: #666;
+        font-weight: normal;
+      }
+    }
+  }
 }
 </style>
diff --git a/src/views/components/home.vue b/src/views/components/home.vue
index 71677fd..20f96d0 100644
--- a/src/views/components/home.vue
+++ b/src/views/components/home.vue
@@ -10,11 +10,11 @@
           <el-button plain @click="toMore(2)">查看更多</el-button>
         </div>
         <div class="list">
-          <div v-for="item in state.noticeList">
+          <div v-for="item in state.noticeList" @click="openDetails('通知公告',item.id)">
             <div><img src="src/assets/images/notice.png"></div>
             <div>
               <div>{{item.title}}</div>
-              <span>{{item.updateTime}}</span>
+              <span>{{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}</span>
             </div>
           </div>
         </div>
@@ -28,11 +28,11 @@
           <el-button plain @click="toMore(3)">查看更多</el-button>
         </div>
         <div class="list">
-          <div v-for="item in state.lawsList">
+          <div v-for="item in state.lawsList" @click="openDetails('法律法规',item.id)">
             <div><img src="src/assets/images/laws.png"></div>
             <div>
               <div>{{item.title}}</div>
-              <span>{{item.updateTime}}</span>
+              <span>{{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}</span>
             </div>
           </div>
         </div>
@@ -46,11 +46,11 @@
           <el-button plain @click="toMore(4)">查看更多</el-button>
         </div>
         <div class="list">
-          <div v-for="item in state.pubList">
+          <div v-for="item in state.pubList" @click="openDetails('机构公示',item.id)">
             <div><img src="src/assets/images/section.png"></div>
             <div>
               <div>{{item.name}}</div>
-              <span>{{item.updateTime}}</span>
+              <span>{{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}</span>
             </div>
           </div>
         </div>
@@ -94,7 +94,7 @@
   lawsList: [],
   pubList: []
 })
-const emit = defineEmits(["toMore"])
+const emit = defineEmits(['toMore','openDetails'])
 const redirect = ref(undefined);
 
 onMounted(()=>{
@@ -115,6 +115,10 @@
   emit('toMore',num)
 }
 
+const openDetails = (type,id)=>{
+  emit('openDetails',type,id)
+}
+
 const getNoticeList = async ()=>{
   const res = await getNotice({title: '', content: '', pageNum: 1, pageSize: 5})
   if(res.code == 200){
diff --git a/src/views/components/laws.vue b/src/views/components/laws.vue
index ab6ef7d..caf54c1 100644
--- a/src/views/components/laws.vue
+++ b/src/views/components/laws.vue
@@ -11,17 +11,17 @@
         <el-button type="primary" :icon="Refresh" class="resetBtn">重置</el-button>
       </div>
       <div class="list">
-        <div v-for="item in state.dataList">
+        <div v-for="item in state.dataList" @click="openDetails('法律法规',item.id)">
           <div>
             <div><img src="src/assets/images/article.png"></div>
             <div>{{item.title}}</div>
           </div>
           <span>
-            {{item.updateTime}}
+            {{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}
           </span>
         </div>
       </div>
-      <div class="pag-container">
+      <div class="pag-container" v-if="state.total&&state.total>0">
         <el-pagination
             v-model:current-page="state.querys.pageNum"
             v-model:page-size="state.querys.pageSize"
@@ -37,12 +37,12 @@
 </template>
 
 <script setup>
-import {onMounted, ref, reactive, watch, onUnmounted, defineExpose} from "vue"
+import {onMounted, ref, reactive, watch, onUnmounted, defineExpose, defineEmits} from "vue"
 import { getLaws } from '@/api/home/homePage'
 import useUserStore from '@/store/modules/user'
 import { Search, Refresh } from '@element-plus/icons-vue'
 import {ElMessage} from "element-plus";
-
+const emit = defineEmits(['openDetails'])
 const route = useRoute()
 const router = useRouter()
 
@@ -88,6 +88,10 @@
 const handleCurrentChange = (val) => {
   state.querys.pageNum = val
   getData()
+}
+
+const openDetails = (type,id)=>{
+  emit('openDetails',type,id)
 }
 
 defineExpose({
@@ -142,6 +146,8 @@
 
     .list{
       padding: 15px 0;
+      max-height: calc(100vh - 402px);
+      overflow-y: auto;
 
       &>div{
         display: flex;
@@ -171,7 +177,7 @@
             }
           }
           div:last-of-type{
-            width: 1000px;
+            width: 900px;
             white-space: nowrap;
             overflow: hidden;
             text-overflow: ellipsis;
diff --git a/src/views/components/loginForm.vue b/src/views/components/loginForm.vue
index 02bc9cc..7ca1476 100644
--- a/src/views/components/loginForm.vue
+++ b/src/views/components/loginForm.vue
@@ -134,22 +134,21 @@
       // 调用action的登录方法
       loginForm.value.password = Base64.encode(loginForm.value.password)
       userStore.login(loginForm.value).then(() => {
-        const query = route.query;
-        const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
-          if (cur !== "redirect") {
-            acc[cur] = query[cur];
+        // const query = route.query;
+        // const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
+        //   if (cur !== "redirect") {
+        //     acc[cur] = query[cur];
+        //   }
+        //   return acc;
+        // }, {});
+        const userInfo = JSON.parse(Cookies.get('userInfo'))
+          if(userInfo.identity === 0) {
+              sidebarRouters.value =  menu.adminMenu
+              Cookies.set('routers',JSON.stringify(sidebarRouters.value))
           }
-          return acc;
-        }, {});
-          const userInfo = JSON.parse(Cookies.get('userInfo'))
-            if(userInfo.identity === 0) {
-                sidebarRouters.value =  menu.adminMenu
-                Cookies.set('routers',JSON.stringify(sidebarRouters.value))
-            }
-          console.log("sidebarRouters.value",sidebarRouters.value)
-          router.push({
-              path: sidebarRouters.value[0].path
-          })
+        router.push({
+            path: sidebarRouters.value[0].path
+        })
         // router.push({ path: redirect.value || "/", query: otherQueryParams });
       }).catch(() => {
         loading.value = false;
diff --git a/src/views/components/notice.vue b/src/views/components/notice.vue
index d70ef98..7aa8f3c 100644
--- a/src/views/components/notice.vue
+++ b/src/views/components/notice.vue
@@ -2,17 +2,17 @@
   <div class="container">
     <div class="main-content">
       <div class="list">
-        <div v-for="item in state.dataList">
+        <div v-for="item in state.dataList" @click="openDetails('通知公告',item.id)">
           <div>
             <div><img src="src/assets/images/article.png"></div>
             <div>{{item.title}}</div>
           </div>
           <span>
-            {{item.updateTime}}
+            {{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}
           </span>
         </div>
       </div>
-      <div class="pag-container">
+      <div class="pag-container" v-if="state.total&&state.total>0">
         <el-pagination
             v-model:current-page="state.querys.pageNum"
             v-model:page-size="state.querys.pageSize"
@@ -28,11 +28,11 @@
 </template>
 
 <script setup>
-import {onMounted, ref, reactive, watch, onUnmounted, defineExpose} from "vue"
+import {onMounted, ref, reactive, watch, onUnmounted, defineExpose, defineEmits} from "vue"
 import { getNotice } from '@/api/home/homePage'
 import useUserStore from '@/store/modules/user'
 import {ElMessage} from "element-plus";
-
+const emit = defineEmits(['openDetails'])
 const route = useRoute()
 const router = useRouter()
 
@@ -78,6 +78,10 @@
   }else{
     ElMessage.warning(res.message)
   }
+}
+
+const openDetails = (type,id)=>{
+  emit('openDetails',type,id)
 }
 
 defineExpose({
@@ -135,7 +139,7 @@
             }
           }
           div:last-of-type{
-            width: 1000px;
+            width: 900px;
             white-space: nowrap;
             overflow: hidden;
             text-overflow: ellipsis;
diff --git a/src/views/components/publish.vue b/src/views/components/publish.vue
index 3ed921c..dc9f3f2 100644
--- a/src/views/components/publish.vue
+++ b/src/views/components/publish.vue
@@ -23,17 +23,17 @@
         <el-button type="primary" :icon="Refresh" class="resetBtn">重置</el-button>
       </div>
       <div class="list">
-        <div v-for="item in state.dataList">
+        <div v-for="item in state.dataList" @click="openDetails('机构公示',item.id)">
           <div>
             <div><img src="src/assets/images/article.png"></div>
-            <div>{{item.title}}</div>
+            <div>{{item.name}}</div>
           </div>
           <span>
-            {{item.updateTime}}
+            {{(item.updateTime?item.updateTime:item.createTime).substring(0,16)}}
           </span>
         </div>
       </div>
-      <div class="pag-container">
+      <div class="pag-container" v-if="state.total&&state.total>0">
         <el-pagination
             v-model:current-page="state.querys.pageNum"
             v-model:page-size="state.querys.pageSize"
@@ -49,11 +49,11 @@
 </template>
 
 <script setup>
-import {onMounted, ref, reactive, watch, onUnmounted, defineExpose} from "vue"
+import {onMounted, ref, reactive, watch, onUnmounted, defineExpose, defineEmits} from "vue"
 import { getPublish } from '@/api/home/homePage'
 import { Search, Refresh } from '@element-plus/icons-vue'
 import {ElMessage} from "element-plus";
-
+const emit = defineEmits(['openDetails'])
 const route = useRoute()
 const router = useRouter()
 
@@ -100,6 +100,10 @@
 const handleCurrentChange = (val) => {
   state.querys.pageNum = val
   getData()
+}
+
+const openDetails = (type,id)=>{
+  emit('openDetails',type,id)
 }
 
 defineExpose({
@@ -154,6 +158,8 @@
 
     .list{
       padding: 15px 0;
+      max-height: calc(100vh - 402px);
+      overflow-y: auto;
 
       &>div{
         display: flex;
@@ -183,7 +189,7 @@
             }
           }
           div:last-of-type{
-            width: 1000px;
+            width: 900px;
             white-space: nowrap;
             overflow: hidden;
             text-overflow: ellipsis;
diff --git a/src/views/homePage.vue b/src/views/homePage.vue
index f76cacb..ae5bf05 100644
--- a/src/views/homePage.vue
+++ b/src/views/homePage.vue
@@ -34,16 +34,16 @@
           </div>
           <div :class="state.activeMenu == 4?'active': ''" @click="changeTab(4)">
             <List style="width: 1em; height: 1em; margin-right: 8px" />
-            <div>信息公示</div>
+            <div>机构公示</div>
           </div>
         </div>
       </div>
       <div class="content">
-        <Home v-if="state.activeMenu==1" ref="homeRef" @toMore="changeTab"/>
-        <Notice v-if="state.activeMenu==2" ref="noticeRef"/>
-        <Laws v-if="state.activeMenu==3" ref="lawsRef"/>
-        <Publish v-if="state.activeMenu==4" ref="publishRef"/>
-        <Details ref="detailsRef"></Details>
+        <Home v-if="state.activeMenu==1" ref="homeRef" @toMore="changeTab" @openDetails="openDetails"/>
+        <Notice v-if="state.activeMenu==2" ref="noticeRef" @openDetails="openDetails"/>
+        <Laws v-if="state.activeMenu==3" ref="lawsRef" @openDetails="openDetails"/>
+        <Publish v-if="state.activeMenu==4" ref="publishRef" @openDetails="openDetails"/>
+        <Details v-if="state.activeMenu==0" ref="detailsRef" @backJump="changeTab"></Details>
       </div>
     </div>
     <!--  底部  -->
@@ -60,8 +60,8 @@
 import Notice from './components/notice'
 import Laws from './components/laws'
 import Publish from './components/publish'
-import Details from './components/details'
-
+import Details from './components/details.vue'
+const { proxy } = getCurrentInstance()
 const route = useRoute()
 const router = useRouter()
 // 时间格式化
@@ -79,7 +79,7 @@
 const noticeRef = ref(null)
 const lawsRef = ref(null)
 const publishRef = ref(null)
-
+const detailsRef = ref(null)
 const state = reactive({
   activeMenu: 1,
   date: '',
@@ -130,21 +130,15 @@
 
 const changeTab=(num)=>{
   state.activeMenu = num
-  console.log(state.activeMenu)
-  // if(num == 1){
-  //   homeRef.value.getNoticeList()
-  //   homeRef.value.getLawsList()
-  //   homeRef.value.getPubList()
-  // }
-  // if(num == 2){
-  //   noticeRef.value.getData()
-  // }
-  // if(num == 3){
-  //   lawsRef.value.getData()
-  // }
-  // if(num == 4){
-  //   publishRef.value.getData()
-  // }
+}
+
+const openDetails=(type,id)=>{
+  state.activeMenu = 0
+  nextTick(() => {
+    proxy.$refs.detailsRef.openDetail(type,id)
+  })
+  // detailsRef.value.openDetail(type,id)
+
 }
 
 </script>

--
Gitblit v1.9.2