From 03c275439949875a857538df89a41696642c42b3 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期一, 01 九月 2025 17:15:39 +0800
Subject: [PATCH] '首页公告与详情'

---
 src/views/home/index.vue |  159 ++++++++++++++++++++--------------------------------
 1 files changed, 61 insertions(+), 98 deletions(-)

diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index c2b05ca..87a030d 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,88 +1,43 @@
-el
 <template>
   <my-header />
-  <div class="banner">
-    <!-- <img width="100%" height="306px" src="@/assets/home/banner.png" alt="" /> -->
-  </div>
   <div class="notice">
     <div class="left">
-      <div class="item item1">
-        <img src="@/assets/home/notice1.png" alt="" />
-        <div>鎷涢噰鍏憡</div>
-      </div>
-      <div class="item">
-        <img src="@/assets/home/notice.png" alt="" />
-        <div>鏇存鍏憡</div>
-      </div>
-      <div class="item">
-        <img src="@/assets/home/notice.png" alt="" />
-        <div>缁撴灉鍏憡</div>
-      </div>
-      <div class="item">
-        <img src="@/assets/home/notice.png" alt="" />
-        <div>鍏朵粬鍏憡</div>
+      <div
+        v-for="(item, index) in state.gonggaoList"
+        :key="index"
+        :class="['item', stateHook.active == index ? 'item1' : '']"
+        @click="getShouyeOrder(index)"
+      >
+        <img
+          v-if="stateHook.active == index"
+          src="@/assets/home/notice1.png"
+          alt=""
+        />
+        <img v-else src="@/assets/home/notice.png" alt="" />
+        <div>{{ item.name }}</div>
       </div>
     </div>
     <div class="right">
       <!-- <el-tabs v-model="activeName" class="demo-tabs">
         <el-tab-pane label="鎰忓悜鍏紑" name="first">
           鎰忓悜鍏紑 -->
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘��2024骞寸煶鐩樿閬撲粯瀹剁鏉戠伯娌逛骇涓氬洯鍖哄強閰嶅鍩虹璁炬柦寤鸿椤圭洰纾嬪晢鍏憡</span
-        >
-        <span>2024-04-15 18:10</span>
+      <div
+        v-for="item in stateHook.shouyeOrderList"
+        :key="item.id"
+        class="item"
+        @click="goDetail(item.tenderId ?? item.id)"
+      >
+        <span>
+          <span style="color: #145ccd; font-weight: 600">路</span>
+          {{
+            item.xingzhengquyuName &&
+            `銆�${item.xingzhengquyuName.match(/^.*?甯�/)}銆慲
+          }}
+          {{ item.projectName }}
+        </span>
+        <span>{{ item.createTime }}</span>
       </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戠唺鐚胺娓稿涓績灞�閮ㄦ敼閫犻」鐩鍟嗗叕鍛�</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戜腹鏅閬撴皯婀栫ぞ鍖虹孩鐧藉枩浜嬫湇鍔″満鎵�纾嬪晢鍏憡</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戞垚閮戒笢閮ㄦ柊鍖轰笁宀旀箹楂樼骇涓浣撹壓涓績鍓嶄复鏃跺仠杞﹀尯鍜屾鏍¢棬涓や晶闂ㄥ崼瀹ら棿鍖哄煙榛戝寲鍙婃帓姘存彁鍗囪В闄ゅ唴娑濋」鐩鍟嗗叕鍛�</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戝洓宸濈渷鎴愰兘鎴掓瘨搴峰鎵�鐥呮畫鎴掓瘨浜哄憳搴峰娲诲姩涓績缁翠慨鏀归�犻」鐩浜屾纾嬪晢鍏憡</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戣�佸共閮ㄦ椿鍔ㄤ腑蹇冭淇敼閫犻」鐩鍟嗗叕鍛�</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戦噾鐗涘尯鎶㈤櫓鏁戠伨宸ョ▼椤圭洰宸ョ▼闃熶紞鍌ㄥ搴擄紙鎴垮缓銆佸競鏀跨被锛夋嫑鏍囧叕鍛�</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
-      <div class="item">
-        <span
-          ><span style="color: #145ccd; font-weight: 600">路</span
-          >銆愬洓宸濈渷鎴愰兘甯傘�戦噾鐗涘尯鎶㈤櫓鏁戠伨宸ョ▼椤圭洰宸ョ▼闃熶紞鍌ㄥ搴擄紙鎴垮缓銆佸競鏀跨被锛夋嫑鏍囧叕鍛�</span
-        >
-        <span>2024-04-15 18:10</span>
-      </div>
+
       <!-- </el-tab-pane>
         <el-tab-pane label="宸ョ▼鎷涙爣" name="second">宸ョ▼鎷涙爣</el-tab-pane>
         <el-tab-pane label="璐х墿鎷涙爣" name="third">璐х墿鎷涙爣</el-tab-pane>
@@ -386,6 +341,7 @@
 import { exRole } from "@/api/register/index";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
 import { initRouter, getTopMenu } from "@/router/utils";
+import { useIndex } from "../home/utils/hook";
 
 import { getToken } from "@/utils/auth";
 import { useRoute, useRouter } from "vue-router";
@@ -398,6 +354,7 @@
 import type { RoleItem } from "@/api/types";
 
 const userStore = useUserStore();
+const { stateHook, getShouyeOrder, goDetail } = useIndex();
 
 // 璁块棶 state 灞炴��
 // console.log(userStore.roles,'-'); // 鐩存帴鑾峰彇鍊�
@@ -416,12 +373,19 @@
   roleList: [],
   rolesCode: [],
   userInfo: {} as userType,
-  accessToken: ""
+  accessToken: "",
+  gonggaoList: [
+    { name: "鎷涢噰鍏憡" },
+    { name: "鏇存鍏憡" },
+    { name: "缁撴灉鍏憡" }
+    // { name: "鍏朵粬鍏憡" }
+  ]
 });
 onMounted(() => {
   // exRole().then(res => {
   //   state.roleList = res.result;
   // });
+  getShouyeOrder(0);
   state.roleList = useUserStoreHook().rolesList;
   getUseRoles();
   state.accessToken = getToken()?.accessToken;
@@ -441,7 +405,7 @@
   addDialog({
     width: "20%",
     title: "纭淇℃伅",
-    contentRenderer: () => <p>鏄惁鐢宠涓簕item.name}锛�</p>, // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+    contentRenderer: () => <p>鏄惁鐢宠涓簕item.name}锛�</p>, // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶,闇�瑕佸湪script寮�鍚痩ang="tsx"锛�
     closeCallBack: ({ options, args }) => {
       if (args?.command === "cancel") {
         // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
@@ -461,15 +425,20 @@
 };
 // 鍘婚椤�
 const toWelcome = async item => {
-  if (useUserStoreHook().nowRole.code !== item.code) {
-    // 鑾峰彇鍚庣璺敱
-    initRouter().then(() => {
-      useUserStoreHook().changeLogoInExRule({
-        ruleCode: item.code
+  // if (useUserStoreHook().nowRole.code !== item.code) {
+  // 鑾峰彇鍚庣璺敱
+  useUserStoreHook()
+    .changeLogoInExRule({
+      ruleCode: item.code
+    })
+    .then(res => {
+      initRouter().then(() => {
+        let path = getTopMenu(true);
+        router.push({ name: path.name });
       });
     });
-  }
-  router.push({ name: "Welcome" });
+
+  // }
 };
 // 鍘荤櫥褰�
 const toLogin = item => {
@@ -478,32 +447,26 @@
 </script>
 
 <style lang="scss" scoped>
-.banner {
-  //   left: -3.76px;
-  //   top: 80px;
-  //   position: absolute;
-  background: url("@/assets/home/banner.png") no-repeat left center;
-  background-size: cover;
-  width: 100%;
-  height: 306px;
-}
 .notice {
   box-sizing: border-box;
   display: flex;
   justify-content: space-between;
   width: 72%;
-  height: 518px;
+  height: 400px;
   padding: 15px;
   margin: 20px auto;
   background: rgb(254, 254, 254);
   border-radius: 8px;
-  box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
+  box-shadow:
+    rgba(149, 157, 165, 0.15) 0px -6px 18px,
+    rgba(149, 157, 165, 0.2) 0px 8px 24px;
   .left {
     width: 10%;
-    height: 483px;
+    height: 100%;
     display: flex;
     flex-wrap: wrap;
-    justify-content: space-between;
+    justify-content: space-around;
+    align-content: space-between;
     .item {
       width: 137px;
       height: 111px;
@@ -546,12 +509,12 @@
       padding: 0 10px;
     }
     /* 鍋舵暟琛岃儗鏅壊 */
-    .item:nth-child(even) {
+    .item:nth-child(odd) {
       background: rgb(244, 244, 244);
       border-radius: 4px;
     }
     /* 濂囨暟琛岃儗鏅壊 */
-    .item:nth-child(odd) {
+    .item:nth-child(even) {
       padding: 8px;
       background-color: #fff;
     }

--
Gitblit v1.9.1