- 新增 dao.Now() 函数获取数据库毫秒精度时间,避免多实例时钟偏差 - 增量同步查询增加上界(updated_at <= upperBound)防止竞态条件 - 配置创建、更新、删除、回滚统一使用数据库时间替代 time.Now() - 配置历史新增 operate 字段记录操作类型(update/delete/rollback) - 删除配置和回滚操作前增加历史快照记录 - 新增 DeleteHistory 接口支持手动删除单条历史记录 - 移除 GetHistory 的 Limit(5) 限制,返回完整历史列表 - 删除应用时同步更新关联配置的 updated_at 以便增量同步识别 - version 字段改为必填,前后端同步增加校验规则 - 前端历史列表增加操作类型列、删除按钮及表格最大高度限制 - 数据库表结构 datetime 升级为 datetime(3) 支持毫秒精度
69 lines
1.9 KiB
Vue
69 lines
1.9 KiB
Vue
<template>
|
|
<el-card>
|
|
<div slot="header">编辑配置</div>
|
|
<el-form :model="form" :rules="rules" ref="form" label-width="100px" v-loading="loading">
|
|
<el-form-item label="配置名称">
|
|
<el-input v-model="form.name" disabled></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="环境">
|
|
<el-input v-model="form.env" disabled></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="所属应用">
|
|
<el-input :value="form.appNames" disabled></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="版本" prop="version">
|
|
<el-input v-model="form.version"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="配置内容">
|
|
<el-input v-model="form.contents" type="textarea" :rows="20"></el-input>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" @click="handleSubmit">保存</el-button>
|
|
<el-button @click="$router.back()">取消</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-card>
|
|
</template>
|
|
|
|
<script>
|
|
import { getConfig, updateConfig } from '../../api/config'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
form: {},
|
|
rules: {
|
|
version: [{ required: true, message: '请输入版本', trigger: 'blur' }]
|
|
},
|
|
loading: false
|
|
}
|
|
},
|
|
created() {
|
|
this.loadConfig()
|
|
},
|
|
methods: {
|
|
async loadConfig() {
|
|
this.loading = true
|
|
try {
|
|
const res = await getConfig(this.$route.params.id)
|
|
this.form = res.data
|
|
} finally {
|
|
this.loading = false
|
|
}
|
|
},
|
|
async handleSubmit() {
|
|
try {
|
|
await this.$refs.form.validate()
|
|
await updateConfig(this.form)
|
|
this.$message.success('保存成功')
|
|
if (this.form.appId) {
|
|
this.$router.push(`/app/${this.form.appId}/config/list`)
|
|
} else {
|
|
this.$router.push('/app/list')
|
|
}
|
|
} catch (e) {}
|
|
}
|
|
}
|
|
}
|
|
</script>
|