SysUpdate.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <template>
  2. <el-container>
  3. <el-header height="220">
  4. <h3>系统更新</h3>
  5. </el-header>
  6. <el-main>
  7. <el-row>
  8. <el-col :md="12" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
  9. <el-card class="box-card">
  10. <div slot="header" class="clearfix">
  11. <span>devops-mgr</span>
  12. <el-button style="float: right; padding: 3px 0" type="text" @click="handleAdd">添加</el-button>
  13. </div>
  14. <div class="text item">
  15. <el-table
  16. :data="mgrList"
  17. border
  18. height="480"
  19. style="width: 100%"
  20. >
  21. <el-table-column
  22. prop="machineIpv4"
  23. label="机器地址"
  24. />
  25. <el-table-column
  26. prop="bootTime"
  27. label="应用目录"
  28. />
  29. <el-table-column
  30. prop="status"
  31. label="当前状态"
  32. >
  33. <template slot-scope="scope">
  34. <el-tag v-if="scope.row.status === 'Online'" :type="'success'" disable-transitions>
  35. <span>在线</span>
  36. </el-tag>
  37. <el-tag v-else-if="scope.row.status === 'Offline'" :type="'danger'" disable-transitions>
  38. <span>离线</span>
  39. </el-tag>
  40. <el-tag v-else :type="'warning'" disable-transitions>
  41. <span>弃用</span>
  42. </el-tag>
  43. </template>
  44. </el-table-column>
  45. <el-table-column
  46. prop="agentVersion"
  47. label="Agent 版本"
  48. />
  49. </el-table>
  50. </div>
  51. </el-card>
  52. </el-col>
  53. <el-col :md="12" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px">
  54. <el-card class="box-card">
  55. <div slot="header" class="clearfix">
  56. <span>devops-agent</span>
  57. <el-button style="float: right; padding: 3px 0" type="text" @click="getData">刷新</el-button>
  58. </div>
  59. <div class="text item">
  60. <el-table
  61. :data="agentList"
  62. border
  63. height="480"
  64. style="width: 100%"
  65. >
  66. <el-table-column
  67. prop="machineIpv4"
  68. label="机器地址"
  69. />
  70. <el-table-column
  71. prop="bootTime"
  72. label="启动时间"
  73. />
  74. <el-table-column
  75. prop="status"
  76. label="当前状态"
  77. >
  78. <template slot-scope="scope">
  79. <el-tag v-if="scope.row.status === 'Online'" :type="'success'" disable-transitions>
  80. <span>在线</span>
  81. </el-tag>
  82. <el-tag v-else-if="scope.row.status === 'Offline'" :type="'danger'" disable-transitions>
  83. <span>离线</span>
  84. </el-tag>
  85. <el-tag v-else :type="'warning'" disable-transitions>
  86. <span>弃用</span>
  87. </el-tag>
  88. </template>
  89. </el-table-column>
  90. <el-table-column
  91. prop="agentVersion"
  92. label="Agent 版本"
  93. />
  94. <el-table-column
  95. prop="env"
  96. label="所属环境"
  97. />
  98. </el-table>
  99. </div>
  100. </el-card>
  101. </el-col>
  102. </el-row>
  103. </el-main>
  104. <el-dialog
  105. append-to-body
  106. :visible.sync="showMgrDialog"
  107. width="50%"
  108. center
  109. >
  110. <div>
  111. <el-button style="float: right; padding: 3px 0" type="text" @click="handleAdd">添加</el-button>
  112. <el-table
  113. :data="mgrList"
  114. border
  115. height="480"
  116. style="width: 100%"
  117. >
  118. <el-table-column
  119. prop="machineIpv4"
  120. label="机器地址"
  121. />
  122. <el-table-column
  123. prop="bootTime"
  124. label="启动时间"
  125. />
  126. <el-table-column
  127. prop="status"
  128. label="当前状态"
  129. >
  130. <template slot-scope="scope">
  131. <el-tag v-if="scope.row.status === 'Online'" :type="'success'" disable-transitions>
  132. <span>在线</span>
  133. </el-tag>
  134. <el-tag v-else-if="scope.row.status === 'Offline'" :type="'danger'" disable-transitions>
  135. <span>离线</span>
  136. </el-tag>
  137. <el-tag v-else :type="'warning'" disable-transitions>
  138. <span>弃用</span>
  139. </el-tag>
  140. </template>
  141. </el-table-column>
  142. <el-table-column
  143. prop="agentVersion"
  144. label="Agent 版本"
  145. />
  146. <el-table-column
  147. prop="env"
  148. label="所属环境"
  149. />
  150. </el-table>
  151. </div>
  152. </el-dialog>
  153. <el-dialog
  154. append-to-body
  155. :visible.sync="showAddDialog"
  156. width="50%"
  157. center
  158. >
  159. <div>
  160. <el-form :model="addForm" label-width="80px">
  161. <el-form-item label="主机地址">
  162. <el-input v-model="addForm.host" style="width: 70%; padding-right: 2px" />
  163. </el-form-item>
  164. <el-form-item label="SSH 端口">
  165. <el-input v-model="addForm.port" style="width: 70%; padding-right: 2px" />
  166. </el-form-item>
  167. <el-form-item label="认证方式" style="width: 70%; padding-right: 2px">
  168. <el-select v-model="addForm.authType" placeholder="选择认证方式">
  169. <el-option label="密码认证" value="password" />
  170. <el-option label="私钥认证" value="privateKey" />
  171. </el-select>
  172. </el-form-item>
  173. <div v-if="addForm.authType === 'password'">
  174. <el-form-item label="用户名" style="width: 70%; padding-right: 2px">
  175. <el-input v-model="addForm.username" style="width: 70%; padding-right: 2px" />
  176. </el-form-item>
  177. <el-form-item label="密码" style="width: 70%; padding-right: 2px">
  178. <el-input v-model="addForm.password" style="width: 70%; padding-right: 2px" />
  179. </el-form-item>
  180. </div>
  181. <div v-else>
  182. <el-form-item label="私钥" style="width: 70%; padding-right: 2px">
  183. <el-input
  184. v-model="addForm.rsaPrikey"
  185. type="textarea"
  186. maxlength="10000"
  187. :rows="10"
  188. style="padding: 5px"
  189. />
  190. </el-form-item>
  191. </div>
  192. <el-form-item label="应用目录">
  193. <el-input v-model="addForm.appDir" style="width: 70%; padding-right: 2px" />
  194. </el-form-item>
  195. <el-form-item>
  196. <el-button type="primary" @click="onAdd">确定</el-button>
  197. </el-form-item>
  198. </el-form>
  199. </div>
  200. </el-dialog>
  201. <!-- 视频预览对话框 -->
  202. <el-dialog
  203. title="预览视频"
  204. append-to-body
  205. :visible.sync="showPreviewDialog"
  206. width="70%"
  207. center
  208. >
  209. <template />
  210. </el-dialog>
  211. </el-container>
  212. </template>
  213. <script>
  214. export default {
  215. name: 'SysUpdate',
  216. data() {
  217. return {
  218. queryInfo: {
  219. scope: null,
  220. pn: 1
  221. },
  222. // 屏幕宽度, 为了控制分页条的大小
  223. screenWidth: document.body.clientWidth,
  224. currentPage: 1,
  225. pageSize: 10,
  226. totalSize: 0,
  227. dataList: [],
  228. nextId: 0,
  229. // **********************************************************************
  230. mgrList: [],
  231. agentList: [],
  232. // **********************************************************************
  233. showAddDialog: false,
  234. addForm: {
  235. host: '',
  236. port: 22,
  237. authType: 'password',
  238. username: '',
  239. password: '',
  240. rsaPrikey: '',
  241. appDir: ''
  242. },
  243. // **********************************************************************
  244. showPreviewDialog: false,
  245. form: {
  246. videoId: null,
  247. scope: 1
  248. },
  249. videoResources: [],
  250. publishVideoDiaglog: false
  251. }
  252. },
  253. created() {
  254. document.title = '系统更新'
  255. },
  256. methods: {
  257. getData() {
  258. this.dataList = []
  259. },
  260. onRefresh() {
  261. this.getData()
  262. },
  263. handleAdd() {
  264. this.showAddDialog = true
  265. },
  266. onAdd() {
  267. this.showAddDialog = false
  268. },
  269. handlePreview(index, row) {
  270. },
  271. handleEdit(index, row) {
  272. const path = '/post/video/edit/' + row.videoId
  273. this.$router.push(path)
  274. },
  275. onSelectChange() {
  276. this.$message.info(this.queryInfo)
  277. },
  278. handleClose() {
  279. }
  280. }
  281. }
  282. </script>
  283. <style>
  284. </style>