Browse Source

refactor(app): 优化多个页面组件和功能

- 修改认证页面布局和逻辑
- 更新订单页面显示逻辑
- 移除扫码错误页面
- 添加到店核销功能
- 优化二维码生成逻辑
EvilDragon 4 months ago
parent
commit
792894f039

+ 8 - 0
packages/app/src/core/libs/models.ts

@@ -422,6 +422,10 @@ export interface PointsOrder {
    * 实付积分
    */
   payPoints: number
+  /**
+   * 获取方式: 1:到店核销 3:其他
+   */
+  gainType?: number
 }
 export interface UserAuthInfo {
   id: number
@@ -552,4 +556,8 @@ export enum QrCodeBusinessType {
    * 积分结账
    */
   PointsCheckout = 'PC',
+  /**
+   * 到店核销
+   */
+  InStoreWriteOff = 'ISWO',
 }

+ 0 - 8
packages/app/src/pages.json

@@ -462,14 +462,6 @@
       }
     },
     {
-      "path": "pages/mine/scan/error/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "扫码结果",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
       "path": "pages/mine/scan/result/index",
       "type": "page",
       "style": {

+ 13 - 5
packages/app/src/pages/mine/authentication/index.vue

@@ -20,7 +20,6 @@ import {
 } from '../../../core/libs/requests'
 import { DictType } from '../../../core/libs/models'
 import { useUserStore } from '../../../store'
-import pageHeaderBg from '@designer-hub/assets/src/assets/svgs/pageHeaderBg'
 import pageHeaderFilter from '@designer-hub/assets/src/assets/svgs/pageHeaderFilter'
 import { storeToRefs } from 'pinia'
 import { useMessage, useToast } from 'wot-design-uni'
@@ -37,7 +36,9 @@ const { error } = useToast()
 const formData = ref<any>({})
 const attachment = ref()
 const formInited = ref(false)
+// const a = async () => ({ data: null, code: 0, msg: '' })
 const { data: userAuthInfo, run: setUserAuthInfo } = useRequest(() => getUserAuthInfo())
+// const { data: userAuthInfo, run: setUserAuthInfo } = useRequest(() => ())
 const schema = ref({
   channelSource: {
     type: 'Select',
@@ -46,7 +47,7 @@ const schema = ref({
       labelWidth: '126rpx',
       placeholder: '请选择通过哪个渠道入驻的筑巢荟',
       columns: [],
-      disabled: userAuthInfo != null,
+      disabled: userAuthInfo.value != null,
     },
   },
   referrer: {
@@ -55,7 +56,7 @@ const schema = ref({
     props: {
       labelWidth: '126rpx',
       placeholder: '请如实填写推荐人编号,设计师会员编号或渠道编号',
-      disabled: userAuthInfo != null,
+      disabled: userAuthInfo.value != null,
     },
   },
   designerName: {
@@ -128,6 +129,9 @@ const handleSubmit = async () => {
 }
 onMounted(async () => {
   await setUserAuthInfo()
+  console.log(userAuthInfo.value)
+  console.log(userAuthInfo.value)
+
   if (userAuthInfo.value) {
     console.log(userAuthInfo.value)
     formData.value = pick(userAuthInfo.value, [
@@ -166,8 +170,12 @@ defineExpose({})
 <template>
   <div class="flex-grow">
     <div class="relative aspect-[3.6/1]">
-      <div class="absolute top-0 left-0 right-0 bottom--18.5">
-        <wd-img width="100%" height="100%" :src="pageHeaderBg"></wd-img>
+      <div class="absolute top-0 left--1 right--1 bottom--18.5">
+        <wd-img
+          width="100%"
+          height="100%"
+          :src="'https://image.zhuchaohui.com/zhucaohui/21d6584cb711834f037a7126855d05572433f776b308596d94aca97dd37e6cfa.png'"
+        ></wd-img>
       </div>
       <div class="absolute top-0 left-0 right-0 bottom--18.5">
         <wd-img width="100%" height="100%" :src="pageHeaderFilter"></wd-img>

+ 6 - 1
packages/app/src/pages/mine/orders/code/index.vue

@@ -5,6 +5,8 @@
 import dayjs from 'dayjs'
 import UQRCode from 'uqrcodejs'
 import { getPointsOrder } from '../../../../core/libs/requests'
+import { toQrCodeString } from '../../../../core/utils/common'
+import { QrCodeBusinessType } from '../../../../core/libs/models'
 
 const id = ref()
 const { data, run: setData } = useRequest(() => getPointsOrder(id.value), { initialData: {} })
@@ -13,7 +15,10 @@ const generateCode = async () => {
   // 获取uQRCode实例
   const qr = new UQRCode()
   // 设置二维码内容
-  qr.data = data.value.orderNo
+  // qr.data = data.value.orderNo
+  qr.data = toQrCodeString(QrCodeBusinessType.InStoreWriteOff, {
+    no: data.value?.orderNo || '',
+  })
   // 设置二维码大小,必须与canvas设置的宽高一致
   qr.size = 200
   // 调用制作二维码方法

+ 8 - 6
packages/app/src/pages/mine/orders/index.vue

@@ -54,12 +54,7 @@ const handleClick = (order: PointsOrder) => {
                   </div>
                   <div>
                     <div
-                      class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal"
-                    >
-                      <!-- 已完成 -->
-                      {{ status[it.orderStatus] }}
-                    </div>
-                    <div
+                      v-if="it.gainType === 1"
                       class="w-[58px] h-[26px] bg-[#020202] rounded-[20px] backdrop-blur-[10px] flex items-center justify-center"
                       @click.stop="router.push(`/pages/mine/orders/code/index?id=${it.id}`)"
                     >
@@ -69,6 +64,13 @@ const handleClick = (order: PointsOrder) => {
                         兑换码
                       </div>
                     </div>
+                    <div
+                      v-else
+                      class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal"
+                    >
+                      <!-- 已完成 -->
+                      {{ status[it.orderStatus] }}
+                    </div>
                   </div>
                 </div>
               </Card>

+ 0 - 19
packages/app/src/pages/mine/scan/error/index.vue

@@ -1,19 +0,0 @@
-<route lang="json">
-{ "style": { "navigationBarTitleText": "扫码结果", "navigationBarBackgroundColor": "#fff" } }
-</route>
-<script setup lang="ts">
-const msg = ref()
-onLoad(async (query: { msg: string }) => {
-  msg.value = query.msg
-})
-</script>
-<template>
-  <div class="flex-grow flex flex-col items-center justify-center">
-    <div class="text-black/60 text-base font-normal font-['PingFang_SC'] leading-none">
-      不支持此二维码/条码
-    </div>
-    <div class="text-black/60 text-base font-normal font-['PingFang_SC'] leading-none">
-      {{ msg }}
-    </div>
-  </div>
-</template>

+ 0 - 1
packages/app/src/types/uni-pages.d.ts

@@ -53,7 +53,6 @@ interface NavigateToOptions {
        "/pages/mine/homepage/edit/index" |
        "/pages/mine/orders/code/index" |
        "/pages/mine/orders/detail/index" |
-       "/pages/mine/scan/error/index" |
        "/pages/mine/scan/result/index" |
        "/pages/home/mall/purchased/success/index" |
        "/pages/home/spread/case-shooting/photographer/index" |