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

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

parent 7b7f99a0
......@@ -217,6 +217,8 @@ export function geTaskCase(data) {
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 @@
<el-table-column label="测试方法" align="left" sortable prop="testType" />
<el-table-column label="用例编号" align="left" prop="usecaseNo" />
<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">
<template slot-scope="scope">
<span>{{ scope.row.input || '--' }}</span>
......
......@@ -233,42 +233,6 @@
</collapse-item>
</collapse>
</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="title-display">
......@@ -346,8 +310,7 @@ export default {
model: {
carReviewTask: {},
reviewSceneChangeTasks: {},
detailsList: [],
testScenarioList: []
detailsList: []
},
selectedScenario: [],
columns: [],
......@@ -408,19 +371,6 @@ export default {
? 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 {
this.$modal.msgError(res.msg)
}
......@@ -454,15 +404,6 @@ export default {
],
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 => {
if (res.code === 200) {
this.$modal.msgSuccess('确认提交成功')
......@@ -493,14 +434,6 @@ export default {
},
closeAll() {
this.activeNames = []
}, // 全选
selectAll() {
this.model.testScenarioList.forEach(obj => {
obj.check = true
})
this.selectedScenario = this.model.testScenarioList.map(obj => {
return obj.value
})
}
}
}
......
<template>
<el-dialog
:visible.sync="dialogVisible"
title="移交任务"
width="1200"
:visible.sync="dialogManger.dialogVisible"
title="选择测试场景"
width="80%"
append-to-body
destroy-on-close
:close-on-click-modal="false"
:before-close="handleClose"
>
<el-form ref="form" :model="model" :rules="rules">
<el-form-item label="接受人员" prop="people">
<el-cascader v-model="model.people" :options="options"></el-cascader>
</el-form-item>
<el-form-item label="是否继续关注" prop="isContinue">
<el-radio-group v-model="model.isContinue">
<el-radio :label="3"></el-radio>
<el-radio :label="6"></el-radio>
</el-radio-group>
<el-form v-loading="loading">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="请选择测试场景(可多选)" prop="testScenarioList">
<footer-button
style="width: 80px; height: 25px"
type="primary"
@click="selectAll"
>
全部选择
</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>
<div slot="footer">
<el-button @click="handleClose()"> 取消 </el-button>
<el-button type="primary" @click="handleClose()"> 保存 </el-button>
<el-button type="primary" @click="handleSubmit()"> 开始 </el-button>
</div>
</el-dialog>
</template>
<script>
import {
getCaseByScenario,
getScenarioList,
reviewTaskStart
} from '@/api/task/task'
import { FastTestProject } from '@/api/graphql/client.graphql'
export default {
props: {
dialogVisible: {
default: false,
type: Boolean
dialogManger: {
default: () => {
return {
dialogVisible: false,
item: null
}
},
type: Object
}
},
data() {
return {
options: [
{
value: '总裁办',
label: '总裁办',
children: [
{
value: '张小刚',
label: '张小刚'
},
{
value: '李晓红',
label: '李晓红'
},
{
value: '王小明',
label: '王小明'
model: {
scenarioNameList: []
},
{
value: '周小伟',
label: '周小伟'
loading: false,
testScenarioList: []
}
]
},
{
value: '技术部',
label: '技术部'
},
{
value: '销售部',
label: '销售部'
watch: {
'dialogManger.dialogVisible'(newValue) {
if (newValue) {
this.getScenario()
this.model = {
scenarioNameList: []
}
],
model: {},
rules: {
people: [
{ required: true, message: '请选择接收人员', trigger: 'change' }
],
isContinue: [
{ required: true, message: '请选择是否关注', trigger: 'change' }
]
}
}
},
......@@ -82,6 +84,89 @@ export default {
methods: {
handleClose() {
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 @@
<empty-data v-else message="暂无数据"></empty-data>
</div>
<task-dialog
:dialog-visible="dialogVisible"
@close="closeDialog"
:dialog-manger="dialogManager"
@submit="
dialogManager.dialogVisible = false
loadData()
"
@close="dialogManager.dialogVisible = false"
></task-dialog>
</page-standard>
</template>
......@@ -399,8 +403,12 @@ import page from '@/mixins/page'
import taskDialog from './components/dialog'
import { getHourDiff } from '@/utils/diff'
import { mapGetters } from 'vuex'
import { geTaskCase, reviewTaskStart } from '@/api/task/task'
import { FastTestProject } from '@/api/graphql/client.graphql'
import {
getCaseByScenario,
getScenarioList,
reviewTaskStart
} from '@/api/task/task'
export default {
dicts: [
'inspection_item',
......@@ -416,7 +424,11 @@ export default {
data() {
return {
// 子任务内容跳转文字map
dialogManager: {
dialogVisible: false,
item: {}
},
listUrl: '/task/findPending',
queryParams: {
taskStatus: '',
......@@ -463,6 +475,10 @@ export default {
* @param {} type 单项数据
*/
async startTask(item) {
if (item.nextSubTask === 'trfis') {
this.dialogManager.dialogVisible = true
this.dialogManager.item = item
} else {
this.$modal
.confirm('是否确认开始?', {
type: 'warning',
......@@ -470,29 +486,19 @@ export default {
closeOnClickModal: false
})
.then(async () => {
// if(item)
console.log(item)
const params = {
id: item.id
}
if (item.nextSubTask === 'trfis') {
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)
}
})
.catch(() => {})
}
},
/**
* 开始
* @param {*} params
*/
async startTaskModel(params) {
const res = await reviewTaskStart(params)
if (res.code === 200) {
......@@ -508,13 +514,6 @@ export default {
path: '/task/task-detail?id=' + id
})
},
closeDialog() {
this.dialogVisible = false
},
// 打开移交任务弹窗
openTaskDialog() {
this.dialogVisible = true
},
// 体系审查
handleSystemReviewTestContent(status, id, taskId) {
switch (status) {
......@@ -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) {
switch (status) {
......
......@@ -36,6 +36,7 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://49.232.167.247:22032`,
// target: `https://10.12.48.78/prod-api`,
changeOrigin: true,
pathRewrite: {
['^' + 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