gxd-uni-library-editx 1.0.0

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 (215) hide show
  1. package/.editorconfig +14 -0
  2. package/README.md +447 -0
  3. package/index.js +3 -0
  4. package/package.json +104 -0
  5. package/postcss.config.js +22 -0
  6. package/settings.js.tpl +68 -0
  7. package/src/XdAppClass.1.0.js +257 -0
  8. package/src/XdAppClass.js +150 -0
  9. package/src/components/XdAddress/XdAddress.vue +579 -0
  10. package/src/components/XdAddressSelect/XdAddressSelect.vue +243 -0
  11. package/src/components/XdBaiduMap/XdBaiduMap.vue +204 -0
  12. package/src/components/XdBaiduOverlay/XdBaiduOverlay.vue +345 -0
  13. package/src/components/XdBaiduSearch/XdBaiduSearch.vue +354 -0
  14. package/src/components/XdBar/XdBar.vue +339 -0
  15. package/src/components/XdButton/XdButton.vue +288 -0
  16. package/src/components/XdCartList/XdCartList.vue +791 -0
  17. package/src/components/XdCartNoStoreList/XdCartNoStoreList.vue +747 -0
  18. package/src/components/XdCity/XdCity.vue +620 -0
  19. package/src/components/XdCity/city.js +93 -0
  20. package/src/components/XdCity/testData.js +124 -0
  21. package/src/components/XdCityLocation/XdCityLocation.vue +314 -0
  22. package/src/components/XdCityLocation/jweixin.js +72 -0
  23. package/src/components/XdCityShow/XdCityShow.vue +354 -0
  24. package/src/components/XdClipImage/XdClipImage.vue +879 -0
  25. package/src/components/XdCoins/XdCoins.vue +66 -0
  26. package/src/components/XdConfirm/XdConfirm.vue +240 -0
  27. package/src/components/XdContentXss/XdContentXss.vue +71 -0
  28. package/src/components/XdDailog/XdDailog.vue +258 -0
  29. package/src/components/XdDate/XdDataItemOne.vue +236 -0
  30. package/src/components/XdDate/XdDate.vue +1081 -0
  31. package/src/components/XdDate/XdDateItem.vue +316 -0
  32. package/src/components/XdDate/XdDateTime.vue +929 -0
  33. package/src/components/XdDate/i18n/en.json +19 -0
  34. package/src/components/XdDate/i18n/index.js +8 -0
  35. package/src/components/XdDate/i18n/zh-Hans.json +19 -0
  36. package/src/components/XdDate/i18n/zh-Hant.json +19 -0
  37. package/src/components/XdDate/keypress.js +45 -0
  38. package/src/components/XdDate/util.js +418 -0
  39. package/src/components/XdDownDrawer/XdDownDrawer.vue +176 -0
  40. package/src/components/XdEditPwd/XdEditPwd.vue +305 -0
  41. package/src/components/XdEnterOrderList/XdEnterOrderList.vue +413 -0
  42. package/src/components/XdExpressTimeLine/XdExpressTimeLine.vue +280 -0
  43. package/src/components/XdFilter/XdFilter.vue +541 -0
  44. package/src/components/XdFontIcon/XdFontIcon.vue +165 -0
  45. package/src/components/XdFontIcon/css/icon.less +498 -0
  46. package/src/components/XdFooterBar/XdFooterBar.vue +291 -0
  47. package/src/components/XdFooterTabbar/XdFooterTabbar.vue +284 -0
  48. package/src/components/XdForm/XdForm.vue +481 -0
  49. package/src/components/XdForm/validate.js +486 -0
  50. package/src/components/XdFormCheckbox/XdFormCheckbox.vue +858 -0
  51. package/src/components/XdFormDate.vue +187 -0
  52. package/src/components/XdFormInput/XdFormInput.vue +535 -0
  53. package/src/components/XdFormInput/common.js +56 -0
  54. package/src/components/XdFormItem/XdFormItem.vue +583 -0
  55. package/src/components/XdFormSelect/XdFormSelect.vue +119 -0
  56. package/src/components/XdImage/XdImage.vue +113 -0
  57. package/src/components/XdItemCardUser/XdItemCardUser.vue +232 -0
  58. package/src/components/XdItemFilmImage/XdItemFilmImage.vue +146 -0
  59. package/src/components/XdItemFilmText/XdItemFilmText.vue +83 -0
  60. package/src/components/XdItemPhysical/XdItemPhysical.vue +410 -0
  61. package/src/components/XdItemPhysicalPack/XdItemPhysicalPack.vue +240 -0
  62. package/src/components/XdItemStore/XdItemStore.vue +236 -0
  63. package/src/components/XdItemUserInfo/XdItemUserInfo.vue +175 -0
  64. package/src/components/XdJson/XdJson.vue +398 -0
  65. package/src/components/XdKeyValue/XdKeyValue.vue +150 -0
  66. package/src/components/XdLabelNew/XdLabelNew.vue +193 -0
  67. package/src/components/XdLayout/XdLayout.vue +634 -0
  68. package/src/components/XdLoading/XdLoading.vue +165 -0
  69. package/src/components/XdMore/XdMore.vue +66 -0
  70. package/src/components/XdMpHtml/XdMpHtml.vue +458 -0
  71. package/src/components/XdMpHtml/node/node.vue +536 -0
  72. package/src/components/XdMpHtml/parser.js +1260 -0
  73. package/src/components/XdMpHtml/static/js/handler.js +1 -0
  74. package/src/components/XdMpHtml/static/js/uni.webview.min.js +1 -0
  75. package/src/components/XdMpHtml/static/local.html +1 -0
  76. package/src/components/XdMy/XdMy.vue +294 -0
  77. package/src/components/XdMySuccess/XdMySuccess.vue +603 -0
  78. package/src/components/XdNavTab/XdNavTab.vue +147 -0
  79. package/src/components/XdNoData/XdNoData.vue +87 -0
  80. package/src/components/XdNoticeBar/XdNoticeBar.vue +501 -0
  81. package/src/components/XdNumber/XdNumber.vue +210 -0
  82. package/src/components/XdNumberUni/XdNumberUni.vue +270 -0
  83. package/src/components/XdNumberUni/readme.md +42 -0
  84. package/src/components/XdOnlineConfirm/XdOnlineConfirm.vue +385 -0
  85. package/src/components/XdOnlineDetail/XdOnlineDetail.vue +332 -0
  86. package/src/components/XdOnlinePay/XdOnlinePay.vue +349 -0
  87. package/src/components/XdOnlineSchedule/XdOnlineSchedule.vue +453 -0
  88. package/src/components/XdOnlineSeat/XdOnlineSeat.vue +796 -0
  89. package/src/components/XdOnlineSeatMove/XdOnlineSeatMove.vue +1012 -0
  90. package/src/components/XdPayCombo/XdPayCombo.vue +118 -0
  91. package/src/components/XdPreviewImage/XdPreviewImage.vue +372 -0
  92. package/src/components/XdPwPay/XdPwPay.vue +214 -0
  93. package/src/components/XdRadio/XdRadio.vue +151 -0
  94. package/src/components/XdRangeSlider/XdRangeSlider.vue +355 -0
  95. package/src/components/XdRedName/XdRedName.vue +35 -0
  96. package/src/components/XdSearchBar/XdSearchBar.vue +286 -0
  97. package/src/components/XdSelect/XdSelect.vue +382 -0
  98. package/src/components/XdSelectCity/XdSelectCity.vue +270 -0
  99. package/src/components/XdSelectTime/XdSelectTime.vue +342 -0
  100. package/src/components/XdStar/XdStar.vue +261 -0
  101. package/src/components/XdStoreCashier/XdStoreCashier.vue +526 -0
  102. package/src/components/XdStoreItem/XdStoreItem.vue +400 -0
  103. package/src/components/XdStoreOrderDetail/XdStoreOrderDetail.vue +1571 -0
  104. package/src/components/XdStoreOrderList/XdStoreOrderList.vue +450 -0
  105. package/src/components/XdStoreProductInfo/XdStoreProductInfo.vue +940 -0
  106. package/src/components/XdStoreProductType/XdStoreProductType.vue +307 -0
  107. package/src/components/XdSuccess/XdSuccess.vue +527 -0
  108. package/src/components/XdSwipeSelect/XdSwipeSelect.vue +99 -0
  109. package/src/components/XdSwiper/XdSwiper.vue +124 -0
  110. package/src/components/XdSwitch/XdSwitch.vue +204 -0
  111. package/src/components/XdTab/XdTab.vue +220 -0
  112. package/src/components/XdTabScroll/XdTabScroll.vue +212 -0
  113. package/src/components/XdTag/XdTag.vue +423 -0
  114. package/src/components/XdTimeLine/XdTimeLine.vue +121 -0
  115. package/src/components/XdTips/XdTips.vue +212 -0
  116. package/src/components/XdTipsBlock/XdTipsBlock.vue +141 -0
  117. package/src/components/XdTitleSection/XdTitleSection.vue +152 -0
  118. package/src/components/XdTitleTab/XdTitleTab.vue +227 -0
  119. package/src/components/XdUnit/XdUnit.vue +206 -0
  120. package/src/components/XdUpload/XdUpload.vue +197 -0
  121. package/src/components/XdUploadImage/XdUploadImage.vue +145 -0
  122. package/src/components/Xdlogs/XdLogs.vue +144 -0
  123. package/src/components/autoload.js +211 -0
  124. package/src/components/swipeAction/UniSwipeAction.vue +43 -0
  125. package/src/components/swipeActionItem/UniSwipeActionItem.vue +386 -0
  126. package/src/components/swipeActionItem/bindingx.js +298 -0
  127. package/src/components/swipeActionItem/index.wxs +321 -0
  128. package/src/components/swipeActionItem/isPC.js +18 -0
  129. package/src/components/swipeActionItem/mpalipay.js +210 -0
  130. package/src/components/swipeActionItem/mpother.js +252 -0
  131. package/src/components/swipeActionItem/mpwxs.js +140 -0
  132. package/src/dome/dome/address.vue +415 -0
  133. package/src/dome/dome/auth/login.vue +166 -0
  134. package/src/dome/dome/baidu_show.vue +20 -0
  135. package/src/dome/dome/cake.vue +186 -0
  136. package/src/dome/dome/cart.vue +205 -0
  137. package/src/dome/dome/cart_store.vue +149 -0
  138. package/src/dome/dome/cashier/cashier.vue +73 -0
  139. package/src/dome/dome/cashier/check_cashier.vue +469 -0
  140. package/src/dome/dome/cashier/success.vue +127 -0
  141. package/src/dome/dome/city.vue +148 -0
  142. package/src/dome/dome/cityData.js +9 -0
  143. package/src/dome/dome/clip.vue +82 -0
  144. package/src/dome/dome/date/date.vue +273 -0
  145. package/src/dome/dome/date/selected.js +315 -0
  146. package/src/dome/dome/dcom/app1.vue +13 -0
  147. package/src/dome/dome/dcom/app2.vue +13 -0
  148. package/src/dome/dome/dcom/app3.vue +13 -0
  149. package/src/dome/dome/dcom/app4.vue +13 -0
  150. package/src/dome/dome/dcom/app5.vue +13 -0
  151. package/src/dome/dome/dcom/index.vue +1 -0
  152. package/src/dome/dome/debug/debug.vue +95 -0
  153. package/src/dome/dome/docache/docache.vue +88 -0
  154. package/src/dome/dome/express.vue +269 -0
  155. package/src/dome/dome/form.vue +312 -0
  156. package/src/dome/dome/icon.js +125 -0
  157. package/src/dome/dome/icon.vue +93 -0
  158. package/src/dome/dome/index.vue +725 -0
  159. package/src/dome/dome/item.vue +236 -0
  160. package/src/dome/dome/json/json.vue +88 -0
  161. package/src/dome/dome/layout.vue +105 -0
  162. package/src/dome/dome/line.vue +113 -0
  163. package/src/dome/dome/map/search.vue +70 -0
  164. package/src/dome/dome/my.vue +171 -0
  165. package/src/dome/dome/notice.vue +93 -0
  166. package/src/dome/dome/online/confirm.vue +92 -0
  167. package/src/dome/dome/online/detail.vue +80 -0
  168. package/src/dome/dome/online/pay.vue +78 -0
  169. package/src/dome/dome/online/schedule.vue +73 -0
  170. package/src/dome/dome/online/seat.vue +98 -0
  171. package/src/dome/dome/order/detail.vue +166 -0
  172. package/src/dome/dome/order/enter_order.vue +294 -0
  173. package/src/dome/dome/order/list.vue +219 -0
  174. package/src/dome/dome/order/order.js +18 -0
  175. package/src/dome/dome/order/success.vue +68 -0
  176. package/src/dome/dome/product.vue +179 -0
  177. package/src/dome/dome/store_cashier.vue +67 -0
  178. package/src/dome/dome/swiper.vue +32 -0
  179. package/src/dome/dome/webview.vue +61 -0
  180. package/src/install.js +183 -0
  181. package/src/main/address/address.vue +251 -0
  182. package/src/main/cart/cart.vue +149 -0
  183. package/src/main/cashier/cashier.vue +72 -0
  184. package/src/main/cashier/check_cashier.vue +483 -0
  185. package/src/main/city/city.vue +149 -0
  186. package/src/main/date/date.vue +260 -0
  187. package/src/main/order/order.js +19 -0
  188. package/src/main/order/order.vue +222 -0
  189. package/src/main/product/detail.vue +121 -0
  190. package/src/main/product/type.vue +108 -0
  191. package/src/main/search/search.vue +501 -0
  192. package/src/pages.json +337 -0
  193. package/src/plugins/CreatedComponentsPlugin.js +19 -0
  194. package/src/plugins/JsonRename.js +72 -0
  195. package/src/plugins/SetAppParams.js +171 -0
  196. package/src/project.js +18 -0
  197. package/src/utils/Cookie.js +68 -0
  198. package/src/utils/Runtime.js +105 -0
  199. package/src/utils/Storage.js +104 -0
  200. package/src/utils/XdNetwork.js +133 -0
  201. package/src/utils/helper.js +1321 -0
  202. package/src/utils/nourl.js +95 -0
  203. package/src/utils/project.js +17 -0
  204. package/src/utils/xd.auth.js +61 -0
  205. package/src/utils/xd.base.js +474 -0
  206. package/src/utils/xd.common.js +240 -0
  207. package/src/utils/xd.event.js +99 -0
  208. package/src/utils/xd.frame.js +96 -0
  209. package/src/utils/xd.path.js +96 -0
  210. package/src/utils/xdAppLog.js +170 -0
  211. package/src/utils/xdWxLog.js +302 -0
  212. package/src/utils/xdh5log.js +307 -0
  213. package/src/websetting.js +64 -0
  214. package/tsconfig.json +9 -0
  215. package/xd.less +180 -0
