circle-info.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. <template>
  2. <view class="circle-info-box iPhone-bottom flex-common-css box-border-box bgc-f">
  3. <view class="nav-box bgc-f">
  4. <Nav :title='schoolData.school_name' leftColor='#fff' titleColor='#fff'
  5. bgckgroundBox='linear-gradient(-90deg, #55A7FF, #1561F6)'></Nav>
  6. </view>
  7. <scroll-view scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
  8. <view class="plr-30 box-border-box mb-30">
  9. <view class="b-b-EDEDF1 ptb-30 align-items-center flex-justify-space">
  10. <view class="align-items-center">
  11. <image class="user-img mr-14 b-rad-50" :src="obj.head_img" mode=""></image>
  12. <view class="">
  13. <view class="fs-24 fw-b w348 text-overflow-ellipsis-one mb-8">{{obj.nickname||''}}</view>
  14. <view class="fs-24 fc-a fw-400">{{obj.created_date||''}}</view>
  15. </view>
  16. </view>
  17. <view class="">
  18. </view>
  19. </view>
  20. </view>
  21. <view class="box-border-box mb-26" v-if="obj.image.length > 0">
  22. <swiper class="swiper mb-32 " circular indicator-dots indicator-active-color="#4FB3EF" :autoplay="true"
  23. :interval="3000" :duration="500">
  24. <swiper-item v-for="(item,i) in obj.image" :key="i">
  25. <image class="swiper-item" :src="item" mode="aspectFit" @click="lookImg(i,item)"></image>
  26. </swiper-item>
  27. </swiper>
  28. </view>
  29. <view class="box-border-box bz-box bgc-f mt-24 b-b-F2F3F7">
  30. <view class="fs-30 fw-600 mb-32 item-content">{{obj.content||''}}</view>
  31. <view class="align-items-center mb-40">
  32. <view class="label-box mr-14 b-rad-200 bgc-EDF6FF fc-4495FD fs-24">
  33. {{obj.school_name}}
  34. </view>
  35. <view class="label-box b-rad-200 bgc-FCEDED fc-FC4642 fs-24">
  36. {{obj.topic_name}}
  37. </view>
  38. </view>
  39. </view>
  40. <view class="plr-30 box-border-box mb-30">
  41. <view class="fs-32 fc-0 fw-b b-b-EDEDF1 ptb-30">
  42. 评论<text class="fs-24 fc-a ml-8">({{obj.remark}})</text>
  43. </view>
  44. </view>
  45. <view v-if="list.length == 0" class="scroll-view-css">
  46. <EnBlank :customSrc='true'>
  47. <template v-slot:blankImg>
  48. <image class="black-custom-img" src="@/static/img/common/no-order.png" mode=""></image>
  49. </template>
  50. </EnBlank>
  51. </view>
  52. <view v-else class="pop-box pop-msg box-border-box plr-30">
  53. <view class=" box-border-box">
  54. <view class="list-box flex-justify-space" v-for="(item,i) in list" :key="i">
  55. <image class="list-box-img" :src="item.head_img" mode="scaleToFill"></image>
  56. <view class="flex-1 p-b-20">
  57. <view class=" flex-justify-space">
  58. <view class=" b-b-F9F9F9 mr-20">
  59. <view class="fs-28 fw-400 fc-9 mb-8 align-items-center">
  60. {{item.nickname}}
  61. <span v-if="item.is_author == 1"
  62. class='only-box text-align-center fs-24 fc-41ABF5 ml-10'>作者</span>
  63. </view>
  64. <view class="fs-30 fw-400 mb-8 item_content" @click.stop="openInput(1,item,i,i)">
  65. {{item.content}}
  66. </view>
  67. <view class="align-items-center mb-8">
  68. <view class="fs-24 fw-400 fc-9">{{item.created_date}}</view>
  69. <uni-icons class="ml-10" v-if="item.is_self == 1"
  70. @click="delInfo(item, i, 1, i)" type="trash" size="18"
  71. color="#BFBFBF"></uni-icons>
  72. </view>
  73. </view>
  74. <view class="display-flex" @click.stop="handUp(2,item)">
  75. <uni-icons type="hand-up" size="20"
  76. :color="item.is_like==1?'#FD5C02':'#999'"></uni-icons>
  77. <view class="fs-24 fw-400 mt-5" :class="item.is_like==1?'fc-FD5C02':'fc-9'">
  78. {{item.like}}
  79. </view>
  80. </view>
  81. </view>
  82. <view v-if="item.isOpen" class="fs-24 fc-6 text-align-center mb-12"
  83. @click="openReply(1,item)">展开更多评论
  84. </view>
  85. <!-- 回复 -->
  86. <view class="mb-16" v-if="item.count > 0">
  87. <view class="list-box flex-justify-space" v-for="(info,index) in item.replyList"
  88. :key="index">
  89. <image class="list-box-img" :src="info.head_img" mode="scaleToFill"></image>
  90. <view class="flex-1">
  91. <view class=" flex-justify-space">
  92. <view class=" b-b-F9F9F9 mr-20">
  93. <view class="fs-28 fw-400 fc-9 mb-8 align-items-center">
  94. <view class="">
  95. {{info.nickname}}
  96. </view>
  97. <span v-if="info.is_author == 1"
  98. class='only-box text-align-center flex-shrink0 fs-24 fc-41ABF5 ml-10'>作者</span>
  99. </view>
  100. <view class="fs-30 fw-400 mb-8 item_content"
  101. @click.stop="openInput(2,info,index,i)">
  102. {{info.content}}
  103. </view>
  104. <view class="align-items-center mb-8">
  105. <view class="fs-24 fw-400 fc-9 ">{{info.created_date}}</view>
  106. <uni-icons type="trash" size="18" class="ml-10"
  107. v-if="info.is_self == 1" @click="delInfo(info, index, 2 ,i)"
  108. color="#BFBFBF"></uni-icons>
  109. </view>
  110. </view>
  111. <view class="display-flex" @click.stop="handUp(2,info)">
  112. <uni-icons type="hand-up" size="20"
  113. :color="info.is_like==1?'#FD5C02':'#999'"></uni-icons>
  114. <view class="fs-24 fw-400 mt-5"
  115. :class="info.is_like==1?'fc-FD5C02':'fc-9'">{{info.like}}</view>
  116. </view>
  117. </view>
  118. </view>
  119. </view>
  120. <view
  121. v-if="item.replyList.length>0 && item.replyList.length < item.count && item.count > 10"
  122. class="fs-24 fc-6 text-align-center mb-12" @click="openReply(2,item)">展开更多评论</view>
  123. </view>
  124. </view>
  125. </view>
  126. </view>
  127. </view>
  128. </scroll-view>
  129. <view class="card-5 align-items-center flex-justify-space box-border-box boder-b-t" v-show="!inputPopType">
  130. <view class="input-box-box fs-24 fc-a mr-20" @click.stop="openInput(0,'','','')">友善评论,文明发言</view>
  131. <view class="display-flex flex-shrink0">
  132. <view class="align-items-center mr-20" @click.stop="handUp(1,obj)">
  133. <uni-icons type="hand-up" size="22" :color="obj.is_like==1?'#FD5C02':'#000000'"></uni-icons>
  134. <view :class="obj.is_like==1?'fc-FD5C02':'fc-9'">
  135. 点赞
  136. </view>
  137. <!-- <view class="fs-24 " :class="obj.is_like==1?'fc-FD5C02':'fc-9'">{{obj.like}}</view> -->
  138. </view>
  139. <view class="align-items-center" @click.stop="openRepot(obj)">
  140. <image class="jb-icon mr-6" src="/pages-school/static/jb.png" mode=""></image>
  141. <view class="fs-24 fc-9">举报</view>
  142. </view>
  143. </view>
  144. <!-- <image v-else class="wh64" @click.stop="save()" src="@/static/img/school/fs.png" mode=""></image> -->
  145. </view>
  146. <view class="input-pop box-border-box" v-show="inputPopType">
  147. <view class="pop-input">
  148. <view class="text-align-right mb-20 fs-30 fc-41ABF5" @click.stop="save()">
  149. 发送
  150. </view>
  151. <textarea class="fs-input fs-28 fc-3" :focus='focus' :adjust-position='false' v-model="msgData.content" placeholder='友善评论,文明发言' maxlength="100" placeholder-class='fs-28 fc-9 fw-600' @focus='inputFocus(true)' @blur='inputFocus(false)'/>
  152. <view :style="[{'height': KeyboardHeight +'px'}]"> </view>
  153. </view>
  154. </view>
  155. <uni-popup ref="popupRepot" type="bottom">
  156. <view class="pop-box pop-h-30 box-border-box p-24" :style="'bottom:'+KeyboardHeight+'px;'">
  157. <view class="head-pop flex-justify-space align-items-center mb-24">
  158. <uni-icons @click.stop="closePop(1)" type="closeempty" size="24"></uni-icons>
  159. <view class="fs-36 fc-0 fw-600">请输入举报内容</view>
  160. <view class="fs-28 fw-600 fc-41ABF5" @click.stop="closePop(2)">确定</view>
  161. </view>
  162. <view class="scroll-view-css">
  163. <textarea style="height: 100%;" v-model="reportData.content" class=" fs-24" :maxlength='50'
  164. placeholder='请输入举报内容'></textarea>
  165. </view>
  166. <!-- <view @click.stop="closePop(2)" class="b-bottom text-align-center fs-32 fc-3 fw-600 fc-f">确认举报</view> -->
  167. </view>
  168. </uni-popup>
  169. </view>
  170. </template>
  171. <script>
  172. import EnBlank from "@/components/en-utils/en-blank/en-blank";
  173. import {
  174. alumnInfo,
  175. getRemarkList,
  176. setAlumniLike,
  177. delRemark,
  178. setCreateRemark,
  179. setRemarkLike,
  180. alumniReport
  181. } from '@/api/alumni.js';
  182. import tools from "@/service/tools";
  183. export default {
  184. components: {
  185. EnBlank
  186. },
  187. data() {
  188. return {
  189. isAJAX: false,
  190. news_id: '',
  191. obj: {
  192. image: [],
  193. },
  194. list: [],
  195. page: 1,
  196. total: 0,
  197. schoolData: {
  198. school_name: '',
  199. },
  200. // 发起评论
  201. msgData: {
  202. news_id: '',
  203. remark_id: '',
  204. content: '',
  205. reply_id: '',
  206. },
  207. // 回复评论
  208. replyData: {
  209. page: 1,
  210. },
  211. // 举报
  212. reportData: {
  213. news_id: '',
  214. content: '',
  215. },
  216. focus: false,
  217. msgType: 0, // 消息类型
  218. msgIndex: 0, // 列表一级索引
  219. msgI: 0,
  220. KeyboardHeight: 0, // 键盘高度
  221. // showKeyNum: 0, //键盘打开的次数
  222. remark: '',
  223. inputPopType: false
  224. }
  225. },
  226. onShow() {
  227. this.schoolData.school_name = uni.getStorageSync('school_name');
  228. },
  229. onLoad(e) {
  230. this.news_id = e.news_id;
  231. this.msgData.news_id = e.news_id;
  232. this.getInfo();
  233. this.getList();
  234. uni.onKeyboardHeightChange(res => {
  235. console.log('log', res);
  236. this.KeyboardHeight = res.height
  237. })
  238. },
  239. onUnload() {
  240. const circleDataUp = {}
  241. alumnInfo({
  242. news_id: this.news_id
  243. }).then((res) => {
  244. if (res.code === 1) {
  245. circleDataUp.news_id = res.data.news_id
  246. circleDataUp.like = res.data.like
  247. circleDataUp.remark = res.data.remark
  248. circleDataUp.heat = res.data.heat
  249. circleDataUp.is_like = res.data.is_like
  250. uni.$emit('circleDataUp', circleDataUp)
  251. }
  252. })
  253. // const circleDataUp = {
  254. // news_id: this.obj.news_id,
  255. // like: this.obj.like,
  256. // remark: list.length,
  257. // heat: this.obj.heat
  258. // }
  259. console.log("监听页面卸载");
  260. },
  261. methods: {
  262. // hideBorad() {
  263. // this.showKeyNum = 2;
  264. // this.keyboardHeight = 0;
  265. // },
  266. inputFocus(type) {
  267. this.inputPopType = type
  268. if (!type) {
  269. this.focus = false
  270. // this.hideBorad()
  271. }
  272. this.$forceUpdate()
  273. },
  274. lookImg(i, item) {
  275. tools.lookBigImg(i, item)
  276. },
  277. toBack() {
  278. tools.leftClick()
  279. },
  280. getInfo() {
  281. alumnInfo({
  282. news_id: this.news_id
  283. }).then((res) => {
  284. if (res.code === 1) {
  285. this.obj = res.data;
  286. } else {
  287. tools.error(res.msg, 1000)
  288. setTimeout(() => {
  289. uni.navigateBack({
  290. delta: 1
  291. })
  292. }, 1000)
  293. }
  294. })
  295. },
  296. scrolltolower() {
  297. if (this.list.length < this.total) {
  298. this.page += 1;
  299. this.getList();
  300. }
  301. },
  302. getList() {
  303. getRemarkList({
  304. news_id: this.news_id,
  305. remark_id: 0,
  306. page: this.page
  307. }).then((res) => {
  308. if (res.code === 1) {
  309. this.list = [...this.list, ...res.data.items];
  310. this.total = res.data.total;
  311. this.list.forEach((v) => {
  312. v.replyList = [];
  313. if (v.count > 0) {
  314. v.isOpen = true;
  315. }
  316. })
  317. }
  318. })
  319. },
  320. // 获取回复列表
  321. openReply(type, item) {
  322. // type 1获取其他 2加载更多
  323. if (this.isAJAX) {
  324. return
  325. }
  326. this.isAJAX = true;
  327. if (type == 1) {
  328. item.replyList = [];
  329. this.replyData.page = 1;
  330. } else {
  331. this.replyData.page += 1;
  332. }
  333. getRemarkList({
  334. news_id: item.news_id,
  335. remark_id: item.id,
  336. page: this.replyData.page
  337. }).then((res) => {
  338. if (res.code === 1) {
  339. this.isAJAX = false;
  340. item.replyList = [...item.replyList, ...res.data.items];
  341. item.isOpen = false;
  342. } else {
  343. this.isAJAX = false;
  344. tools.error(res.msg)
  345. }
  346. })
  347. },
  348. // 点赞
  349. handUp(type, item) {
  350. if (this.isAJAX) {
  351. return
  352. }
  353. this.isAJAX = true;
  354. let is_like = item.is_like == 1 ? 0 : 1;
  355. if (type == 1) {
  356. // 点赞贴子
  357. setAlumniLike({
  358. news_id: item.news_id,
  359. is_like: is_like
  360. }).then((res) => {
  361. this.postFun(res, item, is_like)
  362. })
  363. } else {
  364. // 点赞评论
  365. setRemarkLike({
  366. news_id: item.news_id,
  367. is_like: is_like,
  368. remark_id: item.id
  369. }).then((res) => {
  370. this.handUpFun(res, item, is_like)
  371. })
  372. }
  373. },
  374. // 点赞公共回复
  375. handUpFun(res, item, is_like) {
  376. if (res.code === 1) {
  377. item.is_like = is_like;
  378. if (item.is_like == 0 && item.like > 0) {
  379. item.like -= 1
  380. } else {
  381. item.like += 1
  382. }
  383. this.isAJAX = false;
  384. tools.success(res.msg, 1000);
  385. } else {
  386. this.isAJAX = false;
  387. tools.error(res.msg);
  388. }
  389. },
  390. // 点赞帖子
  391. postFun(res, item, is_like) {
  392. console.log(res, item, is_like);
  393. if (res.code === 1) {
  394. item.is_like = is_like;
  395. this.isAJAX = false;
  396. tools.success(res.msg, 1000);
  397. } else {
  398. this.isAJAX = false;
  399. tools.error(res.msg);
  400. }
  401. },
  402. openInput(type, item, index, i) {
  403. console.log(index, i, '$$$$$$$$$$$$$$$$$');
  404. this.msgIndex = index
  405. this.msgType = type
  406. this.msgI = i
  407. if (type == 0) {
  408. this.msgData.remark_id = 0;
  409. } else if (type == 1) {
  410. this.msgData.remark_id = item.id;
  411. this.msgData.reply_id = item.m_id;
  412. } else {
  413. this.msgData.remark_id = item.remark_id;
  414. this.msgData.reply_id = item.m_id;
  415. }
  416. // this.$refs.popup.open();
  417. this.inputPopType = true
  418. setTimeout(() => {
  419. this.focus = true
  420. // this.$forceUpdate()
  421. }, 500);
  422. // console.log(this.focus, '是否聚焦');
  423. },
  424. closeInput() {
  425. // this.$refs.popup.close();
  426. this.inputPopType = false
  427. this.msgData.remark_id = '';
  428. this.msgData.content = '';
  429. this.msgData.reply_id = '';
  430. },
  431. save() {
  432. if (this.isAJAX) {
  433. return
  434. }
  435. this.isAJAX = true;
  436. setCreateRemark(this.msgData).then((res) => {
  437. if (res.code == 1) {
  438. tools.success('评论成功', 1000)
  439. setTimeout(() => {
  440. this.isAJAX = false;
  441. this.closeInput()
  442. console.log(this.msgType)
  443. if (this.msgType == 0) {
  444. this.list.unshift(res.data)
  445. this.$forceUpdate()
  446. } else if (this.msgType == 1) {
  447. let replyList = []
  448. ++this.list[this.msgI].count
  449. console.log(this.list[this.msgIndex], '二级');
  450. if (this.list[this.msgIndex].replyList) {
  451. this.list[this.msgIndex].replyList.push(res.data)
  452. } else {
  453. this.list[this.msgIndex].replyList = replyList
  454. this.list[this.msgIndex].replyList.push(res.data)
  455. this.$forceUpdate()
  456. }
  457. } else {
  458. console.log(this.list[this.msgIndex]);
  459. ++this.list[this.msgI].count
  460. this.list[this.msgI].replyList.push(res.data)
  461. this.$forceUpdate()
  462. }
  463. console.log(this.list[this.msgIndex]);
  464. this.msgIndex = 0
  465. this.msgType = 0
  466. this.msgI = 0
  467. // this.list = [];
  468. // this.page = 1;
  469. // this.getList();
  470. this.getInfo();
  471. // remark
  472. }, 1500)
  473. } else {
  474. this.isAJAX = false;
  475. tools.error(res.msg)
  476. }
  477. })
  478. },
  479. delInfo(item, index, type, i) {
  480. if (this.isAJAX) {
  481. return
  482. }
  483. this.isAJAX = true;
  484. delRemark({
  485. remark_id: item.id
  486. }).then((res) => {
  487. if (res.code === 1) {
  488. tools.success('删除成功', 1000)
  489. setTimeout(() => {
  490. this.isAJAX = false;
  491. console.log(this.list[i], '88888888888888888');
  492. --this.list[i].count
  493. if (type == 1) {
  494. this.list.splice(index, 1)
  495. } else {
  496. this.list[i].replyList.splice(index, 1)
  497. }
  498. // this.list = [];
  499. // this.page = 1;
  500. // this.getList();
  501. this.getInfo();
  502. }, 1500)
  503. } else {
  504. this.isAJAX = false;
  505. tools.error(res.msg)
  506. }
  507. })
  508. },
  509. // 打开举报
  510. openRepot(item) {
  511. this.reportData.news_id = item.news_id;
  512. this.$refs.popupRepot.open();
  513. },
  514. // 举报
  515. closePop(type) {
  516. if (type === 1) {
  517. this.reportData.news_id = '';
  518. this.reportData.content = '';
  519. this.$refs.popupRepot.close();
  520. } else {
  521. if (this.isAJAX) {
  522. return
  523. }
  524. this.isAJAX = true;
  525. alumniReport(this.reportData).then((res) => {
  526. if (res.code === 1) {
  527. tools.success(res.msg, 1000)
  528. setTimeout(() => {
  529. this.isAJAX = false;
  530. this.closePop(1);
  531. }, 1000)
  532. } else {
  533. tools.error(res.msg);
  534. this.isAJAX = false;;
  535. }
  536. })
  537. }
  538. },
  539. },
  540. }
  541. </script>
  542. <style scoped lang="scss">
  543. .input-pop{
  544. transition: all 0.2s ease;
  545. width: 100%;
  546. // bottom: 0;
  547. }
  548. .input-pop-ok {
  549. // transform: translateY(0);
  550. }
  551. .input-pop-no {
  552. // transform: translateY( calc( 260px + env(safe-area-inset-bottom)));
  553. }
  554. .jb-icon{
  555. width: 30rpx;
  556. height: 29rpx;
  557. }
  558. .label-box {
  559. padding: 0 18rpx;
  560. height: 48rpx;
  561. line-height: 48rpx;
  562. }
  563. .user-img {
  564. width: 70rpx;
  565. height: 70rpx;
  566. }
  567. .b-b-F2F3F7 {
  568. border-bottom: 17rpx solid #F2F3F7;
  569. }
  570. .item_content {
  571. // max-width: 100%;
  572. word-break: break-all;
  573. word-wrap: break-word;
  574. }
  575. .item-content {
  576. word-wrap: break-word;
  577. }
  578. .wz {
  579. width: 32rpx;
  580. height: 32rpx;
  581. }
  582. .fs-input {
  583. flex: 1;
  584. width: 100%;
  585. height: 170rpx !important;
  586. // line-height: 72rpx;
  587. background: #F2F2F2;
  588. border-radius: 20rpx;
  589. box-sizing: border-box;
  590. padding: 20rpx 24rpx;
  591. }
  592. .wh64 {
  593. width: 68rpx;
  594. height: 68rpx;
  595. }
  596. .input-box-box {
  597. width: 450rpx;
  598. height: 80rpx;
  599. line-height: 80rpx;
  600. background: #F2F3F7;
  601. border-radius: 200rpx;
  602. box-sizing: border-box;
  603. padding: 0 24rpx;
  604. }
  605. .circle-info-box {
  606. .boder-b-t {
  607. border-top: 1rpx solid #F2F2F2;
  608. }
  609. .card-5 {
  610. height: 130rpx;
  611. padding: 25rpx 30rpx;
  612. }
  613. .w348 {
  614. width: 348rpx;
  615. }
  616. .nav-box {
  617. z-index: 99;
  618. padding-bottom: 10rpx;
  619. }
  620. .swiper {
  621. width: 100%rpx;
  622. height: 920rpx;
  623. .swiper-item {
  624. width: 100%;
  625. height: 920rpx;
  626. // background-color: skyblue;
  627. }
  628. }
  629. .bz-box {
  630. padding: 0 32rpx 20rpx 32rpx;
  631. .card-4 {
  632. // view {
  633. // padding: 4rpx 16rpx;
  634. // background: #F2F2F2;
  635. // border-radius: 200rpx;
  636. // font-size: 24rpx;
  637. // color: #999;
  638. // margin-right: 20rpx;
  639. // margin-bottom: 10rpx;
  640. // }
  641. }
  642. }
  643. .pop-input {
  644. width: 100%;
  645. height: auto;
  646. background-color: #fff;
  647. border-top: 1rpx solid #ccc;
  648. padding: 15rpx 24rpx;
  649. box-sizing: border-box;
  650. // .save-box{
  651. // text-align: center;
  652. // line-height: 88rpx;
  653. // font-weight: 600;
  654. // font-size: 32rpx;
  655. // color: #FFFFFF;
  656. // width: 100%;
  657. // height: 80rpx;
  658. // border-radius: 200rpx;
  659. // background: linear-gradient( 105deg, #57CAFF 0%, #41ABF5 100%);
  660. // }
  661. }
  662. .pop-box {
  663. width: 100%;
  664. height: 50vh;
  665. background-color: #fff;
  666. border-radius: 24rpx 24rpx 0rpx 0rpx;
  667. display: flex;
  668. flex-direction: column;
  669. .item-box {
  670. width: 100%;
  671. height: 92rpx;
  672. border-radius: 200rpx;
  673. line-height: 92rpx;
  674. text-align: center;
  675. margin-bottom: 24rpx;
  676. }
  677. }
  678. .pop-msg {
  679. // height: 70vh;
  680. .head-pop {
  681. padding-bottom: 34rpx !important;
  682. border-bottom: 1rpx solid #F2F2F2;
  683. }
  684. .list-box {
  685. .list-box-img {
  686. width: 80rpx;
  687. height: 80rpx;
  688. border-radius: 50%;
  689. margin-right: 16rpx;
  690. }
  691. .only-box {
  692. padding: 4rpx 16rpx;
  693. background: rgba(65, 171, 245, 0.1);
  694. border-radius: 8rpx 8rpx 8rpx 8rpx;
  695. }
  696. .msg-img {
  697. width: 144rpx;
  698. height: 144rpx;
  699. border-radius: 12rpx;
  700. margin-right: 5rpx;
  701. margin-bottom: 5rpx;
  702. }
  703. .msg-img:nth-child(3n) {
  704. margin-right: 0rpx;
  705. }
  706. .msg-img-1 {
  707. width: 100rpx !important;
  708. height: 100rpx !important;
  709. }
  710. }
  711. }
  712. }
  713. </style>