detail.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198
  1. <template>
  2. <!--采购详情-->
  3. <view class="container">
  4. <view class="back-btn cuIcon-back" @click="navBack"></view>
  5. <view class='title1'>采购详情</view>
  6. <image style='width:100%;' src='../../static/img/jiaoyi/bg@3x.png'></image>
  7. <view class="introduce-section">
  8. <view style='height:70px;'>
  9. <view class="title">{{goods.title}}</view>
  10. <view class='flex justify-between'>
  11. <view style='flex:1.5;color:#878C9C;'>{{goods.receivePrivate}}{{goods.receiveCity}}{{goods.receiveArea}}{{goods.receiveWarehouse}}</view>
  12. <view v-if='goods.procurementPlanType=="现货"' class="title-tip">
  13. {{goods.procurementPrice}}
  14. </view>
  15. <view style='text-align:right;' v-else class="title-tip">
  16. {{goods.basisPrice}}
  17. </view>
  18. </view>
  19. <view style='text-align:right;' v-if='goods.procurementPlanType=="现货"'>采购价格</view>
  20. <view style='text-align:right;' v-if='goods.procurementPlanType=="期货"'>今日基差</view>
  21. </view>
  22. </view>
  23. <view v-if="goods.storeImg" class="carousel-section">
  24. <swiper autoplay="true" interval="3000" duration="500" class="carousel" circular @change="swiperChange">
  25. <swiper-item key="0" class="carousel-item">
  26. <image :src="goods.storeImg" @tap="ViewImage(goods.storeImg)"/>
  27. </swiper-item>
  28. <swiper-item key="1" class="carousel-item">
  29. <image :src="goods.foodsImg" @tap="ViewImage(goods.foodsImg)"/>
  30. </swiper-item>
  31. <swiper-item key="2" class="carousel-item">
  32. <image :src="goods.carImg" @tap="ViewImage(goods.carImg)"/>
  33. </swiper-item>
  34. </swiper>
  35. <view class="swiper-dots">
  36. <text class="num">{{swiperCurrent+1}}</text>
  37. <text class="sign">/</text>
  38. <text class="num">{{swiperLength}}</text>
  39. </view>
  40. </view>
  41. <view class="detail-desc">
  42. <view class="d-header">
  43. <text>基本信息</text>
  44. </view>
  45. <view class="c-list">
  46. <view class="c-row">
  47. <text class="tit">货名</text>
  48. <view class="con-list">
  49. <text>{{goods.goodsName}}</text>
  50. </view>
  51. </view>
  52. <view class="c-row">
  53. <text class="tit">采购量(吨)</text>
  54. <view class="con-list">
  55. <text>{{goods.plannedPurchaseVolume}}</text>
  56. </view>
  57. </view>
  58. <view class="c-row">
  59. <text class="tit">最小成交量(吨)</text>
  60. <view class="con-list">
  61. <text>{{goods.minimumVolume}}</text>
  62. </view>
  63. </view>
  64. <view class="c-row">
  65. <text class="tit">类型</text>
  66. <view class="con-list">
  67. <text>{{goods.procurementPlanType}}</text>
  68. </view>
  69. </view>
  70. <view class="c-row">
  71. <text class="tit">价格类型</text>
  72. <view class="con-list">
  73. <text>{{goods.priceType}}</text>
  74. </view>
  75. </view>
  76. <view v-if='goods.procurementPlanType=="现货"' class="c-row">
  77. <text class="tit">采购价格(元/吨)</text>
  78. <view class="con-list">
  79. <text>{{goods.procurementPrice}}</text>
  80. </view>
  81. </view>
  82. <view v-else class="c-row">
  83. <text class="tit">基差(元/吨)</text>
  84. <view class="con-list">
  85. <text>{{goods.basisPrice}}</text>
  86. </view>
  87. </view>
  88. <view class="c-row">
  89. <text class="tit">收货地区</text>
  90. <view class="con-list">
  91. <text>{{goods.receivePrivate}}{{goods.receiveCity}}{{goods.receiveArea}}</text>
  92. </view>
  93. </view>
  94. <view class="c-row">
  95. <text class="tit">运费承担方</text>
  96. <view class="con-list">
  97. <text>{{goods.freightPayer}}</text>
  98. </view>
  99. </view>
  100. <view class="c-row">
  101. <text class="tit">包装方式</text>
  102. <view class="con-list">
  103. <text>{{goods.packingType}}</text>
  104. </view>
  105. </view>
  106. <view v-if='goods.baggingNotes' class="c-row">
  107. <text class="tit">袋装备注</text>
  108. <view class="con-list">
  109. <text>{{goods.baggingNotes}}</text>
  110. </view>
  111. </view>
  112. <view class="c-row">
  113. <text class="tit">买方</text>
  114. <view class="con-list">
  115. <text>{{goods.buyer}}</text>
  116. </view>
  117. </view>
  118. <view class="c-row">
  119. <text class="tit">买方电话</text>
  120. <view class="con-list">
  121. <view>{{goods.buyerPhone}} <a :href="'tel:'+goods.buyerPhone"><image style='width:11px;height:11px;' src='../../static/img/jiaoyi/gengduo1@3x.png'></image></a></view>
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. <view class="detail-desc">
  127. <view class="d-header">
  128. <text>货物要求</text>
  129. </view>
  130. <view class="c-list">
  131. <view class="c-row">
  132. <text class="tit">水分(%){{'<='}} </text>
  133. <view class="con-list">
  134. <text>{{goods.waterContent}}</text>
  135. </view>
  136. </view>
  137. <view class="c-row">
  138. <text class="tit">容重(g/L){{'<='}}</text>
  139. <view class="con-list">
  140. <text>{{goods.bulkDensity}}</text>
  141. </view>
  142. </view>
  143. <view class="c-row">
  144. <text class="tit">热损伤(%){{'<='}}</text>
  145. <view class="con-list">
  146. <text>{{goods.jiaorenli}}</text>
  147. </view>
  148. </view>
  149. <view class="c-row">
  150. <text class="tit">杂质(%){{'<='}}</text>
  151. <view class="con-list">
  152. <text>{{goods.impurity}}</text>
  153. </view>
  154. </view>
  155. <view class="c-row">
  156. <text class="tit">霉变粒(%){{'<='}}</text>
  157. <view class="con-list">
  158. <text>{{goods.mildewGrain}}</text>
  159. </view>
  160. </view>
  161. <view class="c-row">
  162. <text class="tit">不完善粒(%){{'<='}}</text>
  163. <view class="con-list">
  164. <text>{{goods.imperfectGrain}}</text>
  165. </view>
  166. </view>
  167. <view class="c-row">
  168. <text class="tit">蛋白(%){{'>='}} </text>
  169. <view class="con-list">
  170. <text>{{goods.protein}}</text>
  171. </view>
  172. </view>
  173. <view class="c-row">
  174. <text class="tit">粒型</text>
  175. <view class="con-list">
  176. <text>{{goods.grain}}</text>
  177. </view>
  178. </view>
  179. <view class="c-row">
  180. <text class="tit">品级</text>
  181. <view class="con-list">
  182. <text>{{goods.grade}}</text>
  183. </view>
  184. </view>
  185. <view class="c-row">
  186. <text class="tit">产地</text>
  187. <view class="con-list">
  188. <text>{{goods.outputPrivate}}{{goods.outputCity}}</text>
  189. </view>
  190. </view>
  191. <view class="c-row">
  192. <text class="tit">产出年份</text>
  193. <view class="con-list">
  194. <text>{{goods.outputYear}}</text>
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <view v-if='status' class='shade'>
  200. <view class='shade-content'>
  201. <view class='shade-content-item'>
  202. 您的粮商身份正在审核中,请耐心等待认证状态可在<text>我的-身份认证</text>中查看
  203. </view>
  204. <image @click='status=false' style='width:30px;height:30px;margin-top:10px;' src='../../static/img/jiaoyi/guanbi-2@3x.png'></image>
  205. </view>
  206. </view>
  207. <!-- 底部操作菜单 -->
  208. <view class="page-bottom1">
  209. <view>
  210. <button type="primary" @click="contactUs">立即沟通</button>
  211. <button @click="salegrain" v-if="goods.pcFlag == 1" type="primary" class=" action-btn no-border add-cart-btn" >立即卖粮</button>
  212. <button v-else type="primary" class="action-btn no-border add-cart-btn"
  213. @click="tradeNow">立即发车</button>
  214. </view>
  215. </view>
  216. </view>
  217. </template>
  218. <script>
  219. import uniNumberBox from '@/components/uni-number-box.vue';
  220. import {
  221. mapState
  222. } from 'vuex';
  223. export default {
  224. components: {
  225. uniNumberBox
  226. },
  227. data() {
  228. return {
  229. swiperCurrent: 0,
  230. titleNViewBackground: '',
  231. swiperLength: 0,
  232. goods: {
  233. id: undefined,
  234. title: undefined,
  235. soldCount: 0,
  236. total: 0,
  237. price: 0,
  238. origin: undefined,
  239. stock: undefined,
  240. level: undefined,
  241. goodsName: undefined,
  242. smell: undefined,
  243. priceType: undefined,
  244. packing: undefined,
  245. year: undefined,
  246. waterContent: 0,
  247. bulkDensity: 0,
  248. moldy: 0,
  249. impurity: 0,
  250. overFlow: 0,
  251. seller:'',
  252. sellerPhone:'',
  253. minSale: 0,
  254. status:0
  255. },
  256. status:false,
  257. share:{
  258. title: '',
  259. imageUrl:'https://taohaoliang.oss-cn-beijing.aliyuncs.com/shareLogo.png',
  260. },
  261. reason:"",
  262. price:undefined,
  263. };
  264. },
  265. onShow() {
  266. },
  267. onLoad(options) {
  268. this.goods.compId=options.compId
  269. const that = this
  270. uni.showLoading({
  271. title: '正在加载',
  272. mask:true
  273. })
  274. this.$api.doRequest('get', '/procurementPlanInfo/getProcurementPlan',{id:options.id}).then(res => {
  275. uni.hideLoading()
  276. this.goods=res.data.data
  277. })
  278. // .then(res => {
  279. // console.log(res.data)
  280. // that.goods = res.data
  281. // that.swiperLength = 3
  282. // if(that.goods.soldCount >= that.goods.total){
  283. // that.goods.status = 1
  284. // }
  285. // that.share.title = that.goods.title
  286. // uni.hideLoading()
  287. // })
  288. },
  289. computed: {
  290. ...mapState(['hasLogin','userInfo'])
  291. },
  292. methods: {
  293. numFilter (value) {
  294. if(!value){
  295. return 0
  296. }
  297. // 截取当前数据到小数点后两位
  298. let realVal = parseFloat(value).toFixed(2)
  299. return realVal
  300. },
  301. swiperChange(e) {
  302. const index = e.detail.current;
  303. this.swiperCurrent = index;
  304. },
  305. contactUs() {
  306. const that = this
  307. uni.makePhoneCall({
  308. // 手机号
  309. phoneNumber: that.goods.buyerPhone,
  310. // 成功回调
  311. success: (res) => {
  312. console.log('调用成功!')
  313. },
  314. // 失败回调
  315. fail: (res) => {
  316. console.log('调用失败!')
  317. }
  318. });
  319. },
  320. ViewImage(e) {
  321. var img = [];
  322. img.push(e)
  323. uni.previewImage({
  324. current:0,
  325. urls: img
  326. });
  327. },
  328. priceInput(e) {
  329. this.price = e.detail.value
  330. },
  331. reasonInput(e) {
  332. this.reason = e.detail.value
  333. },
  334. navToDetailPage() {
  335. const that = this
  336. uni.navigateTo({
  337. url: `/pageA/product/detail_upload?id=${that.goods.id}`
  338. })
  339. },
  340. changePrice(options){
  341. const that = this
  342. uni.showLoading({
  343. title: '正在加载'
  344. })
  345. if(!that.price){
  346. that.$api.msg('请输入修改价格')
  347. return
  348. }
  349. that.$api.request('sale', 'changePrice', {
  350. id: that.goods.id,
  351. price:that.price
  352. }, failres => {
  353. if(failres.errmsg){
  354. uni.showToast({
  355. title: failres.errmsg,
  356. icon: 'none',
  357. duration: 2000
  358. })
  359. }
  360. else{
  361. uni.showToast({
  362. title: "系统异常,请联系管理员",
  363. icon: 'none',
  364. duration: 2000
  365. })
  366. }
  367. uni.hideLoading()
  368. }).then(res => {
  369. that.$api.msg('修改成功')
  370. uni.hideLoading()
  371. setTimeout(()=>{uni.navigateBack()},1000);
  372. })
  373. },
  374. salegrain(){
  375. // uni.navigateTo({
  376. // url: `/pageA/product/business_buy?id=${this.goods.id}&receiveArea=${this.goods.receiveArea}&minimumVolume=${this.goods.minimumVolume}
  377. // &goodsName=${this.goods.goodsName}&receiveCity=${this.goods.receiveCity}&receivePrivate=${this.goods.receivePrivate}&buyer=${this.goods.buyer}
  378. // `
  379. // })
  380. // var that=this
  381. if (!this.hasLogin) {
  382. uni.showModal({
  383. title: '登录提示',
  384. content: '您尚未登录,是否立即登录?',
  385. showCancel: true,
  386. confirmText: '登录',
  387. success: (e) => {
  388. if (e.confirm) {
  389. uni.navigateTo({
  390. url: '/pages/public/login'
  391. })
  392. }
  393. },
  394. fail: () => {},
  395. complete: () => {}
  396. })
  397. }
  398. else{
  399. this.$api.doRequest('get', '/identityAuthenticationInfo/getInfo',{commonId:this.userInfo.id}).then(res => {
  400. if(res.data.code==200){
  401. uni.navigateTo({
  402. url: `/pageA/product/business_buy?id=${this.goods.id}&receiveArea=${this.goods.receiveArea}&minimumVolume=${this.goods.minimumVolume}
  403. &goodsName=${this.goods.goodsName}&receiveCity=${this.goods.receiveCity}&receivePrivate=${this.goods.receivePrivate}&buyer=${this.goods.buyer}
  404. &basisPrice=${this.goods.basisPrice}&procurementPrice=${this.goods.procurementPrice}&receiveWarehouse=${this.goods.receiveWarehouse}
  405. &procurementPlanType=${this.goods.procurementPlanType}&procurementPlan=${this.goods.procurementPlanNo}&compId=${this.goods.compId}`
  406. // url: `/pageA/product/business_buy?id=${this.goods.id}&packing=${this.goods.packing}}&province=${this.goods.province}
  407. // &city=${this.goods.city}&area=${this.goods.area}&storeName=${this.goods.storeName}&seller=${this.goods.seller}
  408. // &companyId=${this.goods.companyId}&sellerPhone=${this.goods.sellerPhone}&minSale=${this.goods.minSale}
  409. // &exsitCount=${this.goods.total}&isFutures=${this.goods.isFutures}
  410. // &basis=${this.goods.basis}&basisSmall=${this.goods.basisSmall}&basisBig=${this.goods.basisBig}
  411. // &unloadingFee=${this.goods.unloadingFee}&goodsName=${this.goods.goodsName}&receivePrivate=${this.goods.receivePrivate}&receiveCity=${that.goods.receiveCity}
  412. // &receiveArea=${this.goods.receiveArea}&minimumVolume=${this.goods.minimumVolume}&buyer=${this.goods.buyer}`
  413. })
  414. }else if(res.data.code==11016){
  415. uni.showModal({
  416. title: '温馨提示',
  417. content: '您还未认证粮商身份, 下单前请先完善您的身份信息',
  418. confirmText: "去认证",
  419. confirmColor: '#22C572',
  420. success: function (res) {
  421. if (res.confirm) {
  422. uni.navigateTo({//跳转页面
  423. url:`/pages/attestation/index`
  424. })
  425. } else if (res.cancel) {
  426. }
  427. }
  428. });
  429. }else if(res.data.code==11017){
  430. this.status=true
  431. }
  432. })
  433. // uni.showModal({
  434. // title: '温馨提示',
  435. // content: '请在发车前认真核实买方身份,并在签订正规的交易合同后发起发车操作,是否继续发车?',
  436. // confirmText: "发车",
  437. // confirmColor: '#22C572',
  438. // success: function (res) {
  439. // if (res.confirm) {
  440. // uni.navigateTo({//跳转页面
  441. // url:"../index/index"
  442. // })
  443. // } else if (res.cancel) {
  444. // }
  445. // }
  446. // });
  447. // const that = this
  448. // uni.navigateTo({
  449. // url: `/pageA/product/trade?id=${that.goods.id}&packing=${that.goods.packing}}&province=${that.goods.province}
  450. // &city=${that.goods.city}&area=${that.goods.area}&storeName=${that.goods.storeName}&seller=${that.goods.seller}
  451. // &companyId=${that.goods.companyId}&sellerPhone=${that.goods.sellerPhone}&minSale=${that.goods.minSale}
  452. // &exsitCount=${that.goods.total}&isFutures=${that.goods.isFutures}
  453. // &basis=${that.goods.basis}&basisSmall=${that.goods.basisSmall}&basisBig=${that.goods.basisBig}
  454. // &unloadingFee=${that.goods.unloadingFee}`
  455. // })
  456. }
  457. },
  458. endSale(){
  459. const that = this
  460. uni.showLoading({
  461. title: '正在加载',
  462. mask:true
  463. })
  464. that.$api.request('sale', 'endSale', {
  465. id: that.goods.id,
  466. reason:that.reason
  467. }, failres => {
  468. if(failres.errmsg){
  469. uni.showToast({
  470. title: failres.errmsg,
  471. icon: 'none',
  472. duration: 2000
  473. })
  474. }
  475. else{
  476. uni.showToast({
  477. title: "系统异常,请联系管理员",
  478. icon: 'none',
  479. duration: 2000
  480. })
  481. }
  482. uni.hideLoading()
  483. }).then(res => {
  484. that.$api.msg('终止成功')
  485. uni.hideLoading()
  486. setTimeout(()=>{uni.navigateBack()},1000);
  487. })
  488. },
  489. navBack() {
  490. uni.navigateBack();
  491. },
  492. tradeNow(){
  493. // this.$api.doRequest('get', '/identityAuthenticationInfo/getInfo',{commonId:options.id}).then(res => {
  494. // uni.hideLoading()
  495. // this.goods=res.data.data
  496. // })
  497. // if (!this.hasLogin) {
  498. // uni.showModal({
  499. // title: '登录提示',
  500. // content: '您尚未登录,是否立即登录?',
  501. // showCancel: true,
  502. // confirmText: '登录',
  503. // success: (e) => {
  504. // if (e.confirm) {
  505. // uni.navigateTo({
  506. // url: '/pages/public/login'
  507. // })
  508. // }
  509. // },
  510. // fail: () => {},
  511. // complete: () => {}
  512. // })
  513. // }
  514. // else{
  515. // uni.showModal({
  516. // title: '温馨提示',
  517. // content: '请在发车前认真核实买方身份,并在签订正规的交易合同后发起发车操作,是否继续发车?',
  518. // confirmText: "发车",
  519. // confirmColor: '#22C572',
  520. // success: function (res) {
  521. // if (res.confirm) {
  522. // uni.navigateTo({//跳转页面
  523. // url:"../index/index"
  524. // })
  525. // } else if (res.cancel) {
  526. // }
  527. // }
  528. // });
  529. // const that = this
  530. // uni.navigateTo({
  531. // url: `/pageA/product/trade?id=${that.goods.id}&packing=${that.goods.packing}}&province=${that.goods.province}
  532. // &city=${that.goods.city}&area=${that.goods.area}&storeName=${that.goods.storeName}&seller=${that.goods.seller}
  533. // &companyId=${that.goods.companyId}&sellerPhone=${that.goods.sellerPhone}&minSale=${that.goods.minSale}
  534. // &exsitCount=${that.goods.total}&isFutures=${that.goods.isFutures}
  535. // &basis=${that.goods.basis}&basisSmall=${that.goods.basisSmall}&basisBig=${that.goods.basisBig}
  536. // &unloadingFee=${that.goods.unloadingFee}`
  537. // })
  538. // }
  539. }
  540. },
  541. }
  542. </script>
  543. <style scoped lang='scss'>
  544. .title1{
  545. position:absolute;
  546. left:50%;
  547. transform: translateX(-50%);
  548. top: 40upx;
  549. z-index:9999;
  550. color:#fff;
  551. }
  552. page {
  553. background: #F5F6FA;
  554. /* padding-bottom: 160upx; */
  555. }
  556. .container{
  557. padding-bottom: 160upx;
  558. }
  559. .icon-you {
  560. font-size: $font-base + 2upx;
  561. color: #888;
  562. }
  563. .carousel {
  564. width: 100%;
  565. height: 350upx;
  566. .carousel-item {
  567. width: 100%;
  568. height: 100%;
  569. padding: 0 28upx;
  570. overflow: hidden;
  571. }
  572. image {
  573. width: 100%;
  574. height: 100%;
  575. border-radius: 10upx;
  576. }
  577. }
  578. .carousel-section {
  579. padding: 0;
  580. .titleNview-placing {
  581. padding-top: 0;
  582. height: 0;
  583. }
  584. .carousel {
  585. .carousel-item {
  586. padding: 0;
  587. }
  588. }
  589. .swiper-dots {
  590. left: 45upx;
  591. bottom: 40upx;
  592. }
  593. }
  594. /* 分享 */
  595. .share-section {
  596. display: flex;
  597. align-items: center;
  598. color: $font-color-base;
  599. background: linear-gradient(left, #fdf5f6, #fbebf6);
  600. padding: 12upx 30upx;
  601. .share-icon {
  602. display: flex;
  603. align-items: center;
  604. width: 70upx;
  605. height: 30upx;
  606. line-height: 1;
  607. border: 1px solid $uni-color-primary;
  608. border-radius: 4upx;
  609. position: relative;
  610. overflow: hidden;
  611. font-size: 22upx;
  612. color: $uni-color-primary;
  613. &:after {
  614. content: '';
  615. width: 50upx;
  616. height: 50upx;
  617. border-radius: 50%;
  618. left: -20upx;
  619. top: -12upx;
  620. position: absolute;
  621. background: $uni-color-primary;
  622. }
  623. }
  624. .icon-xingxing {
  625. position: relative;
  626. z-index: 1;
  627. font-size: 24upx;
  628. margin-left: 2upx;
  629. margin-right: 10upx;
  630. color: #fff;
  631. line-height: 1;
  632. }
  633. .tit {
  634. font-size: $font-base;
  635. margin-left: 10upx;
  636. }
  637. .icon-bangzhu1 {
  638. padding: 10upx;
  639. font-size: 30upx;
  640. line-height: 1;
  641. }
  642. .share-btn {
  643. flex: 1;
  644. text-align: right;
  645. font-size: $font-sm;
  646. color: $uni-color-primary;
  647. }
  648. .icon-you {
  649. font-size: $font-sm;
  650. margin-left: 4upx;
  651. color: $uni-color-primary;
  652. }
  653. }
  654. .c-list {
  655. font-size: $font-sm + 2upx;
  656. color: $font-color-base;
  657. background: #fff;
  658. .c-row {
  659. display: flex;
  660. align-items: center;
  661. padding: 20upx 30upx;
  662. position: relative;
  663. }
  664. .tit {
  665. width: 220upx;
  666. }
  667. .con {
  668. flex: 1;
  669. color: $font-color-dark;
  670. .selected-text {
  671. margin-right: 10upx;
  672. }
  673. }
  674. .bz-list {
  675. height: 40upx;
  676. font-size: $font-sm+2upx;
  677. color: $font-color-dark;
  678. text {
  679. display: inline-block;
  680. margin-right: 30upx;
  681. }
  682. }
  683. .con-list {
  684. flex: 1;
  685. display: flex;
  686. flex-direction: column;
  687. color: $font-color-dark;
  688. line-height: 40upx;
  689. text-align: right;
  690. padding-right: 20upx;
  691. }
  692. .red {
  693. color: $uni-color-primary;
  694. }
  695. }
  696. /* 评价 */
  697. .eva-section {
  698. display: flex;
  699. flex-direction: column;
  700. padding: 20upx 30upx;
  701. background: #fff;
  702. margin-top: 16upx;
  703. .e-header {
  704. display: flex;
  705. align-items: center;
  706. height: 70upx;
  707. font-size: $font-sm + 2upx;
  708. color: $font-color-light;
  709. .tit {
  710. font-size: $font-base + 2upx;
  711. color: $font-color-dark;
  712. margin-right: 4upx;
  713. }
  714. .tip {
  715. flex: 1;
  716. text-align: right;
  717. }
  718. .icon-you {
  719. margin-left: 10upx;
  720. }
  721. }
  722. }
  723. .eva-box {
  724. display: flex;
  725. padding: 20upx 0;
  726. .portrait {
  727. flex-shrink: 0;
  728. width: 80upx;
  729. height: 80upx;
  730. border-radius: 100px;
  731. }
  732. .right {
  733. flex: 1;
  734. display: flex;
  735. flex-direction: column;
  736. font-size: $font-base;
  737. color: $font-color-base;
  738. padding-left: 26upx;
  739. .con {
  740. font-size: $font-base;
  741. color: $font-color-dark;
  742. padding: 20upx 0;
  743. }
  744. .bot {
  745. display: flex;
  746. justify-content: space-between;
  747. font-size: $font-sm;
  748. color: $font-color-light;
  749. }
  750. }
  751. }
  752. /* 详情 */
  753. .detail-desc {
  754. background: #fff;
  755. margin-top: 16upx;
  756. margin:10px;
  757. position:relative;
  758. z-index:4;
  759. border-radius:5px;
  760. .d-header {
  761. display: flex;
  762. padding:10px;
  763. font-size: $font-base + 2upx;
  764. color: $font-color-dark;
  765. position: relative;
  766. border-bottom:1px solid #EEEEEE;
  767. text {
  768. padding: 0 20upx;
  769. position: relative;
  770. z-index: 1;
  771. }
  772. }
  773. }
  774. /* 规格选择弹窗 */
  775. .attr-content {
  776. padding: 10upx 30upx;
  777. .a-t {
  778. display: flex;
  779. image {
  780. width: 170upx;
  781. height: 170upx;
  782. flex-shrink: 0;
  783. margin-top: -40upx;
  784. border-radius: 8upx;
  785. ;
  786. }
  787. .right {
  788. display: flex;
  789. flex-direction: column;
  790. padding-left: 24upx;
  791. font-size: $font-sm + 2upx;
  792. color: $font-color-base;
  793. line-height: 42upx;
  794. .price {
  795. font-size: $font-lg;
  796. color: $uni-color-primary;
  797. margin-bottom: 10upx;
  798. }
  799. .selected-text {
  800. margin-right: 10upx;
  801. }
  802. }
  803. }
  804. .attr-list {
  805. display: flex;
  806. flex-direction: column;
  807. font-size: $font-base + 2upx;
  808. color: $font-color-base;
  809. padding-top: 30upx;
  810. padding-left: 10upx;
  811. }
  812. .item-list {
  813. padding: 30upx 0 0;
  814. display: flex;
  815. flex-wrap: wrap;
  816. text {
  817. display: flex;
  818. align-items: center;
  819. justify-content: center;
  820. background: #eee;
  821. margin-right: 20upx;
  822. margin-bottom: 20upx;
  823. border-radius: 100upx;
  824. min-width: 60upx;
  825. height: 60upx;
  826. padding: 0 20upx;
  827. font-size: $font-base;
  828. color: $font-color-dark;
  829. }
  830. .selected {
  831. background: #fbebee;
  832. color: $uni-color-primary;
  833. }
  834. }
  835. }
  836. /* 弹出层 */
  837. .popup {
  838. position: fixed;
  839. left: 0;
  840. top: 0;
  841. right: 0;
  842. bottom: 0;
  843. z-index: 99;
  844. &.show {
  845. display: block;
  846. .mask {
  847. animation: showPopup 0.2s linear both;
  848. }
  849. .layer {
  850. animation: showLayer 0.2s linear both;
  851. }
  852. }
  853. &.hide {
  854. .mask {
  855. animation: hidePopup 0.2s linear both;
  856. }
  857. .layer {
  858. animation: hideLayer 0.2s linear both;
  859. }
  860. }
  861. &.none {
  862. display: none;
  863. }
  864. .mask {
  865. position: fixed;
  866. top: 0;
  867. width: 100%;
  868. height: 100%;
  869. z-index: 1;
  870. background-color: rgba(0, 0, 0, 0.4);
  871. }
  872. .layer {
  873. position: fixed;
  874. z-index: 99;
  875. bottom: 0;
  876. width: 100%;
  877. min-height: 40vh;
  878. border-radius: 10upx 10upx 0 0;
  879. background-color: #fff;
  880. .btn {
  881. height: 66upx;
  882. line-height: 66upx;
  883. border-radius: 100upx;
  884. background: $uni-color-primary;
  885. font-size: $font-base + 2upx;
  886. color: #fff;
  887. margin: 30upx auto 20upx;
  888. }
  889. }
  890. @keyframes showPopup {
  891. 0% {
  892. opacity: 0;
  893. }
  894. 100% {
  895. opacity: 1;
  896. }
  897. }
  898. @keyframes hidePopup {
  899. 0% {
  900. opacity: 1;
  901. }
  902. 100% {
  903. opacity: 0;
  904. }
  905. }
  906. @keyframes showLayer {
  907. 0% {
  908. transform: translateY(120%);
  909. }
  910. 100% {
  911. transform: translateY(0%);
  912. }
  913. }
  914. @keyframes hideLayer {
  915. 0% {
  916. transform: translateY(0);
  917. }
  918. 100% {
  919. transform: translateY(120%);
  920. }
  921. }
  922. }
  923. .swiper-dots {
  924. display: flex;
  925. position: absolute;
  926. left: 60upx;
  927. bottom: 15upx;
  928. width: 72upx;
  929. height: 36upx;
  930. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAYAAADDhn8LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk4MzlBNjE0NjU1MTFFOUExNjRFQ0I3RTQ0NEExQjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk4MzlBNjA0NjU1MTFFOUExNjRFQ0I3RTQ0NEExQjMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0E3RUNERkE0NjExMTFFOTg5NzI4MTM2Rjg0OUQwOEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0E3RUNERkI0NjExMTFFOTg5NzI4MTM2Rjg0OUQwOEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Gh5BPAAACTUlEQVR42uzcQW7jQAwFUdN306l1uWwNww5kqdsmm6/2MwtVCp8CosQtP9vg/2+/gY+DRAMBgqnjIp2PaCxCLLldpPARRIiFj1yBbMV+cHZh9PURRLQNhY8kgWyL/WDtwujjI8hoE8rKLqb5CDJaRMJHokC6yKgSCR9JAukmokIknCQJpLOIrJFwMsBJELFcKHwM9BFkLBMKFxNcBCHlQ+FhoocgpVwwnv0Xn30QBJGMC0QcaBVJiAMiec/dcwKuL4j1QMsVCXFAJE4s4NQA3K/8Y6DzO4g40P7UcmIBJxbEesCKWBDg8wWxHrAiFgT4fEGsB/CwIhYE+AeBAAdPLOcV8HRmWRDAiQVcO7GcV8CLM8uCAE4sQCDAlHcQ7x+ABQEEAggEEAggEEAggEAAgQACASAQQCCAQACBAAIBBAIIBBAIIBBAIABe4e9iAe/xd7EAJxYgEGDeO4j3EODp/cOCAE4sYMyJ5cwCHs4rCwI4sYBxJ5YzC84rCwKcXxArAuthQYDzC2JF0H49LAhwYUGsCFqvx5EF2T07dMaJBetx4cRyaqFtHJ8EIhK0i8OJBQxcECuCVutxJhCRoE0cZwMRyRcFefa/ffZBVPogePihhyCnbBhcfMFFEFM+DD4m+ghSlgmDkwlOgpAl4+BkkJMgZdk4+EgaSCcpVX7bmY9kgXQQU+1TgE0c+QJZUUz1b2T4SBbIKmJW+3iMj2SBVBWz+leVfCQLpIqYbp8b85EskIxyfIOfK5Sf+wiCRJEsllQ+oqEkQfBxmD8BBgA5hVjXyrBNUQAAAABJRU5ErkJggg==);
  931. background-size: 100% 100%;
  932. .num {
  933. width: 36upx;
  934. height: 36upx;
  935. border-radius: 50px;
  936. font-size: 24upx;
  937. color: #fff;
  938. text-align: center;
  939. line-height: 36upx;
  940. }
  941. .sign {
  942. position: absolute;
  943. top: 0;
  944. left: 50%;
  945. line-height: 36upx;
  946. font-size: 12upx;
  947. color: #fff;
  948. transform: translateX(-50%);
  949. }
  950. }
  951. /* 底部操作菜单 */
  952. .page-bottom1 {
  953. position: fixed;
  954. left: 0;
  955. bottom: 0;
  956. z-index: 95;
  957. width:100%;
  958. height: 70px;
  959. background: rgba(255, 255, 255, .9);
  960. padding:15px;
  961. border-radius: 0;
  962. text-align:right;
  963. button{
  964. display:inline-block;
  965. border-radius:18px;
  966. margin:0 10px;
  967. font-size:14px;background:#fff;
  968. color:#333;
  969. border:1px solid #333;
  970. }
  971. .action-btn{
  972. background:#22C572;
  973. color:#fff;
  974. border:1px solid #22C572;
  975. }
  976. .p-b-btn {
  977. display: flex;
  978. flex-direction: column;
  979. align-items: center;
  980. justify-content: center;
  981. font-size: $font-sm;
  982. color: $font-color-base;
  983. width: 96upx;
  984. height: 80upx;
  985. .yticon {
  986. font-size: 40upx;
  987. line-height: 48upx;
  988. color: $font-color-light;
  989. }
  990. &.active,
  991. &.active .yticon {
  992. color: $uni-color-primary;
  993. }
  994. .icon-fenxiang2 {
  995. font-size: 42upx;
  996. transform: translateY(-2upx);
  997. }
  998. .icon-shoucang {
  999. font-size: 46upx;
  1000. }
  1001. }
  1002. }
  1003. .rich-img {
  1004. width: 100%;
  1005. height: auto;
  1006. margin: 0;
  1007. padding: 0;
  1008. line-height: 0px;
  1009. }
  1010. button::after {
  1011. border: none;
  1012. }
  1013. /* 销售信息 */
  1014. .introduce-section {
  1015. background: #fff;
  1016. padding: 30upx 30upx;
  1017. position:relative;
  1018. margin:10px;
  1019. padding-bottom:25px;
  1020. margin-top:-148px;
  1021. border-radius:5px;
  1022. z-index:4;
  1023. .guess-item {
  1024. padding-bottom: 20upx;
  1025. border-bottom: 1px solid #ccc;
  1026. }
  1027. .title {
  1028. font-size: 16px;
  1029. color: $font-color-dark;
  1030. font-weight:bold;
  1031. height: 50upx;
  1032. line-height: 50upx;
  1033. flex:2.5;
  1034. }
  1035. .title-tip {
  1036. flex:1.5;
  1037. color:#FD714F;font-size:30px;
  1038. text-align: right;
  1039. }
  1040. .price-box {
  1041. display: flex;
  1042. align-items: baseline;
  1043. height: 120rpx;
  1044. padding: 10upx 0;
  1045. font-size: 26upx;
  1046. color: $uni-color-primary;
  1047. }
  1048. .price {
  1049. font-size: $font-lg + 2upx;
  1050. }
  1051. .m-price {
  1052. margin: 0 12upx;
  1053. color: $font-color-light;
  1054. text-decoration: line-through;
  1055. }
  1056. .coupon-tip {
  1057. align-items: center;
  1058. padding: 4upx 10upx;
  1059. background: $uni-color-primary;
  1060. font-size: $font-sm;
  1061. color: #fff;
  1062. border-radius: 6upx;
  1063. line-height: 1;
  1064. transform: translateY(-4upx);
  1065. }
  1066. .bot-row {
  1067. display: flex;
  1068. align-items: center;
  1069. height: 50upx;
  1070. font-size: $font-sm;
  1071. color: $font-color-light;
  1072. view {
  1073. flex: 1;
  1074. }
  1075. }
  1076. }
  1077. .back-btn {
  1078. position: absolute;
  1079. left: 40upx;
  1080. z-index: 9999;
  1081. padding-top: var(--status-bar-height);
  1082. top: 40upx;
  1083. font-size: 40upx;
  1084. color: #fff;
  1085. }
  1086. .shade{
  1087. position:fixed;
  1088. top:0;
  1089. left:0;
  1090. width:100%;background:rgba(0,0,0,0.5);
  1091. height:100%;
  1092. z-index:999999;
  1093. }
  1094. .shade-content{
  1095. position:absolute;
  1096. top:50%;
  1097. left:50%;
  1098. transform: translateX(-50%) translateY(-50%);
  1099. z-index:999999;
  1100. text-align:center;
  1101. }
  1102. .shade-content-item{
  1103. background:#fff;
  1104. width: 277px;
  1105. text-align:center;
  1106. height:121px;
  1107. padding:35px 10px;
  1108. border-radius:15px;
  1109. }
  1110. </style>