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