@@ -2120,27 +1484,23 @@
草稿箱 ({{ draftsTotal }})
-
-
-
-
-
排序:
-
- 最新创建
- 最早创建
-
-
-
- 共 {{ draftsTotal }} 个草稿
-
-
-
+
+
@@ -2774,6 +2134,7 @@ import { useRouter } from 'vue-router'
import { message, Modal, InputNumber, Textarea, Radio, RadioGroup, Button, Select, Space, Tag } from 'ant-design-vue'
import DefaultLayout from '@/layouts/DefaultLayout.vue'
import Icon from '@/components/Icon.vue'
+import TaskFilters from '@/components/TaskFilters.vue'
import * as taskApi from '@/api/task'
import * as userApi from '@/api/user'
import * as configApi from '@/api/config'
@@ -3198,6 +2559,75 @@ const reviewFilters = reactive({
maxScore: undefined as number | undefined
})
+// ========== 筛选组件配置选项 ==========
+// 可接任务 - 排序选项
+const availableSortOptions = [
+ { value: 'latest', label: '最新发布' },
+ { value: 'score', label: '积分最高' },
+ { value: 'deadline', label: '时效最短' },
+ { value: 'hot', label: '最热门' }
+]
+// 可接任务 - 状态选项
+const availableStatusOptions = [
+ { value: '', label: '全部待接' },
+ { value: 'pending', label: '待接单' },
+ { value: 'pending_receiving_approval', label: '待部门审核' }
+]
+
+// 待审核任务 - 排序选项
+const reviewSortOptions = [
+ { value: 'latest', label: '最新提交' },
+ { value: 'score', label: '积分最高' }
+]
+// 待审核任务 - 状态选项
+const reviewStatusOptions = [
+ { value: '', label: '全部待审核' },
+ { value: 'pending_demand_approval', label: '待需求审核' },
+ { value: 'pending_receiving_approval', label: '待接单审核' }
+]
+
+// 进行中任务 - 排序选项
+const inProgressSortOptions = [
+ { value: 'latest', label: '最新接单' },
+ { value: 'deadline', label: '截止时间' },
+ { value: 'progress', label: '完成进度' }
+]
+// 进行中任务 - 状态选项
+const inProgressStatusOptions = [
+ { value: '', label: '全部进行中' },
+ { value: 'in_progress', label: '进行中' },
+ { value: 'submitted', label: '已提交待确认' }
+]
+
+// 已完成任务 - 排序选项
+const completedSortOptions = [
+ { value: 'latest', label: '最新完成' },
+ { value: 'score', label: '积分最高' }
+]
+
+// 我发起的任务 - 排序选项
+const publishedSortOptions = [
+ { value: 'latest', label: '最新发布' },
+ { value: 'score', label: '积分最高' },
+ { value: 'deadline', label: '截止时间' }
+]
+// 我发起的任务 - 状态选项
+const publishedStatusOptions = [
+ { value: '', label: '全部状态' },
+ { value: 'pending', label: '待接单' },
+ { value: 'pending_demand_approval', label: '待需求审核' },
+ { value: 'pending_receiving_approval', label: '待接单审核' },
+ { value: 'in_progress', label: '进行中' },
+ { value: 'submitted', label: '已提交' },
+ { value: 'completed', label: '已完成' }
+]
+
+// 草稿箱 - 排序选项
+const draftsSortOptions = [
+ { value: 'latest', label: '最新编辑' },
+ { value: 'oldest', label: '最早编辑' }
+]
+
// 分页
const pagination = reactive({
page: 1,
@@ -3670,7 +3100,11 @@ const loadTasks = async (forceReload = false) => {
}
// 筛选变更
-const handleFilterChange = () => {
+const handleFilterChange = (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 filters 对象
+ if (newFilters) {
+ Object.assign(filters, newFilters)
+ }
pagination.page = 1
loadTasks(true) // 强制重新加载
}
@@ -3702,7 +3136,12 @@ const handlePageChange = () => {
// - 需求部门用户:看到自己发起的已完成的母任务
// - 接单部门用户:看到自己完成的子任务
// - 管理员:看到所有已完成任务
-const loadCompletedTasks = async () => {
+const loadCompletedTasks = async (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 completedFilters 对象
+ if (newFilters && typeof newFilters === 'object') {
+ Object.assign(completedFilters, newFilters)
+ completedPagination.page = 1 // 重置分页
+ }
completedLoading.value = true
try {
const params: any = {
@@ -4551,7 +3990,12 @@ const reviewPagination = reactive({
})
// 加载我发起的任务
-const loadPublishedTasks = async () => {
+const loadPublishedTasks = async (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 publishedFilters 对象
+ if (newFilters && typeof newFilters === 'object') {
+ Object.assign(publishedFilters, newFilters)
+ publishedPagination.page = 1 // 重置分页
+ }
publishedLoading.value = true
try {
const response = await taskApi.getMyTasks({
@@ -4581,7 +4025,12 @@ const handlePublishedPageChange = (page: number) => {
}
// 加载草稿箱任务
-const loadDraftTasks = async () => {
+const loadDraftTasks = async (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 draftsFilters 对象
+ if (newFilters && typeof newFilters === 'object') {
+ Object.assign(draftsFilters, newFilters)
+ draftsPagination.page = 1 // 重置分页
+ }
draftsLoading.value = true
try {
const response = await taskApi.getMyTasks({
@@ -4729,7 +4178,12 @@ const handleCreateTask = () => {
// - 需求部门用户:只看母任务卡片(自己发起的任务)
// - 接单部门用户:只看子任务卡片(自己接单的任务)
// - 管理员:看到所有任务
-const loadInProgressTasks = async () => {
+const loadInProgressTasks = async (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 inProgressFilters 对象
+ if (newFilters && typeof newFilters === 'object') {
+ Object.assign(inProgressFilters, newFilters)
+ inProgressPagination.page = 1 // 重置分页
+ }
inProgressLoading.value = true
try {
const params: any = {
@@ -5051,7 +4505,12 @@ const mapTaskItemToTask = (item: any) => {
}
// 加载待审核任务(所有处于审批流程中的任务 + 部门负责人的子任务组)
-const loadReviewTasks = async () => {
+const loadReviewTasks = async (newFilters?: any) => {
+ // 如果传入了新的筛选值,合并到 reviewFilters 对象
+ if (newFilters && typeof newFilters === 'object') {
+ Object.assign(reviewFilters, newFilters)
+ reviewPagination.page = 1 // 重置分页
+ }
reviewLoading.value = true
try {
const params: any = {