Browse Source

修复bug及拖拽

purui 5 days ago
parent
commit
f8d93c4a05

+ 5 - 3
packages/app/src/components/drag-img/drag-img.vue

@@ -35,7 +35,7 @@
 						</view>
 					</view>
 				</movable-view>
-				<view class="drag-img-area-view-add" v-if="imageList.length < number"
+				<!-- <view class="drag-img-area-view-add" v-if="imageList.length < number"
 					:style="{ top: add.y, left: add.x, width: viewWidth + 'px', height: viewWidth + 'px' }"
 					@click="addImages">
 					<view class="add-view"
@@ -44,7 +44,7 @@
 							src="./icon_add.png">
 						</image>
 					</view>
-				</view>
+				</view> -->
 			</movable-area>
 
 		</template>
@@ -407,10 +407,12 @@
 				if (typeof this.delImage === 'function') {
 					this.delImage.bind(this.$parent)(() => {
 						this.delImageHandle(item, index)
-					})
+					})				
 				} else {
 					this.delImageHandle(item, index)
 				}
+				console.log("1111")
+				this.$emit("del")
 			},
 			delImageHandle(item, index) {
 				this.imageList.splice(index, 1)

+ 26 - 0
packages/app/src/core/libs/requests.ts

@@ -197,6 +197,32 @@ export const getCircles = (query: { tagName?: string; circleType?: string; styli
       reviewCount: number
     }[]
   }>('/app-api/member/circle/page', query)
+export const getCirclesTwo = (query: { tagName?: string; circleType?: string; stylistId?: string }) =>
+  httpGet<{
+    list: {
+      id: number
+      headUrl?: string
+      stylistId?: number
+      stylistName?: string
+      marketing?: string
+      circleDesc?: string
+      tagName?: string
+      detailsType?: string
+      detailsUrl?: string
+      detailsDesc?: string
+      circleType?: string
+      spaceType?: string
+      designStyle?: string
+      spaceAddr?: string
+      customerDemand?: string
+      createTime: number
+      bannerUrls: string[]
+      shareCount?: number
+      upvoteCount?: number
+      ownUpvote: boolean
+      reviewCount: number
+    }[]
+  }>('/app-api/member/circle/page2', query)  
 export const createCircle = (data: Partial<Circle>) =>
   httpPost<any>('/app-api/member/circle/create', data)
 export const getCircle = (id: string) =>

+ 8 - 3
packages/app/src/pages-sub/home/schedule/index.vue

@@ -32,7 +32,11 @@ const schedules = computed(
       dayjs(it?.travelTime).format('YYYY-MM-DD'),
     ) || { [dayjs().format('YYYY-MM-DD')]: [] },
 )
-
+const indexDay = computed(() =>
+   {
+	   return Math.floor((new Date().getTime() - currentStudyTour.value?.studyStartTime) / 86400000)
+   }
+)
 onMounted(async () => {
   await setStudyTours()
 })
