index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div class="user-management-container">
  3. <vab-query-form>
  4. <vab-query-form-left-panel :span="5">
  5. <el-button v-permissions="['system:report:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
  6. 添加
  7. </el-button>
  8. <el-button
  9. v-permissions="['system:report:delete']"
  10. icon="el-icon-delete"
  11. type="danger"
  12. @click="handleDelete($event)">
  13. 删除
  14. </el-button>
  15. </vab-query-form-left-panel>
  16. <vab-query-form-right-panel :span="19">
  17. <el-form :inline="true" :model="queryForm" @submit.native.prevent>
  18. <el-form-item label="报表名称" prop="reportName">
  19. <el-input v-model.trim="queryForm.reportName" clearable placeholder="请输入报表名称" />
  20. </el-form-item>
  21. <el-form-item label="报表代码" prop="reportCode">
  22. <el-input v-model.trim="queryForm.reportCode" clearable placeholder="请输入报表代码" />
  23. </el-form-item>
  24. <el-form-item label="报表类型" prop="reportType">
  25. <el-select v-model="queryForm.reportType" clearable placeholder="类型">
  26. <el-option label="数值指标" value="10" />
  27. <el-option label="数据报表" value="20" />
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item>
  31. <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
  32. </el-form-item>
  33. </el-form>
  34. </vab-query-form-right-panel>
  35. </vab-query-form>
  36. <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
  37. <el-table-column align="center" show-overflow-tooltip type="selection" />
  38. <el-table-column align="center" label="报表类型" prop="reportType">
  39. <template #default="{ row }">
  40. {{ row.reportType === '10' ? '数值指标' : '数据报表' }}
  41. </template>
  42. </el-table-column>
  43. <el-table-column align="center" label="报表代码" prop="reportCode" show-overflow-tooltip />
  44. <el-table-column align="center" label="报表图标" prop="reportIcon" show-overflow-tooltip />
  45. <el-table-column align="center" label="报表名称" prop="reportName" show-overflow-tooltip />
  46. <!-- <el-table-column align="center" label="正在使用的角色" prop="" show-overflow-tooltip /> -->
  47. <el-table-column align="center" label="报表描述" prop="reportDesc" show-overflow-tooltip />
  48. <el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
  49. <el-table-column align="center" label="创建时间" prop="createdTime">
  50. <template #default="scope">
  51. <span>{{ parseTime(scope.row.createdTime) }}</span>
  52. </template>
  53. </el-table-column>
  54. <el-table-column align="center" label="操作" show-overflow-tooltip width="125">
  55. <template #default="{ row }">
  56. <el-button v-permissions="['system:report:edit']" type="text" @click="handleApplication(row)">应用</el-button>
  57. <el-button v-permissions="['system:report:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
  58. <el-button v-permissions="['system:report:application']" type="text" @click="handleDelete(row)">
  59. 删除
  60. </el-button>
  61. </template>
  62. </el-table-column>
  63. <template #empty>
  64. <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
  65. </template>
  66. </el-table>
  67. <el-pagination
  68. background
  69. :current-page="queryForm.pageNum"
  70. :layout="layout"
  71. :page-size="queryForm.pageSize"
  72. :total="total"
  73. @current-change="handleCurrentChange"
  74. @size-change="handleSizeChange" />
  75. <edit ref="edit" @fetch-data="fetchData" />
  76. <rlist ref="reportlist" @fetch-data="fetchData" />
  77. </div>
  78. </template>
  79. <script>
  80. import reportApi from '@/api/system/report'
  81. import Edit from './components/ReportEdit'
  82. import Rlist from './components/ReportList'
  83. export default {
  84. name: 'Post',
  85. components: { Edit, Rlist },
  86. data() {
  87. return {
  88. list: [],
  89. listLoading: true,
  90. layout: 'total, sizes, prev, pager, next, jumper',
  91. total: 0,
  92. selectRows: '',
  93. queryForm: {
  94. pageNum: 1,
  95. pageSize: 10,
  96. reportName: undefined,
  97. reportCode: undefined,
  98. reportType: undefined,
  99. },
  100. }
  101. },
  102. computed: {
  103. height() {
  104. return this.$baseTableHeight(1)
  105. },
  106. },
  107. created() {
  108. this.fetchData()
  109. },
  110. methods: {
  111. setSelectRows(val) {
  112. this.selectRows = val
  113. },
  114. handleApplication(row) {
  115. if (row.id) {
  116. this.$refs['reportlist'].showEdit(row)
  117. } else {
  118. this.$refs['reportlist'].showEdit()
  119. }
  120. },
  121. handleEdit(row) {
  122. if (row.id) {
  123. this.$refs['edit'].showEdit(row)
  124. } else {
  125. this.$refs['edit'].showEdit()
  126. }
  127. },
  128. handleDelete(row) {
  129. if (row.id) {
  130. this.$baseConfirm('你确定要删除当前项吗', null, async () => {
  131. const { msg } = await reportApi.doDelete({ ids: [row.id] })
  132. this.$baseMessage(msg, 'success', 'vab-hey-message-success')
  133. await this.fetchData()
  134. })
  135. } else {
  136. if (this.selectRows.length > 0) {
  137. let ids = []
  138. for (let item of this.selectRows) {
  139. ids.push(item.id)
  140. }
  141. this.$baseConfirm('你确定要删除选中项吗', null, async () => {
  142. const { msg } = await reportApi.doDelete({ ids })
  143. this.$baseMessage(msg, 'success', 'vab-hey-message-success')
  144. await this.fetchData()
  145. })
  146. } else {
  147. this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
  148. }
  149. }
  150. },
  151. handleSizeChange(val) {
  152. this.queryForm.pageSize = val
  153. this.fetchData()
  154. },
  155. handleCurrentChange(val) {
  156. this.queryForm.pageNum = val
  157. this.fetchData()
  158. },
  159. queryData() {
  160. this.queryForm.pageNum = 1
  161. this.fetchData()
  162. },
  163. async fetchData() {
  164. this.listLoading = true
  165. const {
  166. data: { list, total },
  167. } = await reportApi.getList(this.queryForm)
  168. this.list = list
  169. this.total = total
  170. this.listLoading = false
  171. },
  172. },
  173. }
  174. </script>