wjx 1 هفته پیش
والد
کامیت
8da43944d6

+ 121 - 113
src/pages/iaaData/const.tsx

@@ -4,123 +4,123 @@ import moment from "moment";
 
 /** 出价方式 */
 export enum BID_MODE_ENUM {
-    BID_MODE_OCPM = 'oCPM',
-    BID_MODE_CPM = 'CPM',
-    BID_MODE_CPC = 'CPC',
-    BID_MODE_CPA = 'CPA',
-    BID_MODE_OCPC = 'oCPC',
+	BID_MODE_OCPM = 'oCPM',
+	BID_MODE_CPM = 'CPM',
+	BID_MODE_CPC = 'CPC',
+	BID_MODE_CPA = 'CPA',
+	BID_MODE_OCPC = 'oCPC',
 }
 
 /**广告状态*/
 export enum AD_STATUS_ENUM {
-    ADGROUP_STATUS_FROZEN = '已冻结',
-    ADGROUP_STATUS_SUSPEND = '暂停中',
-    ADGROUP_STATUS_NOT_IN_DELIVERY_TIME = '广告未到投放时间',
-    ADGROUP_STATUS_ACTIVE = '投放中',
-    ADGROUP_STATUS_DELETED = '已删除',
-    ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH = '账户余额不足',
-    ADGROUP_STATUS_DAILY_BUDGET_REACHED = '广告达到日预算上限',
-    ADGROUP_STATUS_PARTIAL_ACTIVE = '部分投放中',
-    ADGROUP_STATUS_WECHAT_CHANNELS_STOP = '投放结束(直播结束)',
-    ADGROUP_STATUS_CREATIVE_STATUS_PENDING = '创意未投放',
-    ADGROUP_STATUS_CREATIVE_EMPTY = '创意准备中',
-    ADGROUP_STATUS_JOINT_BUDGET_REACHED = '广告被暂停(联合预算达上限)',
-    ADGROUP_STATUS_TOTAL_BUDGET_REACHED = '广告达到总预算上限',
-    ADGROUP_STATUS_PRE_LOCK = '待锁定预算',
-    ADGROUP_STATUS_UNLOCKING = '解锁预算中',
-    ADGROUP_STATUS_STOP = '投放结束',
+	ADGROUP_STATUS_FROZEN = '已冻结',
+	ADGROUP_STATUS_SUSPEND = '暂停中',
+	ADGROUP_STATUS_NOT_IN_DELIVERY_TIME = '广告未到投放时间',
+	ADGROUP_STATUS_ACTIVE = '投放中',
+	ADGROUP_STATUS_DELETED = '已删除',
+	ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH = '账户余额不足',
+	ADGROUP_STATUS_DAILY_BUDGET_REACHED = '广告达到日预算上限',
+	ADGROUP_STATUS_PARTIAL_ACTIVE = '部分投放中',
+	ADGROUP_STATUS_WECHAT_CHANNELS_STOP = '投放结束(直播结束)',
+	ADGROUP_STATUS_CREATIVE_STATUS_PENDING = '创意未投放',
+	ADGROUP_STATUS_CREATIVE_EMPTY = '创意准备中',
+	ADGROUP_STATUS_JOINT_BUDGET_REACHED = '广告被暂停(联合预算达上限)',
+	ADGROUP_STATUS_TOTAL_BUDGET_REACHED = '广告达到总预算上限',
+	ADGROUP_STATUS_PRE_LOCK = '待锁定预算',
+	ADGROUP_STATUS_UNLOCKING = '解锁预算中',
+	ADGROUP_STATUS_STOP = '投放结束',
 }
 
 
 /** 业务类型 */
 export enum PRODUCT_TYPE_ENUM {
-    PRODUCT_TYPE_GAME = '游戏业务',
-    PRODUCT_TYPE_NOVEL = '小说业务',
-    PRODUCT_TYPE_PLAYLET = '短剧业务',
+	PRODUCT_TYPE_GAME = '游戏业务',
+	PRODUCT_TYPE_NOVEL = '小说业务',
+	PRODUCT_TYPE_PLAYLET = '短剧业务',
 }
 
 
 /**********************头条*************************/
 /** 广告状态 */
 export const ADSTATUSEnum = {
-    'NOT_DELETED': <Badge color={'cyan'} text='不限' />,
-    'ALL': <Badge color={'cyan'} text='不限(包含已删除)' />,
-    'OK': <Badge status="processing" text='投放中' />,
-    'DELETED': <Badge status="error" text='已删除' />,
-    'PROJECT_OFFLINE_BUDGET': <Badge status="error" text='项目超出预算' />,
-    'PROJECT_PREOFFLINE_BUDGET': <Badge status="warning" text='项目接近预算' />,
-    'TIME_NO_REACH': <Badge color={'purple'} text='未到达投放时间' />,
-    'TIME_DONE': <Badge status="success" text='已完成' />,
-    'NO_SCHEDULE': <Badge color={'volcano'} text='不在投放时段' />,
-    'AUDIT': <Badge status="success" text='新建审核中' />,
-    'REAUDIT': <Badge status="success" text='修改审核中' />,
-    'FROZEN': <Badge status="error" text='已终止' />,
-    'AUDIT_DENY': <Badge status="error" text='审核不通过' />,
-    'OFFLINE_BUDGET': <Badge status="error" text='广告超出预算' />,
-    'OFFLINE_BALANCE': <Badge status="error" text='账户余额不足' />,
-    'PREOFFLINE_BUDGET': <Badge status="warning" text='广告接近预算' />,
-    'DISABLED': <Badge status="default" text='已暂停' />,
-    'PROJECT_DISABLED': <Badge status="default" text='已被项目暂停' />,
-    'LIVE_ROOM_OFF': '关联直播间不可投',
-    'PRODUCT_OFFLINE': '关联商品不可投',
-    'AWEME_ACCOUNT_DISABLED': '关联抖音账号不可投',
-    'AWEME_ANCHOR_DISABLED': '锚点不可投',
-    'DISABLE_BY_QUOTA': <Badge status="default" text='已暂停(配额达限)' />,
-    'CREATE': <Badge status="default" text='新建' />,
-    'ADVERTISER_OFFLINE_BUDGET': <Badge status="error" text='账号超出预算' />,
-    'ADVERTISER_PREOFFLINE_BUDGET': <Badge status="warning" text='账号接近预算' />
+	'NOT_DELETED': <Badge color={'cyan'} text='不限' />,
+	'ALL': <Badge color={'cyan'} text='不限(包含已删除)' />,
+	'OK': <Badge status="processing" text='投放中' />,
+	'DELETED': <Badge status="error" text='已删除' />,
+	'PROJECT_OFFLINE_BUDGET': <Badge status="error" text='项目超出预算' />,
+	'PROJECT_PREOFFLINE_BUDGET': <Badge status="warning" text='项目接近预算' />,
+	'TIME_NO_REACH': <Badge color={'purple'} text='未到达投放时间' />,
+	'TIME_DONE': <Badge status="success" text='已完成' />,
+	'NO_SCHEDULE': <Badge color={'volcano'} text='不在投放时段' />,
+	'AUDIT': <Badge status="success" text='新建审核中' />,
+	'REAUDIT': <Badge status="success" text='修改审核中' />,
+	'FROZEN': <Badge status="error" text='已终止' />,
+	'AUDIT_DENY': <Badge status="error" text='审核不通过' />,
+	'OFFLINE_BUDGET': <Badge status="error" text='广告超出预算' />,
+	'OFFLINE_BALANCE': <Badge status="error" text='账户余额不足' />,
+	'PREOFFLINE_BUDGET': <Badge status="warning" text='广告接近预算' />,
+	'DISABLED': <Badge status="default" text='已暂停' />,
+	'PROJECT_DISABLED': <Badge status="default" text='已被项目暂停' />,
+	'LIVE_ROOM_OFF': '关联直播间不可投',
+	'PRODUCT_OFFLINE': '关联商品不可投',
+	'AWEME_ACCOUNT_DISABLED': '关联抖音账号不可投',
+	'AWEME_ANCHOR_DISABLED': '锚点不可投',
+	'DISABLE_BY_QUOTA': <Badge status="default" text='已暂停(配额达限)' />,
+	'CREATE': <Badge status="default" text='新建' />,
+	'ADVERTISER_OFFLINE_BUDGET': <Badge status="error" text='账号超出预算' />,
+	'ADVERTISER_PREOFFLINE_BUDGET': <Badge status="warning" text='账号接近预算' />
 }
 
 /** 项目状态 */
 export const PROJECTSTATUs = {
-    PROJECT_STATUS_ENABLE: '启用',
-    PROJECT_STATUS_DISABLE: '暂停',
-    PROJECT_STATUS_DELETE: '删除',
-    PROJECT_STATUS_ALL: '所有包含已删除',
-    PROJECT_STATUS_NOT_DELETE: '所有不包含已删除',
-    PROJECT_STATUS_BUDGET_EXCEED: '项目超出预算',
-    PROJECT_STATUS_BUDGET_PRE_OFFLINE_BUDGET: '项目接近预算',
-    PROJECT_STATUS_NOT_START: '未达投放时间',
-    PROJECT_STATUS_DONE: '已完成',
-    PROJECT_STATUS_NO_SCHEDULE: '不在投放时段'
+	PROJECT_STATUS_ENABLE: '启用',
+	PROJECT_STATUS_DISABLE: '暂停',
+	PROJECT_STATUS_DELETE: '删除',
+	PROJECT_STATUS_ALL: '所有包含已删除',
+	PROJECT_STATUS_NOT_DELETE: '所有不包含已删除',
+	PROJECT_STATUS_BUDGET_EXCEED: '项目超出预算',
+	PROJECT_STATUS_BUDGET_PRE_OFFLINE_BUDGET: '项目接近预算',
+	PROJECT_STATUS_NOT_START: '未达投放时间',
+	PROJECT_STATUS_DONE: '已完成',
+	PROJECT_STATUS_NO_SCHEDULE: '不在投放时段'
 }
 
 /** 推广目标 */
 export const LANDINGTYPE = {
-    APP: '应用推广',
-    LINK: '销售线索推广',
-    MICRO_GAME: '小程序',
-    QUICK_APP: '快应用'
+	APP: '应用推广',
+	LINK: '销售线索推广',
+	MICRO_GAME: '小程序',
+	QUICK_APP: '快应用'
 }
 
 
 /** 出价方式 */
 export enum PRICINGEnum {
-    PRICING_CPC = 'CPC(点击付费)',
-    PRICING_CPM = 'CPM(展示付费)',
-    PRICING_OCPC = 'OCPC(已下线)',
-    PRICING_OCPM = 'OCPM(转化量付费)',
-    PRICING_CPV = 'CPV',
-    PRICING_CPA = 'CPA(已下线)',
-    PRICING_CPC_OCPM = 'CPC - OCPM两阶段出价(仅搜索广告可用)'
+	PRICING_CPC = 'CPC(点击付费)',
+	PRICING_CPM = 'CPM(展示付费)',
+	PRICING_OCPC = 'OCPC(已下线)',
+	PRICING_OCPM = 'OCPM(转化量付费)',
+	PRICING_CPV = 'CPV',
+	PRICING_CPA = 'CPA(已下线)',
+	PRICING_CPC_OCPM = 'CPC - OCPM两阶段出价(仅搜索广告可用)'
 }
 
 /** 营销目的 */
 export enum MARKETING_GOAL_ENUM {
-    MARKETING_GOAL_PRODUCT_SALES = '商品销售',
-    MARKETING_GOAL_LEAD_RETENTION = '线索留资',
-    MARKETING_GOAL_USER_GROWTH = '用户增长',
-    MARKETING_GOAL_BRAND_PROMOTION = '品牌宣传',
-    MARKETING_GOAL_INCREASE_FANS_INTERACTION = '加粉互动'
+	MARKETING_GOAL_PRODUCT_SALES = '商品销售',
+	MARKETING_GOAL_LEAD_RETENTION = '线索留资',
+	MARKETING_GOAL_USER_GROWTH = '用户增长',
+	MARKETING_GOAL_BRAND_PROMOTION = '品牌宣传',
+	MARKETING_GOAL_INCREASE_FANS_INTERACTION = '加粉互动'
 }
 
 /** 推广内容资产类型 */
 export enum MARKETING_TARGET_TYPE_ENUM {
-    MARKETING_TARGET_TYPE_FICTION = '小说',
-    MARKETING_TARGET_TYPE_WECHAT_OFFICIAL_ACCOUNT = '微信公众号',
-    MARKETING_TARGET_TYPE_SHORT_DRAMA = '短剧',
-    MARKETING_TARGET_TYPE_MINI_PROGRAM_WECHAT = '微信小程序',
-    MARKETING_TARGET_TYPE_WECHAT_WORK = '企业微信'
+	MARKETING_TARGET_TYPE_FICTION = '小说',
+	MARKETING_TARGET_TYPE_WECHAT_OFFICIAL_ACCOUNT = '微信公众号',
+	MARKETING_TARGET_TYPE_SHORT_DRAMA = '短剧',
+	MARKETING_TARGET_TYPE_MINI_PROGRAM_WECHAT = '微信小程序',
+	MARKETING_TARGET_TYPE_WECHAT_WORK = '企业微信'
 }
 
 /** 成本保障状态 */
