From 818fbcd2dc3073ab4dacdff2b19cea56552f32fc Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期一, 23 六月 2025 15:33:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- pages/commodity-square/commoditySquare.vue | 198 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 132 insertions(+), 66 deletions(-) diff --git a/pages/commodity-square/commoditySquare.vue b/pages/commodity-square/commoditySquare.vue index b335475..f5ac205 100644 --- a/pages/commodity-square/commoditySquare.vue +++ b/pages/commodity-square/commoditySquare.vue @@ -1,9 +1,13 @@ <template> <view class="container"> - <input type="text" v-show="false" v-model="flushDom"/> + <input type="text" v-show="false" v-model="flushDom" /> + <view class="search"> + <u-search class="nav-search" @blur='searchGoods' placeholder="鎼滅储鍟嗗搧" :show-action="false"></u-search> + </view> <view class="commoditySquare"> <view class="left" style="width: 310rpx;"> - <view class="commoditySquareItem" v-for="(item,index) in goodsList1" @click="goToGoodsInfo('goodsList1',item.id)"> + <view class="commoditySquareItem" v-for="(item,index) in goodsList1" + @click="goToGoodsInfo('goodsList1',item.id)"> <video :src="item.goodsVideo" v-if="item.goodsVideo " v-show="item.show" :initial-time="0" :controls="false" object-fit="contain" :show-play-btn="false" :show-center-play-btn="false" @loadedmetadata="getvideoInfo($event,'goodsList1',index)" :ref="'video'+item.id" @@ -21,7 +25,8 @@ </view> </view> <view class="right" style="width: 310rpx;"> - <view class="commoditySquareItem" v-for="(item,index) in goodsList2" @click="goToGoodsInfo('goodsList2',item.id)"> + <view class="commoditySquareItem" v-for="(item,index) in goodsList2" + @click="goToGoodsInfo('goodsList2',item.id)"> <video :src="item.goodsVideo" v-if="item.goodsVideo " v-show="item.show" :initial-time="0" :controls="false" object-fit="contain" :show-play-btn="false" :show-center-play-btn="false" @loadedmetadata="getvideoInfo($event,'goodsList2',index)" :ref="'video'+item.id" @@ -43,17 +48,19 @@ <view class="openShowLeft" @click="showDrawer('showLeft')" v-if="!showLeft"> <uni-icons type="right" size="30"></uni-icons> </view> - <uni-drawer ref="showLeft" mode="left" width="120" @change="change($event,'showLeft')" - class="navigationLeft"> - <view class="typeNavigation"> + <uni-drawer ref="showLeft" mode="left" width="120" height="94vh" @change="change($event,'showLeft')" + :cus-style="true" class="navigationLeft"> + <scroll-view class="typeNavigation" :scroll-y="true" show-scrollbar="false"> <view class="typeNavigationItem" :class="{typeNavigationItemCheck:currentCategort ==item.id}" @click="chooseCategory(item.id)" v-for="item in categoryList" :key="item.id"> {{item.name}} </view> - </view> + </scroll-view> </uni-drawer> </view> - <view style="display: flex;align-items: center;justify-content: center;margin-top: 20rpx;" v-if="canLoadMore">娌℃湁鏇村鏁版嵁浜�.................</view> + <view style="display: flex;align-items: center;justify-content: center;margin-top: 20rpx;" v-if="canLoadMore"> + 娌℃湁鏇村鏁版嵁浜�.................</view> + <custom-tabbar bgColor="#ffffff" selected="shop"></custom-tabbar> </view> </template> @@ -68,6 +75,9 @@ export default { data() { return { + //璁板綍涓ゅ垪楂樺害 + listHeight1: 0, + listHeight2: 0, //鏄惁鏄剧ず鎵撳紑宸︿晶寮圭獥 showLeft: false, //鍟嗗搧瀵艰埅鍒嗙被 @@ -75,11 +85,11 @@ //褰撳墠閫変腑鐨勫垎绫� currentCategort: '', //鏄剧ず娌℃湁鏁版嵁 - canLoadMore:false, + canLoadMore: false, //鏈�澶ч〉鏁� maxPages: 0, //鍒锋柊dom浣跨敤 - flushDom:'', + flushDom: '', //鏌ヨ鍟嗗搧闇�瑕佺殑鍙傛暟 getGoodsParam: { keyword: '', @@ -93,6 +103,14 @@ } }, methods: { + async searchGoods(keyWard) { + this.getGoodsParam.keyword = keyWard + this.getGoodsParam.pageNumber = 1 + this.getGoodsParam.categoryId = '' + this.goodsList1 = [] + this.goodsList2 = [] + await this.getgoodsData(); + }, confirm() {}, // 鎵撳紑绐楀彛 showDrawer(e) { @@ -111,84 +129,113 @@ const height = e.detail.height; this[arrName][index].width = 310 + 'rpx'; //璁$畻瀹介珮姣� - const videoHeight = 310 / (wight / height) - this[arrName][index].height = Math.floor(videoHeight) + 'rpx'; + const videoHeight = Math.floor(310 / (wight / height)) + this[arrName][index].height = videoHeight + 'rpx'; this[arrName][index].show = true; + //璁$畻闆嗗悎楂樺害 + if (arrName === 'goodsList2') { + if (videoHeight > 300) { + this.listHeight2 += videoHeight; + } else if (videoHeight < 300) { + this.listHeight2 -= videoHeight; + } + } + if (arrName === 'goodsList1') { + if (videoHeight > 300) { + this.listHeight1 += videoHeight; + } else if (videoHeight < 300) { + this.listHeight1 -= videoHeight; + } + } console.log(this[arrName][index].width, this[arrName][index].height) this.flushDom = new Date(); }, - goToGoodsInfo(arrName,id){ - const item =this[arrName].find(item=> id === item.id); - uni.navigateTo({ - url: `/pages/product/goods?id=${item.id}&goodsId=${item.goodsId}` - }); + goToGoodsInfo(arrName, id) { + const item = this[arrName].find(item => id === item.id); + uni.navigateTo({ + url: `/pages/product/goods?id=${item.id}&goodsId=${item.goodsId}` + }); }, //鑾峰彇鍒嗙被瀵艰埅鏍� async loadCategoryList() { let list = await getCategoryList(0); this.categoryList = list.data.result }, + async getgoodsData() { + const goodsList = await getGoodsList(this.getGoodsParam); + const sts = await getSTSToken(); + const stsUrl = sts.data.data.endpoint + // 澶勭悊鏁版嵁 + goodsList.data.result.records.forEach(item => { + if (item.thumbnail !== '' && item.thumbnail !== null && item.thumbnail.indexOf('http') === + -1) { + item.thumbnail = stsUrl + '/' + item.thumbnail + } + if (item.goodsVideo !== '' && item.goodsVideo !== null && item.goodsVideo.indexOf( + 'http') === -1) { + item.goodsVideo = stsUrl + '/' + item.goodsVideo + } + }) + //璁$畻涓や釜鏁扮粍鐨勯暱搴� 鐢ㄤ簬瑙e喅鐎戝竷娴佷袱杈归珮搴︿笉涓�鑷撮棶棰� + //骞冲垎缁欎袱涓暟缁� + const goodsSize = goodsList.data.result.records.length; + let middle = Math.ceil(goodsSize / 2); + //鍒ゆ柇閭d釜闆嗗悎闀垮害楂� 閲嶆柊鍒嗛厤闆嗗悎鏁版嵁 + const diffHeight = this.listHeight1 - this.listHeight2; + //list1闀垮害澶т簬list2 + if (diffHeight > 0) { + const needCount = Math.floor(diffHeight / 300) + if (needCount > 6) { + middle = 0; + } else { + middle -= needCount; + } + } else if(diffHeight < 0) { + const needCount = Math.abs(Math.floor(diffHeight / 300)) + if (needCount > 6) { + middle += 6 + } else { + middle = needCount; + } + } + this.goodsList1 = [...this.goodsList1, ...goodsList.data.result.records.slice(0, middle)]; + this.goodsList2 = [...this.goodsList2, ...goodsList.data.result.records.slice(middle)]; + this.maxPages = goodsList.data.result.pages + + // if(this.listHeight1===0||this.listHeight2===0)} + this.listHeight1 += middle * 300; + this.listHeight2 += (goodsSize - middle) * 300 + }, async chooseCategory(id) { - if (this.currentCategort === id) return this.canLoadMore = false; this.currentCategort = id this.getGoodsParam.categoryId = id this.getGoodsParam.keyword = '' this.getGoodsParam.pageNumber = 1 - const goodsList = await getGoodsList(this.getGoodsParam); - const sts = await getSTSToken(); - const stsUrl = sts.data.data.endpoint - // 澶勭悊鏁版嵁 - goodsList.data.result.records.forEach(item => { - if (item.thumbnail !== '' && item.thumbnail !== null && item.thumbnail.indexOf('http') === - -1) { - item.thumbnail = stsUrl + '/' + item.thumbnail - } - if (item.goodsVideo !== '' && item.goodsVideo !== null && item.goodsVideo.indexOf( - 'http') === -1) { - item.goodsVideo = stsUrl + '/' + item.goodsVideo - } - }) - //骞冲垎缁欎袱涓暟缁� - const middle = Math.ceil(goodsList.data.result.records.length / 2); - this.goodsList1 = goodsList.data.result.records.slice(0, middle); - this.goodsList2 = goodsList.data.result.records.slice(middle); - this.maxPages = goodsList.data.result.pages - console.log(this.maxPages) + this.goodsList1 = []; + this.goodsList2 = []; + await this.getgoodsData(); + console.log(this.maxPages) } }, onShow() { this.showDrawer('showLeft') }, - onLoad() { - this.loadCategoryList(); + async onLoad() { + await this.loadCategoryList(); + this.getGoodsParam.pageNumber = 1 + this.getGoodsParam.categoryId = "" + this.getGoodsParam.keyword = "" + await this.getgoodsData() }, - async onReachBottom(){ - if(this.getGoodsParam.pageNumber<this.maxPages){ + async onReachBottom() { + if (this.getGoodsParam.pageNumber < this.maxPages) { this.getGoodsParam.pageNumber++; - const goodsList = await getGoodsList(this.getGoodsParam); - const sts = await getSTSToken(); - const stsUrl = sts.data.data.endpoint - // 澶勭悊鏁版嵁 - goodsList.data.result.records.forEach(item => { - if (item.thumbnail !== '' && item.thumbnail !== null && item.thumbnail.indexOf('http') === - -1) { - item.thumbnail = stsUrl + '/' + item.thumbnail - } - if (item.goodsVideo !== '' && item.goodsVideo !== null && item.goodsVideo.indexOf( - 'http') === -1) { - item.goodsVideo = stsUrl + '/' + item.goodsVideo - } - }) - //骞冲垎缁欎袱涓暟缁� - const middle = Math.ceil(goodsList.data.result.records.length / 2); - this.goodsList1 = [...this.goodsList1,...goodsList.data.result.records.slice(0, middle)]; - this.goodsList2 = [...this.goodsList2,...goodsList.data.result.records.slice(middle)]; - this.maxPages = goodsList.data.result.pages - }else{ + await this.getgoodsData() + } else { this.canLoadMore = true; } - + } } </script> @@ -222,7 +269,7 @@ } .commoditySquareItem { - border: 1rpx solid darkgray; + // border: 1rpx solid #b6dbba; border-radius: 12rpx; box-sizing: border-box; padding: 0 32rpx; @@ -238,8 +285,16 @@ .openShowLeft { position: fixed; - top: 30rpx; + top: 120rpx; left: 0; + align-items: center; + justify-content: flex-start; + background-color: #b6b6b6; + opacity: 0.8; + z-index: 999; + height: 70rpx; + width: 50rpx; + border-radius: 0 50% 50% 0; } .navigationLeft { @@ -276,8 +331,10 @@ .typeNavigation { + box-sizing: border-box; padding: 10rpx; - position: relative; + height: 100%; + // position: relative; } .typeNavigationItem { @@ -300,4 +357,13 @@ top: 20rpx; right: 0; } + + .nav-search { + padding-left: 30rpx !important; + padding-right: 20rpx !important; + // position: fixed; + // top: 0; + // width: 500rpx; + // z-index: 9999; + } </style> \ No newline at end of file -- Gitblit v1.8.0