|
@@ -1,10 +1,11 @@
|
|
|
<template>
|
|
|
<div style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
|
|
|
<el-container>
|
|
|
- <el-header class="bgborder" style=" margin: 1%;height: 7vh;display: flex; justify-content: space-between; align-items: center;">
|
|
|
- <div style="float: left;">
|
|
|
- <el-tooltip class="item" effect="dark" content="爱啥啥" placement="bottom">
|
|
|
- <span style="font-weight: 600;"><span style="background: red;">未知</span>任务:{{ task_form.name }}</span>
|
|
|
+ <el-header class="bgborder" style=" margin: 1%; min-height:8vh;display: flex; justify-content: space-between; align-items: center;">
|
|
|
+ <div style="float: left;display: flex; justify-content: space-between; align-items: center;">
|
|
|
+ <span style="background: red; text-align:center; border-radius:8px; min-height: auto;display: flex; justify-content: space-between; align-items: center;color: #FFF; ">{{ task_form.stageString }}<br>{{ task_form.lateMsg }}</span>
|
|
|
+ <el-tooltip class="item" effect="dark" :content="task_form.name" placement="bottom">
|
|
|
+ <span style="font-weight: 600;margin-right:10px;">任务:{{ task_form.name }}</span>
|
|
|
</el-tooltip>
|
|
|
<el-dropdown @command="handleCommand">
|
|
|
<el-button size="mini" type="primary" plain class="el-dropdown-link drop_down" style="cursor: pointer;">{{ task_form.statusString }}<i class="el-icon-arrow-down el-icon--right" /></el-button>
|
|
@@ -51,19 +52,19 @@
|
|
|
<el-form label-position="left" style="margin: 0 8%" :model="task_form">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="19">
|
|
|
- <el-form-item label="所属项目:" label-width="90px" style="word-break: break-all;">{{ task_form.projectName }}</el-form-item>
|
|
|
+ <el-form-item label="所属项目:" label-width="90px" style="word-break: break-all;"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(1, task_form.projectId)">{{ task_form.projectName }}</span></el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="1">
|
|
|
<el-button size="mini" type="primary" @click="open_created(task_form.describe)">修 改</el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-form-item label="所属需求:" label-width="90px">{{ task_form.requireName }}</el-form-item>
|
|
|
+ <el-form-item label="所属需求:" label-width="90px"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(3, task_form.requireId)">{{ task_form.requireName }}</span></el-form-item>
|
|
|
<el-form-item label="业务线/平台/模块:" label-width="150px">{{ task_form.bizIdString }} / {{ task_form.typeString }} / {{ task_form.clientTypeString }}</el-form-item>
|
|
|
<el-form-item label="是否免测:" label-width="90px">{{ task_form.noTestString }}</el-form-item>
|
|
|
<el-form-item label="开发负责人:" label-width="100px">{{ task_form.rdObject.name }}</el-form-item>
|
|
|
<el-form-item label="测试负责人:" label-width="100px">{{ task_form.qaObject.name }}</el-form-item>
|
|
|
<el-form-item label="涉及的客户端:" label-width="120px">{{ task_form.involveAppString }}</el-form-item>
|
|
|
- <el-form-item label="技术文档:" label-width="90px" style="word-break: break-all;">{{ task_form.devUrl }}</el-form-item>
|
|
|
+ <el-form-item label="技术文档:" label-width="90px" style="word-break: break-all;"><span style="color: #409EFF;cursor: pointer;" @click="devUrl_tow(2, task_form.devUrl)">{{ task_form.devUrl }}</span></el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
</el-main>
|
|
@@ -106,7 +107,7 @@
|
|
|
<el-table-column label="操作" min-width="100" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" type="primary" plain @click="event_query(scope.row.id)">编辑</el-button>
|
|
|
- <el-button size="mini" type="primary" plain>删除</el-button>
|
|
|
+ <el-button v-if="scope.row.canDelete === 1? false : true" size="mini" type="primary" plain>删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -142,39 +143,29 @@
|
|
|
<el-tab-pane label="Bug" style="position: relative;">
|
|
|
<div style="padding: 1% 0;display: flex; justify-content: space-start; align-items: center;border-top: 1px solid #E9E9E9;">
|
|
|
<span>快速筛选:</span>
|
|
|
- <span style="margin-left:2%;">全部</span>
|
|
|
- <span style="margin-left:2%;">待测试</span>
|
|
|
- <span style="margin-left:2%;">开发中</span>
|
|
|
- <span style="margin-left:2%;">待开发</span>
|
|
|
- <span style="margin-left:2%;">已完成</span>
|
|
|
+ <span v-for="(item, code) of bugStatus" :key="code" class="status" @click="bug_list(item.code)">{{ item.msg }}</span>
|
|
|
</div>
|
|
|
<el-table :data="bugBaseInfoDOList" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true">
|
|
|
<el-table-column label="标题名称" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.bugName }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="状态" min-width="100" align="center">
|
|
|
- <!-- <template slot-scope="scope"> -->
|
|
|
- <el-dropdown @command="handleCommand">
|
|
|
- <el-button size="mini" type="primary" plain class="el-dropdown-link drop_down" style="cursor: pointer;">{{ task_form.statusString }}<i class="el-icon-arrow-down el-icon--right" /></el-button>
|
|
|
- <el-dropdown-menu slot="dropdown" align="center">
|
|
|
- <el-dropdown-item v-for="item in taskStatus" :key="item.value" :command="{value:item.code,label:item.msg}">{{ item.msg }}</el-dropdown-item>
|
|
|
- </el-dropdown-menu>
|
|
|
- </el-dropdown>
|
|
|
- <!-- {{ scope.row.teamName }} -->
|
|
|
- <!-- </template> -->
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.bugStatusName }}
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="提报人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.creatorList }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="责任人" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.assignerList }}</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="提报日期" min-width="100" align="center">
|
|
|
- <template slot-scope="scope">{{ scope.row.teamName }}</template>
|
|
|
+ <template slot-scope="scope">{{ scope.row.gmtCreate }}</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<div style="display:flex;align-items: center;justify-content: flex-end;">
|
|
|
- <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25, 30]" :page-size="100" layout="total, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
|
|
+ <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25, 30]" :page-size="15" layout="total, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="提测报告" style="overflow: auto;width: 100%;">
|
|
@@ -286,6 +277,18 @@
|
|
|
<el-button type="primary" @click="even === '新建事件'? event_created(form):event_update(form)">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog :visible.sync="centerDialogVisible_status" width="30%" center>
|
|
|
+ <div align="center" style="margin-bottom: 8%; font-weight: 600;">状态变更:已上线</div>
|
|
|
+ <el-row :gutter="24" style="margin: 2% 3%">
|
|
|
+ <el-col :span="24" style="display: flex; justify-content: space-between; align-items: center; white-space:nowrap;">
|
|
|
+ <span>实际上线时间:</span> <el-date-picker v-model="NewDate" :default-value="new Date()" type="date" placeholder="选择日期" style="width:100%" />
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button size="mini" @click="centerDialogVisible_status = false">关 闭</el-button>
|
|
|
+ <el-button size="mini" type="primary" @click="task_status_uptate(NewDate)">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
<!-- 删除 -->
|
|
|
<el-dialog :visible.sync="centerDialogVisible_task" width="30%" center>
|
|
|
<div align="center">确定要删除<span style="color:red;"> {{ task_form.name }} </span> 的任务吗?</div>
|
|
@@ -302,6 +305,8 @@
|
|
|
<script>
|
|
|
import { taskGet, memberQueryMemberInfoByIDAPorName, bugGetBugStatusMapInfo, configShowTaskEnum, ScheduleCreate, tasktaskDelete, taskUpdate, ScheduleUpdate, commentCreate, commentList } from '@/api/taskIndex' // ajax
|
|
|
import openDialog from '@/views/projectManage/dialog_vue'
|
|
|
+import { launchTestUpdate } from '@/api/projectPage.js'
|
|
|
+import { bugList } from '@/api/defectManage'
|
|
|
import echarts from 'echarts'
|
|
|
export default {
|
|
|
components: {
|
|
@@ -310,6 +315,8 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
dialog_open: false,
|
|
|
+ curIndex: 1,
|
|
|
+ pageSize: 15,
|
|
|
task_form: {
|
|
|
statusString: '未开始',
|
|
|
describe: '',
|
|
@@ -321,11 +328,13 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
CallBackTheReason: '', // 打回原因
|
|
|
+ NewDate: new Date(),
|
|
|
content: '', // 评论
|
|
|
comment_content: '', // 评论内容
|
|
|
commentTxt: [],
|
|
|
commentShow: true, // 评论为空默认显示
|
|
|
dialog_launchTestInfoDOS: false, // 打回弹窗
|
|
|
+ centerDialogVisible_status: false, // status
|
|
|
currentPage: 0,
|
|
|
tiem_date: { // 排期汇总
|
|
|
startTime: '',
|
|
@@ -371,20 +380,16 @@ export default {
|
|
|
desc: ''
|
|
|
},
|
|
|
formLabelWidth: '100px',
|
|
|
- project_Milepost: [
|
|
|
- {
|
|
|
- name: '第一阶段',
|
|
|
- date: '2019/12/06',
|
|
|
- code: '你丹江口市内存卡就是你的错'
|
|
|
- }
|
|
|
- ],
|
|
|
tasktId: '',
|
|
|
echarts_name: [], // echarts_name
|
|
|
echarts_value: [], // echats_value
|
|
|
fixInFutureCount: '', // 已延期
|
|
|
totalCount: '', // bug总数
|
|
|
+ bugStatus: [],
|
|
|
test: {},
|
|
|
- taskStatus: []
|
|
|
+ taskStatus: [],
|
|
|
+ CallBackStatus: '',
|
|
|
+ CallBackId: ''
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -407,6 +412,7 @@ export default {
|
|
|
configShowTaskEnum().then(res => {
|
|
|
this.taskScheduleEvent = res.data.taskScheduleEvent
|
|
|
this.taskStatus = res.data.taskStatus
|
|
|
+ this.bugStatus = res.data.bugStatus
|
|
|
})
|
|
|
taskGet(this.taskId[1]).then(res => {
|
|
|
this.task_form = res.data
|
|
@@ -418,14 +424,20 @@ export default {
|
|
|
this.launchTestInfoDOS = res.data.launchTestInfoDOS // 提测
|
|
|
this.dailyTestReports = res.data.dailyTestReports // 测试
|
|
|
this.projectTestReportDOS = res.data.projectTestReportDOS // 准出
|
|
|
- this.task_form.bugBaseInfoDOList !== null ? this.bugBaseInfoDOList = res.date.bugBaseInfoDOList : this.bugBaseInfoDOList = [] // bug
|
|
|
+ bugList({ taskId: this.taskId[1], pageSize: this.pageSize, curIndex: this.curIndex }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ if (!res.data) {
|
|
|
+ this.bugBaseInfoDOList = res.data
|
|
|
+ this.total = res.total
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
commentList({ type: 3, joinId: this.taskId[1] }).then(res => {
|
|
|
this.commentTxt = res.data
|
|
|
this.commentTxt !== '' ? this.commentShow = false : this.commentShow = true
|
|
|
})
|
|
|
},
|
|
|
-
|
|
|
open_created(e) { // 打开弹窗
|
|
|
var url = window.location.href // 获取url中"?"符后的字串
|
|
|
this.taskId = url.split('?id=')
|
|
@@ -465,12 +477,30 @@ export default {
|
|
|
}, 500)
|
|
|
},
|
|
|
handleCommand(command) {
|
|
|
- this.task_form.statusString = command.label
|
|
|
+ if (command.label === '已上线') {
|
|
|
+ this.centerDialogVisible_status = true
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ this.task_form.statusString = command.label
|
|
|
+ var taskInfoDO = this.task_form
|
|
|
+ taskInfoDO.status = command.value
|
|
|
+ var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
+ taskUpdate({ taskInfoDO, user }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ task_status_uptate(e) {
|
|
|
+ this.task_form.statusString = '已上线'
|
|
|
var taskInfoDO = this.task_form
|
|
|
- taskInfoDO.status = command.value
|
|
|
+ taskInfoDO.status = 3
|
|
|
+ taskInfoDO.onlineRealTime = e
|
|
|
var user = { name: this.userNames, ename: this.userInformation, id: '' }
|
|
|
taskUpdate({ taskInfoDO, user }).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
+ this.centerDialogVisible_status = false
|
|
|
this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
}
|
|
|
})
|
|
@@ -568,6 +598,18 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ bug_list(e) { // bug查询
|
|
|
+ bugList({ status: e, taskId: Number(this.taskId[1]) }).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ if (res.data !== null) {
|
|
|
+ this.bugBaseInfoDOList = res.data
|
|
|
+ this.total = res.total
|
|
|
+ } else {
|
|
|
+ this.bugBaseInfoDOList = []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
comment(e) {
|
|
|
this.content = ''
|
|
|
this.commentShow = false
|
|
@@ -624,46 +666,69 @@ export default {
|
|
|
this.$refs['form'].clearValidate()
|
|
|
})
|
|
|
},
|
|
|
+ devUrl_tow(e, ele) { // 技术文档
|
|
|
+ switch (e) {
|
|
|
+ case 1:
|
|
|
+ this.$router.push({ name: '项目详情', query: { id: ele }})
|
|
|
+ break
|
|
|
+ case 2:
|
|
|
+ window.open(ele, '_blank')
|
|
|
+ break
|
|
|
+ case 3:
|
|
|
+ this.$router.push({ name: '需求详情', query: { id: ele }})
|
|
|
+ break
|
|
|
+ }
|
|
|
+ },
|
|
|
// 打回
|
|
|
back(e, ele) {
|
|
|
this.dialog_launchTestInfoDOS = true
|
|
|
- // this.CallBackStatus = e
|
|
|
- // this.CallBackId = ele
|
|
|
+ this.CallBackStatus = e
|
|
|
+ this.CallBackId = ele
|
|
|
},
|
|
|
// 通过
|
|
|
pass(e, ele) {
|
|
|
- // this.CallBackStatus = e
|
|
|
- // this.CallBackId = ele
|
|
|
- // this.passOrBackSend()
|
|
|
+ this.CallBackStatus = e
|
|
|
+ this.CallBackId = ele
|
|
|
+ this.passOrBackSend()
|
|
|
},
|
|
|
passOrBackSend() {
|
|
|
this.dialog_launchTestInfoDOS = false
|
|
|
- // const tt = { status: this.CallBackStatus, id: this.CallBackId }
|
|
|
- // this.userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
- // this.objData = { launchTestInfo: tt, user: this.userData }
|
|
|
- // launchTestUpdate(this.objData).then(res => {
|
|
|
- // res.code === 200 ? this.successFun('operate') : this.errorFun(res.msg)
|
|
|
- // this.getList()
|
|
|
- // })
|
|
|
+ const tt = { status: this.CallBackStatus, id: this.CallBackId }
|
|
|
+ var userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
|
+ var objData = { launchTestInfo: tt, user: userData }
|
|
|
+ launchTestUpdate(objData).then(res => {
|
|
|
+ res.code === 200 ? this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 }) : this.$message({ message: res.msg, type: 'error', duration: 1000, offset: 150 })
|
|
|
+ this.get_List()
|
|
|
+ })
|
|
|
},
|
|
|
handleSizeChange(size) { // 分页
|
|
|
this.pageSize = size
|
|
|
},
|
|
|
handleCurrentChange(curIndex) { // 分页
|
|
|
this.curIndex = curIndex
|
|
|
+ },
|
|
|
+ dialogue() {
|
|
|
+
|
|
|
},
|
|
|
createReport(e, ele) {
|
|
|
- console.log(ele)
|
|
|
if (ele.typeString !== '服务端') {
|
|
|
switch (e) {
|
|
|
case 1:
|
|
|
- this.$router.push({ path: '/Platform/presentation/PresentReport', query: { task: ele }}) // 客户端提测
|
|
|
+ if (this.task_form.statusString === '开发中') {
|
|
|
+ this.$router.push({ path: '/Platform/presentation/PresentReport', query: { task: ele }}) // 客户端提测
|
|
|
+ } else {
|
|
|
+ this.$message({ message: '该状态下不支持提测,请先将状态更改为【开发中】', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
break
|
|
|
case 2:
|
|
|
this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { task: ele, taskId: ele.id }}) // 客户端日报
|
|
|
break
|
|
|
case 3:
|
|
|
- this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { task: ele }}) // 客户端准出
|
|
|
+ if (this.task_form.statusString === '测试中') {
|
|
|
+ this.$router.push({ path: '/Platform/presentation/ClientAcceptance', query: { task: ele }}) // 客户端准出
|
|
|
+ } else {
|
|
|
+ this.$message({ message: '该状态下不支持提测,请先将状态更改为【测试中】', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
break
|
|
|
case 4:
|
|
|
this.$router.push({ name: '新建Bug', query: { id: ele.id }}) // 缺陷报告
|
|
@@ -672,13 +737,21 @@ export default {
|
|
|
} else {
|
|
|
switch (e) {
|
|
|
case 1:
|
|
|
- this.$router.push({ path: '/Platform/presentation/presentationReport', query: { task: ele }}) // 服务端提测
|
|
|
+ if (this.task_form.statusString === '开发中') {
|
|
|
+ this.$router.push({ path: '/Platform/presentation/presentationReport', query: { task: ele }}) // 服务端提测
|
|
|
+ } else {
|
|
|
+ this.$message({ message: '该状态下不支持提测,请先将状态更改为【开发中】', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
break
|
|
|
case 2:
|
|
|
this.$router.push({ path: '/Platform/presentation/DailyNewsAdded', query: { task: ele, taskId: ele.id }}) // 服务端日报
|
|
|
break
|
|
|
case 3:
|
|
|
- this.$router.push({ path: '/Platform/presentation/Acceptance', query: { task: ele }}) // 服务端准出
|
|
|
+ if (this.task_form.statusString === '测试中') {
|
|
|
+ this.$router.push({ path: '/Platform/presentation/Acceptance', query: { task: ele }}) // 服务端准出
|
|
|
+ } else {
|
|
|
+ this.$message({ message: '该状态下不支持提测,请先将状态更改为【测试中】', type: 'success', duration: 1000, offset: 150 })
|
|
|
+ }
|
|
|
break
|
|
|
case 4:
|
|
|
this.$router.push({ name: '新建Bug', query: { id: ele.id }}) // 缺陷报告
|
|
@@ -810,4 +883,12 @@ export default {
|
|
|
margin: 0 0 15px;
|
|
|
width: 80%;
|
|
|
}
|
|
|
+.status {
|
|
|
+ margin-left:2%;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.status:hover {
|
|
|
+ color: #6AB4FF;
|
|
|
+}
|
|
|
</style>
|