qinzhipeng_v 5 年之前
父節點
當前提交
fc88ba9d58

+ 26 - 0
src/api/iteration.js

@@ -19,6 +19,14 @@ export function iterationCreate(data) {
   })
 }
 
+// 获取迭代状态
+export function configShowIterationListEnum() {
+  return request({
+    url: TeamManagement + `/config/showIterationEnum`,
+    method: 'get'
+  })
+}
+
 // 编辑迭代
 export function iterationUpdate(data) {
   return request({
@@ -35,3 +43,21 @@ export function iterationGetIreq(id) {
     method: 'get'
   })
 }
+
+// 删除迭代下需求
+export function iterationDelete(data) {
+  return request({
+    url: TeamManagement + `/iteration/delete`,
+    method: 'post',
+    data
+  })
+}
+
+// 不归属迭代的需求
+export function iterationRequire(data) {
+  return request({
+    url: TeamManagement + `/iteration/listRequirement`,
+    method: 'post',
+    data
+  })
+}

二進制
src/assets/右箭头2.png


二進制
src/assets/感叹@2x.png


+ 4 - 0
src/icons/svg/右箭头.svg

@@ -0,0 +1,4 @@
+
+
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590655507519" class="icon" viewBox="0 0 1559 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1092" xmlns:xlink="http://www.w3.org/1999/xlink" width="24.359375" height="16"><defs><style type="text/css"></style></defs><path d="M73.83371 449.200479A73.83371 73.83371 0 1 1 0 523.034189a73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" opacity=".498" p-id="1093"></path><path d="M365.490488 449.200479a73.83371 73.83371 0 1 1-73.83371 73.83371 73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" opacity=".498" p-id="1094"></path><path d="M657.147266 449.268591A73.83371 73.83371 0 1 1 583.313556 523.102301a73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" opacity=".498" p-id="1095"></path><path d="M948.872156 449.200479a73.83371 73.83371 0 1 1-73.83371 73.83371 73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" opacity=".498" p-id="1096"></path><path d="M1547.510975 472.358654L1087.616868 12.464547a77.511773 77.511773 0 0 0-104.416123 104.416123l395.051217 395.051218-395.051217 395.051217a77.511773 77.511773 0 0 0 104.416123 104.416123l459.894107-459.894106a71.44978 71.44978 0 0 0 0-79.214581z" fill="#409EFF" opacity=".498" p-id="1097"></path></svg>
+		

+ 4 - 0
src/icons/svg/右箭头1.svg

@@ -0,0 +1,4 @@
+
+
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590656433451" class="icon" viewBox="0 0 1559 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1220" xmlns:xlink="http://www.w3.org/1999/xlink" width="24.359375" height="16"><defs><style type="text/css"></style></defs><path d="M73.83371 449.200479A73.83371 73.83371 0 1 1 0 523.034189a73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" p-id="1221"></path><path d="M365.490488 449.200479a73.83371 73.83371 0 1 1-73.83371 73.83371 73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" p-id="1222"></path><path d="M657.147266 449.268591A73.83371 73.83371 0 1 1 583.313556 523.102301a73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" p-id="1223"></path><path d="M948.872156 449.200479a73.83371 73.83371 0 1 1-73.83371 73.83371 73.83371 73.83371 0 0 1 73.83371-73.83371z" fill="#409EFF" p-id="1224"></path><path d="M1547.510975 472.358654L1087.616868 12.464547a77.511773 77.511773 0 0 0-104.416123 104.416123l395.051217 395.051218-395.051217 395.051217a77.511773 77.511773 0 0 0 104.416123 104.416123l459.894107-459.894106a71.44978 71.44978 0 0 0 0-79.214581z" fill="#409EFF" p-id="1225"></path></svg>
+		

+ 1 - 1
src/router/index.js

@@ -125,7 +125,7 @@ export const constantRoutes = [{
     meta: { title: '迭代' }
   },
   {
-    path: 'iteration/:id',
+    path: 'iterationDetails',
     name: '迭代详情',
     hidden: true,
     component: () =>

+ 59 - 10
src/styles/PublicStyle/index.scss

@@ -88,20 +88,69 @@
     }
   }
 
-.priority_color {
-  background-color: darkorchid;
+  .status_color3 { // 迭代状态样式修改(颜色)
+    /deep/ input {
+      color: #D675F0;
+       border: 1px solid #D675F0;
+       border-color: #D675F0 !important;
+           font-weight: 900;
+    }
+     /deep/ .el-input__suffix {
+      color: #D675F0 !important;
+      right: 1px;
+    }
+    /deep/ .el-select__caret {
+      color: #D675F0 !important;
+    }
+  }
+
+  .status_color4 { // 迭代状态样式修改(颜色)
+    /deep/ input {
+      color: #13C2C2;
+       border: 1px solid #13C2C2;
+       border-color: #13C2C2 !important;
+           font-weight: 900;
+    }
+     /deep/ .el-input__suffix {
+      color: #13C2C2 !important;
+      right: 1px;
+    }
+    /deep/ .el-select__caret {
+      color: #13C2C2 !important;
+    }
+  }
+
+  .scroll { // 添加滚动条(记得设置height)
+    overflow:scroll;
+    overflow-x: hidden;
+  }
+
+.priority_color {  // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #F56C6C;
 }
 
-.priority_color1 {
-  background-color: red;
+.priority_color1 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #FF8952;
 }
 
-.priority_color2 {
-  background-color: rgb(50, 204, 140);
+.priority_color2 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #F5E300;
 }
 
-.priority_color3 {
-  background-color: rgb(216, 88, 29);
+.priority_color3 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #7ED321;
+}
+
+.priority_color4 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #61D3B8;
+}
+
+.priority_color5 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color:#69B3FF;
+}
+
+.priority_color6 { // 迭代,项目,任务,需求 优先级背景p0 - p6
+  background-color: #BDBDBD;
 }
 
 .BackgroundCloth { // 迭代,背景 文字颜色页面高度计算 ,dialog水平垂直居中
@@ -128,7 +177,7 @@
     line-height: 24px;
     font-size: 18px;
     color: #303133;
-    padding-left: 45px;
+    padding-left: 10px;
 }
 
 .blueStripe {
@@ -138,6 +187,6 @@
   border-radius:1px;
   position: absolute;
   top: 23px;
-  left: 56px;
+  left: 20px;
 }
 }

