Skip to content

Commit 6dc881f

Browse files
committedMar 14, 2023
feat: code to implement some of the functions
1 parent 7093452 commit 6dc881f

File tree

9 files changed

+88
-29
lines changed

9 files changed

+88
-29
lines changed
 

‎src/App.vue

+16-5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
useThemeStore,
77
useUuidStore,
88
useRecordStore,
9+
useRoleStore,
910
useFixedStore
1011
} from '@/stores'
1112
@@ -14,6 +15,7 @@ initSQL()
1415
const { themeClass } = storeToRefs(useThemeStore())
1516
const { uuid } = storeToRefs(useUuidStore())
1617
const { recordList } = storeToRefs(useRecordStore())
18+
const { currentRole } = storeToRefs(useRoleStore())
1719
const { isFix } = storeToRefs(useFixedStore())
1820
1921
const windowFocused = ref(true)
@@ -54,14 +56,23 @@ onMounted(async () => {
5456
</ul>
5557

5658
<div class="flex cursor-default flex-col gap-2 pt-2">
57-
<div class="text-5 flex w-full justify-end gap-4">
58-
<Refresh />
59+
<div class="flex justify-between">
60+
<div class="flex-1 text-right">
61+
正在与 <span class="mark">{{ currentRole?.name }}</span> 对话
62+
</div>
5963

60-
<Delete />
64+
<!-- TODO: 没有必要全部拆分,后期功能完善将不必要的拆分直接挪到这边 -->
65+
<div class="text-5 flex flex-1 justify-end gap-4">
66+
<Increase />
6167

62-
<History />
68+
<ReAnswer />
6369

64-
<Settings />
70+
<Delete />
71+
72+
<History />
73+
74+
<Settings />
75+
</div>
6576
</div>
6677

6778
<Input />

‎src/assets/css/global.scss

+10-5
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,27 @@ body {
1515
}
1616

1717
.bordered {
18-
border: 1px solid var(--color-neutral-3);
18+
border: 1px solid var(--color-border);
1919
}
2020

2121
.bordered-transparent {
2222
border: 1px solid transparent;
2323
}
2424

2525
.bordered-top {
26-
border-top: 1px solid var(--color-neutral-3);
26+
border-top: 1px solid var(--color-border);
2727
}
2828

2929
.bordered-right {
30-
border-right: 1px solid var(--color-neutral-3);
30+
border-right: 1px solid var(--color-border);
3131
}
3232

3333
.bordered-bottom {
34-
border-bottom: 1px solid var(--color-neutral-3);
34+
border-bottom: 1px solid var(--color-border);
3535
}
3636

3737
.bordered-left {
38-
border-left: 1px solid var(--color-neutral-3);
38+
border-left: 1px solid var(--color-border);
3939
}
4040

4141
.frosted {
@@ -62,3 +62,8 @@ body {
6262
.arco-icon {
6363
cursor: pointer;
6464
}
65+
66+
.mark {
67+
color: rgba(var(--primary-6));
68+
background-color: transparent;
69+
}

‎src/components/Delete/index.vue

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
<script setup lang="ts">
22
import { IconDelete } from '@arco-design/web-vue/es/icon'
3+
import { useRecordStore } from '@/stores'
4+
5+
const recordStore = useRecordStore()
6+
const { deleteRecord } = recordStore
7+
const { currentRecord } = storeToRefs(recordStore)
38
</script>
49

510
<template>
611
<a-tooltip content="清空对话">
7-
<IconDelete />
12+
<IconDelete @click="deleteRecord(currentRecord?.id)" />
813
</a-tooltip>
914
</template>
10-
11-
<style scoped lang="scss"></style>

‎src/components/Increase/index.vue

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<script setup lang="ts">
2+
import { IconPlusCircle } from '@arco-design/web-vue/es/icon'
3+
import { useRecordStore } from '@/stores'
4+
5+
const { createNewRecord } = useRecordStore()
6+
</script>
7+
8+
<template>
9+
<a-tooltip content="新建对话">
10+
<IconPlusCircle @click="createNewRecord" />
11+
</a-tooltip>
12+
</template>

‎src/components/Input/index.vue

+5
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@ const textAreaValue = ref('')
2323
transition: all 0.3s;
2424
2525
border-radius: 32px;
26+
27+
&:hover {
28+
border-color: var(--color-neutral-4);
29+
}
2630
&.arco-textarea-focus {
2731
height: 96px;
2832
33+
border-color: rgb(var(--arcoblue-6));
2934
border-radius: 0;
3035
}
3136
}

‎src/components/ReAnswer/index.vue

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<script setup lang="ts">
2+
import { IconRefresh } from '@arco-design/web-vue/es/icon'
3+
import { useRecordStore } from '@/stores'
4+
5+
const recordStore = useRecordStore()
6+
const { updateRecord } = recordStore
7+
const { currentRecord } = storeToRefs(recordStore)
8+
9+
const handleClick = () => {
10+
if (!currentRecord.value) return
11+
12+
const newRecord = { ...currentRecord.value }
13+
newRecord.data?.pop()
14+
15+
currentRecord.value = newRecord
16+
17+
updateRecord(newRecord)
18+
}
19+
</script>
20+
21+
<template>
22+
<a-tooltip content="重新回答">
23+
<IconRefresh @click="handleClick" />
24+
</a-tooltip>
25+
</template>

‎src/components/Refresh/index.vue

-13
This file was deleted.

‎src/constants/shared.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ export enum THEME {
44
}
55

66
export enum DEFAULT_ROLE {
7-
name = '默认角色',
7+
name = 'AI 程序员',
88
description = '请以 markdown 的形式返回答案!'
99
}

‎src/stores/record.ts

+13-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ export const useRecordStore = defineStore('recordStore', () => {
66

77
const recordList = ref<TablePayload[]>([])
88

9+
const createNewRecord = () => {
10+
currentRecord.value = undefined
11+
}
12+
913
const getRecord = async () => {
1014
recordList.value = await selectSQL('history')
1115

1216
if (currentRecord.value) {
13-
// 检查聊天内容是否还存在于数据库
17+
// 检查聊天记录是否还存在于数据库
1418
const findRecord = recordList.value.find(
1519
(record) => record.id === currentRecord.value?.id
1620
)
@@ -41,5 +45,12 @@ export const useRecordStore = defineStore('recordStore', () => {
4145

4246
onMounted(getRecord)
4347

44-
return { currentRecord, recordList, addRecord, updateRecord, deleteRecord }
48+
return {
49+
currentRecord,
50+
recordList,
51+
createNewRecord,
52+
addRecord,
53+
updateRecord,
54+
deleteRecord
55+
}
4556
})

0 commit comments

Comments
 (0)
Please sign in to comment.