|
|
@ -1,6 +1,6 @@ |
|
|
|
<template> |
|
|
|
<div class="navbar flex items-center justify-between"> |
|
|
|
<div class="project-name">{{ projectObj.obj.pname }}</div> |
|
|
|
<div class="project-name">{{ project.name }}</div> |
|
|
|
<div class="project-action"> |
|
|
|
<img /> |
|
|
|
<img @click="toShowMask" /> |
|
|
@ -8,7 +8,7 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="role-list flex items-center"> |
|
|
|
<div class="role-box relative" v-for="(item, index) in roles.arr" :key="index"> |
|
|
|
<div class="role-box relative" v-for="(item, index) in roles" :key="index"> |
|
|
|
<div class="role-name" :class="{ mine: item.mine === 1 && currRoleId === item.id }">{{ item.name }}</div> |
|
|
|
<div class="line-box absolute flex justify-center" v-if="item.mine === 1 && currRoleId === item.id"><div class="line"></div></div> |
|
|
|
</div> |
|
|
@ -38,7 +38,7 @@ |
|
|
|
|
|
|
|
<div class="task-con" v-if="item.sonList && item.sonList.length > 0"> |
|
|
|
<div v-for="(val, key) in item.sonList" :key="key"> |
|
|
|
<a-checkbox @change="handleChange">{{ val.name }}</a-checkbox> |
|
|
|
<a-checkbox>{{ val.name }}</a-checkbox> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="open-icon" v-if="item.sonList" @click="openCard"> |
|
|
@ -55,33 +55,62 @@ |
|
|
|
import { computed, watch, reactive, ref } from 'vue'; |
|
|
|
import { useStore } from 'vuex'; |
|
|
|
import dayjs from 'dayjs'; |
|
|
|
import { findShowRole, getRegularTask, findSonTask } from 'apis'; |
|
|
|
import { findShowRole, getRegularTask, findSonTask, findProjectById } from 'apis'; |
|
|
|
|
|
|
|
const store = useStore(); |
|
|
|
const projectObj = reactive({ obj: { u: '', p: '', pname: '', url: '' } }); |
|
|
|
const projectId = sessionStorage.getItem('projectId'); |
|
|
|
const project = computed(() => store.state.projects.project); // 项目信息 |
|
|
|
const currRoleId = computed(() => store.state.role.roleId); // 当前角色 |
|
|
|
const roles = reactive({ |
|
|
|
// 角色信息 |
|
|
|
arr: [ |
|
|
|
const roles = ref([ |
|
|
|
{ id: 1, name: '项目经理', mine: 1, pm: 1, sequence: 1 }, |
|
|
|
{ id: 2, name: '运维', mine: 0, pm: 0, sequence: 2 }, |
|
|
|
], |
|
|
|
}); |
|
|
|
]); |
|
|
|
|
|
|
|
const permanents = computed(() => store.state.role.permanents); // 日常任务 |
|
|
|
const permanentObj = reactive({ permanentList: [] }); |
|
|
|
const tasks = computed(() => store.state.role.tasks); // 定期任务 |
|
|
|
const taskObj = reactive({ tasks: [] }); |
|
|
|
const globalHeight = ref(0); // 日常任务面板高度 |
|
|
|
|
|
|
|
async function init() { |
|
|
|
try { |
|
|
|
if (projectId) { |
|
|
|
permanentObj.permanentList = permanents.value; |
|
|
|
taskObj.tasks = tasks.value; |
|
|
|
|
|
|
|
await getFindProjectById(projectId); |
|
|
|
await getRoles(projectId); // 通过项目id获取角色信息 |
|
|
|
await getPermanentData(currRoleId.value); // 根据角色查找永久的日常任务 |
|
|
|
await getTasks({ roleId: currRoleId.value }); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.log('error: ', error); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
init(); |
|
|
|
|
|
|
|
// 监听项目信息 |
|
|
|
watch(project, async newVal => { |
|
|
|
console.log('newVal', newVal); |
|
|
|
permanentObj.permanentList = permanents.value; |
|
|
|
taskObj.tasks = tasks.value; |
|
|
|
await getRoles(project.value.id); // 通过项目id获取角色信息 |
|
|
|
await getPermanentData(currRoleId.value); // 根据角色查找永久的日常任务 |
|
|
|
await getTasks({ roleId: currRoleId.value }); |
|
|
|
}); |
|
|
|
|
|
|
|
// 设置 初始显示角色信息 |
|
|
|
const setInitialRoleId = visibleList => { |
|
|
|
function setInitialRoleId(visibleList) { |
|
|
|
if (!visibleList || !visibleList.length) return; |
|
|
|
|
|
|
|
roles.arr = []; |
|
|
|
visibleList.forEach(item => { |
|
|
|
roles.arr.push(item); |
|
|
|
}); |
|
|
|
// roles.value = []; |
|
|
|
roles.value = [...visibleList]; |
|
|
|
// visibleList.forEach(item => { |
|
|
|
// roles.arr.push(item); |
|
|
|
// }); |
|
|
|
|
|
|
|
console.log(roles); |
|
|
|
|
|
|
|
const index = visibleList.findIndex(item => +item.mine === 1); |
|
|
|
const currentRole = index > 0 ? visibleList[index] : visibleList[0]; |
|
|
@ -92,26 +121,40 @@ const setInitialRoleId = visibleList => { |
|
|
|
store.commit('role/setRoleId', currentRoleId); |
|
|
|
// 清空storage |
|
|
|
// this.$t.storage.setStorageSync('roleId', ''); |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 通过项目id获取项目信息 |
|
|
|
* @param {string} projectId |
|
|
|
* @param {object} params 提交的参数 |
|
|
|
*/ |
|
|
|
async function getFindProjectById(params) { |
|
|
|
try { |
|
|
|
const data = await findProjectById(params); |
|
|
|
store.commit('projects/setProject', data); |
|
|
|
} catch (error) { |
|
|
|
throw new Error(error); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 通过项目id获取角色信息 |
|
|
|
* @param {string} projectId |
|
|
|
* @param {object} params 提交的参数 |
|
|
|
*/ |
|
|
|
const getRoles = async projectId => { |
|
|
|
async function getRoles(params) { |
|
|
|
try { |
|
|
|
const data = await findShowRole(projectId); |
|
|
|
const data = await findShowRole(params); |
|
|
|
store.commit('role/setInvisibleRoles', data ? data.invisibleList : []); |
|
|
|
store.commit('role/setVisibleRoles', data ? data.visibleList : []); |
|
|
|
setInitialRoleId(data ? data.visibleList : []); |
|
|
|
} catch (error) { |
|
|
|
throw new Error(error); |
|
|
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
// 日常任务 |
|
|
|
const getPermanentData = async roleId => { |
|
|
|
async function getPermanentData(roleId) { |
|
|
|
const params = { param: { roleId } }; |
|
|
|
try { |
|
|
|
const data = await store.dispatch('task/getPermanent', params); |
|
|
@ -120,10 +163,10 @@ const getPermanentData = async roleId => { |
|
|
|
} catch (error) { |
|
|
|
throw new Error(error); |
|
|
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
// 根据id获取子任务 |
|
|
|
const getSonTask = async detailId => { |
|
|
|
async function getSonTask(detailId) { |
|
|
|
const params = { param: { detailId } }; |
|
|
|
try { |
|
|
|
const data = await findSonTask(params); |
|
|
@ -135,7 +178,7 @@ const getSonTask = async detailId => { |
|
|
|
} catch (error) { |
|
|
|
throw new Error(error); |
|
|
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据时间基准点和角色查找定期任务 |
|
|
@ -146,7 +189,7 @@ const getSonTask = async detailId => { |
|
|
|
* @param {string} query.queryNum 查找颗粒度数量 默认3个 |
|
|
|
* @param {number} query.queryType 0向上查找 1向下查找(默认) 下查包含自己,上查不包含 |
|
|
|
*/ |
|
|
|
const getTasks = async query => { |
|
|
|
async function getTasks(query) { |
|
|
|
const params = { param: query }; |
|
|
|
try { |
|
|
|
const data = await getRegularTask(params); |
|
|
@ -160,20 +203,7 @@ const getTasks = async query => { |
|
|
|
} catch (error) { |
|
|
|
throw new Error(error); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 监听项目信息 |
|
|
|
watch(project, async newVal => { |
|
|
|
projectObj.obj = newVal; |
|
|
|
store.commit('projects/setProject', newVal); |
|
|
|
|
|
|
|
permanentObj.permanentList = permanents.value; |
|
|
|
taskObj.tasks = tasks.value; |
|
|
|
|
|
|
|
await getRoles(projectObj.obj.p); // 通过项目id获取角色信息 |
|
|
|
await getPermanentData(currRoleId.value); // 根据角色查找永久的日常任务 |
|
|
|
await getTasks({ roleId: currRoleId.value }); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function toDetail(item) { |
|
|
|
store.commit('task/setTaskDetail', item); |
|
|
@ -289,7 +319,7 @@ function toDetail(item) { |
|
|
|
height: 30px; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .ant-checkbox + span { |
|
|
|
:deep(.ant-checkbox + span) { |
|
|
|
color: #607d8b; |
|
|
|
} |
|
|
|
|
|
|
|