mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-14 12:42:51 +00:00
feat:添加任务 - 提示功能 - 100%
This commit is contained in:
parent
f8e70bd7f7
commit
874bf4b051
@ -1249,4 +1249,6 @@ Markdown 格式发送
|
|||||||
继续
|
继续
|
||||||
退出
|
退出
|
||||||
会议组件加载失败!
|
会议组件加载失败!
|
||||||
以下人员以存在任务
|
|
||||||
|
以下人员已存在任务
|
||||||
|
确定
|
||||||
@ -16883,5 +16883,16 @@
|
|||||||
"de": "Geladen mit fallender fracht des meetings!",
|
"de": "Geladen mit fallender fracht des meetings!",
|
||||||
"fr": "Échec du chargement du composant conférence!",
|
"fr": "Échec du chargement du composant conférence!",
|
||||||
"id": "Perakitan perakitan gagal!"
|
"id": "Perakitan perakitan gagal!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "以下人员已存在任务",
|
||||||
|
"zh": "",
|
||||||
|
"zh-CHT": "以下人員已存在任務",
|
||||||
|
"en": "The following personnel already have tasks",
|
||||||
|
"ko": "다음 구성원에 대한 작업이 이미 있습니다",
|
||||||
|
"ja": "次の者には任務があります",
|
||||||
|
"de": "Die folgenden personen haben den auftrag erledigt",
|
||||||
|
"fr": "Les personnes suivantes ont déjà une mission",
|
||||||
|
"id": "Yang berikut ini ada tugas"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
2
public/language/web/de.js
vendored
2
public/language/web/de.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/en.js
vendored
2
public/language/web/en.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/fr.js
vendored
2
public/language/web/fr.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/id.js
vendored
2
public/language/web/id.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/ja.js
vendored
2
public/language/web/ja.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/key.js
vendored
2
public/language/web/key.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/ko.js
vendored
2
public/language/web/ko.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/zh-CHT.js
vendored
2
public/language/web/zh-CHT.js
vendored
File diff suppressed because one or more lines are too long
2
public/language/web/zh.js
vendored
2
public/language/web/zh.js
vendored
@ -1 +1 @@
|
|||||||
if(typeof window.LANGUAGE_DATA==="undefined")window.LANGUAGE_DATA={};window.LANGUAGE_DATA["zh"]=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]
|
if(typeof window.LANGUAGE_DATA==="undefined")window.LANGUAGE_DATA={};window.LANGUAGE_DATA["zh"]=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]
|
||||||
@ -200,27 +200,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Modal v-model="showTips" :title="$L('以下人员已存在任务')" >
|
<TaskExistTips ref="taskExistTipsRef" @onAdd="onAdd(again,true)"/>
|
||||||
<List :split="false" size="small">
|
|
||||||
<ListItem v-for="(items, userid) in tipsTask" :key="userid" >
|
|
||||||
<div style="flex: 1;width: 100%;">
|
|
||||||
<UserAvatar :userid="userid" :size="28" :show-icon="true" :show-name="true" tooltipDisabled/>
|
|
||||||
<div style="margin-left: 35px;margin-top: 10px;width: calc(100% - 35px);" v-for="(item, key) in items" :key="key" >
|
|
||||||
<div style="min-width: 135px; flex: 1; white-space: nowrap; text-overflow: ellipsis;overflow: hidden;">
|
|
||||||
<span style="color: #A7ABB5;">【{{item.project_name}}】</span>
|
|
||||||
<span>{{item.name}}</span>
|
|
||||||
</div>
|
|
||||||
<div style="min-width: 135px;text-align: left;">{{getCutTime(item)}}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ListItem>
|
|
||||||
</List>
|
|
||||||
<div slot="footer">
|
|
||||||
<Button type="default" @click="showTips=false">{{$L('取消')}}</Button>
|
|
||||||
<Button type="primary" :loading="loadIng > 0" @click="onAdd(again,true)">{{$L('确认添加')}}</Button>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -228,10 +208,11 @@
|
|||||||
import TEditor from "../../../components/TEditor";
|
import TEditor from "../../../components/TEditor";
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import UserSelect from "../../../components/UserSelect.vue";
|
import UserSelect from "../../../components/UserSelect.vue";
|
||||||
|
import TaskExistTips from "./TaskExistTips.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TaskAdd",
|
name: "TaskAdd",
|
||||||
components: {UserSelect, TEditor},
|
components: {UserSelect, TEditor, TaskExistTips},
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -299,9 +280,7 @@ export default {
|
|||||||
|
|
||||||
beforeClose: [],
|
beforeClose: [],
|
||||||
|
|
||||||
again: false,
|
again: false
|
||||||
showTips: false,
|
|
||||||
tipsTask: [],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -541,64 +520,27 @@ export default {
|
|||||||
this.addData = Object.assign({}, this.addData, data);
|
this.addData = Object.assign({}, this.addData, data);
|
||||||
},
|
},
|
||||||
|
|
||||||
getCutTime(item) {
|
|
||||||
let start_at = $A.Date(item.start_at, true);
|
|
||||||
let end_at = $A.Date(item.end_at, true);
|
|
||||||
let string = "";
|
|
||||||
console.log(start_at)
|
|
||||||
if ($A.formatDate('Y/m/d', start_at) == $A.formatDate('Y/m/d', end_at)) {
|
|
||||||
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('H:i', end_at)
|
|
||||||
} else if ($A.formatDate('Y', start_at) == $A.formatDate('Y', end_at)) {
|
|
||||||
string = $A.formatDate('Y/m/d', start_at) + " ~ " + $A.formatDate('m/d', end_at)
|
|
||||||
string = string.replace(/( 00:00| 23:59)/g, "")
|
|
||||||
} else {
|
|
||||||
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('Y/m/d H:i', end_at)
|
|
||||||
string = string.replace(/( 00:00| 23:59)/g, "")
|
|
||||||
}
|
|
||||||
return string
|
|
||||||
},
|
|
||||||
|
|
||||||
async onAddBefore(){
|
|
||||||
let isExistTask = false;
|
|
||||||
await this.$store.dispatch("call", {
|
|
||||||
url: 'project/task/easylists',
|
|
||||||
data: {
|
|
||||||
userid: this.addData.owner,
|
|
||||||
timerange: this.addData.times
|
|
||||||
},
|
|
||||||
method: 'get',
|
|
||||||
}).then(({data}) => {
|
|
||||||
if(data.data.length > 0) {
|
|
||||||
this.showTips = true;
|
|
||||||
let taskObj = {}
|
|
||||||
this.addData.owner.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
|
|
||||||
isExistTask = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return isExistTask
|
|
||||||
},
|
|
||||||
|
|
||||||
async onAdd(again,affirm=false) {
|
async onAdd(again,affirm=false) {
|
||||||
if (!this.addData.name) {
|
if (!this.addData.name) {
|
||||||
$A.messageError("任务描述不能为空");
|
$A.messageError("任务描述不能为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.loadIng++;
|
||||||
|
|
||||||
// 存在任务提示
|
// 存在任务提示
|
||||||
this.showTips = false;
|
if(!affirm && this.addData.owner.length>0){
|
||||||
this.again = false;
|
this.$refs['taskExistTipsRef'].isExistTask({
|
||||||
if(!affirm && this.addData.owner.length>0 && await this.onAddBefore()){
|
userids: this.addData.owner,
|
||||||
this.again = again;
|
timerange: this.addData.times
|
||||||
|
}).then(res=>{
|
||||||
|
if(!res){
|
||||||
|
this.onAdd(again,true)
|
||||||
|
}else{
|
||||||
|
this.loadIng--;
|
||||||
|
this.again = again
|
||||||
|
}
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -454,26 +454,7 @@
|
|||||||
<div v-if="!taskDetail.id" class="task-load"><Loading/></div>
|
<div v-if="!taskDetail.id" class="task-load"><Loading/></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 提示 -->
|
<!-- 提示 -->
|
||||||
<Modal v-model="showTips" title="提示" >
|
<TaskExistTips ref="taskExistTipsRef" @onAdd="updateData('times', updateParams)"/>
|
||||||
<p>以下人员时间段【】中已存在任务</p>
|
|
||||||
<List :split="false" size="small">
|
|
||||||
<ListItem v-for="(item, key) in tipsTaskList" :key="key">
|
|
||||||
<UserAvatar v-for="(user, index) in item.task_user"
|
|
||||||
v-if="(taskDetail.owner_userid || []).indexOf(user.userid) !== -1"
|
|
||||||
:userid="user.userid"
|
|
||||||
:size="28"
|
|
||||||
:show-icon="true"
|
|
||||||
:show-name="false"
|
|
||||||
:key="index"
|
|
||||||
/>
|
|
||||||
<p style="margin-left: 10px;"> 项目:{{item.project_name}} | 任务:{{item.name}}</p>
|
|
||||||
</ListItem>
|
|
||||||
</List>
|
|
||||||
<div slot="footer">
|
|
||||||
<Button type="default" @click="showTips=false">{{$L('取消')}}</Button>
|
|
||||||
<Button type="primary" :loading="loadIng > 0" @click="onAdd()">{{$L('确认添加')}}</Button>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -488,12 +469,21 @@ import {Store} from "le5le-store";
|
|||||||
import TaskMenu from "./TaskMenu";
|
import TaskMenu from "./TaskMenu";
|
||||||
import ChatInput from "./ChatInput";
|
import ChatInput from "./ChatInput";
|
||||||
import UserSelect from "../../../components/UserSelect.vue";
|
import UserSelect from "../../../components/UserSelect.vue";
|
||||||
|
import TaskExistTips from "./TaskExistTips.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TaskDetail",
|
name: "TaskDetail",
|
||||||
components: {
|
components: {
|
||||||
UserSelect,
|
UserSelect,
|
||||||
ChatInput, TaskMenu, ProjectLog, DialogWrapper, TaskUpload, TaskPriority, TEditor},
|
TaskExistTips,
|
||||||
|
ChatInput,
|
||||||
|
TaskMenu,
|
||||||
|
ProjectLog,
|
||||||
|
DialogWrapper,
|
||||||
|
TaskUpload,
|
||||||
|
TaskPriority,
|
||||||
|
TEditor
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
taskId: {
|
taskId: {
|
||||||
type: Number,
|
type: Number,
|
||||||
@ -598,9 +588,7 @@ export default {
|
|||||||
{key: 'custom', label: '自定义'},
|
{key: 'custom', label: '自定义'},
|
||||||
],
|
],
|
||||||
|
|
||||||
showTips: false,
|
updateParams: {},
|
||||||
tipsTaskList: [],
|
|
||||||
loadIng: 0,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -729,8 +717,6 @@ export default {
|
|||||||
let start_at = $A.Date(taskDetail.start_at, true);
|
let start_at = $A.Date(taskDetail.start_at, true);
|
||||||
let end_at = $A.Date(taskDetail.end_at, true);
|
let end_at = $A.Date(taskDetail.end_at, true);
|
||||||
let string = "";
|
let string = "";
|
||||||
console.log(start_at)
|
|
||||||
console.log(end_at)
|
|
||||||
if ($A.formatDate('Y/m/d', start_at) == $A.formatDate('Y/m/d', end_at)) {
|
if ($A.formatDate('Y/m/d', start_at) == $A.formatDate('Y/m/d', end_at)) {
|
||||||
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('H:i', end_at)
|
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('H:i', end_at)
|
||||||
} else if ($A.formatDate('Y', start_at) == $A.formatDate('Y', end_at)) {
|
} else if ($A.formatDate('Y', start_at) == $A.formatDate('Y', end_at)) {
|
||||||
@ -964,26 +950,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async onUpdateDataBefore(params){
|
|
||||||
let isExistTask = false;
|
|
||||||
this.$store.dispatch("call", {
|
|
||||||
url: 'project/task/easylists',
|
|
||||||
data: {
|
|
||||||
taskid: this.taskDetail.id,
|
|
||||||
userid: this.taskDetail.owner_userid,
|
|
||||||
timerange: [params.start_at,params.end_at]
|
|
||||||
},
|
|
||||||
method: 'get',
|
|
||||||
}).then(({data}) => {
|
|
||||||
if(data.data.length > 0) {
|
|
||||||
this.showTips = true;
|
|
||||||
this.tipsTaskList = data.data
|
|
||||||
isExistTask = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return isExistTask
|
|
||||||
},
|
|
||||||
|
|
||||||
updateData(action, params) {
|
updateData(action, params) {
|
||||||
let successCallback = null;
|
let successCallback = null;
|
||||||
switch (action) {
|
switch (action) {
|
||||||
@ -1006,16 +972,16 @@ export default {
|
|||||||
if (!desc) {
|
if (!desc) {
|
||||||
return `请输入修改备注`
|
return `请输入修改备注`
|
||||||
}
|
}
|
||||||
|
this.updateParams = Object.assign(params, {desc})
|
||||||
console.log( this.onUpdateDataBefore(params) )
|
this.$refs['taskExistTipsRef'].isExistTask({
|
||||||
|
taskid: this.taskDetail.id,
|
||||||
if(this.taskDetail.owner_userid.length>0 && this.onUpdateDataBefore(params)){
|
userids: this.taskDetail.owner_userid,
|
||||||
this.again = again;
|
timerange: [params.start_at,params.end_at]
|
||||||
console.log(11111)
|
}).then(res=>{
|
||||||
return false;
|
if(!res){
|
||||||
|
this.updateData("times", this.updateParams)
|
||||||
}
|
}
|
||||||
console.log(22222)
|
});
|
||||||
// this.updateData("times", Object.assign(params, {desc}))
|
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
102
resources/assets/js/pages/manage/components/TaskExistTips.vue
Normal file
102
resources/assets/js/pages/manage/components/TaskExistTips.vue
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<Modal v-model="show" :title="$L('以下人员已存在任务')" class="task-exist-tips" width="640">
|
||||||
|
<List :split="false" size="small">
|
||||||
|
<ListItem v-for="(items, userid) in tipsTask" :key="userid">
|
||||||
|
<div class="list-content">
|
||||||
|
<UserAvatar :userid="userid" :size="28" :show-icon="true" :show-name="true" tooltipDisabled />
|
||||||
|
<div class="list-task" v-for="(item, key) in items" :key="key">
|
||||||
|
<div class="list-task-info">
|
||||||
|
<span>[{{ item.project_name }}] </span>
|
||||||
|
<span>{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="list-task-date">{{ getCutTime(item) }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ListItem>
|
||||||
|
</List>
|
||||||
|
<div slot="footer">
|
||||||
|
<Button type="default" @click="show = false">{{ $L('取消') }}</Button>
|
||||||
|
<Button type="primary" @click="onAdd()">{{ $L('确定') }}</Button>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import TEditor from "../../../components/TEditor";
|
||||||
|
import UserSelect from "../../../components/UserSelect.vue";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "TaskAdd",
|
||||||
|
components: { UserSelect, TEditor },
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isExist: false,
|
||||||
|
show: false,
|
||||||
|
tipsTask: [],
|
||||||
|
loadIng: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
onAdd() {
|
||||||
|
this.$emit('onAdd', {})
|
||||||
|
this.show = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
getCutTime(item) {
|
||||||
|
let start_at = $A.Date(item.start_at, true);
|
||||||
|
let end_at = $A.Date(item.end_at, true);
|
||||||
|
let string = "";
|
||||||
|
if ($A.formatDate('Y/m/d', start_at) == $A.formatDate('Y/m/d', end_at)) {
|
||||||
|
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('H:i', end_at)
|
||||||
|
} else if ($A.formatDate('Y', start_at) == $A.formatDate('Y', end_at)) {
|
||||||
|
string = $A.formatDate('Y/m/d', start_at) + " ~ " + $A.formatDate('m/d', end_at)
|
||||||
|
string = string.replace(/( 00:00| 23:59)/g, "")
|
||||||
|
} else {
|
||||||
|
string = $A.formatDate('Y/m/d H:i', start_at) + " ~ " + $A.formatDate('Y/m/d H:i', end_at)
|
||||||
|
string = string.replace(/( 00:00| 23:59)/g, "")
|
||||||
|
}
|
||||||
|
return string
|
||||||
|
},
|
||||||
|
|
||||||
|
isExistTask({ userids, timerange, taskid }) {
|
||||||
|
this.isExist = false;
|
||||||
|
return new Promise(async resolve => {
|
||||||
|
this.$store.dispatch("call", {
|
||||||
|
url: 'project/task/easylists',
|
||||||
|
data: {
|
||||||
|
userid: userids,
|
||||||
|
timerange: timerange
|
||||||
|
},
|
||||||
|
method: 'get',
|
||||||
|
}).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;
|
||||||
|
}
|
||||||
|
resolve(this.isExist)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@ -23,3 +23,4 @@
|
|||||||
@import "task-priority";
|
@import "task-priority";
|
||||||
@import "team-management";
|
@import "team-management";
|
||||||
@import "update-log";
|
@import "update-log";
|
||||||
|
@import "task-exist-tips";
|
||||||
|
|||||||
40
resources/assets/sass/pages/components/task-exist-tips.scss
vendored
Normal file
40
resources/assets/sass/pages/components/task-exist-tips.scss
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
.task-exist-tips {
|
||||||
|
|
||||||
|
.ivu-modal-body {
|
||||||
|
padding: 0px 26px 16px 26px !important;
|
||||||
|
max-height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-content {
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-task {
|
||||||
|
@media (min-width: 450px) {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
margin-left: 34px;
|
||||||
|
margin-top: 10px;
|
||||||
|
width: calc(100% - 34px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-task-info {
|
||||||
|
min-width: 135px;
|
||||||
|
flex: 1;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
span:first-child {
|
||||||
|
color: #A7ABB5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-task-date {
|
||||||
|
min-width: 135px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user