shenwu 7 月之前
父节点
当前提交
27b879250b

+ 3 - 0
src/pages/MiniApp/BookManage/Long/formConfig.tsx

@@ -35,6 +35,9 @@ function formConfig(props: { paragraphList?: any[], enumList?: { [key: string]:
             title: '收费类型',
             dataIndex: 'paymentOption',
             valueType: 'radio',
+            convertValue:(value)=>{
+                return value?.toString()
+            },
             formItemProps: {
                 style: { marginBottom: 10 },
                 rules: [

+ 1 - 2
src/pages/MiniApp/CompConfig/DrawerBox/compConfig.tsx

@@ -66,11 +66,10 @@ export function CompConfig(props: Props) {
     }, [list])
     // 值变化
     const handelValues = (values: any, isDel?: boolean) => {
-        console.log("values",values)
         // 处理分类 书籍 需要的完整数据
         if(values){
             for (let config of values?.configs) {
-                if (config?.bookId) {
+                if (config?.bookId && typeof config.bookId !== "number") {
                     config.bookInfo = config.bookId
                     config.bookId = config.bookInfo.id
                 }

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

@@ -61,9 +61,6 @@ export function bannersConfig(pageList: any[]): ProFormColumnsType<any>[] {
                                         dataIndex: "bookId",
                                         title: '小说',
                                         hideInForm: bannerType != 0,
-                                        convertValue:(value)=>{
-                                            return value?.toString()
-                                        },
                                         formItemProps: {
                                             style: { marginBottom: 10 },
                                             rules: [

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

@@ -14,7 +14,7 @@ const DragItem = () => {
     const [isHovering, setIsHovering] = useState(false);
     const dropRef = useRef(null);
     const list = useMemo(() => {
-        let pageConfig = state.pageConfigList.find(page => page.pageUrl === state.activePage)
+        let pageConfig = state.pageConfigList?.find(page => page.pageUrl === state.activePage)
         let list: {
             appComponentId: number | string;
             componentType: string;

+ 6 - 5
src/pages/MiniApp/CompConfig/DrawerBox/index.tsx

@@ -36,17 +36,17 @@ const ModalForm = forwardRef((props: Props, ref) => {
     }, [initialState?.selectApp])
     // 获取当前小程序可配置的页面和组件
     useEffect(() => {
-        if(open){
+        if (open) {
             AppComponentConfigGetAppPageList.run(publicData).then(res => {
                 let page = res?.data?.find((page: { enabledComponent: any; }) => page.enabledComponent)
                 page && dispatch({ type: "setAll", params: { activePage: page?.pagePath, isWorkDirection: true } })
             })
         }
-    }, [publicData,open])
+    }, [publicData, open])
     // 编辑时替换模板名称
-    useEffect(()=>{
+    useEffect(() => {
         setTemplateName(state.templateName)
-    },[state.templateName])
+    }, [state.templateName])
     // close 方法,用于关闭 Drawer
     const close = () => {
         dispatch({
@@ -59,6 +59,7 @@ const ModalForm = forwardRef((props: Props, ref) => {
                 pageConfigList: []
             }
         })
+        setTemplateName("")
         setOpen(false); // 将 open 设置为 false,关闭 Drawer
     };
 
@@ -87,7 +88,7 @@ const ModalForm = forwardRef((props: Props, ref) => {
     }));
     return (
         <Drawer
-            title="新建配置"
+            title={templateName ? templateName + "配置" : "新建配置"}
             placement="right"
             open={open}
             onClose={close}

+ 2 - 2
src/pages/MiniApp/CompConfig/DrawerBox/pageList.tsx

@@ -79,7 +79,7 @@ const PageList = forwardRef((props: Props, ref) => {
                             item?.appComponentList?.filter((i: Item) => i.componentName === 'banners')?.map((comp: Item) => {
                                 let newComp = { ...comp, pagePath: item.pagePath }
                                 let appType = initialState?.selectApp?.appType || 0
-                                let pageConfig = state.pageConfigList.find(page => page.pageUrl === item.pagePath)
+                                let pageConfig = state.pageConfigList?.find(page => page.pageUrl === item.pagePath)
                                 let thePage = pageConfig?.workDirectionList?.find(page => page.workDirection == state.tabs)
                                 let list = thePage?.componentConfigList || []
                                 newComp.disabled = !!list.find(i => i.appComponentId == newComp.id)
@@ -96,7 +96,7 @@ const PageList = forwardRef((props: Props, ref) => {
                                 item?.appComponentList?.filter((i: Item) => i.componentName !== 'banners')?.map((comp: Item) => {
                                     let newComp = { ...comp, pagePath: item.pagePath }
                                     let appType = initialState?.selectApp?.appType || 0
-                                    let pageConfig = state.pageConfigList.find((page: { pageUrl: any; }) => page.pageUrl === item.pagePath)
+                                    let pageConfig = state.pageConfigList?.find((page: { pageUrl: any; }) => page.pageUrl === item.pagePath)
                                     let thePage = pageConfig?.workDirectionList?.find(page => page.workDirection == state.tabs)
                                     let list = thePage?.componentConfigList || []
                                     newComp.disabled = !!list.find(i => i.appComponentId == newComp.id)

+ 1 - 2
src/pages/MiniApp/CompConfig/components/hot_category.tsx

@@ -33,10 +33,9 @@ export function HotCategory(props: {
             appType: initialState?.selectApp?.appType || "",
             workDirection: state.tabs
         }
-    }, [initialState?.selectApp, initialState?.currentUser?.distributorId, state.index])
+    }, [initialState?.selectApp, initialState?.currentUser?.distributorId, state.index,state.tabs])
     let apiobj = useApi(initialState?.selectApp?.appCategory || 1)
     let getList = useAjax((params) => apiobj.getBookPageList(params))
-
     useEffect(() => {
         if (tag && tag !== prevTag && configs && configs.length > 0 && configs?.[0]?.categoryId) {
             getList.run({ ...publicData, categoryId: tag, pageNum: 1, pageSize: 8 }).then(res => {

+ 7 - 5
src/pages/MiniApp/CompConfig/index.tsx

@@ -41,7 +41,7 @@ const Page: React.FC = () => {
     let getList = useAjax((params) => appComponentConfigList(params))//获取模板列表
     let switchT = useAjax((params) => updateTemplate(params))//切换
     let delT = useAjax((params) => remove(params))//删除
-    const formRef = useRef<ProFormInstance>();
+    const formRef = useRef<any>();
     const DrawerBoxRef = useRef<{ close: () => void; openDrawer: () => void }>(null);
     let publicData = useMemo(() => {
         return {
@@ -97,10 +97,12 @@ const Page: React.FC = () => {
         });
     }
     // 编辑
-    const edit=(data:any)=>{
-        dispatch({type:'setAll',params:{templateName:data?.templateName,pageConfigList:data?.pageConfigList}})
+    const edit = (data: any) => {
+        console.log(" data?.templateName", data?.templateName,formRef.current[data?.templateName])
+        let that = formRef.current[data?.templateName]
+        dispatch({ type: 'setAll', params: { templateName: data?.templateName, pageConfigList: that?.pageConfigList } })
         DrawerBoxRef?.current?.openDrawer();
-        
+
     }
     return <PageContainer
         extra={getList?.data?.data?.length > 0 && <Button type="primary" onClick={DrawerBoxRef?.current?.openDrawer}><PlusOutlined />新增配置</Button>}
@@ -112,7 +114,7 @@ const Page: React.FC = () => {
                     return <Col key={item.templateName} style={{ cursor: 'pointer' }} onClick={() => { switchTemplate(item.templateName) }} >
                         <Card className={activeT === item.templateName ? styles.active : ""} style={{ background: activeT === item.templateName ? token.colorPrimaryBgHover : token.colorFillAlter }} hoverable>
                             <h3 style={{ fontSize: 16, fontWeight: 500, color: token.colorText, fontFamily: 'PingFang SC' }}>{item.templateName}</h3>
-                            <Template data={item} />
+                            <Template data={item} formRef={formRef}/>
                             <p style={{ marginTop: 20, color: token.colorTextSecondary, fontSize: 12 }}>{item.templateDescription}</p>
                             <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'end' }}>
                                 <Space>

+ 14 - 5
src/pages/MiniApp/CompConfig/template.tsx

@@ -9,6 +9,7 @@ import { HotBooks } from "./components/hot_books";
 import { HotCategory } from "./components/hot_category";
 import { useModel } from "@umijs/max";
 import { useToken } from "@ant-design/pro-components";
+import { kebabCase } from "lodash";
 type Config = {
     bannerType?: number,//banner类型; 0:小说 1:页面路径 banners组件使用
     activityPagePath?: string,//banner类型 1的时候使用页面路径
@@ -53,8 +54,8 @@ export function reducer(state: State, action: Action) {
             return state;
     }
 }
-export function Template(params: { data: any }) {
-    let { data } = params
+export function Template(params: { data: any, formRef: any }) {
+    let { data, formRef } = params
     let { token } = useToken()
     let { initialState } = useModel("@@initialState")
     // 接口公共参数
@@ -70,7 +71,7 @@ export function Template(params: { data: any }) {
         compAc: "",
         index: 0,
         activePage: "",
-        pageConfigList: data?.pageConfigList
+        pageConfigList: data?.pageConfigList//JSON.parse(JSON.stringify(data?.pageConfigList))
     })
     const list = useMemo(() => {
         let pageConfig = state?.pageConfigList?.find((page: { pageUrl: any; }) => page.pageUrl === state.activePage)
@@ -104,6 +105,7 @@ export function Template(params: { data: any }) {
                 pages?.length > 0 && dispatch({ type: "setAll", params: { activePage: pages[0].pagePath, isWorkDirection: true, pageList: pages } })
             }
         })
+
     }, [data])
     //api
     const GetShortBookHotBooks = useAjax((params) => getShortBookHotBooks(params))
@@ -114,7 +116,8 @@ export function Template(params: { data: any }) {
     useEffect(() => {
         async function getData() {
             if (state.pageConfigList) {
-                for (let page of state?.pageConfigList) {
+                let arr = state?.pageConfigList
+                for (let page of arr) {
                     for (let wd of page?.workDirectionList) {
                         for (let comp of wd?.componentConfigList) {
                             switch (comp?.componentType) {
@@ -146,10 +149,16 @@ export function Template(params: { data: any }) {
                         }
                     }
                 }
+                if( !formRef.current){
+                    formRef.current = {}
+                }
+                if(formRef){
+                    formRef.current[data.templateName] = state
+                }
             }
         }
         getData()
-    }, [])
+    }, [formRef])
     // 获取配置页面的列表
     return <Spin spinning={GetShortBookHotBooks?.loading || GetShortBookBanners?.loading || GetHotCategory?.loading || AppComponentConfigGetAppPageList?.loading}>
         <div className={styles.phone} onClick={(e) => {