From aa05d8fde287821e50e3116242da1dfa19b5f898 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 06 三月 2026 10:03:39 +0800
Subject: [PATCH] 最新版本541200007最新版本541200007

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java |    2 
 admin/src/views/index.vue                                                |    5 +
 admin/src/views/login.vue                                                |   48 ++++++++++------
 admin/src/components/common/CommonHeader.vue                             |   67 ++++++++++++++--------
 admin/public/index.html                                                  |    5 +
 5 files changed, 82 insertions(+), 45 deletions(-)

diff --git a/admin/public/index.html b/admin/public/index.html
index d580c28..942ca7d 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,11 +5,12 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title>鏅烘収鍥尯瀹夋秷涓�浣撳寲绯荤粺</title>
+    <title>
+        title: process.env.VUE_APP_TITLE,</title>
   </head>
   <body>
     <noscript>
-      <strong>We're sorry but 鏅烘収鍥尯瀹夋秷涓�浣撳寲绯荤粺 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+      <strong>We're sorry but 鑺滄箹鐑熻崏鏅烘収瀹夋秷瀹夊叏闃茶寖绯荤粺 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index 0553908..8773c62 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -2,7 +2,7 @@
   <div class="common-header">
     <div class="header">
       <div class="logo">
-        <div class="title"> <img src="@/assets/system.png" alt="" />{{ title }}</div>
+        <div class="title"> <img src="@/assets/system.png" alt="" />{{sysConfig.subtitle || title }}</div>
         <div class="list">
             <div  :class="index==currentIndex?'item active':'item'" v-for="(item,index) in topMenuList.list" :key="item.id"  @click="getHeaderNav(item,index)" :index="index">{{item.label}}
               <div v-if="index==currentIndex" class="linellae"></div>
@@ -65,7 +65,7 @@
             show-password></el-input>
         </el-form-item>
         <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
-          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ"
+          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛岃嚦灏戝寘鎷暟瀛椼�佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟"
             maxlength="20" show-password></el-input>
         </el-form-item>
         <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> -->
@@ -81,7 +81,7 @@
 <script>
 import { mapState, mapMutations } from 'vuex'
 import GlobalAlertWindow from './GlobalAlertWindow'
-import { logout, updatePwd } from '@/api/system/common'
+import { getSystemConfig, logout, updatePwd } from '@/api/system/common'
 import { getAppHeaderNav } from '@/api'
 export default {
   name: 'CommonHeader',
@@ -96,7 +96,6 @@
     return {
       title: process.env.VUE_APP_TITLE,
       headerNavData: {},
-      currentIndex: 0,
       visible: {
         // 淇敼瀵嗙爜
         changePwd: false
@@ -129,13 +128,13 @@
     }
   },
   computed: {
-    ...mapState(['menuData', 'userInfo', 'topMenuList'])
+    ...mapState(['menuData', 'userInfo', 'topMenuList', 'currentIndex', 'sysConfig'])
     // title () {
     //   return this.$route.meta.title
     // }
   },
   created () {
-
+    this.getSystemConfig()
   },
   mounted () {
     // needChangePwd 0 : 榛樿瀵嗙爜闇�瑕佷慨鏀癸紝1 涓嶉渶瑕�
@@ -156,7 +155,7 @@
     }
   },
   methods: {
-    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent']),
+    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent', 'setCurrentIndex', 'setSysconfig']),
     // 淇敼瀵嗙爜
     changePwd () {
       this.visible.changePwd = true
@@ -164,31 +163,51 @@
         this.$refs.changePwdDataForm.resetFields()
       })
     },
