Commit 3c61b7b4 authored by jiaxu.yan's avatar jiaxu.yan

feat: 增加开始任务选择场景

parent 7b7f99a0
...@@ -217,6 +217,8 @@ export function geTaskCase(data) { ...@@ -217,6 +217,8 @@ export function geTaskCase(data) {
data data
}) })
} }
/** /**
*提交确认表单 *提交确认表单
*/ */
...@@ -229,4 +231,28 @@ export function taskImageSubmit(data) { ...@@ -229,4 +231,28 @@ export function taskImageSubmit(data) {
} }
/**
* 获取试验场景
* @param {*} data
* @returns
*/
export function getScenarioList(data) {
return request({
url: '/system/scenario/getScenarioList',
method: 'post',
data
})
}
/**
* 获取试验场景下的测试用例
* @param {*} data
* @returns
*/
export function getCaseByScenario(data) {
return request({
url: '/system/testCase/getCaseByScenario',
method: 'post',
data
})
}
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<el-table-column label="测试方法" align="left" sortable prop="testType" /> <el-table-column label="测试方法" align="left" sortable prop="testType" />
<el-table-column label="用例编号" align="left" prop="usecaseNo" /> <el-table-column label="用例编号" align="left" prop="usecaseNo" />
<el-table-column label="用例名称" align="left" prop="name" /> <el-table-column label="用例名称" align="left" prop="name" />
<el-table-column label="工具" align="left" prop="tools" /> <!-- <el-table-column label="工具" align="left" prop="tools" /> -->
<el-table-column label="对应输入" align="left" prop="input"> <el-table-column label="对应输入" align="left" prop="input">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.input || '--' }}</span> <span>{{ scope.row.input || '--' }}</span>
......
...@@ -233,42 +233,6 @@ ...@@ -233,42 +233,6 @@
</collapse-item> </collapse-item>
</collapse> </collapse>
</div> </div>
<!--确定车型试验范围-->
<div
v-if="model.testScenarioList && model.testScenarioList.length > 0"
class="form-review-questionnaire"
>
<div class="title-display">
<span class="title-i"></span>
<span class="title-content">确定车型试验范围</span>
</div>
<div class="img-item">
<div class="img-label" style="margin-top: 20px">
选择测试场景
<footer-button
style="width: 80px; height: 25px"
type="primary"
@click="selectAll"
>
全部选择
</footer-button>
</div>
</div>
<!-- 测试场景 -->
<div class="test-scenario-container">
<div
v-for="(item, index) in model.testScenarioList"
:key="index"
:class="{
'test-scenario': item.check === false,
'check-test-scenario': item.check === true
}"
@click="handleTestScenario(item)"
>
<div>{{ item.label }}</div>
</div>
</div>
</div>
<!--签字确认--> <!--签字确认-->
<div class="form-signature-confirmation"> <div class="form-signature-confirmation">
<div class="title-display"> <div class="title-display">
...@@ -346,8 +310,7 @@ export default { ...@@ -346,8 +310,7 @@ export default {
model: { model: {
carReviewTask: {}, carReviewTask: {},
reviewSceneChangeTasks: {}, reviewSceneChangeTasks: {},
detailsList: [], detailsList: []
testScenarioList: []
}, },
selectedScenario: [], selectedScenario: [],
columns: [], columns: [],
...@@ -408,19 +371,6 @@ export default { ...@@ -408,19 +371,6 @@ export default {
? process.env.VUE_APP_IMAGE_API + imgs[1] ? process.env.VUE_APP_IMAGE_API + imgs[1]
: '' : ''
} }
if (
this.model.testScenarioList &&
this.model.testScenarioList.length > 0
) {
this.model.testScenarioList = this.model.testScenarioList.map(
({ id, testScenario, ...rest }) => ({
label: testScenario,
value: parseInt(id),
check: false,
...rest
})
)
}
} else { } else {
this.$modal.msgError(res.msg) this.$modal.msgError(res.msg)
} }
...@@ -454,15 +404,6 @@ export default { ...@@ -454,15 +404,6 @@ export default {
], ],
taskId: this.taskId taskId: this.taskId
} }
formData.testScenarioList = this.selectedScenario
if (
this.model.testScenarioList &&
this.model.testScenarioList.length > 0 &&
this.selectedScenario.length === 0
) {
this.$message.error('请至少选择一个场景!')
return
}
carTaskSubmit(formData).then(res => { carTaskSubmit(formData).then(res => {
if (res.code === 200) { if (res.code === 200) {
this.$modal.msgSuccess('确认提交成功') this.$modal.msgSuccess('确认提交成功')
...@@ -493,14 +434,6 @@ export default { ...@@ -493,14 +434,6 @@ export default {
}, },
closeAll() { closeAll() {
this.activeNames = [] this.activeNames = []
}, // 全选
selectAll() {
this.model.testScenarioList.forEach(obj => {
obj.check = true
})
this.selectedScenario = this.model.testScenarioList.map(obj => {
return obj.value
})
} }
} }
} }
......
<template> <template>
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogManger.dialogVisible"
title="移交任务" title="选择测试场景"
width="1200" width="80%"
append-to-body append-to-body
destroy-on-close destroy-on-close
:close-on-click-modal="false" :close-on-click-modal="false"
:before-close="handleClose" :before-close="handleClose"
> >
<el-form ref="form" :model="model" :rules="rules"> <el-form v-loading="loading">
<el-form-item label="接受人员" prop="people"> <el-row :gutter="20">
<el-cascader v-model="model.people" :options="options"></el-cascader> <el-col :span="24">
</el-form-item> <el-form-item label="请选择测试场景(可多选)" prop="testScenarioList">
<el-form-item label="是否继续关注" prop="isContinue"> <footer-button
<el-radio-group v-model="model.isContinue"> style="width: 80px; height: 25px"
<el-radio :label="3"></el-radio> type="primary"
<el-radio :label="6"></el-radio> @click="selectAll"
</el-radio-group> >
</el-form-item> 全部选择
</footer-button>
<div class="test-scenario-container">
<div
v-for="(item, index) in testScenarioList"
:key="index"
:class="{
'test-scenario': item.check === false,
'check-test-scenario': item.check === true
}"
@click="handleTestScenario(item)"
>
<div>{{ item.label }}</div>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<div slot="footer"> <div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button> <el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleClose()"> 保存 </el-button> <el-button type="primary" @click="handleSubmit()"> 开始 </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import {
getCaseByScenario,
getScenarioList,
reviewTaskStart
} from '@/api/task/task'
import { FastTestProject } from '@/api/graphql/client.graphql'
export default { export default {
props: { props: {
dialogVisible: { dialogManger: {
default: false, default: () => {
type: Boolean return {
dialogVisible: false,
item: null
}
},
type: Object
} }
}, },
data() { data() {
return { return {
options: [ model: {
{ scenarioNameList: []
value: '总裁办', },
label: '总裁办', loading: false,
children: [ testScenarioList: []
{ }
value: '张小刚', },
label: '张小刚' watch: {
}, 'dialogManger.dialogVisible'(newValue) {
{ if (newValue) {
value: '李晓红', this.getScenario()
label: '李晓红' this.model = {
}, scenarioNameList: []
{
value: '王小明',
label: '王小明'
},
{
value: '周小伟',
label: '周小伟'
}
]
},
{
value: '技术部',
label: '技术部'
},
{
value: '销售部',
label: '销售部'
} }
],
model: {},
rules: {
people: [
{ required: true, message: '请选择接收人员', trigger: 'change' }
],
isContinue: [
{ required: true, message: '请选择是否关注', trigger: 'change' }
]
} }
} }
}, },
...@@ -82,6 +84,89 @@ export default { ...@@ -82,6 +84,89 @@ export default {
methods: { methods: {
handleClose() { handleClose() {
this.$emit('close', '123') this.$emit('close', '123')
},
async handleSubmit() {
this.loading = true
const params = {
id: this.dialogManger.item.id
}
const res = await getCaseByScenario(this.model)
if (res.code === 200) {
const resp = await this.newFileTest({
name: this.dialogManger.item.taskName,
caseIdList: res.data
})
params.testSchemeId = resp.data.projectMutation.project.id
this.startTaskModel(params)
}
},
/**
* 开始
* @param {*} params
*/
async startTaskModel(params) {
const res = await reviewTaskStart(params)
if (res.code === 200) {
this.$message.success('操作成功')
this.$emit('submit')
this.loading = false
} else {
if (res.msg) {
this.$message.error(res.msg)
this.loading = false
}
}
},
/**
* 对接车联网新建测试项目
*/
async newFileTest(task) {
const res = await this.$apollo.mutate({
// fetchPolicy: 'no-cache',
mutation: FastTestProject,
variables: {
name: task.name,
lawId: 'law_items;106',
principalUserId: 'user_items;2',
systemId: 'system;1',
caseIdList: task.caseIdList,
fileList: ['file_management_items;2']
}
})
return res
},
getScenario() {
getScenarioList({}).then(res => {
console.log(res)
this.testScenarioList = res.data.map((i, k) => {
return {
label: i,
value: k,
check: false
}
})
})
},
handleTestScenario(item) {
if (this.model.scenarioNameList.includes(item.name)) {
this.model.scenarioNameList.splice(
this.model.scenarioNameList.indexOf(item.name),
1
)
item.check = false
} else {
item.check = true
this.model.scenarioNameList.push(item.name)
}
},
// 全选
selectAll() {
this.testScenarioList.forEach(obj => {
obj.check = true
})
this.model.scenarioNameList = this.testScenarioList.map(obj => {
return obj.name
})
} }
} }
} }
......
...@@ -389,8 +389,12 @@ ...@@ -389,8 +389,12 @@
<empty-data v-else message="暂无数据"></empty-data> <empty-data v-else message="暂无数据"></empty-data>
</div> </div>
<task-dialog <task-dialog
:dialog-visible="dialogVisible" :dialog-manger="dialogManager"
@close="closeDialog" @submit="
dialogManager.dialogVisible = false
loadData()
"
@close="dialogManager.dialogVisible = false"
></task-dialog> ></task-dialog>
</page-standard> </page-standard>
</template> </template>
...@@ -399,8 +403,12 @@ import page from '@/mixins/page' ...@@ -399,8 +403,12 @@ import page from '@/mixins/page'
import taskDialog from './components/dialog' import taskDialog from './components/dialog'
import { getHourDiff } from '@/utils/diff' import { getHourDiff } from '@/utils/diff'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { geTaskCase, reviewTaskStart } from '@/api/task/task' import {
import { FastTestProject } from '@/api/graphql/client.graphql' getCaseByScenario,
getScenarioList,
reviewTaskStart
} from '@/api/task/task'
export default { export default {
dicts: [ dicts: [
'inspection_item', 'inspection_item',
...@@ -416,7 +424,11 @@ export default { ...@@ -416,7 +424,11 @@ export default {
data() { data() {
return { return {
// 子任务内容跳转文字map // 子任务内容跳转文字map
dialogVisible: false, dialogManager: {
dialogVisible: false,
item: {}
},
listUrl: '/task/findPending', listUrl: '/task/findPending',
queryParams: { queryParams: {
taskStatus: '', taskStatus: '',
...@@ -463,36 +475,30 @@ export default { ...@@ -463,36 +475,30 @@ export default {
* @param {} type 单项数据 * @param {} type 单项数据
*/ */
async startTask(item) { async startTask(item) {
this.$modal if (item.nextSubTask === 'trfis') {
.confirm('是否确认开始?', { this.dialogManager.dialogVisible = true
type: 'warning', this.dialogManager.item = item
title: '提示', } else {
closeOnClickModal: false this.$modal
}) .confirm('是否确认开始?', {
.then(async () => { type: 'warning',
// if(item) title: '提示',
console.log(item) closeOnClickModal: false
const params = { })
id: item.id .then(async () => {
} const params = {
if (item.nextSubTask === 'trfis') { id: item.id
const res = await geTaskCase({
modelTestId: item.modelTestTaskId
})
if (res.code === 200) {
const resp = await this.newFileTest({
name: item.taskName,
caseIdList: res.data
})
params.testSchemeId = resp.data.projectMutation.project.id
this.startTaskModel(params)
} }
} else {
this.startTaskModel(params) this.startTaskModel(params)
} })
}) .catch(() => {})
.catch(() => {}) }
}, },
/**
* 开始
* @param {*} params
*/
async startTaskModel(params) { async startTaskModel(params) {
const res = await reviewTaskStart(params) const res = await reviewTaskStart(params)
if (res.code === 200) { if (res.code === 200) {
...@@ -508,13 +514,6 @@ export default { ...@@ -508,13 +514,6 @@ export default {
path: '/task/task-detail?id=' + id path: '/task/task-detail?id=' + id
}) })
}, },
closeDialog() {
this.dialogVisible = false
},
// 打开移交任务弹窗
openTaskDialog() {
this.dialogVisible = true
},
// 体系审查 // 体系审查
handleSystemReviewTestContent(status, id, taskId) { handleSystemReviewTestContent(status, id, taskId) {
switch (status) { switch (status) {
...@@ -571,24 +570,6 @@ export default { ...@@ -571,24 +570,6 @@ export default {
}) })
} }
}, },
/**
* 对接车联网新建测试项目
*/
async newFileTest(task) {
const res = await this.$apollo.mutate({
// fetchPolicy: 'no-cache',
mutation: FastTestProject,
variables: {
name: task.name,
lawId: 'law_items;106',
principalUserId: 'user_items;2',
systemId: 'system;1',
caseIdList: task.caseIdList,
fileList: ['file_management_items;2']
}
})
return res
},
// 车型测试 // 车型测试
handleCarTypeTestTaskContent(status, id, taskId, testSchemeId) { handleCarTypeTestTaskContent(status, id, taskId, testSchemeId) {
switch (status) { switch (status) {
......
...@@ -36,6 +36,7 @@ module.exports = { ...@@ -36,6 +36,7 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://49.232.167.247:22032`, target: `http://49.232.167.247:22032`,
// target: `https://10.12.48.78/prod-api`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment