Commit 0638bbb2 authored by jiyonggang's avatar jiyonggang

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/api/report.js
parents a3b18f26 7ce75464
...@@ -56,7 +56,7 @@ export function putinUpdateAdvertiseConversion(params) { ...@@ -56,7 +56,7 @@ export function putinUpdateAdvertiseConversion(params) {
// 创建投放任务 // 创建投放任务
export function putinCreatePutinTask(data) { export function putinCreatePutinTask(data) {
return request({ return request({
url: process.env.PUTIN_API + "/putin/create/putin-task", url: process.env.PUTIN_API + "/putin/task/createPutinTask",
method: "post", method: "post",
data data
}); });
...@@ -423,3 +423,4 @@ export function getGoogleTokenList() { ...@@ -423,3 +423,4 @@ export function getGoogleTokenList() {
// ---------------------------------------- // ----------------------------------------
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
v-model="lang.selected" v-model="lang.selected"
@change="handleLanguageChange(lang.code)" @change="handleLanguageChange(lang.code)"
> >
{{ lang.name }} {{ lang.nameCn }}
</el-checkbox> </el-checkbox>
</div> </div>
<el-divider content-position="center">已选择的语言</el-divider> <el-divider content-position="center">已选择的语言</el-divider>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
@close="removeLanguage(lang.code)" @close="removeLanguage(lang.code)"
class="selected-language" class="selected-language"
> >
{{ lang.name }} {{ lang.nameCn }}
</el-tag> </el-tag>
</transition-group> </transition-group>
</el-card> </el-card>
...@@ -44,16 +44,312 @@ export default { ...@@ -44,16 +44,312 @@ export default {
data() { data() {
return { return {
languages: [ languages: [
{ code: 'en', name: '英语', selected: true }, {
{ code: 'es', name: '西班牙语', selected: false }, "code": "en",
{ code: 'fr', name: '法语', selected: false }, "nameEn": "English",
{ code: 'de', name: '德语', selected: false }, "nameCn": "英语",
{ code: 'it', name: '意大利语', selected: false }, "criterionId": 1000
{ code: 'zh', name: '中文', selected: false }, },
{ code: 'ja', name: '日语', selected: false }, {
{ code: 'ko', name: '韩语', selected: false }, "code": "de",
{ code: 'ru', name: '俄语', selected: false }, "nameEn": "German",
{ code: 'ar', name: '阿拉伯语', selected: false }, "nameCn": "德语",
"criterionId": 1001
},
{
"code": "fr",
"nameEn": "French",
"nameCn": "法语",
"criterionId": 1002
},
{
"code": "es",
"nameEn": "Spanish",
"nameCn": "西班牙语",
"criterionId": 1003
},
{
"code": "it",
"nameEn": "Italian",
"nameCn": "意大利语",
"criterionId": 1004
},
{
"code": "ja",
"nameEn": "Japanese",
"nameCn": "日语",
"criterionId": 1005
},
{
"code": "da",
"nameEn": "Danish",
"nameCn": "丹麦语",
"criterionId": 1009
},
{
"code": "nl",
"nameEn": "Dutch",
"nameCn": "荷兰语",
"criterionId": 1010
},
{
"code": "fi",
"nameEn": "Finnish",
"nameCn": "芬兰语",
"criterionId": 1011
},
{
"code": "ko",
"nameEn": "Korean",
"nameCn": "韩语",
"criterionId": 1012
},
{
"code": "no",
"nameEn": "Norwegian",
"nameCn": "挪威语",
"criterionId": 1013
},
{
"code": "pt",
"nameEn": "Portuguese",
"nameCn": "葡萄牙语",
"criterionId": 1014
},
{
"code": "sv",
"nameEn": "Swedish",
"nameCn": "瑞典语",
"criterionId": 1015
},
{
"code": "zh_CN",
"nameEn": "Chinese (simplified)",
"nameCn": "简体中文",
"criterionId": 1017
},
{
"code": "zh_TW",
"nameEn": "Chinese (traditional)",
"nameCn": "繁体中文",
"criterionId": 1018
},
{
"code": "ar",
"nameEn": "Arabic",
"nameCn": "阿拉伯语",
"criterionId": 1019
},
{
"code": "bg",
"nameEn": "Bulgarian",
"nameCn": "保加利亚语",
"criterionId": 1020
},
{
"code": "cs",
"nameEn": "Czech",
"nameCn": "捷克语",
"criterionId": 1021
},
{
"code": "el",
"nameEn": "Greek",
"nameCn": "希腊语",
"criterionId": 1022
},
{
"code": "hi",
"nameEn": "Hindi",
"nameCn": "印地语",
"criterionId": 1023
},
{
"code": "hu",
"nameEn": "Hungarian",
"nameCn": "匈牙利语",
"criterionId": 1024
},
{
"code": "id",
"nameEn": "Indonesian",
"nameCn": "印尼语",
"criterionId": 1025
},
{
"code": "is",
"nameEn": "Icelandic",
"nameCn": "冰岛语",
"criterionId": 1026
},
{
"code": "iw",
"nameEn": "Hebrew",
"nameCn": "希伯来语",
"criterionId": 1027
},
{
"code": "lv",
"nameEn": "Latvian",
"nameCn": "拉脱维亚语",
"criterionId": 1028
},
{
"code": "lt",
"nameEn": "Lithuanian",
"nameCn": "立陶宛语",
"criterionId": 1029
},
{
"code": "pl",
"nameEn": "Polish",
"nameCn": "波兰语",
"criterionId": 1030
},
{
"code": "ru",
"nameEn": "Russian",
"nameCn": "俄语",
"criterionId": 1031
},
{
"code": "ro",
"nameEn": "Romanian",
"nameCn": "罗马尼亚语",
"criterionId": 1032
},
{
"code": "sk",
"nameEn": "Slovak",
"nameCn": "斯洛伐克语",
"criterionId": 1033
},
{
"code": "sl",
"nameEn": "Slovenian",
"nameCn": "斯洛文尼亚语",
"criterionId": 1034
},
{
"code": "sr",
"nameEn": "Serbian",
"nameCn": "塞尔维亚语",
"criterionId": 1035
},
{
"code": "uk",
"nameEn": "Ukrainian",
"nameCn": "乌克兰语",
"criterionId": 1036
},
{
"code": "tr",
"nameEn": "Turkish",
"nameCn": "土耳其语",
"criterionId": 1037
},
{
"code": "ca",
"nameEn": "Catalan",
"nameCn": "加泰罗尼亚语",
"criterionId": 1038
},
{
"code": "hr",
"nameEn": "Croatian",
"nameCn": "克罗地亚语",
"criterionId": 1039
},
{
"code": "vi",
"nameEn": "Vietnamese",
"nameCn": "越南语",
"criterionId": 1040
},
{
"code": "ur",
"nameEn": "Urdu",
"nameCn": "乌尔都语",
"criterionId": 1041
},
{
"code": "tl",
"nameEn": "Filipino",
"nameCn": "菲律宾语",
"criterionId": 1042
},
{
"code": "et",
"nameEn": "Estonian",
"nameCn": "爱沙尼亚语",
"criterionId": 1043
},
{
"code": "th",
"nameEn": "Thai",
"nameCn": "泰语",
"criterionId": 1044
},
{
"code": "bn",
"nameEn": "Bengali",
"nameCn": "孟加拉语",
"criterionId": 1056
},
{
"code": "fa",
"nameEn": "Persian",
"nameCn": "波斯语",
"criterionId": 1064
},
{
"code": "gu",
"nameEn": "Gujarati",
"nameCn": "古吉拉特语",
"criterionId": 1072
},
{
"code": "kn",
"nameEn": "Kannada",
"nameCn": "卡纳达语",
"criterionId": 1086
},
{
"code": "ml",
"nameEn": "Malayalam",
"nameCn": "马拉雅拉姆语",
"criterionId": 1098
},
{
"code": "mr",
"nameEn": "Marathi",
"nameCn": "马拉地语",
"criterionId": 1101
},
{
"code": "ms",
"nameEn": "Malay",
"nameCn": "马来语",
"criterionId": 1102
},
{
"code": "pa",
"nameEn": "Punjabi",
"nameCn": "旁遮普语",
"criterionId": 1110
},
{
"code": "ta",
"nameEn": "Tamil",
"nameCn": "泰米尔语",
"criterionId": 1130
},
{
"code": "te",
"nameEn": "Telugu",
"nameCn": "泰卢固语",
"criterionId": 1131
}
], ],
}; };
}, },
......
<template>
<div class="text-input-list">
<!-- 文本输入列表 -->
<div class="input-list">
<div
v-for="(text, index) in innerTexts"
:key="index"
class="input-item"
>
<el-input
v-model="innerTexts[index]"
:placeholder="`${placeholder} #${index + 1}`"
:maxlength="maxLength"
:class="{
'is-error': isOverLength(text),
'is-focused': focusedIndex === index
}"
show-word-limit="true"
@input="handleInput(index)"
@focus="focusedIndex = index"
@blur="focusedIndex = -1"
width="50%"
>
<template slot="append">
<el-button
v-if="canDelete(index)"
icon="el-icon-delete"
@click="handleRemove(index)"
class="delete-button"
></el-button>
</template>
</el-input>
<div class="input-status">
<transition name="fade">
<span v-if="duplicateIndexes.includes(index)" class="duplicate-warning">
重复内容
</span>
</transition>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'TextInputList',
props: {
value: {
type: Array,
default: () => ['']
},
maxLength: {
type: Number,
default: 100
},
placeholder: {
type: String,
default: '请输入文本'
},
warningThreshold: {
type: Number,
default: 0.9 // 默认在90%时显示警告
}
},
data() {
return {
innerTexts: [''],
focusedIndex: -1,
duplicateIndexes: []
}
},
watch: {
value: {
handler(newVal) {
const valueToSet = newVal.length ? newVal : ['']
if (JSON.stringify(this.getNonEmptyTexts()) !== JSON.stringify(valueToSet)) {
this.innerTexts = [...valueToSet]
if (!this.innerTexts[this.innerTexts.length - 1]) {
this.innerTexts.push('')
}
}
},
immediate: true,
deep: true
}
},
methods: {
getNonEmptyTexts() {
return this.innerTexts.filter(text => text.trim() !== '')
},
isOverLength(text) {
return text.length > this.maxLength
},
canDelete(index) {
return this.innerTexts.length > 1
},
handleInput(index) {
const text = this.innerTexts[index]
this.duplicateIndexes = [] // 清除之前的重复标记
// 检查重复
const duplicateIndex = this.innerTexts.findIndex((t, i) =>
i !== index && t.trim() === text.trim() && text.trim() !== ''
)
if (duplicateIndex !== -1) {
this.$message({
message: '该文本已存在,请输入其他内容',
type: 'warning',
duration: 2000
})
this.duplicateIndexes = [index]
this.$set(this.innerTexts, index, '')
return
}
// 如果是最后一行且有内容,添加新行
if (index === this.innerTexts.length - 1 && text.trim() !== '') {
this.innerTexts.push('')
}
// 更新父组件的值
this.$emit('input', this.getNonEmptyTexts())
},
handleRemove(index) {
this.innerTexts.splice(index, 1)
if (this.innerTexts.length === 0) {
this.innerTexts.push('')
}
this.$emit('input', this.getNonEmptyTexts())
}
}
}
</script>
<style>
.text-input-list {
width: 100%;
}
.input-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.input-item {
position: relative;
margin-bottom: 24px;
transition: all 0.3s ease;
}
.input-item:hover .delete-button {
opacity: 1;
}
.delete-button {
opacity: 0.5;
transition: opacity 0.3s ease;
}
.delete-button:hover {
opacity: 1;
}
/* 输入框样式 */
.el-input.is-focused .el-input__inner {
border-color: #409EFF;
box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
}
.el-input__inner {
transition: all 0.3s ease;
}
.el-input.is-error .el-input__inner {
border-color: #F56C6C;
box-shadow: 0 0 0 2px rgba(245, 108, 108, 0.1);
}
/* 状态显示区域 */
.input-status {
position: absolute;
left: 0;
bottom: -20px;
display: flex;
gap: 8px;
align-items: center;
font-size: 12px;
}
.input-counter {
color: #909399;
transition: all 0.3s ease;
}
.input-counter.is-error {
color: #F56C6C;
}
.input-counter.is-warning {
color: #E6A23C;
}
.duplicate-warning {
color: #F56C6C;
display: flex;
align-items: center;
}
/* 动画效果 */
.fade-enter-active, .fade-leave-active {
transition: opacity 0.3s ease;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
/* 输入框组样式 */
.el-input-group__append {
padding: 0;
}
.el-input-group__append .el-button {
border: none;
margin: 0;
height: 100%;
color: #909399;
}
.el-input-group__append .el-button:hover {
color: #F56C6C;
background-color: #fef0f0;
}
</style>
This diff is collapsed.
...@@ -241,8 +241,8 @@ export default { ...@@ -241,8 +241,8 @@ export default {
methods: { methods: {
APIgetSelectApps() { APIgetSelectApps() {
const params = { const params = {
platformId: 4, platformId: 5,
menuCode: "putin.apps", menuCode: "game.Overview,android",
}; };
getSelectApps(params).then((res) => { getSelectApps(params).then((res) => {
console.log("创意素材组下的下拉列表", res); console.log("创意素材组下的下拉列表", res);
......
...@@ -484,8 +484,8 @@ export default { ...@@ -484,8 +484,8 @@ export default {
// 创意素材组获取列表 // 创意素材组获取列表
APIgetSelectApps() { APIgetSelectApps() {
const params = { const params = {
platformId: 4, platformId: 5,
menuCode: "putin.apps", menuCode: "game.Overview,android",
isGroup: "group", isGroup: "group",
}; };
getSelectApps(params).then((res) => { getSelectApps(params).then((res) => {
......
...@@ -740,8 +740,8 @@ export default { ...@@ -740,8 +740,8 @@ export default {
methods: { methods: {
APIgetSelectApps() { APIgetSelectApps() {
const params = { const params = {
platformId: 4, platformId: 5,
menuCode: "putin.apps", menuCode: "game.Overview,android",
}; };
getSelectApps(params).then((res) => { getSelectApps(params).then((res) => {
// console.log("创意素材组下的下拉列表", res); // console.log("创意素材组下的下拉列表", res);
......
...@@ -4,18 +4,12 @@ ...@@ -4,18 +4,12 @@
<el-tab-pane label="素材组" name="first"> <el-tab-pane label="素材组" name="first">
<materialGroup v-if="isFirst"> </materialGroup> <materialGroup v-if="isFirst"> </materialGroup>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="衍生组" name="derive">
<materialDerive v-if="isDerive"> </materialDerive>
</el-tab-pane>
<el-tab-pane label="视图素材" name="second"> <el-tab-pane label="视图素材" name="second">
<materiallibrary v-if="isSecond"></materiallibrary> <materiallibrary v-if="isSecond"></materiallibrary>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="文案素材" name="copywriting"> <el-tab-pane label="文案素材" name="copywriting">
<copywritinglibrary v-if="isCopywriting"></copywritinglibrary> <copywritinglibrary v-if="isCopywriting"></copywritinglibrary>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="试玩素材" name="tryplaymaterial">
<try-play-material v-if="isTryPlayMaterial" />
</el-tab-pane>
<el-tab-pane label="素材推荐" name="materialRecommend"> <el-tab-pane label="素材推荐" name="materialRecommend">
<material-recommend v-if="isRecommend" /> <material-recommend v-if="isRecommend" />
</el-tab-pane> </el-tab-pane>
...@@ -27,7 +21,6 @@ ...@@ -27,7 +21,6 @@
// import { getUrlKey } from "../uti"; // import { getUrlKey } from "../uti";
import { getEnums, getSelectApps } from "@/api/cloud"; import { getEnums, getSelectApps } from "@/api/cloud";
import materialGroup from "./common/materialGroup"; import materialGroup from "./common/materialGroup";
import materialDerive from "./common/materialDerive";
import copywritinglibrary from "./common/copywritinglibrary"; import copywritinglibrary from "./common/copywritinglibrary";
import materiallibrary from "./common/materiallibrary"; import materiallibrary from "./common/materiallibrary";
import TryPlayMaterial from "./common/TryPlayMaterial"; import TryPlayMaterial from "./common/TryPlayMaterial";
...@@ -37,8 +30,6 @@ export default { ...@@ -37,8 +30,6 @@ export default {
materialGroup, materialGroup,
copywritinglibrary, copywritinglibrary,
materiallibrary, materiallibrary,
materialDerive,
TryPlayMaterial,
MaterialRecommend, MaterialRecommend,
}, },
data() { data() {
...@@ -47,10 +38,8 @@ export default { ...@@ -47,10 +38,8 @@ export default {
checkAll: false, checkAll: false,
activeName: "first", activeName: "first",
isFirst: true, isFirst: true,
isDerive: false,
isSecond: false, isSecond: false,
isCopywriting: false, isCopywriting: false,
isTryPlayMaterial: false,
isRecommend: false, isRecommend: false,
/* 提取任务*/ /* 提取任务*/
options2: [], options2: [],
...@@ -92,43 +81,26 @@ export default { ...@@ -92,43 +81,26 @@ export default {
this.isFirst = true; this.isFirst = true;
this.isSecond = false; this.isSecond = false;
this.isCopywriting = false; this.isCopywriting = false;
this.isDerive = false;
this.isTryPlayMaterial = false;
this.isRecommend = false; this.isRecommend = false;
} else if (tab.name === "second") { } else if (tab.name === "second") {
this.isFirst = false; this.isFirst = false;
this.isSecond = true; this.isSecond = true;
this.isCopywriting = false; this.isCopywriting = false;
this.isDerive = false;
this.isTryPlayMaterial = false;
this.isRecommend = false; this.isRecommend = false;
} else if (tab.name === "copywriting") { } else if (tab.name === "copywriting") {
this.isFirst = false; this.isFirst = false;
this.isSecond = false; this.isSecond = false;
this.isCopywriting = true; this.isCopywriting = true;
this.isDerive = false;
this.isTryPlayMaterial = false;
this.isRecommend = false;
} else if (tab.name === "derive") {
this.isFirst = false;
this.isSecond = false;
this.isCopywriting = false;
this.isDerive = true;
this.isTryPlayMaterial = false;
this.isRecommend = false; this.isRecommend = false;
} else if (tab.name === "tryplaymaterial") { } else if (tab.name === "tryplaymaterial") {
this.isFirst = false; this.isFirst = false;
this.isSecond = false; this.isSecond = false;
this.isCopywriting = false; this.isCopywriting = false;
this.isDerive = false;
this.isTryPlayMaterial = true;
this.isRecommend = false; this.isRecommend = false;
} else if (tab.name == "materialRecommend") { } else if (tab.name == "materialRecommend") {
this.isFirst = false; this.isFirst = false;
this.isSecond = false; this.isSecond = false;
this.isCopywriting = false; this.isCopywriting = false;
this.isDerive = false;
this.isTryPlayMaterial = false;
this.isRecommend = true; this.isRecommend = true;
} }
}, },
......
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