From c5391f86b6c3f01a21bf00f3db95393d22b14c81 Mon Sep 17 00:00:00 2001
From: WindowBird <13870814+windows-bird@user.noreply.gitee.com>
Date: Thu, 6 Nov 2025 14:33:07 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8pinia=E4=B8=B4=E6=97=B6?=
=?UTF-8?q?=E5=86=85=E5=AD=98=E5=AD=98=E5=82=A8=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/task-detail/index.vue | 43 ++++++---------------------------
pages/task-list/index.vue | 10 +++++---
store/task.js | 48 +++++++++++++++++++++++++++++++++++++
3 files changed, 62 insertions(+), 39 deletions(-)
create mode 100644 store/task.js
diff --git a/pages/task-detail/index.vue b/pages/task-detail/index.vue
index 272901c..320b165 100644
--- a/pages/task-detail/index.vue
+++ b/pages/task-detail/index.vue
@@ -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();
}
});
diff --git a/pages/task-list/index.vue b/pages/task-list/index.vue
index 8cba625..ea83f30 100644
--- a/pages/task-list/index.vue
+++ b/pages/task-list/index.vue
@@ -33,6 +33,7 @@
{{ task.description }}
负责人: {{ task.owner }}
+ 创建人: {{ task.createName }}
发布时间: {{ task.releaseTime }}
@@ -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 || '',
diff --git a/store/task.js b/store/task.js
new file mode 100644
index 0000000..80e3c11
--- /dev/null
+++ b/store/task.js
@@ -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
+ }
+ }
+})
+