From 7defcb73ac495fdabc3d67a3125c1c798df05a8b Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 28 十一月 2023 14:13:56 +0800
Subject: [PATCH] 新增

---
 src/views/homePage.vue |  435 ++++++++++++++++++++++++++----------------------------
 1 files changed, 208 insertions(+), 227 deletions(-)

diff --git a/src/views/homePage.vue b/src/views/homePage.vue
index 115fc56..100a502 100644
--- a/src/views/homePage.vue
+++ b/src/views/homePage.vue
@@ -1,196 +1,242 @@
 <template>
   <div class="login">
-    <img class="pics1" src="src/assets/images/login-data.png">
-    <img class="pics2" src="src/assets/images/login-search.png">
-    <div class="login-panel">
-      <div class="login-img">
-        <img src="src/assets/images/loginImg.png">
-      </div>
-      <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
-        <h3 class="title">智慧安评</h3>
-        <el-form-item prop="username">
-          <el-input
-            v-model="loginForm.username"
-            type="text"
-            size="large"
-            auto-complete="off"
-            placeholder="账号"
-          >
-            <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
-          </el-input>
-        </el-form-item>
-        <el-form-item prop="password">
-          <el-input
-            v-model="loginForm.password"
-            type="password"
-            size="large"
-            auto-complete="off"
-            placeholder="密码"
-            @keyup.enter="handleLogin"
-          >
-            <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
-          </el-input>
-        </el-form-item>
-        <el-form-item prop="code" v-if="captchaEnabled">
-          <el-input
-            v-model="loginForm.code"
-            size="large"
-            auto-complete="off"
-            placeholder="验证码"
-            style="width: 63%"
-            @keyup.enter="handleLogin"
-          >
-            <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
-          </el-input>
-          <div class="login-code">
-            <img :src="codeUrl" @click="getCode" class="login-code-img"/>
-          </div>
-        </el-form-item>
-        <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 25px">
-          <el-checkbox v-model="loginForm.rememberMe">记住密码</el-checkbox>
-          <div v-if="isRegister">
-            <el-button link type="primary" @click="openRegist">立即注册</el-button>
+<!--    <img class="pics1" src="src/assets/images/login-data.png">-->
+<!--    <img class="pics2" src="src/assets/images/login-search.png">-->
+    <div class="main-content">
+      <div class="top">
+        <div class="top-cont">
+          <div class="logo blueFont">智慧安评</div>
+          <div class="time">
+            <div>
+              <span>{{state.date}}</span>
+              <span>{{state.weekDay}}</span>
+            </div>
+            <div>
+              {{state.dayTime}}好!
+            </div>
           </div>
         </div>
-        <el-form-item style="width:100%;">
-          <el-button
-            :loading="loading"
-            size="large"
-            type="primary"
-            style="width:100%;"
-            @click.prevent="handleLogin"
-          >
-            <span v-if="!loading">登 录</span>
-            <span v-else>登 录 中...</span>
-          </el-button>
-        </el-form-item>
-      </el-form>
+      </div>
+
+      <div class="nav blueBg">
+        <div class="nav-cont">
+          <div :class="state.activeMenu == 1?'active': ''" @click="changeTab(1)">
+            <HomeFilled style="width: 1em; height: 1em; margin-right: 8px" />
+            <div>首页</div>
+          </div>
+          <div :class="state.activeMenu == 2?'active': ''" @click="changeTab(2)">
+            <Comment style="width: 1em; height: 1em; margin-right: 8px" />
+            <div>通知公告</div>
+          </div>
+          <div :class="state.activeMenu == 3?'active': ''" @click="changeTab(3)">
+            <BellFilled style="width: 1em; height: 1em; margin-right: 8px" />
+            <div>法律法规</div>
+          </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 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"/>
+      </div>
     </div>
     <!--  底部  -->
-<!--    <div class="el-login-footer">-->
-<!--      <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>-->
-<!--    </div>-->
+    <div class="el-login-footer">
+      <span>Copyright © All Rights Reserved.</span>
+    </div>
   </div>
-  <register ref="regRef"/>
 </template>
 
 <script setup>
