From c9928dd4f6d25e2339ea1400f59ec58674a927a7 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 19 六月 2025 20:07:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
pages/commodity-square/commoditySquare.vue | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 330 insertions(+), 0 deletions(-)
diff --git a/pages/commodity-square/commoditySquare.vue b/pages/commodity-square/commoditySquare.vue
new file mode 100644
index 0000000..f903f36
--- /dev/null
+++ b/pages/commodity-square/commoditySquare.vue
@@ -0,0 +1,330 @@
+<template>
+ <view class="container">
+ <input type="text" v-show="false" v-model="flushDom" />
+ <view class="commoditySquare">
+ <view class="left" style="width: 310rpx;">
+ <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"
+ :style="{width:item.width,height:item.height}"></video>
+ <image :src="item.thumbnail" v-if="item.goodsVideo ==null || item.goodsVideo == ''"
+ mode="aspectFill" class="goodsImg">
+ </image>
+ <view class="goodsInfo">
+ <view class="">{{item.goodsName}}</view>
+ <view class="priceInfo">
+ <view class="">锟{item.price}}</view>
+ <view class="">宸插敭: {{item.buyCount}}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="right" style="width: 310rpx;">
+ <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"
+ :style="{width:item.width,height:item.height}"></video>
+ <image :src="item.thumbnail" v-if="item.goodsVideo ==null || item.goodsVideo == ''"
+ mode="aspectFill" class="goodsImg">
+ </image>
+ <view class="goodsInfo">
+ <view class="">{{item.goodsName}}</view>
+ <view class="priceInfo">
+ <view class="">锟{item.price}}</view>
+ <view class="">宸插敭: {{item.buyCount}}</view>
+ </view>
+ </view>
+ </view>
+ </view>
+
+
+ <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">
+ <view class="typeNavigationItem" :class="{typeNavigationItemCheck:currentCategort ==item.id}"
+ @click="chooseCategory(item.id)" v-for="item in categoryList" :key="item.id">
+ {{item.name}}
+ </view>
+ </view>
+ </uni-drawer>
+ </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>
+
+<script>
+ import {
+ getCategoryList,
+ getGoodsList
+ } from "@/api/goods.js";
+ import {
+ getSTSToken
+ } from '@/api/common.js'
+ export default {
+ data() {
+ return {
+ //鏄惁鏄剧ず鎵撳紑宸︿晶寮圭獥
+ showLeft: false,
+ //鍟嗗搧瀵艰埅鍒嗙被
+ categoryList: [],
+ //褰撳墠閫変腑鐨勫垎绫�
+ currentCategort: '',
+ //鏄剧ず娌℃湁鏁版嵁
+ canLoadMore: false,
+ //鏈�澶ч〉鏁�
+ maxPages: 0,
+ //鍒锋柊dom浣跨敤
+ flushDom: '',
+ //鏌ヨ鍟嗗搧闇�瑕佺殑鍙傛暟
+ getGoodsParam: {
+ keyword: '',
+ pageSize: 12,
+ pageNumber: 1,
+ categoryId: null,
+ },
+ //鍟嗗搧鍙屽垪鏄剧ず
+ goodsList1: [],
+ goodsList2: [],
+ }
+ },
+ methods: {
+ confirm() {},
+ // 鎵撳紑绐楀彛
+ showDrawer(e) {
+ this.$refs[e].open()
+ },
+ // 鍏抽棴绐楀彛
+ closeDrawer(e) {
+ this.$refs[e].close()
+ },
+ // 鎶藉眽鐘舵�佸彂鐢熷彉鍖栬Е鍙�
+ change(e, type) {
+ this[type] = e
+ },
+ getvideoInfo(e, arrName, index) {
+ const wight = e.detail.width;
+ const height = e.detail.height;
+ this[arrName][index].width = 310 + 'rpx';
+ //璁$畻瀹介珮姣�
+ const videoHeight = 310 / (wight / height)
+ this[arrName][index].height = Math.floor(videoHeight) + 'rpx';
+ this[arrName][index].show = true;
+ 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}`
+ });
+ },
+ //鑾峰彇鍒嗙被瀵艰埅鏍�
+ async loadCategoryList() {
+ let list = await getCategoryList(0);
+ this.categoryList = list.data.result
+ },
+ 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)
+ }
+ },
+ onShow() {
+ this.showDrawer('showLeft')
+ },
+ async onLoad() {
+ await this.loadCategoryList();
+ this.getGoodsParam.pageNumber = 1
+ this.getGoodsParam.categoryId = ""
+ this.getGoodsParam.keyword = ""
+ 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)
+ },
+ 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 {
+ this.canLoadMore = true;
+ }
+
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .container {
+ width: 750rpx;
+ padding-bottom: 64rpx;
+ }
+
+ .commoditySquare {
+ width: 750rpx;
+ position: relative;
+ box-sizing: border-box;
+ display: flex;
+ justify-content: space-around;
+ }
+
+ .left {
+ box-sizing: border-box;
+ }
+
+ .right {
+ box-sizing: border-box;
+ }
+
+ .goodsImg {
+ width: 300rpx;
+ height: 300rpx;
+ padding-bottom: 10rpx;
+ }
+
+ .commoditySquareItem {
+ // border: 1rpx solid #b6dbba;
+ border-radius: 12rpx;
+ box-sizing: border-box;
+ padding: 0 32rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .commoditySquareItem:nth-child(n+1) {
+ margin-top: 32rpx;
+ }
+
+ .openShowLeft {
+ position: fixed;
+ top: 30rpx;
+ left: 0;
+ }
+
+ .navigationLeft {
+ position: relative;
+ background-color: #fcfcfc;
+ // opacity: 0.5;
+ box-sizing: border-box;
+ }
+
+
+ .scroll-view {
+ /* #ifndef APP-NVUE */
+ width: 100%;
+ height: 100%;
+ /* #endif */
+ flex: 1
+ }
+
+ .priceInfo {
+ margin-top: 10rpx;
+ display: flex;
+ justify-content: space-around;
+ }
+
+ // 澶勭悊鎶藉眽鍐呭婊氬姩
+ .scroll-view-box {
+ flex: 1;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ }
+
+
+ .typeNavigation {
+ padding: 10rpx;
+ position: relative;
+ }
+
+ .typeNavigationItem {
+ padding: 24rpx;
+ font-size: 28rpx;
+ color: black;
+ margin-top: 10rpx;
+ border-radius: 12rpx;
+ border: 1rpx solid gray;
+ }
+
+ .typeNavigationItemCheck {
+ background-color: #42b993;
+ color: #fff;
+ border: 0;
+ }
+
+ .closeShowLeft {
+ position: absolute;
+ top: 20rpx;
+ right: 0;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.8.0