goodDetails.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  1. <template>
  2. <view class="container">
  3. <swiper class="swiper" :style="{width: swiperHeight+'px', height: swiperHeight+'px'}" :indicator-dots="true" indicator-color="#9A9A9A" indicator-active-color="#52A63A" :autoplay="true"
  4. :interval="3000" :duration="500">
  5. <swiper-item v-for="(item,index) in goodData.imgs" :key="index">
  6. <image :src="item.imgPath" mode="aspectFill" style="width: 100%;height: 100%;"></image>
  7. </swiper-item>
  8. </swiper>
  9. <view class="good-info">
  10. <view class="auction-date" v-if="goodData.productType == 2">
  11. <text class="iconfont iconshijian"></text>
  12. {{goodData.auctionEndTime}}结束
  13. </view>
  14. <view class="good-price">
  15. <view class="auction-unit" v-if="goodData.productType == 2 || goodData.productType == 4">
  16. <view class="unit-type">RMB</view>
  17. <view class="unit-text">当前价</view>
  18. </view>
  19. <text class="sale-icon">¥</text>
  20. <text class="sale-price">{{ goodData.productType == 2 ? currentPrice : goodData.bizPrice }}</text>
  21. <text class="price" v-if="goodData.productType != 2">原价:{{goodData.originalPrice}}</text>
  22. <text class="seller-count" v-if="goodData.productType != 2 && goodData.productType != 4">{{goodData.sellCount}}人付款</text>
  23. <text class="good-stock" v-if="goodData.productType == 2">仅限{{goodData.stock}}份</text>
  24. </view>
  25. <view class="good-name">{{goodData.productName}}</view>
  26. <view class="good-plant" v-if="goodData.productType == 4">时长:{{goodData.term}}天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面积:{{goodData.areaSize}}平米</view>
  27. <view class="good-detail">{{goodData.productDescribe ? goodData.productDescribe : '暂无描述'}}</view>
  28. </view>
  29. <view class="good-data" v-if="goodData.productType != 2 && goodData.productType != 4">
  30. <text class="good-select">商品规格</text>
  31. <!-- <text class="good-unit">{{number}}&nbsp;{{goodData.unit ? goodData.unit : ''}}</text> -->
  32. <text class="good-unit">{{goodData.unit ? goodData.unit : ''}}</text>
  33. <!-- <text class="iconfont iconfangxiang"></text>
  34. -->
  35. </view>
  36. <view class="buy-num" v-if="goodData.productType != 2 && !minePlant">
  37. <view class="buy-text">购买数量:</view>
  38. <!-- <view style="display: flex;">
  39. <uni-icons type="minus-filled" size="20" color="#A67A54" @click="number>1?number--:''"></uni-icons>
  40. <text class="buy-select">{{number}}</text>
  41. <u-input
  42. v-model="number"
  43. type="number"
  44. height="40"
  45. placeholder=" "
  46. :clearable="false"
  47. input-align="center"
  48. :custom-style="{width:'40px'}"/>
  49. <uni-icons type="plus-filled" size="20" color="#A67A54" @click="number++"></uni-icons>
  50. </view> -->
  51. <view>
  52. <CnumberBox @getNum="getNum" :isDisabled="true" minNum="1"></CnumberBox>
  53. </view>
  54. </view>
  55. <view class="tab-box">
  56. <view class="tab-col" :class="tabIndex == 1 ? 'tab-col-active' :''" @click="tabIndex = 1">产品介绍</view>
  57. <view class="tab-col" :class="tabIndex == 2 ? 'tab-col-active' :''" v-if="goodData.productType != 2 && goodData.productType != 4 "
  58. @click="tabIndex = 2">用户评价</view>
  59. </view>
  60. <rich-text :nodes="goodData.sellDesc" v-if="tabIndex == 1"></rich-text>
  61. <view class="good-assess" v-else>
  62. <view class="assess-row" v-for="(item,index) in assessList" :key="index">
  63. <image class="assess-head" :src="item.headimg"></image>
  64. <view class="assess-info">
  65. <view class="assess-name">{{item.nickname}}</view>
  66. <view class="assess-date">{{item.evaluateTime}}</view>
  67. <view class="assess-sore-box">
  68. <u-rate v-model="item.score" active-color="#FFAE21" disabled></u-rate>
  69. </view>
  70. <view class="assess-text">{{item.evaluateContent}}</view>
  71. <view class="assess-img-box">
  72. <image class="img-col" v-for="site in item.evaluateImgs" :key="site" :src="site.imgUrl" @tap="_previewImage(site.imgUrl,i)"></image>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="assess-more" @click="goToEvaluate()">显示全部</view>
  77. </view>
  78. <view class="good-recommend">
  79. <view class="recommend-title">为您推荐</view>
  80. <scroll-view class="recommend-box" scroll-x="true">
  81. <view class="good-col" v-for="(item, index) in goodsList" :key="index" @click="goToGoodDetails(item)">
  82. <image class="good-img" :src="item.imgPath" mode="aspectFill"></image>
  83. <view class="good-name">{{item.productName}}</view>
  84. <view class="good-price">¥{{item.bizPrice}}</view>
  85. </view>
  86. </scroll-view>
  87. </view>
  88. <uni-goods-nav :fill="true" :options="goodData.productType == 4 ? [] : options" @click="goToShop" @buttonClick="showPopup"
  89. style="width: 100%; position: fixed; bottom: 0px;" :buttonGroup="goodData.productType == 2 ? buttonGroup2 : (goodData.productType == 4 ? (minePlant ? buttonGroup4 : buttonGroup3) : buttonGroup1)" />
  90. <!-- <uni-popup ref="popup" type="bottom">
  91. <view class="popup-box">
  92. <view class="popup-good-info-box">
  93. <image mode="aspectFill" class="popup-good-img" v-if="goodData.imgs.length" :src="goodData.imgs[0].imgPath"></image>
  94. <view class="popup-good-data">
  95. <view class="popup-good-price"><text style="font-size: 14px;">¥</text>{{goodData.bizPrice}}</view>
  96. <view class="popup-good-number">库存{{goodData.stock}}件</view>
  97. <view class="popup-good-type">单位:{{goodData.unit}}</view>
  98. </view>
  99. <view class="popup-good-close"></view>
  100. </view>
  101. <view class="popup-good-info">数量</view>
  102. <view class="popup-good-number-box">
  103. <uni-icons type="minus-filled" size="20" color="#A67A54" @click="number>1?number--:''"></uni-icons>
  104. <text class="good-select">{{number}}</text>
  105. <uni-icons type="plus-filled" size="20" color="#A67A54" @click="number++"></uni-icons>
  106. </view>
  107. <uni-goods-nav :fill="true" :options="[]" :buttonGroup="buttonGroup1" @buttonClick="submitData" style="width: 100%; position: absolute; bottom: 0px;left:0px" />
  108. </view>
  109. </uni-popup> -->
  110. <u-top-tips ref="uTips"></u-top-tips>
  111. </view>
  112. </template>
  113. <script>
  114. const NET = require('@/utils/request')
  115. const API = require('@/config/api')
  116. import CnumberBox from '@/components/CnumberBox.vue'
  117. export default {
  118. components: {
  119. CnumberBox
  120. },
  121. data() {
  122. return {
  123. // 从我的种植进入minePlant为true
  124. swiperHeight: 375,
  125. minePlant: false,
  126. goodId: '',
  127. goodData: {
  128. bizPrice: '',
  129. auctionStartPrice: '',
  130. originalPrice: '',
  131. productType: '',
  132. sellCount: '',
  133. productName: '',
  134. productDescribe: '',
  135. unit: '',
  136. sellDesc: '',
  137. stock: '',
  138. auctionEndTime: '',
  139. term: '',
  140. areaSize: '',
  141. imgs: [],
  142. },
  143. orderId: '',
  144. currentPrice: '',
  145. assessList: [],
  146. goodsList: [],
  147. number: 1,
  148. tabIndex: 1,
  149. options: [{
  150. icon: 'shop',
  151. text: '店铺',
  152. },{
  153. icon: 'cart',
  154. text: '购物车',
  155. info: 0,
  156. infoBackgroundColor: '#52A63A',
  157. infoColor:""
  158. }],
  159. buttonGroup1: [{
  160. text: '加入购物车',
  161. backgroundColor: '#75BD60',
  162. color: '#fff'
  163. },
  164. {
  165. text: '立即购买',
  166. backgroundColor: '#52A63A',
  167. color: '#fff'
  168. }
  169. ],
  170. buttonGroup2: [{
  171. text: '立即参拍',
  172. backgroundColor: '#52A63A',
  173. color: '#fff'
  174. }],
  175. buttonGroup3: [{
  176. text: '立即购买',
  177. backgroundColor: '#52A63A',
  178. color: '#fff'
  179. }],
  180. buttonGroup4: [{
  181. text: '视察',
  182. backgroundColor: '#75BD60',
  183. color: '#fff'
  184. }, {
  185. text: '委托',
  186. backgroundColor: '#52A63A',
  187. color: '#fff'
  188. }],
  189. }
  190. },
  191. onLoad(options) {
  192. this.goodId = options.goodId ? options.goodId : ''
  193. this.minePlant = options.minePlant ? options.minePlant : false
  194. this.orderId = options.orderId ? options.orderId : ''
  195. uni.getSystemInfo({
  196. success: (res) => {
  197. this.swiperHeight = res.windowWidth
  198. }
  199. })
  200. if (this.minePlant) {
  201. uni.setNavigationBarTitle({
  202. title:'我的种植'
  203. })
  204. } else {
  205. uni.setNavigationBarTitle({
  206. title:'商品详情'
  207. })
  208. }
  209. },
  210. onReady() {
  211. this.getGoodsList()
  212. this.getGoodDetail()
  213. },
  214. methods: {
  215. // 获取商品详情获取商品评价
  216. getGoodDetail() {
  217. if (this.goodId) {
  218. NET.request(API.getCommonGoodDetail + '/' + this.goodId, {}, 'GET').then(res => {
  219. this.goodData = res.data
  220. if (this.goodData.cartNum > 0) {
  221. this.options[1].info = this.goodData.cartNum
  222. }
  223. if(this.goodData.sellDesc) this.goodData.sellDesc = this.goodData.sellDesc.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"')
  224. if (this.goodData.productType == 2) {
  225. this.getAuctionData()
  226. }
  227. }).catch(res => {
  228. this.$refs.uTips.show({
  229. title: '获取商品详情失败',
  230. type: 'warning',
  231. })
  232. })
  233. NET.request(API.getAssessList + this.goodId + '/1/3', {}, 'GET').then(res => {
  234. this.assessList = res.data.list
  235. }).catch(res => {
  236. this.$refs.uTips.show({
  237. title: '获取商品评价失败',
  238. type: 'warning',
  239. })
  240. })
  241. }
  242. },
  243. // 获取子组件的购买数量
  244. getNum(num) {
  245. this.number = num
  246. },
  247. // 获取拍卖详情
  248. getAuctionData() {
  249. NET.request(API.getAuctionDetail + this.goodId, {}, 'GET').then(res => {
  250. this.currentPrice = res.data.auctionStartPrice
  251. }).catch(error => {
  252. this.$refs.uTips.show({
  253. title: error.data.msg,
  254. type: 'warning',
  255. })
  256. })
  257. },
  258. // 跳转商铺页
  259. goToShop(e) {
  260. if (e.index == 0) {
  261. uni.navigateTo({
  262. url: '/pagesGood/shopDetails?goodId=' + this.goodId
  263. });
  264. } else {
  265. uni.switchTab({
  266. url: '/pages/cart/cart'
  267. });
  268. }
  269. },
  270. // 图片预览
  271. _previewImage(image,index) {
  272. var imgArr = [];
  273. imgArr.push(image);
  274. //预览图片
  275. uni.previewImage({
  276. urls: imgArr,
  277. current: imgArr[index]
  278. });
  279. },
  280. // 跳转评价页
  281. goToEvaluate() {
  282. uni.navigateTo({
  283. url: '/pagesGood/evaluateList?goodId=' + this.goodId
  284. });
  285. },
  286. // 获取为你推荐
  287. getGoodsList() {
  288. NET.request(API.getPreferGoods, {}, 'GET').then(res => {
  289. this.goodsList = res.data
  290. }).catch(error => {
  291. this.$refs.uTips.show({
  292. title: '获取为您推荐列表失败',
  293. type: 'warning',
  294. })
  295. })
  296. },
  297. // 跳转为你推荐商品详情
  298. goToGoodDetails(item) {
  299. uni.navigateTo({
  300. url: '/pagesGood/goodDetails?goodId=' + item.productId + '&goodType=' + item.productType
  301. });
  302. },
  303. // 弹出购物弹窗->需求变更,不需要购物车弹窗,直接加入购物车
  304. showPopup(e) {
  305. uni.removeStorageSync('defaultAddress');
  306. this.setGoodStorage()
  307. if (this.goodData.productType == 2) {
  308. //拍卖商品
  309. uni.navigateTo({
  310. url: '/pagesGood/auctionDetail?goodId=' + this.goodId
  311. });
  312. } else if (this.goodData.productType == 4) {
  313. //共享种植商品
  314. if (this.minePlant) {
  315. // 如果是已买到的共享种植
  316. if (e.index == 0) {
  317. // 去视察
  318. uni.navigateTo({
  319. url: '/pagesGood/plantVideo?productId=' + this.goodId
  320. });
  321. } else {
  322. // 去委托种植
  323. uni.navigateTo({
  324. url: '/pagesMain/entrustList?productId=' + this.goodData.productId + '&tenantCode=' + this.goodData.tenantCode +
  325. '&productName=' + this.goodData.productName + '&areaSize=' + this.orderId + '&orderId=' + this.orderId
  326. });
  327. }
  328. } else {
  329. // if (e.index == 0) {
  330. // this.$refs.popup.open()
  331. // } else if (e.index == 1) {
  332. uni.navigateTo({
  333. url: '/pagesGood/orderPay?flag=2&orderType=3&paySum=' + this.goodData.bizPrice
  334. });
  335. // }
  336. }
  337. } else {
  338. // 需求变更,不需要购物车弹窗,直接加入购物车
  339. // this.$refs.popup.open()
  340. if (e.index == 0) {
  341. NET.request(API.addCart, {
  342. productId: this.goodId,
  343. productName: this.goodData.productName,
  344. imgUrl: this.goodData.imgs.length ? this.goodData.imgs[0].imgPath : '',
  345. bizPrice: this.goodData.bizPrice,
  346. originalPrice: this.goodData.originalPrice,
  347. productType: this.goodData.productType,
  348. tenantCode: this.goodData.tenantCode,
  349. buyNum: this.number
  350. }, 'POST').then(res => {
  351. this.$refs.uTips.show({
  352. title: '加入购物车成功',
  353. type: 'success',
  354. })
  355. // this.$refs.popup.close()
  356. this.getGoodDetail()
  357. }).catch(error => {
  358. console.log(error)
  359. this.$refs.uTips.show({
  360. title: '加入购物车失败',
  361. type: 'warning',
  362. })
  363. })
  364. } else {
  365. // 立即购买
  366. this.setGoodStorage()
  367. uni.navigateTo({
  368. url: '/pagesGood/orderPay?flag=2&orderType=1'
  369. });
  370. }
  371. }
  372. },
  373. // 存入商品信息缓存
  374. setGoodStorage() {
  375. uni.setStorage({
  376. key: 'orderData',
  377. data: {
  378. tenantCode: this.goodData.tenantCode,
  379. supplierName: this.goodData.supplierName,
  380. areaSize: this.goodData.productType == 4 ? this.goodData.areaSize : '',
  381. term: this.goodData.productType == 4 ? this.goodData.term : '',
  382. goodsList: [{
  383. bizPrice: this.goodData.bizPrice,
  384. buyNum: this.number,
  385. imgUrl: this.goodData.imgs.length ? this.goodData.imgs[0].imgPath : '',
  386. originalPrice: this.goodData.productType == 2 ? this.goodData.auctionStartPrice : this.goodData.originalPrice,
  387. productId: this.goodId,
  388. productName: this.goodData.productName,
  389. productType: this.goodData.productType,
  390. shoppingcartId: '',
  391. }]
  392. }
  393. });
  394. },
  395. // 提交操作
  396. submitData(e) {
  397. // if (e.index) {
  398. // // 立即购买
  399. // this.setGoodStorage()
  400. // uni.navigateTo({
  401. // url: '/pagesGood/orderPay?flag=2&orderType=1'
  402. // });
  403. // } else {
  404. // // 加入购物车
  405. // NET.request(API.addCart, {
  406. // productId: this.goodId,
  407. // productName: this.goodData.productName,
  408. // imgUrl: this.goodData.imgs.length ? this.goodData.imgs[0].imgPath : '',
  409. // bizPrice: this.goodData.bizPrice,
  410. // originalPrice: this.goodData.originalPrice,
  411. // productType: this.goodData.productType,
  412. // tenantCode: this.goodData.tenantCode,
  413. // buyNum: this.number
  414. // }, 'POST').then(res => {
  415. // this.$refs.uTips.show({
  416. // title: '加入购物车成功',
  417. // type: 'success',
  418. // })
  419. // this.$refs.popup.close()
  420. // }).catch(error => {
  421. // this.$refs.uTips.show({
  422. // title: '加入购物车失败',
  423. // type: 'warning',
  424. // })
  425. // })
  426. // }
  427. },
  428. },
  429. }
  430. </script>
  431. <style lang="less">
  432. .swiper {
  433. /deep/.uni-swiper-dot-active {
  434. width: 16px !important;
  435. border-radius: 8px;
  436. }
  437. }
  438. </style>
  439. <style lang="less" scoped>
  440. .container {
  441. background-color: #f7f7f7;
  442. padding-bottom: 50px;
  443. .swiper {
  444. // height: 375px;
  445. /deep/.uni-swiper-dot-active {
  446. width: 16px !important;
  447. border-radius: 8px;
  448. }
  449. }
  450. .good-info {
  451. box-sizing: border-box;
  452. padding: 0px 16px 22px 16px;
  453. background-color: #FFFFFF;
  454. .auction-date {
  455. width: calc(100% + 32px);
  456. height: 32px;
  457. box-sizing: border-box;
  458. padding: 0 16px;
  459. margin-left: -16px;
  460. background: #999999;
  461. line-height: 32px;
  462. font-size: 12px;
  463. font-family: PingFang SC;
  464. color: #FFFFFF;
  465. .iconshijian {
  466. font-size: 16px;
  467. margin-right: 8px;
  468. }
  469. }
  470. .good-price {
  471. height: 26px;
  472. padding-top: 22px;
  473. box-sizing: content-box;
  474. line-height: 26px;
  475. font-family: PingFang SC;
  476. white-space: nowrap;
  477. .auction-unit {
  478. width: 40px;
  479. height: 26px;
  480. float: left;
  481. .unit-type {
  482. height: 12px;
  483. font-size: 9px;
  484. font-family: PingFang SC;
  485. color: #666666;
  486. line-height: 9px;
  487. }
  488. .unit-text {
  489. height: 12px;
  490. font-size: 9px;
  491. font-family: PingFang SC;
  492. color: #52A63A;
  493. line-height: 12px;
  494. }
  495. }
  496. .sale-icon {
  497. font-size: 16px;
  498. color: #52A63A;
  499. margin-left: -2px;
  500. }
  501. .sale-price {
  502. font-size: 24px;
  503. color: #52A63A;
  504. }
  505. .price {
  506. font-size: 12px;
  507. text-decoration: line-through;
  508. color: #A67A54;
  509. margin-left: 6px;
  510. }
  511. .seller-count {
  512. float: right;
  513. font-size: 12px;
  514. color: #666666;
  515. }
  516. .good-stock {
  517. float: right;
  518. font-size: 12px;
  519. color: #A67954;
  520. }
  521. }
  522. .good-name {
  523. line-height: 20px;
  524. font-size: 16px;
  525. color: #343434;
  526. font-family: PingFang SC;
  527. margin: 12px 0 8px 0;
  528. }
  529. .good-plant {
  530. line-height: 14px;
  531. font-size: 12px;
  532. color: #000000;
  533. font-family: PingFang SC;
  534. margin-bottom: 4px;
  535. }
  536. .good-detail {
  537. line-height: 16px;
  538. font-size: 12px;
  539. color: #666666;
  540. font-family: PingFang SC;
  541. }
  542. }
  543. .good-data {
  544. display: flex;
  545. justify-content: space-between;
  546. height: 46px;
  547. margin-top: 10px;
  548. box-sizing: border-box;
  549. background-color: #FFFFFF;
  550. padding: 14px 16px;
  551. font-family: PingFang SC;
  552. font-size: 12px;
  553. line-height: 14px;
  554. .good-select {
  555. color: #666666;
  556. margin-right: 12px;
  557. }
  558. .good-unit {
  559. color: #343434;
  560. }
  561. .iconfont {
  562. float: right;
  563. font-size: 16px;
  564. color: #999999;
  565. }
  566. }
  567. .buy-num {
  568. display: flex;
  569. justify-content: space-between;
  570. height: 46px;
  571. margin-top: 10px;
  572. box-sizing: border-box;
  573. background-color: #FFFFFF;
  574. padding: 14px 16px;
  575. font-family: PingFang SC;
  576. // font-size: 12px;
  577. // line-height: 14px;
  578. .buy-text {
  579. margin-right: 10px;
  580. }
  581. .buy-select {
  582. font-size: 16px;
  583. font-family: PingFang SC;
  584. color: #343434;
  585. margin: 0 12px;
  586. line-height: 20px;
  587. margin-right: 10px;
  588. }
  589. }
  590. .tab-box {
  591. height: 50px;
  592. background-color: #FFFFFF;
  593. box-sizing: border-box;
  594. padding: 0 16px;
  595. display: flex;
  596. justify-content: space-around;
  597. margin-top: 10px;
  598. .tab-col {
  599. height: 49px;
  600. font-size: 13px;
  601. font-family: PingFang SC;
  602. color: #666666;
  603. line-height: 50px;
  604. }
  605. .tab-col-active {
  606. font-size: 15px;
  607. color: #343434;
  608. border-bottom: 2px solid #52A63A;
  609. }
  610. }
  611. .good-assess {
  612. width: 100%;
  613. box-sizing: border-box;
  614. background-color: #FFFFFF;
  615. padding: 12px 16px 18px 16px;
  616. .assess-row {
  617. border-top: 1px solid #F6F6F6;
  618. padding: 12px 0;
  619. display: flex;
  620. .assess-head {
  621. width: 50px;
  622. height: 50px;
  623. object-fit: cover;
  624. border-radius: 50%;
  625. }
  626. .assess-info {
  627. width: calc(100% - 62px);
  628. margin-left: 12px;
  629. .assess-name {
  630. height: 18px;
  631. float: left;
  632. line-height: 18px;
  633. font-size: 15px;
  634. font-family: PingFang SC;
  635. font-weight: bold;
  636. color: #343434;
  637. }
  638. .assess-date {
  639. height: 18px;
  640. float: right;
  641. line-height: 18px;
  642. font-size: 12px;
  643. font-family: PingFang SC;
  644. font-weight: bold;
  645. color: #666666;
  646. }
  647. .assess-sore-box {
  648. width: 100%;
  649. height: 16px;
  650. float: left;
  651. margin: 6px 0;
  652. }
  653. .assess-text {
  654. width: 100%;
  655. float: left;
  656. font-size: 12px;
  657. font-family: PingFang SC;
  658. font-weight: bold;
  659. color: #666666;
  660. line-height: 16px;
  661. margin: 8px 0 10px 0;
  662. overflow: hidden;
  663. text-overflow: ellipsis;
  664. display: -webkit-box;
  665. -webkit-line-clamp: 2;
  666. -webkit-box-orient: vertical;
  667. word-wrap: break-word;
  668. }
  669. .assess-img-box {
  670. width: 100%;
  671. float: left;
  672. display: flex;
  673. .img-col {
  674. height: 60px;
  675. width: 60px;
  676. object-fit: cover;
  677. margin: 0 10px 10px 0;
  678. }
  679. }
  680. }
  681. }
  682. .assess-row:first-child {
  683. border-top: none;
  684. padding-top: 0;
  685. }
  686. .assess-more {
  687. width: 220px;
  688. height: 32px;
  689. position: relative;
  690. left: 50%;
  691. transform: translateX(-50%);
  692. border: 1px solid #52A63A;
  693. border-radius: 16px;
  694. text-align: center;
  695. font-size: 12px;
  696. font-family: PingFang SC;
  697. color: #53A63A;
  698. line-height: 32px;
  699. }
  700. }
  701. .good-recommend {
  702. height: 192px;
  703. background-color: #FFFFFF;
  704. margin: 10px 0;
  705. .recommend-title {
  706. height: 24px;
  707. padding-left: 16px;
  708. font-size: 14px;
  709. font-family: PingFang SC;
  710. color: #343434;
  711. line-height: 32px;
  712. }
  713. .recommend-box {
  714. width: 100%;
  715. height: 168px;
  716. white-space: nowrap;
  717. .good-col {
  718. width: 108px;
  719. height: 158px;
  720. margin: 10px 12px 10px 0px;
  721. border-radius: 5px;
  722. overflow: hidden;
  723. background: #FFFFFF;
  724. box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.15);
  725. display: inline-block;
  726. .good-img {
  727. width: 108px;
  728. height: 108px;
  729. object-fit: cover;
  730. }
  731. .good-name {
  732. width: 100%;
  733. height: 14px;
  734. float: left;
  735. box-sizing: border-box;
  736. padding: 0 5px;
  737. font-size: 10px;
  738. font-family: PingFang SC;
  739. color: #343434;
  740. line-height: 14px;
  741. margin: 4px 0;
  742. white-space: nowrap;
  743. overflow: hidden;
  744. text-overflow: ellipsis;
  745. }
  746. .good-price {
  747. width: 100%;
  748. height: 16px;
  749. float: left;
  750. box-sizing: border-box;
  751. padding: 0 3px;
  752. font-size: 14px;
  753. font-family: PingFang SC;
  754. color: #56a83a;
  755. line-height: 16px;
  756. margin-bottom: 10px
  757. }
  758. }
  759. .good-col:first-child {
  760. margin-left: 16px;
  761. }
  762. .good-col:last-child {
  763. margin-right: 16px;
  764. }
  765. }
  766. }
  767. .popup-box {
  768. width: 100vw;
  769. height: 362px;
  770. background-color: #FFFFFF;
  771. border-radius: 15px 15px 0px 0px;
  772. box-sizing: border-box;
  773. padding: 16px 16px 0 16px;
  774. .popup-good-info-box {
  775. height: 90px;
  776. margin-bottom: 4px;
  777. display: flex;
  778. .popup-good-img {
  779. width: 90px;
  780. height: 90px;
  781. object-fit: cover;
  782. border-radius: 5px;
  783. overflow: hidden;
  784. }
  785. .popup-good-data {
  786. width: calc(100% - 136px);
  787. height: 90px;
  788. margin-left: 22px;
  789. .popup-good-price {
  790. margin-top: 10px;
  791. height: 20px;
  792. line-height: 20px;
  793. font-size: 20px;
  794. font-family: PingFang SC;
  795. color: #52A63A;
  796. }
  797. .popup-good-number {
  798. height: 16px;
  799. font-size: 13px;
  800. font-family: PingFang SC;
  801. color: #9A9A9A;
  802. line-height: 16px;
  803. margin: 12px 0 10px 0;
  804. }
  805. .popup-good-type {
  806. height: 16px;
  807. font-size: 13px;
  808. font-family: PingFang SC;
  809. color: #343434;
  810. line-height: 16px;
  811. }
  812. }
  813. .popup-good-close {
  814. width: 24px;
  815. height: 24px;
  816. }
  817. }
  818. .popup-good-info {
  819. height: 33px;
  820. box-sizing: border-box;
  821. padding-top: 16px;
  822. margin-top: 16px;
  823. border-top: 1px solid #ECECEC;
  824. font-size: 14px;
  825. font-family: PingFang SC;
  826. color: #9A9A9A;
  827. line-height: 16px;
  828. }
  829. .popup-good-unit {
  830. height: 28px;
  831. display: inline-block;
  832. padding: 0 22px;
  833. margin-top: 14px;
  834. background: #52A63A;
  835. border-radius: 14px;
  836. font-size: 14px;
  837. font-family: PingFang SC;
  838. color: #FFFFFF;
  839. line-height: 28px;
  840. }
  841. .popup-good-number-box {
  842. height: 20px;
  843. float: right;
  844. margin-top: -20px;
  845. .good-select {
  846. font-size: 16px;
  847. font-family: PingFang SC;
  848. color: #343434;
  849. margin: 0 12px;
  850. line-height: 20px;
  851. }
  852. }
  853. }
  854. }
  855. </style>