{"version":3,"file":"statics/js/index-290eea8e.09fdcac4c.js","mappings":"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CF,gB,mBACG,mB,+BACY,+B,mBACZ,mB,qBACE,qB,sBACC,sB,4BACM,4B,sBACN,sB,mBACH,mB,kBACD,kB,mBACC,mB,mBACA,mB,sBACG,sB,iBACL,iB,iBACA,iB,4BACW,4B,yBACH,oB,oBACL,oB,gBACJ,gB,qBACK,qB,iCACY,iC,sBACX,sB,0BACI,0B,uBAEH,uB,sBACD,sB,iBACL,iB,0BACS,0B,kBAER,kB,oBACE,oB,iBACH,iB,wBACO,wB,yBACC,yB,oBACL,oB,uBACG,uB,wBACC,wB,qBACH,qB,yBACI,yB,0BACC,0B,mBACP,mB,6BACU,6B,wBACL,wB,8BACM,8B,kBACZ,kB,oBACE,oB,oBACA,oB,yBACK,yB,kBACP,kB,kBACA,kB,qBACG,qB,mBACF,mB,yBACM,yB,qBACJ,qB,sBACC,sB,yBACG,yB,2BACE,2B,2BACA,2B,2BACA,2B,kBACT,kB,uBACK,uB,qBACF,qB,kBACH,kB,aACL,a,qBACQ,qB,iBACJ,iB,eACF,e,gBACC,gB,yBACS,yB,mCACU,mC,uBACZ,uB,yBACE,yB,4BACG,4B,wBACJ,wB,uBACD,uB,4BACK,4B,+BACG,+B,kBACb,kB,8BACY,8B,mCACK,mC,+BACJ,+B,0BACL,0B,gCACM,gC,kCACE,kC,yBACT,yB,4BACG,4B,6BACC,6B,6BACA,6B,6BACA,6B,qBACR,qB,yBACI,yB,6BACI,6B,iCACI,iC,0BACP,0B,4BACE,4B,uBACL,uB,sBACD,sB,eACP,e,gBACC,gB,uBACO,uB,sBACD,sB,mBACH,mB,qBACE,qB,yBACI,yB,4BACG,4B,sCACU,sC,sCACA,sC,+BACP,+B,iCACE,iC,eAClB,e,sBACO,sB,gDAC0B,gD,kBAC9B,kB,aACL,a,eACE,e,uBACQ,uB,8BACO,8B,gCACE,gC,yBACP,yB,yBACA,yB,aACZ,a,kBACK,kB,iBACD,iB,qBACI,qB,kCACa,kC,oCACE,oC,YACxB,Y,qBACS,qB,gBACL,gB,uBACO,uB,uBACA,uB,0BACG,0B,qBACL,qB,8BACS,8B,yBACL,yB,iCACQ,iC,kBACf,kB,4BACU,4B,0BACF,0B,wBACF,wB,eACT,e,uBACQ,uB,mBACJ,mB,yBACM,yB,cACX,c,gBACE,gB,yBACS,yB,gBACT,gB,0BACU,0B,uBACH,uB,oBACH,oB,iCACa,iC,sBACX,sB,qBACD,qB,oBACD,oB,uBACG,uB,0BACG,0B,yBACD,yB,gBACT,gB,+BACe,+B,2BACJ,2B,kBACT,kB,gBACF,gB,sBACM,sB,2BACK,2B,oBACP,oB,+BACW,+B,+BACA,+B,wCACS,wC,sCACF,sC,oBAClB,oB,4BACQ,4B,kCAEM,kC,6BAEL,6B,uCACU,uC,+BACR,+B,yCACU,yC,wBACjB,wB,qBACH,qB,mBACF,mB,kCACe,kC,iBAEjB,iB,mBACE,mB,iBACF,iB,mBACE,mB,kBACD,kB,qBACG,qB,0BACK,0B,eAGX,e,UACL,U,gBACM,gB,SACP,S,qBACY,qB,kCACa,kC,YACtB,Y,YACA,Y,cACE,c,oBACM,oB,gBACJ,gB,cACF,c,eACC,e,0BACW,0B,wBACF,wB,mBACL,mB,yBACM,yB,sBACH,sB,wBACE,wB,oBACJ,oB,YACR,Y,oBACQ,oB,mBACD,mB,mBACA,mB,iBACF,iB,oBACG,oB,yBACK,yB,0BACC,0B,mBACP,mB,qBACE,qB,sBACC,sB,wBACE,wB,uBACD,uB,6CACsB,6C,2BAClB,2B,qCACU,qC,kBACnB,kB,wCACsB,wC,uBACjB,uB,0CACmB,0C,qCACL,qC,wCACG,wC,gCACR,gC,mCACG,mC,0BACT,0B,6BACG,6B,iCACI,iC,yCACQ,yC,oBACrB,oB,yBACK,yB,2BACE,2B,2CACgB,2C,oCACP,oC,oCACA,oC,0CACM,0C,+BACX,+B,mCACI,mC,+BACJ,+B,kCACG,kC,8BACJ,8B,iCACG,iC,+BACF,+B,mCACI,mC,yBACV,yB,sCACa,sC,oCACF,oC,kCACF,kC,2BACP,2B,gCACK,gC,iDACiB,iD,sCACX,sC,iCACL,iC,qBACZ,qB,gBACL,gB,sBAEM,sB,oBACF,oB,oBACA,oB,sBACE,sB,2CACqB,2C,kCACT,kC,0BACR,0B,wBACF,wB,2BACG,2B,eACZ,e,eACA,e,mBACI,mB,mBACA,mB,mBACA,mB,gBACH,gB,2BACW,2B,gCACK,gC,2BACL,2B,iBACV,iB,cACH,c,iBACG,iB,gBACD,gB,sBACM,sB,oBACF,oB,mBAED,mB,mBACA,mB,sBACG,sB,qBACD,qB,uBACE,uB,8BACO,8B,uBACP,uB,qBACF,qB,sBACC,sB,sBACA,sB,uBACC,uB,cACT,c,6BACe,6B,oBACT,oB,sBACE,sB,4BACM,4B,+BACG,+B,kCACG,kC,yCACO,yC,qCACJ,qC,0BACX,0B,2BACC,2B,yBACF,yB,2BACE,2B,wBACH,wB,uCACe,uC,oBACnB,oB,sBACE,sB,wBACE,wB,4BACI,4B,4BACA,4B,wBACJ,wB,mBAEL,mB,qBACE,qB,oBACD,oB,qBACC,qB,sBACC,sB,sBACA,sB,oBAGF,oB,oBACA,oB,sBACE,sB,uBACC,uB,uBACA,uB,yBACE,yB,+BACM,+B,uBACR,uB,iBACN,iB,iBACA,iB,kBAGC,kB,gBACF,gB,kBACE,kB,0BACQ,0B,sBACJ,sB,kBACJ,kB,qBACG,qB,wBACG,wB,mBAEL,mB,mBACA,mB,eACJ,e,oBACK,oB,kBACF,kB,eACH,e,qBAEM,qB,2BACM,2B,2BAEA,2B,sBACL,sB,uBACC,uB,6BACM,6B,kBACX,kB,2BACS,2B,uBAGJ,uB,mBACJ,mB,uBAGI,uB,+BACQ,+B,iCACE,iC,sBACX,sB,uBACC,uB,4BACK,4B,0CACc,0C,mCACP,mC,yCACM,yC,uCACF,uC,mCACJ,mC,gCACH,gC,6CACa,6C,uCACN,uC,uCACA,uC,uBAGhB,uB,2BACI,2B,mBAGR,mB,0BACO,0B,4BACE,4B,iBACX,iB,sBAGK,sB,cACR,c,qBACO,qB,qBAGA,qB,kBAGH,kB,gBACF,gB,oBACI,oB,mBACD,mB,eACJ,e,uBAGQ,uB,iBACN,iB,oBACG,oB,oBACA,oB,eACL,e,uCACwB,uC,+BACR,+B,8BACD,8B,sCACQ,sC,wBACd,wB,iCACS,iC,wBACT,wB,mBACL,mB,4BACS,4B,2BAED,2B,gBAGX,gB,kBACE,kB,kBACA,kB,iB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","sources":["webpack:///./src/store/actions/index.js","webpack:///./src/store/base/base-form-group.js","webpack:///./src/store/base/base-form-item.js","webpack:///./src/store/base/base-form.js","webpack:///./src/store/base/extends-module.js","webpack:///./src/store/base/index.js","webpack:///./src/store/base/module-keys.js","webpack:///./src/store/base/register-module.js","webpack:///./src/store/base/sync-module-plugin.js","webpack:///./src/store/index.js","webpack:///./src/store/modules/account/index.js","webpack:///./src/store/modules/ad/create.js","webpack:///./src/store/modules/ad/identity.js","webpack:///./src/store/modules/ad/index.js","webpack:///./src/store/modules/ad/list.js","webpack:///./src/store/modules/audience/index.js","webpack:///./src/store/modules/bc/index.js","webpack:///./src/store/modules/brand/create.js","webpack:///./src/store/modules/brand/index.js","webpack:///./src/store/modules/brand/list.js","webpack:///./src/store/modules/campaign/adcampaign.js","webpack:///./src/store/modules/campaign/adgroup.js","webpack:///./src/store/modules/campaign/index.js","webpack:///./src/store/modules/catalog/index.js","webpack:///./src/store/modules/common-tcc/index.js","webpack:///./src/store/modules/contract/index.js","webpack:///./src/store/modules/creative/create.js","webpack:///./src/store/modules/creative/index.js","webpack:///./src/store/modules/creative/list.js","webpack:///./src/store/modules/creative/normal-creative/actions.js","webpack:///./src/store/modules/creative/normal-creative/getters.js","webpack:///./src/store/modules/creative/normal-creative/helpers.js","webpack:///./src/store/modules/creative/normal-creative/mutations.js","webpack:///./src/store/modules/creative/normal-creative/reset-helpers.js","webpack:///./src/store/modules/creative/normal-creative/state.js","webpack:///./src/store/modules/creative/playable-card-form/index.js","webpack:///./src/store/modules/creative/playable-card-form/playable-card-form-group.js","webpack:///./src/store/modules/creative/playable-card-form/playable-creation-form-item.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/index.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-app-name.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-avatar.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-create.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-cta.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-deffered-deeplink.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-identity.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-lib-auth.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-name.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-optimize.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-title-list.js","webpack:///./src/store/modules/creative/procedural-creative-form/form-group-main/procedural-creative-tracking-url.js","webpack:///./src/store/modules/creative/procedural-creative-form/index.js","webpack:///./src/store/modules/dashboard/index.js","webpack:///./src/store/modules/diagnosis/index.js","webpack:///./src/store/modules/efficient-tool/index.js","webpack:///./src/store/modules/index.js","webpack:///./src/store/modules/library/index.js","webpack:///./src/store/modules/library/library-image.js","webpack:///./src/store/modules/library/library-playable.js","webpack:///./src/store/modules/library/library-video.js","webpack:///./src/store/modules/library/list.js","webpack:///./src/store/modules/library/playable-check/form-group/index.js","webpack:///./src/store/modules/library/playable-check/form-group/playable-name.js","webpack:///./src/store/modules/library/playable-check/form-group/playable-parameter.js","webpack:///./src/store/modules/library/playable-check/form-group/playable-qr-code-preview.js","webpack:///./src/store/modules/library/playable-check/form-group/playable-url.js","webpack:///./src/store/modules/library/playable-check/index.js","webpack:///./src/store/modules/notify/index.js","webpack:///./src/store/modules/payment/index.js","webpack:///./src/store/modules/perf/index.js","webpack:///./src/store/modules/popup-status/index.js","webpack:///./src/store/modules/qualification/index.js","webpack:///./src/store/modules/qualification/music-qualification.js","webpack:///./src/store/modules/report/index.js","webpack:///./src/store/modules/rf/index.js","webpack:///./src/store/modules/rf/stock-estimate.js","webpack:///./src/store/modules/shop/index.js","webpack:///./src/store/modules/smb-support/index.js","webpack:///./src/store/modules/tanblock/index.js","webpack:///./src/store/modules/tea-analyze/index.js","webpack:///./src/store/modules/tool/index.js","webpack:///./src/store/modules/transaction/index.js","webpack:///./src/store/modules/user/index.js","webpack:///./src/store/mutations/index.js","webpack:///./src/store/state/index.js","webpack:///./src/store/types/index.js","webpack:///./src/track/teaPlugin.js"],"sourcesContent":["import * as types from 'src/store/types';\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport isMobile from 'is-mobile';\n\nconst actions = {\n // 重置所有的状态\n resetAllState({ commit }) {\n commit(`ad/create/${types.RESET_STATES}`);\n },\n\n // 获取自定义列列表 参数type类型为String||Number 每次只能获取一类缓存\n getCustomContentList(store, data) {\n return request.get(apis.custom_content.newList, data);\n },\n\n // 添加自定义选项\n addCustomContent(store, data) {\n return request.post(apis.custom_content.newCreate, data);\n },\n\n // 更新自定义选项\n updateCustomContent(store, data) {\n return request.post(apis.custom_content.newUpdate, data);\n },\n\n // 获取自定义选项详情\n getCustomContentDetail(store, data) {\n return request.get(apis.custom_content.newDetail, data);\n },\n // 删除自定义选项\n removeCustomContent(store, data) {\n return request.post(apis.custom_content.newDelete, data);\n },\n getWhaletoken(store, data) {\n return request.get(apis.whale_token, data);\n },\n liteOpenCheck({ getters }, country = getters['account/permissionData']?.account?.country) {\n if (country && isMobile()) {\n return request.get(apis.lite_open_check, { country })\n .then(res => res.data.is_opened)\n .catch(() => false);\n }\n return false;\n },\n};\n\nexport default actions;\n","import Vue from 'vue';\n\nexport default {\n state() {\n return {\n _formState: {},\n _formGetters: {},\n _formNamespace: '',\n };\n },\n getters: {\n formItems(state) {\n return state._formItems || [];\n },\n formState(state) {\n return state._formState;\n },\n formGetters(state) {\n return state.formGetters;\n },\n formNamespace(state) {\n return state._formNamespace;\n },\n // 下属某个表单项是否可见\n isFormItemVisible(state, getters) {\n return formItemName => getters[`${ formItemName }/isSelfVisible`];\n },\n // 自身是否可见\n isSelfVisible(state, getters) {\n const target = getters.isVisible;\n // 如果没有指定 isVisible ,则默认展示\n if (target === undefined) {\n return true;\n }\n return !!target;\n },\n /**\n * 集合form group所有下属表单项的state\n * {\n * 'form-item-1': formItem1State,\n * 'form-item-2': formItem2State\n * }\n */\n formGroupModel(state, getters) {\n return getters.formItems.reduce((model, formItemModuleKey) => ({\n ...model,\n [formItemModuleKey]: state[formItemModuleKey],\n }), {});\n },\n formItemData4ShowKey(state, getters) {\n return (formItemName) => {\n const formItemData4Show = getters[`${ formItemName }/formItemData4Show`];\n return formItemData4Show !== undefined ? 'formItemData4Show' : 'formItemData';\n };\n },\n formItemData4HideKey(state, getters) {\n return (formItemName) => {\n const formItemData4Show = getters[`${ formItemName }/formItemData4Hide`];\n return formItemData4Show !== undefined ? 'formItemData4Hide' : 'formItemData';\n };\n },\n /**\n * form group用于后端接口提交的数据, 所有数据全部打平\n * {\n * key1: value1,\n * key2: value2,\n * key3: value3,\n * }\n */\n formGroupData4Submit(state, getters) {\n return getters.formItems.reduce((data, formItemModuleKey) => {\n // 本form group是展示的,并且下属form item也是展示的,才取formItemData4Show\n const gettersKey = (getters.isSelfVisible && getters.isFormItemVisible(formItemModuleKey)) ?\n getters.formItemData4ShowKey(formItemModuleKey) :\n getters.formItemData4HideKey(formItemModuleKey);\n return {\n ...data,\n ...(getters[`${ formItemModuleKey }/${ gettersKey }`] || {}),\n };\n }, {});\n },\n formGroupData4View(state, getters) {\n return getters.formItems.reduce((data, formItemModuleKey) => {\n const clearWhileHidden = getters[`${ formItemModuleKey }/clearWhileHidden`];\n const isFormItemVisible = getters.isFormItemVisible(formItemModuleKey);\n const key = (clearWhileHidden && !isFormItemVisible) ?\n getters.formItemData4HideKey(formItemModuleKey) :\n getters.formItemData4ShowKey(formItemModuleKey);\n return {\n ...data,\n ...(getters[`${ formItemModuleKey }/${ key }`] || {}),\n };\n }, {});\n },\n },\n mutations: {\n saveFormState(state, formState) {\n Vue.set(state, '_formState', formState);\n },\n saveFormNamespace(state, formNamespace) {\n Vue.set(state, '_formNamespace', formNamespace);\n },\n saveFormGetters(state, formGetters) {\n Vue.set(state, '_formGetters', formGetters);\n },\n },\n actions: {\n initState({ state, commit, getters }, { formState = {}, formGetters, formNamespace }) {\n commit('saveFormState', formState);\n commit('saveFormNamespace', formNamespace);\n commit('saveFormGetters', formGetters);\n\n getters.formItems.forEach((formItemModuleKey) => {\n commit(`${ formItemModuleKey }/saveFormState`, formState || {});\n commit(`${ formItemModuleKey }/saveFormGetters`, formGetters);\n commit(`${ formItemModuleKey }/saveFormNamespace`, formNamespace);\n commit(`${ formItemModuleKey }/saveFormGroupState`, state);\n commit(`${ formItemModuleKey }/saveFormGroupNamespace`, state._moduleKey);\n });\n },\n fillFormGroup({ dispatch, getters }, formData = {}) {\n // 每个form item自身决定取哪些数据\n getters.formItems.forEach((formItemModuleKey) => {\n dispatch(`${ formItemModuleKey }/data2State`, formData || {});\n });\n },\n },\n};\n","import Vue from 'vue';\n\nexport default {\n state() {\n return {\n _formState: {},\n _formGetters: {},\n _formNamespace: '',\n _formGroupState: {},\n _formGroupNamespace: '',\n };\n },\n getters: {\n formState(state) {\n return state._formState;\n },\n formGetters(state) {\n return state._formGetters;\n },\n formGroupState(state) {\n return state._formGroupState;\n },\n formNamespace(state) {\n return state._formNamespace;\n },\n formGroupNamespace(state) {\n return state._formGroupNamespace;\n },\n // 自身是否可见\n isSelfVisible(state, getters) {\n const target = getters.isVisible;\n // 没有 isVisible属性,则认为默认展示\n if (target === undefined) {\n return true;\n }\n return !!target;\n },\n },\n mutations: {\n update(state, newState = {}) {\n Object.keys(newState).forEach((key) => {\n state[key] = newState[key];\n });\n },\n saveFormState(state, formState = {}) {\n Vue.set(state, '_formState', formState);\n },\n saveFormNamespace(state, formNamespace) {\n Vue.set(state, '_formNamespace', formNamespace);\n },\n saveFormGroupState(state, formGroupState = {}) {\n Vue.set(state, '_formGroupState', formGroupState);\n },\n saveFormGetters(state, formGetters) {\n Vue.set(state, '_formGetters', formGetters);\n },\n saveFormGroupNamespace(state, formGroupNamespace) {\n Vue.set(state, '_formGroupNamespace', formGroupNamespace);\n },\n },\n};\n","export default {\n getters: {\n formGroups(state) {\n return state._formGroups || [];\n },\n /**\n * 集合表单所有下属表单项的state\n * {\n * 'form-item-1': formItem1State,\n * 'form-item-2': formItem2State\n * }\n */\n formModel(state, getters) {\n return getters.formGroups.reduce((model, formGroupModuleKey) => ({\n ...model,\n ...getters[`${ formGroupModuleKey }/formGroupModel`],\n }), {});\n },\n /**\n * 表单用于后端接口提交的数据, 所有数据全部打平\n * {\n * key1: value1,\n * key2: value2,\n * key3: value3,\n * }\n */\n formData(state, getters) {\n return getters.formGroups.reduce((data, formGroupModuleKey) => ({\n ...data,\n ...getters[`${ formGroupModuleKey }/formGroupData4Submit`],\n }), {});\n },\n formData4View(state, getters) {\n return getters.formGroups.reduce((data, formGroupModuleKey) => {\n const clearWhileHidden = getters[`${ formGroupModuleKey }/clearWhileHidden`];\n const isFormGroupVisible = getters.isFormGroupVisible(formGroupModuleKey);\n const key = (!!clearWhileHidden === true && !isFormGroupVisible) ? 'formGroupData4Submit' : 'formGroupData4View';\n return {\n ...data,\n ...getters[`${ formGroupModuleKey }/${ key }`],\n };\n }, {});\n },\n isFormGroupVisible(state, getters) {\n return formGroupName => getters[`${ formGroupName }/isSelfVisible`];\n },\n },\n actions: {\n initVuexModule({ dispatch, state, getters }) {\n // 将自身state分发到下属每个form group\n getters.formGroups.forEach(formGroupModuleKey => dispatch(`${ formGroupModuleKey }/initState`, {\n formState: state,\n formGetters: getters,\n formNamespace: state._moduleKey,\n }));\n },\n\n fillForm({ dispatch, getters }, backendData = {}) {\n // 利用后端数据回填表单,分发到每个form group来做\n getters.formGroups.forEach(formGroupModuleKey => dispatch(`${ formGroupModuleKey }/fillFormGroup`, backendData || {}));\n },\n },\n};\n","// 继承module, 返回一个新的module,不会改变原有module\nexport default function (baseModule, childModule = {}) {\n if (!baseModule) {\n return childModule;\n }\n\n // state的合并比较麻烦,因为state可以是一个函数\n const { state: baseState } = baseModule;\n // 归一化baseModule的state\n const normalizeBaseState = (typeof baseState === 'function') ? baseState() : (baseState || {});\n const { state: childState } = childModule;\n // 归一化childModule的state,糅合baseModule的state\n const mergedState = (typeof childState === 'function') ?\n () => ({\n ...normalizeBaseState,\n ...childState(),\n }) :\n {\n ...normalizeBaseState,\n ...(childState || {}),\n };\n\n const mergeObject = prop => ({\n ...(baseModule[prop] || {}),\n ...(childModule[prop] || {}),\n });\n\n const result = {\n namespaced: childModule.namespaced || baseModule.namespaced || true,\n state: mergedState,\n getters: mergeObject('getters'),\n mutations: mergeObject('mutations'),\n actions: mergeObject('actions'),\n modules: mergeObject('modules'),\n };\n\n return result;\n}\n","import extendsModule from './extends-module';\nimport registerMfModule from './register-module';\nimport moduleKeys from './module-keys';\nimport baseForm from './base-form';\nimport baseFormItem from './base-form-item';\nimport baseFormGroup from './base-form-group';\n\nexport {\n extendsModule,\n registerMfModule,\n moduleKeys,\n baseForm,\n baseFormItem,\n baseFormGroup,\n};\n","export default function (modules = []) {\n return modules.map(m => m.state._moduleKey);\n}\n","export default function (modules = []) {\n return modules.reduce((result, m) => ({\n ...result,\n [m.state._moduleKey]: m,\n }), {});\n}\n","import _ from 'lodash';\n\n// 同步表单项module\nexport default function createSyncPlugin(namespace) {\n return (store) => {\n store.dispatch(`${namespace}/initVuexModule`);\n store.watch((state, getters) => getters[`${namespace}/formData4View`], (newVal, oldVal) => {\n if (!_.isEqual(newVal, oldVal)) {\n store.dispatch(`${namespace}/fillForm`, newVal);\n }\n }, {\n deep: true,\n });\n };\n}\n","import Vuex from 'vuex';\nimport createSyncPlugin from 'src/store/base/sync-module-plugin';\n\nimport modules from './modules';\nimport state from './state';\nimport actions from './actions';\nimport mutations from './mutations';\n\nVue.use(Vuex);\n\nconst noProdENV = process.env.NODE_ENV !== 'production';\n\nconst store = new Vuex.Store({\n state,\n mutations: {\n ...mutations,\n },\n modules,\n actions,\n plugins: [\n createSyncPlugin('library/playable-check'), // 用于指定module的内部数据同步插件\n createSyncPlugin('creative/procedural-creative-form'),\n createSyncPlugin('creative/playable-card-form'),\n ],\n strict: noProdENV,\n});\n\nexport default store;\n","/**\n * User 有关信息\n */\nimport { accoutType } from 'src/const/account';\nimport apis from 'src/const/apis';\nimport {\n accountRole, advertiserStatus, qualificationImgsType, QualificationStatus, QualificationType, QualificationSource, STATE_GEOID,\n} from 'src/const/state/account';\nimport * as types from 'src/store/types';\nimport { getUpdateAccountInfoData } from 'src/utils/selfAccountUtil';\nimport request from 'src/utils/request';\nimport moment from 'moment-timezone';\nimport { currencyLocale } from 'src/const/currencyLocale';\nimport { getAbVersion } from 'src/service/index';\nimport { dashboardAccountStatus } from 'src/service/dashboard';\n\nconst user = {\n namespaced: true, // 带 account 命名空间\n state: {\n ttcmAccountId: '',\n accountStatus: '',\n accountInfo: {}, // advertiser 账户详情info\n contactInfo: {\n sensitive: {},\n not_sensitive: {},\n }, // 联系人信息\n permissionData: {}, // permission 相关信息\n hasFetchedAccountInfo: false, // 是否已经使用 advertiser/info 接口拉取过完整账户信息\n roles: [],\n showNavbar: false,\n aadvid: '',\n advertiserName: '',\n allAccountList: [],\n authStatus: false,\n coreUserInfo: {}, // 登录状态检测的 coreUserInfo\n tzList: [], // { timezone: string, gmt_offset: string, i18n_key: string }[] 所有可选地点格式时区\n shopifyDetail: {}, // shopify 预填信息\n whiteListObj: {}, // 白名单\n couponTotalBalance: 0,\n qualificationList: [],\n taxValue: {},\n utcOffset: null,\n accountOwnBC: {}, // 通过adv账号去查当前账号对应的bc账号的own bc相关的数据\n isTTP: false, // 是否 ttp 打标\n fixedOffsetTimezone: null,\n hasNeedPostInvoiceInfo: false,\n currencyLocale: null, // 货币本地化配置信息,\n enableHideComment: false, // 是否命中comment ab实验并且隐藏评论\n creationStatistics: {}, // adv 下的 campaign、adgroup、ad 数量\n },\n getters: {\n isStaffIdExist: state => !!(state.permissionData?.staff?.staff_id),\n adverId: state => state.permissionData?.account?.id || '',\n adverName: state => state.permissionData?.account.name || '',\n currency: state => state.permissionData?.account?.currency || '',\n accountType: state => state.permissionData?.account?.customer_type_value,\n // 切记 !!!accountInfo 接口只在一些页面(资质页面等)才有,不能用 accountInfo 生成可能在全局使用的 hook\n // 只能在有拉取 advertiser/info 接口的地方使用\n accountInfo: state => state.accountInfo || {},\n loginId: state => state.permissionData?.account?.id || '0',\n visitorId: state => state.permissionData?.staff?.staff_id || '0',\n accountCreateTime: state => state.permissionData?.account?.create_time,\n accountNum: (state) => {\n if (state.allAccountList.length === 0) {\n return 0;\n }\n\n let num = 0;\n state.allAccountList.forEach((item) => {\n if (+item.role !== accoutType.STATUS_BUSINESS_MANAGER && +item.role !== accoutType.STATUS_PENDING_CONFIRM) {\n num += 1;\n } else {\n num += item.child ? item.child.length : 0;\n }\n });\n\n return num;\n },\n orgNum: (state) => {\n const list = state.allAccountList.filter(item => (\n +item.role === accoutType.STATUS_BUSINESS_MANAGER ||\n +item.role === accoutType.STATUS_PENDING_CONFIRM\n ));\n return list.length;\n },\n firstAccount: (state) => {\n const role = (state.allAccountList[0] && +state.allAccountList[0].role);\n\n if (role === undefined) {\n return { id: '', name: '' };\n }\n\n if (role !== accoutType.STATUS_BUSINESS_MANAGER && role !== accoutType.STATUS_PENDING_CONFIRM) {\n return state.allAccountList[0];\n }\n const listParents = state.allAccountList.filter(item => item.child.length > 0);\n return listParents[0] || { id: '', name: '' };\n },\n accountRole: state => state?.permissionData?.account?.role,\n qualificationSource: state => +state.permissionData?.account?.qualification_source,\n isBeCompleted: state => +state.accountStatus === advertiserStatus.PROMOTION_SELF_SERVICE, // 是否自助待补全资质\n isSelfAccount: state => +state.permissionData?.account?.customer_type_value === accountRole.ROLE_SLEF_ACCOUNT, // 是否自助客户\n isKaAccount: state => +state.permissionData?.account?.customer_type_value === accountRole.ROLE_COMMON_ACCOUNT, // 是否 ka 客户\n isVirtualAccount: state => +state.permissionData?.account?.customer_type_value === accountRole.ROLE_VIRTAUL_ACCOUNT, // 是否虚客\n // https://bytedance.feishu.cn/docs/doccn1V1DQYMRaZCKTFgRqaPhEf 判断规则\n isCommonSelfAccount: (_, getters) => getters.isSelfAccount\n && getters.accountRole === 0\n && getters.qualificationSource === QualificationSource.BC, // 是否直客自助客户\n isVirtaulSelfAccount: (_, getters) => getters.isSelfAccount\n && getters.accountRole === 2\n && getters.qualificationSource === QualificationSource.NOT_FROM_BC, // 是否虚客自助客户\n isSelfBcAccount: (_, getters) => getters.isCommonSelfAccount || getters.isVirtaulSelfAccount, // 是否自助 BC | 自助bc 子账户,bc自助直客 + bc自助虚客\n isNotBcChildSelfAccount: (_, getters) => getters.isSelfAccount\n && getters.accountRole === 0\n && getters.qualificationSource === QualificationSource.NOT_FROM_BC, // 自助但非自助bc\n isRoleVirtualAccount: (_, getters) => getters.accountRole === 2, // 这里可能判断有问题,但是是历史逻辑,先不动了\n localeTzList: state => state.tzList || [],\n shopifyDetail: state => state.shopifyDetail || {},\n permissionData: state => state.permissionData || {},\n qualificationListKey(state, getters, rootState, rootGetter) {\n // 动态计算\n return `${rootGetter['campaign/modelKey']}:qulification`;\n },\n country: state => state.permissionData?.account?.country || '',\n taxVat: state => state.taxValue?.vat,\n hasOwnBc: state => state.accountOwnBC?.is_own_by_bc && state.accountOwnBC?.is_bc_admin && !!state.accountOwnBC?.org_id,\n orgId: state => state.accountOwnBC?.org_id,\n hasAd: (state) => {\n const { active = 0, spending = 0, not_delivery: notDelivery = 0 } = state.creationStatistics?.campaigns || {};\n // 其中有一个 > 0 则 has_ad = true\n return Number(active + spending + notDelivery) > 0;\n },\n enableSelfQualDialog(state, getters) {\n // 自助非 bc + 为2022 年后创建的 adv,因为2020年可能存在一些未有 business name 或者联系人信息的adv\n // 资质弹窗目前不支持这类信息补充\n return getters.isNotBcChildSelfAccount &&\n new Date(getters.accountCreateTime).valueOf() > new Date('2022-06-24').valueOf();\n },\n // 自助客户是否需要确认补充发票信息\n selfAccountNeedConfirmInvoice(state, getters, rootState, rootGetters) {\n const { hasNeedPostInvoiceInfo } = state;\n const { enableSelfQualDialog } = getters;\n const hasPostInvoiceConfirm = rootGetters['popupStatus/hasPostInvoiceConfirm'];\n return enableSelfQualDialog && hasNeedPostInvoiceInfo && !hasPostInvoiceConfirm;\n },\n },\n mutations: {\n [types.SET_TAX_VALUE](state, taxValue) {\n state.taxValue = taxValue;\n },\n [types.SET_ACCOUNT_INFO](state, accountInfo) {\n state.accountInfo = accountInfo || {};\n state.accountStatus = accountInfo?.status;\n },\n [types.SET_HAS_FETCHED_ACCOUNT_INFO](state, data) {\n state.hasFetchedAccountInfo = data;\n },\n [types.SET_CONTACT_INFO](state, contactInfo) {\n state.contactInfo = {\n ...state.contactInfo,\n ...contactInfo,\n };\n },\n [types.SET_PERMISSION_DATA](state, permissionData) {\n state.permissionData = permissionData;\n state.accountStatus = permissionData?.account?.status;\n },\n [types.SET_CORE_USER_INFO](state, info) {\n state.coreUserInfo = info || {};\n },\n [types.SET_AADVID](state, aadvid) {\n state.aadvid = aadvid;\n },\n [types.SET_ADVERTISERNAME](state, data) {\n state.advertiserName = data;\n },\n [types.SET_ACCOUNT_BALANCE](state, accountBalance) {\n state.accountBalance = accountBalance;\n },\n [types.SET_SHOW_NAVBAR](state, flag) {\n state.showNavbar = !!flag;\n },\n [types.SET_AUTH_STATUS](state, status) {\n state.authStatus = status;\n },\n\n [types.SET_ACCOUNT_LIST](state, list) {\n state.allAccountList = list;\n },\n [types.SET_TIMEZONELIST](state, localeTzList = []) {\n state.tzList = localeTzList;\n },\n\n [types.SET_SHOPIFY_DETAIL](state, data = {}) {\n state.shopifyDetail = data;\n },\n [types.SET_WHIHT_LIST](state, data = {}) {\n state.whiteListObj = data;\n },\n [types.SET_COUPON_TOTAL_BALANCE](state, data = 0) {\n state.couponTotalBalance = data;\n },\n [types.SET_QUALIFICATION_LIST](state, data = {}) {\n state.qualificationList = data;\n },\n [types.SET_UTC_OFFSET](state, data) {\n state.utcOffset = data;\n },\n [types.SET_ACCOUNT_OWN_BC](state, data) {\n state.accountOwnBC = data;\n },\n [types.SET_TTP_STATUS](state, data) {\n state.isTTP = data;\n },\n [types.SET_FIXED_OFFSET_TIMEZONE](state, data) {\n state.fixedOffsetTimezone = data;\n },\n [types.SET_HAS_NEED_POST_INVOICE_INFO](state, data) {\n state.hasNeedPostInvoiceInfo = data;\n },\n [types.SET_CURRENCY_LOCALE](state, data) {\n state.currencyLocale = data;\n window.CURRENCY_LOCALE = data;\n },\n [types.SET_TTCM_ACCOUNT_ID](state, data) {\n state.ttcmAccountId = data;\n },\n [types.SET_ENABLE_HIDE_COMMENT](state, data) {\n state.enableHideComment = data;\n },\n [types.SET_CREATION_STATISTICS](state, data) {\n state.creationStatistics = data;\n },\n },\n\n actions: {\n async getContactInfo({ commit }, { sensitive_flag, is_self_account }) {\n const { code, data, msg } = await request.get(apis.account.contact_info, { sensitive_flag });\n let contactInfo = null;\n if (code === 0) {\n const { contact_info } = data;\n // 明文请求需要使用BASE64解码\n if (sensitive_flag) {\n Object.keys(contact_info).forEach((key) => {\n const value = contact_info[key];\n // 国家码不需要转码\n if (['contacter_telephone_country', 'phonenumber_country'].includes(key)) return;\n try {\n contact_info[key] = value ? decodeURIComponent(escape(atob(value))) : '';\n } catch (err) {\n contact_info[key] = value;\n }\n });\n }\n contactInfo = {\n ...contact_info,\n telephone: contact_info.telephone || (is_self_account ? contact_info.phonenumber : ''), // 自助账号如果telephone不存在用phonenumber默认填充\n contacter_telephone_country: contact_info.contacter_telephone_country || '',\n contacter_email: contact_info.contacter_email || (is_self_account ? contact_info.email : ''), // 自助默认用注册邮箱填充\n };\n if (!is_self_account) {\n contactInfo.phonenumber = contact_info.phonenumber || '';\n contactInfo.phonenumberCountry = contact_info.phonenumber_country || '';\n }\n commit(types.SET_CONTACT_INFO, sensitive_flag ? { sensitive: contactInfo } : { not_sensitive: contactInfo });\n }\n return contactInfo || new Error(msg);\n },\n async getCommentToolNewUser({ commit }) {\n const data = await getAbVersion({ ab_feature: 'comment_tool_new_user' });\n const { hit_comment_tool_ab = false } = data;\n commit(types.SET_ENABLE_HIDE_COMMENT, hit_comment_tool_ab?.hide);\n },\n getNotification() {\n return request.get(apis.account.get_notification);\n },\n majordomoDelete() {\n return request.get(apis.majordomo_delete);\n },\n\n getCampaignStatus() {\n return request.get(apis.account.ad_info);\n },\n\n getPONumber() {\n return request.get(apis.account.PONumber);\n },\n updatePONumber(data, payload) {\n return request.post(apis.account.PONumber, payload);\n },\n\n canChangeBusinessName() {\n return request.get(apis.account.canChangeBusinessName);\n },\n\n getTotalCost() {\n return request.get(apis.dashboard.dashboardCost, {\n source: 3, // 3 代表tiktok竞价平台\n });\n },\n // 横幅提醒\n getNotifyMsg() {\n return request.get(apis.account.notification_msg);\n },\n // 获取账号列表\n async getAccountList({ commit }) {\n try {\n const { data } = await request.get(apis.account.accountList);\n commit(types.SET_ACCOUNT_LIST, data.data || []);\n commit(types.SET_AUTH_STATUS, true);\n } catch (e) {\n commit(types.SET_ACCOUNT_LIST, []);\n commit(types.SET_AUTH_STATUS, false);\n }\n },\n\n getAdChartStatus({ commit }, data) {\n return request.get(apis.account.advertiser_chart, data);\n },\n\n // 获取广告主惩罚消息\n getPunishInfo({ commit }, data) {\n return request.get(apis.account.punish_info, data);\n },\n\n setAccountAadvidAndName({ commit }, data) {\n const { aadvid, advertiserName } = data;\n try {\n commit(types.SET_AADVID, aadvid);\n commit(types.SET_ADVERTISERNAME, advertiserName);\n } catch (e) {\n commit(types.SET_AADVID, '');\n commit(types.SET_ADVERTISERNAME, '');\n }\n },\n\n /**\n * 获取账户信息\n * advertiser/info 接口\n */\n async loadAccountInfo({ commit }, params) {\n let data = {};\n try {\n const requestArr = [request.get(apis.account.info, params), user.actions.loadAccountReviewInfo()];\n const [accountData, reviewData] = await Promise.all(requestArr);\n data = { ...accountData.data, ...reviewData };\n // window.LOGIN_INFO = data;\n\n // 处理美国夏威夷 city => county 后端刷库前,使 存量city 展示为 county;\n if (data.state === STATE_GEOID.HAWAII) {\n data.county = data.county && data.county !== -1 ? data.county : data.city;\n data.city = null;\n }\n // end\n\n commit(types.SET_ACCOUNT_INFO, data);\n commit(types.SET_HAS_FETCHED_ACCOUNT_INFO, true);\n } catch (e) {\n // window.LOGIN_INFO = {};\n commit(types.SET_ACCOUNT_INFO, {});\n data = {};\n }\n return data;\n },\n\n /**\n * 加载 permission account info\n * 与 loadAccountInfo 区别:\n * 1. account info 主要在账户信息、资质页等使用,\n * 2. permission info 主要用于访问鉴权登录\n * @param {Object} params 入参\n */\n async loadPermissionData({ commit, dispatch, rootState }, params) {\n let [data] = await request\n .get(apis.account.permission, params)\n .then(data => [data, null])\n .catch(err => [null, err]);\n data = data?.data || {};\n window.PERMISSION_DATA = data;\n const { country = '', currency = '' } = data.account || {};\n const localeValue = currencyLocale[country];\n if (localeValue && localeValue.currency === currency\n && localeValue.apply_lang?.includes(rootState.currentLang)) {\n commit(types.SET_CURRENCY_LOCALE, localeValue);\n } else {\n commit(types.SET_CURRENCY_LOCALE, null);\n }\n commit(types.SET_PERMISSION_DATA, data);\n const advInfo = {\n aadvid: data?.account?.id || '',\n advertiserName: data?.account?.name || '',\n };\n dispatch('setAccountAadvidAndName', advInfo);\n return data;\n },\n\n /** [TTP] 获取 aadvid 纬度的打标信息 */\n async getTtpTagByAadvid({ commit }, aadvid) {\n let isTTP = false;\n try {\n const res = await request.post(apis.account.getTTPFlag, { object_type: 1, object_id: aadvid });\n /** 1 ttp, 2 non ttp */\n isTTP = res?.data?.region_type === 1;\n } catch (e) {\n isTTP = false;\n }\n commit(types.SET_TTP_STATUS, isTTP);\n return isTTP;\n },\n\n async loadWhiteList({ commit }) {\n let res = {};\n try {\n res = await request.get(apis.account.white_list);\n } catch (e) {\n res = {};\n }\n const data = res?.data || {};\n commit(types.SET_WHIHT_LIST, data);\n return data;\n },\n\n // 获取账户附加信息,如时区 offset\n async loadExtra({ state, commit }) {\n try {\n const res = await request.get(apis.account.extra);\n const utcOffset = res.data.timezone.value;\n if (typeof utcOffset === 'number') {\n commit(types.SET_UTC_OFFSET, utcOffset);\n\n const accountTimezone = state.permissionData?.account?.timezone;\n if (accountTimezone) {\n const fixedOffsetAccountTimeZoneName = `${accountTimezone}/${utcOffset}`;\n const fixedOffsetAccountTimeZoneObject = {\n name: fixedOffsetAccountTimeZoneName,\n abbrs: [moment().utcOffset(utcOffset).format('Z')],\n untils: [null],\n offsets: [utcOffset],\n };\n moment.tz.add(moment.tz.pack(fixedOffsetAccountTimeZoneObject));\n commit(types.SET_FIXED_OFFSET_TIMEZONE, fixedOffsetAccountTimeZoneName);\n }\n }\n } catch {\n return {};\n }\n },\n\n // 新增接口,获取账户拒审信息\n async loadAccountReviewInfo() {\n let businessReviewData;\n try {\n const { data } = await request.get('/api/v3/i18n/account/qualification/detail/');\n const { qualifications = [] } = data;\n businessReviewData = {\n qualification_reject_reasons: {},\n qualification_new_secret: [],\n qualification_url_secret: [],\n\n };\n for (let index = 0; index < qualifications.length; index++) {\n const item = qualifications[index];\n if (item.qualification_status === QualificationStatus.reject) {\n const key = item.qualification_type !== qualificationImgsType ? QualificationType[item.qualification_type]\n : item.qualification_value.qualification_url_secret;\n businessReviewData.qualification_reject_reasons[key] = item.reason;\n }\n // 资质图片没有唯一ID,所以这里重新获取一次数据重新对应拒审理由\n if (item.qualification_type === qualificationImgsType) {\n businessReviewData.qualification_new_secret.push(item.qualification_value.qualification_new_secret);\n businessReviewData.qualification_url_secret.push(item.qualification_value.qualification_url_secret);\n }\n }\n } catch (e) {\n businessReviewData = {};\n }\n return businessReviewData;\n },\n\n // 获取账户登录态检测\n async loadLoginInfo({ commit }) {\n let data;\n try {\n ({ data } = await request.get(apis.account.passport));\n commit(types.SET_CORE_USER_INFO, data);\n } catch (e) {\n commit(types.SET_CORE_USER_INFO, {});\n return Promise.reject(e);\n }\n return data;\n },\n // 账户资质 补全提交\n accountUpdate({ commit }, data) {\n return request.post(apis.account.accountUpdate, getUpdateAccountInfoData(data));\n },\n // 自助首次提交资质\n firstPostAccountInfo({ commit }, data) {\n return request.post(apis.account.firstPostAccountInfo, getUpdateAccountInfoData(data)).catch((err) => {\n // 已经提交过资质,以成功作为兜底\n if (err?.code === 1001) {\n return Promise.resolve();\n }\n return Promise.reject();\n });\n },\n // 沙特税务请求\n getVerificationStatus({ commit }, data) {\n return request.get(apis.account.verificationStatus, data);\n },\n async getTaxInfo({ dispatch, commit }) {\n const { data = {} } = await dispatch('getVerificationStatus').catch(() => ({}));\n const { tax_value } = data;\n commit(types.SET_TAX_VALUE, tax_value || {});\n },\n getGeoByCodeNew({ commit }, data) {\n // 根据geoid查询children 地理中台\n return request.get(apis.account.getGeoByCodeNew, data);\n },\n getGeoByCode({ commit }, data) {\n // 根据geoid查询children toolbox\n return request.get(apis.account.getGeoByCode, data);\n },\n getReginNameByCode({ commit }, data) {\n // 根据geoid查询geoName\n return request.get(apis.account.getReginNameByCode, data);\n },\n cancelAccount({ commit }, data) {\n // 销户\n return request.post(apis.account.cancel_account, data);\n },\n async getLocaleTzList({ commit, getters }, params) {\n // 缓存\n if (getters.localeTzList.length) {\n return getters.localeTzList;\n }\n try {\n const { data: resp } = await request.get(apis.account.all_timezone_list, params);\n /**\n * timezone_list format:\n *\n * [\n * {\n \"i18n_key\": \"tz_key_Africa/Tunis\",\n \"timezone\": \"Africa/Tunis\",\n \"gmt_offset\": \"GMT-01:00\"\n },\n {\n \"i18n_key\": \"tz_key_Europe/Istanbul\",\n \"timezone\": \"Europe/Istanbul\",\n \"gmt_offset\": \"GMT-02:00\"\n },\n ]\n */\n commit(types.SET_TIMEZONELIST, resp.timezone_list);\n return resp.timezone_list || [];\n } catch (e) {\n commit(types.SET_TIMEZONELIST, []);\n return [];\n }\n },\n\n checkTaxVat({ commit }, data) {\n return request.post(apis.account.check_tax_vat, data);\n },\n\n // for closing postpay account\n checkAllAdsOff({ commit }, data) {\n return request.post(apis.close.check_all_ads_off, data);\n },\n getBillStatus({ commit }, data) {\n return request.get(apis.close.bill_status, data);\n },\n getQualificationList({ commit }, data) {\n return request.post(apis.account.getQualificationList, data);\n },\n deleteQualification({ commit }, data) {\n return request.post(apis.account.deleteQualification, data);\n },\n checkIptTextLanguage({ commit }, data) {\n return request.post(apis.account.checkIptTextLanguage, data);\n },\n async checkHasNeedPostInvoiceInfo({ commit }, data) {\n const { data: resp } = await request.get(apis.account.checkHasNeedPostInvoiceInfo, data);\n commit(types.SET_HAS_NEED_POST_INVOICE_INFO, resp.is_post_fulfill_country);\n },\n async saveDraft({ getters, dispatch }, data) {\n const list = await dispatch('getDraft');\n if (!data.timestamp) {\n list.push({\n ...data,\n timestamp: `${Date.now()}`,\n });\n } else {\n let found = false;\n list.forEach((item, index) => {\n if (item.timestamp === data.timestamp) {\n list.splice(index, 1, data);\n found = true;\n }\n });\n if (!found) {\n list.push({\n ...data,\n timestamp: Date.now(),\n });\n }\n }\n window.localStorage.setItem(getters.qualificationListKey, JSON.stringify(list));\n },\n getDraft({ getters }) {\n try {\n return JSON.parse(window.localStorage.getItem(getters.qualificationListKey) || '[]');\n } catch (e) {\n return {};\n }\n },\n async deleteDraft({ getters, dispatch }, timestamp) {\n const list = await dispatch('getDraft');\n for (let i = 0; i < list.length; i++) {\n if (list[i].timestamp === timestamp) {\n list.splice(i, 1);\n break;\n }\n }\n window.localStorage.setItem(getters.qualificationListKey, JSON.stringify(list));\n },\n async getAccountOwnBc({ commit }, params) {\n try {\n const { data } = await request.get(apis.account.bcOwnDetails, params);\n commit(types.SET_ACCOUNT_OWN_BC, data || {});\n } catch (e) {\n commit(types.SET_ACCOUNT_OWN_BC, {});\n }\n },\n\n async getTTCMAccount({ commit, state }) {\n try {\n const { data } = await request.get(apis.account.checkTTCMAccount, {\n ttam_account_id: state.aadvid,\n });\n commit(types.SET_TTCM_ACCOUNT_ID, data.ttcm_account_id);\n } catch (error) {\n commit(types.SET_TTCM_ACCOUNT_ID, '');\n }\n },\n async getCreationStatistics({ commit }, params = {}) {\n const { dims = 'campaign_id' } = params;\n try {\n const { data = {} } = await dashboardAccountStatus({\n dims,\n });\n commit(types.SET_CREATION_STATISTICS, data);\n } catch (e) {\n commit(types.SET_CREATION_STATISTICS, {});\n }\n },\n },\n};\n\nexport default user;\n","/**\n * Ad Create Module\n */\nimport _ from 'lodash';\nimport * as types from 'src/store/types';\n\n// 初始化数据\nconst initState = {\n loading: false,\n showSelectModal: false,\n actionOptions: [],\n adCopiedInfo: {},\n};\n\nconst state = {\n ..._.cloneDeep(initState),\n\n // 用于重置数据时候调用\n initState,\n};\n\nconst getters = {};\n\nconst mutations = {\n [types.SET_LOADING_STATE](state, { status }) {\n state.loading = status;\n },\n\n [types.SET_SELECT_MODAL_STATE](state, { status }) {\n state.showSelectModal = status;\n },\n\n [types.SET_ACTION_OPTIONS](state, { actionOptions }) {\n state.actionOptions = actionOptions;\n },\n\n [types.COPY_AD](state, adCopiedInfo) {\n state.adCopiedInfo = adCopiedInfo;\n },\n\n [types.RESET_STATES](state) {\n for (const item of Object.keys(state)) {\n if (_.has(state.initState, item)) {\n state[item] = state.initState[item];\n }\n }\n },\n};\n\nconst actions = {\n\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","import { identityTypeMap } from 'src/const/state/creative';\nimport * as types from '../../types';\n\nexport default {\n namespaced: true,\n state: {\n isNotHasCustom: false,\n validateField: null,\n addForm: {\n identity_type: identityTypeMap.FAKE_USER,\n display_name: '',\n avatar_icon: {},\n },\n },\n mutations: {\n [types.SET_ADD_FORM_IDENTITY](state, { prop, value }) {\n state.addForm[prop] = value;\n },\n [types.SET_ADD_FORM_IDENTITY_ALL](state, data) {\n state.addForm = data;\n },\n [types.SET_CUSTOM_VALIDATE_FIELD](state, { validateField }) {\n state.validateField = validateField;\n },\n [types.SET_IS_NOT_HAS_CUSTOM](state, type) {\n state.isNotHasCustom = type;\n },\n },\n actions: {\n\n },\n getters: {\n\n },\n};\n","import create from './create';\nimport list from './list';\nimport identity from './identity';\n\nexport default {\n namespaced: true,\n modules: {\n list,\n create,\n identity,\n },\n};\n","/**\n * campaign list 相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport { getDate } from 'src/utils/dateUtil';\nimport { isDiagnosisV2White } from 'src/const/whiteList';\nimport * as types from '../../types';\n\nconst SET_PERF_OPERATED_ANCHOR = `perf/${types.SET_PERF_OPERATED_ANCHOR}`;\n\nexport default {\n namespaced: true,\n state: {\n adgroupListToken: null,\n diagnosisDailyData: {},\n },\n mutations: {\n [types.SET_REQUEST_TOKEN](state, data) {\n state.adgroupListToken = data;\n },\n [types.SET_DIAGNOSIS_DAILY_DATA](state, data) {\n state.diagnosisDailyData = {\n ...state.diagnosisDailyData,\n ...Object.fromEntries(data.map(item => [item.ad_id, item])),\n };\n },\n },\n actions: {\n getAdReportStat(store, data) {\n return request.get(apis.ad.new_report_stat, data);\n },\n\n // 获取需要复制的计划信息\n getAdCopyInfo(store, data) {\n return request.get(apis.ad.copy, data);\n },\n\n // 获取 AdGroup 列表\n getAdGroupList({ state, commit }, data) {\n // 重复请求时清除之前的请求\n if (state.adgroupListToken) {\n state.adgroupListToken.cancel();\n }\n\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_REQUEST_TOKEN, source);\n return request.post(apis.ad.newStatisticList, data, {\n cancelToken: source.token,\n });\n },\n\n async loadDiagnosisDailyData({ commit, rootState }, adGroupIds) {\n if (!isDiagnosisV2White()) {\n return;\n }\n\n const { utcOffset } = rootState.account;\n const today = (typeof utcOffset === 'number' ? getDate()().utcOffset(utcOffset) : getDate()()).format('YYYY-MM-DD');\n const res = await request.post(apis.ad.newStatisticList, {\n ad_ids: adGroupIds,\n st: today,\n et: today,\n limit: 1000, // 设定一个极大值兼容不同列表分页大小\n query_list: ['stat_cost', 'time_attr_convert_cnt', 'time_attr_conversion_cost'],\n });\n\n const diagnosisDailyData = res.data.table.map((item) => {\n const { ad_id, stat_data } = item ?? {};\n const { stat_cost, time_attr_convert_cnt, time_attr_conversion_cost } = stat_data ?? {};\n return {\n ad_id, stat_cost, time_attr_convert_cnt, time_attr_conversion_cost,\n };\n });\n\n commit(types.SET_DIAGNOSIS_DAILY_DATA, diagnosisDailyData);\n },\n\n // 更改 AdGroup 状态\n updateAdStatus({ commit }, data) {\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.postForm(apis.ad.update_status, data);\n },\n\n // 修改出价\n updateAdBid({ commit }, requestData) {\n const { ad, data } = requestData;\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.postForm(apis.ad.update_bid(ad), data);\n },\n\n // 修改预算\n updateAdBudget({ commit }, requestData) {\n const { ad, data } = requestData;\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.postForm(apis.ad.update_budget(ad), data);\n },\n\n /** 修改定时预算 */\n updateAdScheduledBudget(store, { ad_id, data }) {\n return request.postForm(apis.ad.update_scheduled_budget(ad_id), data);\n },\n\n // 创建预览\n createAdPreview(store, data) {\n return request.postForm(apis.ad.preview_create, data);\n },\n\n // 获取预览二维码url\n getQrcodeUrl(store, data) {\n return request.postForm(apis.ad.preview_qr, data);\n },\n\n // 批量修改出价\n updateAdBatchBid({ commit }, data) {\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.postForm(apis.ad.batch_update_bid, data);\n },\n\n // split test一键放量\n splitTestToAll(store, data) {\n return request.postForm(apis.ad.splitTestToAll, data);\n },\n // split test关停实验\n splitTestStopTest(store, data) {\n return request.postForm(apis.ad.splitTestStopTest, data);\n },\n\n },\n};\n","/**\n * 受众有关\n */\nimport request from 'src/utils/request';\n\nexport default {\n namespaced: true,\n\n actions: {\n getAudienceAnalysis({ commit }, url) {\n return request.get(url);\n },\n },\n};\n","import { accountOwnerType, accountOwnerTypeMap } from 'src/const/agent';\nimport apis from 'src/const/apis';\nimport { invoicePresentMap } from 'src/const/state/account';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\n\nconst bc = {\n namespaced: true,\n state: {\n showCompleteBcAccess: false,\n showCompleteBcPartner: false,\n invoiceInfo: {}, // 开票信息\n info: {\n registeredArea: '',\n orgId: '',\n },\n billingConfig: {\n taxInfo: {},\n },\n },\n getters: {\n canShowInvoiceInfo: (state) => {\n const { present_info: status } = state.invoiceInfo;\n return (status !== undefined) && (status !== invoicePresentMap.HIDE);\n },\n },\n mutations: {\n [types.SET_SHOW_BC_SECTION](state, data) {\n state.showCompleteBcAccess = data.showCompleteBcAccess;\n state.showCompleteBcPartner = data.showCompleteBcPartner;\n },\n [types.SET_INVOICE_INFO](state, data = {}) {\n state.invoiceInfo = data;\n },\n [types.SET_BC_INFO](state, data = {}) {\n state.info = {\n registeredArea: data.registered_area,\n bcId: data.org_id,\n };\n },\n [types.SET_BILLING_CONFIG](state, data = {}) {\n state.billingConfig = {\n taxInfo: data.tax_info_mapping,\n };\n },\n },\n actions: {\n getBcManageList({ commit, getters }, data) {\n return request.get(apis.bc.bc_manage_list, data).then(({ data }) => {\n if (!data) {\n return data;\n }\n const accountOwner = data.account_owner_type;\n const list = data.organizations;\n const showCompleteBcAccess = !getters.isBeCompleted && (accountOwnerTypeMap[accountOwner] !== undefined);\n const showCompleteBcPartner = !getters.isBeCompleted && (accountOwner === accountOwnerType.BC) && list.length;\n\n commit(types.SET_SHOW_BC_SECTION, { showCompleteBcAccess, showCompleteBcPartner });\n return data;\n });\n },\n accountRemoveBc({ commit }, data) {\n return request.post(apis.bc.account_remove_bc, data);\n },\n getInvoiceInfo({ commit }) {\n return request.get(apis.bc.billing_info).then((res) => {\n const { data } = res;\n commit(types.SET_INVOICE_INFO, data);\n return data;\n });\n },\n updateInvoiceInfo({ commit }, data) {\n return request.post(apis.bc.billing_info, data);\n },\n getBcInfo({ commit }) { // 目前只在开票区域请求\n return request.get(apis.bc.info).then(({ data }) => {\n commit(types.SET_BC_INFO, data);\n return data;\n });\n },\n getBillingConfig({ commit }) {\n return request.get(apis.bc.billing_config).then(({ data }) => {\n commit(types.SET_BILLING_CONFIG, data);\n return data;\n });\n },\n },\n};\n\nexport default bc;\n","/**\n * Ad Create Module\n */\nimport _ from 'lodash';\nimport * as types from 'src/store/types';\n\n// 初始化数据\nconst initState = {\n loading: false,\n showSelectModal: false,\n actionOptions: [],\n adCopiedInfo: {},\n};\n\nconst state = {\n ..._.cloneDeep(initState),\n\n // 用于重置数据时候调用\n initState,\n};\n\nconst getters = {};\n\nconst mutations = {\n [types.SET_LOADING_STATE](state, { status }) {\n state.loading = status;\n },\n\n [types.SET_SELECT_MODAL_STATE](state, { status }) {\n state.showSelectModal = status;\n },\n\n [types.SET_ACTION_OPTIONS](state, { actionOptions }) {\n state.actionOptions = actionOptions;\n },\n\n [types.COPY_AD](state, adCopiedInfo) {\n state.adCopiedInfo = adCopiedInfo;\n },\n\n [types.RESET_STATES](state) {\n for (const item of Object.keys(state)) {\n if (_.has(state.initState, item)) {\n state[item] = state.initState[item];\n }\n }\n },\n};\n\nconst actions = {\n\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","import create from './create';\nimport list from './list';\n\nexport default {\n namespaced: true,\n modules: {\n list,\n create,\n },\n};\n","/**\n * campaign list 相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\n\nexport default {\n namespaced: true,\n actions: {\n getAdReportStat(store, data) {\n return request.get(apis.brand.report_stat, data);\n },\n\n // 获取需要复制的计划信息\n getBrandCopyInfo(store, data) {\n return request.get(apis.brand.copy, data);\n },\n\n // 获取 brand 列表\n getBrandList(store, data) {\n return request.get(apis.brand.list, data);\n },\n\n // 更改 brand 状态\n updateBrandStatus(store, data) {\n return request.postForm(apis.brand.update_status, data);\n },\n\n // 更新实况\n postDeliverVerify(store, data) {\n return request.postForm(apis.brand.deliver_verify, data);\n },\n },\n};\n","/**\n * Compaign 相关 store\n */\nimport apis from 'src/const/apis';\nimport * as service from 'src/service';\nimport request from 'src/utils/request';\nimport * as types from 'src/store/types';\nimport { splitTestType } from 'src/const/state/campaign';\nimport { captureError } from 'src/logger/errorLogger';\nimport { formatMoney } from 'src/mixins/currencyMixin';\nimport { DEEP_BID_TYPE } from 'src/const/state/ad';\n\nexport default {\n namespaced: true,\n state: {\n // 这里的数据用于 adgroup 获取 campaign 的信息\n campaignSaved: {\n objType: 'Auction',\n campaign_id: '',\n campaign_name: '',\n objective_type: '',\n budget: '',\n dedicate_type: 0,\n budget_mode: 0,\n struct_version: 0,\n industry_types: [],\n ab_test: splitTestType.NONE,\n // CBO 相关入参\n budget_optimize_switch: 0,\n optimize_goal: 0,\n smart_bid_type: 0,\n deep_bid_type: 0,\n roas_bid: 0,\n campaign_app_profile_page_type: undefined,\n },\n campaignSuccess: false,\n campaignListToken: null,\n campaignList: [],\n fakeCampaignId: '',\n campaignSuggestBid: '',\n },\n getters: {\n campaignKey(state, getters, rootState, rootGetter) {\n // 动态计算\n return `${rootGetter['campaign/modelKey']}:campaign`;\n },\n useCBO(state, getters, rootState, rootGetter) {\n // 1 为开启 cbo, 0 默认关闭\n return state.campaignSaved.budget_optimize_switch === 1\n || rootState.campaign.adgroup.adCampaignData.budget_optimize_switch === 1;\n },\n useCBOVO(state, getters, rootState, rootGetter) {\n // cbo vo\n return (state.campaignSaved.budget_optimize_switch === 1\n || rootState.campaign.adgroup.adCampaignData.budget_optimize_switch === 1) &&\n ([DEEP_BID_TYPE.VO_MINIMUN_ROAS, DEEP_BID_TYPE.VO_HIGHEST_VALUE].includes(rootState.campaign.adgroup.adCampaignData.deep_bid_type) ||\n [DEEP_BID_TYPE.VO_MINIMUN_ROAS, DEEP_BID_TYPE.VO_HIGHEST_VALUE].includes(state.campaignSaved.deep_bid_type));\n },\n haveCampaignSuggestBid(state) {\n return Number(state.campaignSuggestBid) !== 0;\n },\n /** 选择的行业类型数组 */\n selectedIndustry(state) {\n return state.campaignSaved?.industry_types ?? [];\n },\n /** 是否选了行业类型 */\n isSelectedIndustry(state) {\n return !!state.campaignSaved?.industry_types?.length;\n },\n },\n mutations: {\n [types.SET_CAMPAIGN](state, data = {}) {\n state.campaignSaved = {\n ...state.campaignSaved,\n ...data,\n };\n },\n [types.SET_FAKE_CAMPAIGN](state, data = '') {\n const isEmptyObject = JSON.stringify(data) === '{}';\n state.fakeCampaignId = isEmptyObject ? '' : data; // buildStone需要的东西\n },\n [types.GET_CAMPAIGNSUCCESS](state, data) {\n state.campaignSuccess = data;\n },\n [types.SET_REQUEST_TOKEN](state, data) {\n state.campaignListToken = data;\n },\n [types.SET_CAMPAIGN_LIST](state, data) {\n state.campaignList = data;\n },\n [types.SET_CAMPAIGN_SUGGEST_BID](state, data) {\n state.campaignSuggestBid = data;\n },\n },\n actions: {\n // 获取 campaign 的详细信息,用来编辑,TODO:这个接口在其他地方也有引用,为了做一出修改所以在这里再引用一次,希望之后以这里为准\n getCampaignDetail(store, data) {\n return request.get(apis.campaign.info, data);\n },\n // Dashboard 用的请求 Campaign List\n // 过滤了未投放的广告 响应更快\n getDashboardCampaignList({ commit, state }, data) {\n // 重复请求时清除之前的请求\n if (state.campaignListToken) {\n state.campaignListToken.cancel();\n }\n\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_REQUEST_TOKEN, source);\n\n return request.post(apis.campaign.dashboardStatisticList, data, {\n cancelToken: source.token,\n });\n },\n\n // 获取广告组列表\n getCampaignList({ commit, state }, data) {\n // 重复请求时清除之前的请求\n if (state.campaignListToken) {\n state.campaignListToken.cancel();\n }\n\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_REQUEST_TOKEN, source);\n\n return request.post(apis.campaign.newStatisticList, data, {\n cancelToken: source.token,\n });\n },\n\n // 获取所有 campaign\n getAllCampaign({ commit }, data) {\n // return request.get(apis.campaign.nav_list, data);\n return request.get(apis.campaign.nav_list, data).then(({ data }) => {\n commit(types.SET_CAMPAIGN_LIST, data.data);\n }).catch((e) => {\n commit(types.SET_CAMPAIGN_LIST, []);\n });\n },\n // 修改 toggle 状态\n updateCampaignStatus({ commit }, data) {\n commit(`perf/${types.SET_PERF_OPERATED_ANCHOR}`, {}, { root: true });\n return request.postForm(apis.campaign.update_status, data);\n },\n\n // campaign\n async createCampaign({ commit }, args = {}) {\n try {\n return await request.post(apis.campaign.create, args);\n } catch (err) {\n captureError(err);\n return Promise.reject(new Error(err?.code));\n }\n },\n\n emptyCampaignSaved({ commit }) {\n const initCampaign = {\n objType: 'Auction',\n campaign_id: '',\n campaign_name: '',\n objective_type: '',\n budget: '',\n budget_mode: 0,\n buying_type: 1,\n ab_test: splitTestType.NONE,\n budget_optimize_switch: 0,\n optimize_goal: 0,\n smart_bid_type: 0,\n deep_bid_type: 0,\n roas_bid: 0,\n };\n commit(types.SET_CAMPAIGN, initCampaign);\n commit(types.GET_CAMPAIGNSUCCESS, false);\n },\n\n removeCampaignData({ dispatch, getters, commit }) {\n dispatch('emptyCampaignSaved');\n commit(types.SET_FAKE_CAMPAIGN);\n localStorage.removeItem(getters.campaignKey);\n },\n\n getCampaignSuggestBid({ commit }, campaignId) {\n return service.getCampaignSuggestBid({\n campaign_id: campaignId,\n }).then(({ data }) => {\n if (data.has_active_ad_group) {\n commit(types.SET_CAMPAIGN_SUGGEST_BID, data ? formatMoney(data.bid) : '');\n } else {\n commit(types.SET_CAMPAIGN_SUGGEST_BID, '');\n }\n }).catch((e) => {\n commit(types.SET_CAMPAIGN_SUGGEST_BID, '');\n });\n },\n },\n};\n","/**\n * compaign adgroup 相关 store\n */\nimport _ from 'lodash';\nimport * as service from 'src/service';\nimport { getUserDraftChecked } from 'src/service/simplifiedSmb';\nimport { getImpressionService, getRecommendBudgetService, postBackRecommendBudgetService } from 'src/service/budget-recommend/index';\nimport * as types from 'src/store/types';\nimport apis from 'src/const/apis';\nimport { captureError } from 'src/logger/errorLogger';\nimport request from 'src/utils/request';\nimport { fetchAreasData, cityOptions2Array } from 'src/const/state/select-province';\nimport {\n platform as platformEnum, adStatusValues, adgroupIos14Switch, AppStatusValue, AUDIENCE_TYPE, IOS14QuotaType, VOStatus, TargetingExpansionType,\n} from 'src/const/state/ad';\nimport { creativeType, TIKTOK_SEARCH_ADS_SWITCH } from 'src/const/state/creative';\nimport { INVENTORY_FLOW } from 'src/const/state/inventory-type';\nimport {\n contentType, campaignObjectiveValue, splitTestType, formatAge, pangleFlowPackConfig, campaignType,\n getAdgroupDCQuota, campaignQuotaSum, checkIsRF,\n buyingType,\n} from 'src/const/state/campaign';\nimport { BudgetSourceType } from 'src/const/state/budget';\nimport { BrandSafetyMap, SdkS2sAdvertisersIdList, eventStatus } from 'src/const/state/target';\nimport tool from 'src/utils/tool';\nimport {\n isAppRetargetWhite,\n isIOS14MultipleWhite,\n isPcmPhase1White,\n isPixelStandardWhite,\n isBudgetReductionEnabled,\n isPcmPhase2White,\n isSplitTestSupportIOS14White,\n isModelSoleWhite,\n isIOS14MultipleTwoWhite,\n isIOS14MultipleFiveWhite,\n isBrandTrackDataWhite,\n} from 'src/const/whiteList';\nimport { LowestBudget } from 'src/mixins/currencyMixin';\nimport { Scenario } from 'src/const/state/shop';\nimport { categoryHandler } from 'src/utils/adgroup/index';\nimport { currencyLocaleFormat } from 'src/utils/currencyUtil';\nimport { AppProfilePageType } from 'src/const/state/app-profile-page';\nimport { recommendBudgetRequestFormatter } from 'src/service/budget-recommend/formatter';\n\n\nconst estimateRequestTnterval = 600;\nlet estimateRequestTimer = null;\nlet budgetRecommendTimer = null;\nlet impressionEstimateTimer = null;\nconst splitTestEstimateRequestTimer = [];\n\n// 从formData中获取dpa的受众预估参数\n// eslint-disable-next-line no-unused-vars\nfunction getDpaRetargetParams(data) {\n const {\n product_platform_id,\n dpa_local_audience,\n ad_ref_app_id,\n ad_ref_pixel_id,\n include_custom_actions,\n exclude_custom_actions,\n external_type,\n inventory_flow,\n } = data;\n return {\n dpa_local_audience: dpa_local_audience || AUDIENCE_TYPE.NORMAL.value, // 默认为非重\n product_platform_id,\n ad_ref_app_id,\n ad_ref_pixel_id,\n include_custom_actions,\n exclude_custom_actions,\n external_type,\n inventory_flow,\n };\n}\n\n// adgroup local store keys\n\nconst adgroup = {\n namespaced: true,\n state: {\n /** AdGroup 表单是否完成了 initCreate/initEdit/initCopy */\n initialized: false,\n loading: false, // next btn loading\n action: 'create',\n activeTab: '1',\n campaign_id: '',\n objective_type: '', // campaign层级的推广目标类型\n classify: 1, // 销买类型\n ad_id: '',\n rf_ad_id: '',\n campaignQuota: {\n available_quota: 0,\n used_quota: 0,\n releasing_quota: 0,\n total_quota: campaignQuotaSum,\n },\n campaignNavList: [],\n adgroupNavList: [],\n adgroupInfo: {}, // 这个对象是接口的单个adgroup,复制用的原始数据,编辑时候也会用到,用来做数据对比\n batchInfo: [], // 复制用的批量修改数据\n copyNumber: 1, // 复制份数\n batchVisible: false, // 控制复制弹窗\n inventory_flow_type: 0, // 0=自动投放,1=placement flow type\n inventory_flow: [], // int 0,all topbuzz:1000,vigo:2000,TIKTOK:3000, OTHER: -1,\n conversion_checked: false, // TODO: pixel全量上线后此逻辑需要下掉,所有改动处均有此注释\n brand_safety: BrandSafetyMap.UN_SAFE,\n creative_material_mode: creativeType.CUSTOM,\n pricing: '',\n platform: 0, // 不限\n opt_target: 0, // 优化目标\n opt_target_A: 0,\n opt_target_B: 0,\n target_device_version: adgroupIos14Switch.unset, // 是否开启ios14\n isCpxBidCap: false, // 自动出价\n isCpxBidCapList: [false, false], // split-test自动出价\n start_time: '',\n areasData: [],\n pixelToken: '',\n end_time: '',\n contractStartTime: '',\n contractEndTime: '',\n isRFContractTimeAvailable: true, // RF 起止时间是否可用\n rf_timezone: '', // RF 投放时区 形如 Etc/GMT-7\n external_type: 0, // 投放的是app还是website\n adgroupData: {}, // 需要提交给接口的数据,验证通过了,\n adCampaignData: {},\n operatorList: [],\n fakeAdIds: [],\n suggestPrice: {\n suggestPriceOne: 0, // 对于学习阶段的建议出价\n suggestPriceTwo: 0, // 对于第二阶段的建议出价\n suggestPriceDeep: 0, // 对于深度出价的建议出价\n },\n appId4Em: '',\n suggestPriceType: {\n suggestPriceOneType: -1,\n suggestPriceTwoType: -1,\n suggestPriceDeepType: -1,\n },\n dmpInfo: [], // 人群包\n audienceEstimateData: {}, // 受众预估需要的参数\n app_retargeting_install: false,\n dpa_local_audience: '',\n isEstimating: false, // 受众预估正在请求中\n isEstimateFailed: false, // 受众预估请求错误\n isWritable: true,\n ttpUnsupportedArea: [], // ttp 不支持的国家\n cloverUnsupportedArea: [], // clover 不支持的国家\n audienceEstimateScore: 0, // 受众预估档位\n audienceEstimateUserCount: '', // 受众预估人数\n audienceEstimateResult: undefined, // 受众预估结果\n impressionEstimate: undefined, // impression 预估\n impressionEstimateParam: undefined, // impression 预估入参\n isBudgetRecommendVisible: false, // 预算推荐是否可用\n budgetSourceType: BudgetSourceType.manual, // adgroup budget 设置的来源\n budgetRecommendData: undefined, // budget recommend 数据\n budgetRecommendParam: undefined, // budget Recommend 入参\n audienceEstimateDisabledInDpa: false,\n stockEstimate: null, // 库存预估\n stockEstimateKey: '0', // 订单侧返回的 key,用于 RF 回显\n isStockReCalculating: false, // 库存重算中\n isStockOrderCompleted: false, // 库存订单状态\n isStockWidgetAvailable: false, // 库存挂件是否可用\n stockBudgetThreshold: [0, Number.MAX_SAFE_INTEGER], // 根据库存预估曲线,100cpm对应的最低预算值\n stockImpressionThreshold: [0, Number.MAX_SAFE_INTEGER], // 根据库存预估曲线所支持的最小-最大值\n cityMap: [], // 打平的 cityOptions Map\n areasMap: [], // location 所有层级的节点的 [id]: info\n allLocationMap: [], // 全量打平的 location map\n inMarketList: [], // in-market 定向\n inMarketListObj: {}, // in-market 定向 id-item\n inMarketSearchList: [], // in-market 搜索数据\n adInterestArr: [], // 打平的 interestOptions\n adTopicArr: [], // 打平的 topic\n behaviorOptions: [], // 打平的行为定向选项列表\n country: [],\n country_codes_by_split_test_index: [[], []], // 以 split test 的 index 区分存储地域定向的国家码,若未开启定向 split test 则只有第一项\n particle_locations: [],\n availableCountries: [],\n ad_ref_app_id: '', // 选中的app\n isDeepGoalSupportInAppEvent: false, // 深度转化 app 是否支持选择 in-app event\n isDeepEventsModuleShow: false, // 用于install 没有可用事件时,选择深度事件模块展示。 其他场景以deepExternalAction !== 0 来展示\n appEventList: [], // 事件\n appList: [], // 深度转化需求中新增的的app列表\n editStatisticType: 0, // statistics_type 在edit下的回显字段\n externalActionMap: {}, // app对应的转换事件的statistics_type映射\n externalActions: [], // app对应的转化事件列表,包括浅层和深层\n externalActionsA: [],\n externalActionsB: [],\n externalAction: '', // 包括浅层深度转化目标,pixel的externalAction, 如果有其它地方会赋值这个字段,需要考虑在vi-external-action的data2state里是否添加新的split-test逻辑\n externalActionA: '',\n externalActionB: '',\n pixelId: '',\n brand_safety_partner: 0,\n search_delivery_type: TIKTOK_SEARCH_ADS_SWITCH.DEFAULT, // searchAds开关,0是关闭,1是开启,默认是-1,主要是为了区分从campaign到adgroup层级还是从ad返回到adgroup层级的问题\n pixelEventList: [], // pixel列表\n pixelList: [], // pixel下的event列表,\n pixelInfo: {},\n pixelListLoading: false,\n pixelEventListLoading: false,\n websiteRecommendUrlList: [], // 落地页最近20条推荐url\n appRecommendUrlList: [], // app最近20条推荐url\n open_url: '',\n is_open_url: 0,\n isNewStructure: false,\n budget: '',\n budget_mode: 0,\n externalUrlDomain: '',\n // target 用于 split test 的 tab panel 配置\n ab_test: 0,\n domain: '',\n domainCancelToken: '',\n inAppEvents: [], // in app event的事件,用来判断是否支持优化目标in app event用\n installDeepEvents: [], // install with in app event的event列表\n androidList: [], // 安卓操作系统版本\n iosList: [], // ios操作系统版本\n domainInited: false,\n allLanguagesList: [], // 定向语言选项\n ab_test_status: 0, // 用来判断一个split-test计划是不是已经操作过一件全量, 0:不是split计划 10:是split计划但是没有操作 21:操作过且为获胜组 20:操作过且为失败组\n voStatus: {\n cost_cap_status: VOStatus.NOTSUPPORT,\n roas_status: VOStatus.NOTSUPPORT,\n value_optimizer_status: VOStatus.NOTSUPPORT,\n highest_value_status: VOStatus.NOTSUPPORT,\n },\n targetMultiTabs: [\n {\n title: 'module_target_split_test_card',\n value: 'A',\n isError: false,\n },\n {\n title: 'module_target_split_test_card',\n value: 'B',\n isError: false,\n },\n ],\n biddingMultiTabs: [\n {\n title: 'adgroup_split_bidding_card',\n value: 'A',\n isError: false,\n },\n {\n title: 'adgroup_split_bidding_card',\n value: 'B',\n isError: false,\n },\n ],\n power: 0, // split test 的 power 值\n suggest_budget: 0, // split-test 建议出价\n splitTestVars: [],\n splitTestBudget: [], // 用来存储编辑时候 budget 的值\n splitTestAudienceEstimate: [\n {\n isEstimating: false,\n isEstimateFailed: true,\n audienceEstimateScore: 0,\n isMatchAbTest: false,\n count: 0,\n sample_count: 0,\n },\n {\n isEstimating: false,\n isEstimateFailed: true,\n audienceEstimateScore: 0,\n isMatchAbTest: false,\n count: 0,\n sample_count: 0,\n },\n ],\n platformId: '', // 商品目录 id\n useDraft: false,\n externalActionToken: ['', ''],\n osvToken: '',\n pangleFlowPackArr: [],\n learnParse: false,\n videoCategoryOptions: [],\n flattenedVideoCategoryOptions: [],\n creatorCategoryOptions: [],\n flattenedCreatorCategoryOptions: [],\n deviceModelsList: [],\n alertInfo: {}, // 提示信息,形如 { device: { label: '', content: '' } }\n catalog: null,\n catalogBcId: '0', // 当前修改catalog所属的bcid\n isCatalogAuth: true, // 当前adv是否有Catalog的权限\n adInterestKeywordsInfoMap: {}, // 兴趣关键词描述信息\n adBehaviorHashtag: {}, // 行为 hashtag 定向描述信息\n targetRecommendTraceInfo: null, // 定向推荐埋点追踪信息,如非 null 则需要在广告组创建完成后发送\n adgroupQuota: {\n available_quota: 0,\n using_quota: 0,\n total_quota: getAdgroupDCQuota(),\n },\n splitTestQuota: {\n max: 0,\n available: 0,\n releasing: 0,\n using: 0,\n },\n isAppidInNewQuota: false,\n isOnlySupportTT: false,\n isSupportLowestCost: false,\n isBidStrategyChanged: false,\n isEditClicked: false, // dc strategy是否点击过\n hasCostcap: false, // 当前dc campaign下是否有active的cost cap\n hasLowestCost: false, // 当前dc campaign下是否有active的lowestcost\n pangleSupportCountries: [], // 支持pangle投放的国家地区白名单(用于控制dpa版位)\n copyPixelAwait: false, // copy的时候在pixel组件await了pixel list接口,然后接口返回值还没回来就提交表单pixel_id是空,这个时候需要disabled,\n isOpenBS: false, // 是否打开Brand Safety开关\n ios14_quota_type: IOS14QuotaType.UNOCCUPIED,\n hasRewrittenCopiedStartTime: false, // copy 的广告计划需要覆写投放起始时间,覆写过一次后不需要再次覆写\n appProfilePageType: undefined, // 标识 ios14下,app profile page 开关的状态\n isDpaOrShopCountryOffline: false, // catalog或shop绑定的国家下线\n liveTimezoneList: [], // live ads选择的定向国家对应的时区,用于判断是否处于夏令时\n hasPremiumTopic: false, // 上线文广告中是否有 premium 的 topic\n },\n getters: {\n isAppInstallAmazon(state, getters) {\n return getters.isAppInstall && isModelSoleWhite();\n },\n isTrafficAmazon(state, getters) {\n return getters.isTraffic && isModelSoleWhite();\n },\n isTwoAdgroupDc(state, getters) {\n return getters.isSupportIos14 && isIOS14MultipleTwoWhite() && !isIOS14MultipleFiveWhite();\n },\n isTwoAdgroupUnderDc(state, getters) {\n return getters.isUnderDcHasAdgroup && isIOS14MultipleTwoWhite() && !isIOS14MultipleFiveWhite();\n },\n isUnderDcHasNoAdgroup(state, getters) {\n return getters.isUnderDc && !getters.isUnderDcHasAdgroup && isIOS14MultipleTwoWhite() && !isIOS14MultipleFiveWhite();\n },\n isInstallHasActiveDeepEvent(state) {\n return (state.installDeepEvents.events && state.installDeepEvents.events[0]?.deep_external_action || [])\n .find(item => +item.aeo_availability === eventStatus.ready);\n },\n isMatchExternalUrlDomain(state, getters) {\n return state.externalUrlDomain?.length && getters.eventDomainList.includes(state.externalUrlDomain);\n },\n eventDomainList(state) {\n const pixelEvent = state.pixelInfo?.pixelEvents?.filter(item => +item.id === +state.externalAction);\n const domainList = pixelEvent?.length && pixelEvent[0]?.verified_domain_list || [];\n return domainList;\n },\n isShowPcmDrop(state, getters) {\n return isPcmPhase2White() && !getters.eventDomainList?.length && state.pixelId && state.externalAction;\n },\n isShowIosWebPixelAlert(state) {\n return state.pixelId && state.pixelList?.length && state.pixelList.every(item => !item.has_pcm_config) && isPcmPhase1White();\n },\n isPixelStandardEventList(state, getters) {\n if (isPixelStandardWhite() && (getters.isCreate || getters.isCopy)) {\n return state.pixelEventList.filter(item => !item.deprecated);\n }\n return state.pixelEventList;\n },\n selectedPixelEvent(state) {\n return state.pixelEventList?.find(item => item.id === state.externalAction);\n },\n isShouldEmptyEvent(state, getters) {\n return isPixelStandardWhite() && getters.isCopy && getters.selectedPixelEvent?.deprecated;\n },\n selectedPixelInfo(state) {\n return state.pixelList.find(item => item.id === state.pixelId) || {};\n },\n isCatalogAuth(state, getters) {\n // catalogBcId = 0 就是catalog还没有资产化,就没有权限的问题\n return state.isCatalogAuth || +getters.catalogBcId < 1;\n },\n // getters就像computed\n isUnderDc(state, getters, rootState) {\n return state.adCampaignData.dedicate_type === campaignType.dedicatedCampaign\n && !!state.campaign_id;\n },\n isShowAppIos14AdsMark(state, getters) {\n return state.ad_ref_app_id && ((getters.isDpaSupportIos14 && !getters.isDpaLink) || getters.isAppInstallSupportIos14);\n },\n isShowWebIos14AdsMark(state, getters) {\n return state.pixelId && (getters.isTraffic || getters.isConversion || getters.isDpa) && getters.isWebsite && isPcmPhase1White();\n },\n isFrozenApp(state, getters, rootState) {\n const notAllowedIos14Apps = [AppStatusValue.Probated, AppStatusValue.BlockedConflictAppAccount, AppStatusValue.BlockedUnsupportedMMP];\n // 接口返回前会undefined\n return getters.selectedAppDetail && getters.selectedAppDetail.AccountAppVerifiedState\n ? notAllowedIos14Apps.includes(getters.selectedAppDetail.AccountAppVerifiedState) : false;\n },\n // dc可能没有adgroup此时的app和优化目标不应该disable\n isUnderDcHasAdgroup(state, getters) {\n return getters.isUnderDc && !!state?.adgroupNavList?.length && !!state.adgroupNavList[0].ad_ref_app_id;\n },\n isIOS14App(state, getters) {\n return state.target_device_version === 2;\n },\n isUnderNonDc(state, getters, rootState) {\n return state.adCampaignData.dedicate_type !== campaignType.dedicatedCampaign\n && !!state.campaign_id;\n },\n /** 是否选了行业类型 */\n isSelectedIndustry(state) {\n return !!state.adCampaignData?.industry_types?.length;\n },\n isAdmin(state, getters, rootState) {\n return rootState.account.permissionData?.permission?.is_admin;\n },\n opSysFilter(state, getters) {\n // 不支持的objective tc = 0, opSysFilter: 0\n // 中间态Non-dc 14.0- tc =1, opSysFilter:1\n // Non-dc 14.5- tc = 0, opSysFilter: 3\n // Dc 14.0+ tc = 2, opSysFilter: 2\n if (!(getters.isAppInstallSupportIos14 || getters.isConversionSupportIos14 || getters.isDpaSupportIos14)) {\n return 0;\n }\n if (+state.target_device_version === 0) {\n return 3;\n }\n return state.target_device_version;\n },\n operatorOptions(state) {\n const result = Object.keys(state.operatorList).map((v) => {\n const list = state.operatorList[v];\n return list.map(item => ({ ...item, key: item.i18n_value, value: item.id }));\n });\n return _.flatten(result).filter(item => item.in_use);\n },\n isAndriodApp(state, getters) {\n return state.platform === platformEnum.ANDROID && (getters.isAppDownload || getters.isDpaLink);\n },\n isSupportIos14(state) {\n return state.ios14_quota_type === IOS14QuotaType.OCCUPIED;\n },\n isPlatFormIos(state) {\n return state.platform === platformEnum.IOS;\n },\n isEdit(state) {\n return state.action === 'edit' && !!state.ad_id;\n },\n isCopy(state) {\n return state.action === 'copy';\n },\n isCreate(state) {\n return state.action === 'create';\n },\n isDefaultSupportDc(state, getters) {\n return getters.isCreate && getters.isObjectiveSupportDc &&\n !getters.isUnderNonDc && !getters.isCreateAdgroupOutIosMultipleWhite && !(getters.isSplitTestEnabled && !isSplitTestSupportIOS14White());\n },\n isObjectiveSupportDc(state, getters) {\n return (getters.isAppInstallSupportIos14 ||\n (getters.isDpaSupportIos14 && !getters.isDpaLink));\n },\n // 非白在已有的campaign下新建adgroup\n isCreateAdgroupOutIosMultipleWhite(state, getters) {\n return ((getters.isCopy || getters.isCreate) && !!state.campaign_id && !isIOS14MultipleWhite());\n },\n isDpa(state) { // 是不是dpa广告\n return state.objective_type === campaignObjectiveValue.DPA;\n },\n isTraffic(state) {\n return state.objective_type === campaignObjectiveValue.Traffic;\n },\n isConversion(state) {\n return state.objective_type === campaignObjectiveValue.Conversion;\n },\n isSupportBrandDataTrack(state) {\n return isBrandTrackDataWhite() && [campaignObjectiveValue.Reach, campaignObjectiveValue.VideoView,\n campaignObjectiveValue.RF, campaignObjectiveValue.RF_VV, campaignObjectiveValue.RF_TRAFFIC].includes(state.objective_type);\n },\n isRfTrafficSupportPixel(state, getters) {\n return state.objective_type === campaignObjectiveValue.RF_TRAFFIC && isBrandTrackDataWhite() && getters.isWebsite;\n },\n isAppInstall(state) {\n return state.objective_type === campaignObjectiveValue.AppInstall || state.objective_type === campaignObjectiveValue.RF_APPINSTALL;\n },\n isShop(state) { // 是否 Shop monetization广告\n return state.objective_type === campaignObjectiveValue.Shop;\n },\n isShopLive(state, getters) {\n return getters.isShop && state.external_type === Scenario.Live;\n },\n isDpaSupportIos14(state, getters) {\n return getters.isDpa && state.platform === platformEnum.IOS && (getters.isAppDownload || getters.isDpaLink);\n },\n isAppInstallSupportIos14(state, getters) {\n return getters.isAppInstall && state.platform === platformEnum.IOS && getters.isAppDownload;\n },\n isConversionSupportIos14(state, getters) {\n return getters.isConversionApp && state.platform === platformEnum.IOS && getters.isAppDownload;\n },\n isExternalActionSupportNoBid(state, getters, rootState, rootGetters) {\n if (getters.useBiddingSplitTest && getters.isCreate) {\n if (rootState.campaign.activeThirdTabs.itemIndex === 0) {\n return state.externalActionsA.find(item => item.external_action === state.externalActionA)?.is_no_bid_enabled;\n }\n return state.externalActionsB.find(item => item.external_action === state.externalActionB)?.is_no_bid_enabled;\n }\n return state.externalActions.find(item => item.external_action === state.externalAction)?.is_no_bid_enabled;\n },\n // TODO: 修改所有其他各个组件对于content_type的判断,转为使用此getter\n isWebsite(state) {\n return [contentType.website, contentType.ExternalOrDisplay].includes(+state.external_type);\n },\n isAppTypeIOS(state, getters) {\n const isIos = state.platform === platformEnum.IOS && (getters.isAppDownload || getters.isDpaLink);\n return isIos;\n },\n isConversionApp(state, getters) {\n return state.objective_type === campaignObjectiveValue.Conversion && getters.isAppDownload && isAppRetargetWhite();\n },\n isAppDownload(state) {\n return contentType.app.indexOf(+state.external_type) !== -1;\n },\n isDpaLink(state) { // 推广对象为dpalink\n return +state.external_type === contentType.dpaDeeplink;\n },\n /** 标记表单中开启了 split test 开关 */\n isSplitTestEnabled(state) {\n return state.ab_test !== splitTestType.NONE;\n },\n /** @deprecated 是否是 split test,目前 dpa 不使用 split test,isCreate 时需要改用 isSplitTestEnabled 判断 */\n useSplitTest(state, getters, rootState) {\n if (getters.isCreate) {\n // panda 下线 split test 创建,split test 创建统一跳转到重构项目第四层级\n return false;\n }\n\n if (getters.isEdit) {\n return !!state.ab_test && state.ab_test !== splitTestType.NONE && state.ab_test_status !== 21;\n }\n\n const { ab_test: abTest, campaign_id: campaignID } = (rootState.route || {}).query || {};\n\n if (campaignID) {\n return false;\n }\n if (getters.isDpa) {\n return false;\n }\n return !!abTest && +abTest !== splitTestType.NONE;\n },\n /** @deprecated isCreate 时需要改用 isSplitTestEnabled 判断 */\n useTargetSplitTest(state, getters, rootState) {\n if (getters.isEdit) {\n return getters.useSplitTest && state.ab_test === splitTestType.TARGET;\n }\n const { ab_test: abTest } = (rootState.route || {}).query || {};\n return getters.useSplitTest && abTest === splitTestType.TARGET;\n },\n /** @deprecated isCreate 时需要改用 isSplitTestEnabled 判断 */\n useCreativeSplitTest(state, getters, rootState) {\n if (getters.isEdit) {\n return getters.useSplitTest && state.ab_test === splitTestType.CREATIVE;\n }\n\n const { ab_test: abTest } = (rootState.route || {}).query || {};\n return getters.useSplitTest && abTest === splitTestType.CREATIVE;\n },\n rdAdgroupId(state) {\n return state.rf_ad_id;\n },\n /** @deprecated isCreate 时需要改用 isSplitTestEnabled 判断 */\n useBiddingSplitTest(state, getters, rootState) {\n if (getters.isEdit) {\n return state.ab_test === splitTestType.OPTIMIZE;\n }\n\n const { ab_test: abTest } = (rootState.route || {}).query || {};\n return +abTest === splitTestType.OPTIMIZE;\n },\n appDetail(state) {\n return appId => state.appList.find(app => `${app.Id}` === `${appId}`);\n },\n bondTrackAppList(state) {\n return state.appList.filter(item => !!item.TrackingUrl?.ClickUrl);\n },\n isEditIos14MiddleMinus(state, getters) {\n // 是否是流量测未拉闸的存量广告\n return getters.isEdit && state.target_device_version === adgroupIos14Switch.ios14Below;\n },\n selectedAppDetail(state, getters) {\n return getters.appDetail(state.ad_ref_app_id);\n },\n // 选中的app是否有三方监测链接\n isSelectedAppHasClickTrackUrl(state, getters) {\n const detail = getters.selectedAppDetail || {};\n const { TrackingUrl = {} } = detail;\n return TrackingUrl?.ClickUrl;\n },\n isSelectedAppHasClickTrackUrlOrSdkS2s(state, getters) {\n try {\n const detail = getters.selectedAppDetail || {};\n const partnerId = _.get(detail, 'Partner.Id', '');\n return SdkS2sAdvertisersIdList.includes(partnerId) || getters.isSelectedAppHasClickTrackUrl;\n } catch (e) {\n return getters.isSelectedAppHasClickTrackUrl;\n }\n },\n isSdkS2s(state, getters) {\n const detail = getters.selectedAppDetail || {};\n const partnerId = _.get(detail, 'Partner.Id', '');\n return SdkS2sAdvertisersIdList.includes(partnerId);\n },\n adgroupKey(state, getters, rootState, rootGetter) {\n return `${rootGetter['campaign/modelKey']}:adgroup`;\n },\n dmpInfo(state) {\n return state.dmpInfo;\n },\n auditStatus(state) {\n return +state.adgroupInfo.audit_status !== adStatusValues.AUDIT;\n },\n isDisabledMoat(state, getters) {\n // 修改的时候只有【新建审核中】可修改\n return getters.isEdit && +state.adgroupInfo.audit_status !== adStatusValues.AUDIT;\n },\n isDisabledDV(state, getters) {\n // 修改的时候只有【新建审核中】可修改\n return getters.isEdit && +state.adgroupInfo.audit_status !== adStatusValues.AUDIT;\n },\n isDisabledIAS(state, getters) {\n // 修改的时候只有【新建审核中】可修改\n return getters.isEdit && +state.adgroupInfo.audit_status !== adStatusValues.AUDIT;\n },\n // targeting 流量包\n pangleFlowPackOrient(state) {\n return state.pangleFlowPackArr.filter(item => item.bind_type === pangleFlowPackConfig.orient.value);\n },\n pangleFlowPackExclude(state) {\n return state.pangleFlowPackArr.filter(item => item.bind_type === pangleFlowPackConfig.exclude.value);\n },\n supportPangleFlow(state) {\n return !!state.pangleFlowPackArr.length;\n },\n deviceModelsList(state) {\n return state.deviceModelsList;\n },\n isMultipleCountrySelected(state) {\n const selectedCountry = state.country || state.adgroupInfo?.country || [];\n return selectedCountry.length > 1;\n },\n countryIdCodeMap(state) {\n const { areasData } = state;\n const idCodeMap = new Map();\n areasData.forEach((area) => {\n idCodeMap.set(area.id, area.code);\n });\n return idCodeMap;\n },\n catalogBcId(state) {\n return state.catalogBcId ?? '0';\n },\n isRF(state) {\n return checkIsRF(state.objective_type);\n },\n /** 商品库的国家 */\n catalogCountry(state) {\n const list = state.catalog?.refer_catalogs?.map(item => item.country) ?? [];\n return [...new Set(list)];\n },\n /** 是否是多国家多语言商品库 */\n isCrossBorderCatalog(state) {\n return state.catalog?.is_multi_country_lang;\n },\n /** 商品库的所有主库 & 子库 */\n referCatalogs(state) {\n return state.catalog?.refer_catalogs ?? [];\n },\n /** 定向地区关联商品库的语言 */\n getCountryCorrespondingLanguage: (state, getters) => countries => [...new Set(\n getters.referCatalogs\n .filter(item => countries.includes(item.country))\n .map(item => item.language),\n )],\n /**\n * 每日最低预算根据白名单进行调整\n * case: 白名单用户自己切到pc创编,然后最低预算是20,编辑的时候允许改为更低的值。\n * https://bytedance.feishu.cn/docs/doccnvEr43Xt3RklzWbaWyBEMJc\n */\n lowestBudget(state, getters, rootState, rootGetters) {\n const isSelfAccount = rootGetters?.['account/isSelfAccount'];\n // 最低预算调整仅限自助用户的编辑场景\n if (!getters.isEdit || !isSelfAccount) {\n return LowestBudget.DEFAULT;\n }\n const enabled = isBudgetReductionEnabled();\n if (!enabled) {\n return LowestBudget.DEFAULT;\n }\n if (state.objective_type === campaignObjectiveValue.Traffic) {\n return LowestBudget.TRAFFIC;\n }\n if (state.objective_type === campaignObjectiveValue.LeadAds) {\n return LowestBudget.LEADGEN;\n }\n if (state.objective_type === campaignObjectiveValue.Engagement) {\n return LowestBudget.ENGAGEMENT;\n }\n return LowestBudget.DEFAULT;\n },\n isShopAdLiveScenario(state, getters) {\n return getters.isShop && state.external_type === Scenario.Live;\n },\n isShopAdVideoScenario(state, getters) {\n return getters.isShop && state.external_type === Scenario.ShortVideo;\n },\n isAppProfilePageOpen(state, getters) {\n return state.appProfilePageType === AppProfilePageType.on;\n },\n },\n mutations: {\n [types.SET_BIDDING_EDIT](state, data) {\n state.isEditClicked = data;\n },\n [types.SET_SUPPORT_LOWEST_COST](state, data) {\n state.isSupportLowestCost = data;\n },\n [types.SET_BIDSTRATEGY](state, data) {\n state.isBidStrategyChanged = data;\n },\n [types.SET_HAS_COSTCAP](state, data) {\n state.hasCostcap = data;\n },\n [types.SET_HAS_LOWESTCOST](state, data) {\n state.hasLowestCost = data;\n },\n [types.SET_ADGROUP_DOMAIN](state, data) {\n state.domain = data;\n },\n [types.SET_DOMAIN_INITED](state, data) {\n state.domainInited = data;\n },\n [types.SET_COPY_PIXEL_AWAIT](state, data) {\n state.copyPixelAwait = data;\n },\n [types.SET_ADGROUP_EXTERNAL_URL_DOMAIN](state, data) {\n state.externalUrlDomain = data;\n },\n [types.SET_IOS_LIST](state, data) {\n state.iosList = data;\n },\n [types.SET_EXTERNALACTION_TOKEN](state, val) {\n state.externalActionToken[val.index] = val.data;\n },\n [types.SET_ANDROID_LIST](state, data) {\n state.androidList = data;\n },\n [types.SET_ALL_LANGUAGES_LIST](state, data) {\n state.allLanguagesList = data;\n },\n [types.SET_PIXEL_LIST_LOADING](state, data) {\n state.pixelListLoading = data;\n },\n [types.SET_SUGGEST_PRICE](state, data) {\n state.suggestPrice = {\n ...state.suggestPrice,\n ...data,\n };\n },\n [types.SET_SUGGEST_PRICE_TYPE](state, data) {\n state.suggestPriceType = {\n ...state.suggestPriceType,\n ...data,\n };\n },\n [types.SET_START_TIME](state, data) {\n state.start_time = data;\n },\n [types.SET_END_TIME](state, data) {\n state.end_time = data;\n },\n [types.SET_STRUCTURE](state, data) {\n state.isNewStructure = data;\n },\n [types.SET_IS_ENABLE_IOS14](state, data) {\n state.target_device_version = data;\n },\n [types.SET_WEB_URL_LIST](state, data) {\n state.websiteRecommendUrlList = data;\n },\n [types.SET_APP_ID_4_EM](state, data) {\n state.appId4Em = data;\n },\n [types.SET_APP_URL_LIST](state, data) {\n state.appRecommendUrlList = data;\n },\n [types.SET_PIXEL_EVENT_LIST_LOADING](state, data) {\n state.pixelEventListLoading = data;\n },\n [types.SET_PIXEL_EVENT_LIST](state, data) {\n state.pixelEventList = data;\n },\n [types.SET_PIXEL_LIST](state, data) {\n state.pixelList = data;\n },\n [types.SET_PIXEL_INFO](state, data) {\n state.pixelInfo = data;\n },\n [types.SET_LOADING_STATE](state, { status }) {\n state.loading = status;\n },\n [types.SET_CONTRACT_START_TIME](state, data) {\n state.contractStartTime = data;\n },\n [types.SET_CONTRACT_END_TIME](state, data) {\n state.contractEndTime = data;\n },\n [types.SET_RF_CONTRACT_TIME_AVAILABLE](state, data) {\n state.isRFContractTimeAvailable = data;\n },\n [types.SET_RF_TIMEZONE](state, data) {\n state.rf_timezone = data;\n },\n [types.SET_LIVE_TIMEZONE_FOR_DST](state, data) {\n state.liveTimezoneList = data;\n },\n [types.SET_CONTRACT_END_TIME](state, data) {\n state.contractEndTime = data;\n },\n [types.SET_IN_APP_EVENTS](state, data) {\n state.inAppEvents = data;\n },\n [types.SET_INSTALL_WITH_IN_APP_EVENTS](state, data) {\n state.installDeepEvents = data;\n },\n [types.SET_APP_RETARGETING_INSTALL](state, data) {\n state.app_retargeting_install = data;\n },\n [types.SET_DPA_LOCAL_AUDIENCE](state, data) {\n state.dpa_local_audience = data;\n },\n [types.SET_EXTERNAL_ACTION](state, data) {\n state.externalAction = data;\n },\n [types.SET_IS_SUPPORT_IN_APP_EVENT](state, data) {\n state.isDeepGoalSupportInAppEvent = data;\n },\n [types.SET_IS_DEEP_EVENT_MODULE_SHOW](state, data) {\n state.isDeepEventsModuleShow = data;\n },\n [types.SET_EXTERNAL_ACTIONA](state, data) {\n state.externalActionA = data;\n },\n [types.SET_EXTERNAL_ACTIONB](state, data) {\n state.externalActionB = data;\n },\n [types.SET_OPEN_URL](state, data) {\n state.open_url = data;\n },\n [types.SET_IS_OPEN_URL](state, data) {\n state.is_open_url = data;\n },\n [types.SET_EXTERNAL_ACTION_MAP](state, data) {\n state.externalActionMap = data;\n },\n [types.SET_PIXEL_ID](state, data) {\n state.pixelId = data;\n },\n [types.SET_FAKE_ADIDS](state, data = {}) {\n state.fakeAdIds = data; // buildStone需要的东西\n },\n [types.SET_TARGET_MULTI_TABS](state, data = []) {\n state.targetMultiTabs = data;\n },\n [types.SET_BIDDING_MULTI_TABS](state, data = []) {\n state.biddingMultiTabs = data;\n },\n [types.SET_ADGROUP_ACTIVE_TAB](state, tab) {\n state.activeTab = `${tab}`;\n },\n [types.SET_ADGROUP_ACTION](state, cmd) {\n state.action = cmd;\n },\n [types.GET_CAMPAIGN_NAV_LIST](state, data) {\n state.campaignNavList = data;\n },\n [types.GET_AD_NAV_LIST](state, data) {\n state.adgroupNavList = data.filter(item => !item.ad_test_id);\n },\n [types.GET_AD_GROUP_INFO](state, data) {\n state.adgroupInfo = data;\n },\n [types.SET_AD_GROUP_DATA](state, data = {}) {\n state.adgroupData = data;\n },\n [types.SET_AD_GROUP_ID](state, adId) {\n state.ad_id = `${adId}`;\n },\n [types.SET_RF_AD_GROUP_ID](state, id) {\n state.rf_ad_id = `${id}`;\n },\n [types.SET_CAMPAIGN_OBJECTIVE_TYPE](state, type) {\n state.objective_type = +type;\n },\n [types.SET_CAMPAIGN_ID](state, ID) {\n state.campaign_id = `${ID}`;\n },\n [types.SET_INVENTORY_FLOW](state, flow) {\n if (\n (Array.isArray(flow) && _.isEqual(flow, state.inventory_flow)) ||\n (!Array.isArray(flow) && _.isEqual([flow], state.inventory_flow))\n ) {\n return;\n }\n\n if (Array.isArray(flow)) {\n state.inventory_flow = flow;\n } else {\n state.inventory_flow = [flow];\n }\n },\n [types.SET_CONVERSION_CHECKED](state, checked) { // TODO: pixel全量上线后此逻辑需要下掉,所有改动处均有此注释\n state.conversion_checked = checked;\n },\n [types.SET_INVENTORY_FLOW_TYPE](state, val) {\n state.inventory_flow_type = val;\n },\n [types.SET_BRAND_SAFETY](state, val) {\n state.brand_safety = val;\n },\n [types.SET_BRAND_SAFETY_PARTNER](state, val) {\n state.brand_safety_partner = val;\n },\n // [types.SET_CONTENT_TYPE](state, val) {\n // state.external_type = +val;\n // },\n [types.SET_EXTERNAL_TYPE](state, val) {\n state.external_type = +val;\n },\n [types.SET_ADGROUP_OPT_TARGET](state, val) {\n state.opt_target = +val;\n },\n [types.SET_ADGROUP_OPT_TARGET_A](state, val) {\n state.opt_target_A = val;\n },\n [types.SET_ADGROUP_OPT_TARGET_B](state, val) {\n state.opt_target_B = val;\n },\n [types.SET_CPX_BID_CAP](state, val) {\n state.isCpxBidCap = val;\n },\n [types.SET_CPX_BID_CAP_LIST](state, val) {\n state.isCpxBidCapList[val.index] = val.value;\n },\n [types.SET_ADGROUP_PRICING](state, val) {\n state.pricing = val;\n },\n [types.SET_AD_CLASSIFY](state, classify) {\n state.classify = classify;\n },\n [types.SET_AD_PLAT_FORM](state, platform) {\n if (!platform && platform !== platformEnum.ALL) {\n return;\n }\n state.platform = +platform;\n },\n [types.SET_ADGROUP_COPY_NUM](state, num = 1) {\n state.copyNumber = num;\n },\n [types.SET_ADGROUP_BATCH_INFO](state, arr = []) {\n state.batchInfo = arr;\n },\n [types.SET_ADGROUP_BATCH_VISIBLE](state, v) {\n state.batchVisible = v;\n },\n [types.SET_CREATIVE_MATERIAL_MODE](state, v) {\n state.creative_material_mode = v;\n },\n [types.SET_ADGROUP_DATA_FLAG](state, flag) {\n if (state.adgroupData && Object.keys(state.adgroupData).length > 0) {\n state.adgroupData.adgroupSuccess = !!flag;\n }\n },\n [types.SET_AD_CAMPAIGN_DATA](state, data = {}) {\n state.adCampaignData = data;\n },\n [types.GET_OPERATOR_LIST](state, data = {}) {\n state.operatorList = data;\n },\n [types.SET_AUDIENCE_ESTIMATE_TTP](state, data = false) {\n state.ttpUnsupportedArea = data;\n },\n [types.SET_AUDIENCE_ESTIMATE_CLOVER](state, data = []) {\n state.cloverUnsupportedArea = data;\n },\n [types.SET_IS_WRITABLE](state, data = true) {\n state.isWritable = data;\n },\n [types.SET_AUDIENCE_ESTIMATE_SCORE](state, v) {\n state.audienceEstimateScore = v;\n },\n [types.SET_IMPRESSION_ESTIMATE](state, data) {\n state.impressionEstimate = data;\n },\n [types.SET_IS_BUDGET_RECOMMEND_VISIBLE](state, data) {\n state.isBudgetRecommendVisible = data;\n },\n [types.SET_BUDGET_SOURCE_TYPE](state, data) {\n state.budgetSourceType = data;\n },\n [types.SET_IMPRESSION_ESTIMATE_PARAM](state, data) {\n state.impressionEstimateParam = data;\n },\n [types.SET_BUDGET_RECOMMEND_DATA](state, data) {\n state.budgetRecommendData = data;\n },\n [types.SET_BUDGET_RECOMMEND_PARAM](state, data) {\n state.budgetRecommendParam = data;\n },\n [types.SET_AUDIENCE_ESTIMATE_USER_COUNT](state, v) {\n state.audienceEstimateUserCount = v;\n },\n [types.SET_AUDIENCE_ESTIMATE_RESULT](state, data) {\n state.audienceEstimateResult = data;\n },\n [types.SET_AUDIENCE_ESTIMATE_DATA](state, data) {\n state.audienceEstimateData = { ...data };\n },\n [types.SET_AUDIENCE_LOADING](state, isLoading) {\n state.isEstimating = isLoading;\n },\n // dpa重定向app直投pangle时不支持受众预估,增加一个state避免对愿逻辑产生影响,方便后续删除\n [types.SET_AUDIENCE_DISABLED_IN_DPA](state, audienceEstimateDisabledInDpa = false) {\n state.audienceEstimateDisabledInDpa = audienceEstimateDisabledInDpa;\n },\n [types.SET_OSV_TOKEN](state, data) {\n state.osvToken = data;\n },\n [types.SET_PIXEL_TOKEN](state, data) {\n state.pixelToken = data;\n },\n [types.SET_AUDIENCE_FAILED](state, isFailed) {\n state.isEstimateFailed = isFailed;\n },\n [types.SET_STOCK_WIDGET_AVAILABLE](state, data) {\n state.isStockWidgetAvailable = data;\n },\n [types.SET_STOCK_ESTIMATE](state, data) {\n state.stockEstimate = { ...data };\n },\n [types.SET_STOCK_ESTIMATE_KEY](state, data) {\n state.stockEstimateKey = data;\n },\n [types.SET_STOCK_RECALCULATING](state, data) {\n state.isStockReCalculating = data;\n },\n [types.SET_STOCK_ORDER_COMPLETED](state, data) {\n state.isStockOrderCompleted = data;\n },\n [types.SET_STOCK_BUDGET_THRESHOLD](state, data) {\n state.stockBudgetThreshold = { ...data };\n },\n [types.SET_CAMPAIGN_QUOTA](state, data) {\n state.campaignQuota = { ...data };\n },\n [types.SET_ADGROUP_QUOTA](state, data) {\n state.adgroupQuota = { ...data };\n },\n [types.SET_SPLIT_TEST_QUOTA](state, data) {\n state.splitTestQuota = { ...data };\n },\n [types.SET_APP_ID_IN_NEW_QUOTA](state, isAppidInNewQuota) {\n state.isAppidInNewQuota = isAppidInNewQuota;\n },\n [types.SET_IS_ONLY_SUPPORT_TT](state, isOnlySupportTT) {\n state.isOnlySupportTT = isOnlySupportTT;\n },\n [types.SET_STOCK_IMPRESSION_THRESHOLD](state, data) {\n state.stockImpressionThreshold = { ...data };\n },\n [types.SET_CITY_MAP](state, data) {\n state.cityMap = data;\n },\n [types.SET_AREAS_MAP](state, data) {\n state.areasMap = data;\n },\n [types.SET_ALL_LOCATION_MAP](state, data) {\n state.allLocationMap = data;\n },\n [types.SET_AD_INTEREST_MAP](state, data) {\n state.adInterestArr = data;\n },\n [types.SET_AD_TOPIC_MAP](state, data) {\n state.adTopicArr = data;\n },\n [types.SET_IN_MARKET_LIST](state, data) {\n state.inMarketList = data;\n },\n [types.SET_IN_MARKET_LIST_OBJ](state, data) {\n state.inMarketListObj = data;\n },\n [types.SET_IN_MARKET_SEARCH_LIST](state, data) {\n state.inMarketSearchList = data;\n },\n [types.SET_AD_INTEREST_KEYWORDS_INFO_BY_ID](state, { id, lang, data }) {\n Vue.set(state.adInterestKeywordsInfoMap, `${id}-${lang}`, data);\n },\n [types.CLEAR_AD_INTEREST_KEYWORDS_INFO_MAP](state) {\n state.adInterestKeywordsInfoMap = {};\n },\n [types.SET_AD_BEHAVIOR_HASHTAG_INFO](state, { id, data }) {\n Vue.set(state.adBehaviorHashtag, id, data);\n },\n [types.CLEAR_AD_BEHAVIOR_HASHTAG_INFO](state) {\n state.adBehaviorHashtag = {};\n },\n [types.SET_DMP_INFO](state, list) {\n state.dmpInfo = list;\n },\n [types.SET_ADGROUP_COUNTRY](state, data) {\n state.country = data && data.map(item => +item) || [];\n },\n [types.SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX](state, { index = 0, data }) {\n state.country_codes_by_split_test_index.splice(index, 1, data.filter(code => typeof code === 'string'));\n },\n [types.SET_PARTICLE_LOCATIONS](state, { index = 0, data }) {\n state.particle_locations[index] = data;\n },\n [types.SET_USE_DRAFT](state, val) {\n state.useDraft = val;\n },\n [types.SET_AREAS_LIST](state, val) {\n state.areasData = val;\n },\n [types.SET_AVAILABLE_COUNTRIES](state, data) {\n state.availableCountries = data;\n },\n [types.SET_APP_ID](state, data) {\n state.ad_ref_app_id = data;\n },\n [types.SET_APP_LIST](state, data) {\n state.appList = data;\n },\n [types.SET_APP_EVENT_LIST](state, list) {\n state.appEventList = list;\n },\n [types.SET_EXTERNAL_ACTIONS](state, data) {\n state.externalActions = data;\n },\n [types.SET_EXTERNAL_ACTIONS_A](state, data) {\n state.externalActionsA = data;\n },\n [types.SET_EXTERNAL_ACTIONS_B](state, data) {\n state.externalActionsB = data;\n },\n\n [types.SET_BUDGET](state, data) {\n state.budget = data.budget;\n state.budget_mode = data.budget_mode;\n },\n [types.SET_SPLIT_TEST](state, data = 0) {\n state.ab_test = data;\n },\n [types.SET_SPLIT_TEST_VAR](state, data) {\n state.splitTestVars = data;\n },\n // 设置对应 split test index 的 adgroup 的定向推荐埋点追踪器\n [types.SET_TARGET_RECOMMEND_TRACE_INFO](state, data) {\n state.targetRecommendTraceInfo = data;\n },\n [types.CLEAR_TARGET_RECOMMEND_TRACE_INFO](state) {\n state.targetRecommendTraceInfo = null;\n },\n [types.SET_POWER](state, data) {\n state.power = _.floor(data, 3);\n },\n [types.SET_SUGGEST_BUDGET](state, data) {\n state.suggest_budget = _.floor(data, 3);\n },\n [types.SET_SP_BUDGET](state, data) {\n state.splitTestBudget = data;\n },\n [types.SET_SP_ESTIMATE_DATA](state, { index, data }) {\n const newEstimate = [\n ...state.splitTestAudienceEstimate,\n ];\n newEstimate[index] = data;\n\n state.splitTestAudienceEstimate = newEstimate;\n },\n [types.SET_BEHAVIOR_OPTIONS](state, data = []) {\n state.behaviorOptions = data;\n },\n [types.SET_CATALOG](state, catalog = null) {\n state.catalog = catalog;\n state.platformId = catalog ? catalog.platformId : '';\n },\n [types.SET_CATALOG_BC_ID](state, bcId) {\n state.catalogBcId = bcId || '0';\n },\n [types.SET_CATALOG_AUTHORIZED](state, isCatalogAuth = true) {\n state.isCatalogAuth = isCatalogAuth;\n },\n [types.SET_EDIT_STATISTIC_TYPE](state, data = []) {\n state.editStatisticType = data;\n },\n [types.SET_AD_TEST_STATUS](state, data = 0) {\n state.ab_test_status = data;\n },\n [types.SET_PANGLE_FLOW_PKG](state, data = []) {\n state.pangleFlowPackArr = data;\n },\n [types.SET_LEARN_PARSE](state, data = false) {\n state.learnParse = data;\n },\n [types.SET_INITIALIZED](state, data = false) {\n state.initialized = data;\n },\n [types.SET_VIDEO_CATEGORY_OPTIONS](state, data = []) {\n categoryHandler(data);\n state.videoCategoryOptions = data;\n },\n [types.SET_FLATTENED_VIDEO_CATEGORY_OPTIONS](state, data = []) {\n state.flattenedVideoCategoryOptions = data;\n },\n [types.SET_CREATOR_CATEGORY_OPTIONS](state, data = []) {\n categoryHandler(data);\n state.creatorCategoryOptions = data;\n },\n [types.SET_FLATTENED_CREATOR_CATEGORY_OPTIONS](state, data = []) {\n state.flattenedCreatorCategoryOptions = data;\n },\n [types.SET_DEVICE_MODEL_LIST](state, data = []) {\n state.deviceModelsList = data;\n },\n [types.ADD_ALERT_INFO](state, { key, info }) {\n if (!info) return;\n state.alertInfo = { ...state.alertInfo, [key]: info };\n },\n [types.CLEAR_ALERT_INFO](state, { keys = [] } = {}) {\n if (keys.length) {\n const alertInfo = {};\n Object.keys(state.alertInfo).filter(key => !keys.includes(key)).forEach((key) => {\n alertInfo[key] = state.alertInfo[key];\n });\n state.alertInfo = alertInfo;\n } else {\n state.alertInfo = {};\n }\n },\n [types.SET_PANGLE_SUPPORT_COUNTRIES](state, pangleSupportCountries = []) {\n if (pangleSupportCountries.length) {\n state.pangleSupportCountries = pangleSupportCountries;\n }\n },\n [types.SET_IS_OPENBS](state, open) {\n state.isOpenBS = open;\n },\n [types.SET_IOS14_QUOTATYPE](state, type) {\n state.ios14_quota_type = type;\n },\n [types.SET_SEARCH_DELIVERY_TYPE](state, val) {\n state.search_delivery_type = val;\n },\n [types.SET_DOMAIN_TOKEN](state, token) {\n state.domainCancelToken = token;\n },\n [types.SET_HAS_REWRITTEN_COPIED_START_TIME](state, val) {\n state.hasRewrittenCopiedStartTime = val;\n },\n [types.SET_APP_PROFILE_PAGE_TYPE](state, val) {\n state.appProfilePageType = val;\n },\n [types.SET_DPA_OR_SHOP_COUNTRY_OFFLINE](state, val) {\n state.isDpaOrShopCountryOffline = val;\n },\n setVOStatus(state, val) {\n state.voStatus = val;\n },\n [types.SET_HAS_PREMIUM_TOPIC](state, val) {\n state.hasPremiumTopic = val;\n },\n },\n actions: {\n // 获取url的全局参数\n fillQueryParams({ commit }, params = {}) {\n commit(types.SET_ADGROUP_ACTION, params.act || 'create');\n commit(types.SET_CAMPAIGN_ID, params.campaign_id || '');\n commit(types.SET_AD_GROUP_ID, params.ad_id || '');\n commit(types.SET_CAMPAIGN_OBJECTIVE_TYPE, params.objective_type || '');\n },\n async getDomain({ state, commit, getters }, url) {\n if (state.domainCancelToken) {\n state.domainCancelToken.cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_DOMAIN_TOKEN, source);\n try {\n const data = await service.getExternalUrlDomain({\n external_url: url,\n }, source.token);\n commit(types.SET_ADGROUP_EXTERNAL_URL_DOMAIN, data.domain);\n if (getters.eventDomainList.length && getters.eventDomainList.includes(data.domain)) {\n commit(types.SET_ADGROUP_DOMAIN, data.domain);\n }\n return data.domain || '';\n } catch (err) {\n captureError(err);\n }\n },\n async setCampaignID({ commit }, ID) {\n commit(types.SET_CAMPAIGN_ID, ID);\n return ID;\n },\n // 获取已经存在的广告组\n async getCampaignNavList({ commit }, params) {\n let data = [];\n try {\n data = await service.getCampaignNavList(params);\n } catch (err) {\n captureError(err);\n }\n commit(types.GET_CAMPAIGN_NAV_LIST, data);\n return data;\n },\n async getOperatorList({ commit }) {\n let data = [];\n try {\n data = await service.getOperatorList();\n } catch (err) {\n captureError(err);\n }\n commit(types.GET_OPERATOR_LIST, data);\n return data;\n },\n\n // 获取已经存在的广告组\n async getAdCampaignData(store, params) {\n const { commit, rootState } = store;\n const { campaign_id } = params;\n let data = {};\n try {\n if (campaign_id) {\n data = await service.getCampaignModifyTime({ campaign_id });\n } else {\n data = rootState.campaign.adcampaign.campaignSaved || {};\n }\n commit(types.SET_AD_CAMPAIGN_DATA, data);\n } catch (err) {\n captureError(err);\n }\n return data;\n },\n async loadAreasData({ commit }, param) {\n let areas = [];\n try {\n areas = await fetchAreasData(param);\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_AREAS_LIST, areas);\n return areas;\n },\n\n // 获取已经存在的广告组\n async getAdgroupNavList({ commit }, { campaign_id }) {\n let data = [];\n try {\n if (campaign_id) {\n data = await service.getAdgroupNavList({ campaign_id });\n }\n } catch (err) {\n captureError(err);\n }\n commit(types.GET_AD_NAV_LIST, data);\n return data;\n },\n\n // 获取Ad信息,回填表单\n async getAdgroupInfo(store, options) {\n const { commit } = store;\n let data = {};\n try {\n if (!options.isCreative) {\n commit(types.SET_LOADING_STATE, { status: true });\n }\n delete options.isCreative;\n const { isInCopyCreative, ...params } = options;\n if (!params.ad_id) {\n return;\n }\n ({ data } = await service.getAdgroupInfo(params));\n const { objective_type } = data || {};\n const isDpa = +objective_type === +campaignObjectiveValue.DPA;\n const isShop = +data?.base_info?.objective_type === +campaignObjectiveValue.Shop;\n // 如果是创意复制的逻辑里,强制将创意类型变成普通创意;【但不包含以下类型的创意】\n // 1. DPA创意\n const shouldRewriteMaterialMode = isInCopyCreative && !isDpa;\n const adgroupInfo = {\n ad_id: params.ad_id,\n ...data.base_info,\n // 如果是创意复制的逻辑里,强制将创意类型变成普通创意\n ...(shouldRewriteMaterialMode ? { creative_material_mode: creativeType.CUSTOM } : null),\n };\n commit(types.GET_AD_GROUP_INFO, adgroupInfo);\n const { catalogBcId } = store.state;\n const hadSelectCatalog = catalogBcId && catalogBcId !== '0';\n if (!hadSelectCatalog) {\n // 如果已经设置过则不需要初始化避免被覆盖,只在编辑复制到已有计划下需要初始化\n commit(types.SET_CATALOG_BC_ID, isShop ? adgroupInfo.shop_authorized_bc : adgroupInfo.catalog_authorized_bc);\n }\n commit(types.SET_LOADING_STATE, { status: false });\n } catch (err) {\n captureError(err);\n commit(types.SET_LOADING_STATE, { status: false });\n }\n return data;\n },\n // 获取Ad信息,回填表单\n async getAdgroupInfoByDraftGetForSimplifiedSmb(store, options) {\n const { commit } = store;\n let data = {};\n try {\n commit(types.SET_LOADING_STATE, { status: true });\n delete options.isCreative;\n const { ...params } = options;\n const { draft_json = {} } = await getUserDraftChecked(params);\n data = draft_json;\n const adgroupInfo = {\n ad_id: params.ad_id,\n ...draft_json.base_info || {},\n struct_version: 1,\n };\n commit(types.SET_AD_GROUP_DATA, adgroupInfo);\n commit(types.GET_AD_GROUP_INFO, adgroupInfo);\n commit(types.SET_LOADING_STATE, { status: false });\n } catch (err) {\n captureError(err);\n commit(types.SET_LOADING_STATE, { status: false });\n }\n return data;\n },\n\n // 获取复制的Ad信息,回填表单\n async getCopyAdgroupInfo(store, params) {\n const { commit } = store;\n let data = {};\n try {\n commit(types.SET_LOADING_STATE, { status: true });\n ({ data } = await service.getCopyAdgroupInfo(params));\n // if (resp && resp.body) {\n // data = resp.body || {};\n // }\n commit(types.GET_AD_GROUP_INFO, {\n ad_id: params.ad_id,\n ...data,\n });\n commit(types.SET_ADGROUP_COUNTRY, data && data.country || []);\n commit(types.SET_LOADING_STATE, { status: false });\n } catch (err) {\n captureError(err);\n commit(types.SET_LOADING_STATE, { status: false });\n }\n return data;\n },\n\n // 接口校验创建计划\n async checkAdgroup(store, postData) {\n let data = {};\n const { commit } = store;\n try {\n commit(types.SET_LOADING_STATE, { status: true });\n data = await service.checkAdgroup(postData);\n commit(types.SET_LOADING_STATE, { status: false });\n } catch (err) {\n commit(types.SET_LOADING_STATE, { status: false });\n data = { ...err };\n captureError(err);\n }\n return data;\n },\n setLocalAdgroup(store, formData) {\n const { getters } = store;\n try {\n const adgroupKey = getters.adgroupKey || '';\n return service.setLocalStore(adgroupKey, formData);\n } catch (err) {\n captureError(err);\n }\n },\n\n // 获取创意审核建议\n getAdGroupSuggestions(store, id) {\n return request.get(apis.ad.suggestions, { ad_id: id });\n },\n async getCampaignQuota({ commit }, data) {\n let quota = {};\n try {\n quota = await service.getCampaignQuota(data);\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_CAMPAIGN_QUOTA, quota?.campaign_quota);\n commit(types.SET_ADGROUP_QUOTA, quota?.ad_group_quota);\n commit(types.SET_SPLIT_TEST_QUOTA, quota?.split_test);\n return quota;\n },\n async getIos14QuotaInfo({ commit, dispatch }, params) {\n const { app_id, campaign_id = '' } = params;\n const { has } = await service.getAppIdIsNewQuotaProcess({\n app_id,\n });\n commit(types.SET_APP_ID_IN_NEW_QUOTA, has);\n if (has) {\n const [campaignQuota, adgroupQuotaInfo] = await Promise.all([\n service.useIOS14QuotaApiForCampaign({ app_id, campaign_id }),\n service.useIOS14QuotaApiForAdgroup({ campaign_id }),\n ]);\n commit(types.SET_CAMPAIGN_QUOTA, campaignQuota);\n commit(types.SET_ADGROUP_QUOTA, adgroupQuotaInfo);\n } else {\n dispatch('getCampaignQuota', params);\n }\n },\n getLocalAdgroup(store) {\n const { getters } = store;\n let data = {};\n try {\n const adgroupKey = getters.adgroupKey || '';\n data = service.getLocalStore(adgroupKey);\n } catch (err) {\n captureError(err);\n }\n return data;\n },\n // TODO: 这个函数扩展性极其之低,每次在state中新增了字段,都要在这里手动添加对应的重置逻辑。。。。。\n async clearAdgroupAllData({ getters, commit }) {\n try {\n const adgroupKey = getters.adgroupKey || '';\n await service.removeLocalStore(adgroupKey);\n commit(types.SET_AD_GROUP_DATA, {});\n commit(types.SET_AD_CAMPAIGN_DATA, {});\n commit(types.SET_ADGROUP_ACTION, 'create');\n commit(types.SET_CAMPAIGN_ID, '');\n commit(types.SET_AD_GROUP_ID, '');\n commit(types.SET_IS_ENABLE_IOS14, adgroupIos14Switch.unset);\n commit(types.SET_CAMPAIGN_OBJECTIVE_TYPE, '');\n commit(types.SET_INVENTORY_FLOW, []);\n commit(types.SET_CONVERSION_CHECKED, false); // TODO: pixel全量上线后此逻辑需要下掉,所有改动处均有此注释\n commit(types.SET_CREATIVE_MATERIAL_MODE, creativeType.CUSTOM);\n commit(types.SET_ADGROUP_COPY_NUM, 1);\n commit(types.SET_ADGROUP_BATCH_INFO, []);\n commit(types.GET_AD_GROUP_INFO, {});\n commit(types.SET_AD_CLASSIFY, 1);\n commit(types.GET_CAMPAIGN_NAV_LIST, []);\n commit(types.GET_AD_NAV_LIST, []);\n commit(types.SET_ADGROUP_BATCH_INFO, []);\n commit(types.SET_ADGROUP_PRICING, '');\n commit(types.SET_AD_PLAT_FORM, 0);\n commit(types.SET_ADGROUP_OPT_TARGET, 0);\n commit(types.SET_CPX_BID_CAP, false);\n commit(types.SET_FAKE_ADIDS, []);\n commit(types.SET_ADGROUP_EXTERNAL_URL_DOMAIN, '');\n commit(types.SET_STOCK_BUDGET_THRESHOLD, [-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]);\n commit(types.SET_STOCK_IMPRESSION_THRESHOLD, [-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]);\n commit(types.SET_STOCK_ESTIMATE_KEY, '');\n commit(types.SET_STOCK_WIDGET_AVAILABLE, false);\n commit(types.SET_APP_ID, '');\n commit(types.SET_APP_LIST, []);\n commit(types.SET_APP_EVENT_LIST, []);\n commit(types.SET_EXTERNAL_ACTIONS, []);\n commit(types.SET_EXTERNAL_ACTION, 0);\n commit(types.SET_EXTERNAL_ACTIONA, 0);\n commit(types.SET_EXTERNAL_ACTIONB, 0);\n commit(types.SET_PIXEL_ID, '');\n commit(types.SET_EXTERNAL_TYPE, 0);\n commit(types.SET_PIXEL_EVENT_LIST, []);\n commit(types.SET_PIXEL_LIST, []);\n commit(types.SET_PIXEL_INFO, {});\n commit(types.SET_WEB_URL_LIST, []);\n commit(types.SET_APP_URL_LIST, []);\n commit(types.SET_OPEN_URL, '');\n commit(types.SET_IS_OPEN_URL, 0);\n commit(types.SET_SUGGEST_PRICE, 0);\n commit(types.SET_BEHAVIOR_OPTIONS, []);\n commit(types.SET_SUGGEST_PRICE_TYPE, '');\n commit(types.SET_DEVICE_MODEL_LIST, []);\n commit(types.CLEAR_ALERT_INFO);\n commit(types.SET_INITIALIZED, false);\n commit(types.SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX, { index: 0, data: [] });\n commit(types.SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX, { index: 1, data: [] });\n commit(types.CLEAR_AD_INTEREST_KEYWORDS_INFO_MAP);\n commit(types.CLEAR_AD_BEHAVIOR_HASHTAG_INFO);\n commit(types.CLEAR_TARGET_RECOMMEND_TRACE_INFO);\n commit(types.SET_CATALOG_BC_ID, '0');\n commit(types.SET_CATALOG);\n commit(types.SET_HAS_REWRITTEN_COPIED_START_TIME, false);\n commit(`shop/${types.RESET_SHOP_STATE}`, null, { root: true });\n } catch (err) {\n captureError(err);\n }\n return Promise.resolve(true);\n },\n removeSplitTestVuex(store) {\n const { commit, state } = store;\n commit(types.SET_SPLIT_TEST_VAR, []);\n commit(types.SET_SP_BUDGET, []);\n commit(types.SET_AD_TEST_STATUS, 0);\n state.targetMultiTabs.forEach((item) => {\n commit(types.SET_SP_ESTIMATE_DATA, {\n isEstimating: false,\n isEstimateFailed: true,\n audienceEstimateScore: 0,\n isMatchAbTest: false,\n sample_count: 0,\n count: 0,\n });\n });\n },\n async removeLocalAdgroup(store) {\n const { getters, commit, state } = store;\n try {\n // 清空草稿的函数不能清空vuex,清空vuex会导致复制回退一些getters计算错误\n const adgroupKey = getters.adgroupKey || '';\n await service.removeLocalStore(adgroupKey);\n commit(types.SET_APP_ID, '');\n commit(types.SET_EXTERNAL_ACTION, '');\n commit(types.SET_AD_PLAT_FORM, 0);\n\n // 清除 Split test 中的一些变量\n commit(types.SET_SPLIT_TEST_VAR, []);\n commit(types.SET_SP_BUDGET, []);\n commit(types.SET_AD_TEST_STATUS, 0);\n commit(types.SET_IS_ENABLE_IOS14, adgroupIos14Switch.unset);\n state.targetMultiTabs.forEach((item) => {\n commit(types.SET_SP_ESTIMATE_DATA, {\n isEstimating: false,\n isEstimateFailed: true,\n audienceEstimateScore: 0,\n isMatchAbTest: false,\n sample_count: 0,\n count: 0,\n });\n });\n } catch (err) {\n captureError(err);\n }\n return Promise.resolve(true);\n },\n // 提交创建、复制广告计划\n async submitCreateAdgroup(store, postData) {\n let data = {};\n const { commit } = store;\n try {\n commit(types.SET_LOADING_STATE, { status: true });\n const risk_info = tool.getRiskInfo();\n data = await service.createAdgroup({ ...postData, risk_info });\n // 清除 loading 状态\n commit(types.SET_LOADING_STATE, { status: false });\n } catch (err) {\n commit(types.SET_LOADING_STATE, { status: false });\n data = {};\n captureError(err);\n return Promise.reject(new Error(err?.code));\n }\n return data;\n },\n async submitCreateRFAdgroup(store, postData) {\n const risk_info = tool.getRiskInfo();\n try {\n const resp = await request.post(apis.ad.create, { ...postData, risk_info });\n return resp;\n } catch (err) {\n if (err && err.code) {\n return err;\n }\n captureError(err);\n }\n },\n // 更新编辑广告计划updateAdgroup\n async submitUpdateAdgroup(store, postData) {\n let data = {};\n const { commit } = store;\n commit(types.SET_LOADING_STATE, { status: true });\n await service.updateAdgroup(postData).then((res) => {\n data = res;\n }).catch((err) => {\n data = err;\n captureError(err);\n }).finally(() => {\n commit(types.SET_LOADING_STATE, { status: false });\n });\n return data;\n },\n // 请求 应用地址检测,不需要验证返回\n async updateAppIcon(store, postData) {\n // 前端校验规则:status为 success 且event_id非空\n let flag = false;\n try {\n const data = await service.updateAppIcon(postData);\n if (data && data.status === 'success' && data.event_id) {\n flag = true;\n }\n } catch (err) {\n captureError(err);\n }\n return flag;\n },\n // 请求appType\n async getAppType({ state, commit }, aadvid) {\n try {\n // 后端无缺省值,为空的时候直接不调用(watch导致一开始进入的时候会调用该接口)\n if (state.ad_ref_app_id === '') return;\n const resp = await request.get(apis.ad.checkAppInstallType, {\n aadvid,\n app_id: state.ad_ref_app_id,\n });\n commit(types.SET_EXTERNAL_ACTION_MAP, resp.data.statistic_map);\n } catch (err) {\n captureError(err);\n }\n },\n // 请求appinfo\n async getAppInfo(store, params) {\n // 前端校验规则:status为 success 且event_id非空\n let appInfo = {}; // app_name,app_icon:{uri}\n try {\n const { data } = await service.getAppInfo(params);\n appInfo = (data && data.app_info) || {};\n } catch (err) {\n captureError(err);\n }\n return appInfo;\n },\n // 获取 App 的 Event list\n async getAppEventList({ commit }, args = {}) {\n let list = [];\n try {\n const resp = await service.fetchAppEvents(args);\n list = (resp && resp.data && resp.data.AppEvent) || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_APP_EVENT_LIST, list);\n return list;\n },\n async getStockEstimate({ commit }, { params, config }) {\n let stockEstimateData = null;\n try {\n const resp = await service.fetcStockEstimate(params, config);\n stockEstimateData = (resp && resp.data) || null;\n } catch (err) {\n // 手动取消的请求直接 reject\n if (err && err.isCancel) return Promise.reject(err);\n captureError(err);\n }\n commit(types.SET_STOCK_ESTIMATE, stockEstimateData);\n return stockEstimateData;\n },\n // 受众预估\n async getAudienceEstimate({ commit }, args = {}) {\n commit(types.SET_AUDIENCE_LOADING, true);\n commit(types.SET_AUDIENCE_ESTIMATE_SCORE, 0);\n const result = {\n score: 0, // 受众预估评估的档位\n userCount: '', // 预估人数\n upperUserCount: 0,\n lowerUserCount: 0,\n isWritable: true,\n ttpUnsupportedArea: [], // ttp 国家\n };\n try {\n const isUserCountVisible = !(args.audience?.age && String(args.audience?.age) === String([[13, 17]]));\n commit(types.SET_CAMPAIGN_PARAMS_AUDIENCE_ESTIMATE, args, { root: true });\n const res = await service.fetchAudienceEstimate(args);\n const data = res?.data || {};\n result.score = parseInt(data.estimate ?? 0, 10);\n result.isWritable = data.is_writable ?? true;\n result.upperUserCount = data.upper_user_count ?? 0;\n result.lowerUserCount = data.lower_user_count ?? 0;\n if (!isUserCountVisible) {\n result.userCount = 'NA';\n } else {\n result.userCount = data.user_count || '';\n\n if (result.userCount[0] === '<') {\n result.userCount = `<${currencyLocaleFormat(result.userCount, 0)}`;\n } else if (result.userCount.includes('-')) {\n result.userCount = result.userCount\n .split('-')\n .map(item => currencyLocaleFormat(item.split(',').join(''), 0))\n .join('-');\n }\n }\n result.ttpUnsupportedArea = data.ttp_unsupported_area || []; // [TTP] 普通受众预估 ttpUnsupportedArea\n result.cloverUnsupportedArea = data.clover_unsupported_area || []; // [Clover] 普通受众预估 cloverUnsupportedArea\n commit(types.SET_AUDIENCE_LOADING, false);\n commit(types.SET_AUDIENCE_FAILED, false);\n } catch (err) {\n captureError(err);\n commit(types.SET_AUDIENCE_LOADING, false);\n commit(types.SET_AUDIENCE_FAILED, true);\n }\n commit(types.SET_AUDIENCE_ESTIMATE_RESULT, result);\n commit(types.SET_AUDIENCE_ESTIMATE_SCORE, result.score);\n commit(types.SET_AUDIENCE_ESTIMATE_USER_COUNT, result.userCount);\n commit(types.SET_IS_WRITABLE, result.isWritable);\n commit(types.SET_AUDIENCE_ESTIMATE_TTP, result.ttpUnsupportedArea);\n commit(types.SET_AUDIENCE_ESTIMATE_CLOVER, result.cloverUnsupportedArea);\n return result;\n },\n async getDmp({ commit, dispatch, getters }, args = {}) {\n let list = [];\n try {\n const isRF = checkIsRF(args.objectiveType) || getters.isRF;\n const params = {\n buying_type: isRF ? buyingType.RF : buyingType.AUCTION,\n };\n list = await service.fetchDmp(params);\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_DMP_INFO, list);\n },\n\n /** 生成受众预估的入参,调用时注意判断 data 中属性可能为 undefined 的情况 */\n generateAudienceEstimateParam({ state, getters }, data) {\n const { adInterestArr = [] } = state;\n\n const platform =\n data.platform instanceof Array\n ? (data.platform[0] && data.platform[0].toString()) || '0'\n : (data.platform && data.platform.toString()) || '0';\n const isNoLimitAdTags = adInterestArr.length && !data?.ad_tag_v2?.find(t => adInterestArr.find(v => +v.id === +t));\n\n // 考虑定向扩量的情况\n const { expansion_enabled, expansion_types } = data.targeting_expansion;\n const gender = expansion_enabled && expansion_types.includes(TargetingExpansionType.GENDER) ? 0 : data.gender;\n const age = expansion_enabled && expansion_types.includes(TargetingExpansionType.AGE) ? ['ALL'] : data.age;\n const highHouseholdIncome = data.household_income ?? [];\n\n // Retargeting 考虑定向扩量的情况\n const isAudienceExpand = expansion_enabled && expansion_types.includes(TargetingExpansionType.AUDIENCE);\n const retargetingTags = isAudienceExpand ? [] : data.retargeting_tags;\n const retargetingTagsExclude = isAudienceExpand ? [] : data.retargeting_tags_exclude;\n\n // 兴趣 & 行为定向考虑定向扩量的情况\n const isInterestBehaviorExpand = expansion_enabled && expansion_types.includes(TargetingExpansionType.INTEREST_BEHAVIOR);\n const adTagV2 = isInterestBehaviorExpand ? [] : (data.ad_tag_v2 || []);\n const inMarketTags = isInterestBehaviorExpand ? [] : data.in_market_tags ?? [];\n const interestKeywordsI18n = isInterestBehaviorExpand ? [] : (data.interest_keywords_i18n || []);\n const actionScenesV2 = isInterestBehaviorExpand ? [] : (data.action_scenes_v2 || []);\n const videoActionsV2 = isInterestBehaviorExpand ? [] : (data.video_actions_v2 || []);\n const actionCategoriesV2 = isInterestBehaviorExpand ? [] : (data.action_categories_v2 || []);\n const actionDaysV2 = isInterestBehaviorExpand ? [] : (data.action_days_v2 || []);\n\n const behaviorParams = {\n ad_tag_v2: isNoLimitAdTags ? [] : adTagV2.map(v => v.toString()),\n in_market_tags: inMarketTags,\n interest_keywords_i18n: interestKeywordsI18n,\n action_scenes_v2: actionScenesV2,\n video_actions_v2: videoActionsV2,\n action_categories_v2: actionCategoriesV2,\n action_days_v2: actionDaysV2,\n };\n\n const audience = {\n ...behaviorParams,\n platform: [platform],\n retargeting_tags: (retargetingTags || []).map(v => v.toString()),\n retargeting_tags_exclude: (retargetingTagsExclude || []).map(v => v.toString()),\n districts: data.districts ?? [],\n city: data.city.map(v => v.toString()),\n country: data.country.map(v => v.toString()),\n province: data.province.map(v => v.toString()),\n particle_locations: data.particle_locations.map(v => v.toString()),\n gender: gender.toString(),\n ac: data.ac && data.ac.includes('ALL') ? [] : data.ac.map(v => v.toString()),\n age: age && age.includes('ALL') ? [] : age.map((v = []) => v.map(v => +v)),\n language_list: data.language_list && data.language_list.includes('all') ? [] : data.language_list.map(v => v.toString()),\n android_osv: (+platform === platformEnum.ANDROID ? data.android_osv?.toString() : '') || '',\n ios_osv: (+platform === platformEnum.IOS ? data.ios_osv?.toString() : '') || '',\n device_models: data.device_models || [],\n launch_price: data.launch_price.map(v => v.toString()),\n flow_package_include: data.flow_package_include,\n flow_package_exclude: data.flow_package_exclude,\n carriers: data.carriers || [],\n app_retargeting_install: data.app_retargeting_install || false,\n app_retargeting_type: data.app_retargeting_type || null,\n retargeting_audience_rule: data.retargeting_audience_rule || null,\n automated_targeting: data.automated_targeting,\n ...(getters.isDpa ? getDpaRetargetParams(data) : {}), // dpa的受众预估参数\n household_income: highHouseholdIncome,\n };\n\n /** [TTP] 新格式的受众预估参数 */\n const params = {\n audience,\n objective_type: data.objective_type,\n op_sys_filter: getters.opSysFilter,\n with_signature: data.withSignature ?? false,\n ad_ref_app_id: data.ad_ref_app_id || '',\n ad_ref_pixel_id: data.ad_ref_pixel_id || '',\n product_platform_id: audience.product_platform_id, // 从audience取,会判断是否是dpa\n optimize_goal: data.optimize_goal,\n external_type: state.external_type,\n inventory_flow: (+data.inventory_flow_type === 0 && !data.inventory_flow.length)\n ? Object.keys(INVENTORY_FLOW).reduce((r, v) => {\n if (v !== 'ALL' && v !== 'OTHER') {\n r.push(INVENTORY_FLOW[v].toString());\n }\n return r;\n }, [])\n : data.inventory_flow.map(v => v.toString()),\n };\n return params;\n },\n\n /**\n * 设置受众预估,受众预估请求以及存储受众预估入参\n */\n async setAudienceEstimateData({\n commit, dispatch, state, getters,\n }, info = {}) {\n const isRetry = info.constructor === Object && !Object.keys(info).length;\n const { audienceEstimateData } = state;\n const data = isRetry ? { ...audienceEstimateData } : { ...info };\n const { inventory_flow: old_inventory_flow = [] } = audienceEstimateData;\n const {\n city = [],\n country = [],\n province = [],\n particle_locations = [],\n inventory_flow = [],\n } = data;\n // 没有选择地域不启用;\n // 切换版位时会置空地域,不启用(dpa除外);\n const isLocationEmpty = !city.length && !country.length && !province.length && !particle_locations.length;\n if (\n isLocationEmpty\n || inventory_flow.length !== old_inventory_flow.length && !getters.isDpa\n || !inventory_flow.length && getters.isDpa\n ) {\n commit(types.SET_AUDIENCE_ESTIMATE_SCORE, 0);\n commit(types.SET_AUDIENCE_ESTIMATE_DATA, data);\n dispatch('triggerBrAndIe', data);\n return;\n }\n // 设备价格区间选择不正确,不重新请求\n if (data.launch_price && data.launch_price.length) {\n const [min, max] = data.launch_price;\n if (min >= max) {\n return;\n }\n }\n const params = await dispatch('generateAudienceEstimateParam', data);\n if (!isRetry) {\n const oldParams = await dispatch('generateAudienceEstimateParam', state.audienceEstimateData);\n if (!_.isEqual(data, state.audienceEstimateData)) {\n commit(types.SET_AUDIENCE_ESTIMATE_DATA, data);\n }\n if (_.isEqual(params, oldParams)) {\n dispatch('triggerBrAndIe', data);\n return;\n }\n }\n commit(types.SET_AUDIENCE_ESTIMATE_DATA, data);\n if (estimateRequestTimer) window.clearTimeout(estimateRequestTimer);\n estimateRequestTimer = window.setTimeout(async () => {\n await dispatch('getAudienceEstimate', params);\n dispatch('triggerBrAndIe', data);\n }, estimateRequestTnterval);\n },\n /** 触发 budget recommend 和 impression estimate */\n triggerBrAndIe({ state, dispatch }, adgroupData) {\n if (!state.isBudgetRecommendVisible) {\n return;\n }\n const temp = { adgroup: adgroupData, campaign: state.adCampaignData };\n dispatch('setBudgetRecommendParam', temp);\n dispatch('setImpressionEstimateParam', temp);\n },\n /** 设置 impression 预估的人数 */\n setImpressionEstimateParam({ commit, state }, data) {\n if (!data || !data?.adgroup?.budget) {\n commit(types.SET_IMPRESSION_ESTIMATE, 0);\n return;\n }\n const param = recommendBudgetRequestFormatter(data.adgroup, data.campaign, state.audienceEstimateResult);\n if (_.isEqual(param, state.impressionEstimateParam)) {\n return;\n }\n commit(types.SET_IMPRESSION_ESTIMATE_PARAM, data);\n if (impressionEstimateTimer) {\n window.clearTimeout(impressionEstimateTimer);\n }\n impressionEstimateTimer = window.setTimeout(() => {\n getImpressionService(param).then(impression => commit(types.SET_IMPRESSION_ESTIMATE, impression));\n }, estimateRequestTnterval);\n },\n /** 获取推荐预算 */\n setBudgetRecommendParam({ commit, state }, data) {\n if (!data) {\n commit(types.SET_BUDGET_RECOMMEND_DATA, undefined);\n return;\n }\n const param = recommendBudgetRequestFormatter(data.adgroup, data.campaign, state.audienceEstimateResult);\n if (_.isEqual(param, state.budgetRecommendParam)) {\n return;\n }\n commit(types.SET_BUDGET_RECOMMEND_PARAM, param);\n if (budgetRecommendTimer) {\n window.clearTimeout(budgetRecommendTimer);\n }\n budgetRecommendTimer = window.setTimeout(() => {\n getRecommendBudgetService(param).then(resData => commit(types.SET_BUDGET_RECOMMEND_DATA, resData));\n }, estimateRequestTnterval);\n },\n /** 推荐预算采纳数据回传 */\n returnRecommendBudget({ commit, state }, data) {\n if (!state.budgetRecommendParam) {\n return;\n }\n const commonParam = state.budgetRecommendParam;\n commonParam.ad_futures.id = data.adId;\n commonParam.campaign_futures.id = data.campaignId;\n const params = {\n ...commonParam,\n adopt_source: state.budgetSourceType,\n estimated_impression: {\n impression_lower: state.impressionEstimate,\n },\n recommended_budget: {\n recommended_budget_info: state.budgetRecommendData,\n },\n };\n postBackRecommendBudgetService(params);\n },\n setCityMap({ commit }, data = []) {\n commit(types.SET_CITY_MAP, [...data]);\n },\n async getAllLocationMap({ commit, dispatch, state }) {\n const param = {\n inventory_flow: JSON.stringify([3000, 1000, 9000]),\n };\n const list = await dispatch('loadAreasData', param);\n const data = cityOptions2Array(list) || [];\n commit(types.SET_ALL_LOCATION_MAP, [...data]);\n },\n setAdInterestMap({ commit }, data = []) {\n commit(types.SET_AD_INTEREST_MAP, [...data]);\n },\n setAdTopicMap({ commit }, data = []) {\n commit(types.SET_AD_TOPIC_MAP, [...data]);\n },\n setHasPreMiumTopic({ commit }, data = false) {\n commit(types.SET_HAS_PREMIUM_TOPIC, data);\n },\n async getAppList({ commit }) {\n let appList = [];\n try {\n const resp = await service.getAppList();\n appList = resp.AppList || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_APP_LIST, appList);\n return appList;\n },\n async getOperationSystemList({ state, commit }, data) {\n // osv传参,2或者不传是线上全版本xxx above适用落地页ios,3 ios14-, 4 ios14+\n if (state.osvToken) {\n state.osvToken.cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_OSV_TOKEN, source);\n let iosList = [];\n let androidList = [];\n try {\n const resp = await service.getOperationSystemList(data, { cancelToken: source.token });\n iosList = _.map(resp.ios, (item) => {\n item.type = 'ios';\n return item;\n }) || [];\n androidList = _.map(resp.android, (item) => {\n item.type = 'android';\n return item;\n }) || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_IOS_LIST, iosList);\n commit(types.SET_ANDROID_LIST, androidList);\n return {\n ios: iosList,\n android: androidList,\n };\n },\n async getAllLanguagesList({ commit }) {\n let allLanguagesList = [];\n try {\n const resp = (await service.getAllLanguagesList()) || {};\n allLanguagesList = resp.language_list.map(({ code, label }) => ({ id: code, label })) || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_ALL_LANGUAGES_LIST, allLanguagesList);\n return allLanguagesList;\n },\n async getExternalActions({\n state, commit,\n }, data) {\n // 请求时之前的请求还没有返回直接取消\n const { isSplitTest = false, splitTestIndex = 0, updateAll = false } = data;\n\n if (state.externalActionToken[splitTestIndex]) {\n state.externalActionToken[splitTestIndex].cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_EXTERNALACTION_TOKEN, { data: source, index: splitTestIndex });\n let externalActions = [];\n delete data.isSplitTest;\n delete data.splitTestIndex;\n delete data.updateAll;\n\n try {\n const resp = await service.getExternalActions(data, { cancelToken: source.token });\n externalActions = resp.events || [];\n } catch (err) {\n captureError(err);\n return false;\n }\n if (isSplitTest && updateAll) { // isSplitTest在切换app时,ab 都需要更新\n commit(types.SET_EXTERNAL_ACTIONS, externalActions);\n commit(types.SET_EXTERNAL_ACTIONS_A, externalActions);\n commit(types.SET_EXTERNAL_ACTIONS_B, externalActions);\n } else if (isSplitTest && splitTestIndex === 0) {\n commit(types.SET_EXTERNAL_ACTIONS, externalActions);\n commit(types.SET_EXTERNAL_ACTIONS_A, externalActions);\n } else if (isSplitTest && splitTestIndex === 1) {\n commit(types.SET_EXTERNAL_ACTIONS, externalActions);\n commit(types.SET_EXTERNAL_ACTIONS_B, externalActions);\n } else {\n commit(types.SET_EXTERNAL_ACTIONS, externalActions);\n }\n return externalActions;\n },\n async getPixelEventList({ commit }, data) {\n let pixelEventList = [];\n if (!(data && data.pixel_id)) {\n return;\n }\n try {\n commit(types.SET_PIXEL_EVENT_LIST_LOADING, true);\n const resp = await service.getPixelEventList(data);\n pixelEventList = resp.pixel_event_list && resp.pixel_event_list.map(item => ({\n id: item.external_action,\n verified_domain_list: item.verified_domain_list,\n name: item.external_action_i18n,\n eventName: item.pixel_event_name || '',\n status: item.activity_status || 0, // 0: not support 1:NoRecentActivity,2:Active\n total_count: item.total_count || 0,\n deprecated: item.deprecated,\n }));\n commit(types.SET_PIXEL_EVENT_LIST, pixelEventList);\n commit(types.SET_PIXEL_EVENT_LIST_LOADING, false);\n } catch (err) {\n commit(types.SET_PIXEL_EVENT_LIST, []);\n commit(types.SET_PIXEL_EVENT_LIST_LOADING, false);\n captureError(err);\n }\n return pixelEventList;\n },\n async getPixelList({ state, commit }, params) {\n if (state.pixelToken) {\n state.pixelToken.cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_PIXEL_TOKEN, source);\n let pixelArr = [];\n try {\n commit(types.SET_PIXEL_LIST_LOADING, true);\n const resp = await service.getPixelList(params, {\n cancelToken: source.token,\n });\n pixelArr = resp.pixel_list.map(item => ({\n has_pcm_config: item.has_pcm_config,\n id: item.pixel_id,\n name: item.pixel_name,\n pixel_code: item.pixel_code,\n pixel_version: item.pixel_version, // 1:pixel1.0, 2:pixel2.0\n status: item.activity_status || 0, // 0: not support 1:NoRecentActivity,2:Active\n asset_relation_status: item.asset_relation_status,\n available_quota: item.available_quota,\n }));\n if (+params?.promotion_website_type === 1) {\n commit(types.SET_PIXEL_ID, (pixelArr.length && pixelArr[0].id || ''));\n }\n commit(types.SET_PIXEL_LIST, pixelArr);\n commit(types.SET_PIXEL_LIST_LOADING, false);\n } catch (err) {\n commit(types.SET_PIXEL_LIST, []);\n commit(types.SET_PIXEL_LIST_LOADING, false);\n captureError(err);\n }\n return pixelArr;\n },\n async getPixelInfoById({ commit }, data) {\n let pixelInfo = {};\n const params = {\n pixel_id: data && data.pixel_id,\n promotion_website_type: data.promotion_website_type,\n };\n try {\n const { pixel_info: resp } = await service.getPixelInfoById(params);\n const pixelEventList = (resp.pixel_events ?? []).map(item => ({\n id: item.external_action,\n verified_domain_list: item.verified_domain_list,\n name: item.external_action_i18n,\n eventName: item.pixel_event_name || '',\n total_count: item.total_count || 0,\n deprecated: item.deprecated,\n }));\n pixelInfo = {\n id: resp.pixel_id,\n has_pcm_config: resp.has_pcm_config,\n name: resp.pixel_name || '',\n pixel_code: resp.pixel_code,\n pixel_version: resp.pixel_version, // 1:pixel1.0, 2:pixel2.0\n asset_relation_status: resp.asset_relation_status,\n pixelEvents: pixelEventList,\n };\n commit(types.SET_PIXEL_INFO, pixelInfo);\n } catch (err) {\n commit(types.SET_PIXEL_INFO, {});\n captureError(err);\n }\n return pixelInfo;\n },\n async getWebRecommendUrlList({ commit }, data) {\n let urlList = [];\n try {\n // const params = { external_type: contentType.website, limit: 20 };\n urlList = await service.getRecommendUrlList(data);\n commit(types.SET_WEB_URL_LIST, urlList.urls);\n } catch (err) {\n commit(types.SET_WEB_URL_LIST, []);\n captureError(err);\n }\n return urlList;\n },\n\n /**\n * 加载视频和创作者相关分类选项\n * @return {Object} data { videoCategory, creatorCategory }\n */\n async loadVideoAndCreatorCategory({ commit, rootState }) {\n let res = {};\n try {\n const industryTypes = rootState.campaign.adcampaign.campaignSaved?.industry_types || [];\n const param = { industry_types: JSON.stringify(industryTypes) };\n res = await request.get(apis.ad.get_action_categort, param);\n res = res.data || {};\n } catch (e) {\n res = {};\n }\n const videoCategory = res.video_related || [];\n const creatorCategory = res.creator_related || [];\n const flattenTree = (treeData) => {\n const flattenedArr = [];\n const root = { children: treeData };\n const handleEach = (item) => {\n const label = item.label || item.i18n_value;\n flattenedArr.push({ label, translation: label, ...item });\n };\n tool.walkTreeBFS({ root, handler: handleEach });\n return flattenedArr;\n };\n\n /** @deprecated 临时处理下线的视频行为定向标签,在定向选择选项菜单作选项隐藏处理 | TODO 长线方案落地后移除 */\n const disableDeprecatedVideoCategory = (options) => {\n const clonedOptions = _.cloneDeep(options);\n const deprecatedOption = clonedOptions.find(option => option.id === 9); // 和定向商定目前 deprecated 标签统一归为 id 为 9 的节点的子节点\n if (deprecatedOption) {\n tool.walkTreeBFS({\n root: deprecatedOption,\n handler: (item) => {\n item.deprecated = true;\n item.visible = false;\n item.filterable = false;\n },\n });\n }\n\n return clonedOptions;\n };\n\n const handledCategory = disableDeprecatedVideoCategory(videoCategory);\n\n commit(types.SET_VIDEO_CATEGORY_OPTIONS, handledCategory);\n commit(types.SET_FLATTENED_VIDEO_CATEGORY_OPTIONS, flattenTree(handledCategory));\n commit(types.SET_CREATOR_CATEGORY_OPTIONS, creatorCategory);\n commit(types.SET_FLATTENED_CREATOR_CATEGORY_OPTIONS, flattenTree(creatorCategory));\n return { videoCategory, creatorCategory };\n },\n\n /**\n * Split test 部分\n */\n // 获取在 split test 下的 budget\n getSplitTestBudget(store, data) {\n return request.get(apis.ad.getSplitTestBudget, data);\n },\n getPower({ commit }, data) {\n return request.post(apis.ad.getPower, data).then(({ data }) => {\n commit(types.SET_POWER, data.power);\n });\n },\n // 获取rf合同的时间是否有效\n // getRfContractValidTime ({ commit }, params) {\n // request.get(apis.ad.rfContractTime, params).then(({ data }) => {\n // commit(types.SET_POWER, data.power);\n // });\n // // return data;\n // },\n getSplitTestAudienceEstimate({ state, commit, getters }, info) {\n state.splitTestAudienceEstimate.forEach(async (item, index) => {\n if (state.splitTestVars[index] === undefined) {\n const newData = {\n isEstimating: false,\n isEstimateFailed: false,\n audienceEstimateScore: 0,\n audienceEstimateUserCount: '',\n isMatchAbTest: false,\n sample_count: 0,\n count: 0,\n };\n commit(types.SET_SP_ESTIMATE_DATA, { index, data: newData });\n return;\n }\n\n /* const statueChange = {\n isEstimating: true,\n audienceEstimateScore: 0,\n audienceEstimateUserCount: '',\n isEstimateFailed: false,\n isMatchAbTest: false,\n };\n */\n // commit(types.SET_SP_ESTIMATE_DATA, { index, data: statueChange });\n const platform = typeof state.splitTestVars[index].platform === 'object'\n ? state.splitTestVars[index].platform : [state.splitTestVars[index].platform];\n const age = formatAge(state.splitTestVars[index].age);\n // 存量drop流量传1\n const requestParams = {\n power: 0.8,\n ab_test: true,\n ad_ref_app_id: '',\n width_signature: false,\n object_type: state.objective_type,\n op_sys_filter: getters.opSysFilter,\n optimize_goal: info.optimize_goal,\n inventory_flow: state.splitTestVars[index]?.inventory_flow,\n external_type: state.external_type,\n audience: {\n ...state.splitTestVars[index],\n platform,\n age,\n },\n };\n\n if (splitTestEstimateRequestTimer[index]) window.clearTimeout(splitTestEstimateRequestTimer[index]);\n splitTestEstimateRequestTimer[index] = window.setTimeout(async () => {\n try {\n const curParam = requestParams;\n const isUserCountVisible = !(curParam.age && String(curParam.age) === String([[13, 17]])); // 如果 age 只选了 13-17,受众预估人数显示为 NA\n const res = await request.post(apis.ad.splitTestAuEstimate, curParam);\n const data = res?.data || {};\n commit(types.SET_SP_ESTIMATE_DATA, {\n index,\n data: {\n isEstimating: false,\n audienceEstimateScore: parseInt(data.estimate ?? 0, 10) || 0,\n audienceEstimateUserCount: isUserCountVisible ? data.user_count || '' : 'NA',\n isMatchAbTest: data.is_match_ab_test || false,\n isEstimateFailed: false,\n count: data.count || 0,\n sample_count: data.sample_count || 0,\n },\n });\n } catch (err) {\n captureError(err);\n commit(types.SET_SP_ESTIMATE_DATA, {\n index,\n data: {\n isEstimating: false,\n audienceEstimateScore: 0,\n audienceEstimateUserCount: '',\n isEstimateFailed: true,\n isMatchAbTest: false,\n sample_count: 0,\n count: 0,\n },\n });\n }\n }, estimateRequestTnterval);\n });\n },\n\n getVOStatus({ state, commit }, params) {\n return request.post(apis.ad.voStatus, params)\n .then(({ data }) => {\n commit('setVOStatus', data);\n })\n .catch((err) => {\n commit('setVOStatus', {\n cost_cap_status: 200,\n roas_status: 200,\n value_optimizer_status: 200,\n highest_value_status: 200,\n });\n });\n },\n\n getPangleFlowPkg({ state, commit }) {\n return request.get(apis.ad.pangleFlowPkg).then(({ data }) => {\n const { flow_pack_bind_models: models } = data;\n commit(types.SET_PANGLE_FLOW_PKG, models || []);\n return data;\n });\n },\n\n // 清空提示信息\n clearAlertInfo({ commit }, payload = {}) {\n commit(types.CLEAR_ALERT_INFO, payload);\n },\n\n /** 加载设备列表 */\n async getDeviceModelsList({ state, commit }) {\n let res = {};\n try {\n res = await request.get(apis.ad.get_device_model_list);\n } catch (e) {\n res = {};\n }\n const deviceList = res?.data?.device_models || [];\n const flattenDeviceArr = [];\n const handleNode = (item) => {\n item.label = item.name;\n item.translation = item.name;\n flattenDeviceArr.push(item);\n if (_.isArray(item.children)) item.children.forEach(item => handleNode(item));\n };\n deviceList.forEach(item => handleNode(item));\n commit(types.SET_DEVICE_MODEL_LIST, flattenDeviceArr);\n return { list: deviceList, flattenList: flattenDeviceArr };\n },\n\n // 增加一条提示信息\n addAlertInfo({ commit }, infoData) {\n commit(types.ADD_ALERT_INFO, infoData);\n },\n sendTargetRecommendTrace({ state, commit }, adgroupIds) {\n if (!state.targetRecommendTraceInfo) return;\n (Array.isArray(adgroupIds) ? adgroupIds : [adgroupIds]).forEach((adgroupId) => {\n state.targetRecommendTraceInfo.tracer(adgroupId);\n });\n commit(types.CLEAR_TARGET_RECOMMEND_TRACE_INFO);\n },\n },\n};\nexport default adgroup;\n","/* eslint-disable max-depth */\nimport moment from 'moment-timezone';\nimport _ from 'lodash';\nimport apis from 'src/const/apis';\nimport { comingSourceType } from 'src/const/coming_source_type';\nimport {\n formatAge, formatAc, formatPlatForm, splitTestType, REFERER,\n} from 'src/const/state/campaign';\n\nimport request from 'src/utils/request';\nimport tool from 'src/utils/tool';\nimport * as types from 'src/store/types';\nimport { updateAndCheckUserCreativeDraft, submitDraftAndSaved } from 'src/service/simplifiedSmb';\nimport { submitResultAdapt } from 'src/utils/simplifyForSmbInCreative';\nimport { isCreativeHasIdentityWhite } from 'src/const/whiteList';\nimport { bcIdentityTypesList } from 'src/const/state/creative';\nimport adcampaign from './adcampaign';\nimport adgroup from './adgroup';\n\nfunction getAcoHasVideo(imageList) {\n return !!imageList?.some(item => item.video_info);\n}\n\nconst SET_PERF_OPERATED_ANCHOR = `perf/${types.SET_PERF_OPERATED_ANCHOR}`;\n\nexport default {\n namespaced: true,\n modules: {\n adcampaign,\n adgroup,\n },\n state: {\n partnerList: [],\n campaignIds: {},\n campaignIdForSplittest: -1,\n adgroupIdForSplittest: -1,\n abtestFlagForSplittest: 0, // -1: 开启 0:未开启 1:受众 2:创意 3:优化目标\n\n // 点击第三层级导航或者 tab 时候触发这个地方的修改\n activeThirdTabs: {\n parents: '',\n itemIndex: 0,\n name: '',\n },\n paramsAudienceEstimate: {}, // 存储的受众预估参数\n referer: {}, // 创编来源 [tt_store_manager]\n isFromSimpilified_05: false, // 判断当前campaign是否来自simpilified\n isFromConversion: false, // 判断是否由lite的conversion跳来\n needModeSwitchTooltip: false, // 判断切换模式时是否需要tooltip\n },\n\n getters: {\n modelKey(state, getters, rootState) {\n const permissionData = rootState.account.permissionData || {};\n const loginId = permissionData?.account?.id || '0';\n const visitorId = permissionData?.core_user?.core_user_id || '0';\n return `${loginId}:${visitorId}`;\n },\n hasReferer(state) {\n return state.referer?.value !== undefined;\n },\n // 判断当前campaign是否来自store_manager\n isStoreManagerReferer(state) {\n return state.referer?.value === REFERER.STORE_MANAGER.value;\n },\n // 判断当前campaign是否来自Magellan seller center\n isMagellanReferer(state) {\n return state.referer?.value === REFERER.MAGELLAN.value;\n },\n // 判断当前campaign 是否来自 pixel switch now\n isSwitchNowReferer(state) {\n return state.referer?.value === REFERER.SWITCH_TO_CONVERSION_SHORTCUT.value;\n },\n },\n\n mutations: {\n [types.SET_PARTNER_LIST](state, data) {\n state.partnerList = data;\n },\n [types.SET_ACK_CAMPAIGN_IDS](state, data = {}) {\n state.campaignIds = data;\n },\n [types.SET_CAMPAIGN_ID_FOR_SPLITTEST](state, data) {\n state.campaignIdForSplittest = data;\n },\n [types.SET_ADGROUP_ID_FOR_SPLITTEST](state, data) {\n state.adgroupIdForSplittest = data;\n },\n [types.SET_ABTEST_FLAG_FOR_SPLITTEST](state, data) {\n state.abtestFlagForSplittest = data;\n },\n [types.SET_ACTIVE_THIRD_TABS](state, data = {}) {\n state.activeThirdTabs = data;\n },\n [types.SET_PARAMS_AUDIENCE_ESTIMATE](state, data = {}) {\n state.paramsAudienceEstimate = data;\n },\n [types.SET_REFERER](state, data = {}) {\n state.referer = data;\n },\n [types.CLEAR_REFERER](state) {\n state.referer = {};\n },\n [types.SET_ISFROMSIMPLIFIED05](state, data) {\n state.isFromSimpilified_05 = data;\n },\n [types.SET_ISFROMCONVERSION](state, data) {\n state.isFromConversion = data;\n },\n [types.SET_NEED_MODE_SWITCH_TOOLTIP](state, data) {\n state.needModeSwitchTooltip = data;\n },\n },\n\n actions: {\n updatePoNumber({ commit }, data) {\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.post(apis.campaign.updatePoNumber, data);\n },\n\n updateBudget({ commit }, data) {\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.post(apis.campaign.updateBudget, data);\n },\n\n // 获取所有 campaign\n getAllCampaign({ commit }, data) {\n return request.get(apis.campaign.nav_list, data);\n },\n\n // 获取第三方监测链接合作伙伴列表\n getPartnerList({ commit }, data) {\n return request.get(apis.toolbox.partnerList, data).then(({ data }) => {\n commit(types.SET_PARTNER_LIST, data.partner);\n });\n },\n\n // 获取应用信息,已废弃\n getAppInfo(store, data) {\n return request.get(apis.toolbox.appInfo, data);\n },\n\n // 触发后端应用信息获取\n triggerPackageParse(store, data) {\n return request.postForm(apis.ad.package_parse, data);\n },\n\n // 触发列表中没有 app 信息的转化获取 app 信息\n updateAppInfo(store, data) {\n return request.post(apis.toolbox.appInfoUpdate, data);\n },\n\n // 修改 toggle 状态\n updateCampaignStatus({ commit }, data) {\n commit(SET_PERF_OPERATED_ANCHOR, {}, { root: true });\n return request.postForm(apis.campaign.update_status, data);\n },\n updateConvertStatus(store, data) {\n return request.post(apis.toolbox.convert_update_status, data);\n },\n\n // 创建转化工具\n createConversion(store, data) {\n return request.post(apis.toolbox.convert_create, data);\n },\n // 更新转化工具\n updateConversion(store, data) {\n return request.post(apis.toolbox.conversionUpdate, data);\n },\n\n // 新建竞价广告提交新建和复制\n async submitCampaign(\n store,\n {\n isCopy = false,\n isCopyCreative = false,\n isProcedural = false,\n creativeMaterialMode,\n isNewStructure,\n comingSourceType, // 广告创建的来源标识\n isEngagementFans,\n creativeInfoWithCta,\n isTrackApp,\n },\n ) {\n const {\n state, dispatch, rootState, rootGetters,\n } = store;\n\n let adId = '';\n let adName = '';\n let campaignId = '';\n let campaignName = '';\n // 复制弹窗的adgroup数据\n const publishReport = {\n campaign: {},\n adgroup: [],\n ad: [],\n };\n if (isCopy) {\n ({ campaign_id: campaignId = '' } = state.adgroup);\n if (isCopyCreative) {\n const { adgroupData = {}, adgroupInfo = {}, fakeAdIds = [] } = state.adgroup;\n adName = adgroupData.name || adgroupInfo.name || '';\n // 有 fakeAdIds 是将现有创意复制到一个新 adgroup 中\n // 没有 fakeAdIds 是将现有创意复制到一个已有的 adgroup 中\n adId = fakeAdIds.length ? '' : state.adgroup.ad_id;\n }\n } else {\n ({ ad_id: adId = '', campaign_id: campaignId = '' } = rootState.route.query);\n }\n const campaignFormData = state.adcampaign.campaignSaved || {};\n campaignName = campaignFormData.campaign_name || '';\n publishReport.campaign = {\n campaign_name: campaignName || '',\n campaign_id: campaignId || '',\n status: 1,\n msg: '',\n };\n // 第 1 步 campaign 数据提交 ==>\n // 当没有 campaignId 的时候,请求 campaign 新建的接口\n if (!campaignId) {\n try {\n const risk_info = tool.getRiskInfo();\n const { data } = await dispatch('adcampaign/createCampaign', { ...campaignFormData, coming_source_type: comingSourceType, risk_info });\n if (!data || !data.campaign_id) {\n return { status: false, item: 'campaign', report: publishReport };\n }\n campaignId = data.campaign_id;\n publishReport.campaign_id = campaignId;\n } catch (e) {\n return {\n status: false, item: 'campaign', report: publishReport, rejectCode: e?.message,\n };\n }\n }\n\n // 第 2 步 ===>\n // 提交新建的单个计划 , https://wiki.bytedance.net/pages/viewpage.action?pageId=253373699\n let adIds = adId ? [adId] : [];\n const creativeBatchInfo = [];\n let batchInfo = [];\n // 当没有 adId 的时候,请求 adGroup 新建的接口\n // adgroup 复制的逻辑\n if (adIds.length === 0) {\n try {\n const adgroupData = { ...state.adgroup.adgroupData } || {}; // 已经合并完成的数据\n if (adgroupData.language_list.length && adgroupData.language_list[0] === 'all') {\n adgroupData.language_list = [];\n }\n if (adgroupData.age.length && adgroupData.age[0] === 'ALL') {\n adgroupData.age = [];\n } else {\n adgroupData.age = formatAge(adgroupData.age);\n }\n adgroupData.ac = formatAc(adgroupData.ac);\n adgroupData.platform = formatPlatForm(adgroupData.platform);\n if (isCopy) {\n batchInfo = [...state.adgroup.batchInfo] || [];\n }\n\n // create 时候处理 split test 的情况,TODO:目前只有 target 一种情况\n if (rootGetters['campaign/adgroup/useTargetSplitTest']) {\n adgroupData.ab_test = splitTestType.TARGET;\n\n batchInfo = state.adgroup.targetMultiTabs.map((item, index) => {\n const vars = rootState.campaign.adgroup.splitTestVars[index];\n const inventory_flow = rootState.campaign.adgroup.splitTestVars[index].inventory_flow.filter(item => item !== '2000') || [];\n return {\n ...vars,\n inventory_flow,\n name: adgroupData.name + item.value,\n platform: formatPlatForm(vars.platform),\n num: index + 1,\n age: formatAge(vars.age),\n ios_osv: vars.ios_osv ? +vars.ios_osv : vars.ios_osv, // 注意创建和受众获取的字段格式不同\n android_osv: vars.android_osv ? +vars.android_osv : vars.android_osv, // 注意创建和受众获取的字段格式不同\n };\n });\n } else if (rootGetters['campaign/adgroup/useCreativeSplitTest']) {\n // 即使是创意层级split test,adgroup的数据也需要构造batch_info. 创意层级有多少个实验组,这里的batch_info就有多少个元素\n adgroupData.ab_test = splitTestType.CREATIVE;\n batchInfo = rootGetters['creative/create/batchInfo'].map((item, index, arr) => ({\n name: adgroupData.name + tool.numBasedChar(index), // 0 -> A, 1->B\n num: index + 1,\n }));\n } else if (rootGetters['campaign/adgroup/useBiddingSplitTest']) {\n adgroupData.ab_test = splitTestType.OPTIMIZE;\n\n batchInfo = state.adgroup.biddingMultiTabs.map((item, index) => {\n const vars = rootState.campaign.adgroup.splitTestVars[index];\n return {\n ...vars,\n name: adgroupData.name + item.value,\n num: index + 1,\n };\n });\n }\n delete adgroupData.splitTestTarget;\n delete adgroupData.splitTestBidding;\n delete adgroupData.ad_id;\n adgroupData.campaign_id = campaignId;\n publishReport.adgroupData = { // 建议出价埋点需要用着两个\n bid: adgroupData.bid,\n cpa_bid: adgroupData.cpa_bid,\n };\n adgroupData.coming_source_type = comingSourceType;\n const { data } = await dispatch('adgroup/submitCreateAdgroup', { batch_info: batchInfo, base_info: adgroupData });\n\n // 定向推荐埋点\n dispatch('adgroup/sendTargetRecommendTrace', data?.ad_ids);\n\n // 预算推荐埋点\n dispatch('adgroup/returnRecommendBudget', { adId: (data?.ad_ids ?? [''])[0], campaignId });\n\n if (isCopy && data) {\n const respBatchInfo = data.ad_report || []; // 返回必须和batchInfo数组一样长度\n for (let i = 0; i < batchInfo.length; i++) {\n const item = Object.assign({}, batchInfo[i]); // 深度复制\n item.creative_status = 0; // 创意先设置0,提交后回填\n const respItem = { ...respBatchInfo[i] };\n const newItem = {\n ...item,\n ...respItem,\n campaign_id: campaignId || '',\n }; // 更新adgroup的status\n batchInfo[i] = { ...newItem };\n // status=1 成功, 0 失败,找出提交成功的发给creativeBatchInfo\n if (+newItem.status === 1) {\n creativeBatchInfo.push({\n num: newItem.num, // 根据num更新 creative\n name: newItem.name,\n ad_id: newItem.ad_id || '',\n status: 1,\n });\n }\n }\n publishReport.adgroup = batchInfo;\n data.ad_ids && data.ad_ids.forEach(ad_id => Vue.prototype.trackEvent(\n 'copy_adgroup_source', { ad_id, source_ad_id: rootState.campaign.adgroup.ad_id },\n ));\n }\n if (!data || !data.ad_ids) {\n return { status: false, item: 'adgroup', report: publishReport };\n }\n adIds = data.ad_ids;\n } catch (e) {\n return {\n status: false, item: 'adgroup', report: publishReport, rejectCode: e?.message,\n };\n }\n } else if (isCopyCreative) {\n batchInfo = [\n {\n ad_id: adId,\n name: adName,\n campaign_id: campaignId,\n campaign_name: campaignName,\n status: 1,\n num: 1,\n },\n ];\n publishReport.adgroup = batchInfo;\n }\n // 第 3 步 ===>\n // Ad 提交,接口返回数据中的 ad_and_creative_ids 为第四步中需要的全部数据\n const { inventory_flow: inventoryFlow, objective_type: objectiveType } = state.adgroup;\n let creativeData = {\n coming_source_type: comingSourceType,\n ad_ids: adIds,\n inventory_flow: inventoryFlow,\n objective_type: objectiveType,\n creative_material_mode: creativeMaterialMode, // 与adgroup层级的取值保持一致\n ...rootGetters['creative/playable-card-form/formData'], // 试玩表单贡献的提交参数\n };\n\n // 自定义创意\n if (!isProcedural) {\n // splittest 创意\n if (rootGetters['campaign/adgroup/useCreativeSplitTest']) {\n const batchInfoWithoutPlayableUrl = rootGetters['creative/create/batchInfo'];\n // 为batchInfo挂上playableUrl\n creativeData.batch_info = batchInfoWithoutPlayableUrl.map((item, index) => {\n const playableUrlList = creativeData.playable_url;\n return { ...item, playable_url: playableUrlList[index] };\n });\n } else {\n creativeData.creative_info = isCopyCreative\n ? rootGetters['creative/create/copyCreativeInfo']\n : rootGetters['creative/create/creativeInfo'];\n\n Object.keys(creativeInfoWithCta).forEach((materialType) => {\n if (creativeInfoWithCta[materialType] && creativeInfoWithCta[materialType].length > 0) {\n creativeInfoWithCta[materialType].forEach((item, index) => {\n _.set(creativeData, `creative_info.${materialType}[${index}].call_to_action`, item.call_to_action);\n _.set(creativeData, `creative_info.${materialType}[${index}].call_to_action_id`, item.call_to_action_id);\n });\n }\n });\n\n if (isEngagementFans) {\n creativeData.creative_info.video_list = creativeData.creative_info.video_list.map(item => ({\n ...item,\n call_to_action: '',\n call_to_action_id: '',\n open_url: '',\n is_open_url: 0,\n }));\n }\n if (isTrackApp) {\n creativeData.creative_info.video_list = creativeData.creative_info.video_list.map(item => ({\n ...item,\n external_url: '',\n }));\n }\n }\n } else {\n // 程序化创意\n creativeData = {\n ...creativeData,\n ...rootGetters['creative/procedural-creative-form/formData'],\n struct_version: isNewStructure ? 1 : 0,\n };\n if (isTrackApp) {\n creativeData.external_url = '';\n }\n // 使用CTA优选,则清空CTA 列表的值\n if (creativeData.call_to_action_id) {\n creativeData.call_to_action_list = [];\n }\n // 如果无视频则素材授权字段置为 false\n const isAcoHasVideo = getAcoHasVideo(creativeData.image_list);\n if (!isAcoHasVideo) {\n creativeData.is_creative_authorized = false;\n }\n\n // 删除create接口中的无用字段\n delete creativeData.isSignProtocol;\n delete creativeData.showProtocolTerms;\n\n\n /** ---- identity相关字段处理 ---- */\n delete creativeData.identity_data;\n\n if (!isCreativeHasIdentityWhite()) {\n delete creativeData.identity_id;\n delete creativeData.identity_type;\n }\n\n if (!bcIdentityTypesList.includes(creativeData.identity_type)) {\n // 只有bc原生创意有 identity_bc_id\n delete creativeData.identity_bc_id;\n }\n }\n if (isCopy) {\n creativeData.batch_info = creativeBatchInfo;\n }\n // 如果没有使用 creative 类型 split test,\n // 则应将待提交数据的playable_url参数从数组变为数组第一个元素\n // 因为split test在vuex中按照数组存储\n if (!rootGetters['campaign/adgroup/useCreativeSplitTest']) {\n creativeData.playable_url\n && (creativeData.playable_url = creativeData.playable_url[0]);\n } else {\n // 如果使用 creative 类型 split test,\n // 则将待提价数据外层playable_url参数清除,\n // playable_url已被放置在batchInfo中\n creativeData.playable_url = undefined;\n }\n let finalData = null;\n try {\n const { data } = await dispatch('creative/create/uploadAds', creativeData, { root: true });\n if (isCopy && data) {\n // 校验的结果,合并到adgroup显示\n const respCreativeReport = data.creative_report || []; // 返回必须和batchInfo数组一样长度\n for (let k = 0; k < batchInfo.length; k++) {\n const itemx = Object.assign({}, batchInfo[k]);\n const num = itemx.num || '';\n // 更新adgroup的 ad_id, creative_status\n const respItem = respCreativeReport[num] || {}; // 根据num 找到creative,合并到adgroup\n if (Object.keys(respItem).length > 0) {\n batchInfo[k] = {\n ...itemx,\n ...respItem,\n };\n }\n }\n publishReport.adgroup = [...batchInfo];\n if (isCopyCreative) {\n const { copyNumber } = rootState.creative.create;\n publishReport.ad = batchInfo.reduce((r, v) => {\n for (let i = 0; i < copyNumber; i++) {\n r.push(v);\n }\n return r;\n }, []);\n } else {\n publishReport.ad = [...batchInfo];\n }\n }\n finalData = data;\n publishReport.finalData = finalData;\n } catch (e) { // 全部失败的时候线上失败原因\n for (let k = 0; k < batchInfo.length; k++) {\n batchInfo[k].creative_msg = e?.msg || '';\n }\n publishReport.adgroup = [...batchInfo];\n publishReport.ad = [...batchInfo];\n return {\n status: false, item: 'ad', report: publishReport, rejectCode: e?.code,\n };\n }\n // split-test部分不在平台后端落库的数据需要落到数据侧\n // todo: edit的split现在有问题,先不做\n if (rootGetters['campaign/adgroup/useSplitTest'] && (rootGetters['campaign/adgroup/isCreate'] || isCopy)) {\n try {\n const splitTestEstimateVars = state.adgroup.splitTestAudienceEstimate;\n const realPeople = +splitTestEstimateVars[1].count === 0\n ? splitTestEstimateVars[0].count : Math.min(splitTestEstimateVars[0].count, splitTestEstimateVars[1].count);\n const realSamplePeople = +splitTestEstimateVars[1].sample_count === 0\n ? splitTestEstimateVars[0].sample_count : Math.min(splitTestEstimateVars[0].sample_count, splitTestEstimateVars[1].sample_count);\n let realBudget = state.adgroup.adgroupData.budget;\n if (state.adgroup.adgroupData.budget_mode === 0) {\n const startTime = moment(state.adgroup.adgroupData.start_time);\n const endTime = moment(state.adgroup.adgroupData.end_time);\n const diffDays = Math.ceil(endTime.diff(startTime, 'days', true)); // 计算天数差,不满一天按一天算\n realBudget *= diffDays;\n }\n const data = {\n campaign_id: campaignId,\n suggest_budget: state.adgroup.suggest_budget,\n power: state.adgroup.power,\n real_budget: +realBudget,\n reach_people: realPeople,\n sample_people: realSamplePeople,\n };\n await request.post(apis.splittest.save, data);\n } catch (e) {\n // 上报数据侧失败也不会影响创编流程\n }\n }\n return {\n status: true,\n item: 'all',\n report: publishReport,\n };\n },\n\n // R&F 提交订单、创建 Adgroup\n async createRFOrder(store, {\n isCopy,\n }) {\n const {\n state, dispatch,\n } = store;\n let campaignId = '';\n let campaignName = '';\n const publishReport = {\n campaign: {},\n adgroup: [],\n ad: [],\n };\n campaignId = state.adgroup.campaign_id || '';\n const campaign_coming_source_type = comingSourceType.CREATE_CAMPAIGN;\n const campaignFormData = state.adcampaign.campaignSaved || {};\n campaignName = campaignFormData.campaign_name || '';\n publishReport.campaign = {\n campaign_name: campaignName || '',\n campaign_id: campaignId || '',\n status: 1,\n msg: '',\n };\n let useExistedCampaign = true;\n // 第 1 步 campaign 数据提交 ==>\n // 当没有 campaignId 的时候,请求 campaign 新建的接口\n if (!campaignId) {\n // 没有campaignId时,RF复制视为使用新建campaign复制adg\n useExistedCampaign = false;\n try {\n const resp = await dispatch('adcampaign/createCampaign', { ...campaignFormData, coming_source_type: campaign_coming_source_type });\n const { data } = resp;\n if (!data || !data.campaign_id) {\n if (resp.code !== 4) {\n return { status: false, report: publishReport };\n }\n }\n campaignId = data.campaign_id;\n publishReport.campaign_id = campaignId;\n // campaign 创建成功,把 id 写进 store,以防 ad/create 时库存侧异常,adgroup 需要多次尝试创建\n await dispatch('adgroup/setCampaignID', campaignId);\n } catch (e) {\n return { status: false, report: publishReport, rejectCode: e?.message };\n }\n }\n // 第 2 步 ===>\n // 提交新建的单个计划\n const batchInfo = [];\n\n try {\n let adg_coming_source_type = comingSourceType.CREATE_AD_GROUP;\n if (isCopy && !useExistedCampaign) {\n adg_coming_source_type = comingSourceType.COPY_AD_GROUP_TO_NEW_CAMPAIGN;\n } else if (isCopy && useExistedCampaign) {\n adg_coming_source_type = comingSourceType.COPY_AD_GROUP_TO_EXISTED_CAMPAIGN;\n }\n const adgroupData = { ...state.adgroup.adgroupData } || {}; // 已经合并完成的数据\n if (adgroupData.language_list.length && adgroupData.language_list[0] === 'all') {\n adgroupData.language_list = [];\n }\n if (adgroupData.age.length && adgroupData.age[0] === 'ALL') {\n adgroupData.age = [];\n } else {\n adgroupData.age = formatAge(adgroupData.age);\n }\n adgroupData.ac = formatAc(adgroupData.ac);\n adgroupData.platform = formatPlatForm(adgroupData.platform);\n\n\n delete adgroupData.splitTestTarget;\n delete adgroupData.ad_id;\n\n adgroupData.campaign_id = campaignId;\n publishReport.adgroupData = { // 建议出价埋点需要用着两个\n bid: adgroupData.bid,\n cpa_bid: adgroupData.cpa_bid,\n };\n // 删除searchAds的字段,RF不支持searchAds\n delete adgroupData.search_delivery_type;\n const adgroupResp = await dispatch('adgroup/submitCreateRFAdgroup',\n { batch_info: batchInfo, base_info: { ...adgroupData, coming_source_type: adg_coming_source_type } });\n return {\n status: true, data: adgroupResp.data, report: publishReport, resp: adgroupResp,\n };\n } catch (e) {\n if (e && e.code) {\n return e;\n }\n return { status: false, report: publishReport };\n }\n },\n\n // 创建 plan | version\n async createPlanVersion({ state, dispatch }) {\n // format adgroup\n const adgroupData = {\n ...state.adgroup.adgroupData,\n } || {};\n if (adgroupData.language_list.length && adgroupData.language_list[0] === 'all') {\n adgroupData.language_list = [];\n }\n if (adgroupData.age.length && adgroupData.age[0] === 'ALL') {\n adgroupData.age = [];\n } else {\n adgroupData.age = formatAge(adgroupData.age);\n }\n adgroupData.ac = formatAc(adgroupData.ac);\n adgroupData.platform = formatPlatForm(adgroupData.platform);\n\n delete adgroupData.splitTestTarget;\n delete adgroupData.ad_id;\n\n // format version\n const {\n campaign_planner_version_name,\n campaign_planner_plan_id,\n } = adgroupData;\n const versionData = {\n campaign_planner_version_name,\n campaign_planner_plan_id,\n };\n delete adgroupData.campaign_planner_version_name;\n delete adgroupData.campaign_planner_plan_id;\n\n // create plan\n if (!versionData.campaign_planner_plan_id) {\n const { data } = await dispatch('efficientTool/submitCreatePlan', {\n campaign_planner_plan_name: versionData.campaign_planner_version_name,\n }, { root: true });\n\n if (!data || !data.campaign_planner_plan_id) {\n return;\n }\n versionData.campaign_planner_plan_id = data.campaign_planner_plan_id;\n }\n // create version\n const res = await dispatch('efficientTool/submitCreateVersion', {\n ...versionData,\n base_info: adgroupData,\n }, {\n root: true,\n });\n return {\n campaign_planner_version_id: res?.data?.campaign_planner_version_id,\n campaign_planner_plan_id: versionData.campaign_planner_plan_id,\n };\n },\n\n // 更新 version\n async updatePlanerVersion({ dispatch }, { base_info }) {\n let data = {};\n const {\n campaign_planner_version_name,\n campaign_planner_plan_id,\n campaign_planner_version_id,\n } = base_info;\n const versionData = {\n campaign_planner_version_name,\n campaign_planner_plan_id,\n campaign_planner_version_id,\n };\n delete base_info.campaign_planner_version_name;\n delete base_info.campaign_planner_plan_id;\n delete base_info.campaign_planner_version_id;\n try {\n data = await dispatch('efficientTool/submitUpdateVersion', {\n ...versionData,\n base_info,\n }, {\n root: true,\n });\n return data;\n } catch (err) {\n throw new Error(err);\n }\n },\n\n // 重算期间轮询重试\n async reSubmitRFOrder(store, campaign_id) {\n const {\n state, dispatch,\n } = store;\n const publishReport = {\n campaign: {},\n adgroup: [],\n ad: [],\n };\n let campaignId = '';\n campaignId = state.adgroup.campaign_id || campaign_id;\n const batchInfo = [];\n\n try {\n const adgroupData = { ...state.adgroup.adgroupData } || {}; // 已经合并完成的数据\n if (adgroupData.language_list.length && adgroupData.language_list[0] === 'all') {\n adgroupData.language_list = [];\n }\n if (adgroupData.age.length && adgroupData.age[0] === 'ALL') {\n adgroupData.age = [];\n } else {\n adgroupData.age = formatAge(adgroupData.age);\n }\n adgroupData.ac = formatAc(adgroupData.ac);\n adgroupData.platform = formatPlatForm(adgroupData.platform);\n\n\n delete adgroupData.splitTestTarget;\n delete adgroupData.ad_id;\n\n adgroupData.campaign_id = campaignId;\n publishReport.adgroupData = { // 建议出价埋点需要用着两个\n bid: adgroupData.bid,\n cpa_bid: adgroupData.cpa_bid,\n };\n const adgroupResp = await dispatch('adgroup/submitCreateAdgroup', { batch_info: batchInfo, base_info: adgroupData });\n return {\n status: true, data: adgroupResp.data, report: publishReport, resp: adgroupResp,\n };\n } catch (e) {\n return { status: false, report: publishReport, rejectCode: e?.message };\n }\n },\n async createSimplifiedSmbCreative(store, {\n creativeMaterialMode,\n inventory_flow,\n objective_type,\n fake_ad_ids,\n fake_campaign_id,\n fake_ad_group_id,\n inventory_flow_type,\n }) {\n const { rootGetters } = store;\n const COMING_SOURCE_TYPE_CREATE = 1;\n const creativeData = {\n creative_info: rootGetters['creative/create/creativeInfo'],\n creative_material_mode: creativeMaterialMode, // 与adgroup层级的取值保持一致\n fake_ad_ids,\n inventory_flow,\n coming_source_type: COMING_SOURCE_TYPE_CREATE,\n objective_type,\n inventory_flow_type,\n risk_info: tool.getRiskInfo(),\n struct_version: 1,\n ...rootGetters['creative/playable-card-form/formData'], // 试玩表单贡献的提交参数\n };\n creativeData.playable_url = creativeData.playable_url[0];\n const params = {\n version: 1,\n draft_json: creativeData,\n };\n const { check_result = {} } = await updateAndCheckUserCreativeDraft(params);\n const { ad_and_creative_ids = [] } = check_result;\n const [fake_ad_creative_id = ''] = ad_and_creative_ids;\n // 多创意同时提交时,后端只返回一个fake_ad_creative_id,后端自动会去匹配到同时提交的所有创意,前端无需特殊处理\n const submitParams = { fake_campaign_id, fake_ad_group_id, fake_ad_creative_id };\n const originResult = await submitDraftAndSaved(submitParams);\n const result = submitResultAdapt(originResult);\n return result;\n },\n async createRFCreative(store,\n {\n isCopy = false,\n isCopyCreative = false,\n isProcedural = false,\n creativeMaterialMode,\n isNewStructure,\n creativeInfoWithCta,\n }) {\n const ad_coming_source_type = comingSourceType.CREATE_AD;\n const {\n state, dispatch, rootState, rootGetters, commit,\n } = store;\n const publishReport = {\n campaign: {},\n adgroup: [],\n ad: [],\n };\n let batchInfo = [];\n const creativeBatchInfo = [];\n if (isCopy) {\n batchInfo = [...state.adgroup.batchInfo] || [];\n }\n const { inventory_flow: inventoryFlow, objective_type: objectiveType } = state.adgroup;\n const adIds = [state.adgroup.rf_ad_id];\n let creativeData = {\n ad_ids: adIds,\n inventory_flow: inventoryFlow,\n objective_type: objectiveType,\n coming_source_type: ad_coming_source_type, // 记录来源\n creative_material_mode: creativeMaterialMode, // 与adgroup层级的取值保持一致\n ...rootGetters['creative/playable-card-form/formData'], // 试玩表单贡献的提交参数\n };\n // 自定义创意\n if (!isProcedural) {\n if (rootGetters['campaign/adgroup/useCreativeSplitTest']) {\n const batchInfoWithoutPlayableUrl = rootGetters['creative/create/batchInfo'];\n // 为batchInfo挂上playableUrl\n creativeData.batch_info = batchInfoWithoutPlayableUrl.map((item, index) => {\n const playableUrlList = creativeData.playable_url;\n return { ...item, playable_url: playableUrlList[index] };\n });\n } else {\n creativeData.creative_info = isCopyCreative\n ? rootGetters['creative/create/copyCreativeInfo']\n : rootGetters['creative/create/creativeInfo'];\n\n Object.keys(creativeInfoWithCta).forEach((materialType) => {\n if (creativeInfoWithCta[materialType] && creativeInfoWithCta[materialType].length > 0) {\n creativeInfoWithCta[materialType].forEach((item, index) => {\n _.set(creativeData, `creative_info.${materialType}[${index}].call_to_action`, item.call_to_action);\n _.set(creativeData, `creative_info.${materialType}[${index}].call_to_action_id`, item.call_to_action_id);\n });\n }\n });\n }\n } else {\n // 程序化创意\n creativeData = {\n ...creativeData,\n ...rootGetters['creative/procedural-creative-form/formData'],\n struct_version: isNewStructure ? 1 : 0,\n };\n }\n if (isCopy) {\n creativeData.batch_info = creativeBatchInfo;\n }\n // 如果没有使用 creative 类型 split test,\n // 则应将待提交数据的playable_url参数从数组变为数组第一个元素\n // 因为split test在vuex中按照数组存储\n if (!rootGetters['campaign/adgroup/useCreativeSplitTest']) {\n creativeData.playable_url\n && (creativeData.playable_url = creativeData.playable_url[0]);\n } else {\n // 如果使用 creative 类型 split test,\n // 则将待提价数据外层playable_url参数清除,\n // playable_url已被放置在batchInfo中\n creativeData.playable_url = undefined;\n }\n let finalData = null;\n try {\n const { data } = await dispatch('creative/create/uploadAds', creativeData, { root: true });\n if (isCopy && data) {\n // 校验的结果,合并到adgroup显示\n const respCreativeReport = data.creative_report || []; // 返回必须和batchInfo数组一样长度\n for (let k = 0; k < batchInfo.length; k++) {\n const itemx = Object.assign({}, batchInfo[k]);\n const num = itemx.num || '';\n // 更新adgroup的 ad_id, creative_status\n const respItem = respCreativeReport[num] || {}; // 根据num 找到creative,合并到adgroup\n if (Object.keys(respItem).length > 0) {\n batchInfo[k] = {\n ...itemx,\n ...respItem,\n };\n }\n }\n publishReport.adgroup = [...batchInfo];\n if (isCopyCreative) {\n const { copyNumber } = rootState.creative.create;\n publishReport.ad = batchInfo.reduce((r, v) => {\n for (let i = 0; i < copyNumber; i++) {\n r.push(v);\n }\n return r;\n }, []);\n } else {\n publishReport.ad = [...batchInfo];\n }\n }\n finalData = data;\n publishReport.finalData = finalData;\n publishReport.creativesPostData = creativeData;\n } catch (e) { // 全部失败的时候线上失败原因\n for (let k = 0; k < batchInfo.length; k++) {\n batchInfo[k].creative_msg = e?.msg || '';\n }\n publishReport.adgroup = [...batchInfo];\n publishReport.ad = [...batchInfo];\n return {\n status: false, item: 'ad', report: publishReport, rejectCode: e?.code,\n };\n }\n commit(types.SET_RF_AD_GROUP_ID, '');\n await dispatch('adgroup/setCampaignID', '');\n return {\n status: true,\n item: 'all',\n report: publishReport,\n };\n },\n\n /**\n * 获取AB实验结果数据\n * @param {String} data campaignId\n */\n getSplittestResult(store, data) {\n return request.get(apis.splittest.result, data);\n },\n /**\n * 获取AB实验结果variable和objective数据\n * @param {String} data campaignId\n */\n getSplittestDetail(store, data) {\n return request.get(apis.splittest.detail, data);\n },\n getSplittestAdDetail(store, data) {\n return request.get(apis.splittest.adDetail, {\n ad_id: data,\n });\n },\n /**\n * 获取AB实验披露指标数据\n * @param {Array} data ad_ids\n */\n getSplittestMetrics(store, data) { // TODO-kad 待确认,query是否只需传ad_ids字段\n return request.post(apis.splittest.newMetrics, data);\n },\n /**\n * 修改bid/budget时提醒需要同步修改的列表\n * 该接口后端要下线\n * @param {Object} data {\"ad_ids\": Array}\n */\n getSplittestExcludeList(store, data) {\n return request.post(apis.splittest.exclude, data);\n },\n getOptimizeGoal(store, data) {\n return request.get(apis.splittest.optimizeGoal, data);\n },\n },\n};\n","/**\n * DPA 商品库相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport * as types from 'src/store/types';\nimport { getCatalogAvailableLocation, getCatalogInfo, formatPath } from 'src/service/dpa';\n\nconst catalog = {\n namespaced: true,\n state: {\n collectionAdsCatalog: null,\n catalogAvailableLocation: [],\n loadingCatalogAvailableLocation: false,\n },\n getters: {\n collectionAdsCatalogCountry(state) {\n const list = state.collectionAdsCatalog?.refer_catalogs?.map(item => item.country) ?? [];\n return [...new Set(list)];\n },\n collectionAdsReferCatalogs(state) {\n return state.collectionAdsCatalog?.refer_catalogs ?? [];\n },\n collectionAdsIsCrossBorderCatalog(state) {\n return state.collectionAdsCatalog?.is_multi_country_lang;\n },\n getLanguageCorrespondingCountry: (state, getters) => language => [...new Set(\n getters.collectionAdsReferCatalogs\n .filter(item => item.language === language)\n .map(item => item.country),\n )],\n },\n mutations: {\n [types.SET_CATALOG_AVAILABLE_LOCATION](state, country = []) {\n state.catalogAvailableLocation = country;\n },\n [types.SET_LOADING_CATALOG_AVAILABLE_LOCATION](state, status) {\n state.loadingCatalogAvailableLocation = status;\n },\n [types.SET_COLLECTION_ADS_CATALOG](state, catalogData) {\n state.collectionAdsCatalog = catalogData;\n },\n },\n actions: {\n // 获取商品库信息\n async getCollectionAdsCatalogInfo({ commit }, ...args) {\n const data = await getCatalogInfo(...args);\n commit(types.SET_COLLECTION_ADS_CATALOG, data);\n return data;\n },\n // 获取商品库可投放国家\n async getCatalogAvailableLocation({ commit, state }) {\n const { catalogAvailableLocation } = state;\n if (catalogAvailableLocation.length) {\n return catalogAvailableLocation;\n }\n try {\n commit(types.SET_LOADING_CATALOG_AVAILABLE_LOCATION, true);\n const { countries = [] } = await getCatalogAvailableLocation({ transferToId: true });\n commit(types.SET_CATALOG_AVAILABLE_LOCATION, countries);\n commit(types.SET_LOADING_CATALOG_AVAILABLE_LOCATION, false);\n return countries;\n } catch (error) {\n commit(types.SET_LOADING_CATALOG_AVAILABLE_LOCATION, false);\n return Promise.reject(error);\n }\n },\n async checkCatalogAuthorized(context, catalogId) {\n const path = formatPath(apis.catalogue.checkAuthorized, { catalogId });\n return request.get(path)\n .then(res => res.data.authorized)\n .catch((res) => {\n switch (res.code) {\n // 这个code是商品库被删除了,所以认为也是没有权限的\n case 40003:\n case 40020:\n return false;\n default:\n return true;\n }\n });\n },\n },\n};\n\nexport default catalog;\n","/**\n * common tcc 文件暂时留着,之后可能还会用到\n */\n\nimport * as types from 'src/store/types';\nimport { getCommonTcc } from 'src/service/index';\nimport { getDefaultCommonTcc } from 'src/const/commonTcc';\n\nexport default {\n namespaced: true,\n state: {\n commonTcc: getDefaultCommonTcc(),\n },\n mutations: {\n [types.SET_COMMON_TCC](state, data) {\n if (!data) return;\n state.commonTcc = { ...state.commonTcc, ...data };\n },\n },\n getters: {\n },\n actions: {\n async fetchCommonTcc({\n commit,\n }, key) {\n const { data } = await getCommonTcc({\n tcc_key: key,\n });\n commit(types.SET_COMMON_TCC, data?.tcc_config);\n },\n },\n};\n","/**\n* 合同 有关信息\n*/\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport * as types from 'src/store/types';\n\nconst contract = {\n namespaced: true,\n state: {\n dsaShow: false,\n customerId: undefined,\n },\n getters: {\n\n },\n mutations: {\n [types.SET_CONTRACT_CUSTOMER_ID](state, id) {\n state.customerId = id;\n },\n [types.SET_DSA_DIALOG_SHOWN](state, shown = false) {\n state.dsaShow = shown;\n },\n },\n\n actions: {\n getDsaAssignInfo({ commit }) {\n return request\n .get(apis.contract.getAssignDsaInfo)\n .then(({ data = {} }) => (data));\n },\n getShownContract({ commit }) {\n return request.get(apis.contract.getShownContract).then(({ data = {} }) => {\n const { pop_ups: popUps = {} } = data;\n if (popUps.is_dsa_show) {\n commit(types.SET_DSA_DIALOG_SHOWN, true);\n commit(types.SET_CONTRACT_CUSTOMER_ID, popUps.customer_id);\n }\n });\n },\n signDsaContact({ commit, state }) {\n return request.post(apis.contract.assignDsa, {\n dsa_sign: true,\n customer_id: state.customerId,\n }).then((res) => {\n commit(types.SET_DSA_DIALOG_SHOWN, false);\n return res;\n }).catch((err) => {\n commit(types.SET_DSA_DIALOG_SHOWN, false);\n return Promise.reject(err);\n });\n },\n },\n};\n\nexport default contract;\n","/**\n * Creative Create Module\n */\nimport state from './normal-creative/state';\nimport getters from './normal-creative/getters';\nimport mutations from './normal-creative/mutations';\nimport actions from './normal-creative/actions';\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","import { registerMfModule } from 'src/store/base';\nimport list from './list';\nimport create from './create';\nimport proceduralCreativeForm from './procedural-creative-form';\nimport playableCardForm from './playable-card-form';\n\nexport default {\n namespaced: true,\n state: {\n _moduleKey: 'creative',\n },\n modules: {\n create,\n list,\n ...registerMfModule([proceduralCreativeForm, playableCardForm]),\n },\n};\n","/**\n * 创意列表有关\n * */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport * as types from '../../types';\n\nexport default {\n namespaced: true,\n state: {\n adListToken: null,\n },\n mutations: {\n [types.SET_REQUEST_TOKEN](state, data) {\n state.adListToken = data;\n },\n },\n actions: {\n getCreativeList({ state, commit }, data) {\n // 重复请求时清除之前的请求\n if (state.adListToken) {\n state.adListToken.cancel();\n }\n\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_REQUEST_TOKEN, source);\n return request.post(apis.creative.newStatisticList, data, {\n cancelToken: source.token,\n });\n },\n getCreativeInfo(store, data) {\n return request.get(apis.creative.info, data);\n },\n getNewCreativeInfo(store, data) {\n return request.get(apis.creative.new_info, data);\n },\n getNewCreativeProceduralInfo(store, data) {\n return request.get(apis.creative.new_procedural_info, data);\n },\n updateCreativeStatus({ commit }, data) {\n commit(`perf/${types.SET_PERF_OPERATED_ANCHOR}`, {}, { root: true });\n return request.postForm(apis.creative.update_status, data);\n },\n },\n};\n","import _ from 'lodash';\nimport moment from 'moment-timezone';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\nimport apis from 'src/const/apis';\nimport {\n AD_TYPE,\n identityTypeMap,\n NORMAL_AD_SOURCES,\n VIDEO_RENDER_OPTIONS,\n nativeAdIdentityTypes,\n NATIVE_AD_ACTION_TYPE,\n identityAvailableStatus,\n VIDEO_ASYNC_RENDER_STATUS,\n VIDEO_ASYNC_RENDER_RENDERING_STATUS,\n VIDEO_ASYNC_RENDER_FILL_ACTION_TYPE,\n ADDITIONAL_CREATIVE_IMAGE_CARD_TEMPLATE_TYPES,\n ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES,\n PixeOnlyTracking,\n ADDITIONAL_CREATIVE_ENGAGEMENT_TYPES,\n filterPrecheckResult,\n bcIdentityTypesList,\n} from 'src/const/state/creative';\n\nimport { ADVANCED_CREATIVE_TYPE, SHOP_LIVE_CTA, SHOP_NOW_CTA } from 'src/const/state/call-to-action';\nimport { captureError } from 'src/logger/errorLogger';\nimport tool from 'src/utils/tool';\nimport { DPA_VIDEO_DISPLAY_MODE_TYPE, BrandSafetyTrackTypeMap } from 'src/const/state/ad';\nimport { isNewCreativeListWhite, isCreativeHasIdentityWhite } from 'src/const/whiteList';\nimport * as service from 'src/service';\nimport {\n getTaskList,\n fileNameCheck,\n getTaskRenderStatus,\n getIsVideoRenderAllComplete,\n getTaskRenderPercentageByStatus,\n getIsAsyncRenderVideoRenderDone,\n fetchVideoRenderResultsByTaskIdsBatch,\n getVideoFullInfoListByVideoRenderResultList,\n} from 'src/utils/videoRenderAsync';\n// import { ADDITIONAL_CREATIVE_PARAMS } from 'src/store/modules/creative/normal-creative/state';\nimport { getEngagementCreativeInfo, getAttachmentCreativeInfo } from 'src/service/creative';\nimport { sendLog } from 'src/logger/customLogger';\nimport { resetCreativeExtraKey } from './reset-helpers';\nimport {\n getAdTemplateByType, isAdEmpty, setIdentityData, setIdentityDataList, fillCreativeInfo,\n} from './helpers';\n\nconst RENDER_STATUS = Object.values(VIDEO_ASYNC_RENDER_RENDERING_STATUS);\n\nconst {\n IMAGE_CARD: ADDITION_IMAGE_CARD,\n INSTANT_PAGE: ADDITION_INSTANT_PAGE,\n ENGAGEMENT: ADDITION_ENGAGEMENT, // 这个需要考虑旧样式\n} = ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES;\n\nconst {\n SINGLE_IMAGE, SINGLE_VIDEO, CAROUSEL_IMAGE, CATALOGUE_VIDEO, REAL_TIME_LIVE,\n} = AD_TYPE;\nconst { CREATE_NEW, NATIVE_VIDEO } = NORMAL_AD_SOURCES;\nconst {\n EGG,\n GESTURE,\n} = ADDITIONAL_CREATIVE_ENGAGEMENT_TYPES;\n\nexport default {\n /* ---------------------------------------------- 单纯的api请求 start ------------------------------------------------------------*/\n getVideoUploadKey({ commit }) {\n request.get(apis.videoUploadKey).then(({ data }) => {\n commit(types.SET_SHA1_KEY, data.sha1_key);\n });\n },\n uploadVideo(store, data) {\n return request.post(apis.videoUpload, data);\n },\n uploadImageToLibrary(store, data) {\n return request.post(apis.library.image_create, data);\n },\n // 检查素材是否重名\n checkNameExist(store, data) {\n return request.post(apis.library.check_name_exist, data);\n },\n /**\n * 获取自动封面接口:\n * 20 秒内轮询接口,如果请求到封面信息或超过 20s 则请停止请求\n * @param vid 视频 vid\n * @returns {Promise}\n */\n getVideoCovers(store, vid) {\n return new Promise((resolve) => {\n const start = new Date().getTime();\n const interval = setInterval(() => {\n const end = new Date().getTime();\n if (end - start > 20000) {\n clearInterval(interval);\n resolve([]);\n } else {\n request\n .get(apis.videoCovers, {\n video_id: vid,\n })\n .then(({ data }) => {\n const { covers } = data;\n if (covers.length > 0) {\n clearInterval(interval);\n resolve(covers.slice(0, 8));\n }\n })\n .catch(() => { });\n }\n }, 500);\n });\n },\n // 获取创意审核建议\n getCreativeSuggestions(store, id) {\n return request.get(apis.creative.suggestions, { creative_id: id });\n },\n verifyAds(store, data) {\n const risk_info = tool.getRiskInfo();\n return request.post(apis.creative.verify, { ...data, risk_info });\n },\n uploadAds(store, data) {\n const risk_info = {\n cookie_enabled: navigator.cookieEnabled,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n browser_language: navigator.language,\n browser_platform: navigator.platform,\n browser_name: navigator.appCodeName,\n browser_version: navigator.appVersion,\n browser_online: navigator.onLine,\n timezone_name: moment.tz.guess(),\n };\n const params = { risk_info, ...data };\n params.domain = (params.domain === PixeOnlyTracking || !!params.page_id) ? '' : params.domain;\n return request.post(apis.creative.create, params);\n },\n updateAd(store, data) {\n const risk_info = {\n cookie_enabled: navigator.cookieEnabled,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n browser_language: navigator.language,\n browser_platform: navigator.platform,\n browser_name: navigator.appCodeName,\n browser_version: navigator.appVersion,\n browser_online: navigator.onLine,\n timezone_name: moment.tz.guess(),\n };\n const params = { risk_info, ...data };\n return request.post(apis.creative.update, params);\n },\n getLeadAdsFormList(store, data) {\n return request.post(apis.creative.leadAdsForm, data);\n },\n getLeadAdsProtocal({ commit }, data) {\n // 处理sonor异味 data命名重复问题\n return request.get(apis.creative.protocalQuery, data).then((res) => {\n const isShow = !res.data.lead_gen_signed;\n commit(types.SET_SHOW_PROTOCOL_TERMS, isShow);\n }).catch((e) => { });\n },\n leadAdsProtocalSign(store, data) {\n return request.post(apis.creative.leadAdsProtocalSign, data);\n },\n getLeadAdsFormDetail(store, data) {\n if (!data || !data.page_id) {\n return;\n }\n return request.get(apis.creative.getLeadAdsFormDetail, data);\n },\n getStorefrontPageDetail(store, data) { // 获取 storefront page 详情\n return request.get(apis.creative.storefrontPageDetail, data);\n },\n getProtocolStatus({ commit }, data) { // 协议查询\n request.get(apis.creative.protocolQuery, data).then(({ data = {} }) => {\n const isShow = !data.is_exist;\n commit(types.SET_SHOW_PROTOCOL_TERMS, isShow);\n }).catch(() => { });\n },\n protocolSign(store, data) { // 协议签署\n return request.post(apis.creative.protocolSign, data);\n },\n async getZefrAuthority({ commit }) { // 协议签署\n await request.get(apis.creative.brandSafetyAuthority, { partner: BrandSafetyTrackTypeMap.ZEFR })\n .then(({ data = {} }) => {\n commit(types.SET_ZEFR_AUTHORITY, data?.has_authorization || false);\n }).catch(() => {});\n },\n async getBsIasAuthority({ commit }) { // 检查BS IAS授权\n await request.get(apis.creative.brandSafetyAuthority, { partner: BrandSafetyTrackTypeMap.IAS })\n .then(({ data = {} }) => {\n commit(types.SET_BSIAS_AUTHORITY, data?.has_authorization || false);\n }).catch(() => { });\n },\n async getBsDvAuthority({ commit }) { // 检查BS IAS授权\n await request.get(apis.creative.brandSafetyAuthority, { partner: BrandSafetyTrackTypeMap.DV })\n .then(({ data = {} }) => {\n commit(types.SET_BS_DV_AUTHORITY, data?.has_authorization || false);\n }).catch(() => { });\n },\n async getZefrSupportCountries({ commit }) { // 协议签署\n await request.get(\n apis.creative.bsThridPartySupportCountries,\n { brand_safety_postbid_partner: BrandSafetyTrackTypeMap.ZEFR },\n ).then(({ data = {} }) => {\n const countries = data?.country_ids.map(item => +item) || [];\n commit(types.SET_ZEFR_COUNTRY, countries);\n }).catch(() => { });\n },\n async getBsIasSupportCountries({ commit }, params) { // 协议签署\n await request.get(\n apis.creative.bsThridPartySupportCountries,\n { brand_safety_postbid_partner: BrandSafetyTrackTypeMap.IAS },\n ).then(({ data = {} }) => {\n const countries = data?.country_ids.map(item => +item) || [];\n commit(types.SET_BS_IAS_COUNTRY, countries);\n }).catch(() => { });\n },\n async getBsDvSupportCountries({ commit }, params) { // 协议签署\n await request.get(\n apis.creative.bsThridPartySupportCountries,\n { brand_safety_postbid_partner: BrandSafetyTrackTypeMap.DV },\n ).then(({ data = {} }) => {\n const countries = data?.country_ids.map(item => +item) || [];\n commit(types.SET_BS_DV_COUNTRY, countries);\n }).catch(() => { });\n },\n getCrmStatus(store, data) {\n return request.get(apis.creative.leadConnectorAuth, data);\n },\n /* ---------------------------------------------- 单纯的api请求 end ------------------------------------------------------------*/\n\n // 获取商品目录对应的动态词包列表\n async getDpaWordList({ commit }, platformId) {\n if (!platformId) {\n commit(types.SET_DPA_WORD_LIST, []);\n return [];\n }\n const url = apis.catalogue.lexicon(platformId);\n let list = [];\n try {\n const { data: resp = {} } = await request.get(url, { is_get_available_lexicon: true });\n list = resp.lexicons || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_DPA_WORD_LIST, list);\n return list;\n },\n async cloneByIndex({ state, dispatch }, { splitTestTab, index }) {\n const ad = state.ads[splitTestTab][index];\n const res = await dispatch('cloneAd', ad);\n return res;\n },\n cloneAd({ state, getters }, ad) {\n const target = _.cloneDeep(ad);\n const { adSource } = target;\n const { adType } = target[adSource];\n if (\n adType === SINGLE_VIDEO.value || adType === CATALOGUE_VIDEO.value\n ) {\n // 创意复制时清空 page id 避免重复\n // target[adSource][adType]?.page_id && (target[adSource][adType].page_id = '');\n // target[adSource][adType]?.card_id && (target[adSource][adType].card_id = '');\n\n const { product_set_id, product_platform_id } = target[adSource][adType];\n // 清除 additional creative前端增加使用的参数\n // for (const key of Object.keys(ADDITIONAL_CREATIVE_PARAMS)) {\n // target[adSource][adType][key] = undefined;\n // }\n // shop ads的这2个字段不应该被清空,此处做恢复。(仅处理shopAds,其他的等productSet全量下沉后再调整)\n if (getters.isShop) {\n target[adSource][adType].product_set_id = product_set_id;\n target[adSource][adType].product_platform_id = product_platform_id;\n }\n }\n // 复制场景下如果有cta_id,就清空ctaid\n if (!_.isEmpty(target[adSource][adType].call_to_action_id)) {\n target[adSource][adType].call_to_action_id = '';\n // 在清除id的情况下,如果用户选的是自动优选,我们也要\n if (target[adSource][adType].call_to_action_type === ADVANCED_CREATIVE_TYPE.autoOptimized) {\n target[adSource][adType].call_to_action = '';\n }\n }\n return target;\n },\n // 复制一个ad\n async adFileCopy({\n state, getters, commit, dispatch,\n }, { splitTestTab, index }) {\n const target = await dispatch('cloneByIndex', {\n splitTestTab,\n index,\n });\n if (isAdEmpty(target)) {\n return false;\n }\n\n if (getters.isLastAdEmpty(splitTestTab)) {\n // 如果最后一个ad是空的,在点击其他ad的复制功能时,填充到最后一个ad\n commit(types.UPDATE_AD, {\n splitTestTab,\n ad: target,\n index: state.ads[splitTestTab].length - 1,\n });\n } else {\n commit(types.ADD_AD, { splitTestTab, ad: target });\n }\n return true;\n },\n // 增加一个ad\n async adFileAdd({\n state, commit, dispatch, getters,\n }, { splitTestTab, adDetail = {} }) {\n const clonedDetail = _.cloneDeep(adDetail);\n\n if (getters.isLastAdEmpty(splitTestTab)) {\n // 如果最后一个ad是空的,将素材信息填充到进去\n await dispatch('updateAdMaterial', {\n splitTestTab,\n adDetail: clonedDetail,\n index: state.ads[splitTestTab].length - 1,\n });\n } else {\n commit(types.ADD_AD_BY_DETAIL, { splitTestTab, adDetail: clonedDetail });\n }\n },\n\n // 更新创意的素材部分\n updateAdMaterial({ commit, state }, {\n splitTestTab, adDetail, index, adType,\n }) {\n const ad = _.cloneDeep(state.ads[splitTestTab][index]) || {};\n const { adSource } = ad;\n const sourceTarget = ad[adSource];\n\n if (!sourceTarget) {\n return;\n }\n\n const targetAdType = adType || sourceTarget.adType; // 优先使用指定的类型\n // 只有单图、单视频创意才有素材部分\n const hasMaterialAdType = [\n SINGLE_IMAGE.value,\n SINGLE_VIDEO.value,\n CAROUSEL_IMAGE.value,\n ];\n if (hasMaterialAdType.includes(targetAdType)) {\n sourceTarget[targetAdType] = {\n ...sourceTarget[targetAdType],\n ...adDetail,\n };\n commit(types.UPDATE_AD, { splitTestTab, ad, index });\n }\n },\n // 删除创意的素材信息\n clearAdMaterial({ commit, state }, { splitTestTab, index }) {\n const ad = _.cloneDeep(state.ads[splitTestTab][index]) || {};\n const { adSource } = ad;\n const sourceTarget = ad[adSource];\n if (!sourceTarget) {\n return;\n }\n const { adType } = sourceTarget; // 优先使用指定的类型\n if (!adType) {\n return;\n }\n\n const adDetail = sourceTarget[adType];\n const { identity_type = 0 } = adDetail;\n const isNativeAd = nativeAdIdentityTypes.includes(identity_type);\n if (!isNativeAd) {\n return;\n }\n if (adType !== REAL_TIME_LIVE.value) {\n /*\n live直投直播间更换identity_type的时候不清空image_mode\n 否则creative/check接口报错\n */\n delete adDetail.image_mode;\n }\n adDetail.title = '';\n delete adDetail.aweme_item_id;\n delete adDetail.image_info;\n delete adDetail.video_info;\n commit(types.UPDATE_AD, { splitTestTab, ad, index });\n },\n // 删除一个ad\n adFileDelete({ commit, getters, state }, { splitTestTab, index, isOffsitePixel }) {\n if (state.ads[splitTestTab].length === 1) {\n const adType = getters.adTypeByIndex(splitTestTab, 0);\n const ad = getAdTemplateByType(getters.adSourceByIndex(splitTestTab, 0), getters.adTypeByIndex(splitTestTab, 0));\n const { adSource } = ad;\n const originAdDetail = state.ads[splitTestTab][0][adSource][adType] || {};\n ad[adSource][adType].action_track_url = originAdDetail.action_track_url;\n ad[adSource][adType].track_url = originAdDetail.track_url;\n\n // 如果支持CTA优选,删除最后一个素材,清空数据,则默认选中自定义CTA\n ad[adSource][adType].call_to_action_type = ADVANCED_CREATIVE_TYPE.customization;\n\n if (isOffsitePixel) { // offsite pixelinstant page checkbox不可编辑\n const isInstantPageChecked = originAdDetail.cardAdditionalInfo?.[ADDITION_INSTANT_PAGE]?.isChecked;\n if (ad[adSource][adType]?.cardAdditionalInfo) {\n ad[adSource][adType].cardAdditionalInfo[ADDITION_INSTANT_PAGE].isChecked = isInstantPageChecked;\n }\n }\n // 如果是shop ads且是仅剩的一个ad被删除,新的ad需要保留原有的identity、page_id、product_platform_id\n // shop下被删除以后,保留原来的creative_type,还有一些权限判断字段\n if (getters.isShop) {\n const identityData = getters.adIdentityDataByIndex(splitTestTab, 0);\n const {\n page_id, product_platform_id, creative_type, creative_shop_id,\n copy_from_ad_id, copy_creative_shop_id, product_selection_type,\n } = originAdDetail;\n Object.assign(ad[adSource][adType], {\n identity_data: identityData,\n identity_bc_id: identityData?.identity_bc_id,\n identity_id: identityData?.identity_id,\n identity_type: identityData?.identity_type,\n can_use_live_list: identityData?.can_use_live_list,\n can_use_video_list: identityData?.can_use_video_list,\n available_status: identityData?.available_status,\n creative_type,\n page_id,\n product_platform_id,\n creative_shop_id,\n call_to_action: getters.isShopLive ? SHOP_LIVE_CTA.id : SHOP_NOW_CTA.id,\n copy_from_ad_id,\n copy_creative_shop_id,\n product_selection_type,\n });\n }\n // 延续最后一个ad的类型\n commit(types.UPDATE_AD, { // 最后一个ad不清空track\n splitTestTab,\n ad,\n index: 0,\n });\n } else {\n commit(types.DELETE_AD, { splitTestTab, index });\n }\n },\n // 设置ad的视频默认封面\n saveVideoDefaultCover({ dispatch, getters }, { splitTestTab, cover, index }) {\n const adType = SINGLE_VIDEO.value; // 只有单视频创意才需要设置封面\n const adDetail = _.cloneDeep(getters.adDetailByIndex(splitTestTab, index));\n adDetail.image_info = [cover];\n dispatch('updateAdMaterial', {\n splitTestTab,\n adDetail,\n index,\n adType,\n });\n },\n // 设置视频可选封面集\n saveVideoBackupCovers({ dispatch, getters }, { splitTestTab, covers = [], index }) {\n const adType = SINGLE_VIDEO.value; // 只有单视频创意才需要设置封面\n const adDetail = _.cloneDeep(getters.adDetailByIndex(splitTestTab, index));\n adDetail.video_info.covers = covers;\n\n dispatch('updateAdMaterial', {\n splitTestTab,\n adDetail,\n index,\n adType,\n });\n },\n\n saveDraft({ getters }, ads) {\n window.localStorage.setItem(getters.adStorageKey, JSON.stringify(ads));\n },\n\n loadDraft({ getters }) {\n const ads = localStorage.getItem(getters.adStorageKey);\n return (ads && ads !== 'undefined' && ads !== 'null') ? JSON.parse(ads) : null;\n },\n\n removeDraft({ getters }) {\n localStorage.removeItem(getters.adStorageKey);\n },\n\n removeAdData({ dispatch, commit }) {\n dispatch('removeDraft'); // 清理本地缓存\n dispatch('creative/playable-card-form/resetPlayable', null, { root: true }); // 重置试玩信息\n commit(types.RESET_ADS); // 重置创意素材\n commit(types.SET_APPINFO, {}); // 重置appinfo\n },\n\n // 获取ad下已实现创意列表\n async getCreatives({ commit, rootState }) {\n const ad_id = rootState.campaign.adgroup?.ad_id;\n const { creative_info = [] } = await service.getAdList({\n ad_id,\n });\n commit(types.SET_CREATIVES, creative_info);\n },\n\n // 获取素材列表信息并设置到vuex\n async getAdList({ dispatch }, adGroupData) {\n try {\n // const { data: resp } = await request.get(apis.creative.list, adGroupData);\n\n let listData = {};\n // 在白名单内的使用新接口\n if (isNewCreativeListWhite()) {\n listData = await request.get(apis.creative.new_list, adGroupData);\n } else {\n listData = await request.get(apis.creative.list, adGroupData);\n }\n const resp = listData.data || {};\n const adDetailList = (resp.creative_info || []).map(item => fillCreativeInfo(item)).map(item => ({\n ...item,\n copy_from_ad_id: adGroupData.ad_id,\n }));\n\n dispatch('setAdsAndPlayable', {\n adDetailList,\n playableUrl: [resp.playable_url],\n });\n\n // 根据白名单判断是否对identity账号权限做判断\n if (isCreativeHasIdentityWhite()) {\n dispatch('setAdsIdentityDataList', adDetailList);\n }\n return true;\n } catch (e) {\n return false;\n }\n },\n /**\n * 根据创意详情接口返回的数据回填到 vuex 【编辑和复制创意用到该函数】\n * @param {Object} param.creativeDetail 接口获取的创意数据\n * @param {Function} param.callback 存储之前对数据进行修改\n */\n async setAdsByCreativeDetail({ commit, dispatch }, { creativeDetail = {}, callback }) {\n // 重置vuex中的一些状态 这一步操作是为了避免页面闪现 上一个创意detail的数据\n commit(types.SET_IDENTITY_AUTHORIZATION_STATE, identityAvailableStatus.Available);\n\n const { AUTO } = DPA_VIDEO_DISPLAY_MODE_TYPE;\n const { creative_info: creativeInfo } = creativeDetail;\n const image_mode = Number(Object.keys(creativeInfo)[0]);\n const oldAdDetail = creativeInfo[image_mode][0];\n const isNativeAd = Object.values(NATIVE_AD_ACTION_TYPE).includes(oldAdDetail.item_source);\n const [native_source, nativeAdActionType] = isNativeAd\n ? [NATIVE_VIDEO.value, oldAdDetail.item_source]\n : [CREATE_NEW.value, undefined];\n // 电商锚点需求,将anchors字段放入video_info中,编辑复制场景下的数据回填的数据格式和新建保持一致\n if (!_.isEmpty(oldAdDetail.anchors)) {\n _.set(oldAdDetail, 'video_info.anchors', oldAdDetail.anchors);\n }\n\n const adDetail = {\n copy_from_ad_id: creativeDetail.ad_id,\n image_material_ids: oldAdDetail.image_material_ids || [],\n external_url_material_ids: oldAdDetail.external_url_material_ids || [],\n external_urls: oldAdDetail.external_urls || [],\n video_tpl_name: oldAdDetail.video_tpl_name || '',\n video_display_mode: oldAdDetail.video_display_mode || AUTO,\n creative_id: oldAdDetail.creative_id,\n image_info: oldAdDetail.image_info,\n title: oldAdDetail.title,\n creative_name: oldAdDetail.creative_name || '',\n call_to_action: oldAdDetail.call_to_action,\n image_mode,\n nativeAdActionType,\n page_id: oldAdDetail.page_id || '',\n dpa_open_url_type: oldAdDetail.dpa_open_url_type || 0,\n params_type: oldAdDetail.params_type || 0,\n source: oldAdDetail.source,\n app_name: oldAdDetail.app_name,\n open_url: oldAdDetail.open_url,\n external_url: oldAdDetail.external_url,\n auto_open: oldAdDetail.auto_open,\n is_open_url: oldAdDetail.is_open_url,\n avatar_icon: oldAdDetail.avatar_icon,\n action_track_url: oldAdDetail.action_track_url,\n track_url: oldAdDetail.track_url,\n autoCreativeName: false,\n dpa_word_set: oldAdDetail.dpa_word_set || [],\n native_source,\n aweme_item_id: oldAdDetail.aweme_item_id, // 后端接口需要,前端展示不用\n vast_moat: oldAdDetail.vast_moat || 0,\n vast_double_verify: oldAdDetail.vast_double_verify || 0,\n vast_ias: oldAdDetail.vast_ias || false,\n vast_url: oldAdDetail.vast_url || '',\n fallback_type: oldAdDetail.fallback_type,\n titles: oldAdDetail.titles,\n is_creative_authorized: !!oldAdDetail.is_creative_authorized, // 创意素材授权\n creative_type: oldAdDetail.creative_type, // 创意类型,用于判断是否是 PLP/PDP 创意\n advanced_creative_type: oldAdDetail.advanced_creative_type, // CTA类型(普通CTA,CTA优选集合)\n call_to_action_id: oldAdDetail.call_to_action_id, // CTA 优选集合ID\n format_structure: oldAdDetail.format_structure, // 附加创意类型 0-自定义 1-collection ads\n card_id: oldAdDetail.card_id || oldAdDetail.gesture_id || oldAdDetail.painted_egg_id || '', // 附加创意id, card_id 收敛后所有的附加创意都是用这个字段\n brand_safety_postbid_partner: oldAdDetail.brand_safety_postbid_partner,\n brand_safety_vast_url: oldAdDetail.brand_safety_vast_url,\n product_selection_type: oldAdDetail.product_selection_type,\n spu_id: oldAdDetail.spu_id,\n spu_list: oldAdDetail.spu_list || [],\n selectedSpuMap: {}, // spu Map\n product_set_id: oldAdDetail.product_set_id,\n product_platform_id: oldAdDetail.product_platform_id,\n domain: oldAdDetail.domain || '',\n\n disclaimer_type: oldAdDetail.disclaimer_type,\n disclaimer_text: oldAdDetail.disclaimer_text,\n disclaimer_clickable_texts: oldAdDetail.disclaimer_clickable_texts,\n has_disclaimer: Boolean(oldAdDetail.disclaimer_type),\n catalog_language: oldAdDetail.catalog_language, // 创意选择的商品库语言\n\n dark_post_status: oldAdDetail.dark_post_status,\n bc_restrict_delivery: oldAdDetail.bc_restrict_delivery,\n is_use_product_anchor: Boolean(oldAdDetail.is_use_product_anchor), // shop是否使用锚点投放\n schema_type: oldAdDetail.schema_type,\n };\n\n // 原生广告 音乐资质授权相关字段\n if (oldAdDetail.item_source === NATIVE_VIDEO.value) {\n adDetail.with_promotional_music = oldAdDetail.with_promotional_music !== false; // 是否打开推广音乐开关\n adDetail.item_duet_disabled = oldAdDetail.item_duet_disabled || 0; // 是否开启合拍\n adDetail.item_stitch_disabled = oldAdDetail.item_stitch_disabled || 0; // 是否开启跟拍\n }\n\n adDetail.video_info = oldAdDetail.video_info;\n // 帖子头像\n if (oldAdDetail.video_info) {\n adDetail.video_info.avatar_icon = oldAdDetail.avatar_icon || {};\n adDetail.video_info.nick_name = oldAdDetail.nick_name || '';\n }\n\n // identity结构白名单的创意 有identity相关属性\n // 全量之后 这部分可在上面adDetail对象中直接赋值\n if (isCreativeHasIdentityWhite()) {\n adDetail.identity_type = oldAdDetail.identity_type;\n adDetail.identity_id = oldAdDetail.identity_id;\n adDetail.identity_data = {\n avatar_icon: oldAdDetail.identity_id ? oldAdDetail.avatar_icon : {},\n display_name: oldAdDetail.identity_id ? (oldAdDetail.source || oldAdDetail.app_name) : '',\n identity_type: oldAdDetail.identity_type,\n identity_id: oldAdDetail.identity_id,\n };\n if (bcIdentityTypesList.includes(oldAdDetail.identity_type)) {\n adDetail.identity_bc_id = oldAdDetail.identity_bc_id || '';\n adDetail.identity_data.identity_bc_id = oldAdDetail.identity_bc_id || '';\n }\n }\n\n /**\n * DPA创意: image_info固定是[],没有video_info字段\n * 单图创意:image_info包含具体图片信息,没有video_info字段\n * 单视频创意:video_info和image_info都不为空\n * 注意:原生广告在identity账号授权不足的情况 同样也是 image_info固定是[],没有video_info字段\n */\n if (Array.isArray(oldAdDetail.image_info) && oldAdDetail.image_info.length === 0) {\n adDetail.video_info = oldAdDetail.video_info || {};\n // 判断原生广告是否有视频信息\n const hasVideoInfo = Object.keys(adDetail.video_info).length;\n if (oldAdDetail.item_source === NATIVE_VIDEO.value && !hasVideoInfo) {\n delete adDetail.image_info;\n delete adDetail.video_info;\n }\n }\n callback && callback(adDetail);\n\n dispatch('setAdsAndPlayable', {\n adDetailList: [adDetail],\n playableUrl: [creativeDetail.playable_url],\n });\n },\n setAdsAndPlayable({ commit, dispatch }, { adDetailList = [], playableUrl = [] }) {\n commit(types.SET_ADS_BY_DETAIL, adDetailList); // 根据素材信息设置ad数组\n commit(types.UPDATE_SPLIT_TEST_TAB, 0);\n dispatch('creative/playable-card-form/openAndSetPlayableUrl', playableUrl, { root: true }); // 设置试玩信息\n },\n // 复制:只对identity账号的权限做处理\n async setAdsIdentityDataList({ commit, getters }, list) {\n const newList = await setIdentityDataList(list, getters.isShop);\n commit(types.SET_ADS_BY_DETAIL, newList); // 设置ad数组\n },\n async getAppInfo({ commit, dispatch }, params) {\n const { data } = await request.get(apis.creative.appInfo, params);\n commit(types.SET_APPINFO, data.app);\n },\n // 设置实时校验的校验状态\n setRealTimePrecheckSuggtions({ commit }, params) {\n commit(types.SET_REAL_TIME_PRECHECK_SUGGESTIONS, params);\n },\n // 删除某一个广告下的校验状态\n deleteRealTimePrecheckSugggtions({ commit }, params) {\n commit(types.DELETE_REAL_TIME_PRECHECK_SUGGESTIONS, params);\n },\n // 将实时校验的校验状态,放到素材预校验的vuex数据中\n setRealTimeSuggtionsIntoPrecheckSuggestions({ commit }, params) {\n commit(types.SET_PRECHECK_SUGGESTIONS, params.suggestions);\n commit(types.SET_PRECHECK_SUMMARY, params.summary);\n },\n async getPrecheckSuggestions({ commit }, params) {\n let suggestions = {};\n let summary = [];\n try {\n const { data = {} } = await request.post(apis.creative.precheck, params.param);\n // 处理一些原生以及推视频需要下掉的一些校验\n const data_ = filterPrecheckResult(data, params.verifyAdsParams);\n\n suggestions = data_.material_results || {};\n summary = data_.summary_results || [];\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_PRECHECK_SUGGESTIONS, suggestions);\n commit(types.SET_PRECHECK_SUMMARY, summary);\n return summary;\n },\n clearPrecheckSuggestions({ commit }) {\n commit(types.SET_PRECHECK_SUGGESTIONS, []);\n commit(types.SET_PRECHECK_SUMMARY, []);\n },\n changePrecheckSuggestionsByIndex({ commit, state }, { changeType = 'delete', index = 0, value = {} }) {\n try {\n const suggestions = _.cloneDeep(state.precheckSuggestions);\n switch (changeType) {\n case 'delete': suggestions.splice(index, 1); break;\n case 'update': suggestions.splice(index, 1, value); break;\n default: return;\n }\n const summeryArray = suggestions.map(item => Object.keys(item).reduce((result, currentName) => {\n const newResult = result.concat(item[currentName].map(({ suggestion }) => suggestion));\n return newResult;\n }, []));\n const summery = _.flattenDeep(summeryArray, Infinity);\n commit(types.SET_PRECHECK_SUGGESTIONS, suggestions);\n commit(types.SET_PRECHECK_SUMMARY, summery);\n } catch (e) {\n commit(types.SET_PRECHECK_SUGGESTIONS, []);\n commit(types.SET_PRECHECK_SUMMARY, []);\n }\n },\n fixVideoPrecheckSuggestionsByIndex({ commit, state }, { index }) {\n try {\n const suggestions = _.cloneDeep(state.precheckSuggestions);\n const value = Object.assign({}, suggestions[index], { videos: [] });\n suggestions.splice(index, 1, value);\n const summeryArray = suggestions.map(item => Object.keys(item).reduce((result, currentName) => {\n const newResult = result.concat(item[currentName].map(({ suggestion }) => suggestion));\n return newResult;\n }, []));\n const summery = _.flattenDeep(summeryArray, Infinity);\n commit(types.SET_PRECHECK_SUGGESTIONS, suggestions);\n commit(types.SET_PRECHECK_SUMMARY, summery);\n } catch (e) {\n commit(types.SET_PRECHECK_SUGGESTIONS, []);\n commit(types.SET_PRECHECK_SUMMARY, []);\n }\n },\n async [types.GET_ADDITIONAL_CREATIVE_CARD_INFO]({ commit, state, getters }, {\n param,\n splitTestTab,\n index,\n shouldFetchChangeCardInfo,\n isNativePageAdGroup,\n isUpdateCardInfo,\n }) {\n if (shouldFetchChangeCardInfo) {\n commit(types.SET_LOADING_PROMOTION_DETAIL, true);\n }\n const data = await getAttachmentCreativeInfo(param);\n const adSource = getters.adSourceByIndex(splitTestTab, 0);\n const adType = getters.adTypeByIndex(splitTestTab, 0);\n const additionalCreativeInfo = state.ads[splitTestTab][index][adSource][adType].cardAdditionalInfo || {};\n const additionalCreativeCardInfo = additionalCreativeInfo[ADDITION_IMAGE_CARD];\n // 接口返回的content字段是JSON\n const {\n id: cardId, type: creativeType, title, need_destination,\n } = data;\n if (!cardId) {\n const errorMsg = `[creative] get cardId error cardInfo ${JSON.stringify(data)}`;\n sendLog('log', {\n level: 'info',\n value: errorMsg,\n type: 'get_card_info_failed',\n });\n }\n if (!title) {\n const errorMsg = `[creative] get title error :cardInfo ${JSON.stringify(data)}`;\n sendLog('log', {\n level: 'info',\n value: errorMsg,\n type: 'get_card_info_failed',\n });\n }\n if (!data?.card_infos?.thumbnail_uri) {\n const errorMsg = `[creative] get thumbnail_uri error :cardInfo ${JSON.stringify(data)}`;\n sendLog('log', {\n level: 'info',\n value: errorMsg,\n type: 'get_card_info_failed',\n });\n }\n if (need_destination === undefined) {\n const errorMsg = `[creative] get need_destination error :cardInfo ${JSON.stringify(data)}`;\n sendLog('log', {\n level: 'info',\n value: errorMsg,\n type: 'get_card_info_failed',\n });\n }\n let firstCard = {};\n let type = creativeType;\n // 如果是type 2 是卡片,包括图片卡和礼包码卡片\n if (type === 2) {\n const { card_infos = [] } = data;\n firstCard = card_infos?.[0] ?? {};\n // 如果是卡片真实的类型从card_infos 里面取\n type = firstCard?.type;\n } else {\n firstCard = { id: data?.id, type, ...data?.info ?? {} };\n }\n firstCard = { ...firstCard, title, need_destination };\n const isGameGiftCard = type === ADDITIONAL_CREATIVE_IMAGE_CARD_TEMPLATE_TYPES.GAME_GIFT_CARD.value;\n const isNotSupportCard = isGameGiftCard && isNativePageAdGroup;\n if (isNotSupportCard) return;\n const newCardInfo = Object.assign({}, additionalCreativeCardInfo, { mode: type, isChecked: Boolean(cardId) });\n // 附加创意信息从这获取,包括附加创意类型\n const value = Object.assign({}, additionalCreativeInfo, { [ADDITION_IMAGE_CARD]: newCardInfo });\n if (shouldFetchChangeCardInfo) {\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index,\n prop: 'cardAdditionalInfo',\n value,\n });\n commit(types.SET_LOADING_PROMOTION_DETAIL, false);\n }\n if (isUpdateCardInfo) {\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index,\n prop: 'cardAdditionalInfo',\n value,\n });\n }\n return Object.assign({}, data, { content: firstCard });\n },\n async [types.CREATE_ADDITION_CREATIVE_CUSTOMIZED_CARD]({ commit }, { param, splitTestTab, index }) {\n const res = await service.createAdditionalCreativeCustomizedImageCard(param);\n const data = res?.data;\n const card_id = data?.card_id;\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index,\n prop: 'card_id',\n value: card_id,\n });\n return data;\n },\n // 创意这里getDomain\n async getDomain({ state, commit, getters }, params) {\n if (state.domainCancelToken) {\n state.domainCancelToken.cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_CREATIVE_DOMAIN, source);\n // 多创意把index传进来\n const { url, index, splitTestTab } = params;\n try {\n const data = await service.getExternalUrlDomain({\n external_url: url,\n }, source.token);\n commit(types.SET_EXTERNAL_URL_DOMAIN, { index, domain: data.domain, splitTestTab });\n return data.domain || '';\n } catch (err) {\n captureError(err);\n }\n },\n /**\n * 重置创意层级数据中用不到的数据(主要处理的是创意=》adgroup=》创意这种来回跳的场景)\n */\n resetAllCreativeDataExtraKey({ commit, state, getters }, params) {\n const newAds = _.cloneDeep(state.ads) || [];\n newAds.forEach((ads = [], splitTestTab) => {\n const creativeDataList = [];\n ads.forEach((ad, adIndex) => {\n let creativeData = getters.adDetailByIndex(splitTestTab, adIndex);\n creativeData = resetCreativeExtraKey({\n creativeData,\n adgroupData: params.adgroup,\n isCopy: params.isCopy,\n isCreate: params.isCreate,\n shouldClearFallbackType: params.shouldClearFallbackType,\n });\n creativeDataList.push(creativeData);\n });\n commit(types.SET_ADS_BY_INDEX, { creativeDataList, splitTestTab });\n });\n },\n async [types.GET_ADDITIONAL_CREATIVE_PAGE_INFO]({ commit, state, getters }, {\n param, splitTestTab, index, shouldFetchChangePageInfo,\n }) {\n if (shouldFetchChangePageInfo) {\n commit(types.SET_LOADING_PROMOTION_DETAIL, true);\n }\n const res = await service.getAdditionalCreativePageInfo(param);\n const { page_content = {} } = res?.data || {};\n const { template_name } = page_content;\n const adSource = getters.adSourceByIndex(splitTestTab, 0);\n const adType = getters.adTypeByIndex(splitTestTab, 0);\n const additionalCreativeInfo = state.ads[splitTestTab][index][adSource][adType].cardAdditionalInfo || {};\n const additionalCreativePageInfo = additionalCreativeInfo[ADDITION_INSTANT_PAGE];\n const newPageInfo = Object.assign({}, additionalCreativePageInfo, { template_name, isChecked: Boolean(param.page_id) });\n const value = Object.assign({}, additionalCreativeInfo, { [ADDITION_INSTANT_PAGE]: newPageInfo });\n if (shouldFetchChangePageInfo) {\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index,\n prop: 'cardAdditionalInfo',\n value,\n });\n commit(types.SET_LOADING_PROMOTION_DETAIL, false);\n }\n return page_content;\n },\n // 这个用不到了\n async [types.GET_ADDITIONAL_CREATIVE_ENGAGEMENT_INFO]({ commit, state, getters }, {\n param, splitTestTab, index, type,\n }) {\n if (![EGG.value, GESTURE.value].includes(type) || !param.creative_id) return;\n commit(types.SET_LOADING_PROMOTION_DETAIL, true);\n const res = await getEngagementCreativeInfo(param);\n const previewUrl = res?.info?.thumbnail_uri;\n const adSource = getters.adSourceByIndex(splitTestTab, index);\n const adType = getters.adTypeByIndex(splitTestTab, index);\n const additionalCreativeInfo = state.ads[splitTestTab][index][adSource][adType].cardAdditionalInfo || {};\n const engagementInfo = additionalCreativeInfo[ADDITION_ENGAGEMENT];\n const isEgg = type === EGG.value;\n const newInfo = Object.assign({}, engagementInfo, { previewUrl, isChecked: Boolean(param), mode: isEgg ? EGG.value : GESTURE.value });\n const value = Object.assign({}, additionalCreativeInfo, { [ADDITION_ENGAGEMENT]: newInfo });\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index,\n prop: 'cardAdditionalInfo',\n value,\n });\n commit(types.SET_LOADING_PROMOTION_DETAIL, false);\n return {\n previewUrl,\n };\n },\n // 获取当前user绑定的TTBA账号信息\n async getBindTTBAData({ commit, getters }, params) {\n const res = await service.getIdentityListV2({\n identity_type_list: [identityTypeMap.TT_USER],\n });\n\n if (res && res.data) {\n const { identity_list = [] } = res.data;\n const bindData = identity_list.find(item => item.identity_type === identityTypeMap.TT_USER) || {};\n commit(types.SET_BIND_ACCOUNT_DATA, bindData);\n if (params) {\n // 如果当前创意所选择的identity账号正是绑定的TTBA账号的话 记录TTBA账号的权限状态\n const { splitTestTab, index } = params;\n const adDetail = _.cloneDeep(getters.adDetailByIndex(splitTestTab, index));\n const { identity_type, identity_id } = adDetail;\n if (Object.keys(bindData).length) {\n if (identity_type === identityTypeMap.TT_USER && identity_id === bindData.identity_id) {\n commit(types.SET_IDENTITY_AUTHORIZATION_STATE, bindData.available_status);\n }\n }\n }\n }\n },\n // 对identity相关字段进行权限判断处理 之后回填到vuex\n async setAdDetailByIdentity({ commit, getters, dispatch }, {\n splitTestTab = 0, adIndex = 0, isEdit = false, isCopy = false,\n }) {\n const adDetail = getters.adDetailByIndex(splitTestTab, adIndex);\n if (_.isEmpty(adDetail)) return;\n\n const { adDetail: newDetail = {}, availableStatus } = await setIdentityData(adDetail, isEdit, getters.isShop);\n // 避免覆盖detail的其他字段\n if (_.has(newDetail, 'identity_id')) {\n const changeFieldlist = ['identity_id', 'identity_type', 'identity_data', 'identity_bc_id'];\n changeFieldlist.forEach((item) => {\n commit(types.CHANGE_AD_PROPERTY, {\n splitTestTab,\n index: adIndex,\n prop: item,\n value: newDetail[item],\n });\n });\n }\n if ((isEdit || isCopy) && typeof availableStatus === 'number') {\n commit(types.SET_IDENTITY_AUTHORIZATION_STATE, availableStatus);\n }\n },\n\n async [types.CHANGE_ADS_RENDER_TASK]({ dispatch, state }, {\n splitTestTab, index, taskList,\n }) {\n for (let i = 0; i < taskList.length; i++) {\n const task = taskList[i];\n const {\n taskActionType, taskId, call_to_action, title,\n } = task;\n const addNew = taskActionType === VIDEO_ASYNC_RENDER_FILL_ACTION_TYPE.ADD_NEW_CREATIVE;\n const adDetail = {\n video_info: {},\n image_info: [],\n taskId,\n };\n if (call_to_action) adDetail.call_to_action = call_to_action;\n if (call_to_action) adDetail.title = title;\n if (addNew) {\n const target = state.ads[splitTestTab][index];\n const { adSource } = target;\n const { adType } = target[adSource];\n const { identity_data, identity_id, identity_type } = target[adSource][adType];\n if (identity_data) adDetail.identity_data = identity_data;\n if (identity_id) adDetail.identity_id = identity_id;\n if (identity_type) adDetail.identity_type = identity_type;\n // eslint-disable-next-line no-await-in-loop\n await dispatch('adFileAdd', {\n splitTestTab,\n adDetail,\n });\n } else {\n // eslint-disable-next-line no-await-in-loop\n await dispatch('updateAdMaterial', {\n splitTestTab,\n adDetail,\n index,\n });\n }\n }\n },\n async [types.HANDLE_VIDEO_RENDER_ASYNCHRONOUS]({\n commit, state, getters, dispatch,\n }, {\n splitTestTab, index, taskList = [], recursion = false,\n }) {\n // 如果指定了adIndex,说明需要操作广告的taskId。\n const isNeedChangeAd = index !== undefined;\n if (isNeedChangeAd) {\n // 把taskId 回填到目标AD中,目标AD有可能是一个已存在的AD,有可能是一个需要新增的AD\n dispatch(types.CHANGE_ADS_RENDER_TASK, {\n splitTestTab, index, taskList,\n });\n }\n const isQuerying = getTaskList(state?.videoRenderInfoList[splitTestTab].taskList, RENDER_STATUS).length;\n // 把UID列表放入任务池中\n commit(types.SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS, { splitTestTab, taskList });\n // 是否有正在进行的一次查询,如果有,则只把UID存入任务池,等待下一次查询即可\n const task_list = getTaskList(state?.videoRenderInfoList[splitTestTab].taskList, RENDER_STATUS)\n .map(({ taskId }) => taskId);\n if ((isQuerying || !task_list.length) && !recursion) return;\n // 开启查询\n // 查询结果\n const renderResult = await fetchVideoRenderResultsByTaskIdsBatch({ task_list }) || {};\n const isResultError = !Object.keys(renderResult).length;\n // 服务异常则打断\n if (isResultError) {\n return;\n }\n const allInfoList = state.videoRenderInfoList[splitTestTab].taskList;\n // 最新的任务状态\n const taskListProcessed = allInfoList.map((task) => {\n if (renderResult[task.taskId]) {\n return {\n ...task,\n ...renderResult[task.taskId],\n status: renderResult[task.taskId].status,\n percentage: getTaskRenderPercentageByStatus(renderResult[task.taskId].status, task.percentage),\n renderStatus: getTaskRenderStatus(renderResult[task.taskId].status),\n };\n }\n return task;\n });\n // 找到本次查询新的已完成任务\n const videoRenderDoneResultList = Object.keys(renderResult)\n .map(taskId => ({ ...renderResult[taskId], taskId }))\n .filter(({ status }) => getIsAsyncRenderVideoRenderDone(status))\n .map(({ taskId }) => taskListProcessed.find(item => item.task_id === taskId));\n if (!videoRenderDoneResultList.length) {\n sendLog('counter', {\n name: 'quick_optimize',\n value: 1,\n type: 'quick_optimize_error',\n });\n }\n sendLog('counter', {\n name: 'quick_optimize',\n value: 1,\n tags: {\n type: 'quick_optimize',\n },\n });\n // 视频回填\n videoRenderDoneResultList.length\n && await dispatch(types.BATCH_FILL_VIDEO_INFO_BY_TASK_IDS, { splitTestTab, index, videoRenderDoneResultList });\n // 把最新结果同步到任务池\n commit(types.SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS, { splitTestTab, taskList: taskListProcessed });\n // 落库\n videoRenderDoneResultList.forEach((task) => {\n dispatch(types.SAVE_VIDEO_RENDER_TASK_RESULT_TO_LIBRARY_BY_ID, { taskId: task.taskId, splitTestTab });\n });\n // 任务池是否还有渲染中的任务\n const hasRenderingVideo = getTaskList(state?.videoRenderInfoList[splitTestTab].taskList, RENDER_STATUS)\n .length;\n // 如果任务池还有剩余任务 发起下一次查询\n if (hasRenderingVideo) dispatch(types.HANDLE_VIDEO_RENDER_ASYNCHRONOUS, { splitTestTab, index, recursion: true });\n },\n\n // 视频渲染结果落库\n async [types.SAVE_VIDEO_RENDER_TASK_RESULT_TO_LIBRARY_BY_ID]({ commit, state }, { taskId, splitTestTab }) {\n const targetTask = state.videoRenderInfoList?.[splitTestTab]?.taskList\n ?.find(task => task.taskId === taskId);\n if (!targetTask || getIsVideoRenderAllComplete(targetTask.status)) return;\n try {\n // 名称校验\n const { isCheckPass } = await fileNameCheck(targetTask.name);\n // 名称校验未通过\n if (!isCheckPass) {\n commit(types.CHANGE_VIDEO_RENDER_INFO_PROP, {\n splitTestTab,\n taskId,\n prop: 'status',\n value: VIDEO_ASYNC_RENDER_STATUS.RENDER_DONE_NAME_ERROR,\n });\n return;\n }\n const {\n name, tags: system_tags = [], businesses = [], vid,\n } = targetTask;\n // 尝试落库\n await service.videoToLibrary({\n vid,\n name,\n businesses,\n system_tags,\n status: 0,\n });\n // 落库后修改状态\n commit(types.CHANGE_VIDEO_RENDER_INFO_PROP, {\n splitTestTab,\n taskId,\n prop: 'status',\n value: VIDEO_ASYNC_RENDER_STATUS.RENDER_DONE_AND_CREATED,\n });\n } catch (e) {\n commit(types.CHANGE_VIDEO_RENDER_INFO_PROP, {\n splitTestTab,\n taskId,\n prop: 'status',\n value: VIDEO_ASYNC_RENDER_STATUS.RENDER_DONE_CREATED_FAILED,\n });\n }\n },\n [types.SAVE_VIDEO_FROM_FRONT_CREATIVE]({ commit }, task) {\n const {\n name, tags: system_tags = [], businesses = [], vid,\n } = task;\n if (!name || !vid) return;\n return service.videoToLibrary({\n vid,\n name,\n businesses,\n system_tags,\n status: 0,\n });\n },\n async [types.BATCH_FILL_VIDEO_INFO_BY_TASK_IDS]({ commit }, data) {\n // 批量回填渲染结果到创意\n const { splitTestTab, videoRenderDoneResultList = [] } = data;\n const videoFullInfoList = await getVideoFullInfoListByVideoRenderResultList(videoRenderDoneResultList);\n videoFullInfoList.forEach((videoFullInfo) => {\n commit(types.FILL_VIDEO_FULL_INFO_BY_TASK_ID, { splitTestTab, videoFullInfo });\n });\n },\n // 重新渲染视频任务\n async [types.RE_RENDER_CREATIVE_VIDEO]({ commit, dispatch, state }, { splitTestTab, task_id }) {\n // 发起重新渲染任务\n await service.reRenderCreativeVideo({ task_id });\n // 找到目标任务重置任务状态\n const targetTask = state.videoRenderInfoList?.[splitTestTab]?.taskList\n ?.find(({ taskId }) => taskId === task_id);\n if (targetTask) {\n const nextTryCount = targetTask.tryCount + 1;\n if (nextTryCount > VIDEO_RENDER_OPTIONS.SINGLE_VIDEO_RENDER_TRY_COUNT) return;\n const newTask = {\n ...targetTask,\n percentage: 0, // 重置进度\n status: VIDEO_ASYNC_RENDER_STATUS.RENDERING, // 重置状态\n tryCount: nextTryCount,\n };\n const taskList = [newTask];\n dispatch(types.HANDLE_VIDEO_RENDER_ASYNCHRONOUS, { splitTestTab, taskList });\n }\n },\n // 检查是否已创建过 Lead Ads 广告\n async checkHasLeadAds({ commit }) {\n const { data = {} } = await service.hasLeadAds();\n commit(types.CHECK_HAS_LEAD_ADS, data.is_exist);\n },\n};\n","import _ from 'lodash';\nimport {\n AD_TYPE,\n NORMAL_AD_SOURCES,\n imgSrcPrefix,\n imageMode,\n DISCLAIMER_TYPES,\n CAROUSEL_ENABLE_OBJECTIVE_LIST_V1,\n CAROUSEL_ENABLE_OBJECTIVE_LIST_V2,\n CREATIVE_TYPE,\n CARD_ADDITIONAL_CREATIVE_TYPE,\n ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES,\n GET_SPECIAL_ADDITIONAL_CREATIVE_INSTANT_PAGE_TEMPLATE_TYPES,\n identityAvailableStatus,\n PixeOnlyTracking,\n bcIdentityTypesList,\n NATIVE_AD_ACTION_TYPE,\n} from 'src/const/state/creative';\nimport { ADDITIONAL_CREATIVE_PARAMS } from 'src/store/modules/creative/normal-creative/state';\n// import { ADVANCED_CREATIVE_TYPE } from 'src/const/state/call-to-action';\nimport { INVENTORY_FLOW_MAP, INVENTORY_FLOW } from 'src/const/state/inventory-type';\nimport {\n isVigoWhite,\n isSupportPangleImage,\n isCarouselImageCreativeAllowed_v1,\n isCarouselImageCreativeAllowed_v2,\n isCreativeHasIdentityWhite,\n} from 'src/const/whiteList';\nimport { randomString } from 'src/utils/strUtil';\nimport getAutoGenerateCreativeName from 'src/utils/getAutoGenerateCreativeName';\nimport { customizedAdditionalCreativeObjectiveTypes } from 'src/const/creative/additionalAdsEnable';\nimport { PRODUCT_SELECTION_TYPE, shopStateMap } from 'src/const/state/shop';\nimport { transformTitle4Backend, isAdEmpty, isValidAdSource } from './helpers';\n\nconst {\n SINGLE_IMAGE, SINGLE_VIDEO, CATALOGUE_VIDEO, CATALOGUE_IMAGE, CAROUSEL_IMAGE, REAL_TIME_LIVE,\n} = AD_TYPE;\nconst { CREATE_NEW, NATIVE_VIDEO } = NORMAL_AD_SOURCES;\nconst { IMAGE_CARD: ADDITION_IMAGE_CARD_NAME, INSTANT_PAGE: INSTANT_PAGE_NAME } = ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES;\nconst getIsInstantPageChecked = ({ cardAdditionalInfo = {} }) => cardAdditionalInfo?.[INSTANT_PAGE_NAME]?.isChecked;\n\nconst getIsAppProfileInstantPageChecked = ({ cardAdditionalInfo = {} }) => cardAdditionalInfo?.[INSTANT_PAGE_NAME]?.isChecked\n && cardAdditionalInfo?.[INSTANT_PAGE_NAME]?.template_name\n === GET_SPECIAL_ADDITIONAL_CREATIVE_INSTANT_PAGE_TEMPLATE_TYPES()?.APP_PROFILE_INSTANT_PAGE?.value;\n\nconst getIsAdditionalCardChecked = ({ cardAdditionalInfo = {} }) => cardAdditionalInfo?.[ADDITION_IMAGE_CARD_NAME]?.isChecked;\n\nconst autoNameCreativeCountAdUnit = (adsUnit) => {\n try {\n return adsUnit.filter((ad) => {\n const { adSource } = ad;\n const sourceTarget = ad[adSource];\n const { adType } = sourceTarget;\n const item = _.cloneDeep(sourceTarget[adType]);\n return item.isUseAutoGenerateCreativeName;\n }, []).length;\n } catch (e) {\n return 0;\n }\n};\nconst videoRenderCreativeCountAdUnit = (adsUnit) => {\n try {\n return adsUnit.filter((ad) => {\n const { adSource } = ad;\n const sourceTarget = ad[adSource];\n const { adType } = sourceTarget;\n const item = _.cloneDeep(sourceTarget[adType]);\n return item.taskId;\n }, []).length;\n } catch (e) {\n return 0;\n }\n};\nexport default {\n isDpa(state, getters, rootState, rootGetters) {\n return rootGetters['campaign/adgroup/isDpa'];\n },\n isShop(state, getters, rootState, rootGetters) {\n return rootGetters['campaign/adgroup/isShop'];\n },\n isShopLive(state, getters, rootState, rootGetters) {\n return rootGetters['campaign/adgroup/isShopLive'];\n },\n adStorageKey(state, getters, rootState, rootGetter) {\n return `${ rootGetter['campaign/modelKey'] }:ad`;\n },\n // 把vuex的数据处理成接口需要的数据结构\n // 1. 移出一些不必要的字段\n adsUnitCreativeInfo(state, getters, rootState, rootGetters) {\n return (adsUnit, creativeRevertFieldArr) => {\n const result = {};\n\n const isRF = rootGetters['campaign/adgroup/isRF'];\n adsUnit.forEach((ad) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return;\n }\n const sourceTarget = ad[adSource];\n const { adType } = sourceTarget;\n let item = _.cloneDeep(sourceTarget[adType]);\n let creativeRevertValueMap = {};\n if (Array.isArray(creativeRevertFieldArr)) { // 需要保留的字段的数组\n creativeRevertValueMap = creativeRevertFieldArr.reduce((pre, field) => {\n pre[field] = item[field];\n return pre;\n }, {});\n }\n if (!item) {\n return;\n }\n // 跳过校验失败的创意\n if (isRF && (!item.is_valid && item.is_valid !== undefined)) {\n return;\n }\n // 清除 creative_type 前判断状态\n const isCollectionAds = item.creative_type === CREATIVE_TYPE.LYNX_PLP;\n // 是否自定义附加创意\n const objectiveType = _.get(rootState, 'campaign.adgroup.objective_type');\n // 选择only pixel清空domain\n if (item.domain === PixeOnlyTracking || !!item.page_id) {\n item.domain = '';\n }\n // 当前的object_type是否支持自定义附加创意\n const additionalCreativeObjectiveEnable = customizedAdditionalCreativeObjectiveTypes.includes(objectiveType);\n const isCustomizedAdditionalCreative = additionalCreativeObjectiveEnable\n && item.format_structure === CARD_ADDITIONAL_CREATIVE_TYPE.CUSTOMIZED.value;\n\n const { isUseAutoGenerateCreativeName } = item;\n if (isUseAutoGenerateCreativeName) {\n item.creative_name = getAutoGenerateCreativeName(adType, item);\n }\n delete item.isUseAutoGenerateCreativeName; // 是否使用自动生成创意名称 此字段对后端无用\n delete item.autoCreativeName; // 此字段对后端无用\n delete item.native_source;\n delete item.activeCarouselImageIndex;\n delete item.enableUrl;\n delete item.enableCta;\n delete item.carouselImageInfoComponentsNameList;\n delete item.carouselImageModeChangerLoadingStatus;\n delete item.isSignProtocol; // 签署协议走单独接口不需要提交状态\n delete item.attachmentCreativeTitle; // 前端用字段不需要后端支持\n delete item.attachmentCreativeType;\n delete item.destinationEnable;\n if (![CREATIVE_TYPE.SHOP_LIVE_VIDEO, CREATIVE_TYPE.SHOP_LIVE_REAL_TIME].includes(item.creative_type)) {\n delete item.creative_type; // 后端不需要这个字段,会从数据推断(SHOP ADS LIVE除外,后端无法推断)\n }\n delete item.copy_from_ad_id; // 复制场景下的ad_id,前端用作校验,后端不需要这个字段\n delete item.advanced_creative_type; // 后端不需要这个字段,会从数据推断\n delete item.song_authorization_missing; // 对后端无用\n delete item.isCheckedMusicProtocol;\n\n delete item.is_valid; // 对后端无用\n delete item.rf_creative_id;\n\n delete item.selectedSpuMap;\n delete item.shopHasUnavailablePrd;\n delete item.spuData;\n delete item.copy_creative_shop_id;\n if (item.product_selection_type === PRODUCT_SELECTION_TYPE.SINGLE) {\n delete item.spu_list;\n }\n if (item.product_selection_type === PRODUCT_SELECTION_TYPE.MULTIPLE) {\n delete item.spu_id;\n }\n\n /** ---- identity相关字段处理 ---- */\n delete item.identity_data; // 此字段对后端无用\n\n if (!isCreativeHasIdentityWhite()) {\n delete item.identity_id;\n delete item.identity_type;\n }\n\n // 只有bc授权identity对应的原生创意需要传 identity_bc_id\n if (!bcIdentityTypesList.includes(item.identity_type)) {\n delete item.identity_bc_id;\n }\n\n const isNativeAd = adSource === NATIVE_VIDEO.value;\n // 原生视频的item_source需要区分推拉\n item.item_source = isNativeAd\n ? item.nativeAdActionType\n : adSource;\n delete item.nativeAdActionType;\n\n if (item.item_source !== NATIVE_AD_ACTION_TYPE.PUSH_VIDEO_TO_TTBA) {\n delete item.dark_post_status;\n }\n delete item.bc_restrict_delivery;\n\n item.aweme_item_id = item.aweme_item_id || (item.video_info || {}).aweme_item_id;\n if (item.disclaimer_type === DISCLAIMER_TYPES.UN_SET) {\n item.disclaimer_type = undefined;\n item.disclaimer_clickable_texts = undefined;\n item.disclaimer_text = undefined;\n }\n if (item.disclaimer_type === DISCLAIMER_TYPES.TEXT_ONLY) item.disclaimer_clickable_texts = undefined;\n if (item.disclaimer_type === DISCLAIMER_TYPES.TEXT_WITH_LINK) item.disclaimer_text = undefined;\n\n // dpa创意的字段特殊处理\n if (adType === CATALOGUE_VIDEO.value || adType === CATALOGUE_IMAGE.value) {\n const { dpa_word_set = [] } = item;\n item.title = transformTitle4Backend(item.title, state.dpaWordList, dpa_word_set); // 特殊字符转换\n item.is_dynamic = (dpa_word_set).length ? 1 : 0; // 标题中是否包含动态词包,前端没有用到,单纯后端接口需要\n }\n item.struct_version = state.isNewStructure ? 1 : 0;\n if (adType === SINGLE_IMAGE.value || adType === CATALOGUE_IMAGE.value) {\n if (!result.image_list) {\n result.image_list = [];\n }\n result.image_list.push(item);\n } else if (adType === SINGLE_VIDEO.value || adType === CATALOGUE_VIDEO.value) {\n delete item.isQuickOptimizeToolsShow;// 是否展示一键优化工具 后端无用\n delete item.quickOptimizeToolInfo; // 一键优化信息,后端无用\n if (!result.video_list) {\n result.video_list = [];\n }\n if (isCollectionAds) {\n // 清除 Collection Ads 不需要的参数\n item.external_url = undefined;\n item.is_open_url = undefined;\n item.open_url = undefined;\n item.auto_open = undefined;\n item.call_to_action = undefined;\n item.advanced_creative_type = undefined;\n item.call_to_action_id = undefined;\n item.fallback_type = 0;\n // collection ads 没有 card id\n item.card_id = '';\n }\n\n if (adType === SINGLE_VIDEO.value && isCustomizedAdditionalCreative) {\n // 未使用卡片清空卡片id\n if (!getIsAdditionalCardChecked(item)) item.card_id = '';\n // 未使用落地页清空落地页id\n if (!getIsInstantPageChecked(item)) item.page_id = '';\n if (getIsAppProfileInstantPageChecked(item)) item.auto_open = 0;\n if (getIsInstantPageChecked(item) && item.page_id) {\n item.external_url = '';\n item.open_url = '';\n item.is_open_url = undefined;\n }\n }\n\n if (isRF && adType === SINGLE_VIDEO.value && getIsInstantPageChecked(item) && item.page_id) {\n item.external_url = '';\n item.open_url = '';\n item.is_open_url = undefined;\n }\n // 先缓存\n const { product_set_id, product_platform_id } = item;\n\n // 清除 additional creative前端增加使用的参数\n for (const key of Object.keys(ADDITIONAL_CREATIVE_PARAMS)) {\n item[key] = undefined;\n }\n\n item = { // 把需要的字段恢复过来\n ...item,\n ...creativeRevertValueMap,\n };\n // shop ads的这2个字段不应该被清空,此处做恢复。(仅处理shopAds,其他的等productSet全量下沉后再调整)\n if (getters.isShop) {\n item.product_set_id = product_set_id;\n item.product_platform_id = product_platform_id;\n }\n\n result.video_list.push(item);\n } else if (adType === REAL_TIME_LIVE.value) {\n delete item.isQuickOptimizeToolsShow;// 是否展示一键优化工具 后端无用\n delete item.quickOptimizeToolInfo; // 一键优化信息,后端无用\n delete item.call_to_action; // 直投直播间不需要CTA\n delete item.call_to_action_id; //\n if (!result.video_list) {\n result.video_list = [];\n }\n result.video_list.push(item);\n } else if (adType === CAROUSEL_IMAGE.value) {\n if (!result.image_list) {\n result.image_list = [];\n }\n const { image_info = [] } = item;\n const allImagePropList = image_info\n .reduce((result, { carouselImageInfoComponentsNameList = [] }) => [...result, ...carouselImageInfoComponentsNameList], []);\n const getShouldPropEmpty = propName => allImagePropList.includes(propName);\n const titles = getShouldPropEmpty('title')\n ? image_info.map(({ title }) => title)\n : [];\n const external_urls = getShouldPropEmpty('externalUrl')\n ? image_info.map(({ externalUrl }) => externalUrl)\n : [];\n const restAttrClear = {\n title: undefined,\n externalUrl: undefined,\n uuid: undefined,\n [imageMode.CAROUSEL_IMAGE_SQUARE]: undefined,\n [imageMode.CAROUSEL_IMAGE_HORIZONTAL]: undefined,\n origin: undefined,\n };\n result.image_list.push({\n ...item, external_urls, titles, ...restAttrClear,\n });\n }\n // result[item.image_mode] = result[item.image_mode] || [];\n\n // if (item.image_mode) {\n // result[item.image_mode].push(item);\n // }\n });\n return result;\n };\n },\n // 非split test时,传给后端的是creativeInfo\n creativeInfo(state, getters) {\n return getters.adsUnitCreativeInfo(state.ads[0]);\n },\n originCreativeInfo(state, getters) {\n return getters.adsUnitCreativeInfo(state.ads[0], [\n 'product_platform_id',\n ]);\n },\n autoNameCreativeCount(state) {\n try {\n return state.ads\n .map(adsUnit => autoNameCreativeCountAdUnit(adsUnit))\n .reduce((result, current) => result + current, 0);\n } catch (e) {\n return 0;\n }\n },\n videoRenderByPlatformCount(state) {\n try {\n return state.ads\n .map(adsUnit => videoRenderCreativeCountAdUnit(adsUnit))\n .reduce((result, current) => result + current, 0);\n } catch (e) {\n return 0;\n }\n },\n // 开启split test时,传给后端的是batchInfo而不是creativeInfo\n batchInfo(state, getters) {\n return state.ads.map((adsUnit, index) => ({\n num: index + 1,\n creative_info: getters.adsUnitCreativeInfo(adsUnit),\n }));\n },\n isSplitTestAdsSame(state, getters) {\n if (getters.batchInfo.length < 2) return false;\n const adInfoList = getters.batchInfo.map((item) => {\n const { creative_info } = item;\n const [adInfo = [{}]] = Object.values(creative_info);\n const {\n call_to_action, image_info = [], title, image_mode, video_info, page_id,\n } = adInfo[0];\n const isVideoType = !!video_info;\n // 对url排序后转字符串,方便对比\n const imageUrlList = image_info.map(({ web_uri }) => web_uri).sort().join('');\n const vid = video_info ? video_info.vid : NaN;\n return {\n call_to_action, imageUrlList, title, image_mode, vid, isVideoType, page_id,\n };\n });\n // 去重\n const adInfoListUniq = _.uniqWith(adInfoList, _.isEqual);\n // 去重后长度发生变化,说明有至少两个广告相同\n return adInfoListUniq.length !== adInfoList.length;\n },\n // 复制创意时,如果复制个数大于 1,要把 creative_info 以类似 {creative_info: {15: [{}, {}]}} 的形式放在参数中\n copyCreativeInfo(state, getters) {\n return getters.copyUnitCreativeInfo();\n },\n copyUnitCreativeInfo(state, getters) {\n return (fieldArr) => {\n const creativeInfo = getters.adsUnitCreativeInfo(state.ads[0], fieldArr);\n const { copyNumber } = state;\n const suffix = randomString(5);\n const result = Object.keys(creativeInfo).reduce((r, v) => {\n r[v] = [];\n const [item] = creativeInfo[v] || [];\n for (let i = 0; i < copyNumber; i++) {\n // bs 新增对 creative_id 的校验,传了 creative_id 会走到后端 update 的校验逻辑,故特别删去\n delete item.creative_id;\n r[v].push({\n ...item,\n // 多个创意复制名称后补随机数 + 数字区分\n creative_name: `${ item.creative_name }-${ suffix }-${ i + 1 }`,\n domain: (item.domain === PixeOnlyTracking || !!item.page_id) ? '' : item.domain,\n });\n }\n return r;\n }, {});\n return result;\n };\n },\n originCopyCreativeInfo(state, getters) {\n return getters.copyUnitCreativeInfo([\n 'product_platform_id',\n ]);\n },\n // 根据索引获得select post\n postByIndex(state) {\n return (splitTestTab) => {\n if (splitTestTab === 0) return state.selectedFormObject;\n return state.selectedFormObjectOppo;\n };\n },\n // 根据索引获取对应位置的ad\n adByIndex(state) {\n return (splitTestTab, index) => {\n if (index < 0 || splitTestTab >= state.ads.length || index >= state.ads[splitTestTab].length) {\n return null;\n }\n return state.ads[splitTestTab][index];\n };\n },\n // 根据索引获取对应位置的adSource\n adSourceByIndex(state, getters) {\n return (splitTestTab, index) => {\n const ad = getters.adByIndex(splitTestTab, index) || {};\n return ad.adSource;\n };\n },\n // 根据索引获取对应位置的adType\n adTypeByIndex(state, getters) {\n return (splitTestTab, index) => {\n const ad = getters.adByIndex(splitTestTab, index) || {};\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return '';\n }\n const { adType = '' } = ad[adSource] || {};\n return adType;\n };\n },\n // 根据索引获取对应位置的当前激活素材详情\n adDetailByIndex(state, getters) {\n return (splitTestTab, index) => {\n const ad = getters.adByIndex(splitTestTab, index) || {};\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return {};\n }\n const { adType = '' } = ad[adSource] || {};\n if (!adType) {\n return {};\n }\n return ad[adSource][adType];\n };\n },\n // 根据索引获取对应位置的当前激活素材的identity账号信息\n adIdentityDataByIndex(state, getters) {\n return (splitTestTab, index) => {\n const adDetail = getters.adDetailByIndex(splitTestTab, index) || {};\n const { identity_data } = adDetail;\n return identity_data || {};\n };\n },\n precheckParams(state, getters, rootState, rootGetter) {\n return (tab, isProcedural = false) => {\n const params = [];\n const { protocol } = window.location;\n if (!isProcedural) {\n // 普通创意与 split test\n const ads = state.ads[tab] || [];\n ads.forEach((ad, index) => {\n const adDetail = getters.adDetailByIndex(tab, index);\n const {\n app_name, source, image_info: imageInfo, video_info: videoInfo,\n } = adDetail;\n const isVideo = Boolean(videoInfo && videoInfo.vid);\n params.push({\n display_name: [app_name || source],\n videos: isVideo ? [videoInfo.vid] : [],\n images: isVideo ? [] : _.map(imageInfo, (image) => {\n const url = `${imgSrcPrefix.URL}${image.web_uri}`;\n const hasProtocol = url.includes('http');\n return hasProtocol ? url : `${protocol}${url}`;\n }),\n });\n });\n } else {\n const pcd = rootGetter['creative/procedural-creative-form/formData'];\n if (pcd && pcd.image_list && pcd.image_list.length) {\n pcd.image_list.forEach((item) => {\n const { image_info: imageInfo, video_info: videoInfo } = item;\n const isVideo = Boolean(videoInfo && videoInfo.vid);\n // 程序化创意把视频与图片素材分别处理,用 0 和 1 区分\n // 方便拿回机审信息时能 Match 上对应标号\n if ((tab === 0 && isVideo) || (tab === 1 && !isVideo)) {\n params.push({\n display_name: _.map(pcd.title_list, titleItem => titleItem.title),\n videos: isVideo ? [videoInfo.vid] : [],\n images: isVideo ? [] : _.map(imageInfo, (image) => {\n const url = `${imgSrcPrefix.URL}${image.web_uri}`;\n const hasProtocol = url.includes('http');\n return hasProtocol ? url : `${protocol}${url}`;\n }),\n });\n }\n });\n }\n }\n return params;\n };\n },\n // 最新一个ad是否为空的:关键信息是否填写\n isLastAdEmpty(state, getters) {\n return (splitTestTab) => {\n if (splitTestTab >= state.ads.length) {\n return true;\n }\n const lastAd = getters.adByIndex(splitTestTab, state.ads[splitTestTab].length - 1) || {};\n return isAdEmpty(lastAd);\n };\n },\n // 不为空的ad列表\n fullfilledAds(state) {\n return (splitTestTab) => {\n if (splitTestTab >= state.ads.length) {\n return [];\n }\n return state.ads[splitTestTab].filter(ad => !isAdEmpty(ad));\n };\n },\n // 不为空的单图ad列表\n fullfilledImageAds(state, getters) {\n return splitTestTab => getters.fullfilledAds(splitTestTab).filter((ad) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return false;\n }\n const sourceTarget = ad[adSource] || {};\n const { adType = '' } = sourceTarget;\n return [SINGLE_IMAGE.value, CATALOGUE_IMAGE.value].includes(adType);\n });\n },\n fullfilledCarouselImageAds(state, getters) {\n return splitTestTab => getters.fullfilledAds(splitTestTab).filter((ad) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return false;\n }\n const sourceTarget = ad[adSource] || {};\n const { adType = '' } = sourceTarget;\n return [CAROUSEL_IMAGE.value].includes(adType);\n });\n },\n // 不为空的单视频ad列表\n fullfilledVideoAds(state, getters) {\n return splitTestTab => getters.fullfilledAds(splitTestTab).filter((ad) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return false;\n }\n const sourceTarget = ad[adSource] || {};\n const { adType = '' } = sourceTarget;\n return [SINGLE_VIDEO.value, CATALOGUE_VIDEO.value].includes(adType);\n });\n },\n /**\n * 获取某种类型不为空的 ad 列表\n * @param {Number} splitTestTab\n * @param {Array} targetAdTypeList adType 列表,不存在则代表全部\n * @param {Boolean} isQueryAdFormatData 是否是获取 ad 具体的创意数据\n */\n fullfilledAdsByType(state, getters) {\n return ({\n splitTestTab, targetAdTypeList, isQueryAdFormatData = false, checkAdEmptyStatus = false,\n }) => {\n const currentSplitTestAdList = checkAdEmptyStatus\n ? getters.fullfilledAds(splitTestTab)\n : state.ads[splitTestTab] || [];\n const adsFormat = [];\n const ads = currentSplitTestAdList.filter((ad) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) return false;\n const sourceTarget = ad[adSource] || {};\n const { adType = '' } = sourceTarget;\n const flag = !targetAdTypeList || targetAdTypeList.includes(adType);\n if (flag) adsFormat.push(sourceTarget[adType]);\n return flag;\n });\n return isQueryAdFormatData ? adsFormat : ads;\n };\n },\n // 是否创意填了有效视频素材\n isAdHasVideo(state, getters) {\n return (splitTestTab, index) => {\n if (splitTestTab >= state.ads.length) {\n return false;\n }\n const ad = getters.adByIndex(splitTestTab, index);\n const adType = getters.adTypeByIndex(splitTestTab, index);\n return (\n // 单视频创意需要不为空,DPA视频创意认为始终有视频素材\n (!isAdEmpty(ad) && adType === SINGLE_VIDEO.value) ||\n adType === CATALOGUE_VIDEO.value\n );\n };\n },\n // 是否创意填了有效图片素材\n isAdHasImage(state, getters) {\n return (splitTestTab, index) => {\n if (splitTestTab >= state.ads.length) {\n return false;\n }\n const ad = getters.adByIndex(splitTestTab, index);\n const adType = getters.adTypeByIndex(splitTestTab, index);\n\n // 单图/单视频/多图轮播创意不能为空\n const hasImage4NormalAd = !isAdEmpty(ad) &&\n (adType === SINGLE_IMAGE.value\n || adType === SINGLE_VIDEO.value\n || adType === CAROUSEL_IMAGE.value);\n const hasImage4DpaAd = adType === CATALOGUE_IMAGE.value || adType === CATALOGUE_VIDEO.value; // DPA创意认为始终有图片\n const isRealTimeLive = adType === REAL_TIME_LIVE.value; // 直投直播间\n return hasImage4NormalAd || hasImage4DpaAd || isRealTimeLive;\n };\n },\n // create new形式下,是否存在选中类型是单视频且上传了视频素材的\n hasFullfilledSingleVideo(state) {\n return (splitTestTab) => {\n if (splitTestTab >= state.ads.length) {\n return false;\n }\n\n return state.ads[splitTestTab].some((ad) => {\n const { adSource } = ad;\n // 只判断create new\n if (adSource !== CREATE_NEW.value) {\n return false;\n }\n const { adType } = ad[adSource];\n\n if (adType === AD_TYPE.SINGLE_VIDEO.value) {\n const { video_info } = ad[adSource][adType] || {};\n return !!video_info;\n }\n return false;\n });\n };\n },\n /**\n * Ad 是否是 Storefront 创意(PLP/PDP)\n */\n isAdSelectStorefrontCreative(state, getters) {\n return (splitTestTab, index) => getters.isPLPCreative(splitTestTab, index) || getters.isShopAdsCreative(splitTestTab, index);\n },\n /**\n * 是否PLP创意\n */\n isPLPCreative(state, getters) {\n return (splitTestTab, index) => {\n const adDetail = getters.adDetailByIndex(splitTestTab, index);\n return CREATIVE_TYPE.LYNX_PLP === adDetail.creative_type;\n };\n },\n /**\n * 是否ShopAds创意\n */\n isShopAdsCreative(state, getters) {\n return (splitTestTab, index) => {\n const adDetail = getters.adDetailByIndex(splitTestTab, index);\n return [CREATIVE_TYPE.SHOP_PDP, CREATIVE_TYPE.SHOP_PLP].includes(adDetail.creative_type);\n };\n },\n /**\n * 是否有创意签署了协议\n * lead ads 和 plp/pdp 需要签署协议\n */\n hasCreativeSigningProtocol(state, getters) {\n return () => state.ads.some((adsUnit, index) => {\n const adList = getters.fullfilledAdsByType({\n splitTestTab: index,\n isQueryAdFormatData: true,\n checkAdEmptyStatus: true,\n });\n return adList.some(ad => ad.isSignProtocol);\n });\n },\n /** -------------------------------- 版位相关 start ------------------------------------------------ */\n allApps(state) {\n return state.appTypes.includes(INVENTORY_FLOW.ALL);\n },\n // TODO: 这些代码与src/mixins/ad-group/inventoryFlowMixin重复了,合并到一起\n hasTopbuzz(state, getters) {\n return (\n getters.allApps || state.appTypes.includes(INVENTORY_FLOW.TOPBUZZ)\n );\n },\n // TopbuzzOnly(state) {\n // const onlyOneAppSelected = state.appTypes.length === 1;\n // const TopbuzzSelected = state.appTypes.includes(INVENTORY_FLOW.TOPBUZZ);\n // return onlyOneAppSelected && TopbuzzSelected;\n // },\n isOnlyTopBuzz(state) {\n return (\n state.appTypes.length === 1 &&\n state.appTypes[0] === INVENTORY_FLOW.TOPBUZZ\n );\n },\n hasTiktok(state, getters) {\n return (\n getters.allApps || state.appTypes.includes(INVENTORY_FLOW.TIKTOK)\n );\n },\n hasVigo(state, getters) {\n return getters.inventoryFlowKeys.includes(INVENTORY_FLOW.VIGO);\n },\n hasTiktokAdNetwork(state, getters) {\n return (\n (getters.allApps ||\n state.appTypes.includes(INVENTORY_FLOW.TIKTOKADNETWORK))\n );\n },\n hasHelo(state, getters) {\n return (getters.allApps || state.appTypes.includes(INVENTORY_FLOW.HELO));\n },\n enableImage(state, getters) {\n return getters.hasTopbuzz ||\n getters.hasVigo ||\n getters.hasHelo ||\n (isSupportPangleImage(getters.isDpa) && getters.hasTiktokAdNetwork);\n },\n // 是否支持多图轮播\n enableCarouselImage(state, getters, rootState, rootGetter) {\n // 仅app install 并且 仅选择了TBBV的支持轮播\n const objectiveType = _.get(rootState, 'campaign.adgroup.objective_type');\n // const adGroupCountries = _.get(rootState, 'campaign.adgroup.country');\n // Objective 一期支持的目标\n const isObjectEnable_v1 = CAROUSEL_ENABLE_OBJECTIVE_LIST_V1.includes(objectiveType);\n // Objective 二期支持的目标\n const isObjectEnable_v2 = CAROUSEL_ENABLE_OBJECTIVE_LIST_V2.includes(objectiveType);\n // 是否展示v1\n const isEnable_v1 = isObjectEnable_v1 && isCarouselImageCreativeAllowed_v1();\n // 是否展示v2\n const isEnable_v2 = isObjectEnable_v2 && isCarouselImageCreativeAllowed_v2();\n const isEnable = isEnable_v1 || isEnable_v2;\n // 多图轮播可投国家与adGroup选择的国家取交集, 有交集说明选择了可投国家\n // 待创意层级数据规范后回到这里\n // const hasAllowedCountry = _.intersection(CAROUSEL_IMAGE_CREATIVE_ALLOWED_COUNTRIES, adGroupCountries).length > 0;\n\n // 支持轮播条件(同时满足):\n // 1. 版位包含TBBV\n // 2. Objective 为 CAROUSEL_ENABLE_OBJECTIVE_LIST 中的版位(AppInstall、 Conversion、Traffic)\n // 3. 包含允许的投放国家\n // 4. 白名单\n return getters.hasTopbuzz\n // && hasAllowedCountry\n && isEnable;\n },\n inventoryFlows(state, getters) {\n const keys = Object.keys(INVENTORY_FLOW_MAP);\n\n const result = [];\n if (getters.allApps) {\n keys.forEach((item) => {\n const { key } = INVENTORY_FLOW_MAP[item];\n if (\n key !== INVENTORY_FLOW.ALL &&\n (isVigoWhite() || key !== INVENTORY_FLOW.VIGO) // vigo有白名单限制\n ) {\n result.push(INVENTORY_FLOW_MAP[item]);\n }\n });\n } else {\n keys.forEach((item) => {\n if (state.appTypes.includes(INVENTORY_FLOW_MAP[item].key)) {\n result.push(INVENTORY_FLOW_MAP[item]);\n }\n });\n }\n return result.filter(item => item.key !== INVENTORY_FLOW.VIGO && item.key !== INVENTORY_FLOW.HELO);\n },\n inventoryFlowKeys(state, getters) {\n return getters.inventoryFlows.map(option => option.key);\n },\n // identity是否可用\n isIdentityAvailable(state) {\n return [identityAvailableStatus.Available, identityAvailableStatus.NOT_IDENTITY].includes(state.identityAuthorizationState);\n },\n isShopAvailable(state) { // shop有权限\n return [shopStateMap.available].includes(state.shopAuthorizationState);\n },\n /** -------------------------------- 版位相关 end ------------------------------------------------ */\n isCatalogVideo(state, getters) {\n return (splitTestTab, index) => {\n const adType = getters.adTypeByIndex(splitTestTab, index);\n return adType === CATALOGUE_VIDEO.value;\n };\n },\n isCatalogImage(state, getters) {\n return (splitTestTab, index) => {\n const adType = getters.adTypeByIndex(splitTestTab, index);\n return adType === CATALOGUE_IMAGE.value;\n };\n },\n // 是否存在某个shop创意有不可用商品\n isShopAdsHasUnavailablePrd(state, getters) {\n if (!getters.isShop) {\n return false;\n }\n const ads = state.ads?.[0]?.map((ad, index) => getters.adDetailByIndex(0, index)) || [];\n const isShopHasUnavailablePrd = ads.some(ad => !!(ad.isShopHasUnavailablePrd));\n return isShopHasUnavailablePrd;\n },\n};\n","import _ from 'lodash';\nimport {\n AD_TYPE,\n NORMAL_AD_SOURCES,\n NORMAL_AD_SOURCES_REVERSE_MAP,\n DPA_WORD_PATTERN_LEFT,\n DPA_WORD_PATTERN_RIGHT,\n CAROUSEL_IMAGE_MODE,\n CARD_ADDITIONAL_CREATIVE_TYPE,\n identityTypeMap,\n identityAvailableStatus,\n CREATIVE_TYPE,\n NATIVE_AD_ACTION_TYPE,\n imageMode,\n nativeAdIdentityTypes,\n bcIdentityTypesList,\n DARK_POST_STATUS_MAP,\n} from 'src/const/state/creative';\n\nimport { DPA_VIDEO_DISPLAY_MODE_TYPE } from 'src/const/state/ad';\nimport { Scenario } from 'src/const/state/shop';\nimport uuidv4 from 'uuid/v4';\nimport { addIdentity, getIdentityInfo, getIdentityStatus } from 'src/service/index';\nimport { isCreativeHasIdentityWhite } from 'src/const/whiteList';\nimport { canEdit, getEditAidOrCid } from 'src/utils/authUtil';\nimport State, { TEMPLATE } from './state';\n\nconst { BC_AUTH_TT } = identityTypeMap;\n\nconst {\n SINGLE_IMAGE, SINGLE_VIDEO, CATALOGUE_VIDEO, CATALOGUE_IMAGE, CAROUSEL_IMAGE, REAL_TIME_LIVE,\n} = AD_TYPE;\nconst { CREATE_NEW, NATIVE_VIDEO } = NORMAL_AD_SOURCES;\nconst {\n Available,\n NO_DATA, NOT_IDENTITY, IS_PRIVATE_POST,\n USER_NO_PRIVILEGE, BC_UN_BIND_ACCOUNT, BC_NO_VIDEO_RIGHT, BC_NO_VALID_BIND_ACCOUNT, BC_NO_LIVE_RIGHT,\n} = identityAvailableStatus;\n\n// 提交给后端的标题中,要求的动态词包格式和前端展示的不同,提交前需要转换一次,是transformTitle4Frontend的逆过程\n// [品类]普通文案 => {$品类$}普通文案\nexport const transformTitle4Backend = (title = '', dpaWordList = [], selectedWordId = []) => {\n let transformedTitle = title.trim();\n // 根据词包id找到词包配置\n const selectedWordList = selectedWordId.reduce((result, wordId) => {\n const word = dpaWordList.find(item => item.lexiconID === wordId);\n return word ? result.concat(word) : result;\n }, []);\n // 针对每个用到的词包进行替换\n selectedWordList.forEach((word) => {\n transformedTitle = transformedTitle.replace(\n `${ DPA_WORD_PATTERN_LEFT }${ word.name }${ DPA_WORD_PATTERN_RIGHT }`,\n `{$${ word.name }$}`,\n );\n });\n return transformedTitle;\n};\n\nexport const isValidAdSource = adSource => !!NORMAL_AD_SOURCES_REVERSE_MAP[adSource];\n\n// 模板\nexport const getAdTemplateByType = (adSource, adType) => {\n const result = _.cloneDeep(TEMPLATE);\n result.adSource = adSource;\n if (result.adSource) {\n result[adSource].adType = adType;\n }\n return result;\n};\n\n// 根据素材信息推算adType\nexport const getAdTypeByDetail = (adDetail) => {\n const keyCount = obj => Object.keys(obj).length;\n\n // 原生广告也有可能出现 video_info为空的情况 所以这里要 前置判断\n // 原生广告 通过native_source 来判断adType\n if (adDetail.native_source === NATIVE_VIDEO.value || nativeAdIdentityTypes.includes(adDetail.identity_type)) {\n return adDetail.creative_type === CREATIVE_TYPE.SHOP_LIVE_REAL_TIME ? REAL_TIME_LIVE.value : SINGLE_VIDEO.value;\n }\n if (!adDetail || (!adDetail.video_info && !adDetail.image_info)) {\n return SINGLE_VIDEO.value;\n }\n const carouselImageModeList = Object.values(CAROUSEL_IMAGE_MODE);\n const isCarouselImageCreative = carouselImageModeList.includes(+adDetail.image_mode);\n if (isCarouselImageCreative) {\n return CAROUSEL_IMAGE.value;\n }\n\n const isDpaImgMode = adDetail.image_mode === imageMode.IMAGE_I18N_SQUARE;\n if (adDetail.taskId) return SINGLE_VIDEO.value;\n if (adDetail.video_info) {\n // 目录视频创意的video_info是空对象\n // 目录图片创意的image_info是空对象\n if (keyCount(adDetail.video_info)) {\n return SINGLE_VIDEO.value;\n }\n if (isDpaImgMode) {\n return CATALOGUE_IMAGE.value;\n }\n return CATALOGUE_VIDEO.value;\n }\n if (adDetail.image_info && adDetail.image_info.length === 1) {\n return SINGLE_IMAGE.value;\n }\n return '';\n};\n\n// 根据素材信息推算adSource\nexport const getAdSourceByDetail = (adDetail) => {\n const { native_source, identity_type } = adDetail || {};\n const isNative = (native_source === NATIVE_VIDEO.value) || nativeAdIdentityTypes.includes(identity_type);\n return isNative ? NATIVE_VIDEO.value : CREATE_NEW.value;\n};\nconst exchangeCarouselImageAdDetail = (adDetail) => {\n const {\n image_mode, titles = [], image_material_ids = [], external_urls = [], external_url_material_ids = [],\n } = adDetail;\n adDetail.image_info = adDetail.image_info.map((image, index) => {\n const { web_uri } = image;\n const origin = web_uri;\n const title = titles[index] || image.title || '';\n const externalUrl = external_urls[index] || image.externalUrl || '';\n const uuid = uuidv4();\n const materialIds = [image_material_ids[index], external_url_material_ids[index]];\n const restProp = {\n origin, title, [image_mode]: origin, uuid, materialIds, externalUrl,\n };\n return Object.assign({}, image, restProp);\n });\n};\n// 将adDetail转为ad\nexport const transformDetail2Ad = (adDetail) => {\n const adSource = getAdSourceByDetail(adDetail);\n const adType = getAdTypeByDetail(adDetail);\n const { CAROUSEL_IMAGE } = AD_TYPE;\n if (adType === CAROUSEL_IMAGE.value) {\n exchangeCarouselImageAdDetail(adDetail);\n }\n const { format_structure = CARD_ADDITIONAL_CREATIVE_TYPE.CUSTOMIZED.value } = adDetail;\n const ad = _.cloneDeep(TEMPLATE);\n ad.adSource = adSource;\n if (adType && ad[adSource][adType]) {\n // 已有具体素材时,回填对应的adDetail中\n ad[adSource][adType] = {\n ...ad[adSource][adType],\n ..._.cloneDeep(adDetail),\n format_structure,\n };\n ad[adSource].adType = adType;\n }\n return ad;\n};\n\n// 判断一个ad是否还没有设置关键素材,即是“空的”\nexport const isAdEmpty = (ad = {}) => {\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return true;\n }\n\n const isSourceTargetEmpty = (sourceTarget) => {\n const { adType } = sourceTarget;\n if (!adType) {\n return true;\n }\n // 如果当前是直投直播间,则直接判断为非空\n if (adType === REAL_TIME_LIVE.value) {\n return false;\n }\n\n return Object.keys(sourceTarget)\n .filter(key => key !== 'adType')\n .every((key) => { // 使用every确保每种类型下都是空的\n const adType = +key; // to int\n const adDetail = sourceTarget[adType] || {};\n\n // 单图\\多图轮播、单视频判断图片、视频是否空的\n if (adType === SINGLE_IMAGE.value\n || adType === SINGLE_VIDEO.value\n || adType === CAROUSEL_IMAGE.value) {\n return !adDetail.image_info && !adDetail.video_info;\n }\n // 商品库图片、商品库视频,由于没有图片、视频,转为判断其他素材是否都是空的\n if (adType === CATALOGUE_IMAGE.value || adType === CATALOGUE_VIDEO.value) {\n return !adDetail.title; // creative_name在勾选自动生成时非必填,call_to_action在品牌竞价中非必填\n }\n // 由于当前不是直投直播间,直投直播间创意没有video_info, 所以应该直接判断为空,避免影响其他adtype的判断\n if (adType === REAL_TIME_LIVE.value) {\n return true;\n }\n return false;\n });\n };\n\n return Object.keys(ad)\n .filter(key => key !== 'adSource')\n .every((key) => { // 使用every确保每种source下都是空的\n const sourceTarget = ad[key];\n return isSourceTargetEmpty(sourceTarget);\n });\n};\n\n/**\n * 对存量数据的处理:\n * adDetail 没有identity_id 说明是历史数据 将identityAuthorizationState设为-3 表示没有拿到identity数据 这是为了在页面顶部显示alert warning\n * 对于普通ad的处理:为用户自动创建一个identity假账号 并回填创建完成之后的相关信息 用户不用任何操作\n * 对于原生ad的处理:默认不回显填充identity,不自动创建账号,需要用户手动选择\n * 对于程序化创意的处理:为用户自动创建一个identity假账号 并回填创建完成之后的相关信息 用户不用任何操作\n */\nexport const setHistoryIdentityData = async (adDetail) => {\n // 没有app_name、source 说明为下沉前数据 删除identity相关字段\n const isCreativeAccount = adDetail.app_name || adDetail.source;\n if (!isCreativeAccount || !canEdit()) {\n delete adDetail.identity_id;\n delete adDetail.identity_type;\n delete adDetail.identity_data;\n return { adDetail };\n }\n\n const availableStatus = NOT_IDENTITY;\n const isNativeAd = adDetail.native_source && (adDetail.native_source === NATIVE_VIDEO.value);\n if (isNativeAd) {\n adDetail.identity_data = {\n identity_type: identityTypeMap.AUTH_CODE_USER,\n };\n return {\n adDetail,\n availableStatus,\n };\n }\n const params = {\n identity_type: identityTypeMap.FAKE_USER,\n profile_image: adDetail.avatar_icon?.web_uri || '',\n display_name: adDetail.app_name || adDetail.source,\n };\n const res = await addIdentity(params);\n if (res && res.code === 0) {\n const { identity_id = '', identity_type = 0 } = res.data?.identity_info;\n adDetail.identity_id = identity_id;\n adDetail.identity_type = identity_type;\n adDetail.identity_data = res.data.identity_info;\n // Vue.prototype.$tea.trackEvent('add_fake_identity_success');\n } else {\n adDetail.identity_id = '';\n adDetail.identity_type = identityTypeMap.FAKE_USER;\n adDetail.identity_data = {\n identity_type: identityTypeMap.FAKE_USER,\n };\n }\n return {\n adDetail,\n availableStatus,\n };\n};\n\n// 复制ad group时对创意的identity数据做权限处理\nexport const setIdentityDataList = async (list, isShop) => {\n const newList = _.cloneDeep(list);\n for (let i = 0, len = newList.length; i < len; i++) {\n // eslint-disable-next-line\n const { adDetail = {} } = await setIdentityData(newList[i], false, isShop);\n newList[i] = adDetail;\n }\n return newList;\n};\n\nasync function setShopAdsIdentityData(data, isEdit = false) {\n let availableStatus = 0;\n const {\n identity_id, identity_type, identity_bc_id, external_type,\n } = data;\n const params = {\n identity_id,\n identity_type,\n };\n // 只有bc授权账号才需要传identity_bc_id\n if (bcIdentityTypesList.includes(identity_type)) {\n params.identity_bc_id = identity_bc_id || '';\n }\n const resp = await getIdentityInfo(params);\n // 为空有三种场景:已解绑 被封号 当前user没有该identity权限\n if (_.isEmpty(resp)) {\n // 若是bc账号,则一定是解绑状态(不需要判断是否是当前user)\n if (bcIdentityTypesList.includes(identity_type)) {\n return {\n available_status: BC_UN_BIND_ACCOUNT,\n };\n }\n const status = await getIdentityStatus(params);\n // 若获取不到identityInfo,则获取identity的status。若等于-1,代表已解绑或被封号;否则代表当前user没有该identity权限\n // 若status是已解绑 被封号,则直接返回状态。否则,如果是编辑场景,就用附身参数请求identity数据进行返回\n if (status === NO_DATA) {\n return {\n available_status: NO_DATA,\n };\n }\n // 证明是当前user没有该identity权限,若不是编辑场景,则返回USER_NO_PRIVILEGE\n if (!isEdit) {\n return {\n available_status: USER_NO_PRIVILEGE,\n };\n }\n // 若是编辑场景,params中追加attach_aid / attach_cid,以保证能正常回显\n const attachId = getEditAidOrCid() || {}; // 先去除\n const respByAttachUser = await getIdentityInfo({\n ...params,\n ...attachId,\n });\n return {\n ...respByAttachUser,\n available_status: USER_NO_PRIVILEGE,\n };\n }\n const { available_status = 0, can_use_video_list = true, can_use_live_list = true } = resp || {};\n const isAvailableStatus = available_status === Available;\n\n /**\n * BC权限处理\n * 1. availableStatus = 0,需要判断是否有获取视频权限,若没有,则需要视为不可用,availableStatus为前端自定义标识 BC_NO_VIDEO_RIGHT\n * 2. availableStatus = -4,表示该账号因为其他原因导致为不可使用,为了区分于TTBA账号的状态,availableStatus为前端自定义标识 BC_NO_VALID_BIND_ACCOUNT\n */\n // 为bc授权账号 且没有获取视频权限\n const isBCIdentity = data.identity_type === BC_AUTH_TT;\n const bcIdentityPreCond = isBCIdentity && isAvailableStatus;\n const isLiveShopping = external_type && external_type === Scenario.Live || State.isShopAdLiveScenario;\n const isVideoShopping = !isLiveShopping;\n const canBcIdentityUseVideo = bcIdentityPreCond && can_use_video_list;\n const canBcIdentityUseLive = bcIdentityPreCond && can_use_live_list;\n if (isBCIdentity) {\n switch (available_status) {\n case Available:\n if (isVideoShopping && !canBcIdentityUseVideo) {\n availableStatus = BC_NO_VIDEO_RIGHT;\n } else if (isLiveShopping && !canBcIdentityUseLive) {\n availableStatus = BC_NO_LIVE_RIGHT;\n } else {\n availableStatus = Available;\n }\n break;\n case USER_NO_PRIVILEGE:\n availableStatus = BC_NO_VALID_BIND_ACCOUNT;\n break;\n default:\n availableStatus = available_status;\n break;\n }\n } else {\n availableStatus = available_status;\n }\n\n resp.available_status = availableStatus;\n\n return resp;\n}\n\n// 判断creative的identity账号权限\nasync function getIdentityPermissionInfo(data, isEdit, isShop) {\n const adDetail = _.cloneDeep(data);\n let availableStatus = 0;\n const { creative_type } = adDetail;\n const params = {\n identity_id: adDetail.identity_id,\n identity_type: adDetail.identity_type,\n };\n\n // 只有bc授权账号才需要传identity_bc_id\n if (bcIdentityTypesList.includes(adDetail.identity_type)) {\n params.identity_bc_id = adDetail.identity_bc_id || '';\n }\n\n const resp = await getIdentityInfo(params);\n // 为空有三种场景:已解绑 被封号 当前user没有该identity权限\n if (_.isEmpty(resp)) {\n const status = bcIdentityTypesList.includes(adDetail.identity_type) ? BC_UN_BIND_ACCOUNT : NO_DATA;\n adDetail.identity_data.identity_id = '';\n availableStatus = status;\n } else {\n const { available_status = 0, can_use_video_list = true, can_use_live_list = true } = resp || {};\n adDetail.identity_data = resp;\n const isAvailableStatus = available_status === Available;\n\n /**\n * BC权限处理\n * 1. availableStatus = 0,需要判断是否有获取视频权限,若没有,则需要视为不可用,availableStatus为前端自定义标识 BC_NO_VIDEO_RIGHT\n * 2. availableStatus = -4,表示该账号因为其他原因导致为不可使用,为了区分于TTBA账号的状态,availableStatus为前端自定义标识 BC_NO_VALID_BIND_ACCOUNT\n */\n // 为bc授权账号 且没有获取视频权限\n const isBCIdentity = adDetail.identity_type === BC_AUTH_TT;\n const isNoVideoPowerForBcIdentity = isBCIdentity && isAvailableStatus && !can_use_video_list;\n const bcIdentityPreCond = isBCIdentity && isAvailableStatus;\n const canBcIdentityUseLive = bcIdentityPreCond && can_use_live_list;\n if (isBCIdentity) {\n switch (available_status) {\n case Available:\n availableStatus = isNoVideoPowerForBcIdentity ? BC_NO_VIDEO_RIGHT : available_status;\n /*\n identity bc使用real time live需要live权限,\n 使用 live video 需要live和video权限,因为需要拉取post视频\n */\n if (State.isShopAdLiveScenario && !canBcIdentityUseLive) { // live场景没有live权限\n availableStatus = BC_NO_LIVE_RIGHT;\n } else if (State.isShopAdLiveScenario && creative_type === CREATIVE_TYPE.SHOP_LIVE_VIDEO && !can_use_video_list) {\n availableStatus = BC_NO_LIVE_RIGHT; // standard video没有video权限\n } else if (State.isShopAdLiveScenario) {\n /*\n 能进入这个判断说明\n 1.有live权限,有video权限(权限都具备,不关注是那种creative type)\n 2.real live 有live权限\n */\n availableStatus = Available;\n }\n break;\n case USER_NO_PRIVILEGE:\n availableStatus = BC_NO_VALID_BIND_ACCOUNT;\n break;\n default:\n availableStatus = available_status;\n break;\n }\n } else {\n availableStatus = available_status;\n }\n // 当前identity账号可用 post不可用 可能视频设为隐私/下架 (直投直播间没有video_info,排除)\n const isNoVideoInfo = isAvailableStatus && (!adDetail.video_info || _.isEmpty(adDetail.video_info));\n const isRealTimeLive = adDetail.creative_type === CREATIVE_TYPE.SHOP_LIVE_REAL_TIME;\n const isBCAvailableStatus = !isBCIdentity || (isBCIdentity && can_use_video_list);\n if (isNoVideoInfo && !isRealTimeLive && isBCAvailableStatus) {\n availableStatus = IS_PRIVATE_POST;\n } else if (!isShop && (!isAvailableStatus || isNoVideoPowerForBcIdentity)) {\n // shop的identity展示依赖adDetail.identity_data,清空的话无法回显示\n // 若账号不是可用状态 需要提示原因 并引导重新选择\n // adDetail.identity_id = '';\n adDetail.identity_data.identity_id = '';\n if (!isEdit) {\n adDetail.identity_id = '';\n adDetail.identity_data = {\n identity_type: adDetail.identity_type,\n };\n }\n }\n }\n\n return {\n adDetail,\n availableStatus,\n };\n}\n\n// 对创意的identity数据做权限处理\nexport const setIdentityData = async (data, isEdit, isShop = false, isCallByShopAds = false) => {\n if (isShop && isCallByShopAds) {\n return setShopAdsIdentityData(data, isEdit);\n }\n let adDetail = _.cloneDeep(data);\n let availableStatus = 0;\n /**\n * 对于增量数据的处理:\n * 处理账号权限 这里只处理两种identity类型\n * 1. TTBA类型的identity(identity_type = 3):编辑创意时首先判断identity账号的授权状态 如果授权发生变化 在页面显示相应的横幅提示\n * 2. bc授权绑定的identity(identity_type = 5):\n */\n if (adDetail.identity_id) {\n const isTTBAIdentityNativeAd = adDetail.identity_type && adDetail.identity_type === identityTypeMap.TT_USER;\n const isBCAuthIdentityNativeAd = adDetail.identity_type && adDetail.identity_type === identityTypeMap.BC_AUTH_TT;\n\n const isShowCheckPermission = isTTBAIdentityNativeAd || isBCAuthIdentityNativeAd;\n\n if (isShowCheckPermission) {\n const { adDetail: newAdDetail, availableStatus: status } = await getIdentityPermissionInfo(adDetail, isEdit, isShop);\n adDetail = newAdDetail || {};\n availableStatus = status;\n }\n return {\n adDetail,\n availableStatus,\n };\n }\n // 处理存量数据\n const historyDetail = await setHistoryIdentityData(adDetail);\n return historyDetail;\n};\n\n\n// eslint-disable-next-line max-lines-per-function\nexport const fillCreativeInfo = (item) => {\n const isNativeAd = Object.values(NATIVE_AD_ACTION_TYPE).includes(item.item_source);\n const [native_source, nativeAdActionType] = isNativeAd\n ? [NATIVE_VIDEO.value, item.item_source]\n : [CREATE_NEW.value, undefined];\n const newItem = {\n // 看下这里能把item整个深拷贝给newitem吗,这里创意复制每次新增字段都得来改一遍,艾特帅东@黄晓东\n image_material_ids: item.image_material_ids || [],\n external_url_material_ids: item.external_url_material_ids || [],\n external_urls: item.external_urls || [],\n video_tpl_name: item.video_tpl_name || '',\n video_display_mode: item.video_display_mode || DPA_VIDEO_DISPLAY_MODE_TYPE.AUTO,\n titles: item.titles,\n call_to_action: item.call_to_action,\n title: item.title,\n app_name: item.app_name,\n source: item.source || '',\n dpa_open_url_type: item.dpa_open_url_type || 0,\n params_type: item.params_type || 0,\n fallback_type: item.fallback_type || 0,\n open_url: item.open_url,\n external_url: item.external_url || '',\n struct_version: item.struct_version,\n is_open_url: item.is_open_url,\n auto_open: item.auto_open,\n avatar_icon: item.avatar_icon,\n action_track_url: item.action_track_url,\n track_url: item.track_url,\n creative_name: item.creative_name,\n image_info: item.image_info || [],\n image_mode: item.image_mode,\n autoCreativeName: !item.creative_name,\n dpa_word_set: item.dpa_word_set || [],\n native_source,\n nativeAdActionType,\n aweme_item_id: item.aweme_item_id, // 后端接口需要,前端展示不用\n vast_moat: item.vast_moat || 0,\n vast_double_verify: item.vast_double_verify || 0,\n vast_ias: item.vast_ias || false,\n vast_url: item.vast_url || '',\n is_creative_authorized: !!item.is_creative_authorized, // 创意素材授权\n advanced_creative_type: item.advanced_creative_type,\n call_to_action_id: item.call_to_action_id, // CTA 优选集合ID\n creative_type: item.creative_type, // 创意类型,用于判断是否是 PLP/PDP 创意\n format_structure: item.format_structure, // 附加创意类型 0-自定义 1-collection ads\n card_id: item.card_id || item.gesture_id || item.painted_egg_id, // 附加创意卡片id\n page_id: item.page_id, // 附加创意page id\n brand_safety_postbid_partner: item.brand_safety_postbid_partner,\n brand_safety_vast_url: item.brand_safety_vast_url,\n domain: item.domain,\n\n disclaimer_type: item.disclaimer_type,\n disclaimer_text: item.disclaimer_text,\n disclaimer_clickable_texts: item.disclaimer_clickable_texts,\n rf_creative_id: item.creative_id ?? '',\n spu_id: item.spu_id,\n spu_list: item.spu_list || [],\n product_set_id: item.product_set_id,\n product_selection_type: item.product_selection_type,\n // 新增暗投模式复制;\n dark_post_status: item.dark_post_status,\n bc_restrict_delivery: item.bc_restrict_delivery,\n is_use_product_anchor: item.is_use_product_anchor || false, // shop是否使用锚点投放\n };\n\n if (item.item_source === NATIVE_VIDEO.value) {\n newItem.with_promotional_music = item.with_promotional_music !== false; // 是否打开推广音乐开关\n newItem.item_duet_disabled = item.item_duet_disabled || 0; // 是否开启合拍\n newItem.item_stitch_disabled = item.item_stitch_disabled || 0; // 是否开启跟拍\n }\n\n newItem.video_info = item.video_info;\n // 电商锚点需求,将anchors字段放入video_info中,复制adGroup场景下的数据回填的数据格式和新建保持一致\n if (!_.isEmpty(item.anchors)) {\n _.set(newItem, 'video_info.anchors', item.anchors);\n }\n // 帖子头像\n if (item.video_info) {\n newItem.video_info.avatar_icon = item.avatar_icon || {};\n }\n\n // identity结构白名单的创意 有identity相关属性\n // 全量之后 这部分可在上面newItem对象中直接赋值\n if (isCreativeHasIdentityWhite()) {\n newItem.identity_type = item.identity_type || 0;\n newItem.identity_id = item.identity_id || '';\n newItem.identity_data = {\n avatar_icon: item.identity_id ? item.avatar_icon : {},\n display_name: item.identity_id ? (item.source || item.app_name) : '',\n identity_type: item.identity_type || 0,\n identity_id: item.identity_id || '',\n };\n if (bcIdentityTypesList.includes(item.identity_type)) {\n newItem.identity_bc_id = item.identity_bc_id || '';\n newItem.identity_data.identity_bc_id = item.identity_bc_id || '';\n }\n }\n\n /**\n * DPA创意: image_info固定是[],没有video_info字段\n * 单图创意:image_info包含具体图片信息,没有video_info字段\n * 单视频创意:video_info和image_info都不为空\n */\n if (Array.isArray(newItem.image_info) && newItem.image_info.length === 0) {\n newItem.video_info = item.video_info || {};\n // 判断原生广告是否有视频信息\n const hasVideoInfo = Object.keys(newItem.video_info).length;\n if (item.item_source === NATIVE_VIDEO.value && !hasVideoInfo) {\n delete newItem.image_info;\n delete newItem.video_info;\n }\n }\n // Collection Ads 清掉 page id 都走新建\n // if (newItem.creative_type === CATALOG_CREATIVE_TYPE.LYNX_PLP) {\n // newItem.page_id = '';\n // }\n\n /** 原生推视频不允许复制, 需清空素材重新选择 */\n const isTTBAPushVideoNativeAd =\n newItem.identity_type === identityTypeMap.TT_USER &&\n newItem.nativeAdActionType === NATIVE_AD_ACTION_TYPE.PUSH_VIDEO_TO_TTBA;\n\n if (isTTBAPushVideoNativeAd) {\n delete newItem.video_info;\n delete newItem.image_info;\n newItem.image_mode = imageMode.VIDEO_TYPE_3;\n newItem.dark_post_status = DARK_POST_STATUS_MAP.OFF;\n newItem.bc_restrict_delivery = false;\n }\n\n return newItem;\n};\n","import _ from 'lodash';\nimport * as types from 'src/store/types';\nimport { NORMAL_AD_SOURCES, VIDEO_ASYNC_RENDER_FILL_ACTION_TYPE, AD_TYPE } from 'src/const/state/creative';\nimport { INIT_ADS, SPLIT_TEST_UNIT } from './state';\nimport { transformDetail2Ad, isValidAdSource } from './helpers';\n\nexport default {\n [types.SET_CREATIVE_PREVIEW_INDEX](state, data) {\n state.creativePreviewIndex = data;\n },\n [types.SET_SHA1_KEY](state, data) {\n state.sha1Key = data;\n },\n [types.SET_CREATIVE_DOMAIN](state, data) {\n state.domainCancelToken = data;\n },\n [types.SET_APP_TYPES](state, data) {\n if (Array.isArray(data)) {\n state.appTypes = data;\n } else {\n state.appTypes = [data * 1000];\n }\n },\n [types.SET_SELECTED_FORM](state, { splitTestTab, data }) {\n if (splitTestTab === 1) {\n state.selectedFormObjectOppo = data;\n } else {\n state.selectedFormObject = data;\n }\n },\n // 重置整体ads数组\n // TODO: 这里应该清空所有creative/create 的vuex数据,避免第二次新建还使用上一次的vuex数据\n [types.RESET_ADS](state) {\n state.ads = _.cloneDeep(INIT_ADS);\n state.activeSplitTestTab = 0;\n state.appInfo = {}; // FIXED: 重置时清空,否则创建完app类型的创意,在创建website创意,会回显click_url\n },\n [types.SET_IS_NEW_STRUCTURE](state, data) {\n state.isNewStructure = data;\n },\n // vue监听不到数组的变化, 为了兼容split test场景\n [types.SET_EXTERNAL_URL_DOMAIN](state, data) {\n Vue.set(state.externalUrlDomain[data.splitTestTab], data.index, data.domain);\n },\n // 设置整体ads数组\n [types.SET_ADS](state, ads) {\n state.ads = _.cloneDeep(ads || INIT_ADS);\n state.activeSplitTestTab = 0;\n },\n // 添加一个split test对照组\n [types.ADD_SPLIT_TEST_UNIT](state) {\n state.ads.push(_.cloneDeep(SPLIT_TEST_UNIT));\n },\n // 切换对照组\n [types.UPDATE_SPLIT_TEST_TAB](state, tabIndex) {\n state.activeSplitTestTab = tabIndex || 0;\n },\n // 映射所有ad的call to action\n [types.TRANSFORM_ALL_AD_CTA](state, transformer = cta => cta) {\n const handleSourceTarget = (sourceTarget) => {\n // ad内包含多种形式的素材,单图、单视频、商品库图片、商品库视频,每种形式的cta都改掉\n Object.keys(sourceTarget)\n .filter(key => key !== 'adType')\n .forEach((key) => {\n const adDetail = sourceTarget[key];\n adDetail.call_to_action = transformer(adDetail.call_to_action, adDetail.call_to_action_type);\n });\n };\n\n // 处理每个实验对照组\n const handleAdsUnit = (adsUnit) => {\n adsUnit.forEach((ad) => {\n Object.keys(ad)\n .filter(key => key !== 'adSource')\n .forEach((key) => { // 每种ad source都改掉\n handleSourceTarget(ad[key]);\n });\n });\n };\n\n const transformed = _.cloneDeep(state.ads);\n transformed.forEach(handleAdsUnit);\n state.ads = transformed;\n },\n // 利用detail列表设置ads数组\n [types.SET_ADS_BY_DETAIL](state, adDetailList = []) {\n if (!adDetailList.length) {\n state.ads = _.cloneDeep(INIT_ADS);\n return;\n }\n\n const adsUnit = _.cloneDeep(adDetailList)\n .map((adDetail) => {\n const cta = adDetail.call_to_action;\n adDetail.enableUrl = Boolean(adDetail.external_url) || Boolean(adDetail.page_id);\n adDetail.call_to_action = (cta === 'view' || cta === 'download') ? 'learn_more' : cta; // 兼容旧创意的cta\n return adDetail;\n }).map(transformDetail2Ad); // adDetail => ad\n state.ads = [adsUnit]; // 只有一个对照组\n },\n // 利用detail列表设置ads数组\n // 这个方法与↑ 上面的方法作用一样,但是上面的方法在用于设置split test时有问题,所以这里写了一个适用于split test的方法\n [types.SET_ADS_BY_INDEX](state, { creativeDataList = [], splitTestTab = 0 }) {\n if (!creativeDataList.length) return;\n\n const newAds = _.cloneDeep(state.ads || []);\n const adsUnit = _.cloneDeep(creativeDataList)\n .map((ad) => {\n const cta = ad.call_to_action;\n ad.enableUrl = Boolean(ad.external_url) || Boolean(ad.page_id);\n ad.call_to_action = (cta === 'view' || cta === 'download') ? 'learn_more' : cta; // 兼容旧创意的cta\n return ad;\n }).map(transformDetail2Ad);\n\n newAds[splitTestTab] = adsUnit;\n state.ads = newAds;\n },\n // 添加一个ad,可能已有具体素材,也可能还是空的\n [types.ADD_AD](state, { splitTestTab, ad }) {\n state.ads[splitTestTab].push(_.cloneDeep(ad));\n },\n // 添加一个ad,可能已有具体素材,也可能还是空的\n [types.SET_APPINFO](state, data) {\n state.appInfo = data;\n },\n // 根据detail信息来添加一个ad\n [types.ADD_AD_BY_DETAIL](state, { splitTestTab, adDetail = {} }) {\n const ad = transformDetail2Ad(adDetail);\n state.ads[splitTestTab].push(ad);\n },\n // 添加一个ad,可能已有具体素材,也可能还是空的\n [types.UPDATE_AD](state, { splitTestTab, ad, index }) {\n state.ads[splitTestTab].splice(index, 1, _.cloneDeep(ad));\n },\n [types.UPDATE_AD_SOURCE](state, { splitTestTab, adSource = NORMAL_AD_SOURCES.CREATE_NEW.value, index }) {\n const ad = state.ads[splitTestTab][index] || {};\n ad.adSource = adSource;\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n [types.UPDATE_AD_TYPE](state, {\n splitTestTab, adSource, adType = '', index,\n }) {\n const ad = state.ads[splitTestTab][index] || {};\n if (!isValidAdSource(adSource) || !ad[adSource]) {\n return;\n }\n\n ad[adSource].adType = adType;\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n // 修改AD的具体属性值, 此时必定已经确定了adType,无需再二次校验\n [types.CHANGE_AD_PROPERTY](state, {\n splitTestTab, index, prop, value,\n }) {\n const ad = state.ads[splitTestTab][index] || {};\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return;\n }\n const { adType = '' } = ad[adSource] || {};\n\n if (!adType || !ad[adSource][adType]) {\n return;\n }\n ad[adSource][adType][prop] = value;\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n // 修改AD的具体属性值,adType手动设置\n // 原因:由于下沉后,fallback_type 需要保证 普通创意和原生创意都是一致的,因此需要在普通创意内,修改了原生创意的属性值\n [types.CHANGE_AD_PROPERTY_BY_AD_SOURCE](state, {\n splitTestTab, index, prop, value, adSource,\n }) {\n const ad = state.ads[splitTestTab][index] || {};\n if (!isValidAdSource(adSource)) {\n return;\n }\n const { adType = '' } = ad[adSource] || {};\n\n if (!adType || !ad[adSource][adType]) {\n return;\n }\n ad[adSource][adType][prop] = value;\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n [types.CHANGE_CAROUSEL_IMAGE_AD_IMAGE_PROPERTY](state, {\n splitTestTab, index, prop, imageIndex, value,\n }) {\n const ad = state.ads[splitTestTab][index] || {};\n const { adSource } = ad;\n if (!isValidAdSource(adSource)) {\n return;\n }\n const { adType = '' } = ad[adSource] || {};\n\n if (!adType\n || !ad[adSource][adType]\n || !ad[adSource][adType].image_info\n || !ad[adSource][adType].image_info[imageIndex]) {\n return;\n }\n ad[adSource][adType].image_info[imageIndex][prop] = value;\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n [types.DELETE_AD](state, { splitTestTab, index }) {\n state.ads[splitTestTab].splice(index, 1);\n },\n // 商品目录对应的词包列表\n [types.SET_DPA_WORD_LIST](state, data) {\n state.dpaWordList = data;\n },\n [types.SET_DPA_WORD_LIST](state, data) {\n state.dpaWordList = data;\n },\n [types.SET_AD_COPY_NUMBER](state, data) {\n state.copyNumber = data;\n },\n [types.SET_SHOULD_QC_OPTIMIZATION_TOOLS_TIPS_SHOW](state, data) {\n state.shouldQcOptimizeToolsTipsShow = data;\n },\n [types.SET_PRECHECK_SUGGESTIONS](state, data) {\n state.precheckSuggestions = data;\n },\n [types.SET_REAL_TIME_PRECHECK_SUGGESTIONS](state, data) {\n _.set(state, `realTimePrecheckSuggtions[${data.index}][${data.prop}]`, data);\n // 这里的index标识这个实时校验结果是哪一个广告下的,用一次就可以废弃掉了,后续拼接到素材预校验的数组中的index来标识就可以了\n delete data.index;\n },\n [types.DELETE_REAL_TIME_PRECHECK_SUGGESTIONS](state, data) {\n state.realTimePrecheckSuggtions.splice(data.index, 1);\n },\n [types.SET_HAS_INTO_AD](state, data) {\n state.hasIntoAd = data;\n },\n [types.SET_PRECHECK_SUMMARY](state, data) {\n state.precheckSummary = data;\n },\n [types.SET_PRODUCT_VIDEO_AND_NO_VIDEO_PKG](state, data) {\n state.isNoVideoPkgWarnTipShow = data;\n },\n [types.SET_NO_PRODUCT_VIDEO_AND_NO_VIDEO_PKG](state, data) {\n state.isCurrentProductSetCannotPreview = data;\n },\n [types.SET_IS_PRODUCT_SET_NO_PRODUCT](state, data) {\n state.isProductSetNoProduct = data;\n },\n [types.SET_CHANGE_VIDEO_PKG_BTN_LOADING](state, data) {\n state.isChangeVideoPkgBtnLoading = data;\n },\n [types.SET_ZEFR_COUNTRY](state, data) {\n state.supportBsZefrCountryList = data;\n },\n [types.SET_BS_IAS_COUNTRY](state, data) {\n state.supportBsIasCountryList = data;\n },\n [types.SET_BS_DV_COUNTRY](state, data) {\n state.supportBsDvCountryList = data;\n },\n [types.SET_ZEFR_AUTHORITY](state, data) {\n state.hasZefrAuthority = data;\n },\n [types.SET_BSIAS_AUTHORITY](state, data) {\n state.hasBsIasAuthority = data;\n },\n [types.SET_BS_DV_AUTHORITY](state, data) {\n state.hasBsDvAuthority = data;\n },\n [types.SET_SHOW_PROTOCOL_TERMS](state, status) {\n state.showProtocolTerms = status;\n },\n [types.SET_LOADING_PROMOTION_DETAIL](state, status) {\n state.loadingPromotionDetail = status;\n },\n [types.SET_BIND_ACCOUNT_DATA](state, data) {\n state.bindAccountData = data;\n },\n [types.SET_IDENTITY_AUTHORIZATION_STATE](state, status) {\n state.identityAuthorizationState = status;\n },\n [types.SET_SHOP_AUTHORIZATION_STATE](state, status) {\n state.shopAuthorizationState = status;\n },\n [types.SET_SHOP_AUTHORIZATION_CHECKING](state, status) {\n state.shopAuthorizationChecking = status;\n },\n [types.SET_SHOP_ADS_HAS_PERMISSION](state, status) {\n state.shopAdsHasPermission = status;\n },\n [types.SET_SHOP_PRODUCTS_NUM_IS_VALID](state, status) {\n state.shopProductsNumIsValid = status;\n },\n [types.CHANGE_ADS_RENDER_TASK](state, {\n splitTestTab, index, taskList = [], isLastAdEmpty,\n }) {\n if (!taskList.length) return;\n const { ADD_NEW_CREATIVE } = VIDEO_ASYNC_RENDER_FILL_ACTION_TYPE;\n const hasAddCreative = taskList\n .some(task => task.taskActionType === ADD_NEW_CREATIVE);\n if (hasAddCreative && isLastAdEmpty) state.ads[splitTestTab].pop();\n const ad = _.cloneDeep(state.ads?.[splitTestTab]?.[index] || INIT_ADS[splitTestTab][index]);\n const { adSource } = ad;\n // 视频渲染只能是单视频创意\n const adType = AD_TYPE.SINGLE_VIDEO.value;\n const adInfoBase = ad[adSource][adType];\n if (!adInfoBase) return;\n adInfoBase.creative_name = '';\n adInfoBase.video_info = {};\n adInfoBase.image_info = [];\n taskList.forEach((task) => {\n const { taskActionType, taskId, coverUri } = task;\n if (taskActionType === ADD_NEW_CREATIVE) {\n const newAd = _.cloneDeep(ad);\n newAd[adSource][adType].taskId = taskId;\n newAd[adSource][adType].image_info = [{ web_uri: coverUri }];\n state.ads[splitTestTab].push(newAd);\n } else {\n ad[adSource][adType].taskId = taskId;\n ad[adSource][adType].image_info = [{ web_uri: coverUri }];\n state.ads[splitTestTab].splice(index, 1, ad);\n }\n });\n },\n [types.SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS](state, { splitTestTab, taskList = [] }) {\n if (!taskList.length) return;\n // 找到已有的UIDs\n const existedUids = taskList?.map(({ taskId }) => taskId);\n // 排除掉已有的旧的,避免重复添加\n state.videoRenderInfoList[splitTestTab].taskList = state.videoRenderInfoList[splitTestTab].taskList\n ?.filter(({ taskId }) => !existedUids.includes(taskId));\n // 把新增的添加一下\n state.videoRenderInfoList[splitTestTab].taskList = state\n .videoRenderInfoList[splitTestTab].taskList.concat(taskList);\n },\n\n [types.FILL_VIDEO_FULL_INFO_BY_TASK_ID](state, { splitTestTab, videoFullInfo }) {\n const adUnit = state.ads?.[splitTestTab];\n adUnit.forEach((ad) => {\n const { adSource } = ad;\n // 回填视频信息,则创意类型一定是单视频创意\n const adType = AD_TYPE.SINGLE_VIDEO.value;\n const adDetail = ad[adSource][adType];\n if (adDetail.taskId === videoFullInfo.taskId) {\n Object.assign(adDetail, videoFullInfo);\n }\n });\n },\n [types.CHANGE_VIDEO_RENDER_INFO_PROP](state, {\n splitTestTab, taskId, prop, value,\n }) {\n const list = state.videoRenderInfoList[splitTestTab].taskList;\n const targetTask = list.find(task => task.taskId === taskId);\n if (targetTask) {\n const newTask = {\n ...targetTask,\n [prop]: value,\n };\n state.videoRenderInfoList[splitTestTab].taskList = list\n .filter(task => task.taskId !== taskId)\n .concat([newTask]);\n }\n },\n [types.DELETE_VIDEO_RENDER_TASK_BY_TASK_ID](state, { splitTestTab, taskId }) {\n state.videoRenderInfoList[splitTestTab].taskList = state.videoRenderInfoList[splitTestTab].taskList\n .filter(task => task.taskId !== taskId);\n },\n /**\n * 同步ad内所有adType中的identity数据\n */\n [types.SET_IDENTITY_INFO_BY_AD_TYPE](state, { splitTestTab, index }) {\n const ad = _.cloneDeep(state.ads[splitTestTab][index] || {});\n const sourceTarget = _.get(ad, ad?.adSource);\n if (!sourceTarget) return;\n\n const currentType = sourceTarget?.adType;\n if (!currentType) return;\n\n const currentAdDetail = sourceTarget[currentType] || {};\n\n // ad内包含多种形式的素材,单图、单视频、商品库图片、商品库视频,每种形式的identity数据都需要同步\n Object.keys(sourceTarget)\n .filter(key => key !== 'adType')\n .forEach((key) => {\n const adDetail = sourceTarget[key];\n adDetail.identity_id = currentAdDetail?.identity_id || '';\n adDetail.identity_type = currentAdDetail?.identity_type || 0;\n adDetail.identity_bc_id = currentAdDetail?.identity_bc_id ?? 0;\n adDetail.identity_data = currentAdDetail?.identity_data || {};\n adDetail.avatar_icon = currentAdDetail?.avatar_icon;\n adDetail.app_name = currentAdDetail?.app_name || '';\n adDetail.source = currentAdDetail?.source || '';\n });\n state.ads[splitTestTab].splice(index, 1, ad);\n },\n [types.CHECK_HAS_LEAD_ADS](state, data) {\n state.hasLeadAds = data;\n },\n [types.SET_IS_SHOP_ADS_LIVE_SCENARIO](state, value) {\n state.isShopAdLiveScenario = value;\n },\n [types.SET_CREATIVES](state, list) {\n state.creatives = list;\n },\n [types.SET_FROM_LIBRARY_VID_LIST](state, value) {\n state.fromLibraryVid = value;\n },\n [types.SET_FROM_LIBRARY_CARD_ID_LIST](state, value) {\n state.fromLibraryCardId = value;\n },\n [types.SET_FROM_LIBRARY_PAGE_ID_LIST](state, value) {\n state.fromLibraryPageId = value;\n },\n [types.SET_IDENTITY_EMPTY](state, data) {\n state.identityEmpty = data;\n },\n};\n","/**\n * 跨adgroup层级,创意复制相关的一些操作\n * eg: 【投app的adgroup下的创意】复制到 【投website的adgroup】下\n * 需求文档:https://bytedance.feishu.cn/wiki/wikcneP1cAZCoNVEwZFIkW84bzb\n * 【建议以这个为准】checklist:https://bytedance.feishu.cn/wiki/wikcnOqZwf8LZqJdZD8f41VBf9X\n * 创编字段大全:https://bytedance.feishu.cn/sheets/shtcn0hWOEztVED205V08nVXvQh?sheet=MPAr1b\n */\n\nimport _ from 'lodash';\nimport { AUDIENCE_TYPE } from 'src/const/state/ad';\nimport {\n campaignObjectiveValue, contentType as EXTERNAL_TYPE, fallBackTypeEnum,\n contentType,\n} from 'src/const/state/campaign';\nimport { OptimizeGoal } from 'src/const/state/target';\nimport { ADVANCED_CREATIVE_TYPE } from 'src/const/state/call-to-action';\nimport { CREATIVE_TYPE, deeplinkNotAllCountryListCode } from 'src/const/state/creative';\nimport { isDeeplinkWhite } from 'src/const/whiteList';\n\n\nconst isAppDownload = externalType => EXTERNAL_TYPE.app.includes(externalType);\nconst isWebsite = externalType => EXTERNAL_TYPE.website === externalType;\n// 是否品牌且没有推广链接(表示纯曝光广告)\nconst isBrandNoExternalUrl = externalType => EXTERNAL_TYPE.brandPureExposure === externalType;\nconst isAndroidApp = newCreationData => newCreationData?.adgroupData?.external_type === contentType.app[0];\nconst isCountryInNotAllow = newCreationData => newCreationData?.adgroupData?.country?.some(code => deeplinkNotAllCountryListCode.includes(code));\nconst isAndroidAndSpecCountry = newCreationData => isAndroidApp(newCreationData) && !isCountryInNotAllow(newCreationData);\nconst isSupportDeeplink = newCreationData => isAndroidAndSpecCountry(newCreationData) || isDeeplinkWhite();\n/**\n * Conversion\n * 1. adgroup选择website,清理所有app类型下才有的相关字段\n * 2. adgroup选择 app,则清理website才有的相关字段\n *\n * instant 创意:traffic/conversion 的website,仅选择tt版位,single video 下展示(page_id)\n *\n * @param {Object} param.creativeData 创意数据\n * @param {Number} param.adgroupData 复制新adgroup的external_type\n */\nconst resetCreativeDataInTraffic = ({\n creativeData,\n adgroupData,\n}) => {\n if (isAppDownload(adgroupData.external_type)) {\n // fallbackType=0 or 不存在 表示traffic-app的创意没有启用deeplink,或者为 traffic-website复制到app\n // 复制traffic-website计划,改成traffic-app,创意deeplink有的勾选有的未勾选不一致的问题\n if (!creativeData.fallback_type) {\n creativeData.is_open_url = 0;\n creativeData.open_url = '';\n }\n\n if (fallBackTypeEnum.fallbackWeb !== creativeData.fallback_type) {\n // fallbackType为website,不能清空external_url\n creativeData.external_url = '';\n }\n // 清理website的相关字段\n creativeData.source = ''; // website下,创意的 display name 字段为 source, app 下为 app_name 字段\n // instant的website创意 => app\n creativeData.landing_page_type = '';\n if (creativeData.creative_type !== CREATIVE_TYPE.LYNX_PLP) {\n creativeData.page_id = '';\n }\n } else if (isWebsite(adgroupData.external_type)) {\n // 清除app下的相关,删除deeplink,监测链接\n creativeData.app_name = '';\n creativeData.track_url = [];\n creativeData.action_track_url = [];\n\n // 清除fallback的相关字段\n creativeData.fallback_type = 0;\n }\n return creativeData;\n};\n\n/**\n * Conversion\n * 1. adgroup选择website,清理所有app类型下才有的相关字段\n * 2. adgroup选择 app,则清理website才有的相关字段\n *\n * instant 创意:traffic/conversion 的website,仅选择tt版位,single video 下展示(page_id)\n *\n * @param {Object} param.creativeData 创意数据\n * @param {Number} param.adgroupData 复制新adgroup的external_type\n */\nconst resetCreativeDataInConversion = ({\n creativeData,\n adgroupData,\n}) => {\n if (isAppDownload(adgroupData.external_type)) {\n // 清理website的相关字段\n creativeData.external_url = '';\n creativeData.source = ''; // website下,创意的 display name 字段为 source, app 下为 app_name 字段\n // instant的website创意 => app\n creativeData.landing_page_type = '';\n creativeData.page_id = '';\n } else if (isWebsite(adgroupData.external_type)) {\n // 清除app下的相关,删除deeplink,监测链接\n creativeData.app_name = '';\n creativeData.track_url = [];\n creativeData.action_track_url = [];\n // 清除deeplink和fallback_type 的值\n creativeData.is_open_url = 0; // 是否使用deeplink的开关\n creativeData.open_url = ''; // deeplink打开后,填的url对应字段\n creativeData.fallback_type = 0;\n }\n return creativeData;\n};\n\n\n/**\n * DPA情况比较多\n * 重定向:投放给之前已经有过行为的用户 =》拉活\n * 非重定向:投放给全新的用户 =》拉新\n *\n * 1. app\n * 1.1:清除website的字段\n * 1.2:重定向:清除非重定向的字段\n * 1.3:非重定向:清除 重定向的字段\n * 2. website\n * 2.1:清除app的相关字段\n *\n * @param {Object} param.creativeData 创意数据\n * @param {Object} param.adgroupData 创意复制到新的adgroup数据\n */\nconst resetCreativeDataInDpa = ({ creativeData, adgroupData }) => {\n const { external_type, dpa_local_audience } = adgroupData;\n\n // 重定向\n const isReTarget = dpa_local_audience === AUDIENCE_TYPE.RETARGET.value;\n const isWebsiteType = isWebsite(external_type);\n // 兼容下沉前的逻辑,下沉前app重定向501,app非重定向201, 下沉后只有201了,因此这里不是website就是app来判断\n if (!isWebsiteType) {\n // 清除website的字段\n creativeData.source = '';\n creativeData.external_url = '';\n\n if (isReTarget) {\n // 重定向:清理非重定向的字段\n creativeData.auto_open = 0;\n // fallback_type 为 0 (dpa website 类型的 website type 对应字段)\n // 或者(可能存在不设置的情况)则初始化为 0\n if (!creativeData.fallback_type) {\n creativeData.params_type = 0;\n }\n } else {\n // 非重定向:清理重定向的字段\n creativeData.fallback_type = 0;\n creativeData.params_type = 0;\n // app 重定向肯定有 deeplink,复制成非重默认为 2\n // 从 web 复制过来的保留初始化 0\n creativeData.auto_open = creativeData.is_open_url === 1 ? 2 : 0;\n }\n } else if (isWebsiteType) {\n // 清除app的字段\n creativeData.app_name = '';\n creativeData.track_url = [];\n creativeData.action_track_url = [];\n\n // 清除 dpa deeplink 相关字段\n creativeData.dpa_open_url_type = 0; // dpa app类型 的 deeplink下拉框对应字段\n creativeData.auto_open = 0; // 0表示deeplink, 2表示deffered deeplink, 默认为0\n creativeData.is_open_url = 0; // dpa deferred deeplink表单项的开关对应字段\n creativeData.open_url = ''; // dpa deeplink自定义link,对应的link字段\n }\n return creativeData;\n};\n\n/**\n * Engagement 中,如果优化目标是 【关注 = fans】,则没有cta 和open_url\n * @returns\n */\nconst resetCreativeDataEngagement = ({ creativeData, adgroupData }) => {\n if (adgroupData.optimize_goal === OptimizeGoal.fans) {\n creativeData.call_to_action = '';\n creativeData.call_to_action_id = '';\n creativeData.open_url = '';\n creativeData.is_open_url = '';\n creativeData.call_to_action_type = ADVANCED_CREATIVE_TYPE.default;\n }\n return creativeData;\n};\n\n/**\n * 品牌竞价广告,如果落地页为空,那么Cta应该也为空\n */\nconst resetCreativeDataReachAndVV = ({ creativeData, adgroupData }) => {\n // 解决track pixel复制换成track app external_url未清空\n if (adgroupData.ad_ref_app_id) {\n creativeData.external_url = '';\n }\n if (!creativeData.enableUrl && !adgroupData.ad_ref_app_id && !adgroupData.ad_ref_pixel_id) {\n creativeData.is_open_url = 0;\n creativeData.open_url = '';\n creativeData.call_to_action = '';\n creativeData.call_to_action_id = '';\n creativeData.call_to_action_type = ADVANCED_CREATIVE_TYPE.default;\n }\n return creativeData;\n};\n\n/**\n * 根据adgroup的数据,重置创意里面不符合当前条件的创意数据\n * eg: adgroup app下的 source\n *\n * @param {Object} creationData.creativeData 创意数据\n * @param {Object} creationData.adgroupData adgroup数据\n */\nexport const resetCreativeExtraKey = (creationData) => {\n const newCreationData = _.cloneDeep(creationData) || {};\n const {\n creativeData = {}, adgroupData = {}, isCopy = false, isCreate = false, shouldClearFallbackType = false,\n } = newCreationData;\n let newCreativeData = creativeData;\n\n if (adgroupData.struct_version === 1) {\n // 下沉后的处理\n switch (adgroupData.objective_type) {\n case campaignObjectiveValue.Traffic:\n newCreativeData = resetCreativeDataInTraffic(newCreationData);\n break;\n case campaignObjectiveValue.Conversion:\n newCreativeData = resetCreativeDataInConversion(newCreationData);\n break;\n case campaignObjectiveValue.DPA:\n newCreativeData = resetCreativeDataInDpa(newCreationData);\n break;\n case campaignObjectiveValue.Engagement:\n newCreativeData = resetCreativeDataEngagement(newCreationData);\n break;\n\n case campaignObjectiveValue.Reach:\n case campaignObjectiveValue.VideoView:\n newCreativeData = resetCreativeDataReachAndVV(newCreationData);\n break;\n\n default:\n break;\n }\n // 如果不支持deeplink\n if (!isSupportDeeplink(newCreationData) && ((shouldClearFallbackType && isCopy) || isCreate)) {\n newCreativeData.is_open_url = 0;\n newCreativeData.open_url = '';\n if (adgroupData.objective_type === campaignObjectiveValue.Traffic) {\n newCreativeData.fallback_type = 0;\n newCreativeData.external_url = '';\n }\n }\n } else if (adgroupData.struct_version === 0) {\n // 对非下沉计划,计划promotion为空时 那它下面的创意就得纯曝光 就得没有cta\n // 下沉前整体处理场景比较少,不按照Objective来各自处理\n if (isBrandNoExternalUrl(adgroupData.external_type)) {\n if (!adgroupData.external_url) {\n newCreativeData.call_to_action = '';\n newCreativeData.call_to_action_id = '';\n }\n }\n }\n return newCreativeData;\n};\n","import _ from 'lodash';\nimport {\n imageMode,\n AD_TYPE,\n NORMAL_AD_SOURCES,\n NATIVE_AD_ACTION_TYPE,\n DISCLAIMER_TYPES,\n CARD_ADDITIONAL_CREATIVE_TYPE,\n ADDITIONAL_CREATIVE_IMAGE_CARD_TEMPLATE_TYPES,\n ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES,\n DARK_POST_STATUS_MAP,\n} from 'src/const/state/creative';\n// import { ADVANCED_CREATIVE_TYPE, TTCallToAction } from 'src/const/state/call-to-action';\nimport { TTCallToAction, ADVANCED_CREATIVE_TYPE } from 'src/const/state/call-to-action';\n\nconst {\n IMAGE_CARD: ADDITION_IMAGE_CARD,\n INSTANT_PAGE: ADDITION_INSTANT_PAGE,\n} = ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES;\n\nconst {\n SINGLE_IMAGE, SINGLE_VIDEO, CATALOGUE_VIDEO, CATALOGUE_IMAGE, CAROUSEL_IMAGE, REAL_TIME_LIVE,\n} = AD_TYPE;\nconst { CREATE_NEW, NATIVE_VIDEO } = NORMAL_AD_SOURCES;\n\nconst DISCLAIMER_DATA = {\n disclaimer_type: DISCLAIMER_TYPES.UN_SET,\n disclaimer_text: { text: '' },\n disclaimer_clickable_texts: [],\n};\n\nconst SINGLE_VIDEO_TEMPLATE = {\n title: '',\n creative_name: '',\n call_to_action: '',\n autoCreativeName: true,\n\n is_creative_authorized: false, // 创意素材授权\n\n app_name: '', // appinstall下沉字段\n source: '', // 应用的展示名称(diaplayName)字段是app_name,落地页是source\n open_url: '',\n external_url: '',\n is_open_url: 0,\n fallback_type: 0,\n\n avatar_icon: {\n width: 180,\n web_uri: '',\n height: 180,\n url: '',\n },\n page_id: '',\n auto_open: 0,\n track_url: [],\n action_track_url: [],\n brand_safety_postbid_partner: 0, // zefr开关\n brand_safety_vast_url: '', // BS IAS URL\n vast_moat: 0,\n vast_double_verify: 0,\n vast_ias: false,\n vast_url: '',\n enableUrl: false,\n // advanced_creative_type: ADVANCED_CREATIVE_TYPE.customization, // CTA类型,下拉框,还是文案优选集(程序根据模型计算CTA的选项)\n call_to_action_id: '', // CTA 文案优选集的 id\n call_to_action_type: ADVANCED_CREATIVE_TYPE.default, // 默认选中default\n isQuickOptimizeToolsShow: false, // 是否展示一键优化抽屉\n quickOptimizeToolInfo: {}, // 一键优化信息\n isUseAutoGenerateCreativeName: false,\n format_structure: CARD_ADDITIONAL_CREATIVE_TYPE.CUSTOMIZED.value, // 附加创意类型,\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity头像和显示名称\n available_status: 0,\n can_use_live_list: true,\n can_use_video_list: true,\n domain: '',\n gesture_id: '',\n painted_egg_id: '',\n ...DISCLAIMER_DATA,\n creative_type: '',\n isSignProtocol: false,\n isCheckedMusicProtocol: true, // 纯前端字段 是否同意音乐合规协议\n dark_post_status: DARK_POST_STATUS_MAP.OFF, // 暗投模式。默认不勾选\n};\n/**\n * 选择创建 additional creative 创意(卡片, 轻落地页)时增加的参数\n */\nexport const ADDITIONAL_CREATIVE_PARAMS = {\n cardAdditionalInfo: {\n [ADDITION_IMAGE_CARD]: {\n isChecked: false,\n mode: ADDITIONAL_CREATIVE_IMAGE_CARD_TEMPLATE_TYPES.CUSTOMIZED_IMAGE.value,\n },\n [ADDITION_INSTANT_PAGE]: {\n isSelected: false,\n mode: '',\n },\n },\n loadingStorefrontDetail: false, // 是否在加载 page 信息\n product_platform_id: '', // 编辑器选择的商品库 id\n product_set_id: '', // 编辑器选择的商品序列 id\n dpa_products: [], // 编辑器中排序指定的商品\n dpa_preview_products: [], // 用于预览的商品,由指定的商品和额外获取的商品组成\n page_product_configuration: '', // 预览时展示的商品卡片样式配置\n page_preview_url: '', // PLP 页面预览地址\n page_image_url: '', // PLP image card 地址\n page_card_format: '', // PLP 的卡片类型 0 gallery 1 image card\n creative_shop_id: '', // creative保存的shopId,用于前端判断是否修改\n // TODO:将 CA 字段统一到 page info 管理\n collectionAdsPageInfo: {}, // Collection Ads 的 page 信息\n};\n\nconst SPU = {\n selectedSpuMap: {}, // spu Map\n isShopHasUnavailablePrd: false, // shop vsa存在不可用的已选商品(阻断提交)\n spu_list: [],\n};\n\n// 单个ad的默认值。 每个创意可以同时设置多种来源,每个来源下又有多种形式,提交到后端时只使用当前选中来源+形式的素材\nexport const TEMPLATE = {\n // 使用create new方式新建广告\n [CREATE_NEW.value]: {\n [SINGLE_IMAGE.value]: { // 单图片创意\n title: '',\n creative_name: '',\n // advanced_creative_type: ADVANCED_CREATIVE_TYPE.customization,\n call_to_action: '',\n call_to_action_id: '',\n call_to_action_type: ADVANCED_CREATIVE_TYPE.default, // 默认选中default\n autoCreativeName: true,\n app_name: '', // appinstall下沉字段\n source: '', // 应用的展示名称(diaplayName)字段是app_name,落地页是source\n open_url: '',\n external_url: '',\n is_open_url: 0,\n fallback_type: 0,\n domain: '',\n avatar_icon: {\n width: 180,\n web_uri: '',\n height: 180,\n url: '',\n },\n auto_open: 0,\n track_url: [],\n action_track_url: [],\n page_id: '',\n vast_moat: 0,\n vast_double_verify: 0,\n vast_ias: false,\n vast_url: '',\n isUseAutoGenerateCreativeName: false,\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity头像和显示名称\n ...DISCLAIMER_DATA,\n },\n [SINGLE_VIDEO.value]: _.cloneDeep({ // 单视频创意\n ...SINGLE_VIDEO_TEMPLATE,\n ...ADDITIONAL_CREATIVE_PARAMS,\n }),\n [CATALOGUE_VIDEO.value]: { // 商品库视频创意\n title: '',\n creative_name: '',\n // advanced_creative_type: ADVANCED_CREATIVE_TYPE.customization,\n call_to_action: '',\n call_to_action_id: '',\n call_to_action_type: ADVANCED_CREATIVE_TYPE.default,\n autoCreativeName: true,\n app_name: '', // appinstall下沉字段\n source: '', // 应用的展示名称(diaplayName)字段是app_name,落地页是source\n open_url: '',\n external_url: '',\n dpa_open_url_type: 0,\n is_open_url: 0,\n fallback_type: 0,\n params_type: 0,\n domain: '',\n avatar_icon: {\n width: 180,\n web_uri: '',\n height: 180,\n url: '',\n },\n track_url: [],\n action_track_url: [],\n auto_open: 0,\n image_mode: imageMode.VIDEO_TYPE_3, // 固定写死,会预先将商品视频全部派生为竖版视频\n image_info: [], // 固定写死\n video_info: {}, // 固定写死\n dpa_word_set: [], // 动态词包id\n video_tpl_name: '', // 用户指定视频包ID\n video_display_mode: 1, // 视频包展示模式 1自动优选 2指定视频包\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity头像和显示名称\n ...ADDITIONAL_CREATIVE_PARAMS,\n },\n [CATALOGUE_IMAGE.value]: { // 商品库图片创意\n title: '',\n creative_name: '',\n domain: '',\n // advanced_creative_type: ADVANCED_CREATIVE_TYPE.customization,\n call_to_action: '',\n call_to_action_id: '',\n call_to_action_type: ADVANCED_CREATIVE_TYPE.default, // 默认选中default\n autoCreativeName: true,\n image_mode: imageMode.IMAGE_I18N_SQUARE, // 固定写死竖图\n image_info: [], // 固定写死\n dpa_word_set: [], // 动态词包id\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity头像和显示名称\n external_url: '',\n params_type: 0,\n },\n [CAROUSEL_IMAGE.value]: { // 多图轮播创意\n title: '',\n creative_name: '',\n // advanced_creative_type: ADVANCED_CREATIVE_TYPE.customization,\n call_to_action: '',\n autoCreativeName: true,\n app_name: '', // appinstall下沉字段\n open_url: '',\n is_open_url: 0,\n domain: '',\n avatar_icon: {\n width: 180,\n web_uri: '',\n height: 180,\n url: '',\n },\n auto_open: 0,\n track_url: [],\n action_track_url: [],\n vast_moat: 0,\n vast_double_verify: 0,\n vast_ias: false,\n vast_url: '',\n image_mode: imageMode.CAROUSEL_IMAGE_SQUARE,\n activeCarouselImageIndex: 0, // 当前激活的图片Index\n rejectImageIds: [], // 被拒审的图片ID列表\n carouselImageInfoComponentsNameList: [], // 当前轮播表单允许出现的表单项名称列表\n carouselImageModeChangerLoadingStatus: false,\n isUseAutoGenerateCreativeName: false,\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity头像和显示名称\n },\n adType: '', // 当前选中形式\n },\n // 原生视频广告\n [NATIVE_VIDEO.value]: {\n // [SINGLE_VIDEO.value]: _.cloneDeep(SINGLE_VIDEO_TEMPLATE), // 单视频创意\n [SINGLE_VIDEO.value]: _.cloneDeep({\n with_promotional_music: true, // 是否打开推广音乐开关 false: 打开 true: 关闭\n item_duet_disabled: 2, // 是否开启合拍: 0-允许合拍,2-禁止合拍\n item_stitch_disabled: 2, // 是否开启跟拍:0-允许跟拍,2-禁止跟拍\n song_authorization_missing: false, // 音乐版权是否校验通过\n nativeAdActionType: NATIVE_AD_ACTION_TYPE.PULL_TT_POST, // 原生广告默认行为 拉视频\n identity_bc_id: '', // bc授权identity账号\n ...SINGLE_VIDEO_TEMPLATE,\n ...SPU, // shop monetization的spu相关字段\n }), // 单视频创意\n [REAL_TIME_LIVE.value]: _.cloneDeep({ // 实时直播创意\n ...SINGLE_VIDEO_TEMPLATE,\n image_mode: imageMode.REAL_TIME_LIVE,\n nativeAdActionType: NATIVE_AD_ACTION_TYPE.REAL_TIME_LIVE, // 直投直播间要求item_source是2\n }),\n adType: SINGLE_VIDEO.value, // 当前选中形式\n },\n adSource: CREATE_NEW.value, // 来源,create new或原生视频, 默认create new\n};\n\nexport const SPLIT_TEST_UNIT = [TEMPLATE]; // 每个split test对照组,每个组可以包含若干个ad\n\nexport const INIT_ADS = [\n _.cloneDeep(SPLIT_TEST_UNIT), // 默认非split test,只有一个对照组\n];\n\nexport default {\n ads: _.cloneDeep(INIT_ADS),\n videoRenderInfoList: [\n // split AB Test\n {\n taskList: [],\n },\n {\n taskList: [],\n },\n ],\n activeSplitTestTab: 0, // 激活的对照组索引\n options: TTCallToAction,\n appTypes: [0], // ad group层级所选的版位, 0表示通投,参考INVENTORY_FLOW\n sha1Key: '',\n dpaWordList: [], // DPA广告所选商品目录下的所有动态词包\n copyNumber: 0, // 创意复制的个数\n isNewStructure: false, // 是否是新结构下的创意\n appInfo: {},\n creativePreviewIndex: 0,\n selectedFormObject: {},\n selectedFormObjectOppo: {}, // split-test对照对象——tabB\n selectedForm: 0,\n shouldQcOptimizeToolsTipsShow: false, // 是否展示一键优化名词解释卡片\n precheckSuggestions: {}, // 素材预校验返回的机审结果\n precheckSummary: [], // 素材预校验机审汇总结果,展示在弹窗\n realTimePrecheckSuggtions: [], // 实时预校验的结果放在这里,等待预校验接口返回后放入precheckSuggestions中\n hasIntoAd: false, // 是否进入过ad层级\n isNoVideoPkgWarnTipShow: false, // 是否显示无视频包提示\n isCurrentProductSetCannotPreview: false, // 是否展示当前商品无预览视频提示\n isProductSetNoProduct: false, // 商品库商品是否为空\n isChangeVideoPkgBtnLoading: false, // 是否展示当前商品无预览视频提示\n showProtocolTerms: false, // 是否展示协议签署\n loadingPromotionDetail: false, // 加载 promotion type 中使用的相关信息\n bindAccountData: {}, // 绑定TTBA账号信息\n identityAuthorizationState: 0, // identity账号的授权状态\n supportBsZefrCountryList: [], // bs zefr支持的国家。\n supportBsIasCountryList: [], // bs ias支持的国家。\n supportBsDvCountryList: [], // bs dv支持的国家。\n shopAuthorizationState: 0, // shop的权限校验\n shopAuthorizationChecking: true, // shop校验中, 默认值为0,表示未校验\n shopAdsHasPermission: true, // shop creative有shop权限\n shopProductsNumIsValid: true, // shop vsa编辑场景下商品数是否达标\n hasZefrAuthority: false, // 是否有zefr的授权\n hasBsIasAuthority: false, // 是否有BS IAS的授权\n hasBsDvAuthority: false, // 是否有BS IAS的授权\n externalUrlDomain: { // 兼容split test场景\n 0: [],\n 1: [],\n },\n domainCancelToken: '',\n hasLeadAds: true, // 是否已创建过 Lead Ads 广告\n isShopAdLiveScenario: false,\n creatives: [], // ad下已实现创意列表\n fromLibraryVid: [], // 素材库选择的id\n fromLibraryPageId: [], // 素材库选择 instant page id\n fromLibraryCardId: [], // 素材库选择的 card id\n identityEmpty: false, // identity 是否为空\n};\n","import {\n extendsModule, baseForm, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport * as types from 'src/store/types';\n\nimport playableCardFormGroup from './playable-card-form-group';\n\nexport default extendsModule(baseForm, {\n state: {\n _moduleKey: 'playable-card-form',\n _formGroups: moduleKeys([playableCardFormGroup]),\n isAppDownload: false,\n },\n mutations: {\n [types.UPDATE_IS_APPDOWNLOAD](state, value) {\n state.isAppDownload = !!value;\n },\n },\n actions: {\n resetPlayable({ dispatch }) {\n dispatch('fillForm', {\n playable_url: [],\n resetSwitch: [],\n });\n },\n // 在界面上显示试玩素材,并设置选中项\n openAndSetPlayableUrl({ dispatch }, playableUrl = []) {\n const playable_url = (Array.isArray(playableUrl) ? playableUrl : [playableUrl])\n .map(url => url && url.trim())\n .filter(Boolean);\n if (playable_url.length) {\n const resetSwitch = playable_url.map(item => !!item);\n dispatch('fillForm', {\n playable_url,\n resetSwitch,\n });\n }\n },\n },\n modules: registerMfModule([playableCardFormGroup]),\n});\n","import {\n extendsModule, baseFormGroup, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport { INVENTORY_FLOW_MAP } from 'src/const/state/inventory-type';\nimport { shouldTikTokPlayableAdsUseable } from 'src/components/campaign/ad/playable/playableAdsEnable';\nimport { isSelfAccount } from 'src/const/state/transaction';\nimport { creativeMode } from 'src/const/state/creative';\nimport playableCreationFormItem from './playable-creation-form-item';\n\nexport default extendsModule(baseFormGroup, {\n state: {\n _moduleKey: 'playable-card-form-group',\n _formItems: moduleKeys([playableCreationFormItem]),\n },\n getters: {\n isVisible(state, getters, rootState, rootGetters) {\n const { appTypes } = rootState.creative.create;\n // // @deprecated\n // const useSplitTest = rootGetters['campaign/adgroup/useSplitTest'];\n let isAvailablePlacement;\n if (isSelfAccount() && !rootState.library.list.hasPlayableMaterial) {\n isAvailablePlacement = appTypes.length === 1 && appTypes[0] === INVENTORY_FLOW_MAP.TIKTOKADNETWORK.key;\n } else {\n isAvailablePlacement = appTypes.includes(INVENTORY_FLOW_MAP.TIKTOKADNETWORK.key) || appTypes.includes(INVENTORY_FLOW_MAP.ALL.key);\n }\n const isDpa = rootGetters['campaign/adgroup/isDpa'];\n const { isAppDownload } = getters.formState;\n const isSupportPanglePlayable = (isAvailablePlacement &&\n isAppDownload &&\n !isDpa // dpa支持pangle版位,但是不支持试玩\n );\n const isSupportTikTokPlayable = shouldTikTokPlayableAdsUseable({\n inventoryFlow: appTypes,\n objectiveType: rootState?.campaign?.adgroup?.objective_type,\n isAco: rootState?.campaign?.adgroup?.creative_material_mode === creativeMode.PROCEDURAL,\n });\n return isSupportPanglePlayable || isSupportTikTokPlayable;\n },\n },\n modules: registerMfModule([playableCreationFormItem]),\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'playable-creation-form-item',\n playableSwitch: [], // 是否打开了试玩开关\n playableUrl: [], // 选中的试玩链接\n },\n getters: {\n // 当表单项可见时,贡献的提交参数\n formItemData4Show(state) {\n return {\n playable_url: state.playableUrl,\n // playable 根据新版交互,不再用开关控制\n // playable_url: state.playableUrl.map((url, index) => {\n // const isCurrentCardUsePlayable = state.playableSwitch[index];\n // return isCurrentCardUsePlayable\n // ? url\n // : '';\n // }),\n };\n },\n // 当表单项隐藏时,贡献的提交参数\n formItemData4Hide() {\n return {\n playable_url: [],\n };\n },\n isSplitTestPlayableSame(state, getters) {\n const [url1, url2] = getters.formItemData4Show.playable_url;\n return url1 === url2;\n },\n },\n mutations: {\n [types.CHANGE_PLAYABLE_SWITCH](state, { splitTestTab = 0, value = false }) {\n const originPlayableSwitch = state.playableSwitch || [];\n originPlayableSwitch[splitTestTab] = !!value;\n const newPlayableSwitch = originPlayableSwitch.map(item => item);\n state.playableSwitch = newPlayableSwitch;\n },\n [types.UPDATE_PLAYABLE_URL](state, { splitTestTab = 0, value = '' }) {\n state.playableUrl.splice(splitTestTab, 1, value);\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const base = {\n playableUrl: formData.playable_url || [],\n };\n // 在编辑、复制、use exist新建时,如果后端返回了试玩链接,则需要打开开关。\n // 使用setPcdAdByCreativeDetail方法时,会设置resetAutoName,其余情况默认false\n if (formData.resetSwitch) {\n base.playableSwitch = formData.playable_url.map(url => !!url);\n }\n commit('update', base);\n },\n },\n});\n","import {\n extendsModule, baseFormGroup, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport * as types from 'src/store/types';\n\nimport proceduralCreativeTitleList from './procedural-creative-title-list';\nimport proceduralCreativeName from './procedural-creative-name';\nimport proceduralCreativeCta from './procedural-creative-cta';\nimport proceduralCreativeCreate from './procedural-creative-create';\nimport proceduralCreativeAppName from './procedural-creative-app-name';\nimport proceduralCreativeDefferedDeeplink from './procedural-creative-deffered-deeplink';\nimport proceduralCreativeAvatar from './procedural-creative-avatar';\nimport proceduralCreativeTrackingUrl from './procedural-creative-tracking-url';\nimport proceduralCreativeOptimize from './procedural-creative-optimize';\nimport proceduralCreativeLibAuth from './procedural-creative-lib-auth';\nimport proceduralCreativeIdentity from './procedural-creative-identity';\n\nexport default extendsModule(baseFormGroup, {\n state: {\n _moduleKey: 'form-group-main',\n _formItems: moduleKeys([proceduralCreativeTitleList, proceduralCreativeName, proceduralCreativeCta,\n proceduralCreativeCreate, proceduralCreativeAppName, proceduralCreativeDefferedDeeplink,\n proceduralCreativeAvatar, proceduralCreativeTrackingUrl, proceduralCreativeOptimize, proceduralCreativeLibAuth,\n proceduralCreativeIdentity]),\n showCta: true,\n },\n mutations: {\n [types.UPDATE_PCD_SHOW_CTA](state, show) {\n state.showCta = !!show;\n },\n },\n // 把数组中的对象合并成一个大对象\n modules: registerMfModule([proceduralCreativeTitleList, proceduralCreativeName, proceduralCreativeCta, proceduralCreativeCreate,\n proceduralCreativeAppName, proceduralCreativeDefferedDeeplink,\n proceduralCreativeAvatar, proceduralCreativeTrackingUrl, proceduralCreativeOptimize, proceduralCreativeLibAuth,\n proceduralCreativeIdentity]),\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\n// 应用的展示名称字段是app_name,落地页是source\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-app-name',\n app_name: '',\n source: '',\n },\n getters: {\n formItemData(state) {\n return {\n app_name: state.app_name,\n source: state.source,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_APP_NAME](state, name = '') {\n state.app_name = name;\n },\n [types.UPDATE_PCD_SOURCE](state, name = '') {\n state.source = name;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n app_name: formData.app_name || '',\n source: formData.source || '',\n };\n // 在编辑、复制、use exist新建时,如果后端返回的创意名称是空的,则需要再次勾选checkbox\n // 使用setPcdAdByCreativeDetail方法时,会设置resetAutoName,其余情况默认false\n commit('update', data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-avatar',\n avatar_icon: {},\n },\n getters: {\n formItemData(state) {\n return {\n avatar_icon: state.avatar_icon,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_AVATAR](state, avatarIcon = {}) {\n state.avatar_icon = { ...avatarIcon };\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n avatar_icon: formData.avatar_icon || {},\n };\n // 在编辑、复制、use exist新建时,如果后端返回的创意名称是空的,则需要再次勾选checkbox\n // 使用setPcdAdByCreativeDetail方法时,会设置resetAutoName,其余情况默认false\n commit('update', data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport _ from 'lodash';\nimport * as types from 'src/store/types';\nimport tool from 'src/utils/tool';\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport { INIT as TITLE_LIST_INIT } from './procedural-creative-title-list';\nimport { INIT as CTA_LIST_INIT } from './procedural-creative-cta';\n\n\nconst PAGEIDINIT = [];\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-create',\n image_list: [], // image_list即存图片又存视频,差别在于视频元素会多一个video_info属性\n call_to_action_list: _.cloneDeep(CTA_LIST_INIT.call_to_action_list),\n title_list: _.cloneDeep(TITLE_LIST_INIT.title_list),\n page_list: _.cloneDeep(PAGEIDINIT), // leadAds支持程序化创意 这里保存用户选择的线索表单的id\n isSignProtocol: false, // 用户是否勾选了线索表单协议勾选框\n showProtocolTerms: false, // 用户是否签署过leadAds线索表单\n },\n getters: {\n titleList(state) {\n return state.title_list;\n },\n ctaList(state) {\n return state.call_to_action_list;\n },\n formItemData(state) {\n return {\n image_list: state.image_list,\n page_list: state.page_list,\n isSignProtocol: state.isSignProtocol,\n showProtocolTerms: state.showProtocolTerms,\n };\n },\n leadAdsAcoPageList(state) {\n return state.page_list;\n },\n },\n mutations: {\n // 更新用户是否勾选了勾选框\n [types.UPDATE_PCD_LEAD_ADS_ISSIGNPROTOCOL](state, data) {\n state.isSignProtocol = data;\n },\n [types.UPDATE_PCD_LEAD_ADS_SHOW_PRTTOCOLTERMS](state, data) {\n state.showProtocolTerms = data;\n },\n [types.UPDATE_PCD_LEAD_ADS_ACO_PAGE_ID](state, data) {\n state.page_list = data;\n },\n [types.ADD_PCD_ITEM](state, data) {\n state.image_list.push(data);\n },\n [types.ADD_PCD_LIST](state, data = []) {\n state.image_list.push(...data);\n },\n [types.DELETE_PCD_IMAGE](state, index) {\n // image_list是图片与视频混合列表,需要找到第index个image的位置。\n // 有image_info无video_info可以判定是图片\n const targetImageIndex = tool.findNth(state.image_list, index, item => item.image_info && !item.video_info);\n\n if (targetImageIndex >= 0) {\n state.image_list.splice(targetImageIndex, 1);\n }\n },\n [types.DELETE_PCD_VIDEO](state, index) {\n // image_list是图片与视频混合列表,需要找到第index个video的位置。\n // 有video_info可以判定是视频\n const targetVideoIndex = tool.findNth(state.image_list, index, item => item.video_info);\n if (targetVideoIndex >= 0) {\n state.image_list.splice(targetVideoIndex, 1);\n }\n },\n [types.UPDATE_PCD_VIDEO](state, data) {\n const { value, index } = data;\n // image_list是图片与视频混合列表,需要找到第index个video的位置。\n // 有video_info可以判定是视频\n const targetVideoIndex = tool.findNth(state.image_list, index, item => item.video_info);\n if (targetVideoIndex >= 0) {\n state.image_list.splice(targetVideoIndex, 1, value);\n }\n },\n },\n actions: {\n data2State({ commit }, formData) {\n commit('update', {\n image_list: formData.image_list || [],\n call_to_action_list: formData.call_to_action_list || _.cloneDeep(CTA_LIST_INIT.call_to_action_list),\n title_list: formData.title_list || _.cloneDeep(TITLE_LIST_INIT.title_list),\n page_list: formData.page_list || _.cloneDeep(PAGEIDINIT),\n isSignProtocol: formData.isSignProtocol || false,\n showProtocolTerms: formData.showProtocolTerms || false,\n });\n },\n // 设置视频默认封面,index表示第几个视频\n saveVideoDefaultCover({ commit, state }, { cover, index }) {\n // image_list是图片与视频混合列表,需要找到第index个video在整个image_list的位置\n const targetVideoIndex = tool.findNth(\n state.image_list,\n index,\n item => item.video_info,\n );\n if (targetVideoIndex < 0) {\n return;\n }\n const originVideo = state.image_list[targetVideoIndex];\n const newVideo = {\n ...originVideo,\n image_info: [cover],\n };\n\n commit(types.UPDATE_PCD_VIDEO, { value: newVideo, index });\n },\n // 设置视频备选封面集,index表示第几个视频\n saveVideoBackupCovers({ commit, state }, { covers, index }) {\n // image_list是图片与视频混合列表,需要找到第index个video在整个image_list的位置\n const targetVideoIndex = tool.findNth(\n state.image_list,\n index,\n item => item.video_info,\n );\n if (targetVideoIndex < 0) {\n return;\n }\n\n const originVideo = state.image_list[targetVideoIndex];\n const newVideo = {\n ...originVideo,\n video_info: {\n ...originVideo.video_info,\n covers,\n },\n };\n\n commit(types.UPDATE_PCD_VIDEO, { value: newVideo, index });\n },\n // 获取LeadAds协议签署状态\n getLeadAdsProtocal({ commit }, data) {\n // 处理sonor异味 data命名重复问题\n return request.get(apis.creative.protocalQuery, data).then((res) => {\n const isShow = !res.data.lead_gen_signed;\n commit(types.UPDATE_PCD_LEAD_ADS_SHOW_PRTTOCOLTERMS, isShow);\n }).catch((e) => { });\n },\n },\n});\n","import _ from 'lodash';\nimport { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\nimport { ADVANCED_CREATIVE_TYPE } from 'src/const/state/call-to-action';\n\nexport const INIT = {\n call_to_action_type: ADVANCED_CREATIVE_TYPE.default,\n call_to_action_id: undefined,\n call_to_action_list: [\n {\n call_to_action: '',\n },\n ],\n};\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-cta',\n call_to_action_type: INIT.call_to_action_type,\n call_to_action_id: INIT.call_to_action_id,\n call_to_action_list: _.cloneDeep(INIT.call_to_action_list),\n },\n getters: {\n formItemData4Show(state) {\n return {\n call_to_action_type: state.call_to_action_type,\n call_to_action_id: state.call_to_action_id,\n call_to_action_list: state.call_to_action_list,\n };\n },\n formItemData4Hide() {\n return {\n call_to_action_id: INIT.call_to_action_id,\n call_to_action_type: INIT.call_to_action_type,\n call_to_action_list: [],\n };\n },\n // 由form group module的state控制是否展示call to action\n isVisible(state, getters) {\n return getters.formGroupState.showCta;\n },\n },\n mutations: {\n [types.ADD_PCD_CTA](state) {\n state.call_to_action_list.push({\n call_to_action: '',\n });\n },\n [types.DELETE_PCD_CTA](state, index) {\n state.call_to_action_list.splice(index, 1);\n },\n [types.CLEAR_PCD_CTA](state) {\n state.call_to_action_list = [];\n },\n [types.UPDATE_PCD_CTA](state, { index, value }) {\n const old = state.call_to_action_list[index];\n if (old) {\n delete old.reject_reason; // 变动标题时删除拒审理由\n state.call_to_action_list.splice(index, 1, {\n ...old,\n call_to_action: value,\n });\n }\n },\n [types.UPDATE_PCD_CTA_TYPE](state, type) {\n state.call_to_action_type = type;\n },\n [types.UPDATE_PCD_CTA_ID](state, ctaId) {\n state.call_to_action_id = ctaId;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const { call_to_action_id, call_to_action_list = [] } = formData;\n commit('update', {\n call_to_action_id,\n call_to_action_list: call_to_action_list.length ? call_to_action_list : _.cloneDeep(INIT.call_to_action_list),\n });\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-deffered-deeplink',\n open_url: '',\n is_open_url: 0,\n auto_open: 0,\n external_url: '',\n fallback_type: 0,\n enableUrl: false,\n },\n getters: {\n formItemData(state) {\n return {\n open_url: state.open_url,\n is_open_url: state.is_open_url,\n auto_open: state.auto_open,\n external_url: state.external_url,\n fallback_type: state.fallback_type,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_OPEN_URL](state, data) {\n state.open_url = data;\n },\n // auto_open=2 标识 deffered-deeplink 的链接(app install 下用的)\n [types.UPDATE_PCD_DEFFERED_DEEPLINK_IS_OPEN_URL](state, data) {\n state.is_open_url = data;\n state.auto_open = +state.is_open_url === 1 ? 2 : 0;\n },\n // auto_open = 0 标识 deeplink (traffic,conversion 下用的)\n [types.UPDATE_PCD_DEEPLINK_IS_OPEN_URL](state, data) {\n state.is_open_url = data;\n state.auto_open = 0;\n // // deeplink 如果显示, fallback_type 默认选中1\n // // traffic-app下,fallback_type 可以修改, conversion-app 下,页面上不展示 fallback_type ,但是需要传1\n // if (+state.is_open_url === 1) {\n // state.fallback_type = 1;\n // } else {\n // state.external_url = '';\n // state.fallback_type = 0;\n // }\n },\n [types.UPDATE_PCD_EXTERNAL_URL](state, data) {\n state.external_url = data;\n },\n [types.UPDATE_PCD_ENABLE_URL](state, data) {\n state.enableUrl = data;\n },\n [types.UPDATE_PCD_FALLBACK_TYPE](state, data) {\n state.fallback_type = data;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n open_url: formData.open_url,\n is_open_url: formData.is_open_url,\n auto_open: formData.auto_open,\n external_url: formData.external_url,\n fallback_type: formData.fallback_type,\n };\n // 在编辑、复制、use exist新建时,如果后端返回的创意名称是空的,则需要再次勾选checkbox\n // 使用setPcdAdByCreativeDetail方法时,会设置resetAutoName,其余情况默认false\n commit('update', data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-identity',\n identity_type: 0, // identity账号类型\n identity_id: '', // identity账号Id\n identity_data: {}, // identity账号信息\n },\n getters: {\n formItemData(state) {\n return {\n identity_type: state.identity_type || 0,\n identity_id: state.identity_id || '',\n identity_data: state.identity_data || {},\n };\n },\n pcdIdentityData(state) {\n return state.identity_data || {};\n },\n },\n mutations: {\n [types.UPDATE_PCD_IDENTITY_TYPE](state, type = 0) {\n state.identity_type = type;\n },\n [types.UPDATE_PCD_IDENTITY_ID](state, id = '') {\n state.identity_id = id;\n },\n [types.UPDATE_PCD_IDENTITY_DATA](state, data = {}) {\n state.identity_data = data;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n identity_type: formData.identity_type || 0,\n identity_id: formData.identity_id || '',\n identity_data: formData.identity_data || {},\n };\n const {\n identity_id, identity_type, avatar_icon, source, app_name,\n } = formData;\n // 处理复制或编辑时对identity_data的回填\n if (identity_id && identity_type && !Object.keys(data.identity_data).length) {\n data.identity_data = {\n identity_id,\n identity_type,\n avatar_icon,\n display_name: source || app_name,\n };\n }\n commit('update', data);\n },\n identityData2State({ commit }, initData = {}) {\n const data = {\n identity_id: initData.identity_id,\n identity_type: initData.identity_type,\n avatar_icon: initData.avatar_icon,\n display_name: initData.display_name,\n };\n commit(types.UPDATE_PCD_IDENTITY_DATA, data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-lib-auth',\n is_creative_authorized: false,\n },\n getters: {\n formItemData(state) {\n return {\n is_creative_authorized: state.is_creative_authorized,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_CREATIVE_LIB_AUTH](state, val) {\n state.is_creative_authorized = val;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n is_creative_authorized: !!formData.is_creative_authorized,\n };\n commit('update', data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-name',\n autoCreativeName: true,\n creative_name: '',\n },\n getters: {\n formItemData(state) {\n return {\n creative_name: state.creative_name || '',\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_AUTO_CREATIVE_NAME](state, checked) {\n state.autoCreativeName = !!checked;\n },\n [types.UPDATE_PCD_CREATIVE_NAME](state, name = '') {\n state.creative_name = name;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n creative_name: formData.creative_name || '',\n };\n // 在编辑、复制、use exist新建时,如果后端返回的创意名称是空的,则需要再次勾选checkbox\n // 使用setPcdAdByCreativeDetail方法时,会设置resetAutoName,其余情况默认false\n if (formData.resetAutoName) {\n data.autoCreativeName = !formData.creative_name;\n }\n commit('update', data);\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-optimize',\n is_presented_video: 0,\n presented_video_id_list: [],\n },\n getters: {\n formItemData(state) {\n return {\n is_presented_video: state.is_presented_video,\n presented_video_id_list: state.presented_video_id_list,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_OPTIMIZE](state, val) {\n state.is_presented_video = val ? 1 : 0;\n },\n [types.UPDATE_PCD_OPTIMIZE_VIDEO](state, val) {\n state.presented_video_id_list = val;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n is_presented_video: formData.is_presented_video,\n presented_video_id_list: formData.presented_video_id_list,\n };\n commit('update', data);\n },\n },\n});\n","import _ from 'lodash';\nimport { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport const INIT = {\n title_list: [\n {\n title: '',\n },\n ],\n};\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-title-list',\n title_list: _.cloneDeep(INIT.title_list),\n },\n getters: {\n formItemData(state) {\n return {\n title_list: state.title_list,\n };\n },\n },\n mutations: {\n [types.ADD_PCD_TITLE](state, data) {\n state.title_list.push({\n title: data,\n });\n },\n [types.ADD_SMART_TEXT_PCD_TITLE](state, data) {\n // 找一下第一条空文案序号\n const firstBlankTitleIndex = state.title_list.findIndex(item => item.title === '');\n // 是否有空文案\n const hasBlankTitle = firstBlankTitleIndex !== -1;\n const { title = '', smartTextInfo } = data;\n // 组装智能文案对象\n const smartTextItem = {\n title,\n smartTextInfo,\n };\n // 如果有空文案,替换空文案\n if (hasBlankTitle) {\n state.title_list.splice(firstBlankTitleIndex, 1, smartTextItem);\n } else {\n // 否则执行追加\n state.title_list.push(smartTextItem);\n }\n },\n [types.DELETE_PCD_TITLE](state, index) {\n state.title_list.splice(index, 1);\n },\n [types.UPDATE_PCD_TITLE](state, data) {\n const { index, value, extraAttr = {} } = data;\n const old = state.title_list[index];\n delete old.reject_reason; // 变动标题时删除拒审理由\n state.title_list.splice(index, 1, {\n ...old,\n title: value,\n ...extraAttr,\n });\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const list = formData.title_list && formData.title_list.length\n ? formData.title_list\n : _.cloneDeep(INIT.title_list);\n commit('update', {\n title_list: list,\n });\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\nimport * as types from 'src/store/types';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'procedural-creative-tracking-url',\n track_url: [],\n action_track_url: [],\n vast_moat: 0,\n vast_double_verify: 0,\n vast_ias: false,\n vast_url: '',\n domain: '',\n },\n getters: {\n formItemData(state) {\n return {\n track_url: state.track_url,\n action_track_url: state.action_track_url,\n vast_moat: state.vast_moat,\n vast_double_verify: state.vast_double_verify,\n vast_ias: state.vast_ias,\n vast_url: state.vast_url,\n domain: state.domain,\n };\n },\n },\n mutations: {\n [types.UPDATE_PCD_TRACK_URL](state, url = '') {\n state.track_url = url;\n },\n [types.UPDATE_PCD_DOMAIN](state, domain = '') {\n state.domain = domain;\n },\n [types.UPDATE_PCD_ACTION_TRACK_URL](state, url = '') {\n state.action_track_url = url;\n },\n [types.UPDATE_PCD_VAST_MOAT](state, url = '') {\n state.vast_moat = url;\n },\n [types.UPDATE_PCD_VAST_DV](state, url = '') {\n state.vast_double_verify = url;\n },\n [types.UPDATE_PCD_VAST_IAS](state, url = '') {\n state.vast_ias = url;\n },\n [types.UPDATE_PCD_VAST_URL](state, url = '') {\n state.vast_url = url;\n },\n },\n actions: {\n data2State({ commit }, formData) {\n const data = {\n track_url: formData.track_url,\n action_track_url: formData.action_track_url,\n vast_moat: formData.vast_moat,\n vast_double_verify: formData.vast_double_verify,\n vast_ias: formData.vast_ias,\n vast_url: formData.vast_url,\n domain: formData.domain,\n };\n\n commit('update', data);\n },\n },\n});\n","import _ from 'lodash';\nimport {\n extendsModule, baseForm, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport * as types from 'src/store/types';\n\nimport { setIdentityData } from 'src/store/modules/creative/normal-creative/helpers';\nimport { isCreativeHasIdentityWhite } from 'src/const/whiteList';\nimport formGroupMain from './form-group-main';\n\nexport default extendsModule(baseForm, {\n state: {\n _moduleKey: 'procedural-creative-form',\n _formGroups: moduleKeys([formGroupMain]),\n\n activeType: '', // 默认video\n identityAuthorizationState: 0,\n },\n getters: {\n pcdAdStorageKey(state, getters, rootState, rootGetter) {\n return `${rootGetter['campaign/modelKey']}:procedural-ad`;\n },\n\n },\n mutations: {\n [types.UPDATE_ACTIVE_TYPE](state, type) {\n state.activeType = type;\n },\n [types.SET_PCD_IDENTITY_AUTHORIZATION_STATE](state, status) {\n state.identityAuthorizationState = status;\n },\n },\n actions: {\n setPcdAd({ dispatch }, formData = {}) {\n dispatch('fillForm', formData);\n },\n savePcdAdDraft({ getters }, ad) {\n try {\n window.localStorage.setItem(getters.pcdAdStorageKey, JSON.stringify(ad));\n } catch (e) {\n // 修复因为localStorage内存溢出导致的报错:The quota has been exceeded。\n }\n },\n loadPcdAdDraft({ getters }) {\n const ad = localStorage.getItem(getters.pcdAdStorageKey);\n return ad ? JSON.parse(ad) : null;\n },\n removePcdAdDraft({ getters }) {\n localStorage.removeItem(getters.pcdAdStorageKey);\n },\n removePcdAdData({ dispatch }) {\n dispatch('removePcdAdDraft'); // 清理本地缓存\n dispatch('creative/playable-card-form/resetPlayable', null, { root: true }); // 重置试玩信息\n dispatch('setPcdAd'); // 重置创意素材\n },\n // 利用后端创意详情接口数据设置vuex\n async setPcdAdByCreativeDetail({ commit, dispatch }, creativeDetail = {}) {\n const clone = _.cloneDeep(creativeDetail);\n clone.call_to_action_list = clone.advanced_creative;\n clone.resetAutoName = true; // 表示需要重新设置创意名称自动生成checkbox\n if (isCreativeHasIdentityWhite()) {\n // 编辑和复制时 对历史数据identity字段处理\n const res = await setIdentityData(clone);\n const { adDetail = {}, availableStatus } = res;\n if (_.has(adDetail, 'identity_id')) {\n clone.identity_data = adDetail.identity_data;\n clone.identity_id = adDetail.identity_id;\n clone.identity_type = adDetail.identity_type;\n }\n if (typeof availableStatus === 'number') {\n commit(types.SET_PCD_IDENTITY_AUTHORIZATION_STATE, availableStatus);\n }\n }\n\n dispatch('fillForm', clone); // 设置素材信息\n dispatch('creative/playable-card-form/openAndSetPlayableUrl', creativeDetail.playable_url, { root: true }); // 设置试玩信息\n },\n },\n modules: registerMfModule([formGroupMain]),\n});\n","\nimport * as types from 'src/store/types';\nimport * as service from 'src/service/dashboard';\nimport { EnumLifetimeType } from 'src/const/date';\nimport { captureError } from 'src/logger/errorLogger';\nimport { hasDedicatedCampaign, diagnosisSuggestionNum } from 'src/service';\nimport { isIOS14StatisticWhite } from 'src/const/whiteList';\nimport request from 'src/utils/request';\nimport apis from 'src/const/apis';\n\nconst dashboard = {\n namespaced: true,\n state: {\n startTime: '',\n endTime: '',\n overviewData: [],\n lifetime: EnumLifetimeType.unchosen,\n suggestionFilters: null,\n hasDedicatedCampaignExist: false,\n diagnosisSuggestionNumObj: { // diagnosis suggestion 诊断建议 不同情况的数目\n normal: 0, // 表现正常\n optimize: 0, // 建议优化\n shutdown: 0, // 建议关停\n },\n },\n getters: {\n diagnosisSuggestionNumObj: state => state.diagnosisSuggestionNumObj,\n startTime: state => state.startTime || '',\n endTime: state => state.endTime || '',\n overviewData: state => state.overviewData || [],\n // 数据统计部分使用,综合了当前账户是否创建过dedicated campaign 的状态和 是否白名单开启的状态 其他部分的同学不要使用!\n isDedicatedCampaignExist: state => state.hasDedicatedCampaignExist && isIOS14StatisticWhite(),\n },\n mutations: {\n [types.SET_END_TIME](state, endTime) {\n state.endTime = endTime;\n },\n [types.SET_START_TIME](state, startTime) {\n state.startTime = startTime;\n },\n [types.SET_OVERVIEW_DATA](state, data) {\n state.overviewData = data;\n },\n [types.SET_LIFE_TIME](state, data) {\n state.lifetime = data;\n },\n [types.SET_SUGGESTION_FILTERS](state, data) {\n state.suggestionFilters = data;\n },\n [types.SET_DIAGNOSIS_SUGGESTION_NUM_OBJ](state, data) {\n state.diagnosisSuggestionNumObj = data;\n },\n [types.SET_DEDICATED_CAMPAIGN](state, data) {\n state.hasDedicatedCampaignExist = data;\n },\n [types.SET_DEDICATED_CAMPAIGN](state, data) {\n state.hasDedicatedCampaignExist = data;\n },\n },\n actions: {\n async getSuggestionFilters({ commit, state }, args) {\n let data = null;\n try {\n const resp = await service.suggestionFilters(args);\n data = resp && resp.data ? resp.data : null;\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_SUGGESTION_FILTERS, data);\n return data;\n },\n async getDiagnosisSuggestionNum({ commit }) {\n let data = {\n normal: 0,\n optimize: 0,\n shutdown: 0,\n };\n try {\n const resp = await diagnosisSuggestionNum();\n data = resp && resp.data ? resp.data : {\n normal: 0,\n optimize: 0,\n shutdown: 0,\n };\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_DIAGNOSIS_SUGGESTION_NUM_OBJ, data);\n return data;\n },\n getIosWebAlertStatus({ commit }, data) { // 协议查询\n return request.get(apis.creative.protocolQuery, data);\n },\n async getDedicatedCampaignExist({ commit, state }) {\n let data = null;\n try {\n const resp = await hasDedicatedCampaign({\n setting_type: 4,\n setting_dimension: 1,\n });\n data = !!resp?.data?.is_exist;\n } catch (err) {\n data = null;\n }\n commit(types.SET_DEDICATED_CAMPAIGN, !!data);\n },\n },\n\n};\n\nexport default dashboard;\n","import axios from 'axios';\nimport * as types from 'src/store/types';\nimport { getDiagnosisActionHistory, getDiagnosisConsumption, getDiagnosisSuggestion } from 'src/service/inspect';\nimport { getTodayByTimezone, getDate } from 'src/utils/dateUtil';\nimport moment from 'moment';\nimport _ from 'lodash';\n\nconst { CancelToken } = axios;\n\n/** @type {Function} */\nlet cancelGetDiagnosisConsumption;\n// const testId = '1700920852040726';\nconst INITIAL_STATE = {\n adGroupId: '',\n\n suggestionData: {},\n consumption: {\n cpc: {\n value: 1234234,\n percentage: -0.5,\n },\n convert: {\n value: 111234,\n percentage: 0.36,\n },\n cpa: {\n value: 199999,\n percentage: -0.5,\n },\n cpm: {\n value: 3456456,\n percentage: 0,\n },\n ctr: {\n value: 0.52,\n percentage: 0.5,\n },\n cost: {\n value: 345834953485,\n percentage: -0.5,\n },\n },\n\n actionsHistory: {\n actions: [],\n cost_conversion_trends: [],\n },\n adGroup: {},\n diagnosisLoading: true,\n smbFirstRequest: true,\n libraResult: true,\n};\n\nconst diagnosis = {\n namespaced: true,\n state: _.cloneDeep(INITIAL_STATE),\n getters: {\n libraResultIsTrue(state) {\n return state.libraResult;\n },\n },\n mutations: {\n resetStore(state) {\n Object.assign(state, _.cloneDeep(INITIAL_STATE));\n },\n setSuggestionData(state, data) {\n state.suggestionData = data;\n },\n setAdGroup(state, data) {\n state.adGroup = data;\n },\n setLoading(state, value) {\n state.diagnosisLoading = value;\n },\n setConsumption(state, data) {\n state.consumption = data;\n },\n setActionsHistory(state, data) {\n state.actionsHistory = data;\n },\n [types.SET_SMB_FIRST_REQUEST](state, data) {\n state.smbFirstRequest = data;\n },\n [types.SET_LIBRA_RESULT](state, data) {\n state.libraResult = data;\n },\n },\n actions: {\n async reloadSuggestionData({ state, commit }) {\n try {\n commit('setLoading', true);\n const resp = await getDiagnosisSuggestion({ ad_id: state.adGroup.ad_id });\n if (resp?.data) commit('setSuggestionData', resp.data);\n commit('setLoading', false);\n } catch {\n commit('setLoading', false);\n }\n },\n async loadConsumptionData({ state, commit }) {\n cancelGetDiagnosisConsumption && cancelGetDiagnosisConsumption();\n const resp = await getDiagnosisConsumption({ ad_id: state.adGroup.ad_id }, {\n cancelToken: new CancelToken((c) => {\n cancelGetDiagnosisConsumption = c;\n }),\n });\n\n commit('setConsumption', resp.data);\n },\n async initDiagnosisData({ state, commit, dispatch }) {\n commit('setLoading', true);\n try {\n const resp = await Promise.all([\n getDiagnosisActionHistory({ ad_id: state.adGroup.ad_id }),\n getDiagnosisSuggestion({ ad_id: state.adGroup.ad_id }),\n dispatch('loadConsumptionData'),\n ]);\n const { cost_conversion_trends } = resp[0].data;\n const momentWithTZ = getDate();\n const accountToday = getTodayByTimezone();\n const daysList = [];\n for (let i = 0; i < 14; i++) {\n daysList.push(moment(accountToday)\n .subtract(i, 'days')\n .format('YYYY-MM-DD'));\n }\n daysList.reverse();\n const finalData = [];\n daysList.forEach((item) => {\n const index = cost_conversion_trends.findIndex(trend => item === momentWithTZ(Number(trend.timestamp))\n .format('YYYY-MM-DD'));\n if (index > -1) {\n finalData.push({\n ...cost_conversion_trends[index],\n date: item,\n });\n } else if (finalData.length === 0) {\n finalData.push({\n accumulate_conversion: 0,\n accumulate_cost: 0,\n daily_cost: 0,\n date: item,\n });\n } else {\n finalData.push({\n ...finalData[finalData.length - 1],\n date: item,\n daily_cost: 0,\n });\n }\n });\n commit('setActionsHistory', {\n ...resp[0].data,\n cost_conversion_trends: finalData,\n });\n commit('setSuggestionData', resp[1].data);\n commit('setLoading', false);\n } catch {\n commit('resetStore');\n }\n },\n },\n};\n\nexport default diagnosis;\n","import * as types from 'src/store/types';\nimport { CREATION_TYPE } from 'src/const/state/campaign';\nimport * as service from 'src/service/efficient-tool';\n\nconst SET_LOADING_STATE = `campaign/adgroup/${types.SET_LOADING_STATE}`;\n\nconst efficientTool = {\n namespaced: true,\n state: {\n versionObjectiveData: null, // version 对应的 objective 数据\n creationType: '', // 创编类型, 区分是普通创编还是使用效率工具的创编\n versionActionType: '', // version 的操作类型, 区分当前是新建、编辑 version\n },\n getters: {\n isCampaignPlanerCreation(state) {\n return state.creationType === CREATION_TYPE.campaignPlaner;\n },\n isCampaignPlanerCreate(state) {\n return state.versionActionType === 'create';\n },\n isCampaignPlanerEdit(state) {\n return state.versionActionType === 'edit';\n },\n rfCreationType(state, getters) { // rnf 埋点使用,区分cp和normal rnf\n return getters.isCampaignPlanerCreation ? 'campaign-forecaster' : 'normal';\n },\n },\n mutations: {\n [types.SET_CREATION_TYPE](state, type = CREATION_TYPE.campaignPlaner) {\n state.creationType = type;\n },\n [types.SET_VERSION_ACTION_TYPE](state, type = 'create') {\n state.versionActionType = type;\n },\n [types.SET_VERSION_OBJECTIVE_DATA](state, data) {\n state.versionObjectiveData = data;\n },\n },\n actions: {\n /**\n * 创建 plan\n * @param {*} store\n * @param {*} postData 提交的 plan 数据\n * @returns 返回接口的数据\n */\n async submitCreatePlan({ commit }, postData) {\n let data;\n try {\n data = await service.createPlan(postData);\n } catch (err) {\n data = {};\n }\n return data;\n },\n /**\n * 创建 version\n *\n * @param {*}\n * @param {*} postData 提交的 version 数据\n * @returns 返回接口的数据\n */\n async submitCreateVersion({ commit }, postData) {\n let data;\n try {\n commit(SET_LOADING_STATE, { status: true }, { root: true });\n data = await service.createVersion(postData);\n commit(SET_LOADING_STATE, { status: false }, { root: true });\n } catch (err) {\n data = {};\n commit(SET_LOADING_STATE, { status: false }, { root: true });\n }\n return data;\n },\n\n /**\n * 更新 version\n *\n * @param {*}\n * @param {*} postData 提交的 version 数据\n * @returns 返回接口的数据\n */\n async submitUpdateVersion({ commit }, postData) {\n let data;\n try {\n commit(SET_LOADING_STATE, { status: true }, { root: true });\n data = await service.updateVersion(postData);\n commit(SET_LOADING_STATE, { status: false }, { root: true });\n } catch (err) {\n data = {};\n commit(SET_LOADING_STATE, { status: false }, { root: true });\n }\n return data;\n },\n\n /**\n * 获取 version 详情\n *\n * @param {*}\n * @param {*} params 包含 version id 的参数\n * @returns 返回 version 信息\n */\n async getVersionDetail({ commit }, params) {\n let data;\n try {\n data = await service.getVersion(params);\n } catch (err) {\n data = {};\n }\n return data;\n },\n },\n\n};\n\nexport default efficientTool;\n","import { registerMfModule } from 'src/store/base';\nimport account from './account';\nimport ad from './ad';\nimport audience from './audience';\nimport bc from './bc';\nimport brand from './brand';\nimport campaign from './campaign';\nimport catalog from './catalog';\nimport contract from './contract';\nimport creative from './creative';\nimport dashboard from './dashboard';\nimport library from './library';\nimport notify from './notify';\nimport payment from './payment';\nimport perf from './perf';\nimport report from './report';\nimport smbSupport from './smb-support';\nimport tanblock from './tanblock';\nimport teaAnalyze from './tea-analyze';\nimport operationLog from './tool';\nimport transaction from './transaction';\nimport user from './user';\nimport rf from './rf';\nimport qualification from './qualification';\nimport efficientTool from './efficient-tool';\nimport diagnosis from './diagnosis';\nimport shop from './shop';\nimport commonTcc from './common-tcc';\nimport popupStatus from './popup-status';\n\nexport default {\n ad,\n account,\n audience,\n campaign,\n ...registerMfModule([creative]),\n brand,\n dashboard,\n operationLog,\n ...registerMfModule([library]),\n notify,\n payment,\n transaction,\n perf,\n report,\n teaAnalyze,\n tanblock,\n user,\n contract,\n smbSupport,\n catalog,\n bc,\n rf,\n qualification,\n efficientTool,\n diagnosis,\n shop,\n commonTcc,\n popupStatus,\n};\n","import { registerMfModule } from 'src/store/base';\nimport list from './list';\nimport image from './library-image';\nimport video from './library-video';\nimport playable from './library-playable';\nimport playableCheck from './playable-check';\n\nexport default {\n namespaced: true,\n state: {\n _moduleKey: 'library',\n },\n modules: {\n list,\n image,\n video,\n playable,\n ...registerMfModule([playableCheck]),\n },\n};\n","import moment from 'moment';\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport { EnumLifetimeType } from 'src/const/date';\nimport { MATERIAL_TYPE } from 'src/const/state/ad';\nimport { SORT_ORDER } from 'src/const/statistics/metrics-emun';\nimport { EnumImageInfo } from 'src/const/statistics/basic-base-info';\nimport { TIME_FORMAT } from 'src/utils/dateUtil';\n\n\nconst defaultBaseInfoKey = EnumImageInfo.map(item => item.key);\nconst today = moment().format(TIME_FORMAT);\nconst stday = moment().add(-7, 'd').format(TIME_FORMAT);\n\nconst defaultImageStatKeys = [\n 'stat_cost',\n 'cpc',\n 'cpm',\n 'show_cnt',\n 'click_cnt',\n 'ctr',\n];\n\nexport default {\n namespaced: true,\n\n state: {\n loading: false, // 表格 loading\n list: [],\n selectedKeys: [...defaultImageStatKeys],\n currentCustomKey: 'default',\n defaultColKeys: defaultImageStatKeys,\n\n sortState: 'create_time',\n sortOrder: SORT_ORDER.DECENT,\n pagination: {\n limit: 20,\n page: 1,\n page_count: 1,\n },\n\n lifeTime: EnumLifetimeType.unchosen,\n st: stday,\n et: today,\n filterOptions: {\n keyword: '',\n country: [],\n image_mode: [],\n placement_id: [],\n cost: {\n cost_lower: 0,\n cost_upper: 0,\n },\n },\n },\n\n mutations: {\n changeLoading(state, data) {\n state.loading = data;\n },\n changeList(state, data) {\n state.list = data;\n },\n changeCustom(state, data) {\n state.selectedKeys = data;\n },\n changeSortData(state, data) {\n // 默认 create_time 降序\n if (!data || !data.sortState) {\n state.sortState = 'create_time';\n state.sortOrder = SORT_ORDER.DECENT;\n return;\n }\n state.sortState = data.sortState;\n state.sortOrder = data.sortOrder;\n },\n switchCustom(state, data) {\n const { key, columns } = data;\n state.currentCustomKey = key;\n if (columns) {\n state.selectedKeys = columns;\n }\n },\n changePagination(state, data) {\n state.pagination = {\n ...state.pagination,\n ...data,\n };\n },\n changeDate(state, data) {\n state.lifeTime = data.lifeTime;\n state.st = data.st;\n state.et = data.et;\n },\n changeFilterOptions(state, data) {\n state.filterOptions = {\n ...state.filterOptions,\n ...data,\n };\n },\n },\n\n getters: {\n requestData(state) {\n const metrics = state.selectedKeys.filter(item => !defaultBaseInfoKey.includes(item));\n\n return {\n m_type: MATERIAL_TYPE.IMAGE,\n metrics,\n is_lifetime: state.lifeTime,\n st: state.st,\n et: state.et,\n order_field: state.sortState,\n order_type: state.sortOrder,\n page: state.pagination.page,\n page_size: state.pagination.limit,\n keyword: state.filterOptions.keyword,\n country: state.filterOptions.country,\n image_mode: state.filterOptions.image_mode,\n placement_id: state.filterOptions.placement_id,\n cost_lower: !state.filterOptions.cost.cost_lower ? '' : String(state.filterOptions.cost.cost_lower),\n cost_upper: !state.filterOptions.cost.cost_upper ? '' : String(state.filterOptions.cost.cost_upper),\n };\n },\n },\n\n actions: {\n // 获取列表数据\n getImageList({ commit, state, getters }, data) {\n const { requestData } = getters;\n\n commit('changeLoading', true);\n return request.post(apis.library.material_list, requestData)\n .then(({ data }) => {\n const list = data.material_infos.map(item => ({\n ...item.base_info,\n ...item.metrics,\n id: item.base_info.material_id, // 用于列表选择操作\n }));\n const pagination = {\n limit: data.page_size || 20,\n page: data.page || 1,\n page_count: Math.ceil(data.total / data.page_size) || 1,\n };\n\n commit('changeList', list);\n commit('changePagination', pagination);\n commit('changeLoading', false);\n })\n .catch((e) => {\n commit('changeLoading', false);\n });\n },\n },\n};\n","import moment from 'moment';\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport { EnumLifetimeType } from 'src/const/date';\nimport { SORT_ORDER } from 'src/const/statistics/metrics-emun';\nimport { EnumVideoInfo } from 'src/const/statistics/basic-base-info';\nimport { TIME_FORMAT } from 'src/utils/dateUtil';\n\nconst defaultBaseInfoKey = EnumVideoInfo.map(item => item.key);\nconst today = moment().format(TIME_FORMAT);\nconst stday = moment().add(-7, 'd').format(TIME_FORMAT);\n\nconst defaultPlayableStatKeys = [\n 'stat_cost',\n 'cpm',\n 'show_cnt',\n 'click_cnt',\n 'ctr',\n];\n\nexport default {\n namespaced: true,\n\n state: {\n loading: false, // 表格 loading\n list: [],\n selectedKeys: [...defaultPlayableStatKeys],\n currentCustomKey: 'default',\n defaultColKeys: defaultPlayableStatKeys,\n\n sortState: 'create_time',\n sortOrder: SORT_ORDER.DECENT,\n pagination: {\n limit: 20,\n page: 1,\n page_count: 1,\n },\n\n lifeTime: EnumLifetimeType.unchosen,\n st: stday,\n et: today,\n filterOptions: {\n keyword: '',\n country: [],\n playable_orientation: [],\n placement_id: [],\n cost: {\n cost_lower: 0,\n cost_upper: 0,\n },\n },\n },\n\n mutations: {\n changeLoading(state, data) {\n state.loading = data;\n },\n changeList(state, data) {\n state.list = data;\n },\n changeCustom(state, data) {\n state.selectedKeys = data;\n },\n changeSortData(state, data) {\n // 默认 create_time 降序\n if (!data || !data.sortState) {\n state.sortState = 'create_time';\n state.sortOrder = SORT_ORDER.DECENT;\n return;\n }\n state.sortState = data.sortState;\n state.sortOrder = data.sortOrder;\n },\n switchCustom(state, data) {\n const { key, columns } = data;\n state.currentCustomKey = key;\n if (columns) {\n state.selectedKeys = columns;\n }\n },\n changePagination(state, data) {\n state.pagination = {\n ...state.pagination,\n ...data,\n };\n },\n changeDate(state, data) {\n state.lifeTime = data.lifeTime;\n state.st = data.st;\n state.et = data.et;\n },\n changeFilterOptions(state, data) {\n state.filterOptions = {\n ...state.filterOptions,\n ...data,\n };\n },\n },\n\n getters: {\n requestData(state) {\n const metrics = state.selectedKeys.filter(item => !defaultBaseInfoKey.includes(item));\n\n return {\n metrics,\n is_lifetime: state.lifeTime,\n st: state.st,\n et: state.et,\n order_field: state.sortState,\n order_type: state.sortOrder,\n page: state.pagination.page,\n page_size: state.pagination.limit,\n keyword: state.filterOptions.keyword,\n country_id: state.filterOptions.country,\n orientation: state.filterOptions.playable_orientation,\n placement_id: state.filterOptions.placement_id,\n cost_lower: !state.filterOptions.cost.cost_lower ? '' : String(state.filterOptions.cost.cost_lower),\n cost_upper: !state.filterOptions.cost.cost_upper ? '' : String(state.filterOptions.cost.cost_upper),\n };\n },\n },\n\n actions: {\n // 获取列表数据\n getPlayableList({ commit, state, getters }, data) {\n const { requestData } = getters;\n\n commit('changeLoading', true);\n return request.post(apis.library.new_playable_list, requestData)\n .then(({ data }) => {\n const list = data.playable_infos.map(item => ({\n ...item.base_info,\n ...item.metrics,\n id: item.base_info.playable_id, // 用于列表选择操作\n }));\n const pagination = {\n limit: data.page_size || 20,\n page: data.page || 1,\n page_count: Math.ceil(data.total / data.page_size) || 1,\n };\n\n commit('changeList', list);\n commit('changePagination', pagination);\n commit('changeLoading', false);\n })\n .catch((e) => {\n commit('changeLoading', false);\n });\n },\n },\n};\n","import moment from 'moment';\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport { EnumLifetimeType } from 'src/const/date';\nimport { MATERIAL_TYPE } from 'src/const/state/ad';\nimport { SORT_ORDER } from 'src/const/statistics/metrics-emun';\nimport { EnumVideoInfo } from 'src/const/statistics/basic-base-info';\nimport { TIME_FORMAT } from 'src/utils/dateUtil';\nimport { LIB_SEARCH_TYPE_ID_MAP } from 'src/const/state/library';\n\n\nconst defaultBaseInfoKey = EnumVideoInfo.map(item => item.key);\nconst today = moment().format(TIME_FORMAT);\nconst stday = moment().add(-7, 'd').format(TIME_FORMAT);\n\nconst defaultVideoStatKeys = [\n 'stat_cost',\n 'cpc',\n 'cpm',\n 'show_cnt',\n 'click_cnt',\n 'ctr',\n // 素材指标:\n 'create_time',\n 'source',\n 'country_full_names',\n 'placement_ids',\n 'total_active_days',\n 'creative_nums',\n];\n\nexport default {\n namespaced: true,\n\n state: {\n loading: false, // 表格 loading\n list: [],\n selectedKeys: [...defaultVideoStatKeys],\n currentCustomKey: 'default',\n defaultColKeys: defaultVideoStatKeys,\n\n sortState: 'create_time',\n sortOrder: SORT_ORDER.DECENT,\n pagination: {\n limit: 20,\n page: 1,\n page_count: 1,\n },\n\n lifeTime: EnumLifetimeType.unchosen,\n st: stday,\n et: today,\n filterOptions: {\n keyword: '',\n keyword_type: LIB_SEARCH_TYPE_ID_MAP.SEARCH_VIDEO_MATERIAL,\n country: [],\n image_mode: [],\n placement_id: [],\n cost: {\n cost_lower: 0,\n cost_upper: 0,\n },\n source: [],\n conversion: {\n conversion_lower: 0,\n conversion_upper: 0,\n },\n },\n },\n\n mutations: {\n changeLoading(state, data) {\n state.loading = data;\n },\n changeList(state, data) {\n state.list = data;\n },\n changeCustom(state, data) {\n state.selectedKeys = data;\n },\n changeSortData(state, data) {\n // 默认 create_time 降序\n if (!data || !data.sortState) {\n state.sortState = 'create_time';\n state.sortOrder = SORT_ORDER.DECENT;\n return;\n }\n state.sortState = data.sortState;\n state.sortOrder = data.sortOrder;\n },\n switchCustom(state, data) {\n const { key, columns } = data;\n state.currentCustomKey = key;\n if (columns) {\n state.selectedKeys = columns;\n }\n },\n changePagination(state, data) {\n state.pagination = {\n ...state.pagination,\n ...data,\n };\n },\n changeDate(state, data) {\n state.lifeTime = data.lifeTime;\n state.st = data.st;\n state.et = data.et;\n },\n changeFilterOptions(state, data) {\n state.filterOptions = {\n ...state.filterOptions,\n ...data,\n };\n },\n },\n\n getters: {\n requestData(state) {\n const metrics = state.selectedKeys.filter(item => !defaultBaseInfoKey.includes(item));\n const base_infos = state.selectedKeys\n .filter(item => defaultBaseInfoKey.includes(item))\n // 特殊逻辑:如果选择了lifeTime,则后端无法提供 total_active_days,过滤掉\n .filter(item => (state.lifeTime\n ? item !== 'total_active_days'\n : true));\n\n return {\n m_type: MATERIAL_TYPE.VIDEO,\n metrics,\n base_infos,\n is_lifetime: state.lifeTime,\n st: state.st,\n et: state.et,\n order_field: state.sortState,\n order_type: state.sortOrder,\n page: state.pagination.page,\n page_size: state.pagination.limit,\n keyword: state.filterOptions.keyword,\n keyword_type: Number(state.filterOptions.keyword_type),\n country: state.filterOptions.country,\n image_mode: state.filterOptions.image_mode,\n placement_id: state.filterOptions.placement_id,\n source: state.filterOptions.source,\n cost_lower: String(state.filterOptions.cost.cost_lower),\n cost_upper: String(state.filterOptions.cost.cost_upper),\n conversion_lower: String(state.filterOptions.conversion.conversion_lower),\n conversion_upper: String(state.filterOptions.conversion.conversion_upper),\n };\n },\n },\n\n actions: {\n // 获取列表数据\n getVideoList({ commit, state, getters }, data) {\n const { requestData } = getters;\n commit('changeLoading', true);\n return request.post(apis.library.material_list, requestData)\n .then(({ data }) => {\n const list = data.material_infos.map(item => ({\n ...item.base_info,\n ...item.metrics,\n id: item.base_info.material_id, // 用于列表选择操作\n }));\n const pagination = {\n limit: data.page_size || 20,\n page: data.page || 1,\n page_count: Math.ceil(data.total / data.page_size) || 1,\n };\n\n commit('changeList', list);\n commit('changePagination', pagination);\n commit('changeLoading', false);\n })\n .catch((e) => {\n commit('changeLoading', false);\n });\n },\n },\n};\n","/**\n * library list 相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\n\nexport default {\n namespaced: true,\n state: {\n hasPlayableMaterial: false,\n },\n mutations: {\n changeHasPlayableMaterial(state, data) {\n state.hasPlayableMaterial = data;\n },\n },\n actions: {\n getImageList(store, data) {\n return request.get(apis.library.image_list, data);\n },\n\n getVideoList(store, data) {\n return request.get(apis.library.video_list, data);\n },\n\n getPlayableList(store, data) {\n return request.get(apis.library.playable_list, data);\n },\n\n getNewPlayableList(store, data) {\n return request.get(apis.library.new_playable_list, data);\n },\n\n getNativeList(store, data) {\n return request.get(apis.library.native_list, data);\n },\n\n createNative(store, data) {\n return request.post(apis.library.native_create, data);\n },\n\n createPlayable(store, data) {\n return request.post(apis.library.playable_update_name, data);\n },\n\n deleteImage(store, data) {\n return request.post(apis.library.image_delete, data);\n },\n\n deleteVideo(store, data) {\n return request.post(apis.library.video_delete, data);\n },\n\n deletePlayable(store, data) {\n return request.post(apis.library.playable_delete, data);\n },\n\n updateImageName(store, data) {\n return request.post(apis.library.image_update_name, data);\n },\n\n updateVideoName(store, data) {\n return request.post(apis.library.video_update_name, data);\n },\n\n updatePlayableName(store, data) {\n return request.post(apis.library.playable_update_name, data);\n },\n },\n};\n","import {\n extendsModule, baseFormGroup, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport playableName from './playable-name';\nimport playableParameter from './playable-parameter';\nimport playableQrCodePreview from './playable-qr-code-preview';\nimport playableUrl from './playable-url';\n\nexport default extendsModule(baseFormGroup, {\n state: {\n _moduleKey: 'check-form-group',\n _formItems: moduleKeys([playableName, playableUrl, playableParameter, playableQrCodePreview]),\n },\n modules: registerMfModule([playableName, playableUrl, playableParameter, playableQrCodePreview]),\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'playable-name',\n name: '',\n },\n getters: {\n formItemData(state) {\n return {\n name: state.name,\n };\n },\n },\n actions: {\n data2State({ commit }, formData) {\n commit('update', {\n name: formData.name || '',\n });\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'playable-parameter',\n size: 0,\n orientation: '',\n },\n getters: {\n formItemData(state) {\n return {\n size: state.size,\n orientation: state.orientation,\n };\n },\n },\n actions: {\n data2State({ commit }, formData) {\n commit('update', {\n size: +formData.size || 0,\n orientation: formData.orientation,\n });\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'playable-qr-code-preview',\n url: '',\n },\n actions: {\n data2State({ commit }, formData) {\n commit('update', {\n url: formData.url || '',\n });\n },\n },\n});\n","import { extendsModule, baseFormItem } from 'src/store/base';\n\nexport default extendsModule(baseFormItem, {\n state: {\n _moduleKey: 'playable-url',\n url: '',\n },\n getters: {\n formItemData(state) {\n return {\n url: state.url,\n };\n },\n },\n actions: {\n data2State({ commit }, formData) {\n commit('update', {\n url: formData.url || '',\n });\n },\n },\n});\n","import {\n extendsModule, baseForm, registerMfModule, moduleKeys,\n} from 'src/store/base';\nimport formGroup from './form-group';\n\nexport default extendsModule(baseForm, {\n state: {\n _moduleKey: 'playable-check',\n _formGroups: moduleKeys([formGroup]),\n },\n modules: registerMfModule([formGroup]),\n});\n","/**\n * notify 相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\n\nexport default {\n namespaced: true,\n actions: {\n getCategoryInfo(store) {\n return request.get(apis.notify.categoryInfo);\n },\n getNotifyList(store, data) {\n return request.get(apis.notify.notify_list, data);\n },\n getNotifyInfo(store, data) {\n return request.get(apis.notify.getOne, data);\n },\n getNotifyConfig(store, data) {\n return request.get(apis.notify.config, data);\n },\n setNotifyConfig(store, data) {\n return request.post(apis.notify.config, data);\n },\n setReaded(store, data) {\n return request.post(apis.notify.read, data);\n },\n linkClick(store, data) {\n return request.post(apis.notify.click, data);\n },\n },\n};\n","/**\n * payment 支付相关\n */\nimport apis from 'src/const/apis';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\nimport { appInfoObect } from 'src/router';\nimport tool from 'src/utils/tool';\nimport { paymethodTypeMap } from 'src/const/payment';\nimport { isDashboardApiOptimizeWhite } from 'src/const/whiteList';\nimport { EnumAgentRoleAssigned } from 'src/const/agent';\nimport { accoutType } from 'src/const/account';\nimport { getAbVersion } from 'src/service/index';\n\nexport default {\n namespaced: true,\n state: {\n cardList: [], // 卡组\n cardInfo: {}, // 绑卡信息,\n chargeInfo: {}, // 支付权限\n isChargeInfoLoaded: false,\n // 授信相关\n canDecreaseAmt: false,\n amtOpState: '',\n hasGotChargeInfo: false,\n paymentBalance: {},\n paymentTax: {},\n paymentStatus: {}, // 查看一个广告主是否支付ready(预付费广告主有至少一条充值记录表示支付ready;后付费广告主有绑卡至少一张表示支付ready)\n applyInfo: {\n redirect_url: '',\n status: 0,\n has_permission: true, // 该字段只有自助接口独有,所以默认要设置 true\n },\n thresholdInfo: {\n actual_threshold: '',\n currency: '',\n has_set_manual_threshold: false,\n manual_threshold: '',\n max_threshold: '',\n min_threshold: '',\n threshold_edit_times: 0,\n },\n thresholdWhiteList: true,\n billingShareBanner: {},\n billingOwnInfo: {},\n paymentSummaryReload: null,\n balanceOptimization: {\n new_version: false,\n },\n creditInfo: {}, // 账单信息\n },\n mutations: {\n [types.SET_CREDIT_CARD](state, cards) {\n state.cardList = cards;\n },\n [types.SET_CARD_INFO](state, card) {\n state.cardInfo = card;\n },\n [types.SET_CHARGE_INFO](state, data) {\n state.chargeInfo = data;\n state.isChargeInfoLoaded = true;\n },\n [types.SET_HAS_GOT_CHARGE_INFO](state) { // 获取到了支付信息,用于通知其他依赖支付信息的页面\n state.hasGotChargeInfo = true;\n },\n [types.SET_PAYMENT_BALANCE](state, data) { // 充值余额信息,包含赠款\n state.paymentBalance = data;\n },\n [types.SET_PAYMENT_TAX](state, data) { // 充值计税税务信息\n state.paymentTax = data;\n },\n // 授信相关\n [types.SET_CAN_DECREASE_AMT](state, canDecrease) {\n state.canDecreaseAmt = canDecrease;\n },\n [types.SET_AMT_OP_STATE](state, opState) {\n state.amtOpState = opState;\n },\n [types.SET_PAYMENT_STATUS](state, paymentStatus) {\n state.paymentStatus = paymentStatus;\n },\n [types.SET_PAYMENT_APPLYINFO](state, data) {\n state.applyInfo = {\n ...state.applyInfo,\n ...data,\n };\n },\n [types.SET_THRESHOLD_INF0](state, thresholdInfo) {\n state.thresholdInfo = thresholdInfo;\n },\n [types.SET_THRESHOLD_WHITE_LIST](state, thresholdWhiteList) {\n state.thresholdWhiteList = thresholdWhiteList;\n },\n [types.SET_BILLING_SHARE_BANNER](state, data) {\n state.billingShareBanner = data;\n },\n [types.SET_BILLING_SETTING](state, data) {\n state.billingShareBanner.billing_setting = data;\n },\n [types.SET_BILLING_OWN_INFO](state, data) {\n state.billingOwnInfo = data;\n },\n [types.SET_PAYMENT_SUMMARY_RELOAD](state, fn) {\n state.paymentSummaryReload = fn;\n },\n [types.SET_BALANCE_OPTIMIZATION](state, data) {\n state.balanceOptimization = data;\n },\n [types.SET_CREDIT_INFO](state, data) {\n state.creditInfo = data;\n },\n },\n getters: {\n canNotPayReason: state => state.chargeInfo.can_not_pay_reason || '',\n isChargeInfoLoaded: state => state.isChargeInfoLoaded,\n hasContract: state => !!state.chargeInfo.has_contract,\n hasPayment: state => !!state.chargeInfo.has_payment,\n paymentReady: state => state.paymentStatus.payment_ready,\n paymethod: state => state.chargeInfo.paymethod,\n isCreditUser: state => state.chargeInfo.paymethod === +paymethodTypeMap.CREDIT, // 是否信用卡后付费用户\n isCreditline: state => state.chargeInfo.paymethod === +paymethodTypeMap.CREDIT_LINE, // 授信用户\n taxType: state => state.chargeInfo.tax_type, // -1 未打标, 0消耗计税 1 充值计税\n isShowBalanceTip: (state) => {\n const { tax_type = '-1' } = state.chargeInfo;\n return `${tax_type}` === '0' || `${tax_type}` === '1';// 发现有null存在,并且不确定返回值类型,Number(null) === 0 为 true 改为字符串判断\n },\n // 授信相关\n canAmtDialogConfirm: state => state.amtOpState === 'increase' || state.canDecreaseAmt,\n // 是否展示编辑Threshold入口的角色 --- admin权限 & 内部员工的admin账号\n canEditThresholdRole(state, getters, rootState, rootGetters) {\n const { permissionData } = rootState.account;\n return (\n permissionData?.permission?.ref_role === EnumAgentRoleAssigned.ADMIN || permissionData?.permission?.is_admin\n ) &&\n rootState.account.accountStatus === accoutType.STATUS_ENABLE;\n },\n // Threshold\n thresholdMaxEqlMin(state) {\n return state.thresholdInfo.max_threshold === state.thresholdInfo.min_threshold;\n },\n // managedByBc && bc_id && 有bc 的finance && 非虚客下,展示bc的提示或者 充值跳转到bc\n managedByBCAndHasFinance(state, getters, rootState, rootGetters) {\n const isManagedByBc = state.billingOwnInfo?.billing_managed_by_bc;\n const isBcFinanceEditor = state.billingOwnInfo?.is_billing_bc_finance_editor;\n return isManagedByBc && state.billingOwnInfo?.bc_id && isBcFinanceEditor && !(rootGetters['account/isVirtualAccount']);\n },\n // managedByBc 以下情况下,隐藏充值及卡管理的的判断标志\n // 1. 非managedByBc && billing setting 是在switch\n // 2. managedByBc && 没有bc 的finance\n // 3. managedByBc && 没有bc_id\n // 4. managedByBc && bc_id && 有bc 的finance\n managedByBcHideFunction(state, getters, rootState, rootGetters) {\n const isManagedByBc = state.billingOwnInfo?.billing_managed_by_bc;\n const isBcFinanceEditor = state.billingOwnInfo?.is_billing_bc_finance_editor;\n const isBillingSwitching = !isManagedByBc && state.billingOwnInfo?.is_in_billing_switching;\n const notHasBcFinanceEditor = isManagedByBc && !isBcFinanceEditor;\n const notHasBcId = isManagedByBc && !state.billingOwnInfo?.bc_id;\n const managedByBcAndIsVirtualAccount = isManagedByBc && state.billingOwnInfo?.bc_id && isBcFinanceEditor;\n return isBillingSwitching || notHasBcFinanceEditor || notHasBcId || managedByBcAndIsVirtualAccount;\n },\n },\n actions: {\n // 信用卡后付款相关\n bindCard(store, data) {\n return request.post(apis.payment.bindCard, data);\n },\n payNow(store, data) {\n return request.post(apis.payment.payNow, data);// 手动支付 POST\n },\n // 获取支付失败账单 upay 链接\n getPayNowLink(store, data) {\n return request.get(apis.payment.getPayNowLink, data);// GET upay sdk url\n },\n async getCardInfo({ commit }) {\n const { data } = await request.get(apis.payment.cardInfo);// 获取绑卡信息\n commit(types.SET_CARD_INFO, data);\n return data;\n },\n async getCredit({ commit }, data) {\n const res = await request.get(apis.payment.credit, data);// 获取账期\n commit(types.SET_CREDIT_INFO, res?.data || {});\n return res;\n },\n async getDashboardChargeInfo({ commit }) {\n try {\n const api = isDashboardApiOptimizeWhite()\n ? apis.payment.statistics_charge_info\n : apis.payment.charge_info;\n const { data } = await request.get(api);\n commit(types.SET_HAS_GOT_CHARGE_INFO);\n commit(types.SET_CHARGE_INFO, data);\n return data;// 补全资质需要立即返回值\n } catch (e) {\n commit(types.SET_CHARGE_INFO, {});\n return {};\n }\n },\n // 是否有支付权限\n async getChargeInfo({ commit }) {\n try {\n const { data } = await request.get(apis.payment.charge_info);\n commit(types.SET_HAS_GOT_CHARGE_INFO);\n commit(types.SET_CHARGE_INFO, data);\n return data;// 补全资质需要立即返回值\n } catch (e) {\n commit(types.SET_CHARGE_INFO, {});\n return {};\n }\n },\n\n async getIsUserPaymentStatus({ commit }, data = {}) {\n try {\n const resp = await request.get(apis.smb_support.get_payment_status, data) || {};\n const paymentStatus = (resp && resp.data) || {};\n commit(types.SET_PAYMENT_STATUS, paymentStatus);\n return paymentStatus;\n } catch (e) {\n commit(types.SET_PAYMENT_STATUS, {});\n return {};\n }\n },\n\n /**\n * 充值金额校验。注意这里的 data 里的 amount 是 number 类型的\n * @param {*} store\n * @param {Object} data\n * @returns\n */\n verifyReloadAmount(store, data) {\n return request.get(apis.payment.verifyReloadAmount, data);\n },\n\n // 获取充值税费试算\n getChargeTax(store, data) {\n return request.get(apis.payment.getChargeTax, data);\n },\n\n // 获取余额明细,RF还在用\n async getRfBalance({ commit }) {\n try {\n const { data } = await request.get(apis.payment.paymentBalance);\n commit(types.SET_PAYMENT_BALANCE, data);\n } catch (e) {\n commit(types.SET_PAYMENT_BALANCE, {});\n }\n },\n\n // 余额明细带税完整版\n async getPaymentTax({ commit }) {\n try {\n const { data } = await request.get(apis.payment.balance, {\n source: 3, // 3 代表tiktok竞价平台\n });\n commit(types.SET_PAYMENT_TAX, data);\n return data;\n } catch (e) {\n commit(types.SET_PAYMENT_TAX, {});\n return {};\n }\n },\n\n // 获取绑卡地址\n getCardBindLink(store, data) {\n const risk_info = tool.getRiskInfo();\n return request.post(apis.payment.getBindLink, { ...data, risk_info });// 获取绑卡地址\n },\n\n // 预付费调收银台支付\n submitPrepay(store, data) {\n return request.post(apis.payment.subPrePay, data);\n },\n // ---------------------- 自助授信相关 ----------------------//\n\n getCreditlineQuota({ commit }, data) {\n return request.get(apis.payment.get_creditline_quota, data);\n },\n\n increaseAmtBalance({ commit }, data) {\n return request.post(apis.payment.increase_amt_balance, data);\n },\n getDecreaseState({ commit }, data) {\n return request.get(apis.payment.get_decrease_state, data);\n },\n decreaseAmtBalance({ commit }, data) {\n return request.post(apis.payment.decrease_amt_balance, data);\n },\n getApplyCreditline({ commit }, data) {\n return request.get(apis.payment.apply_creditline, data);\n },\n async getApplyCreditlineForSelfServe({ commit }, data) {\n const info = await request.get(apis.payment.canApplyMonthlyInvoiceForSelfServe, data);\n commit(types.SET_PAYMENT_APPLYINFO, info.data || {});\n return info;\n },\n // ---------------------- 自助授信相关 ----------------------//\n\n getSharkPayment({ commit }, data) {\n const risk_info = tool.getRiskInfo();\n const event_name = 'ads_autopay_show';\n return request.post(apis.account.sharkPayment, {\n risk_info: { ...risk_info, duration: Date.now() - appInfoObect.duration },\n event_name,\n });\n },\n\n checkHistoryBill() {\n return request.get(apis.payment.checkHistoryBill);\n },\n getThreshold() {\n return request.get(apis.payment.threshold_info);\n },\n setThreshold(_, threshold) {\n return request.post(apis.payment.threshold_info, { manual_threshold: `${threshold}` });\n },\n thresholdSwitch() {\n return request.get(apis.payment.threshold_switch);\n },\n async getBillingShareBannerInfo({ commit, rootState }) {\n try {\n const res = await request.get(apis.payment.billing_share_banner, {\n ttam_account_id: rootState.account.aadvid,\n });\n commit(types.SET_BILLING_SHARE_BANNER, res?.data || {});\n // eslint-disable-next-line no-empty\n } catch (error) {}\n },\n setBillingSetting({ commit }, data) {\n commit(types.SET_BILLING_SETTING, data);\n },\n clearBillingShareBannerInfo({ commit, state }) {\n commit(types.SET_BILLING_SHARE_BANNER, {\n billing_sharing: state.billingShareBanner.billing_sharing,\n });\n },\n async getBillingOwnInfo({ commit, rootState }, data) {\n try {\n const res = await request.get(apis.payment.get_billing_owner, {\n ttam_account_id: rootState.account.aadvid,\n version: 1,\n });\n console.log('getBillingOwnInfo', res);\n commit(types.SET_BILLING_OWN_INFO, res?.data || {});\n // eslint-disable-next-line no-empty\n } catch (error) {}\n },\n setPaymentSummaryComponent({ commit }, fn) {\n commit(types.SET_PAYMENT_SUMMARY_RELOAD, fn);\n },\n setCreditInfoBillBalance({ commit, state }, billBalance) {\n commit(types.SET_CREDIT_INFO, {\n ...state.creditInfo,\n bill_balance: billBalance,\n });\n },\n async getBalanceOptimizationABTest({ commit }) {\n try {\n const res = await getAbVersion({\n ab_feature: 'ttam_balance_optimization',\n });\n const balanceOptimization = res?.ttam_balance_optimization || {\n new_version: false,\n };\n commit(types.SET_BALANCE_OPTIMIZATION, balanceOptimization);\n // eslint-disable-next-line no-empty\n } catch (error) {}\n },\n },\n};\n","/**\n * 统计列表 Campaign List\n */\nimport _ from 'lodash';\nimport moment from 'moment';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\nimport apis from 'src/const/apis';\nimport { isPerfTotalAsyncWhite, isPerfListCacheWhite, isRequiredCreativeWhite } from 'src/const/whiteList';\nimport {\n haveUVMetrics, filteredUVMetrics, mergeUVTotalData, handleUnSupportFilter,\n} from 'src/utils/perfUtil';\nimport { getAccountTodayHMS } from 'src/utils/dateUtil';\nimport { captureError } from 'src/logger/errorLogger';\nimport { sendLog } from 'src/logger/customLogger';\nimport { jsonStringify } from 'src/utils/jsonFormat';\nimport { customContent } from 'src/const/state/custom-content';\nimport { RequiredTargets } from 'src/const/state/ad';\n\n// campaign/ad/creative 列表进行拆分\nconst splitEnum = {\n // 主列表\n list: 1,\n // 汇总行\n total: 2,\n};\n\n// 短时切换 Tab 缓存时间\nconst cacheDuration = 2 * 60;\n\n// state 初始化值写在这里,方便动态生成/清理\nconst getInitialState = () => ({\n batchCustomContent: {\n columnsTemplate: [],\n filterTemplate: [],\n listQueryConfig: [],\n },\n campaign: {\n loading: false,\n listData: {},\n requestStr: '',\n timestamp: '',\n token: '',\n lastUpdateTime: '',\n total: {\n loading: false,\n error: false,\n },\n },\n ad: {\n loading: false,\n listData: {},\n requestStr: '',\n timestamp: '',\n token: '',\n lastUpdateTime: '',\n total: {\n loading: false,\n error: false,\n },\n },\n creative: {\n loading: false,\n listData: {},\n requestStr: '',\n timestamp: '',\n token: '',\n lastUpdateTime: '',\n total: {\n loading: false,\n error: false,\n },\n },\n videoSourceList: {},\n haveOperated: false,\n});\n\nexport default {\n namespaced: true,\n state: getInitialState(),\n getters: {\n columnsTemplate: state => state.batchCustomContent.columnsTemplate || [],\n filterTemplate: state => state.batchCustomContent.filterTemplate || [],\n listQueryConfig: state => state.batchCustomContent.listQueryConfig || [],\n lastUpdateTimeMap: state => ({\n campaign: state.campaign.lastUpdateTime,\n ad: state.ad.lastUpdateTime,\n creative: state.creative.lastUpdateTime,\n }),\n statisticsData: state => ({\n campaign: state.campaign.listData.statistics,\n ad: state.ad.listData.statistics,\n creative: state.creative.listData.statistics,\n }),\n isTotalLoading: state => ({\n campaign: state.campaign?.total?.loading,\n ad: state.ad?.total?.loading,\n creative: state.creative?.total?.loading,\n }),\n },\n mutations: {\n [types.SET_REQUEST_TOKEN](state, { key, token }) {\n if (state[key]) {\n state[key].token = token;\n }\n },\n [types.SET_PERF_LIST](state, { key, listObj = {} }) {\n state[key] = listObj;\n },\n [types.SET_BATCH_CUSTOM_CONTENT](state, { listObj = {} }) {\n state.batchCustomContent = listObj;\n },\n [types.SET_BATCH_CUSTOM_CONTENT_BY_KEY](state, { key, listObj = [] }) {\n (state.batchCustomContent)[key] = listObj;\n },\n [types.SET_SOURCE_LIST](state, { key, listObj = {} }) {\n state[key] = listObj;\n },\n [types.SET_PERF_OPERATED_ANCHOR](state) {\n state.haveOperated = true;\n },\n },\n actions: {\n async getPerfList({\n commit, state, getters, dispatch,\n }, { level, params }) {\n let requestErr = null;\n // 重复请求时清除之前的请求\n if (state[level]?.token) {\n state[level].token.cancel();\n }\n const cancelToken = request.axios.CancelToken;\n const source = cancelToken.source();\n commit(types.SET_REQUEST_TOKEN, {\n key: level,\n token: source,\n });\n let data = {};\n // 开白533且只有creative层级访问新接口,要带上全量的投前指标\n if (isRequiredCreativeWhite() && level === 'creative') {\n params.query_list = params.query_list.concat(RequiredTargets);\n params.is_attr_required = 1;\n }\n const requestParams = {\n ...params,\n };\n let fetchTotalAsync = false;\n const timestamp = Date.now();\n try {\n // 判断是否包含 白名单 / UV 类指标\n fetchTotalAsync = isPerfTotalAsyncWhite() && haveUVMetrics(params?.query_list || []);\n if (fetchTotalAsync) {\n // 更新时间戳、重置列表数据\n await dispatch('resetListDataWithTimestamp', { level, timestamp });\n dispatch('getTotalData', {\n level, params, timestamp, source,\n });\n requestParams.split = [splitEnum.list];\n }\n const resp = await request.post(apis[level].newStatisticList, requestParams, {\n cancelToken: source.token,\n });\n data = resp.data || {};\n const listData = data;\n const { listData: mergedData = {} } = state[level] || {};\n // 非拆分获取、拆分获取且汇总行未返回 则直接用列表数据\n // 拆分获取且汇总行已返回 需要合并汇总行数据\n if (fetchTotalAsync && !getters.isTotalLoading?.[level]) {\n listData.statistics = {\n ...data.statistics,\n ...mergeUVTotalData({\n total: mergedData.statistics,\n data: data.statistics,\n }),\n };\n }\n commit(types.SET_PERF_LIST, {\n key: level,\n listObj: {\n timestamp,\n requestStr: Object.freeze(params),\n loading: false,\n listData: Object.freeze(listData),\n token: source,\n lastUpdateTime: getAccountTodayHMS(),\n total: state[level]?.total,\n },\n });\n // 每次获取列表数据后要清空上一次getSourceList获取的videoSourceList\n commit(types.SET_SOURCE_LIST, {\n key: 'videoSourceList',\n listObj: {},\n });\n } catch (err) {\n requestErr = err;\n captureError(err);\n }\n if (fetchTotalAsync) {\n dispatch('finishAsyncRequest', { level, params, timestamp });\n }\n return { data, err: requestErr || {} };\n },\n async checkCacheAndGetList({ state, dispatch }, { level, params }) {\n return new Promise(async (resolve) => {\n const { listData = {}, timestamp, requestStr } = state[level] || {};\n const diff = moment().diff(moment(timestamp), 'seconds');\n if (!state.haveOperated && isPerfListCacheWhite() && _.isEqual(params, requestStr)\n && diff < cacheDuration && listData?.table?.length) {\n setTimeout(() => resolve({ data: listData }));\n sendLog('counter', {\n name: 'list_cache_hit',\n value: 1,\n tags: {\n level,\n diff: String(diff),\n },\n });\n return;\n }\n const res = await dispatch('getPerfList', { level, params });\n resolve(res);\n });\n },\n\n // 按需获取当前列表页所有aco创意的source字段\n async getSourceList({\n commit,\n }, { level, params }) {\n let data = {};\n try {\n const resp = await request.post(apis[level].requiredStatisticList, params);\n data = resp.data || {};\n // 以对象形式存储vid对应的source值\n const videoSourceList = data.video_info.map(val => ({\n vid: val?.vid,\n source: val?.source || 0,\n })).reduce((acc, cur) => ({ ...acc, [cur.vid]: cur.source }), {});\n commit(types.SET_SOURCE_LIST, {\n key: 'videoSourceList',\n listObj: videoSourceList,\n });\n return data;\n } catch (err) {\n commit(types.SET_SOURCE_LIST, {\n key: 'videoSourceList',\n listObj: {},\n });\n captureError(err);\n }\n },\n // 点击创意预览视频后按需获取vid对应的download_allowed字段\n async getDownloadAllowed({\n commit,\n }, { level, params }) {\n let videoInfo = {};\n try {\n const resp = await request.post(apis[level].requiredStatisticList, params);\n const { code, data = {} } = resp;\n if (data && code === 0) {\n videoInfo = data?.video_info[0] || {};\n }\n return videoInfo;\n } catch (err) {\n captureError(err);\n }\n },\n async getTotalData({ commit, state, dispatch }, {\n level, params, timestamp, source,\n }) {\n // UV 类指标单独请求汇总行数据\n let data = {};\n const { timestamp: requestStamp } = state[level] || {};\n try {\n const resp = await request.post(apis[level].newStatisticList, {\n ...params,\n query_list: filteredUVMetrics(params.query_list),\n split: [splitEnum.total],\n }, { cancelToken: source?.token });\n data = resp.data || {};\n // 用时间戳判断为同一次列表请求,避免数据覆盖\n if (requestStamp === timestamp) {\n const statistics = data?.statistics || {};\n const { listData = {} } = state[level] || {};\n const mergedData = {\n ...state[level],\n listData: {\n ...listData,\n statistics: mergeUVTotalData({\n total: statistics,\n data: listData.statistics,\n }),\n },\n total: {\n loading: false,\n error: false,\n },\n };\n commit(types.SET_PERF_LIST, {\n key: level,\n listObj: mergedData,\n });\n }\n } catch (err) {\n captureError(err);\n const isTotalError = state[level]?.total?.error;\n // 汇总行请求出错\n commit(types.SET_PERF_LIST, {\n key: level,\n listObj: {\n ...state[level],\n total: {\n error: true,\n // isTotalError 为 true 即当前为二次重试,依然报错\n loading: !isTotalError,\n },\n },\n });\n if (isTotalError) {\n // 监控上报\n sendLog('counter', {\n name: 'total_request_error',\n value: 1,\n tags: {\n level,\n },\n });\n sendLog('log', {\n level: 'error',\n value: `total request error: ${level} ${jsonStringify(params)}`,\n tags: {\n level,\n },\n });\n }\n }\n dispatch('finishAsyncRequest', { level, params, timestamp });\n return data;\n },\n async resetListDataWithTimestamp({ commit, state }, { level, timestamp }) {\n const mergedData = {\n ...state[level],\n timestamp,\n listData: {},\n loading: true,\n total: {\n loading: true,\n error: false,\n },\n };\n commit(types.SET_PERF_LIST, {\n key: level,\n listObj: mergedData,\n });\n },\n async finishAsyncRequest({ state, dispatch }, { level, params, timestamp }) {\n const { loading, total = {} } = state[level] || {};\n // 拆分请求都完成了\n if (!loading && !total.loading && total.error) {\n dispatch('retryTotalRequest', { level, params, timestamp });\n }\n },\n // 针对主列表拉取成功但汇总行失败的情况进行一次重试\n async retryTotalRequest({ state, dispatch }, { level, params, timestamp }) {\n try {\n const { timestamp: requestStamp } = state[level] || {};\n if (requestStamp === timestamp) {\n dispatch('getTotalData', {\n level,\n timestamp,\n params: {\n ...params,\n [`${level}_ids`]: state[level]?.table?.map(item => item[`${level}_id`]) || [],\n },\n });\n }\n } catch (err) {\n captureError(err);\n }\n },\n // 获取自定义列列表 参数type类型为Array 可传递多个type参数 type_list: [1,2,3]\n async getBatchCustomContentList({ commit, state }, data) {\n const resp = await request.post(apis.custom_content.newList, data);\n const customDataList = resp?.data?.list || [];\n const columnsTemplateData = customDataList.filter(item => item.type === customContent.BIDDING_CUSMTOM_COLUMN);\n const filterTemplateData = customDataList.filter(item => item.type === customContent.BIDDING_FILTER);\n const listQueryConfigData = customDataList.filter(item => item.type === customContent.BIDDING_STATISTIC_USER_CONFIG);\n\n commit(types.SET_BATCH_CUSTOM_CONTENT, {\n listObj: {\n columnsTemplate: columnsTemplateData,\n filterTemplate: filterTemplateData.map(item => ({\n id: item.id,\n label: item.name,\n value: handleUnSupportFilter(item.data),\n canDelete: true,\n })),\n listQueryConfig: listQueryConfigData.map(item => ({\n ...item,\n data: handleUnSupportFilter(item.data),\n })),\n },\n });\n },\n async setPerfOperatedAnchor({ commit }) {\n commit(types.SET_PERF_OPERATED_ANCHOR);\n },\n },\n};\n","/**\n* popup status 相关,具体可以参考 https://bytedance.feishu.cn/docs/doccn8lOAQ09Pw7OtbAJsqyb94g\n*/\nimport * as types from 'src/store/types';\nimport { getNotificationStatus, updateNotificationStatus } from 'src/service/simplifiedSmb';\nimport { popupType } from 'src/const/account';\n\nconst contract = {\n namespaced: true,\n state: {\n popupStatusMap: {},\n },\n getters: {\n hasPostInvoiceConfirm: state => state.popupStatusMap[popupType.POST_INVOICE_CONFIRM] || false,\n },\n mutations: {\n [types.SET_POPUP_STATUS_MAP](state, data) {\n state.popupStatusMap = { ...state.popupStatusMap, ...data };\n },\n },\n\n actions: {\n async fetchPopupStatus({ commit, state }, keyArr) {\n if (!keyArr?.length) return;\n const { data } = await getNotificationStatus(keyArr);\n const initArr = keyArr.map(() => false);\n const showMap = data?.if_shown;\n if (showMap) {\n Object.entries(showMap).forEach(([key, val]) => {\n showMap[key] = val === 0;\n initArr[keyArr.findIndex(k => k === key)] = val === 0;\n });\n commit(types.SET_POPUP_STATUS_MAP, showMap);\n }\n return initArr;\n },\n\n async updatePopupStatus({ commit, state }, keys) {\n commit(types.SET_POPUP_STATUS_MAP, {\n ...keys.reduce((total, key) => {\n total[key] = true;\n return total;\n }, {}),\n });\n updateNotificationStatus(keys);\n },\n },\n};\n\nexport default contract;\n","import musicQualification from './music-qualification';\n\nexport default {\n namespaced: true,\n state: {\n _moduleKey: 'qualification',\n },\n modules: {\n musicQualification,\n },\n};\n","import _ from 'lodash';\nimport * as types from 'src/store/types';\nimport { qualificationCategory, quailficationRejectReasonType } from 'src/const/state/account';\n\nimport { PROMOTE_MUSIC_VALIDATE_MAP, MusicCommercialAuthorizationType, bcIdentityTypesList } from 'src/const/state/creative';\nimport { validatePromoteMusic } from 'src/service/creative';\nimport { getCreativeAuditDetail, getUserCustomerName } from 'src/service';\nimport { isCreativeHasIdentityWhite } from 'src/const/whiteList';\n\n\nconst musicQualification = {\n namespaced: true,\n state: {\n customerName: '',\n // 音乐资质送审参数\n paramFormData: {\n starling_namespace: 'module', // starling命名空间\n starling_project: 'TikTok_Ads', // starling项目\n category: qualificationCategory.musicQualification,\n pictures: [],\n content_fields: {\n song_name: {\n label: 6, // 写死,用于字段标记\n starling_key: 'module_account_qualification_songname', // 前端的多语言翻译key\n contents: [],\n },\n song_id: {\n label: 17,\n starling_key: '',\n contents: [],\n },\n singer_name: {\n label: 7,\n starling_key: 'module_account_qualification_artist',\n contents: [],\n },\n country_codes: {\n label: 1,\n starling_key: 'module_account_qualification_country',\n contents: [],\n },\n // pictures: [],\n authorization_time: {\n label: 8,\n starling_key: 'module_account_qualification_authorization_time',\n contents: [],\n },\n copyright_owner: {\n label: 10,\n starling_key: 'module_account_qualification_copyright_owner',\n contents: [],\n },\n authorization_range: {\n label: 11,\n starling_key: 'module_account_qualification_authorization_range',\n contents: [],\n },\n lyricist: {\n label: 12,\n starling_key: 'module_account_qualification_lyricist',\n contents: [],\n },\n composer: {\n label: 13,\n starling_key: 'module_account_qualification_composer',\n contents: [],\n },\n authorization_uids: {\n label: 14,\n starling_key: 'module_account_qualification_authorization_user_id',\n contents: [],\n },\n record_company: {\n label: 15,\n starling_key: 'module_account_qualification_record_company',\n contents: [],\n },\n publisher: {\n label: 16,\n starling_key: 'module_account_qualification_publisher',\n contents: [],\n },\n commercial_usage: {\n label: 18,\n starling_key: 'module_account_qualification_have_commercial_usage_rights',\n contents: [],\n },\n },\n },\n },\n getters: {},\n mutations: {\n [types.SET_CUSTOMER_NAME](state, data) {\n state.customerName = data || '';\n },\n },\n actions: {\n // 获取广告主customer name\n async getCustomerName({ state, commit }) {\n const data = await getUserCustomerName();\n const { customer_name = '' } = data;\n commit(types.SET_CUSTOMER_NAME, customer_name);\n },\n // 获取补充音乐资质列表\n async getSongList({ state, getters }, { query }) {\n const song_authorization_missing = PROMOTE_MUSIC_VALIDATE_MAP.AUTHORIZATION_MISSING;\n let songList = [];\n const {\n source = '',\n start_time = '',\n end_time = '',\n countries: countriesString = '',\n vid = '',\n creative_id = '',\n identity_id = '',\n identity_type = 0,\n identity_bc_id = '',\n } = query;\n\n\n // 创编页面跳转到资质页面,需要调用 验证音乐版权的接口,获取没有资质的音乐信息\n if (source === 'creative_ad') {\n let param = {\n start_time,\n end_time,\n countries: (countriesString || '').split(',').map(item => +item) || [],\n item_id: vid,\n };\n // 在identity白名单中并且有identity_id、identity_type参数时,提交表单时携带该参数。\n if (isCreativeHasIdentityWhite() && identity_id && identity_type !== undefined) {\n param = {\n identity_id, identity_type, ...param,\n };\n\n if (bcIdentityTypesList.includes(Number(identity_type))) {\n param.identity_bc_id = identity_bc_id;\n }\n }\n\n const res = await validatePromoteMusic(param);\n const { status = 0, music_infos = {} } = res;\n if (status === song_authorization_missing) {\n songList = [];\n Object.keys(music_infos).forEach((key) => {\n if (music_infos[key].authorization_type === MusicCommercialAuthorizationType.NOT_AUTHORIZED) {\n songList.push(music_infos[key]);\n }\n });\n }\n return songList;\n } if (source === 'reject_suggestion') {\n // 拒审理由跳转到资质页面,需要调用 获取巨神理由的接口,获取没有资质的音乐信息\n const res = await getCreativeAuditDetail({ creative_id });\n if (res.code === 0 && res.data) {\n const rejectList = res.data.creative?.info;\n const reason = rejectList.find(item => item.reason_type === quailficationRejectReasonType.MUSIC);\n const { contents = {} } = reason;\n if (contents.value_music_map) {\n songList = [];\n Object.keys(contents.value_music_map).forEach((key) => {\n if (contents.value_music_map[key].authorization_type === MusicCommercialAuthorizationType.NOT_AUTHORIZED) {\n songList.push(contents.value_music_map[key]);\n }\n });\n }\n return songList;\n }\n return songList;\n }\n },\n // 处理接口参数数据\n getQualificationParamsData({ state, getters }, { submitData = {}, originDate = {}, life_time = false }) {\n const data = _.cloneDeep(state.paramFormData);\n\n // 处理图片参数\n const pictures = submitData.qualificationList.map((img) => {\n if (img.response && img.response.data) {\n const data = img.response.data || {};\n return data.secret_file_id || '';\n }\n return img.secret_file_id || '';\n });\n data.pictures = pictures;\n\n const { content_fields } = data;\n Object.keys(content_fields).forEach((field) => {\n if (field === 'country_codes' || field === 'authorization_time') {\n content_fields[field].contents = submitData[field];\n return;\n }\n\n // authorization_uids通过,分割成数组\n if (field === 'authorization_uids') {\n content_fields[field].contents = submitData[field].split(',');\n return;\n }\n content_fields[field].contents = [submitData[field]];\n });\n\n const params = {\n ...originDate,\n ...data,\n };\n return params || {};\n },\n },\n};\n\nexport default musicQualification;\n","/**\n * 数据报表相关\n */\nimport moment from 'moment';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\nimport { getAccountToday } from 'src/utils/dateUtil';\nimport { i18n } from 'src/utils/localeUtil';\nimport apis from 'src/const/apis';\nimport tool from 'src/utils/tool';\nimport * as service from 'src/service';\nimport {\n isRFWhite,\n isReportingTTAdsWhite,\n isTTPStatisticsWhite,\n isTTPStatisticsApiWhite,\n isAcoReportingUpgradeWhite,\n isSearchAdsMtWhite,\n} from 'src/const/whiteList';\nimport { TIME_FORMAT, EnumLifetimeType } from 'src/const/date';\nimport {\n checkIsRF, campaignType, campaignObjectiveValue,\n} from 'src/const/state/campaign';\nimport { regionType } from 'src/const/state/account';\nimport { creativeType } from 'src/const/state/creative';\nimport {\n noneFormatter,\n percentTextFormatter,\n moneyFormatterWithUnit,\n integerValueFormatter,\n percentCellFormatter,\n} from 'src/const/statistics/formatters';\nimport { percentileDivisionFormatMoney } from 'src/mixins/currencyMixin';\nimport { getDaysDiff } from 'src/utils/perfUtil';\nimport { checkIsSearch, campaignPermitSearchEnum } from 'src/const/state/ad';\nimport { captureError } from '../../../logger/errorLogger';\n\n\nconst flattenTreeToMap = (treeData) => {\n const map = {};\n let index = 1;\n let list = treeData;\n while (list.length) {\n let newList = [];\n // eslint-disable-next-line\n list.forEach((item) => {\n if (map[index]) {\n map[index].push(item.id);\n } else {\n map[index] = [item.id];\n }\n if (item.children && Array.isArray(item.children)) {\n newList = newList.concat(item.children);\n }\n });\n list = newList;\n index++;\n }\n return map;\n};\n\n// 维护不同层级的枚举值\nexport const VIEW_DATA_ENUM = {\n CAMPAIGN: {\n // 请求广告基本信息\n basicInfoAPI: apis.campaign.newStatisticList,\n totalCostAPI: apis.campaign.new_total_cost,\n // 更新状态\n updateStatusAPI: apis.campaign.update_status,\n emitKey: 'campaign-toggle-status-by-id',\n // 请求 Daily 数据\n dailyReportAPI: apis.campaign.new_report_stat,\n // 数据在返回结构体中的字段名\n dailyReportKey: 'campaign_data',\n // 请求 Breakdown 数据\n breakdownReportAPI: apis.campaign.new_breakdown_report_stat,\n newBreakdownReportAPI: apis.campaign.ttp_breakdown_report_stat,\n // 数据在返回结构体中的字段名\n breakdownReportKey: 'stats',\n // 真正下载的API, 前导 API 与 Daily API 是同一个\n downloadAPI: apis.campaign.new_promote_download_url,\n newDownloadAPI: apis.campaign.ttp_promote_download_url,\n // 关键词类型,写死,见select-perf-dashboard.js/searchType\n searchType: 1,\n negativeKeywordListAPI: apis.campaign.negative_keywords_list,\n addNegativeKeywordsAPI: apis.campaign.add_negative_keywords,\n modifyNegativeKeywordsAPI: apis.campaign.modify_negative_keywords,\n deleteNegativeKeywordsAPI: apis.campaign.delete_negative_keywords,\n downloadNegativeKeywordsAPI: apis.campaign.download_negative_keywords,\n },\n AD: {\n basicInfoAPI: apis.ad.newStatisticList,\n updateStatusAPI: apis.ad.update_status,\n emitKey: 'ad-group-toggle-status-by-id',\n dailyReportAPI: apis.ad.new_report_stat,\n dailyReportKey: 'ad_data',\n breakdownReportAPI: apis.ad.new_breakdown_report_stat,\n newBreakdownReportAPI: apis.ad.ttp_breakdown_report_stat,\n breakdownReportKey: 'stats',\n downloadAPI: apis.ad.new_promote_download_url,\n newDownloadAPI: apis.ad.ttp_promote_download_url,\n searchType: 2,\n negativeKeywordListAPI: apis.ad.negative_keywords_list,\n addNegativeKeywordsAPI: apis.ad.add_negative_keywords,\n modifyNegativeKeywordsAPI: apis.ad.modify_negative_keywords,\n deleteNegativeKeywordsAPI: apis.ad.delete_negative_keywords,\n downloadNegativeKeywordsAPI: apis.ad.download_negative_keywords,\n },\n CREATIVE: {\n basicInfoAPI: apis.creative.newStatisticList,\n updateStatusAPI: apis.creative.update_status,\n emitKey: 'ad-toggle-status-by-id',\n dailyReportAPI: apis.creative.new_report_stat,\n dailyReportKey: 'creative_data',\n breakdownReportAPI: apis.creative.new_breakdown_report_stat,\n newBreakdownReportAPI: apis.creative.ttp_breakdown_report_stat,\n breakdownReportKey: 'stats',\n downloadAPI: apis.creative.new_promote_download_url,\n newDownloadAPI: apis.creative.ttp_promote_download_url,\n searchType: 3,\n },\n};\n\n// state 初始化值写在这里,方便动态生成/清理\nconst getInitialState = () => ({\n loading: false,\n reportId: '',\n // 层级 campaign/adgroup/ad 中的一个\n reportType: '',\n basicInfo: {},\n searchBasicInfo: {},\n // 拉取 adgroup 信息,命名与创编做以区分\n reportAdDetail: {},\n totalCost: 0,\n todayCost: 0,\n dateRange: {\n st: '',\n et: '',\n lifetime: 0,\n },\n audienceMetric: 'stat_cost',\n creativeMetric: 'stat_cost', // viewData creative tab下的metric value\n activeAudienceTab: 'genderAge',\n activeCreativeTab: 'videoImage',\n countriesWithSubRegion: [],\n usDmaIds: [], // 美国 DMA ID 数组\n usStateIds: [], // 美国 State ID 数组\n interestOptionMap: {}, // 创编的所有兴趣标签\n behaviorOptionMap: {}, // 创编的所有行为标签\n tableMetricArray: [], // 表格当前展示的数据列\n showSearchNegativeTab: false, // 处理跳转到否定关键词管理页面逻辑\n});\n\nexport default {\n namespaced: true,\n state: getInitialState(),\n getters: {\n loading: state => state.loading || false,\n // 当前层级的枚举对象\n reportEnum: (state) => {\n const enumObj = VIEW_DATA_ENUM[state.reportType.toUpperCase()] || {};\n return {\n ...enumObj,\n // 白名单逻辑在这里进行覆盖\n breakdownReportAPI: enumObj[isTTPStatisticsApiWhite() ? 'newBreakdownReportAPI' : 'breakdownReportAPI'],\n downloadAPI: enumObj[isTTPStatisticsApiWhite() ? 'newDownloadAPI' : 'downloadAPI'],\n };\n },\n dateRangeDays: state => getDaysDiff(state.dateRange),\n baseInfoRequestParam: (state, getters) => {\n const { isCreativeReportType } = getters;\n return {\n keyword: '', // 关键词\n search_type: getters.reportEnum.searchType,\n campaign_status: [],\n ad_status: [],\n creative_status: [],\n objective_type: isCreativeReportType ? [] : 0,\n image_mode: isCreativeReportType ? [] : 0,\n version: 1,\n sort_stat: '',\n sort_order: 0,\n page: 1,\n pricing: [1, 2, 3, 4, 6, 7, 8, 9, 10],\n campaign_category: [2, 3, 4], // 2,3,4 表示竞价写死\n ...state.dateRange,\n };\n },\n baseRequestParam: (state, getters) => ({\n image_mode: 0, // 展现样式,写死\n compare: 0,\n creative_material_mode: 0,\n inventory_type: 0,\n version: 1,\n pricing: JSON.stringify([1, 2, 3, 4, 6, 7, 8, 9, 10]),\n campaign_category: JSON.stringify([2, 3, 4]),\n from: 'i18n_daily', // 写死,区分老平台的数据报告接口\n ...state.dateRange,\n }),\n isCampaignReportType: state => state.reportType === 'campaign',\n isAdReportType: state => state.reportType === 'ad',\n isCreativeReportType: state => state.reportType === 'creative',\n isDedicatedCampaign: (state) => {\n const { basicInfo = {} } = state;\n return basicInfo.dedicate_type === campaignType.dedicatedCampaign;\n },\n isTTPAd: (state) => {\n // 统计列表返回的 ttp 标签\n // 为后续的扩展性考虑 viewdata 模块使用列表返回的 ttp 标签\n // 用 isTTPAd 命名是为了与 account 的创编 isTTP 打标区分\n const { basicInfo = {} } = state;\n return isTTPStatisticsWhite() && +basicInfo.region_type === regionType.TTP;\n },\n audienceIframeUrl: (state, getters, rootState, rootGetters) => {\n const {\n reportType,\n dateRange,\n reportId,\n } = state;\n const {\n st,\n et,\n lifetime,\n } = dateRange;\n const query = {\n aadvid: rootState.account.aadvid,\n id: reportId,\n type: reportType,\n st,\n et,\n lifetime,\n };\n const host = !rootGetters['account/isStaffIdExist'] && getters.isTTPAd ? process.env.TTP_HOST : window.location.host;\n return `//${host}/i18n/statistics/viewdata${tool.jsonToQuery(query)}`;\n },\n upgradedTabs: (state, getters, rootState) => {\n const { basicInfo } = state;\n const tabs = {\n DAILY: {\n name: 'daily',\n key: 'data_report_daily',\n tabCompId: 'upgrade-tab-daily',\n refs: 'tabDaily',\n },\n AUDIENCE: {\n name: 'audience',\n key: 'data_report_audience',\n tooltip: 'data_report_audience_tips',\n tabCompId: 'statistics-iframe-container',\n refs: 'tabAudience',\n },\n SPLITTEST: {\n name: 'splittest',\n key: 'module_splittest',\n tooltip: '',\n tabCompId: 'data-report-tab-splittest',\n refs: 'tabSplittest',\n hide: () => !(rootState.campaign.abtestFlagForSplittest && getters.isAdReportType),\n },\n FREQUENCY: {\n name: 'frequency',\n key: 'data_report_frequency',\n tooltip: 'campaign_report_frequency_tips',\n tabCompId: 'upgrade-tab-frequency',\n refs: 'tabFrequency',\n hide: () => getters.isCampaignReportType\n || !checkIsRF(basicInfo.objective_type)\n || !isRFWhite(),\n },\n CREATIVE: {\n name: 'creative',\n key: 'data_report_creative',\n tooltip: '',\n tabCompId: 'upgrade-tab-creative',\n refs: 'tabCreative',\n hide: () => !getters.isAdReportType\n || !getters.isProcedualAd\n || !isAcoReportingUpgradeWhite(),\n },\n SEARCH: {\n name: 'search',\n key: 'module_search_ads_search_results',\n tabCompId: 'upgrade-tab-search',\n refs: 'tabSearch',\n hide: () => getters.isCreativeReportType\n || !isSearchAdsMtWhite()\n || !getters.isSearchAds, // 是否隐藏Search tab页\n },\n };\n return tabs;\n },\n isProcedualAd: state => state?.basicInfo?.creative_material_mode === creativeType.PROCEDURAL,\n isRF: state => checkIsRF(state.basicInfo.objective_type),\n isSearchAds: (state) => {\n const { basicInfo = {} } = state;\n const isAlived = basicInfo.isdel === 0; // 判断计划是否被删除\n if (basicInfo.search_delivery_type) {\n return checkIsSearch(basicInfo.search_delivery_type) && isAlived;\n }\n return isAlived && campaignPermitSearchEnum.includes(+basicInfo.objective_type);\n },\n audienceConfig: (state, getters) => ({\n GENDER_AND_AGE: {\n name: 'genderAge',\n key: 'data_report_gender_and_age',\n compId: 'gender-age-chart',\n api: getters.reportEnum?.breakdownReportAPI,\n },\n LOCATION: {\n name: 'location',\n key: 'data_report_location',\n compId: 'location-chart',\n api: getters.reportEnum?.breakdownReportAPI,\n },\n INTEREST_AND_BEHAVIOR: {\n name: 'interestBehavior',\n key: 'data_report_interest_and_behavior',\n compId: 'interest-behavior-chart',\n api: getters.reportEnum?.breakdownReportAPI,\n },\n DEVICE: {\n name: 'device',\n key: 'data_report_device',\n compId: 'device-chart',\n api: getters.reportEnum?.breakdownReportAPI,\n },\n }),\n metricsOptions: (state, getters, rootState, rootGetters) => {\n const {\n objective_type,\n dedicate_type,\n effect_note,\n effect_rate_note,\n effect_cost_note,\n } = state.basicInfo;\n // 是R&F App Install、且是DC 禁用该指标\n const rfAppInstallDcDisabled =\n (objective_type === campaignObjectiveValue.RF_APPINSTALL) && (dedicate_type === campaignType.dedicatedCampaign);\n return [\n {\n valueKey: 'stat_cost',\n name: i18n.t('common_total_cost'),\n breakdownStacking: true, // 在breakdown报告中是否显示为堆积图\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n },\n {\n valueKey: 'show_cnt',\n name: i18n.t('list_total_impression'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'click_cnt',\n name: i18n.t('list_total_click'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'time_attr_convert_cnt',\n name: i18n.t('list_convert_count'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'skan_convert_cnt',\n name: i18n.t('list_skan_conversion'),\n breakdownStacking: true,\n hide: () => !rootGetters['dashboard/isDedicatedCampaignExist'],\n isSkan: true,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'time_attr_effect_cnt',\n name: i18n.t('list_total_result'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: integerValueFormatter,\n tip: effect_note,\n },\n {\n valueKey: 'ctr',\n name: i18n.t('common_CTR'),\n breakdownStacking: false,\n hide: false,\n labelFormatter: percentTextFormatter,\n valueFormatter: percentCellFormatter,\n },\n {\n valueKey: 'time_attr_conversion_rate',\n name: i18n.t('list_convert_rate'),\n breakdownStacking: false,\n hide: false,\n labelFormatter: percentTextFormatter,\n valueFormatter: percentCellFormatter,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'skan_conversion_rate',\n name: i18n.t('list_skan_cvr'),\n breakdownStacking: false,\n hide: () => !rootGetters['dashboard/isDedicatedCampaignExist'],\n isSkan: true,\n labelFormatter: percentTextFormatter,\n valueFormatter: percentCellFormatter,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'time_attr_effect_rate',\n name: i18n.t('list_effect_rate'),\n breakdownStacking: false,\n hide: false,\n labelFormatter: percentTextFormatter,\n valueFormatter: percentCellFormatter,\n tip: effect_rate_note,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'cpc',\n name: i18n.t('common_CPC'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n },\n {\n valueKey: 'cpm',\n name: i18n.t('common_CPM'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n },\n {\n valueKey: 'time_attr_conversion_cost',\n name: i18n.t('list_convert_cost'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'skan_conversion_cost',\n name: i18n.t('list_skan_cpa'),\n breakdownStacking: true,\n hide: () => !rootGetters['dashboard/isDedicatedCampaignExist'],\n isSkan: true,\n valueFormatter: moneyFormatterWithUnit,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'time_attr_effect_cost',\n name: i18n.t('list_effect_cost'),\n breakdownStacking: true,\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n tip: effect_cost_note,\n disabled: () => rfAppInstallDcDisabled,\n },\n {\n valueKey: 'show_uv',\n name: i18n.t('list_video_show_uv'),\n breakdownStacking: true,\n hint: i18n.t('campaign_hover_stat_data.show_uv'),\n hide: false,\n isOnlySupportDaliy: true, // 不支持audience\n isRFMetrics: true,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'cost_per_show_uv_mille',\n name: i18n.t('list_video_cost_per_show_uv_mille'),\n breakdownStacking: true,\n hint: i18n.t('campaign_hover_stat_data.cost_per_show_uv_mille'),\n hide: false,\n isOnlySupportDaliy: true, // 不支持audience\n isRFMetrics: true,\n valueFormatter: moneyFormatterWithUnit,\n },\n {\n valueKey: 'frequency',\n name: i18n.t('common_frequency'),\n breakdownStacking: true,\n hint: i18n.t('common_frequency_report_hint'),\n hide: false,\n isRFMetrics: true,\n isOnlySupportDaliy: true, // 不支持audience\n valueFormatter: noneFormatter,\n },\n ];\n },\n creativeMetricsOptions: (state, getters, rootState, rootGetters) => [\n {\n valueKey: 'stat_cost',\n name: i18n.t('common_total_cost'),\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n },\n {\n valueKey: 'time_attr_effect_cost',\n name: i18n.t('list_effect_cost'),\n hide: false,\n valueFormatter: moneyFormatterWithUnit,\n disabled: () => state.basicInfo.dedicate_type === campaignType.dedicatedCampaign,\n },\n {\n valueKey: 'time_attr_effect_cnt',\n name: i18n.t('list_effect_count'),\n hide: false,\n valueFormatter: integerValueFormatter,\n disabled: () => state.basicInfo.dedicate_type === campaignType.dedicatedCampaign,\n },\n {\n valueKey: 'click_cnt',\n name: i18n.t('list_total_click'),\n hide: false,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'show_cnt',\n name: i18n.t('list_total_impression'),\n hide: false,\n valueFormatter: integerValueFormatter,\n },\n {\n valueKey: 'ctr',\n name: i18n.t('common_CTR'),\n hide: false,\n valueFormatter: percentCellFormatter,\n },\n {\n valueKey: 'time_attr_conversion_rate',\n name: i18n.t('list_convert_rate'),\n hide: false,\n valueFormatter: percentCellFormatter,\n disabled: () => state.basicInfo.dedicate_type === campaignType.dedicatedCampaign,\n },\n ],\n isSkanHide(state, getters, rootState, rootGetters) {\n return !rootGetters['dashboard/isDedicatedCampaignExist'];\n },\n dailyTargetConfig(state, getters) {\n const { stat_data = {} } = state.basicInfo;\n const targetList = [\n {\n label: i18n.t('common_total_cost'),\n key: 'stat_cost',\n value: percentileDivisionFormatMoney(stat_data.stat_cost),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('list_convert_cost'),\n key: 'time_attr_conversion_cost',\n value: percentileDivisionFormatMoney(\n stat_data.time_attr_conversion_cost,\n ),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('list_skan_cpa'),\n key: 'skan_conversion_cost',\n value: percentileDivisionFormatMoney(stat_data.skan_conversion_cost),\n showCurrencyCode: true,\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('common_CPC'),\n key: 'cpc',\n value: percentileDivisionFormatMoney(stat_data.cpc),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('data_report_impression'),\n key: 'show_cnt',\n value: integerValueFormatter('', '', stat_data.show_cnt),\n },\n {\n label: i18n.t('common_CTR'),\n key: 'ctr',\n value: percentCellFormatter('', '', stat_data.ctr),\n },\n {\n label: i18n.t('data_report_dimensions_index_click_cnt'),\n key: 'click_cnt',\n value: integerValueFormatter('', '', stat_data.click_cnt),\n },\n {\n label: i18n.t('list_convert_rate'),\n key: 'time_attr_conversion_rate',\n value: percentCellFormatter('', '', stat_data.time_attr_conversion_rate),\n },\n {\n label: i18n.t('list_skan_cvr'),\n key: 'skan_conversion_rate',\n value: percentCellFormatter('', '', stat_data.skan_conversion_rate),\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('list_convert_count'),\n key: 'time_attr_convert_cnt',\n value: integerValueFormatter('', '', stat_data.time_attr_convert_cnt),\n },\n {\n label: i18n.t('list_skan_conversion'),\n key: 'skan_convert_cnt',\n value: integerValueFormatter('', '', stat_data.skan_convert_cnt),\n hide: getters.isSkanHide,\n },\n ];\n return targetList.filter(item => !item.hide);\n },\n allDailyTargetConfig(state, getters) {\n const {\n stat_data = {},\n effect_note,\n effect_cost_note,\n effect_rate_note,\n } = state.basicInfo;\n\n const targetList = [\n {\n label: i18n.t('list_total_result'), // 成效数\n key: 'time_attr_effect_cnt',\n value: integerValueFormatter('', '', stat_data.time_attr_effect_cnt),\n tip: effect_note,\n },\n {\n label: i18n.t('list_effect_cost'),\n key: 'time_attr_effect_cost',\n value: percentileDivisionFormatMoney(stat_data.time_attr_effect_cost),\n tip: effect_cost_note,\n showCurrencyCode: true,\n },\n {\n label: i18n.t('list_effect_rate'), // 成效率\n key: 'time_attr_effect_rate',\n value: percentCellFormatter('', '', stat_data.time_attr_effect_rate),\n tip: effect_rate_note,\n },\n {\n label: i18n.t('common_CPM'),\n key: 'cpm',\n value: percentileDivisionFormatMoney(stat_data.cpm),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('common_frequency'), // frequency\n key: 'frequency',\n value: noneFormatter('', '', stat_data.frequency),\n },\n {\n label: i18n.t('list_video_show_uv'), // 总覆盖UV\n key: 'show_uv',\n value: integerValueFormatter('', '', stat_data.show_uv),\n },\n {\n label: i18n.t('common_in_app_event_active_count'), // App Install\n key: 'active',\n value: integerValueFormatter('', '', stat_data.active),\n },\n {\n label: i18n.t('list_skan_event_app_install_unique_count'),\n key: 'skan_active',\n value: integerValueFormatter('', '', stat_data.skan_active),\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('common_in_app_event_time_attr_cost_per_active'),\n key: 'time_attr_active_cost',\n value: percentileDivisionFormatMoney(stat_data.time_attr_active_cost),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('list_skan_event_app_install_unique_cost'),\n key: 'cost_per_skan_active',\n value: percentileDivisionFormatMoney(stat_data.cost_per_skan_active),\n showCurrencyCode: true,\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('list_skan_event_purchase_unique_count'),\n key: 'skan_active_pay',\n value: integerValueFormatter('', '', stat_data.skan_active_pay),\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('list_skan_event_purchase_each_value'),\n key: 'skan_total_repetitive_active_pay_value',\n value: percentileDivisionFormatMoney(stat_data.skan_total_repetitive_active_pay_value),\n showCurrencyCode: true,\n hide: getters.isSkanHide,\n },\n {\n label: i18n.t('common_in_app_event_time_attr_total_repetitive_active_pay_value'),\n key: 'time_attr_total_repetitive_active_pay_value',\n value: percentileDivisionFormatMoney(stat_data.time_attr_total_repetitive_active_pay_value),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('common_in_app_event_time_attr_active_pay_count'),\n key: 'time_attr_active_pay',\n value: integerValueFormatter('', '', stat_data.time_attr_active_pay),\n },\n {\n labe: i18n.t('common_in_app_event_roas'), // ROAS\n key: 'time_attr_repetitive_active_pay_roas',\n value: integerValueFormatter('', '', stat_data.time_attr_repetitive_active_pay_roas),\n },\n ];\n return getters.dailyTargetConfig.concat(targetList.filter(item => !item.hide));\n },\n // Search terms表格列配置\n searchTargetConfig(state, getters) {\n const stat_data = state.searchBasicInfo;\n const targetList = [\n {\n label: i18n.t('common_total_cost'),\n key: 'stat_cost',\n value: percentileDivisionFormatMoney(stat_data.stat_cost),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('common_CPC'),\n key: 'cpc',\n value: percentileDivisionFormatMoney(stat_data.cpc),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('common_Click'),\n key: 'click_cnt',\n value: integerValueFormatter('', '', stat_data.click_cnt),\n },\n {\n label: i18n.t('common_CPM'),\n key: 'cpm',\n value: percentileDivisionFormatMoney(stat_data.cpm),\n showCurrencyCode: true,\n },\n {\n label: i18n.t('common_CTR'),\n key: 'ctr',\n value: percentCellFormatter('', '', stat_data.ctr),\n },\n {\n label: i18n.t('data_report_impression'),\n key: 'show_cnt',\n value: integerValueFormatter('', '', stat_data.show_cnt),\n },\n ];\n return targetList.filter(item => !item.hide);\n },\n },\n mutations: {\n [types.SET_TABLE_METRIC_ARRAY](state, data) {\n state.tableMetricArray = data;\n },\n [types.SET_REPORT_ID](state, data) {\n state.reportId = data;\n },\n [types.SET_REPORT_TYPE](state, data) {\n state.reportType = data;\n },\n [types.SET_REPORT_INFO](state, data) {\n state.reportId = data.id;\n state.reportType = data.type;\n },\n [types.SET_BASIC_INFO](state, data) {\n state.basicInfo = data;\n },\n [types.SET_SEARCH_BASIC_INFO](state, data) {\n state.searchBasicInfo = data;\n },\n [types.SET_REPORT_AD_DETAIL](state, data) {\n state.reportAdDetail = data;\n },\n [types.SET_TOTAL_COST](state, data) {\n state.totalCost = data;\n },\n [types.SET_TODAY_COST](state, data) {\n state.todayCost = data;\n },\n [types.SET_DATE_RANGE](state, data) {\n state.dateRange = data;\n },\n [types.SET_AUDIENCE_METRIC](state, data) {\n state.audienceMetric = data;\n },\n [types.SET_AUDIENCE_TAB](state, data) {\n state.activeAudienceTab = data;\n },\n [types.SET_ALL_COUNTRIES](state, { countries, usDmaIds, usStateIds }) {\n state.countriesWithSubRegion = countries;\n state.usDmaIds = usDmaIds;\n state.usStateIds = usStateIds;\n },\n [types.SET_INTEREST_MAP](state, data) {\n state.interestOptionMap = data;\n },\n [types.SET_BEHAVIOR_MAP](state, data) {\n state.behaviorOptionMap = data;\n },\n [types.SET_LOADING_STATE](state, { status }) {\n state.loading = status;\n },\n [types.SET_SHOW_NEGATIVE_TAB](state, status) {\n state.showSearchNegativeTab = status;\n },\n [types.CLEAR_REPORT_STATE](state) {\n const initialState = getInitialState();\n Object.keys(state).forEach((key) => {\n state[key] = initialState[key];\n });\n },\n },\n actions: {\n // ViewData 获取广告 basic info\n async getBasicInfo({\n commit, dispatch, state, getters,\n }, id) {\n let basicInfo = null;\n try {\n const api = getters.reportEnum.basicInfoAPI;\n const queryList = getters.isCampaignReportType\n ? getters.dailyTargetConfig.map(item => item.key)\n : getters.allDailyTargetConfig.map(item => item.key);\n const resp = await request.post(api, {\n ...getters.baseInfoRequestParam,\n ...state.dateRange,\n [`${state.reportType}_ids`]: [id],\n query_list: queryList,\n }) || {};\n const { code, data = null } = resp;\n if (data && code === 0) {\n basicInfo = data.table[0] || null;\n if (getters.isAdReportType) {\n await dispatch('getAdTypeByDetail', id);\n }\n if (getters.isCreativeReportType && basicInfo?.ad_id) {\n await dispatch('getAdTypeByDetail', basicInfo.ad_id);\n }\n }\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_BASIC_INFO, basicInfo || {});\n return basicInfo;\n },\n // 获取Search表格概览汇总数据\n async getSearchBasicInfo({\n commit, state, getters,\n }, id) {\n let searchBasicInfo = {};\n try {\n const api = getters.reportEnum.newBreakdownReportAPI;\n const queryList = getters.searchTargetConfig.map(item => item.key);\n const resp = await request.post(api, {\n ...getters.baseInfoRequestParam,\n ...state.dateRange,\n ids: id,\n query_list: queryList.join(','),\n dims: 'ad_position_type',\n ad_position_type: 2,\n is_chart: '0',\n }) || {};\n const { code, data = {} } = resp;\n if (data && code === 0) {\n searchBasicInfo = data.stats[0] || {};\n }\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_SEARCH_BASIC_INFO, searchBasicInfo || {});\n return searchBasicInfo;\n },\n async getAdTypeByDetail({ commit }, id) {\n let adgroupInfo = {};\n try {\n const { data } = await service.getAdgroupInfo({ ad_id: id });\n adgroupInfo = {\n ad_id: id,\n ...data.base_info,\n };\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_REPORT_AD_DETAIL, adgroupInfo);\n return adgroupInfo;\n },\n async getTodayCost({ commit, state, getters }, id) {\n let todayCost = 0;\n try {\n const api = getters.reportEnum.basicInfoAPI;\n const mToday = moment(getAccountToday()).format(TIME_FORMAT);\n const params = {\n ...getters.baseInfoRequestParam,\n st: mToday,\n et: mToday,\n lifetime: EnumLifetimeType.unchosen, // st、et为同一天,则lifetime默认为0\n [`${state.reportType}_ids`]: [id],\n query_list: ['stat_cost'],\n };\n const { data } = await request.post(api, params);\n const info = data.table[0] || {};\n const statData = info.stat_data || {};\n todayCost = Number(statData.stat_cost) || 0;\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_TODAY_COST, todayCost);\n return todayCost;\n },\n async getTotalCost({ commit, state, getters }, id) {\n let totalCost = 0;\n try {\n const api = getters.reportEnum.totalCostAPI;\n const { data } = await request.get(api, {\n ids: id,\n category: `${state.reportType}_id`,\n });\n const { metrics = {} } = data.data[0] || {};\n totalCost = Number(metrics.total_cost) || 0;\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_TOTAL_COST, totalCost);\n return totalCost;\n },\n async getAllCountries({ commit, dispatch }) {\n let list = [];\n let usDmaIds = [];\n let usStateIds = [];\n const param = { inventory_flow: JSON.stringify([3000, 1000, 9000]) };\n try {\n list = await dispatch('campaign/adgroup/loadAreasData', param, { root: true });\n // 过滤出有 sub region 的国家\n list = list.filter(country => country.children && country.children.length);\n if (list && list.length) {\n const USItem = list.find(item => item.code === 'US');\n if (USItem) {\n usDmaIds = USItem.dma.map(item => item.id);\n usStateIds = USItem.children.map(item => item.id);\n }\n }\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_ALL_COUNTRIES, { countries: list, usDmaIds, usStateIds });\n return list;\n },\n async getInterestOptions({ commit, state }) {\n let interestMap = {};\n try {\n const inventory = JSON.stringify([3000, 1000, 9000]);\n const resp = await request.get(apis.interestOption, { inventory });\n const { ad_interest_list } = resp.data;\n interestMap = flattenTreeToMap(ad_interest_list);\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_INTEREST_MAP, interestMap);\n return interestMap;\n },\n async getBehaviorOptions({ commit, state }) {\n let behaviorMap = {};\n try {\n const resp = await request.get(apis.ad.get_action_categort);\n const { creator_related, video_related } = resp.data;\n behaviorMap = flattenTreeToMap(creator_related.concat(video_related));\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_BEHAVIOR_MAP, behaviorMap);\n return behaviorMap;\n },\n // 获取查询模板列表\n async getTemplatesList({ commit, state }, params = {}) {\n let data = {};\n try {\n commit(types.SET_LOADING_STATE, { status: true });\n const aipUrl = isReportingTTAdsWhite()\n ? apis.reporting.new_get_templates\n : apis.reporting.get_templates;\n const resp = await request.get(aipUrl, params);\n if (resp && resp.data && resp.code === 0) {\n data = resp.data || {};\n }\n } catch (err) {\n captureError(err);\n }\n commit(types.SET_LOADING_STATE, { status: false });\n return data;\n },\n async switchStatus({ state, getters }, { operation, id }) {\n let resp = null;\n try {\n const api = getters.reportEnum.updateStatusAPI;\n resp = await request.postForm(api, {\n operation,\n [`${state.reportType}_list`]: JSON.stringify([id]),\n }) || {};\n } catch (err) {\n captureError(err);\n }\n return resp;\n },\n // 获取 当前 adgroup下的 创意素材信息\n async getMaterialDetail({ state, getters }) {\n let materialTableInfo = [];\n try {\n const api = apis.ad.getMaterialStat;\n const { data } = await request.get(api, {\n ad_id: state.reportId,\n st: state.dateRange.st,\n et: state.dateRange.et,\n });\n materialTableInfo = data;\n } catch (err) {\n captureError(err);\n }\n return materialTableInfo;\n },\n },\n};\n","import { rfBuyingType } from 'src/const/state/ad';\nimport * as types from 'src/store/types/index';\nimport numeral from 'numeral';\nimport { AudienceType } from 'src/const/state/update-audience';\nimport stockEstimate from './stock-estimate';\n\n\nexport default {\n namespaced: true,\n modules: {\n stockEstimate,\n },\n state: {\n // 库存预估数据\n estimateData: {\n rf_total_result: {},\n rf_daily_result: {},\n rf_impression: {\n categories: [],\n series: [],\n },\n rf_frequency_per_person: {},\n },\n // 订单库存信息\n stockInfo: {\n rf_predict_impression: 0,\n rf_predict_reach: 0,\n rf_predict_cpr: 0,\n rf_predict_frequency: 0,\n budget_mode: 1, // R&F只支持 budget_mode=TOTAL 总预算\n budget: '',\n ad_reach_frequency_buy_type: rfBuyingType.fixedBudget, // 0固定预算,1固定展示量\n rf_predict_percentage: 0,\n rf_estimate_key: '0',\n rf_estimate_info: null,\n },\n // 不同购买方式下的输入值\n buyTypeValues: {\n [rfBuyingType.fixedBudget]: 0,\n [rfBuyingType.fixedImpression]: 0,\n [rfBuyingType.fixedReachPercent]: 0,\n [rfBuyingType.fixedReach]: 0,\n },\n // 库存相关参数表单校验是否通过\n isValidTargetingParams: true,\n // 编辑时是否库存变化\n isEditEstimtateChanged: false,\n // rf人群包原始包id列表\n audienceTagsMap: {},\n originalRetargetingTags: [],\n originalRetargetingTagsExclude: [],\n /** rf 下是否展示 13-17 的年龄选项 */\n isRfBelow18AgeButtonVisible: false,\n draftCreatives: [],\n frequency: '',\n frequencySchedule: '',\n },\n getters: {\n // 购买方式\n buyType(state) {\n return state.stockInfo.ad_reach_frequency_buy_type;\n },\n // 当前购买方式下的输入值\n buyTypeValue(state, getters) {\n if (!getters.buyType && getters.buyType !== 0) return '';\n return state.buyTypeValues[getters.buyType];\n },\n // 可选预算区间\n budgetThreshold(state) {\n const { categories } = state.estimateData.rf_impression;\n if (!categories) return [0, Number.MAX_SAFE_INTEGER];\n return [categories[0], categories[categories.length - 1]];\n },\n // 最大uv\n maxReach(state) {\n return state.estimateData.rf_total_result.max_uv_mille || state.stockInfo.rf_estimate_info?.max_uv_mille;\n },\n // 可选pv区间\n impressionThreshold(state) {\n const { series } = state.estimateData.rf_impression;\n const impressionData = series.find(item => item.name === 'impression')?.data;\n if (!impressionData) return [0, Number.MAX_SAFE_INTEGER];\n return [impressionData[0], impressionData[impressionData.length - 1]];\n },\n // 可选uv区间\n reachThreshold(state, getters) {\n const { series } = state.estimateData.rf_impression;\n const reachData = series.find(item => item.name === 'reach')?.data;\n if (!reachData) return [0, Number.MAX_SAFE_INTEGER];\n const max = state.estimateData.rf_total_result.uv;\n return [reachData[0], max];\n },\n // 可选uv百分比区间\n reachPercentThreshold(state, getters) {\n const { series } = state.estimateData.rf_impression;\n const reachData = series.find(item => item.name === 'reach')?.data;\n if (!reachData) return [0, 100];\n const maxReach = getters.maxReach || reachData[reachData.length - 1];\n const minValue = reachData[0] / maxReach * 100;\n const min = Math.floor(minValue * 100 + 1) / 100;\n const max = numeral(state.estimateData.rf_total_result.uv / maxReach * 100).format('0.000').slice(0, -1);\n return [min, max];\n },\n // 当前购买方式下可选值区间\n buyTypeThreshold(state, getters) {\n switch (getters.buyType) {\n case rfBuyingType.fixedBudget: return getters.budgetThreshold;\n case rfBuyingType.fixedImpression: return getters.impressionThreshold;\n case rfBuyingType.fixedReach: return getters.reachThreshold;\n case rfBuyingType.fixedReachPercent: return getters.reachPercentThreshold;\n default: break;\n }\n },\n // 当前购买方式下最小购买值\n minBuyTypeValue(state, getters) {\n const range = getters.buyTypeThreshold;\n return range[0];\n },\n // 当前购买方式下最大购买值\n maxBuyTypeValue(state, getters) {\n const range = getters.buyTypeThreshold;\n return range[1];\n },\n // 当前输入值是否在可选区间外\n outOfValueRange(state, getters) {\n return +getters.buyTypeValue < +getters.minBuyTypeValue || +getters.buyTypeValue > +getters.maxBuyTypeValue;\n },\n // 调整的目标区间端点值\n targetVal(state, getters) {\n if (+getters.buyTypeValue < +getters.minBuyTypeValue) {\n return getters.minBuyTypeValue;\n }\n if (+getters.buyTypeValue > +getters.maxBuyTypeValue) {\n return getters.maxBuyTypeValue;\n }\n },\n getOriginalTagsByShadow(state) {\n return (tags) => {\n if (!tags || tags.length === 0) return [];\n const keys = Object.keys(state.audienceTagsMap.retargeting_tags_map ?? {}).map(e => +e);\n const values = Object.values(state.audienceTagsMap.retargeting_tags_map ?? {}).map(e => +e);\n return tags.map((tag) => {\n const index = keys.findIndex(e => e === tag);\n if (index !== -1) {\n return values[index];\n }\n return tag;\n });\n };\n },\n getShadowTagsByOriginal(state) {\n return (tags, type) => {\n if (!tags || tags.length === 0) return [];\n const keys = Object.keys(state.audienceTagsMap.retargeting_tags_map ?? {}).map(e => +e);\n const values = Object.values(state.audienceTagsMap.retargeting_tags_map ?? {}).map(e => +e);\n const originalTags = type === AudienceType.INCLUDE ? state.originalRetargetingTags : state.originalRetargetingTagsExclude;\n return tags.map((tag) => {\n const index = values.findIndex(e => e === tag);\n if (index !== -1 && originalTags.includes(tag)) {\n return keys[index];\n }\n return tag;\n });\n };\n },\n isShadowAudience(state) {\n return (id, type) => {\n const list = type === AudienceType.INCLUDE ? state.originalRetargetingTags : state.originalRetargetingTagsExclude;\n return list.includes(id);\n };\n },\n getShadowName(state) {\n return (id) => {\n const { retargeting_tags_map, retargeting_tags_name_map } = state.audienceTagsMap;\n if (!retargeting_tags_map || !retargeting_tags_name_map) {\n return;\n }\n let shadowId;\n Object.entries(retargeting_tags_map).forEach(([sKey, sValue]) => {\n if (+sValue === id) {\n shadowId = +sKey;\n }\n });\n if (!shadowId) return;\n return retargeting_tags_name_map[shadowId];\n };\n },\n },\n mutations: {\n [types.SET_STOCK_INFO](state, info = {}) {\n const { stockInfo } = state;\n const fields = Object.keys(stockInfo) || [];\n if (fields && fields.length) {\n // 根据返回uv值及最大uv初始化uv百分比 uv=reach\n if (info.rf_estimate_info && !stockInfo.rf_predict_percentage) {\n info.rf_predict_percentage = numeral(info.rf_predict_reach / info.rf_estimate_info.max_uv_mille * 100).format('0.000').slice(0, -1);\n }\n for (const field of fields) {\n if (info && Object.prototype.hasOwnProperty.call(info, field)) {\n stockInfo[field] = info[field];\n }\n }\n }\n },\n [types.SET_ESTIMATE_INFO](state, info = {}) {\n state.estimateData = { ...state.estimateData, ...info };\n },\n [types.SET_BUYTYPE_VALUE](state, { type, value }) {\n state.buyTypeValues[type] = value;\n switch (type) {\n case rfBuyingType.fixedBudget: state.stockInfo.budget = value;\n break;\n case rfBuyingType.fixedImpression: state.stockInfo.rf_predict_impression = value;\n break;\n case rfBuyingType.fixedReach: state.stockInfo.rf_predict_reach = value;\n break;\n case rfBuyingType.fixedReachPercent: state.stockInfo.rf_predict_percentage = value;\n break;\n default: break;\n }\n },\n [types.INIT_RF_INFO](state) {\n state.estimateData = {\n rf_total_result: {},\n rf_daily_result: {},\n rf_impression: {\n categories: [],\n series: [],\n },\n rf_frequency_per_person: {},\n };\n state.stockInfo = {\n rf_predict_impression: 0,\n rf_predict_reach: 0,\n rf_predict_cpr: 0,\n rf_predict_frequency: 0,\n budget_mode: 1,\n budget: '',\n ad_reach_frequency_buy_type: rfBuyingType.fixedBudget,\n rf_predict_percentage: 0,\n rf_estimate_key: '0',\n rf_estimate_info: null,\n };\n },\n [types.SET_VALIDATE_TARGETING_PARAMS_STATUS](state, status) {\n state.isValidTargetingParams = status;\n },\n [types.SET_RF_BELOW18AGEBUTTONVISIBLE](state, list) {\n state.isRfBelow18AgeButtonVisible = list;\n },\n [types.SET_RF_ISEDITESTIMATECHANGED](state, status) {\n state.isEditEstimtateChanged = status;\n },\n [types.SET_RF_ORIGINALAUDIENCETAGS](state, list) {\n state.originalRetargetingTags = list;\n },\n [types.SET_RF_ORIGINALAUDIENCETAGS_EXCLUDE](state, list) {\n state.originalRetargetingTagsExclude = list;\n },\n [types.SET_RF_AUDIENCETAGMAP](state, map) {\n state.audienceTagsMap = map;\n },\n [types.SET_RF_DRAFTCREATIVES](state, creatives) {\n state.draftCreatives = creatives;\n },\n [types.SET_RF_FREQUENCY](state, frequency) {\n state.frequency = frequency;\n },\n [types.SET_RF_FREQUENCY_SCHEDULE](state, frequencySchedule) {\n state.frequencySchedule = frequencySchedule;\n },\n },\n actions: {\n setRfBelow18AgeButtonVisible({ commit }, visible) {\n commit(types.SET_RF_BELOW18AGEBUTTONVISIBLE, visible);\n },\n },\n};\n","import * as types from 'src/store/types';\n\nexport default {\n namespaced: true,\n state: {\n loading: false,\n },\n getters: {},\n mutations: {\n [types.SET_ESTIMATE_LOADING](state, loading) {\n state.loading = loading;\n },\n },\n actions: {},\n};\n","import * as types from 'src/store/types/index';\nimport { getUserShopCount } from 'src/service/shop';\nimport { sendLog } from 'src/logger/customLogger';\nimport { ShopType } from 'src/const/state/shop';\n\nconst getShopDefaultState = () => ({\n selectedSpuId: '', // 当前选择的 spu id\n shopInfo: {}, // 选择的 shop 数据\n selectedSpuList: [], // 多选商品的商品长度\n});\n\nexport default {\n namespaced: true,\n state: {\n ...getShopDefaultState(),\n hasMagellanShop: false,\n },\n getters: {\n shopId({ shopInfo }) {\n return shopInfo?.id || '';\n },\n shopType({ shopInfo }) {\n return shopInfo?.type;\n },\n shopCountry({ shopInfo }) {\n return shopInfo?.country || [];\n },\n },\n mutations: {\n [types.RESET_SHOP_STATE](state) {\n Object.assign(state, getShopDefaultState());\n },\n [types.SET_SHOP_INFO](state, shopInfo = {}) {\n state.shopInfo = shopInfo;\n },\n [types.SET_SELECTED_SPU_ID](state, spuId = '') {\n state.selectedSpuId = spuId;\n },\n [types.SET_SELECTED_SPU_LIST](state, spuList = []) {\n state.selectedSpuList = spuList;\n },\n [types.SET_HAS_MAGELLAN_SHOP](state, hasMagellanShop = false) {\n state.hasMagellanShop = hasMagellanShop;\n },\n },\n actions: {\n // 获取当前用户是否有1P shop\n async getUserHasMagellanShop({ state, commit }) {\n if (state.hasMagellanShop) {\n return;\n }\n try {\n const shopCount = await getUserShopCount(ShopType.ecommShop);\n commit(types.SET_HAS_MAGELLAN_SHOP, shopCount > 0);\n } catch (e) {\n sendLog('custom', {\n event_name: 'getUserHasMagellanShop Failed',\n });\n }\n },\n },\n};\n","/**\n * smb自助业务业务相关\n */\nimport * as types from 'src/store/types';\nimport { getAbVersion } from 'src/service/index';\n\nexport default {\n namespaced: true,\n state: {\n hasFetchedAb: false, // 是否已经拉取ab接口\n payment_sdk_integration_v2: false, // Payment SDK 接入实验 - 二期\n payment_sdk_skippable: false, // Payment SDK 创编提交 先付费弹窗可跳过 实验\n enable_tutorial: false, // 新手引导\n enable_new_guide: false, // 新手引导优化\n enable_1v1: false, // 新手引导工单 1v1\n hide_manual_pay: false, // 支付切换是否用新样式\n },\n mutations: {\n [types.SET_HAS_FETCHED_AB](state, data) {\n state.hasFetchedAb = data;\n },\n [types.SET_NEW_CUSTOMER](state, data) {\n state.enable_tutorial = data.enable_tutorial || false; // 新手引导\n state.enable_1v1 = data.enable_1v1 || false; // 新手引导工单 1v1\n state.enable_new_guide = data.enable_new_guide || false; // 新手引导优化\n },\n [types.SET_PAYMENT_SDK_ABTESTS](state, data) {\n state.payment_sdk_integration_v2 = data.payment_sdk_integration_v2;\n state.payment_sdk_skippable = data.payment_sdk_skippable;\n },\n [types.SET_PAYMENT_CHANGE_ABTEST](state, data) {\n state.hide_manual_pay = data;\n },\n },\n actions: {\n async getPaymentChangeABTest({ commit }) {\n const data = await getAbVersion(\n {\n ab_feature: 'payment_method',\n },\n 'payment_method',\n );\n commit(types.SET_PAYMENT_CHANGE_ABTEST, data.hide_manual_pay || false);\n },\n },\n};\n","/**\n * tanblock 支付相关\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\n\nexport default {\n namespaced: true,\n state: {\n exclude_app_package_id: '',\n blockedAppList: [],\n },\n mutations: {\n setAppid(state, data) {\n state.exclude_app_package_id = data;\n },\n setBlockedAppList(state, data) {\n state.blockedAppList = data;\n },\n },\n actions: {\n tanCreate(store, data) {\n return request.post(apis.tanblock.create, data);\n },\n async tanGetList({ commit }) {\n try {\n const resp = await request.get(apis.tanblock.list);\n const { app_list } = resp.data;\n commit('setBlockedAppList', app_list);\n\n return resp;\n } catch (error) {\n commit('setBlockedAppList', []);\n\n throw error;\n }\n },\n tanDelete(store, data) {\n return request.delete(apis.tanblock.delete, data);\n },\n tanUpdate(store, data) {\n return request.post(apis.tanblock.update, data);\n },\n async tanGetId({ commit }) {\n try {\n const { data } = await request.get(apis.tanblock.idCode);\n const { blocked_app_id = '' } = data;\n commit('setAppid', blocked_app_id);\n } catch (error) {\n commit('setAppid', '');\n }\n },\n },\n};\n","/**\n * adCreate tea相关 store\n */\nexport default {\n namespaced: true,\n state: {\n startData: {\n action_ad_level: '', // 来源的广告层级: campaign, ad_group, ad\n create_mode: 'create', // 创编类型:create、edit、duplicate\n },\n finishData: {\n from_url_path: '',\n finish_type: '', // submit_success 创建成功 exit 退出\n start_point: '', // 来源的广告层级: campaign, ad_group, ad\n action_ad_level: '', // 结束的广告层级: campaign, ad_group, ad\n duration_campaign: null, // campaign层级耗时 s\n duration_ad_group: null, // ad group 层级耗时 s\n duration_ad: null, //\n campaign_objective: '', // campaign的objective类型,app_install, traffic, conversion, reach, video_view, catalogue_sales\n create_mode: '', // 创编类型:create、edit、duplicate\n start_time: '', // 创编初始时间\n edit_time: '', // 每次路由发生变化的时间\n },\n },\n mutations: {\n commitStartData(state, data) {\n state.startData = {\n ...state.startData,\n ...data,\n };\n },\n commitFinishData(state, data) {\n state.finishData = {\n ...state.finishData,\n ...data,\n };\n },\n commitClearFinishData(state) {\n // eslint-disable-next-line no-return-assign\n Object.keys(state.finishData).forEach(key => state.finishData[key] = '');\n },\n },\n actions: {\n setStartData({ commit }, data) {\n commit('commitStartData', data || {});\n },\n setFinishData({ commit }, data) {\n commit('commitFinishData', data || {});\n },\n clearFinishData({ commit }) {\n commit('commitClearFinishData');\n },\n },\n};\n","/**\n * convert 相关 store\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport * as types from 'src/store/types';\nimport { EnumLifetimeType } from 'src/const/date';\n\nexport default {\n namespaced: true,\n\n state: {\n allLogList: [],\n campaignLogList: [],\n adgroupLogList: [],\n adLogList: [],\n end_time: '',\n start_time: '',\n lifetime: EnumLifetimeType.unchosen,\n conversion_stime: '',\n conversion_etime: '',\n },\n getters: {\n allLogList: state => state.allLogList || [],\n campaignLogList: state => state.campaignLogList || [],\n adgroupLogList: state => state.adgroupLogList || [],\n adLogList: state => state.adLogList || [],\n end_time: state => state.end_time,\n start_time: state => state.start_time,\n conversion_stime: state => state.conversion_stime,\n conversion_etime: state => state.conversion_etime,\n },\n mutations: {\n [types.SET_LOGLIST](state, data) {\n state.logList = data;\n },\n [types.SET_REQUESTPARAMS](state, data) {\n state.requestParams = data;\n },\n [types.SET_STARTTIME](state, data) {\n state.start_time = data;\n },\n [types.SET_ENDTIME](state, data) {\n state.end_time = data;\n },\n [types.SET_LIFETIME](state, data) {\n state.lifetime = data;\n },\n [types.SET_CONVERSIONSTARTTIME](state, data) {\n state.conversion_stime = data;\n },\n [types.SET_CONVERSIONENDTIME](state, data) {\n state.conversion_etime = data;\n },\n },\n\n\n actions: {\n // 获取广告组列表\n getLogList(store, data) { // 第一个参数必须写,,不然是整个对象\n return request.get(apis.toolbox.logs, data);\n },\n },\n};\n","/* eslint-disable indent */\nimport moment from 'moment';\nimport apis from 'src/const/apis';\nimport * as types from 'src/store/types';\nimport request from 'src/utils/request';\nimport reportDownload from 'src/utils/report-download';\nimport {\n defaultFilters, dateTypesMap, summaryDataMap, newTransactionTypeMap, paymentsTypeMap,\n transactionTabType, transactionStatusMap,\n} from 'src/const/transaction';\nimport tool from 'src/utils/tool';\nimport { Message } from 'byted-vui';\nimport { i18n } from 'src/utils/localeUtil';\n\nconst { aadvid } = tool.queryToJson();\nconst UI_DATE_FORMAT = 'YYYYMM';\nconst FULL_DAY_FORMAT = 'YYYY-MM-DD';\nconst MONTH_FORMAT = 'YYYY-MM';\nconst TRANSACTION_NOT_BEFORE = '2019-03-01';\n\nfunction getParams(params = {}, isDownLoad = false) {\n return {\n ...params,\n action: !isDownLoad ? '' : 'download',\n };\n}\n\nfunction getCommonNewTransactionDataListConfig() {\n return {\n list: [],\n amount: '0',\n currency: '',\n };\n}\n\nexport default {\n namespaced: true,\n state: {\n allDeposit: 0,\n allTransfer: 0,\n transactions: [],\n monthsData: {},\n listLoading: true,\n invoiceLoading: false,\n listExporting: false,\n transactionType: defaultFilters.transactionType,\n dateType: defaultFilters.dateType,\n requestParams: {\n aadvid,\n st: '',\n et: '',\n },\n newTransactionListLoading: true,\n newTransactionCostsListLoading: false,\n newTransactionDownloadLoading: false,\n newTransactionPaymentsLoading: false,\n summaryData: {\n [summaryDataMap.campaignCosts]: 0,\n [summaryDataMap.payments]: 0,\n [summaryDataMap.promotions]: 0,\n [summaryDataMap.adjustments]: 0,\n },\n costsPagination: {\n page: 1,\n limit: 20,\n total: 0,\n },\n listData: {\n [newTransactionTypeMap.payments]: {\n [paymentsTypeMap.payments]: getCommonNewTransactionDataListConfig(),\n [paymentsTypeMap.promotions]: getCommonNewTransactionDataListConfig(),\n [paymentsTypeMap.adjustments]: getCommonNewTransactionDataListConfig(),\n },\n [newTransactionTypeMap.costs]: {\n default: getCommonNewTransactionDataListConfig(),\n },\n [newTransactionTypeMap.tax]: {\n default: getCommonNewTransactionDataListConfig(),\n },\n },\n currentTabType: transactionTabType.payments,\n },\n mutations: {\n [types.SET_TRANSACTION_DATA](state, data) {\n state.transactions = data.transactions || [];\n state.allDeposit = data.charge_total || 0;\n state.monthsData = data.monthly_stat || 0;\n state.allTransfer = (data.cost_total || 0) + (data.tax_total || 0);\n },\n [types.SET_TRANSACTION_LIST_LOADING](state, isLoading) {\n state.listLoading = isLoading;\n },\n [types.SET_INVOICE_LOADING](state, isLoading) {\n state.invoiceLoading = isLoading;\n },\n [types.SET_TRANSACTION_LIST_EXPORTING](state, isExporting) {\n state.listExporting = isExporting;\n },\n [types.SET_TRANSACTION_TYPE](state, type) {\n state.transactionType = type;\n },\n [types.SET_TRANSACTION_DATE_TYPE](state, type) {\n state.dateType = type;\n },\n [types.SET_NEW_TRANSACTION_LIST_REQUEST_PARAMS](state, data = {}) {\n state.requestParams = {\n ...state.requestParams,\n ...data,\n };\n },\n [types.SET_NEW_TRANSACTION_COST_PAGINATION_PARAMS](state, data = {}) {\n state.costsPagination = {\n ...state.costsPagination,\n ...data,\n };\n },\n [types.SET_NEW_TRANSACTION_LIST_LOADING](state, isLoading = false) {\n state.newTransactionListLoading = isLoading;\n },\n [types.SET_NEW_TRANSACTION_COSTS_LIST_LOADING](state, isLoading = false) {\n state.newTransactionCostsListLoading = isLoading;\n },\n [types.SET_NEW_TRANSACTION_DOWNLOAD_LOADING](state, isLoading = false) {\n state.newTransactionDownloadLoading = isLoading;\n },\n [types.SET_NEW_TRANSACTION_PAYMENTS_LOADING](state, isLoading = false) {\n state.newTransactionPaymentsLoading = isLoading;\n },\n [types.SET_NEW_TRANSACTION_SUMMARY_DATA](state, data = {}) {\n state.summaryData = {\n ...state.summaryData,\n ...data,\n };\n },\n [types.SET_NEW_TRANSACTION_LIST_DATA](state, {\n type = newTransactionTypeMap.payments,\n subType = 'default',\n data = getCommonNewTransactionDataListConfig(),\n }) {\n state.listData[type][subType] = data;\n },\n [types.SET_NEW_TRANSACTION_CURRENT_TAB_TYPE](state, currentTabType = transactionTabType.payments) {\n state.currentTabType = currentTabType;\n },\n },\n getters: {\n queryDate: (state) => { // 20190102\n const currentMonthMo = moment();\n const currentEndDate = currentMonthMo.format(FULL_DAY_FORMAT);\n const currentMonth = currentMonthMo.month();\n\n const lastMonthMo = moment().month(currentMonth - 1);\n const last3MonthMo = moment().month(currentMonth - 2);\n const last6MonthMo = moment().month(currentMonth - 5);\n const currentYearMo = moment().startOf('year');\n const last12MonthMo = moment().month(currentMonth - 11);\n const allTimeMo = moment(TRANSACTION_NOT_BEFORE);\n\n switch (state.dateType) {\n case dateTypesMap.CURRENT_MONTH:\n return {\n startDate: currentMonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n case dateTypesMap.PREVIOUS_MONTH:\n return {\n startDate: lastMonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: lastMonthMo.endOf('month').format(FULL_DAY_FORMAT),\n };\n case dateTypesMap.LAST_3_MONTH:\n return {\n startDate: last3MonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n case dateTypesMap.LAST_6_MONTH:\n return {\n startDate: last6MonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n case dateTypesMap.THIS_YEAR:\n return {\n startDate: currentYearMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n case dateTypesMap.LAST_12_MONTH:\n return {\n startDate: last12MonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n case dateTypesMap.ALL_TIME:\n return {\n startDate: allTimeMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n default:\n return {\n startDate: currentMonthMo.startOf('month').format(FULL_DAY_FORMAT),\n endDate: currentEndDate,\n };\n }\n },\n monthRange: (state, getters) => {\n let { startDate } = getters.queryDate;\n const { endDate } = getters.queryDate;\n if (state.dateType === dateTypesMap.ALL_TIME) { // 用户选择了所有时间\n const { transactions = [] } = state;\n if (!transactions.length) return []; // 若无交易记录 返回空\n startDate = transactions[transactions.length - 1].transaction_date || startDate;\n }\n\n const res = [];\n const end = moment(endDate);\n const endYearMonth = moment(end.format(MONTH_FORMAT));\n\n for (\n let start = moment(startDate);\n moment(start.format(MONTH_FORMAT)).isBefore(endYearMonth);\n start.add(1, 'month')\n ) {\n const daysInMonth = start.daysInMonth();\n res.unshift({\n yearMonth: start.format(UI_DATE_FORMAT),\n year: start.year(),\n month: start.month() + 1,\n days: daysInMonth,\n startDay: 1,\n endDay: daysInMonth,\n });\n }\n res.unshift({ // 处理最后一个月\n yearMonth: end.format(UI_DATE_FORMAT),\n year: end.year(),\n month: end.month() + 1,\n days: end.daysInMonth(),\n startDay: 1,\n endDay: end.date(),\n });\n\n return res;\n },\n transactionData: (state, getters) => {\n const { monthsData = {}, transactions = [] } = state;\n const transMap = transactions.reduce((res, item) => { // 将交易列表按月group\n const yearMonth = moment(item.transaction_date).format(UI_DATE_FORMAT);\n res[yearMonth] = res[yearMonth] || [];\n res[yearMonth].push(item);\n return res;\n }, {});\n\n return getters.monthRange.map((item) => {\n const monthData = monthsData[item.yearMonth] || {};\n const chargeTotal = monthData.charge_total || 0;\n const costTotal = monthData.cost_total || 0;\n const taxTotal = monthData.tax_total || 0;\n const count = monthData.total_count || 0;\n const amount = chargeTotal - costTotal - taxTotal;\n\n return {\n items: transMap[item.yearMonth] || [],\n monthData: {\n chargeTotal, costTotal, taxTotal, count, amount,\n },\n ...item,\n };\n });\n },\n paymentsData: state => state.listData[newTransactionTypeMap.payments][paymentsTypeMap.payments],\n promotionsData: state => state.listData[newTransactionTypeMap.payments][paymentsTypeMap.promotions],\n adjustmentsData: state => state.listData[newTransactionTypeMap.payments][paymentsTypeMap.adjustments],\n costsData: state => state.listData[newTransactionTypeMap.costs].default,\n taxData: state => state.listData[newTransactionTypeMap.tax].default,\n pageNoDataConfig: ({ listData }) => Object.keys(listData).reduce((obj, key) => {\n obj[key] = Object.values(listData[key]).every(t => !t?.list?.length);\n return obj;\n }, {}),\n disabledDownload(state, getters) {\n const { pageNoDataConfig } = getters;\n const { currentTabType } = state;\n if (currentTabType === transactionTabType.payments) {\n return !!pageNoDataConfig?.[transactionTabType.payments];\n }\n return !!(pageNoDataConfig[newTransactionTypeMap.costs] && pageNoDataConfig[newTransactionTypeMap.tax]);\n },\n },\n actions: {\n getInvoice({ commit }, data) {\n commit(types.SET_INVOICE_LOADING, true);\n\n // 错误处理\n const failureCheckFunc = (responseObj) => {\n if (responseObj.code !== 0) {\n Message.error(i18n.t(responseObj?.msg || 'module_transaction_download_fail_no_content'));\n return true;\n }\n return false;\n };\n\n return new Promise((resolve, reject) => {\n const api = apis.transaction.new_invoice;\n reportDownload(data, api, '', '', { failureCheckFunc }, 'GET')\n .then((res) => {\n commit(types.SET_INVOICE_LOADING, false);\n resolve(res);\n }).catch((err) => {\n commit(types.SET_INVOICE_LOADING, false);\n reject(err);\n });\n });\n },\n async getTransactions({ commit, state, getters }, waitTime = 0) {\n commit(types.SET_TRANSACTION_LIST_LOADING, true);\n commit(types.SET_TRANSACTION_DATA, {});\n const { queryDate } = getters;\n const transactionList = apis.transaction.newList;\n if (waitTime) {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, waitTime);\n });\n }\n request\n .get(transactionList, {\n aadvid,\n query_types: `[${(state.transactionType || '').split(',')}]`,\n start_time: queryDate.startDate,\n end_time: queryDate.endDate,\n })\n .then((res = {\n charge_total: 0,\n cost_total: 0,\n tax_total: 0,\n monthly_stat: {},\n transactions: [],\n }) => {\n if (res.data) {\n commit(types.SET_TRANSACTION_LIST_LOADING, false);\n commit(types.SET_TRANSACTION_DATA, res.data);\n } else {\n commit(types.SET_TRANSACTION_LIST_LOADING, false);\n }\n })\n .catch((err) => {\n commit(types.SET_TRANSACTION_LIST_LOADING, false);\n });\n },\n exportTransactions({ commit, getters, state }) {\n commit(types.SET_TRANSACTION_LIST_EXPORTING, true);\n\n const { queryDate } = getters;\n const requestParams = {\n aadvid,\n query_types: `[${(state.transactionType || '').split(',')}]`,\n start_time: queryDate.startDate,\n end_time: queryDate.endDate,\n };\n const transactionExport = apis.transaction.newExport;\n const transactionDownload = apis.transaction.newDownLoad;\n\n return new Promise((resolve, reject) => {\n reportDownload(requestParams, transactionExport, transactionDownload)\n .then((res) => {\n commit(types.SET_TRANSACTION_LIST_EXPORTING, false);\n resolve(res);\n })\n .catch((err) => {\n commit(types.SET_TRANSACTION_LIST_EXPORTING, false);\n reject(err);\n });\n });\n },\n // 获取payments列表数据\n async getPaymentsList({ commit, state }, waitTime = 0) {\n if (waitTime) {\n commit(types.SET_NEW_TRANSACTION_PAYMENTS_LOADING, true);\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n commit(types.SET_NEW_TRANSACTION_PAYMENTS_LOADING, false);\n }, waitTime);\n });\n }\n return request\n .get(apis.transaction.paymentsList, getParams(state.requestParams))\n .then(({ data }) => {\n if (data) {\n const {\n table = [],\n pagination: {\n top_up_count = 0,\n promotions_count = 0,\n adjustments_count = 0,\n },\n statistics: {\n top_up_amount = '0',\n promotions_amount = '0',\n adjustments_amount = '0',\n currency = '',\n },\n } = data;\n commit(types.SET_NEW_TRANSACTION_SUMMARY_DATA, {\n [summaryDataMap.payments]: top_up_count ?? 0,\n [summaryDataMap.promotions]: promotions_count ?? 0,\n [summaryDataMap.adjustments]: adjustments_count ?? 0,\n });\n\n const paymentsDataMap = {\n [paymentsTypeMap.payments]: {\n amount: String(top_up_amount),\n list: [],\n currency,\n },\n [paymentsTypeMap.promotions]: {\n amount: String(promotions_amount),\n list: [],\n currency,\n },\n [paymentsTypeMap.adjustments]: {\n amount: String(adjustments_amount),\n list: [],\n currency,\n },\n };\n table.forEach((item) => {\n // pending handling 这两种状态转换为前端状态processing统一展示\n if ([transactionStatusMap.pending, transactionStatusMap.handling].includes(item.transaction_status)) {\n item.transaction_status = transactionStatusMap.processing;\n }\n paymentsDataMap[item.transaction_type].list.push(item);\n });\n\n Object.keys(paymentsDataMap).forEach((key) => {\n commit(types.SET_NEW_TRANSACTION_LIST_DATA, {\n type: newTransactionTypeMap.payments,\n subType: key,\n data: paymentsDataMap[key],\n });\n });\n }\n });\n },\n // 获取costs列表数据\n getCostsList({ commit, state }) {\n commit(types.SET_NEW_TRANSACTION_COSTS_LIST_LOADING, true);\n return request.get(apis.transaction.costsList, {\n ...getParams(state.requestParams),\n ...state.costsPagination,\n }).then(({ data }) => {\n if (data) {\n const {\n table = [],\n pagination: {\n total_count = 0,\n },\n statistics: {\n amount = '0',\n currency = '',\n },\n } = data;\n commit(types.SET_NEW_TRANSACTION_COST_PAGINATION_PARAMS, {\n total: Number(total_count),\n });\n commit(types.SET_NEW_TRANSACTION_LIST_DATA, {\n type: newTransactionTypeMap.costs,\n data: {\n list: table || [],\n amount: String(amount),\n currency,\n },\n });\n\n commit(types.SET_NEW_TRANSACTION_SUMMARY_DATA, {\n [summaryDataMap.campaignCosts]: total_count ?? 0,\n });\n }\n }).finally(() => {\n commit(types.SET_NEW_TRANSACTION_COSTS_LIST_LOADING, false);\n });\n },\n // 获取tax列表数据\n getTaxList({ commit, state }) {\n return request.get(apis.transaction.taxList, getParams(state.requestParams)).then(({ data }) => {\n if (data) {\n const { table, statistics: { tax_amount = '0', currency = '' } } = data;\n commit(types.SET_NEW_TRANSACTION_LIST_DATA, {\n type: newTransactionTypeMap.tax,\n data: {\n list: table,\n currency,\n amount: String(tax_amount),\n },\n });\n }\n });\n },\n getNewTransactionList({ dispatch, commit }) {\n commit(types.SET_NEW_TRANSACTION_LIST_LOADING, true);\n return Promise.all([\n dispatch('getPaymentsList'),\n dispatch('getCostsList'),\n dispatch('getTaxList'),\n ]).finally(() => {\n commit(types.SET_NEW_TRANSACTION_LIST_LOADING, false);\n });\n },\n downloadReport({ commit, state, getters }) {\n if (getters.disabledDownload) return;\n commit(types.SET_NEW_TRANSACTION_DOWNLOAD_LOADING, true);\n const { currentTabType, requestParams } = state;\n const isPayments = currentTabType === transactionTabType.payments;\n\n const downloadApi = apis.reporting.new_run_reporting_download_url;\n const exportApi = isPayments ? apis.transaction.paymentsList : apis.transaction.costsList;\n const params = getParams(requestParams, true);\n\n const tasks = [];\n\n if (!getters.pageNoDataConfig[currentTabType]) {\n tasks.push(reportDownload(params, exportApi, downloadApi, 'download_id', { isGetFileUrl: true }));\n }\n\n if (!isPayments && !getters.pageNoDataConfig[newTransactionTypeMap.tax]) {\n // 额外导出tax信息\n tasks.push(reportDownload(getParams(requestParams, true), apis.transaction.taxList, downloadApi, 'download_id', { isGetFileUrl: true }));\n }\n\n return Promise.all(tasks).finally(() => {\n commit(types.SET_NEW_TRANSACTION_DOWNLOAD_LOADING, false);\n });\n },\n },\n};\n","/**\n * 开户有关信息\n */\nimport apis from 'src/const/apis';\nimport request from 'src/utils/request';\nimport * as types from 'src/store/types';\n\nconst user = {\n namespaced: true, // 带 user 命名空间\n state: {\n refundInfo: {}, // 退款状态\n },\n getters: {\n refundInfo(state) {\n return state.refundInfo;\n },\n },\n mutations: {\n [types.SET_USER_REFUND_INFO](state, info) {\n state.refundInfo = info;\n },\n },\n actions: {\n setPromotion({ commit }, data) {\n return request.post(apis.user.promotion, data);\n },\n // 校验邀请链接\n checkInvite({ commit }, data) {\n return request.get(apis.user.selfInvite, data);\n },\n // 自助账户提交调查问卷\n postSurvey({ commit }, data) {\n return request.post(apis.user.postSurvey, data);\n },\n\n // 退款状态\n getRefundStatus({ commit }, data) {\n // return request.get(apis.close.refund_status, data);\n request.get(apis.close.refund_status, data).then(({ data: info }) => {\n commit(types.SET_USER_REFUND_INFO, info);\n });\n },\n\n // 退款金额\n getRefundBalance({ commit }, data) {\n return request.get(apis.close.balance, data);\n },\n // 发起退款&关户\n submitRefundAndCloseAccount({ commit }, data) {\n return request.post(apis.close.submit, data);\n },\n },\n};\n\nexport default user;\n","import * as types from 'src/store/types';\n\nconst mutations = {\n [types.SET_LANG_CHANGE](state, lang) {\n state.currentLang = lang;\n },\n [types.SET_ALARM_SHOW](state, bool) {\n state.isShowAlarm = bool;\n },\n [types.SET_ADBLOCK_ALERT](state, bool) {\n state.showAdblockAlert = bool;\n },\n [types.SET_VISIT_LITE](state, bool) {\n state.showVisitLiteTips = bool;\n },\n [types.SET_NOTIFY_ALERT](state, bool) {\n state.isShowDemoteNotify = bool;\n },\n [types.SET_TTP_NOTIFY_ALERT](state, bool) {\n state.isShowTTPDemoteNotify = bool;\n },\n [types.SET_IS_ATHENA_CALLER_READY](state, bool) {\n state.isAthenaCallerReady = bool;\n },\n [types.SET_HAS_ATHENA_CALLER](state, bool) {\n state.hasAthenaCaller = bool;\n },\n [types.SET_HAS_ATHENA_CALLER_CHECK_COMPLETED](state, bool) {\n state.hasAthenaCallerCheckCompleted = bool;\n },\n};\nexport default mutations;\n","import { getVisitLiteFlag } from 'src/utils/localstorageAccess';\n\n// 这里放置一些common state\nconst state = {\n currentLang: 'en',\n isShowAlarm: false,\n showAdblockAlert: false,\n // 是否要访问移动端的弹窗\n showVisitLiteTips: getVisitLiteFlag().show,\n // 降级需求 notify提示框显示与否的判断字段\n isShowDemoteNotify: false,\n // TTP 降级\n isShowTTPDemoteNotify: false,\n isAthenaCallerReady: false, // 雅典娜智能客服是否加载完成\n hasAthenaCaller: false, // 是否有雅典娜智能客服\n hasAthenaCallerCheckCompleted: false, // 是否需要加载雅典娜智能客服的判断完成\n};\nexport default state;\n","/* eslint-disable no-multiple-empty-lines */\n/**\n * Mutation Type\n * (暂时存放在一个文件中,如果后期有需要可以做拆分)\n */\n// 全局,每个某块都可能会用到的 types\nexport const SET_LOADING_STATE = 'SET_LOADING_STATE';\nexport const SET_LANG_CHANGE = 'SET_LANG_CHANGE';\nexport const SET_REQUEST_TOKEN = 'SET_REQUEST_TOKEN';\nexport const SET_PERF_LIST = 'SET_PERF_LIST';\nexport const SET_ALARM_SHOW = 'SET_ALARM_SHOW';\nexport const SET_VISIT_LITE = 'SET_VISIT_LITE';\nexport const SET_ADBLOCK_ALERT = 'SET_ADBLOCK_ALERT';\nexport const SET_NOTIFY_ALERT = 'SET_NOTIFY_ALERT';\nexport const SET_TTP_NOTIFY_ALERT = 'SET_TTP_NOTIFY_ALERT';\nexport const SET_DEDICATED_CAMPAIGN = 'SET_DEDICATED_CAMPAIGN';\nexport const SET_HAS_FETCHED_AB = 'SET_HAS_FETCHED_AB';\nexport const SET_IS_ATHENA_CALLER_READY = 'SET_IS_ATHENA_CALLER_READY';\nexport const SET_HAS_ATHENA_CALLER = 'SET_HAS_ATHENA_CALLER';\nexport const SET_HAS_ATHENA_CALLER_CHECK_COMPLETED = 'SET_HAS_ATHENA_CALLER_CHECK_COMPLETED';\nexport const SET_IS_ATHENACALLER_READY = 'SET_IS_ATHENACALLER_READY';\nexport const SET_SHOW_NEGATIVE_TAB = 'SET_SHOW_NEGATIVE_TAB';\n\n// 统计列表相关\nexport const SET_BATCH_CUSTOM_CONTENT = 'SET_BATCH_CUSTOM_CONTENT';\nexport const SET_BATCH_CUSTOM_CONTENT_BY_KEY = 'SET_BATCH_CUSTOM_CONTENT_BY_KEY';\nexport const SET_PERF_OPERATED_ANCHOR = 'SET_PERF_OPERATED_ANCHOR';\n\n// campaign 相关\nexport const COPY_AD = 'COPY_AD';\nexport const SET_ACTION_OPTIONS = 'SET_ACTION_OPTIONS'; // 转化列表数据\nexport const RESET_STATES = 'RESET_STATES';\nexport const SET_CAMPAIGN = 'SET_CAMPAIGN';\nexport const SET_CAMPAIGN_ID_FOR_SPLITTEST = 'SET_CAMPAIGN_ID_FOR_SPLITTEST';\nexport const SET_ADGROUP_ID_FOR_SPLITTEST = 'SET_ADGROUP_ID_FOR_SPLITTEST';\nexport const SET_ABTEST_FLAG_FOR_SPLITTEST = 'SET_ABTEST_FLAG_FOR_SPLITTEST';\nexport const SET_CAMPAIGN_SUGGEST_BID = 'SET_CAMPAIGN_SUGGEST_BID';\nexport const SET_PANGLE_FLOW_PKG = 'SET_PANGLE_FLOW_PKG';\nexport const SET_LEARN_PARSE = 'SET_LEARN_PARSE';\nexport const SET_REFERER = 'SET_REFERER';\nexport const CLEAR_REFERER = 'CLEAR_REFERER';\nexport const SET_ISFROMSIMPLIFIED05 = 'SET_ISFROMSIMPLIFIED05';\nexport const SET_ISFROMCONVERSION = 'SET_ISFROMCONVERSION';\nexport const SET_NEED_MODE_SWITCH_TOOLTIP = 'SET_NEED_MODE_SWITCH_TOOLTIP';\nexport const SET_SOURCE_LIST = 'SET_SOURCE_LIST';\n\n// brand 相关\nexport const COPY_CREATIVE = 'COPY_CREATIVE';\nexport const SET_SELECT_MODAL_STATE = 'SET_SELECT_MODAL_STATE';\n\n// convert 相关\nexport const SET_PARTNER_LIST = 'SET_PARTNER_LIST';\n\n// 用户相关\nexport const SET_SHOW_NAVBAR = 'SET_SHOW_NAVBAR';\nexport const SET_USER_INFO = 'SET_USER_INFO';\nexport const SET_ACCOUNT_INFO = 'SET_ACCOUNT_INFO';\nexport const SET_HAS_FETCHED_ACCOUNT_INFO = 'SET_HAS_FETCHED_ACCOUNT_INFO';\nexport const SET_CONTACT_INFO = 'SET_CONTACT_INFO';\nexport const SET_CORE_USER_INFO = 'SET_CORE_USER_INFO';\nexport const SET_ACCOUNT_BALANCE = 'SET_ACCOUNT_BALANCE';\nexport const SET_ACCOUNT_MAJORDOMO_DEL = 'SET_ACCOUNT_MAJORDOMO_DEL';\nexport const GET_CAMPAIGNSUCCESS = 'GET_CAMPAIGNSUCCESS';\nexport const SET_ACCOUNT_LIST = 'SET_ACCOUNT_LIST';\nexport const SET_AUTH_STATUS = 'SET_AUTH_STATUS';\nexport const SET_TIMEZONELIST = 'SET_TIMEZONELIST';\nexport const SET_INVOICE_INFO = 'SET_INVOICE_INFO';\nexport const SET_PERMISSION_DATA = 'SET_PERMISSION_DATA';\nexport const SET_WHIHT_LIST = 'SET_WHIHT_LIST';\nexport const SET_UTC_OFFSET = 'SET_UTC_OFFSET';\nexport const SET_FIXED_OFFSET_TIMEZONE = 'SET_FIXED_OFFSET_TIMEZONE';\nexport const SET_QUALIFICATION_LIST = 'SET_QUALIFICATION';\nexport const SET_CUSTOMER_NAME = 'SET_CUSTOMER_NAME';\nexport const SET_TAX_VALUE = 'SET_TAX_VALUE';\nexport const SET_ACCOUNT_OWN_BC = 'SET_ACCOUNT_OWN_BC';\nexport const SET_HAS_NEED_POST_INVOICE_INFO = 'SET_HAS_NEED_POST_INVOICE_INFO';\nexport const SET_CURRENCY_LOCALE = 'SET_CURRENCY_LOCALE';\nexport const SET_CREATION_STATISTICS = 'SET_CREATION_STATISTICS';\n\nexport const SET_USER_REFUND_INFO = 'SET_USER_REFUND_INFO'; // 用户退款信息\nexport const SET_TTCM_ACCOUNT_ID = 'SET_TTCM_ACCOUNT_ID';\nexport const SET_TTP_STATUS = 'SET_TTP_STATUS';\nexport const SET_ENABLE_HIDE_COMMENT = 'SET_ENABLE_HIDE_COMMENT';\n// adgroup 相关\nexport const SET_INITIALIZED = 'SET_INITIALIZED'; // 表单是否完成了 initCreate/initEdit/initCopy\nexport const SET_FAKE_CAMPAIGN = 'SET_FAKE_CAMPAIGN';\nexport const SET_FAKE_ADIDS = 'SET_FAKE_ADIDS';\nexport const SET_TARGET_MULTI_TABS = 'SET_TARGET_MULTI_TABS';\nexport const SET_BIDDING_MULTI_TABS = 'SET_BIDDING_MULTI_TABS';\nexport const SET_CAMPAIGN_LIST = 'SET_CAMPAIGN_LIST';\nexport const SET_ACK_CAMPAIGN_IDS = 'SET_ACK_CAMPAIGN_IDS';\nexport const SET_ACTIVE_THIRD_TABS = 'SET_ACTIVE_THIRD_TABS';\nexport const SET_INVENTORY_FLOW = 'SET_INVENTORY_FLOW';\nexport const SET_CONVERSION_CHECKED = 'SET_CONVERSION_CHECKED'; // TODO: pixel全量上线后此逻辑需要下掉,所有改动处均有此注释\nexport const SET_INVENTORY_FLOW_TYPE = 'SET_INVENTORY_FLOW_TYPE';\nexport const SET_BRAND_SAFETY = 'SET_BRAND_SAFETY';\nexport const SET_CREATIVE_MATERIAL_MODE = 'SET_CREATIVE_MATERIAL_MODE';\nexport const GET_CAMPAIGN_NAV_LIST = 'GET_CAMPAIGN_NAV_LIST';\nexport const SET_CAMPAIGN_OBJECTIVE_TYPE = 'SET_CAMPAIGN_OBJECTIVE_TYPE';\nexport const SET_CAMPAIGN_ID = 'SET_CAMPAIGN_ID';\nexport const GET_AD_GROUP_INFO = 'GET_AD_GROUP_INFO'; // 单个adgrup对象有ad_id\nexport const SET_AD_GROUP_DATA = 'GET_AD_GROUP_DATA'; // 提交的数据,已经验证过\nexport const GET_AD_GROUP_RESP_DATA = 'GET_AD_GROUP_RESP_DATA'; // 提交的数据,已经验证过\nexport const GET_AD_NAV_LIST = 'GET_AD_NAV_LIST';\nexport const SET_AD_GROUP_ID = 'SET_AD_GROUP_ID';\nexport const SET_RF_AD_GROUP_ID = 'SET_RF_AD_GROUP_ID';\nexport const SET_AD_PLAT_FORM = 'SET_AD_PLAT_FORM';\nexport const SET_ADGROUP_ACTIVE_TAB = 'SET_ADGROUP_ACTIVE_TAB';\nexport const SET_ADGROUP_ACTION = 'SET_ADGROUP_ACTION';\nexport const SET_ADGROUP_PRICING = 'SET_ADGROUP_PRICING';\nexport const SET_ADGROUP_OPT_TARGET = 'SET_ADGROUP_OPT_TARGET';\nexport const SET_ADGROUP_OPT_TARGET_A = 'SET_ADGROUP_OPT_TARGET_A';\nexport const SET_ADGROUP_OPT_TARGET_B = 'SET_ADGROUP_OPT_TARGET_B';\nexport const SET_DIAGNOSIS_DAILY_DATA = 'SET_DIAGNOSIS_DAILY_DATA';\nexport const SET_CPX_BID_CAP = 'SET_CPX_BID_CAP';\nexport const SET_CPX_BID_CAP_LIST = 'SET_CPX_BID_CAP_LIST';\nexport const SET_APP_EVENT_LIST = 'SET_APP_EVENT_LIST';\nexport const SET_AD_CLASSIFY = 'SET_AD_CLASSIFY';\nexport const SET_AADVID = 'SET_AADVID';\nexport const SET_ADVERTISERNAME = 'SET_ADVERTISERNAME';\nexport const SET_START_TIME = 'SET_START_TIME';\nexport const SET_END_TIME = 'SET_END_TIME';\nexport const SET_LIFE_TIME = 'SET_LIFE_TIME'; // 由于dashboard和campaignlist的datepicker是相互独立的,所以需要各自分别set state, 这里是dashboard\nexport const SET_SUGGESTION_FILTERS = 'SET_SUGGESTION_FILTERS';\nexport const SET_DIAGNOSIS_SUGGESTION_NUM_OBJ = 'SET_DIAGNOSIS_SUGGESTION_NUM_OBJ';\nexport const SET_ADGROUP_COPY_NUM = 'SET_ADGROUP_COPY_NUM';\nexport const SET_ADGROUP_BATCH_INFO = 'SET_ADGROUP_BATCH_INFO';\nexport const SET_ADGROUP_BATCH_VISIBLE = 'SET_ADGROUP_BATCH_VISIBLE';\nexport const SET_ADGROUP_DATA_FLAG = 'SET_ADGROUP_DATA_FLAG';\nexport const SET_AD_CAMPAIGN_DATA = 'SET_AD_CAMPAIGN_DATA';\nexport const SET_AUDIENCE_ESTIMATE_TTP = 'SET_AUDIENCE_ESTIMATE_TTP';\nexport const SET_AUDIENCE_ESTIMATE_CLOVER = 'SET_AUDIENCE_ESTIMATE_CLOVER';\nexport const SET_IS_WRITABLE = 'SET_IS_WRITABLE';\nexport const SET_AUDIENCE_ESTIMATE_SCORE = 'SET_AUDIENCE_ESTIMATE_SCORE';\nexport const SET_AUDIENCE_ESTIMATE_USER_COUNT = 'SET_AUDIENCE_ESTIMATE_USER_COUNT';\nexport const SET_AUDIENCE_ESTIMATE_RESULT = 'SET_AUDIENCE_ESTIMATE_RESULT';\nexport const SET_IMPRESSION_ESTIMATE = 'SET_IMPRESSION_ESTIMATE';\nexport const SET_IMPRESSION_ESTIMATE_PARAM = 'SET_IMPRESSION_ESTIMATE_PARAM';\nexport const SET_IS_BUDGET_RECOMMEND_VISIBLE = 'SET_IS_BUDGET_RECOMMEND_VISIBLE';\nexport const SET_BUDGET_SOURCE_TYPE = 'SET_BUDGET_SOURCE_TYPE';\nexport const SET_BUDGET_RECOMMEND_DATA = 'SET_BUDGET_RECOMMEND_DATA';\nexport const SET_BUDGET_RECOMMEND_PARAM = 'SET_BUDGET_RECOMMEND_PARAM';\nexport const SET_AUDIENCE_ESTIMATE_DATA = 'SET_AUDIENCE_ESTIMATE_DATA';\nexport const SET_STOCK_WIDGET_AVAILABLE = 'SET_STOCK_WIDGET_AVAILABLE';\nexport const SET_STOCK_ESTIMATE = 'SET_STOCK_ESTIMATE';\nexport const SET_STOCK_ESTIMATE_KEY = 'SET_STOCK_ESTIMATE_KEY';\nexport const SET_STOCK_BUDGET_THRESHOLD = 'SET_STOCK_BUDGET_THRESHOLD';\nexport const SET_STOCK_IMPRESSION_THRESHOLD = 'SET_STOCK_IMPRESSION_THRESHOLD';\nexport const SET_STOCK_RECALCULATING = 'SET_STOCK_RECALCULATING';\nexport const SET_STOCK_ORDER_COMPLETED = 'SET_STOCK_ORDER_COMPLETED';\nexport const SET_AUDIENCE_LOADING = 'SET_AUDIENCE_LOADING';\nexport const SET_AUDIENCE_FAILED = 'SET_AUDIENCE_FAILED';\nexport const SET_CITY_MAP = 'SET_CITY_MAP';\nexport const SET_AREAS_MAP = 'SET_AREAS_MAP';\nexport const SET_ALL_LOCATION_MAP = 'SET_ALL_LOCATION_MAP';\nexport const SET_AD_INTEREST_MAP = 'SET_AD_INTEREST_MAP';\nexport const SET_AD_TOPIC_MAP = 'SET_AD_TOPIC_MAP';\nexport const SET_IN_MARKET_LIST = 'SET_IN_MARKET_LIST';\nexport const SET_IN_MARKET_LIST_OBJ = 'SET_IN_MARKET_LIST_OBJ';\nexport const SET_IN_MARKET_SEARCH_LIST = 'SET_IN_MARKET_SEARCH_LIST';\nexport const SET_AD_INTEREST_KEYWORDS_INFO_BY_ID = 'SET_AD_INTEREST_KEYWORDS_INFO_BY_ID';\nexport const CLEAR_AD_INTEREST_KEYWORDS_INFO_MAP = 'CLEAR_AD_INTEREST_KEYWORDS_INFO_MAP';\nexport const SET_AD_BEHAVIOR_HASHTAG_INFO = 'SET_AD_BEHAVIOR_HASHTAG_INFO';\nexport const CLEAR_AD_BEHAVIOR_HASHTAG_INFO = 'CLEAR_AD_BEHAVIOR_HASHTAG_INFO';\nexport const SET_DMP_INFO = 'SET_DMP_INFO';\nexport const SET_ADGROUP_COUNTRY = 'SET_ADGROUP_COUNTRY';\nexport const SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX = 'SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX';\nexport const SET_APP_ID_4_EM = 'SET_APP_ID_4_EM';\nexport const SET_APP_ID = 'SET_APP_ID';\nexport const SET_APP_LIST = 'SET_APP_LIST';\nexport const SET_EXTERNAL_ACTIONS = 'SET_EXTERNAL_ACTIONS';\nexport const SET_IS_SUPPORT_IN_APP_EVENT = 'SET_IS_SUPPORT_IN_APP_EVENT';\nexport const SET_IS_DEEP_EVENT_MODULE_SHOW = 'SET_IS_DEEP_EVENT_MODULE_SHOW';\nexport const SET_EXTERNAL_ACTIONS_A = 'SET_EXTERNAL_ACTIONS_A';\nexport const SET_EXTERNAL_ACTIONS_B = 'SET_EXTERNAL_ACTIONS_B';\nexport const SET_BUDGET = 'SET_BUDGET';\nexport const SET_BIDSTRATEGY = 'SET_BIDSTRATEGY';\nexport const SET_SPLIT_TEST = 'SET_SPLIT_TEST';\nexport const SET_SPLIT_TEST_VAR = 'SET_SPLIT_TEST_VAR';\nexport const SET_TARGET_RECOMMEND_TRACE_INFO = 'SET_TARGET_RECOMMEND_TRACE_INFO';\nexport const CLEAR_TARGET_RECOMMEND_TRACE_INFO = 'CLEAR_TARGET_RECOMMEND_TRACE_INFO';\nexport const SET_POWER = 'SET_POWER';\nexport const SET_SUGGEST_BUDGET = 'SET_SUGGEST_BUDGET';\nexport const SET_SP_BUDGET = 'SET_SP_BUDGET';\nexport const SET_SP_ESTIMATE_DATA = 'SET_SP_ESTIMATE_DATA';\nexport const SET_BEHAVIOR_OPTIONS = 'SET_BEHAVIOR_OPTIONS';\nexport const SET_EDIT_STATISTIC_TYPE = 'SET_EDIT_STATISTIC_TYPE';\nexport const SET_AD_TEST_STATUS = 'SET_AD_TEST_STATUS';\nexport const SET_APP_RETARGETING_INSTALL = 'SET_APP_RETARGETING_INSTALL';\nexport const SET_DPA_LOCAL_AUDIENCE = 'SET_DPA_LOCAL_AUDIENCE';\nexport const SET_RF_CONTRACT_TIME_AVAILABLE = 'SET_RF_CONTRACT_TIME_AVAILABLE';\nexport const SET_RF_TIMEZONE = 'SET_RF_TIMEZONE';\nexport const SET_LIVE_TIMEZONE_FOR_DST = 'SET_LIVE_TIMEZONE_FOR_DST';\nexport const SET_CONTRACT_START_TIME = 'SET_CONTRACT_START_TIME';\nexport const SET_CONTRACT_END_TIME = 'SET_CONTRACT_END_TIME';\nexport const SET_IOS_LIST = 'SET_IOS_LIST';\nexport const SET_COPY_PIXEL_AWAIT = 'SET_COPY_PIXEL_AWAIT';\nexport const SET_ANDROID_LIST = 'SET_ANDROID_LIST';\nexport const SET_ALL_LANGUAGES_LIST = 'SET_ALL_LANGUAGES_LIST';\nexport const SET_CATALOG = 'SET_CATALOG';\nexport const SET_STRUCTURE = 'SET_STRUCTURE';\nexport const SET_PARTICLE_LOCATIONS = 'SET_PARTICLE_LOCATIONS';\nexport const SET_USE_DRAFT = 'SET_USE_DRAFT';\nexport const SET_AVAILABLE_COUNTRIES = 'SET_AVAILABLE_COUNTRIES';\nexport const SET_LAST_UPDATE_TIME = 'SET_LAST_UPDATE_TIME';\nexport const SET_IN_APP_EVENTS = 'SET_IN_APP_EVENTS';\nexport const SET_INSTALL_WITH_IN_APP_EVENTS = 'SET_INSTALL_WITH_IN_APP_EVENTS';\nexport const SET_IS_ENABLE_IOS14 = 'SET_IS_ENABLE_IOS14';\nexport const SET_CAMPAIGN_QUOTA = 'SET_CAMPAIGN_QUOTA';\nexport const SET_ADGROUP_QUOTA = 'SET_ADGROUP_QUOTA';\nexport const SET_SPLIT_TEST_QUOTA = 'SET_SPLIT_TEST_QUOTA';\nexport const SET_APP_ID_IN_NEW_QUOTA = 'SET_APP_ID_IN_NEW_QUOTA';\nexport const SET_IS_ONLY_SUPPORT_TT = 'SET_IS_ONLY_SUPPORT_TT';\nexport const SET_OSV_TOKEN = 'SET_OSV_TOKEN';\nexport const SET_PANGLE_SUPPORT_COUNTRIES = 'SET_PANGLE_SUPPORT_COUNTRIES';\nexport const SET_BRAND_SAFETY_PARTNER = 'SET_BRAND_SAFETY_PARTNER';\nexport const SET_PIXEL_TOKEN = 'SET_PIXEL_TOKEN';\nexport const SET_IS_OPENBS = 'SET_IS_OPENBS';\nexport const SET_IOS14_QUOTATYPE = 'SET_IOS14_QUOTATYPE';\nexport const SET_SEARCH_DELIVERY_TYPE = 'SET_SEARCH_DELIVERY_TYPE';\nexport const SET_DOMAIN_INITED = 'SET_DOMAIN_INITED';\nexport const SET_AUDIENCE_DISABLED_IN_DPA = 'SET_AUDIENCE_DISABLED_IN_DPA';\nexport const SET_PARAMS_AUDIENCE_ESTIMATE = 'SET_PARAMS_AUDIENCE_ESTIMATE';\nexport const SET_CAMPAIGN_PARAMS_AUDIENCE_ESTIMATE = 'campaign/SET_PARAMS_AUDIENCE_ESTIMATE';\nexport const SET_HAS_REWRITTEN_COPIED_START_TIME = 'SET_HAS_REWRITTEN_COPIED_START_TIME';\nexport const SET_IS_SDK_OR_S2S = 'SET_IS_SDK_OR_S2S';\nexport const SET_APP_PROFILE_PAGE_TYPE = 'SET_APP_PROFILE_PAGE_TYPE';\n\nexport const SET_ADGROUP_EXTERNAL_URL_DOMAIN = 'SET_ADGROUP_EXTERNAL_URL_DOMAIN';\n// 行为定向部分\nexport const SET_VIDEO_CATEGORY_OPTIONS = 'SET_VIDEO_CATEGORY_OPTIONS';\nexport const SET_FLATTENED_VIDEO_CATEGORY_OPTIONS = 'SET_FLATTENED_VIDEO_CATEGORY_OPTIONS';\nexport const SET_CREATOR_CATEGORY_OPTIONS = 'SET_CREATOR_CATEGORY_OPTIONS';\nexport const SET_FLATTENED_CREATOR_CATEGORY_OPTIONS = 'SET_FLATTENED_CREATOR_CATEGORY_OPTIONS';\nexport const SET_DEVICE_MODEL_LIST = 'SET_DEVICE_MODEL_LIST';\nexport const SET_ADGROUP_DOMAIN = 'SET_ADGROUP_DOMAIN';\nexport const SET_BIDDING_EDIT = 'SET_BIDDING_EDIT';\nexport const SET_DPA_OR_SHOP_COUNTRY_OFFLINE = 'SET_DPA_OR_SHOP_COUNTRY_OFFLINE';\n// adgroup 提示信息\nexport const ADD_ALERT_INFO = 'ADD_ALERT_INFO'; // 增加提示信息\nexport const CLEAR_ALERT_INFO = 'CLEAR_ALERT_INFO'; // 清空提示信息\nexport const SET_AREAS_LIST = 'SET_AREAS_LIST';\nexport const SET_DOMAIN_TOKEN = 'SET_DOMAIN_TOKEN';\nexport const SET_HAS_COSTCAP = 'SET_HAS_COSTCAP';\nexport const SET_HAS_LOWESTCOST = 'SET_HAS_LOWESTCOST';\nexport const SET_SUPPORT_LOWEST_COST = 'SET_SUPPORT_LOWEST_COST';\n\n// ad 相关\nexport const SET_SHA1_KEY = 'SET_SHA1_KEY';\nexport const SET_ADS = 'SET_ADS';\nexport const SET_APP_TYPES = 'SET_APP_TYPES';\nexport const ADD_AD = 'ADD_AD';\nexport const CHANGE_AD_PROPERTY = 'CHANGE_AD_PROPERTY';\nexport const CHANGE_AD_PROPERTY_BY_AD_SOURCE = 'CHANGE_AD_PROPERTY_BY_AD_SOURCE';\nexport const DELETE_AD = 'DELETE_AD';\nexport const UPDATE_AD = 'UPDATE_AD';\nexport const SET_LOGLIST = 'SET_LOGLIST';\nexport const SET_REQUESTPARAMS = 'SET_REQUESTPARAMS';\nexport const SET_STARTTIME = 'SET_STARTTIME';\nexport const SET_ENDTIME = 'SET_ENDTIME';\nexport const SET_LIFETIME = 'SET_LIFETIME'; // 这里是campaignlist的lifetime\nexport const SET_CONVERSIONSTARTTIME = 'SET_CONVERSIONSTARTTIME';\nexport const SET_CONVERSIONENDTIME = 'SET_CONVERSIONENDTIME';\nexport const GET_RECOMMENDURL = 'GET_RECOMMENDURL';\nexport const CHANGE_PLAYABLE_SWITCH = 'CHANGE_PLAYABLE_SWITCH';\nexport const UPDATE_PLAYABLE_URL = 'UPDATE_PLAYABLE_URL';\nexport const UPDATE_IS_APPDOWNLOAD = 'UPDATE_IS_APPDOWNLOAD';\nexport const SET_DPA_WORD_LIST = 'SET_DPA_WORD_LIST';\nexport const RESET_ADS = 'RESET_ADS';\nexport const SET_ADS_BY_DETAIL = 'SET_ADS_BY_DETAIL';\nexport const SET_ADS_BY_INDEX = 'SET_ADS_BY_INDEX';\nexport const ADD_AD_BY_DETAIL = 'ADD_AD_BY_DETAIL';\nexport const UPDATE_AD_TYPE = 'UPDATE_AD_TYPE';\nexport const SET_SUGGEST_PRICE = 'SET_SUGGEST_PRICE';\nexport const SET_SUGGEST_PRICE_TYPE = 'SET_SUGGEST_PRICE_TYPE';\nexport const SET_EXTERNAL_ACTION_MAP = 'SET_EXTERNAL_ACTION_MAP';\nexport const UPDATE_AD_SOURCE = 'UPDATE_AD_SOURCE';\nexport const SET_AD_COPY_NUMBER = 'SET_AD_COPY_NUMBER';\nexport const ADD_SPLIT_TEST_UNIT = 'ADD_SPLIT_TEST_UNIT';\nexport const UPDATE_SPLIT_TEST_TAB = 'UPDATE_SPLIT_TEST_TAB';\nexport const TRANSFORM_ALL_AD_CTA = 'TRANSFORM_ALL_AD_CTA';\nexport const SET_SHOULD_QC_OPTIMIZATION_TOOLS_TIPS_SHOW = 'SET_SHOULD_QC_OPTIMIZATION_TOOLS_TIPS_SHOW';\nexport const SET_PRECHECK_SUGGESTIONS = 'SET_PRECHECK_SUGGESTIONS';\nexport const SET_REAL_TIME_PRECHECK_SUGGESTIONS = 'SET_REAL_TIME_PRECHECK_SUGGESTIONS';\nexport const SET_HAS_INTO_AD = 'SET_HAS_INTO_AD';\nexport const DELETE_REAL_TIME_PRECHECK_SUGGESTIONS = 'DELETE_REAL_TIME_PRECHECK_SUGGESTIONS';\nexport const SET_PRECHECK_SUMMARY = 'SET_PRECHECK_SUMMARY';\nexport const CHANGE_CAROUSEL_IMAGE_AD_IMAGE_PROPERTY = 'CHANGE_CAROUSEL_IMAGE_AD_IMAGE_PROPERTY';\nexport const SET_PRODUCT_VIDEO_AND_NO_VIDEO_PKG = 'SET_PRODUCT_VIDEO_AND_NO_VIDEO_PKG';\nexport const SET_NO_PRODUCT_VIDEO_AND_NO_VIDEO_PKG = 'SET_NO_PRODUCT_VIDEO_AND_NO_VIDEO_PKG';\nexport const SET_IS_PRODUCT_SET_NO_PRODUCT = 'SET_IS_PRODUCT_SET_NO_PRODUCT';\nexport const SET_CHANGE_VIDEO_PKG_BTN_LOADING = 'SET_CHANGE_VIDEO_PKG_BTN_LOADING';\nexport const SET_SHOW_PROTOCOL_TERMS = 'SET_SHOW_PROTOCOL_TERMS';\nexport const SET_COLLECTION_ADS_CATALOG = 'SET_COLLECTION_ADS_CATALOG';\nexport const SET_CATALOG_AVAILABLE_LOCATION = 'SET_CATALOG_AVAILABLE_LOCATION';\nexport const SET_LOADING_CATALOG_AVAILABLE_LOCATION = 'SET_LOADING_CATALOG_AVAILABLE_LOCATION';\nexport const SET_CATALOG_BC_ID = 'SET_CATALOG_BC_ID';\nexport const SET_CATALOG_AUTHORIZED = 'SET_CATALOG_AUTHORIZED';\nexport const SET_EXTERNALACTION_TOKEN = 'SET_EXTERNALACTION_TOKEN';\nexport const CREATE_ADDITION_CREATIVE_CUSTOMIZED_CARD = 'CREATE_ADDITION_CREATIVE_CUSTOMIZED_CARD';\nexport const GET_ADDITIONAL_CREATIVE_CARD_INFO = 'GET_ADDITIONAL_CREATIVE_CARD_INFO';\nexport const GET_ADDITIONAL_CREATIVE_PAGE_INFO = 'GET_ADDITIONAL_CREATIVE_PAGE_INFO';\nexport const GET_ADDITIONAL_CREATIVE_ENGAGEMENT_INFO = 'GET_ADDITIONAL_CREATIVE_ENGAGEMENT_INFO';\nexport const SET_LOADING_PROMOTION_DETAIL = 'SET_LOADING_PROMOTION_DETAIL';\nexport const SET_IDENTITY_AUTHORIZATION_STATE = 'SET_IDENTITY_AUTHORIZATION_STATE';\nexport const SET_SHOP_AUTHORIZATION_STATE = 'SET_SHOP_AUTHORIZATION_STATE';\nexport const SET_SHOP_AUTHORIZATION_CHECKING = 'SET_SHOP_AUTHORIZATION_CHECKING';\nexport const SET_SHOP_ADS_HAS_PERMISSION = 'SET_SHOP_ADS_HAS_PERMISSION';\nexport const SET_SHOP_PRODUCTS_NUM_IS_VALID = 'SET_SHOP_PRODUCTS_NUM_IS_VALID';\nexport const SET_IDENTITY_INFO_BY_AD_TYPE = 'SET_IDENTITY_INFO_BY_AD_TYPE';\nexport const HANDLE_VIDEO_RENDER_ASYNCHRONOUS = 'HANDLE_VIDEO_RENDER_ASYNCHRONOUS';\nexport const CHANGE_ADS_RENDER_TASK = 'CHANGE_ADS_RENDER_TASK';\nexport const SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS = 'SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS';\nexport const BATCH_FILL_VIDEO_INFO_BY_TASK_IDS = 'BATCH_FILL_VIDEO_INFO_BY_TASK_IDS';\nexport const FILL_VIDEO_FULL_INFO_BY_TASK_ID = 'FILL_VIDEO_FULL_INFO_BY_TASK_ID';\nexport const RE_RENDER_CREATIVE_VIDEO = 'RE_RENDER_CREATIVE_VIDEO';\nexport const CHANGE_VIDEO_RENDER_INFO_PROP = 'CHANGE_VIDEO_RENDER_INFO_PROP';\nexport const SAVE_VIDEO_RENDER_TASK_RESULT_TO_LIBRARY_BY_ID = 'SAVE_VIDEO_RENDER_TASK_RESULT_TO_LIBRARY_BY_ID';\nexport const DELETE_VIDEO_RENDER_TASK_BY_TASK_ID = 'DELETE_VIDEO_RENDER_TASK_BY_TASK_ID';\nexport const SAVE_VIDEO_FROM_FRONT_CREATIVE = 'SAVE_VIDEO_FROM_FRONT_CREATIVE';\nexport const CHECK_HAS_LEAD_ADS = 'CHECK_HAS_LEAD_ADS';\nexport const SET_CREATIVES = 'SET_CREATIVES';\n// ------ 程序化创意相关ad start\nexport const UPDATE_PCD_APP_NAME = 'UPDATE_PCD_APP_NAME';\nexport const UPDATE_PCD_SOURCE = 'UPDATE_PCD_SOURCE';\nexport const UPDATE_PCD_AVATAR = 'UPDATE_PCD_AVATAR';\nexport const UPDATE_PCD_OPEN_URL = 'UPDATE_PCD_OPEN_URL';\nexport const UPDATE_PCD_DEFFERED_DEEPLINK_IS_OPEN_URL = 'UPDATE_PCD_DEFFERED_DEEPLINK_IS_OPEN_URL';\nexport const UPDATE_PCD_DEEPLINK_IS_OPEN_URL = 'UPDATE_PCD_DEEPLINK_IS_OPEN_URL';\nexport const UPDATE_PCD_EXTERNAL_URL = 'UPDATE_PCD_EXTERNAL_URL';\nexport const UPDATE_PCD_ENABLE_URL = 'UPDATE_PCD_ENABLE_URL';\nexport const UPDATE_PCD_FALLBACK_TYPE = 'UPDATE_PCD_FALLBACK_TYPE';\nexport const ADD_PCD_ITEM = 'ADD_PCD_ITEM';\nexport const ADD_PCD_LIST = 'ADD_PCD_LIST';\nexport const DELETE_PCD_IMAGE = 'DELETE_PCD_IMAGE';\nexport const DELETE_PCD_VIDEO = 'DELETE_PCD_VIDEO';\nexport const UPDATE_PCD_VIDEO = 'UPDATE_PCD_VIDEO';\nexport const ADD_PCD_TITLE = 'ADD_PCD_TITLE';\nexport const ADD_SMART_TEXT_PCD_TITLE = 'ADD_SMART_TEXT_PCD_TITLE';\nexport const UPDATE_PCD_AUTO_CREATIVE_NAME = 'UPDATE_PCD_AUTO_CREATIVE_NAME';\nexport const UPDATE_PCD_CREATIVE_NAME = 'UPDATE_PCD_CREATIVE_NAME';\nexport const UPDATE_PCD_CTA = 'UPDATE_PCD_CTA';\nexport const ADD_PCD_CTA = 'ADD_PCD_CTA';\nexport const DELETE_PCD_CTA = 'DELETE_PCD_CTA';\nexport const CLEAR_PCD_CTA = 'CLEAR_PCD_CTA';\nexport const UPDATE_PCD_CTA_TYPE = 'UPDATE_PCD_CTA_TYPE';\nexport const UPDATE_PCD_CTA_ID = 'UPDATE_PCD_CTA_ID';\n\nexport const DELETE_PCD_TITLE = 'DELETE_PCD_TITLE';\nexport const UPDATE_PCD_TITLE = 'UPDATE_PCD_TITLE';\nexport const UPDATE_PCD_SHOW_CTA = 'UPDATE_PCD_SHOW_CTA';\nexport const UPDATE_ACTIVE_TYPE = 'UPDATE_ACTIVE_TYPE';\nexport const UPDATE_PCD_TRACK_URL = 'UPDATE_PCD_TRACK_URL';\nexport const UPDATE_PCD_ACTION_TRACK_URL = 'UPDATE_PCD_ACTION_TRACK_URL';\nexport const UPDATE_PCD_VAST_MOAT = 'UPDATE_PCD_VAST_MOAT';\nexport const UPDATE_PCD_VAST_DV = 'UPDATE_PCD_VAST_DV';\nexport const UPDATE_PCD_VAST_IAS = 'UPDATE_PCD_VAST_IAS';\nexport const UPDATE_PCD_VAST_URL = 'UPDATE_PCD_VAST_URL';\nexport const SET_IS_NEW_STRUCTURE = 'SET_IS_NEW_STRUCTURE';\nexport const SET_APPINFO = 'SET_APPINFO';\nexport const SET_CREATIVE_PREVIEW_INDEX = 'SET_CREATIVE_PREVIEW_INDEX';\nexport const SET_SELECTED_FORM = 'SET_SELECTED_FORM';\nexport const UPDATE_PCD_OPTIMIZE = 'UPDATE_PCD_OPTIMIZE'; // 程序化创意赠送视频\nexport const UPDATE_PCD_OPTIMIZE_VIDEO = 'UPDATE_PCD_OPTIMIZE_VIDEO';\nexport const UPDATE_PCD_CREATIVE_LIB_AUTH = 'UPDATE_PCD_CREATIVE_LIB_AUTH'; // 创意素材授权\nexport const UPDATE_PCD_LEAD_ADS_ACO_PAGE_ID = 'UPDATE_PCD_LEAD_ADS_ACO_PAGE_ID'; // leadAds支持程序化创意,其中的Instant Form的page_id\nexport const UPDATE_PCD_LEAD_ADS_SHOW_PRTTOCOLTERMS = 'UPDATE_PCD_LEAD_ADS_SHOW_PRTTOCOLTERMS'; // leadAds支持程序化创意,获取是否签署协议\nexport const UPDATE_PCD_LEAD_ADS_ISSIGNPROTOCOL = 'UPDATE_PCD_LEAD_ADS_ISSIGNPROTOCOL'; // leadAds支持程序化创意,用户是否勾选了签署协议\nexport const SET_EXTERNAL_URL_DOMAIN = 'SET_EXTERNAL_URL_DOMAIN';\nexport const UPDATE_PCD_IDENTITY_TYPE = 'UPDATE_PCD_IDENTITY_TYPE'; // identity账号\nexport const UPDATE_PCD_IDENTITY_ID = 'UPDATE_PCD_IDENTITY_ID'; // // identity账号Id\nexport const UPDATE_PCD_IDENTITY_DATA = 'UPDATE_PCD_IDENTITY_DATA'; // // identity账号Id\nexport const SET_BIND_ACCOUNT_DATA = 'SET_BIND_ACCOUNT_DATA'; // 绑定TTBA账号\nexport const SET_PCD_IDENTITY_AUTHORIZATION_STATE = 'SET_PCD_IDENTITY_AUTHORIZATION_STATE'; // // identity账号Id\nexport const UPDATE_PCD_DOMAIN = 'UPDATE_PCD_DOMAIN';\nexport const SET_CREATIVE_DOMAIN = 'SET_CREATIVE_DOMAIN';\nexport const SET_ADD_FORM_IDENTITY = 'SET_ADD_FORM_IDENTITY'; // 设置addForm用来创建identity custom账号\nexport const SET_ADD_FORM_IDENTITY_ALL = 'SET_ADD_FORM_IDENTITY_ALL';\nexport const SET_CUSTOM_VALIDATE_FIELD = 'SET_CUSTOM_VALIDATE_FIELD'; // 需要创建custom账号VALIDATE(不存在custom账号时)\nexport const SET_IS_NOT_HAS_CUSTOM = 'SET_IS_NOT_HAS_CUSTOM';\n// ------ 程序化创意相关ad end\nexport const SET_ZEFR_COUNTRY = 'SET_ZEFR_COUNTRY';\nexport const SET_BS_IAS_COUNTRY = 'SET_BS_IAS_COUNTRY';\nexport const SET_BS_DV_COUNTRY = 'SET_BS_DV_COUNTRY';\nexport const SET_ZEFR_AUTHORITY = 'SET_ZEFR_AUTHORITY';\nexport const SET_BSIAS_AUTHORITY = 'SET_BSIAS_AUTHORITY';\nexport const SET_BS_DV_AUTHORITY = 'SET_BS_DV_AUTHORITY';\n\n// 其他\nexport const SET_OVERVIEW_DATA = 'SET_OVERVIEW_DATA';\nexport const GET_OPERATOR_LIST = 'GET_OPERATOR_LIST';\nexport const SET_EXTERNAL_ACTION = 'SET_EXTERNAL_ACTION';\nexport const SET_EXTERNAL_ACTIONA = 'SET_EXTERNAL_ACTIONA';\nexport const SET_EXTERNAL_ACTIONB = 'SET_EXTERNAL_ACTIONB';\nexport const SET_PIXEL_LIST_LOADING = 'SET_PIXEL_LIST_LOADING';\nexport const SET_PIXEL_EVENT_LIST_LOADING = 'SET_PIXEL_EVENT_LIST_LOADING';\nexport const SET_PIXEL_EVENT_LIST = 'SET_PIXEL_EVENT_LIST';\nexport const SET_PIXEL_LIST = 'SET_PIXEL_LIST';\nexport const SET_PIXEL_INFO = 'SET_PIXEL_INFO';\n\n// 支付相关\nexport const SET_CREDIT_CARD = 'SET_CREDIT_CARD';\nexport const SET_CARD_INFO = 'SET_CARD_INFO';\nexport const SET_CHARGE_INFO = 'SET_CHARGE_INFO';\nexport const SET_HAS_GOT_CHARGE_INFO = 'SET_HAS_GOT_CHARGE_INFO';\nexport const SET_PAYMENT_BALANCE = 'SET_PAYMENT_BALANCE';\nexport const SET_PAYMENT_TAX = 'SET_PAYMENT_TAX';\nexport const SET_PAYMENT_STATUS = 'SET_PAYMENT_STATUS';\nexport const SET_PAYMENT_APPLYINFO = 'SET_PAYMENT_APPLYINFO';\n\nexport const SET_APP_URL_LIST = 'SET_APP_URL_LIST';\nexport const SET_WEB_URL_LIST = 'SET_WEB_URL_LIST';\nexport const SET_PIXEL_ID = 'SET_PIXEL_ID';\nexport const SET_EXTERNAL_TYPE = 'SET_EXTERNAL_TYPE';\nexport const SET_IS_OPEN_URL = 'SET_IS_OPEN_URL';\nexport const SET_OPEN_URL = 'SET_OPEN_URL';\n\nexport const SET_THRESHOLD_INF0 = 'SET_THRESHOLD_INF0';\nexport const SET_THRESHOLD_WHITE_LIST = 'SET_THRESHOLD_WHITE_LIST';\n\nexport const SET_BILLING_SHARE_BANNER = 'SET_BILLING_SHARE_BANNER';\nexport const SET_BILLING_SETTING = 'SET_BILLING_SETTING';\nexport const SET_BILLING_OWN_INFO = 'SET_BILLING_OWN_INFO';\nexport const SET_PAYMENT_SUMMARY_RELOAD = 'SET_PAYMENT_SUMMARY_RELOAD';\nexport const SET_CREDIT_INFO = 'SET_CREDIT_INFO';\nexport const SET_BALANCE_OPTIMIZATION = 'SET_BALANCE_OPTIMIZATION';\n\n// 授信相关\nexport const SET_CAN_DECREASE_AMT = 'SET_CAN_DECREASE_AMT';\nexport const SET_AMT_OP_STATE = 'SET_AMT_OP_STATE';\n\n// 交易列表Transaction相关\nexport const SET_TRANSACTION_DATA = 'SET_TRANSACTION_DATA';\nexport const SET_TRANSACTION_LIST_LOADING = 'SET_TRANSACTION_LIST_LOADING';\nexport const SET_TRANSACTION_LIST_EXPORTING = 'SET_TRANSACTION_LIST_EXPORTING';\nexport const SET_INVOICE_LOADING = 'SET_INVOICE_LOADING';\nexport const SET_TRANSACTION_TYPE = 'SET_TRANSACTION_TYPE';\nexport const SET_TRANSACTION_DATE_TYPE = 'SET_TRANSACTION_DATE_TYPE';\nexport const SET_NEW_TRANSACTION_LIST_REQUEST_PARAMS = 'SET_NEW_TRANSACTION_LIST_REQUEST_PARAMS';\nexport const SET_NEW_TRANSACTION_LIST_LOADING = 'SET_NEW_TRANSACTION_LIST_LOADING';\nexport const SET_NEW_TRANSACTION_COSTS_LIST_LOADING = 'SET_NEW_TRANSACTION_COSTS_LIST_LOADING';\nexport const SET_NEW_TRANSACTION_DOWNLOAD_LOADING = 'SET_NEW_TRANSACTION_DOWNLOAD_LOADING';\nexport const SET_NEW_TRANSACTION_SUMMARY_DATA = 'SET_NEW_TRANSACTION_SUMMARY_DATA';\nexport const SET_NEW_TRANSACTION_LIST_DATA = 'SET_NEW_TRANSACTION_LIST_DATA';\nexport const SET_NEW_TRANSACTION_COST_PAGINATION_PARAMS = 'SET_NEW_TRANSACTION_COST_PAGINATION_PARAMS';\nexport const SET_NEW_TRANSACTION_CURRENT_TAB_TYPE = 'SET_NEW_TRANSACTION_CURRENT_TAB_TYPE';\nexport const SET_NEW_TRANSACTION_PAYMENTS_LOADING = 'SET_NEW_TRANSACTION_PAYMENTS_LOADING';\n\n// 合同相关\nexport const SET_DSA_DIALOG_SHOWN = 'SET_DSA_DIALOG_SHOWN';\nexport const SET_CONTRACT_CUSTOMER_ID = 'SET_CONTRACT_CUSTOMER_ID';\n\n// smb相关\nexport const SET_NEW_CUSTOMER = 'SET_NEW_CUSTOMER';\nexport const SET_PAYMENT_SDK_ABTESTS = 'SET_PAYMENT_SDK_ABTESTS';\nexport const SET_PAYMENT_CHANGE_ABTEST = 'SET_PAYMENT_CHANGE_ABTEST';\nexport const SET_COMMON_TCC = 'SET_COMMON_TCC';\n\n// bc相关\nexport const SET_SHOW_BC_SECTION = 'SET_SHOW_BC_SECTION';\nexport const SET_BC_INFO = 'SET_BC_INFO';\nexport const SET_BILLING_CONFIG = 'SET_BILLING_CONFIG';\n\n// shopify相关\nexport const SET_SHOPIFY_DETAIL = 'SET_SHOPIFY_DETAIL';\n\n// 新手任务相关\nexport const SET_TASK_CONFIG = 'SET_TASK_CONFIG';\nexport const SET_HAS_ERROR = 'SET_HAS_ERROR';\nexport const SET_REVIEW_STATUS = 'SET_REVIEW_STATUS';\nexport const SET_HAS_NEW_TASK = 'SET_HAS_NEW_TASK';\nexport const SET_HAS_GIFT = 'SET_HAS_GIFT';\n\n// rf相关\nexport const SET_ESTIMATE_LOADING = 'SET_ESTIMATE_LOADING';\nexport const SET_STOCK_INFO = 'SET_STOCK_INFO';\nexport const SET_ESTIMATE_INFO = 'SET_ESTIMATE_INFO';\nexport const SET_BUYTYPE_VALUE = 'SET_BUYTYPE_VALUE';\nexport const INIT_RF_INFO = 'INIT_RF_INFO';\nexport const SET_VALIDATE_TARGETING_PARAMS_STATUS = 'SET_VALIDATE_TARGETING_PARAMS_STATUS';\nexport const SET_RF_ISEDITESTIMATECHANGED = 'SET_RF_ISEDITESTIMATECHANGED';\nexport const SET_RF_ORIGINALAUDIENCETAGS = 'SET_RF_ORIGINALAUDIENCETAGS';\nexport const SET_RF_ORIGINALAUDIENCETAGS_EXCLUDE = 'SET_RF_ORIGINALAUDIENCETAGS_EXCLUDE';\nexport const SET_RF_AUDIENCETAGMAP = 'SET_RF_AUDIENCETAGMAP';\nexport const SET_RF_BELOW18AGEBUTTONVISIBLE = 'SET_RF_BELOW18AGEBUTTONVISIBLE';\nexport const SET_RF_DRAFTCREATIVES = 'SET_RF_DRAFTCREATIVES';\nexport const SET_RF_FREQUENCY = 'SET_RF_FREQUENCY';\nexport const SET_RF_FREQUENCY_SCHEDULE = 'SET_RF_FREQUENCY_SCHEDULE';\n// 赠款系统相关\nexport const SET_COUPON_TOTAL_BALANCE = 'SET_COUPON_TOTAL_BALANCE';\n\n// Report\nexport const SET_REPORT_ID = 'SET_REPORT_ID';\nexport const SET_REPORT_TYPE = 'SET_REPORT_TYPE';\nexport const SET_REPORT_INFO = 'SET_REPORT_INFO';\nexport const SET_BASIC_INFO = 'SET_BASIC_INFO';\nexport const SET_SEARCH_BASIC_INFO = 'SET_SEARCH_BASIC_INFO';\nexport const SET_REPORT_AD_DETAIL = 'SET_REPORT_AD_DETAIL';\nexport const SET_TOTAL_COST = 'SET_TOTAL_COST';\nexport const SET_TODAY_COST = 'SET_TODAY_COST';\nexport const SET_DATE_RANGE = 'SET_DATE_RANGE';\nexport const SET_AUDIENCE_METRIC = 'SET_AUDIENCE_METRIC';\nexport const SET_AUDIENCE_TAB = 'SET_AUDIENCE_TAB';\nexport const SET_ALL_COUNTRIES = 'SET_ALL_COUNTRIES';\nexport const SET_INTEREST_MAP = 'SET_INTEREST_MAP';\nexport const SET_BEHAVIOR_MAP = 'SET_BEHAVIOR_MAP';\nexport const CLEAR_REPORT_STATE = 'CLEAR_REPORT_STATE';\nexport const SET_TABLE_METRIC_ARRAY = 'SET_TABLE_METRIC_ARRAY';\n\n// campaign planer\nexport const SET_CREATION_TYPE = 'SET_CREATION_TYPE';\nexport const SET_VERSION_ACTION_TYPE = 'SET_VERSION_ACTION_TYPE';\nexport const SET_VERSION_OBJECTIVE_DATA = 'SET_VERSION_OBJECTIVE_DATA';\n\n// shop\nexport const RESET_SHOP_STATE = 'RESET_SHOP_STATE';\nexport const SET_SELECTED_SPU_ID = 'SET_SELECTED_SPU_ID';\nexport const SET_SHOP_INFO = 'SET_SHOP_INFO';\nexport const SET_IS_SHOP_ADS_LIVE_SCENARIO = 'SET_IS_SHOP_ADS_LIVE_SCENARIO';\nexport const SET_SELECTED_SPU_LIST = 'SET_SELECTED_SPU_LIST';\nexport const SET_HAS_MAGELLAN_SHOP = 'SET_HAS_MAGELLAN_SHOP';\n\n// diagnosis\nexport const SET_SMB_FIRST_REQUEST = 'SET_SMB_FIRST_REQUEST';\nexport const SET_LIBRA_RESULT = 'SET_LIBRA_RESULT';\n\n// popup status\nexport const SET_POPUP_STATUS_MAP = 'SET_POPUP_STATUS_MAP';\n\nexport const SET_FROM_LIBRARY_VID_LIST = 'SET_FROM_LIBRARY_VID_LIST';\n\nexport const SET_FROM_LIBRARY_PAGE_ID_LIST = 'SET_FROM_LIBRARY_PAGE_ID_LIST';\n\nexport const SET_FROM_LIBRARY_CARD_ID_LIST = 'SET_FROM_LIBRARY_CARD_ID_LIST';\n\nexport const SET_IDENTITY_EMPTY = 'SET_IDENTITY_EMPTY';\n\nexport const SET_HAS_PREMIUM_TOPIC = 'SET_HAS_PREMIUM_TOPIC';\n","import { AutoAttrTracker } from '@byted/attr-tracker-sdk';\n\nimport Cookie from 'js-cookie';\nimport { Collector } from '@dp/byted-tea-sdk-oversea';\nimport { isBOE } from 'src/const/boe';\nimport uuidv4 from 'uuid/v4';\nimport qs from 'qs';\n\nconst eventUuid = uuidv4();\n\nconst id = (() => {\n try {\n const { creation_uuid } = qs.parse(window.location.search, { ignoreQueryPrefix: true });\n return creation_uuid;\n } catch (e) {\n return '';\n }\n})();\n\n// 账户状态\nconst STATE_MAP = {\n 0: 'login_undefined',\n 1: 'internal_super',\n 2: 'internal_other',\n 3: 'external',\n 99: 'not_log_in',\n};\n// 事件类型对应(点击时刻和有值时刻)\nconst EVENT_MAP = {\n click: 'click',\n focus: 'click',\n blur: 'content',\n};\n\nclass TeaTracker {\n Tracker;\n\n ABTracker;\n\n attrLog;\n\n baseConfig;\n\n loginInfo;\n\n advInfo;\n\n isStart;\n\n queuedEventsBeforeLogin = [];\n\n constructor() {\n this.Tracker = new Collector('tracker');\n this.ABTracker = new Collector('abTracker');\n this.DataFinder = new Collector('dataFinder');\n this.baseConfig = {\n app_id: 1583,\n log: false,\n channel: 'sg',\n _staging_flag: process.env.NODE_ENV !== 'production' || isBOE ? 1 : 0,\n disable_ssid: false,\n disable_webid: false,\n disable_sdk_monitor: false,\n disable_storage: false,\n disable_auto_pv: true, // 是否禁止SDK默认上报predefine_pageview事件\n autotrack: { // 对内的无埋点,必须填以下的值\n custom: 'tea', // 固定值\n },\n reportTime: 500,\n };\n this.isStart = false;\n this._init();\n }\n\n config(options) {\n this.setTrackConfig(options);\n this.setABTrackConfig(options);\n this.setDataFinderConfig(options);\n }\n\n start() {\n if (!this.isStart) {\n this.Tracker.start();\n this.ABTracker.start();\n this.DataFinder.start();\n this.isStart = true;\n }\n }\n\n setTrackConfig(options) {\n this.Tracker.config(options);\n }\n\n setABTrackConfig(options) {\n this.ABTracker.config(options);\n }\n\n setDataFinderConfig(options) {\n this.DataFinder.config(options);\n }\n\n trackEvent(eventName, params) {\n const info = this.loginInfo?.account;\n const coreUser = this.loginInfo?.core_user;\n this.Tracker.event(eventName, {\n ...params,\n adv_id: String(info?.id ?? 0),\n core_user_id: (coreUser?.core_user_id ?? ''),\n });\n this.ABTracker.event(eventName, {\n ...params,\n adv_id: String(info?.id ?? 0),\n core_user_id: (coreUser?.core_user_id ?? ''),\n });\n }\n\n // DataFinder 使用独立的事件上报方法\n reportEventToDataFinder(eventName, params) {\n this.DataFinder(eventName, params);\n }\n\n trackView(options) {\n this.Tracker.predefinePageView(options);\n this.ABTracker.predefinePageView(options);\n this.DataFinder.predefinePageView(options);\n }\n\n setLoginInfo(info, advInfo) {\n this.loginInfo = info;\n this.advInfo = advInfo || {};\n const user = this.getUserParams();\n const adv = this.getAdvParams();\n const bases = this.getBaseConfig();\n window.creation_uuid = id || eventUuid;\n this.config({\n ...user,\n ...adv,\n ...bases,\n log_in: this.isLogin(),\n user_type_name: STATE_MAP[user.user_type],\n uiVersion: 'uirefresh',\n webid: Cookie.get('tt_webid') || '',\n creation_uuid: window.creation_uuid,\n });\n\n this.setABTrackConfig({\n user_id: (adv.adv_id),\n user_unique_id: adv.adv_id,\n });\n\n if (this.isLogin()) {\n this.queuedEventsBeforeLogin.forEach(fn => fn());\n this.queuedEventsBeforeLogin = [];\n }\n }\n\n getUserParams() {\n const { core_user: coreUser, coreUserInfo } = this.loginInfo;\n const { staff } = this.loginInfo;\n const { account } = this.loginInfo;\n let user_type = 99;\n if (this.isAdmin()) {\n user_type = 1;\n } else if (staff?.staff_id) {\n user_type = 2;\n } else if (account?.id) {\n user_type = 3;\n } else if (this.isLogin()) {\n user_type = 0;\n }\n\n const { first_industry, second_industry } = this.advInfo || {};\n\n return {\n user_id: (coreUser?.core_user_id ?? coreUserInfo?.user_id_str ?? ''),\n user_unique_id: String(coreUser?.core_user_id ?? coreUserInfo?.user_id_str ?? ''),\n user_mail: this.loginInfo.email ?? coreUserInfo?.email ?? '',\n user_type,\n user_name: coreUser?.name ?? coreUserInfo?.username ?? '',\n first_industry: first_industry || '',\n second_industry: second_industry || '',\n };\n }\n\n getAdvParams() {\n const info = this.loginInfo.account;\n const advParams = {\n adv_id: String(info?.id ?? 0),\n adv_email: this.loginInfo?.email ?? '',\n adv_role: info?.role ?? 0,\n adv_name: info?.name ?? '',\n customer_type_value: info?.customer_type_value ?? 0,\n project_version: '0',\n };\n return advParams;\n }\n\n getBaseConfig() {\n return {\n lang: Cookie.get('lang_type') || 'en',\n app_timezone: this.loginInfo?.account?.timezone ?? '',\n app_region: String(this.loginInfo?.account?.country ?? '').toUpperCase(),\n };\n }\n\n isAdmin() {\n return Boolean(this?.loginInfo?.permission?.is_admin);\n }\n\n isLogin() {\n const { loginInfo } = this;\n const hasAccountNameAndId = Boolean(loginInfo?.account?.name && loginInfo?.account?.id);\n return hasAccountNameAndId;\n }\n\n _init() {\n this.Tracker.init(this.baseConfig);\n this.ABTracker.init({\n ...this.baseConfig,\n app_id: 4697,\n });\n this.DataFinder.init({\n ...this.baseConfig,\n app_id: 224013,\n channel_domain: 'https://sgali-mcs.byteoversea.com',\n autotrack: true,\n });\n this.config({ disable_auto_pv: true /** 是否禁止SDK默认上报predefine_pageview事件 */ });\n this.start();\n }\n}\n\nconst TeaInstance = new TeaTracker();\n\nTeaInstance.config({\n app_language: Cookie.get('lang_type') || 'en',\n app_name: 'TikTok Ads',\n});\n\n\nTeaInstance.attrLog = new AutoAttrTracker({\n allowEventTypes: ['click', 'focus', 'blur', 'expose'], // [可选]事件代理监听的事件类型 , 默认 ['click','expose']\n debounceWaitTime: 100, // [可选] 事件触发到打点的等待时间, 函数防抖,避免短时间重复埋点\n exposeTime: 2000, // [可选] 模块曝光 =》到打点的等待时间, 默认: 1000ms\n exposePercent: 0.5, // [可选] 模块曝光的比例 1=100% , 0.5=50% , 默认:0.5\n refreshObserverTime: 2000, // [可选] 间隔一段时间,重新建通模块曝光\n\n /**\n * 通过DOM属性触发的事件埋点处理函数\n * @param {string} eventName 事件名 data-tea-[eventType] 属性的值\n * @param {Object.} eventParams 事件参数,可以通过添加 data-tea-[key]=\"[value]\" 属性来设置事件参数\n * @param {\"click\" | \"focus\" | \"blur\" | \"expose\"} eventType 事件类型 click / focus / blur / expose\n */\n log: (eventName, eventParams, eventType) => {\n if (eventName) {\n if (EVENT_MAP[eventType]) {\n eventParams.create_flow_event_time_type = EVENT_MAP[eventType];\n }\n TeaInstance.trackEvent(eventName, eventParams);\n }\n },\n});\n\nconst TeaPlugin = {\n tracker: TeaInstance,\n installed: false,\n\n install(Vue, initConf = {}) {\n const { tracker } = this;\n\n if (!TeaPlugin.installed) {\n TeaPlugin.installed = true;\n } else {\n return;\n }\n const vueRouter = initConf.vueRouter || null;\n let ignoredViews = initConf.ignoredViews || [];\n\n let fromUrl = '';\n const initRouterGuard = function () {\n // 忽略的url\n if (!vueRouter) {\n return;\n }\n if (ignoredViews) {\n ignoredViews = ignoredViews.map(view => view.toLowerCase());\n }\n vueRouter.afterEach((to, from) => {\n if (isBOE) return;\n fromUrl = window.location.origin + from.fullPath;\n if (ignoredViews && ignoredViews.indexOf((to.name || '').toLowerCase()) !== -1) {\n return;\n } // 这里不需要每次路由之后都初始化tea,,,只需要在路由之后发pv就行了\n\n const options = {\n url: window.location.origin + to.fullPath,\n url_path: to.path,\n title: to.name,\n from_url: fromUrl,\n from_name: from.name,\n };\n\n\n if (tracker.isLogin()) {\n TeaInstance.trackView(options);\n } else {\n tracker.queuedEventsBeforeLogin.push(() => TeaInstance.trackView(options));\n }\n });\n\n return ignoredViews;\n };\n\n initRouterGuard();\n\n Vue.prototype.trackEvent = TeaInstance.trackEvent.bind(TeaInstance);\n Vue.prototype.trackView = TeaInstance.trackView.bind(TeaInstance);\n Vue.prototype.$tea = TeaInstance;\n },\n};\n\nexport default TeaPlugin;\n"],"names":["actions","resetAllState","commit","types","RESET_STATES","getCustomContentList","store","data","request","get","apis","custom_content","newList","addCustomContent","post","newCreate","updateCustomContent","newUpdate","getCustomContentDetail","newDetail","removeCustomContent","newDelete","getWhaletoken","whale_token","liteOpenCheck","getters","country","account","lite_open_check","then","res","is_opened","catch","state","_formState","_formGetters","_formNamespace","formItems","_formItems","formState","formGetters","formNamespace","isFormItemVisible","formItemName","isSelfVisible","target","isVisible","undefined","formGroupModel","reduce","model","formItemModuleKey","formItemData4ShowKey","formItemData4HideKey","formGroupData4Submit","gettersKey","formGroupData4View","clearWhileHidden","key","mutations","saveFormState","Vue","set","saveFormNamespace","saveFormGetters","initState","forEach","_moduleKey","fillFormGroup","dispatch","formData","_formGroupState","_formGroupNamespace","formGroupState","formGroupNamespace","update","newState","Object","keys","saveFormGroupState","saveFormGroupNamespace","formGroups","_formGroups","formModel","formGroupModuleKey","formData4View","isFormGroupVisible","formGroupName","initVuexModule","fillForm","backendData","baseModule","childModule","baseState","normalizeBaseState","childState","mergedState","mergeObject","prop","result","namespaced","modules","map","m","namespace","watch","newVal","oldVal","deep","use","Vuex","Store","plugins","strict","process","user","ttcmAccountId","accountStatus","accountInfo","contactInfo","sensitive","not_sensitive","permissionData","hasFetchedAccountInfo","roles","showNavbar","aadvid","advertiserName","allAccountList","authStatus","coreUserInfo","tzList","shopifyDetail","whiteListObj","couponTotalBalance","qualificationList","taxValue","utcOffset","accountOwnBC","isTTP","fixedOffsetTimezone","hasNeedPostInvoiceInfo","currencyLocale","enableHideComment","creationStatistics","isStaffIdExist","staff","staff_id","adverId","id","adverName","name","currency","accountType","customer_type_value","loginId","visitorId","accountCreateTime","create_time","accountNum","length","num","item","role","accoutType","STATUS_BUSINESS_MANAGER","STATUS_PENDING_CONFIRM","child","orgNum","filter","firstAccount","accountRole","qualificationSource","qualification_source","isBeCompleted","advertiserStatus","PROMOTION_SELF_SERVICE","isSelfAccount","ROLE_SLEF_ACCOUNT","isKaAccount","ROLE_COMMON_ACCOUNT","isVirtualAccount","ROLE_VIRTAUL_ACCOUNT","isCommonSelfAccount","_","QualificationSource","BC","isVirtaulSelfAccount","NOT_FROM_BC","isSelfBcAccount","isNotBcChildSelfAccount","isRoleVirtualAccount","localeTzList","qualificationListKey","rootState","rootGetter","taxVat","vat","hasOwnBc","is_own_by_bc","is_bc_admin","org_id","orgId","hasAd","campaigns","active","spending","not_delivery","Number","enableSelfQualDialog","Date","valueOf","selfAccountNeedConfirmInvoice","rootGetters","hasPostInvoiceConfirm","SET_TAX_VALUE","SET_ACCOUNT_INFO","status","SET_HAS_FETCHED_ACCOUNT_INFO","SET_CONTACT_INFO","SET_PERMISSION_DATA","SET_CORE_USER_INFO","info","SET_AADVID","SET_ADVERTISERNAME","SET_ACCOUNT_BALANCE","accountBalance","SET_SHOW_NAVBAR","flag","SET_AUTH_STATUS","SET_ACCOUNT_LIST","list","SET_TIMEZONELIST","SET_SHOPIFY_DETAIL","SET_WHIHT_LIST","SET_COUPON_TOTAL_BALANCE","SET_QUALIFICATION_LIST","SET_UTC_OFFSET","SET_ACCOUNT_OWN_BC","SET_TTP_STATUS","SET_FIXED_OFFSET_TIMEZONE","SET_HAS_NEED_POST_INVOICE_INFO","SET_CURRENCY_LOCALE","window","CURRENCY_LOCALE","SET_TTCM_ACCOUNT_ID","SET_ENABLE_HIDE_COMMENT","SET_CREATION_STATISTICS","getContactInfo","sensitive_flag","is_self_account","contact_info","code","msg","value","includes","decodeURIComponent","escape","atob","err","telephone","phonenumber","contacter_telephone_country","contacter_email","email","phonenumberCountry","phonenumber_country","Error","getCommentToolNewUser","getAbVersion","ab_feature","hit_comment_tool_ab","hide","getNotification","get_notification","majordomoDelete","majordomo_delete","getCampaignStatus","ad_info","getPONumber","PONumber","updatePONumber","payload","canChangeBusinessName","getTotalCost","dashboard","dashboardCost","source","getNotifyMsg","notification_msg","getAccountList","accountList","getAdChartStatus","advertiser_chart","getPunishInfo","punish_info","setAccountAadvidAndName","e","loadAccountInfo","params","requestArr","loadAccountReviewInfo","Promise","all","accountData","reviewData","STATE_GEOID","HAWAII","county","city","loadPermissionData","permission","PERMISSION_DATA","localeValue","apply_lang","currentLang","advInfo","getTtpTagByAadvid","getTTPFlag","object_type","object_id","region_type","loadWhiteList","white_list","loadExtra","extra","timezone","accountTimezone","fixedOffsetAccountTimeZoneName","fixedOffsetAccountTimeZoneObject","abbrs","format","untils","offsets","moment","tz","add","pack","qualifications","businessReviewData","qualification_reject_reasons","qualification_new_secret","qualification_url_secret","index","qualification_status","QualificationStatus","reject","qualification_type","qualificationImgsType","QualificationType","qualification_value","reason","push","loadLoginInfo","passport","accountUpdate","getUpdateAccountInfoData","firstPostAccountInfo","resolve","getVerificationStatus","verificationStatus","getTaxInfo","tax_value","getGeoByCodeNew","getGeoByCode","getReginNameByCode","cancelAccount","cancel_account","getLocaleTzList","all_timezone_list","resp","timezone_list","checkTaxVat","check_tax_vat","checkAllAdsOff","close","check_all_ads_off","getBillStatus","bill_status","getQualificationList","deleteQualification","checkIptTextLanguage","checkHasNeedPostInvoiceInfo","is_post_fulfill_country","saveDraft","timestamp","found","splice","now","localStorage","setItem","JSON","stringify","getDraft","parse","getItem","deleteDraft","i","getAccountOwnBc","bcOwnDetails","getTTCMAccount","checkTTCMAccount","ttam_account_id","ttcm_account_id","getCreationStatistics","dims","dashboardAccountStatus","loading","showSelectModal","actionOptions","adCopiedInfo","SET_LOADING_STATE","SET_SELECT_MODAL_STATE","SET_ACTION_OPTIONS","COPY_AD","isNotHasCustom","validateField","addForm","identity_type","identityTypeMap","FAKE_USER","display_name","avatar_icon","SET_ADD_FORM_IDENTITY","SET_ADD_FORM_IDENTITY_ALL","SET_CUSTOM_VALIDATE_FIELD","SET_IS_NOT_HAS_CUSTOM","type","create","identity","SET_PERF_OPERATED_ANCHOR","adgroupListToken","diagnosisDailyData","SET_REQUEST_TOKEN","SET_DIAGNOSIS_DAILY_DATA","fromEntries","ad_id","getAdReportStat","ad","new_report_stat","getAdCopyInfo","copy","getAdGroupList","cancel","axios","CancelToken","newStatisticList","cancelToken","token","loadDiagnosisDailyData","adGroupIds","isDiagnosisV2White","today","getDate","ad_ids","st","et","limit","query_list","table","stat_data","stat_cost","time_attr_convert_cnt","time_attr_conversion_cost","updateAdStatus","root","postForm","update_status","updateAdBid","requestData","update_bid","updateAdBudget","update_budget","updateAdScheduledBudget","update_scheduled_budget","createAdPreview","preview_create","getQrcodeUrl","preview_qr","updateAdBatchBid","batch_update_bid","splitTestToAll","splitTestStopTest","getAudienceAnalysis","url","bc","showCompleteBcAccess","showCompleteBcPartner","invoiceInfo","registeredArea","billingConfig","taxInfo","canShowInvoiceInfo","present_info","invoicePresentMap","HIDE","SET_SHOW_BC_SECTION","SET_INVOICE_INFO","SET_BC_INFO","registered_area","bcId","SET_BILLING_CONFIG","tax_info_mapping","getBcManageList","bc_manage_list","accountOwner","account_owner_type","organizations","accountOwnerTypeMap","accountOwnerType","accountRemoveBc","account_remove_bc","getInvoiceInfo","billing_info","updateInvoiceInfo","getBcInfo","getBillingConfig","billing_config","brand","report_stat","getBrandCopyInfo","getBrandList","updateBrandStatus","postDeliverVerify","deliver_verify","campaignSaved","objType","campaign_id","campaign_name","objective_type","budget","dedicate_type","budget_mode","struct_version","industry_types","ab_test","splitTestType","NONE","budget_optimize_switch","optimize_goal","smart_bid_type","deep_bid_type","roas_bid","campaign_app_profile_page_type","campaignSuccess","campaignListToken","campaignList","fakeCampaignId","campaignSuggestBid","campaignKey","useCBO","campaign","adgroup","adCampaignData","useCBOVO","DEEP_BID_TYPE","VO_MINIMUN_ROAS","VO_HIGHEST_VALUE","haveCampaignSuggestBid","selectedIndustry","isSelectedIndustry","SET_CAMPAIGN","SET_FAKE_CAMPAIGN","isEmptyObject","GET_CAMPAIGNSUCCESS","SET_CAMPAIGN_LIST","SET_CAMPAIGN_SUGGEST_BID","getCampaignDetail","getDashboardCampaignList","dashboardStatisticList","getCampaignList","getAllCampaign","nav_list","updateCampaignStatus","createCampaign","args","captureError","emptyCampaignSaved","initCampaign","buying_type","removeCampaignData","removeItem","getCampaignSuggestBid","campaignId","service","has_active_ad_group","formatMoney","bid","estimateRequestTnterval","estimateRequestTimer","budgetRecommendTimer","impressionEstimateTimer","splitTestEstimateRequestTimer","initialized","action","activeTab","classify","rf_ad_id","campaignQuota","available_quota","used_quota","releasing_quota","total_quota","campaignQuotaSum","campaignNavList","adgroupNavList","adgroupInfo","batchInfo","copyNumber","batchVisible","inventory_flow_type","inventory_flow","conversion_checked","brand_safety","BrandSafetyMap","UN_SAFE","creative_material_mode","creativeType","CUSTOM","pricing","platform","opt_target","opt_target_A","opt_target_B","target_device_version","adgroupIos14Switch","unset","isCpxBidCap","isCpxBidCapList","start_time","areasData","pixelToken","end_time","contractStartTime","contractEndTime","isRFContractTimeAvailable","rf_timezone","external_type","adgroupData","operatorList","fakeAdIds","suggestPrice","suggestPriceOne","suggestPriceTwo","suggestPriceDeep","appId4Em","suggestPriceType","suggestPriceOneType","suggestPriceTwoType","suggestPriceDeepType","dmpInfo","audienceEstimateData","app_retargeting_install","dpa_local_audience","isEstimating","isEstimateFailed","isWritable","ttpUnsupportedArea","cloverUnsupportedArea","audienceEstimateScore","audienceEstimateUserCount","audienceEstimateResult","impressionEstimate","impressionEstimateParam","isBudgetRecommendVisible","budgetSourceType","BudgetSourceType","manual","budgetRecommendData","budgetRecommendParam","audienceEstimateDisabledInDpa","stockEstimate","stockEstimateKey","isStockReCalculating","isStockOrderCompleted","isStockWidgetAvailable","stockBudgetThreshold","MAX_SAFE_INTEGER","stockImpressionThreshold","cityMap","areasMap","allLocationMap","inMarketList","inMarketListObj","inMarketSearchList","adInterestArr","adTopicArr","behaviorOptions","country_codes_by_split_test_index","particle_locations","availableCountries","ad_ref_app_id","isDeepGoalSupportInAppEvent","isDeepEventsModuleShow","appEventList","appList","editStatisticType","externalActionMap","externalActions","externalActionsA","externalActionsB","externalAction","externalActionA","externalActionB","pixelId","brand_safety_partner","search_delivery_type","TIKTOK_SEARCH_ADS_SWITCH","DEFAULT","pixelEventList","pixelList","pixelInfo","pixelListLoading","pixelEventListLoading","websiteRecommendUrlList","appRecommendUrlList","open_url","is_open_url","isNewStructure","externalUrlDomain","domain","domainCancelToken","inAppEvents","installDeepEvents","androidList","iosList","domainInited","allLanguagesList","ab_test_status","voStatus","cost_cap_status","VOStatus","NOTSUPPORT","roas_status","value_optimizer_status","highest_value_status","targetMultiTabs","title","isError","biddingMultiTabs","power","suggest_budget","splitTestVars","splitTestBudget","splitTestAudienceEstimate","isMatchAbTest","count","sample_count","platformId","useDraft","externalActionToken","osvToken","pangleFlowPackArr","learnParse","videoCategoryOptions","flattenedVideoCategoryOptions","creatorCategoryOptions","flattenedCreatorCategoryOptions","deviceModelsList","alertInfo","catalog","catalogBcId","isCatalogAuth","adInterestKeywordsInfoMap","adBehaviorHashtag","targetRecommendTraceInfo","adgroupQuota","using_quota","getAdgroupDCQuota","splitTestQuota","max","available","releasing","using","isAppidInNewQuota","isOnlySupportTT","isSupportLowestCost","isBidStrategyChanged","isEditClicked","hasCostcap","hasLowestCost","pangleSupportCountries","copyPixelAwait","isOpenBS","ios14_quota_type","IOS14QuotaType","UNOCCUPIED","hasRewrittenCopiedStartTime","appProfilePageType","isDpaOrShopCountryOffline","liveTimezoneList","hasPremiumTopic","isAppInstallAmazon","isAppInstall","isModelSoleWhite","isTrafficAmazon","isTraffic","isTwoAdgroupDc","isSupportIos14","isIOS14MultipleTwoWhite","isIOS14MultipleFiveWhite","isTwoAdgroupUnderDc","isUnderDcHasAdgroup","isUnderDcHasNoAdgroup","isUnderDc","isInstallHasActiveDeepEvent","events","deep_external_action","find","aeo_availability","eventStatus","ready","isMatchExternalUrlDomain","eventDomainList","pixelEvent","pixelEvents","verified_domain_list","isShowPcmDrop","isPcmPhase2White","isShowIosWebPixelAlert","every","has_pcm_config","isPcmPhase1White","isPixelStandardEventList","isPixelStandardWhite","isCreate","isCopy","deprecated","selectedPixelEvent","isShouldEmptyEvent","selectedPixelInfo","campaignType","dedicatedCampaign","isShowAppIos14AdsMark","isDpaSupportIos14","isDpaLink","isAppInstallSupportIos14","isShowWebIos14AdsMark","isConversion","isDpa","isWebsite","isFrozenApp","notAllowedIos14Apps","AppStatusValue","Probated","BlockedConflictAppAccount","BlockedUnsupportedMMP","selectedAppDetail","AccountAppVerifiedState","isIOS14App","isUnderNonDc","isAdmin","is_admin","opSysFilter","isConversionSupportIos14","operatorOptions","v","i18n_value","in_use","isAndriodApp","platformEnum","ANDROID","isAppDownload","OCCUPIED","isPlatFormIos","IOS","isEdit","isDefaultSupportDc","isObjectiveSupportDc","isCreateAdgroupOutIosMultipleWhite","isSplitTestEnabled","isSplitTestSupportIOS14White","isIOS14MultipleWhite","campaignObjectiveValue","DPA","Traffic","Conversion","isSupportBrandDataTrack","isBrandTrackDataWhite","Reach","VideoView","RF","RF_VV","RF_TRAFFIC","isRfTrafficSupportPixel","AppInstall","RF_APPINSTALL","isShop","Shop","isShopLive","Scenario","Live","isConversionApp","isExternalActionSupportNoBid","useBiddingSplitTest","activeThirdTabs","itemIndex","external_action","is_no_bid_enabled","contentType","website","ExternalOrDisplay","isAppTypeIOS","isAppRetargetWhite","app","indexOf","dpaDeeplink","useSplitTest","route","query","abTest","useTargetSplitTest","TARGET","useCreativeSplitTest","CREATIVE","rdAdgroupId","OPTIMIZE","appDetail","appId","Id","bondTrackAppList","TrackingUrl","ClickUrl","isEditIos14MiddleMinus","ios14Below","isSelectedAppHasClickTrackUrl","isSelectedAppHasClickTrackUrlOrSdkS2s","detail","partnerId","SdkS2sAdvertisersIdList","isSdkS2s","adgroupKey","auditStatus","audit_status","adStatusValues","AUDIT","isDisabledMoat","isDisabledDV","isDisabledIAS","pangleFlowPackOrient","bind_type","pangleFlowPackConfig","orient","pangleFlowPackExclude","exclude","supportPangleFlow","isMultipleCountrySelected","countryIdCodeMap","idCodeMap","Map","area","isRF","checkIsRF","catalogCountry","refer_catalogs","Set","isCrossBorderCatalog","is_multi_country_lang","referCatalogs","getCountryCorrespondingLanguage","countries","language","lowestBudget","isBudgetReductionEnabled","LowestBudget","TRAFFIC","LeadAds","LEADGEN","Engagement","ENGAGEMENT","isShopAdLiveScenario","isShopAdVideoScenario","ShortVideo","isAppProfilePageOpen","AppProfilePageType","on","SET_BIDDING_EDIT","SET_SUPPORT_LOWEST_COST","SET_BIDSTRATEGY","SET_HAS_COSTCAP","SET_HAS_LOWESTCOST","SET_ADGROUP_DOMAIN","SET_DOMAIN_INITED","SET_COPY_PIXEL_AWAIT","SET_ADGROUP_EXTERNAL_URL_DOMAIN","SET_IOS_LIST","SET_EXTERNALACTION_TOKEN","val","SET_ANDROID_LIST","SET_ALL_LANGUAGES_LIST","SET_PIXEL_LIST_LOADING","SET_SUGGEST_PRICE","SET_SUGGEST_PRICE_TYPE","SET_START_TIME","SET_END_TIME","SET_STRUCTURE","SET_IS_ENABLE_IOS14","SET_WEB_URL_LIST","SET_APP_ID_4_EM","SET_APP_URL_LIST","SET_PIXEL_EVENT_LIST_LOADING","SET_PIXEL_EVENT_LIST","SET_PIXEL_LIST","SET_PIXEL_INFO","SET_CONTRACT_START_TIME","SET_CONTRACT_END_TIME","SET_RF_CONTRACT_TIME_AVAILABLE","SET_RF_TIMEZONE","SET_LIVE_TIMEZONE_FOR_DST","SET_IN_APP_EVENTS","SET_INSTALL_WITH_IN_APP_EVENTS","SET_APP_RETARGETING_INSTALL","SET_DPA_LOCAL_AUDIENCE","SET_EXTERNAL_ACTION","SET_IS_SUPPORT_IN_APP_EVENT","SET_IS_DEEP_EVENT_MODULE_SHOW","SET_EXTERNAL_ACTIONA","SET_EXTERNAL_ACTIONB","SET_OPEN_URL","SET_IS_OPEN_URL","SET_EXTERNAL_ACTION_MAP","SET_PIXEL_ID","SET_FAKE_ADIDS","SET_TARGET_MULTI_TABS","SET_BIDDING_MULTI_TABS","SET_ADGROUP_ACTIVE_TAB","tab","SET_ADGROUP_ACTION","cmd","GET_CAMPAIGN_NAV_LIST","GET_AD_NAV_LIST","ad_test_id","GET_AD_GROUP_INFO","SET_AD_GROUP_DATA","SET_AD_GROUP_ID","adId","SET_RF_AD_GROUP_ID","SET_CAMPAIGN_OBJECTIVE_TYPE","SET_CAMPAIGN_ID","ID","SET_INVENTORY_FLOW","flow","Array","isArray","SET_CONVERSION_CHECKED","checked","SET_INVENTORY_FLOW_TYPE","SET_BRAND_SAFETY","SET_BRAND_SAFETY_PARTNER","SET_EXTERNAL_TYPE","SET_ADGROUP_OPT_TARGET","SET_ADGROUP_OPT_TARGET_A","SET_ADGROUP_OPT_TARGET_B","SET_CPX_BID_CAP","SET_CPX_BID_CAP_LIST","SET_ADGROUP_PRICING","SET_AD_CLASSIFY","SET_AD_PLAT_FORM","ALL","SET_ADGROUP_COPY_NUM","SET_ADGROUP_BATCH_INFO","arr","SET_ADGROUP_BATCH_VISIBLE","SET_CREATIVE_MATERIAL_MODE","SET_ADGROUP_DATA_FLAG","adgroupSuccess","SET_AD_CAMPAIGN_DATA","GET_OPERATOR_LIST","SET_AUDIENCE_ESTIMATE_TTP","SET_AUDIENCE_ESTIMATE_CLOVER","SET_IS_WRITABLE","SET_AUDIENCE_ESTIMATE_SCORE","SET_IMPRESSION_ESTIMATE","SET_IS_BUDGET_RECOMMEND_VISIBLE","SET_BUDGET_SOURCE_TYPE","SET_IMPRESSION_ESTIMATE_PARAM","SET_BUDGET_RECOMMEND_DATA","SET_BUDGET_RECOMMEND_PARAM","SET_AUDIENCE_ESTIMATE_USER_COUNT","SET_AUDIENCE_ESTIMATE_RESULT","SET_AUDIENCE_ESTIMATE_DATA","SET_AUDIENCE_LOADING","isLoading","SET_AUDIENCE_DISABLED_IN_DPA","SET_OSV_TOKEN","SET_PIXEL_TOKEN","SET_AUDIENCE_FAILED","isFailed","SET_STOCK_WIDGET_AVAILABLE","SET_STOCK_ESTIMATE","SET_STOCK_ESTIMATE_KEY","SET_STOCK_RECALCULATING","SET_STOCK_ORDER_COMPLETED","SET_STOCK_BUDGET_THRESHOLD","SET_CAMPAIGN_QUOTA","SET_ADGROUP_QUOTA","SET_SPLIT_TEST_QUOTA","SET_APP_ID_IN_NEW_QUOTA","SET_IS_ONLY_SUPPORT_TT","SET_STOCK_IMPRESSION_THRESHOLD","SET_CITY_MAP","SET_AREAS_MAP","SET_ALL_LOCATION_MAP","SET_AD_INTEREST_MAP","SET_AD_TOPIC_MAP","SET_IN_MARKET_LIST","SET_IN_MARKET_LIST_OBJ","SET_IN_MARKET_SEARCH_LIST","SET_AD_INTEREST_KEYWORDS_INFO_BY_ID","lang","CLEAR_AD_INTEREST_KEYWORDS_INFO_MAP","SET_AD_BEHAVIOR_HASHTAG_INFO","CLEAR_AD_BEHAVIOR_HASHTAG_INFO","SET_DMP_INFO","SET_ADGROUP_COUNTRY","SET_ADGROUP_COUNTRY_CODES_BY_SPLIT_TEST_INDEX","SET_PARTICLE_LOCATIONS","SET_USE_DRAFT","SET_AREAS_LIST","SET_AVAILABLE_COUNTRIES","SET_APP_ID","SET_APP_LIST","SET_APP_EVENT_LIST","SET_EXTERNAL_ACTIONS","SET_EXTERNAL_ACTIONS_A","SET_EXTERNAL_ACTIONS_B","SET_BUDGET","SET_SPLIT_TEST","SET_SPLIT_TEST_VAR","SET_TARGET_RECOMMEND_TRACE_INFO","CLEAR_TARGET_RECOMMEND_TRACE_INFO","SET_POWER","SET_SUGGEST_BUDGET","SET_SP_BUDGET","SET_SP_ESTIMATE_DATA","newEstimate","SET_BEHAVIOR_OPTIONS","SET_CATALOG","SET_CATALOG_BC_ID","SET_CATALOG_AUTHORIZED","SET_EDIT_STATISTIC_TYPE","SET_AD_TEST_STATUS","SET_PANGLE_FLOW_PKG","SET_LEARN_PARSE","SET_INITIALIZED","SET_VIDEO_CATEGORY_OPTIONS","categoryHandler","SET_FLATTENED_VIDEO_CATEGORY_OPTIONS","SET_CREATOR_CATEGORY_OPTIONS","SET_FLATTENED_CREATOR_CATEGORY_OPTIONS","SET_DEVICE_MODEL_LIST","ADD_ALERT_INFO","CLEAR_ALERT_INFO","SET_PANGLE_SUPPORT_COUNTRIES","SET_IS_OPENBS","open","SET_IOS14_QUOTATYPE","SET_SEARCH_DELIVERY_TYPE","SET_DOMAIN_TOKEN","SET_HAS_REWRITTEN_COPIED_START_TIME","SET_APP_PROFILE_PAGE_TYPE","SET_DPA_OR_SHOP_COUNTRY_OFFLINE","SET_HAS_PREMIUM_TOPIC","fillQueryParams","act","getDomain","getExternalUrlDomain","external_url","setCampaignID","getCampaignNavList","getOperatorList","getAdCampaignData","getCampaignModifyTime","adcampaign","loadAreasData","param","areas","fetchAreasData","getAdgroupNavList","getAdgroupInfo","options","isCreative","isInCopyCreative","base_info","shouldRewriteMaterialMode","shop_authorized_bc","catalog_authorized_bc","getAdgroupInfoByDraftGetForSimplifiedSmb","getUserDraftChecked","draft_json","getCopyAdgroupInfo","checkAdgroup","postData","setLocalAdgroup","setLocalStore","getAdGroupSuggestions","suggestions","getCampaignQuota","quota","campaign_quota","ad_group_quota","split_test","getIos14QuotaInfo","app_id","getAppIdIsNewQuotaProcess","has","useIOS14QuotaApiForCampaign","useIOS14QuotaApiForAdgroup","adgroupQuotaInfo","getLocalAdgroup","getLocalStore","clearAdgroupAllData","removeLocalStore","RESET_SHOP_STATE","removeSplitTestVuex","removeLocalAdgroup","submitCreateAdgroup","risk_info","tool","getRiskInfo","createAdgroup","submitCreateRFAdgroup","submitUpdateAdgroup","updateAdgroup","finally","updateAppIcon","event_id","getAppType","checkAppInstallType","statistic_map","getAppInfo","appInfo","app_info","getAppEventList","fetchAppEvents","AppEvent","getStockEstimate","config","stockEstimateData","fetcStockEstimate","isCancel","getAudienceEstimate","score","userCount","upperUserCount","lowerUserCount","isUserCountVisible","audience","age","String","SET_CAMPAIGN_PARAMS_AUDIENCE_ESTIMATE","fetchAudienceEstimate","parseInt","estimate","is_writable","upper_user_count","lower_user_count","user_count","currencyLocaleFormat","split","join","ttp_unsupported_area","clover_unsupported_area","getDmp","objectiveType","buyingType","AUCTION","fetchDmp","generateAudienceEstimateParam","toString","isNoLimitAdTags","ad_tag_v2","t","targeting_expansion","expansion_enabled","expansion_types","gender","TargetingExpansionType","GENDER","AGE","highHouseholdIncome","household_income","isAudienceExpand","AUDIENCE","retargetingTags","retargeting_tags","retargetingTagsExclude","retargeting_tags_exclude","isInterestBehaviorExpand","INTEREST_BEHAVIOR","adTagV2","inMarketTags","in_market_tags","interestKeywordsI18n","interest_keywords_i18n","actionScenesV2","action_scenes_v2","videoActionsV2","video_actions_v2","actionCategoriesV2","action_categories_v2","actionDaysV2","action_days_v2","districts","province","ac","language_list","android_osv","ios_osv","device_models","launch_price","flow_package_include","flow_package_exclude","carriers","app_retargeting_type","retargeting_audience_rule","automated_targeting","product_platform_id","ad_ref_pixel_id","include_custom_actions","exclude_custom_actions","AUDIENCE_TYPE","NORMAL","getDpaRetargetParams","op_sys_filter","with_signature","withSignature","INVENTORY_FLOW","r","setAudienceEstimateData","isRetry","constructor","old_inventory_flow","min","oldParams","clearTimeout","setTimeout","triggerBrAndIe","temp","setImpressionEstimateParam","recommendBudgetRequestFormatter","getImpressionService","impression","setBudgetRecommendParam","getRecommendBudgetService","resData","returnRecommendBudget","commonParam","ad_futures","campaign_futures","adopt_source","estimated_impression","impression_lower","recommended_budget","recommended_budget_info","postBackRecommendBudgetService","setCityMap","getAllLocationMap","cityOptions2Array","setAdInterestMap","setAdTopicMap","setHasPreMiumTopic","getAppList","AppList","getOperationSystemList","ios","android","getAllLanguagesList","label","getExternalActions","isSplitTest","splitTestIndex","updateAll","getPixelEventList","pixel_id","pixel_event_list","external_action_i18n","eventName","pixel_event_name","activity_status","total_count","getPixelList","pixelArr","pixel_list","pixel_name","pixel_code","pixel_version","asset_relation_status","promotion_website_type","getPixelInfoById","pixel_info","pixel_events","getWebRecommendUrlList","urlList","getRecommendUrlList","urls","loadVideoAndCreatorCategory","industryTypes","get_action_categort","videoCategory","video_related","creatorCategory","creator_related","flattenTree","treeData","flattenedArr","children","walkTreeBFS","handler","translation","handledCategory","clonedOptions","deprecatedOption","option","visible","filterable","disableDeprecatedVideoCategory","getSplitTestBudget","getPower","getSplitTestAudienceEstimate","newData","formatAge","requestParams","width_signature","curParam","splitTestAuEstimate","is_match_ab_test","getVOStatus","getPangleFlowPkg","pangleFlowPkg","models","flow_pack_bind_models","clearAlertInfo","getDeviceModelsList","get_device_model_list","deviceList","flattenDeviceArr","handleNode","flattenList","addAlertInfo","infoData","sendTargetRecommendTrace","adgroupIds","adgroupId","tracer","partnerList","campaignIds","campaignIdForSplittest","adgroupIdForSplittest","abtestFlagForSplittest","parents","paramsAudienceEstimate","referer","isFromSimpilified_05","isFromConversion","needModeSwitchTooltip","modelKey","core_user","core_user_id","hasReferer","isStoreManagerReferer","REFERER","STORE_MANAGER","isMagellanReferer","MAGELLAN","isSwitchNowReferer","SWITCH_TO_CONVERSION_SHORTCUT","SET_PARTNER_LIST","SET_ACK_CAMPAIGN_IDS","SET_CAMPAIGN_ID_FOR_SPLITTEST","SET_ADGROUP_ID_FOR_SPLITTEST","SET_ABTEST_FLAG_FOR_SPLITTEST","SET_ACTIVE_THIRD_TABS","SET_PARAMS_AUDIENCE_ESTIMATE","SET_REFERER","CLEAR_REFERER","SET_ISFROMSIMPLIFIED05","SET_ISFROMCONVERSION","SET_NEED_MODE_SWITCH_TOOLTIP","updatePoNumber","updateBudget","getPartnerList","toolbox","partner","triggerPackageParse","package_parse","updateAppInfo","appInfoUpdate","updateConvertStatus","convert_update_status","createConversion","convert_create","updateConversion","conversionUpdate","submitCampaign","isCopyCreative","isProcedural","creativeMaterialMode","comingSourceType","isEngagementFans","creativeInfoWithCta","isTrackApp","adName","campaignName","publishReport","campaignFormData","coming_source_type","report","rejectCode","message","creativeBatchInfo","adIds","formatAc","formatPlatForm","vars","numBasedChar","splitTestTarget","splitTestBidding","cpa_bid","batch_info","respBatchInfo","ad_report","assign","creative_status","respItem","newItem","prototype","trackEvent","source_ad_id","inventoryFlow","creativeData","call_to_action_id","call_to_action_list","imageList","image_list","isAcoHasVideo","some","video_info","is_creative_authorized","isSignProtocol","showProtocolTerms","identity_data","isCreativeHasIdentityWhite","identity_id","bcIdentityTypesList","identity_bc_id","batchInfoWithoutPlayableUrl","playableUrlList","playable_url","creative_info","materialType","call_to_action","video_list","finalData","respCreativeReport","creative_report","k","itemx","creative","creative_msg","splitTestEstimateVars","realPeople","Math","realSamplePeople","realBudget","startTime","endTime","diffDays","ceil","diff","real_budget","reach_people","sample_people","splittest","save","createRFOrder","campaign_coming_source_type","CREATE_CAMPAIGN","useExistedCampaign","adg_coming_source_type","CREATE_AD_GROUP","COPY_AD_GROUP_TO_NEW_CAMPAIGN","COPY_AD_GROUP_TO_EXISTED_CAMPAIGN","adgroupResp","createPlanVersion","campaign_planner_version_name","campaign_planner_plan_id","versionData","campaign_planner_plan_name","campaign_planner_version_id","updatePlanerVersion","reSubmitRFOrder","createSimplifiedSmbCreative","fake_ad_ids","fake_campaign_id","fake_ad_group_id","version","updateAndCheckUserCreativeDraft","check_result","ad_and_creative_ids","submitParams","fake_ad_creative_id","submitDraftAndSaved","originResult","submitResultAdapt","createRFCreative","ad_coming_source_type","CREATE_AD","creativesPostData","getSplittestResult","getSplittestDetail","getSplittestAdDetail","adDetail","getSplittestMetrics","newMetrics","getSplittestExcludeList","getOptimizeGoal","optimizeGoal","collectionAdsCatalog","catalogAvailableLocation","loadingCatalogAvailableLocation","collectionAdsCatalogCountry","collectionAdsReferCatalogs","collectionAdsIsCrossBorderCatalog","getLanguageCorrespondingCountry","SET_CATALOG_AVAILABLE_LOCATION","SET_LOADING_CATALOG_AVAILABLE_LOCATION","SET_COLLECTION_ADS_CATALOG","catalogData","getCollectionAdsCatalogInfo","getCatalogInfo","getCatalogAvailableLocation","transferToId","checkCatalogAuthorized","context","catalogId","path","formatPath","catalogue","checkAuthorized","authorized","commonTcc","getDefaultCommonTcc","SET_COMMON_TCC","fetchCommonTcc","getCommonTcc","tcc_key","tcc_config","contract","dsaShow","customerId","SET_CONTRACT_CUSTOMER_ID","SET_DSA_DIALOG_SHOWN","shown","getDsaAssignInfo","getAssignDsaInfo","getShownContract","pop_ups","popUps","is_dsa_show","customer_id","signDsaContact","assignDsa","dsa_sign","registerMfModule","proceduralCreativeForm","playableCardForm","adListToken","getCreativeList","getCreativeInfo","getNewCreativeInfo","new_info","getNewCreativeProceduralInfo","new_procedural_info","updateCreativeStatus","RENDER_STATUS","values","VIDEO_ASYNC_RENDER_RENDERING_STATUS","ADDITION_IMAGE_CARD","ADDITIONAL_CREATIVE_ATTACHMENT_EXPERIENCE_TYPES","IMAGE_CARD","ADDITION_INSTANT_PAGE","INSTANT_PAGE","ADDITION_ENGAGEMENT","SINGLE_IMAGE","AD_TYPE","SINGLE_VIDEO","CAROUSEL_IMAGE","CATALOGUE_VIDEO","REAL_TIME_LIVE","CREATE_NEW","NORMAL_AD_SOURCES","NATIVE_VIDEO","EGG","ADDITIONAL_CREATIVE_ENGAGEMENT_TYPES","GESTURE","getVideoUploadKey","videoUploadKey","SET_SHA1_KEY","sha1_key","uploadVideo","videoUpload","uploadImageToLibrary","library","image_create","checkNameExist","check_name_exist","getVideoCovers","vid","start","getTime","interval","setInterval","clearInterval","videoCovers","video_id","covers","slice","getCreativeSuggestions","creative_id","verifyAds","verify","uploadAds","cookie_enabled","navigator","cookieEnabled","screen_width","screen","width","screen_height","height","browser_language","browser_platform","browser_name","appCodeName","browser_version","appVersion","browser_online","onLine","timezone_name","guess","PixeOnlyTracking","page_id","updateAd","getLeadAdsFormList","leadAdsForm","getLeadAdsProtocal","protocalQuery","isShow","lead_gen_signed","SET_SHOW_PROTOCOL_TERMS","leadAdsProtocalSign","getLeadAdsFormDetail","getStorefrontPageDetail","storefrontPageDetail","getProtocolStatus","protocolQuery","is_exist","protocolSign","getZefrAuthority","brandSafetyAuthority","BrandSafetyTrackTypeMap","ZEFR","SET_ZEFR_AUTHORITY","has_authorization","getBsIasAuthority","IAS","SET_BSIAS_AUTHORITY","getBsDvAuthority","DV","SET_BS_DV_AUTHORITY","getZefrSupportCountries","bsThridPartySupportCountries","brand_safety_postbid_partner","country_ids","SET_ZEFR_COUNTRY","getBsIasSupportCountries","SET_BS_IAS_COUNTRY","getBsDvSupportCountries","SET_BS_DV_COUNTRY","getCrmStatus","leadConnectorAuth","getDpaWordList","SET_DPA_WORD_LIST","lexicon","is_get_available_lexicon","lexicons","cloneByIndex","splitTestTab","ads","cloneAd","adSource","adType","product_set_id","call_to_action_type","ADVANCED_CREATIVE_TYPE","autoOptimized","adFileCopy","isAdEmpty","isLastAdEmpty","UPDATE_AD","ADD_AD","adFileAdd","clonedDetail","ADD_AD_BY_DETAIL","updateAdMaterial","sourceTarget","targetAdType","clearAdMaterial","nativeAdIdentityTypes","image_mode","aweme_item_id","image_info","adFileDelete","isOffsitePixel","adTypeByIndex","getAdTemplateByType","adSourceByIndex","originAdDetail","action_track_url","track_url","customization","isInstantPageChecked","cardAdditionalInfo","isChecked","identityData","adIdentityDataByIndex","creative_type","creative_shop_id","copy_from_ad_id","copy_creative_shop_id","product_selection_type","can_use_live_list","can_use_video_list","available_status","SHOP_LIVE_CTA","SHOP_NOW_CTA","DELETE_AD","saveVideoDefaultCover","cover","adDetailByIndex","saveVideoBackupCovers","adStorageKey","loadDraft","removeDraft","removeAdData","RESET_ADS","SET_APPINFO","getCreatives","getAdList","SET_CREATIVES","adGroupData","listData","isNewCreativeListWhite","new_list","adDetailList","fillCreativeInfo","playableUrl","setAdsByCreativeDetail","creativeDetail","callback","SET_IDENTITY_AUTHORIZATION_STATE","identityAvailableStatus","Available","AUTO","DPA_VIDEO_DISPLAY_MODE_TYPE","creativeInfo","oldAdDetail","isNativeAd","NATIVE_AD_ACTION_TYPE","item_source","native_source","nativeAdActionType","anchors","image_material_ids","external_url_material_ids","external_urls","video_tpl_name","video_display_mode","creative_name","dpa_open_url_type","params_type","app_name","auto_open","autoCreativeName","dpa_word_set","vast_moat","vast_double_verify","vast_ias","vast_url","fallback_type","titles","advanced_creative_type","format_structure","card_id","gesture_id","painted_egg_id","brand_safety_vast_url","spu_id","spu_list","selectedSpuMap","disclaimer_type","disclaimer_text","disclaimer_clickable_texts","has_disclaimer","Boolean","catalog_language","dark_post_status","bc_restrict_delivery","is_use_product_anchor","schema_type","with_promotional_music","item_duet_disabled","item_stitch_disabled","nick_name","hasVideoInfo","setAdsAndPlayable","SET_ADS_BY_DETAIL","UPDATE_SPLIT_TEST_TAB","setAdsIdentityDataList","setIdentityDataList","setRealTimePrecheckSuggtions","SET_REAL_TIME_PRECHECK_SUGGESTIONS","deleteRealTimePrecheckSugggtions","DELETE_REAL_TIME_PRECHECK_SUGGESTIONS","setRealTimeSuggtionsIntoPrecheckSuggestions","SET_PRECHECK_SUGGESTIONS","SET_PRECHECK_SUMMARY","summary","getPrecheckSuggestions","precheck","data_","filterPrecheckResult","verifyAdsParams","material_results","summary_results","clearPrecheckSuggestions","changePrecheckSuggestionsByIndex","changeType","precheckSuggestions","summeryArray","currentName","concat","suggestion","summery","Infinity","fixVideoPrecheckSuggestionsByIndex","videos","GET_ADDITIONAL_CREATIVE_CARD_INFO","shouldFetchChangeCardInfo","isNativePageAdGroup","isUpdateCardInfo","SET_LOADING_PROMOTION_DETAIL","getAttachmentCreativeInfo","additionalCreativeInfo","additionalCreativeCardInfo","cardId","need_destination","errorMsg","sendLog","level","card_infos","thumbnail_uri","firstCard","isGameGiftCard","ADDITIONAL_CREATIVE_IMAGE_CARD_TEMPLATE_TYPES","GAME_GIFT_CARD","newCardInfo","mode","CHANGE_AD_PROPERTY","content","CREATE_ADDITION_CREATIVE_CUSTOMIZED_CARD","createAdditionalCreativeCustomizedImageCard","SET_CREATIVE_DOMAIN","SET_EXTERNAL_URL_DOMAIN","creativeDataList","adIndex","resetCreativeExtraKey","shouldClearFallbackType","SET_ADS_BY_INDEX","GET_ADDITIONAL_CREATIVE_PAGE_INFO","shouldFetchChangePageInfo","getAdditionalCreativePageInfo","page_content","template_name","additionalCreativePageInfo","newPageInfo","GET_ADDITIONAL_CREATIVE_ENGAGEMENT_INFO","getEngagementCreativeInfo","previewUrl","engagementInfo","isEgg","newInfo","getIdentityListV2","identity_type_list","TT_USER","identity_list","bindData","SET_BIND_ACCOUNT_DATA","setIdentityData","availableStatus","CHANGE_ADS_RENDER_TASK","taskList","task","taskActionType","taskId","addNew","VIDEO_ASYNC_RENDER_FILL_ACTION_TYPE","ADD_NEW_CREATIVE","HANDLE_VIDEO_RENDER_ASYNCHRONOUS","recursion","isQuerying","getTaskList","videoRenderInfoList","SET_ADS_ASYNC_RENDER_VIDEO_TASK_IDS","task_list","fetchVideoRenderResultsByTaskIdsBatch","renderResult","allInfoList","taskListProcessed","percentage","getTaskRenderPercentageByStatus","renderStatus","getTaskRenderStatus","videoRenderDoneResultList","getIsAsyncRenderVideoRenderDone","task_id","tags","BATCH_FILL_VIDEO_INFO_BY_TASK_IDS","SAVE_VIDEO_RENDER_TASK_RESULT_TO_LIBRARY_BY_ID","targetTask","getIsVideoRenderAllComplete","fileNameCheck","isCheckPass","CHANGE_VIDEO_RENDER_INFO_PROP","VIDEO_ASYNC_RENDER_STATUS","RENDER_DONE_NAME_ERROR","system_tags","businesses","videoToLibrary","RENDER_DONE_AND_CREATED","RENDER_DONE_CREATED_FAILED","SAVE_VIDEO_FROM_FRONT_CREATIVE","getVideoFullInfoListByVideoRenderResultList","videoFullInfo","FILL_VIDEO_FULL_INFO_BY_TASK_ID","RE_RENDER_CREATIVE_VIDEO","reRenderCreativeVideo","nextTryCount","tryCount","VIDEO_RENDER_OPTIONS","SINGLE_VIDEO_RENDER_TRY_COUNT","newTask","RENDERING","hasLeadAds","CHECK_HAS_LEAD_ADS","CATALOGUE_IMAGE","ADDITION_IMAGE_CARD_NAME","INSTANT_PAGE_NAME","getIsInstantPageChecked","adsUnitCreativeInfo","adsUnit","creativeRevertFieldArr","isValidAdSource","creativeRevertValueMap","pre","field","is_valid","isCollectionAds","CREATIVE_TYPE","LYNX_PLP","isCustomizedAdditionalCreative","customizedAdditionalCreativeObjectiveTypes","CARD_ADDITIONAL_CREATIVE_TYPE","CUSTOMIZED","isUseAutoGenerateCreativeName","activeCarouselImageIndex","enableUrl","enableCta","carouselImageInfoComponentsNameList","carouselImageModeChangerLoadingStatus","attachmentCreativeTitle","attachmentCreativeType","destinationEnable","SHOP_LIVE_VIDEO","SHOP_LIVE_REAL_TIME","song_authorization_missing","isCheckedMusicProtocol","rf_creative_id","shopHasUnavailablePrd","spuData","PRODUCT_SELECTION_TYPE","SINGLE","MULTIPLE","PUSH_VIDEO_TO_TTBA","DISCLAIMER_TYPES","UN_SET","TEXT_ONLY","TEXT_WITH_LINK","transformTitle4Backend","dpaWordList","is_dynamic","isQuickOptimizeToolsShow","quickOptimizeToolInfo","GET_SPECIAL_ADDITIONAL_CREATIVE_INSTANT_PAGE_TEMPLATE_TYPES","APP_PROFILE_INSTANT_PAGE","getIsAppProfileInstantPageChecked","ADDITIONAL_CREATIVE_PARAMS","allImagePropList","getShouldPropEmpty","propName","externalUrl","restAttrClear","uuid","imageMode","CAROUSEL_IMAGE_SQUARE","CAROUSEL_IMAGE_HORIZONTAL","originCreativeInfo","autoNameCreativeCount","autoNameCreativeCountAdUnit","current","videoRenderByPlatformCount","videoRenderCreativeCountAdUnit","isSplitTestAdsSame","adInfoList","isVideoType","imageUrlList","web_uri","sort","NaN","copyCreativeInfo","copyUnitCreativeInfo","fieldArr","suffix","randomString","originCopyCreativeInfo","postByIndex","selectedFormObject","selectedFormObjectOppo","adByIndex","precheckParams","protocol","location","pcd","imageInfo","videoInfo","isVideo","title_list","titleItem","images","image","imgSrcPrefix","URL","lastAd","fullfilledAds","fullfilledImageAds","fullfilledCarouselImageAds","fullfilledVideoAds","fullfilledAdsByType","targetAdTypeList","isQueryAdFormatData","checkAdEmptyStatus","currentSplitTestAdList","adsFormat","isAdHasVideo","isAdHasImage","hasImage4NormalAd","hasImage4DpaAd","isRealTimeLive","hasFullfilledSingleVideo","isAdSelectStorefrontCreative","isPLPCreative","isShopAdsCreative","SHOP_PDP","SHOP_PLP","hasCreativeSigningProtocol","allApps","appTypes","hasTopbuzz","TOPBUZZ","isOnlyTopBuzz","hasTiktok","TIKTOK","hasVigo","inventoryFlowKeys","VIGO","hasTiktokAdNetwork","TIKTOKADNETWORK","hasHelo","HELO","enableImage","isSupportPangleImage","enableCarouselImage","isObjectEnable_v1","CAROUSEL_ENABLE_OBJECTIVE_LIST_V1","isObjectEnable_v2","CAROUSEL_ENABLE_OBJECTIVE_LIST_V2","isEnable_v1","isCarouselImageCreativeAllowed_v1","isEnable_v2","isCarouselImageCreativeAllowed_v2","isEnable","inventoryFlows","INVENTORY_FLOW_MAP","isVigoWhite","isIdentityAvailable","NOT_IDENTITY","identityAuthorizationState","isShopAvailable","shopStateMap","shopAuthorizationState","isCatalogVideo","isCatalogImage","isShopAdsHasUnavailablePrd","isShopHasUnavailablePrd","BC_AUTH_TT","NO_DATA","IS_PRIVATE_POST","USER_NO_PRIVILEGE","BC_UN_BIND_ACCOUNT","BC_NO_VIDEO_RIGHT","BC_NO_VALID_BIND_ACCOUNT","BC_NO_LIVE_RIGHT","selectedWordId","transformedTitle","trim","selectedWordList","wordId","word","lexiconID","replace","DPA_WORD_PATTERN_LEFT","DPA_WORD_PATTERN_RIGHT","NORMAL_AD_SOURCES_REVERSE_MAP","TEMPLATE","getAdTypeByDetail","CAROUSEL_IMAGE_MODE","obj","isDpaImgMode","IMAGE_I18N_SQUARE","getAdSourceByDetail","origin","materialIds","restProp","exchangeCarouselImageAdDetail","isSourceTargetEmpty","setHistoryIdentityData","canEdit","AUTH_CODE_USER","profile_image","addIdentity","identity_info","len","setShopAdsIdentityData","getIdentityInfo","getIdentityStatus","attachId","getEditAidOrCid","respByAttachUser","isAvailableStatus","isBCIdentity","bcIdentityPreCond","isLiveShopping","State","isVideoShopping","canBcIdentityUseVideo","canBcIdentityUseLive","getIdentityPermissionInfo","isNoVideoPowerForBcIdentity","isNoVideoInfo","isBCAvailableStatus","isCallByShopAds","isTTBAIdentityNativeAd","isBCAuthIdentityNativeAd","newAdDetail","historyDetail","VIDEO_TYPE_3","DARK_POST_STATUS_MAP","OFF","SET_CREATIVE_PREVIEW_INDEX","creativePreviewIndex","sha1Key","SET_APP_TYPES","SET_SELECTED_FORM","INIT_ADS","activeSplitTestTab","SET_IS_NEW_STRUCTURE","SET_ADS","ADD_SPLIT_TEST_UNIT","SPLIT_TEST_UNIT","tabIndex","TRANSFORM_ALL_AD_CTA","transformer","cta","handleSourceTarget","handleAdsUnit","transformed","transformDetail2Ad","newAds","UPDATE_AD_SOURCE","UPDATE_AD_TYPE","CHANGE_AD_PROPERTY_BY_AD_SOURCE","CHANGE_CAROUSEL_IMAGE_AD_IMAGE_PROPERTY","imageIndex","SET_AD_COPY_NUMBER","SET_SHOULD_QC_OPTIMIZATION_TOOLS_TIPS_SHOW","shouldQcOptimizeToolsTipsShow","realTimePrecheckSuggtions","SET_HAS_INTO_AD","hasIntoAd","precheckSummary","SET_PRODUCT_VIDEO_AND_NO_VIDEO_PKG","isNoVideoPkgWarnTipShow","SET_NO_PRODUCT_VIDEO_AND_NO_VIDEO_PKG","isCurrentProductSetCannotPreview","SET_IS_PRODUCT_SET_NO_PRODUCT","isProductSetNoProduct","SET_CHANGE_VIDEO_PKG_BTN_LOADING","isChangeVideoPkgBtnLoading","supportBsZefrCountryList","supportBsIasCountryList","supportBsDvCountryList","hasZefrAuthority","hasBsIasAuthority","hasBsDvAuthority","loadingPromotionDetail","bindAccountData","SET_SHOP_AUTHORIZATION_STATE","SET_SHOP_AUTHORIZATION_CHECKING","shopAuthorizationChecking","SET_SHOP_ADS_HAS_PERMISSION","shopAdsHasPermission","SET_SHOP_PRODUCTS_NUM_IS_VALID","shopProductsNumIsValid","pop","adInfoBase","coverUri","newAd","existedUids","DELETE_VIDEO_RENDER_TASK_BY_TASK_ID","SET_IDENTITY_INFO_BY_AD_TYPE","currentType","currentAdDetail","SET_IS_SHOP_ADS_LIVE_SCENARIO","creatives","SET_FROM_LIBRARY_VID_LIST","fromLibraryVid","SET_FROM_LIBRARY_CARD_ID_LIST","fromLibraryCardId","SET_FROM_LIBRARY_PAGE_ID_LIST","fromLibraryPageId","SET_IDENTITY_EMPTY","identityEmpty","externalType","EXTERNAL_TYPE","isAndroidAndSpecCountry","newCreationData","isAndroidApp","deeplinkNotAllCountryListCode","isCountryInNotAllow","creationData","newCreativeData","fallBackTypeEnum","fallbackWeb","landing_page_type","resetCreativeDataInTraffic","resetCreativeDataInConversion","isReTarget","RETARGET","isWebsiteType","resetCreativeDataInDpa","OptimizeGoal","fans","default","resetCreativeDataEngagement","resetCreativeDataReachAndVV","isDeeplinkWhite","isSupportDeeplink","brandPureExposure","DISCLAIMER_DATA","text","SINGLE_VIDEO_TEMPLATE","CUSTOMIZED_IMAGE","isSelected","loadingStorefrontDetail","dpa_products","dpa_preview_products","page_product_configuration","page_preview_url","page_image_url","page_card_format","collectionAdsPageInfo","rejectImageIds","PULL_TT_POST","TTCallToAction","selectedForm","extendsModule","baseForm","moduleKeys","playableCardFormGroup","UPDATE_IS_APPDOWNLOAD","resetPlayable","resetSwitch","openAndSetPlayableUrl","baseFormGroup","playableCreationFormItem","isAvailablePlacement","hasPlayableMaterial","isSupportPanglePlayable","isSupportTikTokPlayable","shouldTikTokPlayableAdsUseable","isAco","creativeMode","PROCEDURAL","baseFormItem","playableSwitch","formItemData4Show","formItemData4Hide","isSplitTestPlayableSame","CHANGE_PLAYABLE_SWITCH","originPlayableSwitch","newPlayableSwitch","UPDATE_PLAYABLE_URL","data2State","base","proceduralCreativeTitleList","proceduralCreativeName","proceduralCreativeCta","proceduralCreativeCreate","proceduralCreativeAppName","proceduralCreativeDefferedDeeplink","proceduralCreativeAvatar","proceduralCreativeTrackingUrl","proceduralCreativeOptimize","proceduralCreativeLibAuth","proceduralCreativeIdentity","showCta","UPDATE_PCD_SHOW_CTA","show","formItemData","UPDATE_PCD_APP_NAME","UPDATE_PCD_SOURCE","UPDATE_PCD_AVATAR","avatarIcon","PAGEIDINIT","CTA_LIST_INIT","TITLE_LIST_INIT","page_list","titleList","ctaList","leadAdsAcoPageList","UPDATE_PCD_LEAD_ADS_ISSIGNPROTOCOL","UPDATE_PCD_LEAD_ADS_SHOW_PRTTOCOLTERMS","UPDATE_PCD_LEAD_ADS_ACO_PAGE_ID","ADD_PCD_ITEM","ADD_PCD_LIST","DELETE_PCD_IMAGE","targetImageIndex","findNth","DELETE_PCD_VIDEO","targetVideoIndex","UPDATE_PCD_VIDEO","newVideo","originVideo","INIT","ADD_PCD_CTA","DELETE_PCD_CTA","CLEAR_PCD_CTA","UPDATE_PCD_CTA","old","reject_reason","UPDATE_PCD_CTA_TYPE","UPDATE_PCD_CTA_ID","ctaId","UPDATE_PCD_OPEN_URL","UPDATE_PCD_DEFFERED_DEEPLINK_IS_OPEN_URL","UPDATE_PCD_DEEPLINK_IS_OPEN_URL","UPDATE_PCD_EXTERNAL_URL","UPDATE_PCD_ENABLE_URL","UPDATE_PCD_FALLBACK_TYPE","pcdIdentityData","UPDATE_PCD_IDENTITY_TYPE","UPDATE_PCD_IDENTITY_ID","UPDATE_PCD_IDENTITY_DATA","identityData2State","initData","UPDATE_PCD_CREATIVE_LIB_AUTH","UPDATE_PCD_AUTO_CREATIVE_NAME","UPDATE_PCD_CREATIVE_NAME","resetAutoName","is_presented_video","presented_video_id_list","UPDATE_PCD_OPTIMIZE","UPDATE_PCD_OPTIMIZE_VIDEO","ADD_PCD_TITLE","ADD_SMART_TEXT_PCD_TITLE","firstBlankTitleIndex","findIndex","hasBlankTitle","smartTextItem","smartTextInfo","DELETE_PCD_TITLE","UPDATE_PCD_TITLE","extraAttr","UPDATE_PCD_TRACK_URL","UPDATE_PCD_DOMAIN","UPDATE_PCD_ACTION_TRACK_URL","UPDATE_PCD_VAST_MOAT","UPDATE_PCD_VAST_DV","UPDATE_PCD_VAST_IAS","UPDATE_PCD_VAST_URL","formGroupMain","activeType","pcdAdStorageKey","UPDATE_ACTIVE_TYPE","SET_PCD_IDENTITY_AUTHORIZATION_STATE","setPcdAd","savePcdAdDraft","loadPcdAdDraft","removePcdAdDraft","removePcdAdData","setPcdAdByCreativeDetail","clone","advanced_creative","overviewData","lifetime","EnumLifetimeType","unchosen","suggestionFilters","hasDedicatedCampaignExist","diagnosisSuggestionNumObj","normal","optimize","shutdown","isDedicatedCampaignExist","isIOS14StatisticWhite","SET_OVERVIEW_DATA","SET_LIFE_TIME","SET_SUGGESTION_FILTERS","SET_DIAGNOSIS_SUGGESTION_NUM_OBJ","SET_DEDICATED_CAMPAIGN","getSuggestionFilters","getDiagnosisSuggestionNum","diagnosisSuggestionNum","getIosWebAlertStatus","getDedicatedCampaignExist","hasDedicatedCampaign","setting_type","setting_dimension","cancelGetDiagnosisConsumption","INITIAL_STATE","adGroupId","suggestionData","consumption","cpc","convert","cpa","cpm","ctr","cost","actionsHistory","cost_conversion_trends","adGroup","diagnosisLoading","smbFirstRequest","libraResult","libraResultIsTrue","resetStore","setSuggestionData","setAdGroup","setLoading","setConsumption","setActionsHistory","SET_SMB_FIRST_REQUEST","SET_LIBRA_RESULT","reloadSuggestionData","getDiagnosisSuggestion","loadConsumptionData","getDiagnosisConsumption","c","initDiagnosisData","getDiagnosisActionHistory","momentWithTZ","accountToday","getTodayByTimezone","daysList","subtract","reverse","trend","date","accumulate_conversion","accumulate_cost","daily_cost","efficientTool","versionObjectiveData","creationType","versionActionType","isCampaignPlanerCreation","CREATION_TYPE","campaignPlaner","isCampaignPlanerCreate","isCampaignPlanerEdit","rfCreationType","SET_CREATION_TYPE","SET_VERSION_ACTION_TYPE","SET_VERSION_OBJECTIVE_DATA","submitCreatePlan","createPlan","submitCreateVersion","createVersion","submitUpdateVersion","updateVersion","getVersionDetail","getVersion","operationLog","notify","payment","transaction","perf","teaAnalyze","tanblock","smbSupport","rf","qualification","diagnosis","shop","popupStatus","video","playable","playableCheck","defaultBaseInfoKey","EnumImageInfo","TIME_FORMAT","stday","defaultImageStatKeys","selectedKeys","currentCustomKey","defaultColKeys","sortState","sortOrder","SORT_ORDER","DECENT","pagination","page","page_count","lifeTime","filterOptions","keyword","placement_id","cost_lower","cost_upper","changeLoading","changeList","changeCustom","changeSortData","switchCustom","columns","changePagination","changeDate","changeFilterOptions","metrics","m_type","MATERIAL_TYPE","IMAGE","is_lifetime","order_field","order_type","page_size","getImageList","material_list","material_infos","material_id","total","EnumVideoInfo","defaultPlayableStatKeys","playable_orientation","country_id","orientation","getPlayableList","new_playable_list","playable_infos","playable_id","defaultVideoStatKeys","keyword_type","LIB_SEARCH_TYPE_ID_MAP","SEARCH_VIDEO_MATERIAL","conversion","conversion_lower","conversion_upper","base_infos","VIDEO","getVideoList","changeHasPlayableMaterial","playable_list","getNewPlayableList","getNativeList","native_list","createNative","native_create","createPlayable","playable_update_name","deleteImage","image_delete","deleteVideo","video_delete","deletePlayable","playable_delete","updateImageName","image_update_name","updateVideoName","video_update_name","updatePlayableName","playableName","playableParameter","playableQrCodePreview","size","formGroup","getCategoryInfo","categoryInfo","getNotifyList","notify_list","getNotifyInfo","getOne","getNotifyConfig","setNotifyConfig","setReaded","read","linkClick","click","cardList","cardInfo","chargeInfo","isChargeInfoLoaded","canDecreaseAmt","amtOpState","hasGotChargeInfo","paymentBalance","paymentTax","paymentStatus","applyInfo","redirect_url","has_permission","thresholdInfo","actual_threshold","has_set_manual_threshold","manual_threshold","max_threshold","min_threshold","threshold_edit_times","thresholdWhiteList","billingShareBanner","billingOwnInfo","paymentSummaryReload","balanceOptimization","new_version","creditInfo","SET_CREDIT_CARD","cards","SET_CARD_INFO","card","SET_CHARGE_INFO","SET_HAS_GOT_CHARGE_INFO","SET_PAYMENT_BALANCE","SET_PAYMENT_TAX","SET_CAN_DECREASE_AMT","canDecrease","SET_AMT_OP_STATE","opState","SET_PAYMENT_STATUS","SET_PAYMENT_APPLYINFO","SET_THRESHOLD_INF0","SET_THRESHOLD_WHITE_LIST","SET_BILLING_SHARE_BANNER","SET_BILLING_SETTING","billing_setting","SET_BILLING_OWN_INFO","SET_PAYMENT_SUMMARY_RELOAD","fn","SET_BALANCE_OPTIMIZATION","SET_CREDIT_INFO","canNotPayReason","can_not_pay_reason","hasContract","has_contract","hasPayment","has_payment","paymentReady","payment_ready","paymethod","isCreditUser","paymethodTypeMap","CREDIT","isCreditline","CREDIT_LINE","taxType","tax_type","isShowBalanceTip","canAmtDialogConfirm","canEditThresholdRole","ref_role","EnumAgentRoleAssigned","ADMIN","STATUS_ENABLE","thresholdMaxEqlMin","managedByBCAndHasFinance","isManagedByBc","billing_managed_by_bc","isBcFinanceEditor","is_billing_bc_finance_editor","bc_id","managedByBcHideFunction","isBillingSwitching","is_in_billing_switching","notHasBcFinanceEditor","notHasBcId","managedByBcAndIsVirtualAccount","bindCard","payNow","getPayNowLink","getCardInfo","getCredit","credit","getDashboardChargeInfo","api","isDashboardApiOptimizeWhite","statistics_charge_info","charge_info","getChargeInfo","getIsUserPaymentStatus","smb_support","get_payment_status","verifyReloadAmount","getChargeTax","getRfBalance","getPaymentTax","balance","getCardBindLink","getBindLink","submitPrepay","subPrePay","getCreditlineQuota","get_creditline_quota","increaseAmtBalance","increase_amt_balance","getDecreaseState","get_decrease_state","decreaseAmtBalance","decrease_amt_balance","getApplyCreditline","apply_creditline","getApplyCreditlineForSelfServe","canApplyMonthlyInvoiceForSelfServe","getSharkPayment","sharkPayment","duration","appInfoObect","event_name","checkHistoryBill","getThreshold","threshold_info","setThreshold","threshold","thresholdSwitch","threshold_switch","getBillingShareBannerInfo","billing_share_banner","setBillingSetting","clearBillingShareBannerInfo","billing_sharing","getBillingOwnInfo","get_billing_owner","console","log","setPaymentSummaryComponent","setCreditInfoBillBalance","billBalance","bill_balance","getBalanceOptimizationABTest","ttam_balance_optimization","splitEnum","batchCustomContent","columnsTemplate","filterTemplate","listQueryConfig","requestStr","lastUpdateTime","error","videoSourceList","haveOperated","lastUpdateTimeMap","statisticsData","statistics","isTotalLoading","SET_PERF_LIST","listObj","SET_BATCH_CUSTOM_CONTENT","SET_BATCH_CUSTOM_CONTENT_BY_KEY","SET_SOURCE_LIST","getPerfList","requestErr","isRequiredCreativeWhite","RequiredTargets","is_attr_required","fetchTotalAsync","isPerfTotalAsyncWhite","haveUVMetrics","mergedData","mergeUVTotalData","freeze","getAccountTodayHMS","checkCacheAndGetList","isPerfListCacheWhite","getSourceList","requiredStatisticList","acc","cur","getDownloadAllowed","getTotalData","requestStamp","filteredUVMetrics","isTotalError","jsonStringify","resetListDataWithTimestamp","finishAsyncRequest","retryTotalRequest","getBatchCustomContentList","customDataList","columnsTemplateData","customContent","BIDDING_CUSMTOM_COLUMN","filterTemplateData","BIDDING_FILTER","listQueryConfigData","BIDDING_STATISTIC_USER_CONFIG","handleUnSupportFilter","canDelete","setPerfOperatedAnchor","popupStatusMap","popupType","POST_INVOICE_CONFIRM","SET_POPUP_STATUS_MAP","fetchPopupStatus","keyArr","getNotificationStatus","initArr","showMap","if_shown","entries","updatePopupStatus","updateNotificationStatus","musicQualification","customerName","paramFormData","starling_namespace","starling_project","category","qualificationCategory","pictures","content_fields","song_name","starling_key","contents","song_id","singer_name","country_codes","authorization_time","copyright_owner","authorization_range","lyricist","composer","authorization_uids","record_company","publisher","commercial_usage","SET_CUSTOMER_NAME","getCustomerName","getUserCustomerName","customer_name","getSongList","PROMOTE_MUSIC_VALIDATE_MAP","AUTHORIZATION_MISSING","songList","countriesString","item_id","validatePromoteMusic","music_infos","authorization_type","MusicCommercialAuthorizationType","NOT_AUTHORIZED","getCreativeAuditDetail","rejectList","reason_type","quailficationRejectReasonType","MUSIC","value_music_map","getQualificationParamsData","submitData","originDate","life_time","img","response","secret_file_id","flattenTreeToMap","VIEW_DATA_ENUM","CAMPAIGN","basicInfoAPI","totalCostAPI","new_total_cost","updateStatusAPI","emitKey","dailyReportAPI","dailyReportKey","breakdownReportAPI","new_breakdown_report_stat","newBreakdownReportAPI","ttp_breakdown_report_stat","breakdownReportKey","downloadAPI","new_promote_download_url","newDownloadAPI","ttp_promote_download_url","searchType","negativeKeywordListAPI","negative_keywords_list","addNegativeKeywordsAPI","add_negative_keywords","modifyNegativeKeywordsAPI","modify_negative_keywords","deleteNegativeKeywordsAPI","delete_negative_keywords","downloadNegativeKeywordsAPI","download_negative_keywords","AD","reportId","reportType","basicInfo","searchBasicInfo","reportAdDetail","totalCost","todayCost","dateRange","audienceMetric","creativeMetric","activeAudienceTab","activeCreativeTab","countriesWithSubRegion","usDmaIds","usStateIds","interestOptionMap","behaviorOptionMap","tableMetricArray","showSearchNegativeTab","reportEnum","enumObj","toUpperCase","isTTPStatisticsApiWhite","dateRangeDays","getDaysDiff","baseInfoRequestParam","isCreativeReportType","search_type","campaign_status","ad_status","sort_stat","sort_order","campaign_category","baseRequestParam","compare","inventory_type","from","isCampaignReportType","isAdReportType","isDedicatedCampaign","isTTPAd","isTTPStatisticsWhite","regionType","TTP","audienceIframeUrl","host","jsonToQuery","upgradedTabs","DAILY","tabCompId","refs","tooltip","SPLITTEST","FREQUENCY","isRFWhite","isProcedualAd","isAcoReportingUpgradeWhite","SEARCH","isSearchAdsMtWhite","isSearchAds","isAlived","isdel","checkIsSearch","campaignPermitSearchEnum","audienceConfig","GENDER_AND_AGE","compId","LOCATION","INTEREST_AND_BEHAVIOR","DEVICE","metricsOptions","effect_note","effect_rate_note","effect_cost_note","rfAppInstallDcDisabled","valueKey","i18n","breakdownStacking","valueFormatter","moneyFormatterWithUnit","integerValueFormatter","isSkan","tip","labelFormatter","percentTextFormatter","percentCellFormatter","disabled","hint","isOnlySupportDaliy","isRFMetrics","noneFormatter","creativeMetricsOptions","isSkanHide","dailyTargetConfig","percentileDivisionFormatMoney","showCurrencyCode","skan_conversion_cost","show_cnt","click_cnt","time_attr_conversion_rate","skan_conversion_rate","skan_convert_cnt","allDailyTargetConfig","targetList","time_attr_effect_cnt","time_attr_effect_cost","time_attr_effect_rate","frequency","show_uv","skan_active","time_attr_active_cost","cost_per_skan_active","skan_active_pay","skan_total_repetitive_active_pay_value","time_attr_total_repetitive_active_pay_value","time_attr_active_pay","labe","time_attr_repetitive_active_pay_roas","searchTargetConfig","SET_TABLE_METRIC_ARRAY","SET_REPORT_ID","SET_REPORT_TYPE","SET_REPORT_INFO","SET_BASIC_INFO","SET_SEARCH_BASIC_INFO","SET_REPORT_AD_DETAIL","SET_TOTAL_COST","SET_TODAY_COST","SET_DATE_RANGE","SET_AUDIENCE_METRIC","SET_AUDIENCE_TAB","SET_ALL_COUNTRIES","SET_INTEREST_MAP","SET_BEHAVIOR_MAP","SET_SHOW_NEGATIVE_TAB","CLEAR_REPORT_STATE","initialState","getBasicInfo","queryList","getSearchBasicInfo","ids","ad_position_type","is_chart","stats","getTodayCost","mToday","getAccountToday","statData","total_cost","getAllCountries","USItem","dma","getInterestOptions","interestMap","inventory","interestOption","ad_interest_list","getBehaviorOptions","behaviorMap","getTemplatesList","aipUrl","isReportingTTAdsWhite","reporting","new_get_templates","get_templates","switchStatus","operation","getMaterialDetail","materialTableInfo","getMaterialStat","estimateData","rf_total_result","rf_daily_result","rf_impression","categories","series","rf_frequency_per_person","stockInfo","rf_predict_impression","rf_predict_reach","rf_predict_cpr","rf_predict_frequency","ad_reach_frequency_buy_type","rfBuyingType","fixedBudget","rf_predict_percentage","rf_estimate_key","rf_estimate_info","buyTypeValues","fixedImpression","fixedReachPercent","fixedReach","isValidTargetingParams","isEditEstimtateChanged","audienceTagsMap","originalRetargetingTags","originalRetargetingTagsExclude","isRfBelow18AgeButtonVisible","draftCreatives","frequencySchedule","buyType","buyTypeValue","budgetThreshold","maxReach","max_uv_mille","impressionThreshold","impressionData","reachThreshold","reachData","uv","reachPercentThreshold","minValue","floor","buyTypeThreshold","minBuyTypeValue","maxBuyTypeValue","outOfValueRange","targetVal","getOriginalTagsByShadow","retargeting_tags_map","tag","getShadowTagsByOriginal","originalTags","AudienceType","INCLUDE","isShadowAudience","getShadowName","shadowId","retargeting_tags_name_map","sKey","SET_STOCK_INFO","fields","hasOwnProperty","call","SET_ESTIMATE_INFO","SET_BUYTYPE_VALUE","INIT_RF_INFO","SET_VALIDATE_TARGETING_PARAMS_STATUS","SET_RF_BELOW18AGEBUTTONVISIBLE","SET_RF_ISEDITESTIMATECHANGED","SET_RF_ORIGINALAUDIENCETAGS","SET_RF_ORIGINALAUDIENCETAGS_EXCLUDE","SET_RF_AUDIENCETAGMAP","SET_RF_DRAFTCREATIVES","SET_RF_FREQUENCY","SET_RF_FREQUENCY_SCHEDULE","setRfBelow18AgeButtonVisible","SET_ESTIMATE_LOADING","selectedSpuId","shopInfo","selectedSpuList","hasMagellanShop","shopId","shopType","shopCountry","SET_SHOP_INFO","SET_SELECTED_SPU_ID","spuId","SET_SELECTED_SPU_LIST","spuList","SET_HAS_MAGELLAN_SHOP","getUserHasMagellanShop","getUserShopCount","ShopType","ecommShop","shopCount","hasFetchedAb","payment_sdk_integration_v2","payment_sdk_skippable","enable_tutorial","enable_new_guide","enable_1v1","hide_manual_pay","SET_HAS_FETCHED_AB","SET_NEW_CUSTOMER","SET_PAYMENT_SDK_ABTESTS","SET_PAYMENT_CHANGE_ABTEST","getPaymentChangeABTest","exclude_app_package_id","blockedAppList","setAppid","setBlockedAppList","tanCreate","tanGetList","app_list","tanDelete","delete","tanUpdate","tanGetId","idCode","blocked_app_id","startData","action_ad_level","create_mode","finishData","from_url_path","finish_type","start_point","duration_campaign","duration_ad_group","duration_ad","campaign_objective","edit_time","commitStartData","commitFinishData","commitClearFinishData","setStartData","setFinishData","clearFinishData","allLogList","campaignLogList","adgroupLogList","adLogList","conversion_stime","conversion_etime","SET_LOGLIST","logList","SET_REQUESTPARAMS","SET_STARTTIME","SET_ENDTIME","SET_LIFETIME","SET_CONVERSIONSTARTTIME","SET_CONVERSIONENDTIME","getLogList","logs","queryToJson","UI_DATE_FORMAT","FULL_DAY_FORMAT","MONTH_FORMAT","getParams","isDownLoad","allDeposit","allTransfer","transactions","monthsData","listLoading","invoiceLoading","listExporting","transactionType","defaultFilters","dateType","newTransactionListLoading","newTransactionCostsListLoading","newTransactionDownloadLoading","newTransactionPaymentsLoading","summaryData","summaryDataMap","campaignCosts","payments","promotions","adjustments","costsPagination","newTransactionTypeMap","paymentsTypeMap","amount","costs","tax","currentTabType","transactionTabType","SET_TRANSACTION_DATA","charge_total","monthly_stat","cost_total","tax_total","SET_TRANSACTION_LIST_LOADING","SET_INVOICE_LOADING","SET_TRANSACTION_LIST_EXPORTING","isExporting","SET_TRANSACTION_TYPE","SET_TRANSACTION_DATE_TYPE","SET_NEW_TRANSACTION_LIST_REQUEST_PARAMS","SET_NEW_TRANSACTION_COST_PAGINATION_PARAMS","SET_NEW_TRANSACTION_LIST_LOADING","SET_NEW_TRANSACTION_COSTS_LIST_LOADING","SET_NEW_TRANSACTION_DOWNLOAD_LOADING","SET_NEW_TRANSACTION_PAYMENTS_LOADING","SET_NEW_TRANSACTION_SUMMARY_DATA","SET_NEW_TRANSACTION_LIST_DATA","subType","SET_NEW_TRANSACTION_CURRENT_TAB_TYPE","queryDate","currentMonthMo","currentEndDate","currentMonth","month","lastMonthMo","last3MonthMo","last6MonthMo","currentYearMo","startOf","last12MonthMo","allTimeMo","dateTypesMap","CURRENT_MONTH","startDate","endDate","PREVIOUS_MONTH","endOf","LAST_3_MONTH","LAST_6_MONTH","THIS_YEAR","LAST_12_MONTH","ALL_TIME","monthRange","transaction_date","end","endYearMonth","isBefore","daysInMonth","unshift","yearMonth","year","days","startDay","endDay","transactionData","transMap","monthData","chargeTotal","costTotal","taxTotal","items","paymentsData","promotionsData","adjustmentsData","costsData","taxData","pageNoDataConfig","disabledDownload","getInvoice","failureCheckFunc","responseObj","Message","new_invoice","getTransactions","waitTime","transactionList","query_types","exportTransactions","transactionExport","newExport","transactionDownload","newDownLoad","getPaymentsList","paymentsList","top_up_count","promotions_count","adjustments_count","top_up_amount","promotions_amount","adjustments_amount","paymentsDataMap","transactionStatusMap","pending","handling","transaction_status","processing","transaction_type","getCostsList","costsList","getTaxList","taxList","tax_amount","getNewTransactionList","downloadReport","isPayments","downloadApi","new_run_reporting_download_url","exportApi","tasks","isGetFileUrl","refundInfo","SET_USER_REFUND_INFO","setPromotion","promotion","checkInvite","selfInvite","postSurvey","getRefundStatus","refund_status","getRefundBalance","submitRefundAndCloseAccount","submit","SET_LANG_CHANGE","SET_ALARM_SHOW","bool","isShowAlarm","SET_ADBLOCK_ALERT","showAdblockAlert","SET_VISIT_LITE","showVisitLiteTips","SET_NOTIFY_ALERT","isShowDemoteNotify","SET_TTP_NOTIFY_ALERT","isShowTTPDemoteNotify","SET_IS_ATHENA_CALLER_READY","isAthenaCallerReady","SET_HAS_ATHENA_CALLER","hasAthenaCaller","SET_HAS_ATHENA_CALLER_CHECK_COMPLETED","hasAthenaCallerCheckCompleted","getVisitLiteFlag","eventUuid","qs","search","ignoreQueryPrefix","creation_uuid","STATE_MAP","EVENT_MAP","focus","blur","TeaInstance","this","Tracker","Collector","ABTracker","DataFinder","baseConfig","channel","_staging_flag","isBOE","disable_ssid","disable_webid","disable_sdk_monitor","disable_storage","disable_auto_pv","autotrack","custom","reportTime","isStart","_init","setTrackConfig","setABTrackConfig","setDataFinderConfig","loginInfo","coreUser","event","adv_id","predefinePageView","getUserParams","adv","getAdvParams","bases","getBaseConfig","log_in","isLogin","user_type_name","user_type","uiVersion","webid","Cookie","user_id","user_unique_id","queuedEventsBeforeLogin","first_industry","second_industry","user_id_str","user_mail","user_name","username","adv_email","adv_role","adv_name","project_version","app_timezone","app_region","init","channel_domain","app_language","attrLog","AutoAttrTracker","allowEventTypes","debounceWaitTime","exposeTime","exposePercent","refreshObserverTime","eventParams","eventType","create_flow_event_time_type","TeaPlugin","tracker","installed","install","initConf","vueRouter","ignoredViews","fromUrl","initRouterGuard","view","toLowerCase","afterEach","to","fullPath","url_path","from_url","from_name","trackView","bind","$tea"],"sourceRoot":""}