|
@@ -8,56 +8,38 @@
|
|
|
<el-form-item v-if="!releaseType" label="报告名称" prop="reportName" :rules="[{ required: true, message: '模版名称不能为空', trigger: 'change'}]"><br>
|
|
|
<el-input v-model="from.reportName" size="small" style="width:100%;" placeholder="请输入模版名称(不可与现有模版重名)" />
|
|
|
</el-form-item>
|
|
|
- <div class="backStyle">模版内容</div>
|
|
|
+
|
|
|
+ <div class="backStyle">{{ !releaseType ? '报告模版' : '模版内容' }}</div>
|
|
|
|
|
|
<el-row class="from-margin">
|
|
|
<el-col :span="24">
|
|
|
- <span class="from-names">测试结果: </span>
|
|
|
+ <span class="from-name">测试结果: </span>
|
|
|
<span class="from-value">通过</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
+
|
|
|
<el-row class="from-margin">
|
|
|
<el-col :span="12" class="Layout_space_between">
|
|
|
<span class="from-name">计划准出时间: </span>
|
|
|
- <el-date-picker
|
|
|
- v-model="from.releasePlanTime"
|
|
|
- :disabled="releaseType"
|
|
|
- type="date"
|
|
|
- placeholder="选择日期时间"
|
|
|
- format="yyyy-MM-dd"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- style="width: 100%;"
|
|
|
- size="small"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="from.releasePlanTime" :disabled="releaseType" type="date" placeholder="选择日期时间" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: 100%;" size="small" />
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <span class="from-namev"> 实际准出时间:{{ from.releaseActualTime }}</span>
|
|
|
+ <span class="from-namer"> 实际准出时间:{{ from.releaseActualTime }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="from-margin">
|
|
|
+ <el-row v-if="from.isDelay === 1 || from.releasePlanTime > from.releaseActualTime" style="margin: 20px 0">
|
|
|
<!-- 准出是否延期 1 延期,0未延期 -->
|
|
|
- <el-col v-if="from.isDelay === 1 || from.releasePlanTime > from.releaseActualTime" :span="24" class="Layout_space_between">
|
|
|
+ <el-col :span="24" class="Layout_space_between">
|
|
|
<span class="from-namea"><span v-if="!releaseType" style="color:red;">*</span>准出延期原因 : </span>
|
|
|
<el-input v-model="from.delayReason" size="small" :disabled="releaseType" placeholder="请输入准出原因" style="width: 100%;" />
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- {{ from.devPlanTimeStart[1] }}
|
|
|
+
|
|
|
<el-row class="from-margin">
|
|
|
<el-col :span="12" class="Layout_space_between">
|
|
|
<span class="from-name">计划开发周期: </span>
|
|
|
- <el-date-picker
|
|
|
- v-model="from.devPlanTimeStart"
|
|
|
- type="daterange"
|
|
|
- size="small"
|
|
|
- :disabled="releaseType"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- format="yyyy-MM-dd"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- style="width: -webkit-fill-available;"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="from.devPlanTimeStart" type="daterange" size="small" :disabled="releaseType" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: -webkit-fill-available;" />
|
|
|
</el-col>
|
|
|
<el-col :span="12" class="Layout_space_between">
|
|
|
<span class="from-namer"> 实际开发周期:</span>
|
|
@@ -86,7 +68,7 @@
|
|
|
<searchTeam :value.sync="from.tester" :clearable="true" :multiple="true" :disabled="releaseType" :size="'small'" style="width: 100%;" />
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <normal-area id="report-template" :value.sync="content" :height="500" />
|
|
|
+ <normal-area id="report-template" :value.sync="fromData.content" :height="500" />
|
|
|
</el-form>
|
|
|
<div class="backStyle">缺陷统计</div>
|
|
|
<iconDisplay :task-ids="taskId" />
|
|
@@ -97,8 +79,9 @@
|
|
|
import '@/styles/PublicStyle/index.scss' // 公共css
|
|
|
import searchTeam from '@/components/select/searchTeam' // 人员搜索
|
|
|
import normalArea from '@/components/input/normalArea' // 富文本
|
|
|
+import 'tinymce/plugins/table'// 插入表格插件
|
|
|
import iconDisplay from '@/views/reportManagement/ReleaseReport/components/iconDisplay.vue'
|
|
|
-import { settingAddReportModule, settingUpdateReportModule, settingGetReportModuleById, reportreleaseInitReportRelease, reportreleaseCreate, reportreleaseUpdate } from '@/api/reportTemplate' // 模版添删改查
|
|
|
+import { settingAddReportModule, settingUpdateReportModule, settingGetReportModuleById, reportreleaseInitReportRelease, reportreleaseCreate, reportreleaseUpdate, reportreleaseGetReportById } from '@/api/reportTemplate' // 模版添删改查
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
@@ -113,62 +96,34 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
tpltId: '', // 模版id
|
|
|
+ reportId: '', // 报告id
|
|
|
taskId: [], // 创建准出的任务
|
|
|
content: {}, // from
|
|
|
- from: { }, // from-date
|
|
|
+ from: {}, // from-date
|
|
|
+ fromData: {},
|
|
|
releaseType: false // 新建模版还是新建准出报告
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
templateId: {
|
|
|
handler(newV) {
|
|
|
- console.log(newV, '数据')
|
|
|
- newV === '新建模版' ? this.releaseType = true : this.releaseType = false
|
|
|
- if (newV !== '新建模版') {
|
|
|
+ if (newV === '新建模版') {
|
|
|
+ this.releaseType = true
|
|
|
+ } else {
|
|
|
if (newV.id) {
|
|
|
- this.from = newV
|
|
|
- this.content = newV.content
|
|
|
+ this.reportId = newV.id
|
|
|
+ this.reportreleaseGetReportById(newV.id)
|
|
|
} else {
|
|
|
- this.tpltId = newV
|
|
|
- if (newV !== 1 && newV !== 2) {
|
|
|
- this.tpltId ? this.settingGetReportModuleById(newV) : ''
|
|
|
- }
|
|
|
- if (newV === 1) {
|
|
|
- this.content = `
|
|
|
- <p>背景</p><br>
|
|
|
- <div>测试内容</div>
|
|
|
- <p>功能测试</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>页面</th><th>模块</th><th>接口</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>兼容性测试-机型兼容</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>机型</th><th>操作系统</th><th>分辨率</th><th>测试结果</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>兼容性测试-网络兼容</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>网络类型</th><th>测试结果</th></tr></thead><tbody><tr><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>产品验收</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>验收项</th><th>验收点</th><th>验收人</th><th>验收结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- `
|
|
|
- }
|
|
|
- if (newV === 2) {
|
|
|
- this.content = `
|
|
|
- <p>背景</p><br>
|
|
|
- <div>测试内容</div>
|
|
|
- <p>功能测试</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="20%"><col width="20%"><col width="20%"><col width="20%"></colgroup><thead><tr><th>页面</th><th>模块</th><th>接口</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>可靠性测试</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>稳定性测试</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- <p>安全性测试</p>
|
|
|
- <table border="1" style="border: 1px solid #DEE2E7" width="100%"><colgroup><col width="8%"><col width="8%"><col width="8%"><col width="8%"></colgroup><thead><tr><th>子类</th><th>描述</th><th>测试结果</th><th>备注</th></tr></thead><tbody><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>
|
|
|
- `
|
|
|
- }
|
|
|
+ this.tpsltId = newV
|
|
|
+ this.settingGetReportModuleById(newV)
|
|
|
}
|
|
|
+ this.releaseType = false
|
|
|
}
|
|
|
},
|
|
|
immediate: true
|
|
|
},
|
|
|
taskIds: {
|
|
|
handler(newV) {
|
|
|
- console.log(newV, '关联任务')
|
|
|
if (newV) {
|
|
|
this.taskId = newV
|
|
|
this.reportreleaseInitReportRelease()
|
|
@@ -178,6 +133,42 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ async reportreleaseGetReportById(val) { // 获取准出报告数据
|
|
|
+ const res = await reportreleaseGetReportById(val)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.taskId = res.data.taskIds
|
|
|
+ })
|
|
|
+ const from = res.data
|
|
|
+ this.$set(this.from, 'reportName', from.reportName) // 报告名称
|
|
|
+ this.$set(this.from, 'releasePlanTime', from.releasePlanTime) // 计划准出时间
|
|
|
+ this.$set(this.from, 'releaseActualTime', from.releaseActualTime) // 实际准出时间
|
|
|
+ this.$set(this.from, 'isDelay', from.isDelay) // 准出是否延期 1 延期,0未延期
|
|
|
+ this.$set(this.from, 'delayReason', from.delayReason) // 是否延期
|
|
|
+ this.$set(this.from, 'content', from.content) // 富文本
|
|
|
+ this.$set(this.from, 'delayReason', from.delayReason) // 延期原因
|
|
|
+ this.fromData.content = from.content // 富文本
|
|
|
+ if (from.devPlanTimeStart) {
|
|
|
+ this.$set(this.from, 'devPlanTimeStart', [from.devPlanTimeStart, from.devPlanTimeEnd]) // 计划开发开始时间-计划开发结束时间
|
|
|
+ }
|
|
|
+ if (from.devActualTimeStart) {
|
|
|
+ this.$set(this.from, 'devActualTimeStart', [from.devActualTimeStart, from.devActualTimeEnd]) // 实际开发开始时间-实际开发结束时间
|
|
|
+ }
|
|
|
+ if (from.testPlanTimeStart) {
|
|
|
+ this.$set(this.from, 'testPlanTimeStart', [from.testPlanTimeStart, from.testPlanTimeEnd]) // 计划测试开始时间-计划测试结束时间
|
|
|
+ }
|
|
|
+ if (from.testActualTimeStart) {
|
|
|
+ this.$set(this.from, 'testActualTimeStart', [from.testActualTimeStart, from.testActualTimeEnd]) // 实际测试开始时间-实际测试结束时间
|
|
|
+ }
|
|
|
+ this.from.taskIds = from.taskId // 关联任务
|
|
|
+ this.from.bizId = from.bizId // 业务线
|
|
|
+ this.from.moduleId = from.moduleId // 模块id
|
|
|
+ this.from.developer = from.developer ? from.developer.split() : null // 开发人员
|
|
|
+ this.from.tester = from.tester ? from.tester.split() : null // 测试人员
|
|
|
+ console.log(this.from, 'bianji')
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
async reportreleaseInitReportRelease() { // 获取表单数据
|
|
|
const res = await reportreleaseInitReportRelease({ taskIds: this.taskId })
|
|
|
if (res.code === 200) {
|
|
@@ -188,7 +179,8 @@ export default {
|
|
|
async settingGetReportModuleById(val) { // 获取富文本内容
|
|
|
const res = await settingGetReportModuleById(val)
|
|
|
if (res.code === 200) {
|
|
|
- this.content = res.data.content
|
|
|
+ this.fromData = res.data
|
|
|
+ console.log(res.data)
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -196,33 +188,42 @@ export default {
|
|
|
reportreleaseCreate(val) {
|
|
|
this.$refs.fromCreateData.validate((valid) => {
|
|
|
if (valid) {
|
|
|
- console.log(this.from, 'cdfcfd')
|
|
|
if (val) {
|
|
|
- const data = this.from
|
|
|
- data.id = this.from.id
|
|
|
-
|
|
|
+ const data = {}
|
|
|
+ data.id = this.reportId
|
|
|
+ data.reportName = this.from.reportName // 报告名称
|
|
|
data.releasePlanTime = this.from.releasePlanTime // 计划准出时间
|
|
|
-
|
|
|
data.releaseActualTime = this.from.releaseActualTime // 实际准出时间
|
|
|
-
|
|
|
- data.isDelay = this.from.isDelay // 准出是否延期 1 延期,0未延期
|
|
|
-
|
|
|
- data.delayReason = this.from.delayReason // 是否延期
|
|
|
-
|
|
|
- data.devPlanTimeStart = this.from.devPlanTimeStart[0] // 计划开发开始时间
|
|
|
- data.devPlanTimeEnd = this.from.devPlanTimeStart[1] // 计划开发结束时间
|
|
|
-
|
|
|
- data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
|
|
|
- data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
|
|
|
-
|
|
|
- data.testPlanTimeStart = this.from.testPlanTimeStart // 计划测试开始时间
|
|
|
- data.testPlanTimeEnd = this.from.testPlanTimeStart // 计划测试结束时间
|
|
|
-
|
|
|
- data.testActualTimeStart = this.from.testActualTimeStart[0] // 实际测试开始时间
|
|
|
- data.testActualTimeEnd = this.from.testActualTimeStart[1] // 实际测试结束时间
|
|
|
-
|
|
|
+ if (this.from.releasePlanTime > this.from.releaseActualTime) {
|
|
|
+ data.isDelay = 1// 准出是否延期 1 延期,0未延期
|
|
|
+ data.delayReason = this.from.delayReason // 是否延期
|
|
|
+ } else {
|
|
|
+ data.isDelay = 0
|
|
|
+ }
|
|
|
+ if (this.from.devPlanTimeStart) {
|
|
|
+ data.devPlanTimeStart = this.from.devPlanTimeStart[0] // 计划开发开始时间
|
|
|
+ data.devPlanTimeEnd = this.from.devPlanTimeStart[1] // 计划开发结束时间
|
|
|
+ }
|
|
|
+ if (this.from.devActualTimeStart) {
|
|
|
+ data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
|
|
|
+ data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
|
|
|
+ }
|
|
|
+ if (this.from.testPlanTimeStart) {
|
|
|
+ data.testPlanTimeStart = this.from.testPlanTimeStart[0] // 计划测试开始时间
|
|
|
+ data.testPlanTimeEnd = this.from.testPlanTimeStart[1] // 计划测试结束时间
|
|
|
+ }
|
|
|
+ if (this.from.testActualTimeStart) {
|
|
|
+ data.testActualTimeStart = this.from.testActualTimeStart[0] // 实际测试开始时间
|
|
|
+ data.testActualTimeEnd = this.from.testActualTimeStart[1] // 实际测试结束时间
|
|
|
+ }
|
|
|
+ data.testResult = 1 // 测试结果 状态 1通过 2未通过
|
|
|
+ data.taskIds = this.taskId // 关联任务
|
|
|
+ data.bizId = this.from.bizId // 业务线
|
|
|
+ data.moduleId = this.from.moduleId // 模块id
|
|
|
+ data.content = this.fromData.content // 富文本
|
|
|
data.developer = this.from.developer ? this.from.developer.toString() : null // 开发人员
|
|
|
data.tester = this.from.tester ? this.from.tester.toString() : null // 测试人员
|
|
|
+ console.log(data, '更新')
|
|
|
reportreleaseUpdate(data).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
this.$emit('SaveNextStep', res.data)
|
|
@@ -230,39 +231,36 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
|
- const data = this.from
|
|
|
-
|
|
|
+ const data = {}
|
|
|
+ data.reportName = this.from.reportName // 报告名称
|
|
|
data.releasePlanTime = this.from.releasePlanTime // 计划准出时间
|
|
|
-
|
|
|
data.releaseActualTime = this.from.releaseActualTime // 实际准出时间
|
|
|
-
|
|
|
if (this.from.releasePlanTime > this.from.releaseActualTime) {
|
|
|
data.isDelay = 1// 准出是否延期 1 延期,0未延期
|
|
|
data.delayReason = this.from.delayReason // 是否延期
|
|
|
} else {
|
|
|
data.isDelay = 0
|
|
|
}
|
|
|
-
|
|
|
if (this.from.devPlanTimeStart) {
|
|
|
data.devPlanTimeStart = this.from.devPlanTimeStart[0] // 计划开发开始时间
|
|
|
data.devPlanTimeEnd = this.from.devPlanTimeStart[1] // 计划开发结束时间
|
|
|
}
|
|
|
-
|
|
|
- // data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
|
|
|
- // data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
|
|
|
-
|
|
|
- // data.testPlanTimeStart = this.from.testPlanTimeStart // 计划测试开始时间
|
|
|
- // data.testPlanTimeEnd = this.from.testPlanTimeStart // 计划测试结束时间
|
|
|
-
|
|
|
- // data.testActualTimeStart = this.from.testActualTimeStart[0] // 实际测试开始时间
|
|
|
- // data.testActualTimeEnd = this.from.testActualTimeStart[1] // 实际测试结束时间
|
|
|
-
|
|
|
+ if (this.from.devActualTimeStart) {
|
|
|
+ data.devActualTimeStart = this.from.devActualTimeStart[0] // 实际开发开始时间
|
|
|
+ data.devActualTimeEnd = this.from.devActualTimeStart[1] // 实际开发结束时间
|
|
|
+ }
|
|
|
+ if (this.from.testPlanTimeStart) {
|
|
|
+ data.testPlanTimeStart = this.from.testPlanTimeStart[0] // 计划测试开始时间
|
|
|
+ data.testPlanTimeEnd = this.from.testPlanTimeStart[1] // 计划测试结束时间
|
|
|
+ }
|
|
|
+ if (this.from.testActualTimeStart) {
|
|
|
+ data.testActualTimeStart = this.from.testActualTimeStart[0] // 实际测试开始时间
|
|
|
+ data.testActualTimeEnd = this.from.testActualTimeStart[1] // 实际测试结束时间
|
|
|
+ }
|
|
|
data.taskIds = this.taskId // 关联任务
|
|
|
-
|
|
|
data.bizId = localStorage.getItem('bizId') // 业务线
|
|
|
-
|
|
|
- data.moduleId = this.tpltId // 模块id
|
|
|
-
|
|
|
+ data.moduleId = this.fromData.id // 模块id
|
|
|
+ data.content = this.fromData.content // 富文本
|
|
|
data.developer = this.from.developer ? this.from.developer.toString() : null // 开发人员
|
|
|
data.tester = this.from.tester ? this.from.tester.toString() : null // 测试人员
|
|
|
reportreleaseCreate(data).then(res => {
|
|
@@ -311,7 +309,7 @@ export default {
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.backStyle {
|
|
|
- font-size:16px;
|
|
|
+ font-size:14px;
|
|
|
font-family:MicrosoftYaHei;
|
|
|
line-height:19px;
|
|
|
color:rgba(51,51,51,1);
|
|
@@ -330,19 +328,12 @@ export default {
|
|
|
.from-name {
|
|
|
width: 140px !important;
|
|
|
}
|
|
|
- .from-names {
|
|
|
- width: 100px !important;
|
|
|
- }
|
|
|
.from-namea {
|
|
|
width: 119px !important;
|
|
|
}
|
|
|
.from-namer {
|
|
|
- width: 140px !important;
|
|
|
- margin-left:10px;
|
|
|
- }
|
|
|
- .from-namev {
|
|
|
+ width: 150px !important;
|
|
|
margin-left:10px;
|
|
|
- vertical-align: sub;
|
|
|
}
|
|
|
.from-value {
|
|
|
margin-left: 30px;
|