knowledgeLibrary.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830
  1. <template>
  2. <div>
  3. <!-- 留言知识库 -->
  4. <div v-if="!flag">
  5. <div class="header row item-center allAlignment">
  6. <!-- 返回按钮 -->
  7. <div style="height:100%;" @click="returnIndex" class="row item-center">
  8. <img src="@/assets/return.png" style="height:.35rem;width:.35rem"/>
  9. </div>
  10. <div>留言知识库</div>
  11. <div></div>
  12. </div>
  13. <div class="serch row allAlignment">
  14. <!-- 时间选择 -->
  15. <div class="serchLeft">
  16. <yd-accordion>
  17. <yd-accordion-item :title="serchLeftClick" id="lists">
  18. <ul>
  19. <li
  20. class="row center list"
  21. v-for="(item,index) in options"
  22. :key="index"
  23. @click="serchLeftClick = item.label,getList(item.value)"
  24. >
  25. <p :class="serchLeftClick == item.label?'active':''">{{item.label}}</p>
  26. </li>
  27. </ul>
  28. </yd-accordion-item>
  29. </yd-accordion>
  30. </div>
  31. <!-- 搜索框 -->
  32. <div class="serchBox row item-center">
  33. <input type="text" v-model="serchInputValue" placeholder="请输入关键词"/>
  34. <p style="padding:.22rem .2rem" @click="serchClick">
  35. <img src="@/assets/serchImg.png" style="width:.24rem;height:.24rem;"/>
  36. </p>
  37. </div>
  38. </div>
  39. <div class="main">
  40. <div class="main-title row allAlignment bottomAlignment">
  41. <div
  42. v-for="(item) in typeList" :key="item.id"
  43. class="main-title-list row center"
  44. :class="mainTitle== item.name?'active':''"
  45. @click="mainTitle = item.name,getAjax(1)"
  46. >{{item.name}}
  47. </div>
  48. </div>
  49. <div class="main-box">
  50. <yd-accordion v-for="(item,index) in listData" :key="index">
  51. <yd-accordion-item v-if="item.type_name == mainTitle" :title="item.content">
  52. <div slot="txt" style="color:#999;font-size:.24rem;">{{item.add_time}}</div>
  53. <div style="color:#555;" class="chatContent">
  54. <div class="text">
  55. {{item.content}}
  56. </div>
  57. <ul class="imgs" v-if="showImg" v-for="i in imgs">
  58. <li v-for="child in i">
  59. <img :src="url + child" alt="">
  60. </li>
  61. </ul>
  62. <p class="reply_title">回复的留言</p>
  63. <div class="reply_text">
  64. {{item.reply_content}}
  65. </div>
  66. </div>
  67. </yd-accordion-item>
  68. </yd-accordion>
  69. </div>
  70. </div>
  71. <div class="main-bottom row center" @click="flag = true">发起留言</div>
  72. </div>
  73. <!-- 留言模块 -->
  74. <div v-if="flag">
  75. <div class="leave">
  76. <div class="leave-header row item-center allAlignment">
  77. <p>我要留言</p>
  78. <img
  79. style="width:.3rem;height:.3rem;"
  80. @click="flag = false"
  81. :src="require('@/assets/Service4.png')"
  82. />
  83. </div>
  84. <div class="leave-main">
  85. <div>
  86. <span style="color:#666;">
  87. 您的称呼
  88. <i style="color:#F04992">*</i>
  89. </span>
  90. <b style="color:#F04992">{{formText.call}}</b>
  91. <br/>
  92. <input type="text" @focus="leave.call = ''" @blur="leave.call ? '': formText.call = '称呼不能为空' "
  93. v-model="leave.call"/>
  94. </div>
  95. <div>
  96. <span style="color:#666;">
  97. 您的手机号
  98. </span>
  99. <b style="color:#F04992">{{formText.phone}}</b>
  100. <br/>
  101. <input type="text" @focus="formText.phone = ''" @blur="phoneBlur()" v-model="leave.phone"/>
  102. </div>
  103. <div>
  104. <span style="color:#666;">
  105. 您的邮箱地址
  106. <!-- <i style="color:#F04992">*</i>-->
  107. </span>
  108. <b style="color:#F04992">{{formText.email}}</b>
  109. <br/>
  110. <input type="email" v-model="leave.email"/>
  111. </div>
  112. <p>
  113. <span style="color:#666;">
  114. 您的留言信息
  115. <i style="color:#F04992">*</i>
  116. </span>
  117. <b style="color:#F04992">{{formText.describe}}</b>
  118. <br/>
  119. <textarea class="leave-main-txt" v-model="leave.describe" @focus="leave.describe = ''"
  120. @blur="leave.describe ? '': formText.describe = '留言内容不能为空'"
  121. style="margin-top:.1rem;width:100%;height:1.6rem"></textarea>
  122. </p>
  123. <div style="height:2.2rem;margin-top:.3rem;overflow-x: hidden;overflow-y: auto;">
  124. <span style="color:#666;">
  125. 您的图片预览
  126. <i style="color:#F04992">*</i>
  127. </span>
  128. <b style="color:#F04992">(单次最多4张图片)</b>
  129. <br/>
  130. <section class="imgMsg row item-center" style="margin-bottom:.1rem;">
  131. <div
  132. style="height:100%;"
  133. :style="imgSrcList.length==4?'width:100%;':''"
  134. class="row allAlignment"
  135. >
  136. <div
  137. class="row center"
  138. style="width:1.4rem;height:1.4rem"
  139. v-for="(item,index) in imgSrcList"
  140. :key="index"
  141. >
  142. <img
  143. @click="leaveImgDel(index)"
  144. style="max-height:1.2rem;max-width:1.2rem;"
  145. :src="item.src"
  146. />
  147. </div>
  148. </div>
  149. <input
  150. type="file"
  151. accept="image/jpeg, image/jpg, image/png, image/svg"
  152. id="fileBtn"
  153. @change="leaveFile($event)"
  154. style="display:none;"
  155. />
  156. <label
  157. v-if="imgSrcList.length<4"
  158. for="fileBtn"
  159. class="row center"
  160. style="width:.8rem;height:.8rem;border:.02rem solid #ccc;border-radius: .1rem;background:#fff;color:#999;font-size:.5rem;margin-left:.3rem"
  161. >+</label>
  162. </section>
  163. </div>
  164. <input type="file" id="fileBtn" @change="leaveFile($event)" style="display:none;"/>
  165. <label
  166. for="fileBtn"
  167. class="row center"
  168. style="width:100%;height:.8rem;border:.01rem solid #ddd;border-radius: .1rem;background:#fff;color:#999;"
  169. >上传图片</label>
  170. <button
  171. style="background:linear-gradient(90deg,rgba(22,84,209,1) 0%,rgba(9,52,173,1) 100%);box-shadow:0 .03rem .03rem rgba(0,0,0,0.2);border-radius:.1rem;height:1rem;width:100%;border:none;font-size:.34rem;color:#fff;margin-top:.17rem;"
  172. @click="leaveSubmit"
  173. >提交留言
  174. </button>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </template>
  180. <script>
  181. export default {
  182. name: "knowledgeLibrary",
  183. data() {
  184. return {
  185. listData: [],//留言数据
  186. flag: false, //留言和知识库开关
  187. options: [
  188. {
  189. value: "week",
  190. label: "最近一周"
  191. },
  192. {
  193. value: "oneMonth",
  194. label: "最近一个月"
  195. },
  196. {
  197. value: "threeMonth",
  198. label: "最近三个月"
  199. }
  200. ],
  201. typeList: '',//留言知识库类型
  202. serchLeftClick: "最近一周", //时间选择开关
  203. mainTitle: "充值", // 留言知识库开关
  204. //用户留言信息
  205. leave: {
  206. call: "", //称呼
  207. phone: "", //手机号
  208. email: "", //邮箱
  209. describe: "", //留言描述问题
  210. imgArr: [],// 上传的图片地址
  211. },
  212. formText: { //表单验证错误提示
  213. phone: '',
  214. email: '',
  215. describe: '',
  216. call: '',
  217. },
  218. imgSrcList: [], //上传图片列表
  219. serchInputValue: "", //搜索输入框的值
  220. setImgList: [],//上传图片
  221. valTime:"week",
  222. pages: 1,
  223. imgs: [],
  224. url: 'http://kfadmin.bocai186.com', // 域名地址
  225. // url: 'http://192.168.2.187:8090', // 域名地址
  226. fileList:[],
  227. filesImg:'',
  228. showImg:false,
  229. };
  230. },
  231. props: ["currentTime"],
  232. methods: {
  233. // 设置apiToken
  234. setApiToken(name, controller, time, modules) {
  235. let txetVal = name + "customer-service" + controller + time + modules;
  236. // let sssd = txetVal.toLowerCase();
  237. // console.log(sssd);
  238. return this.$md5(txetVal.toLowerCase());
  239. },
  240. // 返回上级 子传父
  241. returnIndex() {
  242. this.$emit("returnIndex", false);
  243. },
  244. /*******************************************/
  245. // 留言图片删除
  246. leaveImgDel(i) {
  247. this.$dialog.confirm({
  248. title: "删除图片",
  249. mes: "你确定要删除吗?",
  250. opts: () => {
  251. this.imgSrcList.splice(i, 1);
  252. }
  253. });
  254. },
  255. /*******************************************/
  256. // 用户留言上传图片
  257. leaveFile(e) {
  258. let self = this;
  259. let files = e.target.files || e.dataTransfer.files;
  260. if (!files.length) return;
  261. let picavalue = files[0];
  262. const isLt1M = picavalue.size / 1024 / 1024 < 0.5;
  263. if (!isLt1M) {
  264. this.$dialog.toast({mes: '上传的图片不能大于0.5MB', timeout: 1500});
  265. return
  266. }
  267. const isJPG = picavalue.type == 'image/jpeg' || 'image/jpg' || 'image/png' || 'image/svg';
  268. if (!isJPG) {
  269. this.$dialog.toast({mes: '上传只能是图片格式!', timeout: 1500});
  270. return
  271. }
  272. let _this = this;
  273. let name = picavalue.name.split('.')[0]
  274. let reader = new FileReader();
  275. //将图片转成base64格式
  276. reader.readAsDataURL(picavalue);
  277. //读取成功后的回调
  278. reader.onloadend = function() {
  279. let result = this.result;
  280. _this.$set(picavalue,'src', result);
  281. _this.imgSrcList.push(picavalue);
  282. // console.log(_this.imgSrcList,'读取')
  283. _this.$forceUpdate();
  284. };
  285. },
  286. // 获取选择内容
  287. getList(val){
  288. this.valTime = val;
  289. let a = document.querySelector("#lists .yd-accordion-content")
  290. a.style.height = 0 +"px";
  291. },
  292. // 留言知识库数据获取
  293. getAjax(page, size = 999) {
  294. this.imgs = []
  295. let obj = {
  296. headers: {
  297. apiToken: this.setApiToken("index", "message", this.currentTime[0], "index")
  298. }
  299. };
  300. this.post("api/index/Message/index", {
  301. time: this.valTime,
  302. key: this.serchInputValue,
  303. type: this.mainTitle,
  304. pageSize:size,
  305. pageNumber:page
  306. },
  307. obj
  308. ).then(res => {
  309. if (res.data.status == 1) {
  310. this.listData = res.data.data.list;
  311. this.pages = res.data.data.total;
  312. // console.log(this.listData)
  313. let _img;
  314. for (let i = 0; i < res.data.data.list.length; i++) {
  315. _img = res.data.data.list[i].images.split(",");
  316. if(_img != ""){
  317. this.showImg = true
  318. this.imgs.push(_img);
  319. }else {
  320. this.showImg = false
  321. }
  322. }
  323. if (this.listData.length == 0) {
  324. this.$dialog.toast({mes: '当前没有你要的内容,请发起留言', timeout: 1500});
  325. }
  326. }
  327. });
  328. },
  329. // 留言知识库类型获取
  330. getAjaxType() {
  331. let obj = {
  332. headers: {
  333. apiToken: this.setApiToken("type", "message", this.currentTime[0], "index")
  334. }
  335. }
  336. this.post('api/index/Message/type', {}, obj).then((res) => {
  337. if (res.data.status == 1) {
  338. this.typeList = res.data.data;
  339. }
  340. })
  341. },
  342. // 留言信息提交
  343. leaveSubmit() {
  344. let uid = localStorage.getItem('uid');
  345. if (this.leave.call == '') {
  346. this.$dialog.toast({mes: '请填写称呼', timeout: 1500});
  347. } else if (this.leave.describe == '') {
  348. this.$dialog.toast({mes: '请填写留言信息!', timeout: 1500});
  349. } else {
  350. for (let i = 0; i < this.imgSrcList.length; i++) {
  351. var formData = new FormData();
  352. formData.append('file',this.imgSrcList[i])
  353. // 提交图片
  354. this.post('api/index/upload/uploadImg',formData).then((res) => {
  355. this.filesImg = this.filesImg ? this.filesImg + "," + res.data.data.src : res.data.data.src;
  356. })
  357. }
  358. if(this.imgSrcList.length >= 1){
  359. }
  360. // 提交表单
  361. setTimeout(()=>{
  362. let obj = {
  363. headers: {
  364. apiToken: this.setApiToken("LeavingMessage", "User", this.currentTime[0], "index")
  365. }
  366. }
  367. console.log(this.filesImg);
  368. let params = {
  369. 'nick_name': this.leave.call,
  370. 'email': this.leave.email,
  371. 'content': this.leave.describe,
  372. 'phone': this.leave.phone,
  373. 'file': this.filesImg,
  374. 'account_id': uid,
  375. }
  376. this.post('api/index/User/LeavingMessage', params, obj).then((res) => {
  377. if (res.data.code == 1) {
  378. this.$dialog.toast({mes: "留言成功", timeout: 1500});
  379. this.fileList =[];
  380. }
  381. })
  382. this.flag = false;
  383. },1000)
  384. }
  385. },
  386. // 搜索按钮被点击
  387. serchClick() {
  388. // 如果输入框的值存在就调用接口
  389. if (this.serchInputValue.length > 0) {
  390. this.getAjax(1)
  391. } else {
  392. this.serchInputValue = '';
  393. this.getAjax(1)
  394. this.$dialog.toast({mes: '请输入关键词再搜索', timeout: 1500});
  395. }
  396. },
  397. // 验证手机号
  398. phoneBlur() {
  399. if (!(/^1[3456789]\d{9}$/.test(this.leave.phone))) {
  400. this.leave.phone = ''
  401. this.formText.phone = "手机号码有误,请重填"
  402. }
  403. },
  404. // 验证邮箱
  405. // emailBlur(){
  406. // if(!(/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(this.leave.email))){
  407. // this.leave.email = ''
  408. // this.formText.email = "邮箱格式错误,请重填"
  409. // }
  410. // }
  411. },
  412. mounted() {
  413. this.getAjaxType()
  414. this.getAjax(1);
  415. }
  416. };
  417. </script>
  418. <style scoped>
  419. /* 留言知识库 */
  420. .header {
  421. height: 1rem;
  422. background: linear-gradient(
  423. 90deg,
  424. rgba(22, 84, 209, 1) 0%,
  425. rgba(9, 52, 173, 1) 100%
  426. );
  427. box-shadow: 0px 0.03rem 0.03rem rgba(0, 0, 0, 0.2);
  428. color: #fff;
  429. font-size: 0.34rem;
  430. padding: 0 0.3rem;
  431. }
  432. .serch {
  433. padding: 0.3rem;
  434. }
  435. .serchLeft {
  436. position: relative;
  437. width: 2.2rem;
  438. height: 0.8rem;
  439. }
  440. .serchLeft div /deep/ .yd-accordion-head {
  441. padding: 0.2rem;
  442. border: 0.02rem solid #ddd;
  443. border-radius: 0.1rem;
  444. height: 0.8rem;
  445. }
  446. .serchLeft div /deep/ .yd-accordion-title,
  447. .serchLeft div /deep/ .yd-accordion-head-arrow {
  448. display: flex;
  449. min-height: 0rem !important;
  450. align-items: center;
  451. font-size: 0.28rem;
  452. }
  453. .serchLeft div /deep/ .yd-accordion-head:after {
  454. display: none;
  455. }
  456. .serchLeft div /deep/ .yd-accordion-content:after {
  457. display: none;
  458. }
  459. .serchLeft div /deep/ .yd-accordion-head-arrow:after {
  460. width: 0.22rem;
  461. height: 0.22rem;
  462. background: url("../assets/bottom.png");
  463. background-size: 100% 100%;
  464. }
  465. .serchLeft div /deep/ .yd-accordion-head-arrow.yd-accordion-rotated:after {
  466. transform: rotate(180deg);
  467. }
  468. .serchLeft div /deep/ .yd-accordion-content {
  469. position: absolute;
  470. left: 0;
  471. top: 0.94rem;
  472. z-index: 99;
  473. border-radius: 0 0 0.1rem 0.1rem;
  474. }
  475. .list {
  476. width: 2.2rem;
  477. height: 0.6rem;
  478. background: #fff;
  479. padding: 0 0.2rem;
  480. }
  481. .list p {
  482. width: 100%;
  483. font-size: 0.26rem;
  484. text-align: center;
  485. border-bottom: 0.01rem solid #ddd;
  486. line-height: 0.6rem;
  487. }
  488. .list p.active {
  489. color: #5ea0f7;
  490. }
  491. .serchBox {
  492. width: 4.5rem;
  493. height: 0.8rem;
  494. border-radius: 0.1rem;
  495. background: #fff;
  496. border: 0.02rem solid #ddd;
  497. }
  498. .serchBox input {
  499. width: 100%;
  500. height: 100%;
  501. border: none;
  502. padding: 0.2rem;
  503. font-size: 0.28rem;
  504. color: #999;
  505. }
  506. .serchBox input:focus {
  507. color: #666;
  508. }
  509. .serchBox input::placeholder {
  510. color: #999;
  511. }
  512. .main {
  513. padding: 0 0.3rem;
  514. }
  515. .main-title {
  516. height: 0.8rem;
  517. background: #5ea0f7;
  518. color: #fff;
  519. border-radius: 0.1rem 0.1rem 0 0;
  520. padding: 0 0.1rem;
  521. }
  522. .main-title-list {
  523. width: 1.46rem;
  524. height: 0.7rem;
  525. border-radius: 0.1rem 0.1rem 0 0;
  526. font-size: 0.28rem;
  527. }
  528. .main-title-list.active {
  529. background: #fff;
  530. color: #5ea0f7;
  531. }
  532. .main {
  533. height: 68vh;
  534. }
  535. .main-box {
  536. height: 90%;
  537. overflow-x: hidden;
  538. overflow-y: auto;
  539. }
  540. .main-box div /deep/ .yd-accordion-head-content {
  541. justify-content: space-between;
  542. padding-right: 0.3rem;
  543. }
  544. .main-box div /deep/ .yd-accordion-title {
  545. max-width: 60%;
  546. color: #666;
  547. font-size: 0.26rem;
  548. }
  549. .main-box div /deep/ .yd-accordion-title span {
  550. display: inline-block;
  551. width: 100%;
  552. overflow: hidden;
  553. text-overflow: ellipsis;
  554. white-space: nowrap;
  555. }
  556. div /deep/ .yd-accordion-head-content {
  557. width: 80%;
  558. }
  559. div /deep/ .yd-accordion-content {
  560. border-radius: 0;
  561. }
  562. div /deep/ .yd-accordion {
  563. border-radius: 0;
  564. border-top: none;
  565. }
  566. div /deep/ .yd-accordion-head {
  567. border: 0.02rem solid #ddd;
  568. border-top: none;
  569. }
  570. .main-bottom {
  571. background: linear-gradient(
  572. 90deg,
  573. rgba(22, 84, 209, 1) 0%,
  574. rgba(9, 52, 173, 1) 100%
  575. );
  576. box-shadow: 0px 0.03rem 0.03rem rgba(0, 0, 0, 0.2);
  577. border-radius: 0.1rem;
  578. font-size: 0.34rem;
  579. color: #fff;
  580. height: 1rem;
  581. margin: 0.3rem;
  582. }
  583. .chatContent {
  584. background: #f5f5f5;
  585. border: 0.02rem solid #ddd;
  586. border-top: none;
  587. padding: 0.3rem 0.2rem;
  588. }
  589. .userPortrait {
  590. width: 1rem;
  591. height: 1rem;
  592. }
  593. .userPortrait img {
  594. width: 100%;
  595. height: 100%;
  596. }
  597. .contentsCenter {
  598. width: 69%;
  599. }
  600. .contents {
  601. margin-top: 0.3rem;
  602. }
  603. .txt {
  604. padding: 0.2rem;
  605. border-radius: 0.1rem;
  606. display: inline-block;
  607. font-size: 0.28rem;
  608. max-width: 92.5%;
  609. word-wrap: break-word;
  610. position: relative;
  611. }
  612. .left {
  613. color: #555;
  614. margin-left: 0.3rem;
  615. border: 0.01rem solid #dfdfdf;
  616. background: #fff;
  617. }
  618. .left::after {
  619. position: absolute;
  620. content: "";
  621. display: inline-block;
  622. left: -0.08rem;
  623. top: 0.2rem;
  624. width: 0.125rem;
  625. height: 0.2rem;
  626. background: #fff;
  627. transform: skewX(30deg);
  628. border-left: 0.02rem solid #dfdfdf;
  629. border-top: 0.02rem solid #dfdfdf;
  630. }
  631. .right {
  632. color: #fff;
  633. margin-right: 0.3rem;
  634. background: #5ea0f7;
  635. }
  636. .right::after {
  637. position: absolute;
  638. content: "";
  639. display: inline-block;
  640. right: -0.06rem;
  641. top: 0.2rem;
  642. width: 0.125rem;
  643. height: 0.2rem;
  644. background: #5ea0f7;
  645. transform: skewX(-30deg);
  646. }
  647. .system {
  648. font-size: 0.24rem;
  649. color: #bbb;
  650. margin-top: 0.3rem;
  651. }
  652. div /deep/ .yd-tab-nav .yd-tab-active:before {
  653. content: none;
  654. display: none;
  655. }
  656. /*
  657. *留言模块
  658. */
  659. .leave-header {
  660. height: 1rem;
  661. background: linear-gradient(
  662. 90deg,
  663. rgba(22, 84, 209, 1) 0%,
  664. rgba(9, 52, 173, 1) 100%
  665. );
  666. box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.2);
  667. color: #fff;
  668. font-size: 0.34rem;
  669. padding: 0 0.3rem;
  670. }
  671. .leave-main {
  672. height: 10rem;
  673. background: #f5f5f5;
  674. font-size: 0.28rem;
  675. padding: 0.3rem 0.3rem 0.2rem 0.3rem;
  676. }
  677. .leave-main > div {
  678. height: 1.3rem;
  679. margin-bottom: 0.2rem;
  680. }
  681. .leave-main > div input {
  682. height: 0.8rem;
  683. border: 0.01rem solid #ddd;
  684. border-radius: 0.1rem;
  685. background: #fff;
  686. padding: 0.2rem;
  687. width: 100%;
  688. margin-top: 0.1rem;
  689. }
  690. .leave-main-txt {
  691. background: #fff;
  692. padding: 0.2rem;
  693. border: 0.01rem solid #ddd;
  694. border-radius: 0.1rem;
  695. }
  696. .imgMsg {
  697. height: 1.5rem;
  698. padding: 0 0.2rem;
  699. margin-top: 0.1rem;
  700. font-size: 0.24rem;
  701. background: #fff;
  702. border: 0.01rem solid #ddd;
  703. border-radius: 0.1rem;
  704. }
  705. .yd-cell-box {
  706. width: 60%;
  707. min-height: 1.2rem;
  708. border: none;
  709. padding-right: 0.3rem;
  710. padding-left: 0.3rem;
  711. }
  712. div /deep/ .yd-textarea > textarea {
  713. box-sizing: border-box;
  714. height: auto;
  715. min-height: 1.2rem;
  716. font-size: 0.28rem;
  717. padding-top: 0.4rem;
  718. }
  719. .yd-textarea {
  720. padding: 0;
  721. }
  722. .yd-cell-box {
  723. margin: 0;
  724. }
  725. .yd-cell-item {
  726. padding: 0;
  727. }
  728. div /deep/ .yd-cell:after {
  729. height: 0;
  730. }
  731. div /deep/ .yd-textarea-counter {
  732. display: none;
  733. }
  734. .imgs {
  735. margin: 20px 0;
  736. display: flex;
  737. justify-content: flex-start;
  738. }
  739. .imgs li {
  740. margin-right: 10px;
  741. width: 1rem;
  742. height: 1rem;
  743. }
  744. .imgs li img {
  745. width:1rem;
  746. height:1rem;
  747. }
  748. .reply_title {
  749. text-align: right;
  750. }
  751. .reply_text {
  752. margin-top: 10px;
  753. text-align: right;
  754. }
  755. </style>