details.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922
  1. <template>
  2. <view class="details">
  3. <view class="content_top">
  4. <view class="detail-content">
  5. <view class="show_img">
  6. <image :src="$globalData.publicUrl+ detail.cCover" />
  7. </view>
  8. <view class="content">
  9. <view class="name">
  10. <view class="names"> <text></text> {{detail.cTitle}}</view>
  11. <view class="price">
  12. <!-- <image src="../../static/identify/time.png" />{{detail.nMinute}}分钟 -->
  13. ¥<text>{{price}}</text>
  14. </view>
  15. </view>
  16. <view class="time">{{detail.nMinute}}分钟/超{{detail.nSaleNumber}}人选择</view>
  17. <view class="state">
  18. <!-- <view class="state1">适用说明</view> -->
  19. <view class="state2">性别限制:不限</view>
  20. <view class="state2">
  21. 适用人群:{{detail.cSyrq}}
  22. </view>
  23. <view class="state2">
  24. 功能作用:{{detail.cLdList}}
  25. </view>
  26. </view>
  27. <view class="service">
  28. 服务履约保障
  29. </view>
  30. <view class="three">
  31. <view>
  32. <image src="../../static/identify/approve.png" mode=""></image>实名认证
  33. </view>
  34. <view>
  35. <image src="../../static/identify/approve.png" mode="">爽约包赔
  36. </view>
  37. <view @click="goApprove(details.id)">
  38. <image src="../../static/identify/approve.png" mode="">商户认证
  39. <!-- <image src="../../static/identify/more.png" mode=""></image> -->
  40. </view>
  41. </view>
  42. </view>
  43. <!-- <view class="bottom">
  44. <view class="recommend">
  45. <view class="option" :class="current == 0?'cleck_recommend':''" @click="current =0">
  46. 项目介绍
  47. </view>
  48. <view class="option" :class="current == 1?'cleck_recommend':''" @click="current =1">
  49. 推荐商户
  50. </view>
  51. </view>
  52. <view class="cDetail" style="width: 100%;" v-if="current == 0">
  53. <image :src="$globalData.publicUrl + detail.cDetail" style="" />
  54. </view>
  55. <view class="recommend_js" v-else>
  56. <view class="item" v-for="(item,index) in jsList" :key="index" @click.stop="godetails(item.id)">
  57. <view class="itemL">
  58. <view class="hot" v-if="item.nB3 == 1">
  59. <image src="https://moxiaoxiang.com/h5/static/xg.gif" mode="" />
  60. </view>
  61. <view class="img">
  62. <image :src="$globalData.publicUrl + item.cPortrait" />
  63. </view>
  64. <view class="new" v-if="item.nB2 == 1">
  65. new
  66. </view>
  67. <view class="status">{{item.nStatus ===1?'服务中' :'可服务'}}</view>
  68. </view>
  69. <view class="itemR">
  70. <view class="title">
  71. <view class="name">{{item.cName}}</view>
  72. <view class="address">
  73. <image src="../../static/identify/address.png" mode="" />{{item.distance}}km
  74. </view>
  75. </view>
  76. <view class="mark">
  77. <view class="center">
  78. <image src="../../static/identify/star.png" mode="" />{{item.nStar}}
  79. </view>
  80. <view class="right">
  81. 已服务 <text>{{item.nNum}}</text> 单
  82. </view>
  83. <view class="right">
  84. <text>{{item.number}}</text> 收藏
  85. </view>
  86. </view>
  87. <view class="num">
  88. <view class="free_box">
  89. </view>
  90. <view class="btn" @click.stop="bookNow(item)">
  91. <text>立即预约</text>
  92. </view>
  93. </view>
  94. </view>
  95. </view>
  96. <view class="more" @click="more">
  97. 更多
  98. </view>
  99. </view>
  100. </view> -->
  101. </view>
  102. </view>
  103. <!-- <view class="reserved">
  104. <view @click="choose">选择商户</view>
  105. </view> -->
  106. <view class="dialog" v-if="dialogShow">
  107. <view class="back" @click="dialogShow = false">
  108. </view>
  109. <!-- <view class="closebox" @click="closeDialog"></view> -->
  110. <view class="dialog_content">
  111. <view class="box">
  112. <view class="lists" v-for="(item,index) in projects" :index="index">
  113. <view class="imgs">
  114. <image :src="$globalData.publicUrl + item.cCover" mode="" />
  115. </view>
  116. <view class="right">
  117. <view class="list_title">
  118. <view class="title">{{item.cTitle}}</view>
  119. <view class="time">{{item.nMinute}}分钟</view>
  120. </view>
  121. <view class="price">
  122. <view class="money">¥{{item.dPrice}}</view>
  123. <view class="counter">
  124. <view @click="decrease(item,index)">-</view>
  125. <text>{{item.number}}</text>
  126. <view @click="increase(index)">+</view>
  127. </view>
  128. </view>
  129. </view>
  130. </view>
  131. </view>
  132. <view class="now" @click="nowYuyue"><text>立即预约</text></view>
  133. </view>
  134. </view>
  135. <view class="cDetail">
  136. <image :src="$globalData.publicUrl+ detail.cDetail" ></image>
  137. </view>
  138. <view class="reserved">
  139. <view @click="nowYuyue()">立即预约</view>
  140. </view>
  141. </view>
  142. </template>
  143. <script>
  144. import {
  145. projectDetails,
  146. engineerDetails,
  147. addList,
  148. addOrder,
  149. engineer
  150. } from '../../api/index'
  151. export default {
  152. data() {
  153. return {
  154. detail: [],
  155. price: 0,
  156. cDetail: '',
  157. current: 0,
  158. jsList: [],
  159. deptName: '',
  160. distance: '',
  161. projects: [],
  162. details: '',
  163. dialogShow: false,
  164. isAddress:false,
  165. longitude: '',
  166. latitude:'',
  167. cid:'',
  168. recommendTechnicianList:[]
  169. }
  170. },
  171. methods: {
  172. //选择商户
  173. bookNow(item) {
  174. this.distance = item.distance
  175. if (!uni.getStorageSync('access-token')) {
  176. uni.showModal({
  177. title: '请先登录!',
  178. success: (res) => {
  179. if (res.confirm) {
  180. uni.switchTab({
  181. url: '/pages/my/my'
  182. })
  183. } else if (res.cancel) {
  184. return
  185. }
  186. }
  187. })
  188. return
  189. } else if (item.nStatus === 1) {
  190. uni.showToast({
  191. title: '该商户不可预约!',
  192. icon: 'none'
  193. })
  194. return
  195. }
  196. this.projects = []
  197. var id = {
  198. id: item.id
  199. }
  200. engineerDetails(id).then(res => {
  201. res.data.data.projects.forEach(element => {
  202. element.number = 0
  203. });
  204. this.details = res.data.data,
  205. this.projects = res.data.data.projects,
  206. this.dialogShow = true
  207. })
  208. },
  209. // 选择项目加一
  210. decrease(item, index) {
  211. if (item.number == 0) {
  212. return
  213. }
  214. let list = this.projects
  215. this.projects[index].number--
  216. // this.projects = list
  217. },
  218. //选择项目减一
  219. increase(index) {
  220. this.projects[index].number++
  221. // let list = this.projects
  222. // console.log(list[index])
  223. // // list[index].number++;
  224. // this.projects=list
  225. },
  226. // 预约
  227. nowYuyue() {
  228. uni.setStorageSync('projectId',this.cid)
  229. uni.switchTab({
  230. url: '/pages/identify/identify',
  231. })
  232. // const allCountsZero = this.projects.every(item => item.number === 0);
  233. // if (!uni.getStorageSync('access-token')) {
  234. // uni.showModal({
  235. // title: '请先登录!',
  236. // })
  237. // return
  238. // } else if (allCountsZero) {
  239. // uni.showToast({
  240. // title: '请先选择项目!',
  241. // duration: 1000,
  242. // icon: 'none',
  243. // })
  244. // return
  245. // } else if (!this.isAddress) {
  246. // uni.showModal({
  247. // title: '提示',
  248. // content: '你还没有添加地址哦!是否去添加?',
  249. // confirmText: '确定', // 确定按钮的文字
  250. // cancelText: '取消', // 取消按钮的文字
  251. // success(res) {
  252. // if (res.confirm) {
  253. // setTimeout(() => {
  254. // uni.navigateTo({
  255. // url: '../my/add_address'
  256. // })
  257. // }, 100)
  258. // // 用户点击确定按钮后的操作
  259. // } else if (res.cancel) {}
  260. // }
  261. // })
  262. // return
  263. // } else {
  264. // // console.log(this.data.projects,"project")
  265. // var list = []
  266. // this.projects.forEach(element => {
  267. // if (element.number > 0) {
  268. // element.sum = element.number * element.dPrice
  269. // list.push(element)
  270. // }
  271. // });
  272. // var total = 0
  273. // for (let i = 0; i < list.length; i++) {
  274. // total += list[i].sum;
  275. // }
  276. // var data = {
  277. // cJsId: this.details.id,
  278. // cGoods: list,
  279. // cOpenId: uni.getStorageSync('wx_copenid'),
  280. // dTotalMoney: total,
  281. // distance: this.distance
  282. // }
  283. // addOrder(data).then(res => {
  284. // if (res.data.code == 200) {
  285. // uni.navigateTo({
  286. // url: '/pages/identify/pay_order?orderNo=' + res.data.data.orderNo
  287. // // url:'/pages/identify/pay_order'
  288. // })
  289. // this.dialogShow = true
  290. // } else {
  291. // uni.showModal({
  292. // title: res.data.msg,
  293. // })
  294. // }
  295. // })
  296. // }
  297. },
  298. more(){
  299. uni.setStorageSync('projectId', this.cid)
  300. uni.switchTab({
  301. url:'/pages/identify/identify'
  302. })
  303. },
  304. //商户详情
  305. godetails(id) {
  306. if (!uni.getStorageSync('access-token')) {
  307. uni.showModal({
  308. title: '请先登录!',
  309. success: (res) => {
  310. if (res.confirm) {
  311. this.list = []
  312. uni.switchTab({
  313. url: '/pages/my/my'
  314. })
  315. } else if (res.cancel) {
  316. return
  317. }
  318. }
  319. })
  320. return
  321. } else {
  322. uni.navigateTo({
  323. url: '../../pages/identify/details?id=' + id
  324. })
  325. }
  326. },
  327. choose() {
  328. uni.switchTab({
  329. url: '../identify/identify',
  330. })
  331. },
  332. getAddress() {
  333. var that = this
  334. var data = {
  335. openId: uni.getStorageSync('wx_copenid'),
  336. }
  337. addList(data).then(res => {
  338. if (res.data.data[0]) {
  339. this.isAddress = true
  340. } else {
  341. this.isAddress = false
  342. }
  343. }).catch(err => {})
  344. },
  345. getDetails(cid, deptName) {
  346. const cId = {
  347. cId: cid,
  348. deptName: deptName,
  349. nStatus:0,
  350. longitude: uni.getStorageSync('longitude'),
  351. latitude: uni.getStorageSync('latitude'),
  352. }
  353. projectDetails(cId).then(res => {
  354. if (res.data.code == 200) {
  355. this.detail = res.data.data,
  356. this.recommendTechnicianList = res.data.data.recommendTechnicianList
  357. // res.data.data.jsList.length>3? this.jsList = res.data.data.jsList.slice(0,3):this.jsList = res.data.data.jsList
  358. this.price = res.data.data.dPrice.toFixed(2)
  359. this.getJsList()
  360. }
  361. })
  362. },
  363. getJsList(){
  364. let data = {
  365. recommendTechnicianList: this.recommendTechnicianList,
  366. longitude: uni.getStorageSync('longitude'),
  367. latitude: uni.getStorageSync('latitude'),
  368. projectId:this.cid
  369. }
  370. engineer(data).then(res=>{
  371. res.data.data.records.length>3? this.jsList = res.data.data.records.slice(0,3):this.jsList = res.data.data.records
  372. })
  373. },
  374. getlocaltion() {
  375. uni.getLocation({
  376. type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,可以设置为 gcj02 返回可用于 `uni.openLocation` 的坐标
  377. success: function(res) {
  378. this.latitude = res.latitude
  379. this.longitude = res.longitude
  380. // this.current = 0
  381. // this.city = res.address.city
  382. },
  383. });
  384. },
  385. },
  386. onLoad: function(options) {
  387. this.cid = options.cid
  388. this.getDetails(options.cid, options.deptName)
  389. // this.getDetails(09493ab2baf94e03b4c014a76b801cc4)
  390. },
  391. onShow() {
  392. this.getAddress()
  393. this.getlocaltion()
  394. }
  395. }
  396. </script>
  397. <style lang="scss" scoped>
  398. .details {
  399. width: 100vw;
  400. height: 100vh;
  401. overflow-y: auto;
  402. .content_top{
  403. width: 100%;
  404. height: auto;
  405. background: #F7FFFF;
  406. padding: 30rpx 32rpx;
  407. box-sizing: border-box;
  408. }
  409. }
  410. .detail-content {
  411. width: 100%;
  412. height: 100%;
  413. padding: 24rpx;
  414. box-sizing: border-box;
  415. background-color: #E5FDFB;
  416. // display: flex;
  417. // flex-direction: column;
  418. .show_img {
  419. width: 638rpx;
  420. height: 638rpx;
  421. border-radius: 24rpx;
  422. overflow: hidden;
  423. margin-bottom: 20rpx;
  424. image {
  425. width: 638rpx;
  426. height: 638rpx;
  427. }
  428. }
  429. .recommend_js {
  430. flex: 1;
  431. background: linear-gradient(to bottom right, rgb(246, 249, 242), rgb(210, 241, 243));
  432. padding: 10rpx;
  433. box-sizing: border-box;
  434. .more{
  435. width: 100px;
  436. height: 30px;
  437. background: #35c99d;
  438. border-radius: 10rpx;
  439. text-align: center;
  440. line-height: 30px;
  441. margin: 0 auto;
  442. color:#fff;
  443. }
  444. .item {
  445. display: flex;
  446. align-items: center;
  447. justify-content: center;
  448. // border: 1px solid rgb(212, 211, 211);
  449. margin-bottom: 20rpx;
  450. border-radius: 30rpx;
  451. padding: 30rpx;
  452. background-color: #fff;
  453. box-sizing: border-box;
  454. .itemL {
  455. position: relative;
  456. width: 150rpx;
  457. height: 220rpx;
  458. margin-right: 30rpx;
  459. display: flex;
  460. flex-direction: column;
  461. align-items: center;
  462. justify-content: space-between;
  463. .hot {
  464. position: absolute;
  465. width: 150px;
  466. height: 150px;
  467. top: -36px;
  468. left: -36px;
  469. // display: flex;
  470. image {
  471. width: 100%;
  472. height: 100%;
  473. }
  474. }
  475. .img {
  476. width: 150rpx;
  477. height: 150rpx;
  478. border-radius: 50%;
  479. overflow: hidden;
  480. image {
  481. width: 100%;
  482. height: 100%;
  483. }
  484. }
  485. .status {
  486. font-size: 24rpx;
  487. position: absolute;
  488. bottom: 0px;
  489. background-color: #59b7b6;
  490. color: #fff;
  491. padding: 3px 10px;
  492. border-radius: 20px;
  493. // margin: 10px 0px;
  494. }
  495. .new {
  496. position: absolute;
  497. top: -20rpx;
  498. left: -16rpx;
  499. padding: 0rpx 5rpx;
  500. background-color: #f9792d;
  501. opacity: .8;
  502. border-radius: 10rpx;
  503. color: #f3f3f3;
  504. }
  505. }
  506. .itemR {
  507. flex: 1;
  508. height: 220rpx;
  509. .title {
  510. display: flex;
  511. justify-content: space-between;
  512. .name {
  513. width: 30%;
  514. font-size: 30rpx;
  515. font-weight: bold;
  516. overflow: hidden;
  517. white-space: nowrap;
  518. text-overflow: ellipsis;
  519. }
  520. .address {
  521. // width: 40%;
  522. font-size: 26rpx;
  523. color: #585858;
  524. image {
  525. width: 30rpx;
  526. height: 30rpx;
  527. vertical-align: text-bottom;
  528. }
  529. }
  530. .status {
  531. color: #fff;
  532. background-color: #0ec891;
  533. font-size: 18rpx;
  534. padding: 5rpx 15rpx;
  535. border-radius: 30px;
  536. height: 30rpx;
  537. line-height: 30rpx;
  538. }
  539. }
  540. .mark {
  541. display: flex;
  542. justify-content: space-between;
  543. margin: 20px 0;
  544. .right {
  545. text {
  546. color: #f9792d;
  547. margin-right: 5px;
  548. }
  549. }
  550. .center {
  551. display: flex;
  552. align-items: center;
  553. image {
  554. width: 30rpx;
  555. height: 30rpx;
  556. margin-right: 5px;
  557. }
  558. }
  559. }
  560. .num {
  561. display: flex;
  562. align-items: center;
  563. justify-content: space-between;
  564. // padding-left: 30rpx;
  565. color: #9e9e9e;
  566. .free_box {
  567. font-size: 24rpx;
  568. color: #59b7b6;
  569. }
  570. image {
  571. width: 30rpx;
  572. height: 30rpx;
  573. }
  574. .btn {
  575. background-color: #59b7b6;
  576. padding: 10px;
  577. border-radius: 3px 10px 10px 10px;
  578. }
  579. }
  580. .items {
  581. display: flex;
  582. justify-content: space-between;
  583. padding: 10rpx 0;
  584. image {
  585. width: 30rpx;
  586. height: 30rpx;
  587. margin-right: 10rpx;
  588. vertical-align: text-top;
  589. }
  590. view {
  591. display: flex;
  592. align-items: center;
  593. }
  594. }
  595. .btn {
  596. font-size: 26rpx;
  597. background-color: #2cb8d4;
  598. border-radius: 30px;
  599. color: #fff;
  600. text-align: center;
  601. padding: 10rpx 0;
  602. }
  603. }
  604. }
  605. }
  606. .slogan {
  607. display: flex;
  608. justify-content: space-around;
  609. align-items: center;
  610. font-size: 22rpx;
  611. padding: 20rpx 0;
  612. view {
  613. &:before {
  614. content: '';
  615. display: inline-block;
  616. width: 20rpx;
  617. height: 20rpx;
  618. background-color: #2cb8d4;
  619. border-radius: 10px;
  620. margin-right: 5px;
  621. }
  622. }
  623. }
  624. .content {
  625. // padding: 0 30rpx;
  626. .name {
  627. display: flex;
  628. justify-content: space-between;
  629. align-items: center;
  630. margin-bottom: 8rpx;
  631. .names {
  632. font-size: 36rpx;
  633. font-weight: bold;
  634. display: flex;
  635. align-items: center;
  636. text{
  637. display: inline-block;
  638. width: 6rpx;
  639. height: 34rpx;
  640. background: #20CBC2;
  641. margin-right: 24rpx;
  642. }
  643. }
  644. .price {
  645. font-size: 24rpx;
  646. color: #F53E54;
  647. font-weight: bold;
  648. display: flex;
  649. align-items: center;
  650. text{
  651. font-weight: 600;
  652. font-size: 44rpx;
  653. color: #F53E54;
  654. line-height: 24rpx;
  655. }
  656. }
  657. }
  658. .time {
  659. font-size: 24rpx;
  660. color: #45BBB5;
  661. margin-top: 8rpx;
  662. padding-left: 30rpx;
  663. margin-bottom: 20rpx;
  664. }
  665. .state {
  666. width: 100%;
  667. background: #FFFFFF;
  668. box-shadow: 0px 4rpx 12rpx 0px rgba(88,209,187,0.1);
  669. border-radius: 16rpx ;
  670. padding: 20rpx;
  671. box-sizing: border-box;
  672. .state1 {
  673. font-size: 32rpx;
  674. // font-weight: bold;
  675. }
  676. .state2 {
  677. font-size: 28rpx;
  678. color: #2F3437;
  679. line-height: 33rpx;
  680. }
  681. .state2:nth-child(2){
  682. margin: 16rpx 0px;
  683. }
  684. }
  685. .service {
  686. font-size: 28rpx;
  687. color: #2F3437;
  688. line-height: 33rpx;
  689. margin: 20rpx 0;
  690. }
  691. .three {
  692. width: 100%;
  693. height: 80rpx;
  694. display: flex;
  695. justify-content: space-around;
  696. align-items: center;
  697. font-size: 28rpx;
  698. color: #2F3437;
  699. padding: 20rpx 0;
  700. background-color: #ffffff;
  701. box-sizing: border-box;
  702. border-radius: 16rpx;
  703. view {
  704. display: flex;
  705. align-items: center;
  706. image {
  707. width: 40rpx;
  708. height: 40rpx;
  709. margin-right: 8rpx;
  710. }
  711. }
  712. }
  713. }
  714. .bottom {
  715. flex: 1;
  716. width: 100vw;
  717. display: flex;
  718. flex-direction: column;
  719. margin-top: 32rpx;
  720. .recommend {
  721. width: 100%;
  722. height: 50px;
  723. display: flex;
  724. align-items: center;
  725. justify-content: space-around;
  726. .option {
  727. font-size: 26rpx;
  728. color: #333;
  729. }
  730. .cleck_recommend {
  731. color: #2cb8d4;
  732. }
  733. }
  734. }
  735. }
  736. .cDetail {
  737. width: 100vw;
  738. margin-bottom: 130rpx;
  739. image {
  740. width: 100%;
  741. height: 2600rpx;
  742. // object-fit: cover;
  743. }
  744. }
  745. .reserved {
  746. width: 100%;
  747. height: 116rpx;
  748. background: #FFFFFF;
  749. position: fixed;
  750. bottom: 0;
  751. left: 0;
  752. width: 100%;
  753. padding: 20rpx 40rpx;
  754. text-align: center;
  755. box-shadow: 0 0 30rpx #ece9e9;
  756. background-color: #fff;
  757. box-sizing: border-box;
  758. view {
  759. background: linear-gradient( 90deg, #1AD7CE 0%, #21C9C1 100%);
  760. color: #fff;
  761. width: 100%;
  762. height: 76rpx;
  763. display: flex;
  764. align-items: center;
  765. justify-content: center;
  766. border-radius: 106rpx;
  767. font-weight: bold;
  768. font-size: 32rpx;
  769. }
  770. }
  771. .dialog {
  772. position: fixed;
  773. top: 0;
  774. left: 0;
  775. width: 100%;
  776. height: 100%;
  777. background: rgba(0, 0, 0, .5);
  778. z-index: 10;
  779. transition: transform 0.3s ease-out;
  780. display: flex;
  781. flex-direction: column;
  782. .back {
  783. flex: 1;
  784. }
  785. .closebox {
  786. height: calc(50vh - 60rpx);
  787. width: 100%;
  788. }
  789. .dialog_content {
  790. background-color: #fff;
  791. position: absolute;
  792. bottom: 0;
  793. width: calc(100% - 60rpx);
  794. height: 50vh;
  795. border-top-left-radius: 20rpx;
  796. border-top-right-radius: 20rpx;
  797. padding: 30rpx;
  798. background-color: #f3f3f3;
  799. // padding-bottom: 100rpx;
  800. display: flex;
  801. flex-direction: column;
  802. .box {
  803. height: 90%;
  804. overflow-y: auto;
  805. .lists {
  806. // height: 90%;
  807. background-color: #fff;
  808. margin-bottom: 20rpx;
  809. display: flex;
  810. justify-content: space-between;
  811. padding: 20rpx 10rpx;
  812. border-radius: 10rpx;
  813. // overflow-y: auto;
  814. .imgs {
  815. width: 240rpx;
  816. height: 160rpx;
  817. border-radius: 20rpx;
  818. overflow: hidden;
  819. image {
  820. width: 100%;
  821. height: 100%;
  822. }
  823. }
  824. .right {
  825. flex: 1;
  826. padding-left: 30rpx;
  827. .list_title {
  828. display: flex;
  829. justify-content: space-between;
  830. align-items: center;
  831. .title {
  832. width: 280rpx;
  833. font-size: 34rpx;
  834. font-weight: bold;
  835. overflow: hidden;
  836. white-space: nowrap;
  837. text-overflow: ellipsis;
  838. }
  839. .time {
  840. font-size: 24rpx;
  841. color: #45BBB5;
  842. }
  843. }
  844. .price {
  845. padding-top: 50rpx;
  846. display: flex;
  847. justify-content: space-between;
  848. .money {
  849. font-size: 42rpx;
  850. color: #e61b1b;
  851. font-weight: bold;
  852. }
  853. .counter {
  854. display: flex;
  855. view {
  856. width: 60rpx;
  857. height: 60rpx;
  858. line-height: 60rpx;
  859. background-color: #f7f8fa;
  860. text-align: center;
  861. border-radius: 60rpx;
  862. font-size: 50rpx;
  863. }
  864. text {
  865. display: block;
  866. width: 100rpx;
  867. text-align: center;
  868. line-height: 60rpx;
  869. font-size: 30rpx
  870. }
  871. }
  872. }
  873. }
  874. }
  875. }
  876. .now {
  877. height: 10%;
  878. left: 0;
  879. width: 100%;
  880. text-align: center;
  881. height: 100rpx;
  882. padding-top: 10rpx;
  883. text {
  884. display: inline-block;
  885. height: 80rpx;
  886. line-height: 80rpx;
  887. width: 90%;
  888. background-color: #2cb8d4;
  889. color: #fff;
  890. border-radius: 50rpx;
  891. }
  892. }
  893. }
  894. }
  895. </style>