open Location in journal-map

This commit is contained in:
Timi
2025-12-11 01:05:02 +08:00
parent 861ae8baff
commit 0379a1d3b5
6 changed files with 24 additions and 32 deletions

View File

@ -22,38 +22,23 @@ interface JournalDetailPanelData {
Component({
properties: {
// 是否显示
visible: {
type: Boolean,
value: false
},
// 标题(如 "2024 年 1 月 1 日" 或位置名称)
title: {
type: String,
value: ""
},
// 日记列表
journals: {
type: Array,
value: []
},
// 是否显示标题位置图标
showLocationIcon: {
type: Boolean,
value: false
},
// 是否显示每条日记的日期
showJournalDate: {
type: Boolean,
value: true
},
// 是否显示每条日记的位置
showJournalLocation: {
type: Boolean,
value: true
mode: {
type: String,
value: "DATE"
}
},
data: <JournalDetailPanelData>{
currentJournalIndex: 0,
},
@ -72,20 +57,21 @@ Component({
methods: {
/** 关闭详情 */
closeDetail() {
this.triggerEvent('close');
this.triggerEvent("close");
},
/** swiper 切换事件 */
onSwiperChange(e: WechatMiniprogram.SwiperChange) {
this.setData({
currentJournalIndex: e.detail.current
});
},
openLocation(e: WechatMiniprogram.BaseEvent) {
const { journalIndex } = e.currentTarget.dataset;
if (!journalIndex && this.properties.mode !== "LOCATION") {
return;
}
const journals = this.properties.journals as JournalInfo[];
const journal = journals[journalIndex];
const journal = journals[journalIndex || 0];
if (journal.lat && journal.lng) {
wx.openLocation({
latitude: journal.lat,

View File

@ -9,8 +9,8 @@
<view class="detail-content">
<view class="header">
<view class="info">
<view wx:if="{{title}}" class="title">
<t-icon wx:if="{{showLocationIcon}}" class="icon" name="location-filled" />
<view wx:if="{{title}}" class="title" catchtap="openLocation">
<t-icon wx:if="{{mode === 'LOCATION'}}" class="icon" name="location-filled" />
<text>{{title}}</text>
</view>
</view>
@ -27,7 +27,7 @@
<view class="journal-item">
<view class="journal-header">
<view
wx:if="{{item.location && showJournalLocation}}"
wx:if="{{item.location && mode === 'DATE'}}"
class="location"
catchtap="openLocation"
data-journal-index="{{currentJournalIndex}}"
@ -35,7 +35,7 @@
<t-icon class="icon" name="location-filled" />
<text class="text">{{item.location}}</text>
</view>
<view wx:if="{{showJournalDate}}" class="date">{{item.date}}</view>
<view wx:if="{{mode === 'LOCATION'}}" class="date">{{item.date}}</view>
</view>
<view wx:if="{{item.idea}}" class="idea">{{item.idea}}</view>
<scroll-view wx:if="{{item.items && item.items.length > 0}}" scroll-y class="items-scroll">

View File

@ -13,7 +13,6 @@
visible="{{popupVisible}}"
title="{{selectedDate.displayDate}}"
journals="{{selectedDate.journals}}"
show-journal-date="{{false}}"
show-journal-location="{{true}}"
mode="DATE"
bind:close="closeDetail"
/>

View File

@ -2,7 +2,7 @@
import config from "../../../config/index";
import Time from "../../../utils/Time";
import { Journal, JournalPageType } from "../../../types/Journal";
import { MediaAttachExt, MediaAttachType } from "../../../types/Attachment";
import { MediaAttachType } from "../../../types/Attachment";
import Toolkit from "../../../utils/Toolkit";
interface MapMarker {
@ -239,6 +239,8 @@ Page({
id: journal.id,
date: Time.toPassedDateTime(journal.createdAt),
time: `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`,
lat: journal.lat,
lng: journal.lng,
location: journal.location,
idea: journal.idea,
items: journal.items

View File

@ -41,8 +41,6 @@
visible="{{showDetail && detailVisible}}"
title="{{selectedLocation.location}}"
journals="{{selectedLocation.journals}}"
show-location-icon="{{true}}"
show-journal-date="{{true}}"
show-journal-location="{{false}}"
mode="LOCATION"
bind:close="closeDetail"
/>

View File

@ -62,3 +62,10 @@ export type Location = {
/** 描述 */
text?: string;
}
export enum JournalDetailType {
DATE = "DATE",
LOCATION = "LOCATION"
}