Browse Source

优化处理

PrinceLee 5 years ago
parent
commit
45f649d29c

+ 1 - 1
src/components/input/textArea.vue

@@ -80,7 +80,7 @@ export default {
   },
   computed: {
     isEmpty() {
-      return this.inputValue === ''
+      return this.inputValue === null || this.inputValue.replace(/\s+/g, '') === ''
     }
   },
   watch: {

+ 3 - 5
src/components/select/searchPeople.vue

@@ -40,11 +40,6 @@ export default {
       default: 'small',
       required: false
     },
-    multiple: {
-      type: Boolean,
-      default: false,
-      required: false
-    },
     disabled: {
       type: Boolean,
       default: false,
@@ -53,6 +48,7 @@ export default {
   },
   data() {
     return {
+      multiple: false, // 是否多选
       searchValue: this.value,
       loading: false,
       options: [],
@@ -65,8 +61,10 @@ export default {
         this.searchValue = newV
         const type = Object.prototype.toString.call(this.searchValue)
         if (type.indexOf('Array') < 0) {
+          this.multiple = false
           this.remoteMethod(newV)
         } else if (type.indexOf('Array') > 0 && newV.length > 0 && this.firstGetArr) {
+          this.multiple = true
           this.initMore(this.searchValue)
           this.firstGetArr = false
         }

+ 1 - 1
src/views/projectManage/projectList/components/scheduleList.vue

@@ -71,7 +71,7 @@
     </el-table>
     <div class="bottom-detail">
       <el-row>排期总汇:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
-      <el-row v-if="scheduleDetail.preOnlineVersion.length>0">预计上线版本:{{ scheduleDetail.preOnlineVersion }}</el-row>
+      <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">预计上线版本:{{ scheduleDetail.preOnlineVersion }}</el-row>
       <el-row v-else>预计上线版本:</el-row>
     </div>
     <modify-schedule

+ 1 - 1
src/views/projectManage/requirement/components/modifySchedule.vue

@@ -8,7 +8,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label="参与人员" prop="peopleList">
-          <search-people :value.sync="form.peopleList" :multiple="true" style="width: 100%" :size="'medium'" :disabled="disabled" />
+          <search-people :value.sync="form.peopleList" style="width: 100%" :size="'medium'" :disabled="disabled" />
         </el-form-item>
         <el-form-item label="排期" prop="dayList">
           <div v-show="form.dayList.length > 0 ">{{ schedule }}(用时<span class="blue">{{ detailDayList.length }}</span>天)</div>

+ 1 - 1
src/views/projectManage/requirement/components/scheduleList.vue

@@ -71,7 +71,7 @@
     </el-table>
     <div class="bottom-detail">
       <el-row>排期总汇:{{ scheduleDetail.startTime | handlerDate }} ~ {{ scheduleDetail.endTime | handlerDate }}</el-row>
-      <el-row v-if="scheduleDetail.preOnlineVersion.length>0">预计上线版本:{{ scheduleDetail.preOnlineVersion }}</el-row>
+      <el-row v-if="scheduleDetail.preOnlineVersion && scheduleDetail.preOnlineVersion.length>0">预计上线版本:{{ scheduleDetail.preOnlineVersion }}</el-row>
       <el-row v-else>预计上线版本:</el-row>
     </div>
     <modify-schedule

+ 109 - 12
src/views/projectManage/requirement/requirementDetail.vue

@@ -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>