chore(deps): update electron to ^40.8.5 and reorder devDependencies

feat(home): add task operation dialog and improve UI interactions

- Add TaskOperationDialog component to home page and connect via event emitter
- Enhance ChatBox "智能问数" button with hover styles and cursor pointer
- Improve ChatInputArea button hover states and cursor styling
- Fix selector logic in fg_trace.js to handle date column bounds checking
- Reorder package.json dependencies for consistency
This commit is contained in:
duanshuwen
2026-04-06 21:03:31 +08:00
parent 6615d11dd6
commit 6062120105
7 changed files with 6429 additions and 31 deletions

View File

@@ -104,13 +104,17 @@ const toggleRoomByDateIndex = async (container, { roomType, dateIndex, operation
}
await roomAnchor.scrollIntoViewIfNeeded();
const row = roomAnchor.locator(
"xpath=ancestor::*[.//div[contains(@class,'boardRow')]][1]",
const boardRow = roomAnchor.locator("xpath=ancestor::div[contains(@class,'boardRow')][1]");
const dayColumns = boardRow.locator(
"xpath=.//div[contains(@class,'switchbar')]/ancestor::div[contains(@class,'flex-col')][1]",
);
const boardRow = row.locator("xpath=.//div[contains(@class,'boardRow')]").first();
const boardColPosition = dateIndex + 2;
const dayColumn = boardRow.locator(`xpath=./div[${boardColPosition}]`);
const dayColumnCount = await dayColumns.count();
if (dateIndex >= dayColumnCount) {
throw new Error(
`Date column out of range for room ${roomType}: index=${dateIndex}, available=${dayColumnCount}`,
);
}
const dayColumn = dayColumns.nth(dateIndex);
const targetStateClass = operation === 'open' ? 'error' : 'success';
const expectedCurrentLabel = operation === 'open' ? '满' : '有';

2
package-lock.json generated
View File

@@ -55,7 +55,7 @@
"@types/node": "^25.3.0",
"@typescript-eslint/parser": "^5.62.0",
"@vitejs/plugin-vue": "^6.0.3",
"electron": "^40.6.0",
"electron": "^40.8.5",
"electron-builder": "^26.8.1",
"esbuild": "^0.27.4",
"fs-extra": "^11.2.0",

View File

@@ -29,6 +29,7 @@
},
"license": "MIT",
"devDependencies": {
"@electron/fuses": "^1.8.0",
"@tailwindcss/typography": "^0.5.19",
"@tailwindcss/vite": "^4.1.17",
"@types/electron-squirrel-startup": "^1.0.2",
@@ -36,18 +37,17 @@
"@types/node": "^25.3.0",
"@typescript-eslint/parser": "^5.62.0",
"@vitejs/plugin-vue": "^6.0.3",
"@electron/fuses": "^1.8.0",
"electron": "^40.6.0",
"electron": "^40.8.5",
"electron-builder": "^26.8.1",
"esbuild": "^0.27.4",
"fs-extra": "^11.2.0",
"openapi-ts-request": "^1.10.1",
"tailwindcss": "^4.1.11",
"typescript": "^5.9.3",
"unplugin-auto-import": "^20.3.0",
"vite": "^7.3.1",
"vite-plugin-electron": "^0.29.0",
"vite-plugin-electron-renderer": "^0.14.6",
"fs-extra": "^11.2.0"
"vite-plugin-electron-renderer": "^0.14.6"
},
"dependencies": {
"@iconify-json/material-symbols": "^1.2.50",
@@ -65,9 +65,9 @@
"dexie": "^4.2.1",
"dotenv-cli": "^11.0.0",
"electron-log": "^5.4.3",
"electron-squirrel-startup": "^1.0.1",
"electron-store": "^11.0.2",
"electron-updater": "^6.8.3",
"electron-squirrel-startup": "^1.0.1",
"element-plus": "^2.12.0",
"highlight.js": "^11.11.1",
"js-base64": "^3.7.8",

6385
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -55,7 +55,7 @@
<div class="flex flex-col gap-3" :class="isGuidePage ? 'mt-16' : 'mt-4'">
<div class="inline-flex items-center justify-center w-[108px]
px-3 py-1.5 rounded-2xl border border-[#E5E8EE]
text-[13px] text-[#333]">
text-[13px] text-[#333] cursor-pointer hover:bg-[#2B7FFF] hover:text-[#fff] hover:border-[#2B7FFF]">
智能问数
</div>
<ChatInputArea v-model="inputMessage" :isSendingMessage="isSendingMessage" @send="onGuideSend"

View File

@@ -1,24 +1,21 @@
<template>
<div class="h-[174px] bg-white rounded-lg border border-[#eef2f6] shadow-[0_1px_0_rgba(0,0,0,0.03)] p-4 mt-2 flex flex-col justify-between">
<textarea
rows="2"
placeholder="给我发布或者布置任务"
class="flex-1 resize-none outline-none text-sm"
:value="modelValue"
@input="onInput"
@keydown.enter="onKeydownEnter"
/>
<div
class="h-[174px] bg-white rounded-lg border border-[#eef2f6] shadow-[0_1px_0_rgba(0,0,0,0.03)] p-4 mt-2 flex flex-col justify-between">
<textarea rows="2" placeholder="给我发布或者布置任务" class="flex-1 resize-none outline-none text-sm" :value="modelValue"
@input="onInput" @keydown.enter="onKeydownEnter" />
<div class="flex justify-between items-end">
<button @click="onAttach">
<RiLink />
</button>
<button class="w-12 h-12 bg-[#F5F7FA] px-2.5 py-1.5 rounded-md flex items-center justify-center" @click="onSend">
<RiStopFill v-if="isSendingMessage" />
<RiSendPlaneFill v-else />
</button>
</div>
<div class="flex justify-between items-end">
<button class="cursor-pointer hover:text-[#2B7FFF]" @click="onAttach">
<RiLink />
</button>
<button
class="w-12 h-12 bg-[#F5F7FA] px-2.5 py-1.5 rounded-md flex items-center justify-center cursor-pointer hover:bg-[#2B7FFF] hover:text-[#fff]"
@click="onSend">
<RiStopFill v-if="isSendingMessage" />
<RiSendPlaneFill v-else />
</button>
</div>
</div>
</template>
<script setup lang="ts">

View File

@@ -7,19 +7,28 @@
</div>
<TaskList />
</div>
<TaskOperationDialog ref="taskOperationDialog" />
</layout>
</template>
<script setup lang="ts">
import TaskList from '@src/components/TaskList/index.vue'
import TaskOperationDialog from './components/TaskOperationDialog.vue'
import ChatHistory from './ChatHistory.vue'
import ChatBox from './ChatBox.vue'
import { ref } from 'vue'
import emitter from '@src/utils/emitter'
/// 是否显示引导页
const guide = ref(true)
/// 选择的历史会话ID
const selectedConversationId = ref('')
/// 任务操作弹窗实例
const taskOperationDialog = ref()
/// 处理新对话事件切换到引导页并清空选中的历史会话ID
const handleNewChat = () => {
guide.value = true;
@@ -32,4 +41,7 @@ const handleSelectChat = (conversationId: string) => {
selectedConversationId.value = conversationId;
};
emitter.on('OPERATION_CHANNEL', (item) => {
taskOperationDialog.value?.open(item)
})
</script>