diff --git a/resources/assets/js/pages/manage/components/TaskAdd.vue b/resources/assets/js/pages/manage/components/TaskAdd.vue index e6039b138..6d6274a00 100644 --- a/resources/assets/js/pages/manage/components/TaskAdd.vue +++ b/resources/assets/js/pages/manage/components/TaskAdd.vue @@ -202,7 +202,7 @@ - + @@ -224,6 +224,7 @@ export default { data() { return { addData: { + // 基本信息 cascader: [], name: "", content: "", @@ -233,6 +234,7 @@ export default { column_id: 0, times: [], subtasks: [], + // 优先级 p_level: 0, p_name: '', p_color: '', @@ -240,6 +242,7 @@ export default { visibility_appoint: 1, visibility_appointor: [], }, + addDefault: {}, cascaderShow: false, cascaderData: [], @@ -263,6 +266,10 @@ export default { } }, + created() { + this.addDefault = $A.cloneJSON(this.addData); + }, + async mounted() { this.initCascaderData(); await this.initProjectData(); @@ -515,7 +522,7 @@ export default { this.$refs.taskExistTipsRef.isExistTask({ userids: this.addData.owner, timerange: this.addData.times - }).then(res => { + }, 600).then(res => { if (!res) { this.onAdd(again, true) } else { @@ -537,19 +544,7 @@ export default { }); this.$refs.input.focus(); } else { - this.addData = { - cascader: [], - name: "", - content: "", - owner: [], - assist: [], - column_id: 0, - times: [], - subtasks: [], - p_level: 0, - p_name: '', - p_color: '', - }; + this.addData = $A.cloneJSON(this.addDefault); this.close() } }).catch(({msg}) => { diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index ff5fe5085..a11235b2f 100755 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -468,7 +468,7 @@
- +
- +
@@ -627,7 +627,6 @@ export default { updateParams: {}, delayTaskShow: false, - delayTaskLoading: false, delayTaskForm: { type: "hour", time: "24", @@ -1042,39 +1041,44 @@ export default { break; case 'times': - if (this.taskDetail.start_at - && (Math.abs($A.dayjs(this.taskDetail.start_at).unix() - $A.dayjs(params.start_at).unix()) > 60 || Math.abs($A.dayjs(this.taskDetail.end_at).unix() - $A.dayjs(params.end_at).unix()) > 60) - && typeof params.desc === "undefined") { - $A.modalInput({ - title: `修改${this.taskDetail.parent_id > 0 ? '子任务' : '任务'}时间`, - placeholder: `请输入修改备注`, - okText: "确定", - onOk: (desc) => { - if (!desc) { - return `请输入修改备注` - } - this.updateParams = Object.assign(params, {desc}) - this.updateData("times", this.updateParams) - return false - }, + // 没有开始时间,直接保存 + if (!this.taskDetail.start_at) { + this.isExistTask(params).then(() => { + this.updateData("timesSave", params) }); return; } - if (typeof params.existTips === "undefined") { - this.updateParams = Object.assign(params, {existTips: true}) - if (params.start_at && params.end_at && this.$refs.taskExistTipsRef) { - this.$refs.taskExistTipsRef.isExistTask({ - taskid: this.taskDetail.id, - userids: this.taskDetail.owner_userid, - timerange: [params.start_at, params.end_at] - }).then(res => { - if (!res) { - this.updateData("times", this.updateParams) - } - }); - return; - } + // 时间变化未超过1分钟,不保存 + if (Math.abs($A.dayjs(this.taskDetail.start_at).unix() - $A.dayjs(params.start_at).unix()) < 60 && Math.abs($A.dayjs(this.taskDetail.end_at).unix() - $A.dayjs(params.end_at).unix()) < 60) { + return; } + // 已经有备注,直接保存 + if (params.desc) { + this.isExistTask(params).then(() => { + this.updateData("timesSave", params) + }); + return; + } + // 弹出修改备注 + $A.modalInput({ + title: `修改${this.taskDetail.parent_id > 0 ? '子任务' : '任务'}时间`, + placeholder: `请输入修改备注`, + okText: "确定", + onOk: (desc) => { + if (!desc) { + return `请输入修改备注` + } + params.desc = desc; + this.isExistTask(params).then(() => { + this.updateData("timesSave", params) + }) + return false + }, + }) + return; + + case 'timesSave': + action = 'times'; this.$set(this.taskDetail, 'times', [params.start_at, params.end_at, params.desc]) break; @@ -1138,6 +1142,22 @@ export default { }) }, + isExistTask(params) { + if (!params.start_at || !params.end_at) { + return + } + return new Promise(resolve => { + this.updateParams = Object.assign({}, params) + this.$refs.taskExistTipsRef?.isExistTask({ + taskid: this.taskDetail.id, + userids: this.taskDetail.owner_userid, + timerange: [params.start_at, params.end_at] + }, 600).then(res => { + !res && resolve() + }) + }) + }, + customLoop() { let value = this.taskDetail.loop || 1 $A.Modal.confirm({ @@ -1762,33 +1782,17 @@ export default { onDelay(){ this.$refs.formDelayTaskRef.validate((valid) => { if (!valid) { - return; + return } - this.delayTaskLoading = true; - let date = $A.dayjs(this.taskDetail.end_at); - if (this.delayTaskForm.type === 'day') { - date = date.add(this.delayTaskForm.time, 'day'); - } else { - date = date.add(this.delayTaskForm.time, 'hour'); - } - this.$store.dispatch("taskUpdate", { - task_id: this.taskDetail.id, - times: [ - this.taskDetail.start_at, - date.format('YYYY-MM-DD HH:mm:ss'), - this.delayTaskForm.remark, - ], - }).then(({msg}) => { - $A.messageSuccess(msg); - this.delayTaskLoading = false; - this.delayTaskShow = false; - this.delayTaskForm.remark = ''; - this.$store.dispatch("getTaskOne", this.taskDetail.id).catch(() => {}) - $A.IDBSet('delayTaskForm', this.delayTaskForm); - }).catch(({msg}) => { - $A.modalError(msg); - this.delayTaskLoading = false; + const endAt = $A.dayjs(this.taskDetail.end_at).add(this.delayTaskForm.time, this.delayTaskForm.type) + this.updateData('times', { + start_at: this.taskDetail.start_at, + end_at: endAt.format('YYYY-MM-DD HH:mm:ss'), + desc: this.delayTaskForm.remark, }) + this.delayTaskShow = false + this.delayTaskForm.remark = '' + $A.IDBSet('delayTaskForm', this.delayTaskForm) }) }, diff --git a/resources/assets/js/pages/manage/components/TaskExistTips.vue b/resources/assets/js/pages/manage/components/TaskExistTips.vue index d2c2503ac..ee428952e 100644 --- a/resources/assets/js/pages/manage/components/TaskExistTips.vue +++ b/resources/assets/js/pages/manage/components/TaskExistTips.vue @@ -23,7 +23,7 @@
- +
@@ -39,16 +39,14 @@ export default { }, data() { return { - isExist: false, show: false, tipsTask: [], - loadIng: false, } }, methods: { - onAdd() { - this.$emit('onAdd', {}) + onContinue() { + this.$emit('onContinue') this.show = false; }, @@ -68,12 +66,11 @@ export default { return string }, - isExistTask({userids, timerange, taskid}) { - this.isExist = false; + isExistTask({userids, timerange, taskid}, spinner) { return new Promise(async resolve => { if ($A.isArray(timerange) && (!timerange[0] || !timerange[1])) { - resolve(this.isExist) - return false; + resolve(false) + return } this.$store.dispatch("call", { url: 'project/task/easylists', @@ -83,24 +80,26 @@ export default { taskid: taskid }, method: 'get', + spinner, }).then(({data}) => { - if (data.data.length > 0) { - this.show = true; - let taskObj = {} - userids.map(userid => { - data.data.map(h => { - if ((h.task_user || []).map(k => k.owner ? k.userid : 0).indexOf(userid) !== -1) { - if (!taskObj[userid]) { - taskObj[userid] = []; - } - taskObj[userid].push(h); - } - }); - }); - this.tipsTask = taskObj - this.isExist = true; + if (data.data.length <= 0) { + resolve(false) + return } - resolve(this.isExist) + this.show = true; + let taskObj = {} + userids.map(userid => { + data.data.map(h => { + if ((h.task_user || []).map(k => k.owner ? k.userid : 0).indexOf(userid) !== -1) { + if (!taskObj[userid]) { + taskObj[userid] = []; + } + taskObj[userid].push(h); + } + }); + }); + this.tipsTask = taskObj + resolve(true) }); }); }