cr 4 роки тому
батько
коміт
59d05a36d0

+ 184 - 1
src/pages/goods/detail.vue

@@ -291,6 +291,38 @@
291 291
                     </li>
292 292
                 </ul>
293 293
             </div>
294
+            
295
+            <div class="explain">
296
+                <ul class="explain-list">
297
+                    <li class="item">
298
+                        <div class="ex-des bold">
299
+                            划线价格
300
+                        </div>
301
+                        <div class="ex-des">
302
+                            商品的专柜价、吊牌价、正品零售价、厂商指导价或该商品的曾经展示过的销售价等,<span class="bold">并非原价</span>,仅供参考。
303
+                        </div>
304
+                    </li>
305
+                    <li class="item">
306
+                        <div class="ex-des bold">
307
+                            未划线价格
308
+                        </div>
309
+                        <div class="ex-des">
310
+                            商品的<span class="bold">实时标价</span>,不因标书的差异改变性质,集体成交价格根据商品参加活动,或会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
311
+                        </div>
312
+                    </li>
313
+                    <li class="item">
314
+                        <div class="ex-des">
315
+                            商家详情页(含主图)以图片或文字标注的一口价、促销价、优惠价等价格可能是在使用优惠券、满减或特定优惠活动和时段等情形下的价格,集体轻易结算页面的标价、优惠条件活动规则为准。
316
+                        </div>
317
+                    </li>
318
+                    <li class="item">
319
+                        <div class="ex-des">
320
+                            此说明仅当价格出现比较时有效。
321
+                        </div>
322
+                    </li>
323
+                </ul>
324
+            </div>
325
+
294 326
         </scroll-view>
295 327
         <img
296 328
             class="live"
@@ -418,6 +450,11 @@
418 450
         </div>
419 451
         <my-share ref="share" @share="saveImage"></my-share>
420 452
         <!-- <g-coupon ref="coupon" :goods-id="goodsId"></g-coupon> -->
453
+        <canvas
454
+            class="canvas__forward"
455
+            canvas-id="canvas2"
456
+            :disable-scroll="true"
457
+        ></canvas>
421 458
     </div>
422 459
 </template>
423 460
 
@@ -454,6 +491,8 @@ export default {
454 491
             layout: null,
455 492
 
456 493
             triggered: false,
494
+
495
+            canvasforwardPath: "",
457 496
         };
458 497
     },
459 498
 
@@ -495,7 +534,7 @@ export default {
495 534
         return {
496 535
             title: title,
497 536
             path: self.router.getPath(self.$mp.page.route, obj),
498
-            imageUrl: self.goods.tradeSwiper.mainImage,
537
+            imageUrl: self.canvasforwardPath || self.goods.tradeSwiper.mainImage,
499 538
         };
500 539
     },
501 540
 
@@ -574,6 +613,7 @@ export default {
574 613
                             this.goods.itemDetail.detailImage = this.goods.tradeSwiper.images;
575 614
                         }
576 615
                         this.ifSpec();
616
+                        self.creationShare2();
577 617
                     } else {
578 618
                         self.fn
579 619
                             .showModal({
@@ -985,6 +1025,111 @@ export default {
985 1025
                 });
986 1026
             });
987 1027
         },
