project.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div class="form-wrap">
  3. <div class="searchBox">
  4. <el-form
  5. ref="form"
  6. :model="form"
  7. :inline="true"
  8. label-width="100px">
  9. <el-form-item
  10. label="名称"
  11. prop="projectName">
  12. <el-input v-model="form.projectName"></el-input>
  13. </el-form-item>
  14. </el-form>
  15. <div class="btn-wrap">
  16. <el-button
  17. type="primary"
  18. @click="getProjectList">搜索</el-button>
  19. <el-button
  20. type="primary"
  21. v-if="canAddUsers"
  22. @click="showDialog('add')">新增项目</el-button>
  23. </div>
  24. </div>
  25. <div class="tableBox">
  26. <!-- <div class="block-title">
  27. 项目列表
  28. </div> -->
  29. <el-table
  30. v-loading="loading"
  31. row-class-name="is-center"
  32. :data="tableData">
  33. <el-table-column
  34. prop="projectIndex"
  35. label="项目序号"
  36. width="100">
  37. </el-table-column>
  38. <el-table-column
  39. prop="createTime"
  40. label="上报时间"
  41. width="160">
  42. </el-table-column>
  43. <el-table-column
  44. prop="id"
  45. label="项目ID"
  46. width="200">
  47. </el-table-column>
  48. <el-table-column
  49. prop="projectName"
  50. label="项目名称">
  51. </el-table-column>
  52. <el-table-column
  53. prop="projectNickName"
  54. label="项目中文名称"
  55. width="160">
  56. </el-table-column>
  57. <el-table-column
  58. prop="projectDesc"
  59. label="项目描述"
  60. show-overflow-tooltip
  61. width="200">
  62. </el-table-column>
  63. <el-table-column
  64. prop="offlineUrl"
  65. label="线下地址"
  66. width="200">
  67. </el-table-column>
  68. <el-table-column
  69. prop="lastHeartbeatTime"
  70. label="最近一次在线时间"
  71. width="180">
  72. </el-table-column>
  73. <el-table-column
  74. fixed="right"
  75. label="操作"
  76. width="120">
  77. <template slot-scope="scope">
  78. <el-button
  79. type="text"
  80. @click="showDialog('edit',scope.row)">编辑</el-button>
  81. <el-button
  82. type="text"
  83. @click="showDialog('detail',scope.row)">详情</el-button>
  84. </template>
  85. </el-table-column>
  86. </el-table>
  87. </div>
  88. <!-- 账号弹框 -->
  89. <ElDialog
  90. title="添加项目"
  91. width="660px"
  92. v-model="addVisible">
  93. <AddDialog @updateList="getProjectList"></AddDialog>
  94. </ElDialog>
  95. <ElDialog
  96. title="编辑项目"
  97. width="660px"
  98. v-model="editVisible">
  99. <EditDialog
  100. :project-item="currentItem"
  101. @updateList="getProjectList"></EditDialog>
  102. </ElDialog>
  103. <ElDialog
  104. title="项目详细"
  105. width="800px"
  106. v-model="detailVisible">
  107. <DetailDialog
  108. :project-item="currentItem"
  109. @updateList="getProjectList"></DetailDialog>
  110. </ElDialog>
  111. <el-pagination
  112. background
  113. :page-size="10"
  114. @current-change="handlePage"
  115. layout="prev, pager, next"
  116. :total="total">
  117. </el-pagination>
  118. </div>
  119. </template>
  120. <script>
  121. import { getProjectList } from '@/api/platform'
  122. import ElDialog from '@/components/Dialog'
  123. import AddDialog from './project/AddDialog'
  124. import EditDialog from './project/EditDialog'
  125. import DetailDialog from './project/DetailDialog'
  126. export default {
  127. components: {
  128. ElDialog,
  129. AddDialog,
  130. EditDialog,
  131. DetailDialog
  132. },
  133. computed: {
  134. canAddUsers () {
  135. return true
  136. // return this.$store.state.user.permissionList.includes('system_settings:add_users')
  137. }
  138. },
  139. created () {
  140. this.getProjectList()
  141. },
  142. data () {
  143. return {
  144. loading: false,
  145. addVisible: false,
  146. editVisible: false,
  147. detailVisible: false,
  148. tableData: [],
  149. total: 0,
  150. form: {
  151. projectName: '', // 账号名
  152. pageNum: 1,
  153. pageSize: 10
  154. },
  155. // 当前账号对象
  156. currentItem: {}
  157. }
  158. },
  159. methods: {
  160. showDialog (type, item) {
  161. this[`${type}Visible`] = true
  162. this.currentItem = item
  163. },
  164. getProjectList (goFirst) {
  165. this.loading = true
  166. if (goFirst) {
  167. this.form.pageNum = 1
  168. }
  169. getProjectList(this.form).then(res => {
  170. this.loading = false
  171. this.tableData = res.data.records.map(item => {
  172. item.permissionList = (item.roleList || []).reduce((acc, role) => {
  173. return acc.concat(role.resourceList || [])
  174. }, [])
  175. return item
  176. }) || []
  177. this.total = res.data.total
  178. })
  179. },
  180. handlePage (pageNum) {
  181. this.form.pageNum = pageNum
  182. this.getProjectList()
  183. }
  184. }
  185. }
  186. </script>
  187. <style scoped>
  188. </style>