@@ -136,18 +136,18 @@ export enum COST_GUARANTEE_STATUS_ENUM {
 
 /**广告组推广目标类型*/
 export enum PromotedObjectType {
-    PROMOTED_OBJECT_TYPE_WECHAT_OFFICIAL_ACCOUNT = '微信公众号',
-    PROMOTED_OBJECT_TYPE_LEAD_AD = '销售线索',
-    PROMOTED_OBJECT_TYPE_LINK = '网页',
-    PROMOTED_OBJECT_TYPE_LINK_WECHAT = '品牌网页',
-    PROMOTED_OBJECT_TYPE_ECOMMERCE = '商品推广',
-    PROMOTED_OBJECT_TYPE_APP_ANDROID = 'Android应用',
-    PROMOTED_OBJECT_TYPE_APP_IOS = 'IOS应用',
-    PROMOTED_OBJECT_TYPE_APP_ANDROID_MYAPP = '应用宝推广',
-    PROMOTED_OBJECT_TYPE_APP_ANDROID_UNION = 'Android应用(优量汇推广)',
-    PROMOTED_OBJECT_TYPE_LOCAL_ADS_WECHAT = '本地门店',
-    PROMOTED_OBJECT_TYPE_QQ_BROWSER_MINI_PROGRAM = 'QQ浏览器小程序',
-    PROMOTED_OBJECT_TYPE_QQ_MESSAGE = 'QQ消息',
+	PROMOTED_OBJECT_TYPE_WECHAT_OFFICIAL_ACCOUNT = '微信公众号',
+	PROMOTED_OBJECT_TYPE_LEAD_AD = '销售线索',
+	PROMOTED_OBJECT_TYPE_LINK = '网页',
+	PROMOTED_OBJECT_TYPE_LINK_WECHAT = '品牌网页',
+	PROMOTED_OBJECT_TYPE_ECOMMERCE = '商品推广',
+	PROMOTED_OBJECT_TYPE_APP_ANDROID = 'Android应用',
+	PROMOTED_OBJECT_TYPE_APP_IOS = 'IOS应用',
+	PROMOTED_OBJECT_TYPE_APP_ANDROID_MYAPP = '应用宝推广',
+	PROMOTED_OBJECT_TYPE_APP_ANDROID_UNION = 'Android应用(优量汇推广)',
+	PROMOTED_OBJECT_TYPE_LOCAL_ADS_WECHAT = '本地门店',
+	PROMOTED_OBJECT_TYPE_QQ_BROWSER_MINI_PROGRAM = 'QQ浏览器小程序',
+	PROMOTED_OBJECT_TYPE_QQ_MESSAGE = 'QQ消息',
 }
 
 /** 广告优化目标类型 */
@@ -262,40 +262,48 @@ export enum SMART_BID_TYPE_ENUM {
 
 /** 广告状态 */
 export const ADGROUP_STATUS = {
-    'ADGROUP_STATUS_FROZEN': <Badge status="warning" text={<span style={{ fontSize: 12 }}>已冻结</span>}/>,
-    'ADGROUP_STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>暂停中</span>}/>,
-    'ADGROUP_STATUS_NOT_IN_DELIVERY_TIME': <Badge status="default" text={<span style={{ fontSize: 12 }}>未到投放时间</span>}/>,
-    'ADGROUP_STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中</span>}/>,
-    'ADGROUP_STATUS_DELETED': <Badge status="error" text={<span style={{ fontSize: 12 }}>已删除</span>}/>,
-    'ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>}/>,
-    'ADGROUP_STATUS_DAILY_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告达到日预算上限</span>}/>,
-    'ADGROUP_STATUS_PARTIAL_ACTIVE': <Badge status="warning" text={<span style={{ fontSize: 12 }}>部分投放中</span>}/>,
-    'ADGROUP_STATUS_CREATIVE_STATUS_PENDING': <Badge status="warning" text={<span style={{ fontSize: 12 }}>创意未投放</span>}/>,
-    'ADGROUP_STATUS_CREATIVE_EMPTY': <Badge status="warning" text={<span style={{ fontSize: 12 }}>创意准备中</span>}/>,
-    'ADGROUP_STATUS_JOINT_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告被暂停</span>}/>,
-    'ADGROUP_STATUS_TOTAL_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告达到总预算上限</span>}/>,
+	'ADGROUP_STATUS_FROZEN': <Badge status="warning" text={<span style={{ fontSize: 12 }}>已冻结</span>} />,
+	'ADGROUP_STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>暂停中</span>} />,
+	'ADGROUP_STATUS_NOT_IN_DELIVERY_TIME': <Badge status="default" text={<span style={{ fontSize: 12 }}>未到投放时间</span>} />,
+	'ADGROUP_STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中</span>} />,
+	'ADGROUP_STATUS_DELETED': <Badge status="error" text={<span style={{ fontSize: 12 }}>已删除</span>} />,
+	'ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
+	'ADGROUP_STATUS_DAILY_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告达到日预算上限</span>} />,
+	'ADGROUP_STATUS_PARTIAL_ACTIVE': <Badge status="warning" text={<span style={{ fontSize: 12 }}>部分投放中</span>} />,
+	'ADGROUP_STATUS_CREATIVE_STATUS_PENDING': <Badge status="warning" text={<span style={{ fontSize: 12 }}>创意未投放</span>} />,
+	'ADGROUP_STATUS_CREATIVE_EMPTY': <Badge status="warning" text={<span style={{ fontSize: 12 }}>创意准备中</span>} />,
+	'ADGROUP_STATUS_JOINT_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告被暂停</span>} />,
+	'ADGROUP_STATUS_TOTAL_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>广告达到总预算上限</span>} />,
+	'SMART_ADGROUP_STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>已暂停(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_USING': <Badge status="processing" text={<span style={{ fontSize: 12 }}>项目启用中(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_ADGROUP_STATUS_STOP': '投放结束(智投)',
+	'SMART_ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_JOINT_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>项目被暂停(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_DAILY_BUDGET_REACHED': <Badge status="error" text={<span style={{ fontSize: 12 }}>项目日预算到达上限(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_NOT_IN_DELIVERY_TIME': <Badge status="default" text={<span style={{ fontSize: 12 }}>未到投放时间(智投)</span>} />,
+	'SMART_ADGROUP_STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中(智投)</span>} />
 }
 
 /**
  * 业务单元类型
  */
 export enum AdUnitType_Enum {
-    NOVEL = '小说',
-    NOVEL_IAA = '小说IAA',
-    GAME = '游戏',
-    GAME_IAA = '游戏IAA',
-    SHOP = '电商'
+	NOVEL = '小说',
+	NOVEL_IAA = '小说IAA',
+	GAME = '游戏',
+	GAME_IAA = '游戏IAA',
+	SHOP = '电商'
 }
 
 /** 创意形式匹配方式 */
 export enum DYNAMIC_CREATIVE_TYPE {
-    DYNAMIC_CREATIVE_TYPE_COMMON = '手动指定',
-    DYNAMIC_CREATIVE_TYPE_PROGRAM = '自动匹配'
+	DYNAMIC_CREATIVE_TYPE_COMMON = '手动指定',
+	DYNAMIC_CREATIVE_TYPE_PROGRAM = '自动匹配'
 }
 
 
 export function getTimeSeriesList() {
-    return new Array(7 * 24 * 2).fill('1');
+	return new Array(7 * 24 * 2).fill('1');
 }
 
 const [_, ...rest] = moment.weekdays();

+ 77 - 0
src/pages/iaaData/novel/tencent/adList/const.tsx

@@ -20,6 +20,14 @@ export const ADSTATUSEnum = {
     'STATUS_ACTIVE_ACCOUNT_EMPTY': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
     'STATUS_ACTIVE_ACCOUNT_FROZEN': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足</span>} />,
     'STATUS_ACTIVE_AD_LIMIT': <Badge status="error" text={<span style={{ fontSize: 12 }}>广告达日限额(预算不足)</span>} />,
+    'SMART_ADGROUP_STATUS_SUSPEND': <Badge status="warning" text={<span style={{ fontSize: 12 }}>已暂停(智投)</span>} />,
+    'SMART_ADGROUP_STATUS_USING': <Badge status="processing" text={<span style={{ fontSize: 12 }}>项目启用中(智投)</span>} />,
+    'SMART_ADGROUP_STATUS_ADGROUP_STATUS_STOP': '投放结束(智投)',
+    'SMART_ADGROUP_STATUS_ACCOUNT_BALANCE_NOT_ENOUGH': <Badge status="warning" text={<span style={{ fontSize: 12 }}>账户余额不足(智投)</span>} />,
+    'SMART_ADGROUP_STATUS_JOINT_BUDGET_REACHED': <Badge status="warning" text={<span style={{ fontSize: 12 }}>项目被暂停(智投)</span>} />,
+    'SMART_ADGROUP_STATUS_DAILY_BUDGET_REACHED': <Badge status="error" text={<span style={{ fontSize: 12 }}>项目日预算到达上限(智投)</span>} />,
+    'SMART_ADGROUP_STATUS_NOT_IN_DELIVERY_TIME': '未到投放时间(智投)',
+    'SMART_ADGROUP_STATUS_ACTIVE': <Badge status="processing" text={<span style={{ fontSize: 12 }}>投放中(智投)</span>} />
 }
 
 /** 出价方式 */
@@ -58,4 +66,73 @@ export enum AUTO_ACQUISTION_STATUS {
     AUTO_ACQUISTION_STATUS_SUSPEND_ON_LEARNING_FAIL="起量中止(探索过程中,因广告起量情况太差,从而探索中止)",
     AUTO_ACQUISTION_STATUS_SUSPEND_ON_PLAYING_FAIL="起量中止(探索过程中,因广告无法播放,从而起量中止(包括广告主动或被动下线或 timeset 不连续))",
     AUTO_ACQUISTION_STATUS_ADVERTISER_CLOSED="广告主主动关闭一键起量功能"
+}
+
+
+/** 投放目标值 */
+export const SMART_DELIVERY_GOAL_ENUM = {
+	FICTION_FOLLOW_PURCHASE_ROI: {
+		title: '关注和首日付费ROI',
+		smartDeliveryGoalSpecName: 'fictionFollowPurchaseRoiSpec',
+		deepWorthOptimizationGoal: 'GOAL_1DAY_PURCHASE_ROAS',
+		optimizationGoal: 'OPTIMIZATIONGOAL_FOLLOW',
+		smartDeliveryGoalSpec: [
+			{
+				"field_name": "followCost",
+				"title": "关注成本",
+				"unitTips": "元/关注"
+			},
+			{
+				"field_name": "firstDayPurchaseRoi",
+				"title": "首日付费ROI",
+			}
+		]
+	},
+	FICTION_REGISTER_PURCHASE_ROI: {
+		title: '注册和首日付费ROI',
+		smartDeliveryGoalSpecName: 'fictionRegisterPurchaseRoiSpec',
+		deepWorthOptimizationGoal: 'GOAL_1DAY_PURCHASE_ROAS',
+		optimizationGoal: 'OPTIMIZATIONGOAL_APP_REGISTER',
+		smartDeliveryGoalSpec: [
+			{
+				"field_name": "registerCost",
+				"title": "注册成本",
+				"unitTips": "元/关注"
+			},
+			{
+				"field_name": "firstDayPurchaseRoi",
+				"title": "首日付费ROI",
+			}
+		]
+	},
+	FICTION_REGISTER_MONETIZATION_ROI: {
+		title: '注册和首日变现ROI',
+		smartDeliveryGoalSpecName: 'fictionRegisterMonetizationRoiSpec',
+		deepWorthOptimizationGoal: 'GOAL_1DAY_MONETIZATION_ROAS',
+		optimizationGoal: 'OPTIMIZATIONGOAL_APP_REGISTER',
+		smartDeliveryGoalSpec: [
+			{
+				"field_name": "registerCost",
+				"title": "注册成本",
+				"unitTips": "元/关注"
+			},
+			{
+				"field_name": "firstDayMonetizationRoi",
+				"title": "首日变现ROI"
+			}
+		]
+	},
+	_24H_FIRSTPAY: {
+		title: '首日首次付费',
+		smartDeliveryGoalSpecName: 'bidAmountSpec',
+		deepWorthOptimizationGoal: undefined,
+		optimizationGoal: 'OPTIMIZATIONGOAL_24H_FIRSTPAY',
+		smartDeliveryGoalSpec: [
+			{
+				"field_name": "bidAmount",
+				"title": "首日首次付费成本",
+				"unitTips": "元/首日首次付费"
+			}
+		]
+	},
 }

+ 19 - 11
src/pages/iaaData/novel/tencent/adList/index.tsx

@@ -138,7 +138,7 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
                                 {
                                     label: <span style={{ display: 'inline-block', width: 120 }}>修改出价</span>,
                                     key: '1',
-                                    disabled: selectedRows.length === 0,
+                                    disabled: selectedRows.length === 0 || selectedRows[0]?.smartDeliveryPlatform,
                                     onClick: () => { setUpdateDate({ visible: true, type: '修改出价' }) }
                                 },
                                 {
@@ -168,13 +168,13 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
                                 {
                                     label: '一键起量',
                                     key: '6',
-                                    disabled: selectedRows.length === 0,
+                                    disabled: selectedRows.length === 0  || selectedRows[0]?.smartDeliveryPlatform,
                                     onClick: () => { setAutoAcqVisible(true) }
                                 },
                                 {
                                     label: '关闭智能定向',
                                     key: '7',
-                                    disabled: selectedRows.length === 0,
+                                    disabled: selectedRows.length === 0  || selectedRows[0]?.smartDeliveryPlatform,
                                     onClick: () => { setUpdateDate({ visible: true, type: '关闭智能定向' }) }
                                 }
                             ]
@@ -189,9 +189,9 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
                             </Space>
                         </Button>
                     </Dropdown>
-                    <AutoAcquisitionSetTask
+                    {!selectedRows[0]?.smartDeliveryPlatform && <AutoAcquisitionSetTask
                         selectAdList={selectedRows}
-                    />
+                    />}
                 </> : handleType === 3 ? <>
                     <Button type='primary' disabled={selectedRows.length === 0} onClick={() => {
                         setUpdateDate({ visible: true, type: '深度优化ROI' })
@@ -296,12 +296,20 @@ const TencentNovelAd: React.FC<{ configName?: string, dayConfigName?: string }>
             }}
             rowSelection={{
                 selectedRowKeys: selectedRows.map(item => item.adgroupId + ''),
-                getCheckboxProps: (record: any) => ({
-                    disabled:
-                        handleType === 3 ? record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计' || !(record?.deepConversionSpec?.deepConversionWorthSpec?.goal === 'GOAL_1DAY_PURCHASE_ROAS') :
-                            handleType === 4 ? record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计' || !(record?.deepConversionSpec?.deepConversionWorthSpec?.goal === 'GOAL_1DAY_MONETIZATION_ROAS') :
-                                record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计'
-                }),
+                getCheckboxProps: (record: any) => {
+                    if (handleType === 1 && selectedRows?.length > 0) {
+                        const { smartDeliveryPlatform } = selectedRows[0]
+                        return {
+                            disabled: record.isDeleted || smartDeliveryPlatform ? !record?.smartDeliveryPlatform : record?.smartDeliveryPlatform
+                        } 
+                    }
+                    return {
+                        disabled:
+                            handleType === 3 ? record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计' || !(record?.deepConversionSpec?.deepConversionWorthSpec?.goal === 'GOAL_1DAY_PURCHASE_ROAS') :
+                                handleType === 4 ? record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计' || !(record?.deepConversionSpec?.deepConversionWorthSpec?.goal === 'GOAL_1DAY_MONETIZATION_ROAS') :
+                                    record.systemStatus === 'ADGROUP_STATUS_DELETED' || record?.accountId === '总计'
+                    }
+                },
                 onSelect: (record: { adgroupId: number }, selected: boolean) => {
                     if (selected) {
                         selectedRows.push({ ...record })

+ 52 - 39
src/pages/iaaData/novel/tencent/adList/tableConfig.tsx

@@ -5,7 +5,7 @@ import { ADGROUP_STATUS, BID_MODE_ENUM, COST_GUARANTEE_STATUS_ENUM, MARKETING_GO
 import SwitchStatus from "./switchStatus"
 import CreativePreview from "../../../components/CreativePreview"
 import TimeSeriesLook from "@/pages/iaaData/components/TimeSeriesLook"
-import { AUTO_ACQUISTION_STATUS } from "./const"
+import { AUTO_ACQUISTION_STATUS, SMART_DELIVERY_GOAL_ENUM } from "./const"
 
 function columns12(dayHandle: (data: any) => void, onChange?: () => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[], bcColor?: string }[] {
 
@@ -15,23 +15,27 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '广告基本信息',
             data: [
                 {
-                    title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 2,
+                    title: '是否智投', dataIndex: 'smartDeliveryPlatform', label: '广告基本信息', align: 'center', width: 40, default: 2,
+                    render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <Badge status={a ? "processing" : "error"} text={a ? '是' : '否'} />)
+                },
+                {
+                    title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 3,
                     render: (a: string) => (<WidthEllipsis value={a} isCopy />)
                 },
                 {
-                    title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 3,
+                    title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 4,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 4,
+                    title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 5,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 5,
+                    title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 6,
                     render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
                 },
                 {
-                    title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 6,
+                    title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 7,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
@@ -39,7 +43,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
-                    title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 7,
+                    title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 8,
                     render: (a: string) => (<WidthEllipsis value={a} isCopy />)
                 },
                 {
@@ -51,39 +55,48 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 8,
+                    title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 9,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 9,
+                    title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 10,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 10,
-                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate}`} />)
+                    title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 11,
+                    render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate ? b?.endDate : '长期投放'}`} />)
                 },
                 {
-                    title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 11,
+                    title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 12,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <TimeSeriesLook timeSeries={a} />
                     }
                 },
                 {
-                    title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 12,
+                    title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 13,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 140, default: 13,
-                    render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any }) => {
+                    title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 180, default: 14,
+                    render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any, smartDeliveryPlatform: any, smartDeliverySceneSpec: any }) => {
                         if (b?.accountId === '总计') return '--';
+                        if (b?.smartDeliveryPlatform && b?.smartDeliverySceneSpec) {
+                            const smartDeliverySceneSpec = JSON.parse(b.smartDeliverySceneSpec)
+                            const goalDto = SMART_DELIVERY_GOAL_ENUM[smartDeliverySceneSpec?.smartDeliveryGoal as keyof typeof SMART_DELIVERY_GOAL_ENUM]
+                            return <WidthEllipsis value={`${goalDto?.smartDeliveryGoalSpec?.map(item => {
+                                const field_name = item.field_name
+                                const data = smartDeliverySceneSpec?.smartDeliveryGoalSpec?.[goalDto?.smartDeliveryGoalSpecName]?.[item.field_name]
+                                return `${item.title}: ${field_name?.includes('Roi') ? data : data / 100}${item?.unitTips || ''}`
+                            })}`} />
+                        }
                         return `${b?.bidMode ? BID_MODE_ENUM[b?.bidMode as keyof typeof BID_MODE_ENUM] : ''} ${a}元/${b?.bidMode === 'BID_MODE_CPM' ? '千次曝光' : b?.bidMode === 'BID_MODE_CPC' ? '点击' : OPTIMIZATIONGOAL_ENUM[b?.optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM]}`
                     }
                 },
                 {
-                    title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 14,
+                    title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 15,
                     render: (a: boolean, b: any) => {
-                        if (b?.accountId === '总计') return '--';
+                        if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
                         return <Space size={2}>
                             {a ? <>
                                 <Tag color="success">开启</Tag>
@@ -94,28 +107,28 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     }
                 },
                 {
-                    title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 15,
-                    render: (a: string, b: { accountId: any }) => {
-                        if (b?.accountId === '总计') return '--';
+                    title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 16,
+                    render: (a: string, b: { accountId: any, smartDeliveryPlatform: any }) => {
+                        if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
                         return <Statistic value={a || 0} precision={3} />
                     }
                 },
                 {
-                    title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 16,
+                    title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 17,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return SMART_BID_TYPE_ENUM[a as keyof typeof SMART_BID_TYPE_ENUM]
                     }
                 },
                 {
-                    title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 17,
+                    title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 18,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <Statistic value={a || 0} precision={2} />
                     }
                 },
                 {
-                    title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 18,
+                    title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 19,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <WidthEllipsis value={a ? '是' : '否'} />
@@ -126,14 +139,14 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 19,
+                    title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 20,
                     render: (a: any, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <Badge status={!a ? "processing" : "error"} text={a ? '是' : '否'} />
                     }
                 },
                 {
-                    title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 100, default: 20,
+                    title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 150, default: 21,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return ADGROUP_STATUS[a as keyof typeof ADGROUP_STATUS]
@@ -144,15 +157,15 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string) => (a === 'SMART_TARGETING_NONE' ? <Tag color="success">关闭</Tag> : a === 'SMART_TARGETING_AUTO' ? <Tag color='error'>开启</Tag> : '--')
                 },
                 {
-                    title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 21,
+                    title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 22,
                     render: (a: string) => (<WidthEllipsis value={MARKETING_GOAL_ENUM[a as keyof typeof MARKETING_GOAL_ENUM]} />)
                 },
                 {
-                    title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 22,
+                    title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 23,
                     render: (a: string) => (<WidthEllipsis value={MARKETING_TARGET_TYPE_ENUM[a as keyof typeof MARKETING_TARGET_TYPE_ENUM]} />)
                 },
                 {
-                    title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 23,
+                    title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 24,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
@@ -166,11 +179,11 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     }
                 },
                 {
-                    title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 24,
+                    title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 25,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 33,
+                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 34,
                     render: (a: any, b: any) => {
                         if (b?.accountId === '总计') {
                             return '--'
@@ -192,7 +205,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '广告消耗信息',
             data: [
                 {
-                    title: '消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 25, sorter: true,
+                    title: '消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 26, sorter: true,
                     className: 'padding_0',
                     render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
                         <Progress
@@ -208,31 +221,31 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     </div>
                 },
                 {
-                    title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 26, sorter: true,
+                    title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 27, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 27, sorter: true,
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 28, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 28, sorter: true,
+                    title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
+                    title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 30, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 30, sorter: true,
+                    title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
+                    title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
+                    title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 33, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
             ]
@@ -958,7 +971,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '操作',
             data: [
                 {
-                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 34,
+                    title: '操作', dataIndex: 'cz', label: '操作', align: 'center', width: 150, default: 35,
                     render: (_: number, b: any) => {
                         if (b?.accountId === '总计') return '--'
                         return <Space>

+ 51 - 37
src/pages/iaaData/novel/tencent/adListTotal/tableConfig.tsx

@@ -5,6 +5,7 @@ import { ADGROUP_STATUS, BID_MODE_ENUM, COST_GUARANTEE_STATUS_ENUM, MARKETING_GO
 import CreativePreview from "../../../components/CreativePreview"
 import TimeSeriesLook from "@/pages/iaaData/components/TimeSeriesLook"
 import { AUTO_ACQUISTION_STATUS } from "./const"
+import { SMART_DELIVERY_GOAL_ENUM } from "../adList/const"
 
 function columns12(dayHandle: (data: any) => void, onChange?: () => void): { label: string, fieldSHow?: { label: string, saveField: string, defaultValue: any[], data: any[] }, data: any[], bcColor?: string }[] {
 
@@ -14,23 +15,27 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '广告基本信息',
             data: [
                 {
-                    title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 2,
+                    title: '是否智投', dataIndex: 'smartDeliveryPlatform', label: '广告基本信息', align: 'center', width: 40, default: 2,
+                    render: (a: string, b: any) => (b?.accountId === '总计' ? '--' : <Badge status={a ? "processing" : "error"} text={a ? '是' : '否'} />)
+                },
+                {
+                    title: '广告账号', dataIndex: 'accountId', label: '广告基本信息', align: 'center', width: 80, default: 3,
                     render: (a: string) => (<WidthEllipsis value={a} isCopy />)
                 },
                 {
-                    title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 3,
+                    title: '腾讯备注', dataIndex: 'memo', label: '广告基本信息', width: 80, default: 4,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 4,
+                    title: '本地备注', dataIndex: 'remark', label: '广告基本信息', width: 80, default: 5,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 5,
+                    title: '业务类型', dataIndex: 'productType', label: '广告基本信息', align: 'center', width: 80, default: 6,
                     render: (a: string) => (<WidthEllipsis value={PRODUCT_TYPE_ENUM[a as keyof typeof PRODUCT_TYPE_ENUM]} />)
                 },
                 {
-                    title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 6,
+                    title: '应用', dataIndex: 'appName', label: '广告基本信息', align: 'center', width: 100, default: 7,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
@@ -38,7 +43,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string, b: any) => (<WidthEllipsis isCopy value={a} />)
                 },
                 {
-                    title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 7,
+                    title: '广告ID', dataIndex: 'adgroupId', label: '广告基本信息', align: 'center', width: 80, default: 8,
                     render: (a: string) => (<WidthEllipsis value={a} isCopy />)
                 },
 
@@ -47,39 +52,48 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 8,
+                    title: '投手', dataIndex: 'pitcherName', label: '广告基本信息', align: 'center', width: 60, default: 9,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 9,
+                    title: '广告名称', dataIndex: 'adgroupName', label: '广告基本信息', align: 'center', width: 120, default: 10,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 10,
+                    title: '投放日期', dataIndex: 'beginDate', label: '广告基本信息', align: 'center', width: 180, default: 11,
                     render: (a: string, b: any) => (<WidthEllipsis value={b?.accountId === '总计' ? '--' : `${a}-${b?.endDate}`} />)
                 },
                 {
-                    title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 11,
+                    title: '投放时间', dataIndex: 'timeSeries', label: '广告基本信息', align: 'center', width: 180, default: 12,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <TimeSeriesLook timeSeries={a} />
                     }
                 },
                 {
-                    title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 12,
+                    title: '首日开始投放时间', dataIndex: 'firstDayBeginTime', label: '广告基本信息', align: 'center', width: 70, default: 13,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 140, default: 13,
-                    render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any }) => {
+                    title: '出价', dataIndex: 'bidAmount', label: '广告基本信息', align: 'right', width: 140, default: 14,
+                    render: (a: string, b: { bidMode: string, optimizationGoal: string, accountId: any, smartDeliveryPlatform: any, smartDeliverySceneSpec: any }) => {
                         if (b?.accountId === '总计') return '--';
+                        if (b?.smartDeliveryPlatform && b?.smartDeliverySceneSpec) {
+                            const smartDeliverySceneSpec = JSON.parse(b.smartDeliverySceneSpec)
+                            const goalDto = SMART_DELIVERY_GOAL_ENUM[smartDeliverySceneSpec?.smartDeliveryGoal as keyof typeof SMART_DELIVERY_GOAL_ENUM]
+                            return <WidthEllipsis value={`${goalDto?.smartDeliveryGoalSpec?.map(item => {
+                                const field_name = item.field_name
+                                const data = smartDeliverySceneSpec?.smartDeliveryGoalSpec?.[goalDto?.smartDeliveryGoalSpecName]?.[item.field_name]
+                                return `${item.title}: ${field_name?.includes('Roi') ? data : data / 100}${item?.unitTips || ''}`
+                            })}`} />
+                        }
                         return `${b?.bidMode ? BID_MODE_ENUM[b?.bidMode as keyof typeof BID_MODE_ENUM] : ''} ${a}元/${b?.bidMode === 'BID_MODE_CPM' ? '千次曝光' : b?.bidMode === 'BID_MODE_CPC' ? '点击' : OPTIMIZATIONGOAL_ENUM[b?.optimizationGoal as keyof typeof OPTIMIZATIONGOAL_ENUM]}`
                     }
                 },
                 {
-                    title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 14,
+                    title: '一键起量', dataIndex: 'autoAcquisitionEnabled', label: '广告基本信息', width: 200, default: 15,
                     render: (a: boolean, b: any) => {
-                        if (b?.accountId === '总计') return '--';
+                        if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
                         return <Space size={2}>
                             {a ? <>
                                 <Tag color="success">开启</Tag>
@@ -90,28 +104,28 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     }
                 },
                 {
-                    title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 15,
-                    render: (a: string, b: { accountId: any }) => {
-                        if (b?.accountId === '总计') return '--';
+                    title: '深度优化出价', dataIndex: 'deepConversionWorthRate', label: '广告基本信息', align: 'center', width: 70, default: 16,
+                    render: (a: string, b: { accountId: any, smartDeliveryPlatform: any }) => {
+                        if (b?.accountId === '总计' || b?.smartDeliveryPlatform) return '--';
                         return <Statistic value={a || 0} precision={3} />
                     }
                 },
                 {
-                    title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 16,
+                    title: '出价类型', dataIndex: 'smartBidType', label: '广告基本信息', align: 'center', width: 80, default: 17,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return SMART_BID_TYPE_ENUM[a as keyof typeof SMART_BID_TYPE_ENUM]
                     }
                 },
                 {
-                    title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 17,
+                    title: '广告组日预算(元)', dataIndex: 'dailyBudget', label: '广告基本信息', align: 'right', width: 70, sorter: true, default: 18,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <Statistic value={a || 0} precision={2} />
                     }
                 },
                 {
-                    title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 18,
+                    title: '是否开启自动版位功能', dataIndex: 'automaticSiteEnabled', label: '广告基本信息', align: 'center', width: 80, default: 19,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <WidthEllipsis value={a ? '是' : '否'} />
@@ -122,29 +136,29 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 19,
+                    title: '是否已删除', dataIndex: 'isDeleted', label: '广告基本信息', align: 'center', width: 60, default: 20,
                     render: (a: any, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return <Badge status={!a ? "processing" : "error"} text={a ? '是' : '否'} />
                     }
                 },
                 {
-                    title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 100, default: 20,
+                    title: '广告状态', dataIndex: 'systemStatus', label: '广告基本信息', align: 'center', width: 100, default: 21,
                     render: (a: string, b: any) => {
                         if (b?.accountId === '总计') return '--';
                         return ADGROUP_STATUS[a as keyof typeof ADGROUP_STATUS]
                     }
                 },
                 {
-                    title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 21,
+                    title: '营销目的', dataIndex: 'marketingGoal', label: '广告基本信息', align: 'center', width: 85, default: 22,
                     render: (a: string) => (<WidthEllipsis value={MARKETING_GOAL_ENUM[a as keyof typeof MARKETING_GOAL_ENUM]} />)
                 },
                 {
-                    title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 22,
+                    title: '推广内容资产类型', dataIndex: 'marketingTargetType', label: '广告基本信息', align: 'center', width: 85, default: 23,
                     render: (a: string) => (<WidthEllipsis value={MARKETING_TARGET_TYPE_ENUM[a as keyof typeof MARKETING_TARGET_TYPE_ENUM]} />)
                 },
                 {
-                    title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 23,
+                    title: '书名', dataIndex: 'bookName', label: '广告基本信息', align: 'center', width: 110, default: 24,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
@@ -158,11 +172,11 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     }
                 },
                 {
-                    title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 24,
+                    title: '标记备注', dataIndex: 'tagRemark', label: '广告基本信息', align: 'center', width: 80, default: 25,
                     render: (a: string) => (<WidthEllipsis value={a} />)
                 },
                 {
-                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 33,
+                    title: '创意预览', dataIndex: 'dynamicCreativeVOList', label: '腾讯广告列表', width: 150, default: 34,
                     render: (a: any, b: any) => {
                         if (b?.accountId === '总计') {
                             return '--'
@@ -184,7 +198,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
             label: '广告消耗信息',
             data: [
                 {
-                    title: '真实消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 25, sorter: true,
+                    title: '真实消耗', dataIndex: 'cost', label: '广告消耗信息', align: 'center', width: 85, default: 26, sorter: true,
                     className: 'padding_0',
                     render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
                         <Progress
@@ -200,7 +214,7 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     </div>
                 },
                 {
-                    title: '消耗', dataIndex: 'totalCost', label: '广告消耗信息', align: 'center', width: 85, default: 40, sorter: true,
+                    title: '消耗', dataIndex: 'totalCost', label: '广告消耗信息', align: 'center', width: 85, default: 41, sorter: true,
                     className: 'padding_0',
                     render: (a: number) => <div style={{ height: 27, position: 'relative' }}>
                         <Progress
@@ -216,31 +230,31 @@ function columns12(dayHandle: (data: any) => void, onChange?: () => void): { lab
                     </div>
                 },
                 {
-                    title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 26, sorter: true,
+                    title: '曝光量', dataIndex: 'viewCount', label: '广告消耗信息', align: 'center', width: 70, default: 27, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 27, sorter: true,
+                    title: '千次曝光成本', dataIndex: 'thousandDisplayPrice', label: '广告消耗信息', align: 'right', width: 65, default: 28, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 28, sorter: true,
+                    title: '点击量', dataIndex: 'clickCount', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 29, sorter: true,
+                    title: '点击率', dataIndex: 'ctr', label: '广告消耗信息', align: 'center', width: 70, default: 30, sorter: true,
                     render: (a: number) => <Statistic value={a ? a * 100 : 0} precision={2} valueStyle={!a ? {} : a >= 50 ? { color: 'red' } : { color: '#0f990f' }} suffix="%" />
                 },
                 {
-                    title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 30, sorter: true,
+                    title: '点击均价', dataIndex: 'cpc', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} precision={2} />
                 },
                 {
-                    title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 31, sorter: true,
+                    title: '不感兴趣点击次数', dataIndex: 'noInterestCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
                 {
-                    title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 32, sorter: true,
+                    title: '朋友圈视频播放次数', dataIndex: 'videoPlayCount', label: '广告消耗信息', align: 'center', width: 65, default: 33, sorter: true,
                     render: (a: string) => <Statistic value={a || 0} />
                 },
             ]