-import {onMounted, ref, watch, defineAsyncComponent, nextTick} from "vue"
-import { getCodeImg } from "@/api/login";
-import Cookies from "js-cookie";
-import { encrypt, decrypt } from "@/utils/jsencrypt";
+import {onMounted, ref, reactive, watch, defineAsyncComponent, nextTick, onUnmounted} from "vue"
 import useUserStore from '@/store/modules/user'
-import { Register } from "@/layout/components";
+import Home from './components/home'
+import Notice from './components/notice'
+import Laws from './components/laws'
+import Publish from './components/publish'
 
-const userStore = useUserStore()
-const route = useRoute();
-const router = useRouter();
-const { proxy } = getCurrentInstance();
+const route = useRoute()
+const router = useRouter()
+// 时间格式化
+const timeForm = {
+  hour12: false,
+  year: 'numeric',
+  month: '2-digit',
+  day: '2-digit',
+  hour: '2-digit',
+  minute: '2-digit',
+  second: '2-digit'
+}
 
-const loginForm = ref({
-  username: "admin",
-  password: "Admin@123.com",
-  rememberMe: false,
-  code: "",
-  uuid: ""
-});
+const homeRef = ref(null)
+const noticeRef = ref(null)
+const lawsRef = ref(null)
+const publishRef = ref(null)
 
-const loginRules = {
-  username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
-  password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],
-  code: [{ required: true, trigger: "change", message: "请输入验证码" }]
+const state = reactive({
+  activeMenu: 1,
+  date: '',
+  weekDay: '',
+  dayTime: ''
+})
+
+// 当前时间
+const getDateTime = () => {
+  const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+  console.log(curTime,'time')
+  state.date = curTime.slice(0, 10);
+  let week = ['日', '一', '二', '三', '四', '五', '六'];
+  let day = new Date().getDay();
+  state.weekDay = '星期' + week[day];
+  let curHour = Number(curTime.slice(10, 13));
+  if (curHour >= 5 && curHour <= 10) {
+    state.dayTime = '上午';
+  }
+  if (curHour > 10 && curHour <= 12) {
+    state.dayTime = '中午';
+  }
+  if (curHour > 12 && curHour <= 18) {
+    state.dayTime = '下午';
+  }
+  if (curHour > 18 && curHour <= 22) {
+    state.dayTime = '晚上';
+  }
+  if (curHour > 22) {
+    state.dayTime = '午夜';
+  }
 };
 
-const codeUrl = ref("");
-const loading = ref(false);
-const regRef = ref(null)
-// 验证码开关
-const captchaEnabled = ref(true);
-// 注册开关
-const isRegister = ref(true);
+
 const redirect = ref(undefined);
 
 onMounted(()=>{
-
+  getDateTime();
 })
 
-const openRegist = ()=>{
-  regRef.value.dialogVisible = true
-}
+onUnmounted(()=>{
+
+})
 
 watch(route, (newRoute) => {
     redirect.value = newRoute.query && newRoute.query.redirect;
 }, { immediate: true });
 
-function handleLogin() {
-  proxy.$refs.loginRef.validate(valid => {
-    if (valid) {
-      loading.value = true;
-      // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
-      if (loginForm.value.rememberMe) {
-        Cookies.set("username", loginForm.value.username, { expires: 30 });
-        Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 });
-        Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 });
-      } else {
-        // 否则移除
-        Cookies.remove("username");
-        Cookies.remove("password");
-        Cookies.remove("rememberMe");
-      }
-      // 调用action的登录方法
-      userStore.login(loginForm.value).then(() => {
-        const query = route.query;
-        const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
-          if (cur !== "redirect") {
-            acc[cur] = query[cur];
-          }
-          return acc;
-        }, {});
-        router.push({ path: redirect.value || "/", query: otherQueryParams });
-      }).catch(() => {
-        loading.value = false;
-        // 重新获取验证码
-        if (captchaEnabled.value) {
-          getCode();
-        }
-      });
-    }
-  });
+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()
+  // }
 }
 
