使用pinia临时内存存储任务
This commit is contained in:
parent
ea70b79ada
commit
c5391f86b6
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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
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