| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- import { BetaSchemaForm, ProFormInstance } from "@ant-design/pro-components";
 
- import { useEffect, useMemo, useRef } from "react";
 
- import { bannersConfig, hotBooksConfig, hotCategoryConfig } from "./compFormConfig";
 
- import { useModel } from "@umijs/max";
 
- import { Button, Popconfirm } from "antd";
 
- import { useAjax } from "@/Hook/useAjax";
 
- import { queryCategoryList } from "@/services/global";
 
- import { Config } from "@/models/appPageConifg";
 
- type Props = {
 
-     pageList?: any[]
 
-     compName: "banners" | "hot_books" | "hot_category",
 
- }
 
- export function CompConfig(props: Props) {
 
-     let { pageList = [], compName } = props
 
-     const formRef = useRef<ProFormInstance>();
 
-     let { state, dispatch } = useModel('appPageConifg')
 
-     let QueryCategoryList = useAjax((params) => queryCategoryList(params))
 
-     // 获取分类列表
 
-     useEffect(() => {
 
-         if (compName === 'hot_category') {
 
-             QueryCategoryList.run({ workDirection: state.tabs })
 
-         }
 
-     }, [state.tabs, compName])
 
-     // 获取对应from设置
 
-     let columns = useMemo(() => {
 
-         switch (compName) {
 
-             case 'banners':
 
-                 return bannersConfig(pageList);
 
-             case "hot_books":
 
-                 return hotBooksConfig();
 
-             case "hot_category":
 
-                 return hotCategoryConfig(QueryCategoryList?.data?.data,formRef);
 
-         }
 
-     }, [compName, pageList, QueryCategoryList?.data?.data,formRef])
 
-     // 获取当前页面配置表
 
-     const list = useMemo(() => {
 
-         let pageConfig = state.pageConfigList.find(page => page.pageUrl === state.activePage)
 
-         let list: {
 
-             appComponentId: number | string;
 
-             componentType: string;
 
-             showRightButton?: boolean;
 
-             componentName?: string;
 
-             remark?: string;
 
-             configs?: Config[];
 
-         }[] = []
 
-         if (state.isWorkDirection) {
 
-             let thePage = pageConfig?.workDirectionList?.find(page => page.workDirection == state.tabs)
 
-             list = thePage?.componentConfigList || []
 
-         } else {
 
-             list = pageConfig?.workDirectionList?.[0].componentConfigList || []
 
-         }
 
-         return list
 
-     }, [state])
 
-  
 
-     // 提交表单
 
-     const submit = async (values: any) => {
 
-     }
 
-     // 初始化内容
 
-     useEffect(() => {
 
-         let thatConfig = list.find(item => item.componentType === compName)
 
-         console.log("初始化内容",thatConfig)
 
-         formRef.current?.setFieldsValue(thatConfig)
 
-     }, [list])
 
-     // 值变化
 
-     const handelValues = (values: any, isDel?: boolean) => {
 
-         console.log("values",values)
 
-         // 处理分类 书籍 需要的完整数据
 
-         if(values){
 
-             for (let config of values?.configs) {
 
-                 if (config?.bookId) {
 
-                     config.bookInfo = config.bookId
 
-                     config.bookId = config.bookInfo.id
 
-                 }
 
-                 if (config?.categoryId) {
 
-                     config.categoryInfo = QueryCategoryList?.data?.data?.find((item: { id: any; })=>item.id == config.categoryId) 
 
-                     config.categoryId = config.categoryInfo.id
 
-                 }
 
-                 if (config?.bookIds) {
 
-                     config.bookInfos = config.bookIds
 
-                     config.bookIds = config.bookInfos.map((item: { id: any; }) => item.id)
 
-                 }
 
-             }
 
-         }
 
-         // 找到当前的页面
 
-         let pageConfig = state.pageConfigList.find(page => page.pageUrl === state.activePage)
 
-         //找到当前选中的组件    
 
-         let thatConfig = list.find(item => item.componentType === compName)
 
-         // 修改组件的内容
 
-         if (thatConfig) {
 
-             thatConfig.configs = values ? values.configs : []
 
-             if(values?.componentName){
 
-                 thatConfig.componentName = values?.componentName
 
-                 thatConfig.showRightButton = values?.showRightButton
 
-             }
 
-         }
 
-         // 判断当前页面是否存在男女频,获取对应的页面配置列表
 
-         if (state.isWorkDirection) {
 
-             let thePage = pageConfig?.workDirectionList?.find(page => page.workDirection == state.tabs)
 
-             if (thePage) {
 
-                 // 删除的判断
 
-                 if (isDel) {
 
-                     thePage.componentConfigList = list?.filter(item => item.componentType !== compName)
 
-                 } else {
 
-                     thePage.componentConfigList = list
 
-                 }
 
-             }
 
-         } else {
 
-             if (pageConfig) {
 
-                 if (isDel) {
 
-                     pageConfig.workDirectionList[0].componentConfigList = list?.filter(item => item.componentType !== compName)
 
-                 } else {
 
-                     pageConfig.workDirectionList[0].componentConfigList = list
 
-                 }
 
-             }
 
-             pageConfig && (pageConfig.workDirectionList[0].componentConfigList = list)
 
-         }
 
-         // 修改保存数据到状态管理
 
-         dispatch({
 
-             type: 'setAll', params: {
 
-                 pageConfigList: state.pageConfigList,
 
-                 index: state.index + 1,
 
-                 compAc: isDel ? "" : state.compAc
 
-             }
 
-         })
 
-     }
 
-     return <BetaSchemaForm<any>
 
-         formRef={formRef}
 
-         layoutType={"Form"}
 
-         size="small"
 
-         colProps={{
 
-             span: 12,
 
-         }}
 
-         grid={true}
 
-         submitter={{
 
-             render: (props, doms) => {
 
-                 return [<Popconfirm key={compName + "del"} title="确定要删除此组件?" onConfirm={() => {
 
-                     handelValues(null, true)
 
-                 }}><Button danger>删除</Button></Popconfirm>, ...doms];
 
-             },
 
-         }}
 
-         onFinish={submit}
 
-         onReset={() => {
 
-             handelValues(null)
 
-         }}
 
-         columns={columns}
 
-         onValuesChange={(changedValues: any, values: any) => {
 
-             handelValues(values)
 
-         }}
 
-     />
 
- }
 
 
  |