+ 56 - 46
src/views/projectManage/iteration/components/PlanningIteration.vue

@@ -5,15 +5,15 @@
         <div class="boxShadow">
           <div style="margin:10px;" class="Layout_space_between">
             <div class="Layout_flex_start" style="margin-left: 10px;">
-              <el-checkbox v-model="checked" style="margin-right: 10px;" />
+              <el-checkbox v-model="checkedLeft" style="margin-right: 10px;" />
               <div class="titNameX">未规划的需求</div>
             </div>
             <el-input v-model="value1" style="width:30%;" clearable size="small" placeholder="搜索需求名称或ID" />
           </div>
           <el-divider />
           <el-container>
-            <el-main class="scroll">
-              <div v-for="(item, index) in tableData" :key="index" class="Layout_space_between" style="margin: 10px 0;">
+            <el-main class="scroll" style="max-height: calc(100vh - 370px);">
+              <div v-for="(item, index) in tableData" :key="index" class="Layout_space_between" style="margin: 10px 0;" @click="checkedOne(checkOne.name)">
                 <el-checkbox v-model="item.checked" @change="getCheck(item)" />
                 <div class="priority">P0</div>
                 <div class="Requirement">我是一个需求</div>
@@ -28,24 +28,27 @@
         </div>
 
         <div>
-          <div class="rectangle">····<i class="el-icon-arrow-right" /></div>
+          <div class="rectangle">
+            <svg-icon icon-class="右箭头" />
+            <svg-icon v-if="checkedLeft.length > 0" icon-class="右箭头1" />
+          </div>
           <div class="rectangle">d</div>
         </div>
 
         <div class="boxShadow">
           <div class="Layout_flex_start" style="margin-left: 20px;">
-            <el-checkbox v-model="checked" />
+            <el-checkbox v-model="checkedRight" :indeterminate="isIndeterminate" @change="handleCheckAllChange" />
             <div class="titNameX" style="margin: 10px; line-height: 32px;">迭代</div>
           </div>
           <el-divider />
           <el-container>
-            <el-main class="scroll">
-              <div v-for="(item, index) in tableData" :key="index" class="Layout_space_between" style="margin: 10px 0;">
-                <el-checkbox v-model="checked" />
-                <div class="priority">P0</div>
-                <div class="Requirement">我是一个需求</div>
-                <div class="RequirementId">REQUIERMENT-{{ item.id }}</div>
-                <div class="RequirementName">{{ item.name }}</div>
+            <el-main class="scroll" style="max-height: calc(100vh - 370px);">
+              <div v-for="(item, index) in RequirementSet" :key="index" class="Layout_space_between" style="margin: 10px 0;">
+                <el-checkbox v-model="item.index" @change="cheRight(item, item.index)" />
+                <div class="priority">{{ item.priorityName }}</div>
+                <div class="Requirement">{{ item.name }}</div>
+                <div class="RequirementId">{{ item.requirementDisplayId }}</div>
+                <div v-for="(val, num) in item.pm" :key="num" class="RequirementName">{{ val.name }}</div>
               </div>
             </el-main>
             <el-footer style="text-align: center;">
@@ -64,35 +67,27 @@
 </template>
 
 <script>
+import '@/styles/PublicStyle/index.scss'
+import { iterationRequire } from '@/api/iteration.js'
 export default {
   name: 'TemplateDialog',
   props: {
-    show: { type: Boolean, default: false }
+    show: { type: Boolean, default: false },
+    iterationId: { type: String, default: null }
   },
   data() {
-    const generateData = _ => {
-      const data = []
-      const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都']
-      const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu']
-      cities.forEach((city, index) => {
-        data.push({
-          label: city,
-          key: index,
-          pinyin: pinyin[index]
-        })
-      })
-      return data
-    }
     return {
-      checked: '',
+      checkedRight: ['测试迭代1'],
+      checkedCities: [],
+      checkedLeft: '',
       tableData: [],
       visibleplanning: this.show,
-      data: generateData(),
+      isIndeterminate: false,
       value1: '',
+      RequirementSet: [],
+      arr: [],
       value: [],
-      filterMethod(query, item) {
-        return item.pinyin.indexOf(query) > -1
-      }
+      checkStatusList: ''
     }
   },
   watch: {
@@ -104,16 +99,33 @@ export default {
     }
   },
   mounted() {
-    setInterval(
-      this.tableData.push({
-        id: 'P0',
-        date: '2016-05-03',
-        name: '朱晓菲',
-        address: '上海市'
-      })
-      , 100)
+    this.getRequirement()
   },
   methods: {
+    handleCheckAllChange(val) {
+      // this.checkedCities = this.RequirementSet
+      // this.isIndeterminate = false
+    },
+    checkedOne: function(value) {
+      // 同显示,判断是否存在的同时,获取其索引(如果存在的话)
+      const idIndex = this.checkStatusList.indexOf(value)
+      if (idIndex >= 0) {
+        // 如果已经包含了该id, 则去除(单选按钮由选中变为非选中状态)
+        this.checkStatusList.splice(idIndex, 1)
+      } else {
+        // 选中该checkbox
+        this.checkStatusList.push(value)
+      }
+    },
+    getRequirement() {
+      iterationRequire({ id: Number(this.iterationId), curIndex: 1, pageSize: 50 }).then(res => {
+        this.tableData = res.data.left.list
+        this.RequirementSet = res.data.right.list
+      })
+    },
+    cheRight(e, ele) {
+      console.log(e, ele, 'dd')
+    },
     getCheck(e) {
       console.log(e)
     },
@@ -169,15 +181,19 @@ export default {
     color:rgba(153,153,153,1);
     opacity:1;
     cursor: pointer;
+    margin-top: 8%;
   }
 
   .rectangle {
     width:50px;
     height:146px;
+    line-height: 146px;
     margin: 10px 0;
+    text-align: center;
     background:rgba(255,255,255,1);
     box-shadow:0px 0px 11px rgba(238,240,245,1);
     opacity:1;
+    cursor: pointer;
   }
 
   .titNameX {
@@ -210,7 +226,7 @@ export default {
   }
 
   .RequirementId {
-    width:135px;
+    width:150px;
     font-size:14px;
     font-family:MicrosoftYaHei;
     line-height:17px;
@@ -226,11 +242,5 @@ export default {
     color:rgba(102,102,102,1);
     opacity:1;
   }
-
-  .scroll {
-    height: 464px;
-    overflow:scroll;
-    overflow-x: hidden;
-  }
  }
  </style>

+ 52 - 23
src/views/projectManage/iteration/components/delete.vue

@@ -1,42 +1,40 @@
 <template>
-  <el-dialog :visible.sync="visible" :show="show" title="移除确认" width="60%" @close="OnClose()">
+  <el-dialog :visible.sync="visible" :show="show" class="deleteClassName task" title="移除确认" width="60%" :close-on-click-modal="false" :destroy-on-close="true" @close="OnClose()">
+    <div class="blueStripe" />
     <div align="center">
-      <span style="color: red;">以下需求是否从当前迭代移除?</span>
-      <!-- <div :class="{'height_one' : types === true , 'height_tow' : types === false }" @scroll.passive="getScroll($event)">
-        <div v-for="(val ,key,i) in MemberList" :key="i">
-          <div class="title">{{ key }}</div>
-          <div v-for="item in val" :key="item.member" class="loop">
-            <span style="display: flex">
-              <el-avatar style="background: #FFF;" class="phoneUrl" :src="item.memberInfoResponse.phoneUrl !== '' ? item.memberInfoResponse.phoneUrl : image_role " />
-              <div style="display: flex; flex-direction: column; margin-left: 10px;">
-                <span class="titName">{{ item.memberInfoResponse.name }}<span v-if="item.isLeader === 1 ? true : false" class="responsibility">负责人</span></span>
-                <span class="userName">{{ item.member }}</span>
-              </div>
-            </span>
-            <el-button class="el-icon-delete colorSty" :class="[item.canDelete === 1 ? ' ' : 'colorStyTow']" :disabled="item.canDelete === 1 " @click="deletePersonnel(item, 2)" />
-          </div>
+      <img style="display: inline-block; width: 50px;" :src="exclamationMark">
+      <div class="deleteName">以下需求是否从当前迭代移除?</div>
+      <div class="scroll" style="height: 200px;">
+        <div v-for="(item, index) in RequirementSet" :key="index" class="Layout_space_between" style="margin: 10px 30px;">
+          <div class="Requirement">REQUIERMENT-{{ item.id }}</div>
+          <div class="Requirement" style="width:367px; text-align: left;">{{ item.name }}</div>
+          <div v-for="(val, num) in item.pm" :key="num" class="Requirement">PM: {{ val.name }}</div>
         </div>
-      </div> -->
+      </div>
     </div>
 
     <span slot="footer" class="dialog-footer">
       <el-button @click="OnClose">取 消</el-button>
-      <el-button type="primary" @click="OnClose">确 定</el-button>
+      <el-button type="primary" @click="skipOff()">确 定</el-button>
     </span>
   </el-dialog>
 </template>
 
 <script>
-import { iterationGetIreq } from '@/api/iteration.js'
+import '@/styles/PublicStyle/index.scss'
+import { iterationRequire, iterationDelete } from '@/api/iteration.js'
+import exclamationMark from '@/assets/感叹@2x.png'
 export default {
   name: 'TemplateDialog',
   props: {
     show: { type: Boolean, default: false },
-    iterationId: { type: Number, default: null }
+    iterationId: { type: String, default: null }
   },
   data() {
     return {
-      visible: this.show
+      exclamationMark: exclamationMark,
+      visible: this.show,
+      RequirementSet: []
     }
   },
   watch: {
@@ -52,14 +50,45 @@ export default {
   },
   methods: {
     getRequirement() {
-      console.log(this.iterationId, 'dscs')
-      iterationGetIreq(this.iterationId).then(res => {
-
+      iterationRequire({ id: Number(this.iterationId), curIndex: 1, pageSize: 50 }).then(res => {
+        this.RequirementSet = res.data.right.list
       })
     },
     OnClose() {
       this.$emit('update:show', false)
+    },
+    skipOff() {
+      iterationDelete({ id: this.iterationId }).then(res => {
+        this.$message({ showClose: true, message: res.msg, type: res.msg })
+        if (res.code === 200) {
+          this.$router.push({ name: '迭代', query: '' })
+        }
+      })
     }
   }
 }
 </script>
+<style lang="scss" scoped>
+.deleteClassName {
+
+  .Requirement {
+    width:150px;
+    font-size:14px;
+    font-family:MicrosoftYaHei;
+    line-height:17px;
+    color:rgba(51,51,51,1);
+    opacity:1;
+  }
+
+  .deleteName {
+    width:274px;
+    font-size:18px;
+    font-family:PingFangSC-Medium;
+    line-height:35px;
+    color:rgba(51,59,74,1);
+    opacity:1;
+    margin: 10px 0;
+  }
+  }
+
+</style>

+ 58 - 22
src/views/projectManage/iteration/details/iterationDetails.vue

@@ -7,16 +7,16 @@
             <span class="themeName">迭代 : {{ iterationData.name | ellipsis }}</span>
           </el-tooltip>
           <el-select
-            v-model="value"
+            v-model="iterationData.status"
             class="public_botton"
             :class="{
-              'status_color': value === 0,
-              'status_color1': value === 1,
-              'status_color2': value === 2
+              'status_color': iterationData.status === 0,
+              'status_color1': iterationData.status === 1,
+              'status_color2': iterationData.status === 2
             }"
             size="mini"
             placeholder="请选择"
-            @change="changeIterationStatus(value)"
+            @change="changeIterationStatus(iterationData.status)"
           >
             <el-option
               v-for="item in statusArr"
@@ -29,7 +29,7 @@
         <div class="Layout_space_between" style="color: #c4c3c3;">
           <el-button size="mini" type="primary" @click="visibleplanning = true">规划迭代</el-button>
           <div class="el-icon-setting partition" @click="showIteration = true" />
-          <div class="el-icon-delete LittleHand" @click="isDialogVisible" />
+          <div class="el-icon-delete LittleHand" @click="dialogVisible = true" />
         </div>
       </div>
     </el-header>
@@ -38,7 +38,7 @@
         <div class="table-box">
           <el-table
             ref="topicTable"
-            :data="tableData"
+            :data="RequirementSet"
             size="small"
             row-key="id"
             :expand-row-keys="expands"
@@ -76,9 +76,9 @@
                 </el-table>
               </template>
             </el-table-column>
-            <el-table-column min-width="20" align="center">
+            <!-- <el-table-column min-width="20" align="center">
               <div class="el-icon-plus" />
-            </el-table-column>
+            </el-table-column> -->
             <el-table-column label="优先级" min-width="80" align="center">
               <template v-slot="scope">
                 <div align="center">
@@ -87,7 +87,12 @@
                     :class="{
                       'priority_color': scope.row.priority === 0,
                       'priority_color1': scope.row.priority === 1,
-                      'priority_color2': scope.row.priority === 2
+                      'priority_color2': scope.row.priority === 2,
+                      'priority_color3': scope.row.priority === 3,
+                      'priority_color4': scope.row.priority === 4,
+                      'priority_color5': scope.row.priority === 5,
+                      'priority_color6': scope.row.priority === 6
+
                     }"
                   >
                     {{ scope.row.priorityName }}
@@ -102,7 +107,21 @@
             </el-table-column>
             <el-table-column label="状态" min-width="100" show-overflow-tooltip align="center">
               <template v-slot="scope">
-                {{ scope.row.status }}
+                <el-select
+                  v-model="scope.row.status"
+                  :class="{
+                    'status_color': scope.row.status === 0,
+                    'status_color1': scope.row.status === 1,
+                    'status_color3': scope.row.status === 3,
+                    'status_color4': scope.row.status === 5,
+                    'status_color2': scope.row.status === 9
+                  }"
+                  class="public_botton"
+                  size="mini"
+                  @change="updateRequirementStatus(scope.row)"
+                >
+                  <el-option v-for="item in requiredArray" :key="item.code" :label="item.msg" :value="item.code" />
+                </el-select>
               </template>
             </el-table-column>
             <el-table-column label="PM" min-width="100" show-overflow-tooltip align="center">
@@ -135,7 +154,7 @@
     <!-- 迭代配置 dialog -->
     <iteration-create title="迭代配置" width="60%" :show.sync="showIteration" :iterations="iterationData" @iteratioFilter="iteratioFilter" />
     <!-- 规划迭代 dialog -->
-    <planning-iteration :show.sync="visibleplanning" />
+    <planning-iteration :show.sync="visibleplanning" :iteration-id="iterationId" />
   </el-container>
 </template>
 
@@ -146,7 +165,8 @@ import iterationCreate from '@/views/projectManage/iteration/components/create.v
 import planningIteration from '@/views/projectManage/iteration/components/PlanningIteration.vue'
 import Sortable from 'sortablejs'
 import image_role from '@/assets/麻将@2x.png'
-import { iterationList, iterationUpdate } from '@/api/iteration.js'
+import { iterationList, iterationUpdate, iterationRequire } from '@/api/iteration.js'
+import { showRequirementEnum, updateRequirementStatus } from '@/api/requirement.js'
 export default {
   components: {
     iterationDelete,
@@ -169,7 +189,7 @@ export default {
       dialogVisible: false, // 删除(弹窗)
       showIteration: false, // 编辑迭代(弹窗)
       visibleplanning: false, // 规划迭代(弹窗)
-      value: 0,
+      requiredArray: [], // 需求状态
       tableData: [
         {
           id: '1',
@@ -209,7 +229,8 @@ export default {
         }
       ],
       expands: [],
-      iterationId: this.$route.query.id,
+      RequirementSet: [], // 迭代下的需求
+      iterationId: this.$route.query.id, // 当前迭代的id
       iterationData: {}
     }
   },
@@ -219,10 +240,16 @@ export default {
     this.setLabel()
   },
   methods: {
-    iteratioFilter() {
-      iterationList({ id: this.iterationId, curIndex: 1, pageSize: 15 }).then(res => {
-        this.iterationData = res.data.list[0]
-      })
+    async iteratioFilter() {
+      const list = iterationList({ id: this.iterationId, curIndex: 1, pageSize: 15 })
+      const requiredList = iterationRequire({ id: Number(this.iterationId), curIndex: 1, pageSize: 50 })
+      const requirementEnum = showRequirementEnum()
+      const listRes = await list
+      const listRequire = await requiredList
+      const requiredstatus = await requirementEnum
+      this.iterationData = listRes.data.list[0]
+      this.RequirementSet = listRequire.data.right.list
+      this.requiredArray = requiredstatus.data.requirementStatus
     },
     changeIterationStatus(e) { // 修改状态
       iterationUpdate({ status: e, id: this.iterationData.id, name: this.iterationData.name }).then(res => {
@@ -246,6 +273,18 @@ export default {
         cellDiv.appendChild(node)
       })
     },
+    updateRequirementStatus(val) {
+      console.log(val, 'ddddd')
+      const modifier = localStorage.getItem('username')
+      updateRequirementStatus({ id: val.id, status: val.status, modifier: modifier }).then(res => {
+        if (res.code === 200) {
+          this.iteratioFilter()
+        } else {
+          this.$message.warning(res.msg)
+        }
+      }
+      )
+    },
     cellDivClick(ele) {
       console.log(ele)
       const expandState = ele.getAttribute('isExpand') // 获取属性is-expand的值
@@ -278,9 +317,6 @@ export default {
       }
       console.log(this.expands, 'dsc')
     },
-    isDialogVisible() {
-      this.dialogVisible = true
-    },
     // 行拖拽
     rowDrop() {
       const tbody = document.querySelector('.el-table__body-wrapper tbody')

+ 10 - 4
src/views/projectManage/iteration/index.vue

@@ -14,7 +14,7 @@
         <div class="Layout_space_between" style="margin: 0 3%;">
           <div class="searchName">状态</div>
           <el-select v-model="filterItems.status" size="small" clearable filterable placeholder="请选择" @change="iteratioFilter(1)">
-            <el-option v-for="item in statusArr" :key="item.value" :label="item.name" :value="item.value" />
+            <el-option v-for="item in statusArr" :key="item.code" :label="item.msg" :value="item.code" />
           </el-select></div>
         <div class="Layout_space_between">
           <div class="searchName">创建人</div>
@@ -50,7 +50,7 @@
               size="mini"
               @change="changeIterationStatus(scope.row)"
             >
-              <el-option v-for="item in statusArr" :key="item.value" :label="item.name" :value="item.value" />
+              <el-option v-for="item in statusArr" :key="item.code" :label="item.msg" :value="item.code" />
             </el-select>
           </template>
         </el-table-column>
@@ -80,7 +80,7 @@
 import '@/styles/PublicStyle/index.scss'
 import iterationCreate from '@/views/projectManage/iteration/components/create.vue'
 import { memberQueryMemberInfoByIDAPorName } from '@/api/taskIndex'
-import { iterationList, iterationUpdate } from '@/api/iteration.js'
+import { iterationList, iterationUpdate, configShowIterationListEnum } from '@/api/iteration.js'
 
 export default {
   components: {
@@ -88,7 +88,7 @@ export default {
   },
   data() {
     return {
-      statusArr: [{ value: 0, name: '未开始' }, { value: 1, name: '进行中' }, { value: 2, name: '已完成' }],
+      statusArr: [],
       iteration: {}, // 筛选项
       curIndex: 1, // 分页
       pageSize: 15, // 分页
@@ -104,6 +104,7 @@ export default {
   },
   mounted() {
     this.iteratioFilter()
+    this.getEnumList()
   },
   methods: {
     iteratioFilter(e, val) { // 筛选change
@@ -162,6 +163,11 @@ export default {
     handleCurrentChange(val) { // 当前页: ${val}
       this.curIndex = val
       this.iteratioFilter()
+    },
+    getEnumList() {
+      configShowIterationListEnum().then(res => {
+        this.statusArr = res.data.iterationStatus
+      })
     }
   }
 }