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 @@ + + + + + \ 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 c6779ef..fa218dd 100644 --- a/utils/api.js +++ b/utils/api.js @@ -121,6 +121,7 @@ const urlsConfig = { // 客户流转记录 customerTransferRecord: 'customerTransferRecord', // sendConsultRejectedMessage: "sendConsultRejectedMessage" + getTeamTodos: 'getTeamTodos' } }