create-weapp-vite 2.0.31 → 2.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-FGMHC2DJ.js → chunk-IT75MAH3.js} +3 -2
  3. package/dist/cli.js +5 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +1 -1
  6. package/package.json +1 -1
  7. package/templates/wevu-retail/.editorconfig +9 -0
  8. package/templates/wevu-retail/.vscode/settings.json +10 -0
  9. package/templates/wevu-retail/AGENTS.md +35 -0
  10. package/templates/wevu-retail/README.md +26 -0
  11. package/templates/wevu-retail/auto-import-components.json +1 -0
  12. package/templates/wevu-retail/gitignore +35 -0
  13. package/templates/wevu-retail/package.json +42 -0
  14. package/templates/wevu-retail/postcss.config.js +6 -0
  15. package/templates/wevu-retail/project.config.json +44 -0
  16. package/templates/wevu-retail/project.private.config.json +8 -0
  17. package/templates/wevu-retail/src/app.vue +104 -0
  18. package/templates/wevu-retail/src/common/updateManager.ts +29 -0
  19. package/templates/wevu-retail/src/components/filter/index.vue +134 -0
  20. package/templates/wevu-retail/src/components/filter-popup/index.vue +67 -0
  21. package/templates/wevu-retail/src/components/goods-card/index.vue +219 -0
  22. package/templates/wevu-retail/src/components/goods-list/index.vue +91 -0
  23. package/templates/wevu-retail/src/components/load-more/index.vue +99 -0
  24. package/templates/wevu-retail/src/components/loading-content/index.vue +48 -0
  25. package/templates/wevu-retail/src/components/price/index.vue +104 -0
  26. package/templates/wevu-retail/src/components/promotion/ui-coupon-card/index.vue +143 -0
  27. package/templates/wevu-retail/src/components/promotion/ui-coupon-card/tools.wxs +18 -0
  28. package/templates/wevu-retail/src/components/swipeout/index.vue +118 -0
  29. package/templates/wevu-retail/src/components/swipeout/swipe.wxs +151 -0
  30. package/templates/wevu-retail/src/components/webp-image/index.vue +105 -0
  31. package/templates/wevu-retail/src/components/webp-image/utils.wxs +140 -0
  32. package/templates/wevu-retail/src/config/index.ts +20437 -0
  33. package/templates/wevu-retail/src/custom-tab-bar/data.ts +22 -0
  34. package/templates/wevu-retail/src/custom-tab-bar/index.vue +62 -0
  35. package/templates/wevu-retail/src/model/activities.ts +7 -0
  36. package/templates/wevu-retail/src/model/activity.ts +18 -0
  37. package/templates/wevu-retail/src/model/address.ts +31 -0
  38. package/templates/wevu-retail/src/model/cart.ts +306 -0
  39. package/templates/wevu-retail/src/model/category.ts +175 -0
  40. package/templates/wevu-retail/src/model/comments/queryDetail.ts +50 -0
  41. package/templates/wevu-retail/src/model/comments.ts +298 -0
  42. package/templates/wevu-retail/src/model/coupon.ts +39 -0
  43. package/templates/wevu-retail/src/model/detailsComments.ts +30 -0
  44. package/templates/wevu-retail/src/model/good.ts +1904 -0
  45. package/templates/wevu-retail/src/model/goods.ts +7 -0
  46. package/templates/wevu-retail/src/model/order/applyService.ts +329 -0
  47. package/templates/wevu-retail/src/model/order/orderConfirm.ts +147 -0
  48. package/templates/wevu-retail/src/model/order/orderDetail.ts +1191 -0
  49. package/templates/wevu-retail/src/model/order/orderList.ts +1033 -0
  50. package/templates/wevu-retail/src/model/promotion.ts +20 -0
  51. package/templates/wevu-retail/src/model/search.ts +60 -0
  52. package/templates/wevu-retail/src/model/submitComment.ts +58 -0
  53. package/templates/wevu-retail/src/model/swiper.ts +39 -0
  54. package/templates/wevu-retail/src/model/usercenter.ts +52 -0
  55. package/templates/wevu-retail/src/pages/cart/components/cart-bar/index.vue +104 -0
  56. package/templates/wevu-retail/src/pages/cart/components/cart-empty/index.vue +41 -0
  57. package/templates/wevu-retail/src/pages/cart/components/cart-group/index.vue +333 -0
  58. package/templates/wevu-retail/src/pages/cart/components/cart-group/index.wxs +5 -0
  59. package/templates/wevu-retail/src/pages/cart/components/cart-group/utils.wxs +20 -0
  60. package/templates/wevu-retail/src/pages/cart/components/goods-card/index.vue +334 -0
  61. package/templates/wevu-retail/src/pages/cart/components/specs-popup/index.vue +100 -0
  62. package/templates/wevu-retail/src/pages/cart/index.vue +342 -0
  63. package/templates/wevu-retail/src/pages/category/components/goods-category/components/c-sidebar/README.md +95 -0
  64. package/templates/wevu-retail/src/pages/category/components/goods-category/components/c-sidebar/c-sidebar-item/index.vue +73 -0
  65. package/templates/wevu-retail/src/pages/category/components/goods-category/components/c-sidebar/index.vue +121 -0
  66. package/templates/wevu-retail/src/pages/category/components/goods-category/components/c-tabbar/c-tabbar-more/index.vue +74 -0
  67. package/templates/wevu-retail/src/pages/category/components/goods-category/components/c-tabbar/index.vue +102 -0
  68. package/templates/wevu-retail/src/pages/category/components/goods-category/index.vue +137 -0
  69. package/templates/wevu-retail/src/pages/category/index.vue +50 -0
  70. package/templates/wevu-retail/src/pages/coupon/components/coupon-card/index.vue +95 -0
  71. package/templates/wevu-retail/src/pages/coupon/components/floating-button/index.vue +44 -0
  72. package/templates/wevu-retail/src/pages/coupon/coupon-activity-goods/index.vue +135 -0
  73. package/templates/wevu-retail/src/pages/coupon/coupon-detail/index.vue +94 -0
  74. package/templates/wevu-retail/src/pages/coupon/coupon-list/index.vue +136 -0
  75. package/templates/wevu-retail/src/pages/goods/comments/components/comments-card/components/images-videos/assets/play.png +0 -0
  76. package/templates/wevu-retail/src/pages/goods/comments/components/comments-card/components/images-videos/index.vue +65 -0
  77. package/templates/wevu-retail/src/pages/goods/comments/components/comments-card/components/my-video/index.vue +92 -0
  78. package/templates/wevu-retail/src/pages/goods/comments/components/comments-card/index.vue +93 -0
  79. package/templates/wevu-retail/src/pages/goods/comments/create/index.vue +196 -0
  80. package/templates/wevu-retail/src/pages/goods/comments/index.vue +293 -0
  81. package/templates/wevu-retail/src/pages/goods/details/components/buy-bar/index.vue +117 -0
  82. package/templates/wevu-retail/src/pages/goods/details/components/goods-specs-popup/index.vue +440 -0
  83. package/templates/wevu-retail/src/pages/goods/details/components/promotion-popup/index.vue +83 -0
  84. package/templates/wevu-retail/src/pages/goods/details/index.vue +598 -0
  85. package/templates/wevu-retail/src/pages/goods/list/index.vue +299 -0
  86. package/templates/wevu-retail/src/pages/goods/result/index.vue +350 -0
  87. package/templates/wevu-retail/src/pages/goods/search/index.vue +196 -0
  88. package/templates/wevu-retail/src/pages/home/home.vue +215 -0
  89. package/templates/wevu-retail/src/pages/home/readme +8 -0
  90. package/templates/wevu-retail/src/pages/order/after-service-detail/api.ts +34 -0
  91. package/templates/wevu-retail/src/pages/order/after-service-detail/index.vue +430 -0
  92. package/templates/wevu-retail/src/pages/order/after-service-list/api.ts +1262 -0
  93. package/templates/wevu-retail/src/pages/order/after-service-list/index.vue +299 -0
  94. package/templates/wevu-retail/src/pages/order/apply-service/index.vue +665 -0
  95. package/templates/wevu-retail/src/pages/order/components/after-service-button-bar/index.vue +142 -0
  96. package/templates/wevu-retail/src/pages/order/components/customer-service/index.vue +75 -0
  97. package/templates/wevu-retail/src/pages/order/components/goods-card/index.vue +356 -0
  98. package/templates/wevu-retail/src/pages/order/components/noGoods/noGood.wxs +17 -0
  99. package/templates/wevu-retail/src/pages/order/components/noGoods/noGoods.vue +125 -0
  100. package/templates/wevu-retail/src/pages/order/components/order-button-bar/index.vue +262 -0
  101. package/templates/wevu-retail/src/pages/order/components/order-card/index.vue +126 -0
  102. package/templates/wevu-retail/src/pages/order/components/order-goods-card/index.vue +86 -0
  103. package/templates/wevu-retail/src/pages/order/components/reason-sheet/index.vue +161 -0
  104. package/templates/wevu-retail/src/pages/order/components/reason-sheet/reasonSheet.ts +25 -0
  105. package/templates/wevu-retail/src/pages/order/components/selectCoupons/mock.ts +22 -0
  106. package/templates/wevu-retail/src/pages/order/components/selectCoupons/selectCoupon.wxs +16 -0
  107. package/templates/wevu-retail/src/pages/order/components/selectCoupons/selectCoupons.vue +207 -0
  108. package/templates/wevu-retail/src/pages/order/components/specs-goods-card/index.vue +185 -0
  109. package/templates/wevu-retail/src/pages/order/config.ts +94 -0
  110. package/templates/wevu-retail/src/pages/order/delivery-detail/index.vue +145 -0
  111. package/templates/wevu-retail/src/pages/order/delivery-detail/isUrl.wxs +7 -0
  112. package/templates/wevu-retail/src/pages/order/fill-tracking-no/api.ts +71 -0
  113. package/templates/wevu-retail/src/pages/order/fill-tracking-no/index.vue +267 -0
  114. package/templates/wevu-retail/src/pages/order/invoice/index.vue +94 -0
  115. package/templates/wevu-retail/src/pages/order/order-confirm/components/address-card/index.vue +78 -0
  116. package/templates/wevu-retail/src/pages/order/order-confirm/getNotes.wxs +11 -0
  117. package/templates/wevu-retail/src/pages/order/order-confirm/handleInvoice.wxs +11 -0
  118. package/templates/wevu-retail/src/pages/order/order-confirm/index.vue +707 -0
  119. package/templates/wevu-retail/src/pages/order/order-confirm/order.wxs +8 -0
  120. package/templates/wevu-retail/src/pages/order/order-confirm/pay.ts +115 -0
  121. package/templates/wevu-retail/src/pages/order/order-detail/index.vue +456 -0
  122. package/templates/wevu-retail/src/pages/order/order-list/index.vue +288 -0
  123. package/templates/wevu-retail/src/pages/order/pay-result/index.vue +77 -0
  124. package/templates/wevu-retail/src/pages/order/receipt/index.vue +336 -0
  125. package/templates/wevu-retail/src/pages/promotion/promotion-detail/index.vue +145 -0
  126. package/templates/wevu-retail/src/pages/user/address/edit/index.vue +514 -0
  127. package/templates/wevu-retail/src/pages/user/address/list/index.vue +249 -0
  128. package/templates/wevu-retail/src/pages/user/components/t-location/index.vue +156 -0
  129. package/templates/wevu-retail/src/pages/user/components/ui-address-item/index.vue +92 -0
  130. package/templates/wevu-retail/src/pages/user/name-edit/index.vue +49 -0
  131. package/templates/wevu-retail/src/pages/user/person-info/index.vue +198 -0
  132. package/templates/wevu-retail/src/pages/usercenter/address/edit/util.ts +33 -0
  133. package/templates/wevu-retail/src/pages/usercenter/components/order-group/index.vue +90 -0
  134. package/templates/wevu-retail/src/pages/usercenter/components/ui-select-picker/index.vue +108 -0
  135. package/templates/wevu-retail/src/pages/usercenter/components/user-center-card/index.vue +82 -0
  136. package/templates/wevu-retail/src/pages/usercenter/index.vue +301 -0
  137. package/templates/wevu-retail/src/services/_utils/delay.ts +3 -0
  138. package/templates/wevu-retail/src/services/_utils/timeout.ts +3 -0
  139. package/templates/wevu-retail/src/services/activity/fetchActivity.ts +20 -0
  140. package/templates/wevu-retail/src/services/activity/fetchActivityList.ts +20 -0
  141. package/templates/wevu-retail/src/services/address/edit.ts +33 -0
  142. package/templates/wevu-retail/src/services/address/fetchAddress.ts +48 -0
  143. package/templates/wevu-retail/src/services/address/list.ts +31 -0
  144. package/templates/wevu-retail/src/services/cart/cart.ts +20 -0
  145. package/templates/wevu-retail/src/services/comments/fetchComments.ts +18 -0
  146. package/templates/wevu-retail/src/services/comments/fetchCommentsCount.ts +18 -0
  147. package/templates/wevu-retail/src/services/coupon/index.ts +65 -0
  148. package/templates/wevu-retail/src/services/good/comments/fetchCommentDetail.ts +20 -0
  149. package/templates/wevu-retail/src/services/good/fetchCategoryList.ts +18 -0
  150. package/templates/wevu-retail/src/services/good/fetchGood.ts +18 -0
  151. package/templates/wevu-retail/src/services/good/fetchGoods.ts +29 -0
  152. package/templates/wevu-retail/src/services/good/fetchGoodsDetailsComments.ts +37 -0
  153. package/templates/wevu-retail/src/services/good/fetchGoodsList.ts +39 -0
  154. package/templates/wevu-retail/src/services/good/fetchSearchHistory.ts +35 -0
  155. package/templates/wevu-retail/src/services/good/fetchSearchResult.ts +38 -0
  156. package/templates/wevu-retail/src/services/home/home.ts +53 -0
  157. package/templates/wevu-retail/src/services/order/applyService.ts +70 -0
  158. package/templates/wevu-retail/src/services/order/orderConfirm.ts +69 -0
  159. package/templates/wevu-retail/src/services/order/orderDetail.ts +39 -0
  160. package/templates/wevu-retail/src/services/order/orderList.ts +39 -0
  161. package/templates/wevu-retail/src/services/order/orderSubmitComment.ts +22 -0
  162. package/templates/wevu-retail/src/services/promotion/detail.ts +18 -0
  163. package/templates/wevu-retail/src/services/usercenter/fetchPerson.ts +28 -0
  164. package/templates/wevu-retail/src/services/usercenter/fetchUsercenter.ts +18 -0
  165. package/templates/wevu-retail/src/sitemap.json +7 -0
  166. package/templates/wevu-retail/src/utils/addressParse.ts +25 -0
  167. package/templates/wevu-retail/src/utils/getPermission.ts +45 -0
  168. package/templates/wevu-retail/src/utils/mock.ts +51 -0
  169. package/templates/wevu-retail/src/utils/util.ts +134 -0
  170. package/templates/wevu-retail/src/vite-env.d.ts +1 -0
  171. package/templates/wevu-retail/tailwind.config.ts +15 -0
  172. package/templates/wevu-retail/tsconfig.app.json +58 -0
  173. package/templates/wevu-retail/tsconfig.json +11 -0
  174. package/templates/wevu-retail/tsconfig.node.json +33 -0
  175. package/templates/wevu-retail/vite.config.ts +14 -0
