|
@@ -98,7 +98,7 @@
|
|
|
<el-form-item label="商品" prop="commodity" style="width: 100%; margin-top: 20px">
|
|
|
<div style="width: 100%; height: 620px; display: flex; border: 1px solid #c2c7cf; border-radius: 6px">
|
|
|
<div style="width: 50%; border-right: 1px solid #c2c7cf">
|
|
|
- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleGoodsTabs">
|
|
|
+ <el-tabs v-model="activeName" class="demo-tabs">
|
|
|
<el-tab-pane label="搜索" name="first">
|
|
|
<div style="margin-bottom: 10px">
|
|
|
<el-input v-model="searchInp" placeholder="Please input" class="input-with-select" @change="inpChange" clearable>
|
|
@@ -170,14 +170,14 @@
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="输入" name="second">
|
|
|
<el-input
|
|
|
- style="padding: 10px;"
|
|
|
- v-model="textarea"
|
|
|
+ style="padding: 10px"
|
|
|
+ v-model="goodsTextarea"
|
|
|
:rows="20"
|
|
|
type="textarea"
|
|
|
- placeholder="请输入ASIN,多个ASIN使用逗号、空格或换行符分隔。"
|
|
|
+ placeholder="请输入ASIN,多个ASIN使用逗号、空格或换行符分隔。(未完成)"
|
|
|
maxlength="11000" />
|
|
|
<div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
|
|
|
- <el-button v-for="button in buttons" :key="button.text" :type="button.type" link>{{ button.text }}</el-button>
|
|
|
+ <el-button v-for="button in buttons" :key="button.text" :type="button.type" link @click="addGods">{{ button.text }}</el-button>
|
|
|
</div>
|
|
|
<!-- <el-row :gutter="12" style="margin-top: 50px">
|
|
|
<el-col :span="12">
|
|
@@ -261,7 +261,7 @@
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<!-- 自动定向 -->
|
|
|
- <div class="column-item">
|
|
|
+ <div class="column-item" v-if="ruleForm.type == 'auto'">
|
|
|
<p style="color: #606266; font-weight: 450"><span style="color: #e47470">*</span> 自动定向</p>
|
|
|
<el-radio-group v-model="ruleForm.autoRedirect" @change="changeBid">
|
|
|
<div style="display: flex">
|
|
@@ -278,7 +278,7 @@
|
|
|
</el-radio-group>
|
|
|
</div>
|
|
|
<!-- 自动定向---按目标组设置出价 -->
|
|
|
- <el-card v-if="showCard" class="box-card">
|
|
|
+ <el-card v-if="showCard && ruleForm.type == 'auto'" class="box-card">
|
|
|
<div>
|
|
|
<div style="color: #8e9095">
|
|
|
<span>目标群体</span>
|
|
@@ -338,14 +338,105 @@
|
|
|
</div>
|
|
|
</el-card>
|
|
|
|
|
|
- <el-form-item label="手动" v-if="ruleForm.type === 'manual'">
|
|
|
- <el-card>1233</el-card>
|
|
|
+ <!-- 投放类型 -->
|
|
|
+ <div class="column-item" v-if="ruleForm.type == 'manual'">
|
|
|
+ <p style="color: #606266; font-weight: 450"><span style="color: #e47470">*</span> 投放类型</p>
|
|
|
+ <el-radio-group v-model="ruleForm.targetType" @change="changeTargetType">
|
|
|
+ <div style="display: flex">
|
|
|
+ <el-radio label="keyWords" style="align-items: flex-start; margin-top: 5px">
|
|
|
+ <div style="margin-top: -4px">关键词投放</div>
|
|
|
+ <div>选择关键词以帮助您的商品出现在购物者搜索中</div>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-radio label="Goods" style="align-items: flex-start; margin-top: 20px">
|
|
|
+ <div style="margin-top: -4px">商品投放</div>
|
|
|
+ <div>选择关键词以帮助您的商品出现在购物者搜索中</div>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ <!-- 关键词定向 -->
|
|
|
+ <div style="font-size: 20px; font-weight: bold; margin-top: 30px" v-if="ruleForm.targetType == 'keyWords' && ruleForm.type == 'manual'">
|
|
|
+ 关键词定向
|
|
|
+ </div>
|
|
|
+ <hr v-if="ruleForm.targetType == 'keyWords' && ruleForm.type == 'manual'" />
|
|
|
+ <el-form-item style="width: 100%; margin-top: 20px" v-if="ruleForm.targetType == 'keyWords' && ruleForm.type == 'manual'">
|
|
|
+ <div style="width: 100%; height: 520px; display: flex; border: 1px solid #c2c7cf; border-radius: 6px">
|
|
|
+ <div style="width: 50%; border-right: 1px solid #c2c7cf">
|
|
|
+ <el-tabs v-model="keyWordsTabs" class="demo-tabs" @tab-click="handleGoodsTabs">
|
|
|
+ <div style="margin: 8px">
|
|
|
+ <p style="margin-left: 8px; margin-bottom: -8px; font-weight: 500; color: #616266">竞价:</p>
|
|
|
+ <div style="display: flex; align-items: center">
|
|
|
+ <el-select v-model="bidType" class="m-2" placeholder="Select" style="width: 450px">
|
|
|
+ <el-option v-for="item in bidTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <el-input v-model="bidInput" placeholder="Please input">
|
|
|
+ <template #prepend>$</template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <span style="margin: 0 10px 0 8px; font-weight: 500; color: #616266">匹配类型: </span>
|
|
|
+ <el-checkbox v-model="widelyType" label="广泛" />
|
|
|
+ <el-checkbox v-model="phraseType" label="词组" />
|
|
|
+ <el-checkbox v-model="exactType" label="精确" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-tab-pane label="建议" name="first">
|
|
|
+ <el-table
|
|
|
+ height="345"
|
|
|
+ style="width: 100%; padding-left: 5px"
|
|
|
+ v-loading="loading"
|
|
|
+ :data="keyWordsTableData"
|
|
|
+ :header-cell-style="headerCellStyle"
|
|
|
+ :header-row-style="changeKeyWordsTableHeader">
|
|
|
+ <el-table-column prop="asin" label="关键词"> </el-table-column>
|
|
|
+ <el-table-column prop="name" label="匹配类型"> </el-table-column>
|
|
|
+ <el-table-column prop="name" label="建议出价" width="120"> </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="输入" name="second">
|
|
|
+ <el-input v-model="keyWordsTextarea" :rows="10" type="textarea" placeholder="未完成" style="padding-left: 5px" />
|
|
|
+ <el-button type="primary" size="small" text bg @click="addKeyWords">添加</el-button>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
+ <div style="width: 50%">
|
|
|
+ <el-card class="box-card" shadow="never">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span style="font-weight: 550; font-size: 15px; color: #1f2128">已添加: {{ addedData.length }}</span>
|
|
|
+ <el-button class="button" text bg @click="delAllKeyWords">全部删除</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="card-body">
|
|
|
+ <el-table
|
|
|
+ :data="addedKeyWordsTableData"
|
|
|
+ style="width: 100%"
|
|
|
+ :header-row-style="changeKeyWordsTableHeader"
|
|
|
+ :header-cell-style="headerCellStyle">
|
|
|
+ <el-table-column prop="keyword" label="关键词" width="auto" />
|
|
|
+ <el-table-column prop="bid" label="出价" />
|
|
|
+ <el-table-column prop="suggestBid" label="建议出价" />
|
|
|
+ <el-table-column prop="operate" label="操作" width="60" align="right" />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ <div style="padding: 0 10px 0 10px; margin-top: -12px"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <div style="font-size: 20px; font-weight: bold; margin-top: 30px">否定词</div>
|
|
|
- <hr />
|
|
|
+ <div
|
|
|
+ style="font-size: 20px; font-weight: bold; margin-top: 30px"
|
|
|
+ v-if="ruleForm.type === 'auto' || (ruleForm.targetType === 'keyWords' && ruleForm.type === 'manual')">
|
|
|
+ 否定词
|
|
|
+ </div>
|
|
|
+ <hr v-if="ruleForm.type === 'auto' || (ruleForm.targetType === 'keyWords' && ruleForm.type === 'manual')" />
|
|
|
<!-- 否定词表格 -->
|
|
|
- <el-form-item prop="matchType" style="width: 100%; margin-top: 20px">
|
|
|
+ <el-form-item
|
|
|
+ style="width: 100%; margin-top: 20px"
|
|
|
+ v-if="ruleForm.type === 'auto' || (ruleForm.targetType === 'keyWords' && ruleForm.type === 'manual')">
|
|
|
<div style="width: 100%; height: 520px; display: flex; border: 1px solid #c2c7cf; border-radius: 6px">
|
|
|
<div style="width: 50%; border-right: 1px solid #c2c7cf">
|
|
|
<div style="margin: 10px 0">
|
|
@@ -388,11 +479,88 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
+ <!-- 商品定向 -->
|
|
|
+ <div style="font-size: 20px; font-weight: bold; margin-top: 30px" v-if="ruleForm.targetType == 'Goods'">商品定向</div>
|
|
|
+ <hr v-if="ruleForm.targetType == 'Goods'" />
|
|
|
+ <el-form-item style="width: 100%; margin-top: 20px" v-if="ruleForm.targetType == 'Goods'">
|
|
|
+ <div style="width: 100%; height: 520px; display: flex; border: 1px solid #c2c7cf; border-radius: 6px">
|
|
|
+ <div style="width: 50%; border-right: 1px solid #c2c7cf">
|
|
|
+ <el-tabs type="border-card" stretch class="goods-orientation-tabs">
|
|
|
+ <el-tab-pane label="品类">
|
|
|
+ <div style="display: flex; align-items: center">
|
|
|
+ <span style="width: 40px">竞价:</span>
|
|
|
+ <el-select v-model="categoryBiddingType" class="m-2" placeholder="Select">
|
|
|
+ <el-option v-for="item in categoryBiddingTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <el-input v-model="categoryBidInput" placeholder="Please input" style="width: 200px">
|
|
|
+ <template #prepend>$</template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <el-tabs v-model="categoryTabs" class="category-tabs">
|
|
|
+ <el-tab-pane label="建议" name="first">User</el-tab-pane>
|
|
|
+ <el-tab-pane label="搜索" name="second">Config</el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="单个商品">
|
|
|
+ <div style="display: flex; align-items: center">
|
|
|
+ <span style="width: 40px">竞价:</span>
|
|
|
+ <el-select v-model="categoryBiddingType" class="m-2" placeholder="Select">
|
|
|
+ <el-option v-for="item in categoryBiddingTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <el-input v-model="categoryBidInput" placeholder="Please input" style="width: 200px">
|
|
|
+ <template #prepend>$</template>
|
|
|
+ </el-input>
|
|
|
+ <div style="margin-left: 20px">
|
|
|
+ <span style="margin-right: 10px">类型:</span>
|
|
|
+ <el-checkbox v-model="expand" label="拓展" />
|
|
|
+ <el-checkbox v-model="accurate" label="精准" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-tabs v-model="singleGoodsTabs" class="category-tabs">
|
|
|
+ <el-tab-pane label="建议" name="first">User</el-tab-pane>
|
|
|
+ <el-tab-pane label="搜索" name="second">Config</el-tab-pane>
|
|
|
+ <el-tab-pane label="输入" name="third">Third</el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
+ <div style="width: 50%">
|
|
|
+ <el-card class="box-card" shadow="never">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span style="font-weight: 550; font-size: 15px; color: #1f2128">已添加: {{ addedData.length }}</span>
|
|
|
+ <el-button class="button" text bg @click="delAllKeyWords">全部删除</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="card-body">
|
|
|
+ <el-table
|
|
|
+ :data="addedKeyWordsTableData"
|
|
|
+ style="width: 100%"
|
|
|
+ :header-row-style="changeKeyWordsTableHeader"
|
|
|
+ :header-cell-style="headerCellStyle">
|
|
|
+ <el-table-column prop="keyword" label="关键词" width="auto" />
|
|
|
+ <el-table-column prop="bid" label="出价" />
|
|
|
+ <el-table-column prop="suggestBid" label="建议出价" />
|
|
|
+ <el-table-column prop="operate" label="操作" width="60" align="right" />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ <div style="padding: 0 10px 0 10px; margin-top: -12px"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <div style="font-size: 20px; font-weight: bold; margin-top: 30px">否定商品</div>
|
|
|
- <hr />
|
|
|
+ <div
|
|
|
+ style="font-size: 20px; font-weight: bold; margin-top: 30px"
|
|
|
+ v-if="ruleForm.type == 'auto' || (ruleForm.targetType == 'Goods' && ruleForm.type === 'manual')">
|
|
|
+ 否定商品
|
|
|
+ </div>
|
|
|
+ <hr v-if="ruleForm.type == 'auto' || (ruleForm.targetType == 'Goods' && ruleForm.type === 'manual')" />
|
|
|
<!-- 否定商品表格 -->
|
|
|
- <el-form-item prop="matchType" style="width: 100%; margin-top: 20px">
|
|
|
+ <el-form-item
|
|
|
+ prop="matchType"
|
|
|
+ style="width: 100%; margin-top: 20px"
|
|
|
+ v-if="ruleForm.type == 'auto' || (ruleForm.targetType == 'Goods' && ruleForm.type === 'manual')">
|
|
|
<div style="width: 100%; height: 520px; display: flex; border: 1px solid #c2c7cf; border-radius: 6px">
|
|
|
<div style="width: 50%; border-right: 1px solid #c2c7cf">
|
|
|
<el-tabs v-model="negativeTabs" class="demo-tabs" @tab-click="handleNegGoodsTabs">
|
|
@@ -437,7 +605,7 @@
|
|
|
v-model="ruleForm.negativeGoodsTextarea"
|
|
|
:rows="17"
|
|
|
type="textarea"
|
|
|
- placeholder="请输入关键词,多个关键词使用逗号或者换行符分隔。(最多添加1000个关键词)"
|
|
|
+ placeholder="未完成"
|
|
|
maxlength="11000"
|
|
|
style="padding: 10px 10px" />
|
|
|
<div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
|
|
@@ -530,12 +698,18 @@ const totalItems = ref() // 数据总量
|
|
|
const showCard = ref(false)
|
|
|
const activeName = ref('first')
|
|
|
const negativeTabs = ref('first')
|
|
|
+const keyWordsTabs = ref('first')
|
|
|
+const productOrientationTabs = ref('first')
|
|
|
+const categoryTabs = ref('first')
|
|
|
+const singleGoodsTabs = ref('first')
|
|
|
const searchInp = ref('')
|
|
|
const select = ref('name')
|
|
|
const select2 = ref('latest')
|
|
|
-const textarea = ref('')
|
|
|
const buttons = [{ type: 'primary', text: '添加' }] as const
|
|
|
const negativeInput = ref('')
|
|
|
+let widelyType = ref(true)
|
|
|
+let phraseType = ref(true)
|
|
|
+let exactType = ref(true)
|
|
|
|
|
|
// 表单相关数据
|
|
|
const formSize = ref('default')
|
|
@@ -569,6 +743,7 @@ interface RuleForm {
|
|
|
preciseNegation: boolean
|
|
|
negativeTextarea: string
|
|
|
negativeGoodsTextarea: string
|
|
|
+ targetType: string
|
|
|
}
|
|
|
const ruleForm = reactive<RuleForm>({
|
|
|
name: 'Hello',
|
|
@@ -598,6 +773,7 @@ const ruleForm = reactive<RuleForm>({
|
|
|
preciseNegation: true,
|
|
|
negativeTextarea: '',
|
|
|
negativeGoodsTextarea: '',
|
|
|
+ targetType: 'keyWords',
|
|
|
})
|
|
|
const rules = computed(() => ({
|
|
|
name: [{ required: true, message: 'Please input Activity name', trigger: 'blur' }],
|
|
@@ -630,6 +806,10 @@ function changeBid() {
|
|
|
console.log(ruleForm.autoRedirect)
|
|
|
showCard.value = ruleForm.autoRedirect === 'targetBid'
|
|
|
}
|
|
|
+function changeTargetType() {
|
|
|
+ console.log(ruleForm.targetType)
|
|
|
+ showCard.value = ruleForm.targetType === 'keyWords'
|
|
|
+}
|
|
|
// 切换投放类型
|
|
|
function changeType() {}
|
|
|
|
|
@@ -645,8 +825,63 @@ function handleSizeChange(newSize) {
|
|
|
currentPage.value = 1 // 重置到第一页
|
|
|
}
|
|
|
|
|
|
+// ------------------------------------------商品定向模块------------------------------------------
|
|
|
+const categoryBiddingType = ref('customBid')
|
|
|
+const categoryBiddingTypeOptions = [
|
|
|
+ {
|
|
|
+ value: 'defaultBid',
|
|
|
+ label: '默认竞价',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'customBid',
|
|
|
+ label: '自定义竞价',
|
|
|
+ },
|
|
|
+]
|
|
|
+const categoryBidInput = ref('0.75')
|
|
|
+const expand = ref(true)
|
|
|
+const accurate = ref(false)
|
|
|
+
|
|
|
+// ------------------------------------------关键词定向模块------------------------------------------
|
|
|
+const bidType = ref('customBid')
|
|
|
+const bidTypeOptions = [
|
|
|
+ // 竞价select下拉选项
|
|
|
+ {
|
|
|
+ value: 'suggestBid',
|
|
|
+ label: '建议出价',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'customBid',
|
|
|
+ label: '自定义出价',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'defaultBid',
|
|
|
+ label: '默认出价',
|
|
|
+ },
|
|
|
+]
|
|
|
+
|
|
|
+const bidInput = ref('0.75')
|
|
|
+const keyWordsTableData = ref([]) // 关键词定向左侧表格数据
|
|
|
+const addedKeyWordsTableData = ref([]) // 关键词定向右侧表格数据
|
|
|
+const keyWordsTextarea = ref('')
|
|
|
+
|
|
|
+function delAllKeyWords() {
|
|
|
+ // 删除已经添加的关键词
|
|
|
+ addedKeyWordsTableData.value = []
|
|
|
+}
|
|
|
+
|
|
|
+function addKeyWords() {
|
|
|
+ // 添加关键词
|
|
|
+ if (keyWordsTextarea.value) {
|
|
|
+ addedKeyWordsTableData.value.push({
|
|
|
+ keyWords: keyWordsTextarea.value,
|
|
|
+ })
|
|
|
+ keyWordsTextarea.value = ''
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// ------------------------------------------广告组商品表格模块------------------------------------------
|
|
|
+const goodsTextarea = ref('')
|
|
|
|
|
|
-// ---------------------广告组商品表格模块---------------------
|
|
|
function setTableData(asin = '', sku = '') {
|
|
|
return request({
|
|
|
url: '/api/sellers/listings/',
|
|
@@ -682,6 +917,24 @@ function addSingleGoods(scope) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function addGods() {
|
|
|
+ const inputData = goodsTextarea.value
|
|
|
+ const asins = inputData.split(/[\n,]+/)
|
|
|
+
|
|
|
+ asins.forEach((asin) => {
|
|
|
+ if (asin.trim()) {
|
|
|
+ setTableData(asin.trim())
|
|
|
+ .then((response) => {
|
|
|
+ // 假设你的数据是在 response.data 中
|
|
|
+ console.log(`Data for ASIN ${asin}:`, response) // 更新这里来正确地访问数据
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.error(`Error fetching data for ASIN ${asin}:`, error)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
function delSingleGoods(scope) {
|
|
|
const index = addedData.value.findIndex((item) => item.sku === scope.row.sku)
|
|
|
|
|
@@ -750,8 +1003,7 @@ const handleGoodsTabs = (tab: TabsPaneContext, event: Event) => {
|
|
|
console.log(tab, event)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-// ---------------------否定词模块---------------------
|
|
|
+// ------------------------------------------否定词模块------------------------------------------
|
|
|
function addNegative() {
|
|
|
// 删除 negativeTextarea 前后的空格
|
|
|
const trimmedText = ruleForm.negativeTextarea.trim()
|
|
@@ -795,13 +1047,12 @@ function delSingleNegative(scope) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-// ---------------------否定商品模块---------------------
|
|
|
+// ------------------------------------------否定商品模块------------------------------------------
|
|
|
let negativeList = reactive([])
|
|
|
const tableData = negativeList
|
|
|
let inputAddedNegGoods = ref([])
|
|
|
|
|
|
-function setNegativeTableData(asin = '',) {
|
|
|
+function setNegativeTableData(asin = '') {
|
|
|
return request({
|
|
|
url: '/api/sellers/listings/',
|
|
|
method: 'GET',
|
|
@@ -840,8 +1091,6 @@ function addNegativeGoods() {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
function addSingleNegativeGoods(scope) {
|
|
|
console.log('scope', scope.row)
|
|
|
|
|
@@ -885,9 +1134,7 @@ function handleNegGoodsTabs(tab: TabsPaneContext, event: Event) {
|
|
|
// console.log(tab, event)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-// ---------------------自定义校验模块---------------------
|
|
|
+// ------------------------------------------自定义校验模块------------------------------------------
|
|
|
function checkBid(value, callback, bidField) {
|
|
|
const bid = parseFloat(value)
|
|
|
const budget = parseFloat(ruleForm.budget)
|
|
@@ -906,7 +1153,7 @@ function checkBid(value, callback, bidField) {
|
|
|
callback()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+// 自定义校验规则---自动定价和按目标设置出价模块
|
|
|
function getValidationRules(fieldName) {
|
|
|
// 默认校验规则
|
|
|
const commonRules = [
|
|
@@ -956,7 +1203,7 @@ function getValidationRules(fieldName) {
|
|
|
// 如果不满足上述条件,则无需校验
|
|
|
return []
|
|
|
}
|
|
|
-
|
|
|
+// 监听表单字段变化,根据不同字段和状态返回特定的校验规则
|
|
|
watch(
|
|
|
[() => ruleForm.autoRedirect, () => ruleForm.closeMatch, () => ruleForm.broadMatch, () => ruleForm.similarProducts, () => ruleForm.relatedProducts],
|
|
|
() => {
|
|
@@ -985,7 +1232,6 @@ function resetForm(formEl: FormInstance | undefined) {
|
|
|
formEl.resetFields()
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 修改表头样式
|
|
|
const headerCellStyle = (args) => {
|
|
|
if (args.rowIndex === 0) {
|
|
@@ -1003,6 +1249,15 @@ function changeNegTableHeader(args) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function changeKeyWordsTableHeader(args) {
|
|
|
+ if (args.rowIndex === 0) {
|
|
|
+ return {
|
|
|
+ color: '#505968',
|
|
|
+ backgroundColor: 'rgba(245, 245, 245, 0.9)',
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
setTableData()
|
|
|
// const myTest = route.query
|
|
@@ -1012,7 +1267,6 @@ onMounted(() => {
|
|
|
defineOptions({
|
|
|
name: 'SpCreateCampaigns',
|
|
|
})
|
|
|
-
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -1055,7 +1309,6 @@ defineOptions({
|
|
|
margin-left: 30px;
|
|
|
color: #0b0d0d;
|
|
|
}
|
|
|
-
|
|
|
.demo-tabs > .el-tabs__content {
|
|
|
padding: 52px;
|
|
|
color: #6b778c;
|
|
@@ -1098,7 +1351,6 @@ div {
|
|
|
margin-right: 10px;
|
|
|
border: none;
|
|
|
}
|
|
|
-
|
|
|
.single-line {
|
|
|
color: rgb(30, 33, 41);
|
|
|
overflow: hidden;
|
|
@@ -1129,4 +1381,11 @@ div {
|
|
|
width: 200px;
|
|
|
margin-left: 15px;
|
|
|
}
|
|
|
+
|
|
|
+::v-deep(.goods-orientation-tabs .el-tabs__nav-scroll) {
|
|
|
+ margin-left: -20px !important;
|
|
|
+}
|
|
|
+::v-deep(.category-tabs .el-tabs__nav) {
|
|
|
+ margin-left: 20px;
|
|
|
+}
|
|
|
</style>
|