integralgoodsDetail.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976
  1. <template>
  2. <view class="box">
  3. <view class="spwBox">
  4. <swiper class="swiper" circular :autoplay="false" :indicator-dots="true" indicator-color="#CCCCCC" indicator-active-color="#D53533">
  5. <swiper-item v-for="(item,index) in info.ImgList">
  6. <view class="swiper-item">
  7. <img mode="aspectFit" :src="item.url" alt="" class="swiper-itemImg" v-if="item.bizType==1">
  8. <video :src="item.url" v-if="item.bizType==2" show-fullscreen-btn controls style="width: 100%;height: 100%;"></video>
  9. </view>
  10. </swiper-item>
  11. </swiper>
  12. </view>
  13. <view class="shopCont">
  14. <view class="goodsName">{{info.name}}</view>
  15. <view class="jfNumBox">
  16. <span class="jfspan1">759</span> <span class="jfspan2">积分</span>
  17. <span class="marketvalue">市场价 ¥893</span>
  18. </view>
  19. </view>
  20. <!-- 商品详情 -->
  21. <view class="goodsDetail" v-if="info.details">
  22. <view class="goodsDetailTitle">商品详情</view>
  23. <!-- <view v-html="info.details" style="background: #fff;"></view> -->
  24. <rich-text :nodes="info.details" style="background: #fff;"></rich-text>
  25. </view>
  26. <view style="height: 120rpx;padding-bottom: env(safe-area-inset-bottom)"></view>
  27. <view class="bottomBox">
  28. <view class="ktyong">可用 <span class="ktyong1">759</span><span class="ktyong2">积分</span> </view>
  29. <view class="bottomBtn" @click="ljbuy">立即兑换</view>
  30. </view>
  31. <!-- 立即购买 -->
  32. <view class="buyBox" v-if="buyShow" @click="buyShow=false">
  33. <view class="buyCont" @click.stop="">
  34. <image src="../../static/timg/chahao.png" mode="" class="buyContCh" @click="buyShow=false"></image>
  35. <view class="goodsBox">
  36. <view class="hotGoodsLine" >
  37. <view>
  38. <image :src="info.ImgList[0].url" mode="" v-if="info.ImgList.length>0" class="hotGoodsLineImg"></image>
  39. <image src="../../static/timg/noimg.png" class="hotGoodsLineImg" v-else></image>
  40. </view>
  41. <view class="hotGoodsLineRIght">
  42. <view class="goodsName2">{{info.name}}</view>
  43. <view class="goodsPriceTk">
  44. <view class="jfNumBox">
  45. <span class="jfspan1">759</span> <span class="jfspan2">积分</span>
  46. <span class="marketvalue">市场价 ¥893</span>
  47. </view>
  48. <view class="surplus">剩余999个</view>
  49. </view>
  50. </view>
  51. </view>
  52. </view>
  53. <view class="buyNumBox">
  54. <view class="bugNUm">
  55. <view class="bugNUmLeft">
  56. <view class="buySl">数量</view>
  57. <view class="buyXg" v-if="info.oneQty">限购{{info.oneQty}}件</view>
  58. </view>
  59. <view class="numJsbox">
  60. <view class="numJj" @click="calculation(1)">-</view>
  61. <view class="goodsnum">
  62. <input type="number" value="" v-model="goodsnum" class="goodsnumInput"/>
  63. </view>
  64. <view class="numJj" @click="calculation(2)">+</view>
  65. </view>
  66. </view>
  67. <view class="buySHop" @click="ckShop">
  68. <view>服务门店</view>
  69. <view class="buyShopRight" >
  70. <view v-if="shopInfo.shopId">{{shopInfo.shopName}}</view>
  71. <view v-else>请选择</view>
  72. <image src="../../static/timg/icon_arrow_right.png" mode="" class="buyShopRightJt"></image>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="buybtnBox">
  77. <view class="buyBtn" @click="goBuy">立即购买</view>
  78. </view>
  79. </view>
  80. </view>
  81. <!-- 手机号授权 -->
  82. <view class="authorizBox" v-if="authorizShow" @click="authorizShow=false">
  83. <view class="authorizCont" @click.stop="">
  84. <view class="authorizName">{{wxOpenData.miniAppName}}</view>
  85. <view class="authorizMs">您好,欢迎访问本店,授权手机号登录能获取我们最新的促销活动哦~</view>
  86. <button class="authorizContbutton" type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">授权</button>
  87. </view>
  88. <view style="text-align: center;padding-top: 56rpx;">
  89. <image src="../../static/timg/icon_guanbi@2x.png" mode="" class="authorizCloseImg"></image>
  90. </view>
  91. </view>
  92. <!-- <view :style="{color:colorX}">asdfas</view> -->
  93. </view>
  94. </template>
  95. <script>
  96. export default {
  97. components: {
  98. },
  99. data() {
  100. return {
  101. userInfo:'',
  102. goodsnum:1,
  103. buyShow:true,
  104. id:'',
  105. info:'',
  106. shopInfo:{
  107. shopName:'',
  108. shopId:''
  109. },
  110. authorizShow:false,
  111. code:'',
  112. wxOpenData:'',
  113. ext:'',
  114. categoryIds:'',
  115. thenShow:false,
  116. activityEnd:true,
  117. shengyuD:1,
  118. shengyuH:12,
  119. shengyuM:21,
  120. //snapup:
  121. }
  122. },
  123. onLoad(opt) {
  124. this.id=opt.id;
  125. this.id='F58D6DEA-726A-4E28-93FA-EE6E5D6E3BDF'
  126. //this.userInfo = uni.getStorageSync("userInfo");
  127. this.userInfo=this.$store.state.userInfo;
  128. this.ext=this.$common.getExtStoreId();
  129. if(this.userInfo){
  130. this.wxOpenData=this.$store.state.wxOpenData;
  131. this.openGoodsDetailById();
  132. }else{
  133. this.$common.automaticlogin().then(val => {
  134. this.userInfo=this.$store.state.userInfo;
  135. this.wxOpenData=this.$store.state.wxOpenData;
  136. this.openGoodsDetailById();
  137. console.log(this.userInfo)
  138. })
  139. }
  140. },
  141. onShow() {
  142. this.shopInfo=this.$store.state.ckshopInfo;
  143. //console.log(this.shopInfo)
  144. },
  145. onPullDownRefresh(){
  146. this.openGoodsDetailById();
  147. setTimeout(() => {
  148. uni.stopPullDownRefresh(); // 关闭下拉刷新
  149. }, 2000);
  150. },
  151. methods: {
  152. sharewx(){
  153. },
  154. ckShop(){
  155. uni.navigateTo({
  156. url:'ckshopList?goodsId='+this.id
  157. })
  158. },
  159. openGoodsDetailById(){
  160. this.$http('openMall/openGoodsDetailById', {
  161. id:this.id,
  162. GoodsID:this.id,
  163. },'GET').then(res => {
  164. this.info=res.data;
  165. if(this.info.details){
  166. this.info.details = this.info.details.replace(/\<img/gi, '<img style="max-width:100%;height:auto" ');
  167. }
  168. this.shopInfo='';
  169. this.$store.commit('mutationsckshopInfo', '')
  170. this.szShop()
  171. if(this.info.goodsDownTime){
  172. if (Number(new Date().getTime()) > (Number(new Date(this.info.goodsDownTime.replace(/-/g, '/')).getTime()) || 0)) {
  173. console.log("现在时间大于结束时间")
  174. this.activityEnd = true
  175. } else {
  176. this.activityEnd=false;
  177. //this.info.goodsDownTime="2022-08-18 11:57:00"
  178. this.clock()
  179. }
  180. }
  181. })
  182. },
  183. clock(){
  184. let _this = this
  185. let today = new Date() // 当前时间
  186. let h = today.getHours()
  187. let m = today.getMinutes()
  188. let s = today.getSeconds()
  189. let stopTime = new Date(_this.info.goodsDownTime.replace(/-/g, '/')) // 结束时间
  190. if (Number(new Date().getTime()) >(Number(new Date(this.info.goodsDownTime.replace(/-/g, '/')).getTime()) || 0) ) {
  191. this.activityEnd = true
  192. return false;
  193. }
  194. let stopH = stopTime.getHours()
  195. let stopM = stopTime.getMinutes()
  196. let stopS = stopTime.getSeconds()
  197. let shenyu = stopTime.getTime() - today.getTime() // 倒计时毫秒数
  198. let shengyuD = parseInt(shenyu / (60 * 60 * 24 * 1000)) // 转换为天
  199. let D = parseInt(shenyu) - parseInt(shengyuD * 60 * 60 * 24 * 1000)// 除去天的毫秒数
  200. let shengyuH = parseInt(D / (60 * 60 * 1000)) // 除去天的毫秒数转换成小时
  201. let H = D - shengyuH * 60 * 60 * 1000 // 除去天、小时的毫秒数
  202. let shengyuM = parseInt(H / (60 * 1000)) // 除去天的毫秒数转换成分钟
  203. let M = H - shengyuM * 60 * 1000// 除去天、小时、分的毫秒数
  204. let S = parseInt((shenyu - shengyuD * 60 * 60 * 24 * 1000 - shengyuH * 60 * 60 * 1000 - shengyuM * 60 * 1000) / 1000)// 除去天、小时、分的毫秒数转化为秒
  205. this.daojishi = '报名倒计时:' + shengyuD + '天' + shengyuH + '小时' + shengyuM + '分' + S + '秒'
  206. // setTimeout("clock()",500);
  207. this.shengyuM=shengyuM;
  208. this.shengyuD=shengyuD;
  209. this.shengyuH=shengyuH;
  210. setTimeout(_this.clock, 500)
  211. },
  212. ljbuy(){
  213. if(!this.userInfo){
  214. this.authorizShow=true
  215. }else{
  216. this.buyShow=true
  217. }
  218. },
  219. szShop(){
  220. if(this.userInfo){
  221. this.$http('openMall/openStoreList', {
  222. goodsId:this.id,
  223. // lat: '',
  224. // lng: '',
  225. }, 'GET').then(res => {
  226. var queryShopList = res.data
  227. //console.log('list+=', this.queryShopList);
  228. queryShopList.forEach(item=>{
  229. if(item.shopId==this.info.shopId){
  230. var item={
  231. shopId:this.info.shopId,
  232. shopName:this.info.shopName
  233. }
  234. this.shopInfo=item
  235. this.$store.commit('mutationsckshopInfo', item)
  236. }
  237. })
  238. })
  239. }
  240. },
  241. goINdex(){
  242. uni.switchTab({
  243. url:'../index/index'
  244. })
  245. },
  246. goBuy(){
  247. if(!this.shopInfo.shopId){
  248. uni.showToast({
  249. title: '请选择服务门店',
  250. icon: 'none',
  251. duration: 3000
  252. });
  253. return false;
  254. }
  255. var that=this;
  256. uni.setStorage({
  257. key: 'goodsDetail',
  258. data: that.info,
  259. success: function () {
  260. uni.navigateTo({
  261. url:'confirm?itemQty='+that.goodsnum+'&shopID='+that.shopInfo.shopId+'&shopName='+that.shopInfo.shopName
  262. })
  263. }
  264. });
  265. },
  266. calculation(type){
  267. if(type==1){
  268. if(this.goodsnum>1){
  269. this.goodsnum--
  270. }
  271. }else{
  272. console.log("+++")
  273. if(this.info.oneQty!=null){
  274. if(this.info.oneQty>this.goodsnum){
  275. this.goodsnum++
  276. }
  277. }else{
  278. this.goodsnum++
  279. }
  280. }
  281. },
  282. decryptPhoneNumber: function(e) {
  283. console.log(e);
  284. this.code=e.detail.code
  285. this.wxPhoneLogin()
  286. this.authorizShow=false;
  287. },
  288. wxPhoneLogin(){
  289. var that=this;
  290. this.$http('miniApp2/sys/wxPhoneLogin', {
  291. appId:this.ext.appId,
  292. unionId:this.ext.unionId,
  293. code:this.code,
  294. openId:this.wxOpenData.openid
  295. },'POST').then(res => {
  296. var data = res.data;
  297. if(data.loginInfo){
  298. this.userInfo=data.loginInfo.openUser;
  299. this.wxOpenData=data.loginInfo;
  300. this.$store.commit('mutationswxOpenData', data.loginInfo)
  301. this.$store.commit('mutationsuserInfo', this.userInfo)
  302. this.szShop()
  303. }
  304. })
  305. },
  306. },
  307. onShareAppMessage(res) {
  308. var img='';
  309. if(this.info.ImgList.length>0){
  310. img=this.info.ImgList[0].url
  311. }
  312. return {
  313. title: this.info.name,
  314. imageUrl:img,
  315. path: 'pages/shop/goodsDetail?id=' + this.id,
  316. success(res){
  317. uni.showToast({
  318. title:'分享成功'
  319. })
  320. },
  321. fail(res){
  322. uni.showToast({
  323. title:'分享失败',
  324. icon:'none',
  325. duration: 3000
  326. })
  327. }
  328. }
  329. },
  330. }
  331. </script>
  332. <style scoped lang="less">
  333. .surplus{
  334. color: #FF0000;font-size: 24rpx;
  335. }
  336. .ktyong{
  337. line-height: 45px;
  338. font-weight: 500;
  339. color: #666666;
  340. font-size: 24rpx;
  341. padding-left: 30rpx;
  342. } .ktyong1{
  343. color: #FF0000;
  344. font-size: 32rpx;
  345. }
  346. .ktyong2{
  347. color: #FF0000;
  348. font-size: 24rpx;
  349. }
  350. .jfspan1{
  351. font-weight: 500;
  352. color: #FF0000;
  353. font-size:32rpx;
  354. line-height: 45rpx;
  355. padding-left: 20rpx;
  356. }
  357. .jfspan2{
  358. font-weight: 400;
  359. color: #FF0000;
  360. font-size:24rpx;
  361. line-height: 45rpx;
  362. padding-left: 10rpx;
  363. }
  364. .marketvalue{
  365. font-weight: 400;
  366. color: #999999;
  367. font-size:24rpx;
  368. line-height: 45rpx;
  369. padding-left: 10rpx;
  370. text-decoration: line-through;
  371. }
  372. .timeTbox{
  373. width: 750rpx;
  374. height: 60rpx;
  375. background:#FFF5F0;
  376. border-radius: 24rpx 24rpx 0px 0px;
  377. border: 1px solid #EFE1D5;
  378. display: flex;
  379. justify-content: center;
  380. font-size: 24rpx;
  381. font-family: PingFangSC-Regular, PingFang SC;
  382. font-weight: 400;
  383. color: #764D49;
  384. }
  385. .timeTbox2{
  386. height: 60rpx;
  387. }
  388. .timeviewTxt{
  389. line-height: 41rpx;
  390. padding-top: 10rpx;
  391. }
  392. .timeDivTxt{
  393. line-height: 60rpx;
  394. padding: 0 10rpx;
  395. }
  396. .timeK{
  397. height: 41rpx;
  398. line-height: 41rpx;
  399. color: #FFFFFF;
  400. width: 41rpx;
  401. text-align: center;
  402. background: #F03B3B;
  403. border-radius: 6rpx;
  404. margin-top: 9rpx;
  405. margin-left: 15rpx;
  406. margin-right: 15rpx;
  407. }
  408. .bottomHz{
  409. width: 750rpx;
  410. /* height: 180rpx; */
  411. position: fixed;left: 0;
  412. bottom: 0;
  413. border-radius: 24rpx 24rpx 0px 0px;
  414. }
  415. .box{
  416. background: #F4F5F7;
  417. min-height: 100vh;
  418. }
  419. .buySHop{
  420. display: flex;
  421. justify-content: space-between;
  422. font-size:28rpx ;
  423. color: #666666;
  424. padding-top: 30rpx;
  425. }
  426. .buybtnBox{
  427. width: 750rpx;
  428. height: 120rpx;
  429. background: #FFFFFF;
  430. box-shadow: 0px -2px 10px 0px rgba(153,153,153,0.2000);
  431. padding-top: 20rpx;
  432. }
  433. .buyBox{
  434. width: 750rpx;
  435. height: 100vh;
  436. position: fixed;
  437. left: 0;
  438. top: 0;
  439. background: rgba(0,0,0,0.5);
  440. }
  441. .buyBtn{
  442. width: 690rpx;
  443. height: 74rpx;
  444. background: #D53533;
  445. border-radius: 37rpx;
  446. text-align: center;
  447. line-height: 74rpx;
  448. color: #FFFFFF;
  449. font-size: 30rpx;
  450. margin-left: 30rpx;
  451. }
  452. .buyShopRightJt{
  453. width: 12rpx;
  454. height: 20rpx;
  455. margin-top: 8rpx;
  456. margin-left: 10rpx;
  457. }
  458. .buyShopRight{
  459. display: flex;
  460. }
  461. .bugNUm{
  462. border-top: 1px solid #EEEEEE;
  463. border-Bottom: 1px solid #EEEEEE;
  464. padding: 28rpx 0;
  465. display: flex;
  466. justify-content: space-between;
  467. }
  468. .buyXg{
  469. width: 110rpx;
  470. height: 36rpx;
  471. border-radius: 4rpx;
  472. border: 1px solid #F19D01;
  473. text-align: center;
  474. line-height: 36rpx;
  475. color: #F19D01;
  476. font-size: 24rpx;
  477. }
  478. .numJj{
  479. width: 44rpx;
  480. height: 44rpx;
  481. background: #F4F5F7;
  482. border-radius: 0px 6rpx 6rpx 0px;
  483. text-align: center;
  484. line-height: 44rpx;
  485. font-size: 32rpx;
  486. color: #999999;
  487. }
  488. .bugNUmLeft{
  489. display: flex;
  490. }
  491. .buySl{
  492. color: #666666;font-size: 28rpx;padding-right: 30rpx;
  493. }
  494. .goodsnum{
  495. width: 88rpx;
  496. height: 44rpx;
  497. background: #F4F5F7;
  498. line-height: 44rpx;
  499. text-align: center;
  500. font-weight: 500;
  501. color: #333333;
  502. font-size: 24rpx;
  503. margin: 0 4rpx;
  504. }
  505. .goodsnumInput{
  506. width: 88rpx;
  507. height: 44rpx;
  508. background: #F4F5F7;
  509. line-height: 44rpx;
  510. text-align: center;
  511. font-weight: 500;
  512. color: #333333;
  513. font-size: 24rpx;
  514. }
  515. .numJsbox{
  516. display: flex;
  517. }
  518. .buyCont{
  519. position: absolute;
  520. left: 0;
  521. bottom: 0;
  522. width: 750rpx;
  523. height: 688rpx;
  524. background: #FFFFFF;
  525. border-radius: 26rpx 26rpx 0px 0px;
  526. }
  527. .buyNumBox{
  528. padding: 30rpx;
  529. padding-top: 10rpx;
  530. padding-bottom: 70rpx;
  531. }
  532. .buyContCh{
  533. position: absolute;
  534. top: 53rpx;
  535. right: 36rpx;
  536. width: 36rpx;
  537. height: 36rpx;
  538. }
  539. .hotGoodsLine{
  540. margin-top: 30rpx;
  541. padding: 20rpx;
  542. background: #FFFFFF;
  543. border-radius: 16rpx;
  544. display: flex;
  545. }
  546. .hotGoodsLineImg{
  547. width: 208rpx;
  548. height: 194rpx;
  549. border-radius: 16rpx;
  550. border: 1px solid #EEEEEE;
  551. }
  552. .goodsName2{
  553. font-size: 28rpx;
  554. font-family: PingFangSC-Regular, PingFang SC;
  555. font-weight: 400;
  556. color: #333333;
  557. line-height: 40rpx;
  558. text-overflow: -o-ellipsis-lastline;
  559. overflow: hidden;
  560. text-overflow: ellipsis;
  561. display: -webkit-box;
  562. -webkit-line-clamp: 2;
  563. line-clamp: 2;
  564. -webkit-box-orient: vertical;
  565. min-height: 80rpx;
  566. width: 370rpx;
  567. }
  568. .hotGoodsLineRIght{
  569. padding-left: 24rpx;
  570. }
  571. .goodsPrice{
  572. display: flex;
  573. padding-top: 10rpx;
  574. }
  575. .goodsPrice11{
  576. font-size: 24rpx;
  577. font-weight: 400;
  578. color: #FF0000;
  579. padding-top: 8rpx;
  580. padding-right: 10rpx;
  581. }
  582. .goodsPrice22{
  583. font-size: 22rpx;
  584. font-weight: 400;
  585. color: #FF0000;
  586. padding-top: 8rpx;
  587. }
  588. .goodsPrice33{
  589. font-size: 32rpx;
  590. font-weight: 500;
  591. color: #FF0000;
  592. }
  593. .goodsPrice44{
  594. font-size: 24rpx;
  595. font-weight: 400;
  596. color: #999999;
  597. padding-top: 8rpx;
  598. padding-left: 5rpx;
  599. text-decoration:line-through;
  600. }
  601. .bottomBox{
  602. width: 750rpx;
  603. height: 120rpx;
  604. background: #FFFFFF;
  605. box-shadow: 0px -2px 10px 0px rgba(153,153,153,0.2000);
  606. padding-bottom: env(safe-area-inset-bottom);
  607. background: #FFFFFF;
  608. display: flex;
  609. position: fixed;
  610. left: 0;
  611. justify-content: space-between;
  612. bottom: 0;
  613. }
  614. .bottomTxt{
  615. color: #666666;font-size: 22rpx;
  616. }
  617. .bottomImg{
  618. width: 48rpx;height: 48rpx;
  619. }
  620. .bottomImgBox{
  621. text-align: center;
  622. padding-top: 20rpx;
  623. padding-left: 40rpx;
  624. }
  625. .shareBtn{
  626. width: 100rpx;
  627. background: #FFFFFF;
  628. }
  629. button::after{
  630. border: none;
  631. }
  632. button{
  633. position: relative;
  634. display: block;
  635. margin-left: 0;
  636. margin-right: 0;
  637. padding-left: 0px;
  638. padding-right: 0px;
  639. box-sizing: border-box;
  640. // font-size: 18px;
  641. text-align: center;
  642. text-decoration: none;
  643. // line-height: 1;
  644. line-height: 1.35;
  645. // border-radius: 5px;
  646. -webkit-tap-highlight-color: transparent;
  647. overflow: hidden;
  648. color: #000000;
  649. background-color: #fff;
  650. height: 100%;
  651. }
  652. .bottomBtn{
  653. width: 204rpx;
  654. height: 74rpx;
  655. background: #D53533;
  656. border-radius: 37rpx;
  657. line-height: 74rpx;
  658. text-align: center;
  659. color: #FFFFFF;
  660. font-size: 30rpx;
  661. margin-top: 23rpx;
  662. margin-left: 70rpx;
  663. margin-right: 30rpx;
  664. }
  665. .bottomBtn2{
  666. width: 450rpx;
  667. height: 74rpx;
  668. background: #DDDDDD;
  669. border-radius: 37rpx;
  670. line-height: 74rpx;
  671. text-align: center;
  672. color: #FFFFFF;
  673. font-size: 30rpx;
  674. margin-top: 23rpx;
  675. margin-left: 70rpx;
  676. }
  677. .goodsDetailTitle{
  678. color: #333333;
  679. font-size: 30rpx;
  680. font-weight: 500;
  681. background: #FFFFFF;
  682. padding: 20rpx 24rpx;
  683. }
  684. .goodsDetail{
  685. margin-top: 20rpx;
  686. padding-bottom: 30rpx;
  687. background: #FFFFFF;
  688. }
  689. .goodsDetail img{
  690. width: 750rpx;
  691. }
  692. .goodsDetail image{
  693. width: 750rpx;
  694. }
  695. .mealBox{
  696. background: #FFFFFF;
  697. padding: 20rpx 24rpx;
  698. margin-top: 20rpx;
  699. }
  700. .mealTopRight{
  701. display: flex;
  702. }
  703. .mealLine{
  704. margin-top: 20rpx;
  705. }
  706. .itemname{
  707. width: 441rpx;
  708. text-overflow: -o-ellipsis-lastline;
  709. overflow: hidden;
  710. text-overflow: ellipsis;
  711. display: -webkit-box;
  712. -webkit-line-clamp: 2;
  713. line-clamp: 2;
  714. -webkit-box-orient: vertical;
  715. }
  716. .itemline{
  717. display: flex;
  718. padding: 10rpx 20rpx;
  719. justify-content: space-between;
  720. line-height: 37rpx;
  721. font-size: 26rpx;
  722. color: #333333;
  723. }
  724. .itemlinebOX{
  725. border-radius: 0px 0px 10px 10px;
  726. border: 2Rpx solid #EEEEEE;
  727. padding: 10rpx 0;
  728. }
  729. .mealTop{
  730. display: flex;
  731. justify-content: space-between;
  732. height: 72rpx;
  733. background: #F19D01 linear-gradient(90deg, #FFF7EB 0%, #FFEFD5 100%);
  734. border-radius: 10rpx 10rpx 0px 0px;
  735. line-height: 72rpx;
  736. color: #333333;
  737. font-size: 26rpx;
  738. padding: 0 20rpx;
  739. }
  740. .fwlcTitle{
  741. color: #333333;font-size: 30rpx;font-weight: 500;
  742. }
  743. .fuwuliucBox{
  744. background: #FFFFFF;
  745. padding: 20rpx 24rpx;
  746. margin-top: 20rpx;
  747. }
  748. .fwlcxian{
  749. padding:30rpx 42rpx 10rpx 42rpx ;
  750. display: flex;
  751. }
  752. .fwlcyuan{
  753. width: 16rpx;
  754. height: 16rpx;
  755. background: #FF0000;
  756. border-radius: 50%;
  757. }
  758. .fwHx{
  759. height: 4rpx;
  760. background: #FF0000;
  761. width: 186rpx;
  762. margin-top: 7rpx;
  763. }
  764. .fwTxt{
  765. display: flex;
  766. justify-content: space-between;
  767. }
  768. .fwTxtline{
  769. color: #333333;
  770. line-height: 37px;
  771. font-size: 26rpx;
  772. }
  773. .swiper{
  774. width: 750rpx;
  775. height: 700rpx;
  776. background: #FFFFFF;
  777. border-bottom: 1px solid #EEEEEE;
  778. }
  779. .swiper-item{
  780. width: 750rpx;
  781. height: 700rpx;
  782. }
  783. .swiper-itemImg{
  784. width: 750rpx;
  785. height: 700rpx;
  786. }
  787. .shopCtop{
  788. display: flex;
  789. padding: 20rpx 24rpx;
  790. justify-content: space-between;
  791. background: #FFFFFF;
  792. }
  793. .goodsPrice{
  794. display: flex;
  795. }
  796. .goodsPrice1{
  797. font-size: 24rpx;
  798. font-weight: 400;
  799. color: #FF0000;
  800. padding-top: 14rpx;
  801. padding-right: 14rpx;
  802. }
  803. .goodsPrice2{
  804. font-size: 28rpx;
  805. font-weight: 400;
  806. color: #FF0000;
  807. padding-top: 10rpx;
  808. }
  809. .goodsPrice3{
  810. font-size: 40rpx;
  811. font-weight: 500;
  812. color: #FF0000;
  813. }
  814. .goodsPrice4{
  815. font-size: 24rpx;
  816. font-weight: 400;
  817. color: #999999;
  818. padding-top: 14rpx;
  819. text-decoration:line-through;
  820. padding-left: 10rpx;
  821. }
  822. .Sold{
  823. font-weight: 400;
  824. color: #999999;
  825. font-size: 24rpx;
  826. padding-top: 18rpx;
  827. }
  828. .goodsName{
  829. font-size: 30rpx;
  830. line-height: 42rpx;
  831. font-weight: 500;
  832. color: #333333;
  833. padding: 20rpx 24rpx;
  834. padding-top: 0;
  835. padding-bottom: 16rpx;
  836. }
  837. .goodsMd{
  838. font-weight: 400;
  839. color: #999999;
  840. font-size: 26rpx;
  841. padding: 0 24rpx;
  842. padding-bottom: 20rpx;
  843. }
  844. .shopCont{
  845. background: #FFFFFF;
  846. }
  847. .modeBox{
  848. margin-top:20rpx ;
  849. padding: 5rpx 0;
  850. background: #FFFFFF;
  851. }
  852. .modeline{
  853. display: flex;
  854. padding: 15rpx 24rpx;
  855. }
  856. .modelineLeft{
  857. color: #999999;
  858. font-size: 26rpx;
  859. width: 150rpx;
  860. }
  861. .modeLineRight{
  862. color: #333333;
  863. font-size: 26rpx;
  864. width: 550rpx;
  865. }
  866. .expireNumber{
  867. width: 110rpx;
  868. text-align: right;
  869. }
  870. .authorizBox{
  871. width: 100vw;
  872. height: 100vh;
  873. background: rgba(0, 0, 0, 0.5);
  874. position: fixed;
  875. top: 0;
  876. left: 0;
  877. }
  878. .authorizCont{
  879. margin-top: 30vh;
  880. width: 564rpx;
  881. height: 408rpx;
  882. background: #FFFFFF;
  883. border-radius: 24rpx;
  884. margin-left: 93rpx;
  885. position: relative;
  886. }
  887. .authorizCloseImg{
  888. width: 62rpx;
  889. height: 62rpx;
  890. }
  891. .sqLogoBox{
  892. width: 180rpx;
  893. height: 180rpx;
  894. background: #FFFFFF;
  895. border-radius: 90rpx;
  896. text-align: center;
  897. position: absolute;
  898. top: -50rpx;
  899. left: 192rpx;
  900. }
  901. .authorizName{
  902. color: #333333;
  903. line-height: 42rpx;
  904. font-size: 30rpx;
  905. text-align: center;
  906. padding-top: 58rpx;
  907. }
  908. .authorizMs{
  909. color: #999999;
  910. line-height: 36rpx;
  911. font-size: 26rpx;
  912. width: 452rpx;
  913. padding-top: 24rpx;
  914. text-align: center;
  915. margin-left: 56rpx;
  916. }
  917. .authorizContbutton{
  918. width: 422rpx;
  919. height: 88rpx;
  920. background: #D53533;
  921. border-radius: 44rpx;
  922. line-height: 88rpx;
  923. text-align: center;
  924. font-size:30rpx;
  925. color: #FFFFFF;
  926. margin-top: 62rpx;
  927. margin-left:71rpx;
  928. }
  929. </style>