From 0e79aca04e346633d1bebd7ba3cd72bce76cc232 Mon Sep 17 00:00:00 2001 From: Ghost <106998207@qq.com> Date: Wed, 7 Jan 2026 11:00:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 + .hbuilderx/launch.json | 16 + App.vue | 34 + README.en.md | 36 - README.md | 39 - config.js | 7 + index.html | 20 + main.js | 42 + manifest.json | 63 + mixins/auth-mixin.js | 69 + package-lock.json | 27 + package.json | 5 + pages.json | 181 +++ pages/about/about.vue | 119 ++ pages/channel/add.vue | 801 +++++++++++ pages/channel/list.vue | 319 +++++ pages/channel/login.vue | 336 +++++ pages/channel/project-select.vue | 177 +++ pages/channel/statistics.vue | 2183 ++++++++++++++++++++++++++++++ pages/form/input.vue | 421 ++++++ pages/form/input2.vue | 424 ++++++ pages/form/list.vue | 113 ++ pages/home/home.vue | 22 + pages/index/index.vue | 912 +++++++++++++ pages/index/site.vue | 167 +++ pages/login/login-page.scss | 126 ++ pages/login/login.vue | 197 +++ pages/poster/index.vue | 134 ++ pages/poster/index2.vue | 193 +++ pages/ucenter/ucenter.vue | 102 ++ project.config.json | 28 + project.private.config.json | 7 + static/c1.png | Bin 0 -> 401 bytes static/c2.png | Bin 0 -> 470 bytes static/c3.png | Bin 0 -> 511 bytes static/c4.png | Bin 0 -> 476 bytes static/c5.png | Bin 0 -> 472 bytes static/c6.png | Bin 0 -> 545 bytes static/c7.png | Bin 0 -> 365 bytes static/c8.png | Bin 0 -> 587 bytes static/c9.png | Bin 0 -> 565 bytes static/customicons.css | 20 + static/customicons.ttf | Bin 0 -> 2416 bytes static/headers.png | Bin 0 -> 20399 bytes static/logo.png | Bin 0 -> 4023 bytes static/tabbar/grid.png | Bin 0 -> 2695 bytes static/tabbar/grid_active.png | Bin 0 -> 2556 bytes static/tabbar/list.png | Bin 0 -> 2897 bytes static/tabbar/list_active.png | Bin 0 -> 3024 bytes static/tabbar/me.png | Bin 0 -> 3380 bytes static/tabbar/me_active.png | Bin 0 -> 3461 bytes static/uni.png | Bin 0 -> 4162 bytes uni.scss | 4 + utils/request.js | 50 + 54 files changed, 7324 insertions(+), 75 deletions(-) create mode 100644 .gitignore create mode 100644 .hbuilderx/launch.json create mode 100644 App.vue delete mode 100644 README.en.md delete mode 100644 README.md create mode 100644 config.js create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 mixins/auth-mixin.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/about/about.vue create mode 100644 pages/channel/add.vue create mode 100644 pages/channel/list.vue create mode 100644 pages/channel/login.vue create mode 100644 pages/channel/project-select.vue create mode 100644 pages/channel/statistics.vue create mode 100644 pages/form/input.vue create mode 100644 pages/form/input2.vue create mode 100644 pages/form/list.vue create mode 100644 pages/home/home.vue create mode 100644 pages/index/index.vue create mode 100644 pages/index/site.vue create mode 100644 pages/login/login-page.scss create mode 100644 pages/login/login.vue create mode 100644 pages/poster/index.vue create mode 100644 pages/poster/index2.vue create mode 100644 pages/ucenter/ucenter.vue create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 static/c1.png create mode 100644 static/c2.png create mode 100644 static/c3.png create mode 100644 static/c4.png create mode 100644 static/c5.png create mode 100644 static/c6.png create mode 100644 static/c7.png create mode 100644 static/c8.png create mode 100644 static/c9.png create mode 100644 static/customicons.css create mode 100644 static/customicons.ttf create mode 100644 static/headers.png create mode 100644 static/logo.png create mode 100644 static/tabbar/grid.png create mode 100644 static/tabbar/grid_active.png create mode 100644 static/tabbar/list.png create mode 100644 static/tabbar/list_active.png create mode 100644 static/tabbar/me.png create mode 100644 static/tabbar/me_active.png create mode 100644 static/uni.png create mode 100644 uni.scss create mode 100644 utils/request.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..08aeb98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.cursorindexingignore +.specstory/ +node_modules/ +uni_modules/ +unpackage/ diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..81f13f4 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "mp-weixin" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..b300a1d --- /dev/null +++ b/App.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 5579db7..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# 存客宝小程序 - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 83753fa..0000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# 存客宝小程序 - -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/config.js b/config.js new file mode 100644 index 0000000..8fd78ce --- /dev/null +++ b/config.js @@ -0,0 +1,7 @@ +// config.js +export default { + apiUrl: 'https://api.ckb.quwanzhi.com', + apiUrl2: 'https://ckbapi.quwanzhi.com', + //apiUrl2: 'http://www.yishi.com', + // 其他全局配置项 +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..cf1c83a --- /dev/null +++ b/main.js @@ -0,0 +1,42 @@ +// #ifndef VUE3 +import Vue from 'vue' +import App from './App' +import config from './config.js' + + +import authMixin from './mixins/auth-mixin'; +Vue.mixin(authMixin); + +Vue.config.productionTip = false +Vue.prototype.$config = config + +//兼容旧版 +Vue.prototype.$wxAppId = 'wx789850448e26c91d'; +Vue.prototype.$wxApi = 'https://api.quwanzhi.com'; +Vue.prototype.$settingData = []; +Vue.prototype.$userInfo = {}; + + +import uView from "uview-ui"; +Vue.use(uView); + +App.mpType = 'app' + +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { + createSSRApp +} from 'vue' +import App from './App.vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..c97bf68 --- /dev/null +++ b/manifest.json @@ -0,0 +1,63 @@ +{ + "name" : "存客宝", + "appid" : "__UNI__505D381", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + /* 5+App特有相关 */ + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "nvueStyleCompiler" : "uni-app", + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : {}, + /* 模块配置 */ + "distribute" : { + /* 应用发布信息 */ + "android" : { + /* android打包配置 */ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {}, + /* ios打包配置 */ + "sdkConfigs" : {} + } + }, + /* SDK配置 */ + "quickapp" : {}, + /* 快应用特有相关 */ + "mp-weixin" : { + /* 小程序特有相关 */ + "appid" : "wx789850448e26c91d", + "setting" : { + "urlCheck" : false, + "minified" : true, + "postcss" : true, + "es6" : true + }, + "usingComponents" : true + }, + "vueVersion" : "2" +} diff --git a/mixins/auth-mixin.js b/mixins/auth-mixin.js new file mode 100644 index 0000000..983759e --- /dev/null +++ b/mixins/auth-mixin.js @@ -0,0 +1,69 @@ +export default { + methods: { + checkLogin() { + const pages = getCurrentPages(); + const currentPage = pages[pages.length - 1]; + let fullPath = ''; + let queryString = ''; + + // #ifdef H5 + fullPath = window.location.hash ? window.location.hash.substring(1) : window.location.pathname; + queryString = window.location.search; + // #endif + + // #ifdef MP + fullPath = `/${currentPage.route}`; // 在小程序中使用route + // Combine existing options with the scene parameter if it exists + const options = { + ...currentPage.options + }; + + queryString = this.objectToQueryString(options); + + if (this.$root.$mp.query.scene) { + queryString += "&" + decodeURIComponent(this.$root.$mp.query.scene) + } + + // #endif + + const redirectUrl = fullPath + "?" + queryString; + + + // 如果当前已经在登录页,则不进行跳转 + if ( + fullPath.includes('pages/login/login') || + fullPath.includes('pages/index/index') || + fullPath.includes('pages/index/site') || + fullPath.includes('pages/poster/index') || + fullPath.includes('pages/form/input')|| + fullPath.includes('pages/login/privatememo')|| + fullPath.includes('pages/login/usermemo') || + fullPath.includes('pages/channel/add')|| + fullPath.includes('pages/channel/login')|| + fullPath.includes('pages/channel/statistics') + ) { + return; + } + // 未登录则跳转到登录页 + else if (!this.isLoggedIn()) { + uni.redirectTo({ + url: '/pages/login/login?redirect=' + encodeURIComponent(redirectUrl), + }); + } + }, + + isLoggedIn() { + const token = uni.getStorageSync('token'); + return !!token; + }, + + // 将对象转换为查询字符串 + objectToQueryString(obj) { + return Object.keys(obj).map(key => `${key}=${encodeURIComponent(obj[key])}`).join('&'); + }, + }, + + onLoad() { + this.checkLogin(); + }, +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..659babf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "ckb_mini", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "uview-ui": "^2.0.36" + } + }, + "node_modules/uview-ui": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.36.tgz", + "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA==", + "engines": { + "HBuilderX": "^3.1.0" + } + } + }, + "dependencies": { + "uview-ui": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.36.tgz", + "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..49fd105 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "uview-ui": "^2.0.36" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..3ba4580 --- /dev/null +++ b/pages.json @@ -0,0 +1,181 @@ +{ + "pages": [ + { + "path": "pages/index/site", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "", + "enableShareAppMessage": true + } + }, + { + "path": "pages/poster/index", + "style": { + "navigationBarTitleText": "", + "enableShareAppMessage": true + } + }, + { + "path": "pages/poster/index2", + "style": { + "navigationBarTitleText": "", + "enableShareAppMessage": true + } + }, + { + "path": "pages/about/about", + "style": { + "navigationBarTitleText": "", + "enableShareAppMessage": true + } + }, { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, { + "path": "pages/home/home", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, { + "path": "pages/ucenter/ucenter", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, { + "path": "pages/form/input", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/form/input2", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/form/list", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/channel/list", + "style": { + "navigationBarTitleText": "渠道管理", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/channel/add", + "style": { + "navigationBarTitleText": "新增渠道", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/channel/login", + "style": { + "navigationBarTitleText": "渠道登录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/channel/project-select", + "style": { + "navigationBarTitleText": "选择项目", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/channel/statistics", + "style": { + "navigationBarTitleText": "分销获客统计", + "enablePullDownRefresh": true + } + } + ], + // "tabBar": { + // "color": "#7A7E83", + // "selectedColor": "#007AFF", + // "borderStyle": "black", + // "backgroundColor": "#FFFFFF", + // "list": [{ + // "pagePath": "pages/home/home", + // "iconPath": "static/tabbar/list.png", + // "selectedIconPath": "static/tabbar/list_active.png", + // "text": "主页" + // }, { + // "pagePath": "pages/ucenter/ucenter", + // "iconPath": "static/tabbar/me.png", + // "selectedIconPath": "static/tabbar/me_active.png", + // "text": "我的" + // }] + // }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "app-plus": { + "background": "#efeff4" + } + }, + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, + "condition": { //模式配置,仅开发期间生效 + "current": 1, //当前激活的模式(list 的索引项) + "list": [{ + "name": "首页", //模式名称 + "path": "pages/index/index", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "webview", //模式名称 + "path": "pages/index/site", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "旧版海报页", //模式名称 + "path": "pages/about/about", //启动页面,必选 + "query": "taskId=491" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "新版海报页", //模式名称 + "path": "pages/poster/index", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "登录页", //模式名称 + "path": "pages/login/login", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "我的", //模式名称 + "path": "pages/ucenter/ucenter", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }, + { + "name": "表单", //模式名称 + "path": "pages/form/input", //启动页面,必选 + "query": "id=505" //启动参数,在页面的onLoad函数里面得到 + } + ] + } +} \ No newline at end of file diff --git a/pages/about/about.vue b/pages/about/about.vue new file mode 100644 index 0000000..9739358 --- /dev/null +++ b/pages/about/about.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/pages/channel/add.vue b/pages/channel/add.vue new file mode 100644 index 0000000..5c3ffdd --- /dev/null +++ b/pages/channel/add.vue @@ -0,0 +1,801 @@ + + + + + diff --git a/pages/form/input2.vue b/pages/form/input2.vue new file mode 100644 index 0000000..881d5fc --- /dev/null +++ b/pages/form/input2.vue @@ -0,0 +1,424 @@ + + + + + \ No newline at end of file diff --git a/pages/form/list.vue b/pages/form/list.vue new file mode 100644 index 0000000..31b343a --- /dev/null +++ b/pages/form/list.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/pages/home/home.vue b/pages/home/home.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/pages/home/home.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..8086a30 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,912 @@ + + + + + diff --git a/pages/index/site.vue b/pages/index/site.vue new file mode 100644 index 0000000..c2f2024 --- /dev/null +++ b/pages/index/site.vue @@ -0,0 +1,167 @@ + + + + + \ No newline at end of file diff --git a/pages/login/login-page.scss b/pages/login/login-page.scss new file mode 100644 index 0000000..5de6899 --- /dev/null +++ b/pages/login/login-page.scss @@ -0,0 +1,126 @@ +// 隐藏 edge 浏览器的密码查看按钮 + +/* #ifdef H5 */ +.input-box ::v-deep{ + .uni-input-input[type="password"] { + &::-ms-reveal { + display: none; + } + } +} +/* #endif */ + +.uni-content { + padding: 0 60rpx; +} + +.login-logo { + display: none; +} + +/* #ifndef APP-NVUE */ +@media screen and (min-width: 690px) { + .uni-content { + /* #ifndef H5 */ + padding: 0; + max-width: 300px; + margin-left: calc(50% - 200px); + /* #endif */ + /* #ifdef H5 */ + margin: 0 auto; + position: relative; + top: 100px; + padding: 30px 40px 80px 40px; + max-width: 450px; + max-height: 450px; + border-radius: 10px; + box-shadow: 0 0 20px #efefef; + background-color: #FFF; + /* #endif */ + } + /* #ifdef H5 */ + .login-logo { + display: flex; + justify-content: center; + } + + .login-logo image { + width: 60px; + height: 60px; + } + + .register-back{ + display: none; + } + + uni-button{ + padding-bottom: 1px; + } + + /* #endif */ +} + +.uni-content view { + box-sizing: border-box; +} +/* #endif */ + + + +.title { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + padding: 18px 0; + font-weight: 800; + flex-direction: column; +} + +.tip { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + color: #BDBDC0; + font-size: 11px; + margin: 6px 0; +} + + +/* #ifndef APP-NVUE */ +// 解决小程序端开启虚拟节点virtualHost引起的 class = input-box丢失的问题 [详情参考](https://uniapp.dcloud.net.cn/matter.html#%E5%90%84%E5%AE%B6%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0%E6%9C%BA%E5%88%B6%E4%B8%8D%E5%90%8C-%E5%8F%AF%E8%83%BD%E5%AD%98%E5%9C%A8%E7%9A%84%E5%B9%B3%E5%8F%B0%E5%85%BC%E5%AE%B9%E9%97%AE%E9%A2%98) +.uni-content ::v-deep .uni-easyinput__content, +/* #endif */ + +.input-box { + height: 44px; + background-color: #F8F8F8 !important; + border-radius: 0; + font-size: 14px; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex: 1; +} + +.link { + color: #04498c; + cursor: pointer; +} + +.uni-content ::v-deep .uni-forms-item__inner { + padding-bottom: 8px; +} + +.uni-btn { + text-align: center; + height: 40px; + line-height: 40px; + margin: 15px 0 10px 0; + color: #FFF !important; + border-radius: 5px; + font-size: 16px; +} + +.uni-body.uni_modules-uni-id-pages-pages-login-login-withoutpwd{ + height: auto !important; +} diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..bc55125 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,197 @@ + + + + + \ No newline at end of file diff --git a/pages/poster/index.vue b/pages/poster/index.vue new file mode 100644 index 0000000..65be896 --- /dev/null +++ b/pages/poster/index.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/pages/poster/index2.vue b/pages/poster/index2.vue new file mode 100644 index 0000000..b3a94e0 --- /dev/null +++ b/pages/poster/index2.vue @@ -0,0 +1,193 @@ + + + + + \ No newline at end of file diff --git a/pages/ucenter/ucenter.vue b/pages/ucenter/ucenter.vue new file mode 100644 index 0000000..aec8ffb --- /dev/null +++ b/pages/ucenter/ucenter.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..0f5f353 --- /dev/null +++ b/project.config.json @@ -0,0 +1,28 @@ +{ + "appid": "wx3724765328cccf03", + "compileType": "miniprogram", + "libVersion": "3.8.10", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + } + }, + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + } +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..670c139 --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,7 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "ckb_mini", + "setting": { + "compileHotReLoad": true + } +} \ No newline at end of file diff --git a/static/c1.png b/static/c1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d38fdc45f54393919608143278902961ebfc03e GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^DImv+@EMfolJl@2-tdeIgiE72V3$+1a&#<;nGqB*6-wd0Dfno2^$& z7L}LYx}4kkKI1~4j2xSM#i^{e>mxFDC0DcwoaERsZFdmo&xZb=|e; zVChPF@z}uo`_jyFigEMR=cKgdY*81V{;5gJlXF9MvNaZ^cipGtGKCwGwYFdLih#FiI|b%1`}h zcD?9wzL;(MG`RGl!=KdO=X$Ia3G&T>{3@pZ$E>nWT~vAlEaktaqI1klarbacw7TzPB-Tm@A?1# z=DKt1Tm@&jBni*W72Dq8$U1XQ@j1)qcYd?AM-~6vdS%zgB|W!|l9z8;VdkK15fZWZ z0_Xa#{=&Tl?+&}Myixw!c0&2Cz{(%uYaLfyIpx20a+b;i&8Hu}PrN-Tsf8gx{xaWd zSEda)?3G(j%z6CKKWpOGAAJoS5gg_&aw+l?Pq*dmh)8I56YfnYkc%|gRM+fjvg@w| z$E(g+E=n8A7O8TmM)@~hDG@eQ_vn5n5wpR0%`A=`87W~$m7>*=T~gqVW%D$JmT%Wy00-NUV`g= zPWq+lU_K79dVw=Ll(hEL%sa^y|HiF3Bqng#c7b&Xt+%gdOo& V%D;5ZBtB5oc)I$ztaD0e0stIlwo?EA literal 0 HcmV?d00001 diff --git a/static/c3.png b/static/c3.png new file mode 100644 index 0000000000000000000000000000000000000000..216202ad01c5d093a15c247cf791bf66759cf54d GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^DImqEwn3#C`6axcex~Gd{NX4zUH%{jrQQ%<>_`I#L<;VZ} zZHv8>O^d80dDUJWN}qZ5sw(5+2E$_#$vr=hznV9v_(!hA^s)ehHzYuO_$GPFaj>L^Z^8*-5pGM3JjCnSB#oUXR4yIck*z;L5euG4hrQnMaF=Mr^If6ezqfPO{rmaH zG`Recv6gZBZ^h$ro*MqgZ`L;0*JWSQ?4MdEEc#Ycl^2Ku*&||7ybYSKxgR(e zUi8LbW#8LW_O;o`+{cdv9h)e%;+1X1dv+zh{}-wmlY4-{_IaWH_ctMZlX+XXL2>Bm L>gTe~DWM4f<{`=m literal 0 HcmV?d00001 diff --git a/static/c4.png b/static/c4.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8b4770c323cc87544a502c4efcd9792ec6047a GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!v{Zmph6H*@EOQ`c;Jj35m?s8tsB!ig_bOsad3NWyNKsO#%u4s6f}!WF<$1wue~HTU+T}QZ;Gq4 z+^p*LR=oRR<2>VYrDayznw7JEgn9(s4mmKdKH{5e^24HIn&xXKq`oqWXf4s;nPY6> zl5RSUO)+g!*Qq{!;a&O8LAO2%J{IadS>Y&oFLd#-`B8Zi;r0eCLdRUCfQpstnaz}|9;&C$edE%qT=zMqcbI`S>(i_Uwsp-Jh?$Zac<}T=h6;^ V(bfHGPg+0`|eiw2lA( literal 0 HcmV?d00001 diff --git a/static/c5.png b/static/c5.png new file mode 100644 index 0000000000000000000000000000000000000000..310bfb123ba811240a23883c589557cced22af97 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^DImMU#{OfDLKp{`iu-m;URIy-X0%w>4GPR z_aE3Db+En7Vpp-?y{8>c_3j;K1E(wImUzhRpIo-4)yng0f9$<4bN?NcJ+$)R>Cmd5 zPnT-Q*3a3qRzbM)VHC^C!+&Q!2$x98T^XQ1{a2U4m97Z?l}kQ1avTGN#j9nTb Uw;LB#rGg^I)78&qol`;+04O}Qp#T5? literal 0 HcmV?d00001 diff --git a/static/c6.png b/static/c6.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c45d8814b2657a1c603b1a44c8207da134cb40 GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^DImqbxJT^6j8j=}L4 z`U~zp;jZGGq_3%#*Y{@jiL-*|KAoCX9M=6tMV3p`Xx_9LpK6YHtIv61@a%(@?tX{a zixmsYle>5975wq9?fBo`FZ<0Z_ST1U_$og>`Bwh@oq)-Q*IY8`n6H2IUEezHG>gnR z4m?JSR+TGA8lKK}%#OUITJo;LRm!DE@lpDwn1HB=DfxjiElxjmC-aCcb$n6qV?vwH z70D$Ac9y-Kb4tS6k2yc|sk#5)HGj$%vfgZBIOdhE(svqtDm`(*VzL-mu^Hy19AKPf2Xw<}^wvyk3;W5tc1>eFM@ s<<*_%cP|y0-yh@^lK=|O<{9 literal 0 HcmV?d00001 diff --git a/static/c7.png b/static/c7.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e73908c282c8ce053a037a9b0d0ff2bcdb5f28 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^DIm6ZD L`njxgN@xNA8ryiD literal 0 HcmV?d00001 diff --git a/static/c8.png b/static/c8.png new file mode 100644 index 0000000000000000000000000000000000000000..c32633c0b399d119fe940b19fb48ee0efd986ca1 GIT binary patch literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^DImtDWKw)GSgG z<{?!7vyg^n3M^01LJZ}7srr_TW_zQ?t87k(~wwf+9)vT z%KQIoiZ6ORmsqxitIvdcU#@t4EXP6v-^(UI#Jk~jfg$H7CzX--mMU=ckjl- zO_N=n{=9#BNIpzt0(^6iu(G%&IbVv*qm>1hi!XSEd0U$OB}=(W(sDW)~2<6brG`eb|Eywk@UH2a9_S~2ou;@L{mE;Re4S!9(w0H>~IdYlxQPbf~&0B26{}evs0SCD6 b<@sM36JAtSn%f$@0;LB}S3j3^P6r-DwW=|@#WR(W@( zZdqJkeNu(zZcxH)-rk0j)>6#pwJ%5 z({0I4*ENL;Hg>s)Wo2yHMQWq+YVK10K1LEVCnUj62Kls6uex~DF( zmCs;?h^>{Qb=Fc@o?qGaU(P$0_Dg@wVQpV1_%AL~YBQ@%pW7wIWu-GZ7%RRBC{J)$ zYTez|@_3zqf=Wi}%JdkW31MA*>f4V5YcgIo@dcs(Z~1ke=Y_pcHP{M@c~4hAmvv4F FO#nHb*8Bhf literal 0 HcmV?d00001 diff --git a/static/customicons.css b/static/customicons.css new file mode 100644 index 0000000..14ed5fa --- /dev/null +++ b/static/customicons.css @@ -0,0 +1,20 @@ +@font-face { + font-family: "customicons"; /* Project id 2878519 */ + src:url('/static/customicons.ttf') format('truetype'); +} + +.customicons { + font-family: "customicons" !important; +} + +.youxi:before { + content: "\e60e"; +} + +.wenjian:before { + content: "\e60f"; +} + +.zhuanfa:before { + content: "\e610"; +} diff --git a/static/customicons.ttf b/static/customicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a3c8ab9f22d18d5d605503eda314e5d2a31fdfc0 GIT binary patch literal 2416 zcmd^A%WoS+82@H>?IgD2#K~q|hdkDH>bQB>&f0O>=25F@5|GlQX`8fENObGiPEx<* zIHl>yDoB8U!lAtvAt9k$df{KC1gT1(TA*@aKU;Z8A_c6Yj%<0Ab$%Pq=pKvad z-A@0oKRQn&-bGc{Qu=Do+{0<;!iM5&AR2xX-va&;wQns~zS&B(8f^c>xHVfy>O!2V zuzd$(TTZ`OWbJet@*^0lc|DhE{bb?+k@a&TAyX`DmiI>vrzUh9wW#VtLONPQPcgH{GfcG%HCo!>rVIv8K7)wAe(G9W~W6s*} z5MlL3;c^>AXo`e0v-20pnbpgA>V(Zx`M)vCu4i=kuX|?D<5C8Ok=0}+EcYWmqwucq z9k>tcJ$p@N7UdY3K%*@M)z9zF77#b3%z!fxHdq^cAvWrY zjm5{}(W73UQ-HKbh-#b|iyQiGC8|vcP=ZB(`A1^`pS7F$eO6f+XC1Pl#U~jwSS-Z6 zoYdm6fFb2Ts4UG+2aoy3eJ4h)WHMJqPWZ+ggv;Y`8Ne>v?K0a?dV7a@d%xnHstS*S!80>UHNq5P zcT^Cf-6E!7v@~-j7+e|8elTC7!G#HLb7P0n=yWzJ9gWT2iG@K%Yp-64j#evA{TmZG zWJPwUm;la=mS?v1K>SNwq9YWdlSr<&p0z19Zlu(!^)Mr=JSzZ7)T_mjuz=s|>kl!c zB@l~)Q)H`{IH*LH!r`TeI(%*{!Lr8Sps0GoVXsi(ZM7mhk8cX!KdH!FU9!mAbI=zO zP#q6W0#>gAiixoIV3!-P``)ng_~q*Du3#5l{`J@HiH~s`$rPj0xaF>5@3G|gDTd`t z2}&`saAq1brJKoCUtp5O z;^K01ht1M-_H0vw)#X+iuR9#q9aYKR<`5;DCw%I1?(O?_+2N4wrR4G}CnNsOmL?^| z?r41nJAO^`vqW__v>3uGEQc3DyKNq9yhk|YJmP6uSZGw-E=vQP_BpOMS9fi$j;5~R zmD%KpS-b3(?Z^BHZ8{R|>1<(-tEK86+@Y}Cr!9vT!UsEbw=A*jY1`o&ywm0}zN$9* z)x4>Q+QHOsI)0nBn^>R*ddb8hc%O+S-~kg`@aNM^Yz04QVjB(OyQ}-O!($Prh)GSD zCqQqSm{BWzW@3Sy^o5B<@ZXwP0{+Rw7E);6#8&VJCbrQEYc{c+0xUUQO6ld)s(Ni( zT~8MB=|aAI*q={jwz7KZaCq3Sq)MCXg}gcviX2jNseGz*=w|aqMk|-oYPwX&sk88x z%4Q2{u~gVdCCj0;a=Cai9OmS z&fu!b!m{+7^jYf_XqRXcdfcZoHN+IGM+T-)9_ZH9MG(} zz7$rH1y-?vT($u}Noa>?&9ExsItb%AjOS24WW<@{KiqoZ|NR#gi3v<(60?v^AJ&GW i+l8&0>&^ObYFtuIC+Gpxs*A((`E@KK=o#Msw}} literal 0 HcmV?d00001 diff --git a/static/headers.png b/static/headers.png new file mode 100644 index 0000000000000000000000000000000000000000..431356f61c83a675c26f8e6181431a7b2275966d GIT binary patch literal 20399 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 SYs}WS&%*SCNx89m_6+kN*N`o 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 K#QtG=HuAqSbgTpb literal 0 HcmV?d00001 diff --git a/static/tabbar/list.png b/static/tabbar/list.png new file mode 100644 index 0000000000000000000000000000000000000000..303bb4c3b8d31ce21c751b379c251e50b66f49e2 GIT binary patch literal 2897 zcmZWrc|4Te9v@50J5rV`AxoA@_7Fot!&t{!;zjoCN|rGOO*7NXV47@|7z{?q5~0YJ z_nkzcB9|-?*|IO$)qQ4q-TV36`}v&bJm)#*yZwIWpNC|Nfb&AcARrKk*W3(d54_u$ z510d(AKrE^1%cRRY^@wk;Mc5B@!0N9ktxDluuS*$Q7C|d1QKEZ zUlssJg~p=eS)cnZfEp_U%ZS-tW)pr7RwOJ6|2y07cCi}BlqJLiI{QrqM527&!U6P}+!?(3 z71M0kGyK$IHXYj7h@47E5>Ac*4SG_z@1 zYud8Bp?J0`wY+0tSn@kGbif(dOC(q>yZ;tNrkX@j~f+hx=P-@_I zEk$H!RG)5REpii%OP#C=`DqgCQSmRyq@5e*3OinSln?8? z6o-%R215K?ugy7)ZDMt%!ls@dUOlEdl(sgO{KH&$1Ag8wwibE6mVL^PG5jW`LreW~ zYN>5xkEMdQR)uJs9JTyB?mcG2I|FH_acc#L8Qh@p*Bm9Xm)Co zW6iFcm?nRuR&HJAnPS(b=UNK5DON}<`n=BUjM%xG2C1H|HfS<>Ct_lb@h9PBuPg#I zQ#sRygh4Os<_TTQa!GfFaD+);^&!`5%^GSRa~JVBdUs_NFB#bwRJrInhTiJpGr`6E zmCqO8R@^j$y|7UhE!&mxm#?w^5Z-d`@r$KHo1);IS0UViU&c>Lj*aftOPl&L+98Wv z;Z1hhmkuSYYgm+}^T^YFnQUhkf-dr{^B|up5}bxw2%|oi3PjXKhmPK*X^;6FfH$*~ zn(Cgl_@MQOOQ*g`o9BI~jh$aRT_{JD-PPIN9OCDDJ8BX<X*YX|@b)~-6UD0!;K(4|b z6a=|rhq~2bjt;UhcFk)$x`MOrV@HFp;szd9s9y|bw0~b1;6aqXZGAb8x5V30DD}s^ zBOkSxua}#tDn*vFos7YSbcQUr z)Sr=zQ8GF)EUDI4><}P5Jvfn==mp$RZ~Ls4Hip86zZPReA=*d_HT82$>il>jc5A~m z90t=RlIwqIzneiQv~c%*B&NN)t=`auC`%#DTjf#QGY#GPvHe@3LHGFTC;;2!X? zW4F=+RqjT%%9ve|y_0PvsZ%SK`cPDctIwF&aqK!Q-1otUTD{c=jBwsK&M*3DoTR+_ z{YGKuO^N&l)#BhKunc7hJhIWODbQpZB5)Y`MaXi%T4@X{?6Z=6c$W3 z1x}nW7A!7tO&e^J-TsArJ4gH&=o|N4JgHd9ZNxg>VLee_cXgid#uGWGSj+p*o$!fA8ie zy;Av`cg8fQ<1&)?Z@a-tK6@vu6jg{jYnzI$Ju1t^teo}i6cB5e@W%a^C<(${a@`Q_3}Om&qD*c_)|7jUo$!oYECH9J`_B>25WTSu_0+WwTFhINQ;MG_4&6x1cI+U_eG!qh84;8X(J;tA z2Y(_bsk}-@!-8QdXHQk{=^7t`tQ21~xs<{!CaV#vyc5eP1=G5%0y4Xgr;{KIW~z*r zGK>e^8g!GBf0}Mz=qU6J>J2zWMA-F-v+VSe?n`e+xU{1&H0V80Pb` z3TQk__f@5LoY~81<=Wj)(qI?9XN%V*#?_a~B?u$5^Nn*Tq>L14?$eh{Q|(IIszApd z5eb%CoL_fi^Eti4I7C02Iu_gZ`O8{dR{NSOV)?!07j{)JR^D9cRawFYJbqVKhBNg_ w(ZEhSWNxf`!pDoPe_3QNH@zo~#J`f@cF1a*;ru!l_+0{-n;>B2#vZr+4eD}p+yDRo literal 0 HcmV?d00001 diff --git a/static/tabbar/list_active.png b/static/tabbar/list_active.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff8c49c39f8722d5a963d170edf127277c058f2 GIT binary patch literal 3024 zcmcguc{tQ-8y=FzHrd89nHZsA=2*&D2GJPX93dnogb|Ws8A4KaW(s4ME&H+WvW8?| ziz7v-j3p8uBU`C&%5_|Q=bZ1lzQ4ZfdVkOR-1qZ5_w&5(_5SfA8yV>%wVy3Lbf|FX z5Py(|@X$FZq(l0mcRz3r=Q-r*%wd#H9(1Q$dig;+y5sO?4xKp+(W~eed&nFrAE+JF zy8Jjb<}c96guQ9nDGN=13`p5xx;L?U(9oiUkdyo-JX zZzu-dLMJ205Th1j_>hx>D(0lOeymNbJW$&h#Dw(4=`u@8^PN$Elr`G06J__AUjs#? z9$^_7?OYX9*%=jd&yW$0lK=oPQV)CH)R*C-VoX3W*d_$yw?@bD`&7{-ud^k@(ZQKArS&U!l&4qI6lt}Fqcb~5Sfo0$wjIZ% z?wSXNA|@2aq0?v5vtM(G)Ohi&?l?iQax8SmOxaO38@5aHXUX z8}|YgzAfrCxCN*i?>76MD8xalVJ&SiF7xDxF4+HlIDBoFxwL+NKXOC+oqk&++2~=d z?W1@f`%4WRi+he2!dAV|;}ErnCK_N!TC7=T(`Qe_VQZ9lU{ttr;A14nzJ%z6bRJv z)YKs%gWa9R?x78Dp>ca=MFpoXHgGLx%U0SD?dE=P|I! zee}tfRMq=eisG6Ab3=B z$CP=%PJxlmka>V7;}&~ z+OjGq_ihC|mDQXhkBCNf3$NNM=B=bJQKU}cCr+miKalmRE&+ShO0&pEj5e?(DY+$5 zhl8S5|G34q7lNaf|C$-bx4UrkdDSfUFQGwr&>WHBl>U(>z6yhUavLjsEH%jdh-T$g z5xpoSbWO+?zKZk@+a4i;JAw_HuLW$`-(Sttyf?lZsdTcIA+DFzS`6C4e!}ONdVWMz z478BIgoruXDhC;5zY`4BJNhh`>9Mv@;+w9aiXbdXWvU%O=|9F=!`1W4?3SI;XeH@{ zC2t#ZZ~i*l=y7UHX^WGse&9xa$q0!c!ShXsN&MU-WVaf0#IEQCX`si#Y2}%LF3`sx z{M2MIA!jn>czpB>77_D|#E3`Di5R|x+S8^Cp@oz=f1%(@ zQl4Oi{HpeKV^Ze&YgDyHa;Hx^vBxUyePl~`P#t9f~=tnoHH#dj&-$1`ca)Ot_z44S=8s^uI_JrU8e5PI4S;u)`};tcdi$6 zF;>(NGTrSKv9@Z1^0P`^VpaDmX;qaGT>fk~_3c6hLs#Di#?7|Osea_NFXz&cmf%p0 zj%sc#>U^6~NJZG`ve+Q1JQPE=wqMc;JGK{;b%UBKLuM-PX?zh_2EHYR$HcHJ-%FhK z%X3N~F2>1ET}0x4RRDzbZhe}Fw^)>sd@IWqs}j&xtV%PTaF*Z=^VPC{7am=`Ygn#d z7{=>dC7Dc+j0n3z+I;-ksIf*o|I{2pv}N)+Zs6$%mmh4yZb4;AIW3|5oQL~%Dy-ft zXY^eot}Ztkx2+~@2E(026?DoK<`RB;6-IKboGfh?DX0i6B454toQ(@dU9Da&4x9?lPAysb8LJ2Wub4!YUe z-+?DzhBlMP4wTP*Cpuj1CxBefGs`)1+N;c3Munw?VL7P%Ze1@@aeBeA(KX6kc4R0? zvuJ~dO%&_)^m?LIpW|w7dT8F{(?PPE3Sv#qrmGc-Za^0esi3q9WiDYJnOBm*BdHny5KRm2TYEDQefG4D)c4)|SCKjY} z*zIOyy!z48Y$Gtko=_YqlOJJjO-EB&6b?d=FV#J=al`S{oU!BkPV})flC4=S)s=^hB%vBpT24|`mUA`72 fKg<=1{dUB{$cJ0Wm*aZI@FH{klD~T?9}q2h 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 literal 0 HcmV?d00001 diff --git a/static/tabbar/me_active.png b/static/tabbar/me_active.png new file mode 100644 index 0000000000000000000000000000000000000000..e7276141fa070cb457d37a15a5e4c3ba36d5cb10 GIT binary patch literal 3461 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 literal 0 HcmV?d00001 diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..d461177 --- /dev/null +++ b/uni.scss @@ -0,0 +1,4 @@ +@import '@/uni_modules/uni-scss/variables.scss'; + +/* uni.scss */ +@import 'uview-ui/theme.scss'; \ No newline at end of file diff --git a/utils/request.js b/utils/request.js new file mode 100644 index 0000000..8e5f783 --- /dev/null +++ b/utils/request.js @@ -0,0 +1,50 @@ +// utils/request.js +import config from '@/config'; + +export function request(options) { + // 在请求发送前做一些处理,如添加 token + const token = uni.getStorageSync('token'); + + options.header = options.header || {}; + options.header['token'] = token; + options.header['content-type'] = 'application/x-www-form-urlencoded'; + + options.method = options.method || "POST"; + options.url = config.apiUrl + options.url; + + return new Promise((resolve, reject) => { + uni.request({ + ...options, + success: (response) => { + if (response.data.code == 10030) { + // 没有登录,跳转到登录页,并带上当前页面的URL + redirectToLoginWithRedirect(); + } else { + resolve(response); + } + }, + fail: (error) => { + reject(error); + }, + }); + }); +} + +function redirectToLoginWithRedirect() { + let currentRoute = ''; + // 获取当前页面路径和参数 + const pages = getCurrentPages(); + if (pages.length) { + const currentPage = pages[pages.length - 1]; + currentRoute = currentPage.route; + const query = Object.keys(currentPage.options) + .map(key => `${key}=${currentPage.options[key]}`) + .join('&'); + if (query) currentRoute += '?' + query; + } + + // 重定向到登录页面 + uni.redirectTo({ + url: `/pages/login/login?redirect=${encodeURIComponent(currentRoute)}`, + }); +} \ No newline at end of file