Files
stand_acs/acs2/nladmin-ui/src/views/system/version/index.vue
2026-05-12 17:42:37 +08:00

131 lines
3.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="version-container">
<el-card class="version-card">
<div slot="header" class="card-header">
<span>{{ $t('auto.version.releaseTitle') }}</span>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item :label="$t('auto.version.versionNo')" prop="version">
<el-input v-model="form.version" placeholder="例如2.7.0" style="width: 300px" />
</el-form-item>
<el-form-item :label="$t('auto.version.noticeTitle')" prop="title">
<el-input v-model="form.title" placeholder="例如新增AGV多车调度功能" style="width: 500px" />
</el-form-item>
<el-form-item :label="$t('auto.version.content')" prop="content">
<el-input
v-model="form.content"
type="textarea"
:rows="8"
placeholder="请输入更新内容支持HTML格式"
style="width: 600px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="loading" @click="handleRelease">
{{ $t('auto.version.release') }}
</el-button>
<el-button @click="handleReset">{{ $t('auto.common.Reset') }}</el-button>
</el-form-item>
</el-form>
</el-card>
<!-- 当前版本信息 -->
<el-card class="version-card" style="margin-top: 20px">
<div slot="header" class="card-header">
<span>{{ $t('auto.version.currentInfo') }}</span>
</div>
<el-descriptions :column="2" border>
<el-descriptions-item :label="$t('auto.version.versionNo')">
<el-tag type="success">{{ currentVersion }}</el-tag>
</el-descriptions-item>
<el-descriptions-item :label="$t('auto.version.switch')">
<el-tag :type="enabled ? 'success' : 'danger'">{{ enabled ? $t('auto.version.enabled') : $t('auto.version.disabled') }}</el-tag>
</el-descriptions-item>
<el-descriptions-item :label="$t('auto.version.pollInterval')">
{{ pollInterval }}{{ $t('auto.version.seconds') }}
</el-descriptions-item>
<el-descriptions-item :label="$t('auto.version.releaseTime')">
{{ releaseTime || '-' }}
</el-descriptions-item>
</el-descriptions>
</el-card>
</div>
</template>
<script>
import { getCurrentVersion, releaseVersion } from '@/api/system/version'
export default {
name: 'VersionRelease',
data() {
return {
loading: false,
form: {
version: '',
title: '',
content: ''
},
rules: {
version: [
{ required: true, message: '请输入版本号', trigger: 'blur' }
],
title: [
{ required: true, message: '请输入标题', trigger: 'blur' }
]
},
currentVersion: '',
enabled: false,
pollInterval: 30,
releaseTime: ''
}
},
mounted() {
this.fetchCurrentVersion()
},
methods: {
fetchCurrentVersion() {
getCurrentVersion().then(res => {
this.currentVersion = res.version || '-'
this.enabled = res.enabled
this.pollInterval = res.pollInterval || 30
this.releaseTime = res.releaseTime || ''
})
},
handleRelease() {
this.$refs.form.validate(valid => {
if (!valid) return
this.loading = true
releaseVersion(this.form).then(() => {
this.$message.success('版本更新通知已发布')
this.handleReset()
this.fetchCurrentVersion()
}).catch(() => {
// 错误已在 request 拦截器中处理
}).finally(() => {
this.loading = false
})
})
},
handleReset() {
this.form = {
version: '',
title: '',
content: ''
}
}
}
}
</script>
<style scoped>
.version-container {
padding: 20px;
}
.version-card {
max-width: 800px;
}
.card-header {
font-weight: bold;
}
</style>