From 16b8ca84cd0da5f9ec16cde4093b458159fdf036 Mon Sep 17 00:00:00 2001
From: Apcallover <1503963513@qq.com>
Date: Mon, 1 Dec 2025 20:29:19 +0800
Subject: [PATCH] =?UTF-8?q?flat:=20=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=EF=BC=8Canimation=20=E7=AD=89\preload=E7=AD=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
App.vue | 3 +-
config.js | 4 +-
hook/page-animation.css | 30 +++++++++
hook/usePageAnimation.js | 66 +++++++++++++++++++
index.html | 7 +-
packageA/pages/UnitDetails/UnitDetails.vue | 23 ++++---
.../pages/newJobPosition/newJobPosition.vue | 4 +-
packageA/pages/reservation/reservation.vue | 4 +-
pages/careerfair/careerfair copy.vue | 4 +-
pages/careerfair/careerfair.vue | 4 +-
pages/chat/components/ai-paging.vue | 10 +--
pages/index/components/index-one.vue | 4 +-
pages/index/index.vue | 7 ++
pages/msglog/read.vue | 2 +
pages/msglog/unread.vue | 2 +
pages/nearby/components/four.vue | 15 ++---
pages/nearby/components/one.vue | 10 +--
pages/nearby/components/three.vue | 11 ++--
pages/nearby/components/two.vue | 13 ++--
utils/request.js | 10 +--
20 files changed, 169 insertions(+), 64 deletions(-)
create mode 100644 hook/page-animation.css
create mode 100644 hook/usePageAnimation.js
diff --git a/App.vue b/App.vue
index 99acae0..eb78bd7 100644
--- a/App.vue
+++ b/App.vue
@@ -2,10 +2,11 @@
import { reactive, inject, onMounted } from 'vue';
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app';
import useUserStore from './stores/useUserStore';
+import usePageAnimation from './hook/usePageAnimation';
import useDictStore from './stores/useDictStore';
const { $api, navTo, appendScriptTagElement, aes_Decrypt, sm2_Decrypt } = inject('globalFunction');
import config from '@/config.js';
-
+usePageAnimation();
const appword = 'aKd20dbGdFvmuwrt'; // 固定值
onLaunch((options) => {
diff --git a/config.js b/config.js
index 74e3c87..fb1fc56 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/hook/page-animation.css b/hook/page-animation.css
new file mode 100644
index 0000000..7e7fdc1
--- /dev/null
+++ b/hook/page-animation.css
@@ -0,0 +1,30 @@
+/* #ifdef H5 */
+uni-page {
+ opacity: 1;
+ will-change: opacity;
+}
+
+/* --- 进场 (Enter) --- */
+uni-page.animation-enter-from {
+ opacity: 0;
+}
+
+uni-page.animation-enter-active {
+ transition: opacity 0.2s ease-out;
+}
+
+/* --- 离场 (Leave) --- */
+uni-page.animation-leave-active {
+ transition: opacity 0.15s ease-in;
+}
+
+uni-page.animation-leave-to {
+ opacity: 0;
+}
+
+/* --- 稳态 --- */
+uni-page.animation-show {
+ opacity: 1;
+}
+
+/* #endif */
\ No newline at end of file
diff --git a/hook/usePageAnimation.js b/hook/usePageAnimation.js
new file mode 100644
index 0000000..bba7bbc
--- /dev/null
+++ b/hook/usePageAnimation.js
@@ -0,0 +1,66 @@
+import {
+ onLaunch
+} from '@dcloudio/uni-app'
+import {
+ getCurrentInstance
+} from 'vue'
+import './page-animation.css'
+
+const DURATION = 130
+
+export default function usePageAnimation() {
+ // #ifdef H5
+ const show = () => {
+ const page = document.querySelector('uni-page')
+ if (!page) return
+ const cl = page.classList
+
+ cl.add('animation-enter-from')
+ cl.remove('animation-leave-to', 'animation-leave-active')
+
+ requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ cl.remove('animation-enter-from')
+ cl.add('animation-enter-active', 'animation-show')
+
+ setTimeout(() => {
+ cl.remove('animation-enter-active')
+ }, DURATION)
+ })
+ })
+ }
+
+ const hide = (next) => {
+ const page = document.querySelector('uni-page')
+ if (!page) {
+ next()
+ return
+ }
+ const cl = page.classList
+
+ cl.add('animation-leave-active')
+
+ requestAnimationFrame(() => {
+ cl.remove('animation-show')
+ cl.add('animation-leave-to')
+
+ setTimeout(() => {
+ cl.remove('animation-leave-active', 'animation-leave-to')
+ next()
+ }, DURATION - 50)
+ })
+ }
+
+ onLaunch(() => {
+ const instance = getCurrentInstance()
+ const router = instance?.proxy?.$router
+ if (router) {
+ show()
+
+ router.beforeEach((to, from, next) => hide(next))
+
+ router.afterEach(() => show())
+ }
+ })
+ // #endif
+}
\ No newline at end of file
diff --git a/index.html b/index.html
index 2e04e64..3f577f2 100644
--- a/index.html
+++ b/index.html
@@ -18,9 +18,14 @@
-
+
+
+
diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue
index 7af3248..1966189 100644
--- a/packageA/pages/UnitDetails/UnitDetails.vue
+++ b/packageA/pages/UnitDetails/UnitDetails.vue
@@ -93,7 +93,7 @@ const pageOptions = ref({});
const dataType = ref(1); // 1: 原数据, 2: 第三方数据
onLoad((options) => {
- console.log(options);
+ // console.log(options);
dataType.value = options.dataType ? parseInt(options.dataType) : 1;
pageOptions.value = options;
@@ -145,13 +145,13 @@ function getCompanyInfo(...args) {
if (dataType.value === 2) {
// 第三方数据接口
const [companyId, zphId] = args;
- $api.createRequest(`/app/internal/companyThirdPart/${companyId}/${zphId}`).then((resData) => {
+ $api.createRequest(`/app/internal/companyThirdPart/${companyId}/${zphId}`, {}, 'GET', true).then((resData) => {
companyInfo.value = resData.data;
});
} else {
// 原数据接口
const [companyId] = args;
- $api.createRequest(`/app/company/${companyId}`).then((resData) => {
+ $api.createRequest(`/app/company/${companyId}`, {}, 'GET', true).then((resData) => {
companyInfo.value = resData.data;
getJobsList();
});
@@ -184,12 +184,15 @@ function getThirdPartyJobsList(type = 'add') {
pageSize: pageState.pageSize,
};
- $api.createRequest(`/app/internal/jobThirdPart?gsID=${companyId}&gsmc=${companyName}&zphID=${zphId}`, params).then(
- (resData) => {
- const { rows, total } = resData;
- handleJobsListResponse(type, rows, total, 'current');
- }
- );
+ $api.createRequest(
+ `/app/internal/jobThirdPart?gsID=${companyId}&gsmc=${companyName}&zphID=${zphId}`,
+ params,
+ 'GET',
+ true
+ ).then((resData) => {
+ const { rows, total } = resData;
+ handleJobsListResponse(type, rows, total, 'current');
+ });
}
function getOriginalJobsList(type = 'add') {
@@ -206,7 +209,7 @@ function getOriginalJobsList(type = 'add') {
pageSize: pageState.pageSize,
};
- $api.createRequest(`/app/company/job/${companyInfo.value.companyId}`, params).then((resData) => {
+ $api.createRequest(`/app/company/job/${companyInfo.value.companyId}`, params, 'GET', true).then((resData) => {
const { rows, total } = resData;
handleJobsListResponse(type, rows, total, 'page');
});
diff --git a/packageA/pages/newJobPosition/newJobPosition.vue b/packageA/pages/newJobPosition/newJobPosition.vue
index 4536ce0..c6c0b2c 100644
--- a/packageA/pages/newJobPosition/newJobPosition.vue
+++ b/packageA/pages/newJobPosition/newJobPosition.vue
@@ -24,12 +24,11 @@
-
+
@@ -140,6 +139,7 @@ function getList(type = 'add', loading = true) {
height: 100%
.list{
padding: 0 28rpx 28rpx 28rpx
+ height: calc(100% - 28rpx)
}
}
}
diff --git a/packageA/pages/reservation/reservation.vue b/packageA/pages/reservation/reservation.vue
index 31c8dd2..d8302fd 100644
--- a/packageA/pages/reservation/reservation.vue
+++ b/packageA/pages/reservation/reservation.vue
@@ -13,7 +13,7 @@
-
+
-
+
diff --git a/pages/careerfair/careerfair copy.vue b/pages/careerfair/careerfair copy.vue
index 4431345..69f3b55 100644
--- a/pages/careerfair/careerfair copy.vue
+++ b/pages/careerfair/careerfair copy.vue
@@ -37,7 +37,7 @@
-
+
内容简介:{{ item.zphjj }}
-
+
diff --git a/pages/careerfair/careerfair.vue b/pages/careerfair/careerfair.vue
index c5023f1..59ce01f 100644
--- a/pages/careerfair/careerfair.vue
+++ b/pages/careerfair/careerfair.vue
@@ -44,7 +44,7 @@
-
+
内容简介:{{ item.zphjj }}
-
+
diff --git a/pages/chat/components/ai-paging.vue b/pages/chat/components/ai-paging.vue
index 0dc6d79..3db1b13 100644
--- a/pages/chat/components/ai-paging.vue
+++ b/pages/chat/components/ai-paging.vue
@@ -268,10 +268,10 @@ import WaveDisplay from './WaveDisplay.vue';
import FileIcon from './fileIcon.vue';
import FileText from './fileText.vue';
// 系统功能hook和阿里云hook
-// import { useAudioRecorder } from '@/hook/useRealtimeRecorder.js';
-import { useAudioRecorder } from '@/hook/useSystemSpeechReader.js';
-// import { useTTSPlayer } from '@/hook/useTTSPlayer.js';
-import { useTTSPlayer } from '@/hook/useSystemPlayer.js';
+import { useAudioRecorder } from '@/hook/useRealtimeRecorder.js';
+// import { useAudioRecorder } from '@/hook/useSystemSpeechReader.js';
+import { useTTSPlayer } from '@/hook/useTTSPlayer.js';
+// import { useTTSPlayer } from '@/hook/useSystemPlayer.js';
// 全局
const { $api, navTo, throttle } = inject('globalFunction');
const emit = defineEmits(['onConfirm']);
@@ -632,7 +632,7 @@ function readMarkdown(value, index) {
if (isPaused.value) {
resume();
} else {
- console.log(value, speechIndex.value, index, isPaused.value)
+ // console.log(value, speechIndex.value, index, isPaused.value)
speak(value);
}
}
diff --git a/pages/index/components/index-one.vue b/pages/index/components/index-one.vue
index bd3ff74..bb5ac14 100644
--- a/pages/index/components/index-one.vue
+++ b/pages/index/components/index-one.vue
@@ -66,7 +66,7 @@
-
+
-
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 3832ce3..a29060e 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -83,6 +83,13 @@ onLoad(() => {
if (fristEntry) {
uni.hideTabBar();
}
+ // 预加载较重页面
+ setTimeout(() => {
+ uni.preloadPage({ url: '/packageA/pages/post/post' });
+ uni.preloadPage({ url: '/pages/nearby/nearby' });
+ uni.preloadPage({ url: '/pages/chat/chat' });
+ uni.preloadPage({ url: '/packageA/pages/choiceness/choiceness' });
+ }, 3000);
});
onShow(() => {
diff --git a/pages/msglog/read.vue b/pages/msglog/read.vue
index 58d67a9..b187216 100644
--- a/pages/msglog/read.vue
+++ b/pages/msglog/read.vue
@@ -35,6 +35,7 @@
{{ item.subTitle || '消息' }}
+
@@ -83,6 +84,7 @@ defineExpose({ loadData });
}
.scrollmain{
padding: 28rpx
+ height: calc(100% - 56rpx)
}
.read{
diff --git a/pages/msglog/unread.vue b/pages/msglog/unread.vue
index 9181049..b675823 100644
--- a/pages/msglog/unread.vue
+++ b/pages/msglog/unread.vue
@@ -33,6 +33,7 @@
{{ item.subTitle || '消息' }}
+
@@ -69,6 +70,7 @@ defineExpose({ loadData });
}
.scrollmain{
padding: 28rpx
+ height: calc(100% - 56rpx)
}
.read{
diff --git a/pages/nearby/components/four.vue b/pages/nearby/components/four.vue
index 130fc65..b11030d 100644
--- a/pages/nearby/components/four.vue
+++ b/pages/nearby/components/four.vue
@@ -69,13 +69,8 @@
-
-
+
+
@@ -341,15 +336,17 @@ defineExpose({ loadData, handleFilterConfirm });
.nearby-scroll
overflow: hidden;
height: 100%;
+ background: #f4f4f4;
.two-head
- margin: 22rpx;
+ padding: 22rpx;
display: flex;
flex-direction: column
flex-wrap: no-wrap
// grid-template-columns: repeat(4, 1fr);
// grid-column-gap: 10rpx;
// grid-row-gap: 24rpx;
- border-radius: 17rpx 17rpx 17rpx 17rpx;
+ background: #FFFFFF
+ // border-radius: 17rpx 17rpx 17rpx 17rpx;
.head-all{
display: flex;
justify-content: space-between;
diff --git a/pages/nearby/components/one.vue b/pages/nearby/components/one.vue
index 8641473..c3fc9d3 100644
--- a/pages/nearby/components/one.vue
+++ b/pages/nearby/components/one.vue
@@ -74,13 +74,8 @@
-
-
+
+
@@ -365,6 +360,7 @@ defineExpose({ loadData, handleFilterConfirm });
.nearby-scroll
overflow: hidden;
height: 100%;
+ background: #f4f4f4;
.nearby-map
height: 767rpx;
background: #e8e8e8;
diff --git a/pages/nearby/components/three.vue b/pages/nearby/components/three.vue
index 5d2bc68..828ff20 100644
--- a/pages/nearby/components/three.vue
+++ b/pages/nearby/components/three.vue
@@ -95,13 +95,8 @@
-
-
+
+
@@ -359,10 +354,12 @@ defineExpose({ loadData, handleFilterConfirm });
color: #4778EC !important;
.nearby-scroll
overflow: hidden;
+ background: #f4f4f4;
height: 100%
.three-head
// margin: 24rpx 0 0 0;
padding: 26rpx 0 0 0;
+ background: #FFFFFF;
border-radius: 17rpx 17rpx 17rpx 17rpx;
.one-picker
height: 100%
diff --git a/pages/nearby/components/two.vue b/pages/nearby/components/two.vue
index e7b8642..85d4b61 100644
--- a/pages/nearby/components/two.vue
+++ b/pages/nearby/components/two.vue
@@ -65,13 +65,8 @@
-
-
+
+
@@ -256,10 +251,12 @@ defineExpose({ loadData, handleFilterConfirm });
.nearby-scroll
overflow: hidden;
height: 100%;
+ background: #f4f4f4;
.two-head
- margin: 22rpx;
+ padding: 22rpx;
display: flex;
flex-wrap: wrap
+ background: #FFFFFF;
// grid-template-columns: repeat(4, 1fr);
// grid-column-gap: 10rpx;
// grid-row-gap: 24rpx;
diff --git a/utils/request.js b/utils/request.js
index deb722a..fe39634 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -137,10 +137,12 @@ export function createRequest(url, data = {}, method = 'GET', loading = false, h
resolve(resData.data)
return
}
- uni.showToast({
- title: msg,
- icon: 'none'
- })
+ if (msg) {
+ uni.showToast({
+ title: msg,
+ icon: 'none'
+ })
+ }
}
if (resData.data?.code === 401 || resData.data?.code === 402) {
useUserStore().logOut()