shenwu před 7 měsíci
rodič
revize
8ee67ef748

+ 40 - 7
src/pages/Distributor/CorpManage/index.tsx

@@ -1,14 +1,37 @@
 import { miniAppList } from "@/services/distributor/miniApp"
 import { PageContainer, ProTable } from "@ant-design/pro-components"
-import { Table } from "antd"
+import { Button, Modal, QRCode, Table } from "antd"
 import { columns, childrenColumns } from "./tableConfig"
 import { useAjax } from "@/Hook/useAjax"
+import { corpListOfPage, corpPreAuth } from "@/services/distributor/corpManage"
+import { useEffect, useRef, useState } from "react"
 
 const Page: React.FC = () => {
-    let getList = useAjax((params) => miniAppList(params), { type: 'table' })
+    let getList = useAjax((params) => corpListOfPage(params), { type: 'table' })
+    let [codeOpen, setCodeOpen] = useState<string>("")
+    let [codeState, setCodeState] = useState<"active" | "loading" | "expired" | "scanned">("active")
+    let CorpPreAuth = useAjax(() => corpPreAuth())
+    let timeRef = useRef<any>()
+    const auth = () => {
+        CorpPreAuth.run().then(res => {
+            if (res.data) {
+                setCodeOpen(res.data)
+                setCodeState("active")
+                run()
+            }
+        })
+    }
+    const run = () => {
+        if (timeRef.current) {
+            clearInterval(timeRef.current)
+        }
+        timeRef.current = setInterval(() => {
+            setCodeState("expired")
+        }, 1000 * 60)
+    }
     return <PageContainer>
         <ProTable<any, any>
-            headerTitle={"抖音小程序列表"}
+            headerTitle={"企微列表"}
             rowKey={(r) => r.id}
             search={{
                 labelWidth: 120,
@@ -18,10 +41,9 @@ const Page: React.FC = () => {
                 return await getList.run(params)
             }}
             columns={columns()}
-            // showHeader={false}//隐藏标题
-            // options={false}//隐藏工具栏
-            // ghost={true}//幽灵模式
-            // bordered
+            toolBarRender={() => [
+                <Button type="primary" onClick={auth} >新增企微</Button>,
+            ]}
             expandable={{
                 rowExpandable: (record) => record?.appCarrierList?.length > 0,
                 expandRowByClick: true,
@@ -37,6 +59,17 @@ const Page: React.FC = () => {
                 },
             }}
         />
+        <Modal f
+            ooter={null}
+            open={!!codeOpen}
+            onCancel={() => {
+                setCodeOpen(""); clearInterval(timeRef.current)
+            }}
+            maskClosable={false}
+            width={350}
+            title="企微管理员扫码授权">
+            <QRCode size={300} type="svg" value="https://ant.design/" onRefresh={auth} status={codeState} />
+        </Modal>
     </PageContainer>
 
 }

+ 3 - 2
src/pages/MiniApp/CompConfig/DrawerBox/compFormConfig.tsx

@@ -296,6 +296,9 @@ export function hotCategoryConfig(tags: any[], formRef: React.MutableRefObject<P
                                     colProps: {
                                         span: 12
                                     },
+                                    convertValue:(value)=>{
+                                        return value?.toString()
+                                    },
                                     formItemProps: {
                                         style: { marginBottom: 10 },
                                         rules: [
@@ -308,7 +311,6 @@ export function hotCategoryConfig(tags: any[], formRef: React.MutableRefObject<P
                                     fieldProps: {
                                         showSearch: true
                                     },
-                                    // valueEnum: new Map(tags?.map(item => [item.id, item.name]))
                                     valueEnum: () => {
                                         return tags?.reduce((acc, current) => {
                                             acc[current.id] = { text: current.name, disabled: configs?.some((item: { categoryId: any; }) => item.categoryId == current.id) ? true : false };//
@@ -322,7 +324,6 @@ export function hotCategoryConfig(tags: any[], formRef: React.MutableRefObject<P
                             ]
                         }]
                     },
-
                 }
             ]
         },

+ 1 - 1
src/pages/MiniApp/CompConfig/DrawerBox/index.tsx

@@ -46,7 +46,7 @@ const ModalForm = forwardRef((props: Props, ref) => {
     // 编辑时替换模板名称
     useEffect(()=>{
         setTemplateName(state.templateName)
-    },[])
+    },[state.templateName])
     // close 方法,用于关闭 Drawer
     const close = () => {
         dispatch({

+ 43 - 43
src/pages/MiniApp/CompConfig/components/hot_category.tsx

@@ -6,7 +6,7 @@ import { Key, useEffect, useMemo, useState } from "react";
 import { Config } from "@/models/appPageConifg";
 import { useAjax } from "@/Hook/useAjax";
 import useApi from "@/Hook/useApi";
-import { Empty } from "antd";
+import { Empty, Spin } from "antd";
 import usePrevious from "@/Hook/usePrevious";
 // 热门书
 export function HotCategory(props: {
@@ -50,56 +50,56 @@ export function HotCategory(props: {
     useEffect(() => {
         if (configs && configs?.length > 0) {
             if (!tag && configs?.[0]?.categoryId) {
-                console.log("tag不存在", configs)
                 setTag(configs?.[0]?.categoryId)
             }
             let isExist = configs?.find(i => i.categoryId == tag)
             if (!isExist) {
-                console.log("tag变更")
                 setTag(configs?.[0]?.categoryId)
             }
-            if (configs.length === 0) {
-                setTag(null)
-                setBookData([])
-            }
+        }
+        if (configs && configs.length === 0) {
+            setTag(null)
+            setBookData([])
         }
     }, [tag, configs])
-    return <div className={`${styles.hot_category}`}>
-        <Header title={componentName || "热门分类"} btnText={"全部分类"} showBtn={showRightButton} />
-        <div className={styles.tags}>
-            {
-                configs?.map((item, index) => {
-                    return item?.categoryId && <div
-                        className={`${styles.tag} ${tag === item.categoryId ? styles.tag_ac : ""}`}
-                        key={item.categoryId || index}
-                        onClick={() => {
-                            setTag(item.categoryId || "")
-                        }}
-                    >
-                        {item?.categoryInfo?.name}
-                    </div>
-                })
-            }
-        </div>
-        <div className={styles.list}>
-            {
-                configs?.find(i => i.categoryId == tag)?.bookIds ? configs?.find(i => i.categoryId == tag)?.bookInfos?.map((item: any, index: any) => {
-                    return <div key={item.id || index} className={styles.box}>
-                        <img src={item?.picUrl} onError={(e: any) => {
-                            e.target.src = localStorage.getItem("nocover")
-                        }} />
-                        <span>{item?.bookName}</span>
-                    </div>
-                }) : bookData?.length > 0 ? bookData?.map((item: any, index) => {
-                    return <div key={item.bookId || index} className={styles.box}>
-                        <img src={item?.longBookInfo?.picUrl || item?.shortBookInfoVO?.picUrl} onError={(e: any) => {
-                            e.target.src = localStorage.getItem("nocover")
-                        }} />
-                        <span>{item?.longBookInfo?.bookName || item?.shortBookInfoVO?.bookName}</span>
-                    </div>
-                }) : <div style={{ justifyContent: 'center', display: 'flex', width: '100%' }}><Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description="暂无数据请选中后设置" /></div>
-            }
+    return <Spin spinning={getList?.loading}>
+        <div className={`${styles.hot_category}`}>
+            <Header title={componentName || "热门分类"} btnText={"全部分类"} showBtn={showRightButton} />
+            <div className={styles.tags}>
+                {
+                    configs?.map((item, index) => {
+                        return item?.categoryId && <div
+                            className={`${styles.tag} ${tag === item.categoryId ? styles.tag_ac : ""}`}
+                            key={item.categoryId || index}
+                            onClick={() => {
+                                setTag(item.categoryId || "")
+                            }}
+                        >
+                            {item?.categoryInfo?.name}
+                        </div>
+                    })
+                }
+            </div>
+            <div className={styles.list}>
+                {
+                    configs?.find(i => i.categoryId == tag)?.bookIds ? configs?.find(i => i.categoryId == tag)?.bookInfos?.map((item: any, index: any) => {
+                        return <div key={item.id || index} className={styles.box}>
+                            <img src={item?.picUrl} onError={(e: any) => {
+                                e.target.src = localStorage.getItem("nocover")
+                            }} />
+                            <span>{item?.bookName}</span>
+                        </div>
+                    }) : bookData?.length > 0 ? bookData?.map((item: any, index) => {
+                        return <div key={item.bookId || index} className={styles.box}>
+                            <img src={item?.longBookInfo?.picUrl || item?.shortBookInfoVO?.picUrl} onError={(e: any) => {
+                                e.target.src = localStorage.getItem("nocover")
+                            }} />
+                            <span>{item?.longBookInfo?.bookName || item?.shortBookInfoVO?.bookName}</span>
+                        </div>
+                    }) : <div style={{ justifyContent: 'center', display: 'flex', width: '100%' }}><Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description="暂无数据请选中后设置" /></div>
+                }
+            </div>
         </div>
-    </div>
+    </Spin>
 }
 

+ 1 - 1
src/pages/MiniApp/CompConfig/index.tsx

@@ -58,7 +58,6 @@ const Page: React.FC = () => {
             }
         })
     }, [publicData])
-    console.log(activeT)
     // 模板切换
     const switchTemplate = (templateName: any) => {
         let params = { ...publicData, templateName }
@@ -101,6 +100,7 @@ const Page: React.FC = () => {
     const edit=(data:any)=>{
         dispatch({type:'setAll',params:{templateName:data?.templateName,pageConfigList:data?.pageConfigList}})
         DrawerBoxRef?.current?.openDrawer();
+        
     }
     return <PageContainer
         extra={getList?.data?.data?.length > 0 && <Button type="primary" onClick={DrawerBoxRef?.current?.openDrawer}><PlusOutlined />新增配置</Button>}

+ 9 - 4
src/pages/MiniApp/CompConfig/template.tsx

@@ -124,13 +124,18 @@ export function Template(params: { data: any }) {
                                     })
                                     break;
                                 case "hot_books":
-                                    // await GetShortBookHotBooks.run({ templateName: data?.templateName, workDirection: wd?.workDirection, ...publicData }).then(res => {
-                                    //     comp.configs = res.data
-                                    // })
+                                    await GetShortBookHotBooks.run({ templateName: data?.templateName, workDirection: wd?.workDirection, ...publicData }).then(res => {
+                                        if (res.data) {
+                                            let newData = res.data?.shortBookInfoAppVOS?.filter((item: any, index: number) => index < 5)
+                                            comp.configs = newData?.map((item: { bookId: any; }) => {
+                                                return { bookId: item.bookId, bookInfo: item }
+                                            })
+                                        }
+                                    })
                                     break;
                                 case "hot_category":
                                     await GetHotCategory.run({ templateName: data?.templateName, workDirection: wd?.workDirection, ...publicData }).then(res => {
-                                        if(res.data){
+                                        if (res.data) {
                                             comp.configs = res.data?.bookCategoryList?.map((item: { id: any; }) => {
                                                 return { categoryId: item.id, categoryInfo: item }
                                             })

+ 21 - 9
src/services/distributor/corpManage/index.tsx

@@ -1,19 +1,31 @@
 import { api } from '@/services/api';
 import { request } from '@umijs/max';
-type Page={
-    pageSize:number|string,
-    pageNum:number|string
+type Page = {
+  pageSize: number | string,
+  pageNum: number | string
 }
 
-interface Params extends Page{
-    distributorId?:string,//分销商ID
-    nickname?:string,//账号昵称
-    phoneNum?:string,//手机
+interface Params extends Page {
+  corpId?: string,//企微ID
+  corpName?: string,//企微名称
 }
 /**获取分销商账号列表 */
-export async function distributorAccountList(params:Params) {
-  return request(api+'/admin/distributorAccount/list', {
+export async function corpListOfPage(params: Params) {
+  return request(api + '/admin/corp/listOfPage', {
     method: 'GET',
     params
   });
+}
+/**授权 */
+export async function corpPreAuth() {
+  return request(api + '/admin/corp/preAuth', {
+    method: 'GET',
+  });
+}
+
+/**同步*/
+export async function corpSyncAll(corpId:any) {
+  return request(api + `/admin/corp/syncAll/${corpId}`, {
+    method: 'GET',
+  });
 }