sales_detail.vue 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193
  1. <!--销售详情-->
  2. <template>
  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.sendPrivate}}{{goods.sendCity}}{{goods.sendArea}}{{goods.sendWarehouse}}</view>
  12. <view v-if='goods.salePlanType=="现货"' class="title-tip">
  13. {{goods.salePrice}}
  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.salePlanType=="现货"'>销售价格</view>
  20. <view style='text-align:right;' v-if='goods.salePlanType=="期货"'>今日基差</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.plannedSaleVolume}}</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.salePlanType}}</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 class="c-row" v-if="goods.salePlanType == '期货'">
  77. <text class="tit">基差(元/吨)</text>
  78. <view class="con-list">
  79. <text>{{goods.basisPrice}}</text>
  80. </view>
  81. </view>
  82. <view class="c-row" v-if="goods.salePlanType == '现货'">
  83. <text class="tit">销售价格(元/吨)</text>
  84. <view class="con-list">
  85. <text>{{goods.salePrice}}</text>
  86. </view>
  87. </view>
  88. <view class="c-row">
  89. <text class="tit">出货地区</text>
  90. <view class="con-list">
  91. <text>{{goods.sendPrivate}}{{goods.sendCity}}{{goods.sendArea}}</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 class="c-row" v-if="goods.packingType == '大袋' || goods.packingType == '小袋'">
  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.seller}}</text>
  116. </view>
  117. </view>
  118. <view class="c-row">
  119. <text class="tit">卖方电话</text>
  120. <view class="con-list">
  121. <view>{{goods.sellerPhone}} <a :href="'tel:'+goods.sellerPhone"><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. buyer:'',
  252. buyerPhone:'',
  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', '/salePlanInfo/getSalePlanInfo',{id:options.id}).then(res => {
  275. uni.hideLoading()
  276. this.goods=res.data.data
  277. })
  278. },
  279. computed: {
  280. ...mapState(['hasLogin','userInfo'])
  281. },
  282. methods: {
  283. numFilter (value) {
  284. if(!value){
  285. return 0
  286. }
  287. // 截取当前数据到小数点后两位
  288. let realVal = parseFloat(value).toFixed(2)
  289. return realVal
  290. },
  291. swiperChange(e) {
  292. const index = e.detail.current;
  293. this.swiperCurrent = index;
  294. },
  295. contactUs() {
  296. const that = this
  297. uni.makePhoneCall({
  298. // 手机号
  299. phoneNumber: that.goods.buyerPhone,
  300. // 成功回调
  301. success: (res) => {
  302. console.log('调用成功!')
  303. },
  304. // 失败回调
  305. fail: (res) => {
  306. console.log('调用失败!')
  307. }
  308. });
  309. },
  310. ViewImage(e) {
  311. var img = [];
  312. img.push(e)
  313. uni.previewImage({
  314. current:0,
  315. urls: img
  316. });
  317. },
  318. priceInput(e) {
  319. this.price = e.detail.value
  320. },
  321. reasonInput(e) {
  322. this.reason = e.detail.value
  323. },
  324. navToDetailPage() {
  325. const that = this
  326. uni.navigateTo({
  327. url: `/pageA/product/detail_upload?id=${that.goods.id}`
  328. })
  329. },
  330. changePrice(options){
  331. const that = this
  332. uni.showLoading({
  333. title: '正在加载'
  334. })
  335. if(!that.price){
  336. that.$api.msg('请输入修改价格')
  337. return
  338. }
  339. that.$api.request('sale', 'changePrice', {
  340. id: that.goods.id,
  341. price:that.price
  342. }, failres => {
  343. if(failres.errmsg){
  344. uni.showToast({
  345. title: failres.errmsg,
  346. icon: 'none',
  347. duration: 2000
  348. })
  349. }
  350. else{
  351. uni.showToast({
  352. title: "系统异常,请联系管理员",
  353. icon: 'none',
  354. duration: 2000
  355. })
  356. }
  357. uni.hideLoading()
  358. }).then(res => {
  359. that.$api.msg('修改成功')
  360. uni.hideLoading()
  361. setTimeout(()=>{uni.navigateBack()},1000);
  362. })
  363. },
  364. salegrain(){
  365. // uni.navigateTo({
  366. // url: `/pageA/product/business_buy?id=${this.goods.id}&receiveArea=${this.goods.receiveArea}&minimumVolume=${this.goods.minimumVolume}
  367. // &goodsName=${this.goods.goodsName}&receiveCity=${this.goods.receiveCity}&receivePrivate=${this.goods.receivePrivate}&buyer=${this.goods.buyer}
  368. // `
  369. // })
  370. // var that=this
  371. if (!this.hasLogin) {
  372. uni.showModal({
  373. title: '登录提示',
  374. content: '您尚未登录,是否立即登录?',
  375. showCancel: true,
  376. confirmText: '登录',
  377. success: (e) => {
  378. if (e.confirm) {
  379. uni.navigateTo({
  380. url: '/pages/public/login'
  381. })
  382. }
  383. },
  384. fail: () => {},
  385. complete: () => {}
  386. })
  387. }
  388. else{
  389. this.$api.doRequest('get', '/identityAuthenticationInfo/getInfo',{commonId:this.userInfo.id}).then(res => {
  390. if(res.data.code==200){
  391. uni.navigateTo({
  392. url: `/pageA/product/business_sale?id=${this.goods.id}&sendArea=${this.goods.sendArea}&minimumVolume=${this.goods.minimumVolume}
  393. &goodsName=${this.goods.goodsName}&sendCity=${this.goods.sendCity}&sendPrivate=${this.goods.sendPrivate}&seller=${this.goods.seller}
  394. &basisPrice=${this.goods.basisPrice}&salePrice=${this.goods.salePrice}&sendWarehouse=${this.goods.sendWarehouse}
  395. &salePlanType=${this.goods.salePlanType}&salePlan=${this.goods.salePlanNo}&baggingNotes=${this.goods.baggingNotes}&compId=${this.goods.compId}`
  396. // url: `/pageA/product/business_buy?id=${this.goods.id}&packing=${this.goods.packing}}&province=${this.goods.province}
  397. // &city=${this.goods.city}&area=${this.goods.area}&storeName=${this.goods.storeName}&seller=${this.goods.seller}
  398. // &companyId=${this.goods.companyId}&sellerPhone=${this.goods.sellerPhone}&minSale=${this.goods.minSale}
  399. // &exsitCount=${this.goods.total}&isFutures=${this.goods.isFutures}
  400. // &basis=${this.goods.basis}&basisSmall=${this.goods.basisSmall}&basisBig=${this.goods.basisBig}
  401. // &unloadingFee=${this.goods.unloadingFee}&goodsName=${this.goods.goodsName}&receivePrivate=${this.goods.receivePrivate}&receiveCity=${that.goods.receiveCity}
  402. // &receiveArea=${this.goods.receiveArea}&minimumVolume=${this.goods.minimumVolume}&buyer=${this.goods.buyer}`
  403. })
  404. }else if(res.data.code==11016){
  405. uni.showModal({
  406. title: '温馨提示',
  407. content: '您还未认证粮商身份, 下单前请先完善您的身份信息',
  408. confirmText: "去认证",
  409. confirmColor: '#22C572',
  410. success: function (res) {
  411. if (res.confirm) {
  412. uni.navigateTo({//跳转页面
  413. url:"../index/index"
  414. })
  415. } else if (res.cancel) {
  416. }
  417. }
  418. });
  419. }else if(res.data.code==11017){
  420. this.status=true
  421. }
  422. })
  423. // uni.showModal({
  424. // title: '温馨提示',
  425. // content: '请在发车前认真核实买方身份,并在签订正规的交易合同后发起发车操作,是否继续发车?',
  426. // confirmText: "发车",
  427. // confirmColor: '#22C572',
  428. // success: function (res) {
  429. // if (res.confirm) {
  430. // uni.navigateTo({//跳转页面
  431. // url:"../index/index"
  432. // })
  433. // } else if (res.cancel) {
  434. // }
  435. // }
  436. // });
  437. // const that = this
  438. // uni.navigateTo({
  439. // url: `/pageA/product/trade?id=${that.goods.id}&packing=${that.goods.packing}}&province=${that.goods.province}
  440. // &city=${that.goods.city}&area=${that.goods.area}&storeName=${that.goods.storeName}&seller=${that.goods.seller}
  441. // &companyId=${that.goods.companyId}&sellerPhone=${that.goods.sellerPhone}&minSale=${that.goods.minSale}
  442. // &exsitCount=${that.goods.total}&isFutures=${that.goods.isFutures}
  443. // &basis=${that.goods.basis}&basisSmall=${that.goods.basisSmall}&basisBig=${that.goods.basisBig}
  444. // &unloadingFee=${that.goods.unloadingFee}`
  445. // })
  446. }
  447. },
  448. endSale(){
  449. const that = this
  450. uni.showLoading({
  451. title: '正在加载',
  452. mask:true
  453. })
  454. that.$api.request('sale', 'endSale', {
  455. id: that.goods.id,
  456. reason:that.reason
  457. }, failres => {
  458. if(failres.errmsg){
  459. uni.showToast({
  460. title: failres.errmsg,
  461. icon: 'none',
  462. duration: 2000
  463. })
  464. }
  465. else{
  466. uni.showToast({
  467. title: "系统异常,请联系管理员",
  468. icon: 'none',
  469. duration: 2000
  470. })
  471. }
  472. uni.hideLoading()
  473. }).then(res => {
  474. that.$api.msg('终止成功')
  475. uni.hideLoading()
  476. setTimeout(()=>{uni.navigateBack()},1000);
  477. })
  478. },
  479. navBack() {
  480. uni.navigateBack();
  481. },
  482. tradeNow(){
  483. // this.$api.doRequest('get', '/identityAuthenticationInfo/getInfo',{commonId:options.id}).then(res => {
  484. // uni.hideLoading()
  485. // this.goods=res.data.data
  486. // })
  487. if (!this.hasLogin) {
  488. uni.showModal({
  489. title: '登录提示',
  490. content: '您尚未登录,是否立即登录?',
  491. showCancel: true,
  492. confirmText: '登录',
  493. success: (e) => {
  494. if (e.confirm) {
  495. uni.navigateTo({
  496. url: '/pages/public/login'
  497. })
  498. }
  499. },
  500. fail: () => {},
  501. complete: () => {}
  502. })
  503. }
  504. else{
  505. uni.showModal({
  506. title: '温馨提示',
  507. content: '请在发车前认真核实买方身份,并在签订正规的交易合同后发起发车操作,是否继续发车?',
  508. confirmText: "发车",
  509. confirmColor: '#22C572',
  510. success: function (res) {
  511. if (res.confirm) {
  512. uni.navigateTo({//跳转页面
  513. url:"../index/index"
  514. })
  515. } else if (res.cancel) {
  516. }
  517. }
  518. });
  519. const that = this
  520. uni.navigateTo({
  521. // url: `/pageA/product/business_sale?id=${that.goods.id}&packing=${that.goods.packing}}&province=${that.goods.province}
  522. // &city=${that.goods.city}&area=${that.goods.area}&storeName=${that.goods.storeName}&seller=${that.goods.seller}
  523. // &companyId=${that.goods.companyId}&sellerPhone=${that.goods.sellerPhone}&minSale=${that.goods.minSale}
  524. // &exsitCount=${that.goods.total}&isFutures=${that.goods.isFutures}
  525. // &basis=${that.goods.basis}&basisSmall=${that.goods.basisSmall}&basisBig=${that.goods.basisBig}
  526. // &unloadingFee=${that.goods.unloadingFee}`
  527. url:`/pageA/product/business_sale?id=${that.goods.id}&buyer=${that.goods.buyer}&seller=${that.goods.seller}&sendPrivate=${that.goods.sendPrivate}
  528. &sendCity=${that.goods.sendCity}&sendArea=${that.goods.sendArea}&sendWarehouse=${that.goods.sendWarehouse}&goodsName=${that.goods.goodsName}
  529. &minimumVolume=${that.goods.minimumVolume}&unitPrice=${that.goods.unitPrice}&basisPrice=${that.goods.basisPrice}&salePlanType=${that.goods.salePlanType}`
  530. })
  531. }
  532. }
  533. },
  534. }
  535. </script>
  536. <style scoped lang='scss'>
  537. .title1{
  538. position:absolute;
  539. left:50%;
  540. transform: translateX(-50%);
  541. top: 40upx;
  542. z-index:9999;
  543. color:#fff;
  544. }
  545. page {
  546. background: #F5F6FA;
  547. /* padding-bottom: 160upx; */
  548. }
  549. .container{
  550. padding-bottom: 160upx;
  551. }
  552. .icon-you {
  553. font-size: $font-base + 2upx;
  554. color: #888;
  555. }
  556. .carousel {
  557. width: 100%;
  558. height: 350upx;
  559. .carousel-item {
  560. width: 100%;
  561. height: 100%;
  562. padding: 0 28upx;
  563. overflow: hidden;
  564. }
  565. image {
  566. width: 100%;
  567. height: 100%;
  568. border-radius: 10upx;
  569. }
  570. }
  571. .carousel-section {
  572. padding: 0;
  573. .titleNview-placing {
  574. padding-top: 0;
  575. height: 0;
  576. }
  577. .carousel {
  578. .carousel-item {
  579. padding: 0;
  580. }
  581. }
  582. .swiper-dots {
  583. left: 45upx;
  584. bottom: 40upx;
  585. }
  586. }
  587. /* 分享 */
  588. .share-section {
  589. display: flex;
  590. align-items: center;
  591. color: $font-color-base;
  592. background: linear-gradient(left, #fdf5f6, #fbebf6);
  593. padding: 12upx 30upx;
  594. .share-icon {
  595. display: flex;
  596. align-items: center;
  597. width: 70upx;
  598. height: 30upx;
  599. line-height: 1;
  600. border: 1px solid $uni-color-primary;
  601. border-radius: 4upx;
  602. position: relative;
  603. overflow: hidden;
  604. font-size: 22upx;
  605. color: $uni-color-primary;
  606. &:after {
  607. content: '';
  608. width: 50upx;
  609. height: 50upx;
  610. border-radius: 50%;
  611. left: -20upx;
  612. top: -12upx;
  613. position: absolute;
  614. background: $uni-color-primary;
  615. }
  616. }
  617. .icon-xingxing {
  618. position: relative;
  619. z-index: 1;
  620. font-size: 24upx;
  621. margin-left: 2upx;
  622. margin-right: 10upx;
  623. color: #fff;
  624. line-height: 1;
  625. }
  626. .tit {
  627. font-size: $font-base;
  628. margin-left: 10upx;
  629. }
  630. .icon-bangzhu1 {
  631. padding: 10upx;
  632. font-size: 30upx;
  633. line-height: 1;
  634. }
  635. .share-btn {
  636. flex: 1;
  637. text-align: right;
  638. font-size: $font-sm;
  639. color: $uni-color-primary;
  640. }
  641. .icon-you {
  642. font-size: $font-sm;
  643. margin-left: 4upx;
  644. color: $uni-color-primary;
  645. }
  646. }
  647. .c-list {
  648. font-size: $font-sm + 2upx;
  649. color: $font-color-base;
  650. background: #fff;
  651. .c-row {
  652. display: flex;
  653. align-items: center;
  654. padding: 20upx 30upx;
  655. position: relative;
  656. }
  657. .tit {
  658. width: 220upx;
  659. }
  660. .con {
  661. flex: 1;
  662. color: $font-color-dark;
  663. .selected-text {
  664. margin-right: 10upx;
  665. }
  666. }
  667. .bz-list {
  668. height: 40upx;
  669. font-size: $font-sm+2upx;
  670. color: $font-color-dark;
  671. text {
  672. display: inline-block;
  673. margin-right: 30upx;
  674. }
  675. }
  676. .con-list {
  677. flex: 1;
  678. display: flex;
  679. flex-direction: column;
  680. color: $font-color-dark;
  681. line-height: 40upx;
  682. text-align: right;
  683. padding-right: 20upx;
  684. }
  685. .red {
  686. color: $uni-color-primary;
  687. }
  688. }
  689. /* 评价 */
  690. .eva-section {
  691. display: flex;
  692. flex-direction: column;
  693. padding: 20upx 30upx;
  694. background: #fff;
  695. margin-top: 16upx;
  696. .e-header {
  697. display: flex;
  698. align-items: center;
  699. height: 70upx;
  700. font-size: $font-sm + 2upx;
  701. color: $font-color-light;
  702. .tit {
  703. font-size: $font-base + 2upx;
  704. color: $font-color-dark;
  705. margin-right: 4upx;
  706. }
  707. .tip {
  708. flex: 1;
  709. text-align: right;
  710. }
  711. .icon-you {
  712. margin-left: 10upx;
  713. }
  714. }
  715. }
  716. .eva-box {
  717. display: flex;
  718. padding: 20upx 0;
  719. .portrait {
  720. flex-shrink: 0;
  721. width: 80upx;
  722. height: 80upx;
  723. border-radius: 100px;
  724. }
  725. .right {
  726. flex: 1;
  727. display: flex;
  728. flex-direction: column;
  729. font-size: $font-base;
  730. color: $font-color-base;
  731. padding-left: 26upx;
  732. .con {
  733. font-size: $font-base;
  734. color: $font-color-dark;
  735. padding: 20upx 0;
  736. }
  737. .bot {
  738. display: flex;
  739. justify-content: space-between;
  740. font-size: $font-sm;
  741. color: $font-color-light;
  742. }
  743. }
  744. }
  745. /* 详情 */
  746. .detail-desc {
  747. background: #fff;
  748. margin-top: 16upx;
  749. margin:10px;
  750. position:relative;
  751. z-index:4;
  752. border-radius:5px;
  753. .d-header {
  754. display: flex;
  755. padding:10px;
  756. font-size: $font-base + 2upx;
  757. color: $font-color-dark;
  758. position: relative;
  759. border-bottom:1px solid #EEEEEE;
  760. text {
  761. padding: 0 20upx;
  762. position: relative;
  763. z-index: 1;
  764. }
  765. }
  766. }
  767. /* 规格选择弹窗 */
  768. .attr-content {
  769. padding: 10upx 30upx;
  770. .a-t {
  771. display: flex;
  772. image {
  773. width: 170upx;
  774. height: 170upx;
  775. flex-shrink: 0;
  776. margin-top: -40upx;
  777. border-radius: 8upx;
  778. ;
  779. }
  780. .right {
  781. display: flex;
  782. flex-direction: column;
  783. padding-left: 24upx;
  784. font-size: $font-sm + 2upx;
  785. color: $font-color-base;
  786. line-height: 42upx;
  787. .price {
  788. font-size: $font-lg;
  789. color: $uni-color-primary;
  790. margin-bottom: 10upx;
  791. }
  792. .selected-text {
  793. margin-right: 10upx;
  794. }
  795. }
  796. }
  797. .attr-list {
  798. display: flex;
  799. flex-direction: column;
  800. font-size: $font-base + 2upx;
  801. color: $font-color-base;
  802. padding-top: 30upx;
  803. padding-left: 10upx;
  804. }
  805. .item-list {
  806. padding: 30upx 0 0;
  807. display: flex;
  808. flex-wrap: wrap;
  809. text {
  810. display: flex;
  811. align-items: center;
  812. justify-content: center;
  813. background: #eee;
  814. margin-right: 20upx;
  815. margin-bottom: 20upx;
  816. border-radius: 100upx;
  817. min-width: 60upx;
  818. height: 60upx;
  819. padding: 0 20upx;
  820. font-size: $font-base;
  821. color: $font-color-dark;
  822. }
  823. .selected {
  824. background: #fbebee;
  825. color: $uni-color-primary;
  826. }
  827. }
  828. }
  829. /* 弹出层 */
  830. .popup {
  831. position: fixed;
  832. left: 0;
  833. top: 0;
  834. right: 0;
  835. bottom: 0;
  836. z-index: 99;
  837. &.show {
  838. display: block;
  839. .mask {
  840. animation: showPopup 0.2s linear both;
  841. }
  842. .layer {
  843. animation: showLayer 0.2s linear both;
  844. }
  845. }
  846. &.hide {
  847. .mask {
  848. animation: hidePopup 0.2s linear both;
  849. }
  850. .layer {
  851. animation: hideLayer 0.2s linear both;
  852. }
  853. }
  854. &.none {
  855. display: none;
  856. }
  857. .mask {
  858. position: fixed;
  859. top: 0;
  860. width: 100%;
  861. height: 100%;
  862. z-index: 1;
  863. background-color: rgba(0, 0, 0, 0.4);
  864. }
  865. .layer {
  866. position: fixed;
  867. z-index: 99;
  868. bottom: 0;
  869. width: 100%;
  870. min-height: 40vh;
  871. border-radius: 10upx 10upx 0 0;
  872. background-color: #fff;
  873. .btn {
  874. height: 66upx;
  875. line-height: 66upx;
  876. border-radius: 100upx;
  877. background: $uni-color-primary;
  878. font-size: $font-base + 2upx;
  879. color: #fff;
  880. margin: 30upx auto 20upx;
  881. }
  882. }
  883. @keyframes showPopup {
  884. 0% {
  885. opacity: 0;
  886. }
  887. 100% {
  888. opacity: 1;
  889. }
  890. }
  891. @keyframes hidePopup {
  892. 0% {
  893. opacity: 1;
  894. }
  895. 100% {
  896. opacity: 0;
  897. }
  898. }
  899. @keyframes showLayer {
  900. 0% {
  901. transform: translateY(120%);
  902. }
  903. 100% {
  904. transform: translateY(0%);
  905. }
  906. }
  907. @keyframes hideLayer {
  908. 0% {
  909. transform: translateY(0);
  910. }
  911. 100% {
  912. transform: translateY(120%);
  913. }
  914. }
  915. }
  916. .swiper-dots {
  917. display: flex;
  918. position: absolute;
  919. left: 60upx;
  920. bottom: 15upx;
  921. width: 72upx;
  922. height: 36upx;
  923. 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==);
  924. background-size: 100% 100%;
  925. .num {
  926. width: 36upx;
  927. height: 36upx;
  928. border-radius: 50px;
  929. font-size: 24upx;
  930. color: #fff;
  931. text-align: center;
  932. line-height: 36upx;
  933. }
  934. .sign {
  935. position: absolute;
  936. top: 0;
  937. left: 50%;
  938. line-height: 36upx;
  939. font-size: 12upx;
  940. color: #fff;
  941. transform: translateX(-50%);
  942. }
  943. }
  944. /* 底部操作菜单 */
  945. .page-bottom1 {
  946. position: fixed;
  947. left: 0;
  948. bottom: 0;
  949. z-index: 95;
  950. width:100%;
  951. height: 70px;
  952. background: rgba(255, 255, 255, .9);
  953. padding:15px;
  954. border-radius: 0;
  955. text-align:right;
  956. button{
  957. display:inline-block;
  958. border-radius:18px;
  959. margin:0 10px;
  960. font-size:14px;background:#fff;
  961. color:#333;
  962. border:1px solid #333;
  963. }
  964. .action-btn{
  965. background:#22C572;
  966. color:#fff;
  967. border:1px solid #22C572;
  968. }
  969. .p-b-btn {
  970. display: flex;
  971. flex-direction: column;
  972. align-items: center;
  973. justify-content: center;
  974. font-size: $font-sm;
  975. color: $font-color-base;
  976. width: 96upx;
  977. height: 80upx;
  978. .yticon {
  979. font-size: 40upx;
  980. line-height: 48upx;
  981. color: $font-color-light;
  982. }
  983. &.active,
  984. &.active .yticon {
  985. color: $uni-color-primary;
  986. }
  987. .icon-fenxiang2 {
  988. font-size: 42upx;
  989. transform: translateY(-2upx);
  990. }
  991. .icon-shoucang {
  992. font-size: 46upx;
  993. }
  994. }
  995. }
  996. .rich-img {
  997. width: 100%;
  998. height: auto;
  999. margin: 0;
  1000. padding: 0;
  1001. line-height: 0px;
  1002. }
  1003. button::after {
  1004. border: none;
  1005. }
  1006. /* 销售信息 */
  1007. .introduce-section {
  1008. background: #fff;
  1009. padding: 30upx 30upx;
  1010. position:relative;
  1011. margin:10px;
  1012. padding-bottom:25px;
  1013. margin-top:-148px;
  1014. border-radius:5px;
  1015. z-index:4;
  1016. .guess-item {
  1017. padding-bottom: 20upx;
  1018. border-bottom: 1px solid #ccc;
  1019. }
  1020. .title {
  1021. font-size: 16px;
  1022. color: $font-color-dark;
  1023. font-weight:bold;
  1024. height: 50upx;
  1025. line-height: 50upx;
  1026. flex:2.5;
  1027. }
  1028. .title-tip {
  1029. flex:1.5;
  1030. color:#FD714F;font-size:30px;
  1031. text-align: right;
  1032. }
  1033. .price-box {
  1034. display: flex;
  1035. align-items: baseline;
  1036. height: 120rpx;
  1037. padding: 10upx 0;
  1038. font-size: 26upx;
  1039. color: $uni-color-primary;
  1040. }
  1041. .price {
  1042. font-size: $font-lg + 2upx;
  1043. }
  1044. .m-price {
  1045. margin: 0 12upx;
  1046. color: $font-color-light;
  1047. text-decoration: line-through;
  1048. }
  1049. .coupon-tip {
  1050. align-items: center;
  1051. padding: 4upx 10upx;
  1052. background: $uni-color-primary;
  1053. font-size: $font-sm;
  1054. color: #fff;
  1055. border-radius: 6upx;
  1056. line-height: 1;
  1057. transform: translateY(-4upx);
  1058. }
  1059. .bot-row {
  1060. display: flex;
  1061. align-items: center;
  1062. height: 50upx;
  1063. font-size: $font-sm;
  1064. color: $font-color-light;
  1065. view {
  1066. flex: 1;
  1067. }
  1068. }
  1069. }
  1070. .back-btn {
  1071. position: absolute;
  1072. left: 40upx;
  1073. z-index: 9999;
  1074. padding-top: var(--status-bar-height);
  1075. top: 40upx;
  1076. font-size: 40upx;
  1077. color: #fff;
  1078. }
  1079. .shade{
  1080. position:fixed;
  1081. top:0;
  1082. left:0;
  1083. width:100%;background:rgba(0,0,0,0.5);
  1084. height:100%;
  1085. z-index:999999;
  1086. }
  1087. .shade-content{
  1088. position:absolute;
  1089. top:50%;
  1090. left:50%;
  1091. transform: translateX(-50%) translateY(-50%);
  1092. z-index:999999;
  1093. text-align:center;
  1094. }
  1095. .shade-content-item{
  1096. background:#fff;
  1097. width: 277px;
  1098. text-align:center;
  1099. height:121px;
  1100. padding:35px 10px;
  1101. border-radius:15px;
  1102. }
  1103. </style>