ソースを参照

任务页排期删除

wangziqian 5 年 前
コミット
23781296b9

+ 0 - 1
src/views/projectManage/projectList/components/modifySchedule.vue

@@ -222,7 +222,6 @@ export default {
         desc: obj.desc,
         dayList: [obj.dayList[0], obj.dayList[obj.dayList.length - 1]] // 日期列表
       }
-      console.log(this.form)
       this.detailDayList = obj.dayList || []
       this.schedule = obj.seperateDaysNoHoliday
       this.tasksDetailList = obj.taskObjectList || []

+ 103 - 6
src/views/projectManage/taskList/components/modifySchedule.vue

@@ -1,6 +1,15 @@
 <template>
-  <normal-dialog :show-dialog.sync="show" :title="title" :is-default-close="false" @confirm="confirmForm()" @cancel="cancel()">
-    <article>
+  <normal-dialog
+    :show-dialog.sync="show"
+    :title="title"
+    :is-default-close="false"
+    :submit-button="isDeleteStatus?'我知道了,删除':'确定'"
+    :buttom-type="isDeleteStatus?'danger':'primary'"
+    width="55%"
+    @confirm="confirmForm()"
+    @cancel="cancel()"
+  >
+    <article v-if="!isDeleteStatus">
       <el-form ref="form" :model="form" :rules="form_rules" label-width="100px" :label-position="'left'">
         <el-form-item label="排期类型" prop="type">
           <el-select v-model="form.type" clearable placeholder="请选择" style="width: 100%" :disabled="disabled">
@@ -53,6 +62,29 @@
         </div>
       </div>
     </article>
+    <article v-if="isDeleteStatus">
+      <div class="danger-img">
+        <img :src="dangerImg">
+      </div>
+      <div class="delete-title">
+        执行删除后,所有关联任务下的此排期均会被删除,并无法恢复,请谨慎操作!
+      </div>
+      <div class="people-list-show">
+        <p>参与人:</p>
+        <span>{{ peopleObjectList.join(',') }}</span>
+      </div>
+      <div class="task-list-show">
+        <p>关联任务:</p>
+        <div v-for="item in tasksDetailList" :key="'task'+item.id" class="task-list-item">
+          <div v-if="item.taskIdSting" class="item-id">{{ item.taskIdSting }}</div>
+          <div v-if="item.taskId" class="item-id">{{ item.taskId }}</div>
+          <div class="item-name"><span>{{ item.name }}</span></div>
+          <div class="item-qa">测试负责人:<span>{{ item.qaObject !== null?item.qaObject.name: '' }}</span></div>
+          <div class="item-rd">开发负责人:<span>{{ item.rdObject !== null?item.rdObject.name: '' }}</span></div>
+        </div>
+      </div>
+    </article>
+  </normal-dialog>
   </normal-dialog>
 </template>
 <script>
@@ -61,7 +93,8 @@ import searchPeople from '@/components/select/searchPeople'
 import normalDialog from '@/components/dialog/normalDialog'
 import selDatePicker from '@/components/picker/SelDatePicker'
 import { taskList as allTaskList, configShowTaskEnum } from '@/api/taskIndex'
