hookehuyr

✨ feat: 修复keepAlive页面返回在微信中适配问题

......@@ -60,8 +60,6 @@ export default {
if (res.data.code === 1) {
this.detail[`is_${type}`] = res.data.data[`is_${type}`];
this.detail[`${type}_num`] = res.data.data[`${type}_num`];
// 传回数据
this.$emit('on-click', this.detail);
} else {
// tslint:disable-next-line: no-console
console.warn(res);
......
......@@ -92,6 +92,8 @@ export default {
]
})
this.detail = _.cloneDeep(this.item);
// 传回数据
this.$emit('on-click', this.detail);
var video = mp.video();
// 监听原生video事件
var _this = this;
......
......@@ -7,7 +7,8 @@ export const mainStore = defineStore('main', {
count: 0,
auth: false,
comment_num: 0,
video_detail: {}
video_detail: {},
scrollTop: 0,
};
},
getters: {},
......@@ -20,6 +21,9 @@ export const mainStore = defineStore('main', {
},
changeVideoDetail (v) {
this.video_detail = v;
}
},
changeScrollTop (v) {
this.scrollTop = v;
},
},
});
......
......@@ -122,6 +122,8 @@ import axios from '@/utils/axios';
import $ from 'jquery'
import _ from 'lodash'
import { Toast } from 'vant';
import { wxInfo } from '@/utils/tools';
const $route = useRoute();
const $router = useRouter();
......@@ -265,6 +267,21 @@ onActivated(() => { // keepAlive 重置后执行回调
})
// 触发更新
prod_list.value = arr.value;
/**
* 判断微信环境
*/
if (wxInfo().isiOS || wxInfo().isAndroid) {
// TODO: 手机微信浏览器位置变动了,需要手动调整位置,但是无刷新是起作用的
const { scrollTop } = storeToRefs(store);
if (scrollTop.value) {
$("html,body").animate({ "scrollTop": scrollTop.value })
}
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
});
}
});
const changeRouterKeepAlive = (path, keepAlive) => {
......@@ -287,6 +304,7 @@ onBeforeRouteLeave((to, from) => {
})
/*********************************************************/
</script>
<script>
......@@ -296,9 +314,27 @@ export default {
mixins: [mixin.init],
data() {
return {
scrollTop: ''
}
},
created() {
mounted() {
// 监听滚动恢复
// this.$nextTick(() => {
// let top = localStorage.getItem('scrollPosTop') ? Number(localStorage.getItem('scrollPosTop')) : 0;
// $("html,body").animate({ "scrollTop": top })
// })
// setTimeout(() => {
// // let top = localStorage.getItem('scrollPosTop') ? Number(localStorage.getItem('scrollPosTop')) : 0;
// let top = Cookies.get('scrollPosTop') ? Number(Cookies.get('scrollPosTop')) : 0;
// $("html,body").animate({ "scrollTop": top })
// }, 1000)
// window.addEventListener('scroll',()=>{
// if (window.scrollY) {
// this.scrollTop = window.scrollY
// }
// localStorage.setItem('scrollPosTop', this.scrollTop)
// Cookies.set(scrollPosTop, this.scrollTop)
// })
},
methods: {
}
......
......@@ -58,21 +58,25 @@ import { storeToRefs } from 'pinia'
import VideoCard from '@/components/VideoCard/index.vue'
import { ref, onActivated } from 'vue'
import { ref, onActivated, onMounted } from 'vue'
import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router'
import axios from '@/utils/axios';
import _ from 'lodash';
import $ from 'jquery';
import { Toast } from 'vant';
const $route = useRoute();
const $router = useRouter();
// 获取表演者信息
const userInfo = ref({})
axios.get('/srv/?a=perf_info', {
const store = mainStore();
const userInfo = ref({});
onMounted(() => {
// 获取表演者信息
axios.get('/srv/?a=perf_info', {
params: {
perf_id: $route.query.perf_id
}
})
})
.then(res => {
if (res.data.code === 1) {
_.each(res.data.data.prod, (item) => {
......@@ -90,6 +94,7 @@ axios.get('/srv/?a=perf_info', {
.catch(err => {
console.error(err);
});
})
// 关注个人用户
const followUser = (status) => {
......@@ -122,8 +127,8 @@ const followUser = (status) => {
onActivated(() => { // keepAlive 重置后执行回调
// TAG: pinia应用,动态刷新数据
// 处理数据未刷新数据显示问题
const store = mainStore()
// 处理数据未刷新数据显示问题
// Pinia 解构方法:storeToRefs
const { video_detail } = storeToRefs(store);
// 如果作品信息有变化及时修正
......
......@@ -31,8 +31,6 @@
</van-col>
</van-row>
</div>
</div>
</template>
......@@ -50,12 +48,15 @@ const $route = useRoute();
const $router = useRouter();
const getUserInfo = () => {
// 从个人头像进入的,不能再往下级进入
if (!$route.query.path) {
$router.push({
path: '/client/personIndex',
query: {
perf_id: videoInfo.value.perf_id
}
})
}
}
const active = ref(0); // index 0 为简介,1 为留言
......@@ -110,7 +111,7 @@ onMounted(() => {
})
.catch(err => {
console.error(err);
})
});
})
const onVideoDetail = (v) => {
......