ソースを参照

feat: 增加远程升级功能

vera_min 3 ヶ月 前
コミット
346a6d1891
2 ファイル変更88 行追加0 行削除
  1. 5 0
      src/api/system/index.ts
  2. 83 0
      src/views/system/monitor/upgrade/index.vue

+ 5 - 0
src/api/system/index.ts

@@ -220,4 +220,9 @@ export default {
     // 清理指定处理项的缓存
     clearCache: (data: object) => post('/system/maintenance/ClearCache', data),
   },
+  // 远程升级
+  upgrade: {
+    getList: (params: object) => get('/upgrade/versions', params),
+    upgrade: (data: object) => post('/upgrade/upgrade', data),
+  }
 }

+ 83 - 0
src/views/system/monitor/upgrade/index.vue

@@ -0,0 +1,83 @@
+<!-- 远程升级 -->
+<template>
+	<div class="page">
+		<el-card shadow="nover" class="page-full-part">
+			<h1 class="mb14">
+				当前系统版本号:{{ tableData.currentVersion }}
+			</h1>
+			<el-card>
+				<template #header>
+					<div class="card-header">
+						<h4>可升级插件列表</h4>
+					</div>
+				</template>
+				<el-table :data="tableData.availableVersions" style="width: 100%" v-loading="loading">
+					<el-table-column label="序号" align="center" width="100">
+						<template #default="{ $index }">{{ params.pageSize * (params.pageNum - 1) + ($index + 1) }} </template>
+					</el-table-column>
+					<el-table-column label="版本号" align="center" prop="version" width="160" show-overflow-tooltip/>
+					<el-table-column label="描述" align="center" prop="description" show-overflow-tooltip />
+					<el-table-column label="创建日期" align="center" prop="createdAt" width="240">
+						<template #default="scope">
+							{{ dayjs(scope.row.releaseDate).format('YYYY-MM-DD HH:mm:ss') }}
+						</template>
+					</el-table-column>
+					<el-table-column label="操作" width="180" align="center" fixed="right" v-col="'handle'">
+						<template #default="scope">
+							<el-button  size="small" type="success" link @click="handleUpgrade(scope.row, 1)" >升级</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-card>
+		</el-card>
+	</div>
+</template>
+
+<script lang="ts" setup>
+import { ElMessage, ElMessageBox } from 'element-plus'
+import api from '/@/api/system'
+import { useSearch } from '/@/hooks/useCommon'
+import dayjs from 'dayjs'
+
+const { params, tableData, getList, loading } = useSearch(api.upgrade.getList, 'list', { keyWord: '' })
+
+getList();
+
+/**
+ * 升级版本
+ */
+const handleUpgrade = (row:any) => {
+	ElMessageBox.confirm('确定要升级系统吗?此操作不可逆。', '升级确认', {
+	confirmButtonText: '确定',
+	cancelButtonText: '取消',
+	type: 'warning',
+})
+	.then(() => {
+		ElMessage({
+			type: 'success',
+			message: '已开始执行升级任务',
+		});
+		api.upgrade.upgrade({
+			targetVersion: row.version
+		}).then((res:any) => {
+			getList();
+			setTimeout(() => {
+				if(res.data.error) {
+					ElMessage.error(res.data.message)
+				}else {
+					ElMessage.success('升级成功');
+					getList();
+				}
+			}, 1000)
+		}).catch(() => {
+			ElMessage.error('升级失败')
+		})
+	})
+	.catch(() => {
+		ElMessage({
+			type: 'info',
+			message: '已取消升级',
+		});
+	});
+}
+</script>