Bladeren bron

Merge remote-tracking branch 'origin/main' into main

赵添更 2 maanden geleden
bovenliggende
commit
4e28a1b48d

+ 1 - 0
packages/app/src/components/data-form.ts

@@ -16,5 +16,6 @@ export interface DataFormSchema {
     existing?: boolean
     required?: boolean
     props?: DataFormProps
+    callback?: Function
   }
 }

+ 3 - 1
packages/app/src/components/data-form.vue

@@ -99,7 +99,8 @@ defineExpose({
       <!-- <wd-cell-group border> -->
       <template
         v-for="(
-          [prop, { type, label, labelWidth, hiddenLabel, existing, required, props }], index
+          [prop, { type, label, labelWidth, hiddenLabel, existing, required, props, callback }],
+          index
         ) in Object.entries(schema)"
         :key="index"
       >
@@ -176,6 +177,7 @@ defineExpose({
               cell: false,
               ...props,
             }"
+            @confirm="callback"
             v-model="modelValue[prop]"
           ></wd-picker>
 

+ 16 - 16
packages/app/src/components/moment-item.vue

@@ -20,7 +20,7 @@ const props = withDefaults(
     options: CircleRes
     isOwn?: boolean
     isShared?: boolean
-	dict?:Object
+    dict?: Object
   }>(),
   {},
 )
@@ -49,12 +49,12 @@ const handleDelete = async () => {
   emits('delete', props.options.id)
 }
 
-const dictLabelChange = (dictArr:any, value:any) => {
-	for(let i in dictArr){
-		if(dictArr[i].value === value){
-			return dictArr[i].label
-		}
-	}
+const dictLabelChange = (dictArr: any, value: any) => {
+  for (let i in dictArr) {
+    if (dictArr[i].value === value) {
+      return dictArr[i].label
+    }
+  }
 }
 
 onMounted(async () => {
@@ -88,7 +88,7 @@ onMounted(async () => {
         <view
           class="relative"
           @click.stop="
-            features.toDesignerHomePage &&
+            options?.levelId >= 2 &&
             ['1', '2'].includes(options?.circleType) &&
             currRoute().path !== '/pages-sub/mine/homepage/index' &&
             router.push(`/pages-sub/mine/homepage/index?id=${options.stylistId}`)
@@ -179,13 +179,13 @@ onMounted(async () => {
             <div class="text-black/40 text-sm font-normal font-['PingFang_SC']">
               风格:{{ getOptionLabel(DictType.memberDesignStyle, options.designStyle) }}
             </div> -->
-			<div class="font-normal font-['PingFang_SC']">
-			  类别:{{ dictLabelChange(dict?.spaceType, options?.spaceType) }}
-			</div>
-			|
-			<div class="text-black/40 text-sm font-normal font-['PingFang_SC']">
-			  风格:{{ dictLabelChange(dict?.designStyle, options.designStyle) }}
-			</div>
+            <div class="font-normal font-['PingFang_SC']">
+              类别:{{ dictLabelChange(dict?.spaceType, options?.spaceType) }}
+            </div>
+            |
+            <div class="text-black/40 text-sm font-normal font-['PingFang_SC']">
+              风格:{{ dictLabelChange(dict?.designStyle, options.designStyle) }}
+            </div>
             |
             <div class="text-black/40 text-sm font-normal font-['PingFang_SC']">
               面积:{{ options.spaceExtent }}
@@ -261,4 +261,4 @@ onMounted(async () => {
       </view>
     </Card>
   </div>
-</template>
+</template>

+ 1 - 1
packages/app/src/composables/share.ts

@@ -47,7 +47,7 @@ export const useShare = () => {
         }
         res.path = `/pages-sub/home/moment/index?id=${target.dataset.options.id}&isShared=true&circleType=${target.dataset.options.circleType}`
         res.imageUrl = target.dataset.options.bannerUrls[0]
-        res.title = `${target.dataset.options.stylistName}: ${target.dataset.options.circleDesc}`
+        res.title = `${target.dataset.options.stylistName}: ${target.dataset.options.circleType == '2' ? '设计案例-' + target.dataset.options.caseName : target.dataset.options.circleDesc}`
       }
     }
     if (from === 'menu') {

+ 14 - 8
packages/app/src/pages-sub/home/mall/index.vue

@@ -148,7 +148,10 @@ onShareTimeline(() => ({
       <div class="absolute top-11 left-0 right-0 bottom-0 bg-white rounded-2xl shadow swiper">
         <SwiperEvo v-model="current" :items="favourableProducts">
           <template #default="{ item: it }">
-            <div class="w-full h-full px-4 flex items-center gap-3 box-border" @click="router.push(`/pages-sub/home/mall/detail/index?id=${it.productId}`)">
+            <div
+              class="w-full h-full px-4 flex items-center gap-3 box-border"
+              @click="router.push(`/pages-sub/home/mall/detail/index?id=${it.productId}`)"
+            >
               <wd-img
                 width="114"
                 height="114"
@@ -171,14 +174,16 @@ onShareTimeline(() => ({
 
                       <ProgressEvo
                         :height="6"
-                        :model-value="(it.exchangeCount / (it.productRepertory + it.exchangeCount) || 0) * 100"
+                        :model-value="
+                          (it.exchangeCount / (it.productRepertory + it.exchangeCount) || 0) * 100
+                        "
                         color="black"
                       ></ProgressEvo>
                     </div>
                     <div
                       class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] leading-normal"
                     >
-                      还剩{{ it.productRepertory}}件
+                      还剩{{ it.productRepertory }}件
                     </div>
                   </template>
                   <template v-else>
@@ -193,7 +198,6 @@ onShareTimeline(() => ({
                       class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] leading-normal"
                     >
                       <!--                      还剩{{ it.productRepertory - it.exchangeCount }}件-->
-                      数量不限
                     </div>
                   </template>
                 </div>
@@ -206,7 +210,9 @@ onShareTimeline(() => ({
                   </div>
                   <div class="flex-1"></div>
                   <div
-                    @click.stop="router.push(`/pages-sub/home/mall/detail/index?id=${it.productId}`)"
+                    @click.stop="
+                      router.push(`/pages-sub/home/mall/detail/index?id=${it.productId}`)
+                    "
                   >
                     <wd-img width="106" height="40" :src="grabNow"></wd-img>
                   </div>
@@ -295,7 +301,7 @@ onShareTimeline(() => ({
 </template>
 
 <style lang="scss">
-	:deep(.swiper .swiper-item.h-full>view){
-		height:100%;
-	}
+:deep(.swiper .swiper-item.h-full > view) {
+  height: 100%;
+}
 </style>

+ 20 - 4
packages/app/src/pages-sub/home/moment/index.vue

@@ -167,15 +167,15 @@ const toDesignerHomepage = () => {
   console.log(
     `/pages-sub/mine/homepage/index?id=${data.value?.stylistId}${isShared.value ? '&isShared=true' : ''}`,
   )
-  if (['1', '2'].includes(String(data.value?.circleType))) {
+  if (['1', '2'].includes(String(data.value?.circleType)) && data.value?.levelId >= 2) {
     router.push(
       `/pages-sub/mine/homepage/index?id=${data.value?.stylistId}${isShared.value ? '&isShared=true' : ''}`,
     )
   }
 }
 onMounted(async () => {})
-const dictMemberDesignStyle = ref<[]>()
-const dictCircleSpaceType = ref<[]>()
+const dictMemberDesignStyle = ref<any[]>()
+const dictCircleSpaceType = ref<any[]>()
 onLoad(async (query?: { id: string; isShared?: boolean; circleType?: string }) => {
   id.value = query?.id
   isShared.value = query?.isShared
@@ -188,12 +188,28 @@ onLoad(async (query?: { id: string; isShared?: boolean; circleType?: string }) =
   dictCircleSpaceType.value = value1.data
   let value2 = await getByDictType(DictType.memberDesignStyle)
   dictMemberDesignStyle.value = value2.data
+
+  if (data.value?.levelId < 2) {
+    uni.hideShareMenu({
+      hideShareItems: ['shareAppMessage', 'shareTimeline'],
+    })
+  }
 })
 // onShareAppMessage(async () => {
 //   await shareCircle(id.value)
 //   return { title: data.value?.circleDesc }
 // })
-onShareAppMessage(shareAppMessage)
+onShareAppMessage(({ from, target }) => {
+  if (from === 'button') {
+    return shareAppMessage({ from, target })
+  } else if (from === 'menu') {
+    return {
+      title: `${data.value?.stylistName}: ${data.value?.circleType === '2' ? '设计案例-' + data.value?.caseName : data.value?.circleDesc}`,
+      path: `/pages-sub/home/moment/index?id=${data.value?.id}&isShared=true&circleType=${data.value?.circleType}`,
+      imageUrl: data.value?.bannerUrls[0],
+    }
+  }
+})
 
 const handleClick = async (value: boolean) => {
   active.value = value ? 'hot' : 'time'

+ 9 - 15
packages/app/src/pages-sub/home/schedule/index.vue

@@ -42,7 +42,7 @@ onMounted(async () => {
   <view class="flex-grow flex flex-col">
     <NavbarEvo transparent dark></NavbarEvo>
     <view class="bg-black w-full aspect-[1.26/1]">
-<!--      <ImageEvo :src="currentStudyTour?.bannerUrl"></ImageEvo>-->
+      <!--      <ImageEvo :src="currentStudyTour?.bannerUrl"></ImageEvo>-->
       <div
         class="w-full h-full bg-[length:100%_auto]"
         :style="{ backgroundImage: `url(${currentStudyTour?.bannerUrl})` }"
@@ -87,7 +87,9 @@ onMounted(async () => {
           <view class="flex flex-col mt-8">
             <!-- 左侧图标 -->
             <view class="flex items-center">
-              <view class="w-[30px] h-[30px] bg-[#f6f6f6] rounded-full flex justify-center items-center">
+              <view
+                class="w-[30px] h-[30px] bg-[#f6f6f6] rounded-full flex justify-center items-center"
+              >
                 <wd-img width="16" height="16" :src="map"></wd-img>
               </view>
               <div class="ml-3 text-black/90 text-base font-normal">
@@ -100,24 +102,19 @@ onMounted(async () => {
 
             <!-- 标题 -->
 
-
             <!-- 描述 -->
             <view class="ml-10 mt-2 border-b border-black/10 pb-5">
-      <span class="text-black/60 text-sm font-normal">
-        行程介绍:
-      </span>
+              <span class="text-black/60 text-sm font-normal">行程介绍:</span>
               <span class="text-black/40 text-sm font-normal">
-        {{ item.travelDesc }}
-      </span>
+                {{ item.travelDesc }}
+              </span>
             </view>
 
             <!-- 打卡示例 -->
             <template v-if="item.clockExplainUrl">
               <view class="flex items-center mt-4 ml-10">
                 <wd-img width="16" height="16" :src="camera"></wd-img>
-                <div class="ml-1 text-black/90 text-xs font-normal">
-                  打卡示例
-                </div>
+                <div class="ml-1 text-black/90 text-xs font-normal">打卡示例</div>
               </view>
               <wd-img
                 v-if="(item.clockExplainUrl ?? '') !== ''"
@@ -127,15 +124,12 @@ onMounted(async () => {
                 mode="widthFix"
                 enable-preview
               ></wd-img>
-              <div
-                class="mt-2.5 ml-10 text-black/40 text-xs font-normal"
-              >
+              <div class="mt-2.5 ml-10 text-xs font-normal">
                 {{ item.clockExplainDesc }}
               </div>
             </template>
           </view>
         </template>
-
       </view>
     </div>
     <BottomAppBar fixed placeholder>

+ 58 - 34
packages/app/src/pages-sub/home/study-tour/index.vue

@@ -11,6 +11,8 @@ import Card from '@/components/card.vue'
 import MomentItem from '@/components/moment-item.vue'
 import SectionHeading from '@/components/section-heading.vue'
 import ClassItem from '../components/class-item.vue'
+import { storeToRefs } from 'pinia'
+import { useUserStore } from '@/store'
 import {
   getAppMemberLevelConfigs,
   getBanners,
@@ -18,15 +20,21 @@ import {
   getContents,
   getStudyTours,
 } from '../../../core/libs/requests'
+import { handleUpvoteClick } from '@/core/libs/actions'
 import { NetImages } from '../../../core/libs/net-images'
 import { BannerMode } from '../../../core/libs/models'
 import { useRouter } from '../../../core/utils/router'
 import PageHelper from '@/components/page-helper.vue'
 import RegisterCard from './components/register-card.vue'
+import { ComponentExposed } from 'vue-component-type-helpers'
+const pageHelperRef = ref<ComponentExposed<typeof PageHelper>>()
 const currentBanner = ref(0)
 const handleSwiperChange = ({ detail: { current } }) => {
-  currentBanner.value = current 
+  currentBanner.value = current
 }
+const userStore = useUserStore()
+const { userInfo } = storeToRefs(userStore)
+const shareOptions = ref()
 const router = useRouter()
 const { data: studyTours, run: setStudyTours } = useRequest(() =>
   getStudyTours({ headRecommend: 1 }),
@@ -42,6 +50,14 @@ const { data: banners, run: setBanners } = useRequest(
 const { data: levels, run: setLevels } = useRequest(() => getAppMemberLevelConfigs(), {
   initialData: [],
 })
+const handleLike = async (options) => {
+  await handleUpvoteClick({
+    ...options,
+    userId: userInfo.value.userId,
+    userName: userInfo.value.nickname,
+  })
+  await pageHelperRef.value?.refresh()
+}
 const levelsByMemberLevel = computed(() =>
   levels.value.reduce((acc, item) => {
     acc[item.memberLevel] = item
@@ -51,6 +67,9 @@ const levelsByMemberLevel = computed(() =>
 onMounted(async () => {
   await Promise.all([setLevels(), setStudyTours(), setClassmates(), setBanners()])
 })
+onShow(async () => {
+  await pageHelperRef.value?.reload()
+})
 </script>
 <template>
   <view class="flex-grow flex flex-col gap-6 p-3.5">
@@ -74,24 +93,24 @@ onMounted(async () => {
     </div>
 
     <div class="relative">
-		<template v-if="studyTours?.list.length">
-		  <swiper class="aspect-[0.75/1] rounded-[20px] overflow-hidden" @change="handleSwiperChange">
-		    <template v-for="(it, i) in studyTours?.list" :key="i">
-		      <swiper-item>
-		        <RegisterCard :options="{ ...it, levelsByMemberLevel }"></RegisterCard>
-		      </swiper-item>
-		    </template>
-		  </swiper>
-		</template>
-		<div class="absolute flex gap-1 dots">
-		  <template v-for="(it, i) in studyTours?.list" :key="i">
-		    <div
-		      class="w-1 h-1 rounded-full"
-		      :class="`${currentBanner === i ? 'bg-white bg-active' : 'bg-white/40'}`"
-		    ></div>
-		  </template>
-		</div>
-	</div>
+      <template v-if="studyTours?.list.length">
+        <swiper class="aspect-[0.75/1] rounded-[20px] overflow-hidden" @change="handleSwiperChange">
+          <template v-for="(it, i) in studyTours?.list" :key="i">
+            <swiper-item>
+              <RegisterCard :options="{ ...it, levelsByMemberLevel }"></RegisterCard>
+            </swiper-item>
+          </template>
+        </swiper>
+      </template>
+      <div class="absolute flex gap-1 dots">
+        <template v-for="(it, i) in studyTours?.list" :key="i">
+          <div
+            class="w-1 h-1 rounded-full"
+            :class="`${currentBanner === i ? 'bg-white bg-active' : 'bg-white/40'}`"
+          ></div>
+        </template>
+      </div>
+    </div>
     <!-- </template>
     </PageHelper> -->
     <!-- <card custom-class="p-0!">
@@ -179,11 +198,16 @@ onMounted(async () => {
       tip="暂无内容"
     ></wd-status-tip>
     <section-heading custom-class="" title="设计圈"></section-heading>
-    <PageHelper :request="getCircles" :query="{tagName: '设计游学'}" class="flex-grow flex flex-col">
+    <PageHelper
+      ref="pageHelperRef"
+      :request="getCircles"
+      :query="{ tagName: '设计游学' }"
+      class="flex-grow flex flex-col"
+    >
       <template #default="{ source }">
         <div class="flex-grow flex flex-col gap-6">
           <template v-for="(it, i) in source.list" :key="i">
-            <MomentItem :options="it"></MomentItem>
+            <MomentItem :options="it" @like="handleLike"></MomentItem>
           </template>
         </div>
       </template>
@@ -191,16 +215,16 @@ onMounted(async () => {
   </view>
 </template>
 <style scoped>
-	.dots{
-		bottom: 20rpx;
-		left: 50%;
-		transform: translateX(-50%);
-	}
-	.bg-active{
-		width:40rpx;
-	}
-	:deep(.level-circle){
-		top: -10rpx;
-		left:-5rpx;
-	}
-</style>
+.dots {
+  bottom: 20rpx;
+  left: 50%;
+  transform: translateX(-50%);
+}
+.bg-active {
+  width: 40rpx;
+}
+:deep(.level-circle) {
+  top: -10rpx;
+  left: -5rpx;
+}
+</style>

+ 23 - 14
packages/app/src/pages-sub/mine/authentication/index.vue

@@ -40,6 +40,9 @@ const attachment = ref()
 const formInited = ref(false)
 const uploadDisabled = ref(false)
 const { data: userAuthInfo, run: setUserAuthInfo } = useRequest(() => getUserAuthInfo())
+const confirmReferrer = async (val: string) => {
+  formData.value.referrer = ''
+}
 const schema = ref<DataFormSchema>({
   channelSource: {
     type: 'Select',
@@ -51,6 +54,7 @@ const schema = ref<DataFormSchema>({
       disabled: userAuthInfo.value != null,
       'onUpdate:modelValue': (value) => setReferrerExisting(value),
     },
+    callback: confirmReferrer,
   },
   referrer: {
     type: 'TextField',
@@ -111,7 +115,12 @@ const setReferrerExisting = (value: string) => {
 }
 const handleSubmit = async () => {
   console.log(formData.value)
-  if (formData.value.channelSource && formData.value.channelSource !== '4' && formData.value.channelSource !== '3' && !userAuthInfo.value) {
+  if (
+    formData.value.channelSource &&
+    formData.value.channelSource !== '4' &&
+    formData.value.channelSource !== '3' &&
+    !userAuthInfo.value
+  ) {
     if ((formData.value.referrer ?? '') === '') {
       await uni.showToast({ title: messages.mine.authentication.referrerErrorText, icon: 'none' })
       return
@@ -187,7 +196,7 @@ onLoad(async (query?: Record<string | 'scene', string>) => {
     console.log(query.scene)
     try {
       const [referrer, channelSource] = decodeURIComponent(query.scene).split('&')
-      console.log(referrer, channelSource)
+      console.log('===================', referrer, channelSource)
       formData.value = {
         ...formData.value,
         referrer,
@@ -241,20 +250,20 @@ onLoad(async (query?: Record<string | 'scene', string>) => {
       msg: userAuthInfo.value?.remark || '由于系统原因,您提交的认证暂时无法通过,请修改后重新提交',
     })
   }
-  if(userInfo.value.userAuthStatus === 0){
-	await uni.showToast({ title: "您当前已是筑巢荟会员", icon: 'none' })
-	setTimeout(()=>{
-		uni.switchTab({
-			url:"/pages/mine/index"
-		})
-	},2000)
+  if (userInfo.value.userAuthStatus === 0) {
+    await uni.showToast({ title: '您当前已是筑巢荟会员', icon: 'none' })
+    setTimeout(() => {
+      uni.switchTab({
+        url: '/pages/mine/index',
+      })
+    }, 2000)
   }
 })
-onShow(()=>{
-	// console.log(!userInfo.value.nickname)
-	if(!userInfo.value.nickname){
-		router.push('/pages-sub/login/index')
-	}
+onShow(() => {
+  // console.log(!userInfo.value.nickname)
+  if (!userInfo.value.nickname) {
+    router.push('/pages-sub/login/index')
+  }
 })
 defineExpose({})
 </script>

+ 17 - 4
packages/app/src/pages-sub/mine/homepage/index.vue

@@ -36,9 +36,13 @@ import more from '@designer-hub/assets/src/libs/assets/more'
 import qrCode from '@designer-hub/assets/src/libs/assets/qrCode'
 import { useShare } from '@/composables/share'
 import { useMemberLevelsStore } from '../../../store/member-levles'
+import { getByDictType } from '@/core/libs/requests'
+import { DictType } from '@/core/libs/models'
+
 const memberLevelsStore = useMemberLevelsStore()
 const { getMemberAvatarFrame } = memberLevelsStore
-
+const dictMemberDesignStyle = ref<any[]>()
+const dictCircleSpaceType = ref<any[]>()
 const { features, clickByPermission } = usePermissions()
 const { shareAppMessage } = useShare()
 const { alert, confirm } = useMessage()
@@ -149,6 +153,10 @@ onLoad(async (query: { id: string; isShared?: string }) => {
     viewStartAt.value = new Date()
   }
   await Promise.all([setMemberInfo(), setBadges()])
+  let value1 = await getByDictType(DictType.circleSpaceType)
+  dictCircleSpaceType.value = value1.data
+  let value2 = await getByDictType(DictType.memberDesignStyle)
+  dictMemberDesignStyle.value = value2.data
 })
 onShow(async () => {
   await setDesignerInfo()
@@ -192,7 +200,7 @@ onShareTimeline(() => ({
     ? designerInfo.value?.homePageName
     : userInfo.value?.nickname + ' “${designerInfo.value?.designDesc}”',
   imageUrl: designerInfo.value.sharePageUrl,
-  query: `${id.value}&isShared=true`,
+  query: 'id=' + id.value + '&isShared=true',
 }))
 defineExpose({
   navBarFixed: false,
@@ -221,7 +229,7 @@ defineExpose({
               ></wd-img>
               <wd-img
                 v-if="getMemberAvatarFrame(memberInfo?.levelId)"
-                custom-class="vertical-bottom absolute! level-circle"
+                custom-class="vertical-bottom absolute! level-circle-one"
                 :width="79"
                 :height="82"
                 :src="getMemberAvatarFrame(memberInfo?.levelId) || ''"
@@ -393,6 +401,7 @@ defineExpose({
               <template v-for="it of source.list" :key="it.id">
                 <view class="">
                   <MomentItem
+                    :dict="{ spaceType: dictCircleSpaceType, designStyle: dictMemberDesignStyle }"
                     :options="it"
                     :is-own="userInfo.userId === it.stylistId"
                     :is-shared="isShared"
@@ -468,8 +477,12 @@ defineExpose({
   </div>
 </template>
 <style scoped>
-:deep(.level-circle) {
+:deep(.level-circle-one) {
   top: -20rpx;
   left: -10rpx;
 }
+:deep(.level-circle) {
+  top: -10rpx;
+  left: -4rpx;
+}
 </style>

+ 2 - 2
packages/app/src/pages.json

@@ -1,7 +1,7 @@
 {
   "globalStyle": {
     "navigationStyle": "default",
-    "navigationBarTitleText": "unibest",
+    "navigationBarTitleText": "筑巢荟",
     "navigationBarBackgroundColor": "#f8f8f8",
     "navigationBarTextStyle": "black",
     "backgroundColor": "#FFFFFF"
@@ -637,4 +637,4 @@
       }
     }
   ]
-}
+}

+ 2 - 2
packages/app/src/pages/home/index.vue

@@ -117,8 +117,8 @@ const handleShare = (options: any) => {
   shareOptions.value = options
   shareActionState.value = true
 }
-const dictMemberDesignStyle = ref<[]>()
-const dictCircleSpaceType = ref<[]>()
+const dictMemberDesignStyle = ref<any[]>()
+const dictCircleSpaceType = ref<any[]>()
 const offLoad = (e) => {
   console.log(e)
 }

+ 10 - 7
packages/app/src/pages/material/detail/index.vue

@@ -236,8 +236,8 @@ onShareTimeline(() => ({
                 custom-class=" bg-[#f2f2f2]! p-0! ml-4"
                 @click="
                   openLocation({
-                    latitude: shop.latitude,
-                    longitude: shop.longitude,
+                    latitude: shop.longitude,
+                    longitude: shop.latitude,
                     name: shopName,
                     address: shopAddr,
                   })
@@ -357,7 +357,10 @@ onShareTimeline(() => ({
         <div class="bg-neutral-100 rounded-tl-2xl rounded-tr-2xl p-3.5" @click.stop="">
           <div class="deal-title">请复制以下链接,打开默认浏览器,粘贴到浏览器进行下载</div>
           <div class="deal-link">{{ materialHomePageData?.fodderList[0].fodderUrl }}</div>
-          <wd-button custom-class="custom-shadow" @click="copy(data?.agreementFileUrl)">
+          <wd-button
+            custom-class="custom-shadow"
+            @click="copy(materialHomePageData?.fodderList[0].fodderUrl)"
+          >
             复制链接
           </wd-button>
         </div>
@@ -375,19 +378,19 @@ onShareTimeline(() => ({
   width: 40rpx;
 }
 .deal-title {
+  padding: 60rpx 0;
   font-size: 32rpx;
-  text-align: center;
   font-weight: bold;
-  padding: 60rpx 0;
+  text-align: center;
 }
 .deal-link {
   padding: 20rpx 30rpx;
+  margin-bottom: 60rpx;
   font-size: 28rpx;
   color: rgba(0, 0, 0, 0.45);
+  word-wrap: break-word;
   background-color: rgba(200, 200, 200, 0w);
   border-radius: 20rpx;
-  margin-bottom: 60rpx;
-  word-wrap: break-word;
 }
 :deep(.custom-shadow) {
   width: 100% !important;

+ 5 - 1
packages/app/src/pages/messages/components/coupon-card.vue

@@ -5,6 +5,10 @@ import dayjs from 'dayjs'
 import used from '@designer-hub/assets/src/libs/assets/used'
 import expired from '@designer-hub/assets/src/libs/assets/expired'
 import invalid from '@designer-hub/assets/src/libs/assets/invalid'
+import { useMessage } from 'wot-design-uni'
+import { handleClickInstruction } from '@/core/libs/actions'
+
+const { alert, confirm } = useMessage()
 
 const props = withDefaults(
   defineProps<{ options?: Coupon; canSelect?: boolean; selected?: boolean }>(),
@@ -57,7 +61,7 @@ const emits = defineEmits<{ select: [coupon: Coupon]; clickInstruction: [coupon:
           </div>
           <div
             class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal flex items-center"
-            @click.stop="emits('clickInstruction', options)"
+            @click.stop="handleClickInstruction(alert, options)"
           >
             使用说明
             <wd-icon name="arrow-right" size="14"></wd-icon>

+ 2 - 2
packages/app/src/pages/messages/components/message-card.vue

@@ -159,7 +159,7 @@ onMounted(async () => {
               >
                 <div
                   class="text-sm font-normal font-['PingFang_SC']"
-                  :class="`${coupons.length > 0 ? 'text-[#ef4343]' : 'text-black/60'}`"
+                  :class="`${options.availableCouponsNum > 0 ? 'text-[#ef4343]' : 'text-black/60'}`"
                 >
                   <!--                  {{ `${coupons.length > 0 ? `${coupons.length}张可用` : '无可用'}` }}-->
                   {{ couponSelectText }}
@@ -167,7 +167,7 @@ onMounted(async () => {
                 <div class="h-5.5 flex items-center overflow-hidden">
                   <wd-icon
                     name="chevron-right"
-                    :custom-class="`${coupons.length > 0 ? 'text-[#ef4343]' : 'text-black/60'}`"
+                    :custom-class="`${options.availableCouponsNum > 0 ? 'text-[#ef4343]' : 'text-black/60'}`"
                     size="16"
                   ></wd-icon>
                 </div>

+ 1 - 2
packages/app/src/pages/messages/index.vue

@@ -65,7 +65,7 @@ const tabs = ref([
   },
 ])
 const selectedCoupons = ref<Coupon[]>([])
-
+const { alert, confirm } = useMessage()
 const instructionClick = (val: any) => {
   selectedCoupons.value = val
   // handleClickInstruction(alert, Array.isArray(val) ? val[0] : val)
@@ -74,7 +74,6 @@ const instructionClick = (val: any) => {
 const coupons = ref<Coupon[]>([])
 const cancelReason = ref('')
 const currentMessage = ref<Message>()
-const { alert, confirm } = useMessage()
 const { confirm: rejectConfirm } = useMessage('wd-message-box-slot')
 
 const query = computed(() => ({ messageType: tabs.value[tab.value]?.value }))

+ 1 - 1
packages/merchant/src/core/libs/actions.ts

@@ -8,7 +8,7 @@ export const toHomePage = (id: string) => {
     .navigateToMiniProgram({
       appId: 'wx4d95c9addba81089',
       envVersion: 'trial',
-      path: '/pages/mine/homepage/index' + '?id=' + id,
+      path: '/pages-sub/mine/homepage/index' + '?id=' + id,
     })
     .then()
 }

+ 5 - 2
packages/merchant/src/layouts/tabbar.vue

@@ -278,11 +278,14 @@ onMounted(async () => {
                 </span>
                 地址
               </label>
-              <div class="wd-input h-[40px] lh-[40px] flex justify-between px-[20px]">
+              <div
+                class="wd-input h-[40px] lh-[40px] flex justify-between px-[20px]"
+                @click="getCurrentLocation"
+              >
                 <div>
                   {{ !dataForm.address.address ? '点击获取当前位置' : dataForm.address.address }}
                 </div>
-                <wd-icon name="refresh" size="14px" @click="getCurrentLocation"></wd-icon>
+                <wd-icon name="refresh" size="14px"></wd-icon>
               </div>
             </div>
           </template>

+ 2 - 3
packages/merchant/src/pages/agent/designer/archives/award/imgs.vue

@@ -24,10 +24,9 @@ const fileList = computed(() => {
   })
 })
 const submitUpload = async () => {
+  // const { id, userId } = basicData.value
   if (formData.value) {
-    const { code } = await updateDesignerBasicInfo(
-      Object.assign({}, { ...basicData.value }, { imageUrl: formData.value }),
-    )
+    const { code } = await updateDesignerBasicInfo({ userId: id.value, imageUrl: formData.value })
     if (code === 0) {
       uni.navigateBack()
     }

+ 13 - 3
packages/merchant/src/pages/agent/designer/archives/sale-info/index.vue

@@ -12,6 +12,7 @@ import SectionHeading from '@/components/section-heading.vue'
 import { storeToRefs } from 'pinia'
 import Card from '@/components/card.vue'
 import PageHelper from '@/components/page-helper.vue'
+import { ComponentExposed } from 'vue-component-type-helpers'
 import dayjs from 'dayjs'
 import PageHelperEvo from '@/components/page-helper-evo.vue'
 import { useUserStore } from '@/store'
@@ -22,6 +23,7 @@ const { userInfo } = storeToRefs(userStore)
 const id = ref()
 const type = ref()
 const current = ref('累计')
+const pageHelperRef = ref<ComponentExposed<typeof PageHelperEvo>>()
 const info = computed(() => [
   {
     label: '订单数',
@@ -36,8 +38,16 @@ const info = computed(() => [
     unit: '¥',
   },
 ])
-const query = computed(() => ({ year:  type.value == 1, userId: id.value ,type : type.value}))
+const query = computed(() => ({
+  year: current.value == '本年',
+  userId: id.value,
+  type: type.value,
+}))
 const { data, run: setData } = useRequest(() => getSalesOrdersCount({ userId: id.value }))
+const handleSegmentedChange = () => {
+  setData()
+  pageHelperRef.value?.refresh()
+}
 onLoad(async (query) => {
   id.value = query?.id
   type.value = query?.type
@@ -53,7 +63,7 @@ onLoad(async (query) => {
             <wd-segmented
               v-model:value="current"
               :options="['累计', '本年']"
-              @change="setData"
+              @change="handleSegmentedChange"
             ></wd-segmented>
           </div>
         </template>
@@ -76,7 +86,7 @@ onLoad(async (query) => {
         </template>
       </div>
     </Card>
-    <PageHelperEvo :request="getSalesOrders" :query="query">
+    <PageHelperEvo ref="pageHelperRef" :request="getSalesOrders" :query="query">
       <template #default="{ source }">
         <div class="flex flex-col gap-4">
           <template v-for="(it, index) in source?.list" :key="index">