'-'
zhangwei
2025-06-27 0b98e7d4464f3ae38a33679701355cca1f14b9fa
src/views/home/index.vue
@@ -1,3 +1,4 @@
el
<template>
  <div class="header">
    <img width="227px" height="74px" src="@/assets/home/logo.png" alt="" />
@@ -19,92 +20,135 @@
    </div>
  </div>
  <div class="banner">
    <img width="100%" src="@/assets/home/banner.png" alt="" />
    <!-- <img width="100%" height="306px" src="@/assets/home/banner.png" alt="" /> -->
  </div>
  <div class="notice">
    <div class="left">
      <div class="item item1">
        <div style='width:50%'>
          <img src="@/assets/home/notice1.png" alt="" />
        </div>
        <img src="@/assets/home/notice1.png" alt="" />
        <div>招采公告</div>
      </div>
      <div class="item">
        <img src="@/assets/home/notice.png" alt="" />
        <div>招采公告</div>
        <div>更正公告</div>
      </div>
      <div class="item">
        <img src="@/assets/home/notice.png" alt="" />
        <div>招采公告</div>
        <div>结果公告</div>
      </div>
      <div class="item">
        <img src="@/assets/home/notice.png" alt="" />
        <div>招采公告</div>
        <div>其他公告</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>
          <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>
        <el-tab-pane label="网上竞价" name="fourth">网上竞价</el-tab-pane>
      </el-tabs>
      <!-- <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>
      <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>
        <el-tab-pane label="服务招标" name="fourth">服务招标</el-tab-pane>
        <el-tab-pane label="网上竞价" name="fourth1">网上竞价</el-tab-pane>
      </el-tabs> -->
    </div>
  </div>
  <div class="daixie">
    <div class="contentxie">
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div>市场调研</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div>需求审查</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div>履约验收</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div>业代推荐</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div>专家意见</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div class="">三方开标</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div class="">招采培训</div>
      </div>
      <div class="itemxie">
        <img src="@/assets/home/daixie.png" alt="" />
        <div class="">财政监督</div>
      </div>
    </div>
  </div>
  <div class="user">
    <div class="all">
      <div class="left">
        <div class="item item1">
        <div v-for="item in state.roleList" :key="item.id" class="item item1">
          <div class="box">
            <img
              width="18px"
@@ -112,85 +156,49 @@
              src="@/assets/home/car1.png"
              alt=""
            />
            采购人/招标人
            {{ item.name }}
          </div>
          <span>注册|登录</span>
        </div>
        <div class="item">
          <div class="box">
            <img
              width="18px"
              height="18px"
              src="@/assets/home/car.png"
              alt=""
            />
            采购人
          <div>
            <el-link
              v-if="state.rolesCode.indexOf(item.code) !== -1"
              :underline="false"
              class="hover:cursor-pointer"
              @click="logOut"
              >退出</el-link
            >
            <el-link
              v-else-if="!state.accessToken"
              :underline="false"
              class="hover:cursor-pointer"
              @click="toRegister"
              >注册</el-link
            >
            <el-link
              v-else
              :underline="false"
              class="hover:cursor-pointer"
              @click="toApply"
              >申请</el-link
            ><span class="m-2">|</span>
            <el-link
              v-if="state.rolesCode.indexOf(item.code) !== -1"
              :underline="false"
              class="hover:cursor-pointer"
              @click="toWelcome(item)"
              >进入</el-link
            >
            <el-link
              v-else
              :underline="false"
              class="hover:cursor-pointer"
              :disabled="!!state.accessToken"
              @click="toLogin(item)"
              >登录</el-link
            >
          </div>
          <span>注册|登录</span>
        </div>
        <div class="item">
          <div class="box">
            <img
              width="18px"
              height="18px"
              src="@/assets/home/car.png"
              alt=""
            />招标代理机构
          </div>
          <span>注册|登录</span>
        </div>
        <div class="item">
          <div class="box">
            <img
              width="18px"
              height="18px"
              src="@/assets/home/car.png"
              alt=""
            />供应商
          </div>
          <span>注册|登录</span>
        </div>
        <div class="item">
          <div class="box">
            <img
              width="18px"
              height="18px"
              src="@/assets/home/car.png"
              alt=""
            />评审专家
          </div>
          <span>注册|登录</span>
        </div>
      </div>
      <div class="right"></div>
    </div>
  </div>
  <div class="daixie">
    <div class="content">
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>标书代写</span>
      </div>
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>资质证书代办</span>
      </div>
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>招标金额</span>
      </div>
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>法律服务</span>
      </div>
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>平台开发</span>
      </div>
      <div class="item">
        <img src="@/assets/home/daixie.png" alt="" />
        <span>公众号运营</span>
      </div>
      <div class="right" />
    </div>
  </div>
  <div class="more">