1028
+        
1029
+        // 创建分享图
1030
+        creationShare2() {
1031
+            const self = this;
1032
+            const ctx = uni.createCanvasContext("canvas2", self);
1033
+
1034
+            return new Promise((resolve) => {
1035
+                self.router.getScene(self.$mp.query).then((res) => {
1036
+                    res.uid = self.user.id;
1037
+                    res.shopId = self.activeShop.id;
1038
+
1039
+                    Promise.all([
1040
+                        uni.getImageInfo({
1041
+                            src:
1042
+                                "https://oss.ixiaokejia.com/images/common/share_bg.jpg",
1043
+                        }),
1044
+                        uni.getImageInfo({
1045
+                            src:
1046
+                                "https://oss.ixiaokejia.com/images/common/share_bg_box.png",
1047
+                        }),
1048
+                        uni.getImageInfo({
1049
+                            src: self.goods.tradeSwiper.mainImage,
1050
+                        }),
1051
+                        uni.getImageInfo({
1052
+                            src:
1053
+                                "https://oss.ixiaokejia.com/images/common/share_tag1.jpg",
1054
+                        }),
1055
+                        uni.getImageInfo({
1056
+                            src:
1057
+                                "https://oss.ixiaokejia.com/images/common/share_tag2.png",
1058
+                        }),
1059
+                    ]).then((res) => {
1060
+                        // 背景
1061
+                        ctx.drawImage(res[0][1].path, 0, 0, 500, 400);
1062
+
1063
+                        // 标题
1064
+                        ctx.setFontSize(28);
1065
+                        ctx.setFillStyle("#fff");
1066
+                        ctx.fillText("厂商直邮", 205, 40);
1067
+                        ctx.stroke();
1068
+
1069
+                        ctx.setFontSize(24);
1070
+                        ctx.setFillStyle("#fff");
1071
+                        ctx.fillText("免费包邮,厂商快递直邮到家", 100, 75);
1072
+                        ctx.stroke();
1073
+
1074
+                        // 背景box
1075
+                        ctx.drawImage(res[1][1].path, 10, 92, 477, 292);
1076
+
1077
+                        // // 商品图片
1078
+                        ctx.drawImage(res[2][1].path, 20, 100, 275, 275);
1079
+
1080
+                        // 特惠商品
1081
+                        ctx.drawImage(res[3][1].path, 310, 110, 157, 46);
1082
+
1083
+                        ctx.setFontSize(28);
1084
+                        ctx.setFillStyle("#fff");
1085
+                        ctx.fillText("特惠商品", 330, 144);
1086
+
1087
+                        // 价格
1088
+                        let itemPrice = self.goods.priceInfo.nowPrice / 100;
1089
+                        ctx.setFontSize(38);
1090
+                        ctx.setFillStyle("#f00");
1091
+                        ctx.fillText("¥" + itemPrice, 320, 220);
1092
+                        ctx.stroke();
1093
+
1094
+                        // 价格2
1095
+                        if(self.goods.priceInfo.oldPrice){
1096
+                            let tagPrice = self.goods.priceInfo.oldPrice / 100;
1097
+                            ctx.setFontSize(28);
1098
+                            ctx.setFillStyle("#999");
1099
+                            ctx.fillText("¥" + tagPrice, 325, 265);
1100
+                            ctx.fillRect(
1101
+                                328,
1102
+                                253,
1103
+                                (String(tagPrice).length + 1) * 20,
1104
+                                2
1105
+                            );
1106
+                            ctx.stroke();
1107
+                        }
1108
+
1109
+                        // buy
1110
+                        ctx.drawImage(res[4][1].path, 307, 300, 170, 70);
1111
+
1112
+                        ctx.setFontSize(28);
1113
+                        ctx.setFillStyle("#fff");
1114
+                        ctx.fillText("立即购买", 335, 345);
1115
+
1116
+                        ctx.draw();
1117
+
1118
+                        setTimeout(() => {
1119
+                            // 生成临时路径
1120
+                            uni.canvasToTempFilePath({
1121
+                                canvasId: "canvas2",
1122
+                                fileType: "jpg",
1123
+                                success: function (res) {
1124
+                                    // self.canvasShow = false
1125
+                                    self.canvasforwardPath = res.tempFilePath;
1126
+                                },
1127
+                            });
1128
+                        }, 100);
1129
+                    });
1130
+                });
1131
+            });
1132
+        },
988 1133
         viewImg() {
989 1134
             let self = this;
990 1135
             //查看图片
@@ -1940,4 +2085,42 @@ page {
1940 2085
         padding-top: px(20);
1941 2086
     }
1942 2087
 }
