feat: 审批流程模块 (T审批A审批)
- 新增 backend/app/api/approval.py 审批API - 前端H5支持发起审批、审批操作 - 添加审批卡片弹窗组件 - 路由注册审批模块
This commit is contained in:
@@ -73,6 +73,12 @@ export const useConversationStore = defineStore('conversation', () => {
|
||||
/** 审批流程链接列表 */
|
||||
const approvalLinks = ref<ApprovalLink[]>([])
|
||||
|
||||
/** 审批卡片弹窗是否显示(关键词触发) */
|
||||
const approvalCardVisible = ref<boolean>(false)
|
||||
|
||||
/** 触发审批卡片的关键词文本 */
|
||||
const approvalCardTriggerText = ref<string>('')
|
||||
|
||||
/** 软件下载列表 */
|
||||
const softwareDownloads = ref<SoftwareDownload[]>([])
|
||||
|
||||
@@ -359,6 +365,13 @@ export const useConversationStore = defineStore('conversation', () => {
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否包含审批关键词,如果包含则先弹出卡片
|
||||
const hasApprovalKeyword = checkApprovalKeywords(content)
|
||||
if (hasApprovalKeyword) {
|
||||
console.log('[Store] 检测到审批关键词,弹窗后仍发送消息')
|
||||
// 审批弹窗显示,但不阻止消息发送
|
||||
}
|
||||
|
||||
// ========================================================================
|
||||
// 步骤1:乐观更新 - 立即添加临时消息到列表
|
||||
// ========================================================================
|
||||
@@ -597,6 +610,35 @@ export const useConversationStore = defineStore('conversation', () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 审批关键词列表(静态配置,后续可从API获取)
|
||||
const APPROVAL_KEYWORDS = ['申请', '资源', '设备', '电脑', '笔记本']
|
||||
|
||||
/** 检查文本是否包含审批关键词,触发审批卡片弹窗 */
|
||||
function checkApprovalKeywords(text: string): boolean {
|
||||
const lowerText = text.toLowerCase()
|
||||
const hasKeyword = APPROVAL_KEYWORDS.some((kw) => lowerText.includes(kw))
|
||||
|
||||
if (hasKeyword) {
|
||||
approvalCardTriggerText.value = text
|
||||
approvalCardVisible.value = true
|
||||
console.log('[Store] 检测到审批关键词,触发卡片弹窗')
|
||||
}
|
||||
|
||||
return hasKeyword
|
||||
}
|
||||
|
||||
/** 关闭审批卡片弹窗 */
|
||||
function closeApprovalCard(): void {
|
||||
approvalCardVisible.value = false
|
||||
approvalCardTriggerText.value = ''
|
||||
}
|
||||
|
||||
/** 显示审批卡片弹窗(快捷按钮触发) */
|
||||
function showApprovalCard(triggerText: string = ''): void {
|
||||
approvalCardTriggerText.value = triggerText
|
||||
approvalCardVisible.value = true
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载软件下载列表
|
||||
* 从后端获取所有可下载的软件列表
|
||||
@@ -817,6 +859,8 @@ export const useConversationStore = defineStore('conversation', () => {
|
||||
agentOnline,
|
||||
assistantPanelVisible,
|
||||
approvalLinks,
|
||||
approvalCardVisible,
|
||||
approvalCardTriggerText,
|
||||
softwareDownloads,
|
||||
lastMessageId,
|
||||
initialized,
|
||||
@@ -844,6 +888,9 @@ export const useConversationStore = defineStore('conversation', () => {
|
||||
stopPolling,
|
||||
shakeAgent,
|
||||
fetchApprovalLinks,
|
||||
checkApprovalKeywords,
|
||||
closeApprovalCard,
|
||||
showApprovalCard,
|
||||
fetchSoftwareDownloads,
|
||||
toggleAssistantPanel,
|
||||
switchToConversation,
|
||||
|
||||
Reference in New Issue
Block a user