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:
@@ -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
2
package-lock.json
generated
@@ -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",
|
||||
|
||||
10
package.json
10
package.json
@@ -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
6385
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user