@@ -203,24 +211,24 @@
            <img src="@/assets/home/xian.png" alt="" />
            <span style="margin-left: 5px">行业动态</span>
          </div>
          <el-button round
          <el-button round size="small"
            >更多<el-icon class="el-icon--right"
              ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
                <path
                  fill="currentColor"
                  d="M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
                ></path></svg></el-icon
                /></svg></el-icon
          ></el-button>
        </div>
        <div class="main">
          <div class="img"></div>
          <div class="img" />
          <div class="right">
            <p>国家发展改革委办公厅关于规范招标投标领域信用评价应用的通知</p>
            <p class="time">2025-05-22</p>
          </div>
        </div>
        <div class="other">
          <div class="item">
          <div class="itemother">
            <span
              ><span style="color: #145ccd; font-weight: 600">·</span
              >国家发展改革委办公厅关于规范招标投···</span
@@ -229,15 +237,221 @@
          </div>
        </div>
      </div>
      <div class="item"></div>
      <div class="item"></div>
      <div class="item">
        <div class="header">
          <div
            style="display: flex; align-items: center; justify-content: center"
          >
            <img src="@/assets/home/xian.png" alt="" />
            <span style="margin-left: 5px">政策法规</span>
          </div>
          <el-button round size="small"
            >更多<el-icon class="el-icon--right"
              ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
                <path
                  fill="currentColor"
                  d="M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
                /></svg></el-icon
          ></el-button>
        </div>
        <div class="main">
          <div class="img" />
          <div class="right">
            <p>国家发展改革委办公厅关于规范招标投标领域信用评价应用的通知</p>
            <p class="time">2025-05-22</p>
          </div>
        </div>
        <div class="other">
          <div class="itemother">
            <span
              ><span style="color: #145ccd; font-weight: 600">·</span
              >国家发展改革委办公厅关于规范招标投···</span
            >
            <span class="time">05-22</span>
          </div>
        </div>
      </div>
      <div class="item">
        <div class="header">
          <div
            style="display: flex; align-items: center; justify-content: center"
          >
            <img src="@/assets/home/xian.png" alt="" />
            <span style="margin-left: 5px">通知公告</span>
          </div>
          <el-button round size="small"
            >更多<el-icon class="el-icon--right"
              ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
                <path
                  fill="currentColor"
                  d="M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
                /></svg></el-icon
          ></el-button>
        </div>
        <div class="main">
          <div class="img" />
          <div class="right">
            <p>国家发展改革委办公厅关于规范招标投标领域信用评价应用的通知</p>
            <p class="time">2025-05-22</p>
          </div>
        </div>
        <div class="other">
          <div class="itemother">
            <span
              ><span style="color: #145ccd; font-weight: 600">·</span
              >国家发展改革委办公厅关于规范招标投···</span
            >
            <span class="time">05-22</span>
          </div>
        </div>
      </div>
    </div>
  </div>
  <div class="zhuanjia w-[72%] mx-auto">
    <div class="flex justify-between items-center m-5">
      <div style="display: flex; align-items: center">
        <img src="@/assets/home/xian.png" alt="" />
        <span style="margin-left: 5px">专家委员会</span>
      </div>
      <div>
        <el-button round size="small">专家抽取</el-button>
      </div>
    </div>
    <div class="flex justify-around items-center mb-5">
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
      <img
        width="216px"
        height="312px"
        src="@/assets/home/zhuanjia.png"
        alt=""
      />
    </div>
  </div>
  <div class="daili w-[100%] pt-5 pb-5">
    <div class="w-[72%] mx-auto bg-white rounded-lg pb-5">
      <div class="flex justify-between items-center p-5">
        <div style="display: flex; align-items: center">
          <img src="@/assets/home/xian.png" alt="" />
          <span style="margin-left: 5px">代理机构推荐</span>
        </div>
        <div>
          <el-button round size="small"
            >更多<el-icon class="el-icon--right"
              ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
                <path
                  fill="currentColor"
                  d="M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
                /></svg></el-icon
          ></el-button>
        </div>
      </div>
      <div class="flex flex-wrap justify-between">
        <div
          v-for="(item, index) in 15"
          :key="index"
          class="w-[24%] p-3 pl-6 mr-12 ml-12 dailimc"
        >
          <span
            ><span style="color: #145ccd; font-weight: 600" class="mr-1.5"
              >·</span
            >四川政采招投标咨询有限公司</span
          >
        </div>
      </div>
    </div>
  </div>
  <my-footer />
