Browse Source

fix: 微官网小蓝本添加头像修复

王晓东 1 week ago
parent
commit
afb153434b

+ 5 - 4
src/components/AvatarMedia/index.tsx

@@ -1,10 +1,10 @@
 import { Image, Video, VideoProps, ImageProps, View } from "@tarojs/components";
-import avatarDefaultSource from '@/images/avatar-default.png'
 import { useEffect, useRef } from "react";
 import Taro from "@tarojs/taro";
+import { DEFAULT_AVATAR } from '@/config'
 
 interface Props {
-  source: string;
+  source?: string;
   className: string;
   mode?: keyof ImageProps.Mode | undefined
 }
@@ -36,7 +36,7 @@ export const AvatarMedia = ({ source, className, mode = 'widthFix' }: Props) =>
   }, []);
 
   // 以 .mp4 结尾则认为是 视频
-  if (source.slice(-4) === '.mp4') {
+  if (source && source.slice(-4) === '.mp4') {
     return (
       <Video
         id={videoId.current}
@@ -56,13 +56,14 @@ export const AvatarMedia = ({ source, className, mode = 'widthFix' }: Props) =>
     );  
   }
 
-  const _source = source.length ? source : avatarDefaultSource
+  const _source = source?.length ? source : DEFAULT_AVATAR
   return (
     <View className={`overflow-hidden rounded-full ${className}`}>
       <Image
         mode={mode}
         className={`${className}`}
         src={_source}
+        lazyLoad
       />
     </View>
   );

+ 5 - 4
src/components/component-list/components/card-contacts/index.tsx

@@ -10,6 +10,7 @@ import { TAgent, TComponentItem } from "@/types/agent";
 import { TContactItem } from "@/types/contact";
 import { getAgentBatch } from "@/service/agent";
 import { isSuccess } from "@/utils";
+import { AvatarMedia } from "@/components/AvatarMedia";
 
 interface Props {
   index: number;
@@ -47,7 +48,6 @@ export default ({
   
   const fetchData = async () => {
     const response = await getAgentBatch(contacts.map(item=> item.agentId).join(','));
-    console.log(1111, response);
     if(isSuccess(response.status)){ 
       console.log('获取名片数据', response.data);
       setList(response.data);
@@ -55,6 +55,9 @@ export default ({
   }
     
   
+  useDidShow(()=> {
+    fetchData()
+  })
 
   useEffect(()=> {
     fetchData()
@@ -91,9 +94,7 @@ export default ({
             return (
               <View className="flex flex-col gap-8" onClick={()=> {handleClick(item)}}>
                 <View className={style.avatar}>
-                  {item.avatarUrl && (
-                    <Image src={item.avatarUrl} mode='aspectFill' className={style.avatar} lazyLoad></Image>
-                  )}
+                  <AvatarMedia source={item.avatarUrl ?? ''} mode='aspectFill' className='w-92 h-92 rounded-full' />
                 </View>
                 <View className={`truncate ${style.nickName}`}>
                   {item.name}

+ 2 - 1
src/components/contact-card/index.tsx

@@ -3,6 +3,7 @@ import IconCertificateColor from "@/components/icon/icon-certificate-color";
 import style from './index.module.less'
 import { TContactItem } from '@/types/contact'
 import { TAgent } from '@/types/agent'
+import { AvatarMedia } from '../AvatarMedia';
 interface Props {
   data: TContactItem|TAgent
   onClick?: (data: TContactItem|TAgent)=>void
@@ -13,7 +14,7 @@ const Index = ({onClick, data, className, renderRight}: Props)=> {
   return (
     <View className={`${style.contactCard} ${className}`} onClick={()=>{onClick?.(data)}}>
       <View className={style.avatar}>
-      {data.avatarUrl && <Image src={data.avatarUrl} className={style.avatarImg} mode="aspectFill"></Image>}
+      <AvatarMedia source={data.avatarUrl ?? ''} className='w-[55px] h-[55px]' mode="aspectFill" />
       </View>
       <View className={`${style.infoColumn} truncate`}>
         <View className={style.nameRow}>

File diff suppressed because it is too large
+ 0 - 0
src/config/default-avatar.ts


File diff suppressed because it is too large
+ 1 - 0
src/config/index.ts


+ 22 - 16
src/pages/editor-pages/editor-link-contact/index.tsx

@@ -1,4 +1,4 @@
-import { useState, useEffect, useMemo } from "react";
+import { useState } from "react";
 import { View } from "@tarojs/components";
 import Taro, { useRouter } from "@tarojs/taro";
 import PageCustom from "@/components/page-custom/index";
@@ -20,6 +20,7 @@ import IconMoreBlack from "@/components/icon/IconMoreBlack";
 import PopupSheets from "@/components/popup/popup-sheets";
 import { EComponentType } from "@/consts/enum";
 import { useComponentStore } from "@/store/componentStore";
+import { useAgentStore } from "@/store/agentStore";
 
 export default function Index() {
   const { saveComponent } = useComponentStore();
@@ -27,8 +28,9 @@ export default function Index() {
   const loading = useComponentStore((state) => state.loading);
   const prevData = currentComponent?.data.values ?? []
   const [picked, setPicked] = useState<(TContactItem|TAgent)[]>(prevData);
-  const [agents, setAgents] = useState<TAgent[]>(prevData);
+  const [agents, setAgents] = useState<(TContactItem|TAgent)[]>(prevData);
   const [current, setCurrent] = useState<(TContactItem|TAgent)|null>(null);
+  const agent = useAgentStore((state)=>  state.agent)
 
   // 是否显示选择器
   const [show, setShow] = useState(false);
@@ -91,7 +93,9 @@ export default function Index() {
     }
     
     setShowPopupSheets(false)
-    setPicked(picked.filter(item => item.agentId !== current.agentId))
+    const restAgent = picked.filter(item => item.agentId !== current.agentId);
+    setPicked(restAgent)
+    setAgents(restAgent)
     setCurrent(null)
   }
 
@@ -134,9 +138,17 @@ export default function Index() {
   };
 
   
+  const colleagues = {
+    key: "3",
+    label: "企业同事",
+    children: (
+      <View className={style.tabContainer}>
+        <MyEntAgentsScrollList selected={agents} setSelected={setAgents}></MyEntAgentsScrollList>
+      </View>
+    ),
+  }
 
-  
-  const tabList = [
+  const tabsBaseList = [
     {
       key: "1",
       label: "我创建的",
@@ -155,17 +167,11 @@ export default function Index() {
         </View>
       ),
     },
-    {
-      key: "3",
-      label: "企业同事",
-      children: (
-        <View className={style.tabContainer}>
-          <MyEntAgentsScrollList selected={agents} setSelected={setAgents}></MyEntAgentsScrollList>
-        </View>
-      ),
-    },
-  ];
+  ]
+  
+  const tabList = agent?.isEnt ? [...tabsBaseList, colleagues] : tabsBaseList;
 
+  
 
   
 
@@ -181,7 +187,7 @@ export default function Index() {
             onClick={handleClick}
           ></ButtonCardAdd>
 
-          <View className="pt-24">
+          <View className="pt-24 pb-162">
             {renderContactList()}
           </View>
         </View>

Some files were not shown because too many files changed in this diff