+    getSystemConfig () {
+      if (!this.sysConfig.subTitle) {
+        getSystemConfig()
+          .then((res) => {
+            if (res && res.subtitle) {
+              this.setSysconfig(res)
+            }
+          })
+      }
+    },
     validatePassword (rule, value, callback) {
       if (!value) {
         callback(new Error('璇疯緭鍏ュ瘑鐮�'))
       } else {
-        const lengthValid = /^.{6,20}$/.test(value)
-        const hasLetter = /[a-zA-Z]/.test(value)
-        const hasNumber = /[0-9]/.test(value)
-        const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
-
-        const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
-
-        if (!lengthValid) {
-          callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
-        } else if (typesCount < 2) {
-          callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // const lengthValid = /^.{6,20}$/.test(value)
+        // const hasLetter = /[a-zA-Z]/.test(value)
+        // const hasNumber = /[0-9]/.test(value)
+        // const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
+        //
+        // const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
+        //
+        // if (!lengthValid) {
+        //   callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
+        // } else if (typesCount < 2) {
+        //   callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // } else {
+        //   callback() // 楠岃瘉閫氳繃
+        // }
+        let typeCount = 0
+        if (/[a-z]/.test(value)) typeCount++ // 灏忓啓瀛楁瘝
+        if (/[A-Z]/.test(value)) typeCount++ // 澶у啓瀛楁瘝
+        if (/\d/.test(value)) typeCount++ // 鏁板瓧
+        if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++ // 鐗规畩瀛楃
+        if (typeCount >= 3) {
+          callback()
         } else {
-          callback() // 楠岃瘉閫氳繃
+          callback(new Error('鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟'))
         }
       }
     },
-    getHeaderNav (item,index) {
-      this.currentIndex = index
-      if(item.linkType === 0){
+    getHeaderNav (item, index) {
+      this.setCurrentIndex(index)
+      if (item.linkType === 0) {
         this.setTopMenuCurrent(item)
-      }else{
+      } else {
         if (item.url && item.url === 'goHKAF' && item.params != null) {
           this.getHKAFHeaderNav(item.params, item.label)
         } else if (item.url && item.url.indexOf('http') === 0) {
@@ -199,7 +218,7 @@
     getHKAFHeaderNav (type, label) {
       getAppHeaderNav(type).then(res => {
         if (label === '瀹夐槻涓績') {
-          let openWindow = window.open(res, '_blank')
+          const openWindow = window.open(res, '_blank')
           // setTimeout(() => {
           //   openWindow.close()
           // }, 7 * 1000)
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 3a202dd..91f3d25 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -4,7 +4,7 @@
     <div class="home_header">
       <div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div>
       <div class="fs13">
-        浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂櫤鎱х墿娴佸洯鍖哄畨娑堜竴浣撳寲绯荤粺
+        浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂畕{sysConfig.subtitle || title}}
       </div>
     </div>
     <div class="main">
@@ -218,6 +218,7 @@
 import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
 import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow'
 import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
+import {mapState} from "vuex";
 const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
 export default {
   components: {
@@ -231,6 +232,7 @@
   },
   data () {
     return {
+      title: process.env.VUE_APP_TITLE,
       tabPosition: 'right',
       colors,
       nowDate: '',
@@ -257,6 +259,7 @@
     }
   },
   computed: {
+    ...mapState(['sysConfig']),
     userInfo () {
       return this.$store.state.userInfo
     }
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 88ffee6..5c64f46 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -3,8 +3,8 @@
     <img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
     <div class="login_wrap">
       <div class="login_img">
-        <div class="h3" style="font-size: 30px; margin-left: 140px; margin-bottom: 0;">鑺滄箹鐑熻崏</div>
-        <div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
+        <div class="h3" style="font-size: 30px; margin-bottom: 0;">{{sysConfig.title || ''}}</div>
+        <div class="h3">{{sysConfig.subtitle || title}}</div>
       </div>
       <div class="form_wrap">
         <div class="tabs">
@@ -73,22 +73,22 @@
 </template>
 
 <script>
-import { mapMutations } from 'vuex'
-import { getCaptcha, loginByPassword, sendSmsPost, loginByPhone } from '@/api/system/common'
-import Cookies from "js-cookie"
+import { mapMutations, mapState } from 'vuex'
+import { getCaptcha, loginByPassword, sendSmsPost, loginByPhone, getSystemConfig } from '@/api/system/common'
+import Cookies from 'js-cookie'
 import { Message } from 'element-ui'
 
 export default {
   name: 'Login',
-  data() {
+  data () {
     return {
+      title: process.env.VUE_APP_TITLE,
       loading: false,
       isRemPsd: false,
       username: '',
       password: '',
       phone: '',
       downTime: 0,
-
       smsCode: '',
       activeTab: '0',
       // 楠岃瘉鐮�
@@ -100,18 +100,30 @@
       }
     }
   },
-  mounted() {
+  computed: {
+    ...mapState(['sysConfig'])
+  },
+  mounted () {
     this.username = localStorage.getItem('username') || ''
     this.password = localStorage.getItem('password') || ''
     this.phone = localStorage.getItem('phone') || ''
     const isRemPsd = localStorage.getItem('isRemPsd') || false
     this.isRemPsd = JSON.parse(isRemPsd)
     this.refreshCaptcha()
+    this.getSystemConfig()
   },
   methods: {
-    ...mapMutations(['setUserInfo']),
+    ...mapMutations(['setUserInfo', 'setSysconfig']),
+    getSystemConfig () {
+      getSystemConfig()
+        .then((res) => {
+          if (res && res.subtitle) {
+            this.setSysconfig(res)
+          }
+        })
+    },
     // 鐧诲綍
-    login() {
+    login () {
       if (this.loading) {
         return
       }
@@ -167,9 +179,8 @@
           this.loading = false
         })
       }
-
     },
-    getCode() {
+    getCode () {
       console.log('getCode')
       const { phone } = this
       if (!phone || phone.length != 11) {
@@ -178,7 +189,7 @@
       sendSmsPost({ phone, type: 0 }).then(res => {
         Message.success('鐭俊鍙戦�佹垚鍔�')
         this.downTime = 60
-        let timer = setInterval(() => {
+        const timer = setInterval(() => {
           if (this.downTime == 0) {
             return clearInterval(timer)
           }
@@ -186,11 +197,11 @@
         }, 1000)
       })
     },
-    tabClick(val) {
+    tabClick (val) {
       this.activeTab = val
     },
     // 鍒锋柊楠岃瘉鐮�
-    refreshCaptcha() {
+    refreshCaptcha () {
       this.captcha.loading = true
       getCaptcha()
         .then(data => {
@@ -207,7 +218,7 @@
         })
     },
     // 鐧诲綍鍓嶉獙璇�
-    __check() {
+    __check () {
       if (this.username.trim() === '') {
         this.$tip.error('璇疯緭鍏ョ敤鎴峰悕')
         return false
@@ -222,7 +233,7 @@
       }
       return true
     }
-  },
+  }
 
 }
 </script>
@@ -267,7 +278,6 @@
       height: 600px;
       background: url("../assets/images/login_img@2x.png");
       background-size: 100% 100%;
-      padding-left: 40px;
       padding-top: 60px;
 
       .h2 {
@@ -278,12 +288,14 @@
         align-items: center;
         justify-content: center;
         border-radius: 4px;
+        text-align: center;
         width: 208px;
         display: flex;
         margin-bottom: 12px;
       }
 
       .h3 {
+        text-align: center;
         font-size: 28px;
         font-weight: 700;
         color: #fff;
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index b5da3fd..7b93ec5 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -34,6 +34,8 @@
     public static final String HK_PARAM ="HK_PARAM" ;
     public static final String HK_WEBSITE_DOMAIN_URL ="HK_WEBSITE_DOMAIN_URL" ;
     public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ;
+    public static final String SYSTEM_TITLE ="SYSTEM_TITLE" ;
+    public static final String SYSTEM_SUBTITLE ="SYSTEM_SUBTITLE" ;
     public static final String HK_HOST ="HK_HOST" ;
     public static final String HK_APPKEY ="HK_APPKEY" ;
     public static final String LOGIN_OUT_URL ="LOGIN_OUT" ;

--
Gitblit v1.9.3