|
@@ -2,6 +2,7 @@
|
|
|
<div>
|
|
|
<el-card>
|
|
|
<div style="padding-left: 5px">
|
|
|
+ <!-- 广告活动 -->
|
|
|
<div style="font-size: 20px; font-weight: bold">广告活动</div>
|
|
|
<hr />
|
|
|
<br />
|
|
@@ -18,7 +19,7 @@
|
|
|
<el-input v-model="ruleForm.name" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="广告组合" prop="adMix">
|
|
|
- <el-select v-model="ruleForm.adMix" placeholder="Activity zone">
|
|
|
+ <el-select v-model="ruleForm.adMix" placeholder="请选择">
|
|
|
<el-option label="Zone one" value="shanghai" />
|
|
|
<el-option label="Zone two" value="beijing" />
|
|
|
</el-select>
|
|
@@ -30,7 +31,7 @@
|
|
|
<el-date-picker v-model="ruleForm.date2" label="结束日期" placeholder="结束日期" style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="budget" label="每日预算" style="width: 350px">
|
|
|
- <el-input v-model="ruleForm.budget" />
|
|
|
+ <el-input v-model="ruleForm.budget" maxlength="7" oninput="value=value.indexOf('.') > -1?value.slice(0, value.indexOf('.') + 3):value" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="投放类型" prop="type" class="column-item">
|
|
|
<el-radio-group v-model="ruleForm.type" @click="changeType">
|
|
@@ -66,8 +67,29 @@
|
|
|
</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="按展示位置调整出价" prop="placeBid">
|
|
|
+ <p style="color: #8e9196">除了出价策略外,您还可以将出价提高多达900%</p>
|
|
|
+ <div class="gap-items">
|
|
|
+ <div class="gap-item">搜索结果顶部(首页)</div>
|
|
|
+ <el-input v-model="ruleForm.placeBid" class="gap-item">
|
|
|
+ <template #append>%</template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <div class="gap-items">
|
|
|
+ <div class="gap-item">商品首页</div>
|
|
|
+ <el-input v-model="ruleForm.firstPage" class="gap-item">
|
|
|
+ <template #append>%</template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <div class="gap-items">
|
|
|
+ <div class="gap-item">搜索结果的其余位置</div>
|
|
|
+ <el-input v-model="ruleForm.other" class="gap-item">
|
|
|
+ <template #append>%</template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
- <el-form
|
|
|
+ <!-- <el-form
|
|
|
:label-position="labelPosition"
|
|
|
ref="ruleFormRef2"
|
|
|
:model="ruleForm2"
|
|
@@ -97,9 +119,131 @@
|
|
|
</el-input>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- </el-form>
|
|
|
+ </el-form> -->
|
|
|
+
|
|
|
+ <!-- 广告组 -->
|
|
|
+ <div style="font-size: 20px; font-weight: bold; margin-top: 30px">广告组</div>
|
|
|
+ <hr />
|
|
|
+ <el-form-item label="广告组名称" prop="adGroupName" style="width: 350px; margin-top: 20px">
|
|
|
+ <el-input v-model="ruleForm.adGroupName" />
|
|
|
+ </el-form-item>
|
|
|
+ <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="handleClick">
|
|
|
+ <el-tab-pane label="搜索" name="first">
|
|
|
+ <div style="margin-bottom: 10px">
|
|
|
+ <el-input v-model="input3" placeholder="Please input" class="input-with-select">
|
|
|
+ <template #prepend>
|
|
|
+ <el-select v-model="select" style="width: 100px">
|
|
|
+ <el-option label="名称" value="name" />
|
|
|
+ <el-option label="ASIN" value="asin" />
|
|
|
+ <el-option label="SKU" value="sku" />
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ <template #append>
|
|
|
+ <el-select v-model="select2" style="width: 100px">
|
|
|
+ <el-option label="最新优先" value="latest" />
|
|
|
+ <el-option label="最早优先" value="earliest" />
|
|
|
+ <el-option label="优选广告" value="optimal" />
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ <el-table height="490" style="width: 100%"
|
|
|
+ v-loading="loading"
|
|
|
+ :data="fullTableData"
|
|
|
+ :header-cell-style="headerCellStyle"
|
|
|
+ @selection-change="handleSelectionChange">
|
|
|
+ <el-table-column type="selection" width="50" />
|
|
|
+ <el-table-column prop="asin" label="ASIN" width="538">
|
|
|
+ <template #default="scope">
|
|
|
+ <div>
|
|
|
+ <!-- <el-image :preview-src-list="srcList"/> -->
|
|
|
+ <el-tooltip class="box-item" effect="dark" :content=scope.row.title placement="top">
|
|
|
+ <div class="single-line">{{ scope.row.title }}</div>
|
|
|
+ </el-tooltip>
|
|
|
+ <div>{{ scope.row.asin }}</div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name" label="Name" width="120" align="right">
|
|
|
+ <template #header>
|
|
|
+ <el-button type="primary" size="normal" link @click="handleAdd">添加</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ :current-page="currentPage"
|
|
|
+ :page-size="pageSize"
|
|
|
+ :total="totalItems"
|
|
|
+ layout="prev, pager, next"
|
|
|
+ />
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="输入" name="second">
|
|
|
+ <el-input
|
|
|
+ v-model="textarea"
|
|
|
+ :rows="15"
|
|
|
+ type="textarea"
|
|
|
+ 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>
|
|
|
+ </div>
|
|
|
+ <el-row :gutter="12" style="margin-top: 50px">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="card-box" shadow="never" style="border: none; background-color: #e3f0de; height: 50px">
|
|
|
+ <div style="line-height: 15px">Always</div>
|
|
|
+ <div style="line-height: 15px">
|
|
|
+ <el-icon style="color: #8fc47d; font-size: 25px"><SuccessFilled /></el-icon>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="card-box" shadow="never" style="border: none; background-color: #fbe6e3; height: 50px">
|
|
|
+ <div style="line-height: 15px">Never</div>
|
|
|
+ <div style="line-height: 15px">
|
|
|
+ <el-icon style="color: #e3918d; font-size: 25px"><CircleCloseFilled /></el-icon>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
+ <div style="width: 50%">
|
|
|
+ <el-card class="box-card" shadow="never">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span>Card name</span>
|
|
|
+ <el-button class="button" text>全部删除</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <!-- <div v-for="o in 4" :key="o" class="text item">{{ 'List item ' + o }}</div> -->
|
|
|
+ <div class="card-body"></div>
|
|
|
+ <!-- <template #footer>Footer content</template> -->
|
|
|
+ </el-card>
|
|
|
+ <div style="padding: 0 10px 0 10px; margin-top: -12px;">
|
|
|
+ <el-table :data="fullTableData" height="420" style="width: 100%" :header-cell-style="headerCellStyle">
|
|
|
+ <el-table-column type="selection" width="50" />
|
|
|
+ <el-table-column prop="date" label="Date" width="538" />
|
|
|
+ <el-table-column prop="name" label="Name" width="120" align="right">
|
|
|
+ <template #header>
|
|
|
+ <el-button type="primary" size="normal" link>删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <br />
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" @click="submitForm">Create</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm(ruleFormRef)">Create</el-button>
|
|
|
<el-button @click="resetForm(ruleFormRef)">Reset</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -109,11 +253,98 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { onMounted, reactive, ref } from 'vue'
|
|
|
+import { onMounted, reactive, ref, computed } from 'vue'
|
|
|
import { useRoute } from 'vue-router'
|
|
|
-import type { FormInstance, FormRules } from 'element-plus'
|
|
|
+import type { FormInstance, FormRules, TabsPaneContext } from 'element-plus'
|
|
|
+import { Search } from '@element-plus/icons-vue'
|
|
|
+import { useShopInfo } from '/@/stores/shopInfo'
|
|
|
+import { usePublicData } from '/@/stores/publicData'
|
|
|
+import { storeToRefs } from 'pinia'
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
+import axios from 'axios'
|
|
|
+import { request } from '/@/utils/service'
|
|
|
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ setTableData()
|
|
|
+ // const myTest = route.query
|
|
|
+ // console.log('myTest', myTest)
|
|
|
+})
|
|
|
+
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
const route = useRoute()
|
|
|
+const shopInfo = useShopInfo()
|
|
|
+const publicData = usePublicData()
|
|
|
+const { dateRange } = storeToRefs(publicData)
|
|
|
+const { profile } = storeToRefs(shopInfo)
|
|
|
+const queryParams = ref({
|
|
|
+ profileId: profile.value.profile_id,
|
|
|
+ dateRange,
|
|
|
+})
|
|
|
+const loading = ref(true)
|
|
|
+
|
|
|
+let respData
|
|
|
+function setTableData() {
|
|
|
+ return request({
|
|
|
+ url: "/api/sellers/sellerlistings/",
|
|
|
+ method: 'GET',
|
|
|
+ params: {profile_id: profile.value.profile_id, page: currentPage.value, limit: pageSize.value}
|
|
|
+ }).then(resp => {
|
|
|
+ fullTableData.value = resp.data
|
|
|
+ respData = resp.data
|
|
|
+ totalItems.value = resp.total
|
|
|
+ currentPage.value = resp.page
|
|
|
+ loading.value = false
|
|
|
+ console.log('respData', respData)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const fullTableData = ref([]) // 表格数据
|
|
|
+const currentPage = ref() // 当前页
|
|
|
+const pageSize = ref(20) // 每页显示条目数
|
|
|
+const totalItems = ref() // 数据总量
|
|
|
+
|
|
|
+// 计算当前应显示的表格数据
|
|
|
+// const pagedTableData = computed(() => {
|
|
|
+// const start = (currentPage.value - 1) * pageSize.value
|
|
|
+// const end = start + pageSize.value
|
|
|
+// return fullTableData.value.slice(start, end)
|
|
|
+// })
|
|
|
+
|
|
|
+// 处理分页器当前页变化
|
|
|
+function handleCurrentChange(newPage) {
|
|
|
+ loading.value = true
|
|
|
+ currentPage.value = newPage
|
|
|
+ setTableData()
|
|
|
+}
|
|
|
+
|
|
|
+// 处理分页器每页显示条目数变化
|
|
|
+function handleSizeChange(newSize) {
|
|
|
+ pageSize.value = newSize;
|
|
|
+ currentPage.value = 1 // 重置到第一页
|
|
|
+}
|
|
|
+
|
|
|
+let selections
|
|
|
+function handleSelectionChange(selection) {
|
|
|
+ console.log('selection', selection)
|
|
|
+ selections = selection
|
|
|
+}
|
|
|
+
|
|
|
+// 处理添加按钮点击事件
|
|
|
+function handleAdd() {
|
|
|
+ console.log('selections', selections)
|
|
|
+}
|
|
|
+
|
|
|
+// 修改表头样式
|
|
|
+const headerCellStyle = (args) => {
|
|
|
+ // console.log('args', args)
|
|
|
+ if (args.rowIndex === 0) {
|
|
|
+ return {
|
|
|
+ backgroundColor: 'rgba(245, 245, 245, 0.9)',
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// const size = ref('default')
|
|
|
// const labelPosition = ref('top')
|
|
@@ -127,11 +358,10 @@ interface RuleForm {
|
|
|
delivery: boolean
|
|
|
type: string
|
|
|
bidStrategy: string
|
|
|
-}
|
|
|
-interface RuleForm2 {
|
|
|
placeBid: string
|
|
|
firstPage: string
|
|
|
other: string
|
|
|
+ adGroupName: string
|
|
|
}
|
|
|
|
|
|
const formSize = ref('default')
|
|
@@ -147,59 +377,39 @@ const ruleForm = reactive<RuleForm>({
|
|
|
delivery: false,
|
|
|
type: 'auto',
|
|
|
bidStrategy: 'dynamicBid_Low',
|
|
|
+ placeBid: '',
|
|
|
+ firstPage: '',
|
|
|
+ other: '',
|
|
|
+ adGroupName: '',
|
|
|
})
|
|
|
-const rules = reactive<FormRules<RuleForm>>({
|
|
|
- name: [
|
|
|
- { required: true, message: 'Please input Activity name', trigger: 'blur' },
|
|
|
- { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },
|
|
|
- ],
|
|
|
+const rules = reactive<FormRules<RuleForm>> ({
|
|
|
+ name: [{ required: true, message: 'Please input Activity name', trigger: 'blur' }],
|
|
|
adMix: [{ required: false, message: 'Please select Activity zone', trigger: 'change' }],
|
|
|
count: [{ required: true, message: 'Please select Activity count', trigger: 'change' }],
|
|
|
date1: [{ required: true, type: 'date', message: 'Please pick a date', trigger: 'change' }],
|
|
|
date2: [{ required: false, type: 'date', message: 'Please pick a time', trigger: 'change' }],
|
|
|
- budget: [{ required: true, message: '请输入预算', trigger: 'blur' }],
|
|
|
- type: [{ required: false, message: 'Please select at least one activity type', trigger: 'change' }],
|
|
|
+ budget: [
|
|
|
+ { required: true, message: '请输入预算', trigger: 'blur' },
|
|
|
+ { pattern: /^(?:[1-9]\d{0,5}|1000000)(?:\.\d{1,2})?$/, message: '预算必须是1到1000000之间的数字,小数点后最多两位', trigger: 'blur' },
|
|
|
+ ],
|
|
|
+ type: [{ required: false, trigger: 'change' }],
|
|
|
bidStrategy: [{ required: true, message: 'Please select activity resource', trigger: 'change' }],
|
|
|
-})
|
|
|
-
|
|
|
-const ruleFormRef2 = ref<FormInstance>()
|
|
|
-const ruleForm2 = reactive<RuleForm2>({
|
|
|
- placeBid: '',
|
|
|
- firstPage: '',
|
|
|
- other: '',
|
|
|
-})
|
|
|
-const rules2 = reactive<FormRules<RuleForm2>>({
|
|
|
placeBid: [{ required: false, pattern: /^[0-9]{1,3}$/, message: '必须是0~900之间的整数百分比', trigger: 'change' }],
|
|
|
firstPage: [{ required: false, pattern: /^[0-9]{1,3}$/, message: '必须是0~900之间的整数百分比', trigger: 'change' }],
|
|
|
other: [{ required: false, pattern: /^[0-9]{1,3}$/, message: '必须是0~900之间的整数百分比', trigger: 'change' }],
|
|
|
+ adGroupName: [{ required: true, message: 'Please input Activity name', trigger: 'blur' }],
|
|
|
})
|
|
|
|
|
|
-async function submitForm() {
|
|
|
- let isValid = true
|
|
|
-
|
|
|
- // 校验第一个表单
|
|
|
- if (ruleFormRef.value) {
|
|
|
- await ruleFormRef.value.validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
- console.log('Error in form 1')
|
|
|
- isValid = false
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- // 校验第二个表单
|
|
|
- if (isValid && ruleFormRef2.value) {
|
|
|
- await ruleFormRef2.value.validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
- console.log('Error in form 2')
|
|
|
- isValid = false
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- // 如果两个表单都通过校验,则继续后续操作
|
|
|
- if (isValid) {
|
|
|
- console.log('Both forms are valid. Proceed with the submission.')
|
|
|
- // 这里可以放置提交表单的逻辑
|
|
|
- }
|
|
|
+async function submitForm(formEl: FormInstance | undefined) {
|
|
|
+ if (!formEl) return
|
|
|
+ await formEl.validate((valid, fields) => {
|
|
|
+ if (valid) {
|
|
|
+ console.log('submit!')
|
|
|
+ console.log('budget', ruleForm.budget)
|
|
|
+ } else {
|
|
|
+ console.log('error submit!', fields)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
function resetForm(formEl: FormInstance | undefined) {
|
|
@@ -207,31 +417,107 @@ function resetForm(formEl: FormInstance | undefined) {
|
|
|
formEl.resetFields()
|
|
|
}
|
|
|
|
|
|
-const options = Array.from({ length: 10000 }).map((_, idx) => ({
|
|
|
- value: `${idx + 1}`,
|
|
|
- label: `${idx + 1}`,
|
|
|
-}))
|
|
|
+// const options = Array.from({ length: 10000 }).map((_, idx) => ({
|
|
|
+// value: `${idx + 1}`,
|
|
|
+// label: `${idx + 1}`,
|
|
|
+// }))
|
|
|
|
|
|
function changeType() {
|
|
|
console.log(ruleForm.type)
|
|
|
}
|
|
|
|
|
|
-onMounted(() => {
|
|
|
- const myTest = route.query
|
|
|
- console.log('myTest', myTest)
|
|
|
-})
|
|
|
+// 商品模块
|
|
|
+const activeName = ref('first')
|
|
|
+
|
|
|
+const handleClick = (tab: TabsPaneContext, event: Event) => {
|
|
|
+ console.log(tab, event)
|
|
|
+}
|
|
|
+
|
|
|
+const input3 = ref('')
|
|
|
+const select = ref('name')
|
|
|
+const select2 = ref('latest')
|
|
|
+const textarea = ref('')
|
|
|
+const buttons = [{ type: 'primary', text: '添加' }] as const
|
|
|
+
|
|
|
+// const pagedTableData = [
|
|
|
+// {
|
|
|
+// date: '2016-05-03',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-02',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-04',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-01',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-08',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-06',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// {
|
|
|
+// date: '2016-05-07',
|
|
|
+// name: 'Tom',
|
|
|
+// address: 'No. 189, Grove St, Los Angeles',
|
|
|
+// },
|
|
|
+// ]
|
|
|
+
|
|
|
+// 分页器相关状态
|
|
|
+
|
|
|
+
|
|
|
+// 后端获取的完整数据
|
|
|
|
|
|
defineOptions({
|
|
|
name: 'SpCreateCampaigns',
|
|
|
})
|
|
|
-
|
|
|
-// ::v-deep(.column-margin-bottom span.el-radio__input.is-checked) {
|
|
|
-// margin-top: -20px;
|
|
|
-// margin-left: -15px;
|
|
|
-// }
|
|
|
</script>
|
|
|
|
|
|
-<style scoped>
|
|
|
+<style lang="scss" scoped>
|
|
|
::v-deep(.el-form--default.el-form--label-top .el-form-item .el-form-item__label) {
|
|
|
font-weight: 500;
|
|
|
}
|
|
@@ -252,17 +538,14 @@ defineOptions({
|
|
|
color: #666;
|
|
|
margin-top: -10px;
|
|
|
}
|
|
|
-
|
|
|
.column-margin-bottom label.el-radio.is-bordered {
|
|
|
margin-bottom: 10px;
|
|
|
padding: 35px;
|
|
|
}
|
|
|
-
|
|
|
::v-deep(.column-margin-bottom label.el-radio.is-bordered span.el-radio__inner) {
|
|
|
margin-top: -18px;
|
|
|
margin-left: -15px;
|
|
|
}
|
|
|
-
|
|
|
.gap-items {
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
@@ -274,4 +557,55 @@ defineOptions({
|
|
|
margin-left: 30px;
|
|
|
color: #0b0d0d;
|
|
|
}
|
|
|
+
|
|
|
+.demo-tabs > .el-tabs__content {
|
|
|
+ padding: 52px;
|
|
|
+ color: #6b778c;
|
|
|
+ font-size: 32px;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+/* 广告组商品Tab栏 */
|
|
|
+::v-deep(.el-tabs__nav-scroll) {
|
|
|
+ overflow: hidden;
|
|
|
+ margin-left: 20px;
|
|
|
+}
|
|
|
+::v-deep(.el-tabs__nav-wrap::after) {
|
|
|
+ height: 2px !important;
|
|
|
+}
|
|
|
+::v-deep(.el-table__inner-wrapper::before) {
|
|
|
+ background-color: white;
|
|
|
+}
|
|
|
+// 表格内容边距
|
|
|
+div {
|
|
|
+ & #pane-first,
|
|
|
+ & #pane-second {
|
|
|
+ margin: 10px;
|
|
|
+ }
|
|
|
+}
|
|
|
+// 输入底部样式
|
|
|
+::v-deep(.card-box .el-card__body) {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 12px;
|
|
|
+}
|
|
|
+.card-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.box-card {
|
|
|
+ width: 100%;
|
|
|
+ // margin: 10px 0 10px 10px;
|
|
|
+ margin-right: 10px;
|
|
|
+ border: none;
|
|
|
+}
|
|
|
+
|
|
|
+.single-line {
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ display: block; // 确保这是块级元素以应用省略号
|
|
|
+}
|
|
|
+
|
|
|
</style>
|