|
@@ -6,10 +6,10 @@
|
|
<dropdown
|
|
<dropdown
|
|
v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
|
|
v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
|
|
v-model="map.bugEnumList[bug.status]"
|
|
v-model="map.bugEnumList[bug.status]"
|
|
- :options="enums.bugEnumList"
|
|
|
|
|
|
+ :options="bugStatusList(map.bugEnumList[bug.status])"
|
|
:size="'small'"
|
|
:size="'small'"
|
|
:class="{
|
|
:class="{
|
|
- 'item-color' : map.bugEnumList[bug.status] === '待修复' || '修复中',
|
|
|
|
|
|
+ 'item-color' : map.bugEnumList[bug.status] === '待修复',
|
|
'item' : map.bugEnumList[bug.status] === '已完成',
|
|
'item' : map.bugEnumList[bug.status] === '已完成',
|
|
'item1' : map.bugEnumList[bug.status] === '待测试',
|
|
'item1' : map.bugEnumList[bug.status] === '待测试',
|
|
'item2' : map.bugEnumList[bug.status] === 'Reopen',
|
|
'item2' : map.bugEnumList[bug.status] === 'Reopen',
|
|
@@ -68,7 +68,14 @@
|
|
v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
|
|
v-if="map.bugEnumList && typeof bug.status !== 'undefined'"
|
|
v-model="map.bugEnumList[bug.status]"
|
|
v-model="map.bugEnumList[bug.status]"
|
|
size="small"
|
|
size="small"
|
|
- :options="enums.bugEnumList"
|
|
|
|
|
|
+ :class="{
|
|
|
|
+ 'item-color' : map.bugEnumList[bug.status] === '待修复',
|
|
|
|
+ 'item' : map.bugEnumList[bug.status] === '已完成',
|
|
|
|
+ 'item1' : map.bugEnumList[bug.status] === '待测试',
|
|
|
|
+ 'item2' : map.bugEnumList[bug.status] === 'Reopen',
|
|
|
|
+ 'item3' : map.bugEnumList[bug.status] === 'Hold'
|
|
|
|
+ }"
|
|
|
|
+ :options="bugStatusList(map.bugEnumList[bug.status])"
|
|
class="button_status"
|
|
class="button_status"
|
|
@command="openStatsDialog"
|
|
@command="openStatsDialog"
|
|
/>
|
|
/>
|
|
@@ -163,10 +170,12 @@
|
|
<el-form-item label="修复结果">
|
|
<el-form-item label="修复结果">
|
|
<div
|
|
<div
|
|
v-if="map.repairResultEnumList && bug"
|
|
v-if="map.repairResultEnumList && bug"
|
|
- style="padding-left: 15px"
|
|
|
|
class="bug_manage_div"
|
|
class="bug_manage_div"
|
|
>{{ map.repairResultEnumList[bug.repairResult]?map.repairResultEnumList[bug.repairResult]:'未修复' }}</div>
|
|
>{{ map.repairResultEnumList[bug.repairResult]?map.repairResultEnumList[bug.repairResult]:'未修复' }}</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item label="Hold次数">
|
|
|
|
+ <div class="bug_manage_div">{{ bug.holdCount }}</div>
|
|
|
|
+ </el-form-item>
|
|
|
|
|
|
</el-form>
|
|
</el-form>
|
|
</el-aside>
|
|
</el-aside>
|
|
@@ -206,17 +215,17 @@
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="缺陷原因">
|
|
<el-form-item label="缺陷原因">
|
|
- <div v-if="map.bugReasonEnumList && bug" style="padding-left: 15px" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
|
|
|
|
|
|
+ <div v-if="map.bugReasonEnumList && bug" class="bug_manage_div">{{ map.bugReasonEnumList[bug.bugReason]?map.bugReasonEnumList[bug.bugReason]:'尚未知' }}</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="Reopen次数">
|
|
<el-form-item label="Reopen次数">
|
|
- <div style="padding-left: 15px" class="bug_manage_div">{{ bug.reopenTimes }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div">{{ bug.reopenTimes }}</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
</el-form>
|
|
</el-aside>
|
|
</el-aside>
|
|
</el-container>
|
|
</el-container>
|
|
</el-main>
|
|
</el-main>
|
|
- <el-main v-loading="loading.appInfo" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px','padding-right':'30px'}" class="layout_main bug_manage bug_manage_app_info">
|
|
|
|
|
|
+ <el-main v-loading="loading.appInfo" :style="type=='page'?{'padding': '20px 30px 100px 30px','margin-top': '10px'}:{'padding-left':'30px','padding-right':'30px'}" class="layout_main bug_manage bug_manage_app_info">
|
|
<div class="module_title">
|
|
<div class="module_title">
|
|
<div class="module_title__sign" />
|
|
<div class="module_title__sign" />
|
|
<div class="module_title__caption">客户端信息</div>
|
|
<div class="module_title__caption">客户端信息</div>
|
|
@@ -291,7 +300,7 @@
|
|
<el-aside :width="type=='page'?'100%':'100%'">
|
|
<el-aside :width="type=='page'?'100%':'100%'">
|
|
<el-form :rules="rules" :label-width="type=='page'?'30%':'16%'" label-position="left" label-suffix=":" :hide-required-asterisk="true">
|
|
<el-form :rules="rules" :label-width="type=='page'?'30%':'16%'" label-position="left" label-suffix=":" :hide-required-asterisk="true">
|
|
<el-form-item label="提报人">
|
|
<el-form-item label="提报人">
|
|
- <div style="padding-left: 15px" class="bug_manage_div">{{ bug.creatorList }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div">{{ bug.creatorList }}</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="责任人" prop="assigner" :style="formHeight1 == 'type' ? { 'height': '60px' } : { 'height': 'auto' }">
|
|
<el-form-item label="责任人" prop="assigner" :style="formHeight1 == 'type' ? { 'height': '60px' } : { 'height': 'auto' }">
|
|
<el-select
|
|
<el-select
|
|
@@ -356,16 +365,16 @@
|
|
</el-form>
|
|
</el-form>
|
|
</el-aside>
|
|
</el-aside>
|
|
</el-main>
|
|
</el-main>
|
|
- <el-main class="layout_main bug_manage_time_length" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}">
|
|
|
|
|
|
+ <el-main class="layout_main bug_manage_time_length" :style="type=='page'?{'padding': '20px 5px 20px 30px','margin-top': '10px'}:{'padding-left':'30px'}">
|
|
<div class="module_title">
|
|
<div class="module_title">
|
|
<div class="module_title__sign" />
|
|
<div class="module_title__sign" />
|
|
<div class="module_title__caption">时间</div>
|
|
<div class="module_title__caption">时间</div>
|
|
</div>
|
|
</div>
|
|
<el-divider v-if="type !== 'page'" />
|
|
<el-divider v-if="type !== 'page'" />
|
|
- <el-aside :width="type=='page'?'100%':'49%'">
|
|
|
|
- <el-form label-position="left" label-width="32%">
|
|
|
|
|
|
+ <el-aside :width="type=='page'?'100%':'59%'">
|
|
|
|
+ <el-form label-position="left" label-width="28%">
|
|
<el-form-item label="提报时间">
|
|
<el-form-item label="提报时间">
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.gmtCreate }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.gmtCreate }} <span v-if="bug.gmtCreateIsHoliday === 1" class="bug_date">{{ '节假日提报' }}</span></div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="待测试时间">
|
|
<el-form-item label="待测试时间">
|
|
<div class="tips">
|
|
<div class="tips">
|
|
@@ -373,7 +382,7 @@
|
|
<i class="el-icon-warning" />
|
|
<i class="el-icon-warning" />
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.waitTestTime }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.waitTestTime }}</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="已完成时间">
|
|
<el-form-item label="已完成时间">
|
|
<div class="tips">
|
|
<div class="tips">
|
|
@@ -381,7 +390,7 @@
|
|
<i class="el-icon-warning" />
|
|
<i class="el-icon-warning" />
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.finishTime }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.finishTime }} <span v-if="bug.finishTimeIsHoliday === 1" class="bug_date">{{ '节假日关闭' }}</span></div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="开发修复时长">
|
|
<el-form-item label="开发修复时长">
|
|
<div class="tips">
|
|
<div class="tips">
|
|
@@ -389,7 +398,7 @@
|
|
<i class="el-icon-warning" />
|
|
<i class="el-icon-warning" />
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.devFixTime }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.devFixTime }} <br> :{{ bug.devFixTimePurgeNH }} <span v-if="bug.devFixTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="测试验收时长">
|
|
<el-form-item label="测试验收时长">
|
|
<div class="tips">
|
|
<div class="tips">
|
|
@@ -397,7 +406,7 @@
|
|
<i class="el-icon-warning" />
|
|
<i class="el-icon-warning" />
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.testCheckTime }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.testCheckTime }} <br> :{{ bug.testCheckTimePurgeNH }} <span v-if="bug.testCheckTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="总修复时长">
|
|
<el-form-item label="总修复时长">
|
|
<div class="tips">
|
|
<div class="tips">
|
|
@@ -405,7 +414,7 @@
|
|
<i class="el-icon-warning" />
|
|
<i class="el-icon-warning" />
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
- <div style="padding-left: 15px" class="bug_manage_div"> :{{ bug.fixTime }}</div>
|
|
|
|
|
|
+ <div class="bug_manage_div"> :{{ bug.fixTime }} <br> :{{ bug.fixTimePurgeNH }} <span v-if="bug.fixTimePurgeNH !== null" class="bug_removeDate">{{ '去除节假日' }}</span></div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</el-aside>
|
|
</el-aside>
|
|
@@ -500,30 +509,15 @@
|
|
>
|
|
>
|
|
<div class="image-name">{{ file.name }}</div>
|
|
<div class="image-name">{{ file.name }}</div>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
- <img
|
|
|
|
- class="el-upload-list__item-thumbnail detail-img"
|
|
|
|
- :src="file.url"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
|
|
+ <img class="el-upload-list__item-thumbnail detail-img" :src="file.url" alt="">
|
|
<span class="el-upload-list__item-actions">
|
|
<span class="el-upload-list__item-actions">
|
|
- <span
|
|
|
|
- class="el-upload-list__item-preview"
|
|
|
|
- @click="handlePictureCardPreview(file)"
|
|
|
|
- >
|
|
|
|
|
|
+ <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
|
|
<i class="el-icon-zoom-in" />
|
|
<i class="el-icon-zoom-in" />
|
|
</span>
|
|
</span>
|
|
- <span
|
|
|
|
- v-if="!disabled"
|
|
|
|
- class="el-upload-list__item-delete"
|
|
|
|
- @click="handleDownload(file)"
|
|
|
|
- >
|
|
|
|
|
|
+ <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
|
|
<i class="el-icon-download" />
|
|
<i class="el-icon-download" />
|
|
</span>
|
|
</span>
|
|
- <span
|
|
|
|
- v-if="!disabled"
|
|
|
|
- class="el-upload-list__item-delete"
|
|
|
|
- @click="handleRemoveImage(file)"
|
|
|
|
- >
|
|
|
|
|
|
+ <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemoveImage(file)">
|
|
<i class="el-icon-delete" />
|
|
<i class="el-icon-delete" />
|
|
</span>
|
|
</span>
|
|
</span>
|
|
</span>
|
|
@@ -537,33 +531,41 @@
|
|
<el-main :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
|
|
<el-main :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
|
|
<div class="module_title">
|
|
<div class="module_title">
|
|
<div class="module_title__sign" />
|
|
<div class="module_title__sign" />
|
|
- <div class="module_title__caption">评论</div>
|
|
|
|
- </div>
|
|
|
|
- <el-divider v-if="type !== 'page'" /><br>
|
|
|
|
- <div>
|
|
|
|
- <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
|
|
|
|
- <div
|
|
|
|
- style="font-size:14px;color:#333B4A;display: inline-block;"
|
|
|
|
- >{{ item.commentInfo.name }}</div>
|
|
|
|
- <div
|
|
|
|
- style="margin-left:20px;display: inline-block;color: #9B9B9B;font-size:12px"
|
|
|
|
- >{{ item.commentInfo.gmtCreater }}</div>
|
|
|
|
- <p
|
|
|
|
- style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;"
|
|
|
|
- >{{ item.commentInfo.content }}</p>
|
|
|
|
- <br>
|
|
|
|
- </div>
|
|
|
|
- <el-input
|
|
|
|
- v-model="commentContent"
|
|
|
|
- type="textarea"
|
|
|
|
- placeholder="请输入评论内容"
|
|
|
|
- maxlength="1000"
|
|
|
|
- show-word-limit
|
|
|
|
- :autosize="{ minRows: 3, maxRows: 5}"
|
|
|
|
- style="margin-bottom: 2%"
|
|
|
|
- />
|
|
|
|
- <el-button type="primary" size="small" style="float: right" @click="addComment">发表评论</el-button>
|
|
|
|
|
|
+ <div class="module_title__caption">动态</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <el-divider v-if="type !== 'page'" />
|
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
|
+ <el-tab-pane label="评论" name="first">
|
|
|
|
+ <div>
|
|
|
|
+ <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
|
|
|
|
+ <div style="font-size:14px;color:#333B4A;display: inline-block;">{{ item.commentInfo.name }}</div>
|
|
|
|
+ <div style="margin-left:20px;display: inline-block;color: #9B9B9B;font-size:12px">{{ item.commentInfo.gmtCreater }}</div>
|
|
|
|
+ <p style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;">{{ item.commentInfo.content }}</p>
|
|
|
|
+ <br>
|
|
|
|
+ </div>
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="commentContent"
|
|
|
|
+ type="textarea"
|
|
|
|
+ placeholder="请输入评论内容"
|
|
|
|
+ maxlength="1000"
|
|
|
|
+ show-word-limit
|
|
|
|
+ :autosize="{ minRows: 3, maxRows: 5}"
|
|
|
|
+ style="margin-bottom: 2%"
|
|
|
|
+ />
|
|
|
|
+ <el-button type="primary" size="small" style="float: right" @click="addComment">发表评论</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+ <el-tab-pane label="变更记录" name="second">
|
|
|
|
+ <div>
|
|
|
|
+ <div v-for="(item,index) in changeRecord" :key="index" style="margin: 20px 0" class="animated bounceInRight Layout_space_between">
|
|
|
|
+ <span class="operatorName">{{ item.operator }}</span>
|
|
|
|
+ <span class="remark">{{ item.remark.length > 25 ? item.remark.substring(0, 30) + '...' : '' }}</span>
|
|
|
|
+ <span class="createTime">{{ item.createTime }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+ </el-tabs>
|
|
|
|
+
|
|
</el-main>
|
|
</el-main>
|
|
</el-container>
|
|
</el-container>
|
|
<!-- 弹窗 -->
|
|
<!-- 弹窗 -->
|
|
@@ -571,86 +573,37 @@
|
|
v-if="statusDialogVisible"
|
|
v-if="statusDialogVisible"
|
|
:visible.sync="statusDialogVisible"
|
|
:visible.sync="statusDialogVisible"
|
|
width="33%"
|
|
width="33%"
|
|
- class="bug_manage_dialog"
|
|
|
|
|
|
+ :title="statusDialogTitle"
|
|
|
|
+ class="public_task"
|
|
:append-to-body="true"
|
|
:append-to-body="true"
|
|
:close-on-click-modal="false"
|
|
:close-on-click-modal="false"
|
|
>
|
|
>
|
|
- <template v-slot:title>
|
|
|
|
- <div style="display:flex;align-items: center;">
|
|
|
|
- <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
|
|
|
|
- <div
|
|
|
|
- style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px"
|
|
|
|
- >{{ statusDialogTitle }}</div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- <el-form
|
|
|
|
- v-if="statusDialogTitle !== '删除确认'"
|
|
|
|
- label-width="110px"
|
|
|
|
- label-position="left"
|
|
|
|
- :model="statusDialogForm"
|
|
|
|
- :rules="rules"
|
|
|
|
- >
|
|
|
|
- <el-form-item
|
|
|
|
- v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'"
|
|
|
|
- label="缺陷原因"
|
|
|
|
- prop="bugReason"
|
|
|
|
- >
|
|
|
|
- <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
|
|
|
|
- <el-option
|
|
|
|
- v-for="item in enums.bugReasonEnumList"
|
|
|
|
- :key="item.code"
|
|
|
|
- :label="item.name"
|
|
|
|
- :value="item.code"
|
|
|
|
- />
|
|
|
|
|
|
+ <div class="blueStripe" />
|
|
|
|
+ <el-form v-if="statusDialogTitle !== '删除确认'" label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
|
|
|
|
+ <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
|
|
|
|
+ <el-select v-model="statusDialogForm.repairResult" style="width: 100%" @change="modifyResult(statusDialogForm.repairResult)">
|
|
|
|
+ <el-option v-for="item in enums.repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item
|
|
|
|
- v-if="statusDialogTitle === '待测试'"
|
|
|
|
- label="修复方式"
|
|
|
|
- class="bug_manage_dialog bug_manage_dialog_fixMethod"
|
|
|
|
- >
|
|
|
|
- <el-input
|
|
|
|
- v-model="statusDialogForm.reasonOrDesc"
|
|
|
|
- type="textarea"
|
|
|
|
- placeholder="请输入具体原因和修复方式"
|
|
|
|
- maxlength="300"
|
|
|
|
- show-word-limit
|
|
|
|
- rows="4"
|
|
|
|
- />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item
|
|
|
|
- v-if="statusDialogTitle === '已完成'"
|
|
|
|
- label="修复结果"
|
|
|
|
- prop="repairResult"
|
|
|
|
- class="bug_manage_dialog"
|
|
|
|
- >
|
|
|
|
- <el-select
|
|
|
|
- v-model="statusDialogForm.repairResult"
|
|
|
|
- style="width: 100%"
|
|
|
|
- >
|
|
|
|
- <el-option
|
|
|
|
- v-for="item in enums.repairResultEnumList"
|
|
|
|
- :key="item.code"
|
|
|
|
- :label="item.name"
|
|
|
|
- :value="item.code"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason" class="bug_manage_dialog">
|
|
|
|
+ <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
|
|
|
|
+ <el-option v-for="item in enums.bugReasonEnumList" :key="item.code" :label="item.name" :value="item.code" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item v-if="statusDialogTitle === '待测试'" label="修复方式" class="bug_manage_dialog bug_manage_dialog_fixMethod">
|
|
|
|
+ <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入具体原因,得出结论的过程,具体修复过程或方式" maxlength="300" show-word-limit rows="4" />
|
|
|
|
+ </el-form-item>
|
|
<el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
|
|
<el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
|
|
- <el-input
|
|
|
|
- v-model="statusDialogForm.reasonOrDesc"
|
|
|
|
- type="textarea"
|
|
|
|
- placeholder="请输入Reopen"
|
|
|
|
- maxlength="300"
|
|
|
|
- show-word-limit
|
|
|
|
- rows="4"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item v-if="statusDialogTitle === 'Hold'" label="Hold原因" prop="reasonOrDesc">
|
|
|
|
+ <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" maxlength="300" show-word-limit rows="4" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div v-else style="text-align:center;line-height: 150px">是否要删除当前缺陷?</div>
|
|
<div v-else style="text-align:center;line-height: 150px">是否要删除当前缺陷?</div>
|
|
<template v-slot:footer>
|
|
<template v-slot:footer>
|
|
- <el-button @click="statusDialogCancel">取 消</el-button>
|
|
|
|
- <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
|
|
|
|
|
|
+ <el-button size="small" @click="statusDialogCancel">取 消</el-button>
|
|
|
|
+ <el-button size="small" type="primary" @click="statusDialogConfirm">确 定</el-button>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
<createdBug v-if="modalShow" ref="createdBug" @father="father" />
|
|
<createdBug v-if="modalShow" ref="createdBug" @father="father" />
|
|
@@ -687,8 +640,7 @@
|
|
<script>
|
|
<script>
|
|
import fackClickOutSide from './fackClickOutSide.js'
|
|
import fackClickOutSide from './fackClickOutSide.js'
|
|
import E from 'wangeditor'
|
|
import E from 'wangeditor'
|
|
-// import Utils from '../../../../util.js'
|
|
|
|
-// import { settingGetTypeMap } from '@/api/taskIndex'
|
|
|
|
|
|
+import '@/styles/PublicStyle/index.scss'
|
|
import { getCommentList, addComment, getMemberInfo } from '@/api/requirement.js'
|
|
import { getCommentList, addComment, getMemberInfo } from '@/api/requirement.js'
|
|
import {
|
|
import {
|
|
bugDetails,
|
|
bugDetails,
|
|
@@ -697,7 +649,8 @@ import {
|
|
bugUpdate,
|
|
bugUpdate,
|
|
taskListCreate,
|
|
taskListCreate,
|
|
releaseList,
|
|
releaseList,
|
|
- settingQueryBizModuleList
|
|
|
|
|
|
+ settingQueryBizModuleList,
|
|
|
|
+ operationLogBug
|
|
} from '@/api/defectManage.js'
|
|
} from '@/api/defectManage.js'
|
|
import Dropdown from './dropdown.vue'
|
|
import Dropdown from './dropdown.vue'
|
|
import normalDialog from '@/components/dialog/normalDialog'
|
|
import normalDialog from '@/components/dialog/normalDialog'
|
|
@@ -744,7 +697,9 @@ export default {
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ changeRecord: [], // 变更记录Data
|
|
modalShow: false,
|
|
modalShow: false,
|
|
|
|
+ activeName: 'first', // 选项卡默认评论
|
|
iconName: 'float_反馈_icon_close',
|
|
iconName: 'float_反馈_icon_close',
|
|
bugNameIsFocus: false,
|
|
bugNameIsFocus: false,
|
|
props: { multiple: true },
|
|
props: { multiple: true },
|
|
@@ -874,18 +829,6 @@ export default {
|
|
this.bugGetEnum()
|
|
this.bugGetEnum()
|
|
this.$nextTick(() => {
|
|
this.$nextTick(() => {
|
|
this.bugGet(this.id, false).then(res => {
|
|
this.bugGet(this.id, false).then(res => {
|
|
- // this.assignerOptions = []
|
|
|
|
- // for (const i in this.bug.assignerList.length) {
|
|
|
|
- // this.searchUser(this.bug.assigner[i]).then(res => {
|
|
|
|
- // this.assignerOptions = res.data
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
- // this.currentHandlerOptions = []
|
|
|
|
- // for (const i in this.bug.currentHandlerList.length) {
|
|
|
|
- // this.searchUser(this.bug.currentHandler[i]).then(res => {
|
|
|
|
- // this.currentHandlerOptions = res.data
|
|
|
|
- // })
|
|
|
|
- // }
|
|
|
|
this.PersonnelData()
|
|
this.PersonnelData()
|
|
this.changeWidthOnBlur()
|
|
this.changeWidthOnBlur()
|
|
releaseList().then(res => {
|
|
releaseList().then(res => {
|
|
@@ -902,6 +845,12 @@ export default {
|
|
})
|
|
})
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ handleClick(tab, event) {
|
|
|
|
+ console.log(tab, event)
|
|
|
|
+ operationLogBug(this.id).then(res => {
|
|
|
|
+ this.changeRecord = res.data
|
|
|
|
+ })
|
|
|
|
+ },
|
|
closeDrawer() {
|
|
closeDrawer() {
|
|
this.$emit('close', false)
|
|
this.$emit('close', false)
|
|
},
|
|
},
|
|
@@ -933,6 +882,24 @@ export default {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ modifyResult(val) { // 修复结果
|
|
|
|
+ switch (val) {
|
|
|
|
+ case 9:
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', 9)
|
|
|
|
+ break
|
|
|
|
+ case 11:
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', 11)
|
|
|
|
+ break
|
|
|
|
+ case 2:
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', 10)
|
|
|
|
+ break
|
|
|
|
+ case 3:
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', 12)
|
|
|
|
+ break
|
|
|
|
+ default: this.$set(this.statusDialogForm, 'bugReason', '')
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ },
|
|
listen(event) {
|
|
listen(event) {
|
|
event.preventDefault() // 阻止浏览器默认换行操作
|
|
event.preventDefault() // 阻止浏览器默认换行操作
|
|
return false
|
|
return false
|
|
@@ -1067,10 +1034,7 @@ export default {
|
|
this.$message.warning('评论不能为空')
|
|
this.$message.warning('评论不能为空')
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- addComment({
|
|
|
|
- commentInfo: { joinId: this.id, type: 2, content: this.commentContent },
|
|
|
|
- user: { ename: this.userInformation }
|
|
|
|
- }).then(res => {
|
|
|
|
|
|
+ addComment({ commentInfo: { joinId: this.id, type: 2, content: this.commentContent }, user: { ename: this.userInformation }}).then(res => {
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
this.getCommentList()
|
|
this.getCommentList()
|
|
}
|
|
}
|
|
@@ -1118,6 +1082,33 @@ export default {
|
|
this.bug.bugName = this.bugNameForm.bugName
|
|
this.bug.bugName = this.bugNameForm.bugName
|
|
this.bugUpdate(this.bug, 'title')
|
|
this.bugUpdate(this.bug, 'title')
|
|
},
|
|
},
|
|
|
|
+ bugStatusList(status) { // 不同状态返回不同的option
|
|
|
|
+ if (status === '待修复') {
|
|
|
|
+ return this.enums.bugEnumList.filter(item => {
|
|
|
|
+ return item.code === 0 || item.code === 2 || item.code === 5
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if (status === '待测试') {
|
|
|
|
+ return this.enums.bugEnumList.filter(item => {
|
|
|
|
+ return item.code === 2 || item.code === 3 || item.code === 4
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if (status === '已完成') {
|
|
|
|
+ return this.enums.bugEnumList.filter(item => {
|
|
|
|
+ return item.code === 3
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'Reopen') {
|
|
|
|
+ return this.enums.bugEnumList.filter(item => {
|
|
|
|
+ return item.code === 2 || item.code === 5 || item.code === 4
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ if (status === 'Hold') {
|
|
|
|
+ return this.enums.bugEnumList.filter(item => {
|
|
|
|
+ return item.code === 5 || item.code === 2
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
RichText() {
|
|
RichText() {
|
|
this.editor = new E('#wage', '#wage1')
|
|
this.editor = new E('#wage', '#wage1')
|
|
this.editor.customConfig.zIndex = 0
|
|
this.editor.customConfig.zIndex = 0
|
|
@@ -1244,11 +1235,7 @@ export default {
|
|
})
|
|
})
|
|
},
|
|
},
|
|
bugDelete() {
|
|
bugDelete() {
|
|
- const userData = {
|
|
|
|
- id: '',
|
|
|
|
- ename: this.userInformation,
|
|
|
|
- name: this.userNames
|
|
|
|
- }
|
|
|
|
|
|
+ const userData = { id: '', ename: this.userInformation, name: this.userNames }
|
|
return bugDelete(userData, this.bug.id).then(res => {
|
|
return bugDelete(userData, this.bug.id).then(res => {
|
|
return res
|
|
return res
|
|
})
|
|
})
|
|
@@ -1348,13 +1335,20 @@ export default {
|
|
openStatsDialog(item) {
|
|
openStatsDialog(item) {
|
|
this.statusDialogForm = JSON.parse(JSON.stringify(this.bug))
|
|
this.statusDialogForm = JSON.parse(JSON.stringify(this.bug))
|
|
this.statusDialogForm.status = item.code
|
|
this.statusDialogForm.status = item.code
|
|
- if (item.name === '待修复' || item.name === '修复中' || item.name === 'Hold') {
|
|
|
|
- this.bugUpdate(this.statusDialogForm, 'title')
|
|
|
|
- .then(res => {
|
|
|
|
- this.bugGet(this.bug.id, false)
|
|
|
|
- })
|
|
|
|
|
|
+ if (item.name === '待修复') {
|
|
|
|
+ this.bugUpdate(this.statusDialogForm, 'title').then(res => {
|
|
|
|
+ this.bugGet(this.bug.id, false)
|
|
|
|
+ })
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ if (item.name === '待测试') {
|
|
|
|
+ this.$set(this.statusDialogForm, 'repairResult', 1)
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', '')
|
|
|
|
+ }
|
|
|
|
+ if (item.name === '已完成') {
|
|
|
|
+ this.$set(this.statusDialogForm, 'repairResult', this.bug.repairResult)
|
|
|
|
+ this.$set(this.statusDialogForm, 'bugReason', this.bug.bugReason)
|
|
|
|
+ }
|
|
this.statusDialogTitle = item.name
|
|
this.statusDialogTitle = item.name
|
|
this.statusDialogVisible = true
|
|
this.statusDialogVisible = true
|
|
},
|
|
},
|
|
@@ -1374,28 +1368,18 @@ export default {
|
|
}
|
|
}
|
|
})
|
|
})
|
|
} else if (this.statusDialogTitle === '待测试') {
|
|
} else if (this.statusDialogTitle === '待测试') {
|
|
- if (
|
|
|
|
- typeof this.statusDialogForm.bugReason === 'undefined' ||
|
|
|
|
- this.statusDialogForm.bugReason === null
|
|
|
|
- ) {
|
|
|
|
|
|
+ if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
|
|
this.$message.warning('请选择缺陷原因')
|
|
this.$message.warning('请选择缺陷原因')
|
|
}
|
|
}
|
|
- this.postDialogForm()
|
|
|
|
- .then(res => {
|
|
|
|
- this.getCommentList()
|
|
|
|
- })
|
|
|
|
|
|
+ this.postDialogForm().then(res => {
|
|
|
|
+ this.getCommentList()
|
|
|
|
+ })
|
|
} else if (this.statusDialogTitle === '已完成') {
|
|
} else if (this.statusDialogTitle === '已完成') {
|
|
- if (
|
|
|
|
- typeof this.statusDialogForm.bugReason === 'undefined' ||
|
|
|
|
- this.statusDialogForm.bugReason === null
|
|
|
|
- ) {
|
|
|
|
|
|
+ if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
|
|
this.$message.warning('请选择缺陷原因')
|
|
this.$message.warning('请选择缺陷原因')
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- if (
|
|
|
|
- typeof this.statusDialogForm.repairResult === 'undefined' ||
|
|
|
|
- this.statusDialogForm.repairResult === null
|
|
|
|
- ) {
|
|
|
|
|
|
+ if (typeof this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
|
|
this.$message.warning('请选择修复结果')
|
|
this.$message.warning('请选择修复结果')
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -1405,10 +1389,9 @@ export default {
|
|
this.$message.warning('请输入Reopen原因')
|
|
this.$message.warning('请输入Reopen原因')
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- this.postDialogForm()
|
|
|
|
- .then(res => {
|
|
|
|
- this.getCommentList()
|
|
|
|
- })
|
|
|
|
|
|
+ this.postDialogForm().then(res => {
|
|
|
|
+ this.getCommentList()
|
|
|
|
+ })
|
|
// this.addComment()
|
|
// this.addComment()
|
|
this.statusDialogVisible = false
|
|
this.statusDialogVisible = false
|
|
}
|
|
}
|
|
@@ -1600,6 +1583,7 @@ export default {
|
|
border: transparent;
|
|
border: transparent;
|
|
color: #666666;
|
|
color: #666666;
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
|
+ padding-left: 13px
|
|
}
|
|
}
|
|
.bug_manage .el-cascader .el-input__inner:hover {
|
|
.bug_manage .el-cascader .el-input__inner:hover {
|
|
border: thin solid #DCDFE6;
|
|
border: thin solid #DCDFE6;
|
|
@@ -1668,6 +1652,70 @@ border-color: #DCDFE6;
|
|
</style>
|
|
</style>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
|
+/deep/ .el-tabs__nav-wrap::after {
|
|
|
|
+ content: "";
|
|
|
|
+ position: absolute;
|
|
|
|
+ left: 0;
|
|
|
|
+ bottom: 0;
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 2px;
|
|
|
|
+ background-color: #FFF;
|
|
|
|
+ z-index: 1;
|
|
|
|
+}
|
|
|
|
+.operatorName {
|
|
|
|
+ min-width: 50px;
|
|
|
|
+ font-size:14px;
|
|
|
|
+ font-family:PingFang SC;
|
|
|
|
+ font-weight:500;
|
|
|
|
+ line-height:20px;
|
|
|
|
+ color:rgba(51,59,74,1);
|
|
|
|
+ opacity:1;
|
|
|
|
+ margin-right: 10px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.createTime {
|
|
|
|
+ min-width:150px;
|
|
|
|
+ font-size:14px;
|
|
|
|
+ font-family:PingFangSC-Regular;
|
|
|
|
+ line-height:20px;
|
|
|
|
+ color:rgba(68,68,68,1);
|
|
|
|
+ opacity:1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.remark {
|
|
|
|
+ width:448px;
|
|
|
|
+ font-size:14px;
|
|
|
|
+ font-family:PingFangSC-Regular;
|
|
|
|
+ line-height:20px;
|
|
|
|
+ color:#444444;
|
|
|
|
+ opacity:1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.bug_removeDate {
|
|
|
|
+ width:46px;
|
|
|
|
+ height:16px;
|
|
|
|
+ background:rgba(64,158,255,0.1);
|
|
|
|
+ border:1px solid #409EFF;
|
|
|
|
+ opacity:1;
|
|
|
|
+ border-radius:2px;
|
|
|
|
+ font-size:8px;
|
|
|
|
+ font-family:MicrosoftYaHei;
|
|
|
|
+ line-height:10px;
|
|
|
|
+ color:#409EFF;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.bug_date {
|
|
|
|
+ width:46px;
|
|
|
|
+ height:16px;
|
|
|
|
+ background:rgba(245,108,108,0.1);
|
|
|
|
+ border:1px solid rgba(245,108,108,1);
|
|
|
|
+ opacity:1;
|
|
|
|
+ border-radius:2px;
|
|
|
|
+ font-size:8px;
|
|
|
|
+ font-family:MicrosoftYaHei;
|
|
|
|
+ line-height:10px;
|
|
|
|
+ color:rgba(245,108,108,1);
|
|
|
|
+}
|
|
.newBtn {
|
|
.newBtn {
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
color: rgb(51, 59, 74);
|
|
color: rgb(51, 59, 74);
|