-function getCode() {
-  getCodeImg().then(res => {
-    captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
-    if (captchaEnabled.value) {
-      codeUrl.value = "data:image/gif;base64," + res.img;
-      loginForm.value.uuid = res.uuid;
-    }
-  });
-}
-
-function getCookie() {
-  const username = Cookies.get("username");
-  const password = Cookies.get("password");
-  const rememberMe = Cookies.get("rememberMe");
-  loginForm.value = {
-    username: username === undefined ? loginForm.value.username : username,
-    password: password === undefined ? loginForm.value.password : decrypt(password),
-    rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
-  };
-}
-
-getCode();
-getCookie();
 </script>
 
 <style lang='scss' scoped>
 .login {
+  width: 100%;
   display: flex;
-  position: relative;
   justify-content: center;
-  align-items: center;
   height: 100%;
-  background-image: url("../assets/images/login-bg.jpg");
+
+  .main-content{
+    width: 100%;
+    display: flex;
+    flex-direction: column;
+    color: #333;
+
+    .top{
+      width: 100%;
+      background: rgba(249,250,251,1);
+      position: fixed;
+      top: 0;
+      left: 0;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      .top-cont{
+        width: 1200px;
+        height: 90px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        margin: 0 auto;
+
+        .logo{
+          font-size: 2rem;
+          font-weight: 800;
+          height: 90px;
+          line-height: 90px;
+          font-family: "PingFang SC";
+        }
+
+        .time{
+          font-size: 16px;
+          height: 90px;
+          display: flex;
+          flex-direction: column;
+          justify-content: center;
+          span{
+            &:first-of-type{
+              margin-right: 10px;
+            }
+          }
+        }
+      }
+    }
+
+
+    .nav{
+      width: 100%;
+      height: 80px;
+      position: fixed;
+      top: 90px;
+      left: 0;
+      .nav-cont{
+        width: 1200px;
+        height: 80px;
+        margin: 0 auto;
+        display: flex;
+        align-items: center;
+        justify-content: left;
+
+        &>div{
+          height: 100%;
+          padding: 0 50px;
+          color: #ffffff;
+          background-color: #5175C0;
+          font-size: 20px;
+          text-decoration: none;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          cursor: pointer;
+
+          &:hover{
+            background: #425f9f;
+          }
+        }
+        .active{
+          background: #425f9f;
+        }
+      }
+    }
+  }
 }
 .pics1{
   position: absolute;
@@ -206,83 +252,18 @@
   left: 20px;
   opacity: 0.5;
 }
-.title {
-  margin: 0px auto 30px auto;
-  text-align: center;
-  color: #333;
-  font-size: 1.4rem;
-}
-.login-panel{
-  border-radius: 1.2rem;
-  background: #ffffff;
-  width: 800px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  transform: translateY(-20%);
-  box-shadow: 15px 15px 30px rgba(0,0,0,.1);
-}
-.login-img{
-  flex: 1;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  img{
-    width: 80%;
-  }
-}
-.login-form {
-  flex: 1;
-  padding: 25px;
-  .el-input {
-    height: 44px;
-    input {
-      height: 44px;
-    }
-  }
-  .input-icon {
-    height: 39px;
-    width: 14px;
-    margin-left: 0px;
-  }
-}
-.login-tip {
-  font-size: 13px;
-  text-align: center;
-  color: #bfbfbf;
-}
-.login-code {
-  width: 33%;
-  height: 40px;
-  float: right;
-  img {
-    cursor: pointer;
-    vertical-align: middle;
-  }
-}
 
-.el-form-item--default{
-  margin-bottom: 24px;
-}
-
-::v-deep(.el-form-item__content){
-  display: flex;
-  justify-content: space-between;
-}
 .el-login-footer {
-  height: 40px;
-  line-height: 40px;
+  height: 60px;
+  line-height: 60px;
   position: fixed;
   bottom: 0;
   width: 100%;
   text-align: center;
   color: #fff;
-  font-family: Arial;
+  background: #5175C0;
+  font-family: "PingFang SC";
   font-size: 12px;
   letter-spacing: 1px;
-}
-.login-code-img {
-  height: 40px;
-  padding-left: 12px;
 }
 </style>

--
Gitblit v1.9.2