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)
});
});
}