Forráskód Böngészése

Merge branch 'develop' of http://git.zanxiangnet.com/wjx/ad-manage

wjx 1 hónapja
szülő
commit
e5b52555b5

+ 4 - 1
config/config.ts

@@ -2,10 +2,13 @@
 import { defineConfig } from 'umi';
 import defaultSettings from './defaultSettings';
 import proxy from './proxy';
-import {  adMonitor, launchSystem, launchSystemV3 } from './routerConfig';
+import { adMonitor, launchSystem, launchSystemV3 } from './routerConfig';
 // const CompressionWebpackPlugin = require('compression-webpack-plugin');
 const { REACT_APP_ENV } = process.env;
 export default defineConfig({
+  headScripts: [
+    { src: 'https://unpkg.com/mediainfo.js', type: "text/javascript" }
+  ],
   metas: [
     { httpEquiv: 'Content-Security-Policy', content: "script-src 'self' *.alibaba-inc.com *.dingtalk.com *.alicdn.com *.alipay.com" }
   ],

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
public/mediainfo/index.min.js


+ 49 - 21
src/pages/launchSystemV3/material/cloudNew/selectCloudNew.tsx

@@ -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%' }}>

+ 33 - 7
src/pages/launchSystemV3/material/cloudNew/selectGroupCloudNew.tsx

@@ -14,6 +14,7 @@ import Lazyimg from "react-lazyimg-component"
 import { useLocalStorageState } from "ahooks"
 import SyncCloudSc from "./syncCloudSc"
 import { getUserAccountListApi } from "@/services/launchAdq/adAuthorize"
+import { addOnlyDataApi, getOnlyDataApi } from "@/services/adqV3"
 
 const { Text, Paragraph } = Typography;
 
@@ -35,14 +36,30 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
     const [searchParams, setSearchParams] = useState<Partial<Omit<CLOUDNEW.GetPageRemoteImageDataListProps, 'materialType'>>>({})
     const [ownerAccountId, setOwnerAccountId] = useState<number>()
     const [previewData, setPreviewData] = useState<{ visible: boolean, url?: string }>({ visible: false })
-    const [sortData, setSortData] = useLocalStorageState<{ sortField: string | undefined, sortType: boolean }>('sort-data-group', { sortField: undefined, sortType: false });
-    const [showField, setShowField] = useLocalStorageState<string[]>('show-field-group', ['material.create_time', 'material_data_day.cost', 'material_data_day.ctr', 'material_data_day.conversions_rate', 'material_data_day.dynamic_creative_count']);
+    const [isGetField, setIsGetField] = useState<boolean>(false)
+    const [showField, setShowField] = useState<string[]>(['material.created_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 [isShowAll, setIsShowAll] = useState<boolean>(false)
 
     const getPageRemoteImageDataList = useAjax((params) => getPageRemoteImageDataListApi(params))
     const getUserAccountList = useAjax((params) => getUserAccountListApi(params))
+    const getOnlyData = useAjax((params) => getOnlyDataApi(params))
+    const addOnlyData = useAjax((params) => addOnlyDataApi(params))
     /*****************************************/
 
+    useEffect(() => {
+        getOnlyData.run({ type: 'MODE_FIELD_ENT_1' }).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(() => {
         let rowNum = Math.floor(1350 / 220)
@@ -105,7 +122,7 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
     }, [accountCreateLogs])
 
     useEffect(() => {
-        if (ownerAccountId) {
+        if (ownerAccountId && isGetField) {
             let params = { ...searchParams, ...defaultParams, ...queryParams, ownerAccountId }
             if (sortData?.sortField) {
                 params = { ...params, ...sortData }
@@ -122,7 +139,7 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
             }
             getPageRemoteImageDataList.run(params)
         }
-    }, [queryParams, defaultParams, searchParams, sortData, showField, ownerAccountId, isShowAll])
+    }, [queryParams, defaultParams, searchParams, sortData, showField, ownerAccountId, isShowAll, isGetField])
 
     // 选择
     const onCheckboxChange = (checked: boolean, item: any) => {
@@ -145,7 +162,7 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
         setCheckedFolderList(newCheckedFolderList)
     };
 
-    return <Spin spinning={getUserAccountList.loading} wrapperClassName={'select_group_spin'}>
+    return <Spin spinning={getUserAccountList.loading || getOnlyData.loading} wrapperClassName={'select_group_spin'}>
         <div className={style.select_cloudNew_layout}>
             {ownerAccountId && ownerAccountId !== -1 ? <>
                 {/* 搜索 */}
@@ -238,6 +255,7 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                                             }
                                                             setSortData({ ...sortData, sortField: undefined })
                                                             setShowField(value as any)
+                                                            addOnlyData.run({ data: JSON.stringify({ showField: value, sortData: { ...sortData, sortField: undefined } }), type: 'MODE_FIELD_ENT_1' })
                                                         }}
                                                     />
                                                 </Form.Item>
@@ -255,9 +273,17 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                                             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_1' })
                                                             }}
                                                         />
-                                                        <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_1' })
+                                                            }} 
+                                                            buttonStyle="solid"
+                                                        >
                                                             <Radio.Button value={true}>正序</Radio.Button>
                                                             <Radio.Button value={false}>倒序</Radio.Button>
                                                         </Radio.Group>