@@ -71,11 +75,12 @@ onMounted(async () => {
             >
               <view class="mx-3.5">|</view>
               {{ dayjs().format('M月D日') }}
-              第{{
+			  第{{ indexDay + 1 }}天
+             <!-- 第{{
                 Object.keys(schedules || []).findIndex(
                   (it) => it === dayjs().format('YYYY-MM-DD'),
                 ) + 1
-              }}天
+              }}天-->
             </div>
           </view>
         </view>

+ 79 - 17
packages/app/src/pages-sub/publish/moment/index.vue

@@ -84,15 +84,46 @@ const rules = {
   spaceExtent: [{ required: true, message: '请填写空间面积' }],
   circleDesc: [{ required: true, message: '请填写案例描述' }],
 }
+const useImg = ref(true)
+const useVideo = ref(true)
 const formData = ref({})
 const formInited = ref(false)
 const tagName = ref('')
 const tagIds = ref([])
 const imgList = ref([])
 const publishing = ref(false)
+const handleImgFail = ({error, file}) =>{
+	// imgList.value = fileList
+	fileList.value.splice(0,1)
+}
+const delImg = () =>{
+	console.log('del')
+	fileList.value.splice(0,1)
+}
 const handleChange = ({ fileList: files }) => {
+  // fileList.value = files
+  console.log(files)
+  let arr = [];
+  for(let i in files){	  
+	  if(files[i].status==="success"){
+		  arr.push(JSON.parse(files[i].response).data)
+	  }
+  }
+  imgList.value = arr
+  if(files.length > 0){
+	  useVideo.value = false
+  }else{
+	  useVideo.value = true
+  }
+}
+const handleVideoChange = ({ fileList: files }) => {
   fileList.value = files
-  console.log(fileList.value)
+  if(files.length > 0){
+  	  useImg.value = false
+  }else{
+  	  useImg.value = true
+  }
+  // console.log(imgList.value)
 }
 const uploadImg = async (img) =>{
 	 return new Promise((resolve)=>{
@@ -101,7 +132,7 @@ const uploadImg = async (img) =>{
 		 	filePath: img,
 		 	name:img,
 		 	success: (res) => {
-		 		console.log(res)
+		 		// console.log(res)
 		 		resolve(res)
 		 	}
 		 })
@@ -128,17 +159,25 @@ const handleSubmit = async () => {
   // }
   // console.log(imgUrl)
   // return false
-  if (!fileList.value.length) {
-    toast(messages.moment.imageNotExist)
-    return false
+  if(useImg.value){
+	  if (!imgList.value.length) {
+	    toast(messages.moment.imageNotExist)
+	    return false
+	  }
+  }else{
+	  if (!fileList.value.length) {
+	    toast(messages.moment.imageNotExist)
+	    return false
+	  }
   }
+  
   publishing.value = true
   const { code, msg, duration } = await requestToast(
     () =>
       createCircle({
         stylistId: userInfo.value.userId,
         stylistName: userInfo.value.nickname,
-        bannerUrls: fileList.value.map(({ response }) => JSON.parse(response).data),
+        bannerUrls: useImg.value?imgList.value:fileList.value.map(({ response }) => JSON.parse(response).data),
         tagName: tagName.value,
         headUrl: userInfo.value.avatar,
         circleDesc: content.value,
@@ -224,16 +263,34 @@ onLoad(async (query: { circleType: '1' | '2' }) => {
         custom-class="my-5"
       ></SectionHeading>
     </div>
-	<!-- <dragImg v-model="imgList" :number="String(circleType) === '2' ? 30 : 9"></dragImg> -->
-    <wd-upload
-      :file-list="fileList"
-      image-mode="aspectFill"
-      accept="media"
-      :action="action"
-      :multiple="true"
-      :limit="String(circleType) === '2' ? 30 : 9"
-      @change="handleChange"
-    ></wd-upload>
+	<div class="flex">
+		<div class="mr-[20rpx]" v-if="useImg">
+			<wd-upload
+			  :file-list="fileList"
+			  customPreviewClass="display"
+			  image-mode="aspectFill"
+			  accept="image"
+			  :action="action"
+			  :multiple="true"
+			  :limit="String(circleType) === '2' ? 30 : 9"
+			  @change="handleChange"
+			  @fail="handleImgFail"
+			></wd-upload>
+			<div class="text-[24rpx] text-black/60 text-center">上传图片</div>
+		</div>
+		<div v-if="useVideo && String(circleType) === '1'">
+			<wd-upload
+			  :file-list="fileList"
+			  image-mode="aspectFill"
+			  accept="video"
+			  :action="action"
+			  :limit="1"
+			  @change="handleVideoChange"
+			></wd-upload>
+			<div class="text-[24rpx] text-black/60 text-center">上传视频</div>
+		</div>
+	</div>
+	<dragImg v-if="imgList.length > 0" v-model="imgList" @del="delImg" :number="String(circleType) === '2' ? 30 : 9"></dragImg>
     <SectionHeading
       title="标签"
       custom-class="my-6"
@@ -260,7 +317,7 @@ onLoad(async (query: { circleType: '1' | '2' }) => {
     </SectionHeading>
     <div class="flex-1"></div>
     <BottomAppBar fixed safe-area-inset-bottom placeholder>
-      <div class="w-full">
+      <div class="w-full relative z-9">
         <wd-button type="primary" :round="false" block :loading="publishing" @click="handleSubmit">
           发布
         </wd-button>
@@ -268,3 +325,8 @@ onLoad(async (query: { circleType: '1' | '2' }) => {
     </BottomAppBar>
   </div>
 </template>
+<style>
+	.display{
+		display: none;
+	}
+</style>

+ 8 - 1
packages/app/src/pages/home/components/schedule-card.vue

@@ -9,6 +9,7 @@ import { useRouter } from '../../../core/utils/router'
 const props = withDefaults(
   defineProps<{
     customClass?: string
+	startTime?: any
     items?: {
       createTime: any
       updateTime: any
@@ -35,6 +36,11 @@ const imgDisplayed = ref(false)
 const schedules = computed(() =>
   group(props.items, (it) => dayjs(it?.travelTime).format('YYYY-MM-DD')),
 )
+const indexDay = computed(() =>
+   {
+	   return Math.floor((new Date().getTime() - props.startTime) / 86400000)
+   }
+)
 const currentSchedule = computed(() => schedules.value[dayjs().format('YYYY-MM-DD')])
 const pull = () => {
   data.value = currentSchedule.value.slice(0, 3)
@@ -61,7 +67,8 @@ onMounted(() => {
       >
         <!-- 6月26日 第二天 -->
         {{ dayjs().format('M月D日') }}
-        第{{ Object.keys(schedules).findIndex((it) => it === dayjs().format('YYYY-MM-DD')) + 1 }}天
+        第{{ indexDay + 1 }}天
+		<!-- 第{{ Object.keys(schedules).findIndex((it) => it === dayjs().format('YYYY-MM-DD')) + 1 }}天-->
       </div>
     </div>
     <div

+ 22 - 4
packages/app/src/pages/home/index.vue

@@ -21,6 +21,7 @@ import {
   getBadges,
   getCertificates,
   getCircles,
+  getCirclesTwo,
   getMyStudyTours,
   getSetIndexConfigs,
   getStudyTours,
@@ -62,6 +63,7 @@ const { data: indexConfigsData, run: setIndexConfigsData } = useRequest(
 const { data: studyTours, run: setStudyTours } = useRequest(() => getMyStudyTours(), {
   initialData: [],
 })
+const circleList = ref([])
 const swiperData = ref<{ data: any }[]>()
 const swiperCurrent = ref(0)
 const autoplay = ref(true)
@@ -120,14 +122,16 @@ const handleShare = (options: any) => {
 const dictMemberDesignStyle = ref<any[]>()
 const dictCircleSpaceType = ref<any[]>()
 const offLoad = (e) => {
-  console.log(e)
+  // console.log(e)
 }
 const offError = (err) => {
-  console.log(err)
+  // console.log(err)
 }
 onShow(async () => {
   // await pageHelperRef.value?.reload()
   await pageHelperRef.value?.refresh()
+  let circleData = await getCircles()
+  circleList.value = circleData.data.list
   const reqs = [setHotActivities()]
   if (isLogined.value) {
     reqs.push(setStudyTours())
@@ -159,7 +163,7 @@ onShow(async () => {
     ]
     if (honors.length) {
       const honor = honors[0]
-      console.log(honor)
+      // console.log(honor)
       await show({
         title: honor.title ?? ' ',
         content: honor.content ?? ' ',
@@ -248,6 +252,7 @@ onShareAppMessage(shareAppMessage)
     <view class="bg-[#f6f6f6] relative bottom-4 rounded-t-2xl py-1">
       <template v-if="currentStudyTour">
         <ScheduleCard
+		  :startTime = "currentStudyTour.studyStartTime"
           custom-class="my-6 mx-3.5"
           :items="currentStudyTour.studyTravelDOList"
         ></ScheduleCard>
@@ -271,8 +276,21 @@ onShareAppMessage(shareAppMessage)
         </Card>
       </view>
       <view class="mx-3.5 text-5 font-bold">设计圈</view>
+	  <view class="mx-3.5">
+		  <template v-for="it of circleList" :key="it.id">
+			  <view class="my-3">
+			  	<MomentItem
+			  	  :dict="{ spaceType: dictCircleSpaceType, designStyle: dictMemberDesignStyle }"
+			  	  :options="it"
+			  	  @like="handleLike"
+			  	  @share="handleShare"
+			  	></MomentItem>		      
+			  </view>  				  
+		  </template>	
+		  
+	  </view>  
       <view class="mx-3.5">
-        <PageHelperEvo ref="pageHelperRef" :request="getCircles" class="">
+        <PageHelperEvo ref="pageHelperRef" :request="getCirclesTwo" class="">
           <template #default="{ source }">
             <template v-for="it of source.list" :key="it.id">
               <view class="my-3">