使用pinia临时内存存储任务

This commit is contained in:
WindowBird 2025-11-06 14:33:07 +08:00
parent ea70b79ada
commit c5391f86b6
3 changed files with 62 additions and 39 deletions

View File

@ -149,6 +149,7 @@
import { ref, onMounted, } from 'vue';
import { onLoad,onShow } from '@dcloudio/uni-app';
import { getStatusFromTagText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
import { useTaskStore } from '@/store/task';
//
const activeTab = ref('info');
@ -174,39 +175,7 @@ const formatTimeToChinese = (date) => {
//
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);
}
// event-detail
const storedTask = uni.getStorageSync('taskDetailData');
// Pinia store
const taskStore = useTaskStore();
const storedTask = taskStore.getTaskDetail;
if (storedTask) {
task.value = {
...task.value,
...storedTask
};
uni.removeStorageSync('taskDetailData');
// store 使
// taskStore.clearTaskDetail();
}
});

View File

@ -33,6 +33,7 @@
<text class="task-description">{{ task.description }}</text>
<view class="task-meta">
<text class="task-owner">负责人: {{ task.owner }}</text>
<text class="task-owner">创建人: {{ task.createName }}</text>
<view class="task-time-row">
<text class="task-time">发布时间: {{ task.releaseTime }}</text>
<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 { getStatusText, getTaskStatusType, getTaskStatusStyle } from '@/utils/taskConfig.js';
import { getTaskList } from '@/common/api';
import { useTaskStore } from '@/store/task';
//
const statusFilter = ref('');
@ -147,8 +149,9 @@ const handleTask = (task) => {
//
const goToTaskDetail = (task) => {
// 使
uni.setStorageSync('taskDetailData', {
// 使 Pinia store
const taskStore = useTaskStore();
taskStore.setTaskDetail({
id: task.id,
name: task.description || '待办任务名称',
project: task.project || '所属项目',
@ -157,7 +160,7 @@ const goToTaskDetail = (task) => {
task.status === 'pending' ? ['待完成'] :
['已完成'],
deadline: task.date || '2025-10-14 18:00',
creator: '张珊珊',
creator: task.createName,
responsible: task.owner || '张珊珊、李志',
publishTime: task.releaseTime || '2025-10-17',
content: task.description || '任务内容任务。这里是详细的任务描述,可以包含多行文本。根据实际需求,这里可以展示任务的详细要求、步骤说明、注意事项等。任务内容应该清晰明了,便于负责人理解和执行。',
@ -231,6 +234,7 @@ const transformTaskData = (item) => {
return {
id: item.id || '',
status: taskStatus,
createName:item.createName,
date: formatDate(expireTime) || '',
project: item.projectName || item.project_name || '',
description: item.description || item.task_name || '',

48
store/task.js Normal file
View 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
}
}
})