shenwu 7 months ago
parent
commit
33398d6391

+ 7 - 0
src/components/bookSelect/drawer.less

@@ -0,0 +1,7 @@
+.addBtn{
+    width: calc(100vw / 30);
+    height: calc(100vw / 22.4);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}

+ 25 - 0
src/components/bookSelect/drawer.tsx

@@ -0,0 +1,25 @@
+import { PlusOutlined } from "@ant-design/icons"
+import { Button, Drawer } from "antd"
+import Book from '@/pages/MiniApp/BookManage/index'
+import { useState } from "react"
+import styles from './drawer.less'
+function BookSelectDrawer(props: { value?: any, onChange?: (v: any) => void }) {
+    let [open, setOpen] = useState(false)
+    return <div>
+        <div>
+            <Button type="dashed" onClick={() => { setOpen(true) }} className={styles.addBtn}>
+                <PlusOutlined style={{fontSize:20}}/>
+            </Button>
+        </div>
+        <Drawer
+            title={"小说选择"}
+            open={open}
+            footer={false}
+            width={"80%"}
+            onClose={() => { setOpen(false) }}
+        >
+            <Book {...props} />
+        </Drawer>
+    </div>
+}
+export default BookSelectDrawer

+ 7 - 3
src/pages/MiniApp/BookManage/Long/index.tsx

@@ -26,7 +26,11 @@ type DataItem = {
     name: string;
     name: string;
     state: string;
     state: string;
 };
 };
