@liujitcn/kratos-uni-app-system 0.0.78 → 0.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +6 -2
- package/dist/module.mjs +6 -2
- package/package.json +2 -2
- package/src/pages.ts +6 -2
- package/src/views/pages/my/my.vue +92 -178
- package/src/views/pagesMember/ai/components/Composer.vue +35 -28
- package/src/views/pagesMember/ai/components/KnowledgePicker.vue +74 -40
- package/src/views/pagesMember/ai/components/ModelPicker.vue +24 -18
- package/src/views/pagesMember/ai/components/SessionDrawer.vue +38 -28
- package/src/views/pagesMember/ai/components/WelcomePanel.vue +30 -23
- package/src/views/pagesMember/ai/index.vue +61 -103
- package/src/views/pagesMember/message/detail.vue +86 -38
- package/src/views/pagesMember/message/index.vue +112 -229
- package/src/views/pagesMember/profile/profile.vue +136 -195
package/dist/index.mjs
CHANGED
|
@@ -234,7 +234,9 @@ var systemPages = {
|
|
|
234
234
|
navigationBarTitleText: ""
|
|
235
235
|
}
|
|
236
236
|
},
|
|
237
|
-
"pagesMember/settings/settings": {
|
|
237
|
+
"pagesMember/settings/settings": {
|
|
238
|
+
style: { navigationStyle: "custom", navigationBarTitleText: "" }
|
|
239
|
+
},
|
|
238
240
|
"pagesMember/ai/index": {
|
|
239
241
|
style: {
|
|
240
242
|
navigationStyle: "custom",
|
|
@@ -254,7 +256,9 @@ var systemPages = {
|
|
|
254
256
|
navigationBarTitleText: ""
|
|
255
257
|
}
|
|
256
258
|
},
|
|
257
|
-
"pagesMember/message/detail": {
|
|
259
|
+
"pagesMember/message/detail": {
|
|
260
|
+
style: { navigationStyle: "custom", navigationBarTitleText: "" }
|
|
261
|
+
}
|
|
258
262
|
};
|
|
259
263
|
|
|
260
264
|
// src/locales/zh-CN.json
|
package/dist/module.mjs
CHANGED
|
@@ -10,7 +10,9 @@ var systemPages = {
|
|
|
10
10
|
navigationBarTitleText: ""
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
|
-
"pagesMember/settings/settings": {
|
|
13
|
+
"pagesMember/settings/settings": {
|
|
14
|
+
style: { navigationStyle: "custom", navigationBarTitleText: "" }
|
|
15
|
+
},
|
|
14
16
|
"pagesMember/ai/index": {
|
|
15
17
|
style: {
|
|
16
18
|
navigationStyle: "custom",
|
|
@@ -30,7 +32,9 @@ var systemPages = {
|
|
|
30
32
|
navigationBarTitleText: ""
|
|
31
33
|
}
|
|
32
34
|
},
|
|
33
|
-
"pagesMember/message/detail": {
|
|
35
|
+
"pagesMember/message/detail": {
|
|
36
|
+
style: { navigationStyle: "custom", navigationBarTitleText: "" }
|
|
37
|
+
}
|
|
34
38
|
};
|
|
35
39
|
|
|
36
40
|
// src/locales/zh-CN.json
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git@github.com:liujitcn/kratos-admin.git"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.0.
|
|
10
|
+
"version": "0.0.80",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@dcloudio/uni-app": "3.0.0-5010520260709002",
|
|
36
36
|
"@dcloudio/uni-ui": "^1.4.28",
|
|
37
37
|
"vue": "^3.4.21",
|
|
38
|
-
"@liujitcn/kratos-uni-app-core": "^0.0.
|
|
38
|
+
"@liujitcn/kratos-uni-app-core": "^0.0.80"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"esbuild": "^0.20.2",
|
package/src/pages.ts
CHANGED
|
@@ -9,7 +9,9 @@ export const systemPages: Record<string, KratosAppPageConfig> = {
|
|
|
9
9
|
navigationBarTitleText: '',
|
|
10
10
|
},
|
|
11
11
|
},
|
|
12
|
-
'pagesMember/settings/settings': {
|
|
12
|
+
'pagesMember/settings/settings': {
|
|
13
|
+
style: { navigationStyle: 'custom', navigationBarTitleText: '' },
|
|
14
|
+
},
|
|
13
15
|
'pagesMember/ai/index': {
|
|
14
16
|
style: {
|
|
15
17
|
navigationStyle: 'custom',
|
|
@@ -29,5 +31,7 @@ export const systemPages: Record<string, KratosAppPageConfig> = {
|
|
|
29
31
|
navigationBarTitleText: '',
|
|
30
32
|
},
|
|
31
33
|
},
|
|
32
|
-
'pagesMember/message/detail': {
|
|
34
|
+
'pagesMember/message/detail': {
|
|
35
|
+
style: { navigationStyle: 'custom', navigationBarTitleText: '' },
|
|
36
|
+
},
|
|
33
37
|
}
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { useSettingStore, useUserStore } from '@liujitcn/kratos-uni-app-core/stores'
|
|
2
|
+
import { useSettingStore, useThemeStore, useUserStore } from '@liujitcn/kratos-uni-app-core/stores'
|
|
3
3
|
import { computed } from 'vue'
|
|
4
|
-
import { formatSrc } from '@liujitcn/kratos-uni-app-core/utils/index'
|
|
4
|
+
import { formatSrc, getMpCapsuleRightGap } from '@liujitcn/kratos-uni-app-core/utils/index'
|
|
5
5
|
import { navigateToLogin } from '@liujitcn/kratos-uni-app-core/utils/navigation'
|
|
6
6
|
import { navigateAppRoute } from '@liujitcn/kratos-uni-app-core'
|
|
7
7
|
import defaultAvatar from '@liujitcn/kratos-uni-app-core/static/images/avatar.png'
|
|
8
|
-
import centerBackground from '@liujitcn/kratos-uni-app-core/static/images/center_bg.png'
|
|
9
8
|
import { useI18n } from '@liujitcn/kratos-uni-app-core'
|
|
10
9
|
|
|
11
10
|
// 获取会员信息
|
|
12
11
|
const userStore = useUserStore()
|
|
13
12
|
const settingStore = useSettingStore()
|
|
13
|
+
const themeStore = useThemeStore()
|
|
14
14
|
const { t } = useI18n()
|
|
15
15
|
const isLoggedIn = computed(() => userStore.isAuthenticated())
|
|
16
16
|
const profile = computed(() => userStore.userInfo)
|
|
17
17
|
|
|
18
|
+
/** MP-WEIXIN 原生胶囊按钮右侧避让宽度,写入 --mp-capsule-gap 供 .k-top 预留空间。 */
|
|
19
|
+
const capsuleGap = getMpCapsuleRightGap()
|
|
20
|
+
|
|
21
|
+
/** 昵称或占位账号首字符,用于渐变头像兜底。 */
|
|
22
|
+
const avatarText = computed(() => (profile.value?.nick_name || 'U').slice(0, 1))
|
|
23
|
+
|
|
24
|
+
/** 设计稿齿轮线稿,随主题取色的 data URI,替代 CSS 手绘图标。 */
|
|
25
|
+
const gearIcon = computed(() => {
|
|
26
|
+
const color = themeStore.theme === 'light' ? '#102232' : '#e9f4f6'
|
|
27
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="${color}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.6 1.6 0 0 0 .3 1.8 2 2 0 1 1-2.8 2.8 1.6 1.6 0 0 0-2.7 1.1 2 2 0 1 1-4 0 1.6 1.6 0 0 0-2.6-1.1 2 2 0 1 1-2.8-2.8A1.6 1.6 0 0 0 3 13.9a2 2 0 1 1 0-4 1.6 1.6 0 0 0 1.5-2.7 2 2 0 1 1 2.8-2.8A1.6 1.6 0 0 0 10 4.6a2 2 0 1 1 4 0 1.6 1.6 0 0 0 2.7.6 2 2 0 1 1 2.8 2.8 1.6 1.6 0 0 0-.1 2.6"/></svg>`
|
|
28
|
+
return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
/** 个人卡账号行:登录展示账号,未登录提示去登录。 */
|
|
32
|
+
const accountText = computed(() => {
|
|
33
|
+
if (isLoggedIn.value && profile.value) {
|
|
34
|
+
return profile.value.user_name || profile.value.nick_name || ''
|
|
35
|
+
}
|
|
36
|
+
return t('system.profile.login_prompt')
|
|
37
|
+
})
|
|
38
|
+
|
|
18
39
|
/** 打开移动端 AI 助手静态页,未登录时先进入登录流程。 */
|
|
19
40
|
const navigateToAi = () => {
|
|
20
41
|
if (!userStore.ensureAuthenticated()) {
|
|
@@ -38,207 +59,100 @@ const navigateToProfile = () => navigateAppRoute('app/profile')
|
|
|
38
59
|
</script>
|
|
39
60
|
|
|
40
61
|
<template>
|
|
41
|
-
<scroll-view
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<view class="profile">
|
|
49
|
-
<!-- 情况1:已登录 -->
|
|
50
|
-
<view class="overview" v-if="isLoggedIn && profile">
|
|
51
|
-
<view @tap="navigateToProfile">
|
|
52
|
-
<image
|
|
53
|
-
v-if="profile.avatar"
|
|
54
|
-
class="avatar"
|
|
55
|
-
:src="formatSrc(profile.avatar)"
|
|
56
|
-
mode="aspectFill"
|
|
57
|
-
></image>
|
|
58
|
-
<image v-else class="avatar" :src="defaultAvatar" mode="aspectFill"></image>
|
|
59
|
-
</view>
|
|
60
|
-
<view class="meta">
|
|
61
|
-
<view class="nickname">
|
|
62
|
-
{{ profile.nick_name }}
|
|
63
|
-
</view>
|
|
64
|
-
<view class="extra" @tap="navigateToProfile">
|
|
65
|
-
<text class="update">{{ t('system.profile.avatar_update') }}</text>
|
|
66
|
-
</view>
|
|
62
|
+
<scroll-view enable-back-to-top class="my-viewport" scroll-y :class="themeStore.themeClass">
|
|
63
|
+
<view class="my-content">
|
|
64
|
+
<!-- 顶栏:标题 + 设置入口(Tab 根页,无返回) -->
|
|
65
|
+
<view class="k-top" :style="{ '--mp-capsule-gap': `${capsuleGap}px` }">
|
|
66
|
+
<view class="k-top__title">{{ t('core.navigation.my') }}</view>
|
|
67
|
+
<view class="k-ic" @tap="navigateToSettings">
|
|
68
|
+
<image class="my-gear" :src="gearIcon" mode="aspectFit" />
|
|
67
69
|
</view>
|
|
68
70
|
</view>
|
|
69
|
-
|
|
70
|
-
<view class="
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
|
|
72
|
+
<view class="my-stack">
|
|
73
|
+
<!-- 个人资料 -->
|
|
74
|
+
<view class="k-glass k-glass--lit k-pfx my-profile" @tap="navigateToProfile">
|
|
75
|
+
<view class="k-cnr k-cnr--tr" aria-hidden="true"></view>
|
|
76
|
+
<view class="k-cnr k-cnr--bl" aria-hidden="true"></view>
|
|
77
|
+
<view class="my-pfx-main">
|
|
78
|
+
<image
|
|
79
|
+
v-if="isLoggedIn && profile"
|
|
80
|
+
class="k-pfx__av"
|
|
81
|
+
:src="profile.avatar ? formatSrc(profile.avatar) : defaultAvatar"
|
|
82
|
+
mode="aspectFill"
|
|
83
|
+
></image>
|
|
84
|
+
<view v-else class="k-pfx__av">{{ avatarText }}</view>
|
|
85
|
+
<view class="my-pfx-meta">
|
|
86
|
+
<view class="k-pfx__nm">
|
|
87
|
+
{{ isLoggedIn && profile ? profile.nick_name : t('system.profile.not_logged_in') }}
|
|
88
|
+
</view>
|
|
89
|
+
<view class="k-pfx__ac">{{ accountText }}</view>
|
|
90
|
+
</view>
|
|
91
|
+
</view>
|
|
92
|
+
<view class="k-pfx__ent">{{ t('system.profile.title') }} ›</view>
|
|
73
93
|
</view>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<view class="
|
|
79
|
-
<
|
|
94
|
+
|
|
95
|
+
<!-- AI 助手入口 -->
|
|
96
|
+
<view v-if="settingStore.aiEnabled" class="k-aix" @tap="navigateToAi">
|
|
97
|
+
<view class="k-aix__ic">AI</view>
|
|
98
|
+
<view class="my-aix-copy">
|
|
99
|
+
<view class="k-aix__t">{{ t('system.settings.ai_title') }}</view>
|
|
100
|
+
<view class="k-aix__d">{{ t('system.settings.ai_description') }}</view>
|
|
80
101
|
</view>
|
|
102
|
+
<view class="k-aix__b">{{ t('system.settings.go_ask') }}</view>
|
|
81
103
|
</view>
|
|
82
104
|
</view>
|
|
83
|
-
<view class="settings" @tap="navigateToSettings">{{ t('core.settings.title') }}</view>
|
|
84
|
-
</view>
|
|
85
|
-
<!-- AI 助手入口 -->
|
|
86
|
-
<view v-if="settingStore.aiEnabled" class="ai-entry" @tap="navigateToAi">
|
|
87
|
-
<view class="ai-entry__icon">AI</view>
|
|
88
|
-
<view class="ai-entry__content">
|
|
89
|
-
<view class="ai-entry__title">{{ t('system.settings.ai_title') }}</view>
|
|
90
|
-
<view class="ai-entry__desc">{{ t('system.settings.ai_description') }}</view>
|
|
91
|
-
</view>
|
|
92
|
-
<view class="ai-entry__action">{{ t('system.settings.go_ask') }}</view>
|
|
93
105
|
</view>
|
|
94
106
|
</scroll-view>
|
|
95
107
|
</template>
|
|
96
108
|
|
|
97
109
|
<style lang="scss">
|
|
98
|
-
|
|
110
|
+
.my-viewport {
|
|
99
111
|
height: 100%;
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
min-height: 100vh;
|
|
113
|
+
box-sizing: border-box;
|
|
114
|
+
background: var(--kratos-bg-gradient);
|
|
102
115
|
}
|
|
103
116
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
position: relative;
|
|
107
|
-
z-index: 99;
|
|
108
|
-
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
|
-
margin: 20rpx 20rpx 0;
|
|
111
|
-
padding: 26rpx 24rpx;
|
|
112
|
-
border-radius: 10rpx;
|
|
113
|
-
background-color: #fff;
|
|
114
|
-
box-shadow: 0 4rpx 6rpx rgba(240, 240, 240, 0.6);
|
|
115
|
-
}
|
|
117
|
+
.my-content {
|
|
118
|
+
padding: calc(env(safe-area-inset-top) + 24rpx) 32rpx calc(40rpx + env(safe-area-inset-bottom));
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
height: 92rpx;
|
|
121
|
-
border-radius: 24rpx;
|
|
122
|
-
color: #fff;
|
|
123
|
-
font-size: 28rpx;
|
|
124
|
-
font-weight: 700;
|
|
125
|
-
line-height: 92rpx;
|
|
126
|
-
text-align: center;
|
|
127
|
-
background-color: #27ba9b;
|
|
120
|
+
/* #ifdef MP-WEIXIN */
|
|
121
|
+
padding-top: calc(44px + 24rpx);
|
|
122
|
+
/* #endif */
|
|
128
123
|
}
|
|
129
124
|
|
|
130
|
-
.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
125
|
+
.my-stack {
|
|
126
|
+
display: flex;
|
|
127
|
+
flex-direction: column;
|
|
128
|
+
gap: 24rpx;
|
|
129
|
+
margin-top: 16rpx;
|
|
134
130
|
}
|
|
135
131
|
|
|
136
|
-
.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
font-weight: 600;
|
|
140
|
-
line-height: 40rpx;
|
|
132
|
+
.my-gear {
|
|
133
|
+
width: 34rpx;
|
|
134
|
+
height: 34rpx;
|
|
141
135
|
}
|
|
142
136
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
white-space: nowrap;
|
|
147
|
-
margin-top: 8rpx;
|
|
148
|
-
color: #747f7c;
|
|
149
|
-
font-size: 24rpx;
|
|
150
|
-
line-height: 32rpx;
|
|
137
|
+
/* k-pfx 仅定义 flex 排布,卡片内边距交由页面控制 */
|
|
138
|
+
.my-profile {
|
|
139
|
+
padding: 36rpx 30rpx;
|
|
151
140
|
}
|
|
152
141
|
|
|
153
|
-
.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
color: #16806d;
|
|
159
|
-
font-size: 24rpx;
|
|
160
|
-
background-color: #e8f8f4;
|
|
142
|
+
.my-pfx-main {
|
|
143
|
+
display: flex;
|
|
144
|
+
align-items: center;
|
|
145
|
+
gap: 24rpx;
|
|
146
|
+
min-width: 0;
|
|
161
147
|
}
|
|
162
148
|
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
min-height: 100vh;
|
|
166
|
-
box-sizing: border-box;
|
|
167
|
-
background-color: #f7f7f8;
|
|
168
|
-
background-repeat: no-repeat;
|
|
169
|
-
background-size: 100% auto;
|
|
149
|
+
.my-pfx-meta {
|
|
150
|
+
min-width: 0;
|
|
170
151
|
}
|
|
171
152
|
|
|
172
|
-
/*
|
|
173
|
-
.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
/* #ifdef MP-WEIXIN */
|
|
178
|
-
padding-top: 44px;
|
|
179
|
-
/* #endif */
|
|
180
|
-
|
|
181
|
-
.overview {
|
|
182
|
-
display: flex;
|
|
183
|
-
height: 120rpx;
|
|
184
|
-
padding: 0 36rpx;
|
|
185
|
-
color: #fff;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.avatar {
|
|
189
|
-
width: 120rpx;
|
|
190
|
-
height: 120rpx;
|
|
191
|
-
border-radius: 50%;
|
|
192
|
-
background-color: #eee;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.gray {
|
|
196
|
-
filter: grayscale(100%);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
.meta {
|
|
200
|
-
display: flex;
|
|
201
|
-
flex-direction: column;
|
|
202
|
-
justify-content: center;
|
|
203
|
-
align-items: flex-start;
|
|
204
|
-
line-height: 30rpx;
|
|
205
|
-
padding: 16rpx 0;
|
|
206
|
-
margin-left: 20rpx;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
.nickname {
|
|
210
|
-
max-width: 180rpx;
|
|
211
|
-
margin-bottom: 16rpx;
|
|
212
|
-
font-size: 30rpx;
|
|
213
|
-
|
|
214
|
-
overflow: hidden;
|
|
215
|
-
text-overflow: ellipsis;
|
|
216
|
-
white-space: nowrap;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.extra {
|
|
220
|
-
display: flex;
|
|
221
|
-
font-size: 20rpx;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.tips {
|
|
225
|
-
font-size: 22rpx;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.update {
|
|
229
|
-
padding: 3rpx 10rpx 1rpx;
|
|
230
|
-
color: rgba(255, 255, 255, 0.8);
|
|
231
|
-
border: 1rpx solid rgba(255, 255, 255, 0.8);
|
|
232
|
-
margin-right: 10rpx;
|
|
233
|
-
border-radius: 30rpx;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
.settings {
|
|
237
|
-
position: absolute;
|
|
238
|
-
bottom: 0;
|
|
239
|
-
right: 40rpx;
|
|
240
|
-
font-size: 30rpx;
|
|
241
|
-
color: #fff;
|
|
242
|
-
}
|
|
153
|
+
/* k-aix 中部文案占位伸展 */
|
|
154
|
+
.my-aix-copy {
|
|
155
|
+
flex: 1;
|
|
156
|
+
min-width: 0;
|
|
243
157
|
}
|
|
244
158
|
</style>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, ref } from 'vue'
|
|
3
3
|
import { useI18n } from '@liujitcn/kratos-uni-app-core'
|
|
4
|
+
import { useThemeStore } from '@liujitcn/kratos-uni-app-core/stores'
|
|
4
5
|
import type { AiAttachment } from '../../../../rpc/base/v1/ai_session'
|
|
5
6
|
import type { AiProviderModelOption } from '../../../../rpc/base/v1/ai_provider'
|
|
6
7
|
import type { AiKnowledgeOption } from '../../../../rpc/base/v1/ai_knowledge'
|
|
@@ -48,6 +49,9 @@ const emit = defineEmits<{
|
|
|
48
49
|
|
|
49
50
|
const showModelPicker = ref(false)
|
|
50
51
|
const showKnowledgePicker = ref(false)
|
|
52
|
+
const themeStore = useThemeStore()
|
|
53
|
+
const iconColor = computed(() => (themeStore.theme === 'light' ? '#5a7083' : '#8aa0b4'))
|
|
54
|
+
const primaryIconColor = computed(() => (themeStore.theme === 'light' ? '#039e8c' : '#28f0d4'))
|
|
51
55
|
|
|
52
56
|
const selectedModelDisplayName = computed(() => {
|
|
53
57
|
const provider = props.modelProviders.find((item) => item.provider_id === props.providerId)
|
|
@@ -100,7 +104,7 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
100
104
|
<text class="composer-model-chip__label">{{
|
|
101
105
|
selectedModelDisplayName || modelPlaceholder
|
|
102
106
|
}}</text>
|
|
103
|
-
<uni-icons type="down" size="12" color="
|
|
107
|
+
<uni-icons type="down" size="12" :color="iconColor" />
|
|
104
108
|
</view>
|
|
105
109
|
<view
|
|
106
110
|
class="composer-model-chip"
|
|
@@ -116,11 +120,11 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
116
120
|
? t('system.ai.knowledge.selected_count', { count: knowledgeIds.length })
|
|
117
121
|
: t('system.ai.knowledge.title')
|
|
118
122
|
}}</text>
|
|
119
|
-
<uni-icons type="down" size="12" color="
|
|
123
|
+
<uni-icons type="down" size="12" :color="iconColor" />
|
|
120
124
|
</view>
|
|
121
125
|
<view class="composer-main">
|
|
122
126
|
<button class="attach-button" hover-class="none" @tap="emit('attach')">
|
|
123
|
-
<uni-icons type="plusempty" size="30" color="
|
|
127
|
+
<uni-icons type="plusempty" size="30" :color="iconColor" />
|
|
124
128
|
</button>
|
|
125
129
|
<view class="composer-card">
|
|
126
130
|
<view v-if="attachments.length" class="composer-attachments">
|
|
@@ -148,7 +152,7 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
148
152
|
hover-class="none"
|
|
149
153
|
@tap="emit('record')"
|
|
150
154
|
>
|
|
151
|
-
<uni-icons type="mic" size="28" :color="recording ?
|
|
155
|
+
<uni-icons type="mic" size="28" :color="recording ? primaryIconColor : iconColor" />
|
|
152
156
|
</button>
|
|
153
157
|
</view>
|
|
154
158
|
<button
|
|
@@ -158,7 +162,7 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
158
162
|
hover-class="none"
|
|
159
163
|
@tap="emit('send')"
|
|
160
164
|
>
|
|
161
|
-
<uni-icons type="paperplane" size="28" :color="disabled ?
|
|
165
|
+
<uni-icons type="paperplane" size="28" :color="disabled ? iconColor : primaryIconColor" />
|
|
162
166
|
</button>
|
|
163
167
|
</view>
|
|
164
168
|
|
|
@@ -199,9 +203,10 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
199
203
|
.composer {
|
|
200
204
|
flex-shrink: 0;
|
|
201
205
|
width: 100%;
|
|
202
|
-
padding: 14rpx 24rpx 18rpx;
|
|
206
|
+
padding: 14rpx 24rpx calc(18rpx + env(safe-area-inset-bottom));
|
|
203
207
|
overflow: hidden;
|
|
204
|
-
background-color
|
|
208
|
+
background: var(--kratos-color-surface, #fff);
|
|
209
|
+
border-top: 1rpx solid var(--kratos-color-border-accent, rgba(120, 230, 215, 0.16));
|
|
205
210
|
box-sizing: border-box;
|
|
206
211
|
}
|
|
207
212
|
|
|
@@ -211,9 +216,9 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
211
216
|
gap: 16rpx;
|
|
212
217
|
min-height: 124rpx;
|
|
213
218
|
padding: 22rpx 18rpx;
|
|
219
|
+
border: 1rpx solid var(--kratos-color-border, #e3eaf2);
|
|
214
220
|
border-radius: 24rpx;
|
|
215
|
-
background-color
|
|
216
|
-
box-shadow: 0 12rpx 34rpx rgba(15, 23, 42, 0.08);
|
|
221
|
+
background: var(--kratos-color-surface, #fff);
|
|
217
222
|
box-sizing: border-box;
|
|
218
223
|
}
|
|
219
224
|
|
|
@@ -225,11 +230,10 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
225
230
|
height: 56rpx;
|
|
226
231
|
padding: 0 24rpx;
|
|
227
232
|
margin: 0 8rpx 12rpx;
|
|
228
|
-
color: #
|
|
229
|
-
background: #fff;
|
|
230
|
-
border:
|
|
233
|
+
color: var(--kratos-color-text, #102232);
|
|
234
|
+
background: var(--kratos-color-surface, #fff);
|
|
235
|
+
border: 1rpx solid var(--kratos-color-border-accent, rgba(0, 150, 134, 0.28));
|
|
231
236
|
border-radius: 28rpx;
|
|
232
|
-
box-shadow: 0 4rpx 16rpx rgba(15, 23, 42, 0.04);
|
|
233
237
|
box-sizing: border-box;
|
|
234
238
|
}
|
|
235
239
|
|
|
@@ -239,7 +243,7 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
239
243
|
|
|
240
244
|
.composer-model-chip__spark {
|
|
241
245
|
flex-shrink: 0;
|
|
242
|
-
color: #
|
|
246
|
+
color: var(--kratos-color-primary, #039e8c);
|
|
243
247
|
font-size: 26rpx;
|
|
244
248
|
line-height: 26rpx;
|
|
245
249
|
}
|
|
@@ -262,9 +266,10 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
262
266
|
justify-content: center;
|
|
263
267
|
width: 72rpx;
|
|
264
268
|
height: 72rpx;
|
|
265
|
-
border:
|
|
269
|
+
border: 1rpx solid var(--kratos-color-border, #e3eaf2);
|
|
266
270
|
border-radius: 50%;
|
|
267
|
-
background-color
|
|
271
|
+
background: var(--kratos-color-surface, #fff);
|
|
272
|
+
color: var(--kratos-color-text-muted, #5a7083);
|
|
268
273
|
box-shadow: none;
|
|
269
274
|
box-sizing: border-box;
|
|
270
275
|
}
|
|
@@ -278,9 +283,9 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
278
283
|
gap: 10rpx;
|
|
279
284
|
min-height: 72rpx;
|
|
280
285
|
padding: 0 12rpx 0 28rpx;
|
|
281
|
-
border:
|
|
286
|
+
border: 1rpx solid var(--kratos-color-border, #e3eaf2);
|
|
282
287
|
border-radius: 38rpx;
|
|
283
|
-
background-color
|
|
288
|
+
background: var(--kratos-color-surface-2, #eef4fa);
|
|
284
289
|
box-shadow: none;
|
|
285
290
|
box-sizing: border-box;
|
|
286
291
|
}
|
|
@@ -299,11 +304,12 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
299
304
|
text-overflow: ellipsis;
|
|
300
305
|
white-space: nowrap;
|
|
301
306
|
padding: 6rpx 12rpx;
|
|
307
|
+
border: 1rpx solid var(--kratos-color-primary-edge, rgba(0, 150, 134, 0.3));
|
|
302
308
|
border-radius: 8rpx;
|
|
303
|
-
color: #
|
|
309
|
+
color: var(--kratos-color-primary, #039e8c);
|
|
304
310
|
font-size: 20rpx;
|
|
305
311
|
line-height: 28rpx;
|
|
306
|
-
background-color
|
|
312
|
+
background: var(--kratos-color-primary-soft, rgba(3, 158, 140, 0.08));
|
|
307
313
|
}
|
|
308
314
|
|
|
309
315
|
.composer-input {
|
|
@@ -313,15 +319,15 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
313
319
|
max-height: 126rpx;
|
|
314
320
|
padding: 14rpx 0;
|
|
315
321
|
box-sizing: border-box;
|
|
316
|
-
color: #
|
|
322
|
+
color: var(--kratos-color-text, #102232);
|
|
317
323
|
font-size: 29rpx;
|
|
318
324
|
line-height: 42rpx;
|
|
319
325
|
overflow-y: auto;
|
|
320
|
-
background
|
|
326
|
+
background: transparent;
|
|
321
327
|
}
|
|
322
328
|
|
|
323
329
|
.composer-placeholder {
|
|
324
|
-
color: #
|
|
330
|
+
color: var(--kratos-color-text-dim, #9aabbb);
|
|
325
331
|
font-size: 29rpx;
|
|
326
332
|
}
|
|
327
333
|
|
|
@@ -337,24 +343,25 @@ function handleKnowledgeToggle(knowledgeId: number) {
|
|
|
337
343
|
.voice-button {
|
|
338
344
|
width: 60rpx;
|
|
339
345
|
height: 60rpx;
|
|
340
|
-
background
|
|
346
|
+
background: transparent;
|
|
341
347
|
}
|
|
342
348
|
|
|
343
349
|
.voice-button.active {
|
|
344
|
-
background-color
|
|
350
|
+
background: var(--kratos-color-primary-soft, rgba(3, 158, 140, 0.08));
|
|
345
351
|
}
|
|
346
352
|
|
|
347
353
|
.send-button {
|
|
348
354
|
width: 74rpx;
|
|
349
355
|
height: 74rpx;
|
|
350
|
-
background-color
|
|
356
|
+
background: var(--kratos-color-track, #e8eef5);
|
|
351
357
|
}
|
|
352
358
|
|
|
353
359
|
.send-button.is-disabled {
|
|
354
|
-
background-color
|
|
360
|
+
background: var(--kratos-color-track, #e8eef5);
|
|
355
361
|
}
|
|
356
362
|
|
|
357
363
|
.send-button:not(.is-disabled) {
|
|
358
|
-
background-color
|
|
364
|
+
background: var(--kratos-color-primary-soft-2, rgba(3, 158, 140, 0.1));
|
|
365
|
+
border: 1rpx solid var(--kratos-color-primary-edge, rgba(0, 150, 134, 0.3));
|
|
359
366
|
}
|
|
360
367
|
</style>
|