页面适配

This commit is contained in:
2025-12-12 13:39:23 +08:00
parent 60b4d2bef0
commit 9bc3c0fb7c
18 changed files with 574 additions and 1650 deletions

View File

@@ -1,5 +1,8 @@
<template> <template>
<view>
<!-- #ifdef H5 -->
<transition-group name="blur-fade-stagger" tag="view"> <transition-group name="blur-fade-stagger" tag="view">
<!-- #endif -->
<view v-for="(job, index) in dataSource" :key="job.id" :style="{ '--i': 2 }"> <view v-for="(job, index) in dataSource" :key="job.id" :style="{ '--i': 2 }">
<view class="cards" @click="nextDetail(job)"> <view class="cards" @click="nextDetail(job)">
<view class="card-company"> <view class="card-company">
@@ -33,7 +36,11 @@
</view> </view>
</view> </view>
</view> </view>
<!-- #ifdef H5 -->
</transition-group> </transition-group>
<!-- #endif -->
</view>
</template> </template>
<script setup> <script setup>

View File

@@ -138,7 +138,7 @@ function nextDetail(job) {
if (job.isPublish) { if (job.isPublish) {
return $api.msg('已过期'); return $api.msg('已过期');
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}&dataType=${job.dataType}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&dataType=${job.dataType}`);
} }
</script> </script>

View File

@@ -139,7 +139,7 @@ function nextDetail(job) {
return $api.msg('已过期'); return $api.msg('已过期');
} }
// 根据数据类型跳转到不同的详情页 // 根据数据类型跳转到不同的详情页
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}&dataType=${job.dataType}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&dataType=${job.dataType}`);
} }
</script> </script>

View File