@@ -0,0 +1,940 @@
1
+ <template>
2
+ <view class="xd-store-product" v-if="uiItem">
3
+ <view class="xd-store-product__swiper">
4
+ <xd-swiper
5
+ :list="uiItem.thumb"
6
+ :current="swiperCurrent"
7
+ width="100%"
8
+ height="750rpx"
9
+ :indicatorDots="false"
10
+ @animationfinish="animationfinish"
11
+ >
12
+ <template slot-scope="{ item, index}">
13
+ <image :src="item"></image>
14
+ </template>
15
+ </xd-swiper>
16
+ <view class="xd-store-product__swiper-tips">{{swiperCurrent + 1}}/{{uiItem.thumb.length}}</view>
17
+ </view>
18
+ <view class="xd-store-product__name">
19
+ <view class="xd-store-product__name-text">
20
+ <view class="xd-store-product__name-text-price">
21
+ <xd-unit
22
+ :price="uiItem['sale_price']"
23
+ :font-size="50"
24
+ :iocn-size=".45"
25
+ ></xd-unit>
26
+ </view>
27
+ <view
28
+ class="xd-store-product__name-text-special"
29
+ v-if="uiItem['special'] && uiItem['special'].length > 0"
30
+ >
31
+ <template v-for="item in uiItem['special'] ">
32
+ <view
33
+ :style="{
34
+ borderColor: uiItem['special_color'] || specialColor,
35
+ color: uiItem['special_color'] || specialColor
36
+ }">{{item}}</view>
37
+ </template>
38
+ </view>
39
+ <view class="xd-store-product__name-text-name">{{uiItem.product_short_desc || uiItem.product_name }}</view>
40
+ <view
41
+ class="xd-store-product__name-text-sub"
42
+ v-if="uiItem['product_sub_name']"
43
+ >{{uiItem['product_sub_name'] }}</view>
44
+ </view>
45
+ <view
46
+ class="xd-store-product__name-collect"
47
+ v-if="uiCollect !== null"
48
+ @click="handleCollect"
49
+ :style="{
50
+ color: uiCollect=== true? $mainColor: '#666'
51
+ }"
52
+ >
53
+ <view>
54
+ <xd-font-icon
55
+ icon="iconrecommend"
56
+ size="50"
57
+ :color="uiCollect === true? $mainColor: '#666'"
58
+ ></xd-font-icon>
59
+ </view>
60
+ <view>收藏</view>
61
+ </view>
62
+ </view>
63
+ <view class="xd-store-product__operate gift" v-if="!isEmpty(uiGift)">
64
+ <view class="xd-store-product__operate-item">
65
+ <view class="xd-store-product__operate-label">{{uiGift.label}}</view>
66
+ <view class="xd-store-product__operate-value">
67
+ <view>{{uiGift.rule}}</view>
68
+ <view v-for="(it,idx) in uiGift.value" :key="idx">{{it}}</view>
69
+ </view>
70
+ <view class="xd-store-product__operate-icon">
71
+ <xd-font-icon icon="iconsangedian" size="40"></xd-font-icon>
72
+ </view>
73
+ </view>
74
+ </view>
75
+ <view class="xd-store-product__label" v-if="uiItem['infoLabel'].length > 0">
76
+ <view
77
+ class="xd-store-product__label-item"
78
+ v-for="(iItem,iIndex) in uiItem['infoLabel']"
79
+ :key="iIndex"
80
+ >
81
+ <view>{{iItem['label']}}</view>
82
+ <view
83
+ v-if="checkValType(iItem['value']) === 'array'"
84
+ class="xd-store-product__label-item-tag"
85
+ >
86
+ <view v-for="(it,idx) in iItem['value']" :key="idx">
87
+ <xd-tag type="primary" size="small" inverted>{{it}}</xd-tag>
88
+ </view>
89
+ </view>
90
+ <view v-else :style="{color: iItem['color']}">{{iItem['value']}}</view>
91
+ </view>
92
+ </view>
93
+ <view class="xd-store-product__notice" v-if="uiItem['notice']">{{uiItem['notice']}}</view>
94
+ <view class="xd-store-product__sendRange" v-if="uiItem && uiItem.links && uiItem.links.length > 0">
95
+ <view class="xd-store-product__sendRange-item"
96
+ v-for="link in uiItem.links"
97
+ :key="link.key"
98
+ >
99
+ <view class="xd-store-product__sendRange-label">{{link.name}}</view>
100
+ <view
101
+ class="xd-store-product__sendRange-value"
102
+ :style="{
103
+ textAlign: link.align ? link.align: 'right',
104
+ color: link.color ? link.color : '#111'
105
+ }"
106
+ >{{link.value}}</view>
107
+ <view class="xd-store-product__sendRange-icon" @click="handleSend(link)">
108
+ <xd-font-icon icon="iconjiantou" size="30"></xd-font-icon>
109
+ </view>
110
+ </view>
111
+ </view>
112
+ <view class="xd-store-product__operate " v-if="isShowSelected">
113
+ <view class="xd-store-product__operate-item select-number" @click="handleSelect" v-if="selectNumber">
114
+ <view class="xd-store-product__operate-label">已选</view>
115
+ <view class="xd-store-product__operate-value">{{getSelect}}</view>
116
+ <view class="xd-store-product__operate-icon">
117
+ <xd-font-icon icon="iconsangedian" size="40" v-if="isChangeSelect"></xd-font-icon>
118
+ </view>
119
+ </view>
120
+ <view class="xd-store-product__operate-item select-addrss" @click="handleAddress">
121
+ <view class="xd-store-product__operate-label">配送至</view>
122
+ <view
123
+ :style="{color: !address?'#999': '#111'}"
124
+ class="xd-store-product__operate-value"
125
+ >{{getAddress}}</view>
126
+ <view class="xd-store-product__operate-icon">
127
+ <xd-font-icon icon="iconsangedian" size="40"></xd-font-icon>
128
+ </view>
129
+ </view>
130
+ </view>
131
+ <view class="xd-store-product__shop" v-if="uiItem['shop']" @click="handleClickShop(uiItem['shop'])">
132
+ <view class="xd-store-product__shop-image">
133
+ <image :src="uiItem['shop']['logo']" mode="aspectFit"></image>
134
+ </view>
135
+ <view class="xd-store-product__shop-content">
136
+ <view>{{uiItem['shop']['name']}}</view>
137
+ <view>{{uiItem['shop']['desc']}}</view>
138
+ </view>
139
+ </view>
140
+ <view class="xd-store-product__content">
141
+ <view class="xd-store-product__content-top">
142
+ <xd-more>宝贝详情</xd-more>
143
+ </view>
144
+ <view class="xd-store-product__content-text">
145
+ <xd-content-xss :html="getDetail(uiItem['detail'])"></xd-content-xss>
146
+ </view>
147
+ <view class="xd-store-product__content-bottom">
148
+ <xd-more>已经到最底了</xd-more>
149
+ </view>
150
+ </view>
151
+ <view class="xd-store-product__bottom" :style="{height: 160 + 'rpx'}"></view>
152
+ <view class="xd-store-product__tips" v-if="uiItem['tips']">
153
+ <view>
154
+ <view><xd-font-icon icon="iconIM" :size="34" :width="34" :height="34" color="#e6a23c"></xd-font-icon></view>
155
+ <view>{{uiItem['tips']}}</view>
156
+ </view>
157
+ <view></view>
158
+ </view>
159
+ <view class="xd-store-product__func">
160
+ <view class="xd-store-product__func-left">
161
+ <view v-for="(link,lIndex) in uiFastLinks" :key="lIndex">
162
+ <xd-font-icon
163
+ @click="handleLinks({link,index: lIndex})"
164
+ :icon="link.icon"
165
+ :size="link.size"
166
+ height="55"
167
+ ></xd-font-icon>
168
+ <view
169
+ class="xd-store-product__func-left-num"
170
+ :style="{background: uiColor}"
171
+ v-if="uiCartNumber > 0 && link.system"
172
+ >{{uiCartNumber<100?uiCartNumber: '99+'}}
173
+ </view>
174
+ <view>{{link.name}}</view>
175
+ </view>
176
+ </view>
177
+ <view class="xd-store-product__func-right">
178
+ <view v-for="(btn,bIndex) in uiItem['fastBtns']" :key="bIndex">
179
+ <xd-button
180
+ :disabled="btn['disabled'] !== undefined ? btn['disabled'] : false"
181
+ @click="handleBtn({btn,index:bIndex})"
182
+ :type="btn['type']"
183
+ size="mini"
184
+ >{{btn['name']}}</xd-button>
185
+ </view>
186
+ </view>
187
+ </view>
188
+ </view>
189
+ </template>
190
+
191
+ <script>
192
+ import XdSwiper from "@/components/XdSwiper/XdSwiper";
193
+ import XdUnit from "@/components/XdUnit/XdUnit";
194
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
195
+ import XdTag from "@/components/XdTag/XdTag";
196
+ import XdMore from "@/components/XdMore/XdMore";
197
+ import XdButton from "@/components/XdButton/XdButton";
198
+ import XdContentXss from "@/components/XdContentXss/XdContentXss";
199
+
200
+ /**
201
+ * XdStoreProductInfo 商城商品详情显示
202
+ * @description 商城商品详情显示
203
+ * @tutorial
204
+ * @property {Object|null} item 商品信息信息 格式见:this.testData, 值:null, 使用测试数据
205
+ * @property {String} specialColor 商品特效显示颜色 默认:green
206
+ * @property {Boolean|null} collect 是否启用收藏按钮(null => 不显示 true=> 已收藏, false=> 未收藏)
207
+ * @property {Number} cartNumber 购物车显示数量 默认:0
208
+ * @property {String|null} selectNumber 选中规格 默认:null
209
+ * @property {Boolean} isChangeSelect 是否显示切换规格操作按钮 默认:false
210
+ * @property {Object|null} address 配送地址 默认:null
211
+ * @property {Object|null} fastLink 快速连接 默认:{icon: 'iconshouye', name: '返回首页', size: 40}
212
+ * @property {Boolean} isShowSelected 是否显示选中配送地址和已选信息 默认: true
213
+ * @property {Boolean} isShowSendRange 是否配送范围操作 默认: false
214
+ *
215
+ *
216
+ * @event {Function} onCollect 点击添加收藏事件 参数: uiItem
217
+ * @event {Function} onFastLink 点击快速连接事件 参数: {link:link,index: index}
218
+ * @event {Function} onFastBtn 点击操作按钮事件 参数: {btn:btn,index: index}
219
+ * @event {Function} onAddress 切换下单地址 参数: 无
220
+ * @event {Function} onSelect 切换选中规格事件 参数: uiItem
221
+ * @event { Function } onShop 点击店铺模块事件 shop
222
+ *
223
+ */
224
+ export default {
225
+ name: "XdStoreProductInfo",
226
+ components: {
227
+ XdContentXss,
228
+ XdButton,
229
+ XdMore,
230
+ XdTag,
231
+ XdFontIcon,
232
+ XdUnit,
233
+ XdSwiper
234
+ },
235
+ props:{
236
+ item: {
237
+ type: Object|null,
238
+ default(){
239
+ return null
240
+ }
241
+ },
242
+
243
+ gift: {
244
+ type: Object | null,
245
+ default(){
246
+ return {}
247
+ // return {
248
+ // label: '赠品',
249
+ // rule: '所以我们在window下开发好之后 放在linux 环境下回报错 那么我们使用',
250
+ // value: [
251
+ // '这2个常量的使用能够避免不同平台的性问题 x1',
252
+ // '当你要include多个路径的话 x2',
253
+ // '一场酒醉歌迷的散伙宴之后 x1'
254
+ // ],
255
+ // }
256
+ }
257
+ },
258
+
259
+ specialColor: {
260
+ type: String,
261
+ default: 'green'
262
+ },
263
+
264
+ /**
265
+ * @description 是否启用收藏按钮(null => 不显示 true=> 已收藏, false=> 未收藏)
266
+ */
267
+ collect: {
268
+ type: Boolean | null,
269
+ default: null,
270
+ },
271
+
272
+
273
+ isShowSelected: {
274
+ type: Boolean,
275
+ default: true,
276
+ },
277
+
278
+
279
+ /**
280
+ * @description 大于0为显示怡萱模块
281
+ */
282
+ cartNumber: {
283
+ type: Number,
284
+ default: 0,
285
+ },
286
+
287
+ /**
288
+ * @description 选中规格数量
289
+ */
290
+ selectNumber:{
291
+ type: String | null,
292
+ default: null,
293
+ },
294
+
295
+ /**
296
+ * @description 是否显示改变选中规格按钮
297
+ */
298
+ isChangeSelect: {
299
+ type: Boolean,
300
+ default: true,
301
+ },
302
+
303
+ /**
304
+ * @description 显示配送地址
305
+ */
306
+ address: {
307
+ type: String| null,
308
+ default: null,
309
+ },
310
+
311
+ /**
312
+ * @description 快速连接列表(只获取第一条)
313
+ */
314
+ fastLink: {
315
+ type: Object,
316
+ default(){
317
+ return {icon: 'iconshouye', name: '返回首页', size: 40};
318
+ }
319
+ }
320
+ },
321
+ watch:{
322
+ collect(val){
323
+ this.uiCollect = val;
324
+ },
325
+
326
+ cartNumber(val){
327
+ console.log(val);
328
+ this.uiCartNumber = val;
329
+ },
330
+ gift(value){
331
+ this.uiGift = value;
332
+ }
333
+ },
334
+ computed:{
335
+ getSelect(){
336
+ return `${this.uiItem['product_name']} , ${this.selectNumber}`;
337
+ },
338
+
339
+ getAddress(){
340
+ if(!this.address) return '请选择配送地址';
341
+ else {
342
+ return this.address;
343
+ }
344
+
345
+ },
346
+ },
347
+ data(){
348
+ return {
349
+ swiperCurrent: 0,
350
+
351
+ uiItem: null, //商品信息
352
+ uiFastLinks: [],//快速连接
353
+
354
+ uiColor: '', //数字背景颜色
355
+
356
+ //动态改变值
357
+ uiCollect: null, //收藏状态
358
+ uiCartNumber: 0, //购物车数量
359
+ uiAddress: '', //配送地址
360
+
361
+ uiGift: null,
362
+
363
+
364
+ //商品测试数据格式
365
+ testData: {
366
+ // //头部轮播图
367
+ // thumb: ["https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20210604101103940.jpg", "https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20210604101113376.jpg", "https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20210604101122312.jpg"],
368
+ // product_name: '中粮 福临门小厨味道米面礼盒 4.5kg', //商品名称
369
+ // product_short_desc:'中粮 福临门小厨味道米面礼盒 4.5kg中粮 福临门小厨味道米面礼盒 4.5kg', //商品短名称
370
+ // //product_sub_name: '尺寸/口味/人群', //副标题,无此此地不显示副标题
371
+ // sale_price: 150, //价格
372
+ // id: 199191,
373
+ // collect: true, //是否启用收藏按钮(undefined => 不显示 true=> 已收藏, false=> 未收藏)
374
+ // special: ['红米营养价值极高,含有丰富的微量元素,紫米补血益气、暖脾胃,有很好的滋补作用。', '未收藏', '已收藏'],
375
+ // special_color: 'green',//特效显示颜色
376
+ //
377
+ // shop: {
378
+ // logo: 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200826/733372b7f9022ce6c127ffbe03c54cb5.jpg',
379
+ // name: '幸福西饼廊坊店',
380
+ // desc: '丝滑奶油香甜绵密 ,花漾鲜果邂逅浪漫'
381
+ // },
382
+ //
383
+ //
384
+ // //产品显示标签(value为数组时候:显示为tag标签)
385
+ // infoLabel: [
386
+ // {
387
+ // label: '产品',
388
+ // value: '中粮 福临门小厨味道米面礼盒 4.5kg',
389
+ // },
390
+ // {
391
+ // label: '预售',
392
+ // value: '该产品为预售,需要进行一个月的采购时间,货到立马发货',
393
+ // color: '#c00'
394
+ // },
395
+ // {
396
+ // label: '品牌',
397
+ // value: '中粮',
398
+ // },
399
+ // // {
400
+ // // label: '配送方式',
401
+ // // value: ['专人配送', '到店自提', '快递物流'],
402
+ // // }
403
+ // ],
404
+ //
405
+ // //发货提示
406
+ // notice: '订单付款后72小时内发货,法定节假日顺延到工作日发货',
407
+ //
408
+ //
409
+ // //快速链接地址 align=left,right, center
410
+ // links: [
411
+ // {name: '查看配送范围', value: '全国', key: 0, align: 'right'},
412
+ // {name: '支持门店', value: '某某门店', key: 1, align: 'right'}
413
+ // ],
414
+ //
415
+ // //快速按钮
416
+ // fastBtns: [
417
+ // {type: 'primary', name: '加入购物车',},
418
+ // {type: 'subPrimary', name: '立即购买',},
419
+ // ],
420
+ //
421
+ // //详情
422
+ // //detail: "\n \n \u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20210119153542102.png?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\n \u003Cdiv\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/7daysservice.jpeg\u0022 width=\u0022100%\u0022\u003E\u003C\/div\u003E",
423
+ // detail: "\n \n \n \n \n \u003Cp\u003E\u5907\u6ce8\uff1a\u003C\/p\u003E\u003Cp\u003E1\u3001\u672c\u4ea7\u54c1\u4e0d\u652f\u63017\u5929\u65e0\u7406\u7531\u9000\u6362\u8d27\u003C\/p\u003E\u003Cp\u003E2\u3001\u65b0\u7586\u3001\u897f\u85cf\u3001\u5185\u8499\u3001\u6d77\u5357\u3001\u6e2f\u6fb3\u53f0\u4e0d\u652f\u6301\u6d3e\u4ef6\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142948482.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947977.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947278.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947126.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947903.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947859.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947175.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947841.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947619.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142948576.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947384.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\u003Cp\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/20201130142947381.jpg?x-oss-process=style\/common\u0022 style=\u0022width: 100%;\u0022\u003E\u003C\/p\u003E\n \n \n \n \u003Cdiv\u003E\u003Cimg src=\u0022https:\/\/jfb-public-images.oss-cn-qingdao.aliyuncs.com\/7daysservice.jpeg\u0022 width=\u0022100%\u0022\u003E\u003C\/div\u003E",
424
+ },
425
+
426
+ }
427
+ },
428
+
429
+ mounted() {
430
+ this.uiGift = this.gift;
431
+
432
+ this.$nextTick(()=>{
433
+ this.uiCollect = this.collect;
434
+ this.uiCartNumber = this.cartNumber;
435
+
436
+ this.uiColor = this.$mainColor;
437
+ if (getApp().globalData.$xd
438
+ && getApp().globalData.$xd['config']
439
+ && getApp().globalData.$xd['config']['unitTextColor']
440
+ ) {
441
+ this.uiColor = getApp().globalData.$xd['config']['unitTextColor'];
442
+ }
443
+
444
+ //快速连接
445
+ this.uiFastLinks = [this.fastLink].concat([{icon: 'icongouwuche', name: '购物车', size: 55, system: true}]);
446
+
447
+ if (this.item === null) {
448
+ this.uiItem = this.$xdUniHelper.cloneDeep(this.testData);
449
+ }else {
450
+ this.uiItem = this.item;
451
+ }
452
+ });
453
+ },
454
+
455
+ methods:{
456
+ isEmpty(obj){
457
+ return this.$xdUniHelper.isEmpty(obj)
458
+ },
459
+
460
+ checkValType(obj){
461
+ return this.$xdUniHelper.checkVarType(obj)
462
+ },
463
+ getDetail(html){
464
+ // #ifdef H5
465
+ return html;
466
+ // #endif
467
+
468
+ // #ifdef MP-WEIXIN
469
+ html = html.replace(/<p>/ig, '<p class="p_class">');
470
+ html = html.replace(/<div>/ig, '<div class="div_class">');
471
+ return html
472
+ // #endif
473
+ },
474
+ animationfinish(e){
475
+ this.swiperCurrent = e.detail.current;
476
+ },
477
+
478
+ handleSend(item){
479
+ this.$emit('onSend', item);
480
+ },
481
+
482
+ /**
483
+ * @description 点击收藏事件
484
+ */
485
+ handleCollect(){
486
+ this.$emit('onCollect', this.uiItem);
487
+ },
488
+
489
+ /**
490
+ * @description 快速连接点击时间
491
+ * @param link
492
+ * @param index
493
+ */
494
+ handleLinks({link, index}){
495
+ this.$emit('onFastLink', {link, index});
496
+ },
497
+
498
+ /**
499
+ * @description 快速按钮点击事件
500
+ * @param btn
501
+ * @param index
502
+ */
503
+ handleBtn({btn, index}){
504
+ this.$emit('onFastBtn', {btn, index});
505
+ },
506
+
507
+ /**
508
+ * @description 切换配送地址事件
509
+ */
510
+ handleAddress(){
511
+ this.$emit('onAddress');
512
+ },
513
+
514
+ /**
515
+ * @description 切换选中规格事件
516
+ */
517
+ handleSelect() {
518
+ this.$emit('onSelect', this.uiItem);
519
+ },
520
+
521
+ /**
522
+ * @description 点击店铺模块事件
523
+ * @param shop
524
+ */
525
+ handleClickShop(shop){
526
+ this.$emit('onShop', shop);
527
+ }
528
+ }
529
+ }
530
+ </script>
531
+
532
+ <style scoped lang="less">
533
+ .xd-store-product {
534
+ &__swiper {
535
+ position: relative;
536
+ box-shadow: 0 0 unit(5,rpx) rgba(0,0,0,.2);
537
+
538
+ &-tips {
539
+ position: absolute;
540
+ right: 0;
541
+ bottom: unit(60,rpx);
542
+ min-width: unit(50,rpx);
543
+ padding: 0 unit(10,rpx);
544
+ background: rgba(0,0,0,.8);
545
+ text-align: center;
546
+ height: unit(40,rpx);
547
+ line-height: unit(40,rpx);
548
+ border-radius: unit(10,rpx) 0 0 unit(10, rpx);
549
+ color: #fff;
550
+ font-size: @xd-font-size-sm;
551
+ }
552
+ }
553
+
554
+ &__name {
555
+ background: #fff;
556
+ padding: unit(20,rpx) unit(20,rpx);
557
+ display: flex;
558
+ justify-content: space-between;
559
+ align-items: flex-start;
560
+
561
+ &-text {
562
+ flex: 1;
563
+ width: 0;
564
+
565
+ &-price {}
566
+
567
+ &-special {
568
+ display: flex;
569
+ align-items: flex-start;
570
+ justify-content: flex-start;
571
+ flex-wrap: wrap;
572
+ font-size: @xd-font-size-sm;
573
+ margin: unit(10, rpx) 0 unit(10, rpx);
574
+
575
+ & > view {
576
+ color: #fff;
577
+ border-width: 1px;
578
+ border-style: solid;
579
+ border-radius: unit(10, rpx);
580
+ padding: unit(5, rpx) unit(10, rpx);
581
+ line-height: unit(32, rpx);
582
+ margin: 0 unit(10, rpx) unit(10, rpx) 0;
583
+
584
+ }
585
+ }
586
+
587
+ &-name {
588
+ font-size: @xd-font-size-lg;
589
+ }
590
+
591
+ &-sub {
592
+ font-size: @xd-font-size-base;
593
+ color: #666;
594
+ margin-top: unit(10,rpx);
595
+ }
596
+ }
597
+ &-collect {
598
+ padding-top: unit(10,rpx);
599
+ width: unit(100,rpx);
600
+ flex-shrink: 0;
601
+ text-align: center;
602
+ font-size: @xd-font-size-sm;
603
+
604
+ & > view:last-child {
605
+ transform: scale(0.9);
606
+ }
607
+ }
608
+ }
609
+
610
+ &__shop {
611
+ display: flex;
612
+ justify-content: space-between;
613
+ align-items: center;
614
+ background: #fff;
615
+ margin-top: unit(20,rpx);
616
+ padding: unit(20,rpx);
617
+
618
+ &-image {
619
+ flex-shrink: 0;
620
+ width: unit(150, rpx);
621
+ height: unit(150,rpx);
622
+ display: flex;
623
+ justify-content: center;
624
+ align-items: center;
625
+ margin-right: unit(20,rpx);
626
+
627
+ & > image {
628
+ max-height: unit(150,rpx);
629
+ max-width: unit(150,rpx);
630
+ }
631
+ }
632
+
633
+ &-content {
634
+ flex: 1;
635
+ width: 0;
636
+ display: flex;
637
+ justify-content: flex-start;
638
+ align-content: space-between;
639
+ flex-wrap: wrap;
640
+ min-height: unit(120,rpx);
641
+
642
+ & > view:first-child {
643
+ font-size: @xd-font-size-lg;
644
+ margin-bottom: unit(10,rpx);
645
+ }
646
+
647
+ & > view:last-child {
648
+ font-size: @xd-font-size-sm;
649
+ color: #999;
650
+ }
651
+ }
652
+ }
653
+
654
+ &__operate {
655
+ margin-top: unit(20, rpx);
656
+ background: #fff;
657
+
658
+ &-item {
659
+ border-bottom: 1px solid #efefef;
660
+ display: flex;
661
+ justify-content: space-between;
662
+ align-items: center;
663
+ padding: unit(25, rpx) 0;
664
+ line-height: unit(40, rpx);
665
+ font-size: @xd-font-size-base;
666
+ }
667
+
668
+ &-label {
669
+ flex-shrink: 0;
670
+ padding-left: unit(20, rpx);
671
+ min-width: unit(100, rpx);
672
+ font-weight: bold;
673
+ padding-right: unit(20, rpx);
674
+ }
675
+
676
+ &-value {
677
+ flex: 1;
678
+ width: 0;
679
+ line-height: unit(30,rpx);
680
+ font-size: @xd-font-size-sm;
681
+
682
+ & > view {
683
+ padding-bottom: unit(10, rpx);
684
+ }
685
+
686
+ & > view:first-child {
687
+
688
+ color: #666;
689
+ }
690
+
691
+
692
+ }
693
+
694
+ &-icon {
695
+ flex-shrink: 0;
696
+ padding: unit(10,rpx) unit(20,rpx);
697
+ width: unit(50,rpx);
698
+ }
699
+ }
700
+
701
+ &__sendRange {
702
+ margin-top: unit(20, rpx);
703
+ background: #fff;
704
+
705
+ &-item {
706
+ border-bottom: 1px solid #efefef;
707
+ display: flex;
708
+ justify-content: space-between;
709
+ align-items: flex-start;
710
+ padding: unit(25, rpx) 0;
711
+ line-height: unit(40, rpx);
712
+ font-size: @xd-font-size-base;
713
+ }
714
+
715
+ &-label {
716
+ flex-shrink: 0;
717
+ padding-left: unit(20, rpx);
718
+ min-width: unit(100, rpx);
719
+ font-weight: bold;
720
+ padding-right: unit(20, rpx);
721
+ }
722
+
723
+ &-value {
724
+ flex: 1;
725
+ width: 0;
726
+ line-height: unit(40, rpx);
727
+ font-size: @xd-font-size-sm;
728
+ }
729
+
730
+ &-icon {
731
+ flex-shrink: 0;
732
+ padding: unit(0, rpx) unit(20, rpx);
733
+ height: unit(40,rpx);
734
+ width: unit(50, rpx);
735
+ }
736
+ }
737
+
738
+ &__label {
739
+ margin-top: unit(20,rpx);
740
+ background: #fff;
741
+
742
+ &-item {
743
+ border-bottom: 1px solid #efefef;
744
+ display: flex;
745
+ justify-content: flex-start;
746
+ align-items: flex-start;
747
+ padding: unit(25,rpx) 0;
748
+ line-height: unit(40,rpx);
749
+ font-size: @xd-font-size-base;
750
+
751
+ &-tag {
752
+ display: flex;
753
+ justify-content: flex-start;
754
+ align-items: center;
755
+ flex-wrap: wrap;
756
+
757
+ & > view {
758
+ margin-right: unit(10,rpx);
759
+ margin-bottom: unit(10,rpx);
760
+ }
761
+ }
762
+
763
+ &>view:first-child {
764
+ flex-shrink: 0;
765
+ padding-left: unit(20,rpx);
766
+ min-width: unit(100,rpx);
767
+ font-weight: bold;
768
+ padding-right: unit(20,rpx);
769
+ }
770
+
771
+ &>view:last-child {
772
+ flex: 1;
773
+ width: 0;
774
+ padding-right: unit(20, rpx);
775
+
776
+ }
777
+
778
+ &:last-child {
779
+ border-bottom: 0;
780
+ }
781
+ }
782
+ }
783
+
784
+ &__notice {
785
+ margin-top: unit(20, rpx);
786
+ background: #fff;
787
+ padding: unit(20,rpx);
788
+ line-height: unit(40,rpx);
789
+ color: red;
790
+ font-size: @xd-font-size-base;
791
+ }
792
+
793
+ &__tips {
794
+ position: fixed;
795
+ bottom: 0;
796
+ left: 0;
797
+ right:0;
798
+ background: #fdf6ec;
799
+ .safe-area();
800
+ color: #e6a23c;
801
+ z-index: 2000;
802
+ border-top: 1px solid #ffe5bd;
803
+
804
+ & > view:first-child {
805
+ font-size: @xd-font-size-sm;
806
+ line-height: unit(30,rpx);
807
+ padding: unit(16,rpx) unit(20,rpx) unit(16, rpx) unit(10, rpx);
808
+ display: flex;
809
+ justify-content: flex-start;
810
+ align-items: center;
811
+
812
+ & >view:last-child{
813
+ flex: 1;
814
+ width: 0;
815
+ }
816
+
817
+ & > view:first-child {
818
+ flex-shrink: 0;
819
+ margin-right: unit(6,rpx);
820
+ }
821
+ }
822
+
823
+ & > view:last-child {
824
+ height: unit(100,rpx);
825
+ }
826
+
827
+ }
828
+
829
+ &__content {
830
+ &-top {
831
+ padding: unit(20,rpx) 0;
832
+ }
833
+
834
+ &-text {
835
+ font-size: @xd-font-size-base + 2;
836
+ padding: 0 unit(20,rpx);
837
+ background: #fff;
838
+
839
+ /* #ifdef H5 */
840
+ & /deep/ p {
841
+ display: flex;
842
+ justify-content: flex-start;
843
+ align-items: center;
844
+ flex-wrap: wrap;
845
+ line-height: unit(50, rpx);
846
+ }
847
+ /* #endif */
848
+
849
+ }
850
+
851
+ &-bottom {
852
+ padding: unit(10, rpx) 0;
853
+ }
854
+ }
855
+
856
+ &__func {
857
+ display: flex;
858
+ justify-content: space-between;
859
+ align-items: center;
860
+ position: fixed;
861
+ left: 0;
862
+ bottom: 0;
863
+ right: 0;
864
+ z-index: 3000;
865
+ height: unit(100,rpx);
866
+ box-shadow: 0 0 unit(10,rpx) rgba(0,0,0,.08);
867
+ border-top: 1px solid #efefef;
868
+ background: #fff;
869
+ .safe-area();
870
+
871
+ &-right {
872
+ flex: 1;
873
+ width: 0;
874
+ display: flex;
875
+ justify-content: flex-end;
876
+ align-items: center;
877
+
878
+ &> view {
879
+ margin-right: unit(20,rpx);
880
+ }
881
+ }
882
+
883
+ &-left {
884
+ display: flex;
885
+ justify-content: space-between;
886
+ align-items: center;
887
+ flex-shrink: 0;
888
+ width: 40%;
889
+
890
+ &-num {
891
+ position: absolute;
892
+ top: unit(-8,rpx);
893
+ left: 71%;
894
+ min-width: unit(20,rpx);
895
+ padding: 0 unit(10,rpx);
896
+ height: unit(40,rpx);
897
+ color: #fff;
898
+ line-height: unit(40,rpx);
899
+ transform: translateX(-50%) scale(0.8);
900
+ text-align: center;
901
+ border-radius: unit(20,rpx);
902
+ font-size: @xd-font-size-sm;
903
+ }
904
+
905
+ & >view {
906
+ flex: 1;
907
+ text-align: center;
908
+ position: relative;
909
+
910
+ &> view:last-child {
911
+ transform: scale(0.9);
912
+ font-size: @xd-font-size-sm;
913
+ }
914
+ }
915
+ }
916
+ }
917
+
918
+
919
+ }
920
+ </style>
921
+
922
+ <style lang="less">
923
+ /* #ifdef MP-WEIXIN */
924
+ .xd-store-product__content-text {
925
+
926
+ }
927
+ .xd-store-product__content-text .p_class,
928
+ .xd-store-product__content-text .div_class
929
+ {
930
+ display: flex;
931
+ justify-content: flex-start;
932
+ align-items: center;
933
+ flex-wrap: wrap;
934
+ line-height: unit(50,rpx);
935
+ }
936
+
937
+ /* #endif */
938
+
939
+
940
+ </style>