2088
+.canvas__forward {
2089
+    width: 500px;
2090
+    height: 400px;
2091
+    background-color: #fff;
2092
+    visibility: hidden;
2093
+    opacity: 0;
2094
+}
2095
+.explain{
2096
+    padding: px(60) px(40);
2097
+    background-color: #fff;
2098
+   .item{
2099
+       margin-bottom: px(30);
2100
+       line-height: 1.4;
2101
+       font-size: px(38);
2102
+       color: #666;
2103
+   } 
2104
+   .ex-des:first-child{
2105
+       position: relative;
2106
+       &::after{
2107
+           content: "";
2108
+           display: block;
2109
+           width: px(14);
2110
+           height: px(14);
2111
+           border-radius: 50%;
2112
+           position: absolute;
2113
+           top: px(23);
2114
+           left: px(-20);
2115
+           z-index: 10;
2116
+           background-color: rgb(152, 81, 84);
2117
+       }
2118
+   }
2119
+   .ex-des~.ex-des{
2120
+       margin-top: px(10);
2121
+   }
2122
+}
2123
+.bold{
2124
+    font-weight: bold;;
2125
+}
1943 2126
 </style>

+ 1 - 1
src/pages/goods/index.vue

@@ -187,7 +187,7 @@ export default {
187 187
             categoryDis: true,
188 188
             index: 1,
189 189
             loginAfter: false,
190
-            curTab: "1",
190
+            curTab: "0",
191 191
             cateId: "",
192 192
             productCount: {
193 193
                 selfProductCount: "",

+ 183 - 10
src/pages/recommend/detail.vue

@@ -57,7 +57,7 @@
57 57
                 </div>
58 58
                 <div class="info__bottom">
59 59
                     <div class="info__title info__deliveryDesc">
60
-                        发货:{{activityData.deliveryDesc}}
60
+                        发货:{{ activityData.deliveryDesc }}
61 61
                     </div>
62 62
                 </div>
63 63
                 <div
@@ -212,9 +212,33 @@
212 212
                 ></my-image>
213 213
             </div>
214 214
 
215
-            <!-- 装修 -->
216
-            <div v-if="layout">
217
-                <m-custom :layout="layout"></m-custom>
215
+            <div class="explain">
216
+                <ul class="explain-list">
217
+                    <li class="item">
218
+                        <div class="ex-des bold">划线价格</div>
219
+                        <div class="ex-des">
220
+                            商品的专柜价、吊牌价、正品零售价、厂商指导价或该商品的曾经展示过的销售价等,<span
221
+                                class="bold"
222
+                                >并非原价</span
223
+                            >,仅供参考。
224
+                        </div>
225
+                    </li>
226
+                    <li class="item">
227
+                        <div class="ex-des bold">未划线价格</div>
228
+                        <div class="ex-des">
229
+                            商品的<span class="bold">实时标价</span
230
+                            >,不因标书的差异改变性质,集体成交价格根据商品参加活动,或会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
231
+                        </div>
232
+                    </li>
233
+                    <li class="item">
234
+                        <div class="ex-des">
235
+                            商家详情页(含主图)以图片或文字标注的一口价、促销价、优惠价等价格可能是在使用优惠券、满减或特定优惠活动和时段等情形下的价格,集体轻易结算页面的标价、优惠条件活动规则为准。
236
+                        </div>
237
+                    </li>
238
+                    <li class="item">
239
+                        <div class="ex-des">此说明仅当价格出现比较时有效。</div>
240
+                    </li>
241
+                </ul>
218 242
             </div>
219 243
         </scroll-view>
220 244
 
@@ -298,7 +322,7 @@
298 322
                 </div>
299 323
             </div>
300 324
         </div>
301
-                <div
325
+        <div
302 326
             class="canvas"
303 327
             v-show="canvasShow"
304 328
             @touchmove.stop=""
@@ -323,6 +347,11 @@
323 347
         <my-share ref="share" @share="saveImage" :hideMany="true"></my-share>
324 348
         <g-spec ref="spec" :goods="goods" :spec.sync="spec"></g-spec>
325 349
         <!-- <g-coupon ref="coupon" :goods-id="goodsId"></g-coupon> -->
350
+        <canvas
351
+            class="canvas__forward"
352
+            canvas-id="canvas2"
353
+            :disable-scroll="true"
354
+        ></canvas>
326 355
     </div>
327 356
 </template>
328 357
 
@@ -358,6 +387,8 @@ export default {
358 387
 
359 388
             triggered: false,
360 389
             activityData: {},
390
+
391
+            canvasforwardPath: "",
361 392
         };
362 393
     },
363 394
 
@@ -394,7 +425,7 @@ export default {
394 425
         return {
395 426
             title: title,
396 427
             path: self.router.getPath(self.$mp.page.route, obj),
397
-            imageUrl: self.goods.pictureUrls[0],
428
+            imageUrl: self.canvasforwardPath || self.goods.pictureUrls[0],
398 429
         };
399 430
     },
400 431
 
@@ -433,6 +464,7 @@ export default {
433 464
                         self.getActivity(data.activityNo);
434 465
                         self.fn.setTitle(data.name);
435 466
                         console.log(self.goods);
467
+                        self.creationShare2();
436 468
                     } else {
437 469
                         self.fn
438 470
                             .showModal({
@@ -688,7 +720,6 @@ export default {
688 720
             }
689 721
         },
690 722
 
691
-        
692 723
         // 保存图片到相册
693 724
         async saveImage(type) {
694 725
             const self = this;
@@ -736,7 +767,6 @@ export default {
736 767
             }
737 768
         },
738 769
 
739
-        
740 770
         // 创建分享图
741 771
         creationShare() {
742 772
             const self = this;
@@ -747,7 +777,6 @@ export default {
747 777
             });
748 778
             return new Promise((resolve) => {
749 779
                 self.router.getScene(self.$mp.query).then((res) => {
750
-                    
751 780
                     res.uid = self.user.id;
752 781
                     res.shopId = self.activeShop.id;
753 782
 
@@ -931,6 +960,111 @@ export default {
931 960
                 });
932 961
             });
933 962
         },
963
+
964
+        // 创建分享图
965
+        creationShare2() {
966
+            const self = this;
967
+            const ctx = uni.createCanvasContext("canvas2", self);
968
+
969
+            return new Promise((resolve) => {
970
+                self.router.getScene(self.$mp.query).then((res) => {
971
+                    res.uid = self.user.id;
972
+                    res.shopId = self.activeShop.id;
973
+
974
+                    Promise.all([
975
+                        uni.getImageInfo({
976
+                            src:
977
+                                "https://oss.ixiaokejia.com/images/common/share_bg.jpg",
978
+                        }),
979
+                        uni.getImageInfo({
980
+                            src:
981
+                                "https://oss.ixiaokejia.com/images/common/share_bg_box.png",
982
+                        }),
983
+                        uni.getImageInfo({
984
+                            src: self.goods.pictureUrls[0],
985
+                        }),
986
+                        uni.getImageInfo({
987
+                            src:
988
+                                "https://oss.ixiaokejia.com/images/common/share_tag1.jpg",
989
+                        }),
990
+                        uni.getImageInfo({
991
+                            src:
992
+                                "https://oss.ixiaokejia.com/images/common/share_tag2.png",
993
+                        }),
994
+                    ]).then((res) => {
995
+                        // 背景
996
+                        ctx.drawImage(res[0][1].path, 0, 0, 500, 400);
997
+
998
+                        // 标题
999
+                        ctx.setFontSize(28);
1000
+                        ctx.setFillStyle("#fff");
1001
+                        ctx.fillText("厂商直邮", 205, 40);
1002
+                        ctx.stroke();
1003
+
1004
+                        ctx.setFontSize(24);
1005
+                        ctx.setFillStyle("#fff");
1006
+                        ctx.fillText("免费包邮,厂商快递直邮到家", 100, 75);
1007
+                        ctx.stroke();
1008
+
1009
+                        // 背景box
1010
+                        ctx.drawImage(res[1][1].path, 10, 92, 477, 292);
1011
+
1012
+                        // // 商品图片
1013
+                        ctx.drawImage(res[2][1].path, 20, 100, 275, 275);
1014
+
1015
+                        // 特惠商品
1016
+                        ctx.drawImage(res[3][1].path, 310, 110, 157, 46);
1017
+
1018
+                        ctx.setFontSize(28);
1019
+                        ctx.setFillStyle("#fff");
1020
+                        ctx.fillText("特惠商品", 330, 144);
1021
+
1022
+                        // 价格
1023
+                        let itemPrice = self.goods.itemPrice / 100;
1024
+                        ctx.setFontSize(38);
1025
+                        ctx.setFillStyle("#f00");
1026
+                        ctx.fillText("¥" + itemPrice, 320, 220);
1027
+                        ctx.stroke();
1028
+
1029
+                        // 价格2
1030
+                        if (self.goods.tagPrice) {
1031
+                            let tagPrice = self.goods.tagPrice / 100;
1032
+                            ctx.setFontSize(28);
1033
+                            ctx.setFillStyle("#999");
1034
+                            ctx.fillText("¥" + tagPrice, 325, 265);
1035
+                            ctx.fillRect(
1036
+                                328,
1037
+                                253,
1038
+                                (String(tagPrice).length + 1) * 20,
1039
+                                2
1040
+                            );
1041
+                            ctx.stroke();
1042
+                        }
1043
+
1044
+                        // buy
1045
+                        ctx.drawImage(res[4][1].path, 307, 300, 170, 70);
1046
+
1047
+                        ctx.setFontSize(28);
1048
+                        ctx.setFillStyle("#fff");
1049
+                        ctx.fillText("立即购买", 335, 345);
1050
+
1051
+                        ctx.draw();
1052
+
1053
+                        setTimeout(() => {
1054
+                            // 生成临时路径
1055
+                            uni.canvasToTempFilePath({
1056
+                                canvasId: "canvas2",
1057
+                                fileType: "jpg",
1058
+                                success: function (res) {
1059
+                                    // self.canvasShow = false
1060
+                                    self.canvasforwardPath = res.tempFilePath;
1061
+                                },
1062
+                            });
1063
+                        }, 100);
1064
+                    });
1065
+                });
1066
+            });
1067
+        },
934 1068
     },
935 1069
 
936 1070
     // 数据计算
@@ -1436,8 +1570,16 @@ page {
1436 1570
         width: px(920);
1437 1571
         height: px(1483);
1438 1572
         background-color: #fff;
1573
+        display: none;
1439 1574
     }
1440 1575
 }
1576
+.canvas__forward {
1577
+    width: 500px;
1578
+    height: 400px;
1579
+    background-color: #fff;
1580
+    visibility: hidden;
1581
+    opacity: 0;
1582
+}
1441 1583
 
1442 1584
 .shop-recommend {
1443 1585
     margin-top: px(30);
@@ -1715,9 +1857,40 @@ page {
1715 1857
         }
1716 1858
     }
1717 1859
 }