@@ -138,7 +138,7 @@ function nextDetail(job) {
if (job.isPublish) { if (job.isPublish) {
return $api.msg('已过期'); return $api.msg('已过期');
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}&dataType=${job.dataType}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&dataType=${job.dataType}`);
} }
</script> </script>

View File

@@ -1,5 +1,8 @@
<template> <template>
<view>
<!-- #ifdef H5 -->
<transition-group name="blur-fade-stagger" tag="view"> <transition-group name="blur-fade-stagger" tag="view">
<!-- #endif -->
<view v-for="job in dataSource" :key="job.id || job.jobId" :style="{ '--i': 2 }"> <view v-for="job in dataSource" :key="job.id || job.jobId" :style="{ '--i': 2 }">
<view v-if="!job.isTitle" class="cards" @click="nextDetail(job)"> <view v-if="!job.isTitle" class="cards" @click="nextDetail(job)">
<view class="card-company"> <view class="card-company">
@@ -40,7 +43,10 @@
{{ job.title }} {{ job.title }}
</view> </view>
</view> </view>
<!-- #ifdef H5 -->
</transition-group> </transition-group>
<!-- #endif -->
</view>
</template> </template>
<script setup> <script setup>
@@ -128,7 +134,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}&dataType=1`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}&dataType=1`);
} }
</script> </script>

View File

@@ -1,5 +1,8 @@
<template> <template>
<view>
<!-- #ifdef H5 -->
<transition-group name="blur-fade-stagger" tag="view"> <transition-group name="blur-fade-stagger" tag="view">
<!-- #endif -->
<view v-for="job in dataSource" :key="job.id" :style="{ '--i': 2 }"> <view v-for="job in dataSource" :key="job.id" :style="{ '--i': 2 }">
<view v-if="!job.isTitle" class="cards" @click="nextDetail(job)"> <view v-if="!job.isTitle" class="cards" @click="nextDetail(job)">
<view class="card-company"> <view class="card-company">
@@ -40,7 +43,10 @@
{{ job.title }} {{ job.title }}
</view> </view>
</view> </view>
<!-- #ifdef H5 -->
</transition-group> </transition-group>
<!-- #endif -->
</view>
</template> </template>
<script setup> <script setup>
@@ -101,7 +107,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.id)}&dataType=2`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.id)}&dataType=2`);
} }
function parseDateTime(datetimeStr) { function parseDateTime(datetimeStr) {
if (!datetimeStr) return { time: '', date: '' }; if (!datetimeStr) return { time: '', date: '' };

View File

@@ -129,6 +129,7 @@ const zphId = ref('');
const pageOptions = ref({}); const pageOptions = ref({});
onLoad((options) => { onLoad((options) => {
console.log(options,'++')
zphId.value = options.jobFairId; zphId.value = options.jobFairId;
pageOptions.value = options; pageOptions.value = options;
getJobFairInfo(options.jobFairId, options.jobFairName); getJobFairInfo(options.jobFairId, options.jobFairName);

View File

@@ -203,6 +203,7 @@ const explainUrlRef = ref('');
const dataType = ref(1); // 1: 原数据, 2: 第三方数据 const dataType = ref(1); // 1: 原数据, 2: 第三方数据
onLoad((option) => { onLoad((option) => {
console.log(option,'+++++')
if (option.jobId) { if (option.jobId) {
dataType.value = option.dataType ? parseInt(option.dataType) : 1; dataType.value = option.dataType ? parseInt(option.dataType) : 1;
initLoad(option); initLoad(option);
@@ -210,15 +211,17 @@ onLoad((option) => {
}); });
onShow(() => { onShow(() => {
// #ifdef H5
const option = parseQueryParams(); // 兼容微信内置浏览器 const option = parseQueryParams(); // 兼容微信内置浏览器
if (option.jobId) { if (option.jobId) {
dataType.value = option.dataType ? parseInt(option.dataType) : 1; dataType.value = option.dataType ? parseInt(option.dataType) : 1;
initLoad(option); initLoad(option);
} }
// #endif
}); });
function initLoad(option) { function initLoad(option) {
const jobId = atob(option.jobId); const jobId = decodeURIComponent(option.jobId);
if (jobId !== jobIdRef.value) { if (jobId !== jobIdRef.value) {
jobIdRef.value = jobId; jobIdRef.value = jobId;
getDetail(jobId); getDetail(jobId);

View File

@@ -55,7 +55,7 @@ function nextDetail() {
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
console.log(job.jobId); console.log(job.jobId);
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`);
} }
function getNextVideoSrc(num) { function getNextVideoSrc(num) {

View File

@@ -117,7 +117,7 @@ import useLocationStore from '@/stores/useLocationStore';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import config from '@/config'; import config from '@/config';
const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore()); const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore());
const { $api, navTo, cloneDeep, debounce } = inject('globalFunction'); const { $api, navTo, } = inject('globalFunction');
const weekList = ref([]); const weekList = ref([]);
const fairList = ref([]); const fairList = ref([]);
const currentDay = ref({}); const currentDay = ref({});
@@ -149,9 +149,13 @@ onLoad(() => {
}); });
const handleItemClick = (item) => { const handleItemClick = (item) => {
try {
lightAppJssdk.navigation.hide({ lightAppJssdk.navigation.hide({
url: config.virtualJobFair, url: config.virtualJobFair,
}); });
} catch (error) {
$api.msg('功能确定中');
}
}; };
function toSelectDate() { function toSelectDate() {

View File

@@ -30,11 +30,9 @@ export default {
import * as PIXI from "pixi.js"; import * as PIXI from "pixi.js";
// PIXI 变量 // PIXI 变量
let app = null;
let tagsContainer = null; let tagsContainer = null;
let activeTagInstances = []; let activeTagInstances = [];
// 配置数据 // 配置数据
const mockTags = [ const mockTags = [
{ name: "医生", bgColor: 0x0069fe, fontColor: 0xffffff, size: 17, opacity: 1.0, angle: 0, radius: 0 }, { name: "医生", bgColor: 0x0069fe, fontColor: 0xffffff, size: 17, opacity: 1.0, angle: 0, radius: 0 },
@@ -149,12 +147,13 @@ const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
export default { export default {
data() { data() {
return { return {
app:null
} }
}, },
beforeDestroy() { beforeDestroy() {
if (app) { if (this.app) {
app.destroy(true, { children: true, texture: true, baseTexture: true }); this.app.destroy(true, { children: true, texture: true, baseTexture: true });
app = null; this.app = null;
} }
window.removeEventListener("resize", this.handleResize()); window.removeEventListener("resize", this.handleResize());
}, },
@@ -168,9 +167,9 @@ export default {
const height = container.clientHeight || 300; const height = container.clientHeight || 300;
console.log(width,height); console.log(width,height);
if (app) return; if (this.app) return;
app = new PIXI.Application({ this.app = new PIXI.Application({
width: width, width: width,
height: height, height: height,
backgroundAlpha: 0, backgroundAlpha: 0,
@@ -179,12 +178,12 @@ export default {
resolution: window?.devicePixelRatio ?? 1, resolution: window?.devicePixelRatio ?? 1,
autoDensity: true, autoDensity: true,
}); });
app.view.style.touchAction = "auto"; this.app.view.style.touchAction = "auto";
container.appendChild(app.view); container.appendChild(this.app.view);
tagsContainer = new PIXI.Container(); tagsContainer = new PIXI.Container();
app.stage.addChild(tagsContainer); this.app.stage.addChild(tagsContainer);
this.renderScene(width, height); this.renderScene(width, height);
window.addEventListener("resize", this.handleResize()); window.addEventListener("resize", this.handleResize());
@@ -238,8 +237,8 @@ export default {
}); });
// 动画循环 // 动画循环
app.ticker.add(() => { this.app.ticker.add(() => {
const screenH = app.screen.height; const screenH = this.app.screen.height;
activeTagInstances.forEach((tag) => { activeTagInstances.forEach((tag) => {
const meta = tag.userData; const meta = tag.userData;
@@ -348,11 +347,11 @@ export default {
handleResize () { handleResize () {
const container = document.querySelector('#pixi-box'); const container = document.querySelector('#pixi-box');
if (!app || !container) return; if (!this.app || !container) return;
const w = container.clientWidth || 300; const w = container.clientWidth || 300;
const h = container.clientHeight || 300; const h = container.clientHeight || 300;
app.renderer.resize(w, h); this.app.renderer.resize(w, h);
activeTagInstances.forEach((tag) => { activeTagInstances.forEach((tag) => {
const meta = tag.userData; const meta = tag.userData;

View File

@@ -292,7 +292,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`);
} }
function openFilter() { function openFilter() {

View File

@@ -498,7 +498,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`);
} }
function openFilter() { function openFilter() {
@@ -608,8 +608,9 @@ function getJobRecommend(type = 'add') {
list.value.push(...reslist); list.value.push(...reslist);
}) })
.catch((err) => { .catch((err) => {
const reslist = dataToImg(data); // const reslist = dataToImg(data);
list.value.push(...reslist); // list.value.push(...reslist);
console.log(err,'+++')
}); });
} else { } else {
list.value = dataToImg(data); list.value = dataToImg(data);
@@ -1107,7 +1108,7 @@ defineExpose({ loadData });
bottom:50rpx; bottom:50rpx;
width:264rpx; width:264rpx;
height:298rpx; height:298rpx;
z-index:6 z-index:7
} }
} }
.no-radius .no-radius

View File

@@ -166,7 +166,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`);
} }
function nextVideo(job) { function nextVideo(job) {
@@ -208,7 +208,8 @@ defineExpose({ loadData });
} }
.nav-filter .nav-filter
padding: 16rpx 28rpx 30rpx 28rpx padding: 16rpx 28rpx 30rpx 28rpx;
padding-top:calc(var(--window-top) + var(--status-bar-height) + 20rpx);
.filter-top .filter-top
display: flex display: flex
justify-content: space-between; justify-content: space-between;

View File

@@ -160,7 +160,7 @@ onLoad(() => {
}); });
function navToPost(jobId) { function navToPost(jobId) {
navTo(`/packageA/pages/post/post?jobId=${btoa(jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(jobId)}`);
} }
async function loadData() { async function loadData() {

View File

@@ -231,7 +231,7 @@ function nextDetail(job) {
const recordData = recommedIndexDb.JobParameter(job); const recordData = recommedIndexDb.JobParameter(job);
recommedIndexDb.addRecord(recordData); recommedIndexDb.addRecord(recordData);
} }
navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); navTo(`/packageA/pages/post/post?jobId=${encodeURIComponent(job.jobId)}`);
} }
function nextVideo(job) { function nextVideo(job) {

1108
static/js/pixi.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
// BaseDBStore.js // BaseDBStore.js
import IndexedDBHelper from '@/common/IndexedDBHelper.js' import IndexedDBHelper from '@/common/IndexedDBHelper.js'
// import UniStorageHelper from '../common/UniStorageHelper' import UniStorageHelper from '../common/UniStorageHelper'
import useChatGroupDBStore from '@/stores/userChatGroupStore' import useChatGroupDBStore from '@/stores/userChatGroupStore'
import config from '@/config' import config from '@/config'
@@ -43,6 +43,10 @@ class BaseStore {
this.db = new IndexedDBHelper(this.dbName, config.DBversion); this.db = new IndexedDBHelper(this.dbName, config.DBversion);
// // #endif // // #endif
// #ifdef APP-PLUS
this.db = new UniStorageHelper(this.dbName, );
// #endif
return this.db.openDB([{ return this.db.openDB([{
name: 'record', name: 'record',
keyPath: "id", keyPath: "id",