| 
														
															@@ -12,6 +12,7 @@ import moment from "moment"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import TableData from "@/pages/launchSystemNew/components/TableData"; 
														 | 
														
														 | 
														
															 import TableData from "@/pages/launchSystemNew/components/TableData"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import FilterQuery from "./components/FilterQuery"; 
														 | 
														
														 | 
														
															 import FilterQuery from "./components/FilterQuery"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import RuleAccountLog from "@/components/EarlyWarning/ruleAccountLog"; 
														 | 
														
														 | 
														
															 import RuleAccountLog from "@/components/EarlyWarning/ruleAccountLog"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import { LineField } from "./config"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 interface newListType extends ListType { 
														 | 
														
														 | 
														
															 interface newListType extends ListType { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     totalTimeUnit: 'total' | 'minute' | 'hour' | 'day', 
														 | 
														
														 | 
														
															     totalTimeUnit: 'total' | 'minute' | 'hour' | 'day', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     planTimeUnit: 'minute' | 'hour' | 'day' 
														 | 
														
														 | 
														
															     planTimeUnit: 'minute' | 'hour' | 'day' 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -43,6 +44,7 @@ function Monitor(props: { onChange: () => void }) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const [adgroupId, setAdgroupId] = useState<string>('') 
														 | 
														
														 | 
														
															     const [adgroupId, setAdgroupId] = useState<string>('') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const [adgroupName, setAdgroupName] = useState<string>('') 
														 | 
														
														 | 
														
															     const [adgroupName, setAdgroupName] = useState<string>('') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const [accountIdRule, setAccountIdRule] = useState<string>('') 
														 | 
														
														 | 
														
															     const [accountIdRule, setAccountIdRule] = useState<string>('') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const [trendColumns, setTrendColumns] = useState<string[]>(['cost']) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const { totalTimeUnit, planTimeUnit, adgroup, accountId, sysUserId, groupAccountIds } = queryForm 
														 | 
														
														 | 
														
															     const { totalTimeUnit, planTimeUnit, adgroup, accountId, sysUserId, groupAccountIds } = queryForm 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const configName = '起量广告排行明细New' 
														 | 
														
														 | 
														
															     const configName = '起量广告排行明细New' 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -136,20 +138,24 @@ function Monitor(props: { onChange: () => void }) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // 获取今日计划总消耗图谱,折线 
														 | 
														
														 | 
														
															     // 获取今日计划总消耗图谱,折线 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     useEffect(() => { 
														 | 
														
														 | 
														
															     useEffect(() => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         getTootalCostList() 
														 | 
														
														 | 
														
															         getTootalCostList() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    }, [planTimeUnit, adgroup, accountId, sysUserId, groupAccountIds]) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }, [planTimeUnit, adgroup, accountId, sysUserId, groupAccountIds, trendColumns]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /** 获取折线图 */ 
														 | 
														
														 | 
														
															     /** 获取折线图 */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const getTootalCostList = useCallback(async () => { 
														 | 
														
														 | 
														
															     const getTootalCostList = useCallback(async () => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         let { totalTimeUnit, planTimeUnit, pageNum, pageSize, adgroup, sysUserId, accountId, ...newQueryForm } = queryForm 
														 | 
														
														 | 
														
															         let { totalTimeUnit, planTimeUnit, pageNum, pageSize, adgroup, sysUserId, accountId, ...newQueryForm } = queryForm 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         let params = adgroup ? { ...newQueryForm, adgroupId: adgroup } : newQueryForm 
														 | 
														
														 | 
														
															         let params = adgroup ? { ...newQueryForm, adgroupId: adgroup } : newQueryForm 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        let res = await getCostTrendList.run({ ...params, timeUnit: planTimeUnit, sysUserIds: sysUserId, accountId: accountId?.join() }) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        let data: any[] = [{ legendName: '消耗' }] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        res?.data?.forEach((item: any) => { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            data[0][item.trendUnit] = item.costOfUnit 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        let res = await getCostTrendList.run({ ...params, timeUnit: planTimeUnit, sysUserIds: sysUserId, accountId: accountId?.join(), trendColumns }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        let data = trendColumns.map((field) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            let value: any = {} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            res?.data?.forEach((item: any, index: number) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if (index === 0) value.legendName = LineField[field]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                value[item?.trend_unit] = item?.[field] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return value 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         setLineDis(() => data) 
														 | 
														
														 | 
														
															         setLineDis(() => data) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        setLineTitle(() => res?.data?.adName ? res?.data?.adName + '_消耗趋势' : '广告总消耗趋势') 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    }, [queryForm, lineDis]) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        setLineTitle(() => `广告总${LineField[trendColumns[0]]}趋势`) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }, [queryForm, lineDis, trendColumns]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /** 获取柱状图 */ 
														 | 
														
														 | 
														
															     /** 获取柱状图 */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const getPlanCostList = useCallback(async () => { 
														 | 
														
														 | 
														
															     const getPlanCostList = useCallback(async () => { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -202,32 +208,41 @@ function Monitor(props: { onChange: () => void }) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         setPx(b) 
														 | 
														
														 | 
														
															         setPx(b) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         getCostTrendList.refresh() 
														 | 
														
														 | 
														
															         getCostTrendList.refresh() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         getCostTopList.refresh() 
														 | 
														
														 | 
														
															         getCostTopList.refresh() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    }, [getCostTopList, getCostTrendList]) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }, [getCostTopList, getCostTrendList, trendColumns]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // 处理折线图数据 
														 | 
														
														 | 
														
															     // 处理折线图数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const timePickerHandle = async (values: any, formatString: [string, string]) => { 
														 | 
														
														 | 
														
															     const timePickerHandle = async (values: any, formatString: [string, string]) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         let res = await getCostTrendList.data 
														 | 
														
														 | 
														
															         let res = await getCostTrendList.data 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        let data: any[] = [{ legendName: '消耗' }] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        res?.data?.forEach((item: any) => { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            data[0][item.trendUnit] = item.costOfUnit 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        let data = trendColumns.map((field) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            let value: any = {} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            res?.data?.forEach((item: any, index: number) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if (index === 0) value.legendName = LineField[field]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                value[item?.trend_unit] = item?.[field] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return value 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if (values) { 
														 | 
														
														 | 
														
															         if (values) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let date = moment().format('YYYY-MM-DD') 
														 | 
														
														 | 
														
															             let date = moment().format('YYYY-MM-DD') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let strTime = formatString[0] 
														 | 
														
														 | 
														
															             let strTime = formatString[0] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let endTime = formatString[1] 
														 | 
														
														 | 
														
															             let endTime = formatString[1] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let dateTimeStr = `${date} ${strTime}:00` 
														 | 
														
														 | 
														
															             let dateTimeStr = `${date} ${strTime}:00` 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let dateTimeEnd = `${date} ${endTime}:00` 
														 | 
														
														 | 
														
															             let dateTimeEnd = `${date} ${endTime}:00` 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            let { legendName, ...otherData } = data[0] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            let newData: any = { legendName } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            for (const key in otherData) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                if (Object.prototype.hasOwnProperty.call(otherData, key)) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    const value = otherData[key]; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    if (moment(dateTimeStr) <= moment(key) && moment(key) <= moment(dateTimeEnd)) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        newData[key] = value 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            let newData: any[] = data.map(item => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                let { legendName, ...otherData } = item 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                let newItem: any = { legendName } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                for (const key in otherData) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    if (Object.prototype.hasOwnProperty.call(otherData, key)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        const value = otherData[key]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        if (moment(dateTimeStr) <= moment(key) && moment(key) <= moment(dateTimeEnd)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            newItem[key] = value 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     } 
														 | 
														
														 | 
														
															                     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            setLineDis(() => [newData]) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                return newItem 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            setLineDis(() => newData) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } else { 
														 | 
														
														 | 
														
															         } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             setLineDis(() => data) 
														 | 
														
														 | 
														
															             setLineDis(() => data) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -369,9 +384,26 @@ function Monitor(props: { onChange: () => void }) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 minuteStep={5} 
														 | 
														
														 | 
														
															                                 minuteStep={5} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 onChange={timePickerHandle} 
														 | 
														
														 | 
														
															                                 onChange={timePickerHandle} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             />} 
														 | 
														
														 | 
														
															                             />} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            <Select 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                showSearch 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                mode='multiple' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                maxTagCount={1} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                value={trendColumns} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                style={{ minWidth: 130 }} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                allowClear 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                placeholder="请选择图表字段" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                onChange={(value: string[]) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                    setTrendColumns(value?.length ? value : ['cost']) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                }} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                size="small" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            > 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                {Object.keys(LineField).map((key) => <Select.Option value={key} key={key}> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                    {LineField[key]} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                </Select.Option>)} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            </Select> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         </Space> 
														 | 
														
														 | 
														
															                         </Space> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     </div> 
														 | 
														
														 | 
														
															                     </div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    {getCostTrendList?.loading ? <Spin /> : <LineMonitor style={{ width: '100%', height: '100%' }} series smooth data={lineDis} title={lineTitle} />} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    {getCostTrendList?.loading ? <Spin /> : <LineMonitor style={{ width: '100%', height: '100%' }} series smooth data={lineDis} title={trendColumns?.length > 1 ? undefined : lineTitle} />} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 </div> 
														 | 
														
														 | 
														
															                 </div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             </div> 
														 | 
														
														 | 
														
															             </div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         </Card>} 
														 | 
														
														 | 
														
															         </Card>} 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -431,7 +463,7 @@ function Monitor(props: { onChange: () => void }) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         {visible && <Details visible={visible} onClose={() => { setVisible(false) }} data={aId} />} 
														 | 
														
														 | 
														
															         {visible && <Details visible={visible} onClose={() => { setVisible(false) }} data={aId} />} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        {logVisible && <RuleAccountLog accountId={accountIdRule} adgroupName={adgroupName} adgroupId={adgroupId} visible={logVisible} onClose={() => setLogVisible(false)}/>} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        {logVisible && <RuleAccountLog accountId={accountIdRule} adgroupName={adgroupName} adgroupId={adgroupId} visible={logVisible} onClose={() => setLogVisible(false)} />} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     </Space> 
														 | 
														
														 | 
														
															     </Space> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |