list.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. <template>
  2. <view>
  3. <!-- 第一种样式 人员管理-->
  4. <block v-if="datainfo.length>0">
  5. <!-- 社区资讯 -->
  6. <block v-if="type=='newssq'">
  7. <view class="walists" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.communityId)">
  8. <view class="watop">
  9. <view class="watit">
  10. <view class="tit">{{ite.communityTitle}}<text class="cir" v-if="ite.isInteraction=='Y'"></text></view>
  11. </view>
  12. <view class="wacoma overtwo"><rich-text v-if="ite.communityContent" :nodes="ite.communityContent"></rich-text></view>
  13. <view class="wacomb">{{ite.publishTime}}</view>
  14. </view>
  15. <view class="wabtn">
  16. <view>查看详情</view>
  17. <image :src="rimg"></image>
  18. </view>
  19. </view>
  20. </block>
  21. <!-- 新版投诉建议 @click="getDetail(ite.suggestionId)"-->
  22. <block v-if="type=='complaint'">
  23. <!-- @click.stop="getDetail(ite.repairId)" -->
  24. <view class="bxlists" v-for="(ite,idx) in datainfo" :key="ite.suggestionId">
  25. <view class="bxtop">
  26. <swiper v-if="ite.images" class="swiper" circular :indicator-color="incolorh" :indicator-active-color="activecolorh" :indicator-dots="indicatorDotsh" :autoplay="autoplay">
  27. <!-- datainfo.images -->
  28. <swiper-item v-for="(aite,aidx) in ite.images" :key="aidx">
  29. <image :src="baseUrl+aite" @click="getPreviewImage(ite.images,aidx)"></image>
  30. </swiper-item>
  31. </swiper>
  32. <view class="toptit mb10">{{ite.content}}</view>
  33. <view class="walist"><view class="tit">提交时间</view>:{{ite.createTime}}</view>
  34. <view class="btns">
  35. <view class="btn btna" v-if="checkPermi(['wuYe:suggestion:remove'])" @click.stop="getDelFn(ite.suggestionId)">删除</view>
  36. <!-- <view class="btn btnb" v-if="checkPermi(['wuYe:suggestion:edit'])&&ite.status==1">回复</view> -->
  37. </view>
  38. </view>
  39. <view class="bxsteps">
  40. <uni-collapse ref="collapse" v-model="value">
  41. <uni-collapse-item title-border="none">
  42. <template v-slot:title>
  43. <view class="chtop flexc" >
  44. <view class="line"></view>
  45. <view>交流记录</view>
  46. <view class="flex1"></view>
  47. </view>
  48. </template>
  49. <view class="hfstep">
  50. <view class="hfslist flex" v-if="ite.status==2">
  51. <view class="limg flexccc">
  52. <image :src="cira" class="imga"></image>
  53. </view>
  54. <view class="flex1">
  55. <view class="hfstit co01">已回复 <text>回复时间</text></view>
  56. <view class="hfstxt">{{ite.replyContent}}</view>
  57. <!-- 附件 -->
  58. <block v-if="ite.suggestionFjList">
  59. <view class="fjlists" v-for="(fite,fidx) in ite.suggestionFjList" :key='fidx'>
  60. <view class="flext" @click="getDownloader(fite.url)">
  61. <view class="imgl"><image :src="filico" ></image></view>
  62. <view class="tit">{{fite.name}}</view>
  63. </view>
  64. </view>
  65. </block>
  66. <!-- <view class="hfimgs flexcw">
  67. <image :src="cira"></image>
  68. </view> -->
  69. </view>
  70. </view>
  71. <view class="hfslist flex" >
  72. <view class="limg flexccc">
  73. <image :src="cira" class="imga" v-if="ite.status==1"></image>
  74. <image :src="cirb" class="imgb" v-else></image>
  75. </view>
  76. <view class="flex1">
  77. <view class="hfstit">已提交 <text>{{ite.createTime}}</text></view>
  78. <view class="hfstxt">您的投诉建议已提交,请耐心等待</view>
  79. </view>
  80. </view>
  81. </view>
  82. </uni-collapse-item>
  83. </uni-collapse>
  84. </view>
  85. </view>
  86. </block>
  87. <block v-if="type=='bylcomplaint'">
  88. <view class="walists" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.suggestionId)"
  89. :data-idx="idx"
  90. @touchstart="drawStart" @touchmove="drawMove" @touchend="drawEnd" :style="'right:'+ite.right+'px'"
  91. >
  92. <view class="watop watopcom">
  93. <view class="watit">
  94. <view class="tit">{{ite.title}}</view>
  95. <view class="txt" :class="ite.status==1?'co01':'coa'">{{kaType(ite.status,tsjyList)}}</view>
  96. </view>
  97. <view class="wacoma overtwo">{{ite.content}}</view>
  98. <view class="wacomb">{{ite.createTime}}</view>
  99. </view>
  100. <!-- -->
  101. <view class="spdel" v-if="ite.right>0&&checkPermi(['wuYe:suggestion:remove'])" @click.stop="getDelFn(ite.suggestionId)">删除</view>
  102. </view>
  103. <!-- checkPermi(['system:menuFood:remove'])&& -->
  104. </block>
  105. <!-- 党建资讯 -->
  106. <block v-if="type=='newsdj'">
  107. <view class="newlists" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.partyId)"
  108. >
  109. <view class="tit">{{ite.partyTitle}}</view>
  110. <view class="txt overtwo"><rich-text v-if="ite.partyContent" :nodes="ite.partyContent"></rich-text></view>
  111. <view class="stabox flexc">
  112. <view class="time flex1">{{ite.publishTime}}</view>
  113. <view class="btns flexc" @click.stop="getScFn(ite,idx)">
  114. <image :src="star" class="imga" v-if="ite.isStars=='Y'"></image>
  115. <image :src="stara" class="imga" v-else></image>{{ite.starsCount||0}}
  116. </view>
  117. <view class="btns flexc">
  118. <image :src="eye" class="imgb"></image>{{ite.viewCount||0}}
  119. </view>
  120. </view>
  121. </view>
  122. <!-- checkPermi(['system:menuFood:remove'])&& -->
  123. </block>
  124. <!-- 评论信息 -->
  125. <block v-if="type=='comment'">
  126. <view class="pllist flex" v-for="(ite,idx) in datainfo" :key="`yj${idx}`">
  127. <image :src="ite.commentUser.avatar?baseUrl+ite.commentUser.avatar:head" class="head"></image>
  128. <view class="flex1 overh">
  129. <view class="flexat mb9 ">
  130. <view class="plname flex1 over">{{ite.commentUser.nickName}}</view>
  131. <view class="plrbtn flexc flex0" @click="getDzFn(ite.id,'2',ite.content,idx)">
  132. <image :src="nicond" v-if="ite.isLike=='Y'"></image>
  133. <image :src="niconb" class="imga" v-else></image>2
  134. <!-- <view>点赞</view> -->
  135. </view>
  136. <view class="plrbtn flexc flex0" @touchend.prevent="getHfFn('yjhf',ite,ite.id)">
  137. <!-- <image :src="niconf" class="imgd"></image> -->
  138. <image :src="niconb" class="imge"></image>2
  139. <!-- <view>回复</view> -->
  140. </view>
  141. <!-- <view class="plrbtn flexc flex0" @touchend.prevent="getHfFn('yjhf',ite,ite.id)">
  142. <image :src="nicone" class="imgb"></image>
  143. <view>回复</view>
  144. </view> -->
  145. <view class="plrbtn flexc flex0" @click="getDelFn(ite.id)" v-if="checkPermi(['wuYe:commentIndex:remove'])&&ite.isMyself=='Y'">
  146. <image :src="del" class="imgc"></image>
  147. <view class="cof4">删除</view>
  148. </view>
  149. </view>
  150. <view class="infotxt">
  151. <rich-text v-if="ite.content" :nodes="analyzeEmoji(ite.content)"></rich-text>
  152. <view class="flexc mt10">
  153. <view class="inforeply" @touchend.prevent="getHfFn('yjhf',ite,ite.id)">回复</view>
  154. <view class="infotime">5分钟前</view></view>
  155. </view>
  156. <!-- <view class="infotime">{{ite.createDate}}</view></view> -->
  157. <!-- 新二级回复 -->
  158. <view class="pllista" v-if="ite.childrenList&&ite.childrenList.length">
  159. <view class="flexat ptb3" v-for="(aite,aidx) in ite.childrenList" :key="`ej${aidx}`">
  160. <view class="plnamea flexcw flex1" @touchend.prevent="getHfFn('ejhf',aite,ite.id)">
  161. <view class="over namea">{{aite.commentUser.nickName}}</view>
  162. <block v-if="aite.toRoot=='Y'">
  163. <view class="plrep">回复</view>
  164. <view class="over namea">{{aite.targetUser.nickName}}</view>
  165. </block>:
  166. <rich-text v-if="aite.content" :nodes="analyzeEmoji(aite.content)"></rich-text>
  167. </view>
  168. <view class="plrbtn flexc flex0" @click="getDelFn(aite.id)" v-if="checkPermi(['wuYe:commentIndex:remove'])&&aite.isMyself=='Y'">
  169. <image :src="del" class="imgc"></image>
  170. <view class="cof4">删除</view>
  171. </view>
  172. </view>
  173. </view>
  174. <!-- 二级回复 -->
  175. <!-- <view class="pllist flex" v-for="(aite,aidx) in ite.childrenList" :key="`ej${aidx}`">
  176. <image :src="aite.commentUser.avatar?baseUrl+aite.commentUser.avatar:head" class="head"></image>
  177. <view class="flex1 overh">
  178. <view class="flexat mb14 ">
  179. <view class="plname flex1 over flexc">
  180. <view class="over">{{aite.commentUser.nickName}}</view>
  181. <block v-if="aite.toRoot=='Y'">
  182. <image :src="rimg" class="rimg"></image>
  183. <view class="over">{{aite.targetUser.nickName}}</view>
  184. </block>
  185. </view>
  186. <view class="plrbtn flexc flex0" @click="getDzFn(aite.id,'2',aite.content,idx,aidx,'ejdz')">
  187. <image :src="nicond" v-if="aite.isLike=='Y'"></image>
  188. <image :src="niconb" class="imga" v-else></image>
  189. <view>点赞</view>
  190. </view>
  191. <view class="plrbtn flexc flex0" @touchend.prevent="getHfFn('ejhf',aite,ite.id)">
  192. <image :src="nicone" class="imgb"></image>
  193. <view>回复</view>
  194. </view>
  195. <view class="plrbtn flexc flex0" @click="getDelFn(aite.id)" v-if="checkPermi(['wuYe:commentIndex:remove'])&&aite.isMyself=='Y'">
  196. <image :src="del" class="imgc"></image>
  197. <view class="cof4">删除</view>
  198. </view>
  199. </view>
  200. <view class="infotxt">
  201. <rich-text v-if="aite.content" :nodes="analyzeEmoji(aite.content)"></rich-text>
  202. <view class="infotime">{{aite.createDate}}</view></view>
  203. </view>
  204. </view> -->
  205. <view class="flexc" v-if="ite.childrenListCount>0">
  206. <view class="zhanbox flexc" v-if="ite.reachflag" @click.stop="getZhanFn(ite,idx)">
  207. <block v-if="ite.childrenList&&ite.childrenList.length">展开更多</block>
  208. <block v-else>展开{{ite.childrenListCount}}条回复</block>
  209. <image :src="upimg" class="zhan"></image>
  210. </view>
  211. <view v-if="ite.childrenList&&ite.childrenList.length" class="zhanbox flexc ml10" @click.stop="getShouFn(idx)">收起<image :src="upimg"></view>
  212. </view>
  213. <!-- <view style="height: 16rpx;" v-else></view> -->
  214. </view>
  215. </view>
  216. </block>
  217. <view class="shax" v-if="wtdt">{{wtdt}}</view>
  218. </block>
  219. <!-- 无数据 -->
  220. <view class="nodata" v-else>
  221. <image :src="noiconpimg"></image>
  222. <view>
  223. 暂无数据
  224. </view>
  225. </view>
  226. </view>
  227. </template>
  228. <script>
  229. import {selectDictValue} from "@/utils/common.js"
  230. import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
  231. import config from '@/config'
  232. export default{
  233. props:{
  234. datainfo: {
  235. type: Array,
  236. default () {
  237. return []
  238. }
  239. },
  240. wtdt:{
  241. type:String,
  242. default () {
  243. return ''
  244. }
  245. },
  246. type:{
  247. type:String,
  248. default () {
  249. return 0
  250. }
  251. },
  252. tsjyList:{
  253. type:Array,
  254. default () {
  255. return []
  256. }
  257. }
  258. },
  259. data(){
  260. return{
  261. noiconpimg:require("@/static/images/nodata.png"),
  262. rimg:require('@/static/images/rimg.png'),
  263. stara:require('@/news/static/news/stara.png'),
  264. star:require('@/news/static/news/starb.png'),
  265. eye:require('@/news/static/news/eye.png'),
  266. nicona:require('@/news/static/news/nicona.png'),
  267. niconb:require('@/news/static/news/niconb.png'),
  268. niconc:require('@/news/static/news/niconc.png'),
  269. nicond:require('@/news/static/news/nicond.png'),
  270. nicone:require('@/news/static/news/nicone.png'),
  271. niconf:require('@/news/static/news/niconf.png'),
  272. cira:require('@/news/static/complaint/cira.png'),
  273. cirb:require('@/news/static/complaint/cirb.png'),
  274. del:require('@/news/static/news/delb.png'),
  275. head:require('@/news/static/news/head.png'),
  276. upimg:require('@/mine/static/house/up.png'),
  277. filico:require('@/news/static/complaint/filico.png'),
  278. baseUrl:config.baseUrl,
  279. delBtnWidth:66,//左滑默认宽度
  280. userId:this.$store.state.user.userId,
  281. value:[],
  282. autoplay:false,
  283. incolorh:'#C0C3C3',
  284. activecolorh:'#FFFFFF',
  285. indicatorDotsh: true,
  286. OwOlist: [
  287. //表情包和表情路径
  288. { title: "微笑", url: "weixiao.gif" },
  289. { title: "嘻嘻", url: "xixi.gif" },
  290. { title: "哈哈", url: "haha.gif" },
  291. { title: "可爱", url: "keai.gif" },
  292. { title: "可怜", url: "kelian.gif" },
  293. { title: "挖鼻", url: "wabi.gif" },
  294. { title: "吃惊", url: "chijing.gif" },
  295. { title: "害羞", url: "haixiu.gif" },
  296. { title: "挤眼", url: "jiyan.gif" },
  297. { title: "闭嘴", url: "bizui.gif" },
  298. { title: "鄙视", url: "bishi.gif" },
  299. { title: "爱你", url: "aini.gif" },
  300. { title: "泪", url: "lei.gif" },
  301. { title: "偷笑", url: "touxiao.gif" },
  302. { title: "亲亲", url: "qinqin.gif" },
  303. { title: "生病", url: "shengbing.gif" },
  304. { title: "太开心", url: "taikaixin.gif" },
  305. { title: "白眼", url: "baiyan.gif" },
  306. { title: "右哼哼", url: "youhengheng.gif" },
  307. { title: "左哼哼", url: "zuohengheng.gif" },
  308. { title: "嘘", url: "xu.gif" },
  309. { title: "衰", url: "shuai.gif" },
  310. { title: "吐", url: "tu.gif" },
  311. { title: "哈欠", url: "haqian.gif" },
  312. { title: "抱抱", url: "baobao.gif" },
  313. { title: "怒", url: "nu.gif" },
  314. { title: "疑问", url: "yiwen.gif" },
  315. { title: "馋嘴", url: "chanzui.gif" },
  316. { title: "拜拜", url: "baibai.gif" },
  317. { title: "思考", url: "sikao.gif" },
  318. { title: "汗", url: "han.gif" },
  319. { title: "困", url: "kun.gif" },
  320. { title: "睡", url: "shui.gif" },
  321. { title: "钱", url: "qian.gif" },
  322. { title: "失望", url: "shiwang.gif" },
  323. { title: "酷", url: "ku.gif" },
  324. { title: "色", url: "se.gif" },
  325. { title: "哼", url: "heng.gif" },
  326. { title: "鼓掌", url: "guzhang.gif" },
  327. { title: "晕", url: "yun.gif" },
  328. { title: "悲伤", url: "beishang.gif" },
  329. { title: "抓狂", url: "zhuakuang.gif" },
  330. { title: "黑线", url: "heixian.gif" },
  331. { title: "阴险", url: "yinxian.gif" },
  332. { title: "怒骂", url: "numa.gif" },
  333. { title: "互粉", url: "hufen.gif" },
  334. { title: "书呆子", url: "shudaizi.gif" },
  335. { title: "愤怒", url: "fennu.gif" },
  336. { title: "感冒", url: "ganmao.gif" },
  337. { title: "心", url: "xin.gif" },
  338. { title: "伤心", url: "shangxin.gif" },
  339. { title: "猪", url: "zhu.gif" },
  340. { title: "熊猫", url: "xiongmao.gif" },
  341. { title: "兔子", url: "tuzi.gif" },
  342. { title: "喔克", url: "ok.gif" },
  343. { title: "耶", url: "ye.gif" },
  344. { title: "棒棒", url: "good.gif" },
  345. { title: "不", url: "no.gif" },
  346. { title: "赞", url: "zan.gif" },
  347. { title: "来", url: "lai.gif" },
  348. { title: "弱", url: "ruo.gif" },
  349. { title: "草泥马", url: "caonima.gif" },
  350. { title: "神马", url: "shenma.gif" },
  351. { title: "囧", url: "jiong.gif" },
  352. { title: "浮云", url: "fuyun.gif" },
  353. { title: "给力", url: "geili.gif" },
  354. { title: "围观", url: "weiguan.gif" },
  355. { title: "威武", url: "weiwu.gif" },
  356. { title: "话筒", url: "huatong.gif" },
  357. { title: "蜡烛", url: "lazhu.gif" },
  358. { title: "蛋糕", url: "dangao.gif" },
  359. { title: "发红包", url: "fahongbao.gif" },
  360. ],
  361. }
  362. },
  363. mounted() {
  364. },
  365. methods:{
  366. checkPermi, checkRole,
  367. kaType(data, list) {
  368. return selectDictValue(list, data);
  369. },
  370. getDetail(e){
  371. this.$emit('getDetail',e)
  372. },
  373. analyzeEmoji(cont){
  374. //编译表情替换成图片展示出来
  375. var pattern1 = /\[[\u4e00-\u9fa5]+\]/g;
  376. var pattern2 = /\[[\u4e00-\u9fa5]+\]/;
  377. var content = cont.match(pattern1);
  378. var str = cont;
  379. if (content) {
  380. for (var i = 0; i < content.length; i++) {
  381. for (var j = 0; j < this.OwOlist.length; j++) {
  382. if ("[" + this.OwOlist[j].title + "]" == content[i]) {
  383. var src = this.OwOlist[j].url;
  384. break;
  385. }
  386. }
  387. var s = require("./img/face/" + src);
  388. var imoj = "<img src='" + s + "'/>";
  389. str = str.replace(pattern2, imoj);
  390. }
  391. }
  392. return str;
  393. },
  394. getZhanFn(ite,idx){
  395. var obj={
  396. ite:ite,
  397. idx:idx
  398. }
  399. this.$emit("getZhanFn",obj)
  400. },
  401. getDzFn(id,type,content,idx,aidx,atype){
  402. var obj={
  403. id:id,
  404. type:type,
  405. content:content,
  406. idx:idx,
  407. aidx:aidx,
  408. atype:atype
  409. }
  410. this.$emit("getDzFn",obj)
  411. },
  412. getScFn(ite,idx){
  413. var obj={
  414. ite:ite,
  415. idx:idx
  416. }
  417. this.$emit("getScFn",obj)
  418. },
  419. getHfFn(type,ite,id){
  420. var cuser=JSON.parse(JSON.stringify(ite.commentUser))
  421. var obj={
  422. parentId:id,
  423. toUserId:cuser.id,
  424. toNickName:cuser.nickName,
  425. toAvatar:cuser.avatar,
  426. type:type||""
  427. }
  428. this.$emit("getHfFn",obj)
  429. },
  430. getShouFn(idx){
  431. this.$emit("getShouFn",idx)
  432. },
  433. getDelFn(id){
  434. var that=this;
  435. uni.showModal({
  436. title: '确认删除',
  437. content: "是否确认删除",
  438. cancelText: '取消',
  439. confirmText: '确认',
  440. success: function(res) {
  441. if (res.confirm) {
  442. that.$emit('getDelFn',id)
  443. } else if (res.cancel) {
  444. }
  445. }
  446. });
  447. },
  448. getPreviewImage(arr,idx){
  449. var newArr=[];
  450. arr.forEach(ite=>{
  451. var ds=this.baseUrl+ite
  452. newArr.push(ds)
  453. })
  454. uni.previewImage({
  455. urls: newArr,
  456. current:idx,
  457. success: function(data) {
  458. },
  459. fail: function(err) {
  460. }
  461. });
  462. },
  463. getDownloader(e){
  464. uni.showLoading({
  465. title: '加载中'
  466. });
  467. var url=this.baseUrl+e;
  468. let index1 = e.lastIndexOf("."); // 得到一个索引值
  469. let index2 = e.length;
  470. let type = e.substring(index1, index2);
  471. if ((type.indexOf('jpg') > -1 || type.indexOf('jpeg') > -1 || type.indexOf('png') > -1)) {
  472. uni.previewImage({
  473. current: 0,
  474. urls: [url],
  475. // background: '#ffffff'
  476. });
  477. uni.hideLoading();
  478. } else {
  479. uni.downloadFile({
  480. url: url,//文件的下载路径
  481. success(result) {
  482. uni.hideLoading()
  483. var filePath = result.tempFilePath;
  484. uni.openDocument({
  485. filePath: filePath,
  486. showMenu: true,
  487. success: function (res) {
  488. // console.log('打开文档成功');
  489. }
  490. });
  491. },
  492. fail(res) {uni.hideLoading()}
  493. })
  494. }
  495. },
  496. //开始触摸滑动
  497. drawStart(e) {
  498. // console.log("开始触发");
  499. var touch = e.touches[0];
  500. this.startX = touch.clientX;
  501. },
  502. //触摸滑动
  503. drawMove(e) {
  504. // console.log("滑动");
  505. for (var index in this.datainfo) {
  506. // this.csListArrl[index].right=0
  507. this.$set(this.datainfo[index],'right',0);
  508. }
  509. var idx=e.currentTarget.dataset.idx
  510. var touch = e.touches[0];
  511. var item = this.datainfo[idx];
  512. var disX = this.startX - touch.clientX;
  513. if (disX >= 20) {
  514. if (disX > this.delBtnWidth) {
  515. disX = this.delBtnWidth;
  516. }
  517. // this.csListArrl[idx].right=disX
  518. this.$set(this.datainfo[idx],'right',disX);
  519. } else {
  520. // this.csListArrl[idx].right=0
  521. this.$set(this.datainfo[idx],'right',0);
  522. }
  523. },
  524. //触摸滑动结束
  525. drawEnd(e) {
  526. // console.log("滑动结束");
  527. var idx=e.currentTarget.dataset.idx
  528. var item = this.datainfo[idx];
  529. if (item.right >= this.delBtnWidth / 2) {
  530. // this.datainfo[idx].right=this.delBtnWidth
  531. this.$set(this.datainfo[idx],'right',this.delBtnWidth);
  532. } else {
  533. this.datainfo[idx].right=0
  534. }
  535. },
  536. }
  537. }
  538. </script>
  539. <style lang="scss" scoped>
  540. .flex{display: flex;}
  541. .flexc{display: flex;align-items: center;}
  542. .mb10{margin-bottom: 20rpx;}
  543. // 社区
  544. .walists{background: #FFFFFF;border-radius: 20rpx;margin-bottom: 24rpx; position: relative;
  545. .watop{
  546. padding: 0 36rpx 30rpx 38rpx;
  547. .watit{padding: 24rpx 0;margin-bottom: 4rpx;display: flex;
  548. .tit{font-weight: bold;font-size: 28rpx;color: #272727;flex: 1;
  549. .cir{width: 14rpx;margin-left: 8rpx;margin-bottom: 10rpx;height: 14rpx;display: inline-block;background: #FF6969;border-radius: 8rpx;}
  550. }
  551. .txt{font-weight: bold;font-size: 26rpx;flex: 0 0 auto;
  552. }
  553. }
  554. .wacoma{font-weight: 500;font-size: 26rpx;color: #666666;line-height: 36rpx;margin-bottom: 24rpx;}
  555. .wacomb{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
  556. }
  557. .watopcom{background-color: #ffffff;border-radius: 20rpx;position: relative;z-index: 1;}
  558. .wabtn{display: flex;align-items: center;justify-content: space-between;border-top: 2rpx solid #E5E5E5;height: 80rpx;padding: 0 38rpx;
  559. view{font-weight: 500;font-size: 24rpx;color: #666666;}
  560. image{width: 16rpx;height: 28rpx;}
  561. }
  562. }
  563. .rimg{width: 16rpx;height: 28rpx;margin: 0 10rpx;flex: 0 0 auto;}
  564. .spdel{width: 164rpx;background: #EA2D2D;font-weight: bold;font-size: 26rpx;color: #FFFFFF;display: flex;align-items: center;justify-content: center;position: absolute;right: -146rpx;top: 0;bottom: 0;padding-left: 14rpx;}
  565. //资讯
  566. .newlists{
  567. background: #FFFFFF;padding: 22rpx 24rpx;margin-bottom: 24rpx;
  568. border-radius: 20rpx;
  569. .tit{font-size: 32rpx;font-weight: bold;color: #272727;line-height: 48rpx;margin-bottom:16rpx;}
  570. .txt{font-size: 24rpx;color: #666666;line-height: 36rpx;margin-bottom: 32rpx;}
  571. .stabox{
  572. .time{font-weight: 500;font-size: 24rpx;color: #AAAAAA;line-height: 36rpx;}
  573. .btns{font-weight: 500;font-size: 22rpx;color: #666666;line-height: 36rpx;min-width: 100rpx;box-sizing: border-box;margin-left: 20rpx;
  574. .imga{width: 24rpx;height: 22rpx;margin-right: 8rpx;}
  575. .imgb{width: 24rpx;height: 18rpx;margin-right: 10rpx;}
  576. .imgc{width: 26rpx;height: 26rpx;margin-right: 10rpx;}
  577. }
  578. }
  579. }
  580. //评论
  581. .pllist{margin-bottom: 40rpx;
  582. &:last-child{margin-bottom: 0;}
  583. .head{width: 40rpx;height: 40rpx;margin-right: 18rpx;flex: 0 0 auto;border-radius: 50%;}
  584. .plname{font-size: 30rpx;color: #161616;font-weight: bold;
  585. }
  586. .plrbtn{margin-left: 36rpx;
  587. image{width: 26rpx;height: 24rpx;margin-right: 16rpx;
  588. &.imga{width: 26rpx;height: 26rpx;}
  589. &.imgb{width: 26rpx;height: 22rpx;}
  590. &.imgd{width: 26rpx;height: 24rpx;margin-right: 10rpx;}
  591. &.imge{width: 26rpx;height: 26rpx;transform: rotate(180deg);}
  592. }
  593. view{font-weight: bold;font-size: 24rpx;color: #314081;}
  594. }
  595. // margin-bottom: 30rpx;
  596. .infotxt{font-weight: 500;font-size: 26rpx;color: #161616;line-height: 40rpx;
  597. &:before {content: "";float: right;width: 0;height: calc(100% - 16px);background: red;}
  598. .inforeply{min-width: 86rpx;height: 42rpx;background: #F8F8F8;border-radius: 20rpx; margin-right: 22rpx;font-weight: 500;
  599. font-size: 24rpx;text-align: center;padding: 0 8rpx;box-sizing: border-box;line-height: 42rpx;display: inline-block;
  600. color: #161616;}
  601. .infotime{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
  602. // .infotime{font-weight: 500;font-size: 24rpx;color: #666666; float: right;clear: both;}
  603. image{width: 44rpx;height: 44rpx;}
  604. }
  605. .pllista{background: #F8F8F8;padding:12rpx 24rpx;border-radius: 10rpx;margin-top: 40rpx;
  606. .plnamea{font-size: 26rpx;color: #161616;line-height: 40rpx;
  607. .namea{font-weight: bold;max-width: 160rpx;}
  608. .plrep{color: #AAAAAA;margin: 0 10rpx;}
  609. }
  610. }
  611. .zhanbox{font-weight: 500;font-size: 24rpx;color: #AAAAAA;padding-bottom: 16rpx;margin-top: 16rpx;
  612. image{width: 20rpx;height: 12rpx;margin-left: 18rpx;transition: all 0.3s;
  613. &.zhan{transform: rotate(-180deg);}
  614. }
  615. }
  616. }
  617. //投诉建议
  618. .bxlists{background: #FFFFFF;border-radius: 20rpx;margin-bottom: 24rpx;position: relative;
  619. .bxtop{padding: 30rpx 24rpx;position: relative;
  620. .swiper{width: 100%;height: 280rpx;border-radius: 20rpx;box-sizing: border-box;margin-bottom: 28rpx;overflow: hidden;
  621. image{width: 100%;height: 100%;}
  622. }
  623. .toptit{font-weight: bold;font-size: 28rpx;color: #161616;}
  624. .walist{display: flex;font-weight: 500;font-size: 26rpx;color: #666666;margin-bottom: 16rpx;
  625. .tit{min-width: 100rpx;text-align-last: justify}
  626. }
  627. .btns{position: absolute;right: 26rpx;bottom: 20rpx;}
  628. .btn{min-width: 120rpx;height: 54rpx;border-radius: 26rpx;font-weight: 500;font-size: 26rpx;text-align: center;line-height: 54rpx;padding: 0 10rpx;box-sizing: border-box; margin-bottom: 14rpx;
  629. &.btna{border: 2rpx solid #FF6969;background: #FFF8F8;color: #FF6969;}
  630. &.btnb{background: #0256FD;color: #FFFFFF;}
  631. }
  632. }
  633. .bxsteps{border-top: 2rpx solid #E6E6E6;padding: 30rpx 0;
  634. .chtop{padding-right: 48rpx;
  635. .line{width: 14rpx;height: 48rpx;background: #0256FD;border-radius:0 12rpx 12rpx 0;margin-right: 18rpx;}
  636. view{font-weight: bold;font-size: 28rpx;color: #272727;}
  637. .upimg{width: 22rpx;height: 14rpx;flex: 0 0 auto;margin-left: 12rpx;transform: rotate(180deg);transition: all 0.3s;}
  638. }
  639. .fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 20rpx;
  640. &:last-child{margin-bottom: 0;}
  641. .imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;flex: 0 0 auto;
  642. image{width: 26rpx;height: 24rpx;}
  643. }
  644. .tit{font-size: 26rpx;color: #222327;font-weight: 500;margin-top: 4rpx;word-break: break-all;}
  645. }
  646. .hfstep{padding: 0 32rpx 30rpx 36rpx;margin-top: 24rpx;
  647. .hfslist{padding-bottom: 20rpx;position: relative;
  648. &:first-child{
  649. .hfstit{color: #0156FE;}
  650. }
  651. &::before{content: '';position: absolute;left: 14rpx;top:14rpx;height: 100%;width: 2rpx;background: #E6E6E6;}
  652. .limg{width: 30rpx;height: 30rpx;margin-right: 22rpx;flex: 0 0 auto;margin-top:3rpx;
  653. .imga{width: 30rpx;height: 30rpx;}
  654. .imgb{width: 18rpx;height: 18rpx;}
  655. }
  656. .hfstit{font-weight: bold;font-size: 30rpx;color: #666666;line-height: 36rpx;margin-bottom: 20rpx;
  657. text{font-size: 26rpx;margin-left: 12rpx;}
  658. }
  659. .hfstxt{font-weight: 500;font-size: 26rpx;color: #666666;line-height: 36rpx;margin-bottom: 20rpx;}
  660. .hfimgs{padding-top: 2rpx;
  661. image{width: 84rpx;height: 84rpx;border-radius: 20rpx;margin-right: 40rpx;margin-bottom: 10rpx;}
  662. }
  663. }
  664. }
  665. }
  666. }
  667. .bxlists /deep/ .uni-swiper-dots-horizontal{left: 26rpx;transform: translate(0);}
  668. .bxlists /deep/ .uni-swiper-dot{width: 10rpx;height: 10rpx;}
  669. .bxlists /deep/ .uni-swiper-dot-active{width: 24rpx;height: 10rpx;}
  670. // 无数据
  671. .nodata{display: flex;flex-direction: column;align-items: center;
  672. image{width: 440rpx;height: 440rpx;}
  673. view{font-size: 30rpx;color: #666666;font-weight: bold;}
  674. }
  675. </style>