|
@@ -6,7 +6,7 @@ import style from './index.less'
|
|
|
import SelectSearch from "./selectSearch"
|
|
|
import './global.less'
|
|
|
import '../../tencentAdPutIn/index.less'
|
|
|
-import { useLocalStorageState, useSize } from "ahooks"
|
|
|
+import { useSize } from "ahooks"
|
|
|
import useFileDrop from "@/Hook/useFileDrop"
|
|
|
import { formatBytes, formatSecondsToTime, getVideoImgUrl } from "@/utils/utils"
|
|
|
import UploadFile from "./uploadFile"
|
|
@@ -18,6 +18,7 @@ import { showFieldList } from "./const"
|
|
|
import SelectFolder from "./selectFolder"
|
|
|
import SelectGroupCloudNew from "./selectGroupCloudNew"
|
|
|
import SelectGroupUnitNew from "./selectGroupUnitNew"
|
|
|
+import { addOnlyDataApi, getOnlyDataApi } from "@/services/adqV3"
|
|
|
|
|
|
|
|
|
const { Text, Paragraph } = Typography;
|
|
@@ -42,14 +43,30 @@ const SelectCloudNew: React.FC<CLOUDNEW.SelectCloudNewProps> = ({ visible, defau
|
|
|
const [queryParams, setQueryParams] = useState<CLOUDNEW.GetMaterialDataListProps>({ pageNum: 1, pageSize: 20 })
|
|
|
const [searchParams, setSearchParams] = useState<Partial<CLOUDNEW.GetMaterialDataListProps>>({})
|
|
|
const [uploadVisible, setUploadVisible] = useState<boolean>(false)
|
|
|
- const [showField, setShowField] = useLocalStorageState<string[]>('show-field', ['material.create_time', 'material_data_day.cost', 'material_data_day.ctr', 'material_data_day.conversions_rate', 'material_data_day.dynamic_creative_count']);
|
|
|
- const [sortData, setSortData] = useLocalStorageState<{ sortField: string | undefined, sortType: boolean }>('sort-data', { sortField: undefined, sortType: false });
|
|
|
+ const [isGetField, setIsGetField] = useState<boolean>(false)
|
|
|
+ const [showField, setShowField] = useState<string[]>(['material.create_time', 'material_data_day.cost', 'material_data_day.ctr', 'material_data_day.conversions_rate', 'material_data_day.dynamic_creative_count'])
|
|
|
+ const [sortData, setSortData] = useState<{ sortField: string | undefined, sortType: boolean }>({ sortField: undefined, sortType: false })
|
|
|
const [active, setActive] = useState<number>()
|
|
|
const [isShowAll, setIsShowAll] = useState<boolean>(false)
|
|
|
|
|
|
const getMaterialDataList = useAjax((params) => getMaterialDataListApi(params))
|
|
|
+ const getOnlyData = useAjax((params) => getOnlyDataApi(params))
|
|
|
+ const addOnlyData = useAjax((params) => addOnlyDataApi(params))
|
|
|
/************************************/
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ getOnlyData.run({ type: 'MODE_FIELD_ENT' }).then(res => {
|
|
|
+ if (res?.data) {
|
|
|
+ const { showField, sortData } = JSON.parse(res.data)
|
|
|
+ setShowField(showField)
|
|
|
+ setSortData(sortData)
|
|
|
+ setTimeout(() => setIsGetField(true), 0)
|
|
|
+ } else {
|
|
|
+ setIsGetField(true)
|
|
|
+ }
|
|
|
+ }).catch(() => setIsGetField(true))
|
|
|
+ }, [])
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
if (sliderImgContent && sliderImgContent?.length > 0) {
|
|
|
setCheckedFolderList(sliderImgContent as any || [])
|
|
@@ -57,22 +74,24 @@ const SelectCloudNew: React.FC<CLOUDNEW.SelectCloudNewProps> = ({ visible, defau
|
|
|
}, [])
|
|
|
|
|
|
useEffect(() => {
|
|
|
- let params = { ...searchParams, ...defaultParams, ...queryParams }
|
|
|
- if (sortData?.sortField) {
|
|
|
- params = { ...params, ...sortData }
|
|
|
- }
|
|
|
- if (params?.sizeList?.length) {
|
|
|
- params.sizeQueries = params.sizeList.map(item => {
|
|
|
- const [width, height, relation] = item.split('*')
|
|
|
- return { width: Number(width), height: Number(height), relation: relation || '=' }
|
|
|
- })
|
|
|
- }
|
|
|
- delete params?.sizeList
|
|
|
- if (isShowAll) {
|
|
|
- delete params?.sizeQueries
|
|
|
+ if (isGetField) {
|
|
|
+ let params = { ...searchParams, ...defaultParams, ...queryParams }
|
|
|
+ if (sortData?.sortField) {
|
|
|
+ params = { ...params, ...sortData }
|
|
|
+ }
|
|
|
+ if (params?.sizeList?.length) {
|
|
|
+ params.sizeQueries = params.sizeList.map(item => {
|
|
|
+ const [width, height, relation] = item.split('*')
|
|
|
+ return { width: Number(width), height: Number(height), relation: relation || '=' }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ delete params?.sizeList
|
|
|
+ if (isShowAll) {
|
|
|
+ delete params?.sizeQueries
|
|
|
+ }
|
|
|
+ getMaterialDataList.run(params)
|
|
|
}
|
|
|
- getMaterialDataList.run(params)
|
|
|
- }, [queryParams, defaultParams, searchParams, sortData, showField, isShowAll])
|
|
|
+ }, [queryParams, defaultParams, searchParams, sortData, showField, isShowAll, isGetField])
|
|
|
|
|
|
// 根据内容宽度计算列数
|
|
|
useEffect(() => {
|
|
@@ -264,7 +283,8 @@ const SelectCloudNew: React.FC<CLOUDNEW.SelectCloudNewProps> = ({ visible, defau
|
|
|
return
|
|
|
}
|
|
|
setSortData({ ...sortData, sortField: undefined })
|
|
|
- setShowField(value as any)
|
|
|
+ setShowField(() => value as any)
|
|
|
+ addOnlyData.run({ data: JSON.stringify({ showField: value, sortData: { ...sortData, sortField: undefined } }), type: 'MODE_FIELD_ENT' })
|
|
|
}}
|
|
|
/>
|
|
|
</Form.Item>
|
|
@@ -282,9 +302,17 @@ const SelectCloudNew: React.FC<CLOUDNEW.SelectCloudNewProps> = ({ visible, defau
|
|
|
allowClear
|
|
|
onChange={(value) => {
|
|
|
setSortData({ ...sortData, sortField: value as any })
|
|
|
+ addOnlyData.run({ data: JSON.stringify({ showField, sortData: { ...sortData, sortField: value as any }}), type: 'MODE_FIELD_ENT' })
|
|
|
}}
|
|
|
/>
|
|
|
- <Radio.Group value={sortData.sortType} onChange={(e) => setSortData({ ...sortData, sortType: e.target.value })} buttonStyle="solid">
|
|
|
+ <Radio.Group
|
|
|
+ value={sortData.sortType}
|
|
|
+ onChange={(e) => {
|
|
|
+ setSortData({ ...sortData, sortType: e.target.value })
|
|
|
+ addOnlyData.run({ data: JSON.stringify({ showField, sortData: { ...sortData, sortType: e.target.value }}), type: 'MODE_FIELD_ENT' })
|
|
|
+ }}
|
|
|
+ buttonStyle="solid"
|
|
|
+ >
|
|
|
<Radio.Button value={true}>正序</Radio.Button>
|
|
|
<Radio.Button value={false}>倒序</Radio.Button>
|
|
|
</Radio.Group>
|
|
@@ -301,7 +329,7 @@ const SelectCloudNew: React.FC<CLOUDNEW.SelectCloudNewProps> = ({ visible, defau
|
|
|
</div>
|
|
|
</div>
|
|
|
<div className={`${style.content} content_global`}>
|
|
|
- <Spin spinning={getMaterialDataList.loading}>
|
|
|
+ <Spin spinning={getMaterialDataList.loading || getOnlyData.loading}>
|
|
|
<div className={style.content_scroll} ref={ref} {...dropAreaProps}>
|
|
|
{isDragOver && <div className={`${style.placeholder} ${isDragOver ? style.dragOver : ''}`}><span>拖动文件到这里</span></div>}
|
|
|
{getMaterialDataList?.data?.records?.length > 0 ? <Checkbox.Group value={checkedFolderList?.filter((_, index) => (active || active === 0) ? index === active : true)?.map(item => item.id)} style={{ width: '100%' }}>
|