This commit is contained in:
2025-09-23 09:10:48 +08:00
parent 3e59b70f7d
commit 9476b8c43c
6 changed files with 86 additions and 90 deletions

BIN
607Vue.zip Normal file

Binary file not shown.

View File

@@ -10,7 +10,7 @@ export function SubmitForm(data){
export function getStatus(){ export function getStatus(){
return request(({ return request(({
url:'/api/faults/dify/document/indexing-status', url:'/api/faults/knowledge-base/indexing-status',
method: 'get' method: 'get'
})) }))
} }

View File

@@ -1,5 +0,0 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>

View File

@@ -1,18 +0,0 @@
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'HomeView',
components: {
HelloWorld
}
}
</script>

View File

@@ -40,8 +40,8 @@
<div class="section-body"> <div class="section-body">
<el-row :gutter="12"> <el-row :gutter="12">
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
<el-form-item label="问题来源" prop="problem_source" required> <el-form-item label="问题来源" prop="issue_source" required>
<el-select v-model="form.problem_source" placeholder="请选择问题来源"> <el-select v-model="form.issue_source" placeholder="请选择问题来源">
<el-option label="内部测试" value="NBCS"/> <el-option label="内部测试" value="NBCS"/>
<el-option label="试飞问题" value="SF"/> <el-option label="试飞问题" value="SF"/>
<el-option label="调试问题" value="TS"/> <el-option label="调试问题" value="TS"/>
@@ -58,8 +58,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
<el-form-item label="型号所属系列" prop="model_series" required> <el-form-item label="型号所属系列" prop="model_subcategory" required>
<el-select v-model="form.model_series" placeholder="请选择型号所属系列"> <el-select v-model="form.model_subcategory" placeholder="请选择型号所属系列">
<el-option label="火控雷达" value="火控雷达"/> <el-option label="火控雷达" value="火控雷达"/>
<el-option label="SAR雷达" value="SAR雷达"/> <el-option label="SAR雷达" value="SAR雷达"/>
<el-option label="气象雷达" value="气象雷达"/> <el-option label="气象雷达" value="气象雷达"/>
@@ -110,8 +110,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
<el-form-item label="所属软件" prop="config_item" required> <el-form-item label="所属软件" prop="software_affiliation" required>
<el-input v-model="form.config_item" placeholder="信号处理软件"/> <el-input v-model="form.software_affiliation" placeholder="信号处理软件"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
@@ -161,8 +161,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
<el-form-item label="问题类别" prop="problem_category" required> <el-form-item label="问题类别" prop="issue_class" required>
<el-select v-model="form.problem_category" placeholder="请选择问题类别"> <el-select v-model="form.issue_class" placeholder="请选择问题类别">
<el-option label="需求" value="需求"/> <el-option label="需求" value="需求"/>
<el-option label="设计" value="设计"/> <el-option label="设计" value="设计"/>
<el-option label="编码" value="编码"/> <el-option label="编码" value="编码"/>
@@ -173,8 +173,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="8"> <el-col :xs="24" :sm="12" :md="8">
<el-form-item label="问题级别" prop="problem_level" required> <el-form-item label="问题级别" prop="issue_level" required>
<el-select v-model="form.problem_level" placeholder="请选择问题级别"> <el-select v-model="form.issue_level" placeholder="请选择问题级别">
<el-option v-for="opt in problemLevelOptions" :key="opt.value" :label="opt.label" :value="opt.value"> <el-option v-for="opt in problemLevelOptions" :key="opt.value" :label="opt.label" :value="opt.value">
<span :class="['severity-dot', opt.value]"></span> <span :class="['severity-dot', opt.value]"></span>
<span>{{ opt.label }}</span> <span>{{ opt.label }}</span>
@@ -183,8 +183,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24"> <el-col :xs="24">
<el-form-item label="问题关键字" prop="problem_keywords" required> <el-form-item label="问题关键字" prop="issue_keyword" required>
<el-input v-model="form.problem_keywords" placeholder="简要清晰描述"/> <el-input v-model="form.issue_keyword" placeholder="简要清晰描述"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -200,43 +200,43 @@
<div class="section-body"> <div class="section-body">
<el-row :gutter="12"> <el-row :gutter="12">
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题描述" prop="problem_description" required> <el-form-item label="问题描述" prop="issue_description" required>
<el-input type="textarea" :rows="5" v-model="form.problem_description" :maxlength="1000" show-word-limit <el-input type="textarea" :rows="5" v-model="form.issue_description" :maxlength="1000" show-word-limit
placeholder="详细准确描述问题现象,勿重复出现已填写过的问题信息,如问题原因,地点等"/> placeholder="详细准确描述问题现象,勿重复出现已填写过的问题信息,如问题原因,地点等"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题复现" prop="problem_reproduction" required> <el-form-item label="问题复现" prop="issue_reproduction">
<el-input type="textarea" :rows="5" v-model="form.problem_reproduction" :maxlength="1000" <el-input type="textarea" :rows="5" v-model="form.issue_reproduction" :maxlength="1000"
show-word-limit placeholder="准确清晰描述复现场景"/> show-word-limit placeholder="准确清晰描述复现场景"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题分析" prop="problem_analysis" required> <el-form-item label="问题分析" prop="issue_analysis" required>
<el-input type="textarea" :rows="5" v-model="form.problem_analysis" :maxlength="1000" show-word-limit <el-input type="textarea" :rows="5" v-model="form.issue_analysis" :maxlength="1000" show-word-limit
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题原因" prop="problem_reason" required> <el-form-item label="问题原因" prop="issue_reason" required>
<el-input type="textarea" :rows="5" v-model="form.problem_reason" :maxlength="1000" show-word-limit <el-input type="textarea" :rows="5" v-model="form.issue_reason" :maxlength="1000" show-word-limit
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题解决措施" prop="problem_solution" required> <el-form-item label="问题解决措施" prop="resolution" required>
<el-input type="textarea" :rows="5" v-model="form.problem_solution" :maxlength="1000" show-word-limit <el-input type="textarea" :rows="5" v-model="form.resolution" :maxlength="1000" show-word-limit
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="问题验证" prop="problem_verification" required> <el-form-item label="问题验证" prop="validation">
<el-input type="textarea" :rows="4" v-model="form.problem_verification" :maxlength="500" show-word-limit <el-input type="textarea" :rows="4" v-model="form.validation" :maxlength="500" show-word-limit
placeholder="验证过程,问题是否消除"/> placeholder="验证过程,问题是否消除"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12"> <el-col :xs="24" :sm="12">
<el-form-item label="举一反三情况" prop="lesson_learned"> <el-form-item label="问题经验" prop="lesson_learned" required>
<el-input v-model="form.lesson_learned" /> <el-input v-model="form.lesson_learned" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -263,6 +263,9 @@ import {getStatus, SubmitForm} from "@/api/api";
export default { export default {
name: 'faultSystem', name: 'faultSystem',
mounted() {
document.title = '雷达软件问题提交系统';
},
data() { data() {
return { return {
submitting: false, submitting: false,
@@ -274,37 +277,40 @@ export default {
], ],
form: { form: {
// 基本信息 // 基本信息
problem_source: null, issue_source: null,
model_code: null, model_code: null,
model_series: null, model_subcategory: null,
antenna_type: null, antenna_type: null,
location: null, location: null,
hardware_env: null, hardware_env: null,
software_env: null, software_env: null,
phase: null, phase: null,
config_item: null, software_affiliation: null,
software_version: null, software_version: null,
work_status: null, work_status: null,
problem_keywords: null, issue_keyword: null,
problem_description: null, issue_description: null,
problem_reproduction: null, issue_reproduction: null,
problem_analysis: null, issue_analysis: null,
problem_reason: null, issue_reason: null,
problem_category: null, issue_class: null,
problem_level: null, issue_level: null,
problem_solution: null, resolution: null,
problem_verification: null, validation: null,
lesson_learned: null, lesson_learned: null,
inspector: null inspector: null
}, },
rules: { rules: {
problem_source: [ lesson_learned: [
{required: true, message: '请输入问题经验', trigger: 'blur'}
],
issue_source: [
{required: true, message: '请选择问题来源', trigger: 'change'} {required: true, message: '请选择问题来源', trigger: 'change'}
], ],
model_code: [ model_code: [
{required: true, message: '请输入型号代号', trigger: 'blur'} {required: true, message: '请输入型号代号', trigger: 'blur'}
], ],
model_series: [ model_subcategory: [
{required: true, message: '请选择型号所属系列', trigger: 'change'} {required: true, message: '请选择型号所属系列', trigger: 'change'}
], ],
antenna_type: [ antenna_type: [
@@ -313,7 +319,7 @@ export default {
phase: [ phase: [
{required: true, message: '请选择阶段', trigger: 'change'} {required: true, message: '请选择阶段', trigger: 'change'}
], ],
config_item: [ software_affiliation: [
{required: true, message: '请输入配置项', trigger: 'blur'} {required: true, message: '请输入配置项', trigger: 'blur'}
], ],
software_version: [ software_version: [
@@ -322,33 +328,33 @@ export default {
work_status: [ work_status: [
{required: true, message: '请输入工作状态', trigger: 'blur'} {required: true, message: '请输入工作状态', trigger: 'blur'}
], ],
problem_keywords: [ issue_keyword: [
{required: true, message: '请输入问题关键字', trigger: 'blur'} {required: true, message: '请输入问题关键字', trigger: 'blur'}
], ],
problem_description: [ issue_description: [
{required: true, message: '请填写问题描述', trigger: 'blur'} {required: true, message: '请填写问题描述', trigger: 'blur'}
], ],
problem_level: [ issue_level: [
{required: true, message: '请选择问题级别', trigger: 'change'} {required: true, message: '请选择问题级别', trigger: 'change'}
], ],
problem_category: [ issue_class: [
{required: true, message: '请选择问题类别', trigger: 'change'} {required: true, message: '请选择问题类别', trigger: 'change'}
], ],
problem_reproduction: [ // issue_reproduction: [
{required: true, message: '请填写问题复现', trigger: 'blur'} // {required: true, message: '请填写问题复现', trigger: 'blur'}
], // ],
problem_analysis: [ issue_analysis: [
{required: true, message: '请填写问题分析', trigger: 'blur'} {required: true, message: '请填写问题分析', trigger: 'blur'}
], ],
problem_reason: [ issue_reason: [
{required: true, message: '请填写问题原因', trigger: 'blur'} {required: true, message: '请填写问题原因', trigger: 'blur'}
], ],
problem_solution: [ resolution: [
{required: true, message: '请填写问题解决措施', trigger: 'blur'} {required: true, message: '请填写问题解决措施', trigger: 'blur'}
], ],
problem_verification: [ // validation: [
{required: true, message: '请填写问题验证', trigger: 'blur'} // {required: true, message: '请填写问题验证', trigger: 'blur'}
], // ],
inspector: [ inspector: [
{required: true, message: '请输入排查人', trigger: 'blur'} {required: true, message: '请输入排查人', trigger: 'blur'}
] ]
@@ -357,22 +363,35 @@ export default {
}, },
methods: { methods: {
onSubmit() { onSubmit() {
this.$refs.formRef.validate(async valid => { this.$refs.formRef.validate(async (valid, invalidFields) => {
if (!valid) { if (!valid) {
this.$message.warning('请先完善必填项'); const firstKey = invalidFields && Object.keys(invalidFields)[0]
return; const firstMsg = firstKey && invalidFields[firstKey] && invalidFields[firstKey][0] && invalidFields[firstKey][0].message
this.$message.warning(firstMsg || '请先完善必填项')
return
} }
// console.log(this.form); this.submitting = true
try { try {
getStatus().then(res=>{ const statusRes = await getStatus()
if(res.data.status === 'completed'){ if (statusRes && statusRes.data && statusRes.data.indexing_status === 'completed') {
SubmitForm(this.form); try {
this.$message.success('提交成功'); await SubmitForm(this.form)
this.onReset(); this.$message.success('提交成功')
}else{ this.onReset()
this.$message.error('提交失败,请稍后再试'); } catch (err) {
const msg = (err && err.response && (err.response.data && (err.response.data.message || err.response.data.msg)))
|| (err && err.message)
|| '提交失败,请稍后再试'
this.$message.error(msg)
} }
}) } else {
this.$message.error('提交失败,请稍后再试')
}
} catch (err) {
const msg = (err && err.response && (err.response.data && (err.response.data.message || err.response.data.msg)))
|| (err && err.message)
|| '网络异常,请稍后再试'
this.$message.error(msg)
} finally { } finally {
this.submitting = false this.submitting = false
} }

View File

@@ -6,7 +6,7 @@ module.exports = {
open:true,//启动时自动打开浏览器 open:true,//启动时自动打开浏览器
proxy:{//配置代理解决跨域问题 proxy:{//配置代理解决跨域问题
[process.env.VUE_APP_BASE_API]:{//环境变量定义代理路径前缀 [process.env.VUE_APP_BASE_API]:{//环境变量定义代理路径前缀
target: 'http://192.168.0.10:8000',//后端项目真实地址 target: 'http://192.168.0.100:8000',//后端项目真实地址
changeOrigin:true,//开启origin伪装,绕过跨域限制 changeOrigin:true,//开启origin伪装,绕过跨域限制
pathRewrite: {//路径重写规则 pathRewrite: {//路径重写规则
['^' + process.env.VUE_APP_BASE_API]: ''//去除请求路径中的代理前缀 ['^' + process.env.VUE_APP_BASE_API]: ''//去除请求路径中的代理前缀