TTeamDesk 学习手册

src/features/tickets/url-state.ts

此代码来自构建时的仓库快照。修改源码后重新构建即可更新。

ts
import {
  createParser,
  parseAsInteger,
  parseAsString,
  parseAsStringEnum,
} from 'nuqs';
import { ticketStatuses, ticketPriorities } from '@/shared/ticket';

const boundedInteger = (min: number, max: number, fallback: number) =>
  createParser({
    parse(value) {
      if (!/^\d+$/.test(value)) return null;
      const n = parseAsInteger.parse(value);
      return n !== null && n >= min && n <= max ? n : null;
    },
    serialize: String,
  }).withDefault(fallback);

export const ticketSearchParsers = {
  page: boundedInteger(1, 100000, 1),
  pageSize: boundedInteger(1, 50, 10),
  status: parseAsStringEnum([...ticketStatuses]),
  priority: parseAsStringEnum([...ticketPriorities]),
  assignment: parseAsStringEnum(['all', 'mine', 'unassigned']).withDefault(
    'all',
  ),
  q: createParser({
    parse: (value) => (value.length <= 100 ? value : null),
    serialize: String,
  }).withDefault(''),
};
export const teamParser = parseAsString;

搜索教程

输入关键词,搜索全部章节。

阅读设置

外观
正文字号

从一张工单出发,读懂数据如何流转。

设置与进度仅保存在当前浏览器。