Bläddra i källkod

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 1 år sedan
förälder
incheckning
a0eaadaf40

+ 1 - 0
package.json

@@ -3,6 +3,7 @@
   "version": "0.0.0",
   "version": "0.0.0",
   "scripts": {
   "scripts": {
     "dev": "vite --host 0.0.0.0",
     "dev": "vite --host 0.0.0.0",
+    "build:dev": "vite build --mode dev",
     "build": "vite build",
     "build": "vite build",
     "preview": "vite preview",
     "preview": "vite preview",
     "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
     "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",

+ 0 - 13
src/hooks/web/useCache.js

@@ -1,15 +1,2 @@
-/**
- * 配置浏览器本地存储的方式,可直接存储对象数组。
- */
 
 
-// import WebStorageCache from 'web-storage-cache'
 
 
-// export const useCache = (type = 'localStorage') => {
-//   const wsCache = new WebStorageCache({
-//     storage: type
-//   })
-
-//   return {
-//     wsCache
-//   }
-// }

+ 33 - 0
src/hooks/web/useDictionaries.js

@@ -0,0 +1,33 @@
+
+
+// 定义对应的api
+const DICT_CITY_API = {
+  DICT_CITY: Promise.resolve()
+}
+
+const setDict = (type, val, cacheTime) => {
+  localStorage.setItem(type, JSON.stringify({
+    data: val,
+    expire: Date.now() + cacheTime
+  }))
+}
+
+export const getDict = (type) => {
+    return new Promise((resolve) => {
+      const catchData = localStorage.getItem(type)
+      if (!catchData) {
+        return
+      }
+      if (catchData.expire && (Date.now() <= catchData.expire)) {
+        return resolve(catchData.data)
+      }
+      // 传参按照规范参数传
+      const query = {
+        type
+      }
+      DICT_CITY_API[type](query).then(({data}) => {
+        setDict(type, data, Date.now())
+        resolve(data)
+      })
+    })
+}

+ 32 - 5
src/layout/personal/navBar.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <div>
   <div>
-    <div
+    <v-toolbar
       class="banner"
       class="banner"
       density="compact"
       density="compact"
       style="padding-left: 0px;height: 50px;font-size: 14px;"
       style="padding-left: 0px;height: 50px;font-size: 14px;"
@@ -29,7 +29,29 @@
               <a href="">我要找工作</a>
               <a href="">我要找工作</a>
               <a href="">我要招聘</a>
               <a href="">我要招聘</a>
             </span>
             </span>
-            <v-btn class="half-button" color="primary" size="small" @click="handleLogin">登录/注册</v-btn>
+            <v-btn class="half-button" border color="primary" size="small" @click="handleLogin">登录/注册</v-btn>
+            <v-menu>
+              <template v-slot:activator="{ props }">
+                <v-btn
+                  class="ml-3"
+                  icon="mdi-translate"
+                  size="small"
+                  v-bind="props"
+                >
+                </v-btn>
+              </template>
+              <v-list density="compact">
+                <v-list-item
+                  v-for="item in localeStore.localeMap"
+                  :key="item.name"
+                  :value="item.lang"
+                  :active="localeStore.currentLocale.lang === item.lang"
+                  @click="localeStore.setCurrentLocale(item)"
+                >
+                  <v-list-item-title>{{ item.name }}</v-list-item-title>
+                </v-list-item>
+              </v-list>
+            </v-menu>
           </div>
           </div>
         </div>
         </div>
         <div v-else class="d-flex user-nav">
         <div v-else class="d-flex user-nav">
@@ -52,7 +74,7 @@
           </v-menu>
           </v-menu>
         </div>
         </div>
       </div>
       </div>
-    </div>
+    </v-toolbar>
     <Dialog :visible="show" :footer="true" title="企业注册" widthType="1" @close="show = false">
     <Dialog :visible="show" :footer="true" title="企业注册" widthType="1" @close="show = false">
       <enterpriseRegister ref="enterpriseRegisterRef"></enterpriseRegister>
       <enterpriseRegister ref="enterpriseRegisterRef"></enterpriseRegister>
     </Dialog>
     </Dialog>
@@ -62,16 +84,21 @@
 <script setup>
 <script setup>
 import { ref } from 'vue'
 import { ref } from 'vue'
 import { getToken } from '@/utils/auth'
 import { getToken } from '@/utils/auth'
-import { userLocaleStore } from '@/store/user'
+import { useUserStore } from '@/store/user'
+import { useLocaleStore } from '@/store/locale'
 defineOptions({ name: 'personal-navbar' })
 defineOptions({ name: 'personal-navbar' })
 import Dialog from '@/components/CtDialog'
 import Dialog from '@/components/CtDialog'
 import enterpriseRegister from '@/views/enterprise/components/register.vue'
 import enterpriseRegister from '@/views/enterprise/components/register.vue'
+
 defineProps({
 defineProps({
   sticky: {
   sticky: {
     type: Boolean,
     type: Boolean,
     default: true
     default: true
   }
   }
 })
 })
+
+const localeStore = useLocaleStore()
+
 const list = ref([
 const list = ref([
   { text: '首页', path: '/home' },
   { text: '首页', path: '/home' },
   { text: '职位', path: '' },
   { text: '职位', path: '' },
@@ -92,7 +119,7 @@ const changeRole = () => {
 }
 }
 
 
 // 退出登录
 // 退出登录
-const userStore = userLocaleStore()
+const userStore = useUserStore()
 const handleLogout = async () => {
 const handleLogout = async () => {
   // try {
   // try {
     await userStore.userLogout()
     await userStore.userLogout()

+ 1 - 0
src/permission.js

@@ -7,6 +7,7 @@ const { start, done } = useNProgress()
 // 路由不重定向白名单
 // 路由不重定向白名单
 const whiteList = [
 const whiteList = [
   '/',
   '/',
+  '/home',
   '/login',
   '/login',
   '/social-login',
   '/social-login',
   '/auth-redirect',
   '/auth-redirect',

+ 1 - 4
src/plugins/snackbar/message.vue

@@ -33,8 +33,5 @@ const snackbar = ref(true)
 
 
 </script>
 </script>
 <style scoped>
 <style scoped>
-::v-deep .v-application__wrap {
-  height: 0;
-  min-height: 0;
-}
+
 </style>
 </style>

+ 0 - 43
src/store/dictionaries.js

@@ -1,43 +0,0 @@
-/**
- * 获取字典信息 配置api过期自动读取
- */
-import { defineStore } from 'pinia'
-import { ref } from 'vue' 
-
-const DICT_CITY_API = {
-  DICT_CITY: Promise.resolve()
-}
-
-export const useDictionariesStore = defineStore('dictionaries', 
-  () => {
-
-    const DICT_CITY = ref({})
-
-    const setDict = (type, val, cacheTime) => {
-      [type].value = {
-        data: val,
-        expire: Date.now() + cacheTime
-      }
-    }
-
-    const getDict = (type) => {
-      return new Promise((resolve) => {
-        if ([type].value.expire && (Date.now() <= [type].value.expire)) {
-          return resolve([type].value.data)
-        }
-        DICT_CITY_API.DICT_CITY({ type }).then(({data}) => {
-          setDict(type, data, Date.now())
-          resolve(data)
-        })
-      })
-    }
-
-    return {
-      getDict,
-      setDict
-    }
-  },
-  {
-    persist: true, // ref() 持久化响应
-  }
-)

+ 1 - 1
src/store/user.js

@@ -6,7 +6,7 @@ import { logout } from '@/api/common/index'
 import { getUserInfo } from '@/api/personal/user'
 import { getUserInfo } from '@/api/personal/user'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 
 
-export const userLocaleStore = defineStore('user',
+export const useUserStore = defineStore('user',
   () => {
   () => {
     let accountInfo = reactive({}) // 登录返回的信息
     let accountInfo = reactive({}) // 登录返回的信息
     let userInfo = reactive({}) // 当前登录账号信息
     let userInfo = reactive({}) // 当前登录账号信息

+ 2 - 2
src/views/login/index.vue

@@ -53,7 +53,7 @@ import passwordFrom from './components/passwordPage.vue'
 import phoneFrom from '@/components/VerificationCode'
 import phoneFrom from '@/components/VerificationCode'
 import qrCode from './components/qrCode.vue'
 import qrCode from './components/qrCode.vue'
 
 
-import { userLocaleStore } from '@/store/user'
+import { useUserStore } from '@/store/user'
 import { useRouter } from 'vue-router'
 import { useRouter } from 'vue-router'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 defineOptions({ name: 'login-index' })
 defineOptions({ name: 'login-index' })
@@ -73,7 +73,7 @@ const showClose = ref(false)
 const phoneRef = ref()
 const phoneRef = ref()
 const passRef = ref()
 const passRef = ref()
 const loginLoading = ref(false)
 const loginLoading = ref(false)
-const userStore = userLocaleStore()
+const userStore = useUserStore()
 const handleLogin = async () => {
 const handleLogin = async () => {
   const { valid } = tab.value === 1 ? await phoneRef.value.phoneForm.validate() : await passRef.value.passwordForm.validate()
   const { valid } = tab.value === 1 ? await phoneRef.value.phoneForm.validate() : await passRef.value.passwordForm.validate()
   if (!valid) return
   if (!valid) return