activityDetailNew.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953
  1. <template>
  2. <!-- 教研室详情 -->
  3. <view class="activityDetailNew">
  4. <statusBar :item="navbar"></statusBar>
  5. <!-- 消息提示 -->
  6. <msgPop></msgPop>
  7. <view class="top">
  8. <image class="img1" src="https://teacherapi.cocorobo.cn/teaching-file/static/yym/Rectangle25.png"
  9. mode="widthFix">
  10. </image>
  11. <image class="img2" src="../../static/Dropdown.png" mode="widthFix"></image>
  12. </view>
  13. <view class="decontent">
  14. <view class="actit">
  15. {{actItemList.acName}}
  16. </view>
  17. <view class="footer">
  18. <view class="">
  19. {{actItemList.create_at}}
  20. </view>
  21. <view class="">
  22. 阅读量:{{actItemList.views}}
  23. </view>
  24. </view>
  25. <view class="avaList">
  26. <view class="ava" @click="gotoMorePer">
  27. <u-avatar-group :urls="applyUserlist" maxCount='6' showMore size="35" :extraValue='stuNum'
  28. gap="0.4"></u-avatar-group>
  29. <view style="font-size: 24rpx;
  30. font-weight: 400;
  31. width: 200rpx;
  32. color:rgba(0, 0, 0, 0.6);
  33. margin-left: 20rpx;">
  34. {{!applyUserlist.length?'暂无报名':'已报名'}}
  35. </view>
  36. </view>
  37. <view class="cost">
  38. <!-- ¥<text style="font-size: 48rpx;">{{actItemList.cost}}</text> -->
  39. </view>
  40. </view>
  41. <view class="acinfo">
  42. <view class="acinfoAddress">
  43. <view class="acinfoTit">
  44. <text>时</text>
  45. <text>间</text>
  46. </view>:
  47. <text class="inf">{{actItemList.begin_at}}</text>
  48. </view>
  49. <!-- <view class="acinfoAddress">
  50. 地点:<text class="inf">{{actItemList.address}}</text>
  51. </view> -->
  52. <!-- <view class="">
  53. 主办单位:<text class="inf">暂无字段</text>
  54. </view> -->
  55. <view class="acinfoAddress">
  56. <view class="acinfoTit">
  57. <text>活</text>
  58. <text>动</text>
  59. <text>形</text>
  60. <text>式</text>
  61. </view>: <text style="color:rgba(0, 86, 168, 1) ;">{{actItemList.acshape}}</text>
  62. </view>
  63. </view>
  64. <!-- 活动介绍 -->
  65. <view class="acbrief">
  66. <view class="britit">
  67. 活动介绍
  68. </view>
  69. <!-- <web-view :src="actItemList.link" webview-styles="{'height': '700rpx';}"></web-view> -->
  70. <!-- <br /> -->
  71. <!-- <view class="bricon" @longpress="scanCode"> -->
  72. <view class="bricon">
  73. <!-- <rich-text style="white-space:pre-wrap;" :nodes="actItemList.brief"></rich-text> -->
  74. <u-parse :content="actItemList.brief" :selectable="true" :lazyLoad="true"
  75. :loadingImg="imgLoading"></u-parse>
  76. </view>
  77. </view>
  78. </view>
  79. <!-- 按钮 -->
  80. <view class="btnBlock">
  81. <view class="icos">
  82. <view class="ico">
  83. <view class="imgBlock" @click="coll">
  84. <image class="icoimg"
  85. :src="collArr.includes(actItemList.acId) ? pic_coll2 : '../../static/Starhhh.png'"
  86. mode="aspectFill"></image>
  87. </view>
  88. <text class="icotxt">收藏</text>
  89. </view>
  90. <view class="ico" style="position: relative;">
  91. <view class="imgBlock">
  92. <image class="icoimg" style="height: 70%;width: 65%;" src="../../static/union.png"
  93. mode="aspectFill"></image>
  94. </view>
  95. <button open-type="share"
  96. style="background-color: aquamarine;opacity: 0; position: absolute;left: 0;width: 100%;height: 100%;"></button>
  97. <text class="icotxt">分享</text>
  98. </view>
  99. </view>
  100. <view class="rightBtn">
  101. <view class="btnt1" v-if="actItemList.openid==oid">本人创建,暂不支持加入</view>
  102. <view class="btnt" v-else-if="!isSign && !isExpired" @click="applyAdd">立即报名</view>
  103. <view class="btnt" v-else-if="isSign && !isExpired" @click="cancelAdd">取消报名</view>
  104. <view class="btnt" v-else-if="isSign && isExpired" @click="lookPlayback">查看回放</view>
  105. <view class="btnt" style="background-color: #ccc;" v-else-if="!isSign && isExpired">报名时间结束</view>
  106. <!-- <view class="btnt1" v-else-if="actItemList.bnum>=actItemList.pers">人数已满</view> -->
  107. <!-- <view class="btnt1" v-else-if="isSign && actItemList.openid!=oid">已报名</view> -->
  108. </view>
  109. </view>
  110. <!-- 查看回放弹框 -->
  111. <u-modal :showConfirmButton="false" :show="PlaybackDig" closeOnClickOverlay @close="PlaybackDig=false">
  112. <u--image :src="actItemList.playback"></u--image>
  113. </u-modal>
  114. <!-- 报名成功展示跳转二维码 -->
  115. <view class="ellone">
  116. <u-modal style="height: 600px !important;flex-direction: column !important;" :showConfirmButton="false"
  117. :show="DigenrollImg" closeOnClickOverlay @close="DigenrollImg=false">
  118. <view style="font-size: 22px;color: #1C56BA;font-weight: 600;">
  119. 报名需扫描二维码加入班级!
  120. </view>
  121. <u--image style="height: 400px !important;" :src="actItemList.qrlink"></u--image>
  122. </u-modal>
  123. </view>
  124. <!-- @click="showBigImage" -->
  125. <!-- 弹窗 -->
  126. <view>
  127. <view class="mask" v-show="showPopup" @click="showPopup = false"></view>
  128. <view class="popup-container" v-show="showPopup">
  129. <view class="popup">
  130. <view class="header">
  131. <text v-if="!isAdd">确认报名</text>
  132. <text v-else>是否取消报名</text>
  133. </view>
  134. <view class="footer">
  135. <view class="cancel-btn" @click="showPopup=false">取消</view>
  136. <view class="confirm-btn" v-if="!isAdd" @click="conf">确认</view>
  137. <view class="confirm-btn" v-else @click="canc">确认</view>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. <view>
  143. <view class="popup-container2" style="height: 175px;" v-show="showPopupConfirm">
  144. <view class="popup">
  145. <view class="header" style="margin-top: 15px;">
  146. <view class="imgShade">
  147. <image src="../../static/mine/gou3.png" mode="aspectFill">
  148. </view>
  149. </image>
  150. <text style="margin-bottom: 24px;">报名成功</text>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. <view class="" style="height: 170rpx;width: 750rpx;">
  156. <!-- 占位的 -->
  157. </view>
  158. <u-loading-page :loading="uLoading"></u-loading-page>
  159. </view>
  160. </template>
  161. <script>
  162. export default {
  163. data() {
  164. return {
  165. navbar: {
  166. title: '活动详情',
  167. btn: 1
  168. },
  169. // 用户openid
  170. oid: '',
  171. // 活动id
  172. acId: '',
  173. stuNum: 0,
  174. // 报名跳转链接
  175. // enrollImg: 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/file-1719281192664.png',
  176. DigenrollImg: false,
  177. // 页面数据
  178. actItemList: {},
  179. // 用户收藏列表
  180. collArr: [],
  181. //报名成功弹窗
  182. showPopupConfirm: false,
  183. //过期日期
  184. dTime: '',
  185. // 查看回放弹框控制
  186. PlaybackDig: false,
  187. // 用户订阅列表
  188. // subArr: [],
  189. uLoading: false,
  190. // 收藏按钮节流
  191. stopTimer: 0,
  192. //控制弹窗
  193. showPopup: false,
  194. // 是否已加入
  195. isSign: 0,
  196. // 判断显示报名弹窗还是取消报名弹窗
  197. isAdd: 0,
  198. // 报名列表
  199. applyUserlist: [],
  200. pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
  201. imgLoading: 'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/file-1712113517547.png'
  202. // nodes: [{
  203. // name: 'div',
  204. // attrs: {
  205. // class: 'div-class',
  206. // style: 'line-height: 60px; color: red; text-align:center;'
  207. // },
  208. // children: [{
  209. // type: 'text',
  210. // text: 'Hello&nbsp;uni-app!'
  211. // }]
  212. // }],
  213. // strings: '<div style="text-align:center;"><img src="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni@2x.png"/></div>'
  214. // pic_sub: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Vector (Stroke) (1).png',
  215. // pic_sub2: 'https://teacherapi.cocorobo.cn/teaching-file/static/dingyue_blue.png',
  216. };
  217. },
  218. // 分享
  219. onShareAppMessage() {
  220. uni.share({
  221. provider: "weixin",
  222. scene: "WXSceneSession",
  223. type: 1,
  224. summary: "我正在使用丽湖双创小程序,赶紧跟我一起来体验!",
  225. success: function(res) {
  226. console.log("success:" + JSON.stringify(res));
  227. },
  228. fail: function(err) {
  229. console.log("fail:" + JSON.stringify(err));
  230. }
  231. });
  232. },
  233. onShareTimeline() {
  234. uni.share({
  235. provider: "weixin",
  236. scene: "WXSceneTimeline",
  237. type: 0,
  238. href: "http://uniapp.dcloud.io/",
  239. title: "uni-app分享",
  240. summary: "我正在使用丽湖双创小程序,赶紧跟我一起来体验!",
  241. imageUrl: "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni@2x.png",
  242. success: function(res) {
  243. console.log("success:" + JSON.stringify(res));
  244. },
  245. fail: function(err) {
  246. console.log("fail:" + JSON.stringify(err));
  247. }
  248. });
  249. },
  250. // onUnload() {
  251. // this.$store.dispatch('asyncDelAll')
  252. // },
  253. computed: {
  254. isExpired() {
  255. let dTime = this.dTime.split(',')
  256. let bint = new Date(dTime[0]).getTime()
  257. let now = new Date().getTime()
  258. // console.log("过期时间",bint);
  259. // console.log("当前日期",now);
  260. return bint < now
  261. }
  262. },
  263. methods: {
  264. // showBigImage() {
  265. // uni.previewImage({
  266. // current: this.actItemList.playback, // 当前显示的图片链接
  267. // urls: [this.actItemList.playback] // 需要预览的图片链接列表
  268. // });
  269. // },
  270. //跳转到第三方链接
  271. gotoLink(e) {
  272. let link = e.currentTarget.dataset.link;
  273. uni.navigateTo({
  274. url: "/pages/skipone/skipone?url=" + encodeURIComponent(link),
  275. });
  276. },
  277. // 查看回放
  278. lookPlayback() {
  279. if (!(!!this.actItemList.playback)) {
  280. uni.showToast({
  281. title: "暂无回放",
  282. icon: 'none'
  283. });
  284. return
  285. }
  286. this.PlaybackDig = true
  287. // uni.navigateTo({
  288. // // url: "/pages/skipone/skipone?item=" + encodeURIComponent(JSON.stringify('https://www.yuketang.cn/v2/web/forbidden'))
  289. // url: "/pages/skipone/skipone?item=" + encodeURIComponent(JSON.stringify(this.actItemList
  290. // .playback))
  291. // });
  292. },
  293. // 获取页面数据
  294. getdata() {
  295. this.uLoading = true
  296. let data = {
  297. oid: this.$store.state.user.openid,
  298. acId: this.acId,
  299. }
  300. this.$request('/selectActivityID', "POST", data).then(res => {
  301. console.log('页面数据', res[0][0]);
  302. this.dTime = res[0][0].begin_at;
  303. // console.log('this.dTime',this.dTime);
  304. let srrt = this.datejudge(res[0][0].begin_at)
  305. console.log('srrt', srrt);
  306. res[0][0].begin_at = srrt
  307. this.uLoading = false
  308. this.actItemList = res[0][0]
  309. this.actItemList.brief = this.actItemList.brief.replace(/<img/gi,
  310. '<img style="max-width:100%;height:auto;margin:0 auto;display:block"'
  311. )
  312. })
  313. },
  314. // 处理时间
  315. datejudge(e) {
  316. const dates = e.split(",");
  317. const date1 = new Date(dates[0]);
  318. const date2 = new Date(dates[1]);
  319. const year1 = date1.getFullYear();
  320. const month1 = date1.getMonth();
  321. const day1 = date1.getDate();
  322. const year2 = date2.getFullYear();
  323. const month2 = date2.getMonth();
  324. const day2 = date2.getDate();
  325. if (year1 === year2 && month1 === month2 && day1 === day2) {
  326. const modifiedDate = dates[1].substring(11); // 保留时间部分(小时和分钟)
  327. dates[1] = modifiedDate;
  328. }
  329. const result = dates.join("-");
  330. return result
  331. },
  332. // 申请加入弹窗
  333. applyAdd() {
  334. const value = this.$store.state.user.openid;
  335. if (!value) {
  336. uni.showToast({
  337. title: '未登录,请登录',
  338. icon: 'none'
  339. })
  340. setTimeout(() => {
  341. this.goLog()
  342. }, 1000)
  343. return
  344. }
  345. // console.log('报名');
  346. this.isAdd = 0
  347. this.showPopup = true
  348. },
  349. //显示取消报名弹窗
  350. cancelAdd() {
  351. this.isAdd = 1
  352. this.showPopup = true
  353. },
  354. // 确认取消报名操作
  355. canc() {
  356. let data = {
  357. oid: this.$store.state.user.openid, //用户id
  358. acid: this.acId,
  359. }
  360. this.$request('/deleteApply', "POST", data).then(res => {
  361. console.log('取消报名返回', res);
  362. this.btnEnroll()
  363. this.getUsers()
  364. // 弹窗关闭
  365. this.showPopup = false
  366. uni.showToast({
  367. title: '已取消报名',
  368. icon: 'none',
  369. })
  370. })
  371. },
  372. // 确认报名操作
  373. conf() {
  374. this.showPopup = false
  375. let data = {
  376. oid: this.$store.state.user.openid, //用户id
  377. acid: this.acId,
  378. ty: 2,
  379. }
  380. this.$request('/insertSignup', "POST", data).then(res => {
  381. console.log('报名返回', res);
  382. // 添加消息页面系统通知提示报名成功
  383. this.addMessage()
  384. this.showPopupConfirm = true
  385. this.btnEnroll()
  386. this.getUsers()
  387. setTimeout(() => {
  388. this.showPopupConfirm = false
  389. if (this.actItemList.qrlink) {
  390. this.DigenrollImg = true
  391. }
  392. // this.getData()
  393. }, 1500)
  394. })
  395. },
  396. // 添加消息页面系统通知提示报名成功
  397. addMessage() {
  398. let data = {
  399. oid: this.$store.state.user.openid,
  400. acid: this.acId,
  401. type: 0,
  402. }
  403. this.$request('/insertMessage', "POST", data).then(res => {
  404. console.log('添加消息页面系统通知提示报名成功', res);
  405. })
  406. },
  407. // 查看更多报名同学
  408. gotoMorePer() {
  409. uni.navigateTo({
  410. url: `/pages/dy/dy?acId=${this.acId}`
  411. })
  412. },
  413. goLog() {
  414. uni.navigateTo({
  415. url: "/pages/login_Wechat/login_Wechat",
  416. });
  417. },
  418. //获取是否报名
  419. btnEnroll() {
  420. let data = {
  421. oid: this.$store.state.user.openid, //用户id
  422. aid: this.acId,
  423. type: 2
  424. }
  425. this.$request('/selectSignup', 'POST', data).then(res => {
  426. // console.log('获取报名', res[0][0]);
  427. this.isSign = res[0][0].num
  428. })
  429. },
  430. // 收藏事件
  431. coll() {
  432. const value = this.$store.state.user.openid;
  433. if (!value) {
  434. uni.showToast({
  435. title: '未登录,请登录',
  436. icon: 'none'
  437. })
  438. setTimeout(() => {
  439. this.goLog()
  440. }, 1000)
  441. return
  442. }
  443. // this.stopTimer=0
  444. if (this.stopTimer) return uni.showToast({
  445. icon: 'none',
  446. title: '点击过快'
  447. })
  448. this.stopTimer = 1
  449. setTimeout(() => {
  450. this.stopTimer = 0
  451. }, 500)
  452. //判断是否收藏
  453. let iscoll = null
  454. // 查询是否收藏过
  455. let data = {
  456. acid: this.acId,
  457. oid: this.$store.state.user.openid, //用户id
  458. ty: 0
  459. }
  460. this.$request('/selectOneOperator', 'POST', data).then(res => {
  461. // console.log('查询是否收藏过',res);
  462. res[0].length ? iscoll = true : iscoll = false;
  463. // iscoll为true表示已经收藏过,执行删除 为true则收藏
  464. if (iscoll) {
  465. this.$store.dispatch('asyncUpdatemsg', {
  466. collAoff: 0
  467. })
  468. console.log('执行删除');
  469. this.$request('/deleteOperator', 'POST', data).then(res => {
  470. // console.log(res);
  471. this.getColl()
  472. setTimeout(() => {
  473. this.$store.dispatch('asyncDelMsg')
  474. }, 1500)
  475. })
  476. } else {
  477. this.$store.dispatch('asyncUpdatemsg', {
  478. collAoff: 1
  479. })
  480. console.log('执行添加');
  481. this.$request('/insertOperator', 'POST', data).then(res => {
  482. // console.log(res);
  483. this.getColl()
  484. setTimeout(() => {
  485. this.$store.dispatch('asyncDelMsg')
  486. }, 1500)
  487. })
  488. }
  489. })
  490. },
  491. //获取是否收藏
  492. getColl() {
  493. let data = {
  494. oid: this.$store.state.user.openid, //用户id
  495. type: 0
  496. }
  497. this.$request('/selectOperator', 'POST', data).then(res => {
  498. // console.log('获取收藏', res);
  499. // 每次调用前清零,防止push叠加错误
  500. this.collArr = []
  501. // 将acid遍历到collArr中
  502. res[0].forEach(i => {
  503. this.collArr.push(i.acId)
  504. })
  505. })
  506. },
  507. // 获取报名用户
  508. getUsers() {
  509. let data = {
  510. oid: this.$store.state.user.openid, //用户id
  511. aid: this.acId,
  512. type: 2,
  513. page: 1, //下拉获取更多的备用字段
  514. lim: 6 //一次获取多少数据
  515. }
  516. this.$request('/selectApplyUser', 'POST', data).then(res => {
  517. console.log('获取报名用户列表', res[0]);
  518. if (res[0].length > 0) {
  519. this.stuNum = res[0][0].unum
  520. }
  521. // this.stuNum = res[0].length
  522. this.applyUserlist = []
  523. let arr = res[0]
  524. arr = arr.slice(0, 6)
  525. arr.forEach(e => {
  526. this.applyUserlist.push(e.avatar)
  527. })
  528. // this.applyUserlist = res[0]
  529. })
  530. }
  531. },
  532. onLoad(e) {
  533. // this.stopTimer=0
  534. // console.log('接收参数',e);
  535. this.acId = e.acId
  536. this.oid = this.$store.state.user.openid
  537. // 获取是否报名
  538. this.btnEnroll()
  539. // this.getActivity()
  540. // 获取页面数据
  541. this.getdata()
  542. // 获取是否收藏
  543. this.getColl()
  544. // 获取是否订阅
  545. // this.getSub()
  546. // 获取报名人名单
  547. this.getUsers()
  548. let curRoute = this.$mp.page.route //获取当前页面的路由信息
  549. let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
  550. console.log('routes', routes);
  551. if (routes.length == 1) {
  552. this.navbar.btn = 2
  553. } else {
  554. this.navbar.btn = 1
  555. }
  556. }
  557. }
  558. </script>
  559. <style lang="scss">
  560. .activityDetailNew {
  561. background-color: #fff;
  562. /deep/ .u-image {
  563. height: 300px !important;
  564. // align-items: center !important;
  565. }
  566. /deep/ .u-image__image {
  567. height: 300px !important;
  568. }
  569. .ellone {
  570. /deep/ .u-image {
  571. height: 400px !important;
  572. }
  573. /deep/ .u-image__image {
  574. height: 600px !important;
  575. }
  576. /deep/ .u-modal__content {
  577. flex-direction: column !important;
  578. align-items: center;
  579. height: 450px;
  580. }
  581. }
  582. .popup-container2 {
  583. position: fixed;
  584. top: 50%;
  585. left: 50%;
  586. transform: translate(-50%, -50%);
  587. width: 520rpx;
  588. height: 260rpx;
  589. z-index: 1000;
  590. border-radius: 16rpx;
  591. // display: none;
  592. box-shadow: 0rpx 3rpx 10rpx 5rpx rgba(0, 0, 0, .1);
  593. overflow: hidden;
  594. .popup {
  595. width: 100%;
  596. height: 100%;
  597. display: flex;
  598. flex-direction: column;
  599. background-color: #fff;
  600. border-radius: 16rpx;
  601. overflow: hidden;
  602. .header {
  603. flex: 1;
  604. display: flex;
  605. justify-content: center;
  606. align-items: center;
  607. flex-direction: column;
  608. margin-top: 24px;
  609. font-size: 34rpx;
  610. font-weight: 600;
  611. .imgShade {
  612. width: 170rpx;
  613. height: 170rpx;
  614. display: flex;
  615. justify-content: center;
  616. align-items: center;
  617. border: 10rpx #0056A8 solid;
  618. border-radius: 50%;
  619. box-shadow: 0 0 10rpx #0056A8;
  620. margin-bottom: 10rpx;
  621. }
  622. image {
  623. width: 150rpx;
  624. height: 150rpx;
  625. margin-top: 15px;
  626. margin-bottom: 15px;
  627. }
  628. }
  629. .footer {
  630. width: 100%;
  631. display: flex;
  632. overflow: hidden;
  633. .cancel-btn {
  634. width: 50%;
  635. height: 100rpx;
  636. background-color: #F7F7F7;
  637. color: #000;
  638. font-size: 34rpx;
  639. text-align: center;
  640. border-bottom-left-radius: 16rpx;
  641. line-height: 50px;
  642. }
  643. .confirm-btn {
  644. width: 50%;
  645. height: 100rpx;
  646. background-color: #0081FE;
  647. color: #fff;
  648. font-size: 34rpx;
  649. text-align: center;
  650. line-height: 50px;
  651. }
  652. }
  653. }
  654. }
  655. .top {
  656. width: 750rpx;
  657. position: relative;
  658. .img1 {
  659. display: block;
  660. margin: auto;
  661. width: 750rpx;
  662. }
  663. .img2 {
  664. position: absolute;
  665. width: 100%;
  666. left: 0;
  667. bottom: 0;
  668. }
  669. }
  670. .decontent {
  671. width: 750rpx;
  672. border-top-right-radius: 30rpx;
  673. border-top-left-radius: 30rpx;
  674. background-color: #fff;
  675. padding: 32rpx;
  676. display: flex;
  677. flex-direction: column;
  678. justify-content: flex-start;
  679. border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
  680. .actit {
  681. font-weight: 600;
  682. font-size: 40rpx;
  683. color: rgba(0, 0, 0, 0.8);
  684. line-height: 56rpx;
  685. display: -webkit-box;
  686. word-break: break-all;
  687. text-overflow: ellipsis;
  688. overflow: hidden;
  689. -webkit-box-orient: vertical;
  690. -webkit-line-clamp: 2;
  691. }
  692. .footer {
  693. display: flex;
  694. justify-content: space-between;
  695. color: rgba(0, 0, 0, 0.4);
  696. font-size: 24rpx;
  697. // height: 32rpx;
  698. // line-height: 32rpx;
  699. font-weight: 400;
  700. padding: 20rpx 0;
  701. padding-bottom: 0;
  702. }
  703. .avaList {
  704. display: flex;
  705. justify-content: space-between;
  706. width: 100%;
  707. align-items: center;
  708. padding: 30rpx 0;
  709. border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
  710. margin-bottom: 20rpx;
  711. .ava {
  712. // width: 353rpx;
  713. display: flex;
  714. align-items: center;
  715. }
  716. .cost {
  717. flex: 1;
  718. text-align: right;
  719. font-weight: 700;
  720. font-size: 40rpx;
  721. color: rgba(246, 135, 23, 1);
  722. }
  723. }
  724. .acinfo {
  725. width: 100%;
  726. display: flex;
  727. flex-direction: column;
  728. justify-content: space-between;
  729. font-size: 28rpx;
  730. font-weight: 400;
  731. color: rgba(0, 0, 0, 0.6);
  732. border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
  733. // padding-bottom: 30rpx;
  734. .acinfoAddress {
  735. // padding: 20rpx 0;
  736. display: flex;
  737. padding-bottom: 20rpx;
  738. .acinfoTit {
  739. width: 150rpx;
  740. display: flex;
  741. justify-content: space-between;
  742. // text-align: justify;
  743. .justified-text {
  744. text-align: justify;
  745. text-justify: inter-word;
  746. /* 兼容性写法,用于处理中英文混排时的对齐效果 */
  747. }
  748. }
  749. }
  750. .inf {
  751. color: rgba(0, 0, 0, 0.8);
  752. }
  753. }
  754. .acbrief {
  755. width: 100%;
  756. .britit {
  757. width: 100%;
  758. height: 48rpx;
  759. font-weight: 600;
  760. line-height: 48rpx;
  761. font-size: 32rpx;
  762. color: rgba(0, 0, 0, 0.8);
  763. margin: 30rpx 0;
  764. }
  765. .bricon {
  766. font-weight: 400;
  767. font-size: 28rpx;
  768. line-height: 44rpx;
  769. color: (0, 0, 0, 0.8);
  770. margin-bottom: 30rpx;
  771. }
  772. .briImg {
  773. width: 100%;
  774. }
  775. }
  776. }
  777. .btnBlock {
  778. position: fixed;
  779. bottom: 0;
  780. left: 0;
  781. width: 750rpx;
  782. height: 175rpx;
  783. background-color: #fff;
  784. display: flex;
  785. justify-content: flex-start;
  786. align-items: center;
  787. padding: 30rpx 30rpx;
  788. padding-bottom: 40rpx;
  789. border-top: 1rpx rgba(231, 231, 231, 1) solid;
  790. // padding-bottom: 78rpx;
  791. .icos {
  792. width: 200rpx;
  793. height: 96rpx;
  794. flex-shrink: 0;
  795. margin-right: 30rpx;
  796. display: flex;
  797. justify-content: space-between;
  798. .ico {
  799. width: 100rpx;
  800. display: flex;
  801. flex-direction: column;
  802. justify-content: space-between;
  803. align-items: center;
  804. .imgBlock {
  805. width: 48rpx;
  806. height: 48rpx;
  807. display: flex;
  808. align-items: center;
  809. justify-content: center;
  810. .icoimg {
  811. width: 42rpx;
  812. height: 40rpx;
  813. }
  814. }
  815. .icotxt {
  816. font-size: 24rpx;
  817. height: 40rpx;
  818. line-height: 40rpx;
  819. color: rgba(4, 0, 0, 1);
  820. }
  821. }
  822. }
  823. .rightBtn {
  824. flex: 1;
  825. display: flex;
  826. justify-content: center;
  827. align-items: center;
  828. .btnt {
  829. width: 454rpx;
  830. color: #fff;
  831. // font-weight: 600;
  832. height: 96rpx;
  833. background-color: rgba(0, 86, 168, 1);
  834. display: flex;
  835. justify-content: center;
  836. align-items: center;
  837. border-radius: 10rpx;
  838. }
  839. .btnt1 {
  840. width: 454rpx;
  841. color: #fff;
  842. // font-weight: 600;
  843. height: 96rpx;
  844. background-color: rgba(139, 190, 255, 1);
  845. display: flex;
  846. justify-content: center;
  847. align-items: center;
  848. border-radius: 10rpx;
  849. }
  850. }
  851. }
  852. }
  853. </style>