Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Shucai Chen
/
lufa-ai
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
76bc1ab7
authored
Jun 03, 2026
by
pengshun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 添加对话分析页面
parent
a7cc17d2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
309 additions
and
4 deletions
+309
-4
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/AiChatAnalysisController.java
+21
-1
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryCreateReqVO.java
+3
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryPageReqVO.java
+22
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryRespVO.java
+6
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiSummaryUpdateStatusReqVO.java
+22
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatSummaryDO.java
+4
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/chat/AiChatSummaryMapper.java
+16
-0
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatAnalysisService.java
+5
-1
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatAnalysisServiceImpl.java
+24
-2
yudao-ui-admin-vue3/src/api/ai/chat/analysis/index.ts
+12
-0
yudao-ui-admin-vue3/src/types/auto-components.d.ts
+3
-0
yudao-ui-admin-vue3/src/views/ai/chat_analysis/message/index copy.vue
+0
-0
yudao-ui-admin-vue3/src/views/ai/chat_analysis/summary/index.vue
+171
-0
No files found.
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/AiChatAnalysisController.java
View file @
76bc1ab7
...
...
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import
cn.iocoder.yudao.framework.common.util.object.BeanUtils
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.analysis.*
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationRespVO
;
import
cn.iocoder.yudao.module.ai.controller.admin.knowledge.vo.document.AiKnowledgeDocumentUpdateStatusReqVO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatAnalysisDO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatSummaryDO
;
...
...
@@ -16,6 +17,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import
jakarta.annotation.Resource
;
import
jakarta.validation.Valid
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -114,7 +116,7 @@ public class AiChatAnalysisController {
@Operation
(
summary
=
"获得分析总结数据"
)
@GetMapping
(
"/get-summary"
)
public
CommonResult
<
AiChatSummaryRespVO
>
getChatSummary
(
AiChatSummaryReqVO
pageReqVO
)
{
AiChatSummaryDO
result
=
chatAnalysisService
.
getChatSummary
Page
(
pageReqVO
);
AiChatSummaryDO
result
=
chatAnalysisService
.
getChatSummary
(
pageReqVO
);
return
success
(
BeanUtils
.
toBean
(
result
,
AiChatSummaryRespVO
.
class
));
}
...
...
@@ -124,4 +126,22 @@ public class AiChatAnalysisController {
return
success
(
chatAnalysisService
.
createChatSummary
(
createReqVO
));
}
@Operation
(
summary
=
"获得对话总结列表"
)
@GetMapping
(
"/page-summary"
)
public
CommonResult
<
PageResult
<
AiChatSummaryRespVO
>>
getChatSummaryPage
(
AiChatSummaryPageReqVO
pageReqVO
)
{
PageResult
<
AiChatSummaryDO
>
pageResult
=
chatAnalysisService
.
getChatSummaryPage
(
pageReqVO
);
if
(
CollUtil
.
isEmpty
(
pageResult
.
getList
()))
{
return
success
(
PageResult
.
empty
());
}
return
success
(
BeanUtils
.
toBean
(
pageResult
,
AiChatSummaryRespVO
.
class
));
}
@PutMapping
(
"/update-summary-status"
)
@Operation
(
summary
=
"更新对话总结状态"
)
public
CommonResult
<
Boolean
>
updateSummaryStatus
(
@Valid
@RequestBody
AiSummaryUpdateStatusReqVO
reqVO
)
{
chatAnalysisService
.
updateSummaryStatus
(
reqVO
);
return
success
(
true
);
}
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryCreateReqVO.java
View file @
76bc1ab7
...
...
@@ -28,6 +28,9 @@ public class AiChatSummaryCreateReqVO {
@Schema
(
description
=
"总结内容"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"公租房业务:登录密码是多少?"
)
private
String
summary
;
@Schema
(
description
=
"分类"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"公租房或长租房"
)
private
String
type
;
@Schema
(
description
=
"总结时间"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"1780243200000"
)
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
private
LocalDateTime
summaryTime
;
...
...
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryPageReqVO.java
0 → 100644
View file @
76bc1ab7
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
chat
.
vo
.
analysis
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
@Schema
(
description
=
"管理后台 - AI 对话总结的分页 Request VO"
)
@Data
public
class
AiChatSummaryPageReqVO
extends
PageParam
{
@Schema
(
description
=
"是否公租房"
)
private
String
type
;
@Schema
(
description
=
"是否处理"
)
private
Integer
status
;
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiChatSummaryRespVO.java
View file @
76bc1ab7
...
...
@@ -15,4 +15,10 @@ public class AiChatSummaryRespVO implements VO {
@Schema
(
description
=
"总结内容"
,
example
=
"待解决的问题:1. 。。。"
)
private
String
summary
;
@Schema
(
description
=
"分类"
,
example
=
"长租房"
)
private
String
type
;
@Schema
(
description
=
"状态"
,
example
=
"0"
)
private
Integer
status
;
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/chat/vo/analysis/AiSummaryUpdateStatusReqVO.java
0 → 100644
View file @
76bc1ab7
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
controller
.
admin
.
chat
.
vo
.
analysis
;
import
cn.iocoder.yudao.framework.common.enums.CommonStatusEnum
;
import
cn.iocoder.yudao.framework.common.validation.InEnum
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
jakarta.validation.constraints.NotNull
;
import
lombok.Data
;
@Schema
(
description
=
"管理后台 - AI 对话总结更新状态 Request VO"
)
@Data
public
class
AiSummaryUpdateStatusReqVO
{
@Schema
(
description
=
"编号"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"15583"
)
@NotNull
(
message
=
"编号不能为空"
)
private
Long
id
;
@Schema
(
description
=
"状态"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
,
example
=
"0"
)
@NotNull
(
message
=
"状态不能为空"
)
private
Integer
status
;
}
\ No newline at end of file
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatSummaryDO.java
View file @
76bc1ab7
...
...
@@ -48,4 +48,8 @@ public class AiChatSummaryDO extends BaseDO {
private
LocalDateTime
summaryTime
;
private
String
type
;
private
Integer
status
;
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/chat/AiChatSummaryMapper.java
View file @
76bc1ab7
package
cn
.
iocoder
.
yudao
.
module
.
ai
.
dal
.
mysql
.
chat
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.analysis.AiChatSummaryPageReqVO
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.analysis.AiChatSummaryReqVO
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.analysis.AiChatSummaryRespVO
;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationPageReqVO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatSummaryDO
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* AI 聊天对话 Mapper
...
...
@@ -21,4 +29,12 @@ public interface AiChatSummaryMapper extends BaseMapperX<AiChatSummaryDO> {
.
eqIfPresent
(
AiChatSummaryDO:
:
getChatId
,
reqVo
.
getChatId
())
.
eqIfPresent
(
AiChatSummaryDO:
:
getSummaryTime
,
reqVo
.
getSummaryTime
()));
}
default
PageResult
<
AiChatSummaryDO
>
selectSummaryPage
(
AiChatSummaryPageReqVO
pageReqVO
)
{
return
selectPage
(
pageReqVO
,
new
LambdaQueryWrapperX
<
AiChatSummaryDO
>()
.
likeIfPresent
(
AiChatSummaryDO:
:
getType
,
pageReqVO
.
getType
())
.
eqIfPresent
(
AiChatSummaryDO:
:
getStatus
,
pageReqVO
.
getStatus
())
.
orderByDesc
(
AiChatSummaryDO:
:
getSummaryTime
)
// 最新总结在前
.
orderByDesc
(
AiChatSummaryDO:
:
getId
));
}
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatAnalysisService.java
View file @
76bc1ab7
...
...
@@ -27,7 +27,11 @@ public interface AiChatAnalysisService {
List
<
AiChatKeywordCountVO
>
getChatKeywordsPage
(
AiChatKeywordsPageReqVO
pageReqVO
);
AiChatSummaryDO
getChatSummary
Page
(
AiChatSummaryReqVO
pageReqVO
);
AiChatSummaryDO
getChatSummary
(
AiChatSummaryReqVO
pageReqVO
);
Long
createChatSummary
(
AiChatSummaryCreateReqVO
createReqVO
);
PageResult
<
AiChatSummaryDO
>
getChatSummaryPage
(
AiChatSummaryPageReqVO
pageReqVO
);
void
updateSummaryStatus
(
AiSummaryUpdateStatusReqVO
reqVO
);
}
ruoyi-vue-pro-master-jdk17/yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatAnalysisServiceImpl.java
View file @
76bc1ab7
...
...
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import
cn.iocoder.yudao.module.ai.controller.admin.chat.vo.analysis.*
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatAnalysisDO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatSummaryDO
;
import
cn.iocoder.yudao.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO
;
import
cn.iocoder.yudao.module.ai.dal.mysql.chat.AiChatAnalysisMapper
;
import
cn.iocoder.yudao.module.ai.dal.mysql.chat.AiChatSummaryMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -173,7 +174,7 @@ public class AiChatAnalysisServiceImpl implements AiChatAnalysisService {
}
@Override
public
AiChatSummaryDO
getChatSummary
Page
(
AiChatSummaryReqVO
pageReqVO
)
{
public
AiChatSummaryDO
getChatSummary
(
AiChatSummaryReqVO
pageReqVO
)
{
return
chatSummaryMapper
.
selectSummary
(
pageReqVO
);
}
...
...
@@ -189,11 +190,32 @@ public class AiChatAnalysisServiceImpl implements AiChatAnalysisService {
}
// 2. 创建 AiChatConversationDO 聊天对话
AiChatSummaryDO
conversation
=
new
AiChatSummaryDO
().
setChatId
(
createReqVO
.
getChatId
())
.
setSummary
(
createReqVO
.
getSummary
()).
setSummaryTime
(
summaryTime
);
.
setSummary
(
createReqVO
.
getSummary
())
.
setSummaryTime
(
summaryTime
)
.
setType
(
createReqVO
.
getType
());
chatSummaryMapper
.
insert
(
conversation
);
return
conversation
.
getId
();
}
@Override
public
PageResult
<
AiChatSummaryDO
>
getChatSummaryPage
(
AiChatSummaryPageReqVO
pageReqVO
)
{
// 封装返回
return
chatSummaryMapper
.
selectSummaryPage
(
pageReqVO
);
}
@Override
public
void
updateSummaryStatus
(
AiSummaryUpdateStatusReqVO
reqVO
)
{
// 1. 校验存在
AiChatSummaryDO
summary
=
chatSummaryMapper
.
selectById
(
reqVO
.
getId
());
if
(
summary
==
null
)
{
throw
exception
(
CHAT_ANALYSIS_NOT_EXISTS
);
}
// 2. 更新状态
chatSummaryMapper
.
updateById
(
new
AiChatSummaryDO
()
.
setId
(
reqVO
.
getId
()).
setStatus
(
reqVO
.
getStatus
()));
}
private
Double
calculatePercent
(
Long
current
,
Long
previous
)
{
if
(
previous
==
null
||
previous
==
0
)
{
return
current
==
0
?
0.0
:
null
;
// 无法计算百分比时返回null,前端可展示“-”
...
...
yudao-ui-admin-vue3/src/api/ai/chat/analysis/index.ts
View file @
76bc1ab7
...
...
@@ -61,4 +61,16 @@ export const ChatAnalysisApi = {
getChatSummary
:
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
`/ai/chat/analysis/get-summary`
,
params
})
},
// 获得对话总结分页
getChatSummaryPage
:
async
(
params
:
any
)
=>
{
return
await
request
.
get
({
url
:
`/ai/chat/analysis/page-summary`
,
params
})
},
// 修改对话总结状态
updateSummaryStatus
:
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/ai/chat/analysis/update-summary-status`
,
data
})
},
}
yudao-ui-admin-vue3/src/types/auto-components.d.ts
View file @
76bc1ab7
...
...
@@ -10,6 +10,8 @@ declare module 'vue' {
AddNode
:
typeof
import
(
'./../components/SimpleProcessDesigner/src/addNode.vue'
)[
'default'
]
AppLinkInput
:
typeof
import
(
'./../components/AppLinkInput/index.vue'
)[
'default'
]
AppLinkSelectDialog
:
typeof
import
(
'./../components/AppLinkInput/AppLinkSelectDialog.vue'
)[
'default'
]
'AutoComponents.d'
:
typeof
import
(
'./auto-components.d.ts'
)[
'default'
]
'AutoImports.d'
:
typeof
import
(
'./auto-imports.d.ts'
)[
'default'
]
Backtop
:
typeof
import
(
'./../components/Backtop/src/Backtop.vue'
)[
'default'
]
CardTitle
:
typeof
import
(
'./../components/Card/src/CardTitle.vue'
)[
'default'
]
ColorInput
:
typeof
import
(
'./../components/ColorInput/index.vue'
)[
'default'
]
...
...
@@ -29,6 +31,7 @@ declare module 'vue' {
Dialog
:
typeof
import
(
'./../components/Dialog/src/Dialog.vue'
)[
'default'
]
DictSelect
:
typeof
import
(
'./../components/FormCreate/src/components/DictSelect.vue'
)[
'default'
]
DictTag
:
typeof
import
(
'./../components/DictTag/src/DictTag.vue'
)[
'default'
]
Dist
:
typeof
import
(
'./../../dist.zip'
)[
'default'
]
DiyEditor
:
typeof
import
(
'./../components/DiyEditor/index.vue'
)[
'default'
]
DocAlert
:
typeof
import
(
'./../components/DocAlert/index.vue'
)[
'default'
]
Draggable
:
typeof
import
(
'./../components/Draggable/index.vue'
)[
'default'
]
...
...
yudao-ui-admin-vue3/src/views/ai/chat_analysis/message/index copy.vue
deleted
100644 → 0
View file @
a7cc17d2
This diff is collapsed.
Click to expand it.
yudao-ui-admin-vue3/src/views/ai/chat_analysis/summary/index.vue
0 → 100644
View file @
76bc1ab7
<
template
>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"分类"
prop=
"type"
>
<el-select
v-model=
"queryParams.type"
placeholder=
"请选择分类"
clearable
class=
"!w-240px"
>
<el-option
label=
"公租房"
value=
"公租房"
/>
<el-option
label=
"长租房"
value=
"长租房"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
v-model=
"queryParams.status"
placeholder=
"请选择状态"
clearable
class=
"!w-240px"
>
<el-option
label=
"未处理"
:value=
"0"
/>
<el-option
label=
"已处理"
:value=
"1"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
>
<Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
>
<Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
:stripe=
"true"
:show-overflow-tooltip=
"true"
>
<el-table-column
label=
"编号"
align=
"center"
prop=
"id"
width=
"100px"
/>
<el-table-column
label=
"分类"
align=
"center"
prop=
"type"
min-width=
"120px"
/>
<el-table-column
label=
"建议内容"
align=
"left"
prop=
"summary"
min-width=
"300px"
>
<template
#
default=
"scope"
>
<div
class=
"summary-content"
>
{{
scope
.
row
.
summary
||
'-'
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
width=
"100px"
>
<
template
#
default=
"scope"
>
<el-switch
v-model=
"scope.row.status"
:active-value=
"1"
:inactive-value=
"0"
@
change=
"handleStatusChange(scope.row, $event)"
/>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</ContentWrap>
</template>
<
script
setup
lang=
"ts"
>
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ChatAnalysisApi
,
ChatAnalysisVO
}
from
'@/api/ai/chat/analysis'
/** AI 对话总结列表 */
defineOptions
({
name
:
'AiChatSummary'
})
const
message
=
ElMessage
const
loading
=
ref
(
true
)
const
list
=
ref
<
ChatAnalysisVO
[]
>
([])
const
total
=
ref
(
0
)
const
queryFormRef
=
ref
()
// 查询参数
const
queryParams
=
reactive
({
pageNo
:
1
,
pageSize
:
10
,
type
:
undefined
as
string
|
undefined
,
status
:
undefined
as
number
|
undefined
})
/** 查询列表 */
const
getList
=
async
()
=>
{
loading
.
value
=
true
try
{
const
data
=
await
ChatAnalysisApi
.
getChatSummaryPage
(
queryParams
)
list
.
value
=
data
.
list
total
.
value
=
data
.
total
}
finally
{
loading
.
value
=
false
}
}
/** 搜索按钮操作 */
const
handleQuery
=
()
=>
{
queryParams
.
pageNo
=
1
getList
()
}
/** 重置按钮操作 */
const
resetQuery
=
()
=>
{
queryFormRef
.
value
?.
resetFields
()
handleQuery
()
}
/** 修改状态操作(使用 switch 切换时触发) */
const
handleStatusChange
=
async
(
row
:
ChatAnalysisVO
,
newStatus
:
number
)
=>
{
const
oldStatus
=
row
.
status
try
{
// 二次确认
// await ElMessageBox.confirm(
// `确认要将该记录状态改为 ${newStatus === 1 ? '已处理' : '未处理'} 吗?`,
// '提示',
// {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// }
//)
// 调用更新接口
await
ChatAnalysisApi
.
updateSummaryStatus
({
id
:
row
.
id
,
status
:
newStatus
})
message
.
success
(
'状态更新成功'
)
// 刷新列表(保持当前页码)
await
getList
()
}
catch
(
error
)
{
// 用户取消或接口失败时,恢复原来的状态
row
.
status
=
oldStatus
if
(
error
!==
'cancel'
)
{
message
.
error
(
'状态更新失败,请稍后重试'
)
}
}
}
/** 初始化加载数据 */
onMounted
(()
=>
{
getList
()
})
</
script
>
<
style
scoped
lang=
"scss"
>
.summary-content
{
white-space
:
pre-wrap
;
word-break
:
break-all
;
line-height
:
1.5
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment