index.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <template>
  2. <div class="complaint">
  3. <div class="search">
  4. <el-input
  5. placeholder="请输入地址/投诉人"
  6. maxlength="20"
  7. class="search-input"
  8. clearable
  9. v-model.trim="mixins_query.likeValue"
  10. ></el-input>
  11. <el-select
  12. placeholder="请选择所属社区"
  13. v-model="mixins_query.communityId"
  14. clearable
  15. >
  16. <el-option
  17. v-for="(item, index) in communityList"
  18. :key="index"
  19. :label="item.communityName"
  20. :value="item.id"
  21. ></el-option>
  22. </el-select>
  23. <el-select
  24. placeholder="请选择投诉类型"
  25. v-model="mixins_query.type"
  26. clearable
  27. >
  28. <el-option
  29. v-for="(item, index) in complaintType"
  30. :key="index"
  31. :label="item.label"
  32. :value="item.status"
  33. >{{
  34. item.label
  35. }}</el-option>
  36. </el-select>
  37. <el-select
  38. placeholder="请选择投诉状态"
  39. v-model="mixins_query.handleStatus"
  40. clearable
  41. >
  42. <el-option
  43. v-for="(item, index) in complaintStatusSerach"
  44. :key="index"
  45. :label="item.label"
  46. :value="item.status"
  47. ></el-option>
  48. </el-select>
  49. <el-date-picker
  50. v-model="pickerTime"
  51. value-format="yyyy-MM-dd"
  52. type="daterange"
  53. range-separator="至"
  54. start-placeholder="开始日期"
  55. end-placeholder="结束日期"
  56. :picker-options="pickerOptions"
  57. @change="timeToggle"
  58. :editable="false"
  59. ></el-date-picker>
  60. <el-button
  61. type="primary"
  62. placeholder="状态"
  63. class="search-btn"
  64. @click="mixins_search"
  65. icon="el-icon-search"
  66. v-preventReClick
  67. >查询
  68. </el-button>
  69. </div>
  70. <div class="content">
  71. <div class="roles-wrap">
  72. <zz-table
  73. :cols="cols"
  74. :settings="{ showNumber: true, stripe: true }"
  75. :data="mixins_list"
  76. :pageset="mixins_pageset"
  77. @page-change="pageChange"
  78. :loading="mixins_onQuery"
  79. >
  80. <template
  81. slot-scope="scope"
  82. slot="content"
  83. >
  84. <div>{{ scope.row.content }}</div>
  85. </template>
  86. <template
  87. slot-scope="scope"
  88. slot="house"
  89. >
  90. <!-- <div>{{ scope.row.unitName }}{{ roomNumber }}</div> -->
  91. <div>{{ scope.row.communityName }}{{ scope.row.unitName }}{{ scope.row.roomNumber }}</div>
  92. </template>
  93. <template
  94. slot-scope="scope"
  95. slot="status"
  96. >
  97. <div :class="{ statusColor: scope.row.handleStatus === 1 }">
  98. {{ scope.row.handleStatus | filterComplaintStatus }}
  99. </div>
  100. </template>
  101. <template
  102. slot-scope="scope"
  103. slot="opt"
  104. >
  105. <div
  106. class="opt"
  107. @click="clickEdit(scope.row)"
  108. >
  109. <i
  110. v-if="scope.row.id === 1"
  111. class="zoniot_font zoniot-icon-chuli"
  112. ></i>
  113. <i
  114. v-else
  115. class="zoniot_font zoniot-icon-xiangqing"
  116. ></i>
  117. <!-- <img
  118. v-if="scope.row.id === 1"
  119. src="../../assets/img/icon_chuli@2x.png"
  120. alt=""
  121. />
  122. <img
  123. v-else
  124. src="../../assets/img/icon_biaodan@2x.png"
  125. alt=""
  126. /> -->
  127. </div>
  128. </template>
  129. </zz-table>
  130. </div>
  131. </div>
  132. </div>
  133. </template>
  134. <script>
  135. import list from '@utils/list.js';
  136. export default {
  137. mixins: [list],
  138. data () {
  139. return {
  140. //社区列表
  141. communityList: [],
  142. // 投诉类型
  143. complaintType: [
  144. {
  145. status: 1,
  146. label: '扰民投诉'
  147. },
  148. {
  149. status: 2,
  150. label: '物业服务'
  151. },
  152. {
  153. status: 3,
  154. label: '公共卫生'
  155. },
  156. {
  157. status: 4,
  158. label: '安全建议'
  159. },
  160. {
  161. status: 5,
  162. label: '其他'
  163. }
  164. ],
  165. // 投诉状态
  166. complaintStatusSerach: [
  167. {
  168. status: 1,
  169. label: '未处理'
  170. },
  171. {
  172. status: 2,
  173. label: '已处理'
  174. },
  175. {
  176. status: 3,
  177. label: '处理中'
  178. },
  179. {
  180. status: 4,
  181. label: '待评价'
  182. },
  183. {
  184. status: 5,
  185. label: '已评价'
  186. }
  187. ],
  188. // 查询的时间
  189. pickerTime: [],
  190. cols: [
  191. {
  192. label: '所属社区',
  193. prop: 'communityName'
  194. },
  195. {
  196. label: '房间地址',
  197. prop: 'houseId',
  198. slot: 'house'
  199. },
  200. {
  201. label: '投诉类型',
  202. prop: 'type',
  203. format (val) {
  204. if (val == '1') {
  205. return '扰民投诉';
  206. } else if (val == '2') {
  207. return '物业服务';
  208. } else if (val == '3') {
  209. return '公共卫生';
  210. } else if (val == '4') {
  211. return '安全建议';
  212. } else {
  213. return '其他';
  214. }
  215. }
  216. },
  217. {
  218. label: '投诉人',
  219. prop: 'userName'
  220. },
  221. {
  222. label: '联系电话',
  223. prop: 'phone'
  224. },
  225. {
  226. label: '投诉时间',
  227. prop: 'createDate'
  228. },
  229. {
  230. label: '内容',
  231. prop: 'content',
  232. slot: 'content',
  233. width: 260
  234. },
  235. {
  236. label: '状态',
  237. prop: 'handleStatus',
  238. slot: 'status'
  239. },
  240. {
  241. label: '操作',
  242. prop: 'id',
  243. slot: 'opt'
  244. }
  245. ],
  246. mixins_post: 'post'
  247. };
  248. },
  249. created () {
  250. this.getCommunityList();
  251. this.mixins_dataUrl = '/czc-community/feedback/page';
  252. this.mixins_search();
  253. },
  254. mounted () { },
  255. methods: {
  256. timeToggle (e) {
  257. let start = '00:00:00',
  258. end = '23:59:59';
  259. if (!!e) {
  260. this.mixins_query.startTime = `${e[0]} ${start}`;
  261. this.mixins_query.endTime = `${e[1]} ${end}`;
  262. } else {
  263. this.mixins_query.startTime = ``;
  264. this.mixins_query.endTime = ``;
  265. }
  266. },
  267. /** 获取社区列表*/
  268. getCommunityList () {
  269. this.$http.get('/czc-community/assets/community/list').then(({ data, msg, status }) => {
  270. if (status == 0) {
  271. this.communityList = data;
  272. this.$store.commit('setAreaSelect', data);
  273. }
  274. });
  275. },
  276. /** 查看处理详情*/
  277. clickEdit (row) {
  278. new Promise((resolve) => {
  279. this.$store.dispatch('addPopup', {
  280. url: '/propertyManagement/stepPage/indexEdit.vue',
  281. width: '700px',
  282. height: '650px',
  283. props: {
  284. row,
  285. callback: resolve
  286. },
  287. showResetButton: row.handleStatus == 1 || row.handleStatus == 3 ? true : false,
  288. showConfirmButton: row.handleStatus == 1 || row.handleStatus == 3 ? false : true,
  289. showCancelButton: row.handleStatus == 1 || row.handleStatus == 3 ? true : false,
  290. confirmButtonText: '提交',
  291. hideStar: row.handleStatus == 1 || row.handleStatus == 3 ? false : true,
  292. title: '投诉建议'
  293. });
  294. }).then(() => {
  295. this.mixins_search();
  296. });
  297. }
  298. }
  299. };
  300. </script>
  301. <style lang="scss" scoped>
  302. @import './style.scss';
  303. /deep/ .el-dialog {
  304. margin-top: 5vh !important;
  305. }
  306. </style>