|
@@ -70,14 +70,31 @@
|
|
|
</el-form>
|
|
|
<el-form :inline="true" :model="form_query" class="demo-form-inline" label-position="right" label-width="100px">
|
|
|
<el-form-item label="需求来源:">
|
|
|
- {{ form_query.sourceTypeName }}
|
|
|
+ <el-select v-model="form_query.sourceType" size="small" filterable placeholder="请选择" @change="changeArea">
|
|
|
+ <el-option v-for="(item,index) in sourceTypeList" :key="item.msg + index" :label="item.msg" :value="item.code" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="优先级:">
|
|
|
- <el-select v-model="form_query.priority" size="small" clearable filterable placeholder="请选择" @change="changeArea">
|
|
|
- <el-option v-for="item in priorityList" :key="item.msg" :label="item.msg" :value="item.code" />
|
|
|
+ <el-select v-model="form_query.priority" size="small" filterable placeholder="请选择" @change="changeArea">
|
|
|
+ <el-option v-for="(item,index) in priorityList" :key="item.msg + index" :label="item.msg" :value="item.code" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否跟版:">
|
|
|
+ <el-select v-model="form_query.dependOnRelease" size="small" filterable placeholder="请选择" @change="changeArea">
|
|
|
+ <el-option v-for="(item,index) in dependList" :key="item.msg + index" :label="item.msg" :value="item.code" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+ <el-form :inline="true" :model="form_query" class="demo-form-inline" label-position="right" label-width="100px">
|
|
|
+ <el-form-item label="跟版客户端:">
|
|
|
+ <el-select v-model="form_query.referredClientType" size="small" :disabled="!!form_query.dependOnRelease" multiple filterable placeholder="请选择" @change="changeArea">
|
|
|
+ <el-option v-for="(item,index) in appClient" :key="item.msg + index" :label="item.msg" :value="item.code" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="PRD链接:" prop="mrdUrl">
|
|
|
+ <span class="PRD-link">{{ form_query.mrdUrl }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
</section>
|
|
|
<section class="main-section">
|
|
@@ -94,8 +111,24 @@
|
|
|
<div class="title-left-icon" />
|
|
|
<div class="title-left-name">评论</div>
|
|
|
</div>
|
|
|
- <div>
|
|
|
- <text-area :id="'pro-target'" :value.sync="form_query.target" :empty-text="'点击'" :input-button="'添加评论'" @change="changeArea" />
|
|
|
+ <div class="detail-info">
|
|
|
+ <ul class="comment-main">
|
|
|
+ <li v-for="(item,index) in comments" :key="'comment'+index">
|
|
|
+ <span class="comment-name">{{ item.commentInfo.name }}</span>
|
|
|
+ <span class="comment-gmtCreater">{{ item.commentInfo.gmtCreater }}</span>
|
|
|
+ <span class="comment-content">{{ item.commentInfo.content }}</span>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <el-input
|
|
|
+ v-model="commentContent"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入评论内容"
|
|
|
+ maxlength="300"
|
|
|
+ show-word-limit
|
|
|
+ :autosize="{ minRows: 3, maxRows: 5}"
|
|
|
+ style="margin-bottom: 20px"
|
|
|
+ />
|
|
|
+ <el-col :span="2" :offset="22"><el-button type="primary" size="small" @click="addComment">发表评论</el-button></el-col>
|
|
|
</div>
|
|
|
</section>
|
|
|
</el-container>
|
|
@@ -169,7 +202,9 @@ import {
|
|
|
deleteRequirement,
|
|
|
showRequirementEnum,
|
|
|
projectListProject,
|
|
|
- iterationList
|
|
|
+ iterationList,
|
|
|
+ getCommentList,
|
|
|
+ addComment
|
|
|
} from '@/api/requirement.js'
|
|
|
import searchPeople from '@/components/select/searchPeople'
|
|
|
import textArea from '@/components/input/textArea'
|
|
@@ -205,6 +240,9 @@ export default {
|
|
|
requirementId: Number(this.$route.query.id), // 需求id
|
|
|
statusList: [], // 状态列表
|
|
|
priorityList: [], // 优先级列表
|
|
|
+ sourceTypeList: [], // 需求来源列表
|
|
|
+ appClient: [], // 跟版客户端列表
|
|
|
+ dependList: [{ msg: '否', code: 0 }, { msg: '是', code: 1 }], // 是否跟版
|
|
|
form_query: {},
|
|
|
display: false, // 设置成员弹框
|
|
|
num: 0, // 成员数量
|
|
@@ -214,7 +252,9 @@ export default {
|
|
|
deleteVisible: false, // 删除需求弹框
|
|
|
task_open: false, // 新建任务弹框
|
|
|
belongProjectList: [], // 所属项目列表
|
|
|
- iterationList: [] // 所属迭代列表
|
|
|
+ iterationList: [], // 所属迭代列表
|
|
|
+ commentContent: null, // 评论内容
|
|
|
+ comments: [] // 评论列表
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -227,6 +267,7 @@ export default {
|
|
|
this.getRequirementById()
|
|
|
this.getBelongProject()
|
|
|
this.getIterationList()
|
|
|
+ this.getCommentList()
|
|
|
this.$store.state.data.status = true
|
|
|
this.$store.state.data.bizId = true
|
|
|
},
|
|
@@ -242,6 +283,7 @@ export default {
|
|
|
if (res.code === 200) {
|
|
|
this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
|
|
|
}
|
|
|
+ this.getRequirementById()
|
|
|
},
|
|
|
async getBelongProject() { // 获取所属项目列表
|
|
|
const res = await projectListProject({ bizId: Number(localStorage.getItem('bizId')) })
|
|
@@ -258,16 +300,15 @@ export default {
|
|
|
if (res.code === 200) {
|
|
|
this.iterationList = res.data.list
|
|
|
}
|
|
|
- this.iterationList.unshift({
|
|
|
- id: -1,
|
|
|
- name: '无'
|
|
|
- })
|
|
|
+ this.iterationList.unshift({ id: -1, name: '无' })
|
|
|
},
|
|
|
- async showRequirementEnum() { // 获取需求状态列表,优先级列表
|
|
|
+ async showRequirementEnum() { // 获取需求状态列表,优先级列表,需求来源
|
|
|
const res = await showRequirementEnum()
|
|
|
if (res.code === 200) {
|
|
|
this.statusList = res.data.requirementStatus
|
|
|
this.priorityList = res.data.priority
|
|
|
+ this.sourceTypeList = res.data.sourceType
|
|
|
+ this.appClient = res.data.appClient
|
|
|
}
|
|
|
},
|
|
|
async getRequirementById() { // 获取需求详情
|
|
@@ -276,6 +317,29 @@ export default {
|
|
|
this.form_query = res.data
|
|
|
}
|
|
|
},
|
|
|
+ async getCommentList() { // 获取需求评论
|
|
|
+ const res = await getCommentList({ type: 4, joinId: this.$route.query.id })
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.comments = res.data
|
|
|
+ this.commentContent = ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async addComment() { // 发表需求评论
|
|
|
+ if (this.commentContent.replace(/\s+/g, '') === '' || this.commentContent === null) {
|
|
|
+ this.$message.warning('评论不能为空')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const user = localStorage.getItem('username')
|
|
|
+ const res = await addComment({
|
|
|
+ commentInfo: { joinId: this.$route.query.id, type: 4, content: this.commentContent },
|
|
|
+ user: { ename: user }
|
|
|
+ })
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.getCommentList()
|
|
|
+ } else {
|
|
|
+ this.$message.warning(res.msg)
|
|
|
+ }
|
|
|
+ },
|
|
|
async updateStatus(status) { // 修改状态
|
|
|
const res = await updateRequirementStatus({
|
|
|
id: this.$route.query.id,
|
|
@@ -285,6 +349,7 @@ export default {
|
|
|
if (res.code === 200) {
|
|
|
this.$message({ message: '状态修改成功', type: 'success', duration: 1000, offset: 150 })
|
|
|
}
|
|
|
+ this.getRequirementById()
|
|
|
},
|
|
|
childVal(val) {
|
|
|
this.num = val
|
|
@@ -354,6 +419,38 @@ export default {
|
|
|
margin-right: 0;
|
|
|
}
|
|
|
}
|
|
|
+ .comment-main {
|
|
|
+ list-style: none;
|
|
|
+ padding: 0px;
|
|
|
+ margin: 0 0 20px 0;
|
|
|
+ li {
|
|
|
+ list-style: none;
|
|
|
+ padding: 0px;
|
|
|
+ margin: 0px;
|
|
|
+ }
|
|
|
+ .comment-name {
|
|
|
+ font-size:14px;
|
|
|
+ color:#333B4A;
|
|
|
+ }
|
|
|
+ .comment-gmtCreater {
|
|
|
+ margin-left:20px;
|
|
|
+ color: #9B9B9B;
|
|
|
+ font-size:12px
|
|
|
+ }
|
|
|
+ .comment-content {
|
|
|
+ margin-left:20px;
|
|
|
+ font-size:14px;
|
|
|
+ color:#333B4A;
|
|
|
+ margin-top: 10px;
|
|
|
+ white-space: pre-line;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .PRD-link {
|
|
|
+ width: 50%;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow:ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|