绿满眶商城微信小程序-uniapp
peng
2025-10-13 a95cd4cfc856d5861c57c82034f874ee27a3ef13
定制商品
5个文件已修改
87 ■■■■ 已修改文件
api/trade.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/payment/payOrder.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/commodity-square/coups-goods-list.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/order/myOrder.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/m-buy/goods.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/trade.js
@@ -204,9 +204,9 @@
export function getCashierData(params) {
  return http.request({
    url: "payment/cashier/tradeDetail",
    method: Method.GET,
    method: Method.POST,
    needToken: true,
    params,
    data:params,
  });
}
pages/cart/payment/payOrder.vue
@@ -186,13 +186,17 @@
                parms.sn = this.sn;
                parms.orderType = this.orderType;
                parms.clientType = this.paymentType;
                if(!this.routerVal.template){
                const template = decodeURIComponent(this.routerVal.template)
                if(this.routerVal.template){
                    console.log('获取详情执行了')
                const template = JSON.parse(decodeURIComponent(this.routerVal.template))
                console.log('获取详情执行了获取到的值-----------------------》',template)
                parms.templateId = template.templateId;
                parms.templateName = template.templateName;
                parms.chooseImage = template.chooseImage;
                parms.chooseImageId = template.chooseImageId;
                parms.templateForm = template.templateForm;
                }
                console.log('--------------------->执行的参数为',parms)
                API_Trade.getCashierData(parms).then((res) => {
                
                    if(res.data.success){
pages/commodity-square/coups-goods-list.vue
@@ -42,7 +42,7 @@
                            <view
                                style="display: flex; justify-content: space-between;align-items:center; 100%;margin-top: 32rpx;width: 100%;">
                                <view class="goodsPrice">¥{{item.price}}</view>
                                <view class="addCard" style="display: flex; align-items: center;" v-if="item.goodsType !=='VIRTUAL_GOODS'">
                                <view class="addCard" style="display: flex; align-items: center;" v-if="item.goodsType !=='VIRTUAL_GOODS'&& item.customizeFlag!=='CUSTOMIZE'">
                                    <view style="padding: 20rpx 0 20rpx 20rpx;" v-show="item.cardNum && item.cardNum>0"
                                        @click.stop="miousCardNum($event,item.id)">
                                        <uni-icons type="minus" size="30" color="#96a6bc"></uni-icons>
pages/order/myOrder.vue
@@ -112,6 +112,17 @@
                  >
                    优惠券卡包
                  </view>
                  <!-- 新增:定制商品样式 -->
                  <view
                    ripple
                    shape="circle"
                    class="cancel-btn"
                    size="mini"
                                      v-if="order.customizeFlag === 'CUSTOMIZE'"
                    @click="opencustomize(order)"
                  >
                    定制商品
                  </view>
                  <!-- 取消订单 -->
<!--                  <view
                    ripple
@@ -456,6 +467,12 @@
            url:"/pages/order/cardPack?sn=" + order.sn
        })  
      },
      opencustomize(order){
          console.log(order)
              uni.navigateTo({
                  url:"/pages/order/cardPack?sn=" + order.sn
              })
      },
      //再来一单
      buyBack(order){
      console.log(JSON.stringify(order))
pages/product/m-buy/goods.vue
@@ -113,15 +113,15 @@
                                    v-for="(img, index) in consumizetemplateInfo.templateImgs" 
                                    :key="img.id"
                                    class="image-item"
                                    :class="{ selected: selectedImages.includes(img.imgUrl) }"
                                    @click="selectImage(img.imgUrl)"
                                    :class="{ selected: selectedImageObjects.some(selectedImg => selectedImg.id === img.id) }"
                                    @click="selectImage(img)"
                                >
                                    <image 
                                        :src="getFilePreviewUrlSync(img.imgUrl)" 
                                        class="image-preview"
                                        mode="aspectFill"
                                    />
                                    <view v-if="selectedImages.includes(img.imgUrl)" class="selected-overlay">
                                    <view v-if="selectedImageObjects.some(selectedImg => selectedImg.id === img.id)" class="selected-overlay">
                                        <uni-icons type="checkmarkempty" size="30" color="#fff"></uni-icons>
                                    </view>
                                </view>
@@ -231,10 +231,12 @@
            
            // 表单相关数据
            selectedImages: [], // 选中的模板图片
            selectedImageObjects: [], // 选中的模板图片对象(包含ID等完整信息)
            formValues: {
                templateId: "", // 模板ID
                templateName: "", // 模板名称
                chooseImage: "", // 选中的图片
                chooseImageId: "", // 选中图片的ID
                templateForm: [] // 表单数组 [{id, templateTitle, value}]
            }, // 表单值
            imagePreviewUrls: {}, // 图片预览URL
@@ -418,18 +420,28 @@
            }
        },
        
        // 选择模板图片
        selectImage(imgUrl) {
            const index = this.selectedImages.indexOf(imgUrl);
            if (index > -1) {
                // 如果已选中,则取消选择
                this.selectedImages.splice(index, 1);
        // 选择模板图片(单选模式)
        selectImage(imgObject) {
            // 检查当前选中的图片是否就是点击的图片
            const selectedIndex = this.selectedImageObjects.findIndex(selectedImg => selectedImg.id === imgObject.id);
            if (selectedIndex > -1) {
                // 如果点击的是已选中的图片,则取消选择
                this.selectedImageObjects = [];
                this.selectedImages = [];
            } else {
                // 否则添加到选中列表
                this.selectedImages.push(imgUrl);
                // 如果点击的是未选中的图片,则选中该图片(清空之前的选择)
                this.selectedImageObjects = [imgObject];
                this.selectedImages = [imgObject.imgUrl];
            }
            // 更新formValues中的chooseImage
            // 更新formValues中的chooseImage和chooseImageId
            this.formValues.chooseImage = this.selectedImages.join(',');
            // 将选中图片的ID也存储到formValues中
            this.formValues.chooseImageId = this.selectedImageObjects.map(img => img.id).join(',');
            // 强制更新视图以确保UI正确反映数据变化
            this.$forceUpdate();
        },
        
        // 选择图片(参考video.vue的实现)
@@ -620,8 +632,11 @@
        
        // 表单提交处理
        handleFormSubmit() {
            // 使用新的formValues数据结构
            const formData = this.formValues;
            // 确保选中的图片对象也被包含在提交数据中
            const formData = {
                ...this.formValues,
                selectedImageObjects: this.selectedImageObjects
            };
            
            console.log('表单数据:', formData);
            // 这里可以添加实际的表单提交逻辑
@@ -762,12 +777,18 @@
                    data.cartType = 'BUY_NOW';
                }
                // 创建包含图片ID的完整表单数据
                const templateData = {
                    ...this.formValues,
                    selectedImageObjects: this.selectedImageObjects
                };
                API_trade.addToCart(data).then(res => {
                    if (res.data.code == 200) {
                        // 使用setTimeout延迟跳转,避免影响弹窗
                        setTimeout(() => {
                            uni.navigateTo({
                                url: `/pages/order/fillorder?way=${data.cartType}&addr=${this.addr.id || ''}&template=${encodeURIComponent(JSON.stringify(this.formValues))}&parentOrder=${encodeURIComponent(JSON.stringify(this.parentOrder))}`
                                url: `/pages/order/fillorder?way=${data.cartType}&addr=${this.addr.id || ''}&template=${encodeURIComponent(JSON.stringify(templateData))}&parentOrder=${encodeURIComponent(JSON.stringify(this.parentOrder))}`
                            });
                        }, 100);
                    }
@@ -877,7 +898,12 @@
                this.formValues.templateId = this.consumizetemplateInfo.id;
                this.formValues.templateName = this.consumizetemplateInfo.name;
                this.formValues.chooseImage = "";
                this.formValues.chooseImageId = "";
                this.formValues.templateForm = [];
                // 初始化选中的图片对象数组和图片URL数组
                this.selectedImageObjects = [];
                this.selectedImages = [];
            }
        }
    },