-const Page: React.FC = () => {
+type Props = {
+    value?: any,
+    onChange?: (v: any) => void
+}
+const Page: React.FC = (props: Props) => {
     let { initialState } = useModel("@@initialState")
     let { initialState } = useModel("@@initialState")
     let { state, getLabelAndClassList } = useModel('global')
     let { state, getLabelAndClassList } = useModel('global')
     let [open, setOpen] = useState<any>(null)//付费配置
     let [open, setOpen] = useState<any>(null)//付费配置
@@ -186,11 +190,11 @@ const Page: React.FC = () => {
             request={async (params) => {
             request={async (params) => {
                 return await getList.run(params)
                 return await getList.run(params)
             }}
             }}
-            columns={columns({ authList: state?.authList, labelList: state.labelList, categoryList: state.categoryList, enumList: state?.enumList, lookBook: lookBookList, closeForm, setWorkDirection })}
+            columns={columns({ authList: state?.authList, labelList: state.labelList, categoryList: state.categoryList, enumList: state?.enumList, lookBook: lookBookList, closeForm, setWorkDirection, isModal: !!props?.onChange })}
         />
         />
         {/* 付费配置 */}
         {/* 付费配置 */}
         <BetaSchemaForm<DataItem>
         <BetaSchemaForm<DataItem>
-           title={(isGlobalConfig ? "全局" : "《" + editValues?.bookName + "》") + "付费配置"}
+            title={(isGlobalConfig ? "全局" : "《" + editValues?.bookName + "》") + "付费配置"}
             formRef={formRef}
             formRef={formRef}
             open={open}
             open={open}
             onOpenChange={(b) => { !b && closeForm(b) }}
             onOpenChange={(b) => { !b && closeForm(b) }}

+ 3 - 2
src/pages/MiniApp/BookManage/Long/tableConfig.tsx

@@ -22,8 +22,8 @@ const brightColors = [
     "#FF69B4", // 热粉红色
     "#FF69B4", // 热粉红色
     "#FF1493"  // 深粉红色
     "#FF1493"  // 深粉红色
 ];
 ];
-export const columns = (props: { authList?: any[], labelList?: any[], enumList?: { [key: string]: any }, categoryList?: any[], lookBook: (data: any) => void, closeForm: (b: boolean, d: any) => void, setWorkDirection: (w: any) => void }): ProColumns<any>[] => {
-    let { authList, labelList, categoryList, enumList, lookBook, closeForm, setWorkDirection } = props
+export const columns = (props: { authList?: any[], labelList?: any[], enumList?: { [key: string]: any }, categoryList?: any[], lookBook: (data: any) => void, closeForm: (b: boolean, d: any) => void, setWorkDirection: (w: any) => void ,isModal:boolean}): ProColumns<any>[] => {
+    let { authList, labelList, categoryList, enumList, lookBook, closeForm, setWorkDirection,isModal } = props
     let { styles } = useStyles()
     let { styles } = useStyles()
     return enumList?.BOOK_STATUS ? [
     return enumList?.BOOK_STATUS ? [
         {
         {
@@ -195,6 +195,7 @@ export const columns = (props: { authList?: any[], labelList?: any[], enumList?:
             ellipsis: true,
             ellipsis: true,
             align: 'center',
             align: 'center',
             hideInSearch: true,
             hideInSearch: true,
+            hideInTable:isModal,
             render: (a: any, b: any) => {
             render: (a: any, b: any) => {
                 return <a onClick={() => { closeForm(true, b) }}>付费配置</a>
                 return <a onClick={() => { closeForm(true, b) }}>付费配置</a>
             }
             }

+ 3 - 3
src/pages/MiniApp/BookManage/Short/formConfig.tsx

@@ -90,7 +90,7 @@ function formConfig(props: { paragraphList?: any[], enumList?: { [key: string]:
                     },
                     },
                 ],
                 ],
             },
             },
-            hideInForm: paymentType[0] != 2 || isGlobalConfig,//单本书
+            hideInForm: paymentType[0] === 0 || isGlobalConfig,//单本书
             valueEnum: () => {
             valueEnum: () => {
                 return new Map(paragraphList?.map(item => [item.paragraphNo, item.content]))
                 return new Map(paragraphList?.map(item => [item.paragraphNo, item.content]))
             }
             }
@@ -137,7 +137,7 @@ function formConfig(props: { paragraphList?: any[], enumList?: { [key: string]:
             title: '收费金额',
             title: '收费金额',
             dataIndex: 'paymentAmount',
             dataIndex: 'paymentAmount',
             valueType: 'money',
             valueType: 'money',
-            hideInForm: paymentCategory[0] == 1,
+            hideInForm: paymentType[0] === 0 || paymentCategory[0] == 1,
             fieldProps: {
             fieldProps: {
                 addonAfter: "元",
                 addonAfter: "元",
             },
             },
@@ -155,7 +155,7 @@ function formConfig(props: { paragraphList?: any[], enumList?: { [key: string]:
             title: '收费书币',
             title: '收费书币',
             dataIndex: 'paymentCoin',
             dataIndex: 'paymentCoin',
             valueType: 'digit',
             valueType: 'digit',
-            hideInForm: paymentCategory[0] == 0,
+            hideInForm: paymentType[0] === 0 || paymentCategory[0] == 0,
             fieldProps: {
             fieldProps: {
                 addonAfter: "书币"
                 addonAfter: "书币"
             },
             },

+ 22 - 3
src/pages/MiniApp/BookManage/Short/index.tsx

@@ -25,13 +25,18 @@ type DataItem = {
     name: string;
     name: string;
     state: string;
     state: string;
 };
 };
-const Page: React.FC = () => {
+type Props = {
+    value?: any,
+    onChange?: (v: any) => void
+}
+const Page: React.FC = (props: Props) => {
     let { initialState } = useModel("@@initialState")
     let { initialState } = useModel("@@initialState")
     let { state, getLabelAndClassList } = useModel('global')
     let { state, getLabelAndClassList } = useModel('global')
     let [open, setOpen] = useState<any>(null)//付费配置
     let [open, setOpen] = useState<any>(null)//付费配置
     let [editValues, setEditValues] = useState<any>({})
     let [editValues, setEditValues] = useState<any>({})
     let paymentType = useState(0)//付费方式
     let paymentType = useState(0)//付费方式
     let paymentCategory = useState(0)//收费货币
     let paymentCategory = useState(0)//收费货币
+    const [editSelectedRow, setEditSelectedRow] = useState<any>(null); //小说列表选择
     let [isGlobalConfig, setIsGlobalConfig] = useState(false)//
     let [isGlobalConfig, setIsGlobalConfig] = useState(false)//
     let [workDirection, setWorkDirection] = useState<any>(null)
     let [workDirection, setWorkDirection] = useState<any>(null)
     const [openBook, setOpneBook] = useState<any>(null)//阅读小说
     const [openBook, setOpneBook] = useState<any>(null)//阅读小说
@@ -153,7 +158,18 @@ const Page: React.FC = () => {
             actionRef={actionRef}
             actionRef={actionRef}
             headerTitle={"小说列表"}
             headerTitle={"小说列表"}
             rowKey={(r) => r.bookId}
             rowKey={(r) => r.bookId}
-            rowSelection={{ alwaysShowAlert: true, hideSelectAll: true, columnWidth: 0, columnTitle: '', renderCell: () => null }}
+            // {alwaysShowAlert: true, hideSelectAll: true, columnWidth: 0, columnTitle: '', renderCell: () => null}
+            //多选
+            rowSelection={!!props?.onChange ? {
+                hideSelectAll: true,
+                type: 'radio',
+                selectedRowKeys: [props?.value?.bookId],
+                onSelect: (record, selected) => {
+                    // setEditSelectedRow(record)
+                    console.log(record)
+                    props?.onChange?.(record)
+                },
+            } : false}
             tableAlertRender={() => {
             tableAlertRender={() => {
                 let { paymentType, paymentOption, paymentCategory, paymentAmount, paymentCoin, beginPayNo } = globaleConfig?.data?.data || {}
                 let { paymentType, paymentOption, paymentCategory, paymentAmount, paymentCoin, beginPayNo } = globaleConfig?.data?.data || {}
                 let enumList: any = state?.enumList
                 let enumList: any = state?.enumList
@@ -196,9 +212,12 @@ const Page: React.FC = () => {
                 return newParams
                 return newParams
             }}
             }}
             request={async (params) => {
             request={async (params) => {
+                // if (props?.value) {
+                //     params = { ...params, bookId: props.value?.bookId }
+                // }
                 return await getList.run(params)
                 return await getList.run(params)
             }}
             }}
-            columns={columns({ authList: state?.authList, labelList: state.labelList, categoryList: state.categoryList, enumList: state?.enumList, lookBook, closeForm, setWorkDirection })}
+            columns={columns({ authList: state?.authList, labelList: state.labelList, categoryList: state.categoryList, enumList: state?.enumList, lookBook, closeForm, setWorkDirection, isModal: !!props?.onChange })}
         />
         />
         {/* 付费配置 */}
         {/* 付费配置 */}
         <BetaSchemaForm<DataItem>
         <BetaSchemaForm<DataItem>

+ 3 - 2
src/pages/MiniApp/BookManage/Short/tableConfig.tsx

@@ -26,8 +26,8 @@ const brightColors = [
     "#FF69B4", // 热粉红色
     "#FF69B4", // 热粉红色
     "#FF1493"  // 深粉红色
     "#FF1493"  // 深粉红色
 ];
 ];
-export const columns = (props: { authList?: any[], labelList?: any[], enumList?: { [key: string]: any }, categoryList?: any[], lookBook: (data: any) => void, closeForm: (b: boolean, d: any) => void, setWorkDirection: (w: any) => void }): ProColumns<any>[] => {
-    let { authList, labelList, categoryList, enumList, lookBook, closeForm, setWorkDirection } = props
+export const columns = (props: { authList?: any[], labelList?: any[], enumList?: { [key: string]: any }, categoryList?: any[], lookBook: (data: any) => void, closeForm: (b: boolean, d: any) => void, setWorkDirection: (w: any) => void ,isModal:boolean}): ProColumns<any>[] => {
+    let { authList, labelList, categoryList, enumList, lookBook, closeForm, setWorkDirection,isModal } = props
     let { styles } = useStyles()
     let { styles } = useStyles()
     return enumList?.BOOK_STATUS ? [
     return enumList?.BOOK_STATUS ? [
         {
         {
@@ -207,6 +207,7 @@ export const columns = (props: { authList?: any[], labelList?: any[], enumList?:
             ellipsis: true,
             ellipsis: true,
             align: 'center',
             align: 'center',
             hideInSearch: true,
             hideInSearch: true,
+            hideInTable:isModal,
             render: (a: any, b: any) => {
             render: (a: any, b: any) => {
                 return <a onClick={() => { closeForm(true, b) }}>付费配置</a>
                 return <a onClick={() => { closeForm(true, b) }}>付费配置</a>
             }
             }

+ 2 - 2
src/pages/MiniApp/BookManage/index.tsx

@@ -1,11 +1,11 @@
 import { useModel } from '@umijs/max'
 import { useModel } from '@umijs/max'
 import LongPage from './Long'
 import LongPage from './Long'
 import ShortPage from './Short'
 import ShortPage from './Short'
-function Index() {
+function Index(props?: any) {
     let { selectApp }: any = useModel("@@initialState", (model) => ({
     let { selectApp }: any = useModel("@@initialState", (model) => ({
         selectApp: model.initialState?.selectApp
         selectApp: model.initialState?.selectApp
     }))
     }))
     // 临时条件后期从selectApp中获取参数判断小程序是长篇还是短篇
     // 临时条件后期从selectApp中获取参数判断小程序是长篇还是短篇
-    return selectApp?.appCategory === 1? <LongPage /> : <ShortPage />
+    return selectApp?.appCategory === 1 ? <LongPage {...props} /> : <ShortPage {...props} />
 }
 }
 export default Index
 export default Index

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

@@ -4,6 +4,7 @@ import { ProFormColumnsType, ProFormInstance } from "@ant-design/pro-components"
 import styles from './index.less'
 import styles from './index.less'
 import { Select, Tooltip } from "antd";
 import { Select, Tooltip } from "antd";
 import BookSelect from "@/components/bookSelect";
 import BookSelect from "@/components/bookSelect";
+import BookSelectDrawer from "@/components/bookSelect/drawer";
 
 
 export function bannersConfig(pageList: any[]): ProFormColumnsType<any>[] {
 export function bannersConfig(pageList: any[]): ProFormColumnsType<any>[] {
     return [
     return [
@@ -35,7 +36,7 @@ export function bannersConfig(pageList: any[]): ProFormColumnsType<any>[] {
                             title: 'banner类型',
                             title: 'banner类型',
                             dataIndex: 'bannerType',
                             dataIndex: 'bannerType',
                             valueType: 'radio',
                             valueType: 'radio',
-                            convertValue:(value)=>{
+                            convertValue: (value) => {
                                 return value?.toString()
                                 return value?.toString()
                             },
                             },
                             valueEnum: { 0: { text: "小说" }, 1: { text: "活动" } },
                             valueEnum: { 0: { text: "小说" }, 1: { text: "活动" } },
@@ -220,6 +221,7 @@ export function hotBooksConfig(): ProFormColumnsType<any>[] {
                             },
                             },
                             renderFormItem(schema, config, form, action) {
                             renderFormItem(schema, config, form, action) {
                                 return <BookSelect />
                                 return <BookSelect />
+                                // return <BookSelectDrawer />
                             },
                             },
                         },
                         },
                         {
                         {
@@ -299,7 +301,7 @@ export function hotCategoryConfig(tags: any[], formRef: React.MutableRefObject<P
                                     colProps: {
                                     colProps: {
                                         span: 12
                                         span: 12
                                     },
                                     },
-                                    convertValue:(value)=>{
+                                    convertValue: (value) => {
                                         return value?.toString()
                                         return value?.toString()
                                     },
                                     },
                                     formItemProps: {
                                     formItemProps: {