refactor travel
This commit is contained in:
@ -23,7 +23,7 @@ export type Journal = {
|
||||
/** 天气 */
|
||||
weatcher?: string;
|
||||
|
||||
// ---------- 以下为 VO 字段 ----------
|
||||
// ---------- 视图属性 ----------
|
||||
|
||||
/** 日期 */
|
||||
date?: string;
|
||||
|
||||
@ -8,10 +8,20 @@ export type Model = {
|
||||
}
|
||||
|
||||
/** 基本返回对象 */
|
||||
export type Response = {
|
||||
export type Response<T> = {
|
||||
code: number;
|
||||
msg?: string;
|
||||
data: object;
|
||||
data: T;
|
||||
}
|
||||
|
||||
/** 临时文件返回 */
|
||||
export type TempFileResponse = {
|
||||
|
||||
/** 临时文件 ID */
|
||||
id: string;
|
||||
|
||||
/** 过期于 */
|
||||
expireAt: number;
|
||||
}
|
||||
|
||||
/** 基本页面查询对象 */
|
||||
@ -27,7 +37,7 @@ export type QueryPage = {
|
||||
orderMap?: { [key: string]: OrderType };
|
||||
|
||||
/** 全等比较条件(AND 连接) */
|
||||
equalsExample?: { [key: string]: string | undefined | null };
|
||||
equalsExample?: { [key: string]: string | number | undefined | null };
|
||||
|
||||
/** 模糊查询条件(OR 连接) */
|
||||
likeExample?: { [key: string]: string | undefined | null };
|
||||
|
||||
165
miniprogram/types/Travel.ts
Normal file
165
miniprogram/types/Travel.ts
Normal file
@ -0,0 +1,165 @@
|
||||
import { Attachment } from "./Attachment";
|
||||
import { Model, QueryPage } from "./Model";
|
||||
import { MediaItem } from "./UI";
|
||||
|
||||
/** 交通类型 */
|
||||
export enum TransportationType {
|
||||
PLANE = "PLANE",
|
||||
TRAIN = "TRAIN",
|
||||
CAR = "CAR",
|
||||
SHIP = "SHIP",
|
||||
SELF_DRIVING = "SELF_DRIVING",
|
||||
OTHER = "OTHER"
|
||||
}
|
||||
|
||||
/** 交通类型中文映射 */
|
||||
export const TransportationTypeLabel: Record<TransportationType, string> = {
|
||||
[TransportationType.PLANE]: "飞机",
|
||||
[TransportationType.TRAIN]: "火车",
|
||||
[TransportationType.CAR]: "汽车",
|
||||
[TransportationType.SHIP]: "轮船",
|
||||
[TransportationType.SELF_DRIVING]: "自驾",
|
||||
[TransportationType.OTHER]: "其他"
|
||||
};
|
||||
|
||||
/** 旅行状态 */
|
||||
export enum TravelStatus {
|
||||
PLANNING = "PLANNING",
|
||||
ONGOING = "ONGOING",
|
||||
COMPLETED = "COMPLETED"
|
||||
}
|
||||
|
||||
/** 旅行状态中文映射 */
|
||||
export const TravelStatusLabel: Record<TravelStatus, string> = {
|
||||
[TravelStatus.PLANNING]: "计划中",
|
||||
[TravelStatus.ONGOING]: "进行中",
|
||||
[TravelStatus.COMPLETED]: "已完成"
|
||||
};
|
||||
|
||||
/** 旅行状态图标映射 */
|
||||
export const TravelStatusIcon: Record<TravelStatus, string> = {
|
||||
[TravelStatus.PLANNING]: "calendar",
|
||||
[TravelStatus.ONGOING]: "play-circle",
|
||||
[TravelStatus.COMPLETED]: "check-circle"
|
||||
};
|
||||
|
||||
/** 旅行计划实体 */
|
||||
export interface Travel extends Model {
|
||||
/** 交通类型 */
|
||||
transportationType?: TransportationType;
|
||||
|
||||
/** 标题 */
|
||||
title?: string;
|
||||
|
||||
/** 内容 */
|
||||
content?: string;
|
||||
|
||||
/** 出行时间戳 */
|
||||
travelAt?: number;
|
||||
|
||||
/** 天数 */
|
||||
days?: number;
|
||||
|
||||
/** 状态 */
|
||||
status?: TravelStatus;
|
||||
|
||||
/** 格式化的出行日期 */
|
||||
travelDate?: string;
|
||||
|
||||
/** 格式化的出行时间 */
|
||||
travelTime?: string;
|
||||
}
|
||||
|
||||
/** 旅行分页查询 */
|
||||
export interface TravelPage extends QueryPage {
|
||||
/** 条件过滤 */
|
||||
equalsExample?: {
|
||||
status?: TravelStatus;
|
||||
};
|
||||
}
|
||||
|
||||
/** 地点类型 */
|
||||
export enum TravelLocationType {
|
||||
ATTRACTION = "ATTRACTION",
|
||||
HOTEL = "HOTEL",
|
||||
RESTAURANT = "RESTAURANT",
|
||||
TRANSPORT = "TRANSPORT",
|
||||
SHOPPING = "SHOPPING",
|
||||
OTHER = "OTHER"
|
||||
}
|
||||
|
||||
/** 地点类型中文映射 */
|
||||
export const TravelLocationTypeLabel: Record<TravelLocationType, string> = {
|
||||
[TravelLocationType.ATTRACTION]: "景点",
|
||||
[TravelLocationType.HOTEL]: "酒店",
|
||||
[TravelLocationType.RESTAURANT]: "餐厅",
|
||||
[TravelLocationType.TRANSPORT]: "交通站点",
|
||||
[TravelLocationType.SHOPPING]: "购物",
|
||||
[TravelLocationType.OTHER]: "其他"
|
||||
};
|
||||
|
||||
/** 地点类型图标映射 */
|
||||
export const TravelLocationTypeIcon: Record<TravelLocationType, string> = {
|
||||
[TravelLocationType.ATTRACTION]: "location",
|
||||
[TravelLocationType.HOTEL]: "home",
|
||||
[TravelLocationType.RESTAURANT]: "shop",
|
||||
[TravelLocationType.TRANSPORT]: "map-route",
|
||||
[TravelLocationType.SHOPPING]: "cart",
|
||||
[TravelLocationType.OTHER]: "ellipsis"
|
||||
};
|
||||
|
||||
/** 旅行地点实体 */
|
||||
export interface TravelLocation extends Model {
|
||||
/** 关联的旅行计划 ID */
|
||||
travelId?: number;
|
||||
|
||||
/** 地点类型 */
|
||||
type?: TravelLocationType;
|
||||
|
||||
/** 标题 */
|
||||
title?: string;
|
||||
|
||||
/** 说明 */
|
||||
description?: string;
|
||||
|
||||
/** 纬度 */
|
||||
lat?: number;
|
||||
|
||||
/** 经度 */
|
||||
lng?: number;
|
||||
|
||||
/** 位置描述 */
|
||||
location?: string;
|
||||
|
||||
/** 费用 */
|
||||
amount?: number;
|
||||
|
||||
/** 是否需要身份证 */
|
||||
requireIdCard?: boolean;
|
||||
|
||||
/** 必要评分 */
|
||||
score?: number;
|
||||
|
||||
/** 附件 */
|
||||
items?: Attachment[];
|
||||
|
||||
/** 保留的附件 ID 列表(更新时使用) */
|
||||
attachmentIds?: number[];
|
||||
|
||||
/** 临时文件 ID 列表(创建/更新时上传附件用) */
|
||||
tempFileIds?: string[];
|
||||
|
||||
// ---------- 视图属性 ----------
|
||||
|
||||
/** 类型标签 */
|
||||
typeLabel?: string;
|
||||
|
||||
/** 类型图标 */
|
||||
typeIcon?: string;
|
||||
|
||||
/** 分列后的 items,用于瀑布流展示 */
|
||||
columnedItems?: MediaItem[][];
|
||||
|
||||
/** 媒体项(由附件转) */
|
||||
mediaItems?: MediaItem[];
|
||||
}
|
||||
Reference in New Issue
Block a user