diff --git a/App.vue b/App.vue
index dac90e1..135256c 100644
--- a/App.vue
+++ b/App.vue
@@ -6,6 +6,7 @@ import usePageAnimation from './hook/usePageAnimation';
import useDictStore from './stores/useDictStore';
const { $api, navTo, appendScriptTagElement, aes_Decrypt, sm2_Decrypt, safeReLaunch } = inject('globalFunction');
import config from '@/config.js';
+import baseDB from '@/utils/db.js';
usePageAnimation();
const appword = 'aKd20dbGdFvmuwrt'; // 固定值
@@ -15,10 +16,12 @@ onLaunch((options) => {
console.warn('爱山东环境');
getUserInfo();
useUserStore().changMiniProgramAppStatus(false);
+ useUserStore().changMachineEnv(false);
return;
}
- if (window.hh) {
+ if (isY9MachineType()) {
console.warn('求职一体机环境');
+ baseDB.resetAndReinit(); // 清空indexdb
useUserStore().logOutApp();
useUserStore().changMiniProgramAppStatus(true);
useUserStore().changMachineEnv(true);
@@ -27,6 +30,7 @@ onLaunch((options) => {
// 正式上线去除此方法
console.warn('浏览器环境');
useUserStore().changMiniProgramAppStatus(true);
+ useUserStore().changMachineEnv(false);
useUserStore().initSeesionId(); //更新
let token = uni.getStorageSync('token') || '';
if (token) {
@@ -50,6 +54,12 @@ onHide(() => {
console.log('App Hide');
});
+function isY9MachineType() {
+ const ua = navigator.userAgent;
+ const isY9Machine = /Y9-ZYYH/i.test(ua); // 匹配机器型号
+ return isY9Machine;
+}
+
function getUserInfo() {
lightAppJssdk.user.getUserInfoWithEncryptedParamByAppId({
appId: config.appInfo.loveShandong, // 接入方在成功创建应用后自动生成
diff --git a/config.js b/config.js
index b005721..502066f 100644
--- a/config.js
+++ b/config.js
@@ -1,6 +1,6 @@
export default {
- // baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网
- baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试
+ baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网
+ // baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试
// baseUrl: 'http://192.168.3.29:8081',
// baseUrl: 'http://10.213.6.207:19010/api',
// 语音转文字
diff --git a/index.html b/index.html
index 0760052..7b957a5 100644
--- a/index.html
+++ b/index.html
@@ -23,11 +23,11 @@
eruda.init();
-->
-
+
diff --git a/pages/login/login.vue b/pages/login/login.vue
index c5bf118..48dcdc5 100644
--- a/pages/login/login.vue
+++ b/pages/login/login.vue
@@ -1,156 +1,173 @@
-
-
-
-
- 支付宝扫码登录
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 支付宝扫码登录
+
+
+
+
+
+
+
+
+
+
+
-
-
- 二维码已过期
-
- 点击刷新
-
-
-
-
+
+
+ 二维码已过期
+
+ 点击刷新
+
+
+
+
-
- 使用支付宝扫一扫登录
- 扫一扫后点击确认完成登录
+
+ 使用支付宝扫一扫登录
+ 扫一扫后点击确认完成登录
+
+
+
+
+
+
+ {{ countdown }}
+ 秒后二维码过期
+
+
+
+
+
+
+ ✓
+ 登录成功!
+
-
-
-
- {{ countdown }} 秒后二维码过期
-
-
-
-
-
- ✓
- 登录成功!
-
-
-
-
-
-
-
-
- 就业
-
-
-
- 青岛市公共就业和人才服务中心
-
-
-
-
-
-
-
- 请您完善求职名片
- 个人信息仅用于推送优质内容
-
-
- 1
- /2
-
-
-
- 工作经验
-
-
-
- 求职区域
-
-
- 男
+
+
+
+
+
+ 就业
-
- 女
+
+
+ 青岛市公共就业和人才服务中心
-
-
-
- 学历
-
-
-
- 下一步
+
+
+
+
+
+
+ 请您完善求职名片
+ 个人信息仅用于推送优质内容
+
+
+ 1
+ /2
+
+
+
+ 工作经验
+
+
+
+ 求职区域
+
+
+ 男
+
+
+ 女
+
+
+
+
+ 学历
+
+
+
+ 下一步
+
+
+
+
+
+
+
+ 请您完善求职名片
+ 个人信息仅用于推送优质内容
+
+
+ 2
+ /2
+
+
+
+ 求职区域
+
+
+
+ 求职岗位
+
+
+ {{ item }}
+
+
+
+ 期望薪资
+
+
+
+ 开启求职之旅
+
+
+
+
+
+
+
-
-
-
-
-
-
- 请您完善求职名片
- 个人信息仅用于推送优质内容
-
-
- 2
- /2
-
-
-
- 求职区域
-
-
-
- 求职岗位
-
-
- {{ item }}
-
-
-
- 期望薪资
-
-
-
- 开启求职之旅
-
-
-
-
-
-
-
-
-
+
diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue
index eb03b2a..3cec1cc 100644
--- a/pages/mine/mine.vue
+++ b/pages/mine/mine.vue
@@ -355,4 +355,4 @@ const handleItemClick = (item) => {
border-radius: 2rpx
background: #A2A2A2;
transform: rotate(45deg)
-
+
\ No newline at end of file
diff --git a/stores/useLocationStore.js b/stores/useLocationStore.js
index bb7ecbf..a83cb11 100644
--- a/stores/useLocationStore.js
+++ b/stores/useLocationStore.js
@@ -14,26 +14,47 @@ const useLocationStore = defineStore("location", () => {
const longitudeVal = ref(null) // 经度
const latitudeVal = ref(null) //纬度
- function getLocation() {
+ function getLocation() { // 获取经纬度两个平台
return new Promise((resole, reject) => {
try {
- lightAppJssdk.map.getLocation({
- success: function(data) {
- longitudeVal.value = Number(data.longitude)
- latitudeVal.value = Number(data.latitude)
- resole(data)
- },
- fail: function(data) {
- longitudeVal.value = 120.382665
- latitudeVal.value = 36.066938
- resole({
- longitude: 120.382665,
- latitude: 36.066938
- })
- msg('用户位置获取失败')
- console.log('失败', data)
- }
- })
+ if (lightAppJssdk.map) {
+ lightAppJssdk.map.getLocation({
+ success: function(data) {
+ longitudeVal.value = Number(data.longitude)
+ latitudeVal.value = Number(data.latitude)
+ resole(data)
+ },
+ fail: function(data) {
+ longitudeVal.value = 120.382665
+ latitudeVal.value = 36.066938
+ resole({
+ longitude: 120.382665,
+ latitude: 36.066938
+ })
+ msg('用户位置获取失败')
+ }
+ })
+ } else {
+ uni.getLocation({
+ type: 'gcj02',
+ highAccuracyExpireTime: 3000,
+ isHighAccuracy: true,
+ success: function(data) {
+ longitudeVal.value = Number(data.longitude)
+ latitudeVal.value = Number(data.latitude)
+ resole(data)
+ },
+ fail: function(data) {
+ longitudeVal.value = 120.382665
+ latitudeVal.value = 36.066938
+ resole({
+ longitude: 120.382665,
+ latitude: 36.066938
+ })
+ msg('用户位置获取失败')
+ }
+ });
+ }
} catch (e) {
longitudeVal.value = 120.382665
latitudeVal.value = 36.066938
diff --git a/stores/useUserStore.js b/stores/useUserStore.js
index 8ca5de9..d834780 100644
--- a/stores/useUserStore.js
+++ b/stores/useUserStore.js
@@ -18,6 +18,7 @@ import {
msg,
$api,
} from '../common/globalFunction';
+import baseDB from '@/utils/db.js';
// 简历完成度计算
function getResumeCompletionPercentage(resume) {
@@ -125,7 +126,9 @@ const useUserStore = defineStore("user", () => {
// 获取消息列表
useReadMsg().fetchMessages()
// 获取用户信息
- return getUserResume()
+ const resume = await getUserResume()
+ await baseDB.init(); // 登录成功初始化
+ return resume
}
const setUserInfo = (values) => {
diff --git a/stores/userChatGroupStore.js b/stores/userChatGroupStore.js
index 4ea32b1..68075b4 100644
--- a/stores/userChatGroupStore.js
+++ b/stores/userChatGroupStore.js
@@ -34,11 +34,12 @@ const useChatGroupDBStore = defineStore("messageGroup", () => {
const chatSessionID = ref('')
const lastDateRef = ref('')
- async function init() {
+ async function init() { // 初始化数据,有则用,无则更新
// 获取所有数据
setTimeout(async () => {
if (!baseDB.isDBReady) await baseDB.initDB();
const result = await baseDB.db.getAll(tableName.value);
+ console.log('result', result)
// 1、判断是否有数据,没数据请求服务器
if (result.length) {
console.warn('本地数据库存在数据')
diff --git a/utils/db.js b/utils/db.js
index d901575..450436e 100644
--- a/utils/db.js
+++ b/utils/db.js
@@ -1,24 +1,50 @@
-// BaseDBStore.js
import IndexedDBHelper from '@/common/IndexedDBHelper.js'
-// import UniStorageHelper from '../common/UniStorageHelper'
import useChatGroupDBStore from '@/stores/userChatGroupStore'
import config from '@/config'
class BaseStore {
db = null
isDBReady = false
- dbName = 'BrowsingHistory' // 'AppMainDB'
+ dbName = 'AppMainDB'
initPromise = null
constructor() {
- this.initPromise = this.checkAndInitDB()
+ // 不再自动执行初始化
}
- async getDB() {
- if (!this.initPromise) {
- this.initPromise = this.checkAndInitDB();
+ /**
+ * 手动初始化入口、建立连接、如果版本号不对付才会清理
+ * 建议在登录成功后调用:await baseDB.init()
+ */
+ async init() {
+ // 如果已经有初始化任务在进行了,直接返回该任务
+ if (this.initPromise) {
+ return this.initPromise;
+ }
+
+ // 创建初始化任务
+ this.initPromise = this.checkAndInitDB();
+
+ try {
+ await this.initPromise;
+ console.log('数据库初始化成功');
+ } catch (error) {
+ this.initPromise = null; // 初始化失败允许下次重试
+ console.error('数据库初始化失败:', error);
+ throw error;
+ }
+
+ return this.db;
+ }
+
+ /**
+ * 获取数据库实例
+ * 如果没初始化,会强制触发一次 init
+ */
+ async getDB() {
+ if (!this.isDBReady) {
+ return await this.init();
}
- await this.initPromise; // 等待初始化完成
return this.db;
}
@@ -28,30 +54,28 @@ class BaseStore {
}
const localVersion = uni.getStorageSync('indexedDBVersion') || 1
console.log('DBVersion: ', localVersion, config.DBversion)
- if (localVersion === config.DBversion) {
- return this.initDB() // 🟢 记得加 return
+
+ if (Number(localVersion) === Number(config.DBversion)) {
+ return this.initDB()
} else {
- console.log('清空本地数据库')
- await this.clearDB() // 🟢 建议用 await
+ console.log('检测到版本更新,清空重置旧数据库')
+ await this.clearDB()
uni.setStorageSync('indexedDBVersion', config.DBversion);
- return this.initDB(); // 🟢 记得加 return
+ return this.initDB();
}
}
initDB() {
- // // #ifdef H5
this.db = new IndexedDBHelper(this.dbName, config.DBversion);
- // // #endif
-
return this.db.openDB([{
name: 'record',
keyPath: "id",
- autoIncrement: true,
+ autoIncrement: true
},
{
name: 'messageGroup',
keyPath: "id",
- autoIncrement: true,
+ autoIncrement: true
},
{
name: 'messages',
@@ -65,12 +89,12 @@ class BaseStore {
},
{
name: 'api_cache',
- keyPath: "cacheKey", // 使用 URL+参数 作为主键
+ keyPath: "cacheKey",
indexes: []
}
]).then(async () => {
- // 这里原来的逻辑保留
if (useChatGroupDBStore) {
+ // 确保 Pinia Store 已准备好后再初始化子项
useChatGroupDBStore().init()
}
this.isDBReady = true
@@ -79,13 +103,44 @@ class BaseStore {
}
async clearDB() {
- return new Promise((resolve, rejetc) => {
- new IndexedDBHelper().deleteDB(this.dbName).then(() => {
- resolve()
- })
- })
+ // 修正拼写错误并优化 Promise 写法
+ return new IndexedDBHelper().deleteDB(this.dbName);
+ }
+
+ /**
+ * 彻底清空数据库并重新初始化
+ * 适用于切换账号或手动清理缓存
+ * 非特殊情况不要重置!!!!!!!!!!!!!!!
+ */
+ async resetAndReinit() {
+ console.warn('开始执行数据库重置...');
+
+ if (this.db && this.db.db) {
+ this.db.db.close();
+ }
+
+ try {
+ await this.clearDB();
+
+ // 3. 重置内部状态
+ this.db = null;
+ this.isDBReady = false;
+ this.initPromise = null;
+
+ uni.setStorageSync('indexedDBVersion', config.DBversion);
+
+ // 5. 重新调用初始化流程
+ await this.init();
+
+ console.log('数据库重置及初始化完成');
+ return true;
+ } catch (error) {
+ console.error('数据库重置失败:', error);
+ throw error;
+ }
}
}
+// 导出实例
const baseDB = new BaseStore()
export default baseDB
\ No newline at end of file