mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 11:19:56 +00:00
perf: 优化创建任务提示时间冲突的逻辑
This commit is contained in:
parent
a4525d4519
commit
d58246b255
@ -202,7 +202,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<TaskExistTips ref="taskExistTipsRef" @onAdd="onAdd(again,true)"/>
|
<TaskExistTips ref="taskExistTipsRef" @onContinue="onAdd(again, true)"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -224,6 +224,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
addData: {
|
addData: {
|
||||||
|
// 基本信息
|
||||||
cascader: [],
|
cascader: [],
|
||||||
name: "",
|
name: "",
|
||||||
content: "",
|
content: "",
|
||||||
@ -233,6 +234,7 @@ export default {
|
|||||||
column_id: 0,
|
column_id: 0,
|
||||||
times: [],
|
times: [],
|
||||||
subtasks: [],
|
subtasks: [],
|
||||||
|
// 优先级
|
||||||
p_level: 0,
|
p_level: 0,
|
||||||
p_name: '',
|
p_name: '',
|
||||||
p_color: '',
|
p_color: '',
|
||||||
@ -240,6 +242,7 @@ export default {
|
|||||||
visibility_appoint: 1,
|
visibility_appoint: 1,
|
||||||
visibility_appointor: [],
|
visibility_appointor: [],
|
||||||
},
|
},
|
||||||
|
addDefault: {},
|
||||||
|
|
||||||
cascaderShow: false,
|
cascaderShow: false,
|
||||||
cascaderData: [],
|
cascaderData: [],
|
||||||
@ -263,6 +266,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.addDefault = $A.cloneJSON(this.addData);
|
||||||
|
},
|
||||||
|
|
||||||
async mounted() {
|
async mounted() {
|
||||||
this.initCascaderData();
|
this.initCascaderData();
|
||||||
await this.initProjectData();
|
await this.initProjectData();
|
||||||
@ -515,7 +522,7 @@ export default {
|
|||||||
this.$refs.taskExistTipsRef.isExistTask({
|
this.$refs.taskExistTipsRef.isExistTask({
|
||||||
userids: this.addData.owner,
|
userids: this.addData.owner,
|
||||||
timerange: this.addData.times
|
timerange: this.addData.times
|
||||||
}).then(res => {
|
}, 600).then(res => {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
this.onAdd(again, true)
|
this.onAdd(again, true)
|
||||||
} else {
|
} else {
|
||||||
@ -537,19 +544,7 @@ export default {
|
|||||||
});
|
});
|
||||||
this.$refs.input.focus();
|
this.$refs.input.focus();
|
||||||
} else {
|
} else {
|
||||||
this.addData = {
|
this.addData = $A.cloneJSON(this.addDefault);
|
||||||
cascader: [],
|
|
||||||
name: "",
|
|
||||||
content: "",
|
|
||||||
owner: [],
|
|
||||||
assist: [],
|
|
||||||
column_id: 0,
|
|
||||||
times: [],
|
|
||||||
subtasks: [],
|
|
||||||
p_level: 0,
|
|
||||||
p_name: '',
|
|
||||||
p_color: '',
|
|
||||||
};
|
|
||||||
this.close()
|
this.close()
|
||||||
}
|
}
|
||||||
}).catch(({msg}) => {
|
}).catch(({msg}) => {
|
||||||
|
|||||||
@ -468,7 +468,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="!taskDetail.id" class="task-load"><Loading/></div>
|
<div v-if="!taskDetail.id" class="task-load"><Loading/></div>
|
||||||
<!-- 提示 -->
|
<!-- 提示 -->
|
||||||
<TaskExistTips ref="taskExistTipsRef" @onAdd="updateData('times', updateParams)"/>
|
<TaskExistTips ref="taskExistTipsRef" @onContinue="updateData('timesSave', updateParams)"/>
|
||||||
<!--任务延期-->
|
<!--任务延期-->
|
||||||
<Modal
|
<Modal
|
||||||
v-model="delayTaskShow"
|
v-model="delayTaskShow"
|
||||||
@ -495,7 +495,7 @@
|
|||||||
</Form>
|
</Form>
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<Button @click="delayTaskShow=false">{{$L('关闭')}}</Button>
|
<Button @click="delayTaskShow=false">{{$L('关闭')}}</Button>
|
||||||
<Button type="primary" @click="onDelay" :loading="delayTaskLoading">{{$L('确定')}}</Button>
|
<Button type="primary" @click="onDelay">{{$L('确定')}}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
<!--任务描述历史记录-->
|
<!--任务描述历史记录-->
|
||||||
@ -627,7 +627,6 @@ export default {
|
|||||||
updateParams: {},
|
updateParams: {},
|
||||||
|
|
||||||
delayTaskShow: false,
|
delayTaskShow: false,
|
||||||
delayTaskLoading: false,
|
|
||||||
delayTaskForm: {
|
delayTaskForm: {
|
||||||
type: "hour",
|
type: "hour",
|
||||||
time: "24",
|
time: "24",
|
||||||
@ -1042,39 +1041,44 @@ export default {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'times':
|
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)
|
if (!this.taskDetail.start_at) {
|
||||||
&& typeof params.desc === "undefined") {
|
this.isExistTask(params).then(() => {
|
||||||
$A.modalInput({
|
this.updateData("timesSave", params)
|
||||||
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
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (typeof params.existTips === "undefined") {
|
// 时间变化未超过1分钟,不保存
|
||||||
this.updateParams = Object.assign(params, {existTips: true})
|
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) {
|
||||||
if (params.start_at && params.end_at && this.$refs.taskExistTipsRef) {
|
return;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// 已经有备注,直接保存
|
||||||
|
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])
|
this.$set(this.taskDetail, 'times', [params.start_at, params.end_at, params.desc])
|
||||||
break;
|
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() {
|
customLoop() {
|
||||||
let value = this.taskDetail.loop || 1
|
let value = this.taskDetail.loop || 1
|
||||||
$A.Modal.confirm({
|
$A.Modal.confirm({
|
||||||
@ -1762,33 +1782,17 @@ export default {
|
|||||||
onDelay(){
|
onDelay(){
|
||||||
this.$refs.formDelayTaskRef.validate((valid) => {
|
this.$refs.formDelayTaskRef.validate((valid) => {
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
this.delayTaskLoading = true;
|
const endAt = $A.dayjs(this.taskDetail.end_at).add(this.delayTaskForm.time, this.delayTaskForm.type)
|
||||||
let date = $A.dayjs(this.taskDetail.end_at);
|
this.updateData('times', {
|
||||||
if (this.delayTaskForm.type === 'day') {
|
start_at: this.taskDetail.start_at,
|
||||||
date = date.add(this.delayTaskForm.time, 'day');
|
end_at: endAt.format('YYYY-MM-DD HH:mm:ss'),
|
||||||
} else {
|
desc: this.delayTaskForm.remark,
|
||||||
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;
|
|
||||||
})
|
})
|
||||||
|
this.delayTaskShow = false
|
||||||
|
this.delayTaskForm.remark = ''
|
||||||
|
$A.IDBSet('delayTaskForm', this.delayTaskForm)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
</List>
|
</List>
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<Button type="default" @click="show = false">{{ $L('取消') }}</Button>
|
<Button type="default" @click="show = false">{{ $L('取消') }}</Button>
|
||||||
<Button type="primary" @click="onAdd">{{ $L('忽略并继续') }}</Button>
|
<Button type="primary" @click="onContinue">{{ $L('忽略并继续') }}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
</template>
|
</template>
|
||||||
@ -39,16 +39,14 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isExist: false,
|
|
||||||
show: false,
|
show: false,
|
||||||
tipsTask: [],
|
tipsTask: [],
|
||||||
loadIng: false,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onAdd() {
|
onContinue() {
|
||||||
this.$emit('onAdd', {})
|
this.$emit('onContinue')
|
||||||
this.show = false;
|
this.show = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -68,12 +66,11 @@ export default {
|
|||||||
return string
|
return string
|
||||||
},
|
},
|
||||||
|
|
||||||
isExistTask({userids, timerange, taskid}) {
|
isExistTask({userids, timerange, taskid}, spinner) {
|
||||||
this.isExist = false;
|
|
||||||
return new Promise(async resolve => {
|
return new Promise(async resolve => {
|
||||||
if ($A.isArray(timerange) && (!timerange[0] || !timerange[1])) {
|
if ($A.isArray(timerange) && (!timerange[0] || !timerange[1])) {
|
||||||
resolve(this.isExist)
|
resolve(false)
|
||||||
return false;
|
return
|
||||||
}
|
}
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'project/task/easylists',
|
url: 'project/task/easylists',
|
||||||
@ -83,24 +80,26 @@ export default {
|
|||||||
taskid: taskid
|
taskid: taskid
|
||||||
},
|
},
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
spinner,
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
if (data.data.length > 0) {
|
if (data.data.length <= 0) {
|
||||||
this.show = true;
|
resolve(false)
|
||||||
let taskObj = {}
|
return
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
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)
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user