Community.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964
  1. <script setup lang="ts">
  2. import CpmdHeader from '@/components/CpmdHeader.vue';
  3. import { onMounted, onUnmounted, ref } from 'vue'
  4. import { userInfoStore } from '@/stores'
  5. import { getUnread } from '../utils/test'
  6. //持久化设置 菜单状态
  7. import { menuStatusStore } from '@/stores'
  8. import { ElMessage } from 'element-plus';
  9. import { pubMsgApi, queryMsgApi, queryMsgApi1, subPubMsgApi } from '@/api/plan';
  10. import { number } from 'echarts';
  11. import { fa } from 'element-plus/es/locales.mjs';
  12. const menuStatus = menuStatusStore();
  13. menuStatus.saveActiveIndex('3')
  14. const subMM = ref<string>('')
  15. //获取缓存用户信息
  16. const userInfo = userInfoStore();
  17. //显示发布评论的弹出框
  18. const pub_visible = ref<boolean>(false)
  19. //显示查看子评论的弹出框
  20. const sub_visible = ref<boolean>(false)
  21. //用户姓名
  22. const userName = ref<string>('')
  23. //用户性别
  24. const userSex = ref<string>('')
  25. //用户编号
  26. const userNo = ref<string>('')
  27. //用户发送的信息
  28. const user_msg = ref<string>('')
  29. //输入框样式
  30. const des_input = ref<any>()
  31. //防止重复点
  32. const isLock = ref<boolean>(false)
  33. //刚进入页面就将高度设置为页面需要的
  34. onMounted(() => {
  35. userName.value = userInfo.userInfo.userName;
  36. userNo.value = userInfo.userInfo.userNo;
  37. userSex.value = userInfo.userInfo.gender;
  38. //进到界面开始轮询
  39. // queryMsg()
  40. if (userInfo.token) {
  41. getUnread()
  42. }
  43. })
  44. //界面销毁函数
  45. const parentId = ref<string>('')
  46. const pageNum = ref<number>(1)
  47. const pageSize = ref<number>(10)
  48. //数据总共多少条
  49. const totol = ref<number>(0)
  50. //显示是否是在加载中
  51. const isLoading = ref<boolean>(false)
  52. //是否显示noMore
  53. const noMore = ref<boolean>(false)
  54. const list = ref<any>([])
  55. const queryMsg = async () => {
  56. let params = {
  57. pageNum: pageNum.value,
  58. pageSize: pageSize.value
  59. }
  60. let res: any = await queryMsgApi(params)
  61. if (res.code == 200) {
  62. // 将值赋值给列表
  63. if (res.data.content.length > 0) {
  64. list.value.push(...res.data.content)
  65. totol.value = res.data.totalElements
  66. } else {
  67. //显示没有更多了
  68. list.value = []
  69. totol.value = 0
  70. noMore.value = true
  71. // totalElements
  72. }
  73. }
  74. }
  75. //获取数据报
  76. const getData = async () => {
  77. //判断总条数是否大于当前页面的数据
  78. //先判断
  79. if (totol.value < list.value.length) {
  80. noMore.value = true;
  81. return
  82. }
  83. if (totol.value != 0) {
  84. if (totol.value == list.value.length) {
  85. //显示noMore
  86. if (totol.value == 0) {
  87. noMore.value = false;
  88. } else {
  89. noMore.value = true;
  90. }
  91. return
  92. }
  93. }
  94. // //先是加载中的话就不加载了
  95. // if (isLoading.value) {
  96. // return
  97. // }
  98. isLoading.value = true;
  99. //参数构造
  100. //到这里就可以显示加载中
  101. let res = await queryMsg()
  102. pageNum.value++
  103. isLoading.value = false;
  104. }
  105. //---------------------//查询字恢复------------------------字恢复
  106. const pageNum1 = ref<number>(1)
  107. const pageSize1 = ref<number>(10)
  108. //数据总共多少条
  109. const totol1 = ref<number>(0)
  110. //显示是否是在加载中
  111. const isLoading1 = ref<boolean>(false)
  112. //是否显示noMore
  113. const noMore1 = ref<boolean>(false)
  114. const list1 = ref<any>([])
  115. const queryMsg1 = async () => {
  116. let params = {
  117. pageNum: pageNum1.value,
  118. pageSize: pageSize1.value,
  119. //parentUserNo: parentUserNo.value
  120. parentId: parentId.value
  121. }
  122. let res: any = await queryMsgApi1(params)
  123. //修改文本
  124. if (res.code == 200) {
  125. // 将值赋值给列表
  126. if (res.data.content.length > 0) {
  127. list1.value.push(...res.data.content)
  128. totol1.value = res.data.totalElements
  129. } else {
  130. list1.value = []
  131. totol1.value = 0
  132. // totalElements
  133. }
  134. }
  135. }
  136. //查询字恢复------------------------字恢复
  137. //获取数据报
  138. const getData1 = async () => {
  139. //判断总条数是否大于当前页面的数据
  140. if (totol1.value < list1.value.length) {
  141. noMore1.value = true;
  142. return
  143. }
  144. //先判断
  145. if (totol1.value == list1.value.length) {
  146. //显示noMore
  147. if (totol1.value == 0) {
  148. noMore1.value = false;
  149. } else {
  150. noMore1.value = true;
  151. }
  152. return
  153. }
  154. //先是加载中的话就不加载了
  155. if (isLoading1.value) {
  156. return
  157. }
  158. isLoading1.value = true;
  159. //参数构造
  160. //到这里就可以显示加载中
  161. let res = await queryMsg1()
  162. pageNum1.value++
  163. isLoading1.value = false;
  164. }
  165. //点击发布留言按钮 打开弹出框
  166. const openPubMsg = () => {
  167. //重置输入框
  168. user_msg.value = ''
  169. //调用填写的内容
  170. pub_visible.value = true
  171. }
  172. //点击进行发布信息
  173. const pubMsg = async () => {
  174. //判断用户是否登陆了
  175. if (!userInfo.token) {
  176. ElMessage({
  177. message: '尚未登录',
  178. type: 'warning'
  179. })
  180. return
  181. }
  182. if (des_input.value == '') {
  183. ElMessage({
  184. message: '留言不能为空',
  185. type: 'warning'
  186. })
  187. return
  188. }
  189. if (isLock.value) {
  190. return
  191. }
  192. isLock.value = true
  193. let params = {
  194. userNo: userNo.value,
  195. userName: userName.value,
  196. commentContent: des_input.value
  197. }
  198. let res: any = await pubMsgApi(params)
  199. //
  200. //重新刷新列表
  201. //
  202. //重新渲染列表数据
  203. // list.value = []
  204. // pageNum.value = 1
  205. // getData()
  206. if (res.code == 200) {
  207. list.value.unshift(res.data)
  208. des_input.value = ''
  209. isLock.value = false
  210. pub_visible.value = false
  211. ElMessage({
  212. message: res.msg,
  213. type: 'success'
  214. })
  215. } else {
  216. ElMessage({
  217. message: res.msg,
  218. type: 'error'
  219. })
  220. }
  221. //调用新增留言的方法
  222. }
  223. //打开子页面进行回复
  224. //评论名称
  225. const comName = ref<string>('')
  226. //评论时间
  227. const comTime = ref<string>('')
  228. //具体评论
  229. const comDes = ref<string>('')
  230. const parentUserNo = ref<string>('')
  231. //评论性别
  232. const comSex = ref<string>('0')
  233. const subFun = (item: any) => {
  234. parentId.value = item.id;
  235. comName.value = item.userName;
  236. comTime.value = item.createTime;
  237. comDes.value = item.commentContent;
  238. parentUserNo.value = item.userNo
  239. sub_visible.value = true
  240. subMM.value = ''
  241. //打开的时候
  242. // 需要将数据值空
  243. resetFun()
  244. queryMsg1()
  245. }
  246. //点击进行发布信息-----子信息
  247. const subPubMsg = async () => {
  248. //判断是否登陆了
  249. if (!userInfo.token) {
  250. ElMessage({
  251. message: '尚未登录',
  252. type: 'warning'
  253. })
  254. return
  255. }
  256. if (subMM.value == '') {
  257. ElMessage({
  258. message: '留言不能为空',
  259. type: 'warning'
  260. })
  261. return
  262. }
  263. if (isLock.value) {
  264. return
  265. }
  266. isLock.value = true
  267. // <!-- "parentUserNo": "string",
  268. // "userName": "string",
  269. // "userNo": "string"
  270. // "commentContent": "string", -->
  271. let params = {
  272. userNo: userNo.value,
  273. userName: userName.value,
  274. commentContent: subMM.value,
  275. // parentUserNo: parentUserNo.value
  276. parentId: parentId.value
  277. }
  278. let res: any = await subPubMsgApi(params)
  279. if (res.code == 200) {
  280. //查找list中ID等于parentID的对象,将起count+1
  281. // let li = list.value.filter((item:any)=>{
  282. // return item.id==parentId.value
  283. // })
  284. for (let i = 0; i < list.value.length; i++) {
  285. if (list.value[i].id == parentId.value) {
  286. list.value[i].count += 1
  287. }
  288. }
  289. isLock.value = false
  290. // sub_visible.value = false
  291. //调用个查询
  292. //加一条在上边
  293. list1.value.push(res.data)
  294. subMM.value = ''
  295. //禁用滚动
  296. //在这里应该需要滚动到最底部
  297. // resetFun()
  298. // queryMsg1()
  299. } else {
  300. ElMessage({
  301. message: res.msg,
  302. type: 'error'
  303. })
  304. }
  305. //调用新增留言的方法
  306. }
  307. const resetFun = () => {
  308. pageNum1.value = 1;
  309. pageSize1.value = 10;
  310. totol1.value = 0;
  311. isLoading1.value = false;
  312. noMore1.value = false;
  313. list1.value = [];
  314. }
  315. //退出页面销毁 方法
  316. onUnmounted(() => {
  317. })
  318. </script>
  319. <template>
  320. <div class="home_header_out">
  321. <div class=" home_header_inner">
  322. <CpmdHeader />
  323. <div style="text-align: center;">
  324. <!-- <img class="xlts_img" style="margin-top:40px" src="../assets/home/other_text.png" /> -->
  325. </div>
  326. </div>
  327. <div class="leave_message">
  328. <!-- <img class="img" src="../assets/zs/community.png" alt=""> -->
  329. <div class="font_blue"> 留言社区 </div>
  330. </div>
  331. <div class="kply">
  332. <div class="kply_inner">
  333. <div style="padding :20px 40px">
  334. <!-- <div style="padding:10% 20% ;" v-show="true">
  335. <img width="100%" src="../assets/planNo.png">
  336. </div> -->
  337. <div class="kepu_title">
  338. <div class="kepu_title_des">
  339. 留言社区
  340. </div>
  341. <div>
  342. <div class="home_mid_plan_button">
  343. <div class="pub_button" @click="openPubMsg">
  344. <!-- <img width="30px" src="../assets/kepu/pub.png" />&nbsp;&nbsp; -->
  345. 发布留言
  346. </div>
  347. </div>
  348. </div>
  349. </div>
  350. <!-- //留言内容 -->
  351. <div class="com_out" style="overflow: auto" :infinite-scroll-distance="20"
  352. :infinite-scroll-disabled="isLoading || noMore" v-infinite-scroll="getData">
  353. <div v-for="item in list">
  354. <div class="com_title">
  355. <img src="../assets/kepu/man.png" />
  356. <div class="com_des">
  357. <div class="com_name">
  358. {{ item.userName }}
  359. </div>
  360. <div class="com_time">
  361. {{ item.createTime }}
  362. </div>
  363. </div>
  364. </div>
  365. <div class="com_content">
  366. {{ item.commentContent }}
  367. <div class="com_yan">
  368. <span style="color: #818996;">{{ item.count }}</span>
  369. <img height="20px" src="../assets/kepu/yan1.png" @click="subFun(item)" />
  370. </div>
  371. </div>
  372. <el-divider content-position="right"></el-divider>
  373. </div>
  374. <div style="text-align: center" v-if="isLoading">努力加载中...</div>
  375. <div style="text-align: center;" v-if="noMore">没有更多了</div>
  376. </div>
  377. </div>
  378. </div>
  379. </div>
  380. </div>
  381. <el-dialog v-model="pub_visible" :show-close="true" width="60%" style="border-radius: 5px; ">
  382. <template #header="{ close, titleId, titleClass }">
  383. <div class="my-header">
  384. <div class="msg_dig">
  385. <img width="40px" v-show="userSex == '1'" src="../assets/kepu/man.png" />
  386. <img width="40px" v-show="userSex == '0'" src="../assets/kepu/woman.png" />
  387. <div style="margin-left:20px">{{ userName }}</div>
  388. </div>
  389. <!-- <textarea ref="des_input" rows="5" cols="43" placeholder="写下你珍贵的留言" /> -->
  390. <el-input type="textarea" style="margin-top: 20px;" :autosize="{ minRows: 6 }" placeholder="写下你珍贵的留言"
  391. v-model="des_input">
  392. </el-input>
  393. <div class="home_mid_plan_button">
  394. <div class="pub_button" @click="pubMsg"> 发布留言
  395. </div>
  396. </div>
  397. </div>
  398. </template>
  399. </el-dialog>
  400. <el-dialog v-model="sub_visible" :show-close="true" width="60%" top="5vh" style="border-radius: 5px;">
  401. <template #header="{ close, titleId, titleClass }">
  402. <div class="my-header">
  403. <div class="msg_dig">
  404. <img width="40px" src="../assets/kepu/man.png" />
  405. <div style="margin-left:20px;display: flex;flex-direction: column;justify-content: space-between;">
  406. <div>
  407. {{ comName }}
  408. </div>
  409. <div style="color:#999999;font-size: 10px;margin-top:10px">{{ comTime }}</div>
  410. </div>
  411. </div>
  412. <div class="com_des">
  413. {{ comDes }}
  414. </div>
  415. <el-divider border-style="dotted" style="margin-top:40px;" />
  416. <div class="sub_infinite-list-wrapper" style="overflow: auto" :infinite-scroll-distance="20"
  417. v-infinite-scroll="getData1">
  418. <div v-for="item in list1" style="margin-top:40px">
  419. <div class="msg_dig">
  420. <img width="40px" src="../assets/kepu/man.png" />
  421. <div
  422. style="margin-left:20px;display: flex;flex-direction: column;justify-content: space-between;">
  423. <div>
  424. {{ item.userName }}
  425. </div>
  426. <div style="color:#999999;font-size: 10px;margin-top:10px">{{ item.createTime }}</div>
  427. </div>
  428. </div>
  429. <div class="com_des1">
  430. {{ item.commentContent }}
  431. </div>
  432. </div>
  433. <div style="text-align: center;margin-top:20px" v-if="isLoading1">努力加载中...</div>
  434. <div style="text-align: center;;margin-top:20px" v-if="noMore1">没有更多了</div>
  435. </div>
  436. <el-divider border-style="dotted" style="margin-top:40px;" />
  437. <div class="input_cus">
  438. <el-input v-model="subMM" placeholder="发表你的评论" />
  439. </div>
  440. <div class="home_mid_plan_button">
  441. <div class="pub_button" @click="subPubMsg"> 发布
  442. </div>
  443. </div>
  444. </div>
  445. </template>
  446. </el-dialog>
  447. </template>
  448. <style></style>
  449. <style lang="scss" scoped>
  450. :deep(.el-divider--horizontal) {
  451. margin: 16px 0 !important;
  452. opacity: 0.4;
  453. }
  454. :deep(.el-input__wrapper) {
  455. align-items: center;
  456. background-color: #F7F7F7 !important;
  457. border-radius: 5px !important;
  458. // border: none;
  459. // outline: none !important;
  460. box-shadow: none;
  461. }
  462. :deep(.input_cus .el-input__inner) {
  463. height: 60px;
  464. border: none;
  465. outline: none;
  466. }
  467. .sub_infinite-list-wrapper {
  468. max-height: 400px;
  469. }
  470. // :v-deep(.el-textarea__inner) {
  471. // color: var(--textarea-color)
  472. // }
  473. // textarea {
  474. // font-size: 0.8rem;
  475. // letter-spacing: 1px;
  476. // }
  477. :deep(.el-textarea__inner) {
  478. background-color: #F7F7F7 !important;
  479. border: none !important;
  480. border-radius: 20px;
  481. border: none !important;
  482. box-shadow: none !important;
  483. }
  484. textarea {
  485. margin-top: 30px;
  486. outline: none;
  487. padding: 10px;
  488. max-width: 100%;
  489. line-height: 1.5;
  490. border-radius: 5px;
  491. border: none;
  492. background-color: #F7F7F7;
  493. }
  494. textarea:focus {
  495. outline: none;
  496. border: none !important;
  497. }
  498. label {
  499. display: block;
  500. margin-bottom: 10px;
  501. }
  502. .my-header {
  503. padding: 60px 60px 10px 60px;
  504. display: flex;
  505. flex-direction: column;
  506. .com_des {
  507. background-color: #F7F7F7;
  508. padding: 20px 40px;
  509. margin-top: 40px;
  510. border-radius: 5px;
  511. }
  512. .com_des1 {
  513. padding: 20px 40px;
  514. margin-top: 10px;
  515. border-radius: 40px;
  516. }
  517. .home_mid_plan_button {
  518. width: 100%;
  519. display: flex;
  520. flex-direction: row;
  521. justify-content: end;
  522. margin-top: 40px;
  523. // text-align: right;
  524. .pub_button {
  525. cursor: pointer;
  526. // width: 100px;
  527. border-radius: 5px;
  528. border: 1px solid #48D68E;
  529. color: #ffffff;
  530. background-color: #3B3B3B;
  531. padding: 8px 30px;
  532. cursor: pointer;
  533. display: flex;
  534. align-items: center;
  535. }
  536. }
  537. .msg_dig {
  538. display: flex;
  539. flex-direction: row;
  540. align-items: center;
  541. }
  542. }
  543. .home_header_out {
  544. /* 启用滚动捕捉对齐 */
  545. scroll-snap-align: start;
  546. // position: relative;
  547. padding-bottom: 60px;
  548. width: 100%;
  549. min-width: 1200px;
  550. // background-image: url('../assets/home/bg_ty.png');
  551. background-repeat: no-repeat;
  552. background-size: contain;
  553. background-color: #ffffff; //估计是需要动态
  554. flex: 1;
  555. //获取屏幕宽度home_header_out 这个div的宽度--然后宽度*1000再除1920即为当前div的宽度
  556. .home_header_inner {
  557. min-height: 1;
  558. left: 0;
  559. right: 0;
  560. margin: auto;
  561. // height: 100px;
  562. width: 100%;
  563. .xlts_img {
  564. height: 60px;
  565. }
  566. }
  567. .leave_message {
  568. left: 0;
  569. right: 0;
  570. margin: auto;
  571. width: 1200px;
  572. margin-bottom: 20px;
  573. margin-top: 20px;
  574. .font_blue {
  575. position: relative;
  576. color: #00DE7E;
  577. font-weight: 700;
  578. font-size: 22px;
  579. font-family: 'Rammetto One-Regular';
  580. padding-top: 30px;
  581. z-index: 10;
  582. background: url(../assets/zs/community.png) no-repeat;
  583. background-size: auto 50px;
  584. // img {
  585. // position: absolute;
  586. // height: 50px;
  587. // left: 0;
  588. // top: 10px;
  589. // }
  590. }
  591. }
  592. .kply {
  593. width: 100%;
  594. // margin-top: 40px;
  595. // background-color: #FAFAFA;
  596. .kply_inner {
  597. left: 0;
  598. right: 0;
  599. margin: auto;
  600. width: 1200px;
  601. // padding: 20px 20px;
  602. background-color: #ffffff;
  603. border-radius: 5px;
  604. // height: 1000px;
  605. box-shadow: 0px 4px 32px 0px rgba(0, 0, 0, 0.17);
  606. // margin-bottom: 60px;
  607. .kepu_title {
  608. display: flex;
  609. flex-direction: row;
  610. justify-content: space-between;
  611. align-items: center;
  612. .kepu_title_des {
  613. font-family: Alibaba PuHuiTi 2.0;
  614. font-weight: 600;
  615. font-size: 20px;
  616. color: #000000;
  617. }
  618. .home_mid_plan_button {
  619. width: 100%;
  620. display: flex;
  621. flex-direction: row;
  622. justify-content: end;
  623. // text-align: right;
  624. .pub_button {
  625. cursor: pointer;
  626. // width: 100px;
  627. border-radius: 5px;
  628. border: 1px solid #48D68E;
  629. color: #ffffff;
  630. background-color: #3B3B3B;
  631. padding: 8px 30px;
  632. cursor: pointer;
  633. display: flex;
  634. align-items: center;
  635. }
  636. }
  637. }
  638. .com_out {
  639. height: 500px;
  640. padding-top: 20px;
  641. .com_title {
  642. margin-top: 5px;
  643. display: flex;
  644. flex-direction: row;
  645. align-items: center;
  646. img {
  647. width: 40px
  648. }
  649. .com_des {
  650. margin-left: 5px;
  651. display: flex;
  652. flex-direction: column;
  653. justify-content: space-between;
  654. height: 40px;
  655. .com_name {
  656. font-weight: normal;
  657. font-size: 16px;
  658. color: #222222;
  659. }
  660. .com_time {
  661. font-weight: normal;
  662. font-size: 16px;
  663. color: #000000;
  664. opacity: 0.4;
  665. }
  666. }
  667. }
  668. .com_content {
  669. letter-spacing: 3px;
  670. margin-top: 10px;
  671. background-color: #F6F6F6;
  672. padding: 10px 20px;
  673. border-radius: 5px;
  674. line-height: 24px;
  675. font-size: 14px;
  676. }
  677. .com_yan {
  678. margin-top: 10px;
  679. display: flex;
  680. align-items: center;
  681. justify-content: end;
  682. span {
  683. margin-left: 8px;
  684. }
  685. }
  686. }
  687. }
  688. }
  689. }
  690. .home_mid {
  691. // background-color: blanchedalmond;
  692. width: 1200px;
  693. left: 0;
  694. right: 0;
  695. margin: auto;
  696. margin-top: 40px;
  697. // position: relative;
  698. .kepu_title {
  699. text-align: center;
  700. font-size: 50px;
  701. color: #111111;
  702. line-height: 95px;
  703. // width: 100%;
  704. // left: 0;
  705. // right: 0;
  706. // margin: auto
  707. }
  708. .kepu_title_sub {
  709. margin-top: 30px;
  710. text-align: center;
  711. font-size: 28px;
  712. color: #48D68E;
  713. line-height: 26px;
  714. }
  715. .man1_group {
  716. margin-top: 60px;
  717. height: 100%;
  718. display: flex;
  719. .man1 {
  720. position: relative;
  721. width: 327px;
  722. // height: 100%;
  723. // height: 100%
  724. .man1_img {
  725. position: absolute;
  726. bottom: 0;
  727. /* bottom: 0px; */
  728. /* height: auto; */
  729. width: 100%;
  730. left: 100px
  731. }
  732. }
  733. .des {
  734. border: #48D68E solid 5px;
  735. border-radius: 40px;
  736. padding: 20px;
  737. letter-spacing: 6px;
  738. flex: 1;
  739. .des_inner {
  740. border: 1px dashed #48D68E;
  741. border-radius: 40px;
  742. padding-bottom: 40px;
  743. padding-top: 30px;
  744. padding-left: 100px;
  745. padding-right: 20px;
  746. letter-spacing: 6px;
  747. font-weight: normal;
  748. font-size: 24px;
  749. color: #333333;
  750. line-height: 40px;
  751. }
  752. }
  753. }
  754. .man2_group {
  755. margin-top: 60px;
  756. height: 100%;
  757. display: flex;
  758. .man2 {
  759. position: relative;
  760. width: 327px;
  761. // height: 100%;
  762. // height: 100%
  763. .man2_img {
  764. position: absolute;
  765. bottom: 0;
  766. /* bottom: 0px; */
  767. /* height: auto; */
  768. width: 100%;
  769. left: -100px
  770. }
  771. }
  772. .des2 {
  773. border: #48D68E solid 5px;
  774. border-radius: 40px;
  775. padding: 20px;
  776. letter-spacing: 6px;
  777. flex: 1;
  778. .des2_inner {
  779. border: 1px dashed #48D68E;
  780. border-radius: 40px;
  781. padding-bottom: 40px;
  782. padding-top: 30px;
  783. padding-left: 20px;
  784. padding-right: 100px;
  785. letter-spacing: 6px;
  786. font-weight: normal;
  787. font-size: 24px;
  788. color: #333333;
  789. line-height: 40px;
  790. }
  791. }
  792. }
  793. .get_more {
  794. text-align: center;
  795. img {
  796. width: 300px;
  797. margin-top: 60px;
  798. margin-bottom: 60px;
  799. }
  800. }
  801. }
  802. // .home_footer_out {
  803. // width: 100%;
  804. // background-color: #000000;
  805. // }</style>