From 23c954981be4e0667d629e06e44fd9e0f5454949 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Thu, 8 Jan 2026 15:10:46 +0800 Subject: [PATCH] Merge branch 'dev/1.0' into custom/common --- common/js/golbalConfig.js | 2 +- common/js/goods_detail_base.js | 2 +- common/js/lang.js | 14 +- common/js/util.js | 86 ++- components-diy/diy-bottom-nav.vue | 2 +- components-diy/diy-coupon.vue | 2 +- components-diy/diy-digit.vue | 2 +- components-diy/diy-fenxiao-goods-list.vue | 2 +- components-diy/diy-graphic-nav.vue | 2 +- components-diy/diy-group.vue | 12 +- components-diy/diy-image-nav.vue | 2 +- components-diy/diy-listmenu.vue | 4 +- components-diy/diy-member-info.vue | 6 +- components-diy/diy-notes.vue | 2 +- components-diy/diy-picture.vue | 2 +- components-diy/diy-quick-nav.vue | 2 +- components-diy/diy-search.vue | 2 +- components-diy/diy-wechat-channel-list.vue | 458 +++++++++++++++ components-diy/diy-wechat-channel.vue | 232 ++++++++ components/common-payment/payment.js | 2 +- components/ns-empty/ns-empty.vue | 2 +- .../ns-goods-sku/ns-goods-sku-index.vue | 2 +- components/ns-goods-sku/ns-goods-sku.vue | 18 +- components/ns-login/ns-login.vue | 65 ++- components/ns-payment/ns-payment.vue | 2 +- components/privacy-popup/privacy-popup.vue | 530 +++++++++++------- .../register-reward/register-reward.vue | 2 +- docs/WECHAT_CHANNEL_INTEGRATION.md | 452 +++++++++++++++ docs/example/wechat-channel-demo.vue | 165 ++++++ lang/zh-cn/order/activist.js | 12 +- pages/index/index.vue | 4 +- pages_goods/cart.vue | 2 +- pages_goods/public/css/list.scss | 2 +- pages_order/detail.vue | 2 +- pages_order/detail_point.vue | 2 +- pages_order/list.vue | 7 +- pages_promotion/fenxiao/apply.vue | 8 +- pages_promotion/fenxiao/bill.vue | 2 +- pages_promotion/fenxiao/child_fenxiao.vue | 2 +- pages_promotion/fenxiao/index.vue | 8 +- pages_promotion/fenxiao/level.vue | 4 +- pages_promotion/fenxiao/order.vue | 2 +- pages_promotion/fenxiao/order_detail.vue | 2 +- pages_promotion/fenxiao/promote.vue | 2 +- pages_promotion/fenxiao/promote_code.vue | 6 +- .../fenxiao/public/js/goods_list.js | 4 +- pages_promotion/fenxiao/team.vue | 2 +- pages_promotion/fenxiao/withdraw_apply.vue | 2 +- pages_promotion/fenxiao/withdraw_list.vue | 2 +- pages_promotion/fenxiao/withdrawal_detail.vue | 2 +- pages_promotion/point/list.vue | 4 +- pages_promotion/point/order_list.vue | 2 +- pages_promotion/point/public/js/payment.js | 6 +- pages_promotion/point/result.vue | 2 +- pages_tool/goods/coupon.vue | 2 +- pages_tool/goods/coupon_receive.vue | 2 +- pages_tool/login/find.vue | 4 +- pages_tool/login/login.vue | 8 +- pages_tool/member/apply_withdrawal.vue | 4 +- pages_tool/member/assets.vue | 2 +- pages_tool/member/balance.vue | 4 +- pages_tool/member/cancellation.vue | 2 +- pages_tool/member/cancelrefuse.vue | 4 +- pages_tool/member/cancelstatus.vue | 8 +- pages_tool/member/cancelsuccess.vue | 4 +- pages_tool/member/card.vue | 4 +- pages_tool/member/card_buy.vue | 2 +- pages_tool/member/collection.vue | 2 +- pages_tool/member/coupon.vue | 4 +- pages_tool/member/footprint.vue | 2 +- pages_tool/member/index.vue | 7 +- pages_tool/member/level.vue | 2 +- pages_tool/member/modify_face.vue | 2 +- pages_tool/member/pay_password.vue | 6 +- pages_tool/member/point.vue | 4 +- pages_tool/member/point_detail.vue | 2 +- pages_tool/member/public/js/common.js | 5 +- pages_tool/member/public/js/info.js | 4 +- pages_tool/member/public/js/invite_friends.js | 4 +- pages_tool/member/public/js/signin.js | 4 +- pages_tool/member/withdrawal.vue | 2 +- pages_tool/member/withdrawal_detail.vue | 2 +- pages_tool/order/logistics.vue | 2 +- pages_tool/order/public/js/evaluate.js | 2 +- pages_tool/order/refund.vue | 2 +- pages_tool/order/refund_batch.vue | 2 +- pages_tool/order/refund_detail.vue | 2 +- pages_tool/order/refund_type_select.vue | 2 +- pages_tool/pay/index.vue | 4 +- pages_tool/pay/result.vue | 6 +- pages_tool/storeclose/storeclose.vue | 2 +- scripts/clean-empty-directories.js | 62 ++ 92 files changed, 1975 insertions(+), 382 deletions(-) create mode 100644 components-diy/diy-wechat-channel-list.vue create mode 100644 components-diy/diy-wechat-channel.vue create mode 100644 docs/WECHAT_CHANNEL_INTEGRATION.md create mode 100644 docs/example/wechat-channel-demo.vue create mode 100644 scripts/clean-empty-directories.js diff --git a/common/js/golbalConfig.js b/common/js/golbalConfig.js index 27a27d4..f00e78a 100644 --- a/common/js/golbalConfig.js +++ b/common/js/golbalConfig.js @@ -145,7 +145,7 @@ export default { if (isJump && route != 'pages/index/index') { uni.setStorageSync('manual_change_store', true); // 手动切换门店 this.$store.dispatch('getCartNumber'); //重新获取购物车数据 - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }, diff --git a/common/js/goods_detail_base.js b/common/js/goods_detail_base.js index 2fe192a..f61ebe5 100644 --- a/common/js/goods_detail_base.js +++ b/common/js/goods_detail_base.js @@ -240,7 +240,7 @@ export default { }, goHome() { if (this.preview) return; // 开启预览,禁止任何操作和跳转 - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, goCart() { if (this.preview) return; // 开启预览,禁止任何操作和跳转 diff --git a/common/js/lang.js b/common/js/lang.js index 5fec1bf..c8ca741 100644 --- a/common/js/lang.js +++ b/common/js/lang.js @@ -66,15 +66,16 @@ export default { const locale = uni.getStorageSync('lang') || "zh-cn"; //设置语言 - var value = ''; + let value = ''; // 存放解析后的语言值 + let langPath = ''; // 存放当前页面语言包路径 + try { //公共语言包(同步加载) var lang = loadLangPackSync(locale, 'common'); //当前页面语言包(同步加载) let route = _this.route; - let langPath = processRoutePath(route); - console.log(`当前语言: ${locale}, 当前页面语言包路径: ${langPath}`); + langPath = processRoutePath(route); // 加载当前页面语言包 let currentPageLang = loadLangPackSync(locale, langPath); @@ -102,7 +103,7 @@ export default { } } catch (e) { - console.error('解析语言包失败:', e); + console.error('解析语言包失败:', e, { langPath, field, locale }); value = field; } @@ -115,7 +116,10 @@ export default { if (value == undefined || (value == 'title' && field == 'title')) value = ''; // field // 多语言调试,注释后可以关闭控制台输出 - console.log(`字段: ${field}, 值: ${value}`) + if (field == value) { + console.warn(`警告: 字段 ${field} 在语言包 ${langPath} 中未找到对应值,使用默认值 ${field} 当前语言: ${locale}`); + } + return value; }, /** diff --git a/common/js/util.js b/common/js/util.js index d47f9e7..9977c54 100644 --- a/common/js/util.js +++ b/common/js/util.js @@ -7,15 +7,19 @@ import { -// 首页路径 +// 关于页面路径,使用常量导出 export const INDEX_PAGE_URL = '/pages/index/index'; +export const CATEGORY_PAGE_URL = '/pages_goods/category'; +export const CONTACT_PAGE_URL = '/pages_tool/contact/contact'; +export const MEMBER_PAGE_URL = '/pages_tool/member/index'; +export const LOGIN_PAGE_URL = '/pages_tool/login/login'; // 当前最新的tabBar.list (参见pages.json 中的tabBar.list 配置) export const systemTabBarList = [ INDEX_PAGE_URL, - '/pages_goods/category', - '/pages_tool/contact/contact', - '/pages_tool/member/index' + CATEGORY_PAGE_URL, + CONTACT_PAGE_URL, + MEMBER_PAGE_URL ]; /** @@ -89,7 +93,7 @@ export const checkTabBarActive = (linkUrl, currentPageRoute) => { const linkUrlParts = adaptSubpackageUrl(linkUrl).split('/'); const currentPageRouteParts = currentPageRoute.split('/'); - console.log('diy-bottom-nav verify:', { linkUrlParts, currentPageRouteParts}); + // console.log('diy-bottom-nav verify:', { linkUrlParts, currentPageRouteParts}); try { // 二级页面 @@ -109,17 +113,24 @@ export const checkTabBarActive = (linkUrl, currentPageRoute) => { } export default { + /** 导出页面URL常量 */ + MEMBER_PAGE_URL, + CATEGORY_PAGE_URL, + CONTACT_PAGE_URL, + INDEX_PAGE_URL, + LOGIN_PAGE_URL, + /** * 页面跳转 * @param {string} to 跳转链接 /pages/idnex/index - * @param {Object} param 参数 {key : value, ...} - * @param {string} mode 模式 + * @param {Object} param 参数 {key : value, ...}, 默认{} + * @param {string} mode 模式 navigateTo、redirectTo、reLaunch、tabbar, 默认navigateTo */ - redirectTo(to, param, mode) { + redirectTo(to, param = {}, mode = 'navigateTo') { let url = to; // 替换url中的前缀 - console.log('redirectTo', to, param, mode); + console.log('页面跳转 redirectTo', to, param, mode); url = adaptSubpackageUrl(url); console.log('adaptSubpackageUrl', url); @@ -146,26 +157,26 @@ export default { // 如果url不包含tabBarList中的路径,根据mode判断跳转方式 switch (mode) { case 'tabbar': - // 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 + // 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。重置页面栈,仅保留 tabBar 页面 uni.switchTab({ url }); break; case 'redirectTo': - // 关闭当前页面,跳转到应用内的某个页面。 + // 关闭当前页面,跳转到应用内的某个页面。替换栈顶页面,长度不变(上限10层) uni.redirectTo({ url }); break; case 'reLaunch': - // 关闭所有页面,打开到应用内的某个页面。 + // 关闭所有页面,打开到应用内的某个页面。清空栈后打开新页面,长度=1 uni.reLaunch({ url }); break; default: - // 保留当前页面,跳转到应用内的某个页面 - console.log('保留当前页面,跳转到应用内的某个页面', url); + // 保留当前页面,跳转到应用内的某个页面,新增页面到栈顶,长度+1(上限10层) + console.log('保留当前页面,navigateTo跳转到应用内的某个页面', url); uni.navigateTo({ url }); @@ -592,6 +603,9 @@ export default { } return cloneObj }, + + + /** * 自定义模板的跳转链接 * @param {Object} link @@ -792,7 +806,7 @@ export default { let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 return routes.length ? routes[routes.length - 1].route : ''; }, - goBack(backUrl = '/pages/index/index') { + goBack(backUrl = INDEX_PAGE_URL) { if (getCurrentPages().length == 1) { this.redirectTo(backUrl); } else { @@ -1148,5 +1162,47 @@ export default { verifyMobile(mobile) { var parse = /^\d{11}$/.test(mobile); return parse; + }, + /** + * 判断是否为快应用环境 + * @returns {boolean} 是否为快应用 + */ + isQuickApp() { + // #ifndef QUICKAPP-WEBVIEW + let _isQuickApp = false; + try { + const ua = navigator?.userAgent?.toLowerCase(); + console.log('ua = ', ua); + _isQuickApp = ua.indexOf('quickapp') !== -1; + + if (!_isQuickApp) { + // 特殊说明由于网站是嵌入到快应用的Webview组件中,UA中不会包含quickapp字符串, + // 但是会包含uniacid参数,所以这里通过uniacid参数来判断是否为快应用环境 + _isQuickApp = ua.indexOf('uniacid=') !== -1; + } + } catch (e) {} + + if (!_isQuickApp) { + const systemInfo = this.getDeviceInfo(); + _isQuickApp = systemInfo?.platform === 'quickapp' || process?.env?.UNI_PLATFORM === 'quickapp'; + } + return _isQuickApp; + // #endif + + return true; + }, + /** + * 判断是否为华为快应用环境 + * @returns {boolean} 是否为华为快应用 + */ + isHuaweiQuickApp() { + if (!this.isQuickApp()) return false; + + // #ifndef QUICKAPP-WEBVIEW-HUAWEI + const systemInfo = this.getDeviceInfo(); + return systemInfo.brand === 'HUAWEI' || systemInfo.manufacturer === 'HUAWEI' || + (typeof qh !== 'undefined' && qh.platform === 'huawei'); + // #endif + return true; } } \ No newline at end of file diff --git a/components-diy/diy-bottom-nav.vue b/components-diy/diy-bottom-nav.vue index 71441c9..efe030b 100644 --- a/components-diy/diy-bottom-nav.vue +++ b/components-diy/diy-bottom-nav.vue @@ -145,7 +145,7 @@ export default { let linkUrl = link.wap_url; // 首页特殊处理 - if (linkUrl === '/pages/index/index' && this.name === 'DIY_VIEW_INDEX') { + if (linkUrl === this.$util.INDEX_PAGE_URL && this.name === 'DIY_VIEW_INDEX') { return true; } diff --git a/components-diy/diy-coupon.vue b/components-diy/diy-coupon.vue index 52d0b86..a1eaf02 100644 --- a/components-diy/diy-coupon.vue +++ b/components-diy/diy-coupon.vue @@ -454,7 +454,7 @@ export default { } }); } else { - this.$refs.login.open('/pages/index/index'); + this.$refs.login.open(this.$util.INDEX_PAGE_URL); this.couponBtnSwitch = false; } }, diff --git a/components-diy/diy-digit.vue b/components-diy/diy-digit.vue index 83cdf74..de1f43d 100644 --- a/components-diy/diy-digit.vue +++ b/components-diy/diy-digit.vue @@ -90,7 +90,7 @@ export default { // 页面跳转 redirectTo(item) { - if (!item.wap_url || this.$util.getCurrRoute() != 'pages/member/index' || this.storeToken) { + if (!item.wap_url || this.$util.getCurrRoute() != this.$util.MEMBER_PAGE_URL || this.storeToken) { console.log(item); this.$util.diyRedirectTo(item); } else { diff --git a/components-diy/diy-fenxiao-goods-list.vue b/components-diy/diy-fenxiao-goods-list.vue index fbdd61f..4b0e073 100644 --- a/components-diy/diy-fenxiao-goods-list.vue +++ b/components-diy/diy-fenxiao-goods-list.vue @@ -75,7 +75,7 @@ export default { this.currentRoute = '/' + currentPage.route; if (!this.storeToken) { this.$util.redirectTo( - '/pages_tool/login/login', + this.$util.LOGIN_PAGE_URL, { back: this.currentRoute }, diff --git a/components-diy/diy-graphic-nav.vue b/components-diy/diy-graphic-nav.vue index d645bb3..644b1d1 100644 --- a/components-diy/diy-graphic-nav.vue +++ b/components-diy/diy-graphic-nav.vue @@ -159,7 +159,7 @@ export default { redirectTo(link) { if (link.wap_url) { - if (this.$util.getCurrRoute() == 'pages/member/index' && !this.storeToken) { + if (this.$util.getCurrRoute() == this.$util.MEMBER_PAGE_URL && !this.storeToken) { this.$refs.login.open(link.wap_url); return; } diff --git a/components-diy/diy-group.vue b/components-diy/diy-group.vue index 41541b4..16eebc3 100644 --- a/components-diy/diy-group.vue +++ b/components-diy/diy-group.vue @@ -251,6 +251,16 @@ + + + + @@ -260,8 +270,8 @@ + + \ No newline at end of file diff --git a/components-diy/diy-wechat-channel.vue b/components-diy/diy-wechat-channel.vue new file mode 100644 index 0000000..f1dc278 --- /dev/null +++ b/components-diy/diy-wechat-channel.vue @@ -0,0 +1,232 @@ + + + + + + \ No newline at end of file diff --git a/components/common-payment/payment.js b/components/common-payment/payment.js index 03b039d..8e26c06 100644 --- a/components/common-payment/payment.js +++ b/components/common-payment/payment.js @@ -270,7 +270,7 @@ export default { }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 1000) } } diff --git a/components/ns-empty/ns-empty.vue b/components/ns-empty/ns-empty.vue index 3d46f4a..a11fe1e 100644 --- a/components/ns-empty/ns-empty.vue +++ b/components/ns-empty/ns-empty.vue @@ -45,7 +45,7 @@ export default { if (this.emptyBtn.url) { this.$util.redirectTo(this.emptyBtn.url, {}, 'redirectTo'); } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } }, re(text) { diff --git a/components/ns-goods-sku/ns-goods-sku-index.vue b/components/ns-goods-sku/ns-goods-sku-index.vue index 345b7a1..f57f889 100644 --- a/components/ns-goods-sku/ns-goods-sku-index.vue +++ b/components/ns-goods-sku/ns-goods-sku-index.vue @@ -28,7 +28,7 @@ export default { */ addCart(config, data, event) { if (!this.storeToken) { - this.$refs.login.open('/pages/index/index') + this.$refs.login.open(this.$util.INDEX_PAGE_URL); return; } if (config == "detail" || data.is_virtual) { diff --git a/components/ns-goods-sku/ns-goods-sku.vue b/components/ns-goods-sku/ns-goods-sku.vue index 2275870..33851d4 100644 --- a/components/ns-goods-sku/ns-goods-sku.vue +++ b/components/ns-goods-sku/ns-goods-sku.vue @@ -413,7 +413,7 @@ this.isLoad = false; if (callback) callback(); } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -441,7 +441,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -467,7 +467,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -500,7 +500,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -527,7 +527,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -553,7 +553,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -579,7 +579,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -606,7 +606,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); @@ -630,7 +630,7 @@ this.skuId = res.data[0].sku_id; this.goodsSkuInfo = obj; } else { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); diff --git a/components/ns-login/ns-login.vue b/components/ns-login/ns-login.vue index 8172f78..f14421e 100644 --- a/components/ns-login/ns-login.vue +++ b/components/ns-login/ns-login.vue @@ -42,26 +42,22 @@ - + @click="isAgree = !isAgree"> 我同意 - 《隐私条款》 - 《用户服务协议》 + 《隐私条款》 + 《用户服务协议》 - @@ -71,7 +67,8 @@ - + 暂不登录 @@ -118,8 +115,8 @@ 获取手机号 - - + + @@ -226,7 +223,7 @@ export default { if (siteInfo) { this.site_name = siteInfo.site_name; } - }, + }, methods: { // 同意协议 authno() { @@ -254,7 +251,7 @@ export default { }, // 打开弹窗 - open(url) { + open(url = '', mode = 'navigateTo') { if (url) this.url = url; // #ifdef MP this.getCode(authData => { @@ -266,28 +263,33 @@ export default { if (this.$util.isWeChatMiniProgram()) { // 微信小程序环境,使用微信授权登录 let authData = uni.getStorageSync('authInfo'); - if (authData) this.authLogin(authData); - else this.getCode(); + if (authData) { + this.authLogin(authData); + } else { + this.getCode(authData => { + this.authLogin(authData, 'authOnlyLogin'); + }); + } } else if (this.$util.isWeiXin()) { // 微信浏览器环境,显示登录页面 - this.toLogin(); + this.toLogin(mode); } else { // 其他浏览器环境,显示登录页面 - this.toLogin(); + this.toLogin(mode); } // #endif // #ifndef MP || H5 - this.toLogin(); + this.toLogin(mode); // #endif }, // 跳转去登录页 - toLogin() { - if (this.url) this.$util.redirectTo('/pages_tool/login/login', { + toLogin(mode = 'navigateTo') { + if (this.url) this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: encodeURIComponent(this.url) - }); - else this.$util.redirectTo('/pages_tool/login/login'); + }, mode); + else this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, {}, mode); }, // 取消完善信息 @@ -535,7 +537,8 @@ export default { getPhoneNumber(e) { if (e.detail.errMsg === 'getPhoneNumber:ok') { const authInfo = uni.getStorageSync('authInfo'); - if (authInfo) { Object.assign(this.authMobileData, authInfo, e.detail); + if (authInfo) { + Object.assign(this.authMobileData, authInfo, e.detail); } if (uni.getStorageSync('source_member')) { this.authMobileData.source_member = uni.getStorageSync('source_member'); @@ -596,7 +599,7 @@ export default { } }); }, - + // 授权登录 authLogin(data, type = 'authLogin') { uni.showLoading({ @@ -686,8 +689,8 @@ export default { if (this.forceBindingMobileControl) { this.bindMobile(); - } else { - this.authLogin(authInfo); + } else { + this.authLogin(authInfo); } }, @@ -749,7 +752,7 @@ export default { // 跳转页面 tourl(url) { this.$util.redirectTo(url); - } + } } }; diff --git a/components/ns-payment/ns-payment.vue b/components/ns-payment/ns-payment.vue index 7bb750f..6550598 100644 --- a/components/ns-payment/ns-payment.vue +++ b/components/ns-payment/ns-payment.vue @@ -185,7 +185,7 @@ export default { title: '未获取到支付信息!' }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 1500); } } diff --git a/components/privacy-popup/privacy-popup.vue b/components/privacy-popup/privacy-popup.vue index 6ed70c8..0a53959 100644 --- a/components/privacy-popup/privacy-popup.vue +++ b/components/privacy-popup/privacy-popup.vue @@ -1,237 +1,385 @@ \ No newline at end of file diff --git a/components/register-reward/register-reward.vue b/components/register-reward/register-reward.vue index 4146909..7b42111 100644 --- a/components/register-reward/register-reward.vue +++ b/components/register-reward/register-reward.vue @@ -138,7 +138,7 @@ break; default: if (this.back) this.$util.redirectTo(decodeURIComponent(this.back), {}, 'redirectTo'); - else this.$util.redirectTo('/pages/index/index'); + else this.$util.redirectTo(this.$util.INDEX_PAGE_URL); break; } } diff --git a/docs/WECHAT_CHANNEL_INTEGRATION.md b/docs/WECHAT_CHANNEL_INTEGRATION.md new file mode 100644 index 0000000..dfd987e --- /dev/null +++ b/docs/WECHAT_CHANNEL_INTEGRATION.md @@ -0,0 +1,452 @@ +# 微信视频号集成指南 + +## 1. 概述 + +本文档提供了在UniApp项目中集成微信视频号的详细指导,包括组件实现、配置修改和使用方法。 + +## 2. 准备工作 + +### 2.1 微信小程序配置 + +在 `manifest.json` 文件中,需要确保微信小程序配置正确: + +```json +"mp-weixin": { + "appid": "你的小程序appid", + "setting": { + "urlCheck": false, + "postcss": false, + "es6": true, + "minified": true + }, + "usingComponents": true, + "permission": { + "scope.userLocation": { + "desc": "为了更好地为您提供服务" + } + }, + "requiredPrivateInfos": ["chooseLocation", "getLocation", "chooseAddress"], + "__usePrivacyCheck__": true, + "optimization": { + "subPackages": true + } +} +``` + +### 2.2 微信视频号API权限与关联 + +#### 2.2.1 权限说明 + +`wx.openChannelsActivity` API 是小程序的基础能力,不需要单独开通权限,但需要满足以下条件: + +- **跳转打开视频号视频**:无主体限制,基础库版本 2.19.2 及以上 +- **内嵌视频号视频**: + - 从基础库版本 2.25.1 至 2.31.1,小程序需与视频号视频相同主体或关联主体 + - 从基础库版本 2.31.1 开始,非个人主体小程序可内嵌非同主体/关联主体视频号视频 + +#### 2.2.2 小程序与视频号关联(可选) + +虽然跳转打开视频号视频无主体限制,但如果需要内嵌非同主体视频号视频(基础库 2.31.1 以下),则需要关联小程序与视频号: + +1. **小程序管理员操作** + - 登录微信小程序后台 + - 左侧菜单:设置 → 基本设置 + - 向下滚动找到「关联设置」部分 + - 点击「关联视频号」按钮 + - 输入视频号名称或视频号ID + - 点击「搜索」找到对应的视频号 + - 点击「发送关联邀请」 + +2. **视频号管理员操作** + - 视频号管理员需要在24小时内确认关联邀请 + - 视频号管理员登录 [视频号助手](https://channels.weixin.qq.com/) + - 进入「设置」→「关联设置」→「小程序关联」 + - 找到待确认的关联邀请 + - 点击「同意」完成关联 + +3. **关联失败处理** + - 检查视频号是否已完成实名认证 + - 检查小程序是否已发布上线 + - 检查视频号名称或ID是否输入正确 + - 如超过24小时未确认,需要重新发送关联邀请 + +#### 2.2.3 关联条件 + +- **小程序要求**:必须已经发布上线,未被处罚或限制 +- **视频号要求**:必须已经完成实名认证,状态正常 +- **数量限制**:同一个小程序最多可以关联50个视频号,同一个视频号最多可以关联50个小程序 +- **权限要求**:关联操作需要小程序管理员和视频号管理员共同确认 +- **主体要求**:小程序和视频号的主体可以不同,但需要双方管理员确认 + +#### 2.2.4 功能验证 + +可以通过以下方式验证视频号功能是否可用: + +1. **在微信开发者工具中验证** + - 在微信开发者工具中打开小程序 + - 在控制台执行以下代码: + ```javascript + console.log('是否支持视频号API:', typeof wx !== 'undefined' && typeof wx.openChannelsActivity === 'function'); + ``` + - 如果返回 `true`,则表示API可用 + +2. **在真机环境中验证** + - 使用微信扫码打开小程序 + - 触发视频号相关功能 + - 检查是否能正常打开视频号内容 + +3. **功能验证失败处理** + - 检查微信小程序基础库版本是否满足要求(跳转打开需要 2.19.2+,内嵌打开需要 2.25.1+) + - 对于内嵌打开,检查主体是否满足要求或是否已关联 + - 检查 `feedId` 等参数是否正确 + +## 3. 组件使用 + +### 3.1 单个视频号组件 (diy-wechat-channel.vue) + +#### 基本用法 + +```vue + +``` + +#### 属性说明 + +| 属性名 | 类型 | 默认值 | 说明 | +|--------|------|--------|------| +| channelName | String | "" | 视频号名称 | +| avatarUrl | String | "" | 视频号头像URL | +| videoTitle | String | "" | 视频标题 | +| coverUrl | String | "" | 视频封面URL | +| feedId | String | "" | 视频号内容ID,用于播放视频 | +| viewCount | Number | 0 | 视频观看次数 | +| showFollow | Boolean | false | 是否显示关注按钮 | +| componentAngle | String | "" | 组件圆角类型,可选值:round | +| topAroundRadius | Number | 0 | 顶部圆角半径 | +| bottomAroundRadius | Number | 0 | 底部圆角半径 | + +#### 事件说明 + +| 事件名 | 说明 | 参数 | +|--------|------|------| +| channel-tap | 点击视频号头像或名称时触发 | 视频号数据对象 | +| video-play | 点击视频播放时触发 | 视频号数据对象 | + +### 3.2 视频号列表组件 (diy-wechat-channel-list.vue) + +#### 基本用法 + +```vue + +``` + +#### 属性说明 + +| 属性名 | 类型 | 默认值 | 说明 | +|--------|------|--------|------| +| list | Array | [] | 视频号列表数据 | +| rowCount | Number | 2 | 每行显示的视频号数量 | +| showStyle | String | "fixed" | 显示样式,可选值:fixed, singleSlide | +| mode | String | "" | 显示模式 | +| font | Object | {} | 字体样式配置 | +| componentBgColor | String | "#fff" | 组件背景颜色 | +| componentAngle | String | "" | 组件圆角类型,可选值:round | +| topAroundRadius | Number | 0 | 顶部圆角半径 | +| bottomAroundRadius | Number | 0 | 底部圆角半径 | +| ornament | Object | {} | 装饰样式配置 | + +#### list数组项说明 + +| 属性名 | 类型 | 默认值 | 说明 | +|--------|------|--------|------| +| channelName | String | "" | 视频号名称 | +| coverUrl | String | "" | 视频封面URL | +| videoTitle | String | "" | 视频标题 | +| feedId | String | "" | 视频号内容ID,用于播放视频 | +| viewCount | Number | 0 | 视频观看次数 | + +## 4. 视频播放实现 + +小程序提供两种打开视频号视频的方式:跳转打开和内嵌打开。 + +### 4.1 跳转打开视频号视频 + +组件内部使用微信小程序的 `wx.openChannelsActivity` API 来打开视频号内容: + +```javascript +if (typeof wx !== 'undefined' && wx.openChannelsActivity) { + wx.openChannelsActivity({ + feedId: item.feedId, // 视频号内容ID,必填 + finderUserName: item.finderUserName, // 视频号ID(可选) + success: (res) => { + console.log('打开视频号成功', res); + }, + fail: (err) => { + console.error('打开视频号失败', err); + // 常见错误处理 + if (err.errCode === 40001) { + console.error('未授权,请检查小程序是否与视频号关联'); + } else if (err.errCode === 40002) { + console.error('参数错误,请检查feedId是否正确'); + } else if (err.errCode === 40003) { + console.error('视频号内容不存在或已被删除'); + } + } + }); +} else { + console.error('当前环境不支持微信视频号'); +} +``` + +### 4.2 内嵌视频号视频 + +从基础库 2.25.1 开始支持,小程序可以通过 `channel-video` 组件在小程序中内嵌视频号视频,且支持无弹窗跳转打开视频号对应视频,使用该组件时需注意: + +- 组件调用无资质要求 +- 暂不支持纯图片视频号内容 +- 在 UniApp 中使用时,需要用 `` 包裹以确保组件正确显示 + +```vue + + + + + +``` + +### 4.3 API参数说明 + +- **feedId**:视频号内容ID,必填,必须是有效的视频号内容ID +- **finderUserName**:视频号ID,可选 +- **feedToken**:非同主体视频号视频的标识,从基础库 2.31.1 开始支持,非个人主体小程序可使用 +- **success**:调用成功的回调函数 +- **fail**:调用失败的回调函数 +- **complete**:调用完成的回调函数(无论成功或失败) + +### 4.4 错误码说明 + +| 错误码 | 说明 | 解决方案 | +|--------|------|----------| +| 40001 | 未授权 | 对于内嵌打开,检查主体是否满足要求或是否已关联 | +| 40002 | 参数错误 | 检查feedId是否正确,确保是有效的视频号内容ID | +| 40003 | 视频号内容不存在或已被删除 | 确认feedId对应的视频号内容是否仍然存在 | +| 40004 | 系统错误 | 稍后重试,或联系微信公众平台客服 | + +### 4.5 获取参数方法 + +1. **获取finderUserName(视频号ID)** + - 登录视频号助手 + - 在首页可以查看自己的视频号ID + +2. **获取feedId(视频号内容ID)** + - 登录视频号助手 + - 在「动态管理」模块可以复制自己发表的每个视频对应的feedId + +3. **获取feed-token(非同主体视频号视频标识)** + - 登录MP平台,在「设置-基本设置-隐私与安全」找到「获取视频号视频ID权限」,并将开关打开 + - 移动端找到想要内嵌的视频号视频,并复制该视频的feed-token + - 注意:打开开关后24小时内生效,失效后需要再次打开开关;开关打开状态仅对当前操作者生效 + +### 4.6 主体判断逻辑 + +#### 主体信息查询 +小程序主体信息可通过小程序资料页-开发团队进行查询,视频号主体信息可通过视频号首页-认证进行查询。 + +#### 主体判断逻辑 +- **跳转打开视频号视频**:无主体限制,基础库版本 2.19.2 及以上 +- **内嵌视频号视频**: + - 从基础库版本 2.25.1 至 2.31.1,小程序需与视频号视频相同主体或关联主体 + - 从基础库版本 2.31.1 开始,非个人主体小程序可内嵌非同主体/关联主体视频号视频 + +关联主体申请流程可以参考:https://kf.qq.com/faq/190726e6JFja190726qMJBn6.html + + + +## 5. 注意事项 + +### 5.1 环境限制 + +- 微信视频号API只能在微信小程序环境中使用,其他环境(如H5、App)不支持 +- 跳转打开视频号视频需要微信小程序基础库版本 2.19.2 及以上 +- 内嵌视频号视频需要微信小程序基础库版本 2.25.1 及以上 +- 小程序与视频号关联仅在需要内嵌非同主体视频号视频(基础库 2.31.1 以下)时需要 +- 必须确保在 `manifest.json` 中设置 `usingComponents: true` 以启用组件支持 + +### 5.2 数据格式 + +确保传递给组件的数据格式正确,特别是 `feedId` 必须是有效的视频号内容ID + +### 5.3 图片资源 + +- 视频号头像和封面图片建议使用CDN地址,确保加载速度 +- 图片尺寸建议: + - 头像:200x200px + - 封面:640x360px + +### 5.4 权限和关联 + +- 确保在微信小程序后台开通了「打开视频号内容」权限 +- 确保小程序已与视频号成功关联 +- 关联操作需要小程序管理员和视频号管理员共同确认 + +## 6. 常见问题 + +### 6.1 视频无法播放 + +- 检查 `feedId` 是否正确,确保是有效的视频号内容ID +- 检查微信小程序基础库版本是否满足要求(跳转打开需要 2.19.2+,内嵌打开需要 2.25.1+) +- 对于内嵌打开,检查主体是否满足要求(基础库 2.31.1 以下需要相同主体或关联主体) +- 检查视频号内容是否仍然存在(未被删除) + +### 6.2 功能不可用 + +- 确认当前环境是否为微信小程序环境 +- 检查微信小程序基础库版本是否满足要求 +- 对于内嵌打开,检查主体条件是否满足 +- 检查 `feedId` 等参数是否正确 + +### 6.3 关联失败 + +- 检查视频号是否已完成实名认证 +- 检查小程序是否已发布上线 +- 检查视频号名称或ID是否输入正确 +- 确认视频号管理员是否在24小时内确认关联邀请 +- 如超过24小时未确认,需要重新发送关联邀请 + +### 6.4 组件显示异常 + +- 检查传递给组件的数据格式是否正确 +- 确认图片资源是否可访问 +- 检查微信小程序基础库版本是否支持视频号API + +### 6.5 样式问题 + +- 可通过组件的 `componentAngle`、`topAroundRadius`、`bottomAroundRadius` 等属性调整组件样式 +- 可通过 `componentBgColor` 属性调整组件背景颜色 +- 可通过 `font` 属性调整字体样式 + +### 6.6 环境兼容性问题 + +- 微信视频号API只能在微信小程序环境中使用 +- 在其他环境中,组件会显示但无法播放视频 +- 建议在非小程序环境中添加友好的提示信息 + +### 6.7 在uni-app中使用原生组件时,可能会遇到组件不显示的问题 + +在uni-app中使用原生组件时,可能会遇到组件不显示的问题。以下是已验证的解决方案: + +#### 解决方案 + +**方法一:使用 `` 包裹** + +在 UniApp 中使用 `channel-video` 组件时,必须用 `` 包裹以确保组件正确显示: + +``` vue + +``` + +**方法二:检查 `manifest.json` 配置** + +确保在 `manifest.json` 文件中正确设置了 `usingComponents: true`,特别是在 `mp-weixin` 部分: + +``` json +"mp-weixin": { + "appid": "你的小程序appid", + "usingComponents": true, + // 其他配置... +} +``` + +**方法三:检查微信小程序基础库版本** + +确保微信小程序基础库版本满足要求: +- 跳转打开视频号视频需要基础库版本 2.19.2 及以上 +- 内嵌视频号视频需要基础库版本 2.25.1 及以上 + +**方法四:检查参数是否正确** + +确保传递给 `channel-video` 组件的参数正确: +- `feedId`:视频号内容ID,必填 +- `finderUserName`:视频号ID,可选 +- `feedToken`:非同主体视频号视频的标识,可选(基础库 2.31.1+) + +## 7. 示例代码 + +### 7.1 单个视频号示例 + +```javascript +// 单个视频号数据 +const channelData = { + channelName: "示例视频号", + avatarUrl: "https://example.com/avatar.jpg", + videoTitle: "这是一个示例视频", + coverUrl: "https://example.com/cover.jpg", + feedId: "v02004g10000c3f7l7j5u87l33n8f160", + viewCount: 12345, + showFollow: true, + componentAngle: "round", + topAroundRadius: 10, + bottomAroundRadius: 10 +}; +``` + +### 7.2 视频号列表示例 + +```javascript +// 视频号列表数据 +const channelListData = { + list: [ + { + channelName: "示例视频号1", + coverUrl: "https://example.com/cover1.jpg", + videoTitle: "这是示例视频1", + feedId: "v02004g10000c3f7l7j5u87l33n8f160", + viewCount: 12345 + }, + { + channelName: "示例视频号2", + coverUrl: "https://example.com/cover2.jpg", + videoTitle: "这是示例视频2", + feedId: "v02004g10000c3f7m7j5u87l33n8f161", + viewCount: 67890 + } + ], + rowCount: 2, + showStyle: "fixed", + font: { + size: 14, + weight: "normal", + color: "#333" + }, + componentBgColor: "#fff", + componentAngle: "round", + topAroundRadius: 10, + bottomAroundRadius: 10 +}; +``` + +## 8. 总结 + +通过本文档提供的组件和配置指导,你可以在UniApp项目中轻松集成微信视频号功能,为用户提供更加丰富的内容体验。 + +如果在集成过程中遇到问题,请参考本文档的常见问题部分,或查阅微信官方文档获取更多帮助。 \ No newline at end of file diff --git a/docs/example/wechat-channel-demo.vue b/docs/example/wechat-channel-demo.vue new file mode 100644 index 0000000..045beba --- /dev/null +++ b/docs/example/wechat-channel-demo.vue @@ -0,0 +1,165 @@ + + + + + \ No newline at end of file diff --git a/lang/zh-cn/order/activist.js b/lang/zh-cn/order/activist.js index 3113f05..280682c 100644 --- a/lang/zh-cn/order/activist.js +++ b/lang/zh-cn/order/activist.js @@ -1,6 +1,6 @@ -export const lang = { - //title为每个页面的标题 - title: '退款', - checkDetail: '查看详情', - emptyTips: '暂无退款记录' -} +export const lang = { + //title为每个页面的标题 + title: '售后', + checkDetail: '查看详情', + emptyTips: '暂无售后记录' +} diff --git a/pages/index/index.vue b/pages/index/index.vue index 0a5cad0..cdab934 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -137,10 +137,8 @@ - - + - diff --git a/pages_goods/cart.vue b/pages_goods/cart.vue index 58ab7c3..7c1ded5 100644 --- a/pages_goods/cart.vue +++ b/pages_goods/cart.vue @@ -203,7 +203,7 @@ :emptyBtn="{ text: $lang('toGoodsCategoryPage'), url: '/pages_goods/category' }"> + }} diff --git a/pages_goods/public/css/list.scss b/pages_goods/public/css/list.scss index b7e0e4b..15aa9ca 100644 --- a/pages_goods/public/css/list.scss +++ b/pages_goods/public/css/list.scss @@ -400,7 +400,7 @@ .price { color: var(--price-color); color: #fff !important; - font-size: 15rpx !important; + font-size: 27rpx !important; font-weight: bold !important; } } diff --git a/pages_order/detail.vue b/pages_order/detail.vue index 16202b9..43043f3 100644 --- a/pages_order/detail.vue +++ b/pages_order/detail.vue @@ -669,7 +669,7 @@ export default { this.getEvaluateConfig(); this.getOrderData(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_order/detail?order_id=' + this.orderId + '&merchant_trade_no=' + this.merchantTradeNo }); } diff --git a/pages_order/detail_point.vue b/pages_order/detail_point.vue index 37ee721..de67e82 100644 --- a/pages_order/detail_point.vue +++ b/pages_order/detail_point.vue @@ -161,7 +161,7 @@ export default { if (this.storeToken) { this.getOrderData(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_order/detail_point?order_id=' + this.orderId }); } diff --git a/pages_order/list.vue b/pages_order/list.vue index d910357..6587fe6 100644 --- a/pages_order/list.vue +++ b/pages_order/list.vue @@ -156,11 +156,12 @@ - - + + + @@ -207,7 +208,7 @@ export default { if (this.$refs.mescroll) this.$refs.mescroll.refresh(); } else { this.$nextTick(() => { - this.$refs.login.open('/pages_order/list?status=' + this.orderStatus); + this.$refs?.login?.open('/pages_order/list?status=' + this.orderStatus, 'redirectTo'); }) } }, diff --git a/pages_promotion/fenxiao/apply.vue b/pages_promotion/fenxiao/apply.vue index ef3e730..cf484cf 100644 --- a/pages_promotion/fenxiao/apply.vue +++ b/pages_promotion/fenxiao/apply.vue @@ -196,7 +196,7 @@ duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } },1000); @@ -213,7 +213,7 @@ this.applyStatus(); this.getSourceMemberInfo(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_promotion/fenxiao/apply' }, 'redirectTo'); } @@ -261,7 +261,7 @@ this.status = res.data.status; this.isSub = false; if (this.status == 2) { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); } } this.$refs.loadingCover.hide(); @@ -410,7 +410,7 @@ if (options.from === 'navigateBack') { return false; } - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); return true; } }; diff --git a/pages_promotion/fenxiao/bill.vue b/pages_promotion/fenxiao/bill.vue index 724601d..039f51c 100644 --- a/pages_promotion/fenxiao/bill.vue +++ b/pages_promotion/fenxiao/bill.vue @@ -40,7 +40,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/child_fenxiao.vue b/pages_promotion/fenxiao/child_fenxiao.vue index b138908..5263f1f 100644 --- a/pages_promotion/fenxiao/child_fenxiao.vue +++ b/pages_promotion/fenxiao/child_fenxiao.vue @@ -59,7 +59,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/index.vue b/pages_promotion/fenxiao/index.vue index 178e244..4b4cfb4 100644 --- a/pages_promotion/fenxiao/index.vue +++ b/pages_promotion/fenxiao/index.vue @@ -307,7 +307,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index', {}, 'redirectTo'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL, {}, 'redirectTo'); }, 2000); } }, 1000); @@ -348,7 +348,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); }, 2000); } } @@ -367,7 +367,7 @@ export default { title: '当前分销商已冻结' }); setTimeout(() => { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); }, 2000); return; } @@ -457,7 +457,7 @@ export default { if (options.from === 'navigateBack') { return false; } - this.$util.redirectTo('/pages/member/index', {}, 'reLaunch'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL, {}, 'reLaunch'); return true; }, watch: { diff --git a/pages_promotion/fenxiao/level.vue b/pages_promotion/fenxiao/level.vue index a673cb0..1aeafd0 100644 --- a/pages_promotion/fenxiao/level.vue +++ b/pages_promotion/fenxiao/level.vue @@ -213,7 +213,7 @@ duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } },1000); @@ -224,7 +224,7 @@ this.getFenxiaoInfo(); this.getBasicsConfig(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_promotion/fenxiao/level' }); } diff --git a/pages_promotion/fenxiao/order.vue b/pages_promotion/fenxiao/order.vue index df7c28f..6981267 100644 --- a/pages_promotion/fenxiao/order.vue +++ b/pages_promotion/fenxiao/order.vue @@ -142,7 +142,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/order_detail.vue b/pages_promotion/fenxiao/order_detail.vue index 4158687..5ff1ead 100644 --- a/pages_promotion/fenxiao/order_detail.vue +++ b/pages_promotion/fenxiao/order_detail.vue @@ -105,7 +105,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } },1000); diff --git a/pages_promotion/fenxiao/promote.vue b/pages_promotion/fenxiao/promote.vue index e634a8d..5b9988b 100644 --- a/pages_promotion/fenxiao/promote.vue +++ b/pages_promotion/fenxiao/promote.vue @@ -84,7 +84,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/promote_code.vue b/pages_promotion/fenxiao/promote_code.vue index 7646fce..8b169ad 100644 --- a/pages_promotion/fenxiao/promote_code.vue +++ b/pages_promotion/fenxiao/promote_code.vue @@ -35,7 +35,7 @@ - + @@ -65,7 +65,7 @@ export default { this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/poster', data: { - page: '/pages/index/index', + page: this.$util.INDEX_PAGE_URL, qrcode_param: JSON.stringify({}), template_id: id }, @@ -154,7 +154,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/public/js/goods_list.js b/pages_promotion/fenxiao/public/js/goods_list.js index 67b8f53..5d37f94 100644 --- a/pages_promotion/fenxiao/public/js/goods_list.js +++ b/pages_promotion/fenxiao/public/js/goods_list.js @@ -27,7 +27,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); @@ -40,7 +40,7 @@ export default { if (!this.storeToken) { this.$util.redirectTo( - '/pages_tool/login/login', { + this.$util.LOGIN_PAGE_URL, { back: '/pages_promotion/fenxiao/goods_list' }, 'redirectTo' diff --git a/pages_promotion/fenxiao/team.vue b/pages_promotion/fenxiao/team.vue index 0662ff6..3b40974 100644 --- a/pages_promotion/fenxiao/team.vue +++ b/pages_promotion/fenxiao/team.vue @@ -113,7 +113,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/withdraw_apply.vue b/pages_promotion/fenxiao/withdraw_apply.vue index e5dfb4e..febccdc 100644 --- a/pages_promotion/fenxiao/withdraw_apply.vue +++ b/pages_promotion/fenxiao/withdraw_apply.vue @@ -90,7 +90,7 @@ this.getBankAccountInfo(); this.getWithdrawInfo(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_promotion/fenxiao/withdraw_apply' }); } diff --git a/pages_promotion/fenxiao/withdraw_list.vue b/pages_promotion/fenxiao/withdraw_list.vue index b60b536..0e37783 100644 --- a/pages_promotion/fenxiao/withdraw_list.vue +++ b/pages_promotion/fenxiao/withdraw_list.vue @@ -70,7 +70,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_promotion/fenxiao/withdrawal_detail.vue b/pages_promotion/fenxiao/withdrawal_detail.vue index 51d563a..e581f9b 100644 --- a/pages_promotion/fenxiao/withdrawal_detail.vue +++ b/pages_promotion/fenxiao/withdrawal_detail.vue @@ -67,7 +67,7 @@ export default { if (this.storeToken) { this.getDetail(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_promotion/fenxiao/withdraw_list' }, 'redirectTo'); } diff --git a/pages_promotion/point/list.vue b/pages_promotion/point/list.vue index db7101a..cea5470 100644 --- a/pages_promotion/point/list.vue +++ b/pages_promotion/point/list.vue @@ -302,7 +302,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); @@ -544,7 +544,7 @@ export default { if (getCurrentPages().length > 1) uni.navigateBack({ delta: 1 }); - else this.$util.redirectTo('/pages/index/index'); + else this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, getNewestGame() { this.$api.sendRequest({ diff --git a/pages_promotion/point/order_list.vue b/pages_promotion/point/order_list.vue index 1f87102..3260d45 100644 --- a/pages_promotion/point/order_list.vue +++ b/pages_promotion/point/order_list.vue @@ -120,7 +120,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index', {}, 'redirectTo'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL, {}, 'redirectTo'); }, 2000); } }, 1000); diff --git a/pages_promotion/point/public/js/payment.js b/pages_promotion/point/public/js/payment.js index c06528b..c0d7cbd 100644 --- a/pages_promotion/point/public/js/payment.js +++ b/pages_promotion/point/public/js/payment.js @@ -95,7 +95,7 @@ export default { title: '未获取到创建订单所需数据!' }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 1500); } return; @@ -122,7 +122,7 @@ export default { title: '未获取到创建订单所需数据!' }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 1500); } }, @@ -547,7 +547,7 @@ export default { } // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getOrderPaymentData(); } diff --git a/pages_promotion/point/result.vue b/pages_promotion/point/result.vue index ce14ea8..ebe3e74 100644 --- a/pages_promotion/point/result.vue +++ b/pages_promotion/point/result.vue @@ -23,7 +23,7 @@ this.$util.redirectTo('/pages_promotion/point/order_list', {}, 'redirectTo'); }, toIndex() { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }; diff --git a/pages_tool/goods/coupon.vue b/pages_tool/goods/coupon.vue index a95e53c..51cd200 100644 --- a/pages_tool/goods/coupon.vue +++ b/pages_tool/goods/coupon.vue @@ -99,7 +99,7 @@ export default { duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } }, 1000); diff --git a/pages_tool/goods/coupon_receive.vue b/pages_tool/goods/coupon_receive.vue index ff2eb34..c7e9944 100644 --- a/pages_tool/goods/coupon_receive.vue +++ b/pages_tool/goods/coupon_receive.vue @@ -58,7 +58,7 @@ duration: 2000 }); setTimeout(() => { - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); }, 2000); } },1000); diff --git a/pages_tool/login/find.vue b/pages_tool/login/find.vue index 07d65a9..ed89429 100644 --- a/pages_tool/login/find.vue +++ b/pages_tool/login/find.vue @@ -128,7 +128,7 @@ export default { if (this.stepShow > 0) { this.stepShow -= 1; } else { - this.$util.redirectTo('/pages_tool/login/login', '', 'redirectTo'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, '', 'redirectTo'); } }, // 下一步 @@ -318,7 +318,7 @@ export default { uni.removeStorage({ key: 'forgot_password_token' }); - this.$util.redirectTo('/pages_tool/login/login', {}, 'redirectTo'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, {}, 'redirectTo'); }, 1000); } else { this.stepShow -= 1; diff --git a/pages_tool/login/login.vue b/pages_tool/login/login.vue index 72e0bbe..a064dbe 100644 --- a/pages_tool/login/login.vue +++ b/pages_tool/login/login.vue @@ -234,13 +234,13 @@ export default { this.$util.showToast({ title: this.$lang('loginSuccessTip') }); - let back = this.back ? this.back : '/pages/member/index'; + let back = this.back ? this.back : this.$util.MEMBER_PAGE_URL; if (this.$refs.registerReward) this.$refs.registerReward.open(back); } else { if (this.back != '') { this.$util.redirectTo(decodeURIComponent(this.back), {}, 'reLaunch'); } else { - this.$util.redirectTo('/pages/member/index', {}, 'reLaunch'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL, {}, 'reLaunch'); } } }); @@ -348,13 +348,13 @@ export default { this.$store.dispatch('getCartNumber'); this.getMemberInfo(() => { if (can_receive_registergift == 1) { - let back = this.back ? this.back : '/pages/member/index'; + let back = this.back ? this.back : this.$util.MEMBER_PAGE_URL; if (this.$refs.registerReward) this.$refs.registerReward.open(back); } else { if (this.back != '') { this.$util.redirectTo(decodeURIComponent(this.back), {}, this.redirect); } else { - this.$util.redirectTo('/pages/member/index', {}, this.redirect); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL, {}, this.redirect); } } }) diff --git a/pages_tool/member/apply_withdrawal.vue b/pages_tool/member/apply_withdrawal.vue index d258e4f..a6422f0 100644 --- a/pages_tool/member/apply_withdrawal.vue +++ b/pages_tool/member/apply_withdrawal.vue @@ -78,7 +78,7 @@ this.getWithdrawInfo(); this.getBankAccountInfo(); } else { - this.$util.redirectTo('/pages_tool/login/login', { + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, { back: '/pages_tool/member/apply_withdrawal' }); } @@ -109,7 +109,7 @@ title: '未开启提现' }); setTimeout(() => { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); }, 1500); } } diff --git a/pages_tool/member/assets.vue b/pages_tool/member/assets.vue index 000b039..dd74538 100644 --- a/pages_tool/member/assets.vue +++ b/pages_tool/member/assets.vue @@ -92,7 +92,7 @@ export default { // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getAccountInfo(); } diff --git a/pages_tool/member/balance.vue b/pages_tool/member/balance.vue index 356e063..fa528b7 100644 --- a/pages_tool/member/balance.vue +++ b/pages_tool/member/balance.vue @@ -6,7 +6,7 @@ 'height': menuButtonBounding.height + 'px' }"> - + 账户余额 @@ -171,7 +171,7 @@ export default { if (options.from === 'navigateBack') { return false; } - this.$util.redirectTo('/pages/member/index', {}, 'reLaunch'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL, {}, 'reLaunch'); return true; }, watch: { diff --git a/pages_tool/member/cancellation.vue b/pages_tool/member/cancellation.vue index b1e05a8..ce6a8de 100644 --- a/pages_tool/member/cancellation.vue +++ b/pages_tool/member/cancellation.vue @@ -31,7 +31,7 @@ export default { if (option.back) this.back = option.back; // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getCancelAgreement(); } diff --git a/pages_tool/member/cancelrefuse.vue b/pages_tool/member/cancelrefuse.vue index eabb02a..d701ff3 100644 --- a/pages_tool/member/cancelrefuse.vue +++ b/pages_tool/member/cancelrefuse.vue @@ -26,7 +26,7 @@ export default { // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getStatus(); } @@ -43,7 +43,7 @@ export default { }); }, toIndex() { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); }, apply() { this.$util.redirectTo('/pages_tool/member/cancellation'); diff --git a/pages_tool/member/cancelstatus.vue b/pages_tool/member/cancelstatus.vue index a33ecf0..c1887be 100644 --- a/pages_tool/member/cancelstatus.vue +++ b/pages_tool/member/cancelstatus.vue @@ -46,7 +46,7 @@ onLoad(option) { // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getStatus(); } @@ -71,13 +71,13 @@ this.$store.commit('setMemberInfo', ''); this.$store.commit('setMemberInfo', ''); this.$store.dispatch('emptyCart'); - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } }); }, back() { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); }, revoke() { uni.showModal({ @@ -90,7 +90,7 @@ url: '/membercancel/api/membercancel/cancelApply', success: res => { if (res.code >= 0) { - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); } } }); diff --git a/pages_tool/member/cancelsuccess.vue b/pages_tool/member/cancelsuccess.vue index 4f975ab..8d48022 100644 --- a/pages_tool/member/cancelsuccess.vue +++ b/pages_tool/member/cancelsuccess.vue @@ -25,7 +25,7 @@ // 判断登录 if (!this.storeToken) { - this.$util.redirectTo('/pages_tool/login/login'); + this.$util.redirectTo(this.$util.LOGIN_PAGE_URL); } else { this.getStatus(); } @@ -40,7 +40,7 @@ this.$store.commit('setToken', ''); this.$store.commit('setMemberInfo', ''); this.$store.dispatch('emptyCart'); - this.$util.redirectTo('/pages/index/index'); + this.$util.redirectTo(this.$util.INDEX_PAGE_URL); } } } diff --git a/pages_tool/member/card.vue b/pages_tool/member/card.vue index 0096af2..6f8a1de 100644 --- a/pages_tool/member/card.vue +++ b/pages_tool/member/card.vue @@ -183,7 +183,7 @@ export default { if (options.from === 'navigateBack') { return false; } - this.$util.redirectTo('/pages/member/index'); + this.$util.redirectTo(this.$util.MEMBER_PAGE_URL); return true; } }; @@ -220,7 +220,7 @@ export default { } -