@@ -274,7 +300,7 @@ const SelectGroupCloudNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                 </div>
                             </div>
                             <div className={`${style.content} content_global`}>
-                                <Spin spinning={getPageRemoteImageDataList.loading}>
+                                <Spin spinning={getPageRemoteImageDataList.loading || getOnlyData.loading}>
                                     <div className={`${style.content_scroll} scroll`} ref={refScllor}>
                                         {getPageRemoteImageDataList?.data?.records?.length > 0 ? <Checkbox.Group value={checkedFolderList?.filter((_, index) => (active || active === 0) ? index === active : true)?.map(item => item.id)} style={{ width: '100%' }}>
                                             <div className={style.content_scroll_div}>

+ 33 - 7
src/pages/launchSystemV3/material/cloudNew/selectGroupUnitNew.tsx

@@ -14,6 +14,7 @@ import Lazyimg from "react-lazyimg-component"
 import { useLocalStorageState } from "ahooks"
 import SyncCloudSc from "./syncCloudSc"
 import { checkAccountUnitApi } from "@/services/launchAdq/adAuthorize"
+import { addOnlyDataApi, getOnlyDataApi } from "@/services/adqV3"
 
 const { Text, Paragraph } = Typography;
 
@@ -35,14 +36,30 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
     const [searchParams, setSearchParams] = useState<Partial<Omit<CLOUDNEW.GetPageRemoteImageDataListProps, 'materialType'>>>({})
     const [unitAccountId, setUnitAccountId] = useState<number>()
     const [previewData, setPreviewData] = useState<{ visible: boolean, url?: string }>({ visible: false })
-    const [sortData, setSortData] = useLocalStorageState<{ sortField: string | undefined, sortType: boolean }>('sort-data-unit', { sortField: undefined, sortType: false });
-    const [showField, setShowField] = useLocalStorageState<string[]>('show-field-unit', ['material.create_time', 'material_data_day.cost', 'material_data_day.ctr', 'material_data_day.conversions_rate', 'material_data_day.dynamic_creative_count']);
+    const [isGetField, setIsGetField] = useState<boolean>(false)
+    const [showField, setShowField] = useState<string[]>(['material.created_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 [isShowAll, setIsShowAll] = useState<boolean>(false)
 
     const getPageRemoteImageDataList = useAjax((params) => getPageRemoteImageDataListApi(params))
     const checkAccountUnit = useAjax((params) => checkAccountUnitApi(params))
+    const getOnlyData = useAjax((params) => getOnlyDataApi(params))
+    const addOnlyData = useAjax((params) => addOnlyDataApi(params))
     /*****************************************/
 
+    useEffect(() => {
+        getOnlyData.run({ type: 'MODE_FIELD_ENT_2' }).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(() => {
         let rowNum = Math.floor(1350 / 220)
@@ -78,7 +95,7 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
     }, [accountCreateLogs])
 
     useEffect(() => {
-        if (unitAccountId) {
+        if (unitAccountId && isGetField) {
             let params = { ...searchParams, ...defaultParams, ...queryParams, ownerAccountId: unitAccountId }
             if (sortData?.sortField) {
                 params = { ...params, ...sortData }
@@ -95,7 +112,7 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
             }
             getPageRemoteImageDataList.run(params)
         }
-    }, [queryParams, defaultParams, searchParams, sortData, showField, unitAccountId, isShowAll])
+    }, [queryParams, defaultParams, searchParams, sortData, showField, unitAccountId, isShowAll, isGetField])
 
     // 选择
     const onCheckboxChange = (checked: boolean, item: any) => {
@@ -118,7 +135,7 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
         setCheckedFolderList(newCheckedFolderList)
     };
 
-    return <Spin spinning={checkAccountUnit.loading} wrapperClassName={'select_group_spin'}>
+    return <Spin spinning={checkAccountUnit.loading || getOnlyData.loading} wrapperClassName={'select_group_spin'}>
         <div className={style.select_cloudNew_layout}>
             {unitAccountId ? <>
                 {/* 搜索 */}
@@ -211,6 +228,7 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                                             }
                                                             setSortData({ ...sortData, sortField: undefined })
                                                             setShowField(value as any)
+                                                            addOnlyData.run({ data: JSON.stringify({ showField: value, sortData: { ...sortData, sortField: undefined } }), type: 'MODE_FIELD_ENT_2' })
                                                         }}
                                                     />
                                                 </Form.Item>
@@ -228,9 +246,17 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                                             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_2' })
                                                             }}
                                                         />
