Ver Fonte

优化:跳转券中心分享参数获取逻辑

haiyang há 1 semana atrás
pai
commit
304018a08a
3 ficheiros alterados com 33 adições e 14 exclusões
  1. 19 2
      src/App.ku.vue
  2. 10 8
      src/hooks/useShare.ts
  3. 4 4
      src/pages-A/settingPage/index.vue

+ 19 - 2
src/App.ku.vue

@@ -23,8 +23,25 @@ onShow(() => {
     }, 0)
 
     // 判断是否是通过分享进入
-    if (query?.shareRecordId) {
-        tokenStore.cacheShareParams(query)
+    const paramKey = 'CCShareId'
+    const keyName = 'shareRecordId'
+    // 券中心小程序码变更,参数需从scene中获取
+    function getSceneData(paramsQuery) {
+        const temp = {}
+        if (paramsQuery?.scene) {
+            const sceneData = decodeURIComponent(paramsQuery.scene)
+            const [key, value] = sceneData.split('=')
+            if (key === paramKey) {
+                temp[keyName] = value
+            }
+            console.log(temp)
+            return temp
+        }
+        return temp
+    }
+    const queryParams = getSceneData(query)
+    if (!!queryParams && Object.keys(queryParams).includes(keyName)) {
+        tokenStore.cacheShareParams(queryParams)
     }
 
     loadingStore.hideLoading()

+ 10 - 8
src/hooks/useShare.ts

@@ -33,7 +33,7 @@ const defaultOptions: Required<ShareOptions> = {
     shareType: 'INVITE',
     showLoading: true,
     imageSource: 'LOCAL',
-    pathParamKey: 'shareRecordId',
+    pathParamKey: 'CCShareId',
 }
 
 /**
@@ -43,9 +43,9 @@ const defaultOptions: Required<ShareOptions> = {
  */
 export function useShare(initOptions: ShareOptions = {}) {
     /**
-                         * 获取分享配置 - 可以直接在onShareAppMessage中调用
-                         * @returns 完整的分享配置
-                         */
+                             * 获取分享配置 - 可以直接在onShareAppMessage中调用
+                             * @returns 完整的分享配置
+                             */
     const getShareConfig = async (customOption?: ShareOptions, extraParams?): Promise<WechatMiniprogram.Page.ICustomShareContent | {}> => {
         // 合并默认配置和自定义配置
         const options = { ...defaultOptions, ...initOptions, ...customOption }
@@ -95,7 +95,9 @@ export function useShare(initOptions: ShareOptions = {}) {
 
             if (res !== '' && res !== null && res !== 'null') {
                 // 拼接分享路径
-                const sharePath = `${options.path}${options.path.includes('?') ? '&' : '?'}${options.pathParamKey}=${res}`
+                const scene = `${options.pathParamKey}=${res}`
+                const encodeScene = encodeURIComponent(scene)
+                const sharePath = `${options.path}${options.path.includes('?') ? '&' : '?'}scene=${encodeScene}`
                 let imageUrl = ''
                 if (options.imageSource === 'LOCAL') {
                     imageUrl = options.imageUrl
@@ -135,9 +137,9 @@ export function useShare(initOptions: ShareOptions = {}) {
     }
 
     /**
-                         * 获取朋友圈分享配置 - 可以直接在onShareTimeline中调用
-                         * @returns 完整的朋友圈分享配置
-                         */
+                             * 获取朋友圈分享配置 - 可以直接在onShareTimeline中调用
+                             * @returns 完整的朋友圈分享配置
+                             */
     const getTimelineShareConfig = async (): Promise<WechatMiniprogram.Page.ICustomTimelineContent | {}> => {
         const config = await getShareConfig() as WechatMiniprogram.Page.ICustomShareContent
         return {

+ 4 - 4
src/pages-A/settingPage/index.vue

@@ -20,12 +20,12 @@ const userStore = useUserStore()
 const { userInfo } = storeToRefs(userStore)
 const nickNameVisible = ref(false)
 const formData = reactive({
-    nickName: userInfo.value.nickname,
+    nickname: userInfo.value.nickname,
 })
 const formRef = ref(null)
 
 const rules = reactive({
-    nickName: [
+    nickname: [
         { required: true, message: '请输入昵称', trigger: ['blur', 'change'] },
         {
             pattern: /^[\u4E00-\u9FA5a-z0-9]*$/i,
@@ -47,7 +47,7 @@ async function changeNickName() {
         const result = await updateUserInfo(formData)
         uni.hideLoading()
         if (result) {
-            userStore.setUserNickName(formData.nickName)
+            userStore.setUserNickName(formData.nickname)
             nickNameVisible.value = false
             uni.showToast({
                 title: '昵称更新成功',
@@ -168,7 +168,7 @@ function onChooseAvatar(e) {
         <up-modal :show="nickNameVisible" title="修改昵称" :show-confirm-button="false" :show-cancel-button="false">
             <up-form ref="formRef" class="custom-form" style="width: 100%;" :model="formData" :rules="rules">
                 <up-form-item prop="nickName">
-                    <up-input v-model="formData.nickName" placeholder="请输入新昵称" clearable />
+                    <up-input v-model="formData.nickname" placeholder="请输入新昵称" clearable />
                 </up-form-item>
             </up-form>