From 77dfab84f1d0351591d71b410056da232f4f4bd7 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Tue, 16 Dec 2025 15:36:42 +0800 Subject: [PATCH] =?UTF-8?q?flat:=20=E6=9A=82=E5=AD=98=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=B8=80=E4=BD=93=E6=9C=BAsdk=EF=BC=8C=E5=92=8C?= =?UTF-8?q?=E4=B8=80=E4=BD=93=E6=9C=BA=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 50 +++++++------- config.js | 7 +- hook/piper-sdk.js | 4 +- index.html | 8 ++- packageA/pages/post/post.vue | 17 +++-- pages.json | 2 +- pages/index/components/index-refactor.vue | 78 +++++++++++++++++++--- pages/mine/mine.vue | 16 ++--- static/font/DIN-Medium.woff2 | Bin 0 -> 14940 bytes static/js/jsbridge.js | 69 +++++++++++++++++++ stores/useUserStore.js | 23 ++++++- 11 files changed, 214 insertions(+), 60 deletions(-) create mode 100644 static/font/DIN-Medium.woff2 create mode 100644 static/js/jsbridge.js diff --git a/App.vue b/App.vue index 3a24242..dac90e1 100644 --- a/App.vue +++ b/App.vue @@ -11,26 +11,32 @@ const appword = 'aKd20dbGdFvmuwrt'; // 固定值 onLaunch((options) => { useDictStore().getDictData(); - try { + if (lightAppJssdk.user) { + console.warn('爱山东环境'); getUserInfo(); useUserStore().changMiniProgramAppStatus(false); - } catch { - console.log('不是爱山东平台,使用测试登陆'); + return; + } + if (window.hh) { + console.warn('求职一体机环境'); + useUserStore().logOutApp(); useUserStore().changMiniProgramAppStatus(true); - useUserStore().initSeesionId(); //更新 - let token = uni.getStorageSync('token') || ''; // 同步获取 缓存信息 - if (token) { - useUserStore() - .loginSetToken(token) - .then(() => { - $api.msg('登录成功'); - }); - } else { - safeReLaunch('/pages/login/login'); - // uni.redirectTo({ - // url: '/pages/login/login', - // }); - } + useUserStore().changMachineEnv(true); + return; + } + // 正式上线去除此方法 + console.warn('浏览器环境'); + useUserStore().changMiniProgramAppStatus(true); + useUserStore().initSeesionId(); //更新 + let token = uni.getStorageSync('token') || ''; + if (token) { + useUserStore() + .loginSetToken(token) + .then(() => { + $api.msg('登录成功'); + }); + } else { + safeReLaunch('/pages/login/login'); } }); @@ -110,15 +116,9 @@ function loginCallback(userInfo) { .then((resume) => { if (resume.data.jobTitleId) { useUserStore().initSeesionId(); - // uni.reLaunch({ - // url: '/pages/index/index', - // }); safeReLaunch('/pages/index/index'); } else { safeReLaunch('/pages/login/login'); - // uni.redirectTo({ - // url: '/pages/login/login', - // }); } }); }); @@ -130,7 +130,6 @@ function loginCallback(userInfo) { @import '@/common/animation.css'; @import '@/common/common.css'; - /* 修改pages tabbar样式 H5才有效 */ .uni-tabbar .uni-tabbar__item:nth-child(4) .uni-tabbar__bd .uni-tabbar__icon { width: 108rpx !important; @@ -163,7 +162,6 @@ uni-modal, z-index: 998; } - @font-face { font-family: DingTalk JinBuTi; src: url('/static/font/DingTalk JinBuTi_min.woff2') format('woff2'); @@ -184,7 +182,7 @@ uni-modal, @font-face { font-family: DIN-Medium; - src: url('https://qd.zhaopinzao8dian.com/file/csn/DIN-Medium.woff2') format('woff2'); + src: url('./static/font/DIN-Medium.woff2') format('woff2'); font-display: swap; } diff --git a/config.js b/config.js index 5da92a2..502066f 100644 --- a/config.js +++ b/config.js @@ -4,11 +4,12 @@ export default { // baseUrl: 'http://192.168.3.29:8081', // baseUrl: 'http://10.213.6.207:19010/api', // 语音转文字 - // vioceBaseURl: 'wss://qd.zhaopinzao8dian.com/api/system/asr/connect', // 自定义 - vioceBaseURl: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/system/asr/connect', // 内网 + vioceBaseURl: 'wss://qd.zhaopinzao8dian.com/api/app/asr/connect', // 自定义 + // vioceBaseURl: 'wss://fw.rc.qingdao.gov.cn/rgpp-api/api/app/asr/connect', // 内网 // 语音合成 - speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis', + // speechSynthesis: 'wss://qd.zhaopinzao8dian.com/api/speech-synthesis', speechSynthesis2: 'wss://resource.zhuoson.com/synthesis/', //直接替换即可 + // speechSynthesis2: 'http://39.98.44.136:19527', //直接替换即可 // indexedDB DBversion: 3, // 只使用本地缓寸的数据 diff --git a/hook/piper-sdk.js b/hook/piper-sdk.js index 17ab55a..e8921a3 100644 --- a/hook/piper-sdk.js +++ b/hook/piper-sdk.js @@ -8,11 +8,13 @@ export class PiperTTS { constructor(config = {}) { this.baseUrl = config.baseUrl || 'http://localhost:5001'; + this.wsUrl = config.wsUrl || '/ws/synthesize' this.audioCtx = config.audioCtx || new(window.AudioContext || window.webkitAudioContext)(); this.onStatus = config.onStatus || ((msg, type) => console.log(`[Piper] ${msg}`)); this.onStart = config.onStart || (() => {}); this.onEnd = config.onEnd || (() => {}); + // 内部状态 this.ws = null; this.nextTime = 0; // 下一段音频的预定播放时间 @@ -56,7 +58,7 @@ export class PiperTTS { this.onStatus('正在建立连接...', 'processing'); try { - const wsUrl = this.baseUrl.replace(/^http/, 'ws') + '/ws/synthesize'; + const wsUrl = this.baseUrl.replace(/^http/, 'ws') + this.wsUrl; this.ws = new WebSocket(wsUrl); this.ws.binaryType = 'arraybuffer'; diff --git a/index.html b/index.html index 0ea9071..0760052 100644 --- a/index.html +++ b/index.html @@ -22,17 +22,19 @@ --> - + + + + -
diff --git a/packageA/pages/post/post.vue b/packageA/pages/post/post.vue index 86d82cb..10f5f48 100644 --- a/packageA/pages/post/post.vue +++ b/packageA/pages/post/post.vue @@ -168,7 +168,7 @@ 立即前往 - 立即投递 + 立即前往 @@ -185,7 +185,7 @@ import dictLabel from '@/components/dict-Label/dict-Label.vue'; import RadarMap from './component/radarMap.vue'; import { storeToRefs } from 'pinia'; import useUserStore from '@/stores/useUserStore'; -const { isMiniProgram } = storeToRefs(useUserStore()); +const { isMiniProgram, hasLogin } = storeToRefs(useUserStore()); const { $api, navTo, getLenPx, parseQueryParams, navBack, isEmptyObject } = inject('globalFunction'); import config from '@/config.js'; @@ -252,7 +252,10 @@ function getDetail(jobId) { const { latitude, longitude, companyName, companyId } = resData.data; jobInfo.value = resData.data; getCompanyIsAJobs(companyId); - getCompetivetuveness(jobId); + + if (hasLogin.value) { + getCompetivetuveness(jobId); + } if (latitude && longitude) { initMapCovers(latitude, longitude, companyName); @@ -285,12 +288,12 @@ function getCompanyIsAJobs(...args) { if (dataType.value === 2) { // 第三方数据获取公司职位数量 const [gsID, gsmc, zphID] = args; - const params={ + const params = { gsID, gsmc, - zphID - } - $api.createRequest(`/app/internal/jobThirdPart`,params).then((resData) => { + zphID, + }; + $api.createRequest(`/app/internal/jobThirdPart`, params).then((resData) => { companyCount.value = resData.total; }); } else { diff --git a/pages.json b/pages.json index bab627a..cd14c31 100644 --- a/pages.json +++ b/pages.json @@ -281,7 +281,7 @@ // "enablePullDownRefresh": false, // "navigationStyle": "custom", "rpxCalcBaseDeviceWidth": 375, - "rpxCalcMaxDeviceWidth": 1200, + "rpxCalcMaxDeviceWidth": 960, "rpxCalcIncludeWidth": 750 }, "uniIdRouter": {} diff --git a/pages/index/components/index-refactor.vue b/pages/index/components/index-refactor.vue index d50b1b8..da8904d 100644 --- a/pages/index/components/index-refactor.vue +++ b/pages/index/components/index-refactor.vue @@ -259,7 +259,7 @@ const { $api, navTo, vacanciesTo, formatTotal, throttle } = inject('globalFuncti import { onLoad, onShow } from '@dcloudio/uni-app'; import { storeToRefs } from 'pinia'; import useUserStore from '@/stores/useUserStore'; -const { userInfo } = storeToRefs(useUserStore()); +const { userInfo, hasLogin } = storeToRefs(useUserStore()); import useDictStore from '@/stores/useDictStore'; const { getTransformChildren, oneDictData } = useDictStore(); import useLocationStore from '@/stores/useLocationStore'; @@ -316,6 +316,49 @@ const isLoaded = ref(false); const colors = ['#0069FE', '#FF9400', '#FF6969', '#21EA85', '#87E2EC']; +const occupations = [ + '律师', + '工程师', + '医生', + '教师', + '设计师', + '程序员', + '会计师', + '建筑师', + '护士', + '销售', + '经理', + '顾问', + '分析师', + '研究员', + '编辑', + '记者', + '摄影师', + '厨师', + '司机', + '保安', + '客服', + '行政', + '人事', + '市场', + '运营', + '产品', + '测试', + '运维', + '前端', + '后端', + '全栈', + '数据', + '策划', + '导演', + '演员', + '歌手', + '作家', + '画家', + '翻译', + '导游', +]; + onMounted(() => { let firstEntry = uni.getStorageSync('firstEntry') === false ? false : true; // 默认未读 maskFirstEntry.value = firstEntry; @@ -323,17 +366,34 @@ onMounted(() => { }); async function getMatchTags() { - try { - matchLoading.value = true; - const { data } = await $api.createRequest('/app/user/getJobAdviceByResume'); - matchTags.value = data; - matchLoading.value = false; - } catch (err) { - console.err('简历匹配职位获取失败'); - } finally { + if (hasLogin.value) { + try { + matchLoading.value = true; + const { data } = await $api.createRequest('/app/user/getJobAdviceByResume'); + matchTags.value = data; + matchLoading.value = false; + } catch (err) { + console.error('简历匹配职位获取失败'); + } + } else { + const vals = getRandomStrings(occupations).map((text) => ({ + job_name: text, + score: 0, + })); + matchTags.value = vals; } } +function getRandomStrings(arr, count = 10) { + const size = Math.min(arr.length, count); + const shuffled = [...arr]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled.slice(0, size); +} + const checkStickyStatus = (e) => { scrollTop.value = e.detail.scrollTop; nextTick(() => { diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue index 36e8f70..eb03b2a 100644 --- a/pages/mine/mine.vue +++ b/pages/mine/mine.vue @@ -82,7 +82,7 @@ 已开启 - + 退出登录 screenStore.isWideScreen, (newVal) => { - showTabbar.value = newVal + showTabbar.value = newVal; }, { immediate: true } -) - - +); function logOut() { popup.value.open(); diff --git a/static/font/DIN-Medium.woff2 b/static/font/DIN-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fb53b4701d1655141a208254a20cd880ed4dbc38 GIT binary patch literal 14940 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 z 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 a7AH6IXS=!Wy0h7A<7eo9J9F3H+VvWAAlZKa literal 0 HcmV?d00001 diff --git a/static/js/jsbridge.js b/static/js/jsbridge.js new file mode 100644 index 0000000..aefedd8 --- /dev/null +++ b/static/js/jsbridge.js @@ -0,0 +1,69 @@ +(() => { + if (!/android/.test(navigator.userAgent.toLowerCase())) { + console.error("当前环境不支持WebView桥接通信, 请检查是否为安卓环境"); + return + } + let bridge; + function setupWebViewJavascriptBridge(callback) { + return new Promise((reslove, reject) => { + if (window.WebViewJavascriptBridge) { + bridge = window.WebViewJavascriptBridge; + callback && callback() + reslove() + } else { + document.addEventListener( + "WebViewJavascriptBridgeReady", + function () { + bridge = window.WebViewJavascriptBridge; + callback && callback() + reslove() + }, + false + ); + } + }) + } + let funcs = {} + setupWebViewJavascriptBridge(() => { + bridge.init() + bridge.registerHandler("ampeHHCommunication", (data) => { + console.log('[zyh][registerHandler]',data); + data = JSON.parse(data || '{}'); + let eventName = data.eventName || '{}'; + let eventData = JSON.parse(data.eventData || '{}'); + if (funcs[eventName]) { + for (let callback of funcs[eventName]) { + callback({type: eventName, data: eventData}) + } + } + }); + }) + window.hh = { + async call(funcName, params, callback) { + if (!bridge) { + await setupWebViewJavascriptBridge() + } + bridge.callHandler(funcName, params, callback); + }, + async on(funcName, callback) { + if (funcs[funcName]) { + funcs[funcName].add(callback) + } else { + funcs[funcName] = new Set([callback]) + } + }, + off(funcName, callback) { + if (!funcs[funcName]) { + return false + } + if (!callback) { + return delete funcs[funcName] + } + let res = funcs[funcName].delete(callback) + if(funcs[funcName].size <= 0) { + delete funcs[funcName] + } + return res + } + }; +})(); diff --git a/stores/useUserStore.js b/stores/useUserStore.js index d0d89d4..8ca5de9 100644 --- a/stores/useUserStore.js +++ b/stores/useUserStore.js @@ -59,6 +59,7 @@ const useUserStore = defineStore("user", () => { const seesionId = ref('') const counts = ref({}) const isMiniProgram = ref(false) + const isMachineEnv = ref(false) const login = (value) => { hasLogin.value = true; @@ -84,6 +85,20 @@ const useUserStore = defineStore("user", () => { }); } + const logOutApp = () => { + hasLogin.value = false; + token.value = '' + resume.value = {} + userInfo.value = {} + role.value = {} + uni.clearStorageSync('userInfo') + uni.clearStorageSync('token') + uni.switchTab({ + url: '/pages/index/index', + }); + } + + const getUserInfo = () => { return new Promise((reslove, reject) => { createRequest('/getInfo', {}, 'get').then((userInfo) => { @@ -145,6 +160,9 @@ const useUserStore = defineStore("user", () => { isMiniProgram.value = val } + function changMachineEnv(val) { + isMachineEnv.value = val + } // 导入 return { @@ -154,6 +172,7 @@ const useUserStore = defineStore("user", () => { resume, login, logOut, + logOutApp, loginSetToken, getUserResume, initSeesionId, @@ -162,7 +181,9 @@ const useUserStore = defineStore("user", () => { getUserstatistics, counts, isMiniProgram, - changMiniProgramAppStatus + changMiniProgramAppStatus, + changMachineEnv, + isMachineEnv } }, { unistorage: true,