|
|
@ -3,29 +3,18 @@ |
|
|
<!-- 顶部导航栏 --> |
|
|
<!-- 顶部导航栏 --> |
|
|
<view class="header" :style="{ paddingTop: safeAreaInsets?.top + 'px' }"> |
|
|
<view class="header" :style="{ paddingTop: safeAreaInsets?.top + 'px' }"> |
|
|
<view class="header-left"> |
|
|
<view class="header-left"> |
|
|
<image |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/f91e09b5987802185e7679055dafd272.svg" |
|
|
|
|
|
class="icon" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<image src="https://d31zlh4on95l9h.cloudfront.net/images/f91e09b5987802185e7679055dafd272.svg" class="icon"> |
|
|
</image> |
|
|
</image> |
|
|
</view> |
|
|
</view> |
|
|
<view class="header-center"> |
|
|
<view class="header-center"> |
|
|
<text class="title" :style="{ paddingTop: safeAreaInsets?.top + 'px' }" |
|
|
|
|
|
>DeepMate</text |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<text class="title" :style="{ paddingTop: safeAreaInsets?.top + 'px' }">DeepMate</text> |
|
|
</view> |
|
|
</view> |
|
|
<view class="header-right"> |
|
|
<view class="header-right"> |
|
|
<image |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/d7c4e74201213a25dd9574e908233928.svg" |
|
|
|
|
|
class="icon" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<image src="https://d31zlh4on95l9h.cloudfront.net/images/d7c4e74201213a25dd9574e908233928.svg" class="icon"> |
|
|
</image> |
|
|
</image> |
|
|
<image |
|
|
|
|
|
style="margin-left: 10px" |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/099903c4aabf5713488b5cb60815e3f7.svg" |
|
|
|
|
|
class="icon" |
|
|
|
|
|
@click="openHistoryDrawer" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
<image style="margin-left: 10px" |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/099903c4aabf5713488b5cb60815e3f7.svg" class="icon" |
|
|
|
|
|
@click="openHistoryDrawer"></image> |
|
|
<!-- 新增新会话按钮 |
|
|
<!-- 新增新会话按钮 |
|
|
<button class="new-chat-button" @click="newChat"> |
|
|
<button class="new-chat-button" @click="newChat"> |
|
|
<text class="new-chat-text">新会话</text> |
|
|
<text class="new-chat-text">新会话</text> |
|
|
@ -36,22 +25,15 @@ |
|
|
<!-- 主要内容区域 --> |
|
|
<!-- 主要内容区域 --> |
|
|
<view class="main-content"> |
|
|
<view class="main-content"> |
|
|
<view class="banner-panel" v-if="messages.length === 0"> |
|
|
<view class="banner-panel" v-if="messages.length === 0"> |
|
|
<image |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/42e18bd7fe97d4f4f37aa70439a0990b.svg" |
|
|
|
|
|
class="pray-banner" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
<image src="https://d31zlh4on95l9h.cloudfront.net/images/42e18bd7fe97d4f4f37aa70439a0990b.svg" |
|
|
|
|
|
class="pray-banner"></image> |
|
|
<view class="contain"> |
|
|
<view class="contain"> |
|
|
<!-- 机器人头像和欢迎语 --> |
|
|
<!-- 机器人头像和欢迎语 --> |
|
|
<view class="robot-container" v-if="messages.length === 0"> |
|
|
<view class="robot-container" v-if="messages.length === 0"> |
|
|
<image |
|
|
|
|
|
src="/static/icons/机器人.svg" |
|
|
|
|
|
class="robot-avatar" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
<image src="/static/icons/机器人.svg" class="robot-avatar"></image> |
|
|
<view class="welcome-message"> |
|
|
<view class="welcome-message"> |
|
|
<text class="greeting">Hi, 我是您的股市随身顾问~</text> |
|
|
<text class="greeting">Hi, 我是您的股市随身顾问~</text> |
|
|
<text class="description" |
|
|
|
|
|
>个股诊断、市场情绪解读,都可以找我。</text |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<text class="description">个股诊断、市场情绪解读,都可以找我。</text> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
@ -66,19 +48,13 @@ |
|
|
<view class="recommend-card" v-if="messages.length === 0" @click="goBlank"> |
|
|
<view class="recommend-card" v-if="messages.length === 0" @click="goBlank"> |
|
|
<view class="arrow" v-if="messages.length === 0"></view> |
|
|
<view class="arrow" v-if="messages.length === 0"></view> |
|
|
<view class="card-content"> |
|
|
<view class="card-content"> |
|
|
<image |
|
|
|
|
|
src="../../static/images/tesla-logo.png" |
|
|
|
|
|
class="logo" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
<image src="../../static/images/tesla-logo.png" class="logo"></image> |
|
|
<view class="card-text"> |
|
|
<view class="card-text"> |
|
|
<text class="main-question">当前特斯拉该如何布局?</text> |
|
|
<text class="main-question">当前特斯拉该如何布局?</text> |
|
|
<text class="stock-code">TSLA</text> |
|
|
<text class="stock-code">TSLA</text> |
|
|
</view> |
|
|
</view> |
|
|
<image |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/40d94054644f6e3f1c366751f07f0010.svg" |
|
|
|
|
|
class="arrow-icon" |
|
|
|
|
|
@click="goBlank" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
<image src="https://d31zlh4on95l9h.cloudfront.net/images/40d94054644f6e3f1c366751f07f0010.svg" |
|
|
|
|
|
class="arrow-icon" @click="goBlank"></image> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
@ -97,51 +73,33 @@ |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> --> |
|
|
</view> --> |
|
|
<view v-if="messages.length === 0" class="welcome-section"> |
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
<view v-if="messages.length === 0" class="welcome-section"> |
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
<!-- 聊天区域 --> |
|
|
<!-- 聊天区域 --> |
|
|
<!-- 顶部粘性欢迎块:始终保留在聊天上方 --> |
|
|
<!-- 顶部粘性欢迎块:始终保留在聊天上方 --> |
|
|
<view class="chat-header" v-if="messages.length > 0"> |
|
|
<view class="chat-header" v-if="messages.length > 0"> |
|
|
<view class="robot-container"> |
|
|
<view class="robot-container"> |
|
|
<image src="/static/icons/机器人.svg" |
|
|
|
|
|
class="robot-avatar"></image> |
|
|
|
|
|
|
|
|
<image src="/static/icons/机器人.svg" class="robot-avatar"></image> |
|
|
<view class="welcome-message"> <text class="greeting">Hi, 我是您的股市随身顾问~</text> |
|
|
<view class="welcome-message"> <text class="greeting">Hi, 我是您的股市随身顾问~</text> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
<scroll-view |
|
|
|
|
|
class="chat-container" |
|
|
|
|
|
scroll-y="true" |
|
|
|
|
|
:scroll-top="chatScrollTop" |
|
|
|
|
|
:scroll-with-animation="!isSending" |
|
|
|
|
|
@scroll="onChatScroll" |
|
|
|
|
|
v-if="messages.length > 0" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<scroll-view class="chat-container" scroll-y="true" :scroll-top="chatScrollTop" |
|
|
|
|
|
:scroll-with-animation="!isSending" @scroll="onChatScroll" v-if="messages.length > 0"> |
|
|
<view class="message-list" id="messageList"> |
|
|
<view class="message-list" id="messageList"> |
|
|
<view |
|
|
|
|
|
v-for="(message, index) in messages" |
|
|
|
|
|
:key="index" |
|
|
|
|
|
:class=" |
|
|
|
|
|
message.isUser ? 'message user-message' : 'message bot-message' |
|
|
|
|
|
" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<view v-for="(message, index) in messages" :key="index" :class="message.isUser ? 'message user-message' : 'message bot-message' |
|
|
|
|
|
"> |
|
|
<!-- 会话图标 --> |
|
|
<!-- 会话图标 --> |
|
|
<text |
|
|
|
|
|
:class=" |
|
|
|
|
|
message.isUser |
|
|
|
|
|
? 'fa-solid fa-user message-icon' |
|
|
|
|
|
: 'fa-solid fa-robot message-icon' |
|
|
|
|
|
" |
|
|
|
|
|
></text> |
|
|
|
|
|
|
|
|
<text :class="message.isUser |
|
|
|
|
|
? 'fa-solid fa-user message-icon' |
|
|
|
|
|
: 'fa-solid fa-robot message-icon' |
|
|
|
|
|
"></text> |
|
|
<!-- 会话内容 --> |
|
|
<!-- 会话内容 --> |
|
|
<view class="message-content"> |
|
|
<view class="message-content"> |
|
|
<!-- <text class="message-text">{{ message.content }}</text> --> |
|
|
<!-- <text class="message-text">{{ message.content }}</text> --> |
|
|
<!-- loading --> |
|
|
<!-- loading --> |
|
|
<view |
|
|
|
|
|
class="loading-dots" |
|
|
|
|
|
v-if="message.isThinking || !message.isUser" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<view class="loading-dots" v-if="message.isThinking || !message.isUser"> |
|
|
<view class="thinking-process"> |
|
|
<view class="thinking-process"> |
|
|
<view class="thinking-header"> |
|
|
<view class="thinking-header"> |
|
|
<view class="thinking-icon">∞</view> |
|
|
<view class="thinking-icon">∞</view> |
|
|
@ -149,10 +107,7 @@ |
|
|
message.isTyping ? "正在思考" : "思考完成" |
|
|
message.isTyping ? "正在思考" : "思考完成" |
|
|
}}</view> |
|
|
}}</view> |
|
|
<view class="thinking-count"> </view> |
|
|
<view class="thinking-count"> </view> |
|
|
<view |
|
|
|
|
|
class="thinking-toggle" |
|
|
|
|
|
@click="message.isThinking = !message.isThinking" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<view class="thinking-toggle" @click="message.isThinking = !message.isThinking"> |
|
|
<span v-if="message.isThinking">↑</span> |
|
|
<span v-if="message.isThinking">↑</span> |
|
|
<span v-else>↓</span> |
|
|
<span v-else>↓</span> |
|
|
</view> |
|
|
</view> |
|
|
@ -174,11 +129,8 @@ |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
<!-- 使用 rich-text 渲染 Markdown 内容 --> |
|
|
<!-- 使用 rich-text 渲染 Markdown 内容 --> |
|
|
<rich-text |
|
|
|
|
|
v-if="!message.isUser" |
|
|
|
|
|
class="message-text" |
|
|
|
|
|
:nodes="renderMarkdown(message.content)" |
|
|
|
|
|
></rich-text> |
|
|
|
|
|
|
|
|
<rich-text v-if="!message.isUser" class="message-text" |
|
|
|
|
|
:nodes="renderMarkdown(message.content)"></rich-text> |
|
|
<text v-else class="message-text">{{ message.content }}</text> |
|
|
<text v-else class="message-text">{{ message.content }}</text> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
@ -189,14 +141,8 @@ |
|
|
<!-- 输入框区域 --> |
|
|
<!-- 输入框区域 --> |
|
|
<view class="input-area"> |
|
|
<view class="input-area"> |
|
|
<view class="input-wrapper"> |
|
|
<view class="input-wrapper"> |
|
|
<input |
|
|
|
|
|
type="text" |
|
|
|
|
|
placeholder="请输入股票代码/名称,获取AI洞察" |
|
|
|
|
|
placeholder-style="color:#fff;opacity:1" |
|
|
|
|
|
class="input-field" |
|
|
|
|
|
v-model="inputMessage" |
|
|
|
|
|
@confirm="sendMessage" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<input type="text" placeholder="请输入股票代码/名称,获取AI洞察" placeholder-style="color:#fff;opacity:1" class="input-field" |
|
|
|
|
|
v-model="inputMessage" @confirm="sendMessage" /> |
|
|
<image class="send-button" @click="sendMessage" :disabled="isSending"> |
|
|
<image class="send-button" @click="sendMessage" :disabled="isSending"> |
|
|
<!-- <image |
|
|
<!-- <image |
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/95f1ea2262e9157db13c93c0dc1c5d96.svg" |
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/95f1ea2262e9157db13c93c0dc1c5d96.svg" |
|
|
@ -204,26 +150,19 @@ |
|
|
></image> --> |
|
|
></image> --> |
|
|
</image> |
|
|
</image> |
|
|
</view> |
|
|
</view> |
|
|
<text class="disclaimer" |
|
|
|
|
|
>以上数据由AI生成,不作为最终投资建议,决策需独立!</text |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<text class="disclaimer">以上数据由AI生成,不作为最终投资建议,决策需独立!</text> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
<image |
|
|
|
|
|
class="back-to-top" |
|
|
|
|
|
src="https://d31zlh4on95l9h.cloudfront.net/images/ba357635d2bb480241952bb1cabacd73.svg" |
|
|
|
|
|
|
|
|
<image class="back-to-top" src="https://d31zlh4on95l9h.cloudfront.net/images/ba357635d2bb480241952bb1cabacd73.svg" |
|
|
:style="{ |
|
|
:style="{ |
|
|
transform: 'translate3d(' + backTopX + 'px,' + backTopY + 'px,0)', |
|
|
transform: 'translate3d(' + backTopX + 'px,' + backTopY + 'px,0)', |
|
|
}" |
|
|
|
|
|
@touchstart="onBackTopTouchStart" |
|
|
|
|
|
@touchmove="onBackTopTouchMove" |
|
|
|
|
|
@touchend="onBackTopTouchEnd" |
|
|
|
|
|
@click="onBackTopClick" |
|
|
|
|
|
></image> |
|
|
|
|
|
|
|
|
}" @touchstart="onBackTopTouchStart" @touchmove="onBackTopTouchMove" @touchend="onBackTopTouchEnd" |
|
|
|
|
|
@click="onBackTopClick"></image> |
|
|
|
|
|
|
|
|
<!-- 搜索历史侧拉框 --> |
|
|
<!-- 搜索历史侧拉框 --> |
|
|
<view class="drawer-overlay" v-show="showHistoryDrawer"></view> |
|
|
<view class="drawer-overlay" v-show="showHistoryDrawer"></view> |
|
|
<view class="drawer-panel" v-show="showHistoryDrawer" @click.stop @touchmove.stop.prevent :style="{ transform: 'translateY(' + drawerOffsetY + 'px)' }"> |
|
|
|
|
|
|
|
|
<view class="drawer-panel" v-show="showHistoryDrawer" @click.stop @touchmove.stop.prevent |
|
|
|
|
|
:style="{ transform: 'translateY(' + drawerOffsetY + 'px)' }"> |
|
|
|
|
|
|
|
|
<view class="drawer-header"> |
|
|
<view class="drawer-header"> |
|
|
<text class="drawer-title">历史对话</text> |
|
|
<text class="drawer-title">历史对话</text> |
|
|
@ -531,12 +470,10 @@ const simulateBotResponse = async (userMessage) => { |
|
|
|
|
|
|
|
|
// 首先进行意图识别 |
|
|
// 首先进行意图识别 |
|
|
const res = await postIntent({ |
|
|
const res = await postIntent({ |
|
|
content: "森那美", |
|
|
|
|
|
language: "cn", |
|
|
|
|
|
marketlist: "hk,cn,usa,my,sg,vi,in,gb", |
|
|
|
|
|
token: |
|
|
|
|
|
"9ior41AF0xTIbIG2pRnnbZi0+fEeMx8pywnilrmTwo5FbqJ91WrSWOxp9MkpKiNtedtUafqvzIwpFKrwuMs", |
|
|
|
|
|
model: "1", |
|
|
|
|
|
|
|
|
content: userMessage, |
|
|
|
|
|
language: 'cn', |
|
|
|
|
|
marketList: 'hk,cn,usa,my,sg,vi,in,gb', |
|
|
|
|
|
token: "pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q" |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
console.log("res" + res); |
|
|
console.log("res" + res); |
|
|
@ -557,8 +494,7 @@ const simulateBotResponse = async (userMessage) => { |
|
|
recordId, |
|
|
recordId, |
|
|
parentId, |
|
|
parentId, |
|
|
stockId, |
|
|
stockId, |
|
|
token: |
|
|
|
|
|
"9ior41AF0xTIbIG2pRnnbZi0+fEeMx8pywnilrmTwo5FbqJ91WrSWOxp9MkpKiNtedtUafqvzIwpFKrwuMs", |
|
|
|
|
|
|
|
|
token: memberStore.userInfo?.token || '', |
|
|
language: "cn", |
|
|
language: "cn", |
|
|
}); |
|
|
}); |
|
|
console.log("StockInfo", StockInfo); |
|
|
console.log("StockInfo", StockInfo); |
|
|
@ -607,8 +543,8 @@ const simulateBotResponse = async (userMessage) => { |
|
|
const delay = slowPunct.test(ch) |
|
|
const delay = slowPunct.test(ch) |
|
|
? 220 |
|
|
? 220 |
|
|
: midPunct.test(ch) |
|
|
: midPunct.test(ch) |
|
|
? 120 |
|
|
|
|
|
: baseDelay; |
|
|
|
|
|
|
|
|
? 120 |
|
|
|
|
|
: baseDelay; |
|
|
setTimeout(typeWriter, delay); |
|
|
setTimeout(typeWriter, delay); |
|
|
} else { |
|
|
} else { |
|
|
const current = messages.value[botIndex]; |
|
|
const current = messages.value[botIndex]; |
|
|
@ -917,7 +853,7 @@ const onBackTopClick = () => { |
|
|
/* box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); */ |
|
|
/* box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.welcome-section{ |
|
|
|
|
|
|
|
|
.welcome-section { |
|
|
/* 灰色卡片(recommend-card)之后展示背景图 */ |
|
|
/* 灰色卡片(recommend-card)之后展示背景图 */ |
|
|
margin-top: 10rpx; |
|
|
margin-top: 10rpx; |
|
|
display: flex; |
|
|
display: flex; |
|
|
@ -925,9 +861,12 @@ const onBackTopClick = () => { |
|
|
justify-content: center; |
|
|
justify-content: center; |
|
|
background: url('https://d31zlh4on95l9h.cloudfront.net/images/eca84d9fb54712cb3bc6c6174773b83b.svg'); |
|
|
background: url('https://d31zlh4on95l9h.cloudfront.net/images/eca84d9fb54712cb3bc6c6174773b83b.svg'); |
|
|
background-repeat: no-repeat; |
|
|
background-repeat: no-repeat; |
|
|
background-position: center top; /* 放在容器顶部,正好在灰色卡片下方 */ |
|
|
|
|
|
background-size: 80% auto; /* 缩放以适配宽度 */ |
|
|
|
|
|
height: 460rpx; /* 提供可视高度,让背景图可见 */ |
|
|
|
|
|
|
|
|
background-position: center top; |
|
|
|
|
|
/* 放在容器顶部,正好在灰色卡片下方 */ |
|
|
|
|
|
background-size: 80% auto; |
|
|
|
|
|
/* 缩放以适配宽度 */ |
|
|
|
|
|
height: 460rpx; |
|
|
|
|
|
/* 提供可视高度,让背景图可见 */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.card-content { |
|
|
.card-content { |
|
|
@ -1097,7 +1036,7 @@ const onBackTopClick = () => { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.user-message .message-text { |
|
|
.user-message .message-text { |
|
|
color:black; |
|
|
|
|
|
|
|
|
color: black; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.bot-message .message-text { |
|
|
.bot-message .message-text { |
|
|
@ -1132,6 +1071,7 @@ const onBackTopClick = () => { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@keyframes loading { |
|
|
@keyframes loading { |
|
|
|
|
|
|
|
|
0%, |
|
|
0%, |
|
|
80%, |
|
|
80%, |
|
|
100% { |
|
|
100% { |
|
|
@ -1312,11 +1252,12 @@ const onBackTopClick = () => { |
|
|
height: 48px; |
|
|
height: 48px; |
|
|
border-radius: 12px; |
|
|
border-radius: 12px; |
|
|
background: #fff; |
|
|
background: #fff; |
|
|
box-shadow: 0 2px 10px rgba(0,0,0,0.08); |
|
|
|
|
|
|
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08); |
|
|
display: flex; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
justify-content: center; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.drawer-back-icon { |
|
|
.drawer-back-icon { |
|
|
font-size: 16px; |
|
|
font-size: 16px; |
|
|
color: #8a8a8a; |
|
|
color: #8a8a8a; |
|
|
@ -1383,11 +1324,15 @@ const onBackTopClick = () => { |
|
|
|
|
|
|
|
|
.drawer-content { |
|
|
.drawer-content { |
|
|
flex: 1; |
|
|
flex: 1; |
|
|
min-height: 0; /* 让 flex 子元素可在容器内收缩以启用滚动 */ |
|
|
|
|
|
|
|
|
min-height: 0; |
|
|
|
|
|
/* 让 flex 子元素可在容器内收缩以启用滚动 */ |
|
|
height: 100%; |
|
|
height: 100%; |
|
|
overscroll-behavior-y: contain; /* 防止滚动串联到页面 */ |
|
|
|
|
|
-webkit-overflow-scrolling: touch; /* iOS 惯性滚动 */ |
|
|
|
|
|
touch-action: pan-y; /* 优化触控滚动,仅垂直 */ |
|
|
|
|
|
|
|
|
overscroll-behavior-y: contain; |
|
|
|
|
|
/* 防止滚动串联到页面 */ |
|
|
|
|
|
-webkit-overflow-scrolling: touch; |
|
|
|
|
|
/* iOS 惯性滚动 */ |
|
|
|
|
|
touch-action: pan-y; |
|
|
|
|
|
/* 优化触控滚动,仅垂直 */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.drawer-inner { |
|
|
.drawer-inner { |
|
|
@ -1414,7 +1359,9 @@ const onBackTopClick = () => { |
|
|
margin-bottom: 12rpx; |
|
|
margin-bottom: 12rpx; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.history-left { margin-right: 12rpx; } |
|
|
|
|
|
|
|
|
.history-left { |
|
|
|
|
|
margin-right: 12rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.flag-circle { |
|
|
.flag-circle { |
|
|
width: 36rpx; |
|
|
width: 36rpx; |
|
|
@ -1427,9 +1374,13 @@ const onBackTopClick = () => { |
|
|
justify-content: center; |
|
|
justify-content: center; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.flag-emoji { font-size: 24rpx; } |
|
|
|
|
|
|
|
|
.flag-emoji { |
|
|
|
|
|
font-size: 24rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.history-main { flex: 1; } |
|
|
|
|
|
|
|
|
.history-main { |
|
|
|
|
|
flex: 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.history-query { |
|
|
.history-query { |
|
|
font-size: 28rpx; |
|
|
font-size: 28rpx; |
|
|
@ -1456,16 +1407,19 @@ const onBackTopClick = () => { |
|
|
color: #333333; |
|
|
color: #333333; |
|
|
font-weight: 500; |
|
|
font-weight: 500; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.history-time { |
|
|
.history-time { |
|
|
margin-top: 8rpx; |
|
|
margin-top: 8rpx; |
|
|
font-size: 22rpx; |
|
|
font-size: 22rpx; |
|
|
color: #888888; |
|
|
color: #888888; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.empty-history { |
|
|
.empty-history { |
|
|
padding: 40rpx; |
|
|
padding: 40rpx; |
|
|
color: #999999; |
|
|
color: #999999; |
|
|
text-align: center; |
|
|
text-align: center; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.thinking-process { |
|
|
.thinking-process { |
|
|
margin: 10rpx 0; |
|
|
margin: 10rpx 0; |
|
|
border: 2rpx solid #e5e5e5; |
|
|
border: 2rpx solid #e5e5e5; |
|
|
|