Files
effekt-interface-frontend/src/components/CreateData/CreateDataInfo.vue
2026-04-15 18:01:40 +08:00

156 lines
4.7 KiB
Vue

<template>
<div class="create-data-info">
<el-card shadow="never">
<div slot="header" class="clearfix">
<span>{{ pageTitle }}</span>
</div>
<el-form v-loading="loading" ref="form" :model="form" :rules="rules" label-width="120px" size="small">
<el-form-item label="项目名称" prop="project">
<el-select v-model="form.project" placeholder="请选择项目" clearable style="width: 320px;">
<el-option
v-for="item in projectOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="运行环境" prop="runEnv">
<el-select v-model="form.runEnv" placeholder="请输入运行环境" clearable style="width: 320px;">
<el-option
v-for="item in envOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="运行分组" prop="runGroup">
<el-input v-model="form.runGroup" placeholder="请输入运行分组" style="width: 320px;"></el-input>
</el-form-item>
<el-form-item label="sql语句" prop="sql">
<el-input
v-model="form.sql"
type="textarea"
:rows="8"
placeholder="请输入 sql 语句">
</el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
type="textarea"
:rows="4"
placeholder="请输入备注">
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="saving" @click="submitForm">保存</el-button>
<el-button @click="goBack">返回</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import {ItApiCreate, ItApiDetail} from '@/api/CreateDtapi'
export default {
name: 'CreateDataInfo',
data() {
return {
saving: false,
loading: false,
projectOptions: ['ZHYY', 'DLZ', 'JOYHUB', 'OA', 'APP'],
envOptions: ['dev', 'st', 'pre'],
form: {
project: '',
runEnv: '',
sql: '',
remark: '',
sqlId: '',
runGroup: ''
},
rules: {
project: [{required: true, message: '请选择项目名称', trigger: 'change'}],
runEnv: [{required: true, message: '请选择运行环境', trigger: 'change'}],
sql: [{required: true, message: '请输入sql语句', trigger: 'blur'}],
runGroup: [{required: true, message: '请输入运行分组', trigger: 'blur'}]
}
}
},
computed: {
pageTitle() {
return this.form.sqlId ? '修改造数任务' : '新增造数任务'
}
},
methods: {
initForm() {
const query = this.$route.query || {}
this.form = {
project: '',
runEnv: '',
sql: '',
remark: '',
sqlId: query.sqlId || query.id || query.create_data_detail_id || '',
runGroup: ''
}
if (this.form.sqlId) {
this.getDetail()
}
},
getDetail() {
this.loading = true
ItApiDetail({sqlId: this.form.sqlId}).then(res => {
const data = res && res.data ? res.data : {}
this.form = {
...this.form,
project: data.project || '',
runEnv: data.runEnv || data.run_env || '',
sql: data.sql || '',
remark: data.remark || '',
sqlId: data.sqlId || data.sql_id || data.id || data.create_data_detail_id || this.form.sqlId,
runGroup: data.runGroup || data.run_group || ''
}
}).catch(err => {
this.$message({type: 'error', message: (err && err.message) || '详情获取失败'})
}).finally(() => {
this.loading = false
})
},
submitForm() {
this.$refs.form.validate(valid => {
if (!valid) {
return false
}
this.saving = true
ItApiCreate(this.form).then(res => {
if (res && res.success === true) {
this.$message({type: 'success', message: this.form.sqlId ? '修改成功' : '新增成功'})
this.$router.push({path: '/create/data'})
} else {
this.$message({type: 'error', message: res.message || '保存失败'})
}
}).finally(() => {
this.saving = false
})
})
},
goBack() {
this.$router.push({path: '/create/data'})
}
},
created() {
this.initForm()
}
}
</script>
<style scoped>
.create-data-info {
padding: 20px;
}
</style>