ykt-wxapp/App.vue
2026-01-29 10:43:06 +08:00

403 lines
5.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script>
import useAccountStore from "@/store/account.js";
import { globalTimChatManager } from "@/utils/tim-chat.js";
export default {
onLaunch: function () {
// 需在 pinia 安装后再获取 store避免 getActivePinia 报错
const { account, login, initIMAfterLogin } = useAccountStore();
// 如果已有缓存的账户信息,尝试初始化 IM否则重新登录
if (account && account.openid) {
console.log("App Launch: 已有登录信息,初始化 IM");
initIMAfterLogin().catch(err => {
console.error('IM初始化失败:', err);
});
} else {
console.log("App Launch: 无登录信息,开始登录");
login().catch(err => {
console.error('自动登录失败:', err);
});
}
},
onShow: function () {
console.log("App Show");
},
onHide: function () {
console.log("App Hide");
// 小程序退出时退出腾讯IM登录
// try {
// if (globalTimChatManager && globalTimChatManager.tim) {
// console.log('小程序退出开始退出腾讯IM');
// globalTimChatManager.destroy();
// console.log('腾讯IM退出成功');
// }
// } catch (error) {
// console.error('退出腾讯IM失败:', error);
// }
},
};
</script>
<style lang="scss">
$primary-color: #0877F1;
page {
height: 100%;
background: #f5f5f5;
}
/* 全局按钮样式 - 使用项目主题色 */
button[type="primary"],
.button-primary,
uni-button[type="primary"] {
background-color: $primary-color !important;
border-color: $primary-color !important;
color: #fff !important;
}
button[type="primary"]:not([disabled]):active,
.button-primary:active,
uni-button[type="primary"]:not([disabled]):active {
background-color: darken($primary-color, 10%) !important;
border-color: darken($primary-color, 10%) !important;
}
/* 微信小程序按钮样式覆盖 */
.wx-button[type="primary"] {
background-color: $primary-color !important;
border-color: $primary-color !important;
color: #fff !important;
}
.shadow-up {
box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px,
rgba(0, 0, 0, 0.1) 0px -10px 15px -3px, rgba(0, 0, 0, 0.1) 0px -4px 6px -4px;
}
.shadow-lg {
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.relative {
position: relative;
}
.absolute{
position: absolute;
}
.inline-block {
display: inline-block;
}
.flex {
display: flex;
}
.flex-col {
flex-direction: column;
}
.flex-wrap {
flex-wrap: wrap;
}
.flex-grow {
flex-grow: 1;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.items-center {
align-items: center;
}
.justify-center {
justify-content: center;
}
.justify-between {
justify-content: space-between;
}
.justify-around {
justify-content: space-around;
}
.justify-end {
justify-content: flex-end;
}
.bg-gray {
background: #f5f5f5;
}
.bg-primary {
background: $primary-color;
}
.bg-success {
background: green;
}
.bg-white {
background: #fff;
}
.bg-warning {
background: orange;
}
.bg-danger {
background: rgb(248 113 113);
}
.py-5 {
padding-top: 10rpx;
padding-bottom: 10rpx;
}
.p-15 {
padding: 30rpx;
}
.p-10 {
padding: 20rpx;
}
.px-5 {
padding-left: 10rpx;
padding-right: 10rpx;
}
.px-10 {
padding-left: 20rpx;
padding-right: 20rpx;
}
.px-12 {
padding-left: 24rpx;
padding-right: 24rpx;
}
.px-15 {
padding-left: 30rpx;
padding-right: 30rpx;
}
.pt-5 {
padding-top: 10rpx;
}
.pt-15 {
padding-top: 30rpx;
}
.break-all {
word-break: break-all;
}
.pb-5 {
padding-bottom: 10rpx;
}
.pb-10 {
padding-bottom: 20rpx;
}
.py-10 {
padding-top: 20rpx;
padding-bottom: 20rpx;
}
.py-12 {
padding-top: 24rpx;
padding-bottom: 24rpx;
}
.py-15 {
padding-top: 30rpx;
padding-bottom: 30rpx;
}
.mr-5 {
margin-right: 10rpx;
}
.mr-10 {
margin-right: 20rpx;
}
.ml-15 {
margin-left: 30rpx;
}
.mb-5 {
margin-bottom: 10rpx;
}
.mb-10 {
margin-bottom: 20rpx;
}
.mt-10 {
margin-top: 20rpx;
}
.mt-15 {
margin-top: 30rpx;
}
.mt-12 {
margin-top: 24rpx;
}
.mx-10 {
margin-left: 20rpx;
margin-right: 20rpx;
}
.mx-auto {
margin-left: auto;
margin-right: auto;
}
.rounded {
border-radius: 16rpx;
}
.rounded-sm {
border-radius: 8rpx;
}
.rounded-full {
border-radius: 999px;
}
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-gray {
color: #999;
}
.text-black {
color: #000;
}
.text-dark {
color: #333;
}
.text-danger {
color: #f56c6c;
}
.text-primary {
color: $primary-color;
}
.text-success {
color: #67c23a;
}
.text-white {
color: #fff;
}
.text-warning {
color: #f56c6c;
}
.text-sm {
font-size: 24rpx;
}
.text-base {
font-size: 28rpx;
}
.text-lg {
font-size: 32rpx;
}
.text-xl {
font-size: 36rpx;
}
.leading-normal {
line-height: 1.5;
}
.border {
border: 1px solid #eee;
}
.border-dashed {
border: 1px dashed #eee;
}
.border-b {
border-bottom: 1px solid #eee;
}
.border-auto {
border: 1px solid;
}
.border-dashed-auto {
border: 1px dashed;
}
.border-primary {
border: 1px solid $primary-color;
}
.font-semibold {
font-weight: bold;
}
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.w-0 {
width: 0;
}
.w-full {
width: 100%;
}
.overflow-hidden {
overflow: hidden;
}
.border-box {
box-sizing: border-box;
}
.line-clamp-2 {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.h-full {
height: 100%;
}
.safe-bottom-padding {
height: env(safe-area-inset-bottom);
}
</style>