app-diy-goods-list.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  1. <template>
  2. <view class="app-goods-list">
  3. <template v-if="showCat && catList.length > 1">
  4. <scroll-view class="app-scroll-view dir-left-nowrap" scroll-x scroll-with-animation>
  5. <text class="app-nav-item" @click="change(index)"
  6. :class="{'app-active-current': catStyle === 1 && activeCurrent === index,
  7. 'app-active-current-round': catStyle === 2 && activeCurrent === index,
  8. 'app-current-round': catStyle === 2
  9. }"
  10. :key="index"
  11. v-for="(item, index) in catList"
  12. >{{item.menuName}}
  13. </text>
  14. </scroll-view>
  15. </template>
  16. <template v-if="showCat && catPosition === 'left'">
  17. </template>
  18. <template v-else>
  19. <app-form-id>
  20. <view class="goods-list" :class="listClass">
  21. <block v-for="(goods, index) in newData" :key="index">
  22. <template v-if="listStyle === -1">
  23. <!-- 列表模式 -->
  24. <view :style="[{'background-color':`${goodsStyle != 3 ? '#fff' : ''}`}]" class="goods-item app-list-mode dir-left-nowrap" @click="jump(goods)"
  25. :class="goodsStyle === 3 ? 'no-border' : goodsStyle === 2 ? 'border' : ''">
  26. <view :style="[{'border-radius': `${lisRadius}`}]" class="out-dialog" v-if="(goods.goods_stock == 0 || goods.goods.goods_stock == 0) && appSetting.is_show_stock == '1'">
  27. <image :style="[{'border-radius': `${lisRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.plugins_out : appSetting.sell_out_pic"></image>
  28. </view>
  29. <view class="box-grow-0">
  30. <app-image
  31. :borderRadius="lisRadius"
  32. v-if="sign === 'advance'"
  33. :img-src="goods.goods.goodsWarehouse.cover_pic"
  34. width="200rpx"
  35. height="200rpx"
  36. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"
  37. ></app-image>
  38. <app-image
  39. v-else
  40. :borderRadius="lisRadius"
  41. :img-src="goods.cover_pic"
  42. width="200rpx"
  43. height="200rpx"
  44. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"
  45. ></app-image>
  46. </view>
  47. <view class="goods-tag" v-if="showGoodsTag">
  48. <app-image :img-src="goodsTagPicUrl" width="64rpx" height="64rpx"></app-image>
  49. </view>
  50. <view class="right box-grow-1 dir-top-nowrap main-between">
  51. <view class="box-grow-0 goods-name t-omit-two">
  52. <text class="dir-tag-def"
  53. v-if="tag && sign === 'advance'"
  54. >
  55. {{goods.people_num ? goods.people_num : ''}}{{tag}}
  56. </text>
  57. <text class="dir-tag-def"
  58. v-if="tag && sign === 'pick'"
  59. >
  60. {{goods.people_num ? goods.people_num : ''}}{{tag}}
  61. </text>
  62. <text class="tag"
  63. :class="theme + '-color ' + theme + '-border'"
  64. v-if="tag && sign !== 'advance' && sign !== 'pick' && ((sign == 'pintuan' && goods.people_num) || sign != 'pintuan')"
  65. >
  66. {{goods.people_num ? goods.people_num : ''}}{{tag}}
  67. </text>
  68. <text v-if="sign === 'advance'">{{showGoodsName ? goods.goods.goodsWarehouse.name : ''}}</text>
  69. <text v-else>{{showGoodsName ? goods.name : ''}}</text>
  70. </view>
  71. <view class=" dir-top-nowrap main-around box-grow-1">
  72. <view class="box-grow-0 timer" v-if="showTimer">
  73. <app-goods-timer
  74. v-if="sign === 'advance'"
  75. :list-style="listStyle"
  76. :start-date-time="goods.start_prepayment_at"
  77. :end-date-time="goods.end_prepayment_at"
  78. :sign="sign" :page-hide="pageHide"
  79. ></app-goods-timer>
  80. <app-goods-timer
  81. v-else
  82. :list-style="listStyle"
  83. :start-date-time="goods.start_time"
  84. :end-date-time="goods.end_time"
  85. :sign="sign" :page-hide="pageHide"
  86. ></app-goods-timer>
  87. </view>
  88. <view class="price dir-left-nowrap cross-bottom">
  89. <view class="box-grow-1" :class="theme + '-color '">
  90. <view v-if="goods.is_level == 1 && goods.is_negotiable != 1 && sign !== 'advance' && sign !== 'pick'">
  91. <app-member-price :price="goods.level_price"></app-member-price>
  92. </view>
  93. <template v-if="sign !== 'pick'">
  94. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" v-if="sign != 'advance' && goods.vip_card_appoint.discount > 0" margin="8rpx 0 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  95. </template>
  96. <template v-if="sign === 'advance'">
  97. <text class="des-price">
  98. 定金¥{{goods.deposit}}抵¥{{goods.swell_deposit}}
  99. </text>
  100. <view class="dir-left-nowrap cross-center">
  101. <view class="advance-member" v-if="goods.is_level == 1 && goods.is_negotiable != 1">
  102. <app-member-price :price="goods.level_price"></app-member-price>
  103. </view>
  104. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" margin="8rpx 0 0" v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  105. </view>
  106. <view class="dir-left-nowrap main-left cross-center" v-if="showGoodsPrice">
  107. <view>¥{{showGoodsPrice ?
  108. goods.goods.price :
  109. ''}}
  110. </view>
  111. <view class="original-price" style="margin-left: 10upx;" v-if="goods.goods.goodsWarehouse.original_price">
  112. ¥{{goods.goods.goodsWarehouse.original_price}}
  113. </view>
  114. </view>
  115. </template>
  116. <template v-else-if="sign === 'pick'">
  117. <text class="tag">
  118. {{goods.rule_price}}元选{{goods.rule_num}}{{goods.unit}}
  119. </text>
  120. <view class="dir-left-nowrap cross-center">
  121. <!-- <view class="advance-member" v-if="goods.is_level == 1 && goods.is_negotiable != 1">-->
  122. <!-- <app-member-price :price="goods.level_price"></app-member-price>-->
  123. <!-- </view>-->
  124. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" margin="8rpx 0 0" v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  125. </view>
  126. <view class="dir-left-nowrap main-left cross-center" v-if="showGoodsPrice">
  127. <view>¥{{showGoodsPrice ?
  128. goods.price :
  129. ''}}
  130. </view>
  131. <view class="original-price" style="margin-left: 10upx;" v-if="goods.original_price">
  132. ¥{{goods.original_price}}
  133. </view>
  134. </view>
  135. </template>
  136. <template v-else>
  137. <view class="t-omit">{{showGoodsPrice || sign !== 'goods' ?
  138. goods.price_content :
  139. ''}}
  140. </view>
  141. <view class="original-price" v-if="goods.original_price && (showGoodsPrice || sign !== 'goods')">
  142. ¥{{goods.original_price}}
  143. </view>
  144. </template>
  145. </view>
  146. <template v-if="showBuyBtn && goods.is_negotiable != 1 && goods.goods_stock != 0 && goods.goods.goods_stock != 0">
  147. <view @click.stop="buyProduct(goods)"
  148. class="box-grow-0 buy-btn main-center cross-center"
  149. :style="btnStyle"
  150. :class="buyBtnClass" v-if="buyBtn === 'text' || sign !== 'goods'">
  151. {{buyBtnText}}
  152. </view>
  153. <icon @click.stop="buyProduct(goods)"
  154. class="box-grow-0 app-button-icon"
  155. :class="'app-button-icon-' + buyBtn" v-else></icon>
  156. </template>
  157. </view>
  158. </view>
  159. </view>
  160. </view>
  161. </template>
  162. <template v-else-if="listStyle === 0">
  163. <!-- 左右滑动 -->
  164. <view :style="[{'background-color':`${goodsStyle != 3 ? '#fff' : ''}`}]" class="goods-item app-scroll dir-top-nowrap" :class="goodsClass" @click="jump(goods)">
  165. <view :style="[{'border-radius': `${imgRadius}`}]" class="out-dialog" v-if="(goods.goods_stock == 0 || goods.goods.goods_stock == 0) && appSetting.is_show_stock == '1'">
  166. <image :style="[{'border-radius': `${imgRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.plugins_out : appSetting.sell_out_pic"></image>
  167. </view>
  168. <view>
  169. <app-image :borderRadius="imgRadius" :img-src="goods.cover_pic" width="200rpx" height="200rpx"
  170. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"></app-image>
  171. </view>
  172. <view class="goods-tag" v-if="showGoodsTag">
  173. <app-image :img-src="goodsTagPicUrl" width="64rpx" height="64rpx"></app-image>
  174. </view>
  175. <view class="goods-name t-omit-two" v-if="showGoodsName">{{goods.name}}</view>
  176. <view class="box-grow-1 dir-top-nowrap main-right price">
  177. <view v-if="goods.is_level == 1 && goods.is_negotiable != 1 && sign !== 'pick'">
  178. <app-member-price :price="goods.level_price"></app-member-price>
  179. </view>
  180. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" margin="8rpx 0 0" v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  181. <view class="dir-left-nowrap cross-center">
  182. <view class="box-grow-1 t-omit" :class="theme + '-color'">
  183. {{showGoodsPrice ? goods.price_content : ''}}
  184. </view>
  185. <template v-if="showBuyBtn && textStyle != 2 && goods.is_negotiable != 1 && goods.goods_stock != 0 && goods.goods.goods_stock != 0">
  186. <view @click.stop="buyProduct(goods)"
  187. class="box-grow-0 buy-btn main-center cross-center" :style="btnStyle"
  188. :class="buyBtnClass" v-if="buyBtn === 'text'">
  189. {{buyBtnText}}
  190. </view>
  191. <icon @click.stop="buyProduct(goods)" class="box-grow-0 app-button-icon"
  192. :class="'app-button-icon-' + buyBtn" v-else></icon>
  193. </template>
  194. </view>
  195. </view>
  196. </view>
  197. </template>
  198. <template v-else-if="listStyle === 1">
  199. <!-- 一行一个 -->
  200. <view :style="[{'background-color':`${goodsStyle != 3 ? '#fff' : ''}`}]" class="goods-item app-column-1" :class="goodsClass" @click="jump(goods)">
  201. <view style="position: relative;">
  202. <view class="out-dialog" :style="[{'height':`${coverPicHeight}`,'border-radius': `${imgRadius}`}]" v-if="(goods.goods_stock == 0 || goods.goods.goods_stock == 0) && appSetting.is_show_stock == '1'">
  203. <image v-if="coverPicHeight == '468rpx'" :style="[{'height':`${coverPicHeight}`,'border-radius': `${imgRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.rate_out : appSetting.sell_out_other_pic"></image>
  204. <image v-else :style="[{'height':`${coverPicHeight}`,'border-radius': `${imgRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.one_out : appSetting.sell_out_pic"></image>
  205. </view>
  206. <view>
  207. <app-image :borderRadius="imgRadius" v-if="sign === 'advance'"
  208. :img-src="goods.goods.goodsWarehouse.cover_pic"
  209. width="100%"
  210. :height="coverPicHeight"
  211. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"
  212. ></app-image>
  213. <app-image :borderRadius="imgRadius" v-else
  214. :img-src="goods.cover_pic"
  215. width="100%"
  216. :height="coverPicHeight"
  217. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"
  218. ></app-image>
  219. </view>
  220. <view class="goods-tag" v-if="showGoodsTag">
  221. <app-image :img-src="goodsTagPicUrl"
  222. width="64rpx"
  223. height="64rpx"
  224. >
  225. </app-image>
  226. </view>
  227. <view class="box-grow-0 timer" v-if="showTimer">
  228. <template v-if="sign === 'advance'">
  229. <app-goods-timer
  230. :list-style="listStyle"
  231. :start-date-time="goods.start_prepayment_at"
  232. :end-date-time="goods.end_prepayment_at"
  233. :sign="sign" :page-hide="pageHide"
  234. ></app-goods-timer>
  235. </template>
  236. <template v-else>
  237. <app-goods-timer
  238. :list-style="listStyle"
  239. :start-date-time="goods.start_time"
  240. :end-date-time="goods.end_time"
  241. :sign="sign" :page-hide="pageHide"
  242. ></app-goods-timer>
  243. </template>
  244. </view>
  245. </view>
  246. <view class="goods-name t-omit" v-if="showGoodsName">
  247. <template v-if="sign === 'advance'">
  248. <text>{{showGoodsName ? goods.goods.goodsWarehouse.name : ''}}</text>
  249. </template>
  250. <template v-if="sign === 'pick'">
  251. <text class="tag-pick" :class="theme + '-color ' + theme + '-border'" v-if="tag && sign == 'pick'">
  252. {{tag}}
  253. </text>
  254. <text>{{showGoodsName ? goods.name : ''}}</text>
  255. </template>
  256. <template v-else>
  257. <text class="tag" :class="theme + '-color ' + theme + '-border'" v-if="tag && sign == 'pintuan' && goods.people_num">
  258. {{goods.people_num ? goods.people_num : ''}}{{tag}}
  259. </text>
  260. <text>{{showGoodsName ? goods.name : ''}}</text>
  261. </template>
  262. </view>
  263. <template v-if="sign === 'advance' ">
  264. <text class="des-price" style="margin-left: 24rpx;margin-top: 15rpx;">
  265. 定金¥{{goods.deposit}}抵¥{{goods.swell_deposit}}
  266. </text>
  267. </template>
  268. <template v-if="sign === 'pick'">
  269. <text class="des-price" style="margin-left: 24rpx;margin-top: 15rpx;">
  270. {{goods.rule_price}}元选{{goods.rule_num}}{{goods.unit}}
  271. </text>
  272. </template>
  273. <view class="price dir-left-nowrap cross-center" :style="{marginTop: sign === 'advance' ? '0rpx' : '16rpx'}">
  274. <view class="box-grow-1 t-omit" :class="theme + '-color'">
  275. <view v-if="sign === 'advance'" class="dir-left-nowrap cross-center" :class="textStyle == 2 ? 'main-center' : ''">
  276. <view v-if="goods.goods.is_level == 1">
  277. <app-member-price :price="goods.level_price"></app-member-price>
  278. </view>
  279. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" margin='0 0 0 12rpx' v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  280. </view>
  281. <template v-if="sign === 'advance'">
  282. <view :class="{'dir-left-nowrap': goods.goods.is_level == 1}" v-if="showGoodsPrice">
  283. <view class="dir-left-nowrap cross-center" :class="{'main-center' :textStyle == 2}">
  284. <view style="font-size: 22rpx;height: 22rpx;line-height: 22rpx">{{showGoodsPrice ? `¥${goods.goods.price}` : ''}}</view>
  285. </view>
  286. <view class="original-price" style="font-size: 17rpx;height:17rpx;line-height: 17rpx;" v-if="goods.goods.goodsWarehouse.original_price">
  287. ¥{{goods.goods.goodsWarehouse.original_price}}
  288. </view>
  289. </view>
  290. </template>
  291. <template v-else>
  292. <view class="dir-left-nowrap cross-center" :class="textStyle == 2 ? 'main-center' : ''">
  293. <view>{{showGoodsPrice || sign !== 'goods' ? goods.price_content : ''}}</view>
  294. <view class="member-price" v-if="goods.is_level == 1 && goods.is_negotiable != 1 && sign !== 'pick'">
  295. <app-member-price margin="" :price="goods.level_price"></app-member-price>
  296. </view>
  297. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" margin='0 0 0 12rpx' v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  298. </view>
  299. <view class="original-price" v-if="goods.original_price && (showGoodsPrice || sign !== 'goods')">
  300. ¥{{goods.original_price}}
  301. </view>
  302. </template>
  303. </view>
  304. <template v-if="showBuyBtn && textStyle != 2 && goods.is_negotiable != 1 && goods.goods_stock != 0 && goods.goods.goods_stock != 0">
  305. <view @click.stop="buyProduct(goods)"
  306. class="box-grow-0 buy-btn main-center cross-center" :style="btnStyle"
  307. :class="buyBtnClass" v-if="buyBtn === 'text' || sign !== 'goods'">
  308. {{buyBtnText}}
  309. </view>
  310. <icon @click.stop="buyProduct(goods)" class="box-grow-0 app-button-icon"
  311. :class="'app-button-icon-' + buyBtn" v-else></icon>
  312. </template>
  313. </view>
  314. </view>
  315. </template>
  316. <template v-else-if="listStyle === 2">
  317. <!-- 一行两个 -->
  318. <view :style="[{'background-color':`${goodsStyle != 3 ? '#fff' : ''}`}]" class="box-grow-0 dir-top-nowrap goods-item app-column-2" :class="goodsClass"
  319. @click="jump(goods)">
  320. <view style="position: relative;">
  321. <view :style="[{'border-radius': `${imgRadius}`}]" class="out-dialog" v-if="(goods.goods_stock == 0 || goods.goods.goods_stock == 0) && appSetting.is_show_stock == '1'">
  322. <image :style="[{'border-radius': `${imgRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.book_out : appSetting.sell_out_pic"></image>
  323. </view>
  324. <view class="box-grow-0">
  325. <template v-if="sign === 'advance'">
  326. <app-image :borderRadius="imgRadius" :img-src="goods.goods.goodsWarehouse.cover_pic"
  327. width="100%"
  328. height="342rpx"
  329. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"
  330. ></app-image>
  331. </template>
  332. <template v-else>
  333. <app-image :borderRadius="imgRadius" :img-src="goods.cover_pic" width="100%" height="342rpx"
  334. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"></app-image>
  335. </template>
  336. </view>
  337. <view class="goods-tag" v-if="showGoodsTag">
  338. <app-image :img-src="goodsTagPicUrl" width="64rpx"
  339. height="64rpx"></app-image>
  340. </view>
  341. <view class="box-grow-0 timer" v-if="showTimer">
  342. <template v-if="sign === 'advance'">
  343. <app-goods-timer :list-style="listStyle" :start-date-time="goods.start_prepayment_at"
  344. :end-date-time="goods.end_prepayment_at"
  345. :sign="sign" :page-hide="pageHide"
  346. ></app-goods-timer>
  347. </template>
  348. <template v-else>
  349. <app-goods-timer :list-style="listStyle" :start-date-time="goods.start_time"
  350. :end-date-time="goods.end_time"
  351. :sign="sign" :page-hide="pageHide"
  352. ></app-goods-timer>
  353. </template>
  354. </view>
  355. </view>
  356. <view class="box-grow-1 dir-top-nowrap main-between">
  357. <view class="box-grow-0 goods-name t-omit-two" v-if="showGoodsName">
  358. <template v-if="sign !== 'advance' && sign !== 'pick'">
  359. <text class="tag" :class="theme + '-color ' + theme + '-border'" v-if="tag && ((sign == 'pintuan' && goods.people_num) || sign != 'pintuan')">
  360. {{goods.people_num ? goods.people_num : ''}}{{tag}}
  361. </text>
  362. </template>
  363. <template v-if="sign === 'pick'">
  364. <text class="dir-tag-def">
  365. {{tag}}
  366. </text>
  367. </template>
  368. <!-- <template v-else>-->
  369. <!-- <text class="dir-tag-def">-->
  370. <!-- {{tag}}-->
  371. <!-- </text>-->
  372. <!-- </template>-->
  373. <text v-if="sign === 'advance'">{{showGoodsName ? goods.goods.goodsWarehouse.name : ''}}</text>
  374. <text v-else>{{showGoodsName ? goods.name : ''}}</text>
  375. </view>
  376. <view v-if="sign === 'advance'">
  377. <text class="des-price" style="margin-left: 24rpx;">
  378. 定金¥{{goods.deposit}}抵¥{{goods.swell_deposit}}
  379. </text>
  380. </view>
  381. <view v-if="sign === 'pick'">
  382. <text class="des-price" style="margin-left: 24rpx;">
  383. {{goods.rule_price}}元选{{goods.rule_num}}{{goods.unit}}
  384. </text>
  385. </view>
  386. <view :class="textStyle == 2 ? 'main-center' : 'dir-left-nowrap'" style="height: 15px;padding-left: 24rpx;" v-if="sign === 'advance' && goods.goods.is_level == 1 && goods.is_negotiable != 1">
  387. <view class="member-price">
  388. <app-member-price :price="goods.level_price"></app-member-price>
  389. </view>
  390. </view>
  391. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" style="padding-left: 24rpx;" :class="textStyle == 2 ? 'main-center' : ''" margin="4rpx 0" v-if="goods.vip_card_appoint.discount > 0 && sign === 'advance'" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  392. <view class="box-grow-0 price dir-left-nowrap cross-center main-between" :style="{marginTop: sign === 'advance' ? '0rpx' : '16rpx'}">
  393. <template v-if="sign === 'advance'">
  394. <view :class="textStyle == 2 ? 'main-center advance-center' : ''" style="width: 100%" v-if="showGoodsPrice">
  395. <view class="dir-top-nowrap main-right cross-top" :class="theme + '-color'">
  396. <text class="t-omit" style="font-size: 22rpx;height: 22rpx; line-height: 22rpx">
  397. {{showGoodsPrice ? `¥${goods.goods.price}` : ''}}
  398. </text>
  399. <text class="original-price" style="font-size: 17rpx;height: 22rpx; line-height: 22rpx" v-if="goods.goods.goodsWarehouse.original_price">
  400. ¥{{goods.goods.goodsWarehouse.original_price}}
  401. </text>
  402. </view>
  403. </view>
  404. </template>
  405. <template v-else>
  406. <view class="box-grow-1" :class="theme + '-color'">
  407. <view class="member-price" :class="textStyle == 2 ? 'main-center' : ''" v-if="goods.is_level == 1 && goods.is_negotiable != 1 && sign !== 'pick'">
  408. <app-member-price :price="goods.level_price"></app-member-price>
  409. </view>
  410. <view :class="textStyle == 2 ? 'main-center' : ''">
  411. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" :margin="textStyle == 2 ? '0':'8rpx 0 0'" v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  412. </view>
  413. <view class="t-omit">
  414. {{showGoodsPrice || sign !== 'goods' ? goods.price_content : ''}}
  415. </view>
  416. <view class="original-price" v-if="goods.original_price && (showGoodsPrice || sign !== 'goods')">
  417. ¥{{goods.original_price}}
  418. </view>
  419. </view>
  420. </template>
  421. <template v-if="showBuyBtn && textStyle !== 2 && goods.is_negotiable != 1 && goods.goods_stock != 0 && goods.goods.goods_stock != 0">
  422. <view @click.stop="buyProduct(goods)"
  423. class="box-grow-0 buy-btn main-center cross-center"
  424. :style="btnStyle"
  425. :class="buyBtnClass" v-if="buyBtn === 'text' || sign !== 'goods'">
  426. {{buyBtnText}}
  427. </view>
  428. <icon @click.stop="buyProduct(goods)"
  429. class="box-grow-0 app-button-icon"
  430. :class="'app-button-icon-' + buyBtn" v-else></icon>
  431. </template>
  432. </view>
  433. </view>
  434. </view>
  435. </template>
  436. <template v-else-if="listStyle === 3">
  437. <!-- 一行三个 -->
  438. <view :style="[{'background-color':`${goodsStyle != 3 ? '#fff' : ''}`}]" class="box-grow-0 dir-top-nowrap goods-item app-column-3" :class="goodsClass"
  439. @click="jump(goods)">
  440. <view class="out-dialog" :style="[{'border-radius': `${imgRadius}`}]" v-if="(goods.goods_stock == 0 || goods.goods.goods_stock == 0) && appSetting.is_show_stock == '1'">
  441. <image :style="[{'border-radius': `${imgRadius}`}]" :src="appSetting.is_use_stock == '1' ? appImg.list_out : appSetting.sell_out_pic" :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"></image>
  442. </view>
  443. <view class="box-grow-0">
  444. <app-image :borderRadius="imgRadius" :img-src="goods.cover_pic" width="100%" height="220rpx"
  445. :mode="fill === 1 ? 'aspectFill' : 'aspectFit'"></app-image>
  446. </view>
  447. <view class="goods-tag" v-if="showGoodsTag">
  448. <app-image :img-src="goodsTagPicUrl" width="64rpx" height="64rpx"></app-image>
  449. </view>
  450. <view class="box-grow-1 dir-top-nowrap main-between">
  451. <view class="box-grow-0 goods-name t-omit-two" v-if="showGoodsName">
  452. {{goods.name}}
  453. </view>
  454. <view class="box-grow-1 dir-top-nowrap main-right">
  455. <view class="box-grow-0 member-price price" :class="textStyle == 2 ? 'main-center' : ''" v-if="goods.is_level == 1 && goods.is_negotiable != 1 && sign !== 'pick'">
  456. <app-member-price :price="goods.level_price"></app-member-price>
  457. </view>
  458. <view :class="textStyle == 2 ? 'main-center' : ''">
  459. <app-sup-vip :is_vip_card_user="goods.vip_card_appoint.is_vip_card_user" :margin="textStyle == 2 ? '0':'8rpx 0 0'" v-if="goods.vip_card_appoint.discount > 0" :discount="goods.vip_card_appoint.discount"></app-sup-vip>
  460. </view>
  461. <view class="box-grow-0 price dir-left-nowrap cross-center main-between">
  462. <view class="box-grow-1" :class="theme + '-color'">
  463. {{showGoodsPrice || sign !== 'goods' ? goods.price_content : ''}}
  464. </view>
  465. <template
  466. v-if="showBuyBtn && textStyle != 2 && buyBtn !== 'text' && goods.is_negotiable != 1 && goods.goods_stock != 0 && goods.goods.goods_stock != 0">
  467. <icon @click.stop="buyProduct(goods)"
  468. class="box-grow-0 app-button-icon"
  469. :class="'app-button-icon-' + buyBtn"></icon>
  470. </template>
  471. </view>
  472. </view>
  473. </view>
  474. </view>
  475. </template>
  476. </block>
  477. </view>
  478. </app-form-id>
  479. </template>
  480. <app-attr :goods="goods" :attrGroupList="goods.attr_groups" :show="attrShow"></app-attr>
  481. </view>
  482. </template>
  483. <script>
  484. import { mapState, mapGetters } from "vuex";
  485. import appPrice from "../../page-component/goods/app-price.vue";
  486. import appGoodsTimer from "./app-goods-timer.vue";
  487. import appAttr from "../../page-component/app-attr/app-attr.vue";
  488. import appMemberPrice from "../app-member-mark/app-member-price.vue";
  489. import appSupVip from '../app-sup-vip/app-sup-vip.vue';
  490. export default {
  491. name: "app-diy-goods-list",
  492. components: {
  493. 'app-price': appPrice,
  494. 'app-goods-timer': appGoodsTimer,
  495. 'app-attr': appAttr,
  496. 'app-member-price': appMemberPrice,
  497. 'app-sup-vip': appSupVip,
  498. },
  499. props: {
  500. catPosition: {
  501. type: String,
  502. default() {
  503. return 'top';
  504. }
  505. },
  506. showCat: {
  507. type: Boolean,
  508. default() {
  509. return false;
  510. }
  511. },
  512. catList: {
  513. type: Array,
  514. default() {
  515. return [];
  516. }
  517. },
  518. catStyle: {
  519. type: Number,
  520. default() {
  521. return 1;
  522. }
  523. },
  524. list: {
  525. type: Array,
  526. default() {
  527. return [];
  528. }
  529. },
  530. goodsStyle: {
  531. type: Number,
  532. default() {
  533. return 1;
  534. }
  535. },
  536. textStyle: {
  537. type: Number,
  538. default() {
  539. return 1;
  540. }
  541. },
  542. listStyle: {
  543. type: Number,
  544. default() {
  545. return -1;
  546. }
  547. },
  548. showBuyBtn: {
  549. type: Boolean,
  550. default() {
  551. return false;
  552. }
  553. },
  554. buyBtn: {
  555. type: String,
  556. default() {
  557. return 'cart';
  558. }
  559. },
  560. buyBtnText: {
  561. type: String,
  562. default() {
  563. return '购买';
  564. }
  565. },
  566. buyBtnStyle: {
  567. type: Number,
  568. default() {
  569. return 1;
  570. }
  571. },
  572. fill: {
  573. type: Number,
  574. default() {
  575. return 1;
  576. }
  577. },
  578. showGoodsName: {
  579. type: Boolean,
  580. default() {
  581. return true;
  582. }
  583. },
  584. showGoodsPrice: {
  585. type: Boolean,
  586. default() {
  587. return true;
  588. }
  589. },
  590. showGoodsTag: {
  591. type: Boolean,
  592. default() {
  593. return true;
  594. }
  595. },
  596. goodsCoverProportion: {
  597. type: String,
  598. default() {
  599. return '1-1';
  600. }
  601. },
  602. customizeGoodsTag: {
  603. type: Boolean,
  604. default() {
  605. return false;
  606. }
  607. },
  608. goodsTagPicUrl: String,
  609. sign: String,
  610. buttonColor: {
  611. type: String,
  612. default() {
  613. return '#ff4544';
  614. }
  615. },
  616. pageHide: Boolean,
  617. },
  618. data() {
  619. return {
  620. activeCurrent: 0,
  621. goods: null,
  622. imgRadius: '16rpx 16rpx 0 0',
  623. lisRadius: '16rpx',
  624. attrShow: 0,
  625. };
  626. },
  627. computed: {
  628. ...mapState({
  629. appImg: state => state.mallConfig.__wxapp_img.mall,
  630. appSetting: state => state.mallConfig.mall.setting,
  631. theme: state => state.mallConfig.theme
  632. }),
  633. ...mapGetters('mallConfig',{
  634. vip: 'getVip',
  635. getVideo: 'getVideo'
  636. }),
  637. newData() {
  638. if (this.showCat) {
  639. return this.catList[this.activeCurrent].goodsList
  640. } else {
  641. return this.list;
  642. }
  643. },
  644. listClass() {
  645. let listClass = ``;
  646. if (this.listStyle === 0) {
  647. return `dir-left-nowrap scroll`;
  648. } else if (this.listStyle === 2) {
  649. return `dir-left-wrap column-2 main-between `;
  650. } else if (this.listStyle === 3) {
  651. return `dir-left-wrap column-3 `;
  652. }
  653. return listClass;
  654. },
  655. buyBtnClass() {
  656. let buyBtnClass = ``;
  657. if (this.buyBtnStyle === 2 || this.buyBtnStyle === 4) {
  658. buyBtnClass += `buy-btn-border `;
  659. }
  660. if (this.buyBtnStyle === 4 || this.buyBtnStyle === 3) {
  661. buyBtnClass += `buy-btn-radius`;
  662. }
  663. return buyBtnClass;
  664. },
  665. btnStyle() {
  666. let btnStyle = ``;
  667. if (this.buyBtnStyle === 1 || this.buyBtnStyle === 3) {
  668. btnStyle += `background-color: ${this.buttonColor};color: #ffffff;`;
  669. } else {
  670. btnStyle += `border-color: ${this.buttonColor};color: ${this.buttonColor};`;
  671. }
  672. return btnStyle;
  673. },
  674. coverPicHeight() {
  675. if (this.goodsCoverProportion === '1-1') {
  676. return `702rpx`;
  677. } else {
  678. return `468rpx`;
  679. }
  680. },
  681. goodsClass() {
  682. let goodsClass = ``;
  683. if (this.goodsStyle === 2) {
  684. goodsClass += `border `;
  685. }
  686. if (this.textStyle === 2) {
  687. goodsClass += `text-center `;
  688. }
  689. return goodsClass;
  690. },
  691. tag() {
  692. let tag = '';
  693. if (this.sign === 'miaosha') {
  694. tag = '秒杀';
  695. } else if (this.sign === 'bargain') {
  696. tag = '砍价';
  697. } else if (this.sign === 'pintuan') {
  698. tag = '人团';
  699. } else if (this.sign === 'advance') {
  700. tag = '预售';
  701. } else if (this.sign === 'pick') {
  702. tag = 'N元任选'
  703. } else {
  704. tag = null;
  705. }
  706. return tag;
  707. },
  708. showTimer() {
  709. if (this.sign === 'miaosha' || this.sign === 'bargain' || this.sign === 'lottery' || this.sign === 'advance') {
  710. return true;
  711. } else {
  712. return false;
  713. }
  714. }
  715. },
  716. methods: {
  717. change(index) {
  718. this.activeCurrent = index;
  719. },
  720. jump(data) {
  721. console.log(data);
  722. // #ifndef MP-BAIDU
  723. if (data.video_url && this.getVideo == 1 && data.sign !== 'lottery' && data.sign !== 'bargain') {
  724. let id = data.id;
  725. if (data.sign === 'advance') {
  726. id = data.goods_id;
  727. }
  728. uni.navigateTo({
  729. url: `/pages/goods/video?goods_id=${id}&sign=${data.sign}`
  730. });
  731. } else {
  732. uni.navigateTo({
  733. url: data.page_url
  734. });
  735. }
  736. // #endif
  737. // #ifdef MP-BAIDU
  738. uni.navigateTo({
  739. url: data.page_url
  740. });
  741. // #endif
  742. },
  743. buyProduct(goods) {
  744. if (!(this.sign == 'goods' || this.sign == 'mch') || (typeof goods.is_negotiable != 'undefined' && goods.is_negotiable == 1)) {
  745. this.jump(goods);
  746. return;
  747. }
  748. uni.showLoading();
  749. let url = this.$api.goods.detail;
  750. if (goods.mch_id > 0) {
  751. url = this.$api.mch.goods_detail;
  752. }
  753. this.$request({
  754. url: url,
  755. data: {
  756. id: goods.id,
  757. mch_id: goods.mch_id,
  758. }
  759. }).then(response => {
  760. uni.hideLoading();
  761. if (response.code === 0) {
  762. if (goods.mch_id > 0) {
  763. this.goods = response.data.detail;
  764. } else {
  765. this.goods = response.data.goods;
  766. }
  767. this.attrShow = Math.random();
  768. } else {
  769. uni.showModal({
  770. title: '提示',
  771. content: response.msg,
  772. showCancel: false
  773. });
  774. }
  775. }).catch(e => {
  776. uni.hideLoading();
  777. });
  778. },
  779. }
  780. }
  781. </script>
  782. <style scoped lang="scss">
  783. .advance-member {
  784. margin-right: #{12rpx};
  785. }
  786. .advance-center .original-price {
  787. width: 100%;
  788. text-align: center;
  789. }
  790. .app-goods-list {
  791. .app-scroll-view {
  792. white-space: nowrap;
  793. width: #{750-5-5rpx};
  794. margin: 0 #{5rpx};
  795. height: #{99-1rpx};
  796. // background-color: #ffffff;
  797. // border-bottom: #{1rpx} solid #e2e2e2;
  798. /* #ifdef MP-ALIPAY */
  799. .app-nav-item {
  800. display: inline-block;
  801. height: #{97rpx};
  802. min-width: #{60rpx};
  803. line-height: #{97rpx};
  804. font-size: #{26rpx};
  805. color: #666666;
  806. margin: 0 #{44rpx};
  807. border-bottom: #{1rpx} solid transparent;
  808. }
  809. /* #endif */
  810. /* #ifndef MP-ALIPAY */
  811. .app-nav-item {
  812. display: inline-block;
  813. height: #{97rpx};
  814. line-height: #{97rpx};
  815. font-size: #{26rpx};
  816. color: #666666;
  817. margin: 0 #{44rpx};
  818. border-bottom: #{1rpx} solid transparent;
  819. }
  820. /* #endif */
  821. .app-active-current {
  822. border-bottom-color: #ff5c5c;
  823. color: #ff5c5c;
  824. }
  825. /* #ifdef MP-ALIPAY */
  826. .app-current-round {
  827. height: #{56rpx};
  828. padding-left: #{24rpx};
  829. min-width: #{100rpx};
  830. padding-right: #{24rpx};
  831. border-radius: #{30rpx};
  832. line-height: #{56rpx};
  833. margin: #{21.5rpx} #{24rpx};
  834. }
  835. /* #endif */
  836. /* #ifndef MP-ALIPAY */
  837. .app-current-round {
  838. height: #{56rpx};
  839. padding-left: #{24rpx};
  840. padding-right: #{24rpx};
  841. border-radius: #{30rpx};
  842. line-height: #{56rpx};
  843. margin: #{21.5rpx} #{24rpx};
  844. }
  845. /* #endif */
  846. .app-active-current-round {
  847. background-color: #ff5c5c;
  848. color: white;
  849. }
  850. }
  851. %background-image {
  852. background-repeat: no-repeat;
  853. background-size: cover;
  854. background-position: center;
  855. }
  856. .goods-list {
  857. padding: #{24rpx};
  858. font-size: $uni-font-size-general-one;
  859. .border {
  860. border: #{1rpx} solid #e2e2e2;
  861. }
  862. .goods-item {
  863. position: relative;
  864. .app-button-icon {
  865. width: #{36rpx};
  866. height: #{36rpx};
  867. display: block;
  868. @extend %background-image;
  869. }
  870. .app-button-icon-cart {
  871. background-image: url('../../../static/image/icon/shopping-cart.png');
  872. }
  873. .app-button-icon-add {
  874. background-image: url('../../../static/image/icon/add-to.png');
  875. }
  876. .buy-btn {
  877. height: #{48rpx};
  878. padding: 0 #{20rpx};
  879. }
  880. .buy-btn-radius {
  881. border-radius: #{24rpx};
  882. }
  883. .buy-btn-border {
  884. border: #{1rpx} solid;
  885. }
  886. .goods-tag {
  887. position: absolute;
  888. left: 0;
  889. top: 0;
  890. z-index: 10;
  891. width: #{64rpx};
  892. height: #{64rpx};
  893. }
  894. .original-price {
  895. font-size: $uni-font-size-weak-two;
  896. color: $uni-general-color-two;
  897. text-decoration: line-through;
  898. }
  899. .tag {
  900. padding: 0 #{10rpx};
  901. margin-right: #{8rpx};
  902. font-size: $uni-font-size-weak-two;
  903. border-radius: #{28rpx};
  904. border: #{2rpx} solid;
  905. }
  906. .timer {
  907. width: 100%;
  908. }
  909. .pintuan-tag {
  910. font-size: $uni-font-size-weak-two;
  911. margin: #{16rpx} #{12rpx} 0 0;
  912. padding: 0 #{24rpx};
  913. .people {
  914. width: #{70rpx};
  915. text-align: center;
  916. border: #{1rpx} solid;
  917. border-radius: #{2rpx};
  918. padding: #{2rpx} 0;
  919. }
  920. }
  921. }
  922. .app-list-mode {
  923. margin-bottom: #{32rpx};
  924. position: relative;
  925. border-radius: #{16rpx};
  926. .right {
  927. padding: #{12rpx} #{24rpx} #{12rpx} #{32rpx};
  928. height: #{200rpx};
  929. }
  930. &:last-child {
  931. margin-bottom: 0;
  932. }
  933. .pintuan-tag {
  934. padding: 0;
  935. }
  936. .out-dialog {
  937. width: #{200rpx};
  938. height: 100%;
  939. position: absolute;
  940. z-index: 10;
  941. top: 0;
  942. left: 0;
  943. background-color: rgba(0,0,0,.5);
  944. image {
  945. width: #{200rpx};
  946. height: #{200rpx};
  947. }
  948. }
  949. }
  950. .app-column-1 {
  951. margin-bottom: #{24rpx};
  952. padding-bottom: #{24rpx};
  953. border-radius: #{16rpx};
  954. .out-dialog {
  955. width: 100%;
  956. height: #{702rpx};
  957. z-index: 10;
  958. position: absolute;
  959. top: 0;
  960. left: 0;
  961. background-color: rgba(0,0,0,.5);
  962. image {
  963. width: #{702rpx};
  964. height: #{702rpx};
  965. }
  966. }
  967. .goods-name {
  968. margin-top: #{28rpx};
  969. padding: 0 #{24rpx};
  970. line-height: 1.4;
  971. }
  972. .price {
  973. margin-top: #{16rpx};
  974. padding: 0 #{24rpx};
  975. max-width: #{702rpx};
  976. .member-price {
  977. margin-left: #{10rpx};
  978. }
  979. }
  980. .timer {
  981. position: absolute;
  982. left: 0;
  983. bottom: 0;
  984. z-index: 10;
  985. }
  986. .pintuan-tag {
  987. margin: 0;
  988. padding-left: 0;
  989. }
  990. }
  991. &.scroll {
  992. overflow-x: auto;
  993. padding: #{24rpx};
  994. .app-scroll {
  995. border-radius: #{16rpx};
  996. margin-right: #{16rpx};
  997. padding-bottom: #{16rpx};
  998. width: #{200rpx};
  999. position: relative;
  1000. .out-dialog {
  1001. width: 100%;
  1002. height: #{200rpx};
  1003. z-index: 10;
  1004. position: absolute;
  1005. top: 0;
  1006. left: 0;
  1007. background-color: rgba(0,0,0,.5);
  1008. image {
  1009. width: #{200rpx};
  1010. height: #{200rpx};
  1011. }
  1012. }
  1013. .goods-name {
  1014. margin-top: #{16rpx};
  1015. width: #{200rpx};
  1016. line-height: 1.4;
  1017. }
  1018. .price {
  1019. padding: 0 #{12rpx};
  1020. max-width: #{200rpx};
  1021. }
  1022. }
  1023. }
  1024. &.column-2 {
  1025. padding: #{24rpx} #{23rpx} 0 #{23rpx};
  1026. .app-column-2 {
  1027. margin-bottom: #{24rpx};
  1028. padding-bottom: #{24rpx};
  1029. border-radius: #{16rpx};
  1030. width: #{346rpx};
  1031. .out-dialog {
  1032. width: 100%;
  1033. height: #{342rpx};
  1034. position: absolute;
  1035. z-index: 10;
  1036. top: 0;
  1037. left: 0;
  1038. background-color: rgba(0,0,0,.5);
  1039. image {
  1040. width: #{342rpx};
  1041. height: #{342rpx};
  1042. }
  1043. }
  1044. .goods-name {
  1045. margin-top: #{24rpx};
  1046. padding: 0 #{24rpx};
  1047. width: #{344rpx};
  1048. line-height: 1.4;
  1049. }
  1050. .price {
  1051. margin-top: #{16rpx};
  1052. padding: 0 #{24rpx};
  1053. max-width: #{344rpx};
  1054. }
  1055. .pintuan-tag ~ .price {
  1056. margin-top: #{16rpx};
  1057. }
  1058. .timer {
  1059. position: absolute;
  1060. left: 0;
  1061. bottom: 0;
  1062. z-index: 10;
  1063. }
  1064. }
  1065. }
  1066. &.column-3 {
  1067. padding: #{8rpx} #{24rpx} #{24rpx} #{24rpx};
  1068. .app-column-3 {
  1069. margin-top: #{16rpx};
  1070. border-radius: #{16rpx};
  1071. padding-bottom: #{16rpx};
  1072. width: #{224rpx};
  1073. .out-dialog {
  1074. width: 100%;
  1075. height: #{220rpx};
  1076. position: absolute;
  1077. z-index: 10;
  1078. top: 0;
  1079. z-index: 10;
  1080. left: 0;
  1081. background-color: rgba(0,0,0,.5);
  1082. image {
  1083. width: #{220rpx};
  1084. height: #{220rpx};
  1085. }
  1086. }
  1087. &:nth-child(3n+2) {
  1088. margin-right: #{15rpx};
  1089. margin-left: #{15rpx};
  1090. }
  1091. .goods-name {
  1092. padding: 0 #{12rpx};
  1093. width: #{224rpx};
  1094. line-height: 1.4;
  1095. }
  1096. .price {
  1097. padding: 0 #{12rpx};
  1098. max-width: #{222rpx};
  1099. }
  1100. }
  1101. }
  1102. }
  1103. }
  1104. .des-price {
  1105. display: inline-block;
  1106. padding: #{4rpx 4rpx};
  1107. border: #{1rpx} solid #ff4544;
  1108. border-radius: #{8rpx};
  1109. font-size: #{20rpx};
  1110. color: #ff4544;
  1111. line-height: 1;
  1112. }
  1113. .dir-tag-def {
  1114. padding: 0 #{10rpx};
  1115. margin-right: #{8rpx};
  1116. font-size: $uni-font-size-weak-two;
  1117. border-radius: #{28rpx};
  1118. background-color: #feeeee;
  1119. color: #ff4544
  1120. }
  1121. .seheight {
  1122. height: #{110rpx};
  1123. width: #{430rpx};
  1124. }
  1125. .tag-pick {
  1126. padding: 0 #{10rpx};
  1127. margin-right: #{8rpx};
  1128. font-size: $uni-font-size-weak-two;
  1129. border-radius: #{28rpx};
  1130. background-color: #feeeee;
  1131. color: #ff4d4c;
  1132. }
  1133. </style>