index.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <div class="content-container">
  3. <!-- 表格 -->
  4. <div class="table">
  5. <el-table v-loading="loading" border :data="list" style="width: 100%">
  6. <el-table-column
  7. align="center"
  8. type="index"
  9. label="序号"
  10. width="80"
  11. ></el-table-column>
  12. <el-table-column
  13. prop="noticeTitle"
  14. label="标题"
  15. align="center"
  16. width="200"
  17. show-overflow-tooltip
  18. ></el-table-column>
  19. <el-table-column
  20. prop="noticeSource"
  21. label="消息来源"
  22. align="center"
  23. show-overflow-tooltip
  24. ></el-table-column>
  25. <el-table-column
  26. prop="noticeType"
  27. label="类型"
  28. width="80"
  29. align="center"
  30. >
  31. <template slot-scope="scope">
  32. {{ scope.row.noticeType == 1 ? '通知' : '公告' }}
  33. </template>
  34. </el-table-column>
  35. <el-table-column
  36. prop="noticeContent"
  37. label="内容"
  38. width="500"
  39. align="center"
  40. show-overflow-tooltip
  41. ></el-table-column>
  42. <el-table-column
  43. prop="status"
  44. label="状态"
  45. width="100"
  46. align="center"
  47. show-overflow-tooltip
  48. >
  49. <template slot-scope="scope">
  50. {{ scope.row.status == '0' ? '正常' : '关闭' }}
  51. </template>
  52. </el-table-column>
  53. <el-table-column
  54. prop="createTime"
  55. label="发送时间"
  56. width="120"
  57. align="center"
  58. show-overflow-tooltip
  59. >
  60. <template slot-scope="scope">
  61. <div>
  62. {{
  63. scope.row.createTime ? scope.row.createTime.split(' ')[0] : ''
  64. }}
  65. </div>
  66. <div>
  67. {{
  68. scope.row.createTime ? scope.row.createTime.split(' ')[1] : ''
  69. }}
  70. </div>
  71. </template>
  72. </el-table-column>
  73. <el-table-column
  74. prop="action"
  75. label="操作"
  76. width="120"
  77. align="center"
  78. fixed="right"
  79. show-overflow-tooltip
  80. >
  81. <template slot-scope="scope">
  82. <el-button type="text" size="mini" @click="handleView(scope.row)">
  83. 详情
  84. </el-button>
  85. </template>
  86. </el-table-column>
  87. </el-table>
  88. <el-pagination
  89. class="mt20"
  90. background
  91. :current-page="search.page"
  92. :page-sizes="[50, 100]"
  93. :page-size="search.pageSize"
  94. layout="total, sizes, prev, pager, next, jumper"
  95. :total="total"
  96. @size-change="handleSizeChange"
  97. @current-change="handleCurrentChange"
  98. ></el-pagination>
  99. <!-- 详情弹窗 -->
  100. <el-dialog
  101. title="详情"
  102. :visible.sync="visible"
  103. width="60%"
  104. :close-on-click-modal="false"
  105. >
  106. <el-form ref="form" :model="form" label-width="140px" disabled>
  107. <el-row :gutter="20">
  108. <el-col :span="12">
  109. <el-form-item label="标题:">
  110. {{ form.noticeTitle }}
  111. </el-form-item>
  112. </el-col>
  113. <el-col :span="12">
  114. <el-form-item label="类型:">
  115. {{ form.noticeType == 1 ? '通知' : '公告' }}
  116. </el-form-item>
  117. </el-col>
  118. </el-row>
  119. <el-row :gutter="20">
  120. <el-col :span="12">
  121. <el-form-item label="消息来源:">
  122. {{ form.noticeSource }}
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="12">
  126. <el-form-item label="发送对象:">
  127. {{ getUserName(form.sendTarget) }}
  128. </el-form-item>
  129. </el-col>
  130. </el-row>
  131. <el-row :gutter="20">
  132. <el-col :span="12">
  133. <el-form-item label="状态:">
  134. {{ form.status == '0' ? '正常' : '关闭' }}
  135. </el-form-item>
  136. </el-col>
  137. <el-col :span="12">
  138. <el-form-item label="发送时间:">
  139. {{ form.createTime }}
  140. </el-form-item>
  141. </el-col>
  142. <!-- <el-col :span="12">
  143. <el-form-item label="发送人:">
  144. {{ form.createBy }}
  145. </el-form-item>
  146. </el-col> -->
  147. </el-row>
  148. <el-row :gutter="20">
  149. <el-col :span="12">
  150. <el-form-item label="项目名称:">
  151. {{ form.projectName }}
  152. </el-form-item>
  153. </el-col>
  154. <el-col :span="12">
  155. <el-form-item label="被监审单位名称:">
  156. {{ form.enterpriseName }}
  157. </el-form-item>
  158. </el-col>
  159. </el-row>
  160. <el-row :gutter="20">
  161. <el-col :span="24">
  162. <el-form-item label="内容:">
  163. {{ form.noticeContent }}
  164. </el-form-item>
  165. </el-col>
  166. <el-col :span="24">
  167. <el-form-item label="备注:">{{ form.remark }}</el-form-item>
  168. </el-col>
  169. </el-row>
  170. </el-form>
  171. </el-dialog>
  172. </div>
  173. </div>
  174. </template>
  175. <script>
  176. import { getNoticeList, readNotice, getNoticeDetail } from '@/api/home'
  177. export default {
  178. name: 'Home',
  179. data() {
  180. return {
  181. search: {
  182. page: 1,
  183. pageSize: 50,
  184. },
  185. list: [],
  186. loading: false,
  187. total: 0,
  188. form: {},
  189. visible: false,
  190. }
  191. },
  192. computed: {
  193. user() {
  194. return this.$store.state.user.userInfo.user
  195. },
  196. },
  197. mounted() {
  198. this.getList()
  199. },
  200. methods: {
  201. // 获取更多消息列表
  202. async getList() {
  203. let user = this.user
  204. try {
  205. this.loading = true
  206. let params = {
  207. ...this.search,
  208. sendTarget: user.userId,
  209. }
  210. const res = await getNoticeList(params)
  211. if (res.value && res.value.records.length > 0) {
  212. this.list = res.value.records || []
  213. this.total = res.value.total || 0
  214. }
  215. } catch (error) {
  216. console.log(error)
  217. } finally {
  218. this.loading = false
  219. }
  220. },
  221. // 详情
  222. handleView(row) {
  223. readNotice({ id: row.noticeId }).then(() => {
  224. this.getList()
  225. })
  226. getNoticeDetail({ id: row.noticeId }).then((res) => {
  227. if (res.value) {
  228. this.form = {
  229. ...res.value,
  230. }
  231. this.visible = true
  232. }
  233. })
  234. },
  235. // 分页大小改变
  236. handleSizeChange(val) {
  237. this.search.pageSize = val
  238. this.getList()
  239. },
  240. // 分页当前页改变
  241. handleCurrentChange(val) {
  242. this.search.page = val
  243. this.getList()
  244. },
  245. // 获取用户姓名
  246. getUserName(userId) {
  247. let user = this.user
  248. if (user.userId == userId) {
  249. return user.fullname || user.userName
  250. }
  251. return ''
  252. },
  253. },
  254. }
  255. </script>
  256. <style lang="scss" scoped>
  257. @import '@/styles/costAudit.scss';
  258. </style>