|
|
|
@ -1,131 +1,135 @@ |
|
|
|
<template> |
|
|
|
<section class="page-container padding border"> |
|
|
|
<el-row class="page-main page-height-90 padding"> |
|
|
|
<el-form :model="editForm" :rules="editFormRules" ref="editForm"> |
|
|
|
<el-row> |
|
|
|
<h2>{{editForm.name}}</h2> |
|
|
|
<el-tooltip content="项目"><el-tag type="warning">{{selProject.name}} </el-tag></el-tooltip> |
|
|
|
<el-divider direction="vertical"></el-divider> |
|
|
|
<el-tag>{{editForm.createUsername}} 于 {{editForm.createTime}} 创建 </el-tag> |
|
|
|
<el-divider direction="vertical"></el-divider> |
|
|
|
<el-date-picker :clearable="false" style="width:150px;" type="date" placeholder="到期日期" v-model="editForm.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd"></el-date-picker> |
|
|
|
</el-row> |
|
|
|
<el-row style="padding-bottom:10px;padding-top:10px;"> |
|
|
|
<el-steps :active="calcBugStep" simple finish-status="success"> |
|
|
|
<el-step title="已激活,待确认" description="创建后自动激活、关闭后重新激活)"></el-step> |
|
|
|
<el-step title="已确认,待解决" description="业务确认缺陷后变为已确认"></el-step> |
|
|
|
<el-step title="已解决,待关闭" description="开发修复缺陷后,变成已解决"></el-step> |
|
|
|
<el-step title="已关闭(可重新激活)" description="测试通过后变为已关闭,已关闭缺陷可以重新激活"></el-step> |
|
|
|
</el-steps> |
|
|
|
</el-row> |
|
|
|
<el-form-item label="隶属任务" prop="taskName"> |
|
|
|
<el-tag v-if="editForm.taskId!='' && editForm.taskId!=null " closable @close="handleCloseTaskTag" @click="showSelectTask">{{editForm.taskName}}</el-tag> <el-button @click="showSelectTask">选任务</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="隶属故事" prop="menuName"> |
|
|
|
<el-tag v-if="editForm.menuId!='' && editForm.menuId!=null " closable @close="handleCloseMenuTag" @click="showSelectMenu">{{editForm.menuName}}</el-tag> <el-button @click="showSelectMenu">选故事</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="缺陷属性" prop="priority"> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-select v-model="editForm.priority" placeholder="请选择紧急程度"> |
|
|
|
<el-option v-for="(i,index) in options['urgencyLevel']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
<el-select v-model="editForm.bugSeverity" placeholder="请选择严重程度"> |
|
|
|
<el-option v-for="(i,index) in options['bugSeverity']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
<el-select v-model="editForm.solution" placeholder="请选择解决方案"> |
|
|
|
<el-option v-for="(i,index) in options['bugSolution']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
</el-col> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="指派给" prop="handlerUsername"> |
|
|
|
{{editForm.handlerUsername}} <el-button @click="sendToCreater">指派给创建人</el-button><el-button @click="showGroupUsers('handlerUsername')">选其它人</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="测试步骤" prop="opStep"> |
|
|
|
<el-col :span="24" v-if="editForm.expectResult"> |
|
|
|
<div class="wf-main-context-box" v-if="editForm.opStep"> |
|
|
|
<div style="padding:10px;" class="wf-main-context" v-html="editForm.opStep"></div> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="预期结果" prop="expectResult"> |
|
|
|
<el-col :span="24" v-if="editForm.expectResult"> |
|
|
|
<div class="wf-main-context-box" > |
|
|
|
<div style="padding:10px;" class="wf-main-context" v-html="editForm.expectResult"></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="流转信息"> |
|
|
|
<el-button icon="el-icon-search" v-if="flowInfoVisible==false" @click="showFlowInfo" >查询流转信息</el-button> |
|
|
|
<el-button icon="el-icon-search" v-else @click="flowInfoVisible=false" >隐藏流转信息</el-button> |
|
|
|
|
|
|
|
<el-col :span="24" style="padding-top:12px;"> |
|
|
|
<!--列表 XmQuestionHandle xm_question_handle--> |
|
|
|
|
|
|
|
<el-table v-show="flowInfoVisible" max-height="300" :data="xmQuestionHandles" highlight-current-row v-loading="load.list" border style="width: 100%;"> |
|
|
|
<el-table-column sortable type="index" width="40"></el-table-column> |
|
|
|
<el-table-column label="处理意见" prop="receiptMessage" min-width="200" > |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-html="scope.row.receiptMessage"></div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="handlerUsername" label="指派动作" width="250" > |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag>{{scope.row.handlerUsername}}</el-tag> 指派给 <el-tag> {{scope.row.targetUsername}} </el-tag><br><span style="font-size:8px;">{{scope.row.receiptTime}}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="handleStatus" label="状态" width="80" :formatter="formatterOption"></el-table-column> |
|
|
|
<el-table-column prop="handleSolution" label="解决方案" width="100" :formatter="formatterOption"></el-table-column> |
|
|
|
<section class="page-container padding border"> |
|
|
|
<el-row> |
|
|
|
<font class="font">{{editForm.name}}</font> |
|
|
|
</el-row> |
|
|
|
<el-row class="padding-bottom"> |
|
|
|
<el-tooltip content="项目"><el-tag type="warning">{{selProject.name}} </el-tag></el-tooltip> |
|
|
|
<el-divider direction="vertical"></el-divider> |
|
|
|
<el-tag>{{editForm.createUsername}} 于 {{editForm.createTime}} 创建 </el-tag> |
|
|
|
<el-divider direction="vertical"></el-divider> |
|
|
|
<el-date-picker :clearable="false" style="width:150px;" type="date" placeholder="到期日期" v-model="editForm.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd"></el-date-picker> |
|
|
|
</el-row> |
|
|
|
<el-row class="padding-bottom"> |
|
|
|
<el-steps :active="calcBugStep" simple finish-status="success"> |
|
|
|
<el-step title="已激活,待确认" description="创建后自动激活、关闭后重新激活)"></el-step> |
|
|
|
<el-step title="已确认,待解决" description="业务确认缺陷后变为已确认"></el-step> |
|
|
|
<el-step title="已解决,待关闭" description="开发修复缺陷后,变成已解决"></el-step> |
|
|
|
<el-step title="已关闭(可重新激活)" description="测试通过后变为已关闭,已关闭缺陷可以重新激活"></el-step> |
|
|
|
</el-steps> |
|
|
|
</el-row> |
|
|
|
<el-row class="page-main page-height-70"> |
|
|
|
<el-form :model="editForm" :rules="editFormRules" ref="editForm"> |
|
|
|
<el-form-item label="隶属任务\故事" prop="taskName"> |
|
|
|
<el-tooltip content="隶属任务"><el-tag closable @click="showSelectTask" @close.stop="handleCloseTaskTag">{{editForm.taskName?editForm.taskName:'未关联任务'}}</el-tag> </el-tooltip> |
|
|
|
<el-divider direction="vertical"></el-divider> |
|
|
|
<el-tooltip content="隶属故事"><el-tag closable @click="showSelectMenu" @close.stop="handleCloseMenuTag">{{editForm.menuName?editForm.menuName:"未关联故事"}}</el-tag></el-tooltip> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="缺陷属性" prop="priority"> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-select v-model="editForm.priority" placeholder="请选择紧急程度"> |
|
|
|
<el-option v-for="(i,index) in options['urgencyLevel']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
<el-select v-model="editForm.bugSeverity" placeholder="请选择严重程度"> |
|
|
|
<el-option v-for="(i,index) in options['bugSeverity']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
|
|
|
|
<el-select v-model="editForm.solution" placeholder="请选择解决方案"> |
|
|
|
<el-option v-for="(i,index) in options['bugSolution']" :label="i.optionName" :value="i.optionValue" :key="i.optionValue">{{i.optionName}}</el-option> |
|
|
|
</el-select> |
|
|
|
</el-col> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="指派给" prop="handlerUsername"> |
|
|
|
{{editForm.handlerUsername}} <el-button @click="sendToCreater">指派给创建人</el-button><el-button @click="showGroupUsers('handlerUsername')">选其它人</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="测试步骤" prop="opStep"> |
|
|
|
<el-col :span="24" v-if="editForm.expectResult"> |
|
|
|
<div class="wf-main-context-box" v-if="editForm.opStep"> |
|
|
|
<div class="wf-main-context" v-html="editForm.opStep"></div> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="预期结果" prop="expectResult"> |
|
|
|
<el-col :span="24" v-if="editForm.expectResult"> |
|
|
|
<div class="wf-main-context-box" > |
|
|
|
<div class="wf-main-context" v-html="editForm.expectResult"></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="流转信息"> |
|
|
|
<el-button icon="el-icon-search" v-if="flowInfoVisible==false" @click="showFlowInfo" >查询流转信息</el-button> |
|
|
|
<el-button icon="el-icon-search" v-else @click="flowInfoVisible=false" >隐藏流转信息</el-button> |
|
|
|
|
|
|
|
<el-col :span="24" style="padding-top:12px;"> |
|
|
|
<!--列表 XmQuestionHandle xm_question_handle--> |
|
|
|
|
|
|
|
<el-table v-show="flowInfoVisible" max-height="300" :data="xmQuestionHandles" highlight-current-row v-loading="load.list" border style="width: 100%;"> |
|
|
|
<el-table-column sortable type="index" width="40"></el-table-column> |
|
|
|
<el-table-column label="处理意见" prop="receiptMessage" min-width="200" > |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-html="scope.row.receiptMessage"></div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="handlerUsername" label="指派动作" width="250" > |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag>{{scope.row.handlerUsername}}</el-tag> 指派给 <el-tag> {{scope.row.targetUsername}} </el-tag><br><span style="font-size:8px;">{{scope.row.receiptTime}}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="handleStatus" label="状态" width="80" :formatter="formatterOption"></el-table-column> |
|
|
|
<el-table-column prop="handleSolution" label="解决方案" width="100" :formatter="formatterOption"></el-table-column> |
|
|
|
|
|
|
|
</el-table> |
|
|
|
</el-col> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="缺陷描述" prop="description"> |
|
|
|
<div class="wf-main-context-box" v-if="editForm.description"> |
|
|
|
<div class="wf-main-context" v-html="editForm.description"></div> |
|
|
|
</div> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="上次处理意见" prop="lremark"> |
|
|
|
<div class="wf-main-context-box" v-if="editForm.lremark"> |
|
|
|
<div class="wf-main-context" v-html="editForm.lremark"></div> |
|
|
|
</div> |
|
|
|
<font v-else>无</font> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="处理意见" prop="description"> |
|
|
|
<vue-editor :id="'description_'+editForm.id" :branch-id="userInfo.branchId" v-model="editForm.receiptMessage"></vue-editor> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-table> |
|
|
|
</el-col> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="缺陷描述" prop="description"> |
|
|
|
<el-col v-if="editForm.description" :span="24" > |
|
|
|
<div class="wf-main-context-box" > |
|
|
|
<div class="wf-main-context" v-html="editForm.description"></div> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="上次处理意见" prop="lremark"> |
|
|
|
<el-col v-if="editForm.lremark" :span="24" > |
|
|
|
<div class="wf-main-context-box" > |
|
|
|
<div class="wf-main-context" v-html="editForm.lremark"></div> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
<font v-else>无</font> |
|
|
|
|
|
|
|
<el-drawer title="选中用户" :visible.sync="selectUserVisible" size="80%" append-to-body :close-on-click-modal="false"> |
|
|
|
<xm-group-mng :sel-project="selProject" :is-select-single-user="1" @user-confirm="onUserConfirm"></xm-group-mng> |
|
|
|
</el-drawer> |
|
|
|
<el-drawer title="选中任务" :visible.sync="selectTaskVisible" size="80%" fullscreen append-to-body :close-on-click-modal="false"> |
|
|
|
<xm-task-list :sel-project="selProject" @task-selected="onSelectedTask"></xm-task-list> |
|
|
|
</el-drawer> |
|
|
|
|
|
|
|
<el-drawer append-to-body title="故事选择" :visible.sync="selectMenuVisible" fullscreen :close-on-click-modal="false"> |
|
|
|
<xm-menu-select :is-select-menu="true" @selected="onSelectedMenu" :sel-project="selProject"></xm-menu-select> |
|
|
|
</el-drawer> |
|
|
|
</el-row> |
|
|
|
<el-row class="page-bottom page-height-10"> |
|
|
|
<el-button @click.native="handleCancel">取消</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus !='closed'" v-loading="load.edit" type="primary" @click.native="handleQuestion(editForm.bugStatus)" :disabled="load.edit==true">暂存</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('confirmed')" :disabled="load.edit==true">确认</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">不是缺陷</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('resolved')" :disabled="load.edit==true">直接解决</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">直接关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='confirmed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('resolved')" :disabled="load.edit==true">解决</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='confirmed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='resolved'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='resolved'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">重新激活</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='closed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">重新激活</el-button> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="处理意见" prop="description"> |
|
|
|
<vue-editor :id="'description_'+editForm.id" :branch-id="userInfo.branchId" v-model="editForm.receiptMessage"></vue-editor> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-drawer title="选中用户" :visible.sync="selectUserVisible" size="80%" append-to-body :close-on-click-modal="false"> |
|
|
|
<xm-group-mng :sel-project="selProject" :is-select-single-user="1" @user-confirm="onUserConfirm"></xm-group-mng> |
|
|
|
</el-drawer> |
|
|
|
<el-drawer title="选中任务" :visible.sync="selectTaskVisible" size="80%" fullscreen append-to-body :close-on-click-modal="false"> |
|
|
|
<xm-task-list :sel-project="selProject" @task-selected="onSelectedTask"></xm-task-list> |
|
|
|
</el-drawer> |
|
|
|
|
|
|
|
<el-drawer append-to-body title="故事选择" :visible.sync="selectMenuVisible" fullscreen :close-on-click-modal="false"> |
|
|
|
<xm-menu-select :is-select-menu="true" @selected="onSelectedMenu" :sel-project="selProject"></xm-menu-select> |
|
|
|
</el-drawer> |
|
|
|
</el-row> |
|
|
|
<el-row class="padding"> |
|
|
|
<el-button @click.native="handleCancel">取消</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus !='closed'" v-loading="load.edit" type="primary" @click.native="handleQuestion(editForm.bugStatus)" :disabled="load.edit==true">暂存</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('confirmed')" :disabled="load.edit==true">确认</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">不是缺陷</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('resolved')" :disabled="load.edit==true">直接解决</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='active'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">直接关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='confirmed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('resolved')" :disabled="load.edit==true">解决</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='confirmed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='resolved'" v-loading="load.edit" type="primary" @click.native="handleQuestion('closed')" :disabled="load.edit==true">关闭</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='resolved'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">重新激活</el-button> |
|
|
|
<el-button v-if="editForm.bugStatus=='closed'" v-loading="load.edit" type="primary" @click.native="handleQuestion('active')" :disabled="load.edit==true">重新激活</el-button> |
|
|
|
</el-row> |
|
|
|
</section> |
|
|
|
</template> |
|
|
|
|
|
|
|
@ -210,7 +214,7 @@ |
|
|
|
xmQuestionHandles:[], |
|
|
|
selectTaskVisible:false, |
|
|
|
flowInfoVisible:false, |
|
|
|
selectMenuVisible:false, |
|
|
|
selectMenuVisible:false, |
|
|
|
/**end 在上面加自定义属性**/ |
|
|
|
}//end return |
|
|
|
},//end data |
|
|
|
@ -228,6 +232,19 @@ |
|
|
|
this.load.edit=true |
|
|
|
let params = Object.assign({}, this.editForm); |
|
|
|
params.tardgetBugStatus=tardgetBugStatus; |
|
|
|
|
|
|
|
if(params.expectResult){ |
|
|
|
params.expectResult=params.expectResult.replace(/<p>\n<br>\n<\p>/g,""); |
|
|
|
params.expectResult=params.expectResult.replace(/<p><br><\/p>/g,""); |
|
|
|
} |
|
|
|
if(params.opStep){ |
|
|
|
params.opStep=params.opStep.replace(/<p>\n<br>\n<\/p>/g,""); |
|
|
|
params.opStep=params.opStep.replace(/<p><br><\/p>/g,""); |
|
|
|
} |
|
|
|
if(params.description){ |
|
|
|
params.description=params.description.replace(/<p>\n<br>\n<\/p>/g,""); |
|
|
|
params.description=params.description.replace(/<p><br><\/p>/g,""); |
|
|
|
} |
|
|
|
editXmQuestion(params).then((res) => { |
|
|
|
this.load.edit=false |
|
|
|
var tips=res.data.tips; |
|
|
|
@ -419,15 +436,18 @@ |
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|
<style lang="scss" scoped> |
|
|
|
.wf-main-context-box { |
|
|
|
border:1px dashed #000; |
|
|
|
margin-bottom: 10px; |
|
|
|
margin-top: 30px; |
|
|
|
padding:10px; |
|
|
|
} |
|
|
|
.wf-main-context p { |
|
|
|
color: #585858; |
|
|
|
display: block; |
|
|
|
margin-block-start: 0em !important; |
|
|
|
margin-block-end: 0em !important; |
|
|
|
margin-inline-start: 0px !important; |
|
|
|
margin-inline-end: 0px !important; |
|
|
|
} |
|
|
|
|
|
|
|
.wf-main-context p > img { |
|
|
|
|