Commit 438b6706 authored by lijin's avatar lijin

增加国家选择组件

parent 69b7f885
......@@ -13,7 +13,7 @@ module.exports = merge(prodEnv, {
// BXDD_API: '"http://localhost:9311"',
BXDD_API: '"http://data-api.zhangxinhulian.com"',
PACK_API: '"http://packing.zhangxindiet.com"',
PUTIN_API: '"http://api.putin.zhangxindiet.com"',
// PUTIN_API: '"http://localhost:9314"',
// PUTIN_API: '"http://putinapi.zhangxindiet.com"',
PUTIN_API: '"http://localhost:8567"',
AD_API: '"http://adsptest.huolea.com"',
});
......@@ -11,14 +11,14 @@ if (idx > 0) {
BASE_API = '"http://cms.huolea.com:8888"';
CLOND_API = '"http://apitest.nms.huolea.com"';
BXDD_API = '"http://localhost:9311"';
PUTIN_API = '"http://api.putin.zhangxindiet.com"';
PUTIN_API = '"http://putinapi.zhangxindiet.com"';
AD_API = '"http://adsptest.huolea.com"';
} else {
ZX_NMS_BASE_API = '"http://api.nms.huolea.com"';
BASE_API = '"http://cms.huolea.com"';
CLOND_API = '"http://api.nms.huolea.com"';
BXDD_API = '"http://data-api.zhangxinhulian.com"';
PUTIN_API = '"http://api.putin.zhangxindiet.com"';
PUTIN_API = '"http://putinapi.zhangxindiet.com"';
AD_API = '"http://adsp.zhangxindiet.com"';
}
console.log("==============", BASE_API);
......
......@@ -24,6 +24,7 @@
"element-ui": "^2.12.0",
"file-saver": "^2.0.5",
"js-cookie": "2.2.0",
"lucide-vue-next": "^0.468.0",
"md5": "^2.3.0",
"moment": "^2.24.0",
"normalize.css": "7.0.0",
......
......@@ -36,120 +36,6 @@ export const constantRouterMap = [
]
},
{
path: "/putonDataReport", // 总体数据
name: "putonDataReport",
component: Layout,
meta: {
title: "总体数据",
icon: "chart"
},
children: [
{
path: "/putonDataReport", // 总体数据
name: "putonDataReport",
component: () => import("@/views/putonDataReport/index"),
meta: { title: "总体数据", icon: "chart" }
}
]
},
{
path: "/prepaidRecords", // 充值记录
name: "prepaidRecords",
component: Layout,
meta: {
title: "充值记录",
icon: "tab"
},
children: [
{
path: "/prepaidRecords", // 充值记录
name: "prepaidRecords",
component: () => import("@/views/prepaidRecords/index"),
meta: { title: "充值记录", icon: "message" }
}
]
},
{
path: "/agentPutinRoi",
name: "agentPutinRoi",
component: Layout,
meta: {
title: "代理投放ROI",
icon: "tab"
},
children: [
{
path: "/agentPutinRoi",
name: "agentPutinRoi",
component: () => import("@/views/agentPutinRoi/index"),
meta: { title: "代理投放ROI", icon: "message" }
}
]
},
{
path: "/consumptionSubsidiary", // 消耗明细
name: "consumptionSubsidiary",
component: Layout,
meta: {
title: "消耗明细",
icon: "pdf"
},
children: [
{
path: "/consumptionSubsidiary", // 消耗明细
name: "consumptionSubsidiary",
component: () => import("@/views/consumptionSubsidiary/index"),
meta: { title: "消耗明细", icon: "pdf" }
}
]
},
{
path: "/Management/Management", // 投放管理
name: "Management",
component: Layout,
meta: {
title: "投放管理",
icon: "form"
},
children: [
{
path: "/Management/Management", // 投放管理
name: "Management",
component: () => import("@/views/Management/index"),
meta: { title: "投放管理", icon: "form" }
}
]
},
{
path: "/agent", // 代理商
name: "agent",
component: Layout,
meta: {
title: "代理商",
icon: "star"
},
children: [
{
path: "/agent/agent", // 代理商
name: "agent.agent",
component: () => import("@/views/agent/index"),
meta: { title: "代理商", icon: "star" }
},
{
path: "/agent/channelSettlementReport", // 渠道结算报表
name: "agent.channelSettlementReport",
component: () => import("@/views/channelSettlementReport"),
meta: { title: "渠道结算报表", icon: "star" }
},
]
},
{
path: "/putManagement/putManagement", // 账号授权管理
name: "appLaunchManage",
......@@ -168,78 +54,6 @@ export const constantRouterMap = [
]
},
{
path: "/allDataReports", // 数据概览
name: "allDataReports",
component: Layout,
meta: {
title: "数据概览",
icon: "chart"
},
children: [
{
path: "/allDataReports", // 数据概览
name: "allDataReports",
component: () => import("@/views/allDataReports/index"),
meta: { title: "数据概览", icon: "chart" }
}
]
},
{
path: "/invoiceManagement", // 发票管理
name: "invoiceManagement",
component: Layout,
meta: {
title: "发票管理",
icon: "chart"
},
children: [
{
path: "/invoiceManagement", // 发票管理
name: "invoiceManagement",
component: () => import("@/views/invoiceManagement/index"),
meta: { title: "发票管理", icon: "chart" }
}
]
},
{
path: "/rechargeRefund", // 充值/退款管理
name: "rechargeRefund",
component: Layout,
meta: {
title: "充值/退款管理",
icon: "chart"
},
children: [
{
path: "/rechargeRefund", // 充值/退款管理
name: "rechargeRefund",
component: () => import("@/views/rechargeRefund"),
meta: { title: "充值/退款管理", icon: "chart" }
}
]
},
{
path: "/dataReport", // 数据报表
name: "dataReport",
component: Layout,
meta: {
title: "数据报表",
icon: "chart"
},
children: [
{
path: "/dataReport/accountBalanceInfo", // 账户余额信息
name: "dataReport.accountBalanceInfo",
component: () => import("@/views/dataReport/accountBalanceInfo"),
meta: { title: "账户余额信息", icon: "chart" }
}
]
},
{
path: "/intelligentDelivery", // 智能投放
name: "intelligentDelivery",
......@@ -249,96 +63,12 @@ export const constantRouterMap = [
icon: "chart"
},
children: [
{
path: "/intelligentDelivery/materialReport",
name: "intelligentDelivery.materialReport",
component: () => import("@/views/materialReport"),
meta: { title: "素材消耗统计", icon: "chart" }
},
{
path: "/intelligentDelivery/putinCostReport",
name: "intelligentDelivery.putinCostReport",
component: () => import("@/views/putinCostReport"),
meta: { title: "投放消耗统计", icon: "chart" }
},
{
path: "/intelligentDelivery/putAssess",
name: "intelligentDelivery.putAssess",
component: () => import("@/views/putAssess"),
meta: { title: "投放考核", icon: "chart" }
},
{
path: "/intelligentDelivery/putMonitor",
name: "intelligentDelivery.putMonitor",
component: () => import("@/views/putMonitor"),
meta: { title: "投放监控", icon: "chart" }
},
{
path: "/intelligentDelivery/createDelivery",
name: "intelligentDelivery.createDelivery",
component: () => import("@/views/createDelivery"),
meta: { title: "创意投放", icon: "chart" }
},
{
path: "/intelligentDelivery/putAttribution",
name: "intelligentDelivery.putAttribution",
component: () => import("@/views/putAttribution"),
meta: { title: "投放归因", icon: "chart" }
},
{
path: "/intelligentDelivery/materialInfo",
name: "intelligentDelivery.materialInfo",
component: () => import("@/views/materialInfo"),
meta: { title: "素材报表", icon: "chart" }
},
{
path: "/intelligentDelivery/putinReportCfg",
name: "intelligentDelivery.putinReportCfg",
component: () => import("@/views/PutinReportCfg/index.vue"),
meta: { title: "广告投放配置", icon: "chart" }
},
{
path: "/intelligentDelivery/virtualBackhaul",
name: "intelligentDelivery.virtualBackhaul",
component: () => import("@/views/virtualBackhaul"),
meta: { title: "虚拟回传", icon: "chart"}
},
{
path: "/intelligentDelivery/copyReport",
name: "intelligentDelivery.copyReport",
component: () => import("@/views/CopyReport"),
meta: {title: "文案报表", icon: "chart"}
},
{
path: "/intelligentDelivery/manualClosurePlan",
name: "intelligentDelivery.manualClosurePlan",
component: () => import("@/views/ManualClosurePlan"),
meta: {title: "人工关闭计划", icon: "chart"}
},
{
path: "/intelligentDelivery/mirrorData",
name: "intelligentDelivery.mirrorData",
component: () => import("@/views/MirrorData"),
meta: {title: "投放监控镜像数据", icon: "chart"}
},
{
path: "/intelligentDelivery/applicationAccount",
name: "intelligentDelivery.applicationAccount",
component: () => import("@/views/applicationAccount"),
meta: {title: "投放应用管理", icon: "chart"}
},
{
path: "/intelligentDelivery/ldyAccount",
name: "intelligentDelivery.ldyAccount",
component: () => import("@/views/ldyAccount"),
meta: {title: "投放落地页管理", icon: "chart"}
},
{
path: "/intelligentDelivery/putinVideo",
name: "intelligentDelivery.putinVideo",
component: () => import("@/views/putinVideo"),
meta: {title: "投放素材统计", icon: "chart"}
}
]
},
{
......@@ -358,58 +88,6 @@ export const constantRouterMap = [
}
]
},
{
path: "/useTools", // 实用工具
name: "useTools",
component: Layout,
meta: {
title: "实用工具",
icon: "chart"
},
children: [
{
path: "/useTools/messageCenter",
name: "useTools.messageCenter",
component: () => import("@/views/messageCenter"),
meta: { title: "消息中心", icon: "chart" }
},
{
path: "/useTools/taskCenter",
name: "useTools.taskCenter",
component: () => import("@/views/taskCenter"),
meta: { title: "任务中心", icon: "chart" }
},
{
path: "/useTools/materialFetching",
name: "useTools.materialFetching",
component: () => import("@/views/materialFetching"),
meta: { title: "素材抓取", icon: "chart" }
}
]
},
{
path: '/personManagement',
name: 'personManagement',
component: Layout,
meta: {
title: '人员管理',
icon: 'chart'
},
children: [
{
path: '/personManagement/userManagement',
name: 'personManagement.userManagement',
component: () => import('@/views/userManagement'),
meta: { title: '用户管理', icon: 'chart' }
},
{
path: '/personManagement/roleManagement',
name: 'personManagement.roleManagement',
component: () => import('@/views/roleManagement'),
meta: { title: '角色管理', icon: 'chart' }
}
]
},
{
path: '/redirect', // 重定向路由
......
<template>
<div class="country-selector">
<h2>{{ title }}</h2>
<div class="search-container">
<input
v-model="searchQuery"
type="text"
placeholder="搜索国家..."
class="search-input"
/>
</div>
<div class="country-list">
<div
v-for="country in filteredCountries"
:key="country.code"
class="country-item"
:class="{ 'is-selected': isSelected(country) }"
@click="toggleCountry(country)"
>
<span class="country-flag">{{ country.flag }}</span>
<span class="country-name">{{ country.nameCn }} ({{ country.nameEn }})</span>
<span class="country-code">{{ country.code }}</span>
</div>
</div>
<div class="selected-countries-info" v-if="selectedCountries.length">
<h2>已选择的国家:</h2>
<ul>
<li v-for="country in selectedCountries" :key="country.code" class="selected-country">
{{ country.flag }} {{ country.nameCn }} ({{ country.nameEn }})
<button @click="toggleCountry(country)" class="remove-btn">
<span class="x-icon">×</span>
</button>
</li>
</ul>
</div>
</div>
</template>
<script>
export default {
name: 'CountrySelector',
props: {
selectedCountries: {
type: Array,
default: () => []
},
title: {
type: String,
default: '选择国家'
}
},
data() {
return {
searchQuery: '',
countries: [{'code': 'AF', 'nameCn': '阿富汗', 'nameEn': 'Afghanistan', 'flag': '🇦🇫', 'criterion_id': 2004}, {'code': 'AL', 'nameCn': '阿尔巴尼亚', 'nameEn': 'Albania', 'flag': '🇦🇱', 'criterion_id': 2008}, {'code': 'DZ', 'nameCn': '阿尔及利亚', 'nameEn': 'Algeria', 'flag': '🇩🇿', 'criterion_id': 2012}, {'code': 'AD', 'nameCn': '安道尔', 'nameEn': 'Andorra', 'flag': '🇦🇩', 'criterion_id': 2020}, {'code': 'AO', 'nameCn': '安哥拉', 'nameEn': 'Angola', 'flag': '🇦🇴', 'criterion_id': 2024}, {'code': 'AG', 'nameCn': '安提瓜和巴布达', 'nameEn': 'Antigua and Barbuda', 'flag': '🇦🇬', 'criterion_id': 2028}, {'code': 'AR', 'nameCn': '阿根廷', 'nameEn': 'Argentina', 'flag': '🇦🇷', 'criterion_id': 2032}, {'code': 'AM', 'nameCn': '亚美尼亚', 'nameEn': 'Armenia', 'flag': '🇦🇲', 'criterion_id': 2051}, {'code': 'AU', 'nameCn': '澳大利亚', 'nameEn': 'Australia', 'flag': '🇦🇺', 'criterion_id': 2036}, {'code': 'AT', 'nameCn': '奥地利', 'nameEn': 'Austria', 'flag': '🇦🇹', 'criterion_id': 2040}, {'code': 'AZ', 'nameCn': '阿塞拜疆', 'nameEn': 'Azerbaijan', 'flag': '🇦🇿', 'criterion_id': 2031}, {'code': 'BS', 'nameCn': '巴哈马', 'nameEn': 'Bahamas', 'flag': '🇧🇸', 'criterion_id': 2044}, {'code': 'BH', 'nameCn': '巴林', 'nameEn': 'Bahrain', 'flag': '🇧🇭', 'criterion_id': 2048}, {'code': 'BD', 'nameCn': '孟加拉国', 'nameEn': 'Bangladesh', 'flag': '🇧🇩', 'criterion_id': 2050}, {'code': 'BB', 'nameCn': '巴巴多斯', 'nameEn': 'Barbados', 'flag': '🇧🇧', 'criterion_id': 2052}, {'code': 'BY', 'nameCn': '白俄罗斯', 'nameEn': 'Belarus', 'flag': '🇧🇾', 'criterion_id': 2112}, {'code': 'BE', 'nameCn': '比利时', 'nameEn': 'Belgium', 'flag': '🇧🇪', 'criterion_id': 2056}, {'code': 'BZ', 'nameCn': '伯利兹', 'nameEn': 'Belize', 'flag': '🇧🇿', 'criterion_id': 2084}, {'code': 'BJ', 'nameCn': '贝宁', 'nameEn': 'Benin', 'flag': '🇧🇯', 'criterion_id': 2204}, {'code': 'BT', 'nameCn': '不丹', 'nameEn': 'Bhutan', 'flag': '🇧🇹', 'criterion_id': 2064}, {'code': 'BO', 'nameCn': '玻利维亚', 'nameEn': 'Bolivia', 'flag': '🇧🇴', 'criterion_id': 2068}, {'code': 'BA', 'nameCn': '波斯尼亚和黑塞哥维那', 'nameEn': 'Bosnia and Herzegovina', 'flag': '🇧🇦', 'criterion_id': 2070}, {'code': 'BW', 'nameCn': '博茨瓦纳', 'nameEn': 'Botswana', 'flag': '🇧🇼', 'criterion_id': 2072}, {'code': 'BR', 'nameCn': '巴西', 'nameEn': 'Brazil', 'flag': '🇧🇷', 'criterion_id': 2076}, {'code': 'BN', 'nameCn': '文莱', 'nameEn': 'Brunei', 'flag': '🇧🇳', 'criterion_id': 2096}, {'code': 'BG', 'nameCn': '保加利亚', 'nameEn': 'Bulgaria', 'flag': '🇧🇬', 'criterion_id': 2100}, {'code': 'BF', 'nameCn': '布基纳法索', 'nameEn': 'Burkina Faso', 'flag': '🇧🇫', 'criterion_id': 2854}, {'code': 'BI', 'nameCn': '布隆迪', 'nameEn': 'Burundi', 'flag': '🇧🇮', 'criterion_id': 2108}, {'code': 'KH', 'nameCn': '柬埔寨', 'nameEn': 'Cambodia', 'flag': '🇰🇭', 'criterion_id': 2116}, {'code': 'CM', 'nameCn': '喀麦隆', 'nameEn': 'Cameroon', 'flag': '🇨🇲', 'criterion_id': 2120}, {'code': 'CA', 'nameCn': '加拿大', 'nameEn': 'Canada', 'flag': '🇨🇦', 'criterion_id': 2124}, {'code': 'CV', 'nameCn': '佛得角', 'nameEn': 'Cape Verde', 'flag': '🇨🇻', 'criterion_id': 2132}, {'code': 'CF', 'nameCn': '中非共和国', 'nameEn': 'Central African Republic', 'flag': '🇨🇫', 'criterion_id': 2140}, {'code': 'TD', 'nameCn': '乍得', 'nameEn': 'Chad', 'flag': '🇹🇩', 'criterion_id': 2148}, {'code': 'CL', 'nameCn': '智利', 'nameEn': 'Chile', 'flag': '🇨🇱', 'criterion_id': 2152}, {'code': 'CN', 'nameCn': '中国', 'nameEn': 'China', 'flag': '🇨🇳', 'criterion_id': 2156}, {'code': 'CO', 'nameCn': '哥伦比亚', 'nameEn': 'Colombia', 'flag': '🇨🇴', 'criterion_id': 2170}, {'code': 'KM', 'nameCn': '科摩罗', 'nameEn': 'Comoros', 'flag': '🇰🇲', 'criterion_id': 2174}, {'code': 'CG', 'nameCn': '刚果(布)', 'nameEn': 'Congo', 'flag': '🇨🇬', 'criterion_id': 2178}, {'code': 'CD', 'nameCn': '刚果(金)', 'nameEn': 'Congo, Democratic Republic of the', 'flag': '🇨🇩', 'criterion_id': 2180}, {'code': 'CR', 'nameCn': '哥斯达黎加', 'nameEn': 'Costa Rica', 'flag': '🇨🇷', 'criterion_id': 2188}, {'code': 'CI', 'nameCn': '科特迪瓦', 'nameEn': "Côte d'Ivoire", 'flag': '🇨🇮', 'criterion_id': 2384}, {'code': 'HR', 'nameCn': '克罗地亚', 'nameEn': 'Croatia', 'flag': '🇭🇷', 'criterion_id': 2191}, {'code': 'CU', 'nameCn': '古巴', 'nameEn': 'Cuba', 'flag': '🇨🇺'}, {'code': 'CY', 'nameCn': '塞浦路斯', 'nameEn': 'Cyprus', 'flag': '🇨🇾', 'criterion_id': 2196}, {'code': 'CZ', 'nameCn': '捷克', 'nameEn': 'Czech Republic', 'flag': '🇨🇿', 'criterion_id': 2203}, {'code': 'DK', 'nameCn': '丹麦', 'nameEn': 'Denmark', 'flag': '🇩🇰', 'criterion_id': 2208}, {'code': 'DJ', 'nameCn': '吉布提', 'nameEn': 'Djibouti', 'flag': '🇩🇯', 'criterion_id': 2262}, {'code': 'DM', 'nameCn': '多米尼克', 'nameEn': 'Dominica', 'flag': '🇩🇲', 'criterion_id': 2212}, {'code': 'DO', 'nameCn': '多米尼加共和国', 'nameEn': 'Dominican Republic', 'flag': '🇩🇴', 'criterion_id': 2214}, {'code': 'EC', 'nameCn': '厄瓜多尔', 'nameEn': 'Ecuador', 'flag': '🇪🇨', 'criterion_id': 2218}, {'code': 'EG', 'nameCn': '埃及', 'nameEn': 'Egypt', 'flag': '🇪🇬', 'criterion_id': 2818}, {'code': 'SV', 'nameCn': '萨尔瓦多', 'nameEn': 'El Salvador', 'flag': '🇸🇻', 'criterion_id': 2222}, {'code': 'GQ', 'nameCn': '赤道几内亚', 'nameEn': 'Equatorial Guinea', 'flag': '🇬🇶', 'criterion_id': 2226}, {'code': 'ER', 'nameCn': '厄立特里亚', 'nameEn': 'Eritrea', 'flag': '🇪🇷', 'criterion_id': 2232}, {'code': 'EE', 'nameCn': '爱沙尼亚', 'nameEn': 'Estonia', 'flag': '🇪🇪', 'criterion_id': 2233}, {'code': 'ET', 'nameCn': '埃塞俄比亚', 'nameEn': 'Ethiopia', 'flag': '🇪🇹', 'criterion_id': 2231}, {'code': 'FJ', 'nameCn': '斐济', 'nameEn': 'Fiji', 'flag': '🇫🇯', 'criterion_id': 2242}, {'code': 'FI', 'nameCn': '芬兰', 'nameEn': 'Finland', 'flag': '🇫🇮', 'criterion_id': 2246}, {'code': 'FR', 'nameCn': '法国', 'nameEn': 'France', 'flag': '🇫🇷', 'criterion_id': 2250}, {'code': 'GA', 'nameCn': '加蓬', 'nameEn': 'Gabon', 'flag': '🇬🇦', 'criterion_id': 2266}, {'code': 'GM', 'nameCn': '冈比亚', 'nameEn': 'Gambia', 'flag': '🇬🇲', 'criterion_id': 2270}, {'code': 'GE', 'nameCn': '格鲁吉亚', 'nameEn': 'Georgia', 'flag': '🇬🇪', 'criterion_id': 2268}, {'code': 'DE', 'nameCn': '德国', 'nameEn': 'Germany', 'flag': '🇩🇪', 'criterion_id': 2276}, {'code': 'GH', 'nameCn': '加纳', 'nameEn': 'Ghana', 'flag': '🇬🇭', 'criterion_id': 2288}, {'code': 'GR', 'nameCn': '希腊', 'nameEn': 'Greece', 'flag': '🇬🇷', 'criterion_id': 2300}, {'code': 'GD', 'nameCn': '格林纳达', 'nameEn': 'Grenada', 'flag': '🇬🇩', 'criterion_id': 2308}, {'code': 'GT', 'nameCn': '危地马拉', 'nameEn': 'Guatemala', 'flag': '🇬🇹', 'criterion_id': 2320}, {'code': 'GN', 'nameCn': '几内亚', 'nameEn': 'Guinea', 'flag': '🇬🇳', 'criterion_id': 2324}, {'code': 'GW', 'nameCn': '几内亚比绍', 'nameEn': 'Guinea-Bissau', 'flag': '🇬🇼', 'criterion_id': 2624}, {'code': 'GY', 'nameCn': '圭亚那', 'nameEn': 'Guyana', 'flag': '🇬🇾', 'criterion_id': 2328}, {'code': 'HT', 'nameCn': '海地', 'nameEn': 'Haiti', 'flag': '🇭🇹', 'criterion_id': 2332}, {'code': 'HN', 'nameCn': '洪都拉斯', 'nameEn': 'Honduras', 'flag': '🇭��', 'criterion_id': 2340}, {'code': 'HU', 'nameCn': '匈牙利', 'nameEn': 'Hungary', 'flag': '🇭🇺', 'criterion_id': 2348}, {'code': 'IS', 'nameCn': '冰岛', 'nameEn': 'Iceland', 'flag': '🇮🇸', 'criterion_id': 2352}, {'code': 'IN', 'nameCn': '印度', 'nameEn': 'India', 'flag': '🇮🇳', 'criterion_id': 2356}, {'code': 'ID', 'nameCn': '印度尼西亚', 'nameEn': 'Indonesia', 'flag': '🇮🇩', 'criterion_id': 2360}, {'code': 'IR', 'nameCn': '伊朗', 'nameEn': 'Iran', 'flag': '🇮🇷'}, {'code': 'IQ', 'nameCn': '伊拉克', 'nameEn': 'Iraq', 'flag': '🇮🇶', 'criterion_id': 2368}, {'code': 'IE', 'nameCn': '爱尔兰', 'nameEn': 'Ireland', 'flag': '🇮🇪', 'criterion_id': 2372}, {'code': 'IL', 'nameCn': '以色列', 'nameEn': 'Israel', 'flag': '🇮🇱', 'criterion_id': 2376}, {'code': 'IT', 'nameCn': '意大利', 'nameEn': 'Italy', 'flag': '🇮🇹', 'criterion_id': 2380}, {'code': 'JM', 'nameCn': '牙买加', 'nameEn': 'Jamaica', 'flag': '🇯🇲', 'criterion_id': 2388}, {'code': 'JP', 'nameCn': '日本', 'nameEn': 'Japan', 'flag': '🇯🇵', 'criterion_id': 2392}, {'code': 'JO', 'nameCn': '约旦', 'nameEn': 'Jordan', 'flag': '🇯🇴', 'criterion_id': 2400}, {'code': 'KZ', 'nameCn': '哈萨克斯坦', 'nameEn': 'Kazakhstan', 'flag': '🇰🇿', 'criterion_id': 2398}, {'code': 'KE', 'nameCn': '肯尼亚', 'nameEn': 'Kenya', 'flag': '🇰🇪', 'criterion_id': 2404}, {'code': 'KI', 'nameCn': '基里巴斯', 'nameEn': 'Kiribati', 'flag': '🇰🇮', 'criterion_id': 2296}, {'code': 'KP', 'nameCn': '朝鲜', 'nameEn': 'North Korea', 'flag': '🇰🇵'}, {'code': 'KR', 'nameCn': '韩国', 'nameEn': 'South Korea', 'flag': '🇰🇷', 'criterion_id': 2410}, {'code': 'KW', 'nameCn': '科威特', 'nameEn': 'Kuwait', 'flag': '🇰🇼', 'criterion_id': 2414}, {'code': 'KG', 'nameCn': '吉尔吉斯斯坦', 'nameEn': 'Kyrgyzstan', 'flag': '🇰🇬', 'criterion_id': 2417}, {'code': 'LA', 'nameCn': '老挝', 'nameEn': 'Laos', 'flag': '🇱🇦', 'criterion_id': 2418}, {'code': 'LV', 'nameCn': '拉脱维亚', 'nameEn': 'Latvia', 'flag': '🇱🇻', 'criterion_id': 2428}, {'code': 'LB', 'nameCn': '黎巴嫩', 'nameEn': 'Lebanon', 'flag': '🇱🇧', 'criterion_id': 2422}, {'code': 'LS', 'nameCn': '莱索托', 'nameEn': 'Lesotho', 'flag': '🇱🇸', 'criterion_id': 2426}, {'code': 'LR', 'nameCn': '利比里亚', 'nameEn': 'Liberia', 'flag': '🇱🇷', 'criterion_id': 2430}, {'code': 'LY', 'nameCn': '利比亚', 'nameEn': 'Libya', 'flag': '🇱🇾', 'criterion_id': 2434}, {'code': 'LI', 'nameCn': '列支敦士登', 'nameEn': 'Liechtenstein', 'flag': '🇱🇮', 'criterion_id': 2438}, {'code': 'LT', 'nameCn': '立陶宛', 'nameEn': 'Lithuania', 'flag': '🇱🇹', 'criterion_id': 2440}, {'code': 'LU', 'nameCn': '卢森堡', 'nameEn': 'Luxembourg', 'flag': '🇱🇺', 'criterion_id': 2442}, {'code': 'MG', 'nameCn': '马达加斯加', 'nameEn': 'Madagascar', 'flag': '🇲🇬', 'criterion_id': 2450}, {'code': 'MW', 'nameCn': '马拉维', 'nameEn': 'Malawi', 'flag': '🇲🇼', 'criterion_id': 2454}, {'code': 'MY', 'nameCn': '马来西亚', 'nameEn': 'Malaysia', 'flag': '🇲🇾', 'criterion_id': 2458}, {'code': 'MV', 'nameCn': '马尔代夫', 'nameEn': 'Maldives', 'flag': '🇲🇻', 'criterion_id': 2462}, {'code': 'ML', 'nameCn': '马里', 'nameEn': 'Mali', 'flag': '🇲🇱', 'criterion_id': 2466}, {'code': 'MT', 'nameCn': '马耳他', 'nameEn': 'Malta', 'flag': '🇲🇹', 'criterion_id': 2470}, {'code': 'MH', 'nameCn': '马绍尔群岛', 'nameEn': 'Marshall Islands', 'flag': '🇲🇭', 'criterion_id': 2584}, {'code': 'MR', 'nameCn': '毛里塔尼亚', 'nameEn': 'Mauritania', 'flag': '🇲🇷', 'criterion_id': 2478}, {'code': 'MU', 'nameCn': '毛里求斯', 'nameEn': 'Mauritius', 'flag': '🇲🇺', 'criterion_id': 2480}, {'code': 'MX', 'nameCn': '墨西哥', 'nameEn': 'Mexico', 'flag': '🇲🇽', 'criterion_id': 2484}, {'code': 'FM', 'nameCn': '密克罗尼西亚', 'nameEn': 'Micronesia', 'flag': '🇫🇲', 'criterion_id': 2583}, {'code': 'MD', 'nameCn': '摩尔多瓦', 'nameEn': 'Moldova', 'flag': '🇲🇩', 'criterion_id': 2498}, {'code': 'MC', 'nameCn': '摩纳哥', 'nameEn': 'Monaco', 'flag': '🇲🇨', 'criterion_id': 2492}, {'code': 'MN', 'nameCn': '蒙古', 'nameEn': 'Mongolia', 'flag': '🇲🇳', 'criterion_id': 2496}, {'code': 'ME', 'nameCn': '黑山', 'nameEn': 'Montenegro', 'flag': '🇲🇪', 'criterion_id': 2499}, {'code': 'MA', 'nameCn': '摩洛哥', 'nameEn': 'Morocco', 'flag': '🇲🇦', 'criterion_id': 2504}, {'code': 'MZ', 'nameCn': '莫桑比克', 'nameEn': 'Mozambique', 'flag': '🇲🇿', 'criterion_id': 2508}, {'code': 'MM', 'nameCn': '缅甸', 'nameEn': 'Myanmar', 'flag': '🇲🇲', 'criterion_id': 2104}, {'code': 'NA', 'nameCn': '纳米比亚', 'nameEn': 'Namibia', 'flag': '🇳🇦', 'criterion_id': 2516}, {'code': 'NR', 'nameCn': '瑙鲁', 'nameEn': 'Nauru', 'flag': '🇳🇷', 'criterion_id': 2520}, {'code': 'NP', 'nameCn': '尼泊尔', 'nameEn': 'Nepal', 'flag': '🇳🇵', 'criterion_id': 2524}, {'code': 'NL', 'nameCn': '荷兰', 'nameEn': 'Netherlands', 'flag': '🇳🇱', 'criterion_id': 2528}, {'code': 'NZ', 'nameCn': '新西兰', 'nameEn': 'New Zealand', 'flag': '🇳🇿', 'criterion_id': 2554}, {'code': 'NI', 'nameCn': '尼加拉瓜', 'nameEn': 'Nicaragua', 'flag': '🇳🇮', 'criterion_id': 2558}, {'code': 'NE', 'nameCn': '尼日尔', 'nameEn': 'Niger', 'flag': '🇳🇪', 'criterion_id': 2562}, {'code': 'NG', 'nameCn': '尼日利亚', 'nameEn': 'Nigeria', 'flag': '🇳🇬', 'criterion_id': 2566}, {'code': 'MK', 'nameCn': '北马其顿', 'nameEn': 'North Macedonia', 'flag': '🇲🇰', 'criterion_id': 2807}, {'code': 'NO', 'nameCn': '挪威', 'nameEn': 'Norway', 'flag': '🇳🇴', 'criterion_id': 2578}, {'code': 'OM', 'nameCn': '阿曼', 'nameEn': 'Oman', 'flag': '🇴🇲', 'criterion_id': 2512}, {'code': 'PK', 'nameCn': '巴基斯坦', 'nameEn': 'Pakistan', 'flag': '🇵🇰', 'criterion_id': 2586}, {'code': 'PW', 'nameCn': '帕劳', 'nameEn': 'Palau', 'flag': '🇵🇼', 'criterion_id': 2585}, {'code': 'PA', 'nameCn': '巴拿马', 'nameEn': 'Panama', 'flag': '🇵🇦', 'criterion_id': 2591}, {'code': 'PG', 'nameCn': '巴布亚新几内亚', 'nameEn': 'Papua New Guinea', 'flag': '🇵🇬', 'criterion_id': 2598}, {'code': 'PY', 'nameCn': '巴拉圭', 'nameEn': 'Paraguay', 'flag': '🇵🇾', 'criterion_id': 2600}, {'code': 'PE', 'nameCn': '秘鲁', 'nameEn': 'Peru', 'flag': '🇵🇪', 'criterion_id': 2604}, {'code': 'PH', 'nameCn': '菲律宾', 'nameEn': 'Philippines', 'flag': '🇵🇭', 'criterion_id': 2608}, {'code': 'PL', 'nameCn': '波兰', 'nameEn': 'Poland', 'flag': '🇵🇱', 'criterion_id': 2616}, {'code': 'PT', 'nameCn': '葡萄牙', 'nameEn': 'Portugal', 'flag': '🇵🇹', 'criterion_id': 2620}, {'code': 'QA', 'nameCn': '卡塔尔', 'nameEn': 'Qatar', 'flag': '🇶🇦', 'criterion_id': 2634}, {'code': 'RO', 'nameCn': '罗马尼亚', 'nameEn': 'Romania', 'flag': '🇷🇴', 'criterion_id': 2642}, {'code': 'RU', 'nameCn': '俄罗斯', 'nameEn': 'Russia', 'flag': '🇷🇺', 'criterion_id': 2643}, {'code': 'RW', 'nameCn': '卢旺达', 'nameEn': 'Rwanda', 'flag': '🇷🇼', 'criterion_id': 2646}, {'code': 'KN', 'nameCn': '圣基茨和尼维斯', 'nameEn': 'Saint Kitts and Nevis', 'flag': '🇰🇳', 'criterion_id': 2659}, {'code': 'LC', 'nameCn': '圣卢西亚', 'nameEn': 'Saint Lucia', 'flag': '🇱🇨', 'criterion_id': 2662}, {'code': 'VC', 'nameCn': '圣文森特和格林纳丁斯', 'nameEn': 'Saint Vincent and the Grenadines', 'flag': '🇻🇨', 'criterion_id': 2670}, {'code': 'WS', 'nameCn': '萨摩亚', 'nameEn': 'Samoa', 'flag': '🇼🇸', 'criterion_id': 2882}, {'code': 'SM', 'nameCn': '圣马力诺', 'nameEn': 'San Marino', 'flag': '🇸🇲', 'criterion_id': 2674}, {'code': 'ST', 'nameCn': '圣多美和普林西比', 'nameEn': 'Sao Tome and Principe', 'flag': '🇸🇹', 'criterion_id': 2678}, {'code': 'SA', 'nameCn': '沙特阿拉伯', 'nameEn': 'Saudi Arabia', 'flag': '🇸🇦', 'criterion_id': 2682}, {'code': 'SN', 'nameCn': '塞内加尔', 'nameEn': 'Senegal', 'flag': '🇸🇳', 'criterion_id': 2686}, {'code': 'RS', 'nameCn': '塞尔维亚', 'nameEn': 'Serbia', 'flag': '🇷🇸', 'criterion_id': 2688}, {'code': 'SC', 'nameCn': '塞舌尔', 'nameEn': 'Seychelles', 'flag': '🇸🇨', 'criterion_id': 2690}, {'code': 'SL', 'nameCn': '塞拉利昂', 'nameEn': 'Sierra Leone', 'flag': '🇸🇱', 'criterion_id': 2694}, {'code': 'SG', 'nameCn': '新加坡', 'nameEn': 'Singapore', 'flag': '🇸🇬', 'criterion_id': 2702}, {'code': 'SK', 'nameCn': '斯洛伐克', 'nameEn': 'Slovakia', 'flag': '🇸🇰', 'criterion_id': 2703}, {'code': 'SI', 'nameCn': '斯洛文尼亚', 'nameEn': 'Slovenia', 'flag': '🇸🇮', 'criterion_id': 2705}, {'code': 'SB', 'nameCn': '所罗门群岛', 'nameEn': 'Solomon Islands', 'flag': '🇸🇧', 'criterion_id': 2090}, {'code': 'SO', 'nameCn': '索马里', 'nameEn': 'Somalia', 'flag': '🇸🇴', 'criterion_id': 2706}, {'code': 'ZA', 'nameCn': '南非', 'nameEn': 'South Africa', 'flag': '🇿🇦', 'criterion_id': 2710}, {'code': 'SS', 'nameCn': '南苏丹', 'nameEn': 'South Sudan', 'flag': '🇸🇸', 'criterion_id': 2728}, {'code': 'ES', 'nameCn': '西班牙', 'nameEn': 'Spain', 'flag': '🇪🇸', 'criterion_id': 2724}, {'code': 'LK', 'nameCn': '斯里兰卡', 'nameEn': 'Sri Lanka', 'flag': '🇱🇰', 'criterion_id': 2144}, {'code': 'SD', 'nameCn': '苏丹', 'nameEn': 'Sudan', 'flag': '🇸🇩', 'criterion_id': 2736}, {'code': 'SR', 'nameCn': '苏里南', 'nameEn': 'Suriname', 'flag': '🇸🇷', 'criterion_id': 2740}, {'code': 'SE', 'nameCn': '瑞典', 'nameEn': 'Sweden', 'flag': '🇸🇪', 'criterion_id': 2752}, {'code': 'CH', 'nameCn': '瑞士', 'nameEn': 'Switzerland', 'flag': '🇨🇭', 'criterion_id': 2756}, {'code': 'SY', 'nameCn': '叙利亚', 'nameEn': 'Syria', 'flag': '🇸🇾'}, {'code': 'TJ', 'nameCn': '塔吉克斯坦', 'nameEn': 'Tajikistan', 'flag': '🇹🇯', 'criterion_id': 2762}, {'code': 'TZ', 'nameCn': '坦桑尼亚', 'nameEn': 'Tanzania', 'flag': '🇹🇿', 'criterion_id': 2834}, {'code': 'TH', 'nameCn': '泰国', 'nameEn': 'Thailand', 'flag': '🇹🇭', 'criterion_id': 2764}, {'code': 'TL', 'nameCn': '东帝汶', 'nameEn': 'Timor-Leste', 'flag': '🇹🇱', 'criterion_id': 2626}, {'code': 'TG', 'nameCn': '多哥', 'nameEn': 'Togo', 'flag': '🇹🇬', 'criterion_id': 2768}, {'code': 'TO', 'nameCn': '汤加', 'nameEn': 'Tonga', 'flag': '🇹🇴', 'criterion_id': 2776}, {'code': 'TT', 'nameCn': '特立尼达和多巴哥', 'nameEn': 'Trinidad and Tobago', 'flag': '🇹🇹', 'criterion_id': 2780}, {'code': 'TN', 'nameCn': '突尼斯', 'nameEn': 'Tunisia', 'flag': '🇹🇳', 'criterion_id': 2788}, {'code': 'TR', 'nameCn': '土耳其', 'nameEn': 'Turkey', 'flag': '🇹🇷', 'criterion_id': 2792}, {'code': 'TM', 'nameCn': '土库曼斯坦', 'nameEn': 'Turkmenistan', 'flag': '🇹🇲', 'criterion_id': 2795}, {'code': 'TV', 'nameCn': '图瓦卢', 'nameEn': 'Tuvalu', 'flag': '🇹🇻', 'criterion_id': 2798}, {'code': 'UG', 'nameCn': '乌干达', 'nameEn': 'Uganda', 'flag': '🇺🇬', 'criterion_id': 2800}, {'code': 'UA', 'nameCn': '乌克兰', 'nameEn': 'Ukraine', 'flag': '🇺🇦', 'criterion_id': 2804}, {'code': 'AE', 'nameCn': '阿联酋', 'nameEn': 'United Arab Emirates', 'flag': '🇦🇪', 'criterion_id': 2784}, {'code': 'GB', 'nameCn': '英国', 'nameEn': 'United Kingdom', 'flag': '🇬🇧', 'criterion_id': 2826}, {'code': 'US', 'nameCn': '美国', 'nameEn': 'United States', 'flag': '🇺🇸', 'criterion_id': 2840}, {'code': 'UY', 'nameCn': '乌拉圭', 'nameEn': 'Uruguay', 'flag': '🇺🇾', 'criterion_id': 2858}, {'code': 'UZ', 'nameCn': '乌兹别克斯坦', 'nameEn': 'Uzbekistan', 'flag': '🇺🇿', 'criterion_id': 2860}, {'code': 'VU', 'nameCn': '瓦努阿图', 'nameEn': 'Vanuatu', 'flag': '🇻🇺', 'criterion_id': 2548}, {'code': 'VA', 'nameCn': '梵蒂冈', 'nameEn': 'Vatican City', 'flag': '🇻🇦', 'criterion_id': 2336}, {'code': 'VE', 'nameCn': '委内瑞拉', 'nameEn': 'Venezuela', 'flag': '🇻🇪', 'criterion_id': 2862}, {'code': 'VN', 'nameCn': '越南', 'nameEn': 'Vietnam', 'flag': '🇻🇳', 'criterion_id': 2704}, {'code': 'YE', 'nameCn': '也门', 'nameEn': 'Yemen', 'flag': '🇾🇪', 'criterion_id': 2887}, {'code': 'ZM', 'nameCn': '赞比亚', 'nameEn': 'Zambia', 'flag': '🇿🇲', 'criterion_id': 2894}, {'code': 'ZW', 'nameCn': '津巴布韦', 'nameEn': 'Zimbabwe', 'flag': '🇿🇼', 'criterion_id': 2716}],
}
},
created() {
// console.log(JSON.stringify(this.countries))
},
computed: {
filteredCountries() {
if (!this.searchQuery) {
return this.countries
}
const query = this.searchQuery.toLowerCase()
return this.countries.filter(country =>
country.nameCn.toLowerCase().includes(query) ||
country.nameEn.toLowerCase().includes(query) ||
country.code.toLowerCase().includes(query)
)
}
},
methods: {
isSelected(country) {
return this.selectedCountries.some(c => c.code === country.code)
},
toggleCountry(country) {
const index = this.selectedCountries.findIndex(c => c.code === country.code)
if (index === -1) {
this.selectedCountries.push(country)
} else {
this.selectedCountries.splice(index, 1)
}
this.$emit('input', this.selectedCountries)
}
}
}
</script>
<style scoped>
.country-selector {
font-family: Arial, sans-serif;
max-width: 400px;
margin: 0 auto;
}
.search-container {
margin-bottom: 10px;
}
.search-input {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
}
.country-list {
max-height: 300px;
overflow-y: auto;
border: 1px solid #ccc;
border-radius: 4px;
margin-bottom: 20px;
}
.country-item {
display: flex;
align-items: center;
padding: 10px;
cursor: pointer;
transition: background-color 0.3s;
}
.country-item:hover {
background-color: #f0f0f0;
}
.country-item.is-selected {
background-color: #e0e0e0;
}
.country-flag {
margin-right: 10px;
font-size: 1.5em;
}
.country-name {
flex-grow: 1;
}
.country-code {
color: #666;
}
.selected-countries-info {
margin-top: 20px;
padding: 15px;
background-color: #f0f0f0;
border-radius: 5px;
}
.selected-countries-info h2 {
color: #444;
font-size: 1.2em;
margin-bottom: 10px;
}
.selected-countries-info ul {
list-style-type: none;
padding: 0;
}
.selected-country {
display: flex;
align-items: center;
justify-content: space-between;
background-color: #fff;
padding: 5px 10px;
border-radius: 20px;
margin-bottom: 5px;
}
.remove-btn {
background: none;
border: none;
cursor: pointer;
padding: 0;
display: flex;
align-items: center;
}
.x-icon {
font-size: 1.2em;
color: #666;
}
</style>
......@@ -7,16 +7,13 @@
type="primary"
style="margin-bottom: 20px"
>
巨量引擎投放
Google投放
</el-button>
<el-button type="primary" @click="ks_drawerShow = true"
>快手平台投放</el-button
>
<!-- <el-button type="primary" @click="ks_drawerShow = true"-->
<!-- >快手平台投放</el-button-->
<!-- >-->
</el-row>
<!-- 快手投放抽屉 -->
<ks-drawer :ks_drawerShow="ks_drawerShow" @closeKs="closeKs" />
<el-select
v-model="putinBaseInfo.pkg"
filterable
......@@ -415,113 +412,17 @@
</div>
</div>
<!-- 广告组 -->
<div class="drawer-item border-bottom">
<div class="drawer-item-title">广告组</div>
<el-tabs v-model="activePutin" @tab-click="handleTabSwitch">
<el-tab-pane label="新建投放" name="newPutin">
<el-form ref="form">
<!-- 添加广告组 -->
<!-- <add-adv-group :putinBaseInfo='putinBaseInfo' /> -->
<el-form-item label="选择投放目的">
<el-radio v-model="putinBaseInfo.landingType" label="APP">
应用推广
</el-radio>
<el-radio v-model="putinBaseInfo.landingType" label="LINK">
销售线索收集(H5落地页)
</el-radio>
</el-form-item>
<el-form-item label="广告组预算">
<div class="row-center-start">
<el-select
v-model="putinBaseInfo.budgetMode"
placeholder="请选择"
style="width: 100px"
>
<el-option
v-for="item in globalEnums.groupBudgetMode"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
<el-input
v-if="showGroupBudget"
v-model="putinBaseInfo.budget"
placeholder="不低于300元"
style="width: 150px; margin: 0 10px"
></el-input>
<span v-if="showGroupBudget"></span>
</div>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="选择已有" name="selectHad">
<span>已有广告组选择</span>
<el-form ref="form">
<el-form-item label="">
<div class="col-start-start" style="margin-bottom: 20px">
<template v-for="(item, index) of targetList">
<div
class="row-center-start"
style="margin-top: 20px"
:key="item.id"
>
<el-button
type="primary"
plain
@click="clickBtnGetData(item, index)"
>
{{ item.label }}
<!-- 广告主名称 -->
</el-button>
<!-- 选择框 -->
<el-select
v-model="advGroupSelect"
multiple
placeholder="请选择"
@visible-change="visibleChangeTarget2"
@change="changeAdvSelect(item)"
@blur="hiddenForm"
:class="index == indexAdv ? '' : 'activeClass'"
>
<el-option
v-for="item in advOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<div style="margin-left: 20px" v-if="item.advName">
{{ item.advName }}
</div>
</div>
</template>
</div>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
<!-- 投放范围和位置 -->
<div class="drawer-item">
<div class="drawer-item-title" style="font-weight: 700">
广告计划
广告系列
</div>
<div class="drawer-item-title">投放范围和位置</div>
<div class="drawer-item-title">选择广告系列类型</div>
<div class="drawer-item-con">
<el-form ref="form">
<el-form-item label="选择投放范围">
<el-form-item label="选择广告系列子类型">
<el-radio-group v-model="putinBaseInfo.deliveryRange">
<template v-for="item of globalEnums.deliveryRange">
<template v-for="item of globalEnums.campaignType">
<el-radio-button
:key="item.value"
:label="item.value"
......@@ -532,23 +433,7 @@
</el-radio-group>
</el-form-item>
<template v-if="putinBaseInfo.deliveryRange === 'UNION'">
<el-form-item label="投放形式">
<el-radio-group v-model="putinBaseInfo.unionVideoType">
<template v-for="item of globalEnums.unionVideoType">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>
{{ item.name }}
</el-radio-button>
</template>
</el-radio-group>
</el-form-item>
</template>
<el-form-item label="选择投放位置">
<el-form-item label="选择移动应用平台">
<el-radio-group
v-model="makeCreative.putinInventoryType"
@change="changePutinInventory"
......@@ -610,322 +495,20 @@
<!-- 投放目标 -->
<div class="drawer-item">
<div class="drawer-item-title">投放目标</div>
<div class="drawer-item-title">广告系列名称</div>
<div class="drawer-item-con">
<el-form>
<el-form-item
v-if="putinBaseInfo.landingType === 'APP'"
label="应用下载链接:"
>
<el-input
class="apk-input"
v-model="putinBaseInfo.landUrl"
></el-input>
</el-form-item>
<el-form-item
v-if="putinBaseInfo.landingType === 'LINK'"
label="落地页链接:"
>
<el-input
class="apk-input"
v-model="putinBaseInfo.landUrl"
></el-input>
</el-form-item>
<el-form-item
v-if="putinBaseInfo.landingType === 'APP'"
label="(🍊建站)下载详情页链接:"
>
<el-input
class="apk-input"
v-model="putinBaseInfo.webUrl"
></el-input>
</el-form-item>
<el-form-item label="转化目标">
<div class="col-start-start" style="margin-bottom: 20px">
<template v-for="(item, index) of targetList">
<div
class="row-center-start"
style="margin-top: 20px"
:key="item.id"
>
<el-button
type="primary"
plain
@click="changeBtn(item, index)"
>
{{ item.label }}
</el-button>
<!-- 选择框 -->
<el-select
v-show="isShow"
ref="selectTarget"
v-model="targetData"
placeholder="请选择"
@visible-change="visibleChangeTarget($event)"
@change="changeTarget"
@blur="hiddenForm"
:class="index == indexValue ? '' : 'activeClass'"
>
<el-option
v-for="item in targetItemList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-input
v-show="is_show_bid"
style="width: 200px"
:class="index == indexValue ? '' : 'activeClass'"
v-model="bidPrice"
@blur="handleBidPrice(item)"
placeholder="请输入转化目标价格"
></el-input>
<div style="margin-left: 20px">
{{ item.nameTag }}
{{ item.bidPrice ? item.bidPrice + "元" : "" }}
</div>
</div>
</template>
</div>
</el-form-item>
</el-form>
<el-input
class="apk-input"
v-model="putinBaseInfo.landUrl"
></el-input>
</div>
</div>
<!-- 预算和出价 -->
<div class="drawer-item" style="padding-bottom: 20px">
<div class="drawer-item-title">预算和出价</div>
<div class="drawer-item-title">地理位置</div>
<div class="drawer-item-con">
<el-form ref="form">
<el-form-item label="投放场景">
<el-radio-group v-model="putinBaseInfo.smartBidType">
<template v-for="item of globalEnums.smartBidType">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>{{ item.name }}</el-radio-button
>
</template>
</el-radio-group>
</el-form-item>
<el-form-item label="竞价策略">
<el-radio-group v-model="putinBaseInfo.flowControlMode">
<template v-for="item of globalEnums.flowControlMode">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>{{ item.name }}</el-radio-button
>
</template>
</el-radio-group>
</el-form-item>
<el-form-item label="预算(计划)">
<div class="row-center-start">
<el-select
v-model="putinBaseInfo.planBudgetMode"
placeholder="请选择"
style="width: 100px"
>
<el-option
v-for="item in globalEnums.planBudgetMode"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
<el-input
v-model="putinBaseInfo.planBudget"
placeholder="不低于500"
style="width: 150px; margin: 0 10px"
></el-input>
<span></span>
</div>
</el-form-item>
<el-form-item label="投放时间">
<el-radio-group v-model="putinBaseInfo.scheduleType">
<template v-for="item of globalEnums.scheduleType">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>{{ item.name }}</el-radio-button
>
</template>
</el-radio-group>
<template
v-if="putinBaseInfo.scheduleType === 'SCHEDULE_START_END'"
>
<el-date-picker
v-model="queryDate"
type="datetimerange"
:picker-options="dateOptions"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd HH:mm"
align="right"
style="margin-left: 10px"
>
</el-date-picker>
</template>
</el-form-item>
<el-form-item label="投放时段">
<el-radio-group v-model="putinBaseInfo.putinTarget">
<template v-for="item of putinTarget">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>
{{ item.name }}
</el-radio-button>
</template>
</el-radio-group>
<template v-if="putinBaseInfo.putinTarget === 2">
<el-select
v-model="putinBaseInfo.scheduleTime"
placeholder="请选择时段"
style="margin-left: 10px"
>
<el-option
v-for="item in globalEnums.scheduleTimeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</template>
</el-form-item>
<el-form-item label="付费方式">
<el-radio
v-model="putinBaseInfo.pricing"
label="PRICING_OCPM"
>
按展示付费(oCPM)
</el-radio>
</el-form-item>
<template v-if="putinBaseInfo.adjustCpa == 0">
<el-form-item> </el-form-item>
</template>
<el-form-item label="目标转化出价">
<template
v-if="
putinBaseInfo.smartBidType == 'SMART_BID_CONSERVATIVE'
"
>
<div>
针对<span class="fw-500">付费</span> 您的预估成本:<span
></span>,按展示付费(oCPM)
</div>
<div>
<el-checkbox
v-model="putinBaseInfo.adjustCpa"
:true-label="1"
:false-label="0"
>
我的预期成本不在此范围内,我需要在此基础上调整
</el-checkbox>
</div>
</template>
<div class="row-center-start">
<template
v-if="
!(
putinBaseInfo.smartBidType == 'SMART_BID_CONSERVATIVE'
) || putinBaseInfo.adjustCpa == 1
"
>
<el-input
v-model="putinBaseInfo.cpaBid"
placeholder="输入出价"
style="width: 150px; margin: 0 10px"
></el-input>
<span></span>
</template>
</div>
</el-form-item>
<el-form-item label="出价方式">
<el-radio-group v-model="bid_type" @change="bidChange">
<el-radio-button label="only">单一出价</el-radio-button>
<el-radio-button label="double">双出价</el-radio-button>
<el-radio-button
v-if="putinBaseInfo.smartBidType == 'SMART_BID_CUSTOM'"
label="ladder"
>阶梯出价</el-radio-button
>
</el-radio-group>
</el-form-item>
<el-form-item v-if="bid_type == 'double'" label="深度转化方式">
<el-radio-group
v-model="putinBaseInfo.deepBidType"
@change="test"
>
<template v-for="item of globalEnums.deepBidType">
<el-radio-button
:key="item.value"
:label="item.value"
:value="item.value"
>{{ item.name }}</el-radio-button
>
</template>
</el-radio-group>
</el-form-item>
<el-form-item v-if="bid_type == 'double'" label="深度转化出价">
<div class="row-center-start">
<el-input
v-model="putinBaseInfo.deepCpabid"
placeholder="深度转化出价"
style="width: 150px; margin: 0 10px"
></el-input>
<span></span>
</div>
</el-form-item>
<template v-if="putinBaseInfo.openLadder == 1">
<el-form-item label="阶梯价">
<el-input-number
v-model="putinBaseInfo.ladderPriceLow"
:precision="2"
:step="0.1"
></el-input-number>
~
<el-input-number
v-model="putinBaseInfo.ladderPriceHigh"
:precision="2"
:step="0.1"
></el-input-number>
</el-form-item>
<el-form-item label="步长">
<el-input-number
v-model="putinBaseInfo.ladderStep"
:precision="2"
:step="0.1"
></el-input-number>
</el-form-item>
</template>
</el-form>
<CountrySelector v-model="countries" />
</div>
</div>
......@@ -1729,6 +1312,7 @@ import ksDrawer from "./KSPlat";
import SelectText from "./childComponents/SelectText";
import AddAdvGroup from "./childComponents/AddAdvGroup";
import TextTextarea from "./childComponents/TextTextarea";
import CountrySelector from "./childComponents/CountrySelector";
import { stepList } from "./childComponents/util";
......@@ -1741,6 +1325,7 @@ export default {
ksDrawer,
AddAdvGroup,
TextTextarea,
CountrySelector,
}, // 注册
data() {
......@@ -1779,6 +1364,7 @@ export default {
{ label: "不限", type: 0 },
{ label: "自定义人群", type: 1 },
],
countries: [],
crowdValue: "不限", // 自定义人群的值
crowdAdvertiserId: "",
/* 测试假数据 使用 */
......@@ -2669,8 +2255,8 @@ export default {
// 获取App名称配置列表
_menuSelectApps: function () {
menuSelectApps({
platformId: 4,
menuCode: "putin.apps",
platformId: 5,
menuCode: "game.Overview,android",
}).then((res) => {
this.pkgList = res.result.data;
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment