修改UniApp
parent
1dda007263
commit
b11e936518
|
|
@ -7,6 +7,7 @@ import com.yanzhu.framework.security.config.SecurityProperties;
|
||||||
import com.yanzhu.framework.security.core.util.SecurityFrameworkUtils;
|
import com.yanzhu.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import com.yanzhu.module.member.controller.app.auth.vo.*;
|
import com.yanzhu.module.member.controller.app.auth.vo.*;
|
||||||
import com.yanzhu.module.member.convert.auth.AuthConvert;
|
import com.yanzhu.module.member.convert.auth.AuthConvert;
|
||||||
|
import com.yanzhu.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
import com.yanzhu.module.member.service.auth.MemberAuthService;
|
import com.yanzhu.module.member.service.auth.MemberAuthService;
|
||||||
import com.yanzhu.module.system.api.social.SocialClientApi;
|
import com.yanzhu.module.system.api.social.SocialClientApi;
|
||||||
import com.yanzhu.module.system.api.social.dto.SocialWxJsapiSignatureRespDTO;
|
import com.yanzhu.module.system.api.social.dto.SocialWxJsapiSignatureRespDTO;
|
||||||
|
|
@ -26,9 +27,13 @@ import javax.validation.Valid;
|
||||||
import static com.yanzhu.framework.common.pojo.CommonResult.success;
|
import static com.yanzhu.framework.common.pojo.CommonResult.success;
|
||||||
import static com.yanzhu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
import static com.yanzhu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||||
|
|
||||||
|
import com.yanzhu.framework.tenant.core.aop.TenantIgnore;
|
||||||
|
import com.yanzhu.framework.tenant.core.context.TenantContextHolder;
|
||||||
|
|
||||||
@Tag(name = "用户 APP - 认证")
|
@Tag(name = "用户 APP - 认证")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/member/auth")
|
@RequestMapping("/member/auth")
|
||||||
|
@TenantIgnore
|
||||||
@Validated
|
@Validated
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class AppAuthController {
|
public class AppAuthController {
|
||||||
|
|
@ -46,7 +51,20 @@ public class AppAuthController {
|
||||||
@Operation(summary = "使用手机 + 密码登录")
|
@Operation(summary = "使用手机 + 密码登录")
|
||||||
@PermitAll
|
@PermitAll
|
||||||
public CommonResult<AppAuthLoginRespVO> login(@RequestBody @Valid AppAuthLoginReqVO reqVO) {
|
public CommonResult<AppAuthLoginRespVO> login(@RequestBody @Valid AppAuthLoginReqVO reqVO) {
|
||||||
|
// 先设置忽略租户,查询用户时不进行租户过滤
|
||||||
|
TenantContextHolder.setIgnore(true);
|
||||||
|
try {
|
||||||
|
// 先根据手机号查询用户,获取租户ID
|
||||||
|
MemberUserDO user = authService.getUserByMobile(reqVO.getMobile());
|
||||||
|
if (user != null && user.getTenantId() != null) {
|
||||||
|
TenantContextHolder.setTenantId(user.getTenantId());
|
||||||
|
TenantContextHolder.setIgnore(false);
|
||||||
|
}
|
||||||
return success(authService.login(reqVO));
|
return success(authService.login(reqVO));
|
||||||
|
} finally {
|
||||||
|
// 清除上下文
|
||||||
|
TenantContextHolder.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/logout")
|
@PostMapping("/logout")
|
||||||
|
|
@ -75,6 +93,11 @@ public class AppAuthController {
|
||||||
@Operation(summary = "使用手机 + 验证码登录")
|
@Operation(summary = "使用手机 + 验证码登录")
|
||||||
@PermitAll
|
@PermitAll
|
||||||
public CommonResult<AppAuthLoginRespVO> smsLogin(@RequestBody @Valid AppAuthSmsLoginReqVO reqVO) {
|
public CommonResult<AppAuthLoginRespVO> smsLogin(@RequestBody @Valid AppAuthSmsLoginReqVO reqVO) {
|
||||||
|
// 先根据手机号查询用户,获取租户ID
|
||||||
|
MemberUserDO user = authService.getUserByMobile(reqVO.getMobile());
|
||||||
|
if (user != null && user.getTenantId() != null) {
|
||||||
|
TenantContextHolder.setTenantId(user.getTenantId());
|
||||||
|
}
|
||||||
return success(authService.smsLogin(reqVO));
|
return success(authService.smsLogin(reqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,4 +35,7 @@ public class AppAuthLoginRespVO {
|
||||||
@Schema(description = "社交用户 openid", example = "qq768")
|
@Schema(description = "社交用户 openid", example = "qq768")
|
||||||
private String openid;
|
private String openid;
|
||||||
|
|
||||||
|
@Schema(description = "租户编号", example = "1")
|
||||||
|
private Long tenantId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ public class AppMemberUserInfoRespVO {
|
||||||
@Schema(description = "是否成为推广员", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
|
@Schema(description = "是否成为推广员", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
|
||||||
private Boolean brokerageEnabled;
|
private Boolean brokerageEnabled;
|
||||||
|
|
||||||
|
@Schema(description = "租户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "162")
|
||||||
|
private Long tenantId;
|
||||||
|
|
||||||
@Schema(description = "用户 App - 会员等级")
|
@Schema(description = "用户 App - 会员等级")
|
||||||
@Data
|
@Data
|
||||||
public static class Level {
|
public static class Level {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
|
public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
|
||||||
|
|
||||||
|
@com.yanzhu.framework.tenant.core.aop.TenantIgnore
|
||||||
default MemberUserDO selectByMobile(String mobile) {
|
default MemberUserDO selectByMobile(String mobile) {
|
||||||
return selectOne(MemberUserDO::getMobile, mobile);
|
return selectOne(MemberUserDO::getMobile, mobile);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,4 +85,12 @@ public interface MemberAuthService {
|
||||||
*/
|
*/
|
||||||
AppAuthLoginRespVO refreshToken(String refreshToken);
|
AppAuthLoginRespVO refreshToken(String refreshToken);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据手机号获取用户信息
|
||||||
|
*
|
||||||
|
* @param mobile 手机号
|
||||||
|
* @return 用户信息
|
||||||
|
*/
|
||||||
|
com.yanzhu.module.member.dal.dataobject.user.MemberUserDO getUserByMobile(String mobile);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,8 +152,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
||||||
return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, openid);
|
return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, openid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private AppAuthLoginRespVO createTokenAfterLoginSuccess(MemberUserDO user, String mobile,
|
private AppAuthLoginRespVO createTokenAfterLoginSuccess(MemberUserDO user, String mobile, LoginLogTypeEnum logType, String openid) {
|
||||||
LoginLogTypeEnum logType, String openid) {
|
|
||||||
// 插入登陆日志
|
// 插入登陆日志
|
||||||
createLoginLog(user.getId(), mobile, logType, LoginResultEnum.SUCCESS);
|
createLoginLog(user.getId(), mobile, logType, LoginResultEnum.SUCCESS);
|
||||||
// 创建 Token 令牌
|
// 创建 Token 令牌
|
||||||
|
|
@ -161,7 +160,10 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
||||||
.setUserId(user.getId()).setUserType(getUserType().getValue())
|
.setUserId(user.getId()).setUserType(getUserType().getValue())
|
||||||
.setClientId(OAuth2ClientConstants.CLIENT_ID_DEFAULT));
|
.setClientId(OAuth2ClientConstants.CLIENT_ID_DEFAULT));
|
||||||
// 构建返回结果
|
// 构建返回结果
|
||||||
return AuthConvert.INSTANCE.convert(accessTokenRespDTO, openid);
|
AppAuthLoginRespVO respVO = AuthConvert.INSTANCE.convert(accessTokenRespDTO, openid);
|
||||||
|
// 设置租户ID
|
||||||
|
respVO.setTenantId(user.getTenantId());
|
||||||
|
return respVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -257,6 +259,11 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
||||||
return AuthConvert.INSTANCE.convert(accessTokenDO, null);
|
return AuthConvert.INSTANCE.convert(accessTokenDO, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberUserDO getUserByMobile(String mobile) {
|
||||||
|
return userService.getUserByMobile(mobile);
|
||||||
|
}
|
||||||
|
|
||||||
private void createLogoutLog(Long userId) {
|
private void createLogoutLog(Long userId) {
|
||||||
LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO();
|
LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO();
|
||||||
reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType());
|
reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType());
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,13 @@ SHOPRO_VERSION=v2.4.1
|
||||||
|
|
||||||
# 后端接口 - 正式环境(通过 process.env.NODE_ENV 非 development)
|
# 后端接口 - 正式环境(通过 process.env.NODE_ENV 非 development)
|
||||||
#SHOPRO_BASE_URL=http://api-dashboard.yudao.iocoder.cn
|
#SHOPRO_BASE_URL=http://api-dashboard.yudao.iocoder.cn
|
||||||
SHOPRO_BASE_URL=http://127.0.0.1:48080
|
#SHOPRO_BASE_URL=http://127.0.0.1:48080
|
||||||
|
SHOPRO_BASE_URL=
|
||||||
|
#http://62.234.3.186
|
||||||
# 后端接口 - 测试环境(通过 process.env.NODE_ENV = development)
|
# 后端接口 - 测试环境(通过 process.env.NODE_ENV = development)
|
||||||
SHOPRO_DEV_BASE_URL=http://127.0.0.1:48080
|
#SHOPRO_DEV_BASE_URL=http://127.0.0.1:48080
|
||||||
|
SHOPRO_DEV_BASE_URL=
|
||||||
|
#http://62.234.3.186
|
||||||
### SHOPRO_DEV_BASE_URL=http://10.171.1.188:48080
|
### SHOPRO_DEV_BASE_URL=http://10.171.1.188:48080
|
||||||
### SHOPRO_DEV_BASE_URL = http://yunai.natapp1.cc
|
### SHOPRO_DEV_BASE_URL = http://yunai.natapp1.cc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,11 +89,12 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dayjs": "^1.11.7",
|
"dayjs": "^1.11.7",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.23",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"luch-request": "^3.0.8",
|
"luch-request": "^3.0.8",
|
||||||
"pinia": "^2.0.33",
|
"pinia": "^2.0.33",
|
||||||
"pinia-plugin-persist-uni": "^1.2.0",
|
"pinia-plugin-persist-uni": "^1.2.0",
|
||||||
|
"vue": "^3.5.11",
|
||||||
"weixin-js-sdk": "^1.6.0"
|
"weixin-js-sdk": "^1.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
width: 64rpx;
|
width: 64rpx;
|
||||||
height: 12rpx;
|
height: 88rpx;
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
90deg,
|
90deg,
|
||||||
var(--ui-BG-Main-gradient),
|
var(--ui-BG-Main-gradient),
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
||||||
import { onLoad, onShow, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app';
|
import { onLoad, onShow, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app';
|
||||||
import sheep from '@/sheep';
|
import sheep from '@/sheep';
|
||||||
import $share from '@/sheep/platform/share';
|
import $share from '@/sheep/platform/share';
|
||||||
|
import { showAuthModal } from '@/sheep/hooks/useModal';
|
||||||
|
import $store from '@/sheep/store';
|
||||||
// 隐藏原生tabBar
|
// 隐藏原生tabBar
|
||||||
uni.hideTabBar({
|
uni.hideTabBar({
|
||||||
fail: () => {},
|
fail: () => {},
|
||||||
|
|
@ -91,6 +93,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
|
// 检查登录状态
|
||||||
|
const userStore = $store('user');
|
||||||
|
if (!userStore.isLogin) {
|
||||||
|
showAuthModal('smsLogin');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 下拉刷新
|
// 下拉刷新
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { baseUrl, apiPath, tenantId } from '@/sheep/config';
|
import { baseUrl, apiPath } from '@/sheep/config';
|
||||||
|
import { getTenantId } from '@/sheep/request';
|
||||||
import request, { getAccessToken } from '@/sheep/request';
|
import request, { getAccessToken } from '@/sheep/request';
|
||||||
|
|
||||||
const FileApi = {
|
const FileApi = {
|
||||||
|
|
@ -14,7 +15,7 @@ const FileApi = {
|
||||||
name: 'file',
|
name: 'file',
|
||||||
header: {
|
header: {
|
||||||
Accept: '*/*',
|
Accept: '*/*',
|
||||||
'tenant-id': tenantId,
|
'tenant-id': getTenantId(),
|
||||||
Authorization: 'Bearer ' + getAccessToken(),
|
Authorization: 'Bearer ' + getAccessToken(),
|
||||||
},
|
},
|
||||||
formData: {
|
formData: {
|
||||||
|
|
|
||||||
|
|
@ -83,12 +83,16 @@
|
||||||
.login-btn-start {
|
.login-btn-start {
|
||||||
width: 158rpx;
|
width: 158rpx;
|
||||||
height: 56rpx;
|
height: 56rpx;
|
||||||
line-height: normal;
|
line-height: 56rpx;
|
||||||
background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
|
background: linear-gradient(90deg, var(--ui-BG-Main, #409eff), var(--ui-BG-Main-gradient, #66b1ff)) !important;
|
||||||
border-radius: 28rpx;
|
border-radius: 28rpx;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #fff;
|
color: #fff !important;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.type-btn {
|
.type-btn {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 规格弹窗 -->
|
<!-- 规格弹窗 -->
|
||||||
<su-popup :show="authType !== ''" round="10" :showClose="true" @close="closeAuthModal">
|
<su-popup :show="authType !== ''" round="10" :showClose="userStore.isLogin" :isMaskClick="userStore.isLogin" @close="closeAuthModal">
|
||||||
<view class="login-wrap">
|
<view class="login-wrap">
|
||||||
<!-- 1. 账号密码登录 accountLogin -->
|
<!-- 1. 账号密码登录 accountLogin -->
|
||||||
<account-login
|
<account-login
|
||||||
|
|
@ -93,14 +93,13 @@
|
||||||
:class="{ shake: currentProtocol }"
|
:class="{ shake: currentProtocol }"
|
||||||
>
|
>
|
||||||
<view class="agreement-title ss-m-b-20">请选择是否同意以下协议(请联网查看):</view>
|
<view class="agreement-title ss-m-b-20">请选择是否同意以下协议(请联网查看):</view>
|
||||||
|
|
||||||
<view class="agreement-options-container">
|
<view class="agreement-options-container">
|
||||||
<!-- 同意选项 -->
|
<!-- 同意选项 -->
|
||||||
<view class="agreement-option ss-m-b-20">
|
<view class="agreement-option ss-m-b-20">
|
||||||
<view class="radio ss-flex ss-col-center" @tap="onAgree">
|
<view class="radio ss-flex ss-col-center">
|
||||||
<radio
|
<radio
|
||||||
:checked="state.protocol === true"
|
:checked="state.protocol == true"
|
||||||
color="var(--ui-BG-Main)"
|
color="#ff4d4f"
|
||||||
style="transform: scale(0.8)"
|
style="transform: scale(0.8)"
|
||||||
@tap.stop="onAgree"
|
@tap.stop="onAgree"
|
||||||
/>
|
/>
|
||||||
|
|
@ -115,7 +114,7 @@
|
||||||
|
|
||||||
<!-- 拒绝选项 -->
|
<!-- 拒绝选项 -->
|
||||||
<view class="agreement-option">
|
<view class="agreement-option">
|
||||||
<view class="radio ss-flex ss-col-center" @tap="onRefuse">
|
<view class="radio ss-flex ss-col-center">
|
||||||
<radio
|
<radio
|
||||||
:checked="state.protocol === false"
|
:checked="state.protocol === false"
|
||||||
color="#ff4d4f"
|
color="#ff4d4f"
|
||||||
|
|
@ -147,13 +146,15 @@
|
||||||
import changePassword from './components/change-password.vue';
|
import changePassword from './components/change-password.vue';
|
||||||
import mpAuthorization from './components/mp-authorization.vue';
|
import mpAuthorization from './components/mp-authorization.vue';
|
||||||
import { closeAuthModal, showAuthModal } from '@/sheep/hooks/useModal';
|
import { closeAuthModal, showAuthModal } from '@/sheep/hooks/useModal';
|
||||||
|
import $store from '@/sheep/store';
|
||||||
|
|
||||||
const modalStore = sheep.$store('modal');
|
const modalStore = sheep.$store('modal');
|
||||||
|
const userStore = $store('user');
|
||||||
// 授权弹窗类型
|
// 授权弹窗类型
|
||||||
const authType = computed(() => modalStore.auth);
|
const authType = computed(() => modalStore.auth);
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
protocol: null, // null表示未选择,true表示同意,false表示拒绝
|
protocol: false, // false表示未选择,true表示同意
|
||||||
});
|
});
|
||||||
|
|
||||||
const currentProtocol = ref(false);
|
const currentProtocol = ref(false);
|
||||||
|
|
@ -170,7 +171,9 @@
|
||||||
|
|
||||||
// 查看协议
|
// 查看协议
|
||||||
function onProtocol(title) {
|
function onProtocol(title) {
|
||||||
|
if (userStore.isLogin) {
|
||||||
closeAuthModal();
|
closeAuthModal();
|
||||||
|
}
|
||||||
sheep.$router.go('/pages/public/richtext', {
|
sheep.$router.go('/pages/public/richtext', {
|
||||||
title,
|
title,
|
||||||
});
|
});
|
||||||
|
|
@ -192,11 +195,7 @@
|
||||||
currentProtocol.value = false;
|
currentProtocol.value = false;
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
if (state.protocol === false) {
|
sheep.$helper.toast('请选择同意协议后继续');
|
||||||
sheep.$helper.toast('您已拒绝协议,无法继续登录');
|
|
||||||
} else {
|
|
||||||
sheep.$helper.toast('请选择是否同意协议');
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const loginRes = await sheep.$platform.useProvider(provider).login();
|
const loginRes = await sheep.$platform.useProvider(provider).login();
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Request from 'luch-request';
|
import Request from 'luch-request';
|
||||||
import { apiPath, baseUrl, tenantId } from '@/sheep/config';
|
import { apiPath, baseUrl } from '@/sheep/config';
|
||||||
import $store from '@/sheep/store';
|
import $store from '@/sheep/store';
|
||||||
import $platform from '@/sheep/platform';
|
import $platform from '@/sheep/platform';
|
||||||
import { showAuthModal } from '@/sheep/hooks/useModal';
|
import { showAuthModal } from '@/sheep/hooks/useModal';
|
||||||
|
|
@ -98,7 +98,9 @@ http.interceptors.request.use(
|
||||||
config.header['terminal'] = getTerminal();
|
config.header['terminal'] = getTerminal();
|
||||||
|
|
||||||
config.header['Accept'] = '*/*';
|
config.header['Accept'] = '*/*';
|
||||||
config.header['tenant-id'] = getTenantId();
|
const tenantId = getTenantId();
|
||||||
|
config.header['tenant-id'] = tenantId;
|
||||||
|
console.log('请求头中的租户ID:', tenantId);
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
|
|
@ -114,6 +116,10 @@ http.interceptors.response.use(
|
||||||
// 约定:如果是 /auth/ 下的 URL 地址,并且返回了 accessToken 说明是登录相关的接口,则自动设置登陆令牌
|
// 约定:如果是 /auth/ 下的 URL 地址,并且返回了 accessToken 说明是登录相关的接口,则自动设置登陆令牌
|
||||||
if (response.config.url.indexOf('/member/auth/') >= 0 && response.data?.data?.accessToken) {
|
if (response.config.url.indexOf('/member/auth/') >= 0 && response.data?.data?.accessToken) {
|
||||||
$store('user').setToken(response.data.data.accessToken, response.data.data.refreshToken);
|
$store('user').setToken(response.data.data.accessToken, response.data.data.refreshToken);
|
||||||
|
// 存储租户ID
|
||||||
|
if (response.data.data.tenantId) {
|
||||||
|
uni.setStorageSync('tenant-id', response.data.data.tenantId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 自定处理【loading 加载中】:如果需要显示 loading,则关闭 loading
|
// 自定处理【loading 加载中】:如果需要显示 loading,则关闭 loading
|
||||||
|
|
@ -300,7 +306,7 @@ export const getRefreshToken = () => {
|
||||||
|
|
||||||
/** 获得租户编号 */
|
/** 获得租户编号 */
|
||||||
export const getTenantId = () => {
|
export const getTenantId = () => {
|
||||||
return uni.getStorageSync('tenant-id') || tenantId;
|
return uni.getStorageSync('tenant-id');
|
||||||
};
|
};
|
||||||
|
|
||||||
const request = (config) => {
|
const request = (config) => {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,10 @@ const user = defineStore({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.userInfo = data;
|
this.userInfo = data;
|
||||||
|
// 存储租户ID
|
||||||
|
if (data.tenantId) {
|
||||||
|
uni.setStorageSync('tenant-id', data.tenantId);
|
||||||
|
}
|
||||||
return Promise.resolve(data);
|
return Promise.resolve(data);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -86,6 +90,7 @@ const user = defineStore({
|
||||||
this.isLogin = false;
|
this.isLogin = false;
|
||||||
uni.removeStorageSync('token');
|
uni.removeStorageSync('token');
|
||||||
uni.removeStorageSync('refresh-token');
|
uni.removeStorageSync('refresh-token');
|
||||||
|
uni.removeStorageSync('tenant-id');
|
||||||
} else {
|
} else {
|
||||||
this.isLogin = true;
|
this.isLogin = true;
|
||||||
uni.setStorageSync('token', token);
|
uni.setStorageSync('token', token);
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,14 @@ export default (command, mode) => {
|
||||||
hmr: {
|
hmr: {
|
||||||
overlay: true,
|
overlay: true,
|
||||||
},
|
},
|
||||||
|
proxy: {
|
||||||
|
'/app-api': {
|
||||||
|
target: 'http://localhost:48080/',//'http://62.234.3.186/',
|
||||||
|
//target: 'http://62.234.3.186/',
|
||||||
|
ws: false,
|
||||||
|
changeOrigin: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,267 @@
|
||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
"@babel/helper-string-parser@^7.27.1":
|
||||||
|
version "7.27.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
|
||||||
|
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.28.5":
|
||||||
|
version "7.28.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
|
||||||
|
integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
|
||||||
|
|
||||||
|
"@babel/parser@^7.28.5":
|
||||||
|
version "7.29.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
|
||||||
|
integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.29.0"
|
||||||
|
|
||||||
|
"@babel/runtime@^7.17.2":
|
||||||
|
version "7.28.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b"
|
||||||
|
integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==
|
||||||
|
|
||||||
|
"@babel/types@^7.29.0":
|
||||||
|
version "7.29.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
|
||||||
|
integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-string-parser" "^7.27.1"
|
||||||
|
"@babel/helper-validator-identifier" "^7.28.5"
|
||||||
|
|
||||||
|
"@dcloudio/types@^2.0.16":
|
||||||
|
version "2.6.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/@dcloudio/types/-/types-2.6.12.tgz#6c9559b9e65483f355dd61cb88fe8c14c8e61189"
|
||||||
|
integrity sha512-mrCMwcINy1IFjU9VUqLeWBkj404yWs5paLDttBcA+eqUjanuUQbBcTVPqlrGgkyzLXDcV2oDDZRSNxNpXi4kMQ==
|
||||||
|
|
||||||
|
"@jridgewell/sourcemap-codec@^1.5.5":
|
||||||
|
version "1.5.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
|
||||||
|
integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
|
||||||
|
|
||||||
|
"@vue/compiler-core@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.27.tgz#ce4402428e26095586eb889c41f6e172eb3960bd"
|
||||||
|
integrity sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.28.5"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
entities "^7.0.0"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
|
"@vue/compiler-dom@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz#32b2bc87f0a652c253986796ace0ed6213093af8"
|
||||||
|
integrity sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-core" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
"@vue/compiler-sfc@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz#84651b8816bf8e7d6e62fddd14db86efd6d6f1b6"
|
||||||
|
integrity sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.28.5"
|
||||||
|
"@vue/compiler-core" "3.5.27"
|
||||||
|
"@vue/compiler-dom" "3.5.27"
|
||||||
|
"@vue/compiler-ssr" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
estree-walker "^2.0.2"
|
||||||
|
magic-string "^0.30.21"
|
||||||
|
postcss "^8.5.6"
|
||||||
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
|
"@vue/compiler-ssr@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz#b480cad09dacf8f3d9c82b9843402f1a803baee7"
|
||||||
|
integrity sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
"@vue/devtools-api@^6.6.3":
|
||||||
|
version "6.6.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
|
||||||
|
integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
|
||||||
|
|
||||||
|
"@vue/reactivity@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.27.tgz#d870557de1389a27b8abcb7cbfa30978dc69a000"
|
||||||
|
integrity sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==
|
||||||
|
dependencies:
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
"@vue/runtime-core@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.27.tgz#bb43744ed070166c7d581b849ac22b71a9ccf127"
|
||||||
|
integrity sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==
|
||||||
|
dependencies:
|
||||||
|
"@vue/reactivity" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
"@vue/runtime-dom@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.27.tgz#392513252c7ca7e5277240fdc70b8093449127f5"
|
||||||
|
integrity sha512-/QnLslQgYqSJ5aUmb5F0z0caZPGHRB8LEAQ1s81vHFM5CBfnun63rxhvE/scVb/j3TbBuoZwkJyiLCkBluMpeg==
|
||||||
|
dependencies:
|
||||||
|
"@vue/reactivity" "3.5.27"
|
||||||
|
"@vue/runtime-core" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
csstype "^3.2.3"
|
||||||
|
|
||||||
|
"@vue/server-renderer@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.27.tgz#8137d0d7ec3b59d5992bb04c553775d209dddba7"
|
||||||
|
integrity sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-ssr" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
"@vue/shared@3.5.27":
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.27.tgz#33a63143d8fb9ca1b3efbc7ecf9bd0ab05f7e06e"
|
||||||
|
integrity sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ==
|
||||||
|
|
||||||
|
copy-text-to-clipboard@^3.0.1:
|
||||||
|
version "3.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.2.tgz#99bc79db3f2d355ec33a08d573aff6804491ddb9"
|
||||||
|
integrity sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==
|
||||||
|
|
||||||
|
core-js@^3.11.0:
|
||||||
|
version "3.48.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.48.0.tgz#1f813220a47bbf0e667e3885c36cd6f0593bf14d"
|
||||||
|
integrity sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==
|
||||||
|
|
||||||
|
csstype@^3.2.3:
|
||||||
|
version "3.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
|
||||||
|
integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
|
||||||
|
|
||||||
|
dayjs@^1.11.7:
|
||||||
|
version "1.11.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.19.tgz#15dc98e854bb43917f12021806af897c58ae2938"
|
||||||
|
integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==
|
||||||
|
|
||||||
|
entities@^7.0.0:
|
||||||
|
version "7.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b"
|
||||||
|
integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==
|
||||||
|
|
||||||
|
estree-walker@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
|
lodash-es@^4.17.21:
|
||||||
|
version "4.17.23"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.23.tgz#58c4360fd1b5d33afc6c0bbd3d1149349b1138e0"
|
||||||
|
integrity sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==
|
||||||
|
|
||||||
|
lodash@^4.17.23:
|
||||||
|
version "4.17.23"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a"
|
||||||
|
integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==
|
||||||
|
|
||||||
|
luch-request@^3.0.8:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/luch-request/-/luch-request-3.1.1.tgz#a62b0aab54c5acd9da5b5fd0564ed2cdb8af9c2f"
|
||||||
|
integrity sha512-p7+mlcEtgRcd0OfXC4XZbyiwSr1XgCeqNT7LlVUjnk7InYl/8d5Rk7BUqAYNA2WRafI1wRIUQWRWZRpeUwWR0w==
|
||||||
|
dependencies:
|
||||||
|
"@dcloudio/types" "^2.0.16"
|
||||||
|
|
||||||
|
magic-string@^0.30.21:
|
||||||
|
version "0.30.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91"
|
||||||
|
integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==
|
||||||
|
dependencies:
|
||||||
|
"@jridgewell/sourcemap-codec" "^1.5.5"
|
||||||
|
|
||||||
|
mutation-observer@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0"
|
||||||
|
integrity sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==
|
||||||
|
|
||||||
|
nanoid@^3.3.11:
|
||||||
|
version "3.3.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
|
||||||
|
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
|
||||||
|
|
||||||
|
picocolors@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
||||||
|
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
||||||
|
|
||||||
|
pinia-plugin-persist-uni@^1.2.0:
|
||||||
|
version "1.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/pinia-plugin-persist-uni/-/pinia-plugin-persist-uni-1.3.2.tgz#bff4621be537eec1f545a621e6113a01b45a4866"
|
||||||
|
integrity sha512-Z47MWlAI3dnm9xENwodYyT6B3TMDuwFK7MHHymwQyrTchuhG2Yu26w7bYlIap7df0fCwNCmAo0n7n1RK3Ute+w==
|
||||||
|
dependencies:
|
||||||
|
vue-demi "^0.12.1"
|
||||||
|
|
||||||
|
pinia@^2.0.33:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94"
|
||||||
|
integrity sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==
|
||||||
|
dependencies:
|
||||||
|
"@vue/devtools-api" "^6.6.3"
|
||||||
|
vue-demi "^0.14.10"
|
||||||
|
|
||||||
|
postcss@^8.5.6:
|
||||||
|
version "8.5.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
|
||||||
|
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
|
||||||
|
dependencies:
|
||||||
|
nanoid "^3.3.11"
|
||||||
|
picocolors "^1.1.1"
|
||||||
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
|
prettier@^2.8.7:
|
||||||
|
version "2.8.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
|
||||||
|
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
|
||||||
|
|
||||||
|
source-map-js@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||||
|
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||||
|
|
||||||
|
vconsole@^3.15.0:
|
||||||
|
version "3.15.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vconsole/-/vconsole-3.15.1.tgz#569a8ab15f353259527bbcf004f02946b4482cff"
|
||||||
|
integrity sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.17.2"
|
||||||
|
copy-text-to-clipboard "^3.0.1"
|
||||||
|
core-js "^3.11.0"
|
||||||
|
mutation-observer "^1.0.3"
|
||||||
|
|
||||||
|
vue-demi@^0.12.1:
|
||||||
|
version "0.12.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1"
|
||||||
|
integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==
|
||||||
|
|
||||||
|
vue-demi@^0.14.10:
|
||||||
|
version "0.14.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
|
||||||
|
integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
|
||||||
|
|
||||||
|
vue@^3.5.11:
|
||||||
|
version "3.5.27"
|
||||||
|
resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.27.tgz#e55fd941b614459ab2228489bc19d1692e05876c"
|
||||||
|
integrity sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-dom" "3.5.27"
|
||||||
|
"@vue/compiler-sfc" "3.5.27"
|
||||||
|
"@vue/runtime-dom" "3.5.27"
|
||||||
|
"@vue/server-renderer" "3.5.27"
|
||||||
|
"@vue/shared" "3.5.27"
|
||||||
|
|
||||||
|
weixin-js-sdk@^1.6.0:
|
||||||
|
version "1.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz#01fe5220b91dbfe089fc0730d061be0e68271e6a"
|
||||||
|
integrity sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ==
|
||||||
Loading…
Reference in New Issue