@@ -0,0 +1,136 @@
1
+ <script lang="ts">
2
+ import { fetchCouponList } from '../../../services/coupon/index';
3
+
4
+ Page({
5
+ data: {
6
+ status: 0,
7
+ list: [
8
+ {
9
+ text: '可使用',
10
+ key: 0,
11
+ },
12
+ {
13
+ text: '已使用',
14
+ key: 1,
15
+ },
16
+ {
17
+ text: '已失效',
18
+ key: 2,
19
+ },
20
+ ],
21
+
22
+ couponList: [],
23
+ },
24
+
25
+ onLoad() {
26
+ this.init();
27
+ },
28
+
29
+ init() {
30
+ this.fetchList();
31
+ },
32
+
33
+ fetchList(status = this.data.status) {
34
+ let statusInFetch = '';
35
+ switch (Number(status)) {
36
+ case 0: {
37
+ statusInFetch = 'default';
38
+ break;
39
+ }
40
+ case 1: {
41
+ statusInFetch = 'useless';
42
+ break;
43
+ }
44
+ case 2: {
45
+ statusInFetch = 'disabled';
46
+ break;
47
+ }
48
+ default: {
49
+ throw new Error(`unknown fetchStatus: ${statusInFetch}`);
50
+ }
51
+ }
52
+ fetchCouponList(statusInFetch).then((couponList) => {
53
+ this.setData({ couponList });
54
+ });
55
+ },
56
+
57
+ tabChange(e) {
58
+ const { value } = e.detail;
59
+
60
+ this.setData({ status: value });
61
+ this.fetchList(value);
62
+ },
63
+
64
+ goCouponCenterHandle() {
65
+ wx.showToast({ title: '去领券中心', icon: 'none' });
66
+ },
67
+
68
+ onPullDownRefresh_() {
69
+ this.setData(
70
+ {
71
+ couponList: [],
72
+ },
73
+ () => {
74
+ this.fetchList();
75
+ },
76
+ );
77
+ },
78
+ });
79
+ </script>
80
+
81
+ <template>
82
+ <t-tabs
83
+ defaultValue="{{status}}"
84
+ bind:change="tabChange"
85
+ tabList="{{list}}"
86
+ t-class="tabs-external__inner [height:88rpx] [width:100%] [line-height:88rpx] [z-index:100] [font-size:26rpx] [color:#333333] [position:fixed] [width:100vw] [top:0] [left:0] [&_.tabs-external__track]:[background:#fa4126] [&_.tabs-external__item]:[color:#666] [&_.tabs-external__active]:[font-size:28rpx] [&_.tabs-external__active]:[color:#fa4126] [&_.order-nav_.order-nav-item_.bottom-line]:[bottom:12rpx]"
87
+ t-class-item="tabs-external__item"
88
+ t-class-active="tabs-external__active"
89
+ t-class-track="tabs-external__track"
90
+ >
91
+ <t-tab-panel
92
+ wx:for="{{list}}"
93
+ wx:for-index="index"
94
+ wx:for-item="tab"
95
+ wx:key="key"
96
+ label="{{tab.text}}"
97
+ value="{{tab.key}}"
98
+ />
99
+ </t-tabs>
100
+ <view class="coupon-list-wrap [margin-top:32rpx] [margin-left:32rpx] [margin-right:32rpx] [overflow-y:auto] [padding-bottom:100rpx] [padding-bottom:calc(constant(safe-area-inset-top)_+_100rpx)] [padding-bottom:calc(env(safe-area-inset-bottom)_+_100rpx)] [-webkit-overflow-scrolling:touch] [&_.t-pull-down-refresh__bar]:[background:#fff]">
101
+ <t-pull-down-refresh
102
+ t-class-indicator="t-class-indicator"
103
+ id="t-pull-down-refresh"
104
+ bind:refresh="onPullDownRefresh_"
105
+ background="#fff"
106
+ >
107
+ <view class="coupon-list-item" wx:for="{{couponList}}" wx:key="key">
108
+ <coupon-card couponDTO="{{item}}" />
109
+ </view>
110
+ </t-pull-down-refresh>
111
+ <view class="center-entry [box-sizing:content-box] [border-top:1rpx_solid_#dce0e4] [background-color:#fff] [position:fixed] [bottom:0] [left:0] [right:0] [height:100rpx] [padding-bottom:0] [padding-bottom:constant(safe-area-inset-top)] [padding-bottom:env(safe-area-inset-bottom)]">
112
+ <view class="center-entry-btn [color:#fa4126] [font-size:28rpx] [text-align:center] [line-height:100rpx] [display:flex] [align-items:center] [justify-content:center] [height:100rpx]" bind:tap="goCouponCenterHandle">
113
+ <view>领券中心</view>
114
+ <t-icon
115
+ name="chevron-right"
116
+ color="#fa4126"
117
+ size="40rpx"
118
+ style="line-height: 28rpx;"
119
+ />
120
+ </view>
121
+ </view>
122
+ </view>
123
+
124
+ </template>
125
+
126
+ <json>
127
+ {
128
+ "navigationBarTitleText": "优惠券",
129
+ "usingComponents": {
130
+ "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh",
131
+ "t-tabs": "tdesign-miniprogram/tabs/tabs",
132
+ "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel",
133
+ "t-icon": "tdesign-miniprogram/icon/icon",
134
+ "coupon-card": "../components/coupon-card/index"
135
+ }
136
+ }</json>
@@ -0,0 +1,65 @@
1
+ <script lang="ts">
2
+ // pages/goods/comments/components/comments-card/images-videos/index.js
3
+ Component({
4
+ /**
5
+ * 组件的属性列表
6
+ */
7
+ properties: {
8
+ resources: {
9
+ type: Array,
10
+ value: [],
11
+ },
12
+ },
13
+
14
+ /**
15
+ * 组件的初始数据
16
+ */
17
+ data: {
18
+ classType: 'single',
19
+ },
20
+
21
+ observers: {
22
+ resources: function (newVal) {
23
+ if (newVal.length <= 1) {
24
+ this.setData({ classType: 'single' });
25
+ } else if (newVal.length === 2) {
26
+ this.setData({ classType: 'double' });
27
+ } else {
28
+ this.setData({ classType: 'multiple' });
29
+ }
30
+ },
31
+ },
32
+
33
+ /**
34
+ * 组件的方法列表
35
+ */
36
+ methods: {},
37
+ });
38
+ </script>
39
+
40
+ <template>
41
+ <view class="images-videos-container container-{{classType}} [display:flex] [flex-wrap:wrap]">
42
+ <view
43
+ class="resource-container resource-container-{{classType}} [display:flex]"
44
+ wx:for="{{resources}}"
45
+ wx:for-item="resource"
46
+ wx:key="*this"
47
+ >
48
+ <t-image wx:if="{{resource.type === 'image'}}" t-class="resource-item-{{classType}}" src="{{resource.src}}" />
49
+ <my-video wx:else videoSrc="{{resource.src}} " my-video="resource-item-{{classType}}">
50
+ <t-image t-class="resource-item resource-item-{{classType}}" slot="cover-img" src="{{resource.coverSrc}}" />
51
+ <image class="play-icon [width:96rpx] [height:96rpx]" slot="play-icon" src="./assets/play.png" />
52
+ </my-video>
53
+ </view>
54
+ </view>
55
+
56
+ </template>
57
+
58
+ <json>
59
+ {
60
+ "component": true,
61
+ "usingComponents": {
62
+ "my-video": "../my-video/index",
63
+ "t-image": "/components/webp-image/index"
64
+ }
65
+ }</json>
@@ -0,0 +1,92 @@
1
+ <script lang="ts">
2
+ Component({
3
+ externalClasses: ['my-video', 'my-cover-img', 'my-play-icon'],
4
+ properties: {
5
+ videoSrc: { type: String },
6
+ },
7
+ data: {
8
+ isShow: true,
9
+ },
10
+
11
+ options: {
12
+ multipleSlots: true, // 在组件定义时的选项中启用多slot支持
13
+ },
14
+
15
+ attached() {
16
+ this.videoContext = wx.createVideoContext('myVideo', this);
17
+ },
18
+
19
+ fullScreen: false,
20
+
21
+ methods: {
22
+ // 点击封面自定义播放按钮时触发
23
+ bindplay(e) {
24
+ this.setData({
25
+ isShow: false,
26
+ });
27
+ this.videoContext.play();
28
+ this.triggerEvent('play', e);
29
+ },
30
+
31
+ bindplayByVideo(e) {
32
+ this.setData({
33
+ isShow: false,
34
+ });
35
+ this.triggerEvent('play', e);
36
+ },
37
+
38
+ // 监听播放到末尾时触发
39
+ bindended(e) {
40
+ if (!this.fullScreen) {
41
+ this.setData({
42
+ isShow: true,
43
+ });
44
+ }
45
+ this.triggerEvent('ended', e);
46
+ },
47
+ // 监听暂停播放时触发
48
+ bindpause(e) {
49
+ this.triggerEvent('pause', e);
50
+ },
51
+ bindfullscreenchange(e) {
52
+ const fullScreen = e?.detail?.fullScreen;
53
+ this.fullScreen = fullScreen;
54
+ },
55
+ },
56
+ });
57
+ </script>
58
+
59
+ <template>
60
+ <video
61
+ id="myVideo"
62
+ src="{{videoSrc}}"
63
+ enable-danmu
64
+ controls
65
+ show-fullscreen-btn
66
+ show-center-play-btn="{{false}}"
67
+ auto-pause-if-navigate
68
+ auto-pause-if-open-native
69
+ show-play-btn
70
+ object-fit="contain"
71
+ bindpause="bindpause"
72
+ bindended="bindended"
73
+ bindplay="bindplayByVideo"
74
+ class="video my-video [display:flex] [&_.video_cover]:[width:100%] [&_.video_cover]:[height:100%] [&_.video_cover]:[position:relative] [&_.video_play_icon]:[position:absolute] [&_.video_play_icon]:[left:50%] [&_.video_play_icon]:[top:50%] [&_.video_play_icon]:[transform:translate(-50%,_-50%)] [&_.video_play_icon]:[z-index:5] [&_.video_txt]:[margin:10rpx_auto]"
75
+ bindfullscreenchange="bindfullscreenchange"
76
+ >
77
+ <view class="video_cover" wx:if="{{isShow}}">
78
+ <view class="my-cover-img">
79
+ <slot name="cover-img" />
80
+ </view>
81
+ <view class="video_play_icon my-play-icon" bindtap="bindplay">
82
+ <slot name="play-icon" />
83
+ </view>
84
+ </view>
85
+ </video>
86
+ </template>
87
+
88
+ <json>
89
+ {
90
+ "component": true,
91
+ "usingComponents": {}
92
+ }</json>
@@ -0,0 +1,93 @@
1
+ <script lang="ts">
2
+ Component({
3
+ externalClasses: ['wr-class'],
4
+ options: {
5
+ multipleSlots: true,
6
+ },
7
+ properties: {
8
+ goodsDetailInfo: {
9
+ type: String,
10
+ value: '',
11
+ },
12
+ sellerReply: {
13
+ type: String,
14
+ value: '',
15
+ },
16
+ userHeadUrl: {
17
+ type: String,
18
+ value: '',
19
+ },
20
+ userName: {
21
+ type: String,
22
+ default: '',
23
+ },
24
+ commentContent: {
25
+ type: String,
26
+ value: '',
27
+ },
28
+ commentScore: {
29
+ type: Number,
30
+ value: 0,
31
+ },
32
+ commentTime: {
33
+ type: String,
34
+ value: '',
35
+ },
36
+ commentResources: {
37
+ type: Array,
38
+ value: [],
39
+ },
40
+ },
41
+
42
+ data: {
43
+ showMoreStatus: false,
44
+ showContent: false,
45
+ hideText: false,
46
+ eleHeight: null,
47
+ overText: false,
48
+ isDisabled: true,
49
+ startColors: ['#FFC51C', '#DDDDDD'],
50
+ },
51
+ methods: {},
52
+ });
53
+ </script>
54
+
55
+ <template>
56
+ <view class="comments-card-item wr-class [padding:32rpx] [display:flex] [background-color:#fff] [position:relative]">
57
+ <view class="comments-card-item-container [width:100%] [&_.comments-title]:[display:flex] [&_.comments-title]:[align-items:center] [&_.comments-title]:[position:relative] [&_.comments-card-reply]:[background-color:#f5f5f5] [&_.comments-card-reply]:[padding:24rpx_16rpx] [&_.comments-card-reply]:[margin-top:24rpx] [&_.comments-card-reply_.prefix]:[font-size:26rpx] [&_.comments-card-reply_.prefix]:[font-weight:bold] [&_.comments-card-reply_.prefix]:[color:#666666] [&_.comments-card-reply_.content]:[font-size:26rpx] [&_.comments-card-reply_.content]:[color:#666666]">
58
+ <view class="comments-title [&_.userName]:[font-size:26rpx] [&_.userName]:[color:#333333] [&_.userName]:[margin-left:24rpx] [&_.commentTime]:[font-size:24rpx] [&_.commentTime]:[color:#999999] [&_.commentTime]:[position:absolute] [&_.commentTime]:[right:0]">
59
+ <view class="comments-card-item-userImg [display:flex] [&_.userImg]:[width:64rpx] [&_.userImg]:[height:64rpx] [&_.userImg]:[border-radius:50%]">
60
+ <t-image t-class="userImg" src="{{userHeadUrl}}" />
61
+ </view>
62
+ <view class="userName">{{userName}}</view>
63
+ <text class="commentTime">{{commentTime}}</text>
64
+ </view>
65
+ <view class="comments-info [display:flex] [align-items:center] [margin-top:18rpx] [&_.rate]:[margin-right:24rpx] [&_.goods-info-text]:[font-size:24rpx] [&_.goods-info-text]:[color:#999999]">
66
+ <view class="rate">
67
+ <t-rate value="{{commentScore}}" size="14" gap="2" color="{{['#ffc51c', '#ddd']}}" />
68
+ </view>
69
+ <view class="goods-info-text" wx:if="{{goodsDetailInfo}}">{{goodsDetailInfo}}</view>
70
+ </view>
71
+ <view class="comments-card-item-container-content [margin-top:16rpx] [position:relative] [&_.content-text]:[font-size:28rpx] [&_.content-text]:[white-space:normal] [&_.content-text]:[word-break:break-all] [&_.content-text]:[font-weight:normal] [&_.hide-text]:[overflow:hidden] [&_.hide-text]:[text-overflow:ellipsis] [&_.hide-text]:[-webkit-line-clamp:5] [&_.hide-text]:[text-align:justify] [&_.hide-text]:[display:-webkit-box] [&_.hide-text]:[-webkit-box-orient:vertical] [&_.showMore]:[position:absolute] [&_.showMore]:[width:112rpx] [&_.showMore]:[height:36rpx] [&_.showMore]:[bottom:0] [&_.showMore]:[right:0] [&_.showMore]:[background:linear-gradient(_to_right,_rgba(255,_255,_255,_0.2)_0,_rgba(255,_255,_255,_0.45)_20%,_rgba(255,_255,_255,_0.7)_25%,_rgba(255,_255,_255,_0.9)_30%,_rgba(255,_255,_255,_0.95)_35%,_#ffffff_50%,_#fff_100%_)] [&_.showMore]:[font-size:26rpx] [&_.showMore]:[color:#fa550f] [&_.showMore]:[line-height:36rpx] [&_.showMore]:[text-align:right]">
72
+ <view class="content-text" hidden="{{showContent}}"> {{commentContent}} </view>
73
+ </view>
74
+ <view class="comments-card-item-container-image [margin-top:24rpx] [display:flex] [justify-content:space-between] [flex-wrap:wrap] [&_.commentImg]:[border-radius:8rpx] [&_.commentImg]:[margin-top:12rpx] [&_.commentImg3]:[width:196rpx] [&_.commentImg3]:[height:196rpx] [&_.commentImg2]:[width:300rpx] [&_.commentImg2]:[height:300rpx] [&_.commentImg1]:[width:404rpx] [&_.commentImg1]:[height:404rpx]" wx:if="{{commentResources.length > 0}}">
75
+ <images-videos resources="{{commentResources}}" />
76
+ </view>
77
+ <view class="comments-card-reply" wx:if="{{sellerReply}}">
78
+ <text class="prefix">店家回复:</text>
79
+ <text class="content">{{sellerReply}}</text>
80
+ </view>
81
+ </view>
82
+ </view>
83
+ </template>
84
+
85
+ <json>
86
+ {
87
+ "component": true,
88
+ "usingComponents": {
89
+ "t-rate": "tdesign-miniprogram/rate/rate",
90
+ "images-videos": "./components/images-videos",
91
+ "t-image": "/components/webp-image/index"
92
+ }
93
+ }</json>
@@ -0,0 +1,196 @@
1
+ <script lang="ts">
2
+ // import { getCommentDetail } from '../../../../services/good/comments/fetchCommentDetail';
3
+ import Toast from 'tdesign-miniprogram/toast/index';
4
+ Page({
5
+ data: {
6
+ serviceRateValue: 1,
7
+ goodRateValue: 1,
8
+ conveyRateValue: 1,
9
+ isAnonymous: false,
10
+ uploadFiles: [],
11
+ gridConfig: {
12
+ width: 218,
13
+ height: 218,
14
+ column: 3,
15
+ },
16
+ isAllowedSubmit: false,
17
+ imgUrl: '',
18
+ title: '',
19
+ goodsDetail: '',
20
+ imageProps: {
21
+ mode: 'aspectFit',
22
+ },
23
+ },
24
+
25
+ onLoad(options) {
26
+ this.setData({
27
+ imgUrl: options.imgUrl,
28
+ title: options.title,
29
+ goodsDetail: options.specs,
30
+ });
31
+ },
32
+
33
+ onRateChange(e) {
34
+ const { value } = e?.detail;
35
+ const item = e?.currentTarget?.dataset?.item;
36
+ this.setData({ [item]: value }, () => {
37
+ this.updateButtonStatus();
38
+ });
39
+ },
40
+
41
+ onAnonymousChange(e) {
42
+ const status = !!e?.detail?.checked;
43
+ this.setData({ isAnonymous: status });
44
+ },
45
+
46
+ handleSuccess(e) {
47
+ const { files } = e.detail;
48
+
49
+ this.setData({
50
+ uploadFiles: files,
51
+ });
52
+ },
53
+
54
+ handleRemove(e) {
55
+ const { index } = e.detail;
56
+ const { uploadFiles } = this.data;
57
+ uploadFiles.splice(index, 1);
58
+ this.setData({
59
+ uploadFiles,
60
+ });
61
+ },
62
+
63
+ onTextAreaChange(e) {
64
+ const value = e?.detail?.value;
65
+ this.textAreaValue = value;
66
+ this.updateButtonStatus();
67
+ },
68
+
69
+ updateButtonStatus() {
70
+ const { serviceRateValue, goodRateValue, conveyRateValue, isAllowedSubmit } = this.data;
71
+ const { textAreaValue } = this;
72
+ const temp = serviceRateValue && goodRateValue && conveyRateValue && textAreaValue;
73
+ if (temp !== isAllowedSubmit) this.setData({ isAllowedSubmit: temp });
74
+ },
75
+
76
+ onSubmitBtnClick() {
77
+ const { isAllowedSubmit } = this.data;
78
+ if (!isAllowedSubmit) return;
79
+ Toast({
80
+ context: this,
81
+ selector: '#t-toast',
82
+ message: '评价提交成功',
83
+ icon: 'check-circle',
84
+ });
85
+ wx.navigateBack();
86
+ },
87
+ });
88
+ </script>
89
+
90
+ <template>
91
+ <view class="page-container [&_.comment-card]:[padding:24rpx_32rpx_28rpx] [&_.comment-card]:[background-color:#ffffff] [&_.t-checkbox__bordered]:[display:none] [&_.anonymous-box]:[display:flex] [&_.anonymous-box]:[align-items:center] [&_.anonymous-box]:[padding-top:52rpx] [&_.anonymous-box_.name]:[font-size:28rpx] [&_.anonymous-box_.name]:[font-weight:normal] [&_.anonymous-box_.name]:[color:#999999] [&_.anonymous-box_.name]:[padding-left:28rpx] [&_.t-checkbox]:[padding:0rpx] [&_.t-checkbox__content]:[display:none] [&_.t-checkbox__icon-left]:[margin-right:0rpx] [&_.upload-container]:[margin-top:24rpx] [&_.t-upload__wrapper]:[border-radius:8rpx] [&_.t-upload__wrapper]:[overflow:hidden] [&_.submmit-bar]:[position:fixed] [&_.submmit-bar]:[left:0] [&_.submmit-bar]:[right:0] [&_.submmit-bar]:[bottom:0] [&_.submmit-bar]:[z-index:12] [&_.submmit-bar]:[padding:12rpx_32rpx] [&_.submmit-bar]:[padding-bottom:env(safe-area-inset-bottom)] [&_.submmit-bar]:[background-color:#fff] [&_.submmit-bar]:[height:112rpx] [&_.submmit-bar-button]:[border-radius:48rpx] [&_.submmit-bar-button]:[padding:0] [&_.t-upload__close-btn]:[background-color:rgba(0,_0,_0,_0.4)] [&_.t-upload__close-btn]:[border-bottom-left-radius:8rpx] [&_.t-upload__close-btn]:[width:36rpx] [&_.t-upload__close-btn]:[height:36rpx]">
92
+ <view class="comment-card [&_.goods-info-container_.goods-image]:[width:112rpx] [&_.goods-info-container_.goods-image]:[height:112rpx] [&_.goods-info-container_.goods-image]:[border-radius:8rpx] [&_.goods-info-container]:[display:flex] [&_.goods-info-container]:[align-items:center] [&_.goods-info-container_.goods-title-container]:[padding-left:24rpx] [&_.goods-info-container_.goods-title]:[font-size:28rpx] [&_.goods-info-container_.goods-title]:[font-weight:normal] [&_.goods-info-container_.goods-detail]:[font-size:24rpx] [&_.goods-info-container_.goods-detail]:[font-weight:normal] [&_.goods-info-container_.goods-detail]:[color:#999999] [&_.goods-info-container_.goods-detail]:[margin-top:16rpx] [&_.rate-container]:[display:flex] [&_.rate-container]:[align-items:center] [&_.rate-container]:[margin-top:22rpx] [&_.rate-container_.rate-title]:[font-size:28rpx] [&_.rate-container_.rate-title]:[font-weight:bold] [&_.rate-container_.rate-title]:[margin-right:12rpx] [&_.textarea-container]:[margin-top:22rpx] [&_.textarea-container_.textarea]:[height:294rpx] [&_.textarea-container_.textarea]:[background-color:#f5f5f5] [&_.textarea-container_.textarea]:[border-radius:16rpx] [&_.textarea-container_.textarea]:[font-size:28rpx] [&_.textarea-container_.textarea]:[font-weight:normal] [&_.convey-comment-title]:[font-size:28rpx] [&_.convey-comment-title]:[font-weight:bold]">
93
+ <view class="goods-info-container">
94
+ <view class="goods-image-container">
95
+ <t-image t-class="goods-image" src="{{imgUrl}}" />
96
+ </view>
97
+ <view class="goods-title-container">
98
+ <view class="goods-title">{{title}}</view>
99
+ <view class="goods-detail">{{goodsDetail}}</view>
100
+ </view>
101
+ </view>
102
+ <view class="rate-container">
103
+ <text class="rate-title">商品评价</text>
104
+ <view class="rate">
105
+ <t-rate
106
+ value="{{goodRateValue}}"
107
+ bind:change="onRateChange"
108
+ size="26"
109
+ gap="6"
110
+ color="{{['#ffc51c', '#ddd']}}"
111
+ data-item="goodRateValue"
112
+ />
113
+ </view>
114
+ </view>
115
+ <view class="textarea-container">
116
+ <t-textarea
117
+ t-class="textarea"
118
+ maxlength="{{500}}"
119
+ indicator
120
+ placeholder="对商品满意吗?评论一下"
121
+ bind:change="onTextAreaChange"
122
+ />
123
+ </view>
124
+ <view class="upload-container [&_.upload-addcontent-slot]:[font-size:26rpx]">
125
+ <t-upload
126
+ media-type="{{['image','video']}}"
127
+ files="{{uploadFiles}}"
128
+ bind:remove="handleRemove"
129
+ bind:success="handleSuccess"
130
+ gridConfig="{{gridConfig}}"
131
+ imageProps="{{imageProps}}"
132
+ />
133
+ </view>
134
+
135
+ <view class="anonymous-box">
136
+ <t-checkbox bind:change="onAnonymousChange" checked="{{isAnonymous}}" color="#FA4126" />
137
+ <view class="name">匿名评价</view>
138
+ </view>
139
+ </view>
140
+ </view>
141
+ <view class="comment-card convey-card [background-color:#ffffff] [margin-top:24rpx] [padding:32rpx] [padding-bottom:calc(env(safe-area-inset-bottom)_+_140rpx)] [&_.goods-info-container_.goods-image]:[width:112rpx] [&_.goods-info-container_.goods-image]:[height:112rpx] [&_.goods-info-container_.goods-image]:[border-radius:8rpx] [&_.goods-info-container]:[display:flex] [&_.goods-info-container]:[align-items:center] [&_.goods-info-container_.goods-title-container]:[padding-left:24rpx] [&_.goods-info-container_.goods-title]:[font-size:28rpx] [&_.goods-info-container_.goods-title]:[font-weight:normal] [&_.goods-info-container_.goods-detail]:[font-size:24rpx] [&_.goods-info-container_.goods-detail]:[font-weight:normal] [&_.goods-info-container_.goods-detail]:[color:#999999] [&_.goods-info-container_.goods-detail]:[margin-top:16rpx] [&_.rate-container]:[display:flex] [&_.rate-container]:[align-items:center] [&_.rate-container]:[margin-top:22rpx] [&_.rate-container_.rate-title]:[font-size:28rpx] [&_.rate-container_.rate-title]:[font-weight:bold] [&_.rate-container_.rate-title]:[margin-right:12rpx] [&_.textarea-container]:[margin-top:22rpx] [&_.textarea-container_.textarea]:[height:294rpx] [&_.textarea-container_.textarea]:[background-color:#f5f5f5] [&_.textarea-container_.textarea]:[border-radius:16rpx] [&_.textarea-container_.textarea]:[font-size:28rpx] [&_.textarea-container_.textarea]:[font-weight:normal] [&_.convey-comment-title]:[font-size:28rpx] [&_.convey-comment-title]:[font-weight:bold] [&_.rate-container_.rate-title]:[font-weight:normal]">
142
+ <view class="convey-comment-title">物流服务评价</view>
143
+ <view class="rate-container">
144
+ <text class="rate-title">物流评价</text>
145
+ <view class="rate">
146
+ <t-rate
147
+ value="{{conveyRateValue}}"
148
+ bind:change="onRateChange"
149
+ variant="filled"
150
+ size="26"
151
+ gap="6"
152
+ color="{{['#ffc51c', '#ddd']}}"
153
+ data-item="conveyRateValue"
154
+ />
155
+ </view>
156
+ </view>
157
+ <view class="rate-container">
158
+ <text class="rate-title">服务评价</text>
159
+ <view class="rate">
160
+ <t-rate
161
+ value="{{serviceRateValue}}"
162
+ bind:change="onRateChange"
163
+ size="26"
164
+ gap="6"
165
+ color="{{['#ffc51c', '#ddd']}}"
166
+ data-item="serviceRateValue"
167
+ />
168
+ </view>
169
+ </view>
170
+ </view>
171
+ <view class="submit-button-container [padding:12rpx_32rpx] [display:flex] [width:100vw] [box-sizing:border-box] [justify-content:center] [position:fixed] [bottom:0] [padding-bottom:calc(env(safe-area-inset-bottom)_+_20rpx)] [background-color:#ffffff] [z-index:99]">
172
+ <t-button
173
+ content="提交"
174
+ block
175
+ shape="round"
176
+ t-class="submit-button{{isAllowedSubmit ? '' : '-disabled'}}"
177
+ bind:tap="onSubmitBtnClick"
178
+ />
179
+ </view>
180
+ <t-toast id="t-toast" />
181
+ </template>
182
+
183
+ <json>
184
+ {
185
+ "navigationBarTitleText": "评价商品",
186
+ "usingComponents": {
187
+ "t-image": "/components/webp-image/index",
188
+ "t-rate": "tdesign-miniprogram/rate/rate",
189
+ "t-textarea": "tdesign-miniprogram/textarea/textarea",
190
+ "t-checkbox": "tdesign-miniprogram/checkbox/checkbox",
191
+ "t-button": "tdesign-miniprogram/button/button",
192
+ "t-upload": "tdesign-miniprogram/upload/upload",
193
+ "t-icon": "tdesign-miniprogram/icon/icon",
194
+ "t-toast": "tdesign-miniprogram/toast/toast"
195
+ }
196
+ }</json>