feat: 未登录时,跳转到单独的登录页

This commit is contained in:
杨鹏
2025-09-08 16:15:45 +08:00
parent 48811b88dc
commit bfa57367dc
12 changed files with 54 additions and 73 deletions
+2 -1
View File
@@ -5,7 +5,8 @@ SHOPRO_VERSION=v2.4.1
SHOPRO_BASE_URL=http://api-dashboard.yudao.iocoder.cn SHOPRO_BASE_URL=http://api-dashboard.yudao.iocoder.cn
# 后端接口 - 测试环境(通过 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://114.215.197.144:8080
# SHOPRO_DEV_BASE_URL=http://127.0.0.1:48080
### 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
-56
View File
@@ -1,56 +0,0 @@
**严肃声明:现在、未来都不会有商业版本,所有代码全部开源!!**
**「我喜欢写代码,乐此不疲」**
**「我喜欢做开源,以此为乐」**
我 🐶 在上海艰苦奋斗,早中晚在 top3 大厂认真搬砖,夜里为开源做贡献。
如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。
## 🐶 新手必读
* 演示地址:<https://doc.iocoder.cn/mall-preview/>
* 启动文档:<https://doc.iocoder.cn/quick-start/>
* 视频教程:<https://doc.iocoder.cn/video/>
## 🐯 商城简介
**芋道商城**,基于 [芋道开发平台](https://github.com/YunaiV/ruoyi-vue-pro) 构建,以开发者为中心,打造中国第一流的 Java 开源商城系统,全部开源,个人与企业可 100% 免费使用。
> 有任何问题,或者想要的功能,可以在 Issues 中提给艿艿。
>
> 😜 给项目点点 Star 吧,这对我们真的很重要!
![功能图](/.image/common/mall-feature.png)
* 基于 uni-app + Vue3 开发,支持微信小程序、微信公众号、H5 移动端,未来会支持支付宝小程序、抖音小程序等
* 支持 SaaS 多租户,可满足商品、订单、支付、会员、优惠券、秒杀、拼团、砍价、分销、积分等多种经营需求
## 🔥 后端架构
支持 Spring Boot、Spring Cloud 两种架构:
① Spring Boot 单体架构:<https://doc.iocoder.cn>
![架构图](/.image/common/ruoyi-vue-pro-architecture.png)
② Spring Cloud 微服务架构:<https://cloud.iocoder.cn>
![架构图](/.image/common/yudao-cloud-architecture.png)
## 🐱 移动端预览
![移动端预览](/.image/common/mall-preview.png)
## 🐶 管理端预览
![店铺装修](/.image/mall/店铺装修.png)
![会员详情](/.image/mall/会员详情.png)
![商品详情](/.image/mall/商品详情.png)
![订单详情](/.image/mall/订单详情.png)
![营销中心](/.image/mall/营销中心.png)
+2 -2
View File
@@ -1,5 +1,5 @@
{ {
"name": "芋道商城", "name": "商城",
"appid": "__UNI__460BC4C", "appid": "__UNI__460BC4C",
"description": "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。", "description": "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
"versionName": "2025.09", "versionName": "2025.09",
@@ -223,7 +223,7 @@
"async": { "async": {
"timeout": 20000 "timeout": 20000
}, },
"title": "芋道商城", "title": "商城",
"optimization": { "optimization": {
"treeShaking": { "treeShaking": {
"enable": true "enable": true
+2 -2
View File
@@ -1,9 +1,9 @@
{ {
"id": "shopro", "id": "shopro",
"name": "shopro", "name": "shopro",
"displayName": "芋道商城", "displayName": "商城",
"version": "2025.09", "version": "2025.09",
"description": "芋道商城,一套代码,同时发行到iOS、Android、H5、微信小程序多个平台,请使用手机扫码快速体验强大功能", "description": "商城,一套代码,同时发行到iOS、Android、H5、微信小程序多个平台,请使用手机扫码快速体验强大功能",
"scripts": { "scripts": {
"prettier": "prettier --write \"{pages,sheep}/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"" "prettier": "prettier --write \"{pages,sheep}/**/*.{js,json,tsx,css,less,scss,vue,html,md}\""
}, },
+7 -1
View File
@@ -82,6 +82,12 @@
"title": "自定义页面", "title": "自定义页面",
"group": "商城" "group": "商城"
} }
},
{
"path": "pages/login/index",
"style": {
"navigationBarTitleText": "登录"
}
} }
], ],
"subPackages": [{ "subPackages": [{
@@ -672,7 +678,7 @@
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "芋道商城", "navigationBarTitleText": "商城",
"navigationBarBackgroundColor": "#FFFFFF", "navigationBarBackgroundColor": "#FFFFFF",
"backgroundColor": "#FFFFFF", "backgroundColor": "#FFFFFF",
"navigationStyle": "custom" "navigationStyle": "custom"
+7
View File
@@ -0,0 +1,7 @@
<template>
<view> 登录 </view>
</template>
<script setup></script>
<style lang="scss" scoped></style>
@@ -62,7 +62,15 @@
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
<button v-if="!isLogin" class="ss-reset-button type-btn" @tap="showAuthModal('accountLogin')"> <button
v-if="!isLogin"
class="ss-reset-button type-btn"
@tap="
() => {
sheep.$router.go('/pages/login/index', {}, { redirect: true });
}
"
>
返回登录 返回登录
</button> </button>
</view> </view>
@@ -110,7 +118,7 @@
return; return;
} }
// 成功后,用户重新登录 // 成功后,用户重新登录
showAuthModal('accountLogin') sheep.$router.go('/pages/login/index', {}, { redirect: true });
}; };
</script> </script>
@@ -3,7 +3,10 @@
<view> <view>
<su-popup :show="state.showShareGuide" :showClose="false" @close="onCloseGuide" /> <su-popup :show="state.showShareGuide" :showClose="false" @close="onCloseGuide" />
<view v-if="state.showShareGuide" class="guide-wrap"> <view v-if="state.showShareGuide" class="guide-wrap">
<image class="guide-image" :src="sheep.$url.static('/static/img/shop/share/share_guide.png')" /> <image
class="guide-image"
:src="sheep.$url.static('/static/img/shop/share/share_guide.png')"
/>
</view> </view>
<su-popup :show="show" round="10" :showClose="false" @close="closeShareModal"> <su-popup :show="show" round="10" :showClose="false" @close="closeShareModal">
@@ -17,7 +20,11 @@
open-type="share" open-type="share"
@tap="onShareByForward" @tap="onShareByForward"
> >
<image class="share-img" :src="sheep.$url.static('/static/img/shop/share/share_wx.png')" mode="" /> <image
class="share-img"
:src="sheep.$url.static('/static/img/shop/share/share_wx.png')"
mode=""
/>
<text class="share-title">微信好友</text> <text class="share-title">微信好友</text>
</button> </button>
@@ -41,7 +48,11 @@
class="share-item share-btn ss-flex-col ss-col-center" class="share-item share-btn ss-flex-col ss-col-center"
@tap="onShareByCopyLink" @tap="onShareByCopyLink"
> >
<image class="share-img" :src="sheep.$url.static('/static/img/shop/share/share_link.png')" mode="" /> <image
class="share-img"
:src="sheep.$url.static('/static/img/shop/share/share_link.png')"
mode=""
/>
<text class="share-title">复制链接</text> <text class="share-title">复制链接</text>
</button> </button>
</view> </view>
@@ -89,7 +100,8 @@
const onShareByPoster = () => { const onShareByPoster = () => {
closeShareModal(); closeShareModal();
if (!sheep.$store('user').isLogin) { if (!sheep.$store('user').isLogin) {
showAuthModal(); // showAuthModal();
sheep.$router.go('/pages/login/index', {}, { redirect: true });
return; return;
} }
unref(SharePosterRef).getPoster(); unref(SharePosterRef).getPoster();
+1 -1
View File
@@ -12,7 +12,7 @@ if (process.env.NODE_ENV === 'development') {
if (typeof baseUrl === 'undefined') { if (typeof baseUrl === 'undefined') {
console.error('请检查.env配置文件是否存在'); console.error('请检查.env配置文件是否存在');
} else { } else {
console.log(`[芋道商城 ${version}] https://doc.iocoder.cn`);
} }
export const apiPath = import.meta.env.SHOPRO_API_PATH; export const apiPath = import.meta.env.SHOPRO_API_PATH;
+4 -2
View File
@@ -10,6 +10,7 @@ import $platform from '@/sheep/platform';
import { showAuthModal } from '@/sheep/hooks/useModal'; import { showAuthModal } from '@/sheep/hooks/useModal';
import AuthUtil from '@/sheep/api/member/auth'; import AuthUtil from '@/sheep/api/member/auth';
import { getTerminal } from '@/sheep/helper/const'; import { getTerminal } from '@/sheep/helper/const';
import sheep from '@/sheep';
const options = { const options = {
// 显示操作成功消息 默认不显示 // 显示操作成功消息 默认不显示
@@ -73,7 +74,8 @@ http.interceptors.request.use(
(config) => { (config) => {
// 自定义处理【auth 授权】:必须登录的接口,则跳出 AuthModal 登录弹窗 // 自定义处理【auth 授权】:必须登录的接口,则跳出 AuthModal 登录弹窗
if (config.custom.auth && !$store('user').isLogin) { if (config.custom.auth && !$store('user').isLogin) {
showAuthModal(); // showAuthModal();
sheep.$router.go('/pages/login/index', {}, { redirect: true });
return Promise.reject(); return Promise.reject();
} }
@@ -280,7 +282,7 @@ const refreshToken = async (config) => {
const handleAuthorized = () => { const handleAuthorized = () => {
const userStore = $store('user'); const userStore = $store('user');
userStore.logout(true); userStore.logout(true);
showAuthModal(); sheep.$router.go('/pages/login/index', {}, { redirect: true });
// 登录超时 // 登录超时
return Promise.reject({ return Promise.reject({
code: 401, code: 401,
+2 -1
View File
@@ -59,7 +59,8 @@ const _go = (
// 页面登录拦截 // 页面登录拦截
if (nextRoute.meta?.auth && !$store('user').isLogin) { if (nextRoute.meta?.auth && !$store('user').isLogin) {
showAuthModal(); // showAuthModal();
sheep.$router.go('/pages/login/index', {}, { redirect: true });
return; return;
} }
+1 -1
View File
@@ -71,7 +71,7 @@ const app = defineStore({
// TODO 芋艿:【初始化优化】未来支持管理后台可配;对应 https://api.shopro.sheepjs.com/shop/api/init // TODO 芋艿:【初始化优化】未来支持管理后台可配;对应 https://api.shopro.sheepjs.com/shop/api/init
if (true) { if (true) {
this.info = { this.info = {
name: '芋道商城', name: '商城',
logo: 'https://static.iocoder.cn/ruoyi-vue-pro-logo.png', logo: 'https://static.iocoder.cn/ruoyi-vue-pro-logo.png',
version: '2025.09', version: '2025.09',
copyright: '全部开源,个人与企业可 100% 免费使用', copyright: '全部开源,个人与企业可 100% 免费使用',