diff --git a/baseData/index.js b/baseData/index.js
new file mode 100644
index 0000000..0b54e87
--- /dev/null
+++ b/baseData/index.js
@@ -0,0 +1,39 @@
+export const ToDoEventType = {
+ followUpNoShow: "未到院回访",
+ followUpNoDeal: "未成交回访",
+ followUp: "诊后回访",
+ followUpPostSurgery: "术后回访",
+ followUpPostTreatment: "治疗后回访",
+ appointmentReminder: "就诊提醒",
+ followUpReminder: "复诊提醒",
+ medicationReminder: "用药提醒",
+ serviceSummary: "咨询服务",
+ eventNotification: "活动通知",
+ ContentReminder: "宣教发送",
+ questionnaire: "问卷调查",
+ followUpComplaint: "投诉回访",
+ followUpActivity: "活动回访",
+ other: "其他",
+ Feedback: "意见反馈",
+ // 预约相关服务类型
+ treatmentAppointment: "治疗预约",
+ followupAppointment: "复诊预约",
+ confirmArrival: "确认到院",
+ prenatalFollowUp: "孕期回访",
+};
+
+export const statusNames = {
+ notStart: "未开始",
+ treated: "已完成",
+ processing: "待处理",
+ cancelled: "已取消",
+ expired: "已过期",
+};
+
+export const statusClassNames = {
+ notStart: "text-primary",
+ treated: "text-success",
+ processing: "text-danger",
+ cancelled: "text-gray",
+ expired: "text-gray",
+}
\ No newline at end of file
diff --git a/hooks/usePageList.js b/hooks/usePageList.js
new file mode 100644
index 0000000..5792d48
--- /dev/null
+++ b/hooks/usePageList.js
@@ -0,0 +1,33 @@
+import { computed, ref, watch } from "vue";
+import useDebounce from '@/utils/useDebounce'
+
+export default function usePageList(callback, options = {}) {
+ const keyword = ref('')
+ const list = ref([])
+ const page = ref(1)
+ const pageSize = ref(options.pageSize || 20)
+ const pages = ref(0);
+ const loading = ref(false)
+ const total = ref(0)
+
+ const hasMore = computed(() => page.value < pages.value)
+
+ const handleKeywordChange = useDebounce(() => {
+ getList()
+ }, options.debounce || 1000)
+
+ function changePage(p) {
+ if (loading.value) return
+ page.value = p
+ getList()
+ }
+
+ function getList() {
+ typeof callback === 'function' && callback()
+ }
+
+ watch(keyword, handleKeywordChange);
+
+ return { total, page, pageSize, keyword, list, pages, changePage, loading, hasMore }
+
+}
diff --git a/pages/work/components/filter-popup.vue b/pages/work/components/filter-popup.vue
new file mode 100644
index 0000000..c3cdd83
--- /dev/null
+++ b/pages/work/components/filter-popup.vue
@@ -0,0 +1,211 @@
+
+
+
+
+ 全部筛选
+
+
+
+
+ 任务状态
+
+
+ {{ i.label }}
+
+
+ 任务类型
+
+
+ {{ i.label }}
+
+
+ 所属团队
+
+
+ {{ teamName || '全部' }}
+
+
+
+
+
+
+ 计划日期
+
+
+
+
+
+ {{ form.dates[0] }} - {{ form.dates[1] }}
+
+ 请选择计划日期
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 重置
+ 确定
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/work/work.vue b/pages/work/work.vue
index ac125ef..ee85a44 100644
--- a/pages/work/work.vue
+++ b/pages/work/work.vue
@@ -46,23 +46,29 @@
待办列表
- 个人
- 团队
+
+ 个人
+
+
+ 团队
+
共
- 23
+ {{ total }}
条
+ :class="filterData.eventStatus == i.value ? 'text-primary' : 'text-dark'" @click="changeStatus(i.value)">
{{ i.label }}
-
+
@@ -70,28 +76,35 @@
-
+
- 计划执行: 2025-10-22
+ 计划执行: {{ i.planDate }}
- 患者: 李珊珊
+ 患者: {{ i.customerName }}
- 患者满意度调查
-
- 待处理
+ {{ i.eventTypeLabel }}
+
+ {{ i.eventStatusLabel }}
- 对于门诊就诊患者的满意度做统计,以便优化…
-
-
- 发送内容:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…
+ {{ i.sendContent }}
+
+
+
+ 发送内容:{{ file.file.name }}
+
发送
- 张敏西(张敏希服务团队)
- 创建:2026-01-08 张敏西
+
+ {{ i.executorUserName }}({{ i.executeTeamName }})
+
+
+ 创建:{{ i.createTime }} {{ i.creatorUserName }}
+
@@ -103,19 +116,28 @@
+
+
diff --git a/store/team.js b/store/team.js
index e3c39b9..1ba0653 100644
--- a/store/team.js
+++ b/store/team.js
@@ -1,4 +1,4 @@
-import { ref } from "vue";
+import { computed, ref } from "vue";
import { defineStore, storeToRefs } from "pinia";
import api from '@/utils/api';
import { toast } from '@/utils/widget';
@@ -9,6 +9,13 @@ export default defineStore("teamStore", () => {
const { account, doctorInfo } = storeToRefs(useAccountStore());
const teams = ref([]);
+ const chargeTeams = computed(() => {
+ const userid = doctorInfo.value?.userid;
+ return teams.value.filter(team => {
+ const memberLeaderList = Array.isArray(team.memberLeaderList) ? team.memberLeaderList : [];
+ return memberLeaderList.includes(userid);
+ });
+ })
async function getTeam(teamId) {
if (!teamId || !account.value?.corpId) return;
const res = await api('getTeamData', { teamId, corpId: account.value.corpId });
@@ -27,5 +34,5 @@ export default defineStore("teamStore", () => {
teams.value = res && Array.isArray(res.data) ? res.data : [];
}
- return { teams, getTeam, getTeams }
+ return { teams, chargeTeams, getTeam, getTeams }
})
\ No newline at end of file
diff --git a/utils/api.js b/utils/api.js
index 3765811..1f5ef8b 100644
--- a/utils/api.js
+++ b/utils/api.js
@@ -121,6 +121,7 @@ const urlsConfig = {
// 客户流转记录
customerTransferRecord: 'customerTransferRecord',
// sendConsultRejectedMessage: "sendConsultRejectedMessage"
+ getTeamTodos: 'getTeamTodos'
}
}