wjx 5 月之前
父節點
當前提交
636f71ad1f
共有 31 個文件被更改,包括 171 次插入229 次删除
  1. 5 4
      src/app.tsx
  2. 2 3
      src/components/QueryForm/index.tsx
  3. 3 7
      src/components/QueryForm/queryFormNovel.tsx
  4. 31 34
      src/components/RightContent/index.tsx
  5. 4 4
      src/pages/iaaData/game/ocenaengine/adList/dayAd.tsx
  6. 5 6
      src/pages/iaaData/game/ocenaengine/adList/index.tsx
  7. 4 5
      src/pages/iaaData/game/ocenaengine/appCashTrendLTV/index.tsx
  8. 4 5
      src/pages/iaaData/game/ocenaengine/appCashTrendRetained/index.tsx
  9. 4 5
      src/pages/iaaData/game/ocenaengine/appCashTrendRoi/index.tsx
  10. 4 5
      src/pages/iaaData/game/ocenaengine/appEveryDayData/index.tsx
  11. 3 4
      src/pages/iaaData/game/ocenaengine/home/index.tsx
  12. 4 4
      src/pages/iaaData/game/tencent/adList/dayAd.tsx
  13. 5 6
      src/pages/iaaData/game/tencent/adList/index.tsx
  14. 4 5
      src/pages/iaaData/game/tencent/appCashAssay/index.tsx
  15. 4 5
      src/pages/iaaData/game/tencent/appCashRetained/index.tsx
  16. 4 5
      src/pages/iaaData/game/tencent/appCashTrend/index.tsx
  17. 4 5
      src/pages/iaaData/game/tencent/appEveryDayData/index.tsx
  18. 4 4
      src/pages/iaaData/game/tencent/dynamic/dayAd.tsx
  19. 6 6
      src/pages/iaaData/game/tencent/dynamic/index.tsx
  20. 14 30
      src/pages/iaaData/game/tencent/dynamic/tableConfig.tsx
  21. 12 28
      src/pages/iaaData/game/tencent/dynamic/tableConfigDay.tsx
  22. 3 5
      src/pages/iaaData/game/tencent/home/index.tsx
  23. 4 5
      src/pages/iaaData/game/tencent/pitcherEveryDay/index.tsx
  24. 4 4
      src/pages/iaaData/novel/tencent/adList/dayAd.tsx
  25. 5 6
      src/pages/iaaData/novel/tencent/adList/index.tsx
  26. 4 5
      src/pages/iaaData/novel/tencent/appEveryDayData/index.tsx
  27. 4 4
      src/pages/iaaData/novel/tencent/dynamic/dayAd.tsx
  28. 6 6
      src/pages/iaaData/novel/tencent/dynamic/index.tsx
  29. 3 4
      src/pages/iaaData/novel/tencent/home/index.tsx
  30. 4 5
      src/pages/iaaData/novel/tencent/pitcherEveryDay/index.tsx
  31. 4 5
      src/pages/iaaData/novel/tencent/pitcherEveryDayGroup/index.tsx

+ 5 - 4
src/app.tsx

