使用pinia临时内存存储任务
This commit is contained in:
parent
ea70b79ada
commit
c5391f86b6
|
|
@ -149,6 +149,7 @@
|
||||||
import { ref, onMounted, } from 'vue';
|
import { ref, onMounted, } from 'vue';
|
||||||
import { onLoad,onShow } from '@dcloudio/uni-app';
|
import { onLoad,onShow } from '@dcloudio/uni-app';
|
||||||
import { getStatusFromTagText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
|
import { getStatusFromTagText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
|
||||||
|
import { useTaskStore } from '@/store/task';
|
||||||
|
|
||||||
// 当前激活的标签
|
// 当前激活的标签
|
||||||
const activeTab = ref('info');
|
const activeTab = ref('info');
|
||||||
|
|
@ -174,39 +175,7 @@ const formatTimeToChinese = (date) => {
|
||||||
|
|
||||||
// 任务数据
|
// 任务数据
|
||||||
const task = ref({
|
const task = ref({
|
||||||
id: null,
|
|
||||||
name: "待办任务名称",
|
|
||||||
project: "所属项目",
|
|
||||||
statusTags: ["已逾期", "紧急"],
|
|
||||||
deadline: "2025-10-14 18:00",
|
|
||||||
creator: "张珊珊",
|
|
||||||
responsible: "张珊珊、李志",
|
|
||||||
publishTime: "2025-10-17",
|
|
||||||
content: "任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。",
|
|
||||||
submitRecords: [
|
|
||||||
{
|
|
||||||
userName: "张珊珊",
|
|
||||||
time: formatTimeToChinese(new Date('2025-10-20 15:20:56')),
|
|
||||||
content: "任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。",
|
|
||||||
attachments: [
|
|
||||||
{ type: "image" },
|
|
||||||
{ type: "image" },
|
|
||||||
{ type: "image" }
|
|
||||||
],
|
|
||||||
canEdit: true,
|
|
||||||
showDelayBtn: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
userName: "李志",
|
|
||||||
time: formatTimeToChinese(new Date('2025-10-20 15:20:56')),
|
|
||||||
content: "任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。",
|
|
||||||
attachments: [
|
|
||||||
{ type: "file", name: "AA_573_1280.JPG" }
|
|
||||||
],
|
|
||||||
canEdit: false,
|
|
||||||
showDelayBtn: true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 切换标签
|
// 切换标签
|
||||||
|
|
@ -357,14 +326,16 @@ onLoad((options) => {
|
||||||
loadTaskData(taskId);
|
loadTaskData(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果通过存储传递数据(类似于 event-detail 的方式)
|
// 从 Pinia store 获取任务详情数据
|
||||||
const storedTask = uni.getStorageSync('taskDetailData');
|
const taskStore = useTaskStore();
|
||||||
|
const storedTask = taskStore.getTaskDetail;
|
||||||
if (storedTask) {
|
if (storedTask) {
|
||||||
task.value = {
|
task.value = {
|
||||||
...task.value,
|
...task.value,
|
||||||
...storedTask
|
...storedTask
|
||||||
};
|
};
|
||||||
uni.removeStorageSync('taskDetailData');
|
// 清除 store 中的数据(因为已经使用完毕)
|
||||||
|
// taskStore.clearTaskDetail();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
<text class="task-description">{{ task.description }}</text>
|
<text class="task-description">{{ task.description }}</text>
|
||||||
<view class="task-meta">
|
<view class="task-meta">
|
||||||
<text class="task-owner">负责人: {{ task.owner }}</text>
|
<text class="task-owner">负责人: {{ task.owner }}</text>
|
||||||
|
<text class="task-owner">创建人: {{ task.createName }}</text>
|
||||||
<view class="task-time-row">
|
<view class="task-time-row">
|
||||||
<text class="task-time">发布时间: {{ task.releaseTime }}</text>
|
<text class="task-time">发布时间: {{ task.releaseTime }}</text>
|
||||||
<view class="task-countdown" v-if="task.status !== 'completed' && task.remainingDays !== null">
|
<view class="task-countdown" v-if="task.status !== 'completed' && task.remainingDays !== null">
|
||||||
|
|
@ -77,6 +78,7 @@ import { ref } from 'vue';
|
||||||
import { onLoad } from '@dcloudio/uni-app';
|
import { onLoad } from '@dcloudio/uni-app';
|
||||||
import { getStatusText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
|
import { getStatusText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
|
||||||
import { getTaskList } from '@/common/api';
|
import { getTaskList } from '@/common/api';
|
||||||
|
import { useTaskStore } from '@/store/task';
|
||||||
|
|
||||||
// 获取页面参数
|
// 获取页面参数
|
||||||
const statusFilter = ref('');
|
const statusFilter = ref('');
|
||||||
|
|
@ -147,8 +149,9 @@ const handleTask = (task) => {
|
||||||
|
|
||||||
// 跳转到任务详情页
|
// 跳转到任务详情页
|
||||||
const goToTaskDetail = (task) => {
|
const goToTaskDetail = (task) => {
|
||||||
// 将任务数据存储到本地,供详情页使用
|
// 使用 Pinia store 存储任务详情数据
|
||||||
uni.setStorageSync('taskDetailData', {
|
const taskStore = useTaskStore();
|
||||||
|
taskStore.setTaskDetail({
|
||||||
id: task.id,
|
id: task.id,
|
||||||
name: task.description || '待办任务名称',
|
name: task.description || '待办任务名称',
|
||||||
project: task.project || '所属项目',
|
project: task.project || '所属项目',
|
||||||
|
|
@ -157,7 +160,7 @@ const goToTaskDetail = (task) => {
|
||||||
task.status === 'pending' ? ['待完成'] :
|
task.status === 'pending' ? ['待完成'] :
|
||||||
['已完成'],
|
['已完成'],
|
||||||
deadline: task.date || '2025-10-14 18:00',
|
deadline: task.date || '2025-10-14 18:00',
|
||||||
creator: '张珊珊',
|
creator: task.createName,
|
||||||
responsible: task.owner || '张珊珊、李志',
|
responsible: task.owner || '张珊珊、李志',
|
||||||
publishTime: task.releaseTime || '2025-10-17',
|
publishTime: task.releaseTime || '2025-10-17',
|
||||||
content: task.description || '任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。',
|
content: task.description || '任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。',
|
||||||
|
|
@ -231,6 +234,7 @@ const transformTaskData = (item) => {
|
||||||
return {
|
return {
|
||||||
id: item.id || '',
|
id: item.id || '',
|
||||||
status: taskStatus,
|
status: taskStatus,
|
||||||
|
createName:item.createName,
|
||||||
date: formatDate(expireTime) || '',
|
date: formatDate(expireTime) || '',
|
||||||
project: item.projectName || item.project_name || '',
|
project: item.projectName || item.project_name || '',
|
||||||
description: item.description || item.task_name || '',
|
description: item.description || item.task_name || '',
|
||||||
|
|
|
||||||
48
store/task.js
Normal file
48
store/task.js
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务信息 Store
|
||||||
|
* 用于管理任务详情数据
|
||||||
|
*/
|
||||||
|
export const useTaskStore = defineStore('task', {
|
||||||
|
state: () => {
|
||||||
|
return {
|
||||||
|
// 当前任务详情数据
|
||||||
|
taskDetailData: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getters: {
|
||||||
|
/**
|
||||||
|
* 获取任务详情数据
|
||||||
|
*/
|
||||||
|
getTaskDetail: (state) => {
|
||||||
|
return state.taskDetailData
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取任务 ID
|
||||||
|
*/
|
||||||
|
getTaskId: (state) => {
|
||||||
|
return state.taskDetailData?.id || null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
/**
|
||||||
|
* 设置任务详情数据
|
||||||
|
* @param {object} taskData - 任务详情数据对象
|
||||||
|
*/
|
||||||
|
setTaskDetail(taskData) {
|
||||||
|
this.taskDetailData = taskData
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除任务详情数据
|
||||||
|
*/
|
||||||
|
clearTaskDetail() {
|
||||||
|
this.taskDetailData = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user