-import { getSeprateDayInfo, scheduleCreate, scheduleGet, scheduleUpdate } from '@/api/projectViewDetails'
+import { getSeprateDayInfo, scheduleCreate, scheduleGet, scheduleUpdate, scheduleDelete } from '@/api/projectViewDetails'
+import danger from '@/assets/感叹@2x.png'
 export default {
   components: {
     searchPeople,
@@ -88,10 +121,16 @@ export default {
       type: Boolean,
       default: false,
       required: false
+    },
+    isDelete: {// 是否删除状态
+      type: Boolean,
+      default: false,
+      required: false
     }
   },
   data() {
     return {
+      dangerImg: danger,
       form_rules: {
         type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
         peopleList: [{ required: true, message: '参与人员不能为空', trigger: 'blur' }],
@@ -99,6 +138,7 @@ export default {
         taskList: [{ required: true, message: '关联任务不能为空', trigger: 'blur' }]
       },
       show: this.visible,
+      isDeleteStatus: this.isDelete,
       taskScheduleEvent: [],
       form: {
         bizId: localStorage.getItem('bizId'),
@@ -113,7 +153,8 @@ export default {
       selectTask: null, // 选择的任务id
       tasksOptions: [], // 任务下拉选项
       tasksDetailList: [], // 已有任务项目
-      loading: false
+      loading: false,
+      peopleObjectList: [] // 参与人
     }
   },
   watch: {
@@ -133,12 +174,21 @@ export default {
     },
     title(newV, oldV) {
       this.title = newV
+    },
+    isDelete: {
+      handler(newV, old) {
+        this.isDeleteStatus = newV
+      },
+      immediate: true,
+      deep: true
     }
   },
   created() {
     this.getType()
     this.remoteMethod()
-    this.init()
+    if (this.detailData === null) {
+      this.init()
+    }
   },
   methods: {
     async init() {
@@ -169,10 +219,10 @@ export default {
         desc: obj.desc,
         dayList: [obj.dayList[0], obj.dayList[obj.dayList.length - 1]] // 日期列表
       }
-      console.log(this.form)
       this.detailDayList = obj.dayList || []
       this.schedule = obj.seperateDaysNoHoliday
       this.tasksDetailList = obj.taskObjectList || []
+      this.peopleObjectList = obj.peopleObjectList.map(item => item.name) || []
     },
     async getType() {
       const resEnum = await configShowTaskEnum()
@@ -197,6 +247,7 @@ export default {
       const isEx = this.tasksDetailList.find(item => item.id === id)
       if (isEx) {
         this.$message({ message: '任务已存在', type: 'warning', duration: 1000, offset: 150 })
+        this.selectTask = null
         return false
       }
       const res = this.tasksOptions.find(item => {
@@ -239,7 +290,19 @@ export default {
       this.$emit('update')
       this.cancel()
     },
+    async scheduleDelete() { // 删除排期
+      const res = await scheduleDelete(this.form.id)
+      if (res.code === 200) {
+        this.$message({ message: '删除成功', type: 'success', duration: 1000, offset: 150 })
+      }
+      this.$emit('update')
+      this.cancel()
+    },
     confirmForm() { // 确认提交表单
+      if (this.isDeleteStatus) {
+        this.scheduleDelete()
+        return
+      }
       this.$refs['form'].validate((valid) => {
         if (valid) {
           const params = _.cloneDeep(this.form)
@@ -250,7 +313,9 @@ export default {
     },
     cancel() { // 关闭弹框
       this.show = false
+      this.isDeleteStatus = false
       this.$emit('update:visible', this.show)
+      this.$emit('update:isDelete', this.isDeleteStatus)
     }
   }
 }
@@ -303,4 +368,36 @@ article {
     }
   }
 }
+.danger-img {
+  width: 100%;
+  padding: 0 60px 50px 60px;
+  margin-bottom: 50px;
+  position: relative;
+  img {
+    height: 50px;
+    width: 50px;
+    position: absolute;
+    left: 50%;
+    transform: translate(-50%,0);
+  }
+}
+.delete-title {
+  width: 100%;
+  padding: 0 60px 100px 60px;
+  color: #333B4A;
+  font-size: 18px;
+  text-align: center;
+}
+.people-list-show {
+  width: 100%;
+  padding: 0 60px 50px 60px;
+  p {
+    color: #666666;
+    font-size: 14px;
+    margin-bottom: 20px;
+  }
+  span {
+    color: #333333;
+  }
+}
 </style>

+ 10 - 23
src/views/projectManage/taskList/components/scheduleList.vue

@@ -66,7 +66,7 @@
       >
         <template slot-scope="scope">
           <el-button type="text" size="small" @click="editSchedule(scope.row)">编辑</el-button>
-          <el-button type="text" size="small" @click="confirmDel(scope.row)">删除</el-button>
+          <el-button type="text" size="small" @click="deleteSchedule(scope.row)">删除</el-button>
         </template>
       </el-table-column>
 
@@ -82,6 +82,7 @@
     <modify-schedule
       v-if="visibleSchedule"
       :visible.sync="visibleSchedule"
+      :is-delete.sync="isDelete"
       :detail-data="detailData"
       :title="DialogTitle"
       @update="listByTask(id)"
@@ -92,7 +93,7 @@
 import Sortable from 'sortablejs'
 import moment from 'moment'
 import 'moment/locale/zh-cn'
-import { listByTask, scheduleDelete, sortForTask } from '@/api/projectViewDetails'
+import { listByTask, sortForTask } from '@/api/projectViewDetails'
 import modifySchedule from './modifySchedule'
 import move from '@/assets/麻将@2x.png'
 export default {
@@ -129,7 +130,8 @@ export default {
       visibleSchedule: false,
       detailData: null,
       taskScheduleEvent: [], // 排期类型
-      DialogTitle: '新建排期'
+      DialogTitle: '新建排期',
+      isDelete: false // 删除排期操作
     }
   },
   watch: {
@@ -187,26 +189,11 @@ export default {
       this.DialogTitle = '新建排期'
       this.visibleSchedule = true
     },
-    confirmDel(row) {
-      this.$confirm('是否删除排期?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.deleteSchedule(row)
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
-        })
-      })
-    },
-    async deleteSchedule(row) { // 删除排期
-      const res = await scheduleDelete(row.id)
-      if (res.code === 200) {
-        this.listByTask(this.id)
-        this.$message({ message: '删除成功', type: 'success', duration: 1000, offset: 150 })
-      }
+    deleteSchedule(row) { // 删除排期
+      this.DialogTitle = '删除排期'
+      this.isDelete = true
+      this.visibleSchedule = true
+      this.detailData = row
     },
     editSchedule(row) { // 编辑排期
       this.DialogTitle = '编辑排期'