@@ -55,8 +55,9 @@ export async function getInitialState(): Promise<{
     loading?: boolean,
     collapsed?: string,
     onCollapse?: (onCollapse: boolean) => void,
-    iaaApp?: string,
+    iaaApp?: number[],
     mediaPlatform?: string
+    productType?: string
 }> {
     // 如果是登录页面,不执行
     if (localStorage.getItem('Admin-Token')) {
@@ -217,17 +218,17 @@ const loopMenuItem = (menus: MenuDataItem[], mediaPlatform?: string, productType
 }
 
 
-export const layout = ({ initialState }: { initialState: { settings?: LayoutSettings; currentUser?: CurrentUser; menu?: any; loading: boolean, collapsed: string, onCollapse: any, mediaPlatform?: string, iaaApp?: string }; }): BasicLayoutProps => {
+export const layout = ({ initialState }: { initialState: { settings?: LayoutSettings; currentUser?: CurrentUser; menu?: any; loading: boolean, collapsed: string, onCollapse: any, mediaPlatform?: string, productType?: string }; }): BasicLayoutProps => {
 
     return {
         menu: {
             locale: false,//关闭国际化
             params: {//token变化重新获取
                 mediaPlatform: initialState?.mediaPlatform,
-                productType: initialState?.iaaApp?.split('||')?.[1]
+                productType: initialState?.productType
             },
             request: async () => {
-                return loopMenuItem(initialState?.menu?.data || [], initialState?.mediaPlatform, initialState?.iaaApp?.split('||')?.[1])
+                return loopMenuItem(initialState?.menu?.data || [], initialState?.mediaPlatform, initialState?.productType)
             },
         },
         rightContentRender: () => <RightContent />,

+ 2 - 3
src/components/QueryForm/index.tsx

@@ -63,8 +63,7 @@ const QueryForm: React.FC<Props> = (props) => {
 
     useEffect(() => {
         if (isPutUserIdList && initialState?.iaaApp) {
-            const [_, productType] = initialState.iaaApp.split('||')
-            getPutUserList.run({ productType }).then(res => {
+            getPutUserList.run({ productType: initialState?.productType }).then(res => {
                 if (res?.data) {
                     setPutUserList(Object.keys(res.data).map(key => ({ value: key, label: res.data[key] })))
                 }
@@ -73,7 +72,7 @@ const QueryForm: React.FC<Props> = (props) => {
         () => {
 
         }
-    }, [isPutUserIdList, initialState?.iaaApp])
+    }, [isPutUserIdList, initialState?.productType])
 
     const onFinish = (data: any) => {
         console.log('更新了字段---->', data);

+ 3 - 7
src/components/QueryForm/queryFormNovel.tsx

@@ -99,18 +99,14 @@ const QueryFormNovel: React.FC<Props> = (props) => {
     /**************************/
 
     useEffect(() => {
-        if ((isPutUserId || isPutUserIdList) && initialState?.iaaApp) {
-            const [_, productType] = initialState.iaaApp.split('||')
-            getPutUserList.run({ productType }).then(res => {
+        if ((isPutUserId || isPutUserIdList) && initialState?.productType) {
+            getPutUserList.run({ productType: initialState?.productType }).then(res => {
                 if (res?.data) {
                     setPutUserList(Object.keys(res.data).map(key => ({ value: key, label: res.data[key] })))
                 }
             })
         }
-        () => {
-
-        }
-    }, [isPutUserId, isPutUserIdList, initialState?.iaaApp])
+    }, [isPutUserId, isPutUserIdList, initialState?.productType])
 
     const onFinish = (data: any) => {
         console.log('更新了字段---->', data);

+ 31 - 34
src/components/RightContent/index.tsx

@@ -4,7 +4,7 @@ import { useModel } from 'umi';
 import Avatar from './AvatarDropdown';
 import styles from './index.less';
 import { exitFullScreen, requestFullScreen, isFull } from '@/utils/fullScreen'
-import { BellOutlined, UserOutlined } from '@ant-design/icons';
+import { BellOutlined, CloseOutlined, UserOutlined } from '@ant-design/icons';
 import { getAppListApi } from '@/services/iaaData';
 import { useAjax } from '@/Hook/useAjax';
 import { groupBy } from '@/utils/utils';
@@ -33,9 +33,8 @@ const GlobalHeaderRight: React.FC<{}> = () => {
         return null;
     }
     const [appData, setAppData] = useState<{ [x: string]: { [x: string]: any[] } }>({})
-    const [appList, setApplist] = useState<{ label: string, value: string, productType: string; mediaPlatform: string; icon?: string }[]>([])
+    const [appList, setApplist] = useState<{ label: string, value: number, productType: string; mediaPlatform: string; icon?: string }[]>([])
     const getAppList = useAjax(() => getAppListApi())
-    const [productType, setProductType] = useState<string>()
     const [isJr, setIsJr] = useState<boolean>(false)
     const [firstPath, setFirstPath] = useState<{ [x: string]: string }>()
 
@@ -135,7 +134,7 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                             'PRODUCT_TYPE_PLAYLET': ['playlet_tencent', 'playlet_ocenaengine'],
                         };
 
-                        let toData: { label: string, value: string, productType: string; mediaPlatform: string; icon?: string }[] = []
+                        let toData: { label: string, value: number, productType: string; mediaPlatform: string; icon?: string }[] = []
 
                         Object.keys(appTypeGroupList).forEach(productType => {
                             let data = groupBy(appTypeGroupList[productType], (item) => item.mediaPlatform, true) || {};
@@ -147,7 +146,7 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                                     delete data['MEDIA_PLATFORM_TENCENT'];
                                 } else {
                                     if (data['MEDIA_PLATFORM_TENCENT']) {
-                                        const tencentData = data['MEDIA_PLATFORM_TENCENT'].map((item: { name: any; id: string; productType: string; mediaPlatform: any; icon: any; }) => ({ label: item.name, value: item.id + '||' + item.productType, productType: item.productType, mediaPlatform: item.mediaPlatform, icon: item.icon }))
+                                        const tencentData = data['MEDIA_PLATFORM_TENCENT'].map((item: { name: any; id: number; productType: string; mediaPlatform: any; icon: any; }) => ({ label: item.name, value: item.id, productType: item.productType, mediaPlatform: item.mediaPlatform, icon: item.icon }))
                                         data['MEDIA_PLATFORM_TENCENT'] = tencentData
                                         toData.push(...tencentData)
                                     }
@@ -156,7 +155,7 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                                     delete data['MEDIA_PLATFORM_OCENAENGINE'];
                                 } else {
                                     if (data['MEDIA_PLATFORM_OCENAENGINE']) {
-                                        const ocenaengineData = data['MEDIA_PLATFORM_OCENAENGINE'].map((item: { name: any; id: string; productType: string; mediaPlatform: any; icon: any; }) => ({ label: item.name, value: item.id + '||' + item.productType, productType: item.productType, mediaPlatform: item.mediaPlatform, icon: item.icon }))
+                                        const ocenaengineData = data['MEDIA_PLATFORM_OCENAENGINE'].map((item: { name: any; id: number; productType: string; mediaPlatform: any; icon: any; }) => ({ label: item.name, value: item.id, productType: item.productType, mediaPlatform: item.mediaPlatform, icon: item.icon }))
                                         data['MEDIA_PLATFORM_OCENAENGINE'] = ocenaengineData
                                         toData.push(...ocenaengineData)
                                     }
@@ -169,25 +168,18 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                         });
                         console.log(appDataList, toData, firstPath)
                         setAppData(appDataList)
-                        const app = initialState?.iaaApp
-                        let iaaApp: string;
-                        let mediaPlatform: string;
-                        const d = toData.find(item => item.value === app)
-                        if (app && d) {
-                            iaaApp = app
-                            mediaPlatform = d.mediaPlatform
-                        } else {
-                            iaaApp = toData?.find(item => item.productType === 'PRODUCT_TYPE_GAME')?.value || toData?.[0].value || undefined as any
+                        if (toData?.length) {
+                            let iaaAppData: any;
+                            let mediaPlatform: string;
+                            iaaAppData = toData?.find(item => item.productType === 'PRODUCT_TYPE_GAME') || toData?.[0] || undefined as any
                             mediaPlatform = toData?.[0].mediaPlatform || undefined as any
+                            const productType = iaaAppData?.productType
+                            sessionStorage.setItem('mediaPlatform', mediaPlatform)
+                            setInitialState({ ...initialState, iaaApp: iaaAppData?.value ? [iaaAppData?.value] : [], productType, mediaPlatform })
+                            setApplist(toData)
+                            setFirstPath(firstPath)
+                            haveTo(mediaPlatform as any, productType as any, firstPath)
                         }
-                        const productType = iaaApp ? iaaApp.split('||')?.[1] : undefined
-                        // haveTo(mediaPlatform as any)
-                        sessionStorage.setItem('mediaPlatform', mediaPlatform)
-                        setProductType(productType)
-                        setInitialState({ ...initialState, iaaApp, mediaPlatform })
-                        setApplist(toData)
-                        setFirstPath(firstPath)
-                        haveTo(mediaPlatform as any, productType as any, firstPath)
                     } else {
                         message.error('没有菜单')
                     }
@@ -273,10 +265,9 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                         let firstNewApp = newApplist[0]
                         sessionStorage.setItem('mediaPlatform', firstNewApp.mediaPlatform)
                         firstNewApp.mediaPlatform && haveTo(newApplist?.[0]?.mediaPlatform as any, type as any);
-                        setInitialState({ ...initialState, iaaApp: firstNewApp.value, mediaPlatform: firstNewApp.mediaPlatform })
-                        setProductType(type)
+                        setInitialState({ ...initialState, iaaApp: [firstNewApp.value], productType: type, mediaPlatform: firstNewApp.mediaPlatform })
                     }}
-                    value={productType}
+                    value={initialState?.productType}
                     options={Object.keys(appData).map(key => ({ label: PRODUCT_TYPE[key as keyof typeof PRODUCT_TYPE], value: key }))}
                 />
                 <Select
@@ -287,27 +278,33 @@ const GlobalHeaderRight: React.FC<{}> = () => {
                         (option?.label as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
                     }
                     onChange={(type) => {
-                        let newApplist = appList.filter(item => item.productType === productType).filter(item => item.mediaPlatform === type)
+                        let newApplist = appList.filter(item => item.productType === initialState?.productType).filter(item => item.mediaPlatform === type)
                         sessionStorage.setItem('mediaPlatform', type)
-                        haveTo(type as any, productType as any)
-                        setInitialState({ ...initialState, iaaApp: newApplist?.[0]?.value, mediaPlatform: type })
+                        haveTo(type as any, initialState?.productType as any)
+                        setInitialState({ ...initialState, iaaApp: [newApplist?.[0]?.value], mediaPlatform: type })
                     }}
                     value={initialState?.mediaPlatform}
-                    options={(productType && appData?.[productType]) ? Object.keys(appData?.[productType]).map(key => ({ label: MediaPlatform[key as keyof typeof MediaPlatform], value: key })) : []}
+                    options={(initialState?.productType && appData?.[initialState?.productType]) ? Object.keys(appData?.[initialState?.productType]).map(key => ({ label: MediaPlatform[key as keyof typeof MediaPlatform], value: key })) : []}
                 />
                 <Select
                     showSearch
-                    style={{ width: 200, marginLeft: 10 }}
+                    style={{ minWidth: 200, marginLeft: 10 }}
                     placeholder={'请选择应用'}
                     filterOption={(input, option) => (option?.name as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                     value={initialState?.iaaApp}
-                    onChange={(e) => setInitialState({ ...initialState, iaaApp: e })}
+                    onChange={(e) => {
+                        if (e?.length > 0)
+                            setInitialState({ ...initialState, iaaApp: e })
+                    }}
                     loading={getAppList.loading}
+                    mode="multiple"
+                    maxTagCount={1}
+                    removeIcon={<CloseOutlined style={{ color: '#000' }} />}
                 >
-                    {appList.filter(item => item.productType === productType).filter(item => item.mediaPlatform === initialState?.mediaPlatform).map(item => {
+                    {appList.filter(item => item.productType === initialState?.productType).filter(item => item.mediaPlatform === initialState?.mediaPlatform).map(item => {
                         return <Select.Option key={item.value} value={item.value} name={item.label}>
                             <Space align='center'>
-                                <AntdAvatar shape="square" style={{ marginBottom: 4 }} size={24} icon={<UserOutlined />} src={item?.icon} />
+                                <AntdAvatar shape="square" style={{ marginBottom: 4 }} size={16} icon={<UserOutlined />} src={item?.icon} />
                                 <span>{item.label}</span>
                             </Space>
                         </Select.Option>

+ 4 - 4
src/pages/iaaData/game/ocenaengine/adList/dayAd.tsx

@@ -13,7 +13,8 @@ interface Props {
         costDayBegin?: string,
         costDayEnd?: string
     }
-    iaaApp: string,
+    appId: number[],
+    productType: string,
     adName: string,
     promotionId?: number
     onClose?: () => void
@@ -24,7 +25,7 @@ interface Props {
  * 广告每日监控
  * @returns 
  */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClose, visible }) => {
+const DayAd: React.FC<Props> = ({ appId, productType, adName, queryForm, promotionId, onClose, visible }) => {
 
     /***********************************/
     const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
@@ -34,7 +35,6 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
 
     useEffect(() => {
         let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
         if (promotionId) {
             params.adId = promotionId
         }
@@ -46,7 +46,7 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
             delete params?.costDayEnd
         }
         getByteAdEveryList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, queryForm, data, date, iaaApp])
+    }, [promotionId, queryForm, data, date, appId, productType])
 
     return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯广告每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
         <TablePro

+ 5 - 6
src/pages/iaaData/game/ocenaengine/adList/index.tsx

@@ -40,10 +40,9 @@ const AdList: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAdList.run({ ...queryForm, appId, productType })
-            getByteAdTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; accountId: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteAdList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getByteAdTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; accountId: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -55,7 +54,7 @@ const AdList: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     const dayHandle = (data: any) => {
         setVisible(true)
@@ -209,7 +208,7 @@ const AdList: React.FC = () => {
             }}
         />
 
-        {visible && <DayAd iaaApp={initialState?.iaaApp as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
+        {visible && <DayAd appId={initialState?.iaaApp as number[]} productType={initialState?.productType as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
         {failVisible && <Modal
             title={<strong>报错信息</strong>}
             open={failVisible}

+ 4 - 5
src/pages/iaaData/game/ocenaengine/appCashTrendLTV/index.tsx

@@ -24,10 +24,9 @@ const AppCashTrendRoi: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAppTrendLtvList.run({ ...queryForm, appId, productType })
-            getByteAppTrendLtvTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteAppTrendLtvList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getByteAppTrendLtvTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -40,7 +39,7 @@ const AppCashTrendRoi: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/ocenaengine/appCashTrendRetained/index.tsx

@@ -30,10 +30,9 @@ const AppCashTrendRetained: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAppTrendRetainedList.run({ ...queryForm, appId, productType })
-            getByteAppTrendRetainedTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteAppTrendRetainedList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getByteAppTrendRetainedTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -46,7 +45,7 @@ const AppCashTrendRetained: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/ocenaengine/appCashTrendRoi/index.tsx

@@ -28,10 +28,9 @@ const AppCashTrendRoi: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAppTrendRoiList.run({ ...queryForm, appId, productType })
-            getByteAppTrendRoiTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteAppTrendRoiList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getByteAppTrendRoiTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -44,7 +43,7 @@ const AppCashTrendRoi: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/ocenaengine/appEveryDayData/index.tsx

@@ -28,10 +28,9 @@ const AppEveryDayData: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteAppList.run({ ...queryForm, appId, productType })
-            getByteAppTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteAppList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getByteAppTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const AppEveryDayData: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 3 - 4
src/pages/iaaData/game/ocenaengine/home/index.tsx

@@ -28,9 +28,8 @@ const Home: React.FC = () => {
     /********************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getByteHomePage.run({ ...queryForm, appId, productType }).then(res => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getByteHomePage.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then(res => {
                 if (res?.data) {
                     let newCostLine: HOME.ConsumptionData = { legendName: '每日真实消耗' }
                     let newAdMonRevenue: HOME.ConsumptionData = { legendName: '广告收入(广告位总数据(账面))' }
@@ -43,7 +42,7 @@ const Home: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
 
     return <Space direction="vertical" style={{ width: '100%' }}>

+ 4 - 4
src/pages/iaaData/game/tencent/adList/dayAd.tsx

@@ -13,7 +13,8 @@ interface Props {
         costDayBegin?: string,
         costDayEnd?: string
     }
-    iaaApp: string,
+    appId: number[],
+    productType: string,
     adName: string,
     promotionId?: number
     onClose?: () => void
@@ -24,7 +25,7 @@ interface Props {
  * 广告每日监控
  * @returns 
  */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClose, visible }) => {
+const DayAd: React.FC<Props> = ({ appId, productType, adName, queryForm, promotionId, onClose, visible }) => {
 
     /***********************************/
     const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
@@ -34,7 +35,6 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
 
     useEffect(() => {
         let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
         if (promotionId) {
             params.promotionId = promotionId
         }
@@ -46,7 +46,7 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
             delete params?.costDayEnd
         }
         getGDTDailyList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, queryForm, data, date, iaaApp])
+    }, [promotionId, queryForm, data, date, appId, productType])
 
     return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯广告每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
         <TablePro

+ 5 - 6
src/pages/iaaData/game/tencent/adList/index.tsx

@@ -41,10 +41,9 @@ const TencentIaaAd: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getGDTList.run({ ...queryForm, appId, productType })
-            getGDTTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; accountId: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getGDTList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getGDTTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; accountId: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -56,7 +55,7 @@ const TencentIaaAd: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     const dayHandle = (data: any) => {
         setVisible(true)
@@ -261,7 +260,7 @@ const TencentIaaAd: React.FC = () => {
             }}
         />
 
-        {visible && <DayAd iaaApp={initialState?.iaaApp as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
+        {visible && <DayAd appId={initialState?.iaaApp as number[]} productType={initialState?.productType as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={queryForm} promotionId={promotionId} />}
 
         {/* 修改广告 */}
         {updateData.visible && <UpdateAd3

+ 4 - 5
src/pages/iaaData/game/tencent/appCashAssay/index.tsx

@@ -27,10 +27,9 @@ const AppCashAssay: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppAnalysisList.run({ ...queryForm, appId, productType })
-            getAppAnalysisTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getAppAnalysisList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getAppAnalysisTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const AppCashAssay: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/tencent/appCashRetained/index.tsx

@@ -28,10 +28,9 @@ const AppCashTrend: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTrendList.run({ ...queryForm, appId, productType })
-            getAppTrendTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getAppTrendList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getAppTrendTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -44,7 +43,7 @@ const AppCashTrend: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/tencent/appCashTrend/index.tsx

@@ -28,10 +28,9 @@ const AppCashTrend: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTrendList.run({ ...queryForm, appId, productType })
-            getAppTrendTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getAppTrendList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getAppTrendTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; dt: string, costDayBegin: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -44,7 +43,7 @@ const AppCashTrend: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/game/tencent/appEveryDayData/index.tsx

@@ -28,10 +28,9 @@ const AppEveryDayData: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getAppTxEveryDayList.run({ ...queryForm, appId, productType })
-            getAppTxEveryDayTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getAppTxEveryDayList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getAppTxEveryDayTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const AppEveryDayData: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 4
src/pages/iaaData/game/tencent/dynamic/dayAd.tsx

@@ -13,7 +13,8 @@ interface Props {
         costDayBegin?: string,
         costDayEnd?: string
     }
-    iaaApp: string,
+    appId: number[],
+    productType: string,
     adName: string,
     promotionId?: number
     dynamicCreativeId?: number
@@ -25,7 +26,7 @@ interface Props {
  * 广告每日监控
  * @returns 
  */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynamicCreativeId, onClose, visible }) => {
+const DayAd: React.FC<Props> = ({ appId, productType, adName, queryForm, promotionId, dynamicCreativeId, onClose, visible }) => {
 
     /***********************************/
     const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
@@ -35,7 +36,6 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynami
 
     useEffect(() => {
         let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
         if (promotionId) {
             params.promotionId = promotionId
         }
@@ -50,7 +50,7 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynami
             delete params?.costDayEnd
         }
         getGDTDynamicDayList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, dynamicCreativeId, queryForm, data, date, iaaApp])
+    }, [promotionId, dynamicCreativeId, queryForm, data, date, appId, productType])
 
     return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯创意每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
         <TablePro

+ 6 - 6
src/pages/iaaData/game/tencent/dynamic/index.tsx

@@ -40,10 +40,9 @@ const Dynamic: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getDynamicList.run({ ...queryForm, appId, productType })
-            getDynamicTotal.run({ ...queryForm, appId, productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getDynamicList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getDynamicTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.dynamicCreativeId = 1
@@ -55,7 +54,7 @@ const Dynamic: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     const dayHandle = (data: any) => {
         setVisible(true)
@@ -214,7 +213,8 @@ const Dynamic: React.FC = () => {
         />
 
         {visible && <DayAd
-            iaaApp={initialState?.iaaApp as string}
+            appId={initialState?.iaaApp as number[]} 
+            productType={initialState?.productType as string}
             adName={adName}
             visible={visible}
             onClose={() => { setVisible(false); setPromotionId(undefined); setDynamicCreativeId(undefined) }}

+ 14 - 30
src/pages/iaaData/game/tencent/dynamic/tableConfig.tsx

@@ -122,71 +122,55 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     </div>
                 },
                 {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 21, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
+                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 21, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, sorter: true,
+                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '曝光量', dataIndex: 'viewCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 24, sorter: true,
+                    title: '曝光量', dataIndex: 'viewCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 25, sorter: true,
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 24, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
+                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 25, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '腾讯创意基本信息', align: 'center', width: 65, default: 27, sorter: true,
+                    title: '转化目标', dataIndex: 'convertTarget', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '腾讯创意基本信息', align: 'center', width: 65, default: 28, sorter: true,
+                    title: '转化目标量', dataIndex: 'conversionsCount', label: '腾讯创意基本信息', align: 'center', width: 65, default: 27, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '腾讯创意基本信息', align: 'center', width: 65, default: 29, sorter: true,
+                    title: '转化目标成本', dataIndex: 'convertCost', label: '腾讯创意基本信息', align: 'center', width: 65, default: 28, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 30, sorter: true,
+                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 29, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '腾讯创意基本信息', align: 'center', width: 80, default: 31, sorter: true,
+                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '腾讯创意基本信息', align: 'center', width: 80, default: 30, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '腾讯创意基本信息', align: 'center', width: 80, default: 32, sorter: true,
+                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '腾讯创意基本信息', align: 'center', width: 80, default: 31, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 33, sorter: true,
+                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 32, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯创意基本信息', width: 150, default: 34,
+                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯创意基本信息', width: 150, default: 33,
                     render: (a: any, b: any) => {
                         if (b?.accountId === '总计') {
                             return '--'
@@ -560,7 +544,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '操作',
             data: [
                 {
-                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
+                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 34,
                     render: (_: number, b: any) => {
                         if (b?.accountId === '总计') return '--'
                         return <Space>

+ 12 - 28
src/pages/iaaData/game/tencent/dynamic/tableConfigDay.tsx

@@ -120,67 +120,51 @@ function columns12(): { label: string, fieldSHow?: { label: string, saveField: s
                     </div>
                 },
                 {
-                    title: '广告总消耗', dataIndex: 'totalCost', label: '腾讯创意基本信息', align: 'center', width: 85, default: 21, sorter: true,
-                    className: 'padding_0',
-                    render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
-                        <Progress
-                            strokeColor={{
-                                from: '#10c1e9',
-                                to: '#6892d0',
-                            }}
-                            status="active"
-                            showInfo={false}
-                            percent={a ? a / 20000 * 100 : 0}
-                        />
-                        <span style={{ position: 'absolute', left: 0, top: 2, bottom: 0, right: 0, padding: '0 5px' }}><Statistic value={a || 0} valueStyle={a >= 20000 ? { color: '#000', fontWeight: 500 } : { fontWeight: 500 }} /></span>
-                    </div>
-                },
-                {
-                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
+                    title: '点击量', dataIndex: 'validClickCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 21, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, sorter: true,
+                    title: '点击率', dataIndex: 'ctr', label: '腾讯创意基本信息', align: 'center', width: 70, default: 22, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '曝光量', dataIndex: 'viewCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 24, sorter: true,
+                    title: '曝光量', dataIndex: 'viewCount', label: '腾讯创意基本信息', align: 'center', width: 70, default: 23, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 25, sorter: true,
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '腾讯创意基本信息', align: 'right', width: 65, default: 24, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 26, sorter: true,
+                    title: '点击均价', dataIndex: 'cpc', label: '腾讯创意基本信息', align: 'center', width: 65, default: 25, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
+                    title: '转化目标', dataIndex: 'convertTarget', label: '基本信息', align: 'center', width: 65, default: 26, sorter: true,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
+                    title: '转化目标量', dataIndex: 'conversionsCount', label: '基本信息', align: 'center', width: 65, default: 27, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 29, sorter: true,
+                    title: '转化目标成本', dataIndex: 'convertCost', label: '基本信息', align: 'center', width: 65, default: 28, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 30, sorter: true,
+                    title: '转化目标率', dataIndex: 'convertRate', label: '腾讯创意基本信息', align: 'center', width: 70, default: 29, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '基本信息', align: 'center', width: 80, default: 31, sorter: true,
+                    title: '小游戏注册人数', dataIndex: 'miniGameRegisterUsers', label: '基本信息', align: 'center', width: 80, default: 30, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 32, sorter: true,
+                    title: '小游戏注册成本', dataIndex: 'miniGameRegisterCost', label: '基本信息', align: 'center', width: 80, default: 31, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 33, sorter: true,
+                    title: '小游戏注册率', dataIndex: 'miniGameRegisterRate', label: '腾讯创意基本信息', align: 'center', width: 75, default: 32, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 }
             ]

+ 3 - 5
src/pages/iaaData/game/tencent/home/index.tsx

@@ -8,7 +8,6 @@ import { getGDTHomePageApi } from "@/services/iaaData"
 import useEcharts from "@/Hook/useEcharts"
 
 
-
 /**
  * 游戏腾讯 首页
  * @returns 
@@ -28,9 +27,8 @@ const Home: React.FC = () => {
     /********************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getGDTHomePage.run({ ...queryForm, appId, productType }).then(res => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getGDTHomePage.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then(res => {
                 if (res?.data) {
                     let newCostLine: HOME.ConsumptionData = { legendName: '消耗' }
                     let newAdMonRevenue: HOME.ConsumptionData = { legendName: '广告变现金额' }
@@ -43,7 +41,7 @@ const Home: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
 
     return <Space direction="vertical" style={{ width: '100%' }}>

+ 4 - 5
src/pages/iaaData/game/tencent/pitcherEveryDay/index.tsx

@@ -29,10 +29,9 @@ const PitcherEveryDay: React.FC = () => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getPutUserTxEveryDayList.run({ ...queryForm, appId, productType })
-            getPutUserTxEveryDayTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; pitcher: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getPutUserTxEveryDayList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getPutUserTxEveryDayTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; pitcher: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -44,7 +43,7 @@ const PitcherEveryDay: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 4
src/pages/iaaData/novel/tencent/adList/dayAd.tsx

@@ -13,7 +13,8 @@ interface Props {
         costDayBegin?: string,
         costDayEnd?: string
     }
-    iaaApp: string,
+    appId: number[],
+    productType: string,
     adName: string,
     promotionId?: number
     onClose?: () => void
@@ -25,7 +26,7 @@ interface Props {
  * 广告每日监控
  * @returns 
  */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClose, visible, configName }) => {
+const DayAd: React.FC<Props> = ({ appId, productType, adName, queryForm, promotionId, onClose, visible, configName }) => {
 
     /***********************************/
     const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
@@ -35,7 +36,6 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
 
     useEffect(() => {
         let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
         if (promotionId) {
             params.adgroupId = promotionId
         }
@@ -47,7 +47,7 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, onClos
             delete params?.costDayEnd
         }
         getGDTDailyList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, queryForm, data, date, iaaApp])
+    }, [promotionId, queryForm, data, date, appId, productType])
 
     return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯广告每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
         <TablePro

+ 5 - 6
src/pages/iaaData/novel/tencent/adList/index.tsx

@@ -44,13 +44,12 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
 
     useEffect(() => {
         getList()
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     const getList = () => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getGDTList.run({ ...queryForm, appId, productType })
-            getGDTTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; accountId: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getGDTList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getGDTTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; accountId: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -300,7 +299,7 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
             }}
         />
 
-        {visible && <DayAd configName={dayConfigName} iaaApp={initialState?.iaaApp as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={{ costDayBegin: queryForm?.dataTimeMin, costDayEnd: queryForm?.dataTimeMax }} promotionId={promotionId} />}
+        {visible && <DayAd configName={dayConfigName} appId={initialState?.iaaApp as number[]} productType={initialState?.productType as string} adName={adName} visible={visible} onClose={() => { setVisible(false); setPromotionId(undefined) }} queryForm={{ costDayBegin: queryForm?.dataTimeMin, costDayEnd: queryForm?.dataTimeMax }} promotionId={promotionId} />}
 
         {/* 修改广告 */}
         {updateData.visible && <UpdateAd3

+ 4 - 5
src/pages/iaaData/novel/tencent/appEveryDayData/index.tsx

@@ -28,10 +28,9 @@ const AppEveryDayData: React.FC<{ configName?: string }> = ({ configName }) => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getNovelAppList.run({ ...queryForm, appId, productType })
-            getNovelAppTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; day: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getNovelAppList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getNovelAppTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; day: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const AppEveryDayData: React.FC<{ configName?: string }> = ({ configName }) => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 4
src/pages/iaaData/novel/tencent/dynamic/dayAd.tsx

@@ -13,7 +13,8 @@ interface Props {
         dataTimeMin?: string,
         dataTimeMax?: string
     }
-    iaaApp: string,
+    appId: number[],
+    productType: string,
     adName: string,
     promotionId?: number
     dynamicCreativeId?: number
@@ -26,7 +27,7 @@ interface Props {
  * 广告每日监控
  * @returns 
  */
-const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynamicCreativeId, onClose, visible, configName }) => {
+const DayAd: React.FC<Props> = ({ appId, productType, adName, queryForm, promotionId, dynamicCreativeId, onClose, visible, configName }) => {
 
     /***********************************/
     const [data, setData] = useState<{ pageSize: number, pageNum: number, sortFiled?: string, sortType?: string }>({ pageNum: 1, pageSize: 30 })
@@ -36,7 +37,6 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynami
 
     useEffect(() => {
         let params: any = {}
-        const [appId, productType] = iaaApp.split('||')
         if (promotionId) {
             params.adgroupId = promotionId
         }
@@ -51,7 +51,7 @@ const DayAd: React.FC<Props> = ({ iaaApp, adName, queryForm, promotionId, dynami
             delete params?.costDayEnd
         }
         getGDTDynamicDayList.run({ ...params, ...data, appId, productType })
-    }, [promotionId, dynamicCreativeId, queryForm, data, date, iaaApp])
+    }, [promotionId, dynamicCreativeId, queryForm, data, date, appId, productType])
 
     return <Drawer title={<div style={{ display: 'flex', justifyContent: 'space-between' }}><span>{`${adName} 腾讯创意每日数据`}</span> <Button type="text" icon={<CloseOutlined />} onClick={() => onClose?.()}></Button> </div>} closable={false} placement="right" width={'90%'} onClose={onClose} open={visible}>
         <TablePro

+ 6 - 6
src/pages/iaaData/novel/tencent/dynamic/index.tsx

@@ -41,10 +41,9 @@ const DynamicNovel: React.FC<{ configName?: string, dayConfigName?: string }> =
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getDynamicList.run({ ...queryForm, appId, productType })
-            getDynamicTotal.run({ ...queryForm, appId, productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getDynamicList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getDynamicTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { dynamicCreativeId: number; accountId: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.dynamicCreativeId = 1
@@ -56,7 +55,7 @@ const DynamicNovel: React.FC<{ configName?: string, dayConfigName?: string }> =
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     const dayHandle = (data: any) => {
         setVisible(true)
@@ -209,7 +208,8 @@ const DynamicNovel: React.FC<{ configName?: string, dayConfigName?: string }> =
         />
 
         {visible && <DayAd
-            iaaApp={initialState?.iaaApp as string}
+            appId={initialState?.iaaApp as number[]} 
+            productType={initialState?.productType as string}
             adName={adName}
             visible={visible}
             onClose={() => { setVisible(false); setPromotionId(undefined); setDynamicCreativeId(undefined) }}

+ 3 - 4
src/pages/iaaData/novel/tencent/home/index.tsx

@@ -28,9 +28,8 @@ const HomeNovel: React.FC = () => {
     /********************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getHomePage.run({ ...queryForm, appId, productType }).then(res => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getHomePage.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then(res => {
                 if (res?.data) {
                     let newCostLine: HOME.ConsumptionData = { legendName: '消耗' }
                     let newAdMonRevenue: HOME.ConsumptionData = { legendName: '广告变现金额' }
@@ -43,7 +42,7 @@ const HomeNovel: React.FC = () => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
 
     return <Space direction="vertical" style={{ width: '100%' }}>

+ 4 - 5
src/pages/iaaData/novel/tencent/pitcherEveryDay/index.tsx

@@ -28,10 +28,9 @@ const PitcherEveryDay: React.FC<{ configName?: string }> = ({ configName }) => {
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getNovelPutUserList.run({ ...queryForm, appId, productType })
-            getNovelPutUserTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; day: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getNovelPutUserList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getNovelPutUserTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; day: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const PitcherEveryDay: React.FC<{ configName?: string }> = ({ configName }) => {
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro

+ 4 - 5
src/pages/iaaData/novel/tencent/pitcherEveryDayGroup/index.tsx

@@ -28,10 +28,9 @@ const PitcherEveryDayGroupNovel: React.FC<{ configName?: string }> = ({ configNa
     /****************************************/
 
     useEffect(() => {
-        if (initialState?.iaaApp) {
-            const [appId, productType] = initialState.iaaApp.split('||')
-            getNovelPutUserGroupList.run({ ...queryForm, appId, productType })
-            getNovelPutUserGroupTotal.run({ ...queryForm, appId, productType }).then((res: { data: { id: number; appName: string } }) => {
+        if (initialState?.iaaApp?.length && initialState?.productType) {
+            getNovelPutUserGroupList.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType })
+            getNovelPutUserGroupTotal.run({ ...queryForm, appId: initialState.iaaApp, productType: initialState.productType }).then((res: { data: { id: number; appName: string } }) => {
                 if (res?.data) {
                     let data = res?.data
                     data.id = 1
@@ -43,7 +42,7 @@ const PitcherEveryDayGroupNovel: React.FC<{ configName?: string }> = ({ configNa
             })
         }
 
-    }, [queryForm, initialState?.iaaApp])
+    }, [queryForm, initialState?.iaaApp, initialState?.productType])
 
     return <div>
         <TablePro