|
@@ -13,53 +13,51 @@ import CardEditable from "@/components/card/card-editable/index";
|
|
|
import Taro, { useRouter, useDidShow } from "@tarojs/taro";
|
|
|
import {
|
|
|
deleteVisitorDislikeAnswer,
|
|
|
- getVisitorDislikeMessages
|
|
|
+ getVisitorDislikeMessages,
|
|
|
} from "@/service/visitor";
|
|
|
import { TVisitorChat } from "@/types/visitor";
|
|
|
|
|
|
-import { useLoadMore } from "@/utils/loadMore";
|
|
|
import { useModalStore } from "@/store/modalStore";
|
|
|
import { isSuccess } from "@/utils";
|
|
|
-import { TQAListItem } from "@/types/knowledge";
|
|
|
+import { useLoadMoreInfinite, createKey } from "@/utils/loadMoreInfinite";
|
|
|
|
|
|
export default function Index() {
|
|
|
- const router = useRouter()
|
|
|
- const {showModal} = useModalStore()
|
|
|
- const {agentId} = router.params as {agentId:string}
|
|
|
- const [scrollTop, setScrollTop] = useState(0)
|
|
|
- const [list, setList] = useState<TVisitorChat[]>([]);
|
|
|
+ const router = useRouter();
|
|
|
+ const { showModal } = useModalStore();
|
|
|
+ const { agentId } = router.params as { agentId: string };
|
|
|
+ const [scrollTop, setScrollTop] = useState(0);
|
|
|
|
|
|
- const fetcher = async ([_url, nextId, page, pageSize]) => {
|
|
|
- const res = await getVisitorDislikeMessages({agentId, startId: nextId, pageSize });
|
|
|
+ const fetcher = async ([_url, { nextId, pageSize }]) => {
|
|
|
+ const res = await getVisitorDislikeMessages({
|
|
|
+ agentId,
|
|
|
+ startId: nextId,
|
|
|
+ pageSize,
|
|
|
+ });
|
|
|
return res.data;
|
|
|
};
|
|
|
- const { data, loadMore, page, refetch } = useLoadMore<TVisitorChat[]>({
|
|
|
- url: `getVisitorDislikeMessages${agentId}`,
|
|
|
- fetcher,
|
|
|
- });
|
|
|
-
|
|
|
+ const { list, loadMore } = useLoadMoreInfinite<TVisitorChat>(
|
|
|
+ createKey(`getVisitorDislikeMessages${agentId}`),
|
|
|
+ fetcher
|
|
|
+ );
|
|
|
|
|
|
const handleEdit = (item: TVisitorChat) => {
|
|
|
Taro.navigateTo({
|
|
|
url: `/pages/dashboard-visitor-message-editor/index?msgId=${item.msgId}&visitorId=${item.visitorId}&agentId=${item.agentId}`,
|
|
|
});
|
|
|
};
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
// 删除问答项
|
|
|
const handleDeleteItem = async (item: TVisitorChat) => {
|
|
|
showModal({
|
|
|
content: "确定删除该问答项吗?",
|
|
|
onConfirm: async () => {
|
|
|
-
|
|
|
const { status } = await deleteVisitorDislikeAnswer({
|
|
|
visitorId: item.visitorId,
|
|
|
- msgId: item.msgId
|
|
|
- })
|
|
|
+ msgId: item.msgId,
|
|
|
+ });
|
|
|
if (isSuccess(status)) {
|
|
|
Taro.showToast({ title: "删除成功", icon: "success" });
|
|
|
- refetch()
|
|
|
+ // todo
|
|
|
}
|
|
|
},
|
|
|
});
|
|
@@ -74,38 +72,17 @@ export default function Index() {
|
|
|
loadMore();
|
|
|
};
|
|
|
|
|
|
-
|
|
|
- useEffect(() => {
|
|
|
- if (data?.data) {
|
|
|
- const r = data.data.filter((item)=> item.role === 'assistant')
|
|
|
- if(page === 1){
|
|
|
- setList(r);
|
|
|
- }else{
|
|
|
- setList([...list, ...r]);
|
|
|
- }
|
|
|
- setScrollTop(prev => prev + 1)
|
|
|
- }
|
|
|
- }, [data]);
|
|
|
-
|
|
|
-
|
|
|
- useDidShow(()=> {
|
|
|
- setList([])
|
|
|
- refetch()
|
|
|
- })
|
|
|
-
|
|
|
const createCardOptions = (item: TVisitorChat) => {
|
|
|
return [
|
|
|
- <View onClick={() => handleDeleteItem(item)}>
|
|
|
- 删除
|
|
|
- </View>,
|
|
|
+ <View onClick={() => handleDeleteItem(item)}>删除</View>,
|
|
|
<View onClick={() => handleView(item)}>查看对话</View>,
|
|
|
<View onClick={() => handleEdit(item)}>编辑</View>,
|
|
|
- ]
|
|
|
- }
|
|
|
+ ];
|
|
|
+ };
|
|
|
|
|
|
return (
|
|
|
<PageCustom fullPage>
|
|
|
- <NavBarNormal backText="待处理差评" scrollFadeIn></NavBarNormal>
|
|
|
+ <NavBarNormal scrollFadeIn>待处理差评</NavBarNormal>
|
|
|
<View className="w-full flex flex-col overflow-hidden h-full pt-2">
|
|
|
<View className="rounded-container-header"></View>
|
|
|
{/* <View className="text-14 font-medium leading-22 px-16 pb-16">
|
|
@@ -121,12 +98,11 @@ export default function Index() {
|
|
|
height: "100%", // 高度自适应
|
|
|
}}
|
|
|
>
|
|
|
- {list.map((item) => {
|
|
|
+ <View className="pb-80">
|
|
|
+ {list.map((item) => {
|
|
|
return (
|
|
|
<View className="flex flex-col gap-16 px-16 mb-16">
|
|
|
- <CardEditable
|
|
|
- buttons={createCardOptions(item)}
|
|
|
- >
|
|
|
+ <CardEditable buttons={createCardOptions(item)}>
|
|
|
<View className="flex items-start mb-8 gap-8">
|
|
|
<View className="flex-center h-28">
|
|
|
<IconQ />
|
|
@@ -141,7 +117,9 @@ export default function Index() {
|
|
|
<IconA />
|
|
|
</View>
|
|
|
<View className="flex-1 text-12 leading-20 text-gray-45 truncate">
|
|
|
- <View className="truncate">{item.correctionAnswer}</View>
|
|
|
+ <View className="truncate">
|
|
|
+ {item.correctionAnswer}
|
|
|
+ </View>
|
|
|
|
|
|
{!!item.correctionLinks?.length && (
|
|
|
<View className="pb-12">
|
|
@@ -175,10 +153,8 @@ export default function Index() {
|
|
|
</View>
|
|
|
);
|
|
|
})}
|
|
|
+ </View>
|
|
|
</ScrollView>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
</View>
|
|
|
</PageCustom>
|
|
|
);
|