Browse Source

fix: 知识库 onShow 时强制刷新接口

王晓东 2 tuần trước cách đây
mục cha
commit
6d03be7281

+ 3 - 3
src/components/AgentPage/index.tsx

@@ -31,9 +31,9 @@ export default function Index({ agentId }: IProps) {
   }, [agentId]);
 
   useEffect(()=> {
-    const components = agent?.components ?? []
-    // 过滤掉没有 id 的组件防止有错误数据
-    setComponentList(components.filter(c => !!c.data?.id), agentId);
+    // 过滤,1,允许显示,2、有 id 的组件防止有错误数据
+    const components = (agent?.components ?? []).filter(c => !!c.data?.id && c.enabled)
+    setComponentList(components, agentId);
   }, [agent])
 
   useEffect(()=> {

+ 2 - 2
src/hooks/useEditContactCard.ts

@@ -15,7 +15,7 @@ const useEditContactCard = (
   const handleSubmit = async () => {
     submit(value)
   };
-  const submit = async (_value: string) => {
+  const submit = async (_value: string, navBack: boolean = true) => {
     if (!agent?.agentId) {
       return;
     }
@@ -32,7 +32,7 @@ const useEditContactCard = (
     });
     if(result){
       await fetchAgent(agent.agentId)
-      Taro.navigateBack()
+      navBack && Taro.navigateBack()
     }
   }
   const onChange = (e: any) => {

+ 1 - 0
src/pages/agent-avatars/index.module.less

@@ -45,6 +45,7 @@
   position: absolute;
   top: 0;
   right: 0;
+  z-index: 1;
   display: flex;
   align-items: center;
   justify-content: center;

+ 11 - 3
src/pages/agent/components/AgentSetting/components/AgentSettingList/index.tsx

@@ -10,9 +10,19 @@ import IconIdeaColor from "@/components/icon/icon-idea-color";
 
 import IconArrow from "@/components/icon/icon-arrow";
 import Taro from "@tarojs/taro";
+import { useVoiceStore } from "@/store/voiceStore";
+import { useAgentStore } from "@/store/agentStore";
 
 export default function Index() {
   
+  const agent = useAgentStore((state)=>  state.agent)
+  const {setEntId} = useVoiceStore()
+  const handleEditVoice = ()=> {
+    // 提前设置当前智能体 entId
+    setEntId(agent?.entId ?? 0);
+    Taro.navigateTo({url: '/pages/voice/index'})
+  }
+  
   const IconArrowRight = () => {
     return (
       <View className="flex items-center">
@@ -28,9 +38,7 @@ export default function Index() {
             underline
             rightRenderer={IconArrowRight}
             leftRenderer={IconVoiceColor}
-            onClick={()=> {
-              Taro.navigateTo({url: '/pages/voice/index'})
-            }}
+            onClick={handleEditVoice}
           >
             <View className="text-14 py-18 font-medium leading-22">声音</View>
           </CardListItem>

+ 15 - 3
src/pages/chat/components/input-bar/index.tsx

@@ -4,13 +4,15 @@ import VoiceInputBar from "./VoiceInputBar";
 import { textChat } from "@/service/bot";
 import { TMessage,TRobotMessage, useTextChat } from "@/store/textChat";
 import { TAgentDetail } from "@/types/agent";
-import { delay, getLoginId } from "@/utils";
+import { delay, getLoginId, isSuccess } from "@/utils";
 import { EAI_MODEL } from "@/consts/enum";
 import { useUnload } from "@tarojs/taro";
 import { EChatRole, EContentType } from "@/types/bot";
 
 import { saveMessageToServer } from './message'
 
+import { getRecommendPrompt } from "@/service/bot"
+
 
 interface Props {
   agent: TAgentDetail | null;
@@ -117,7 +119,7 @@ export default ({ agent, setShowWelcome, histories }: Props) => {
           updateRobotMessage(m.content);
         }
       },
-      onFinished: () => {
+      onFinished: async () => {
         console.log("回复完毕 ok");
         const currentRobotMessage = getCurrentRobotMessage();
         console.log(currentRobotMessage,333)
@@ -131,7 +133,8 @@ export default ({ agent, setShowWelcome, histories }: Props) => {
           return 
         }
 
-        saveMessageToServer({
+        // 将智能体的回答保存至服务器
+        await saveMessageToServer({
           loginId,
           messages: [{
             content: currentRobotMessage.content,
@@ -144,6 +147,15 @@ export default ({ agent, setShowWelcome, histories }: Props) => {
           sessionId,
         })
         
+        const response = await getRecommendPrompt({
+          agentId: agent.agentId,
+          sessionId,
+        })
+
+        if(isSuccess(response.status)){
+          console.log(response.data.questions)
+        }
+
       },
       onError: () => {
         deleteMessage(currentRobotMsgUk);

+ 1 - 1
src/pages/chat/components/input-bar/message.ts

@@ -2,4 +2,4 @@ import { appendMessages } from "@/service/bot"
 import type { TMessageHistories, TRequestBody, TAppendMessages } from "@/types/bot";
 export const saveMessageToServer = async(data: TAppendMessages) => {
   await appendMessages(data)
-}
+}

+ 35 - 22
src/pages/editor-contact/index.tsx

@@ -6,52 +6,65 @@ import CardList from "@/components/list/card-list";
 import ListWrapper from "@/components/list/ListWrapper";
 import ListRow from "@/components/list/ListRow";
 import TagCertificated from "@/components/tag-certificated";
-import CardListItem from "@/components/list/card-list-item";
 import Taro, { useRouter } from "@tarojs/taro";
 import { useAgentStore } from "@/store/agentStore";
 import { TAgentDetail } from "@/types/agent";
+import  PickerSingleColumn from "@/components/Picker/PickerSingleColumn";
+import useEditContactCard from "@/hooks/useEditContactCard";
+import { useState } from "react";
 const RenderEntCard = (
   agent: TAgentDetail | null,
   navToUrl: (url: string) => void
 ) => {
+  const agentContactCard = useAgentStore((state)=> state.agentContactCard)
+  const { submit } = useEditContactCard('position', agentContactCard?.position)
+  // 当前选中的值
+  const options = ['销售人员', '客服与售后支持', '市场与商务合作人员', '新员工 / 培训岗位', '管理者 / 内容运营者']
+  // 是否显示选择器
+  const [showPicker, setShowPicker] = useState(false)
+
+  // 当前选中的值
+  const [selected, setSelected] = useState(options[0])
+
+  const handlePicked = (value: string) => {
+    setSelected(value)
+    submit(value, false)
+  }
+  
   if (!agent?.entName) {
     return <></>;
   }
   return (
     <View className="px-16 w-full pt-12">
-      <CardList>
-        <View className="py-16 px-20 flex flex-col gap-20">
-          <CardListItem
+      <ListWrapper>
+          <ListRow
             underline
-            arrow
-            onClick={() => navToUrl("/pages/editor-pages/editor-company/index")}
           >
-            <View className="flex items-center font-normal pb-16">
+            <View className="flex items-center font-normal">
               <View className="flex-1 font-normal">企业</View>
               <View className="text-gray-65 truncate max-w-[188px]">
                 {agent?.entName}
               </View>
             </View>
-          </CardListItem>
-          <CardListItem underline>
-            <View className="flex items-center font-normal pb-16">
+          </ListRow>
+          <ListRow underline>
+            <View className="flex items-center font-normal">
               <View className="flex-1 font-normal">企业认证</View>
               <TagCertificated />
             </View>
-          </CardListItem>
-          <CardListItem
+          </ListRow>
+          <ListRow
             arrow
-            onClick={() =>
-              navToUrl("/pages/editor-pages/editor-position/index")
-            }
           >
-            <View className="flex items-center font-normal pb-16">
-              <View className="flex-1 font-normal">职位</View>
-              <View className="text-gray-65 mr-8">{agent?.position}</View>
-            </View>
-          </CardListItem>
-        </View>
-      </CardList>
+            
+            <PickerSingleColumn headerTitle="您的岗位" options={options} selected={selected} onPicked={handlePicked} showPicker={showPicker} setShowPicker={setShowPicker}>
+              <View className="flex items-center font-normal" onClick={() => setShowPicker(true)}>
+                <View className="flex-1 font-normal">职位</View>
+                <View className="text-gray-65 mr-8">{agent?.position}</View>
+              </View>
+            </PickerSingleColumn>
+          </ListRow>
+      </ListWrapper>
     </View>
   );
 };

+ 7 - 17
src/pages/editor-pages/editor-link-contact/components/MyContactsScrollList/index.tsx

@@ -8,6 +8,8 @@ import { TContactItem } from "@/types/contact";
 import ContactCard from "@/components/contact-card/index";
 import WemetaRadio from "@/components/WemetaRadio/index";
 
+import { createKey, useLoadMoreInfinite } from "@/utils/loadMoreInfinite";
+
 export interface IProps {
   selected: any[]
   setSelected: (values) => void
@@ -15,33 +17,21 @@ export interface IProps {
 
 
 export default function Index({selected, setSelected}: IProps) {
-  const [list, setList] = useState<TContactItem[]>([]);
 
-  const fetcher = async ([_url, nextId, page, pageSize, _keyword]) => {
-    let keyword = _keyword
-    const res = await getContactList({ startId: nextId, pageSize, keyword });
+  const fetcher = async ([_url, {nextId, pageSize}]) => {
+    const res = await getContactList({ startId: nextId, pageSize });
     return res.data;
   };
-  const { data, loadMore, refetch } = useLoadMore<{
-    data?: TContactItem[]
-    nextId?: string,
-    totalCount?: number
-  }>({
-    url: '/blue-aiagent/api/v1/my/contacts',
+  const { list, loadMore } = useLoadMoreInfinite<TContactItem[]>(
+    createKey('/blue-aiagent/api/v1/my/contacts',),
     fetcher,
-  });
+  );
 
   const onScrollToLower = () => {
     // 加载更多数据
     loadMore();
   };
 
-  useEffect(() => {
-    if (data?.data) {
-      setList([...list, ...data.data]);
-    }
-  }, [data]);
-
 
   const handleClick = (item: TContactItem) => {
     console.log(item)

+ 5 - 3
src/pages/editor-pages/editor-title/index.tsx

@@ -3,7 +3,7 @@ import { View } from "@tarojs/components";
 
 import PageCustom from "@/components/page-custom/index";
 import NavBarNormal from "@/components/NavBarNormal/index";
-
+import ButtonMain from "@/components/buttons/ButtonMain";
 import { useComponentStore } from '@/store/componentStore'
 import BottomBar from "@/components/BottomBar";
 import WemetaTextarea from "@/components/wemeta-textarea/index";
@@ -50,7 +50,7 @@ export default function Index() {
 
   return (
     <PageCustom bgColor="global-light-green-bg">
-      <NavBarNormal backText="返回">章节标题</NavBarNormal>
+      <NavBarNormal>章节标题</NavBarNormal>
       <View className="flex flex-col items-center w-full">
         <View className="w-full p-16">
             <WemetaTextarea
@@ -59,10 +59,12 @@ export default function Index() {
               onInput={(value: string) => onChange(value)}
               placeholder="章节标题"
               autoFocus
+              maxlength={50}
             />
           </View>
+          
         <BottomBar>
-          <View className="button-rounded button-primary flex-1" onClick={handleSubmit}>保存</View>
+          <ButtonMain disabled={!value.length} onClick={handleSubmit}>保存</ButtonMain>
         </BottomBar>
       </View>
     </PageCustom>

+ 2 - 2
src/pages/knowledge/components/CompanyTab/components/ScrollList.tsx

@@ -27,7 +27,7 @@ const Index = ({entId}:Iprops) => {
     const res = await getEntKnowledgeList({ startId: nextId, pageSize, entId });
     return res.data;
   };
-  const { list, loadMore, pageIndex } = useLoadMoreInfinite<TKnowledgeItem[]>(createKey(`getEntKnowledgeList ${entId}`, 10, [entId]),
+  const { list, loadMore, pageIndex, mutate } = useLoadMoreInfinite<TKnowledgeItem[]>(createKey(`getEntKnowledgeList ${entId}`, 10, [entId]),
     fetcher);
 
   const onScrollToUpper = async () => {
@@ -35,7 +35,7 @@ const Index = ({entId}:Iprops) => {
     loadMore()
   }
   useDidShow(()=> {
-    loadMore()
+    mutate(undefined, { revalidate: true });
   })
   useEffect(() => {
     if(pageIndex === 1){

+ 4 - 2
src/pages/knowledge/components/CompanyTab/components/ScrollListChat.tsx

@@ -35,7 +35,7 @@ const Index = ({ entId, assistantOnly }: Iprops) => {
     const res = await getEntKnowledgeStream({ startId: nextId, pageSize, entId });
     return res.data;
   };
-  const { list, loadMore, pageIndex } = useLoadMoreInfinite<TKnowledgeStreamResponseData[]>(
+  const { list, loadMore, pageIndex, mutate } = useLoadMoreInfinite<TKnowledgeStreamResponseData[]>(
     createKey(`getEntKnowledgeStream ${entId}`, 10, [entId]),
     fetcher);
 
@@ -53,7 +53,9 @@ const Index = ({ entId, assistantOnly }: Iprops) => {
     console.log("toUpper");
     loadMore();
   };
-
+  useDidShow(()=> {
+    mutate(undefined, { revalidate: true });
+  })
   useEffect(() => {
     if(pageIndex === 1){
         setScrollTop(prev => prev + 1)

+ 4 - 4
src/pages/knowledge/components/PersonalTab/components/ScrollList.tsx

@@ -34,7 +34,7 @@ const Index = ({types}: IProps) => {
     const res = await getKnowledgeList({ startId: nextId, pageSize, types });
     return res.data;
   };
-  const { list, loadMore } = useLoadMoreInfinite<TKnowledgeItem[]>( createKey('getKnowledgeList', 2, [types]), fetcher,);
+  const { list, loadMore, mutate } = useLoadMoreInfinite<TKnowledgeItem[]>( createKey('getKnowledgeList', 2, [types]), fetcher,);
 
   const onScrollToUpper = async () => {
     console.log('toUpper')
@@ -42,9 +42,9 @@ const Index = ({types}: IProps) => {
   }
 
 
-  useEffect(() => {
-    loadMore();
-  }, []);
+  useDidShow(()=> {
+    mutate(undefined, { revalidate: true });
+  })
 
   
 

+ 5 - 3
src/pages/knowledge/components/PersonalTab/components/ScrollListChat.tsx

@@ -31,7 +31,7 @@ interface IProps {
 const Index = ({assistantOnly}: IProps) => {
 
   const [scrollTop, setScrollTop] = useState(9999)
-  // const [list, setList] = useState<TKnowledgeStreamResponseData[]>([]);
+  
 
   const fetcher = async ([_url, {nextId, pageSize}]) => {
       const res = await getMyKnowledgeStream({startId: nextId, pageSize });
@@ -39,7 +39,7 @@ const Index = ({assistantOnly}: IProps) => {
   };
 
   
-  const { list, loadMore, pageIndex } = useLoadMoreInfinite<TKnowledgeStreamResponseData[]>(
+  const { list, loadMore, pageIndex, mutate } = useLoadMoreInfinite<TKnowledgeStreamResponseData[]>(
     createKey('getMyKnowledgeStream', 10),
     fetcher,
   );
@@ -81,7 +81,9 @@ const Index = ({assistantOnly}: IProps) => {
     }
   }, [pageIndex])
 
-  console.log(reversedList, 'reversedList');
+  useDidShow(()=> {
+    mutate(undefined, { revalidate: true });
+  })
   
 
   return (

+ 4 - 0
src/pages/voice/components/MyVoiceList/index.tsx

@@ -17,6 +17,7 @@ import { deleteVoice, getVoiceStatus } from "@/service/voice";
 import ThinkingAnimation from "@/components/think-animation";
 import { useModalStore } from "@/store/modalStore";
 import { isSuccess } from "@/utils";
+import Taro from "@tarojs/taro";
 
 interface Props {
   agent: TAgentDetail | null;
@@ -83,6 +84,9 @@ export default ({ onPlay, agent }: Props) => {
     if(voices.length <= 1){
       return;
     }
+    if(!item.canDel){
+      Taro.showToast({title: '该声音无法删除'})
+    }
     showModal({
       content: '确认删除该声音?',
       onConfirm: async () => {

+ 5 - 3
src/pages/voice/index.tsx

@@ -29,6 +29,7 @@ const VoiceTabs: React.FC<Props> = ({}) => {
     malePagination,
     isLoading,
     pagination,
+    setEntId,
     getVoices,
     getFemaleVoices,
     getMaleVoices,
@@ -38,6 +39,7 @@ const VoiceTabs: React.FC<Props> = ({}) => {
     
   } = useVoiceStore();
 
+  
   const handleScrollEnd = () => {
     if (isLoading) {
       return;
@@ -47,17 +49,17 @@ const VoiceTabs: React.FC<Props> = ({}) => {
 
   useEffect(() => {
     getVoices();
-  }, []);
+  }, [agent]);
 
   // 获取女声列表
   useEffect(() => {
     getFemaleVoices();
-  }, []);
+  }, [agent]);
 
   // 获取男声列表
   useEffect(() => {
     getMaleVoices();
-  }, []);
+  }, [agent]);
 
   // 处理滚动加载更多
   const handleFemaleScrollEnd = () => {

+ 16 - 0
src/service/agent.ts

@@ -94,6 +94,22 @@ export const getAgentShareInfo = (agentId: string) => {
   return request.get<TAgentShared>(`${bluebookAiAgent}api/v1/agent/${agentId}/shareInfo`)
 }
 
+// 批量获取智能体信息,用于微官网组件 -- 允许未登录用户直接访问
+export const getAgentBatch = () => {
+  return request.get<TAgentDetail[]>(`${bluebookAiAgent}api/v1/agent/batch`)
+}
+
+// 获取指定企业的同事智能体--用于官网信息中智能体推荐部份--包含自己的智能体
+export const getEntAgentPartners = (params: {
+  entId: number|string,
+  startId?: string
+  pageSize: number
+}) => {
+  return request.get<TAgent[]>(`${bluebookAiAgent}api/v1/my/ent/${params.entId}/agent/partners`, {
+    params
+  })
+}
+
 
 
 

+ 7 - 2
src/service/bot.ts

@@ -21,10 +21,15 @@ export const getMessageHistories = (data: TGetMessageHistoriesParams) => {
     { params: data }
   );
 };
+// 推荐提问引导。在获取完成并保存完成后,调用推荐提示获取提问引导 
+export const getRecommendPrompt = (data: {agentId: string, sessionId: string}) => {
+  return request.get<{questions: string[]}>(
+    `${bluebookAiAgent}api/v1/chat/recommend/prompt`,
+    { params: data }
+  );
+};
 
 // 保存消息--追加覆盖保存模式
-
-
 export const appendMessages = (data: TAppendMessages) => {
   return request.post(`${bluebookAiAgent}api/v1/chat/messages/append`, data)
 }

+ 7 - 6
src/store/agentStore.ts

@@ -27,6 +27,7 @@ export interface AgentStoreState {
   agents: TAgent[];
   agent: TAgentDetail | null;
   defaultAgent: TAgentDetail | TAgent | null;
+  // 无需登录查看 agent 信息
   agentProfile: TAgentDetail | null;
   agentContactCard: TAgentContactCard | null;
   agentProfileContactCard: TAgentContactCard | null;
@@ -102,14 +103,15 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
     }
     return null;
   },
+  // 请求无需登录的 getAgent 接口
   fetchAgentProfile: async (agentId: string, shareKey?:string) => {
-    // 如果自己的智能体列表中有 对应的 agentId,则请求自己的 agent, 否则请求无需登录的 getAgent 接口
     const response = await _getAgent(agentId, shareKey);
     const result = isSuccess(response.status)
-    if (result && response.data) {
-      const agent = response.data;
+    const agent = response.data
+    if (result && agent) {
+      agent.components = (agent.components ?? []).filter(item => item.enabled)
       set({
-        agentProfile: response.data,
+        agentProfile: agent,
         agentProfileContactCard: {
           address: agent.address ?? "",
           email: agent.email ?? "",
@@ -120,8 +122,7 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
           qrCodeUrl: agent.qrCodeUrl ?? "",
         },
       });
-
-      return response.data;
+      return agent;
     }
     return null;
   },

+ 16 - 8
src/store/voiceStore.ts

@@ -10,8 +10,10 @@ import {
 import { isSuccess } from "@/utils";
 
 
+type TVoiceRequestParam = Omit<TGetMyVoicesParams, 'entId'>
 export interface StorageStoreState {
   // 初始状态
+  entId: number|string
   voices: TVoiceItem[];
   myVoices: TVoiceItem[];
   maleVoices: TVoiceItem[];
@@ -20,9 +22,10 @@ export interface StorageStoreState {
   malePagination: TPageination;
   femalePagination: TPageination;
   isLoading: boolean,
-  getVoices: (params?: TGetMyVoicesParams) => Promise<boolean>;
-  getMaleVoices: (params?: TGetMyVoicesParams) => Promise<boolean>;
-  getFemaleVoices: (params?: TGetMyVoicesParams) => Promise<boolean>;
+  setEntId: (entId: number|string)=> void
+  getVoices: (params?: TVoiceRequestParam) => Promise<boolean>;
+  getMaleVoices: (params?: TVoiceRequestParam) => Promise<boolean>;
+  getFemaleVoices: (params?: TVoiceRequestParam) => Promise<boolean>;
   setPagination: (params:any) => Promise<void>;
   setMalePagination: (params:any) => Promise<void>;
   setFemalePagination: (params:any) => Promise<void>;
@@ -33,6 +36,7 @@ export interface StorageStoreState {
 }
 
 export const useVoiceStore = create<StorageStoreState>((set, get) => ({
+  entId: 0,
   voices: [],
   myVoices: [],
   maleVoices: [],
@@ -59,14 +63,19 @@ export const useVoiceStore = create<StorageStoreState>((set, get) => ({
     extData: null,
   },
   isLoading: false,
+  setEntId: (entId)=> {
+    set({entId: entId})
+  },
   getVoices: async (params = {}) => {
     set({ isLoading: true });
+    console.log(get().entId, 8888)
     // 合并当前分页参数和传入参数
     const currentPagination = get().pagination;
-    const requestParams = { ...currentPagination, ...params };
+    const requestParams = { ...currentPagination, entId: get().entId, ...params };
 
     const response = await _getVoices(requestParams)
 
+    // todo: 我的克隆声音后期需要单独,现只是从全部列表中过滤出
     // 更新状态
     set({
       voices: response.data.data,
@@ -82,7 +91,7 @@ export const useVoiceStore = create<StorageStoreState>((set, get) => ({
   getMaleVoices: async (params = {}) => {
     set({ isLoading: true });
     const currentPagination = get().malePagination;
-    const requestParams = { ...currentPagination, ...params, gender: 'male' as TGender };
+    const requestParams = { ...currentPagination, entId: get().entId,  ...params, gender: 'male' as TGender };
 
     const response = await _getVoices(requestParams)
 
@@ -99,7 +108,7 @@ export const useVoiceStore = create<StorageStoreState>((set, get) => ({
   getFemaleVoices: async (params = {}) => {
     set({ isLoading: true });
     const currentPagination = get().femalePagination;
-    const requestParams = { ...currentPagination, ...params, gender: 'female' as TGender };
+    const requestParams = { ...currentPagination, entId: get().entId,  ...params, gender: 'female' as TGender };
 
     const response = await _getVoices(requestParams)
 
@@ -134,7 +143,6 @@ export const useVoiceStore = create<StorageStoreState>((set, get) => ({
     get().getFemaleVoices();
   },
   cloneVoice: async (params) => {
-    const response = await _cloneVoice(params)
-    console.log(response,444444) 
+    await _cloneVoice(params)
   }
 }));

+ 2 - 0
src/types/voice.ts

@@ -14,6 +14,7 @@ export type TVoiceStatus = EVoiceStatus[keyof EVoiceStatus];
 export type TVoiceItem = {
   createTime: string;
   duration: number;
+  canDel?: boolean
   failedMsg: string;
   gender: TGender;
   genderDesc: string;
@@ -61,5 +62,6 @@ export type TGetMyVoicesParams = {
   pageSize?: number,
   type?: EVoiceType,
   gender?: TGender,
+  entId: number|string,
 }
 

+ 7 - 2
src/utils/avatar.ts

@@ -2,10 +2,15 @@ import Taro from "@tarojs/taro";
 import { uploadImage } from "@/utils/http";
 import { EUploadFileScene } from "@/consts/enum";
 
+// import { checkPermission, showAuthModal } from "@/utils/auth";
 
 const MAX_IMAGE_SIZE = 10;
-
-export const getNewAvatarPic = (cb: (result: string)=> void)=> {
+export const getNewAvatarPic = async (cb: (result: string)=> void)=> {
+  // const authed = await checkPermission("scope.writePhotosAlbum");
+  //   if (!authed) {
+  //     showAuthModal("需要您相册权限");
+  //     return;
+  //   }
   Taro.chooseMedia({
     count: 1,
     mediaType: ["image"],

+ 6 - 5
src/utils/upload.ts

@@ -30,12 +30,13 @@ export async function pickAndUploadImage(
       scene,
     );
 
-    Taro.showToast({
-      title: '上传成功',
-      icon: 'success',
-      duration: 1500,
-    })
+    
     if(uploadResult?.publicUrl){
+      Taro.showToast({
+        title: '上传成功',
+        icon: 'success',
+        duration: 1500,
+      })
       return {
         url: uploadResult?.publicUrl,
         size: file.size,