</template>
<script lang="ts" setup>
import { ref } from "vue";
import { onMounted, ref, computed, reactive } from "vue";
import myFooter from "./component/myFooter.vue";
import { useUserStoreHook } from "@/store/modules/user";
import { exRole } from "@/api/register/index.ts";
import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
import { getToken } from "@/utils/auth";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();
defineOptions({
  name: "Main"
});
let activeName = ref("first");
/** 角色(如果昵称为空则显示用户名) */
const getUseRoles = () => {
  state.userInfo = storageLocal().getItem("user-info");
  state.userInfo?.exRoles.forEach(element => {
    state.rolesCode.push(element.code);
  });
};
const state = reactive({
  roleList: [],
  rolesCode: [],
  userInfo: {},
  accessToken: ""
});
onMounted(() => {
  exRole().then(res => {
    state.roleList = res.result;
  });
  getUseRoles();
  state.accessToken = getToken()?.accessToken;
});
const toRegister = () => {
  router.push({ name: "Register" });
};
// 退出
const logOut = () => {
  useUserStoreHook().logOut();
};
// 申请
const toApply = () => {};
// 去首页
const toWelcome = item => {
  let role = state.userInfo?.exRoles.find(ele => {
    return item.code == ele.code;
  });
  console.log(role);
  if (role.hasFlsh) {
    return router.push({ name: "Welcome" });
  }
  router.push({ name: "RegisterNav" });
};
// 去登录
const toLogin = item => {
  router.push({ name: "Login", query: item });
};
</script>
<style lang="scss" scoped>
@@ -278,6 +492,8 @@
  //   left: -3.76px;
  //   top: 80px;
  //   position: absolute;
  background: url("@/assets/home/banner.png") no-repeat left center;
  background-size: cover;
  width: 100%;
  height: 306px;
}
@@ -285,7 +501,7 @@
  box-sizing: border-box;
  display: flex;
  justify-content: space-between;
  width: 1401px;
  width: 72%;
  height: 518px;
  padding: 15px;
  margin: 20px auto;
@@ -313,7 +529,8 @@
      }
      div {
        // display: block;
        // width: 100%;
        width: 100%;
        text-align: center;
        color: rgb(20, 92, 205);
        font-size: 20px;
        font-weight: 500;
@@ -352,12 +569,12 @@
}
.user {
  width: 100%;
  height: 520px;
  background: rgb(248, 248, 248);
  padding-top: 50px;
  // height: 520px;
  // background: rgb(248, 248, 248);
  padding: 40px 0;
  .all {
    width: 1401px;
    height: 482px;
    width: 72%;
    height: 385px;
    background: #fff;
    margin: 0 auto;
    display: flex;
@@ -373,10 +590,13 @@
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 0 50px;
        height: 20%;
        padding: 0 30px;
        height: 23%;
        text-align: left;
        color: #5f5f5f;
        // box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
        border-radius: 6px;
        margin-bottom: 10px;
        .box {
          display: flex;
          justify-content: center;
@@ -391,13 +611,13 @@
        color: #ffffff;
      }
    }
    .left :first-child {
      border-top-left-radius: 8px;
      border-top-right-radius: 8px;
    }
    .left *:not(:first-child):not(:last-child) {
      border-bottom: #c6c6c6 1px solid;
    }
    // .left :first-child {
    //   border-top-left-radius: 8px;
    //   border-top-right-radius: 8px;
    // }
    // .left *:not(:first-child):not(:last-child) {
    //   border-bottom: #c6c6c6 1px solid;
    // }
    .right {
      background: #a9b3c4;
      width: 75%;
@@ -408,36 +628,34 @@
}
.daixie {
  width: 100%;
  background: #fff;
  .content {
    width: 1401px;
    height: 140px;
  // background: #fff;
  background: rgb(248, 248, 248);
  .contentxie {
    width: 72%;
    // height: 140px;
    padding: 20px 0;
    margin: 0 auto;
    display: flex;
    justify-content: space-around;
    .item {
    .itemxie {
      width: 13%;
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      span {
      div {
        width: 100%;
        text-align: center;
        color: rgb(95, 95, 95);
        font-family: 思源黑体;
        font-size: 24px;
        font-size: 20px;
        font-weight: 500;
        line-height: 40.8px;
        letter-spacing: 1%;
        text-align: center;
        text-transform: capitalize;
        display: flex;
        flex-direction: row;
        align-items: center;
      }
    }
    img {
      width: 100px;
      height: 106px;
      width: 91px;
      height: 97.2px;
    }
  }
}
@@ -445,7 +663,7 @@
  width: 100%;
  height: 464px;
  background: #f8f8f8;
  padding-top: 50px;
  padding: 30px 0;
  .time {
    color: rgb(152, 152, 152);
    font-family: Figtree;
@@ -454,9 +672,8 @@
    line-height: 24.2px;
  }
  .content {
    width: 1400px;
    width: 72%;
    height: 415px;
    background: cadetblue;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
@@ -466,6 +683,7 @@
      height: 100%;
      border-radius: 8px;
      padding: 20px;
      box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
      .header {
        height: 41px;
        color: rgb(0, 0, 0);
@@ -491,7 +709,7 @@
          width: 240px;
          color: rgb(95, 95, 95);
          font-family: 思源黑体;
          font-size: 16px;
          font-size: 14px;
          font-weight: 400;
          line-height: 24.2px;
          text-align: left;
@@ -500,11 +718,59 @@
      }
      .other {
        width: 100%;
        .item {
        .itemother {
          width: 100%;
          font-size: 14px;
          padding-top: 10px;
          display: flex;
          justify-content: space-between;
          align-items: center;
        }
        .time {
          text-align: right;
        }
      }
    }
  }
}
.daili {
  background: rgb(248, 248, 248);
  box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
  /* 偶数行背景色 */
  .dailimc:nth-child(odd) {
    background: rgb(244, 244, 244);
    border-radius: 4px;
  }
  /* 奇数行背景色 */
  .dailimc:nth-child(3n + 2) {
    // background-color: #fff;
    background: rgb(244, 244, 244);
  }
  .dailimc:nth-child(5) {
    background-color: #fff;
    // background: rgb(244, 244, 244);
  }
  .dailimc:nth-child(11) {
    background-color: #fff;
    // background: rgb(244, 244, 244);
  }
}
.zhuanjia {
  img {
    border-radius: 4px;
  }
}
a {
  font-size: 16px;
  // font-weight: 600;
  color: #fff;
}
a:hover,
a:active {
  color: #fff;
}
</style>