1718
-.info__deliveryDesc{
1860
+.info__deliveryDesc {
1719 1861
     font-size: px(42);
1720 1862
     color: #666;
1721 1863
     display: block;
1722 1864
 }
1865
+.explain {
1866
+    padding: px(60) px(40);
1867
+    background-color: #fff;
1868
+    .item {
1869
+        margin-bottom: px(30);
1870
+        line-height: 1.4;
1871
+        font-size: px(38);
1872
+        color: #666;
1873
+    }
1874
+    .ex-des:first-child {
1875
+        position: relative;
1876
+        &::after {
1877
+            content: "";
1878
+            display: block;
1879
+            width: px(14);
1880
+            height: px(14);
1881
+            border-radius: 50%;
1882
+            position: absolute;
1883
+            top: px(23);
1884
+            left: px(-20);
1885
+            z-index: 10;
1886
+            background-color: rgb(152, 81, 84);
1887
+        }
1888
+    }
1889
+    .ex-des ~ .ex-des {
1890
+        margin-top: px(10);
1891
+    }
1892
+}
1893
+.bold {
1894
+    font-weight: bold;
1895
+}
1723 1896
 </style>

+ 1 - 1
src/pages/user/index.vue

@@ -279,7 +279,7 @@
279 279
         </div>
280 280
 
281 281
         <div class="web-support">
282
-            <p class="text">0.0.88</p>
282
+            <p class="text">0.0.89</p>
283 283
             <!-- <div class="num" @click="makeCall">400-629-6782</div> -->
284 284
         </div>
285 285
     </div>

BIN
src/static/goods/buy.png