From a847ae93fda0a55dadbfecad5982d040f2927e6a Mon Sep 17 00:00:00 2001 From: maqian Date: Wed, 15 Oct 2025 17:54:01 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8D=83=E4=BA=BA=E5=8D=83=E7=A0=81=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/sp-login/index.weapp.js | 14 ++++++++++++++ src/subpages/auth/login.js | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/components/sp-login/index.weapp.js b/src/components/sp-login/index.weapp.js index 0ddefbb63..6a9f2ae9f 100644 --- a/src/components/sp-login/index.weapp.js +++ b/src/components/sp-login/index.weapp.js @@ -86,6 +86,7 @@ function SpLogin(props, ref) { // const { uid } = entryLaunch.getLaunchParams() const { uid, dtid } = Taro.getStorageSync(SG_ROUTER_PARAMS) const { gu_user_id, gu } = Taro.getStorageSync(SG_GUIDE_PARAMS) + const { source_id, monitor_id, latest_source_id, latest_monitor_id } = Taro.getStorageSync('sourceInfo') // 千人千码参数 if (uid) { // 分销绑定 params['uid'] = uid @@ -110,6 +111,19 @@ function SpLogin(props, ref) { params['work_userid'] = work_userid } + if (source_id) { + params['source_id'] = source_id + } + if (monitor_id) { + params['monitor_id'] = monitor_id + } + if (latest_source_id) { + params['latest_source_id'] = latest_source_id + } + if (latest_monitor_id) { + params['latest_monitor_id'] = latest_monitor_id + } + try { const { token, is_new } = await api.wx.newlogin(params) if (token) { diff --git a/src/subpages/auth/login.js b/src/subpages/auth/login.js index 5eccd98a0..b233940df 100644 --- a/src/subpages/auth/login.js +++ b/src/subpages/auth/login.js @@ -110,6 +110,7 @@ export default class Login extends Component { } async handleSubmit() { + const { source_id, monitor_id, latest_source_id, latest_monitor_id } = Taro.getStorageSync('sourceInfo') // 千人千码参数 const { redirect } = this.$instance.router.params const { loginType } = this.state const { mobile, password, vcode } = this.state.info @@ -145,6 +146,19 @@ export default class Login extends Component { params['auth_type'] = 'local' + if (source_id) { + params['source_id'] = source_id + } + if (monitor_id) { + params['monitor_id'] = monitor_id + } + if (latest_source_id) { + params['latest_source_id'] = latest_source_id + } + if (latest_monitor_id) { + params['latest_monitor_id'] = latest_monitor_id + } + try { const { token, error_message } = await api.wx.newloginh5(params) From 7d573bd0da6cbc4a9ecb5f79332357d6fb5ab584 Mon Sep 17 00:00:00 2001 From: maqian Date: Wed, 15 Oct 2025 18:37:20 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/subpages/member/index.js | 157 +++++++++++++++------------------ src/subpages/member/index.scss | 1 + 2 files changed, 74 insertions(+), 84 deletions(-) diff --git a/src/subpages/member/index.js b/src/subpages/member/index.js index 7ae373ea1..76f1d8616 100644 --- a/src/subpages/member/index.js +++ b/src/subpages/member/index.js @@ -431,13 +431,17 @@ function MemberIndex(props) { Taro.navigateTo({ url: link }) } } + + const onLoginChange = (url) => { + if (!isLogin) return + Taro.navigateTo({ url }) + } + const VipGradeDom = () => { return ( { - Taro.navigateTo({ url: '/subpages/member/member-level' }) - }} + onClick={() => onLoginChange('/subpages/member/member-level')} > {{ @@ -478,101 +482,86 @@ function MemberIndex(props) { className='header-block' style={userInfo?.gradeInfo?.grade_background ? memberBckStyle : {}} > - - - { - if (isLogin) { - Taro.navigateTo({ url: '/subpages/member/user-info' }) - } - }} - style={{ width: '72px', height: '72px' }} - > - - + + + + onLoginChange('/subpages/member/user-info')} + style={{ width: '72px', height: '72px' }} + > + + - - {isLogin ? ( - <> - Taro.navigateTo({ url: '/subpages/member/user-info' })} - > - {userInfo?.username || userInfo?.mobile} - - - {VipGradeDom()} - {/* */} - - - ) : ( - + + {isLogin ? ( + <> + onLoginChange('/subpages/member/user-info')} + > + {userInfo?.username || userInfo?.mobile} + + + {VipGradeDom()} + {/* */} + + + ) : ( 点击登录 - - )} + )} + + + + {/* + */} + {isLogin && config.menu.member_code && ( + onLoginChange('/marketing/pages/member/member-code')} + > + )} + - - {/* - */} - {isLogin && config.menu.member_code && ( - Taro.navigateTo({ url: '/marketing/pages/member/member-code' })} - > - )} - - - - - { - Taro.navigateTo({ url: '/subpages/marketing/coupon' }) - }} - > + } + onClick={() => onLoginChange('/subpages/marketing/coupon')} > {isLogin ? state.couponCount || 0 : '···'} 优惠券 - - { - handleClickLink('/subpages/member/point-detail') - }} - > - + + onLoginChange('/subpages/member/point-detail')}> {isLogin ? state.point || 0 : '···'} 积分 - + - + {/* */} diff --git a/src/subpages/member/index.scss b/src/subpages/member/index.scss index e72be77ef..b6cf5d71e 100644 --- a/src/subpages/member/index.scss +++ b/src/subpages/member/index.scss @@ -88,6 +88,7 @@ .login-text { color: #1a1a1a; + font-size: 30px; } } From fd7b35da8582d5dcad9f3adc1399c11409610e4f Mon Sep 17 00:00:00 2001 From: maqian Date: Thu, 16 Oct 2025 09:54:30 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E4=B8=AD=E5=BF=83ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/subpages/member/index.js | 61 ++++++++++++++---------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/src/subpages/member/index.js b/src/subpages/member/index.js index 7ae373ea1..17d2ad740 100644 --- a/src/subpages/member/index.js +++ b/src/subpages/member/index.js @@ -431,13 +431,17 @@ function MemberIndex(props) { Taro.navigateTo({ url: link }) } } + + const onLoginChange = (url) => { + if (!isLogin) return + Taro.navigateTo({ url }) + } + const VipGradeDom = () => { return ( { - Taro.navigateTo({ url: '/subpages/member/member-level' }) - }} + onClick={() => onLoginChange('/subpages/member/member-level')} > {{ @@ -478,15 +482,11 @@ function MemberIndex(props) { className='header-block' style={userInfo?.gradeInfo?.grade_background ? memberBckStyle : {}} > - + { - if (isLogin) { - Taro.navigateTo({ url: '/subpages/member/user-info' }) - } - }} + onClick={() => onLoginChange('/subpages/member/user-info')} style={{ width: '72px', height: '72px' }} > Taro.navigateTo({ url: '/subpages/member/user-info' })} + onClick={() => onLoginChange('/subpages/member/user-info')} > {userInfo?.username || userInfo?.mobile} @@ -517,9 +517,7 @@ function MemberIndex(props) { ) : ( - - 点击登录 - + 点击登录 )} @@ -541,38 +539,27 @@ function MemberIndex(props) { {isLogin && config.menu.member_code && ( Taro.navigateTo({ url: '/marketing/pages/member/member-code' })} + onClick={() => onLoginChange('/marketing/pages/member/member-code')} > )} - { - Taro.navigateTo({ url: '/subpages/marketing/coupon' }) - }} + onLoginChange('/subpages/marketing/coupon')} > - } - > - {isLogin ? state.couponCount || 0 : '···'} - 优惠券 - - - { - handleClickLink('/subpages/member/point-detail') - }} - > - - {isLogin ? state.point || 0 : '···'} - 积分 - - + {isLogin ? state.couponCount || 0 : '···'} + 优惠券 + + + onLoginChange('/subpages/member/point-detail')}> + {isLogin ? state.point || 0 : '···'} + 积分 + - + {/* */} From ac2678de96774d04e2481cb339a5f1da4cb7b1d0 Mon Sep 17 00:00:00 2001 From: maqian Date: Thu, 16 Oct 2025 11:57:15 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/item/espier-detail.js | 31 ++++++++----- src/subpages/guide/item/espier-detail.js | 55 +++++++++++++++++------- 2 files changed, 60 insertions(+), 26 deletions(-) diff --git a/src/pages/item/espier-detail.js b/src/pages/item/espier-detail.js index e29767059..234fee801 100644 --- a/src/pages/item/espier-detail.js +++ b/src/pages/item/espier-detail.js @@ -103,7 +103,8 @@ const initialState = { recommendList: [], isParameter: false, imgHeightList: [], // 用于存储banner高度 - navigateMantle: false + navigateMantle: false, + defaultImageHeight: 520 // 默认图片高度,避免空白 } function EspierDetail(props) { @@ -141,7 +142,8 @@ function EspierDetail(props) { recommendList, isParameter, imgHeightList, - navigateMantle + navigateMantle, + defaultImageHeight } = state useEffect(() => { @@ -303,15 +305,24 @@ function EspierDetail(props) { } }) } - const banner = await getMultipleImageInfo(data.imgs) setState((draft) => { draft.info = { ...data, subscribe } draft.play = data.video ? true : false // 辉绮需求 - draft.imgHeightList = banner draft.promotionActivity = data.promotionActivity + // 初始化图片高度数组,使用默认高度 + draft.imgHeightList = new Array(data.imgs.length).fill(draft.defaultImageHeight) + }) + + // 异步计算图片真实高度,不阻塞页面渲染 + getMultipleImageInfo(data.imgs).then(heights => { + setState((draft) => { + draft.imgHeightList = heights + }) + }).catch(error => { + console.log('计算图片高度失败,使用默认高度:', error) }) if (isAPP() && userInfo) { @@ -337,7 +348,7 @@ function EspierDetail(props) { } } const getMultipleImageInfo = async (imageUrls = []) => { - let windowWidth = 375 + let windowWidth = defaultImageHeight try { const sys = Taro.getSystemInfoSync() if (sys && sys.windowWidth) windowWidth = sys.windowWidth @@ -347,9 +358,9 @@ function EspierDetail(props) { const promises = imageUrls.map(async (url) => { try { - const info = await Taro.getImageInfo({ src: url }) - const imgWidth = Number(info?.width) || 0 - const imgHeight = Number(info?.height) || 0 + const imageInfo = await Taro.getImageInfo({ src: url }) + const imgWidth = Number(imageInfo?.width) || 0 + const imgHeight = Number(imageInfo?.height) || 0 if (imgWidth > 0 && imgHeight > 0) { return Math.round((windowWidth * imgHeight) / imgWidth) } @@ -501,7 +512,7 @@ function EspierDetail(props) { className='goods-swiper' // current={curImgIdx} onChange={onChangeSwiper} - style={{ height: imgHeightList[curImgIdx] + 'px' }} + style={{ height: (imgHeightList[curImgIdx] || defaultImageHeight) + 'px' }} > {info.imgs.map((img, idx) => ( @@ -845,7 +856,7 @@ function EspierDetail(props) { {info?.itemParams?.map((item, index) => { return ( - + {item.attribute_name} {item.attribute_value_name} diff --git a/src/subpages/guide/item/espier-detail.js b/src/subpages/guide/item/espier-detail.js index ca39ca1d2..7171f267d 100644 --- a/src/subpages/guide/item/espier-detail.js +++ b/src/subpages/guide/item/espier-detail.js @@ -87,6 +87,7 @@ const initialState = { // 多规格商品选中的规格 curItem: null, imgHeightList: [], // 用于存储banner高度 + defaultImageHeight: 520, // 默认图片高度,避免空白 } function EspierDetail(props) { @@ -122,6 +123,7 @@ function EspierDetail(props) { subtaskId, curItem, imgHeightList, // 用于存储banner高度 + defaultImageHeight, } = state useEffect(() => { @@ -254,30 +256,51 @@ function EspierDetail(props) { } }) } - const banner = await getMultipleImageInfo(data.imgs) - setState((draft) => { draft.info = { ...data, subscribe } - draft.imgHeightList = banner draft.promotionActivity = data.promotionActivity + // 初始化图片高度数组,使用默认高度 + draft.imgHeightList = new Array(data.imgs.length).fill(draft.defaultImageHeight) + }) + + // 异步计算图片真实高度,不阻塞页面渲染 + getMultipleImageInfo(data.imgs).then(heights => { + setState((draft) => { + draft.imgHeightList = heights + }) + }).catch(error => { + console.log('计算图片高度失败,使用默认高度:', error) }) } - const getMultipleImageInfo = async (imageUrls) => { - const promises = imageUrls.map(url => - Taro.getImageInfo({ src: url }) - .then(info => info) - .catch(error => { - console.log('获取图片信息失败:', url, error) - // 返回一个默认高度或 null - return { width: 0, height: 650 } - }) - ) - const results = await Promise.all(promises) - return results.map(info => (info.height) / 2 > 650 ? 650 : info.height / 2) + const getMultipleImageInfo = async (imageUrls = []) => { + let windowWidth = defaultImageHeight + try { + const sys = Taro.getSystemInfoSync() + if (sys && sys.windowWidth) windowWidth = sys.windowWidth + } catch (e) { + console.log('获取系统信息失败,使用默认宽度:', e) + } + + const promises = imageUrls.map(async (url) => { + try { + const imageInfo = await Taro.getImageInfo({ src: url }) + const imgWidth = Number(imageInfo?.width) || 0 + const imgHeight = Number(imageInfo?.height) || 0 + if (imgWidth > 0 && imgHeight > 0) { + return Math.round((windowWidth * imgHeight) / imgWidth) + } + return Math.round(windowWidth) + } catch (error) { + console.log('获取图片信息失败:', url, error) + return Math.round(windowWidth) + } + }) + + return Promise.all(promises) } // 获取包裹 @@ -387,7 +410,7 @@ function EspierDetail(props) { className='goods-swiper' // current={curImgIdx} onChange={onChangeSwiper} - style={{ height: (imgHeightList[curImgIdx]) + 'px' }} + style={{ height: (imgHeightList[curImgIdx] || defaultImageHeight) + 'px' }} > {info.imgs.map((img, idx) => ( From 66c4f67018315778a30bbcd646105dcd0a8b6201 Mon Sep 17 00:00:00 2001 From: maqian Date: Fri, 17 Oct 2025 17:35:05 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E5=88=86=E4=BA=AB=E5=A5=BD=E5=8F=8B&?= =?UTF-8?q?=E5=88=86=E4=BA=AB=E6=9C=8B=E5=8F=8B=E5=9C=88=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/custom/custom-page.js | 9 +- src/pages/index.js | 5 +- src/pages/item/espier-detail.js | 5 +- src/pages/recommend/detail.js | 4 +- src/pages/share-land.js | 130 +++++++++++++------ src/subpages/community/espier-detail.js | 5 +- src/subpages/community/group-leaderdetail.js | 4 +- src/subpages/guide/coupon-home/index.js | 4 +- src/subpages/guide/custom/custom-page.js | 4 +- src/subpages/guide/item/espier-detail.js | 5 +- src/subpages/guide/recommend/detail.js | 4 +- src/subpages/mdugc/note-detail.js | 7 +- src/subpages/member/index.js | 4 +- src/subpages/pointshop/espier-detail.js | 5 +- src/subpages/purchase/index.js | 13 +- src/subpages/store/index.js | 5 +- src/utils/entryLaunch.js | 2 + src/utils/index.js | 15 +++ 18 files changed, 159 insertions(+), 71 deletions(-) diff --git a/src/pages/custom/custom-page.js b/src/pages/custom/custom-page.js index f192dedd8..06a15488b 100644 --- a/src/pages/custom/custom-page.js +++ b/src/pages/custom/custom-page.js @@ -15,7 +15,7 @@ import S from '@/spx' import { View } from '@tarojs/components' import { SpPage, SpSearch, SpSkuSelect, SpTabbar, SpLogin } from '@/components' import { WgtsContext } from '@/pages/home/wgts/wgts-context' -import { getDistributorId, log, entryLaunch, pickBy, showToast, VERSION_STANDARD } from '@/utils' +import { getDistributorId, log, entryLaunch, pickBy, showToast, VERSION_STANDARD, buildSharePath } from '@/utils' import { platformTemplateName, transformPlatformUrl } from '@/utils/platform' import { useLogin, useNavigation, useLocation, useModal } from '@/hooks' import { SG_ROUTER_PARAMS } from '@/consts/localstorage' @@ -107,8 +107,11 @@ function CustomPage(props) { const getAppShareInfo = async () => { const { id } = await entryLaunch.getRouteParams($instance.router.params) const { userId } = Taro.getStorageSync('userinfo') - const query = userId ? `?uid=${userId}&id=${id}` : `?id=${id}` - let path = `/pages/custom/custom-page${query}` + const params = { id } + if (userId) { + params.uid = userId + } + const path = buildSharePath('/pages/custom/custom-page', params) log.debug(`getAppShareInfo: ${path}`) return { diff --git a/src/pages/index.js b/src/pages/index.js index 617b0c9b4..70d62f1d3 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -35,7 +35,8 @@ import { pickBy, log, showToast, - entryLaunch + entryLaunch, + buildSharePath } from '@/utils' import { updateShopInfo } from '@/store/slices/shop' import { @@ -145,7 +146,7 @@ function Home() { if (VERSION_STANDARD) { params = Object.assign(params, { dtid: getCurrentShopId() }) } - let path = `/pages/index${isEmpty(params) ? '' : '?' + resolveStringifyParams(params)}` + const path = buildSharePath('/pages/index', params) console.log('useShareAppMessage path:', path, params) diff --git a/src/pages/item/espier-detail.js b/src/pages/item/espier-detail.js index 2053e4c39..a9007f7cd 100644 --- a/src/pages/item/espier-detail.js +++ b/src/pages/item/espier-detail.js @@ -39,7 +39,8 @@ import { isAPP, showToast, getDistributorId, - VERSION_STANDARD + VERSION_STANDARD, + buildSharePath } from '@/utils' import { fetchUserFavs } from '@/store/slices/user' @@ -237,7 +238,7 @@ function EspierDetail(props) { if (userInfo) { query['uid'] = userInfo.user_id } - const path = `/pages/item/espier-detail?${qs.stringify(query)}` + const path = buildSharePath('/pages/item/espier-detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/pages/recommend/detail.js b/src/pages/recommend/detail.js index 907338e79..ac64701fb 100644 --- a/src/pages/recommend/detail.js +++ b/src/pages/recommend/detail.js @@ -8,7 +8,7 @@ import { AtButton } from 'taro-ui' import { SpPage } from '@/components' import api from '@/api' import doc from '@/doc' -import { pickBy, log } from '@/utils' +import { pickBy, log, buildSharePath } from '@/utils' import { withPageWrapper } from '@/hocs' import { WgtFilm, WgtSlider, WgtWriting, WgtGoods, WgtHeading } from '../home/wgts' import './detail.scss' @@ -47,7 +47,7 @@ function GuideRecommendDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id } - const sharePath = `/pages/recommend/detail?${qs.stringify(query)}` + const sharePath = buildSharePath('/pages/recommend/detail', query) log.debug(`【/pages/recommend/detail】onShareAppMessage path: ${sharePath}`) return { title: title, diff --git a/src/pages/share-land.js b/src/pages/share-land.js index 497501fea..facc2b2d0 100644 --- a/src/pages/share-land.js +++ b/src/pages/share-land.js @@ -7,9 +7,14 @@ import qs from 'qs' import { entryLaunch, showToast } from '@/utils' /** - * path 页面路径(必穿参数)(参数格式 path=/pages/indes) - * 其余参数会自动携带到path后面,不用手动处理 - * scene=uid%3D884%26id%3D121%26qr%3DY%26path%3D%2Fsubpages%2Fprescription%2Fprescription-information(页面参数,可供验证) + * 统一分享落地页 + * 参数说明: + * - target_path: 目标页面路径 (必传, 如: target_path=pages/index) + * - 其余参数会自动携带到目标页面 target_path=pages/item/espier-detail&id=123 + * + * 兼容旧的场景: + * - from_scene: 导购欢迎语场景 + * - t: 特殊场景标识(如处方药) * @returns */ function ShareIand() { @@ -23,47 +28,94 @@ function ShareIand() { const resloveRouterParams = async () => { const routeParams = await entryLaunch.getRouteParams(router) Taro.setStorageSync(SG_ROUTER_PARAMS, routeParams) - if (/^guide_welcome/.test(routeParams?.from_scene)) { - // 导购欢迎语 - if (routeParams.from_scene == 'guide_welcome_home') { - // 导购欢迎语--商城首页 - Taro.redirectTo({ url: '/pages/index' }) - } else if (routeParams.from_scene == 'guide_welcome_category') { - // 导购欢迎语--商城分类页 - Taro.redirectTo({ url: '/pages/category/index' }) - } else if (routeParams.from_scene == 'guide_welcome_couponlist') { - // 导购欢迎语--商城优惠券中心 - Taro.redirectTo({ url: '/subpages/marketing/coupon-center' }) - } else if (routeParams.from_scene == 'guide_welcome_recommend') { - // 导购欢迎语--商城种草 - Taro.redirectTo({ url: '/pages/recommend/list' }) - } else if (routeParams.from_scene == 'guide_welcome_member') { - // 导购欢迎语--商城会员中心 - Taro.redirectTo({ url: '/subpages/member/index' }) - } else if (routeParams.from_scene == 'guide_welcome_itemlist') { - // 导购欢迎语--商城商品列表 - Taro.redirectTo({ url: '/pages/item/list' }) - } else { - showToast('未匹配到参数') - } - - // 欢迎语携带用户编号 + if (routeParams?.gu || routeParams?.gu_user_id) { // 导购参数处理 Taro.setStorageSync(SG_GUIDE_PARAMS, routeParams) Taro.setStorageSync(SG_GUIDE_PARAMS_UPDATETIME, dayjs().unix()) - if (S.getAuthToken()) { - entryLaunch.postGuideUV() - entryLaunch.postGuideTask() - } - } else { - // 分享的太阳码场景 - const _tempParams = {} - if (routeParams?.t == 1) { // 处方药 - _tempParams.order_id = routeParams.oi - _tempParams.prescription_order_random = routeParams.r - Taro.redirectTo({ url: `/subpages/prescription/prescription-information?${qs.stringify(_tempParams)}` }) + entryLaunch.postGuideUV() // 导购uv上报 + entryLaunch.postGuideTask() // 导购任务上报 } } + debugger + + // 处理导购欢迎语场景 + if (/^guide_welcome/.test(routeParams?.from_scene)) { + handleGuideWelcome(routeParams) + return + } + + // 处理处方药场景 + if (routeParams?.t == 1) { + handlePrescription(routeParams) + return + } + + // 处理通用分享场景 + if (routeParams?.target_path) { + debugger + handleGeneralShare(routeParams) + return + } + + // 默认跳转到首页 + Taro.redirectTo({ url: '/pages/index' }) + } + + // 处理导购欢迎语 + const handleGuideWelcome = (routeParams) => { + const welcomeRoutes = { + 'guide_welcome_home': '/pages/index', // 导购欢迎语--商城首页 + 'guide_welcome_category': '/pages/category/index', // 导购欢迎语--商城分类页 + 'guide_welcome_couponlist': '/subpages/marketing/coupon-center', // 导购欢迎语--商城优惠券中心 + 'guide_welcome_recommend': '/pages/recommend/list', // 导购欢迎语--商城种草 + 'guide_welcome_member': '/subpages/member/index', // 导购欢迎语--商城会员中心 + 'guide_welcome_itemlist': '/pages/item/list' // 导购欢迎语--商城商品列表 + } + + const targetUrl = welcomeRoutes[routeParams.from_scene] + if (targetUrl) { + Taro.redirectTo({ url: targetUrl }) + } else { + showToast('未匹配到参数') + } + } + + // 处理处方药场景 + const handlePrescription = (routeParams) => { + const params = { + order_id: routeParams.oi, + prescription_order_random: routeParams.r + } + Taro.redirectTo({ + url: `/subpages/prescription/prescription-information?${qs.stringify(params)}` + }) + } + + // 处理通用分享场景 + // 1、海报分享 pages/share-land?scene=share_id%3D68f2037ca18f8 通过shareid获取参数 + // 2、小程序转发 pages/share-land?target_path=pages/item/espier-detail&id=123 + // 3、其他小程序跳转过来 pages/share-land?target_path=pages/item/espier-detail&id=123 + // 4、小程序卡片跳转过来 pages/share-land?target_path=pages/item/espier-detail&id=123 + const handleGeneralShare = (routeParams) => { // routeParams:pa + const { target_path, ...otherParams } = routeParams + + // 过滤掉内部使用的参数 + const filteredParams = { ...otherParams } + delete filteredParams.scene + delete filteredParams.$taroTimestamp + + // 确保路径以 / 开头 + let normalizedPath = target_path + if (normalizedPath && !normalizedPath.startsWith('/')) { + normalizedPath = '/' + normalizedPath + } + + // 构建目标URL + const queryString = qs.stringify(filteredParams) + const targetUrl = queryString ? `${normalizedPath}?${queryString}` : normalizedPath + + console.log('通用分享跳转:', targetUrl) + Taro.redirectTo({ url: targetUrl }) } return null diff --git a/src/subpages/community/espier-detail.js b/src/subpages/community/espier-detail.js index 95660d42d..371c8195b 100644 --- a/src/subpages/community/espier-detail.js +++ b/src/subpages/community/espier-detail.js @@ -35,7 +35,8 @@ import { classNames, navigateTo, VERSION_PLATFORM, - isAPP + isAPP, + buildSharePath } from '@/utils' import doc from '@/doc' @@ -183,7 +184,7 @@ function EspierDetail(props) { if (userInfo) { query['uid'] = userInfo.uid } - const path = `/pages/item/espier-detail?${qs.stringify(query)}` + const path = buildSharePath('/pages/item/espier-detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/subpages/community/group-leaderdetail.js b/src/subpages/community/group-leaderdetail.js index f502a4109..2aabd6ba6 100644 --- a/src/subpages/community/group-leaderdetail.js +++ b/src/subpages/community/group-leaderdetail.js @@ -5,7 +5,7 @@ import Taro, { useShareAppMessage, useDidShow, getCurrentInstance } from '@taroj import { View, Text, Button } from '@tarojs/components' import { SpPage, SpImage, SpButton, SpUpload, SpCell } from '@/components' import { AtCountdown, AtButton, AtProgress } from 'taro-ui' -import { calcTimer, pickBy, log, isArray } from '@/utils' +import { calcTimer, pickBy, log, isArray, buildSharePath } from '@/utils' import doc from '@/doc' import api from '@/api' @@ -52,7 +52,7 @@ function GroupLeaderDetail(props) { } useShareAppMessage(() => { - const path = `/subpages/community/group-memberdetail?activity_id=${detail.activityId}` + const path = buildSharePath('/subpages/community/group-memberdetail', { activity_id: detail.activityId }) log.debug(`share path: ${path}`) return { imageUrl: shareImageUrl, diff --git a/src/subpages/guide/coupon-home/index.js b/src/subpages/guide/coupon-home/index.js index f17d9c7eb..872a34d3b 100644 --- a/src/subpages/guide/coupon-home/index.js +++ b/src/subpages/guide/coupon-home/index.js @@ -12,7 +12,7 @@ import { SpPage, SpScrollView, CouponItem } from '@/components' import api from '@/api' import doc from '@/doc' import qs from 'qs' -import { pickBy, log } from '@/utils' +import { pickBy, log, buildSharePath } from '@/utils' import { useQwLogin } from '@/hooks' import { BaHomeWgts, @@ -72,7 +72,7 @@ function GuideCouponIndex(props) { // subtask_id: subtaskId } - const path = `/subpages/marketing/coupon-center?${qs.stringify(query)}` + const path = buildSharePath('/subpages/marketing/coupon-center', query) log.debug(`getAppShareInfo: ${path}`) return { title: title, diff --git a/src/subpages/guide/custom/custom-page.js b/src/subpages/guide/custom/custom-page.js index 59b173d29..7c0f38cf8 100644 --- a/src/subpages/guide/custom/custom-page.js +++ b/src/subpages/guide/custom/custom-page.js @@ -11,7 +11,7 @@ import qs from 'qs' import { AtButton } from 'taro-ui' import { SpScreenAd, SpPage, SpSearch, SpRecommend, SpTabbar } from '@/components' import api from '@/api' -import { isWeixin, log } from '@/utils' +import { isWeixin, log, buildSharePath } from '@/utils' import entryLaunch from '@/utils/entryLaunch' import { updateStoreInfo } from '@/store/slices/guide' import { useImmer } from 'use-immer' @@ -78,7 +78,7 @@ function GuideCustomPage() { gu: `${work_userid}_${shop_code}`, subtask_id } - const path = `/pages/custom/custom-page?${qs.stringify(query)}` + const path = buildSharePath('/pages/custom/custom-page', query) log.debug(`share path: ${path}`) return { diff --git a/src/subpages/guide/item/espier-detail.js b/src/subpages/guide/item/espier-detail.js index ca39ca1d2..5bb29e85b 100644 --- a/src/subpages/guide/item/espier-detail.js +++ b/src/subpages/guide/item/espier-detail.js @@ -35,7 +35,8 @@ import { isWeb, pickBy, classNames, - navigateTo + navigateTo, + buildSharePath } from '@/utils' import doc from '@/doc' @@ -198,7 +199,7 @@ function EspierDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id: subtaskId } - const path = `/pages/item/espier-detail?${qs.stringify(query)}` + const path = buildSharePath('/pages/item/espier-detail', query) console.log('gu---------------------',path) log.debug(`share path: ${path}`) return { diff --git a/src/subpages/guide/recommend/detail.js b/src/subpages/guide/recommend/detail.js index e4d09305b..4b1e16435 100644 --- a/src/subpages/guide/recommend/detail.js +++ b/src/subpages/guide/recommend/detail.js @@ -8,7 +8,7 @@ import { AtButton } from 'taro-ui' import { SpPage } from '@/components' import api from '@/api' import doc from '@/doc' -import { pickBy, log } from '@/utils' +import { pickBy, log, buildSharePath } from '@/utils' import { WgtFilm, WgtSlider, WgtWriting, WgtGoods, WgtHeading } from '../components/wgts' import './detail.scss' @@ -46,7 +46,7 @@ function GuideRecommendDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id } - const sharePath = `/pages/recommend/detail?${qs.stringify(query)}` + const sharePath = buildSharePath('/pages/recommend/detail', query) log.debug(`【guide/recommend/detail】onShareAppMessage path: ${sharePath}`) return { title: title, diff --git a/src/subpages/mdugc/note-detail.js b/src/subpages/mdugc/note-detail.js index 22e891662..b7ccb1657 100644 --- a/src/subpages/mdugc/note-detail.js +++ b/src/subpages/mdugc/note-detail.js @@ -6,7 +6,7 @@ import { AtButton, AtInput, AtActionSheet, AtActionSheetItem } from 'taro-ui' import { SpHtml, SpFloatMenuItem, SpPage, SpImage, SpLoading, SpLogin, SpScrollView } from '@/components' import S from '@/spx' import { WgtFloorImg } from '@/pages/home/wgts' -import { classNames, isWeb, isWeixin, showToast, pickBy, isNumber } from '@/utils' +import { classNames, isWeb, isWeixin, showToast, pickBy, isNumber, buildSharePath } from '@/utils' import api from '@/api' import doc from '@/doc' @@ -131,10 +131,11 @@ function UgcNoteDetail(props) { draft.info['shareNums'] = shareInfo.share_nums }) } - console.log(`useShareAppMessage:`, `/subpages/mdugc/note-detail?post_id=${post_id}`) + const path = buildSharePath('/subpages/mdugc/note-detail', { post_id }) + console.log(`useShareAppMessage:`, path) return { title: info.title, - path: `/subpages/mdugc/note-detail?post_id=${post_id}`, + path, imageUrl: info.cover } }) diff --git a/src/subpages/member/index.js b/src/subpages/member/index.js index 7ae373ea1..7e8359674 100644 --- a/src/subpages/member/index.js +++ b/src/subpages/member/index.js @@ -11,6 +11,7 @@ import { useImmer } from 'use-immer' import S from '@/spx' import qs from 'qs' import req from '@/api/req' +import { buildSharePath } from '@/utils' import { SpLogin, SpImage, SpTabbar, SpPage, SpCell } from '@/components' import api from '@/api' @@ -185,10 +186,11 @@ function MemberIndex(props) { const { logo } = await api.distribution.getDistributorInfo({ distributor_id: 0 }) + const path = buildSharePath('/pages/index', {}) return { title: share_title, imageUrl: share_pic_wechatapp || logo, - path: '/pages/index' + path: path } }) diff --git a/src/subpages/pointshop/espier-detail.js b/src/subpages/pointshop/espier-detail.js index bf3756a81..41bedd70d 100644 --- a/src/subpages/pointshop/espier-detail.js +++ b/src/subpages/pointshop/espier-detail.js @@ -35,7 +35,8 @@ import { classNames, navigateTo, VERSION_PLATFORM, - isAPP + isAPP, + buildSharePath } from '@/utils' import doc from '@/doc' @@ -167,7 +168,7 @@ function PointShopEspierDetail(props) { if (userInfo) { query['uid'] = userInfo.user_id } - const path = `/subpages/pointshop/espier-detail?${qs.stringify(query)}` + const path = buildSharePath('/subpages/pointshop/espier-detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/subpages/purchase/index.js b/src/subpages/purchase/index.js index a55ecab53..cfe368726 100644 --- a/src/subpages/purchase/index.js +++ b/src/subpages/purchase/index.js @@ -28,7 +28,8 @@ import { classNames, pickBy, showToast, - log + log, + buildSharePath } from '@/utils' import { updatePurchaseShareInfo, @@ -168,11 +169,17 @@ function Home() { const activity_id = router.params?.activity_id || purchase_share_info?.activity_id const enterprise_id = router.params?.enterprise_id || purchase_share_info?.enterprise_id const data = await api.purchase.getEmployeeInviteCode({ enterprise_id, activity_id }) - log.debug(`/pages/purchase/auth?code=${data.invite_code}`) + const params = { + code: data.invite_code, + enterprise_id, + activity_id + } + const path = buildSharePath('/pages/purchase/auth', params) + log.debug(path) resolve({ title: activityInfo.name, imageUrl: activityInfo.share_pic, - path: `/pages/purchase/auth?code=${data.invite_code}&enterprise_id=${enterprise_id}&activity_id=${activity_id}` + path }) } }) diff --git a/src/subpages/store/index.js b/src/subpages/store/index.js index 999659567..72f119a59 100644 --- a/src/subpages/store/index.js +++ b/src/subpages/store/index.js @@ -31,7 +31,8 @@ import { entryLaunch, pickBy, log, - showToast + showToast, + buildSharePath } from '@/utils' import { useImmer } from 'use-immer' import { useNavigation, useDebounce } from '@/hooks' @@ -269,7 +270,7 @@ function StoreIndex() { const query = { dtid } - const path = `/subpages/store/index?${qs.stringify(query)}` + const path = buildSharePath('/subpages/store/index', query) log.debug(`share path: ${path}`) return { title: storeInfo?.name, diff --git a/src/utils/entryLaunch.js b/src/utils/entryLaunch.js index df6beb0d4..ee3140cc2 100644 --- a/src/utils/entryLaunch.js +++ b/src/utils/entryLaunch.js @@ -64,6 +64,8 @@ class EntryLaunch { ..._options, ...res } + delete _options?.distributorInfo + delete _options?.salespersonInfo } } else { _options = params diff --git a/src/utils/index.js b/src/utils/index.js index ebfe64f1a..0d6d92ff5 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -883,6 +883,21 @@ export const pxToUnitRpx = (px) => { return Taro.pxTransform(px * 2) } +/** + * 构建统一分享路径 + * @param {string} target_path - 目标页面路径 + * @param {object} params - 路径参数 + * @returns {string} 统一的分享落地页路径 + */ +export function buildSharePath(target_path, params = {}) { + const shareParams = { + target_path: target_path, + ...params + } + const queryString = qs.stringify(shareParams) + return `/pages/share-land${queryString ? '?' + queryString : ''}` +} + export { classNames, log, From 4ed62229f84a9dd4c535619d2f7fe5602a7c3ffb Mon Sep 17 00:00:00 2001 From: maqian Date: Fri, 17 Oct 2025 17:37:40 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=B5=B7=E6=8A=A5=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4-=E8=90=BD=E5=9C=B0?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/sp-poster/dw-distribution.alipay.js | 2 +- src/components/sp-poster/dw-distribution.js | 2 +- src/components/sp-poster/dw-goodsdetail.alipay.js | 2 +- src/components/sp-poster/dw-goodsdetail.js | 2 +- src/components/sp-poster/dw-guidecheckout.alipay.js | 4 ++-- src/components/sp-poster/dw-guidecheckout.js | 4 ++-- src/components/sp-poster/dw-guidegoodsdetail.alipay.js | 2 +- src/components/sp-poster/dw-guidegoodsdetail.js | 2 +- src/components/sp-poster/dw-invite.js | 2 +- src/components/sp-poster/dw-placeAnOrder.js | 2 +- src/components/sp-poster/dw-storeCode.js | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/sp-poster/dw-distribution.alipay.js b/src/components/sp-poster/dw-distribution.alipay.js index d6c7a08e7..d33c8feb5 100755 --- a/src/components/sp-poster/dw-distribution.alipay.js +++ b/src/components/sp-poster/dw-distribution.alipay.js @@ -37,7 +37,7 @@ class DistributionPoster { // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index // const res = await api.alipay.alipay_qrcode(`page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}`) const res = await Taro.request({ - url: `${host}/api/h5app/alipaymini/qrcode.png?path=${url}&appid=${appid}&company_id=${company_id}&user_id=${user_id}`, //仅为示例,并非真实的接口地址 + url: `${host}/api/h5app/alipaymini/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}target_path=${url}`, //仅为示例,并非真实的接口地址 header: { 'content-type': 'application/json' // 默认值 }, diff --git a/src/components/sp-poster/dw-distribution.js b/src/components/sp-poster/dw-distribution.js index 7d0bddf95..48ae2f070 100644 --- a/src/components/sp-poster/dw-distribution.js +++ b/src/components/sp-poster/dw-distribution.js @@ -32,7 +32,7 @@ class DistributionPoster { // const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}` const url = (isOpenShop && shop_status == 1) ? `marketing/pages/distribution/shop-home` : `pages/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?path=${url}&appid=${appid}&company_id=${company_id}&user_id=${user_id}` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}&target_path=${url}` console.log('wxappCode:', wxappCode) const pic = qrcode_bg_img || `${process.env.APP_IMAGE_CDN}/fenxiao_bk.png` diff --git a/src/components/sp-poster/dw-goodsdetail.alipay.js b/src/components/sp-poster/dw-goodsdetail.alipay.js index 6ad9ee9e1..9bf992f61 100644 --- a/src/components/sp-poster/dw-goodsdetail.alipay.js +++ b/src/components/sp-poster/dw-goodsdetail.alipay.js @@ -39,7 +39,7 @@ class GoodsDetailPoster { // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index // const res = await api.alipay.alipay_qrcode(`page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}`) const res = await Taro.request({ - url: `${host}/api/h5app/alipaymini/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}`, //仅为示例,并非真实的接口地址 + url: `${host}/api/h5app/alipaymini/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&target_path=pages/item/espier-detail`, //仅为示例,并非真实的接口地址 header: { 'content-type': 'application/json' // 默认值 }, diff --git a/src/components/sp-poster/dw-goodsdetail.js b/src/components/sp-poster/dw-goodsdetail.js index fe9c18d27..9e6cf15a0 100644 --- a/src/components/sp-poster/dw-goodsdetail.js +++ b/src/components/sp-poster/dw-goodsdetail.js @@ -39,7 +39,7 @@ class GoodsDetailPoster { const { itemId, imgs, price, distributorId } = this.info const { user_id, avatar } = this.userInfo || {} - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&dtid=${distributorId}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&dtid=${distributorId}&target_path=pages/item/espier-detail` // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-guidecheckout.alipay.js b/src/components/sp-poster/dw-guidecheckout.alipay.js index aa4682f8d..47fd91bf9 100644 --- a/src/components/sp-poster/dw-guidecheckout.alipay.js +++ b/src/components/sp-poster/dw-guidecheckout.alipay.js @@ -39,8 +39,8 @@ class GuideCheckoutPoster { * smid: 78,//导购id * distributor_id: 103,//门店id */ - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/cart/espier-checkout`}& - appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land& + appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&target_path=pages/cart/espier-checkout` console.log('GuideCheckoutPoster-wxappCode:', wxappCode) // 太阳码 diff --git a/src/components/sp-poster/dw-guidecheckout.js b/src/components/sp-poster/dw-guidecheckout.js index 3ac3c03c3..9dd863aa6 100644 --- a/src/components/sp-poster/dw-guidecheckout.js +++ b/src/components/sp-poster/dw-guidecheckout.js @@ -39,8 +39,8 @@ class GuideCheckoutPoster { * smid: 78,//导购id * distributor_id: 103,//门店id */ - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/cart/espier-checkout`}& - appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land& + appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&target_path=pages/cart/espier-checkout` console.log('wxappCode:', wxappCode) // 太阳码 diff --git a/src/components/sp-poster/dw-guidegoodsdetail.alipay.js b/src/components/sp-poster/dw-guidegoodsdetail.alipay.js index 799c8ac45..94265cff5 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.alipay.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.alipay.js @@ -29,7 +29,7 @@ class GuideGoodsDetailPoster { const { itemId, imgs, price, subtaskId } = this.info const { salesperson_id, avatar, company_id, work_userid, shop_code } = this.userInfo const gu = `${work_userid}_${shop_code}` - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&target_path=pages/item/espier-detail` console.log('GuideGoodsDetailPoster-wxappCode:', wxappCode) const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-guidegoodsdetail.js b/src/components/sp-poster/dw-guidegoodsdetail.js index 0be30e982..1d4cd0d17 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.js @@ -29,7 +29,7 @@ class GuideGoodsDetailPoster { const { itemId, imgs, price, subtaskId } = this.info const { salesperson_id, avatar, company_id, work_userid, shop_code } = this.userInfo const gu = `${work_userid}_${shop_code}` - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&target_path=pages/item/espier-detail` console.log('wxappCode:', wxappCode) const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-invite.js b/src/components/sp-poster/dw-invite.js index cd003e800..3934586f3 100644 --- a/src/components/sp-poster/dw-invite.js +++ b/src/components/sp-poster/dw-invite.js @@ -30,7 +30,7 @@ class GoodsDetailPoster { const data = await api.purchase.getEmployeeInviteCode({ enterprise_id, activity_id }) debugger - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/purchase/auth`}&appid=${appid}&company_id=${company_id}&code=${data.invite_code}&eid=${enterprise_id}&aid=${activity_id}` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&code=${data.invite_code}&eid=${enterprise_id}&aid=${activity_id}&target_path=pages/purchase/auth` console.log('wxappCode:', wxappCode) const pic = sharePic diff --git a/src/components/sp-poster/dw-placeAnOrder.js b/src/components/sp-poster/dw-placeAnOrder.js index 86519e159..e3c741d9d 100644 --- a/src/components/sp-poster/dw-placeAnOrder.js +++ b/src/components/sp-poster/dw-placeAnOrder.js @@ -28,7 +28,7 @@ class StoreCode { const { appid, company_id } = getExtConfigData() const path = `subpages/trade/detail` // const path = `subpages/member/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=${path}&appid=${appid}&company_id=${company_id}&order_id=${orderId}` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&order_id=${orderId}&target_path=${path}` const pic = `${process.env.APP_IMAGE_CDN}/bg_fxhb.png` // 背景图片 diff --git a/src/components/sp-poster/dw-storeCode.js b/src/components/sp-poster/dw-storeCode.js index 41c02b379..e9c21e989 100644 --- a/src/components/sp-poster/dw-storeCode.js +++ b/src/components/sp-poster/dw-storeCode.js @@ -26,7 +26,7 @@ class StoreCode { async drawPoster() { const { appid, company_id } = getExtConfigData() const path = `subpages/store/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=${path}&appid=${appid}&company_id=${company_id}&uid=${this.info.user_id}&dtid=${this.info.distributor_id}&qr=Y` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&uid=${this.info.user_id}&dtid=${this.info.distributor_id}&qr=Y&target_path=${path}` const pic = `${process.env.APP_IMAGE_CDN}/bg_fxhb.png` console.log('goods pic:', pic) From 00bd128c75588cdb8fb4838d0cbe15188e021b15 Mon Sep 17 00:00:00 2001 From: maqian Date: Tue, 21 Oct 2025 11:52:32 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E5=AF=BC=E8=B4=AD=E8=B4=A7=E6=9E=B6-?= =?UTF-8?q?=E6=B5=B7=E6=8A=A5=E5=88=86=E4=BA=AB=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sp-poster/dw-guidegoodsdetail.js | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/components/sp-poster/dw-guidegoodsdetail.js b/src/components/sp-poster/dw-guidegoodsdetail.js index 1d4cd0d17..d84bf9b71 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.js @@ -4,7 +4,7 @@ import { getExtConfigData } from '@/utils' import { drawText, drawImage, drawBlock } from './helper' const canvasWidth = 600 -const canvasHeight = 960 +// const canvasHeight = 960 class GuideGoodsDetailPoster { constructor(props) { @@ -16,13 +16,23 @@ class GuideGoodsDetailPoster { this.toRpx = toRpx } - getCanvasSize() { + async getCanvasSize() { + const { imgs } = this.info + const pic = imgs[0].replace('http:', 'https:') + const { width: goodsImageWidth, height: goodsImageHeight } = await Taro.getImageInfo({ src: pic }) + this.canvasWidth = canvasWidth + this.canvasImgHeight = parseInt( + (canvasWidth * goodsImageHeight) / goodsImageWidth + ) + this.canvasHeight = this.canvasImgHeight + 360 + return { - canvasWidth: canvasWidth, - canvasHeight: canvasHeight + canvasWidth: this.canvasWidth, + canvasHeight: this.canvasHeight } } + async drawPoster() { const host = process.env.APP_BASE_URL.replace('/api/h5app/wxapp', '') const { appid } = getExtConfigData() @@ -56,8 +66,8 @@ class GuideGoodsDetailPoster { { x: 0, y: 0, - width: canvasWidth, - height: canvasHeight, + width: this.canvasWidth, + height: this.canvasHeight, backgroundColor: '#fff' }, drawOptions @@ -68,8 +78,8 @@ class GuideGoodsDetailPoster { imgPath: this.goodsImg.path, x: 0, y: 0, - w: canvasWidth, - h: canvasWidth, + w: this.canvasWidth, + h: this.canvasImgHeight, sx: 0, sy: 0, sw: this.goodsImg.width, @@ -81,7 +91,7 @@ class GuideGoodsDetailPoster { drawBlock( { x: 24, - y: 624, + y: this.canvasImgHeight + 24, width: 312, height: 80, backgroundColor: '#efefef', @@ -94,7 +104,7 @@ class GuideGoodsDetailPoster { { imgPath: this.avatar.path, x: 24, - y: 624, + y: this.canvasImgHeight + 24, w: 80, h: 80, sx: 0, @@ -109,7 +119,7 @@ class GuideGoodsDetailPoster { drawText( { x: 112, - y: 656, + y: this.canvasImgHeight + 56, fontSize: 24, color: '#000', text: salesperson_name @@ -120,7 +130,7 @@ class GuideGoodsDetailPoster { drawText( { x: 112, - y: 688, + y: this.canvasImgHeight + 88, fontSize: 22, color: '#999', text: '推荐一个好物给你' @@ -133,7 +143,7 @@ class GuideGoodsDetailPoster { drawText( { x: 24, - y: 815, + y: this.canvasImgHeight + 215, color: '#222', text: [ { @@ -159,7 +169,7 @@ class GuideGoodsDetailPoster { drawText( { x: 24, - y: 887, + y: this.canvasImgHeight + 287, fontSize: 24, width: 312, color: '#666', @@ -173,7 +183,7 @@ class GuideGoodsDetailPoster { { imgPath: this.codeImg.path, x: 416, - y: 742, + y: this.canvasImgHeight + 142, w: 160, h: 160, sx: 0, @@ -186,7 +196,7 @@ class GuideGoodsDetailPoster { drawText( { x: 433, - y: 928, + y: this.canvasImgHeight + 328, fontSize: 18, // width: this.canvasImgWidth - 60 - this.miniCodeHeight, color: '#999', From 58c55a14457243d4ef0c152e7ccccc1236e317d5 Mon Sep 17 00:00:00 2001 From: maqian Date: Tue, 21 Oct 2025 15:35:10 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E5=AF=BC=E8=B4=AD=E6=B5=B7=E6=8A=A5?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E8=87=AA=E9=80=82=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sp-poster/dw-guidegoodsdetail.js | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/components/sp-poster/dw-guidegoodsdetail.js b/src/components/sp-poster/dw-guidegoodsdetail.js index 0be30e982..ffacc4818 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.js @@ -4,7 +4,7 @@ import { getExtConfigData } from '@/utils' import { drawText, drawImage, drawBlock } from './helper' const canvasWidth = 600 -const canvasHeight = 960 +// const canvasHeight = 960 class GuideGoodsDetailPoster { constructor(props) { @@ -16,13 +16,23 @@ class GuideGoodsDetailPoster { this.toRpx = toRpx } - getCanvasSize() { + async getCanvasSize() { + const { imgs } = this.info + const pic = imgs[0].replace('http:', 'https:') + const { width: goodsImageWidth, height: goodsImageHeight } = await Taro.getImageInfo({ src: pic }) + this.canvasWidth = canvasWidth + this.canvasImgHeight = parseInt( + (canvasWidth * goodsImageHeight) / goodsImageWidth + ) + this.canvasHeight = this.canvasImgHeight + 360 + return { - canvasWidth: canvasWidth, - canvasHeight: canvasHeight + canvasWidth: this.canvasWidth, + canvasHeight: this.canvasHeight } } + async drawPoster() { const host = process.env.APP_BASE_URL.replace('/api/h5app/wxapp', '') const { appid } = getExtConfigData() @@ -56,8 +66,8 @@ class GuideGoodsDetailPoster { { x: 0, y: 0, - width: canvasWidth, - height: canvasHeight, + width: this.canvasWidth, + height: this.canvasHeight, backgroundColor: '#fff' }, drawOptions @@ -68,8 +78,8 @@ class GuideGoodsDetailPoster { imgPath: this.goodsImg.path, x: 0, y: 0, - w: canvasWidth, - h: canvasWidth, + w: this.canvasWidth, + h: this.canvasImgHeight, sx: 0, sy: 0, sw: this.goodsImg.width, @@ -81,7 +91,7 @@ class GuideGoodsDetailPoster { drawBlock( { x: 24, - y: 624, + y: this.canvasImgHeight + 24, width: 312, height: 80, backgroundColor: '#efefef', @@ -94,7 +104,7 @@ class GuideGoodsDetailPoster { { imgPath: this.avatar.path, x: 24, - y: 624, + y: this.canvasImgHeight + 24, w: 80, h: 80, sx: 0, @@ -109,7 +119,7 @@ class GuideGoodsDetailPoster { drawText( { x: 112, - y: 656, + y: this.canvasImgHeight + 56, fontSize: 24, color: '#000', text: salesperson_name @@ -120,7 +130,7 @@ class GuideGoodsDetailPoster { drawText( { x: 112, - y: 688, + y: this.canvasImgHeight + 88, fontSize: 22, color: '#999', text: '推荐一个好物给你' @@ -133,7 +143,7 @@ class GuideGoodsDetailPoster { drawText( { x: 24, - y: 815, + y: this.canvasImgHeight + 215, color: '#222', text: [ { @@ -159,7 +169,7 @@ class GuideGoodsDetailPoster { drawText( { x: 24, - y: 887, + y: this.canvasImgHeight + 287, fontSize: 24, width: 312, color: '#666', @@ -173,7 +183,7 @@ class GuideGoodsDetailPoster { { imgPath: this.codeImg.path, x: 416, - y: 742, + y: this.canvasImgHeight + 142, w: 160, h: 160, sx: 0, @@ -186,7 +196,7 @@ class GuideGoodsDetailPoster { drawText( { x: 433, - y: 928, + y: this.canvasImgHeight + 328, fontSize: 18, // width: this.canvasImgWidth - 60 - this.miniCodeHeight, color: '#999', From c336b7658b85c34a28a9455f5e96902c7163c859 Mon Sep 17 00:00:00 2001 From: maqian Date: Wed, 22 Oct 2025 14:24:33 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=8D=83=E4=BA=BA=E5=8D=83=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/entry.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/utils/entry.js b/src/utils/entry.js index 122b122d8..9ba446ba3 100644 --- a/src/utils/entry.js +++ b/src/utils/entry.js @@ -300,14 +300,11 @@ async function getStoreStatus() { // }) // } // 新增千人千码跟踪记录 -function trackViewNum(monitor_id, source_id) { - let _session = Taro.getStorageSync('_session') - if (!_session) { - return true - } - +async function trackViewNum(monitor_id, source_id) { if (monitor_id && source_id) { - let param = { source_id: source_id, monitor_id: monitor_id } + const logRes = await Taro.login() + const res = await api.wx.getYoushuOpenid({ code:logRes.code }) + let param = { source_id: source_id, monitor_id: monitor_id,open_id:res?.openid } api.track.viewnum(param) } return true From eccbc8fe09ee3e7bc0adb2ba47b8c841a3c27675 Mon Sep 17 00:00:00 2001 From: maqian Date: Wed, 22 Oct 2025 16:40:53 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E5=88=86=E4=BA=AB=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sp-poster/dw-distribution.alipay.js | 4 +- src/components/sp-poster/dw-distribution.js | 4 +- .../sp-poster/dw-goodsdetail.alipay.js | 2 +- src/components/sp-poster/dw-goodsdetail.js | 2 +- .../sp-poster/dw-guidecheckout.alipay.js | 2 +- src/components/sp-poster/dw-guidecheckout.js | 2 +- .../sp-poster/dw-guidegoodsdetail.alipay.js | 2 +- .../sp-poster/dw-guidegoodsdetail.js | 2 +- src/components/sp-poster/dw-invite.js | 2 +- src/components/sp-poster/dw-placeAnOrder.js | 4 +- src/components/sp-poster/dw-storeCode.js | 4 +- src/pages/custom/custom-page.js | 2 +- src/pages/index.js | 2 +- src/pages/item/espier-detail.js | 2 +- src/pages/recommend/detail.js | 2 +- src/pages/share-land.js | 69 ++++++++++++------- src/subpages/community/espier-detail.js | 2 +- src/subpages/community/group-leaderdetail.js | 2 +- src/subpages/guide/coupon-home/index.js | 2 +- src/subpages/guide/custom/custom-page.js | 2 +- src/subpages/guide/item/espier-detail.js | 2 +- src/subpages/guide/recommend/detail.js | 2 +- src/subpages/mdugc/note-detail.js | 2 +- src/subpages/member/index.js | 2 +- src/subpages/pointshop/espier-detail.js | 2 +- src/subpages/purchase/index.js | 2 +- src/subpages/store/index.js | 2 +- src/utils/index.js | 7 +- 28 files changed, 77 insertions(+), 59 deletions(-) diff --git a/src/components/sp-poster/dw-distribution.alipay.js b/src/components/sp-poster/dw-distribution.alipay.js index d33c8feb5..265fffd0a 100755 --- a/src/components/sp-poster/dw-distribution.alipay.js +++ b/src/components/sp-poster/dw-distribution.alipay.js @@ -32,12 +32,12 @@ class DistributionPoster { const { isOpenShop, shop_status, qrcode_bg_img } = this.info const { user_id, avatar } = this.userInfo // const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}` - const url = (isOpenShop && shop_status == 1) ? `marketing/pages/distribution/shop-home` : `pages/index` + const type = (isOpenShop && shop_status == 1) ? `poster_shop_home` : `poster_home` let wxappCode // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index // const res = await api.alipay.alipay_qrcode(`page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}`) const res = await Taro.request({ - url: `${host}/api/h5app/alipaymini/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}target_path=${url}`, //仅为示例,并非真实的接口地址 + url: `${host}/api/h5app/alipaymini/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}from_scene=${type}`, //仅为示例,并非真实的接口地址 header: { 'content-type': 'application/json' // 默认值 }, diff --git a/src/components/sp-poster/dw-distribution.js b/src/components/sp-poster/dw-distribution.js index 48ae2f070..9b46d6d6a 100644 --- a/src/components/sp-poster/dw-distribution.js +++ b/src/components/sp-poster/dw-distribution.js @@ -31,8 +31,8 @@ class DistributionPoster { // const { dtid } = // const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}` - const url = (isOpenShop && shop_status == 1) ? `marketing/pages/distribution/shop-home` : `pages/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}&target_path=${url}` + const type = (isOpenShop && shop_status == 1) ? `poster_shop_home` : `poster_home` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?path=pages/share-land&appid=${appid}&company_id=${company_id}&user_id=${user_id}&from_scene=${type}` console.log('wxappCode:', wxappCode) const pic = qrcode_bg_img || `${process.env.APP_IMAGE_CDN}/fenxiao_bk.png` diff --git a/src/components/sp-poster/dw-goodsdetail.alipay.js b/src/components/sp-poster/dw-goodsdetail.alipay.js index 9bf992f61..7392fb874 100644 --- a/src/components/sp-poster/dw-goodsdetail.alipay.js +++ b/src/components/sp-poster/dw-goodsdetail.alipay.js @@ -39,7 +39,7 @@ class GoodsDetailPoster { // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index // const res = await api.alipay.alipay_qrcode(`page=${`pages/item/espier-detail`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}`) const res = await Taro.request({ - url: `${host}/api/h5app/alipaymini/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&target_path=pages/item/espier-detail`, //仅为示例,并非真实的接口地址 + url: `${host}/api/h5app/alipaymini/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&from_scene=poster_espier_detail`, //仅为示例,并非真实的接口地址 header: { 'content-type': 'application/json' // 默认值 }, diff --git a/src/components/sp-poster/dw-goodsdetail.js b/src/components/sp-poster/dw-goodsdetail.js index 9e6cf15a0..f2119a6e9 100644 --- a/src/components/sp-poster/dw-goodsdetail.js +++ b/src/components/sp-poster/dw-goodsdetail.js @@ -39,7 +39,7 @@ class GoodsDetailPoster { const { itemId, imgs, price, distributorId } = this.info const { user_id, avatar } = this.userInfo || {} - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&dtid=${distributorId}&target_path=pages/item/espier-detail` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=${`pages/share-land`}&appid=${appid}&company_id=${company_id}&id=${itemId}&uid=${user_id}&dtid=${distributorId}&from_scene=poster_espier_detail` // TODO 获取微信二维码的接口,需要换alipay https://ecshopx1.shopex123.com/api/h5app/alipaymini/qrcode.png?company_id=1&page=page/index const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-guidecheckout.alipay.js b/src/components/sp-poster/dw-guidecheckout.alipay.js index 47fd91bf9..914f2be28 100644 --- a/src/components/sp-poster/dw-guidecheckout.alipay.js +++ b/src/components/sp-poster/dw-guidecheckout.alipay.js @@ -40,7 +40,7 @@ class GuideCheckoutPoster { * distributor_id: 103,//门店id */ const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land& - appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&target_path=pages/cart/espier-checkout` + appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&from_scene=poster_espier_checkout` console.log('GuideCheckoutPoster-wxappCode:', wxappCode) // 太阳码 diff --git a/src/components/sp-poster/dw-guidecheckout.js b/src/components/sp-poster/dw-guidecheckout.js index 9dd863aa6..6169afb8d 100644 --- a/src/components/sp-poster/dw-guidecheckout.js +++ b/src/components/sp-poster/dw-guidecheckout.js @@ -40,7 +40,7 @@ class GuideCheckoutPoster { * distributor_id: 103,//门店id */ const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land& - appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&target_path=pages/cart/espier-checkout` + appid=${appid}&company_id=${company_id}&cxdid=${salesPromotionId}&smid=${salesperson_id}&distributor_id=${distributor_id}&gu=${gu}&from_scene=poster_espier_checkout` console.log('wxappCode:', wxappCode) // 太阳码 diff --git a/src/components/sp-poster/dw-guidegoodsdetail.alipay.js b/src/components/sp-poster/dw-guidegoodsdetail.alipay.js index 94265cff5..36f695fb4 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.alipay.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.alipay.js @@ -29,7 +29,7 @@ class GuideGoodsDetailPoster { const { itemId, imgs, price, subtaskId } = this.info const { salesperson_id, avatar, company_id, work_userid, shop_code } = this.userInfo const gu = `${work_userid}_${shop_code}` - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&target_path=pages/item/espier-detail` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&from_scene=poster_espier_detail` console.log('GuideGoodsDetailPoster-wxappCode:', wxappCode) const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-guidegoodsdetail.js b/src/components/sp-poster/dw-guidegoodsdetail.js index d84bf9b71..7ffb69c68 100644 --- a/src/components/sp-poster/dw-guidegoodsdetail.js +++ b/src/components/sp-poster/dw-guidegoodsdetail.js @@ -39,7 +39,7 @@ class GuideGoodsDetailPoster { const { itemId, imgs, price, subtaskId } = this.info const { salesperson_id, avatar, company_id, work_userid, shop_code } = this.userInfo const gu = `${work_userid}_${shop_code}` - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&target_path=pages/item/espier-detail` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&id=${itemId}&smid=${salesperson_id}&subtask_id=${subtaskId}&gu=${gu}&from_scene=poster_espier_detail` console.log('wxappCode:', wxappCode) const pic = imgs[0].replace('http:', 'https:') diff --git a/src/components/sp-poster/dw-invite.js b/src/components/sp-poster/dw-invite.js index 3934586f3..ccb8904ed 100644 --- a/src/components/sp-poster/dw-invite.js +++ b/src/components/sp-poster/dw-invite.js @@ -30,7 +30,7 @@ class GoodsDetailPoster { const data = await api.purchase.getEmployeeInviteCode({ enterprise_id, activity_id }) debugger - const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&code=${data.invite_code}&eid=${enterprise_id}&aid=${activity_id}&target_path=pages/purchase/auth` + const wxappCode = `${host}/wechatAuth/wxapp/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&code=${data.invite_code}&eid=${enterprise_id}&aid=${activity_id}&from_scene=poster_purchase_auth` console.log('wxappCode:', wxappCode) const pic = sharePic diff --git a/src/components/sp-poster/dw-placeAnOrder.js b/src/components/sp-poster/dw-placeAnOrder.js index e3c741d9d..f0bb214f5 100644 --- a/src/components/sp-poster/dw-placeAnOrder.js +++ b/src/components/sp-poster/dw-placeAnOrder.js @@ -26,9 +26,9 @@ class StoreCode { async drawPoster() { const { orderId, detailInfo, totalInfo } = this.info const { appid, company_id } = getExtConfigData() - const path = `subpages/trade/detail` + const path = `poster_trade_detail` // const path = `subpages/member/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&order_id=${orderId}&target_path=${path}` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&order_id=${orderId}&from_scene=${path}` const pic = `${process.env.APP_IMAGE_CDN}/bg_fxhb.png` // 背景图片 diff --git a/src/components/sp-poster/dw-storeCode.js b/src/components/sp-poster/dw-storeCode.js index e9c21e989..de59473fc 100644 --- a/src/components/sp-poster/dw-storeCode.js +++ b/src/components/sp-poster/dw-storeCode.js @@ -25,8 +25,8 @@ class StoreCode { async drawPoster() { const { appid, company_id } = getExtConfigData() - const path = `subpages/store/index` - const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&uid=${this.info.user_id}&dtid=${this.info.distributor_id}&qr=Y&target_path=${path}` + const path = `poster_store_index` + const wxappCode = `${process.env.APP_BASE_URL}/promoter/qrcode.png?page=pages/share-land&appid=${appid}&company_id=${company_id}&uid=${this.info.user_id}&dtid=${this.info.distributor_id}&qr=Y&from_scene=${path}` const pic = `${process.env.APP_IMAGE_CDN}/bg_fxhb.png` console.log('goods pic:', pic) diff --git a/src/pages/custom/custom-page.js b/src/pages/custom/custom-page.js index 06a15488b..99eec088c 100644 --- a/src/pages/custom/custom-page.js +++ b/src/pages/custom/custom-page.js @@ -111,7 +111,7 @@ function CustomPage(props) { if (userId) { params.uid = userId } - const path = buildSharePath('/pages/custom/custom-page', params) + const path = buildSharePath('poster_custom_page', params) log.debug(`getAppShareInfo: ${path}`) return { diff --git a/src/pages/index.js b/src/pages/index.js index 70d62f1d3..00704149b 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -146,7 +146,7 @@ function Home() { if (VERSION_STANDARD) { params = Object.assign(params, { dtid: getCurrentShopId() }) } - const path = buildSharePath('/pages/index', params) + const path = buildSharePath('poster_home', params) console.log('useShareAppMessage path:', path, params) diff --git a/src/pages/item/espier-detail.js b/src/pages/item/espier-detail.js index 0f81a7f1b..fa07ff9d1 100644 --- a/src/pages/item/espier-detail.js +++ b/src/pages/item/espier-detail.js @@ -240,7 +240,7 @@ function EspierDetail(props) { if (userInfo) { query['uid'] = userInfo.user_id } - const path = buildSharePath('/pages/item/espier-detail', query) + const path = buildSharePath('poster_espier_detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/pages/recommend/detail.js b/src/pages/recommend/detail.js index ac64701fb..c5fd785c1 100644 --- a/src/pages/recommend/detail.js +++ b/src/pages/recommend/detail.js @@ -47,7 +47,7 @@ function GuideRecommendDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id } - const sharePath = buildSharePath('/pages/recommend/detail', query) + const sharePath = buildSharePath('poster_recommend_detail', query) log.debug(`【/pages/recommend/detail】onShareAppMessage path: ${sharePath}`) return { title: title, diff --git a/src/pages/share-land.js b/src/pages/share-land.js index facc2b2d0..debe53f6b 100644 --- a/src/pages/share-land.js +++ b/src/pages/share-land.js @@ -9,11 +9,10 @@ import { entryLaunch, showToast } from '@/utils' /** * 统一分享落地页 * 参数说明: - * - target_path: 目标页面路径 (必传, 如: target_path=pages/index) - * - 其余参数会自动携带到目标页面 target_path=pages/item/espier-detail&id=123 + * - from_scene: 目标页面类型 (必传, 如: from_scene=xxxx_xxx_xxx) + * - 通过from_scene匹配对应的页面进行跳转 * * 兼容旧的场景: - * - from_scene: 导购欢迎语场景 * - t: 特殊场景标识(如处方药) * @returns */ @@ -36,47 +35,65 @@ function ShareIand() { entryLaunch.postGuideTask() // 导购任务上报 } } - debugger - // 处理导购欢迎语场景 - if (/^guide_welcome/.test(routeParams?.from_scene)) { - handleGuideWelcome(routeParams) - return - } - - // 处理处方药场景 if (routeParams?.t == 1) { handlePrescription(routeParams) - return + } else { + handleShareLand(routeParams) } - - // 处理通用分享场景 - if (routeParams?.target_path) { - debugger - handleGeneralShare(routeParams) - return - } - - // 默认跳转到首页 - Taro.redirectTo({ url: '/pages/index' }) } - // 处理导购欢迎语 - const handleGuideWelcome = (routeParams) => { + // 处理落地页类型 + const handleShareLand = (routeParams) => { + const { from_scene, ...otherParams } = routeParams const welcomeRoutes = { + // 导购欢迎语 'guide_welcome_home': '/pages/index', // 导购欢迎语--商城首页 'guide_welcome_category': '/pages/category/index', // 导购欢迎语--商城分类页 'guide_welcome_couponlist': '/subpages/marketing/coupon-center', // 导购欢迎语--商城优惠券中心 'guide_welcome_recommend': '/pages/recommend/list', // 导购欢迎语--商城种草 'guide_welcome_member': '/subpages/member/index', // 导购欢迎语--商城会员中心 - 'guide_welcome_itemlist': '/pages/item/list' // 导购欢迎语--商城商品列表 + 'guide_welcome_itemlist': '/pages/item/list', // 导购欢迎语--商城商品列表 + + // 导购任务 + 'guide_task_home': '/pages/index', // 导购任务-管理端-小程序首页 + 'guide_task_gucustom': '/subpages/guide/custom/custom-page', // 导购任务-管理端-导购货架自定义页 + 'guide_task_gucoupon': '/subpages/guide/coupon-home/index', // 导购任务-小程序-优惠券转发 + 'guide_task_gugoods': '/subpages/guide/item/espier-detail', // 导购任务-小程序-商品转发 + 'guide_task_goods': '/pages/item/espier-detail', // 导购任务-小程序-商品海报 + + // 商城小程序 + 'poster_home': '/pages/index', // 小程序-海报分享&页面转发-店务小店 + 'poster_shop_home': '/marketing/pages/distribution/shop-home', // 小程序-海报分享&页面转发-店务小店 + 'poster_espier_detail': '/pages/item/espier-detail', // 小程序-海报分享-商品详情 + 'poster_espier_checkout': '/pages/cart/espier-checkout', // 小程序-海报分享&页面转发-商品详情 + 'poster_purchase_auth': '/pages/purchase/auth', // 小程序-海报分享&页面转发-内购邀请 + 'poster_trade_detail': '/subpages/trade/detail', // 小程序-海报分享&页面转发-交易详情 + 'poster_store_index': '/subpages/store/index', // 小程序-海报分享&页面转发-店铺首页 + 'poster_custom_page': '/pages/custom/custom-page', // 小程序-海报分享&页面转发-自定义页 + 'poster_recommend_detail': '/pages/recommend/detail', // 小程序-海报分享&页面转发-种草详情 + 'poster_community_memberdetail': '/subpages/community/group-memberdetail', // 小程序-海报分享&页面转发-社区 + 'poster_coupon_center': '/subpages/marketing/coupon-center', // 小程序-海报分享&页面转发-领券中心 + 'poster_mdugc_detail': '/subpages/mdugc/note-detail', // 小程序-海报分享&页面转发-笔记详情 + 'poster_pointshop_espier_detail': '/subpages/pointshop/espier-detail', // 小程序-海报分享&页面转发-积分商品详情 } - const targetUrl = welcomeRoutes[routeParams.from_scene] + // 过滤掉内部使用的参数 + const filteredParams = { ...otherParams } + delete filteredParams.scene + delete filteredParams.$taroTimestamp + const queryString = qs.stringify(filteredParams) + + const targetUrl = queryString ? `${welcomeRoutes[from_scene]}?${queryString}` : welcomeRoutes[from_scene] + console.log('导购任务分享跳转:', targetUrl) + if (targetUrl) { Taro.redirectTo({ url: targetUrl }) } else { showToast('未匹配到参数') + setTimeout(() => { + Taro.redirectTo({ url: '/pages/index' }) + }, 1500); } } diff --git a/src/subpages/community/espier-detail.js b/src/subpages/community/espier-detail.js index 371c8195b..303feab92 100644 --- a/src/subpages/community/espier-detail.js +++ b/src/subpages/community/espier-detail.js @@ -184,7 +184,7 @@ function EspierDetail(props) { if (userInfo) { query['uid'] = userInfo.uid } - const path = buildSharePath('/pages/item/espier-detail', query) + const path = buildSharePath('poster_espier_detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/subpages/community/group-leaderdetail.js b/src/subpages/community/group-leaderdetail.js index 2aabd6ba6..ef5408e8f 100644 --- a/src/subpages/community/group-leaderdetail.js +++ b/src/subpages/community/group-leaderdetail.js @@ -52,7 +52,7 @@ function GroupLeaderDetail(props) { } useShareAppMessage(() => { - const path = buildSharePath('/subpages/community/group-memberdetail', { activity_id: detail.activityId }) + const path = buildSharePath('poster_community_memberdetail', { activity_id: detail.activityId }) log.debug(`share path: ${path}`) return { imageUrl: shareImageUrl, diff --git a/src/subpages/guide/coupon-home/index.js b/src/subpages/guide/coupon-home/index.js index 872a34d3b..8f881da4f 100644 --- a/src/subpages/guide/coupon-home/index.js +++ b/src/subpages/guide/coupon-home/index.js @@ -72,7 +72,7 @@ function GuideCouponIndex(props) { // subtask_id: subtaskId } - const path = buildSharePath('/subpages/marketing/coupon-center', query) + const path = buildSharePath('poster_coupon_center', query) log.debug(`getAppShareInfo: ${path}`) return { title: title, diff --git a/src/subpages/guide/custom/custom-page.js b/src/subpages/guide/custom/custom-page.js index 7c0f38cf8..21e0c624d 100644 --- a/src/subpages/guide/custom/custom-page.js +++ b/src/subpages/guide/custom/custom-page.js @@ -78,7 +78,7 @@ function GuideCustomPage() { gu: `${work_userid}_${shop_code}`, subtask_id } - const path = buildSharePath('/pages/custom/custom-page', query) + const path = buildSharePath('poster_custom_page', query) log.debug(`share path: ${path}`) return { diff --git a/src/subpages/guide/item/espier-detail.js b/src/subpages/guide/item/espier-detail.js index 57a6294e0..24caf032f 100644 --- a/src/subpages/guide/item/espier-detail.js +++ b/src/subpages/guide/item/espier-detail.js @@ -201,7 +201,7 @@ function EspierDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id: subtaskId } - const path = buildSharePath('/pages/item/espier-detail', query) + const path = buildSharePath('poster_espier_detail', query) console.log('gu---------------------',path) log.debug(`share path: ${path}`) return { diff --git a/src/subpages/guide/recommend/detail.js b/src/subpages/guide/recommend/detail.js index 4b1e16435..ce6c5b338 100644 --- a/src/subpages/guide/recommend/detail.js +++ b/src/subpages/guide/recommend/detail.js @@ -46,7 +46,7 @@ function GuideRecommendDetail(props) { gu: `${work_userid}_${shop_code}`, subtask_id } - const sharePath = buildSharePath('/pages/recommend/detail', query) + const sharePath = buildSharePath('poster_recommend_detail', query) log.debug(`【guide/recommend/detail】onShareAppMessage path: ${sharePath}`) return { title: title, diff --git a/src/subpages/mdugc/note-detail.js b/src/subpages/mdugc/note-detail.js index b7ccb1657..a0eea39d2 100644 --- a/src/subpages/mdugc/note-detail.js +++ b/src/subpages/mdugc/note-detail.js @@ -131,7 +131,7 @@ function UgcNoteDetail(props) { draft.info['shareNums'] = shareInfo.share_nums }) } - const path = buildSharePath('/subpages/mdugc/note-detail', { post_id }) + const path = buildSharePath('poster_mdugc_detail', { post_id }) console.log(`useShareAppMessage:`, path) return { title: info.title, diff --git a/src/subpages/member/index.js b/src/subpages/member/index.js index 2abdcb67e..e221aa462 100644 --- a/src/subpages/member/index.js +++ b/src/subpages/member/index.js @@ -186,7 +186,7 @@ function MemberIndex(props) { const { logo } = await api.distribution.getDistributorInfo({ distributor_id: 0 }) - const path = buildSharePath('/pages/index', {}) + const path = buildSharePath('poster_home', {}) return { title: share_title, imageUrl: share_pic_wechatapp || logo, diff --git a/src/subpages/pointshop/espier-detail.js b/src/subpages/pointshop/espier-detail.js index 41bedd70d..60b5f279b 100644 --- a/src/subpages/pointshop/espier-detail.js +++ b/src/subpages/pointshop/espier-detail.js @@ -168,7 +168,7 @@ function PointShopEspierDetail(props) { if (userInfo) { query['uid'] = userInfo.user_id } - const path = buildSharePath('/subpages/pointshop/espier-detail', query) + const path = buildSharePath('poster_pointshop_espier_detail', query) log.debug(`share path: ${path}`) return { title: itemName, diff --git a/src/subpages/purchase/index.js b/src/subpages/purchase/index.js index cfe368726..d06f4c29c 100644 --- a/src/subpages/purchase/index.js +++ b/src/subpages/purchase/index.js @@ -174,7 +174,7 @@ function Home() { enterprise_id, activity_id } - const path = buildSharePath('/pages/purchase/auth', params) + const path = buildSharePath('poster_purchase_auth', params) log.debug(path) resolve({ title: activityInfo.name, diff --git a/src/subpages/store/index.js b/src/subpages/store/index.js index 72f119a59..3fe356287 100644 --- a/src/subpages/store/index.js +++ b/src/subpages/store/index.js @@ -270,7 +270,7 @@ function StoreIndex() { const query = { dtid } - const path = buildSharePath('/subpages/store/index', query) + const path = buildSharePath('poster_store_index', query) log.debug(`share path: ${path}`) return { title: storeInfo?.name, diff --git a/src/utils/index.js b/src/utils/index.js index 0d6d92ff5..21db51f17 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -885,16 +885,17 @@ export const pxToUnitRpx = (px) => { /** * 构建统一分享路径 - * @param {string} target_path - 目标页面路径 + * @param {string} from_scene - 目标页面类型 * @param {object} params - 路径参数 * @returns {string} 统一的分享落地页路径 */ -export function buildSharePath(target_path, params = {}) { +export function buildSharePath(from_scene, params = {}) { const shareParams = { - target_path: target_path, + from_scene: from_scene, ...params } const queryString = qs.stringify(shareParams) + debugger return `/pages/share-land${queryString ? '?' + queryString : ''}` } From 972d8a93563c8682a735d37345b6bc23925200bd Mon Sep 17 00:00:00 2001 From: maqian Date: Wed, 22 Oct 2025 17:27:03 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/share-land.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/share-land.js b/src/pages/share-land.js index debe53f6b..f96a042da 100644 --- a/src/pages/share-land.js +++ b/src/pages/share-land.js @@ -66,7 +66,7 @@ function ShareIand() { 'poster_home': '/pages/index', // 小程序-海报分享&页面转发-店务小店 'poster_shop_home': '/marketing/pages/distribution/shop-home', // 小程序-海报分享&页面转发-店务小店 'poster_espier_detail': '/pages/item/espier-detail', // 小程序-海报分享-商品详情 - 'poster_espier_checkout': '/pages/cart/espier-checkout', // 小程序-海报分享&页面转发-商品详情 + 'poster_espier_checkout': '/pages/cart/espier-checkout', // 小程序-海报分享&页面转发-结算页 'poster_purchase_auth': '/pages/purchase/auth', // 小程序-海报分享&页面转发-内购邀请 'poster_trade_detail': '/subpages/trade/detail', // 小程序-海报分享&页面转发-交易详情 'poster_store_index': '/subpages/store/index', // 小程序-海报分享&页面转发-店铺首页 From 9d1efd1d12549ad69711af850cb54721b40624a6 Mon Sep 17 00:00:00 2001 From: maqian Date: Sun, 26 Oct 2025 09:36:43 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/share-land.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/share-land.js b/src/pages/share-land.js index f96a042da..c9d943a6b 100644 --- a/src/pages/share-land.js +++ b/src/pages/share-land.js @@ -38,6 +38,8 @@ function ShareIand() { if (routeParams?.t == 1) { handlePrescription(routeParams) + } else if (routeParams?.target_path) { // 兼容1021版本 + handleGeneralShare(routeParams) } else { handleShareLand(routeParams) } From 54516cbf09a67f9f1fe820e9912a2b88ebe1bce8 Mon Sep 17 00:00:00 2001 From: maqian Date: Mon, 27 Oct 2025 15:13:23 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/subpages/member/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/subpages/member/index.js b/src/subpages/member/index.js index e221aa462..46af6a809 100644 --- a/src/subpages/member/index.js +++ b/src/subpages/member/index.js @@ -484,7 +484,7 @@ function MemberIndex(props) { className='header-block' style={userInfo?.gradeInfo?.grade_background ? memberBckStyle : {}} > - +