|  | @@ -2,8 +2,8 @@ import { ActionType, BetaSchemaForm, PageContainer, ProFormInstance, ProTable }
 | 
	
		
			
				|  |  |  import { columns } from "./tableConfig"
 | 
	
		
			
				|  |  |  import { useAjax } from "@/Hook/useAjax"
 | 
	
		
			
				|  |  |  import { useModel } from "@umijs/max"
 | 
	
		
			
				|  |  | -import { shortBookInfoList, shortBookInfoParagraphList, shortBookInfoBookConfig, shortBookInfoConfig, shortBookInfoParagraphAllList } from "@/services/miniApp/bookManage"
 | 
	
		
			
				|  |  | -import { useEffect, useMemo, useRef, useState } from "react"
 | 
	
		
			
				|  |  | +import { shortBookInfoList, shortBookInfoParagraphList, shortBookInfoBookConfig, shortBookInfoConfig, shortBookInfoParagraphAllList, sysRechargeGetInfo, sysRechargeAddOrEdit } from "@/services/miniApp/bookManage"
 | 
	
		
			
				|  |  | +import { useCallback, useEffect, useMemo, useRef, useState } from "react"
 | 
	
		
			
				|  |  |  import { Drawer, message, Space, Tag } from "antd"
 | 
	
		
			
				|  |  |  import ReadText from "../components/readText"
 | 
	
		
			
				|  |  |  import formConfig from "./formConfig"
 | 
	
	
		
			
				|  | @@ -30,7 +30,9 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |      let { state, getLabelAndClassList } = useModel('global')
 | 
	
		
			
				|  |  |      let [open, setOpen] = useState<any>(null)//付费配置
 | 
	
		
			
				|  |  |      let [editValues, setEditValues] = useState<any>({})
 | 
	
		
			
				|  |  | -    let paymentType = useState([])
 | 
	
		
			
				|  |  | +    let paymentType = useState(0)//付费方式
 | 
	
		
			
				|  |  | +    let paymentCategory = useState(0)//收费货币
 | 
	
		
			
				|  |  | +    let [isGlobalConfig, setIsGlobalConfig] = useState(false)//
 | 
	
		
			
				|  |  |      let [workDirection, setWorkDirection] = useState<any>(null)
 | 
	
		
			
				|  |  |      const [openBook, setOpneBook] = useState<any>(null)//阅读小说
 | 
	
		
			
				|  |  |      let getList = useAjax((params) => shortBookInfoList(params), { type: 'table' })//获取书列表
 | 
	
	
		
			
				|  | @@ -38,22 +40,30 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |      let getParagraphAllList = useAjax((params) => shortBookInfoParagraphAllList(params))//获取全部段落
 | 
	
		
			
				|  |  |      let add = useAjax((params) => shortBookInfoBookConfig(params))//新增配置
 | 
	
		
			
				|  |  |      let configInfo = useAjax((params) => shortBookInfoConfig(params))//获取配置信息
 | 
	
		
			
				|  |  | +    let globaleConfig = useAjax((params) => sysRechargeGetInfo(params))//获取全局配置信息
 | 
	
		
			
				|  |  | +    let globaleAddOrEdit = useAjax((params) => sysRechargeAddOrEdit(params))//全局配置信息修改
 | 
	
		
			
				|  |  |      const formRef = useRef<ProFormInstance>();
 | 
	
		
			
				|  |  |      const actionRef = useRef<ActionType>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 获取标签和分类
 | 
	
		
			
				|  |  |      useEffect(() => {
 | 
	
		
			
				|  |  |          getLabelAndClassList({ workDirection })
 | 
	
		
			
				|  |  | +        getGlobalInfo()
 | 
	
		
			
				|  |  |      }, [workDirection])
 | 
	
		
			
				|  |  |      // 接口公共参数
 | 
	
		
			
				|  |  |      let publicData = useMemo(() => {
 | 
	
		
			
				|  |  |          return {
 | 
	
		
			
				|  |  | -            miniappId: initialState?.selectApp?.id || "",
 | 
	
		
			
				|  |  | +            appId: initialState?.selectApp?.id || "",
 | 
	
		
			
				|  |  |              distributorId: initialState?.currentUser?.distributorId,
 | 
	
		
			
				|  |  |              appType: initialState?.selectApp?.appType || ""
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }, [initialState?.selectApp, initialState?.currentUser?.distributorId])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    //获取全局收费配置
 | 
	
		
			
				|  |  | +    const getGlobalInfo = useCallback(() => {
 | 
	
		
			
				|  |  | +        globaleConfig.run(publicData).then(res => {
 | 
	
		
			
				|  |  | +            console.log(res)
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +    }, [publicData])
 | 
	
		
			
				|  |  |      // 看小说
 | 
	
		
			
				|  |  |      const lookBook = (params: any) => {
 | 
	
		
			
				|  |  |          let { id, pageNum, pageSize } = params
 | 
	
	
		
			
				|  | @@ -64,25 +74,53 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // 提交表单
 | 
	
		
			
				|  |  |      const submit = async (values: any) => {
 | 
	
		
			
				|  |  | -        if (editValues?.id) {
 | 
	
		
			
				|  |  | -            values.id = editValues?.id
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (editValues?.bookId) {
 | 
	
		
			
				|  |  | -            values.bookId = editValues?.bookId
 | 
	
		
			
				|  |  | +        let api = isGlobalConfig ? globaleAddOrEdit : add
 | 
	
		
			
				|  |  | +        let newValue = { ...values, ...publicData }
 | 
	
		
			
				|  |  | +        if (isGlobalConfig) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            if (editValues?.id) {
 | 
	
		
			
				|  |  | +                newValue.id = editValues?.id
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (editValues?.bookId) {
 | 
	
		
			
				|  |  | +                newValue.bookId = editValues?.bookId
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (values.paymentType === 0) {//假如免费,设置vip也免费
 | 
	
		
			
				|  |  | +                newValue.vipFree = true
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        add.run({ ...values, ...publicData }).then(res => {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        api.run(newValue).then(res => {
 | 
	
		
			
				|  |  |              if (res.code === 200) {
 | 
	
		
			
				|  |  | -                actionRef?.current?.reload()
 | 
	
		
			
				|  |  | +                if (isGlobalConfig) {
 | 
	
		
			
				|  |  | +                    getGlobalInfo()
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    actionRef?.current?.reload()
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  message.success("付费配置成功!")
 | 
	
		
			
				|  |  |                  closeForm(false)
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    // 全局配置弹窗
 | 
	
		
			
				|  |  | +    const closeGlobalForm = () => {
 | 
	
		
			
				|  |  | +        setIsGlobalConfig(true)
 | 
	
		
			
				|  |  | +        setOpen(true)//弹窗开启
 | 
	
		
			
				|  |  | +        let data = globaleConfig?.data?.data
 | 
	
		
			
				|  |  | +        setEditValues({ ...data })
 | 
	
		
			
				|  |  | +        paymentType[1](data?.paymentType || 0)
 | 
	
		
			
				|  |  | +        paymentCategory[1](data?.paymentCategory || 0)
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +            formRef?.current?.setFieldsValue({ ...data })
 | 
	
		
			
				|  |  | +        }, 100)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      // 关闭表单弹窗和重置表单内容
 | 
	
		
			
				|  |  |      const closeForm = (b: boolean, values?: any) => {
 | 
	
		
			
				|  |  |          if (!b) {
 | 
	
		
			
				|  |  |              setEditValues({})
 | 
	
		
			
				|  |  | -            paymentType[1]([])
 | 
	
		
			
				|  |  | +            paymentType[1](0)
 | 
	
		
			
				|  |  | +            paymentCategory[1](0)
 | 
	
		
			
				|  |  | +            setIsGlobalConfig(false)
 | 
	
		
			
				|  |  |              formRef?.current?.resetFields?.()
 | 
	
		
			
				|  |  |              setOpen(b)
 | 
	
		
			
				|  |  |          } else {
 | 
	
	
		
			
				|  | @@ -94,11 +132,11 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |                          // 获取书付费配置
 | 
	
		
			
				|  |  |                          configInfo.run({ bookId: values.bookId, ...publicData }).then(res => {
 | 
	
		
			
				|  |  |                              if (res.code === 200) {
 | 
	
		
			
				|  |  | -                                let paymentTypeArr = res.data?.paymentType?.map((i: string) => i + '')
 | 
	
		
			
				|  |  | -                                let data = { ...res.data, paymentType: paymentTypeArr }
 | 
	
		
			
				|  |  | -                                setEditValues(data)
 | 
	
		
			
				|  |  | -                                paymentType[1](paymentTypeArr)
 | 
	
		
			
				|  |  | -                                formRef?.current?.setFieldsValue(data)
 | 
	
		
			
				|  |  | +                                let data = { ...res.data }
 | 
	
		
			
				|  |  | +                                setEditValues({ ...data, bookName: values?.shortBookInfoVO?.bookName })
 | 
	
		
			
				|  |  | +                                paymentType[1](data?.paymentType || 0)
 | 
	
		
			
				|  |  | +                                paymentCategory[1](data?.paymentCategory || 0)
 | 
	
		
			
				|  |  | +                                formRef?.current?.setFieldsValue({ ...data, paymentType: data?.paymentType || 0 })
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          })
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -108,6 +146,7 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      return <PageContainer title={false}
 | 
	
		
			
				|  |  |          tabProps={{ type: 'card' }}
 | 
	
		
			
				|  |  | +        loading={globaleConfig?.loading}
 | 
	
		
			
				|  |  |      >
 | 
	
		
			
				|  |  |          <ProTable<any, any>
 | 
	
		
			
				|  |  |              params={publicData}
 | 
	
	
		
			
				|  | @@ -115,11 +154,23 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |              headerTitle={"小说列表"}
 | 
	
		
			
				|  |  |              rowKey={(r) => r.bookId}
 | 
	
		
			
				|  |  |              rowSelection={{ alwaysShowAlert: true, hideSelectAll: true, columnWidth: 0, columnTitle: '', renderCell: () => null }}
 | 
	
		
			
				|  |  | -            tableAlertRender={() => <Space>
 | 
	
		
			
				|  |  | -                <Tag  bordered={false} color="processing" style={{cursor:'pointer'}}>收费价格:短篇¥2/千字,中长篇¥2/千字<EditFilled /></Tag>
 | 
	
		
			
				|  |  | -                <Tag bordered={false} color="processing" style={{cursor:'pointer'}}>收费起始章节:短篇2,中长篇21<EditFilled /></Tag>
 | 
	
		
			
				|  |  | -                <Tag bordered={false} color="processing" style={{cursor:'pointer'}}>整本价格:短篇19.9元,中长篇99元<EditFilled /></Tag>
 | 
	
		
			
				|  |  | -            </Space>}
 | 
	
		
			
				|  |  | +            tableAlertRender={() => {
 | 
	
		
			
				|  |  | +                let { paymentType, paymentOption, paymentCategory, paymentAmount, paymentCoin, beginPayNo } = globaleConfig?.data?.data || {}
 | 
	
		
			
				|  |  | +                let enumList: any = state?.enumList
 | 
	
		
			
				|  |  | +                let PAYMENT_TYPE_Map: Map<any, any> = new Map(enumList?.PAYMENT_TYPE?.values?.map(({ value, description }: any) => [value, description]))
 | 
	
		
			
				|  |  | +                let PAYMENT_OPTION_Map: Map<any, any> = new Map(enumList?.PAYMENT_OPTION?.values?.map(({ value, description }: any) => [value, description]))
 | 
	
		
			
				|  |  | +                return <Tag bordered={false} style={{ cursor: 'pointer' }} onClick={closeGlobalForm}>
 | 
	
		
			
				|  |  | +                    <Space>
 | 
	
		
			
				|  |  | +                        <Tag bordered={false} color="processing" style={{ cursor: 'pointer' }}>收费类型:<span style={{ color: '#f64747' }}>{PAYMENT_TYPE_Map?.get(paymentType)}</span></Tag>
 | 
	
		
			
				|  |  | +                        <Tag bordered={false} color="processing" style={{ cursor: 'pointer' }}>付费起始段落/章节:<span style={{ color: "#f64747" }}>{beginPayNo}</span></Tag>
 | 
	
		
			
				|  |  | +                        {paymentType === 2 && <Tag bordered={false} color="processing" style={{ cursor: 'pointer' }}>段落/章节收费类型:<span style={{ color: '#f64747' }}>{PAYMENT_OPTION_Map?.get(paymentOption)}</span></Tag>}
 | 
	
		
			
				|  |  | +                        <Tag bordered={false} color="processing" style={{ cursor: 'pointer' }}>付费价格:
 | 
	
		
			
				|  |  | +                            <span style={{ color: "#f64747" }}>{paymentCategory === 0 && '¥'}{paymentCategory === 0 ? paymentAmount : paymentCoin}</span>
 | 
	
		
			
				|  |  | +                            {paymentCategory === 1 && '书币'}</Tag>
 | 
	
		
			
				|  |  | +                    </Space>
 | 
	
		
			
				|  |  | +                    <EditFilled />
 | 
	
		
			
				|  |  | +                </Tag>
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  |              tableAlertOptionRender={false}
 | 
	
		
			
				|  |  |              search={{
 | 
	
		
			
				|  |  |                  labelWidth: 90,
 | 
	
	
		
			
				|  | @@ -151,7 +202,7 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |          />
 | 
	
		
			
				|  |  |          {/* 付费配置 */}
 | 
	
		
			
				|  |  |          <BetaSchemaForm<DataItem>
 | 
	
		
			
				|  |  | -            title={"付费配置"}
 | 
	
		
			
				|  |  | +            title={(isGlobalConfig ? "全局" : "《" + editValues?.bookName + "》") + "付费配置"}
 | 
	
		
			
				|  |  |              formRef={formRef}
 | 
	
		
			
				|  |  |              open={open}
 | 
	
		
			
				|  |  |              onOpenChange={(b) => { !b && closeForm(b) }}
 | 
	
	
		
			
				|  | @@ -161,8 +212,8 @@ const Page: React.FC = () => {
 | 
	
		
			
				|  |  |              // grid={true}
 | 
	
		
			
				|  |  |              layout='horizontal'
 | 
	
		
			
				|  |  |              onFinish={submit}
 | 
	
		
			
				|  |  | -            columns={formConfig({ enumList: state?.enumList, paymentType, paragraphList: getParagraphAllList?.data?.data?.map((item: { paragraphInfo: any }) => item.paragraphInfo) })}
 | 
	
		
			
				|  |  | -            loading={add?.loading}
 | 
	
		
			
				|  |  | +            columns={formConfig({ isGlobalConfig, enumList: state?.enumList, paymentType, paymentCategory, paragraphList: getParagraphAllList?.data?.data?.map((item: { paragraphInfo: any }) => item.paragraphInfo) })}
 | 
	
		
			
				|  |  | +            loading={add?.loading || globaleAddOrEdit?.loading}
 | 
	
		
			
				|  |  |          />
 | 
	
		
			
				|  |  |          {/* 阅读小说 */}
 | 
	
		
			
				|  |  |          <Drawer
 |