Compare commits

..

3 Commits

Author SHA1 Message Date
Timi
81cb0b361d update 1.7.0 2026-01-28 16:35:55 +08:00
Timi
e67d9eeecc add memo 2026-01-28 16:35:31 +08:00
Timi
965743be38 refactor pages struct 2026-01-28 14:11:54 +08:00
83 changed files with 565 additions and 182 deletions

View File

@@ -0,0 +1,24 @@
import { Network } from "../utils/Network";
/**
* Tool 工具 API
*/
export class ToolApi {
/**
* 获取备忘录内容
*/
static getMemo(): Promise<string> {
return Network.get<string>("/journal/tool/memo");
}
/**
* 更新备忘录内容
*
* @param data - 备忘录内容
*/
static updateMemo(data: string): Promise<void> {
return Network.post<void>("/journal/tool/memo/update", {
data
});
}
}

View File

@@ -1,20 +1,22 @@
{
"pages": [
"pages/index/index",
"pages/main/journal/index",
"pages/main/journal-search/index",
"pages/main/journal-editor/index",
"pages/main/journal-map/index",
"pages/main/journal-date/index",
"pages/main/portfolio/index",
"pages/main/travel/index",
"pages/main/travel-detail/index",
"pages/main/travel-editor/index",
"pages/main/travel-location-detail/index",
"pages/main/travel-location-map/index",
"pages/main/travel-location-editor/index",
"pages/main/about/index",
"pages/main/moment/index"
"pages/main/tabs/journal/index",
"pages/main/tabs/travel/index",
"pages/main/tabs/moment/index",
"pages/main/tabs/other/index",
"pages/main/tabs/about/index",
"pages/main/journal/search/index",
"pages/main/journal/editor/index",
"pages/main/journal/map/index",
"pages/main/journal/date/index",
"pages/main/other/memo/index",
"pages/main/other/portfolio/index",
"pages/main/travel/detail/index",
"pages/main/travel/editor/index",
"pages/main/travel/location-detail/index",
"pages/main/travel/location-map/index",
"pages/main/travel/location-editor/index"
],
"darkmode": true,
"themeLocation": "theme.json",
@@ -32,31 +34,31 @@
"list": [
{
"text": "归档",
"pagePath": "pages/main/journal/index",
"pagePath": "pages/main/tabs/journal/index",
"iconPath": "@tabBarIconJournal",
"selectedIconPath": "@tabBarIconJournalActive"
},
{
"text": "专拍",
"pagePath": "pages/main/portfolio/index",
"iconPath": "@tabBarIconPortfolio",
"selectedIconPath": "@tabBarIconPortfolioActive"
},
{
"text": "瞬间",
"pagePath": "pages/main/moment/index",
"iconPath": "@tabBarIconMoment",
"selectedIconPath": "@tabBarIconMomentActive"
},
{
"text": "出行",
"pagePath": "pages/main/travel/index",
"pagePath": "pages/main/tabs/travel/index",
"iconPath": "@tabBarIconTravel",
"selectedIconPath": "@tabBarIconTravelActive"
},
{
"text": "瞬间",
"pagePath": "pages/main/tabs/moment/index",
"iconPath": "@tabBarIconMoment",
"selectedIconPath": "@tabBarIconMomentActive"
},
{
"text": "其他",
"pagePath": "pages/main/tabs/other/index",
"iconPath": "@tabBarIconOther",
"selectedIconPath": "@tabBarIconOtherActive"
},
{
"text": "关于",
"pagePath": "pages/main/about/index",
"pagePath": "pages/main/tabs/about/index",
"iconPath": "@tabBarIconInfo",
"selectedIconPath": "@tabBarIconInfoActive"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -20,7 +20,7 @@ Component({
createSnowflake() {
const snowflake = {
x: Toolkit.random(0, this.data.docWidth),
s: Toolkit.random(16, 64),
s: Toolkit.random(16, 90),
speed: Toolkit.random(14, 26)
};
this.setData({

View File

@@ -5,6 +5,6 @@
wx:for="{{snowflakes}}"
wx:key="index"
style="left: {{item.x}}px; font-size: {{item.s}}rpx; animation-duration: {{item.speed}}s;"
name="snowflake"
name="plus"
/>
</view>

View File

@@ -1,12 +1,12 @@
const envArgs = {
develop: {
url: "http://localhost:8091"
// url: "http://localhost:8091"
// url: "https://api.imyeyu.dev"
// url: "https://api.imyeyu.com"
// url: "http://192.168.3.123:8091"
// url: "http://192.168.3.137:8091"
// url: "http://192.168.3.173:8091"
// url: "http://192.168.3.174:8091"
url: "http://192.168.3.174:8091"
},
trial: {
url: "https://api.imyeyu.com"

View File

@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"tdesign-miniprogram": "^1.12.0"
"tdesign-miniprogram": "^1.12.2"
},
"devDependencies": {
"miniprogram-api-typings": "^4.1.0"
@@ -22,9 +22,9 @@
"dev": true
},
"node_modules/tdesign-miniprogram": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/tdesign-miniprogram/-/tdesign-miniprogram-1.12.0.tgz",
"integrity": "sha512-Ft+B1HWMOKuOpM9+Z0mflprWrxSB/ESo6TVymjxJ6xzMgSfEcbmFaXpd0nJ+Oj/5GCljqP06ZTeWazuk1G6Ugg=="
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/tdesign-miniprogram/-/tdesign-miniprogram-1.12.2.tgz",
"integrity": "sha512-ZpOdwonT26RRCK/FWbg9tR2lAJ54Hb4PAdyTWu8URWkbKOmSQhn0JCwCtWWRofKbyWCPsCn5NqljobaGh5VCMg=="
}
}
}

View File

@@ -10,7 +10,7 @@
"author": "",
"license": "ISC",
"dependencies": {
"tdesign-miniprogram": "^1.12.0"
"tdesign-miniprogram": "^1.12.2"
},
"devDependencies": {
"miniprogram-api-typings": "^4.1.0"

View File

@@ -27,7 +27,7 @@ Page({
type: JournalPageType.PREVIEW
});
wx.switchTab({
url: "/pages/main/journal/index",
url: "/pages/main/tabs/journal/index",
})
} catch (error: any) {
if (error?.code === 40100) {

View File

@@ -2,7 +2,7 @@
<scroll-view class="index" scroll-y type="list">
<view class="container">
<view class="header">
<image class="logo" src="/assets/image/logo.png"></image>
<image class="logo" src="/assets/image/logo.jpg"></image>
<text>
<text class="name gao">小糕</text>
<text>和</text>

View File

@@ -1,4 +1,4 @@
/* pages/main/journal-date/index.less */
/* pages/main/journal/date/index.less */
.container {
width: 100%;
height: 100vh;

View File

@@ -1,7 +1,7 @@
// pages/main/journal-date/index.ts
import { Journal, JournalPageType } from "../../../types/Journal";
import Time from "../../../utils/Time";
import { JournalApi } from "../../../api/JournalApi";
// pages/main/journal/date/index.ts
import { Journal, JournalPageType } from "../../../../types/Journal";
import Time from "../../../../utils/Time";
import { JournalApi } from "../../../../api/JournalApi";
interface JournalDateData {
// 存储每个日期的日记 id 列表

View File

@@ -1,5 +1,5 @@
<!--pages/main/journal-date/index.wxml-->
<t-navbar title="日期查找" left-arrow />
<!--pages/main/journal/date/index.wxml-->
<t-navbar title="日期查找" placeholder left-arrow />
<view class="container">
<!-- 日历视图 -->
<calendar journal-map="{{journalMap}}" bind:dateselect="onDateSelect" />

View File

@@ -1,4 +1,4 @@
/* pages/main/journal-editor/index.wxss */
/* pages/main/journal/editor/index.wxss */
.container {
.content {

View File

@@ -1,13 +1,13 @@
// pages/main/journal-editor/index.ts
import Events from "../../../utils/Events";
import Time from "../../../utils/Time";
import Toolkit from "../../../utils/Toolkit";
import config from "../../../config/index";
import { Location, MediaItem, MediaItemType, WechatMediaItem } from "../../../types/UI";
import { JournalType } from "../../../types/Journal";
import { MediaAttachType, PreviewImageMetadata } from "../../../types/Attachment";
import IOSize, { Unit } from "../../../utils/IOSize";
import { JournalApi } from "../../../api/JournalApi";
// pages/main/journal/editor/index.ts
import Events from "../../../../utils/Events";
import Time from "../../../../utils/Time";
import Toolkit from "../../../../utils/Toolkit";
import config from "../../../../config/index";
import { Location, MediaItem, MediaItemType, WechatMediaItem } from "../../../../types/UI";
import { JournalType } from "../../../../types/Journal";
import { MediaAttachType, PreviewImageMetadata } from "../../../../types/Attachment";
import IOSize, { Unit } from "../../../../utils/IOSize";
import { JournalApi } from "../../../../api/JournalApi";
interface JournalEditorData {
/** 模式create 或 edit */
@@ -341,7 +341,7 @@ Page({
cancel() {
if (this.data.mode === "create") {
wx.switchTab({
url: "/pages/main/journal/index"
url: "/pages/main/tabs/journal/index"
});
} else {
wx.navigateBack();
@@ -459,7 +459,7 @@ Page({
});
await Toolkit.sleep(1000);
wx.switchTab({
url: "/pages/main/journal/index"
url: "/pages/main/tabs/journal/index"
});
} catch (error) {
console.error("创建日记失败:", error);

View File

@@ -1,5 +1,5 @@
<!--pages/main/journal-editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '新纪录' : '编辑记录'}}">
<!--pages/main/journal/editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '新纪录' : '编辑记录'}}" placeholder>
<text slot="left" bindtap="cancel">取消</text>
</t-navbar>
<scroll-view

View File

@@ -1,4 +1,4 @@
/* pages/main/journal-map/index.less */
/* pages/main/journal/map/index.less */
.container {
width: 100%;
height: 100vh;

View File

@@ -1,10 +1,10 @@
// pages/main/journal-map/index.ts
import config from "../../../config/index";
import Time from "../../../utils/Time";
import { JournalPageType } from "../../../types/Journal";
import Toolkit from "../../../utils/Toolkit";
import { MapMarker } from "../../../types/UI";
import { JournalApi } from "../../../api/JournalApi";
// pages/main/journal/map/index.ts
import config from "../../../../config/index";
import Time from "../../../../utils/Time";
import { JournalPageType } from "../../../../types/Journal";
import Toolkit from "../../../../utils/Toolkit";
import { MapMarker } from "../../../../types/UI";
import { JournalApi } from "../../../../api/JournalApi";
interface LocationMarker {
locationKey: string; // 位置键 "lat,lng"

View File

@@ -1,5 +1,5 @@
<!--pages/main/journal-map/index.wxml-->
<t-navbar title="地图查找" left-arrow />
<!--pages/main/journal/map/index.wxml-->
<t-navbar title="地图查找" left-arrow placeholder />
<view class="container">
<map
id="journal-map"

View File

@@ -1,5 +1,5 @@
// pages/main/journal-search/index.ts
import Events from "../../../utils/Events";
// pages/main/journal/search/index.ts
import Events from "../../../../utils/Events";
Page({
onLoad() {
@@ -13,7 +13,7 @@ Page({
onNavigateItem(e: WechatMiniprogram.CustomEvent) {
const { id } = e.detail;
wx.navigateTo({
url: `/pages/main/journal-editor/index?id=${id}`
url: `/pages/main/journal/editor/index?id=${id}`
});
}
});

View File

@@ -1,6 +1,6 @@
<view class="page-container">
<view class="navbar">
<t-navbar title="列表查找" left-arrow />
<t-navbar title="列表查找" left-arrow placeholder />
</view>
<view class="content">
<journal-list

View File

@@ -0,0 +1,7 @@
{
"usingComponents": {
"t-icon": "tdesign-miniprogram/icon/icon",
"t-navbar": "tdesign-miniprogram/navbar/navbar"
},
"disableScroll": true
}

View File

@@ -0,0 +1,66 @@
// pages/main/other/memo/index.less
.memo {
width: 100%;
min-height: 100vh;
position: relative;
.content {
width: 100%;
min-height: 100vh;
position: relative;
}
.status-card {
padding: 2rem 1.5rem;
display: flex;
justify-content: center;
}
.empty-hint {
padding: 1.5rem 1rem 0 1rem;
}
.container {
top: 0;
left: 0;
width: 100%;
position: absolute;
.editor {
width: 100%;
height: 100%;
border: .0625rem solid var(--theme-border-light);
padding: 1rem 1rem 2rem 1rem;
overflow: auto;
font-size: 1rem;
background: var(--theme-bg-primary);
box-sizing: border-box;
line-height: 1.5;
}
}
.toolbar {
left: 0;
width: 100%;
right: 100%;
height: 3.125rem;
bottom: 0;
border: .0625rem solid var(--theme-border-light);
padding: 0 1rem;
display: flex;
position: fixed;
background: var(--theme-bg-primary);
box-sizing: border-box;
align-items: center;
border-left: none;
border-right: none;
justify-content: space-between;
.icon {
&.active {
color: var(--theme-wx);
}
}
}
}

View File

@@ -0,0 +1,162 @@
// 备忘录页面逻辑
import { ToolApi } from "../../../../api/ToolApi";
type EditorInputEvent = WechatMiniprogram.CustomEvent<{
html?: string;
text?: string;
}>;
interface MemoData {
formats: Record<string, unknown>;
placeholder: string;
editorHeight: number;
keyboardHeight: number;
isIOS: boolean;
isSaving: boolean;
isEditorReady: boolean;
contentHtml: string;
contentText: string;
}
Page({
data: <MemoData>{
formats: {},
placeholder: "开始输入...",
editorHeight: 300,
keyboardHeight: 0,
isIOS: false,
isSaving: false,
isEditorReady: false,
contentHtml: "",
contentText: ""
},
editorCtx: null as WechatMiniprogram.EditorContext | null,
pendingHtml: "",
hasSavedOnLeave: false,
hasLoadFailed: false,
async onLoad() {
const platform = wx.getSystemInfoSync().platform;
const isIOS = platform === "ios";
this.setData({ isIOS });
this.updatePosition(0);
this.bindKeyboardHeightChange();
await this.loadMemo();
},
onShow() {
this.hasSavedOnLeave = false;
},
async onUnload() {
await this.saveMemoOnLeave();
},
async onHide() {
await this.saveMemoOnLeave();
},
bindKeyboardHeightChange() {
let keyboardHeight = 0;
wx.onKeyboardHeightChange((res) => {
if (res.height === keyboardHeight) {
return;
}
const duration = 0 < res.height ? res.duration * 1000 : 0;
keyboardHeight = res.height;
setTimeout(() => {
wx.pageScrollTo({
scrollTop: 0,
success: () => {
this.updatePosition(keyboardHeight);
this.editorCtx?.scrollIntoView();
}
});
}, duration);
});
},
updatePosition(keyboardHeight: number) {
const toolbarHeight = 50;
const { windowHeight } = wx.getSystemInfoSync();
const editorHeight = 0 < keyboardHeight
? windowHeight - keyboardHeight - toolbarHeight
: windowHeight;
this.setData({ editorHeight, keyboardHeight });
},
onEditorReady() {
const query = wx.createSelectorQuery();
query.select("#memo-editor").context((res) => {
this.editorCtx = (res as { context?: WechatMiniprogram.EditorContext }).context || null;
this.setData({ isEditorReady: true });
this.applyPendingContent();
});
query.exec();
},
applyPendingContent() {
if (!this.editorCtx || !this.pendingHtml) {
return;
}
this.editorCtx.setContents({
html: this.pendingHtml
});
this.pendingHtml = "";
},
onStatusChange(e: WechatMiniprogram.CustomEvent<Record<string, unknown>>) {
this.setData({ formats: e.detail || {} });
},
format(e: WechatMiniprogram.BaseEvent) {
const { name, value } = e.target.dataset as { name?: string; value?: string | number };
if (!name || !this.editorCtx) {
return;
}
this.editorCtx.format(name, value);
},
onEditorInput(e: EditorInputEvent) {
const { html = "", text = "" } = e.detail || {};
this.setData({
contentHtml: html,
contentText: text
});
},
async loadMemo() {
wx.showLoading({ title: "加载中..", mask: true });
let shouldGoBack = false;
try {
const contentHtml = await ToolApi.getMemo();
this.pendingHtml = contentHtml;
this.setData({
contentHtml,
contentText: this.normalizeMemoText(contentHtml)
});
this.applyPendingContent();
} catch (error) {
console.error("加载备忘录失败", error);
this.hasLoadFailed = true;
shouldGoBack = true;
} finally {
wx.hideLoading();
if (shouldGoBack) {
wx.navigateBack({ delta: 1 });
}
}
},
normalizeMemoText(html: string) {
const normalized = html
.replace(/<[^>]*>/g, "")
.replace(/&nbsp;/g, " ")
.replace(/\s+/g, " ")
.trim();
return normalized;
},
async saveMemoOnLeave() {
if (this.hasLoadFailed || this.data.isSaving || this.hasSavedOnLeave) {
return;
}
this.hasSavedOnLeave = true;
this.setData({ isSaving: true });
wx.showLoading({ title: "保存中..", mask: true });
try {
await ToolApi.updateMemo(this.data.contentHtml || "");
} catch (error) {
console.error("保存备忘录失败", error);
} finally {
wx.hideLoading();
this.setData({ isSaving: false });
}
}
});

View File

@@ -0,0 +1,65 @@
<!-- 备忘录页面 -->
<view class="custom-navbar">
<t-navbar class="custom-navbar" title="备忘录" left-arrow placeholder />
</view>
<view class="memo setting-bg">
<view class="content">
<view class="container" style="height:{{editorHeight}}px;">
<editor
id="memo-editor"
class="editor"
placeholder="{{placeholder}}"
bindready="onEditorReady"
bindinput="onEditorInput"
bindstatuschange="onStatusChange"
show-img-size="{{false}}"
show-img-toolbar="{{false}}"
show-img-resize="{{false}}"
/>
</view>
<view
class="toolbar"
catchtouchend="format"
hidden="{{0 < keyboardHeight ? false : true}}"
style="bottom: {{isIOS ? keyboardHeight : 0}}px"
>
<text
class="icon {{formats.header === 2 ? 'active' : ''}}"
data-name="header"
data-value="{{2}}"
>H2</text>
<text
class="icon {{formats.header === 3 ? 'active' : ''}}"
data-name="header"
data-value="{{3}}"
>H3</text>
<t-icon
class="icon {{formats.bold ? 'active' : ''}}"
name="textformat-bold"
data-name="bold"
/>
<t-icon
class="icon {{formats.italic ? 'active' : ''}}"
name="textformat-italic"
data-name="italic"
/>
<t-icon
class="icon {{formats.underline ? 'active' : ''}}"
name="textformat-underline"
data-name="underline"
/>
<t-icon
class="icon"
name="task"
data-name="list"
data-value="check"
/>
<t-icon
class="icon {{formats.list === 'bullet' ? 'active' : ''}}"
name="bulletpoint"
data-name="list"
data-value="bullet"
/>
</view>
</view>
</view>

View File

@@ -1,4 +1,4 @@
/* pages/main/portfolio/index.wxss */
/* pages/main/other/portfolio/index.wxss */
.portfolio-list {
width: 100vw;

View File

@@ -1,14 +1,14 @@
// pages/main/portfolio/index.ts
// pages/main/other/portfolio/index.ts
import Time from "../../../utils/Time";
import config from "../../../config/index"
import Events from "../../../utils/Events";
import Toolkit from "../../../utils/Toolkit";
import { Journal, JournalPage, JournalPageType } from "../../../types/Journal";
import { OrderType, } from "../../../types/Model";
import { PreviewImageMetadata } from "../../../types/Attachment";
import { MediaItem, MediaItemType } from "../../../types/UI";
import { JournalApi } from "../../../api/JournalApi";
import Time from "../../../../utils/Time";
import config from "../../../../config/index"
import Events from "../../../../utils/Events";
import Toolkit from "../../../../utils/Toolkit";
import { Journal, JournalPage, JournalPageType } from "../../../../types/Journal";
import { OrderType, } from "../../../../types/Model";
import { PreviewImageMetadata } from "../../../../types/Attachment";
import { MediaItem, MediaItemType } from "../../../../types/UI";
import { JournalApi } from "../../../../api/JournalApi";
interface IPortfolioData {
page: JournalPage;

View File

@@ -1,6 +1,6 @@
<!--pages/main/portfolio/index.wxml-->
<!--pages/main/other/portfolio/index.wxml-->
<view class="custom-navbar">
<t-navbar class="custom-navbar" title="专拍" />
<t-navbar class="custom-navbar" title="专拍" left-arrow placeholder />
</view>
<view class="portfolio-list">
<t-collapse class="collapse" expandMutex expandIcon>

View File

@@ -4,6 +4,6 @@
"t-icon": "tdesign-miniprogram/icon/icon",
"t-button": "tdesign-miniprogram/button/button",
"t-navbar": "tdesign-miniprogram/navbar/navbar",
"snowflake": "../../../components/background/snowflake"
"snowflake": "/components/background/snowflake"
}
}

View File

@@ -1,7 +1,7 @@
// pages/info/info.ts
import Time from "../../../utils/Time";
import config from "../../../config/index"
import Time from "../../../../utils/Time";
import config from "../../../../config/index"
interface IAboutData {
timer?: number;
@@ -61,4 +61,4 @@ Page({
"url": "/pages/index/index?from=info"
})
}
})
})

View File

@@ -1,10 +1,10 @@
<!--pages/info/info.wxml-->
<snowflake />
<t-navbar title="关于我们" />
<t-navbar title="关于我们" placeholder />
<scroll-view class="info" scroll-y>
<view class="cotainer">
<view class="header">
<image class="logo" src="/assets/image/logo.png"></image>
<image class="logo" src="/assets/image/logo.jpg"></image>
<view>
<text>记录</text>
<text class="name gao">小糕</text>
@@ -26,7 +26,7 @@
</view>
<view class="item">
<text class="label">版本:</text>
<text>1.6.6</text>
<text>1.7.0</text>
</view>
<view class="item copyright">
<text>{{copyright}}</text>

View File

@@ -1,14 +1,14 @@
// pages/journal/index.ts
import Time from "../../../utils/Time";
import config from "../../../config/index"
import Events from "../../../utils/Events";
import Toolkit from "../../../utils/Toolkit";
import { Journal, JournalPage, JournalPageType } from "../../../types/Journal";
import { OrderType } from "../../../types/Model";
import { PreviewImageMetadata } from "../../../types/Attachment";
import { MediaItem, MediaItemType } from "../../../types/UI";
import { JournalApi } from "../../../api/JournalApi";
import Time from "../../../../utils/Time";
import config from "../../../../config/index"
import Events from "../../../../utils/Events";
import Toolkit from "../../../../utils/Toolkit";
import { Journal, JournalPage, JournalPageType } from "../../../../types/Journal";
import { OrderType } from "../../../../types/Model";
import { PreviewImageMetadata } from "../../../../types/Attachment";
import { MediaItem, MediaItemType } from "../../../../types/UI";
import { JournalApi } from "../../../../api/JournalApi";
interface JournalData {
page: JournalPage;
@@ -126,22 +126,22 @@ Page({
},
toCreater() {
wx.navigateTo({
"url": "/pages/main/journal-editor/index?from=journal"
url: "/pages/main/journal/editor/index?from=journal"
})
},
toSearch() {
wx.navigateTo({
url: "/pages/main/journal-search/index"
url: "/pages/main/journal/search/index"
})
},
toMap() {
wx.navigateTo({
url: "/pages/main/journal-map/index"
url: "/pages/main/journal/map/index"
})
},
toDate() {
wx.navigateTo({
url: "/pages/main/journal-date/index"
url: "/pages/main/journal/date/index"
})
},
async fetch() {

View File

@@ -1,5 +1,5 @@
<view class="custom-navbar">
<t-navbar title="我们的记录">
<t-navbar title="我们的记录" placeholder>
<view slot="left" class="more" bind:tap="toggleMoreMenu">
<t-icon name="view-list" size="24px" />
</view>

View File

@@ -7,7 +7,7 @@
"t-button": "tdesign-miniprogram/button/button",
"t-checkbox": "tdesign-miniprogram/checkbox/checkbox",
"t-cell-group": "tdesign-miniprogram/cell-group/cell-group",
"journal-list": "../../../components/journal-list/index",
"journal-list": "/components/journal-list/index",
"t-radio-group": "tdesign-miniprogram/radio-group/radio-group"
},
"styleIsolation": "shared"

View File

@@ -1,14 +1,14 @@
// pages/main/moment/index.ts
import config from "../../../config/index";
import Events from "../../../utils/Events";
import IOSize, { Unit } from "../../../utils/IOSize";
import Time from "../../../utils/Time";
import Toolkit from "../../../utils/Toolkit";
import { Location, MediaItemType } from "../../../types/UI";
import { PreviewImageMetadata } from "../../../types/Attachment";
import { MomentApi } from "../../../api/MomentApi";
import { JournalApi } from "../../../api/JournalApi";
import { Network } from "../../../utils/Network";
import config from "../../../../config/index";
import Events from "../../../../utils/Events";
import IOSize, { Unit } from "../../../../utils/IOSize";
import Time from "../../../../utils/Time";
import Toolkit from "../../../../utils/Toolkit";
import { Location, MediaItemType } from "../../../../types/UI";
import { PreviewImageMetadata } from "../../../../types/Attachment";
import { MomentApi } from "../../../../api/MomentApi";
import { JournalApi } from "../../../../api/JournalApi";
import { Network } from "../../../../utils/Network";
type Item = {
id: number;
@@ -459,4 +459,4 @@ Page({
}
})
}
})
})

View File

@@ -1,6 +1,6 @@
<!--pages/main/moment/index.wxml-->
<view class="custom-navbar">
<t-navbar class="custom-navbar" title="瞬间" />
<t-navbar class="custom-navbar" title="瞬间" placeholder />
</view>
<view class="moment">
<view class="tips">

View File

@@ -0,0 +1,7 @@
{
"usingComponents": {
"t-navbar": "tdesign-miniprogram/navbar/navbar",
"t-cell": "tdesign-miniprogram/cell/cell",
"t-cell-group": "tdesign-miniprogram/cell-group/cell-group"
}
}

View File

@@ -0,0 +1,33 @@
type NavItem = {
title: string;
icon: string;
url: string;
};
interface OtherData {
navList: NavItem[];
}
Page({
data: <OtherData>{
navList: [
{
title: "备忘录",
icon: "task-checked",
url: "/pages/main/other/memo/index"
},
{
title: "专拍",
icon: "face-retouching",
url: "/pages/main/other/portfolio/index"
}
],
},
onNavTap(e: WechatMiniprogram.BaseEvent) {
const { url } = e.currentTarget.dataset as { url?: string };
if (!url) {
return;
}
wx.navigateTo({ url });
}
});

View File

@@ -0,0 +1,17 @@
<view class="custom-navbar">
<t-navbar title="其他" placeholder />
</view>
<view class="setting-bg">
<t-cell-group class="list">
<t-cell
wx:for="{{navList}}"
wx:for-item="item"
wx:key="title"
title="{{item.title}}"
leftIcon="{{item.icon}}"
arrow
bind:tap="onNavTap"
data-url="{{item.url}}"
/>
</t-cell-group>
</view>

View File

@@ -1,8 +1,8 @@
// pages/main/travel/index.ts
import Time from "../../../utils/Time";
import { TravelApi } from "../../../api/TravelApi";
import { Travel, TravelPage, TravelStatus, TravelStatusLabel, TravelStatusIcon, TransportationTypeLabel, TransportationTypeIcon } from "../../../types/Travel";
import Time from "../../../../utils/Time";
import { TravelApi } from "../../../../api/TravelApi";
import { Travel, TravelPage, TravelStatus, TravelStatusLabel, TravelStatusIcon, TransportationTypeLabel, TransportationTypeIcon } from "../../../../types/Travel";
interface TravelData {
/** 分页参数 */
@@ -163,14 +163,14 @@ Page({
/** 新建出行 */
toCreate() {
wx.navigateTo({
url: "/pages/main/travel-editor/index"
url: "/pages/main/travel/editor/index"
});
},
/** 查看详情 */
toDetail(e: WechatMiniprogram.BaseEvent) {
const { id } = e.currentTarget.dataset;
wx.navigateTo({
url: `/pages/main/travel-detail/index?id=${id}`
url: `/pages/main/travel/detail/index?id=${id}`
});
},
});

View File

@@ -1,6 +1,6 @@
<!--pages/main/travel/index.wxml-->
<view class="custom-navbar">
<t-navbar title="出行计划">
<t-navbar title="出行计划" placeholder>
<view slot="left" class="filter-btn" bind:tap="toggleFilterMenu">
<t-icon name="filter" size="24px" />
</view>

View File

@@ -1,4 +1,4 @@
// pages/main/travel-detail/index.less
// pages/main/travel/detail/index.less
.travel-detail {
width: 100vw;

View File

@@ -1,10 +1,10 @@
// pages/main/travel-detail/index.ts
// pages/main/travel/detail/index.ts
import Time from "../../../utils/Time";
import { TravelApi } from "../../../api/TravelApi";
import { TravelLocationApi } from "../../../api/TravelLocationApi";
import config from "../../../config/index";
import { Travel, TravelStatusLabel, TravelStatusIcon, TransportationTypeLabel, TravelLocation, TravelLocationTypeLabel, TravelLocationTypeIcon, TransportationTypeIcon, TravelLocationType } from "../../../types/Travel";
import Time from "../../../../utils/Time";
import { TravelApi } from "../../../../api/TravelApi";
import { TravelLocationApi } from "../../../../api/TravelLocationApi";
import config from "../../../../config/index";
import { Travel, TravelStatusLabel, TravelStatusIcon, TransportationTypeLabel, TravelLocation, TravelLocationTypeLabel, TravelLocationTypeIcon, TransportationTypeIcon, TravelLocationType } from "../../../../types/Travel";
interface TravelLocationView extends TravelLocation {
/** 预览图 */
@@ -174,7 +174,7 @@ Page({
const { travel } = this.data;
if (travel && travel.id) {
wx.navigateTo({
url: `/pages/main/travel-editor/index?id=${travel.id}`
url: `/pages/main/travel/editor/index?id=${travel.id}`
});
}
},
@@ -184,7 +184,7 @@ Page({
const { travel } = this.data;
if (travel && travel.id) {
wx.navigateTo({
url: `/pages/main/travel-location-editor/index?travelId=${travel.id}`
url: `/pages/main/travel/location-editor/index?travelId=${travel.id}`
});
}
},
@@ -195,7 +195,7 @@ Page({
const { travel } = this.data;
if (id && travel && travel.id) {
wx.navigateTo({
url: `/pages/main/travel-location-detail/index?id=${id}&travelId=${travel.id}`
url: `/pages/main/travel/location-detail/index?id=${id}&travelId=${travel.id}`
});
}
},
@@ -205,7 +205,7 @@ Page({
const { travel } = this.data;
if (travel && travel.id) {
wx.navigateTo({
url: `/pages/main/travel-location-map/index?travelId=${travel.id}`
url: `/pages/main/travel/location-map/index?travelId=${travel.id}`
});
}
},

View File

@@ -1,6 +1,6 @@
<!--pages/main/travel-detail/index.wxml-->
<!--pages/main/travel/detail/index.wxml-->
<view class="custom-navbar">
<t-navbar title="出行详情" leftArrow bind:go-back="goBack">
<t-navbar title="出行详情" leftArrow placeholder bind:go-back="goBack">
<view slot="right" class="edit-btn" bind:tap="toEdit">
<t-icon name="edit" size="24px" />
</view>

View File

@@ -1,4 +1,4 @@
// pages/main/travel-editor/index.less
// pages/main/travel/editor/index.less
.travel-editor {
width: 100vw;

View File

@@ -1,8 +1,8 @@
// pages/main/travel-editor/index.ts
// pages/main/travel/editor/index.ts
import Time from "../../../utils/Time";
import { TravelApi } from "../../../api/TravelApi";
import { TravelStatus, TransportationType } from "../../../types/Travel";
import Time from "../../../../utils/Time";
import { TravelApi } from "../../../../api/TravelApi";
import { TravelStatus, TransportationType } from "../../../../types/Travel";
interface TravelEditorData {
/** 模式create 或 edit */

View File

@@ -1,5 +1,5 @@
<!--pages/main/travel-editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '新建出行' : '编辑出行'}}">
<!--pages/main/travel/editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '新建出行' : '编辑出行'}}" placeholder>
<text slot="left" bindtap="cancel">取消</text>
</t-navbar>

View File

@@ -1,4 +1,4 @@
// pages/main/travel-location-detail/index.less
// pages/main/travel/location-detail/index.less
.travel-location-detail {
width: 100vw;
min-height: 100vh;

View File

@@ -1,11 +1,11 @@
// pages/main/travel-location-detail/index.ts
// pages/main/travel/location-detail/index.ts
import config from "../../../config/index";
import { TravelLocationApi } from "../../../api/TravelLocationApi";
import { TravelLocation, TravelLocationTypeIcon, TravelLocationTypeLabel } from "../../../types/Travel";
import { MediaAttachType, PreviewImageMetadata } from "../../../types/Attachment";
import { MapMarker, MediaItem, MediaItemType } from "../../../types/UI";
import Toolkit from "../../../utils/Toolkit";
import config from "../../../../config/index";
import { TravelLocationApi } from "../../../../api/TravelLocationApi";
import { TravelLocation, TravelLocationTypeIcon, TravelLocationTypeLabel } from "../../../../types/Travel";
import { MediaAttachType, PreviewImageMetadata } from "../../../../types/Attachment";
import { MapMarker, MediaItem, MediaItemType } from "../../../../types/UI";
import Toolkit from "../../../../utils/Toolkit";
interface TravelLocationView extends TravelLocation {
/** 媒体列表 */
@@ -161,7 +161,7 @@ Page({
const { location, travelId } = this.data;
if (location && location.id) {
wx.navigateTo({
url: `/pages/main/travel-location-editor/index?id=${location.id}&travelId=${travelId || location.travelId || ""}`
url: `/pages/main/travel/location-editor/index?id=${location.id}&travelId=${travelId || location.travelId || ""}`
});
}
},

View File

@@ -1,6 +1,6 @@
<!--pages/main/travel-location-detail/index.wxml-->
<!--pages/main/travel/location-detail/index.wxml-->
<view class="custom-navbar">
<t-navbar title="地点详情" leftArrow bind:go-back="goBack">
<t-navbar title="地点详情" leftArrow placeholder bind:go-back="goBack">
<view slot="right" class="edit-btn" bind:tap="toEdit">
<t-icon name="edit" size="24px" />
</view>

View File

@@ -1,4 +1,4 @@
// pages/main/travel-location-editor/index.less
// pages/main/travel/location-editor/index.less
.travel-location-editor {
width: 100vw;

View File

@@ -1,11 +1,11 @@
// pages/main/travel-location-editor/index.ts
// pages/main/travel/location-editor/index.ts
import { Network, WechatMediaItem } from "../../../utils/Network";
import { TravelLocationApi } from "../../../api/TravelLocationApi";
import { TravelLocationType, TravelLocationTypeLabel } from "../../../types/Travel";
import { MediaAttachType, PreviewImageMetadata } from "../../../types/Attachment";
import config from "../../../config/index";
import { MediaItem, MediaItemType } from "../../../types/UI";
import { Network, WechatMediaItem } from "../../../../utils/Network";
import { TravelLocationApi } from "../../../../api/TravelLocationApi";
import { TravelLocationType, TravelLocationTypeLabel } from "../../../../types/Travel";
import { MediaAttachType, PreviewImageMetadata } from "../../../../types/Attachment";
import config from "../../../../config/index";
import { MediaItem, MediaItemType } from "../../../../types/UI";
interface TravelLocationEditorData {
/** 模式create 或 edit */

View File

@@ -1,5 +1,5 @@
<!--pages/main/travel-location-editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '添加地点' : '编辑地点'}}">
<!--pages/main/travel/location-editor/index.wxml-->
<t-navbar title="{{mode === 'create' ? '添加地点' : '编辑地点'}}" placeholder>
<text slot="left" bindtap="cancel">取消</text>
</t-navbar>

View File

@@ -1,4 +1,4 @@
/* pages/main/travel-location-map/index.less */
/* pages/main/travel/location-map/index.less */
.container {
width: 100%;
height: 100vh;

View File

@@ -1,8 +1,8 @@
// pages/main/travel-location-map/index.ts
// pages/main/travel/location-map/index.ts
import { TravelLocationApi } from "../../../api/TravelLocationApi";
import { TravelLocation, TravelLocationTypeLabel } from "../../../types/Travel";
import Toolkit from "../../../utils/Toolkit";
import { TravelLocationApi } from "../../../../api/TravelLocationApi";
import { TravelLocation, TravelLocationTypeLabel } from "../../../../types/Travel";
import Toolkit from "../../../../utils/Toolkit";
interface MapMarker {
id: number;

View File

@@ -1,5 +1,5 @@
<!--pages/main/travel-location-map/index.wxml-->
<t-navbar title="地点地图" left-arrow />
<!--pages/main/travel/location-map/index.wxml-->
<t-navbar title="地点地图" left-arrow placeholder />
<view class="container">
<map
id="travel-location-map"

View File

@@ -12,12 +12,12 @@
"tabBarBorderStyle": "white",
"tabBarIconJournal": "assets/icon/light/journal.png",
"tabBarIconJournalActive": "assets/icon/light/journal_active.png",
"tabBarIconPortfolio": "assets/icon/light/portfolio.png",
"tabBarIconPortfolioActive": "assets/icon/light/portfolio_active.png",
"tabBarIconMoment": "assets/icon/light/moment.png",
"tabBarIconMomentActive": "assets/icon/light/moment_active.png",
"tabBarIconTravel": "assets/icon/light/travel.png",
"tabBarIconTravelActive": "assets/icon/light/travel_active.png",
"tabBarIconOther": "assets/icon/light/other.png",
"tabBarIconOtherActive": "assets/icon/light/other_active.png",
"tabBarIconInfo": "assets/icon/light/info.png",
"tabBarIconInfoActive": "assets/icon/light/info_active.png"
},
@@ -34,12 +34,12 @@
"tabBarBorderStyle": "black",
"tabBarIconJournal": "assets/icon/dark/journal.png",
"tabBarIconJournalActive": "assets/icon/dark/journal_active.png",
"tabBarIconPortfolio": "assets/icon/dark/portfolio.png",
"tabBarIconPortfolioActive": "assets/icon/dark/portfolio_active.png",
"tabBarIconMoment": "assets/icon/dark/moment.png",
"tabBarIconMomentActive": "assets/icon/dark/moment_active.png",
"tabBarIconTravel": "assets/icon/dark/travel.png",
"tabBarIconTravelActive": "assets/icon/dark/travel_active.png",
"tabBarIconOther": "assets/icon/dark/other.png",
"tabBarIconOtherActive": "assets/icon/dark/other_active.png",
"tabBarIconInfo": "assets/icon/dark/info.png",
"tabBarIconInfoActive": "assets/icon/dark/info_active.png"
}

View File

@@ -42,7 +42,7 @@
"tabIndent": "tab",
"tabSize": 4
},
"libVersion": "3.10.1",
"libVersion": "3.11.3",
"packOptions": {
"ignore": [],
"include": []