<template>
|
<view class="uni-task-kanban">
|
<dragSortList ref="dragSorts" :listData="lists" :countPage="4" :longTouch="true" :feedbackGenerator="false"
|
:listHeight="listHeight" :rowHeight="54" listBackgroundColor="#e8ebec" @clickItem="onclick" @change="change"
|
@confirm="confirm" @add="onAdd">
|
</dragSortList>
|
</view>
|
</template>
|
<script>
|
import dragSortList from "./dragsortlist/dragSortList.vue"
|
import {
|
getKanbanLaneTask,
|
updPlanType as updTaskPlanType
|
} from "@/api/gungho/task.js"
|
|
|
import TaskInit from "@/common/extend.js"
|
import {
|
showModal,
|
showToast
|
} from "@/common/Page.js"
|
export default {
|
components: {
|
dragSortList,
|
},
|
name: "pageTaskKanban",
|
props: {
|
listHeight: {
|
value: Number,
|
default: 0
|
},
|
},
|
data() {
|
return {
|
lists: []
|
}
|
},
|
mounted() {
|
this.initList()
|
/* var _this = this
|
getListPanel().then((res)=>{
|
|
let lsts = _this.getDefaultData(res)
|
_this.setData({
|
list:lsts
|
})
|
console.log("getListPanel res:",lsts)
|
}).catch((rej)=>{
|
console.log("getListPanel fail:",rej)
|
}) */
|
},
|
methods: {
|
setData: function(obj) {
|
let that = this;
|
let keys = [];
|
let val, data;
|
|
Object.keys(obj).forEach(function(key) {
|
keys = key.split(".");
|
val = obj[key];
|
data = that.$data;
|
keys.forEach(function(key2, index) {
|
if (index + 1 == keys.length) {
|
that.$set(data, key2, val);
|
} else {
|
if (!data[key2]) {
|
that.$set(data, key2, {});
|
}
|
}
|
data = data[key2];
|
});
|
});
|
},
|
initList() {
|
var _this = this
|
console.log("taskkanban initList:")
|
getKanbanLaneTask({}).then((res) => {
|
|
let lsts = _this.getDefaultData(res)
|
_this.setData({
|
lists: lsts
|
})
|
console.log("taskkanban initList getListPanel res:", lsts)
|
}).catch((rej) => {
|
this.showError(rej)
|
console.log("taskkanban initList getListPanel fail:", rej)
|
})
|
},
|
getDefaultData(arr) {
|
//console.log("tasklist getDefaultData ",arr)
|
let lists = [
|
[],
|
[],
|
[],
|
[]
|
]
|
for (let i = 0; i < arr.length; i++) {
|
if (arr[i].CN_T_CREATE) {
|
arr[i].CN_T_CREATE = TaskInit.dateUtils.format(arr[i].CN_T_CREATE, "notime");
|
}
|
if (arr[i].CN_D_PLAN_DUE) {
|
arr[i].CN_D_PLAN_DUE = TaskInit.dateUtils.format(arr[i].CN_D_PLAN_DUE, "notime");
|
}
|
arr[i].CN_S_NAME = (arr[i].CN_S_NAME || arr[i].CN_S_TITLE);
|
arr[i].Minute = arr[i].Minute || "";
|
if (arr[i].Minute) {
|
console.log(arr[i].Minute)
|
if (arr[i].Minute < 0) { //超期
|
const minute = arr[i].Minute * -1;
|
Math.ceil(minute / 60 / 24)
|
if (Math.ceil(minute / 60) == 0) {
|
arr[i].Minute = "超期0小时";
|
} else if (Math.ceil(minute / 60) < 24) {
|
// console.log(Math.ceil(minute/60));
|
arr[i].Minute = "超期" + Math.ceil(minute / 60) + "小时";
|
} else {
|
arr[i].Minute = "超期" + Math.ceil(minute / 60 / 24) + "天";
|
}
|
} else { //将要超期
|
const minute = arr[i].Minute;
|
if (Math.ceil(minute / 60) < 24) {
|
arr[i].Minute = Math.ceil(minute / 60) + "小时后";
|
} else {
|
arr[i].Minute = Math.ceil(minute / 60 / 24) + "天后";
|
}
|
}
|
} else if (arr[i].CN_N_GAP_DAY) {
|
if (arr[i].CN_N_GAP_DAY > 0) {
|
arr[i].Minute = "超期" + arr[i].CN_N_GAP_DAY + "天";
|
}
|
}
|
arr[i].CNSTATE = (TaskInit.taskstate[arr[i].CN_S_STATE] || TaskInit.eventstate[arr[i].CN_S_E_TYPE]);
|
|
arr[i].id = arr[i].CN_G_ID
|
arr[i].Minutechaoqi = arr[i].Minute.indexOf('超期') > -1;
|
arr[i].Minutetoday = arr[i].Minute.indexOf('今天') > -1;
|
let nType = arr[i].CN_N_PLAN_TYPE
|
if (nType < 0 || nType > 3) {
|
nType = 0
|
}
|
lists[nType].push(arr[i]);
|
}
|
// console.log(lists)
|
return lists
|
},
|
onAdd(e) {
|
const app = getApp()
|
console.log('=== onAdd ===', e);
|
uni.navigateTo({
|
url: '/pages/task/create?plantype=' + e.page
|
})
|
},
|
onclick(e) {
|
console.log('=== onclick start ===');
|
//console.log('被点击行: ', JSON.stringify(e));
|
//console.log('=== onclick end ===');
|
uni.navigateTo({
|
url: '/pages/task/detail?taskId=' + e.CN_G_ID ,
|
success(res) {
|
// console.log("navigateTo success",res);
|
},
|
fail(res) {
|
//console.log("navigateTo fail",res);
|
},
|
})
|
},
|
change(e) {
|
console.log('=== change start ===');
|
console.log('被拖拽行: ', e.moveRow);
|
console.log('原始下标: ', e.page, e.index);
|
console.log('被拖拽到: ', e.pageMoveTo, e.moveTo);
|
console.log('=== change end ===');
|
},
|
|
confirm(e) {
|
console.log('=== confirm start ===');
|
console.log('被拖拽行: ', e.moveRow);
|
console.log('原始下标: ', e.page, e.index)
|
console.log('被拖拽到: ', e.pageMoveTo, e.moveTo);
|
console.log('排序后的list: ', e.list);
|
if (e.page != e.pageMoveTo) {
|
|
updTaskPlanType({
|
id: e.moveRow.CN_G_ID,
|
state: e.State,
|
type: e.pageMoveTo
|
}).then((res) => {
|
console.log('updTaskPlanType sucess', res);
|
}).catch((rej) => {
|
this.showError(rej)
|
console.log('updTaskPlanType fail', rej);
|
})
|
}
|
if (e.page != e.pageMoveTo || e.index != e.moveTo) {
|
|
}
|
// 如果需要删除列表行,必须要排序后,同步一下排序后的list到页面list
|
// 因为排序后页面的list和组件内的list已经不一样,不同步list,直接删除页面的list中项目,达不到实际效果。
|
console.log('=== confirm end ===');
|
},
|
showError(ex) {
|
let tip = typeof ex === 'string' ? ex :( ex.message || ex.err_msg || ex.errMsg || ex.err_info || "")
|
|
showModal(tip, "提示", false)
|
},
|
}
|
}
|
</script>
|
<style lang="scss" scoped>
|
.uni-task-kanban {
|
background-color: #e8ebec;
|
width: 750rpx;
|
}
|
</style>
|