-                                                        <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_2' })
+                                                            }}
+                                                            buttonStyle="solid"
+                                                        >
                                                             <Radio.Button value={true}>正序</Radio.Button>
                                                             <Radio.Button value={false}>倒序</Radio.Button>
                                                         </Radio.Group>
@@ -247,7 +273,7 @@ const SelectGroupUnitNew: React.FC<CLOUDNEW.SelectGroupCloudNewProps> = ({ num,
                                 </div>
                             </div>
                             <div className={`${style.content} content_global`}>
-                                <Spin spinning={getPageRemoteImageDataList.loading}>
+                                <Spin spinning={getPageRemoteImageDataList.loading || getOnlyData.loading}>
                                     <div className={`${style.content_scroll} scroll`} ref={refScllor}>
                                         {getPageRemoteImageDataList?.data?.records?.length > 0 ? <Checkbox.Group value={checkedFolderList?.filter((_, index) => (active || active === 0) ? index === active : true)?.map(item => item.id)} style={{ width: '100%' }}>
                                             <div className={style.content_scroll_div}>

+ 18 - 7
src/pages/launchSystemV3/material/cloudNew/uploadFile.tsx

@@ -112,18 +112,29 @@ const UploadFile: React.FC<Props> = ({ visible, onClose, folderId, userId, onCha
             let height = 0
             let videoDuration = 0
             if (queryForm.materialType === 'image') {
-                let imgData = await getImgSize(file)
+                const imgData = await getImgSize(file)
                 width = imgData.width
                 height = imgData.height
             } else if (queryForm.materialType === "video") {
-                let videoInfo: { width: number, height: number, videoLength: number }[] = await videoMessage([file])
-                width = videoInfo[0].width
-                height = videoInfo[0].height
-                videoDuration = videoInfo[0].videoLength
+                const videoInfo: { width: number, height: number, videoLength: number }[] = await videoMessage([file])
+                const readChunk = async (chunkSize: number, offset: number) => new Uint8Array(await file.slice(offset, offset + chunkSize).arrayBuffer());
+                // @ts-ignore
+                const mediaInfo = await MediaInfo.mediaInfoFactory({ format: 'object' })
+                const result = await mediaInfo.analyzeData(file.size, readChunk)
+                if (result?.media?.track) {
+                    const { Height, Width, Duration } = result?.media?.track.find((item: { [x: string]: string }) => item['@type'] === 'Video')
+                    width = Width
+                    height = Height
+                    videoDuration = Duration
+                } else {
+                    width = videoInfo[0].width
+                    height = videoInfo[0].height
+                    videoDuration = videoInfo[0].videoLength
+                }
             }
             /**修改文件名以用户设置的文件title命名*/
-            let newFile = new File([file], queryForm?.materialName ? queryForm?.materialName + '.' + file?.name?.split('.')[1] : file?.name, { type: file?.type })
-            let formData = new FormData();
+            const newFile = new File([file], queryForm?.materialName ? queryForm?.materialName + '.' + file?.name?.split('.')[1] : file?.name, { type: file?.type })
+            const formData = new FormData();
             /**向阿里云请求上传地址*/
             getFileUrlAjx.run({ type: newFile.type, fileType: queryForm.materialType }).then(res1 => {
                 Object.keys(res1).forEach((key: string) => {

+ 26 - 0
src/services/adqV3/index.ts

@@ -237,4 +237,30 @@ export async function batchCreateDownPageApi(data: { accountId: number, pageName
         method: 'POST',
         data
     })
+}
+
+/*******************/
+
+/**
+ * 策略
+ * @param data 
+ * @returns 
+ */
+export async function addOnlyDataApi(data: { type: string, data: string }) {
+    return request(api + `/adq/v3/strategy/only/add`, {
+        method: 'POST',
+        data
+    })
+}
+
+/**
+ * 获取策略
+ * @param data 
+ * @returns 
+ */
+export async function getOnlyDataApi(params: { type: string }) {
+    return request(api + `/adq/v3/strategy/only/getOne`, {
+        method: 'GET',
+        params
+    })
 }

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott