pindanDet.vue 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220
  1. <template>
  2. <view class="">
  3. <view class="margin-tb-sm bg-white padding">
  4. <view class="flex justify-between align-center">
  5. <view class="flex align-center">
  6. <image src="../../../static/tabbar/index.png" style="width: 40rpx;height: 37rpx;" mode=""></image>
  7. <view class="text-xl text-bold text-black margin-lr-xs">{{goodsShop.shopName}}</view>
  8. <!-- <image src="../../../static/images/index/right.png" style="width: 14rpx;height: 24rpx;" mode=""></image> -->
  9. </view>
  10. <view class="flex Switch ">
  11. <view @click="tabSwidth(1)" :class="orderType==1?'selSwitch':''">自取</view>
  12. <view @click="tabSwidth(2)" :class="orderType==2?'selSwitch':''">外卖</view>
  13. </view>
  14. </view>
  15. <view style="font-size: 20upx;color: #FF130A;margin-top: 10rpx;">
  16. <view>加入购物车就可以拼单哦拼单人购物车有商品先清空再添加</view>
  17. </view>
  18. <!-- <view class="text-gray">距离您16km</view> -->
  19. <view class="flex justify-between margin-top">
  20. <view class="btn1" @click="cancel()">取消拼单</view>
  21. <button class="btn" open-type="share">分享好友</button>
  22. </view>
  23. </view>
  24. <view v-if="myGoodList.length" class="margin-tb-sm bg-white padding">
  25. <view class="flex justify-between align-center padding-bottom">
  26. <image :src="myGoodList[0].avatar" mode="" style="width: 48rpx;height: 48rpx;border-radius: 48rpx;">
  27. </image>
  28. <view class="flex align-center flex-sub margin-left-sm">
  29. <view class="text-black text-lg text-bold">{{myGoodList[0].nickName}}</view>
  30. <!-- <view class="margin-left-sm">我自己</view> -->
  31. </view>
  32. <view class="flex">
  33. <view class="sBtn1" @click="clear()" v-if="userId == myGoodList[0].userId">清空</view>
  34. <view class="sBtn2" @click="goGoodsList" v-if="userId == myGoodList[0].userId">去点餐</view>
  35. <!-- <view class="sBtn2" @click="goGoodsList">修改订单</view> -->
  36. </view>
  37. </view>
  38. <u-line color="#E6E6E6" />
  39. <view class="padding-top" v-for="(item,index) in myGoodList" :key='index'>
  40. <view class="flex justify-between">
  41. <view class="text-black text-lg text-bold">{{item.goodsName}}</view>
  42. <view v-if="item.skuMessage">{{item.skuMessage}}</view>
  43. <view class="text-lg text-gray"><text class="text-sm">x</text>{{item.goodsNum}}</view>
  44. </view>
  45. <view v-if="index==(myGoodList.length-1)" class="flex justify-between margin-top-sm ">
  46. <view class="text-gray">总计</view>
  47. <view class="text-lg text-black text-bold"><text class="text-sm">¥</text>{{item.goodsPrice}}</view>
  48. </view>
  49. </view>
  50. </view>
  51. <view v-if="otherGoodList.length>0" v-for="(orders,index) in otherGoodList" :key='index'>
  52. <view v-if="(index!=0 && orders.userId!=otherGoodList[index-1].userId) || index==0"
  53. class="margin-tb-sm bg-white padding">
  54. <view class="flex justify-between align-center padding-bottom">
  55. <image :src="orders.avatar" style="width: 48rpx;height: 48rpx;border-radius: 48rpx;"></image>
  56. <view class="flex align-center flex-sub margin-left-sm">
  57. <view class="text-black text-lg text-bold">{{orders.nickName}}</view>
  58. </view>
  59. <view class="flex">
  60. <view class="sBtn3" @click="goGoodsList" v-if="userId == orders.userId">去点餐</view>
  61. </view>
  62. </view>
  63. <u-line color="#E6E6E6" />
  64. <view v-for="(item,index) in otherGoodList" :key='index'>
  65. <view class="padding-top" v-if="item.userId==orders.userId">
  66. <view class="flex justify-between">
  67. <view class="text-black text-lg text-bold">{{item.goodsName}}</view>
  68. <view v-if="item.skuMessage">{{item.skuMessage}}</view>
  69. <view class="text-lg text-gray"><text class="text-sm">x</text>{{item.goodsNum}}</view>
  70. </view>
  71. <view v-if="item.userId!=otherGoodList[index+1].userId"
  72. class="flex justify-between margin-top-sm ">
  73. <view class="text-gray">总计</view>
  74. <view class="text-lg text-black text-bold"><text class="text-sm">¥</text>{{item.goodsPrice}}
  75. </view>
  76. </view>
  77. </view>
  78. </view>
  79. </view>
  80. </view>
  81. <empty v-if="!myGoodList.length && !otherGoodList.length" content='暂无商品'></empty>
  82. <view style="height: 100rpx;"></view>
  83. <!-- 结算 -->
  84. <!-- 结算 -->
  85. <view class="settlement" @click="isPopupShow">
  86. <view class="settlement_img">
  87. <image src="../../../static/images/index/diancan.png" mode=""></image>
  88. <view class="settlement_hot">{{number}}</view>
  89. </view>
  90. <view class="settlement_le">
  91. <text>¥</text>{{totalPrice}}
  92. </view>
  93. <view class="settlement_ri" @click.stop="goConfirm()">去结算</view>
  94. </view>
  95. <!-- 购物车弹窗 -->
  96. <u-popup v-model="popupShow" mode="bottom" border-radius="20">
  97. <view class="padding">
  98. <view class="flex justify-between align-center margin-bottom-sm">
  99. <view class="text-bold text-black text-df">拼单餐品</view>
  100. <view class="flex align-center">
  101. <image src="../../../static/images/index/delete.png" style="width: 28rpx;height: 31rpx;"
  102. mode=""></image>
  103. <text class="margin-left-xs" @click="cancel">取消拼单</text>
  104. </view>
  105. </view>
  106. <scroll-view scroll-y='true' class="popup">
  107. <view v-for="(item,ind) in goodsList.orderGoodsList[0]" :key='ind'>
  108. <view class="flex align-center margin-tb-sm">
  109. <image :src="item.goodsPicture[0]" style="width: 96rpx;height: 96rpx;border-radius: 10rpx;">
  110. </image>
  111. <view class="margin-left-sm">
  112. <view>{{item.goodsName}}</view>
  113. <view v-if="item.skuMessage">{{item.skuMessage}}</view>
  114. </view>
  115. </view>
  116. <view class="flex justify-between align-center">
  117. <view class="text-bold text-sm">¥<text class="text-lg">{{item.goodsPrice}}</text>
  118. </view>
  119. <view class="flex align-center justify-between">
  120. <view @click.stop="noAdd(item,ind)">
  121. <image src="../../../static/images/index/jian.png"
  122. style="width: 54rpx;height: 54rpx;"></image>
  123. </view>
  124. <view class="text-center margin-lr-xs">{{item.goodsNum}}</view>
  125. <view @click.stop="add(item,ind)">
  126. <image src="../../../static/images/index/add.png"
  127. style="width: 50rpx;height: 50rpx;"></image>
  128. </view>
  129. </view>
  130. </view>
  131. </view>
  132. </scroll-view>
  133. </view>
  134. <view class="settlement1 margin-top-lg">
  135. <view class="settlement_img">
  136. <image src="../../../static/images/index/diancan.png" mode=""></image>
  137. <view class="settlement_hot">{{number}}</view>
  138. </view>
  139. <view class="settlement_le">
  140. <text>¥</text>{{totalPrice}}
  141. </view>
  142. <view class="settlement_ri" @click.stop="goConfirm()">去结算</view>
  143. </view>
  144. </u-popup>
  145. </view>
  146. </template>
  147. <script>
  148. import empty from '@/components/empty.vue'
  149. export default {
  150. components: {
  151. empty
  152. },
  153. onShareAppMessage(res) { //发送给朋友
  154. return {
  155. title: '快来和我一起拼个单吧!',
  156. path: '/pages/index/index?shopId=' + this.shopId + '&orderId=' + this.orderId,
  157. imageUrl: this.tuiguangImg,
  158. }
  159. },
  160. onShareTimeline(res) { //分享到朋友圈
  161. return {
  162. title: "快来和我一起拼个单吧!",
  163. path: '/pages/index/index?shopId=' + this.shopId + '&orderId=' + this.orderId,
  164. imageUrl: this.tuiguangImg,
  165. }
  166. },
  167. data() {
  168. return {
  169. dataList:[],
  170. orderType: 2,
  171. shopId: '',
  172. tuiguangImg: '',
  173. goodsNum: 0,
  174. totalPrice: 0,
  175. orderId: '',
  176. otherGoodList: [],
  177. myGoodList: [],
  178. goodsList: [],
  179. userId: '',
  180. popupShow: false,
  181. goodsShop: {},
  182. number: 0,
  183. }
  184. },
  185. onLoad(e) {
  186. this.shopId = e.shopId
  187. this.orderId = e.orderId ? e.orderId : uni.getStorageSync('orderId')
  188. this.userId = uni.getStorageSync('userId')
  189. this.getData();
  190. },
  191. onShow() {
  192. this.getOrderDetail();
  193. this.getGoodList()
  194. this.$Request.getT('/app/common/type/238').then(res => {
  195. if (res.code === 0) {
  196. this.tuiguangImg = res.data.value;
  197. }
  198. });
  199. },
  200. methods: {
  201. // 添加数量
  202. add(item, index) {
  203. // this.count++;
  204. console.log(item, index)
  205. this.goodsList.orderGoodsList[0][index].goodsNum++
  206. let data = {
  207. orderGoodsId: this.goodsList.orderGoodsList[0][index].id,
  208. type: 1,
  209. num: 1,
  210. shopId: this.shopId
  211. }
  212. this.$Request.get("/app/order/updateGoodsNum", data).then(res => {
  213. if (res.code == 0) {
  214. this.getGoodList()
  215. this.getOrderList();
  216. } else {
  217. this.$queue.showToast(res.msg);
  218. this.goodsList.orderGoodsList[0][index].goodsNum--
  219. }
  220. });
  221. },
  222. // 减少数量
  223. noAdd(item, index) {
  224. console.log(item, index)
  225. this.goodsList.orderGoodsList[0][index].goodsNum--
  226. // this.count--;
  227. let data = {
  228. orderGoodsId: this.goodsList.orderGoodsList[0][index].id,
  229. type: 2,
  230. num: 1,
  231. shopId: this.shopId
  232. }
  233. this.$Request.get("/app/order/updateGoodsNum", data).then(res => {
  234. if (res.code == 0) {
  235. this.getGoodList()
  236. this.getOrderList();
  237. }
  238. });
  239. },
  240. isPopupShow() {
  241. // uni.showToast({
  242. // title: '请返回到购物车模块操作',
  243. // icon: 'none'
  244. // })
  245. if (this.myGoodList.length > 0) {
  246. if (this.userId != this.myGoodList[0].userId) {
  247. uni.showToast({
  248. title: '请联系拼单发起人操作',
  249. icon: "none"
  250. })
  251. return
  252. } else {
  253. this.getOrderList();
  254. }
  255. } else {
  256. uni.showToast({
  257. title: '请联系拼单发起人操作',
  258. icon: "none"
  259. })
  260. return
  261. }
  262. },
  263. clear() {
  264. if (this.myGoodList.length > 0) {
  265. if (this.userId != this.myGoodList[0].userId) {
  266. uni.showToast({
  267. title: '请联系拼单发起人操作',
  268. icon: "none"
  269. })
  270. return
  271. }
  272. }
  273. let that = this
  274. uni.showModal({
  275. title: '提示',
  276. content: '确定清空我的订单吗',
  277. success: function(res) {
  278. if (res.confirm) {
  279. console.log('用户点击确定');
  280. let data = {
  281. shopId: that.shopId,
  282. }
  283. that.$Request.post("/app/order/emptyShoppingTrolley", data).then(res => {
  284. if (res.code == 0) {
  285. that.myGoodList = [];
  286. that.getGoodList()
  287. } else {
  288. that.$queue.showToast(res.msg);
  289. }
  290. });
  291. } else if (res.cancel) {
  292. console.log('用户点击取消');
  293. }
  294. }
  295. });
  296. },
  297. // 取消订单
  298. cancel(e) {
  299. if (this.myGoodList.length > 0) {
  300. //检查是不是发起人
  301. if (this.userId != this.myGoodList[0].userId) {
  302. uni.showToast({
  303. title: '请联系拼单发起人操作',
  304. icon: "none"
  305. })
  306. return
  307. }
  308. }
  309. let that = this
  310. console.log(e)
  311. uni.showModal({
  312. title: '提示',
  313. content: '确认取消订单吗?',
  314. success: function(res) {
  315. if (res.confirm) {
  316. console.log('用户点击确定');
  317. let data = {
  318. orderId: that.orderId
  319. }
  320. that.$Request.post("/app/order/deleteOrder", data).then(res => {
  321. if (res.code == 0) {
  322. uni.showToast({
  323. title: '订单取消成功',
  324. icon: 'none'
  325. })
  326. uni.removeStorageSync('orderId')
  327. setTimeout(function() {
  328. uni.navigateBack()
  329. }, 1000)
  330. } else {
  331. uni.showToast({
  332. title: res.msg,
  333. icon: 'none'
  334. })
  335. }
  336. });
  337. } else if (res.cancel) {
  338. console.log('用户点击取消');
  339. }
  340. }
  341. });
  342. },
  343. // 切换外卖/自提
  344. tabSwidth(e) {
  345. this.orderType = e
  346. this.getOrderList()
  347. },
  348. goGoodsList() {
  349. uni.setStorageSync('types', 1)
  350. uni.navigateBack({
  351. })
  352. // uni.navigateTo({
  353. // url: '/pages/index/shop/goodsList?shopId=' + this.shopId
  354. // })
  355. },
  356. // 获取购物车商品列表
  357. getOrderList() {
  358. // 显示加载提示
  359. uni.showLoading({
  360. title: '加载中', // 加载提示文本
  361. mask: true, // 是否显示透明蒙层,防止触摸穿透
  362. });
  363. let data = {
  364. shopId: this.shopId,
  365. page: 1,
  366. limit: 1000,
  367. status: 1,
  368. // orderType: this.orderType
  369. }
  370. this.$Request.get("/app/order/selectAllOrderList", data).then(res => {
  371. if (res.code == 0 && res.data.pageUtils.list.length) {
  372. this.goodsList = res.data.pageUtils.list[0]
  373. if (this.goodsList && this.goodsList.orderGoodsList && this.goodsList.orderGoodsList[0]) {
  374. this.totalPrice = parseFloat(parseFloat(res.data.money).toFixed(2));
  375. this.goodsNum = 0
  376. this.goodsList.orderGoodsList[0].forEach(res => {
  377. res.goodsPicture = res.goodsPicture.split(',')
  378. this.goodsNum += res.goodsNum
  379. })
  380. this.popupShow = true
  381. if (!this.goodsList.orderGoodsList[0].length) {
  382. this.popupShow = false
  383. }
  384. }
  385. }
  386. uni.hideLoading()
  387. });
  388. },
  389. getOrderDetail() {
  390. let data = {
  391. orderId: this.orderId
  392. };
  393. this.$Request.getT('/app/order/selectOrderById',data).then(res => {
  394. if (res.code == 0 && res.data) {
  395. if (res.data.isPay && res.data.isPay == 1) {
  396. uni.showToast({
  397. title: '拼单已结束',
  398. icon: 'none'
  399. })
  400. setTimeout(function() {
  401. uni.removeStorageSync('orderId')
  402. uni.navigateBack()
  403. }, 1000)
  404. }
  405. }
  406. });
  407. },
  408. getGoodList() {
  409. this.number = 0;
  410. let data = {
  411. orderId: this.orderId,
  412. }
  413. this.$Request.get("/app/order/selectShareTheBill", data).then(res => {
  414. if (res.code == 0) {
  415. if (!res.data) {
  416. uni.showToast({
  417. title: '拼单已结束',
  418. icon: 'none'
  419. })
  420. setTimeout(function() {
  421. uni.removeStorageSync('orderId')
  422. uni.navigateBack()
  423. }, 1000)
  424. }
  425. this.goodsShop = res.data.goodsShop
  426. // this.goodsList = res.data.orderGoodsList
  427. this.myGoodList = res.data.parentShareTheBill
  428. let mySum = 0
  429. for (var i = 0; i < this.myGoodList.length; i++) {
  430. if (i == 0) {
  431. mySum = parseFloat(parseFloat(parseFloat(this.myGoodList[i].goodsPrice) *
  432. parseFloat(this.myGoodList[i].goodsNum)).toFixed(2))
  433. this.number += this.myGoodList[i].goodsNum
  434. } else {
  435. mySum = parseFloat(parseFloat(mySum + parseFloat(this.myGoodList[i].goodsPrice) *
  436. parseFloat(this.myGoodList[i].goodsNum)).toFixed(2))
  437. this.number += this.myGoodList[i].goodsNum
  438. }
  439. if (i == (this.myGoodList.length - 1)) {
  440. this.myGoodList[i].goodsPrice = mySum
  441. this.totalPrice = mySum
  442. }
  443. }
  444. this.otherGoodList = res.data.orderGoodsList
  445. var sum = 0
  446. for (var i = 0; i < this.otherGoodList.length; i++) {
  447. if (i == 0) {
  448. sum = parseFloat(parseFloat(parseFloat(this.otherGoodList[i].goodsPrice) *
  449. parseFloat(this.otherGoodList[i].goodsNum)).toFixed(2))
  450. this.number += this.otherGoodList[i].goodsNum
  451. } else {
  452. this.number += this.otherGoodList[i].goodsNum
  453. if (this.otherGoodList[i].userId == this.otherGoodList[i - 1].userId) {
  454. sum = parseFloat(parseFloat(sum + parseFloat(this.otherGoodList[i]
  455. .goodsPrice) * parseFloat(this.otherGoodList[i].goodsNum)).toFixed(
  456. 2))
  457. } else {
  458. this.otherGoodList[i - 1].goodsPrice = sum
  459. sum = parseFloat(parseFloat(parseFloat(this.otherGoodList[i].goodsPrice) *
  460. parseFloat(this.otherGoodList[i].goodsNum)).toFixed(2))
  461. }
  462. }
  463. if (i == (this.otherGoodList.length - 1)) {
  464. this.otherGoodList[i].goodsPrice = sum
  465. this.totalPrice = parseFloat(parseFloat(parseFloat(this.totalPrice) + parseFloat(
  466. sum)).toFixed(2))
  467. // parseFloat(parseFloat(mySum).toFixed(2))
  468. }
  469. }
  470. } else {
  471. uni.removeStorageSync('orderId')
  472. this.$queue.showToast(res.msg);
  473. setTimeout(function() {
  474. uni.navigateBack()
  475. }, 1000)
  476. }
  477. });
  478. },
  479. // 获取店铺信息
  480. getData() {
  481. let data = {
  482. shopId: this.shopId
  483. }
  484. this.$Request.get("/app/goods/selectGoodsList", data).then(res => {
  485. if (res.code == 0 && res.data) {
  486. this.dataList = res.data.list
  487. }
  488. });
  489. },
  490. // 去结算
  491. goConfirm() {
  492. if (!this.userId) {
  493. uni.navigateTo({
  494. url: '/pages/public/login'
  495. })
  496. return
  497. }
  498. if (this.myGoodList.length > 0) {
  499. if (this.userId != this.myGoodList[0].userId) {
  500. uni.showToast({
  501. title: '请联系拼单发起人结算订单',
  502. icon: "none"
  503. })
  504. return
  505. }
  506. }
  507. if (this.myGoodList.length > 0 || this.otherGoodList.length > 0) {
  508. let that = this;
  509. let goodstr1 = 0 //商品库的 必须次数
  510. let goodstr2 = 0 //购物车的 必须次数
  511. let regex = new RegExp('必选', 'g');
  512. let dataList = JSON.stringify(this.dataList)
  513. if (dataList.match(regex)) {
  514. goodstr1 = dataList.match(regex).length
  515. console.log("goodstr1----" + goodstr1)
  516. if (dataList.indexOf('必选') != -1) { //检测商品是否存在必选
  517. let goodsList = JSON.stringify(that.myGoodList)
  518. if (goodsList.match(regex)) {
  519. goodstr2 = goodsList.match(regex).length
  520. console.log("goodstr2----" + goodstr2)
  521. if (goodstr1 == goodstr2) { //检查购物车商品是否存在必须
  522. uni.navigateTo({
  523. url: '/pages/index/shop/confirmOrder?shopId=' + that.shopId + '&orderType=2&orderId=' +
  524. that.orderId
  525. })
  526. } else {
  527. uni.showToast({
  528. title: "有" + goodstr1 + "个必选商品,请选择后结算",
  529. icon: "none"
  530. })
  531. return
  532. }
  533. } else {
  534. uni.showToast({
  535. title: "有" + goodstr1 + "个必选商品,请选择后结算",
  536. icon: "none"
  537. })
  538. return
  539. }
  540. }
  541. } else {
  542. uni.navigateTo({
  543. url: '/pages/index/shop/confirmOrder?shopId=' + that.shopId + '&orderType=2&orderId=' +
  544. that.orderId
  545. })
  546. }
  547. } else {
  548. uni.showToast({
  549. title: '请先添加商品',
  550. icon: "none"
  551. })
  552. }
  553. },
  554. }
  555. }
  556. </script>
  557. <style>
  558. .Switch {
  559. width: 164rpx;
  560. height: 62rpx;
  561. color: #FFFFFF;
  562. background: #FCD202;
  563. border-radius: 30rpx;
  564. display: flex;
  565. align-items: center;
  566. padding: 2rpx;
  567. }
  568. .Switch>view {
  569. /* flex: 1; */
  570. width: 80rpx;
  571. text-align: center;
  572. line-height: 62rpx;
  573. height: 58rpx;
  574. }
  575. .selSwitch {
  576. color: #333333;
  577. background: #FFFFFF;
  578. border-radius: 30rpx;
  579. }
  580. .btn {
  581. width: 320rpx;
  582. height: 88rpx;
  583. color: #333333;
  584. font-size: 30rpx;
  585. font-weight: 500;
  586. text-align: center;
  587. line-height: 88rpx;
  588. border-radius: 50rpx;
  589. background: #FCD202;
  590. border: 2rpx solid #FCD202;
  591. margin: 0;
  592. }
  593. button::after {
  594. border: 2rpx solid #FCD202;
  595. }
  596. .btn1 {
  597. width: 320rpx;
  598. height: 88rpx;
  599. color: #999999;
  600. font-weight: 500;
  601. font-size: 30rpx;
  602. text-align: center;
  603. line-height: 88rpx;
  604. border-radius: 44rpx;
  605. border: 2rpx solid #CCCCCC;
  606. }
  607. .btn2 {
  608. width: 320rpx;
  609. height: 88rpx;
  610. color: #333333;
  611. font-weight: 500;
  612. text-align: center;
  613. line-height: 88rpx;
  614. border-radius: 50rpx;
  615. background: #FCD202;
  616. }
  617. /* 结算 */
  618. .settlement {
  619. width: 94%;
  620. background-color: #000000;
  621. line-height: 3.4;
  622. border-radius: 49rpx;
  623. position: fixed;
  624. bottom: 10rpx;
  625. left: 3%;
  626. display: flex;
  627. justify-content: space-between;
  628. }
  629. .settlement_le {
  630. width: 45%;
  631. padding-left: 20%;
  632. color: #FFFFFF;
  633. font-size: 30rpx;
  634. }
  635. .settlement_le text {
  636. font-size: 22rpx;
  637. }
  638. .settlement_ri {
  639. width: 35%;
  640. background-color: #FCD202;
  641. font-family: PingFang SC;
  642. font-weight: 800;
  643. color: #333333;
  644. text-align: center;
  645. border-top-right-radius: 49rpx;
  646. border-bottom-right-radius: 49rpx;
  647. }
  648. .settlement_img {
  649. width: 91rpx;
  650. height: 96rpx;
  651. position: absolute;
  652. // bottom: 30rpx;
  653. left: 5%;
  654. }
  655. .settlement_img image {
  656. width: 74rpx;
  657. height: 81rpx;
  658. }
  659. .settlement_hot {
  660. width: 35rpx;
  661. height: 35rpx;
  662. line-height: 35rpx;
  663. text-align: center;
  664. border-radius: 50%;
  665. position: absolute;
  666. top: -10rpx;
  667. right: 0;
  668. background-color: #FF130A;
  669. color: #FFFFFF;
  670. font-size: 20rpx;
  671. font-weight: bold;
  672. color: #FFFFFF;
  673. }
  674. .sBtn1 {
  675. width: 128rpx;
  676. height: 48rpx;
  677. color: #999999;
  678. text-align: center;
  679. line-height: 48rpx;
  680. border: 2rpx solid #CCCCCC;
  681. border-radius: 24rpx;
  682. }
  683. .sBtn2 {
  684. width: 128rpx;
  685. height: 48rpx;
  686. color: #FF130A;
  687. text-align: center;
  688. line-height: 48rpx;
  689. border: 2rpx solid #FF130A;
  690. border-radius: 24rpx;
  691. margin-left: 20rpx;
  692. }
  693. .sBtn3 {
  694. width: 170rpx;
  695. height: 48rpx;
  696. color: #999999;
  697. text-align: center;
  698. line-height: 48rpx;
  699. border: 2rpx solid #CCCCCC;
  700. border-radius: 24rpx;
  701. }
  702. .popup {
  703. /* height: 500rpx; */
  704. max-height: 500rpx;
  705. /* overflow-y: auto; */
  706. }
  707. .popup {
  708. /* height: 500rpx; */
  709. max-height: 500rpx;
  710. /* overflow-y: auto; */
  711. }
  712. .tabBtn {
  713. /* background-color: #f6f6fa; */
  714. height: 60rpx;
  715. line-height: 60rpx;
  716. color: #999999;
  717. font-size: 38rpx;
  718. }
  719. .Switch {
  720. width: 164rpx;
  721. height: 62rpx;
  722. color: #FFFFFF;
  723. background: #FCD202;
  724. border-radius: 30rpx;
  725. display: flex;
  726. align-items: center;
  727. padding: 2rpx;
  728. }
  729. .Switch>view {
  730. /* flex: 1; */
  731. width: 80rpx;
  732. text-align: center;
  733. line-height: 62rpx;
  734. height: 58rpx;
  735. }
  736. .selSwitch {
  737. color: #333333;
  738. background: #FFFFFF;
  739. border-radius: 30rpx;
  740. }
  741. .hintPopul {
  742. width: 100%;
  743. height: 100vh;
  744. position: absolute;
  745. top: 0;
  746. background: rgba(0, 0, 0, .4);
  747. }
  748. .content {
  749. position: absolute;
  750. left: 0;
  751. right: 0;
  752. top: 0;
  753. bottom: 0;
  754. margin: auto;
  755. text-align: center;
  756. width: 500rpx;
  757. height: 400rpx;
  758. border-radius: 20rpx;
  759. background-color: #fff;
  760. padding-top: 120rpx;
  761. }
  762. .content image {
  763. position: absolute;
  764. top: -50rpx;
  765. left: 0;
  766. right: 0;
  767. margin: auto;
  768. }
  769. .hintText {
  770. font-size: 30rpx;
  771. }
  772. .VerticalNav.nav {
  773. width: 200upx;
  774. white-space: initial;
  775. }
  776. .VerticalNav.nav .cu-item {
  777. width: 100%;
  778. text-align: center;
  779. background-color: #f1f1f1;
  780. margin: 0;
  781. border: none;
  782. height: 50px;
  783. position: relative;
  784. }
  785. .VerticalNav.nav .cu-item.cur {
  786. background-color: #fff;
  787. }
  788. .VerticalBox {
  789. display: flex;
  790. }
  791. .VerticalMain {
  792. background-color: #f1f1f1;
  793. flex: 1;
  794. }
  795. .detail_describe_text2 {
  796. font-weight: 500;
  797. margin-top: 2%;
  798. color: #999999;
  799. }
  800. .detail_account_bottom {
  801. margin-top: 20rpx;
  802. width: 100%;
  803. display: flex;
  804. justify-content: space-between;
  805. /* margin: 4% 0 3%; */
  806. }
  807. .detail_account_bottom_le {
  808. width: 47.5%;
  809. /* margin-right: 5%; */
  810. border-radius: 44rpx;
  811. text-align: center;
  812. line-height: 2.8;
  813. border: 2rpx solid #FCD202;
  814. }
  815. .detail_account_bottom_ri {
  816. width: 47.5%;
  817. border-radius: 44rpx;
  818. text-align: center;
  819. line-height: 2.8;
  820. background-color: #FCD202;
  821. }
  822. .food_all {
  823. position: relative;
  824. }
  825. .text-through {
  826. text-decoration: line-through
  827. }
  828. /* 食物 */
  829. .food {
  830. width: 100%;
  831. overflow: hidden;
  832. // position: absolute;
  833. // top: 350rpx;
  834. background-color: #FFFFFF;
  835. border-top-left-radius: 18rpx;
  836. border-top-right-radius: 18rpx;
  837. }
  838. .food_address {
  839. margin: 3%;
  840. display: flex;
  841. justify-content: space-between;
  842. align-items: center;
  843. margin-top: 120rpx;
  844. }
  845. .food_address_le {
  846. width: 75%;
  847. }
  848. .food_address_le_top {
  849. display: flex;
  850. align-items: center;
  851. justify-content: space-between;
  852. }
  853. .food_address_le_top_le {
  854. width: 40rpx;
  855. height: 37rpx;
  856. }
  857. .food_address_le_top_le image {
  858. width: 40rpx;
  859. height: 37rpx;
  860. }
  861. .food_address_le_top_ce {
  862. line-height: 1.6;
  863. font-size: 38rpx;
  864. font-weight: 600;
  865. color: #333333;
  866. }
  867. .food_address_le_top_ce_ri {
  868. width: 14rpx;
  869. /* margin: 1% 0 0 2%; */
  870. height: 24rpx;
  871. margin-left: 2%;
  872. }
  873. .food_address_le_top_ce_ri image {
  874. width: 14rpx;
  875. height: 24rpx;
  876. }
  877. .food_address_text {
  878. font-weight: 500;
  879. font-size: 24rpx;
  880. color: #999999;
  881. }
  882. .food_address_ri {
  883. width: 24%;
  884. height: 55rpx;
  885. display: flex;
  886. padding: 0.5% 1%;
  887. background-color: #FCD202;
  888. border-radius: 31rpx;
  889. color: #FFFFFF;
  890. }
  891. .food_address_ri_sty {
  892. flex: 1;
  893. text-align: center;
  894. padding-top: 4%;
  895. font-size: 24rpx;
  896. }
  897. .food_address_ri_sty_active {
  898. width: 100%;
  899. overflow: hidden;
  900. background-color: #FFFFFF;
  901. border-radius: 31rpx;
  902. color: #333333;
  903. text-align: center;
  904. }
  905. /* 结算 */
  906. .settlement {
  907. width: 94%;
  908. background-color: #000000;
  909. line-height: 3.4;
  910. border-radius: 49rpx;
  911. position: fixed;
  912. bottom: 10rpx;
  913. left: 3%;
  914. display: flex;
  915. justify-content: space-between;
  916. }
  917. .settlement1 {
  918. width: 94%;
  919. background-color: #000000;
  920. line-height: 2.8;
  921. border-radius: 49rpx;
  922. position: relative;
  923. /* bottom: 10rpx; */
  924. left: 0;
  925. right: 0;
  926. /* left: 3%; */
  927. display: flex;
  928. justify-content: space-between;
  929. margin: 20rpx auto;
  930. }
  931. .settlement_le {
  932. width: 45%;
  933. padding-left: 20%;
  934. color: #FFFFFF;
  935. font-size: 30rpx;
  936. }
  937. .settlement_le text {
  938. font-size: 22rpx;
  939. }
  940. .settlement_ri {
  941. width: 35%;
  942. background-color: #FCD202;
  943. font-family: PingFang SC;
  944. font-weight: 800;
  945. color: #333333;
  946. text-align: center;
  947. border-top-right-radius: 49rpx;
  948. border-bottom-right-radius: 49rpx;
  949. }
  950. .settlement_img {
  951. width: 91rpx;
  952. height: 96rpx;
  953. position: absolute;
  954. // bottom: 30rpx;
  955. left: 5%;
  956. }
  957. .settlement_img image {
  958. width: 74rpx;
  959. height: 81rpx;
  960. }
  961. .settlement_hot {
  962. width: 35rpx;
  963. height: 35rpx;
  964. line-height: 35rpx;
  965. text-align: center;
  966. border-radius: 50%;
  967. position: absolute;
  968. top: -10rpx;
  969. right: 0;
  970. background-color: #FF130A;
  971. color: #FFFFFF;
  972. font-size: 20rpx;
  973. font-weight: bold;
  974. color: #FFFFFF;
  975. }
  976. .select_all {
  977. width: 100%;
  978. position: relative;
  979. }
  980. /* 餐厅 */
  981. .select {
  982. color: #000000;
  983. font-weight: bold;
  984. background-color: #fff;
  985. z-index: 10;
  986. }
  987. .select_line {
  988. width: 15%;
  989. height: 6rpx;
  990. margin: 0 auto 4%;
  991. background: #E6E6E6;
  992. border-radius: 4rpx;
  993. }
  994. .select_search {
  995. width: 100%;
  996. margin: 2% 0;
  997. display: flex;
  998. align-items: center;
  999. }
  1000. .select_search_le {
  1001. /* width: 10%; */
  1002. font-size: 30rpx;
  1003. line-height: 2.5;
  1004. margin-right: 1%;
  1005. }
  1006. .select_search_ce {
  1007. /* width: 5%; */
  1008. /* margin-top: 1%; */
  1009. margin-right: 20rpx;
  1010. margin-left: 6rpx;
  1011. /* margin: 0 20rpx; */
  1012. width: 20rpx;
  1013. height: 10rpx;
  1014. }
  1015. .select_search_ri {
  1016. /* width: 84%; */
  1017. height: 72rpx;
  1018. flex: 1;
  1019. display: flex;
  1020. }
  1021. .select_search_ri input {
  1022. flex: 1;
  1023. /* width: 100%; */
  1024. height: 72rpx;
  1025. background: #F5F5F5;
  1026. color: #999999;
  1027. border-radius: 36rpx;
  1028. text-decoration: 42rpx;
  1029. text-align: center;
  1030. }
  1031. /* 附近 */
  1032. .nearby {
  1033. width: 100%;
  1034. position: relative;
  1035. }
  1036. .nearby_text {
  1037. width: 18%;
  1038. font-size: 30rpx;
  1039. font-weight: 800;
  1040. color: #333333;
  1041. text-align: center;
  1042. border-bottom: 16rpx solid #FCD202;
  1043. /* line-height: 20rpx; */
  1044. margin-top: 10rpx;
  1045. }
  1046. .nearby_address_active {
  1047. border: 2rpx solid #FCD202;
  1048. width: 100%;
  1049. padding: 3%;
  1050. margin-top: 3%;
  1051. border-radius: 10upx;
  1052. display: flex;
  1053. }
  1054. .nearby_address {
  1055. width: 100%;
  1056. padding: 3%;
  1057. margin-top: 3%;
  1058. border-radius: 10upx;
  1059. display: flex;
  1060. }
  1061. .nearby_address_le {
  1062. flex: 1;
  1063. }
  1064. .nearby_address_ri {
  1065. line-height: 2.5;
  1066. text-align: right;
  1067. /* flex: 1; */
  1068. }
  1069. .nearby_text2 {
  1070. /* line-height: 1.5; */
  1071. display: flex;
  1072. justify-content: space-between;
  1073. align-items: center;
  1074. }
  1075. .nearby_text2_ {
  1076. font-size: 30rpx;
  1077. font-weight: 800;
  1078. color: #333333;
  1079. }
  1080. .nearby_text3 {
  1081. font-size: 24rpx;
  1082. font-weight: 500;
  1083. color: #999999;
  1084. margin-top: 2%;
  1085. }
  1086. /* 添加地址 */
  1087. .goorder {
  1088. width: 100%;
  1089. padding: 2% 3%;
  1090. position: fixed;
  1091. bottom: 0;
  1092. background-color: #FFFFFF;
  1093. border-top: 1rpx solid #999999;
  1094. }
  1095. .goorder_but {
  1096. width: 100%;
  1097. line-height: 2.5;
  1098. text-align: center;
  1099. background: #FCD202;
  1100. border-radius: 36rpx;
  1101. }
  1102. </style>