activityDetailNew.vue 22 KB

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