This commit is contained in:
parent
6443174f14
commit
d6f369f6cd
|
@ -9,6 +9,7 @@ import config from "../config/config";
|
||||||
import {refreshAccessToken} from "../api/common/common";
|
import {refreshAccessToken} from "../api/common/common";
|
||||||
import dataV from "@/views/datav/dataV";
|
import dataV from "@/views/datav/dataV";
|
||||||
import copyV from "@/views/datav/copyV";
|
import copyV from "@/views/datav/copyV";
|
||||||
|
import taskdetail from "@/views/datav/taskdetail";
|
||||||
|
|
||||||
let HOME_PAGE = config.HOME_PAGE;
|
let HOME_PAGE = config.HOME_PAGE;
|
||||||
const currentOrganization = getStore('currentOrganization', true);
|
const currentOrganization = getStore('currentOrganization', true);
|
||||||
|
@ -78,7 +79,13 @@ const router = new Router({
|
||||||
{
|
{
|
||||||
name: 'copysv',
|
name: 'copysv',
|
||||||
path: '/copysv',
|
path: '/copysv',
|
||||||
component: copyV
|
component: copyV,
|
||||||
|
children: [{
|
||||||
|
name: 'copytaskdetail',
|
||||||
|
path: '/detail/:taskCode',
|
||||||
|
component: taskdetail,
|
||||||
|
meta: {model: 122, info: {show_slider: false, is_inner: true}},
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// name: 'login',
|
// name: 'login',
|
||||||
|
@ -170,8 +177,7 @@ router.beforeEach((to, from, next) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (to.name === 'datasv' || to.path === '/datasv' || to.name === 'copysv' || to.path === '/copysv') {
|
if (to.name === 'datasv' || to.path === '/datasv' || to.name === 'copysv' || to.path.includes('/copysv') ) {
|
||||||
console.log('跳转', to);
|
|
||||||
next();
|
next();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="scrum-stage"
|
class="scrum-stage"
|
||||||
style="width: 32vw; min-width: 400px;"
|
style="width: 24vw; min-width: 300px;"
|
||||||
v-for="(stage, index) in taskStages"
|
v-for="(stage, index) in taskStages"
|
||||||
:key="index"
|
:key="index"
|
||||||
:id="stage.code"
|
:id="stage.code"
|
||||||
|
@ -625,6 +625,69 @@
|
||||||
</div>
|
</div>
|
||||||
<!--</a-spin>-->
|
<!--</a-spin>-->
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
class="scrum-stage"
|
||||||
|
style="width: 24vw; min-width: 300px;"
|
||||||
|
>
|
||||||
|
<header
|
||||||
|
class="scrum-stage-header ui-sortable-handle"
|
||||||
|
v-show="true"
|
||||||
|
>
|
||||||
|
<div class="stage-name hinted">
|
||||||
|
消息
|
||||||
|
<!-- <span class="task-count" v-if="noti.length > 0">
|
||||||
|
· {{ stage.tasks.length }}</span
|
||||||
|
> -->
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<!--</a-tooltip>-->
|
||||||
|
<div
|
||||||
|
class="scrum-stage-wrap ui-sortable"
|
||||||
|
:class="{ 'hidden-creator-bottom': true }"
|
||||||
|
>
|
||||||
|
<vue-scroll :ref="3 + '-stage'" :ops="scrollOps">
|
||||||
|
<section
|
||||||
|
:id="3"
|
||||||
|
:task-type-index="3"
|
||||||
|
class="scrum-stage-content thin-scroll"
|
||||||
|
>
|
||||||
|
<a-spin
|
||||||
|
wrapperClassName="tasks-loading"
|
||||||
|
:spinning="false"
|
||||||
|
>
|
||||||
|
<!--未完成列表 v-model="stage.unDoneTasks" 拖动 -->
|
||||||
|
<div
|
||||||
|
:options="{
|
||||||
|
group: 'task',
|
||||||
|
ghostClass: 'task-ghost',
|
||||||
|
dragClass: 'task-drag',
|
||||||
|
fallbackClass: 'task-drag',
|
||||||
|
forceFallback: false,
|
||||||
|
}"
|
||||||
|
@end="taskSort"
|
||||||
|
class="scrum-stage-tasks"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="task task-card ui-sortable-handle"
|
||||||
|
v-for="(item, index) in noticeList"
|
||||||
|
:key="index"
|
||||||
|
style="padding: 10px;flex-direction: column;"
|
||||||
|
>
|
||||||
|
<div style="display: flex;justify-content: space-between;width: 100%;">
|
||||||
|
<div>{{ item.title }}</div>
|
||||||
|
<div>{{ item.create_time }}</div>
|
||||||
|
</div>
|
||||||
|
<div style="color: #fff;font-size: 13px;background-color: #1890ff;border-radius: 5px;padding: 1px 3px;">任务: {{ item.content }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="color: #888;text-align: center;cursor: pointer;" v-if="pages[3]>=0" @click="getNotifyList">查看更多</div>
|
||||||
|
<div style="color: #888;text-align: center;cursor: pointer;" v-else>没有更多了</div>
|
||||||
|
</a-spin>
|
||||||
|
</section>
|
||||||
|
</vue-scroll>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
<div class="scrum-stage undraggable create-stage" v-if="false">
|
<div class="scrum-stage undraggable create-stage" v-if="false">
|
||||||
<header class="scrum-stage-header">
|
<header class="scrum-stage-header">
|
||||||
<div class="stage-name hinted" style="width: 100%">
|
<div class="stage-name hinted" style="width: 100%">
|
||||||
|
@ -988,6 +1051,7 @@
|
||||||
import { formatTaskTime } from "@/assets/js/dateTime";
|
import { formatTaskTime } from "@/assets/js/dateTime";
|
||||||
import { collect } from "@/api/projectCollect";
|
import { collect } from "@/api/projectCollect";
|
||||||
import { notice } from "@/assets/js/notice";
|
import { notice } from "@/assets/js/notice";
|
||||||
|
import {list as getNotifyList, del} from '@/api/notify';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "copyV",
|
name: "copyV",
|
||||||
|
@ -1025,6 +1089,7 @@
|
||||||
nextTaskCode: "",
|
nextTaskCode: "",
|
||||||
|
|
||||||
taskSearchParams: {},
|
taskSearchParams: {},
|
||||||
|
noticeList: [],
|
||||||
|
|
||||||
stageKeys: [],
|
stageKeys: [],
|
||||||
stageModal: {
|
stageModal: {
|
||||||
|
@ -1035,7 +1100,7 @@
|
||||||
confirmLoading: false,
|
confirmLoading: false,
|
||||||
modalTitle: "编辑列表",
|
modalTitle: "编辑列表",
|
||||||
},
|
},
|
||||||
pages: [1,1,1],
|
pages: [1,1,1,1],
|
||||||
|
|
||||||
slideMenuKey: "",
|
slideMenuKey: "",
|
||||||
showInviteMember: false,
|
showInviteMember: false,
|
||||||
|
@ -1210,6 +1275,7 @@
|
||||||
this.getProject();
|
this.getProject();
|
||||||
this.getProjectMembers();
|
this.getProjectMembers();
|
||||||
this.init();
|
this.init();
|
||||||
|
this.getNotifyList();
|
||||||
},
|
},
|
||||||
directives: {
|
directives: {
|
||||||
dragscroll2: function (el) {
|
dragscroll2: function (el) {
|
||||||
|
@ -1710,13 +1776,8 @@
|
||||||
},
|
},
|
||||||
taskDetail(code, stageIndex) {
|
taskDetail(code, stageIndex) {
|
||||||
this.$router.push(
|
this.$router.push(
|
||||||
`${this.$route.path}/detail/${code}?from=${stageIndex}`
|
`/project/space/task/qfbyovzhd9sj31u8ln602rwk/detail/${code}?from=${stageIndex}`
|
||||||
);
|
);
|
||||||
this.$nextTick(() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.showTaskCard(stageIndex, false);
|
|
||||||
}, 700);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
stageSort(event) {
|
stageSort(event) {
|
||||||
const list = this.getPreAndNextCode(event);
|
const list = this.getPreAndNextCode(event);
|
||||||
|
@ -1869,6 +1930,17 @@
|
||||||
},
|
},
|
||||||
loadMoreStage(stage, index=1){
|
loadMoreStage(stage, index=1){
|
||||||
this.getTasks(stage, index, true)
|
this.getTasks(stage, index, true)
|
||||||
|
},
|
||||||
|
getNotifyList(){
|
||||||
|
getNotifyList({
|
||||||
|
page: this.pages[3],
|
||||||
|
pageSize: 25,
|
||||||
|
type: 'system'
|
||||||
|
}).then(res=>{
|
||||||
|
this.noticeList = [...this.noticeList, ...res.data.list];
|
||||||
|
if(res.data.list.length<25)this.pages[3] = -1;
|
||||||
|
else this.pages[3]++;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<div class="menu-item-d">
|
<div class="menu-item-d">
|
||||||
<a-avatar :src="item.avatar" icon="user" size="small" />
|
<a-avatar :src="item.avatar" icon="user" size="small" />
|
||||||
<a class="muted name">{{ item.name }}</a>
|
<a class="muted name">{{ item.name }}</a>
|
||||||
<span v-if="index%3!=0" class="line_on">• 在线</span>
|
<span v-if="item.is_owner" class="line_on">• 在线</span>
|
||||||
<span v-else class="line_off">• 离线</span>
|
<span v-else class="line_off">• 离线</span>
|
||||||
</div>
|
</div>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
|
@ -61,6 +61,8 @@ export default {
|
||||||
member_list: [],
|
member_list: [],
|
||||||
markers: [],
|
markers: [],
|
||||||
polyline: null,
|
polyline: null,
|
||||||
|
timerM: null,
|
||||||
|
timerP: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -70,6 +72,10 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initMap();
|
this.initMap();
|
||||||
},
|
},
|
||||||
|
destroyed(){
|
||||||
|
clearInterval(this.timerM);
|
||||||
|
clearInterval(this.timerP);
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getMembers() {
|
getMembers() {
|
||||||
getMembers().then((res) => {
|
getMembers().then((res) => {
|
||||||
|
@ -102,6 +108,10 @@ export default {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.initMaker();
|
this.initMaker();
|
||||||
|
this.timerM = setInterval(()=>{
|
||||||
|
this.initMaker();
|
||||||
|
}, 1000*10)
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
|
@ -109,14 +119,23 @@ export default {
|
||||||
},
|
},
|
||||||
handleMenuClick(e) {
|
handleMenuClick(e) {
|
||||||
this.now_user = this.member_list[e.key];
|
this.now_user = this.member_list[e.key];
|
||||||
|
if(!this.now_user.member_code||!this.now_date) return;
|
||||||
|
clearInterval(this.timerM);
|
||||||
|
clearInterval(this.timerP);
|
||||||
this.initList();
|
this.initList();
|
||||||
|
this.timerP = setInterval(this.initList, 1000*10)
|
||||||
},
|
},
|
||||||
changeTime(e) {
|
changeTime(e) {
|
||||||
console.log(this.now_date);
|
if(!this.now_user.member_code||!this.now_date) return;
|
||||||
|
clearInterval(this.timerM);
|
||||||
|
clearInterval(this.timerP);
|
||||||
this.initList();
|
this.initList();
|
||||||
|
this.timerP = setInterval(this.initList, 1000*10)
|
||||||
},
|
},
|
||||||
initMaker() {
|
initMaker() {
|
||||||
|
if(this.polyline) this.polyline.setMap(null);
|
||||||
positioningList().then((res) => {
|
positioningList().then((res) => {
|
||||||
|
if(this.markers) this.map.remove(this.markers);
|
||||||
// 添加标记点
|
// 添加标记点
|
||||||
res.data.forEach((item) => {
|
res.data.forEach((item) => {
|
||||||
if (item.positioning) {
|
if (item.positioning) {
|
||||||
|
@ -133,6 +152,7 @@ export default {
|
||||||
<div>${item.name}</div>
|
<div>${item.name}</div>
|
||||||
<div>更新时间:${item.date}</div>
|
<div>更新时间:${item.date}</div>
|
||||||
<div>停留时间:${item.date}</div>
|
<div>停留时间:${item.date}</div>
|
||||||
|
<div>停留时长:${item.stop_time}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
|
@ -144,9 +164,7 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
initList() {
|
initList() {
|
||||||
if(!this.now_user.member_code||!this.now_date) return;
|
if(this.markers) this.map.remove(this.markers);
|
||||||
this.map.remove(this.markers);
|
|
||||||
if(this.polyline)this.polyline.setMap(null);
|
|
||||||
positioningMember({
|
positioningMember({
|
||||||
code: this.now_user.member_code,
|
code: this.now_user.member_code,
|
||||||
date: this.formatDate(new Date(this.now_date||Date.now())),
|
date: this.formatDate(new Date(this.now_date||Date.now())),
|
||||||
|
@ -154,7 +172,7 @@ export default {
|
||||||
let path = res.data.map((item) => {
|
let path = res.data.map((item) => {
|
||||||
return item.split(",");
|
return item.split(",");
|
||||||
})||[];
|
})||[];
|
||||||
|
if(this.polyline) this.polyline.setMap(null);
|
||||||
if(path.length==0) return notice({title: '该成员当日无轨迹信息'}, 'error', 3000);
|
if(path.length==0) return notice({title: '该成员当日无轨迹信息'}, 'error', 3000);
|
||||||
// 绘制轨迹
|
// 绘制轨迹
|
||||||
this.polyline = new AMap.Polyline({
|
this.polyline = new AMap.Polyline({
|
||||||
|
@ -175,7 +193,7 @@ export default {
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less">
|
||||||
.marker-d {
|
.marker-d {
|
||||||
width: 260px;
|
width: 260px;
|
||||||
img {
|
img {
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<a-modal
|
||||||
|
class="task-detail-modal"
|
||||||
|
width="min-content"
|
||||||
|
:closable="false"
|
||||||
|
visible
|
||||||
|
title=""
|
||||||
|
:footer="null"
|
||||||
|
@cancel="detailClose"
|
||||||
|
>
|
||||||
|
<task-detail :taskCode="code" @close="detailClose"></task-detail>
|
||||||
|
<div>sss</div>
|
||||||
|
</a-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import taskDetail from '@/components/project/taskDetail'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "task-detail-modal",
|
||||||
|
components: {
|
||||||
|
taskDetail
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
code: this.$route.params.taskCode,
|
||||||
|
projectCode: this.$route.params.code,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log('加载');
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.loading = true;
|
||||||
|
},
|
||||||
|
detailClose() {
|
||||||
|
const stageIndex = this.$route.query.from;
|
||||||
|
let url = '';
|
||||||
|
if (stageIndex) {
|
||||||
|
url = `?from=${stageIndex}`;
|
||||||
|
}
|
||||||
|
this.$router.push(`/copysv`);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.task-detail-modal {
|
||||||
|
/*display: flex;*/
|
||||||
|
/*justify-content: center;*/
|
||||||
|
/*flex: 1;*/
|
||||||
|
/*min-height: 1px;*/
|
||||||
|
/*min-width: 1px;*/
|
||||||
|
width: 1200px;
|
||||||
|
|
||||||
|
&.ant-modal {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-content {
|
||||||
|
/*width: 1200px;*/
|
||||||
|
/*overflow: hidden;*/
|
||||||
|
|
||||||
|
.ant-modal-body {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -327,21 +327,19 @@
|
||||||
menuModelClick(event) {
|
menuModelClick(event) {
|
||||||
//点击顶部导航跳转页面
|
//点击顶部导航跳转页面
|
||||||
console.log('event', event);
|
console.log('event', event);
|
||||||
// if(event.key==175){ // 跳转大屏
|
|
||||||
// return this.$router.push('/datasv');
|
//点击顶部导航跳转页面
|
||||||
// }
|
|
||||||
// if(event.key==180){ // 跳转大屏
|
|
||||||
// return this.$router.push('/copysv');
|
|
||||||
// }
|
|
||||||
let that = this;
|
let that = this;
|
||||||
that.menus = that.menu.find(v=>v.id == event.key).children;
|
that.menu.forEach(function (v, k) {
|
||||||
|
if (v.id == event.key) {
|
||||||
|
that.menus = v.children;
|
||||||
let turnPath = '/';
|
let turnPath = '/';
|
||||||
if (!that.menus) {
|
if (!v.children) {
|
||||||
turnPath += v.fullUrl;
|
turnPath += v.fullUrl;
|
||||||
} else if (!that.menus[0].children) {
|
} else if (!v.children[0].children) {
|
||||||
turnPath += that.menus[0].fullUrl;
|
turnPath += v.children[0].fullUrl;
|
||||||
} else {
|
} else {
|
||||||
turnPath += that.menus[0].children[0].fullUrl;
|
turnPath += v.children[0].children[0].fullUrl;
|
||||||
}
|
}
|
||||||
if(turnPath.includes('datasv')){
|
if(turnPath.includes('datasv')){
|
||||||
return that.$router.push('/datasv');
|
return that.$router.push('/datasv');
|
||||||
|
@ -356,6 +354,8 @@
|
||||||
if (turnPath != '/#') {
|
if (turnPath != '/#') {
|
||||||
that.$router.push(turnPath);
|
that.$router.push(turnPath);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
onModelOpenChange(openKeys) {
|
onModelOpenChange(openKeys) {
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue