zkthink
5 years ago
26 changed files with 4811 additions and 27 deletions
@ -0,0 +1,14 @@
|
||||
import axiosApi from './AxiosApi.js' |
||||
|
||||
const apiList = { |
||||
addPromotion: `/authority/promotion` |
||||
} |
||||
export default { |
||||
addPromotion(data) { |
||||
return axiosApi({ |
||||
method: 'POST', |
||||
url: apiList.addPromotion, |
||||
data |
||||
}) |
||||
} |
||||
} |
@ -0,0 +1,114 @@
|
||||
<template> |
||||
<div class="full-size"> |
||||
<div |
||||
ref="myEchart" |
||||
class="full-size" |
||||
></div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import echarts from 'echarts' |
||||
export default { |
||||
props: { |
||||
chartData: { |
||||
type: Object, |
||||
default: () => {} |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
watch: { |
||||
chartData: { |
||||
deep: true, |
||||
handler (newVal) { |
||||
this.chartData = newVal |
||||
this.draw() |
||||
} |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.draw() |
||||
}, |
||||
methods: { |
||||
draw () { |
||||
const myEchart = echarts.init(this.$refs.myEchart, 'light') |
||||
const o = this.chartData |
||||
// y轴设置 |
||||
const y = Object.assign( |
||||
{}, |
||||
{ |
||||
name: '金额/万元', |
||||
nameLocation: 'end', |
||||
nameTextStyle: { |
||||
color: '#999999', |
||||
fontSize: 14, |
||||
padding: [0, 10, -5, 0] |
||||
|
||||
}, |
||||
type: 'value', |
||||
splitLine: { |
||||
lineStyle: { |
||||
color: 'rgba(163,167,174,0.5)', |
||||
type: 'dotted' |
||||
} |
||||
}, |
||||
axisLine: { |
||||
lineStyle: { |
||||
color: '#E0E5EB' |
||||
} |
||||
}, |
||||
axisLabel: { |
||||
color: '#999999', |
||||
fontSize: 14 |
||||
}, |
||||
axisTick: { |
||||
show: false |
||||
} |
||||
}, |
||||
o.yAxis |
||||
) |
||||
const option = { |
||||
// 图标的位置 |
||||
grid: { |
||||
top: '15%', |
||||
bottom: '15%', |
||||
left: '10%' |
||||
}, |
||||
// x轴 |
||||
xAxis: { |
||||
name: '时间', |
||||
nameLocation: 'end', |
||||
nameTextStyle: { |
||||
color: '#999999', |
||||
fontSize: 14, |
||||
padding: [0, 0, 0, -10] |
||||
|
||||
}, |
||||
data: o.xData, |
||||
axisLabel: { |
||||
color: '#999999', |
||||
fontSize: 14 |
||||
}, |
||||
axisTick: { |
||||
show: false |
||||
}, |
||||
axisLine: { |
||||
lineStyle: { |
||||
color: '#E0E5EB' |
||||
} |
||||
} |
||||
}, |
||||
// y轴 |
||||
yAxis: y, |
||||
// 柱状图和线状图数据展示 |
||||
series: o.series |
||||
} |
||||
myEchart.setOption(option) |
||||
} |
||||
} |
||||
} |
||||
</script> |
@ -0,0 +1,77 @@
|
||||
<template> |
||||
<div class="full-size"> |
||||
<div |
||||
ref="myEchart" |
||||
class="full-size" |
||||
></div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import echarts from 'echarts' |
||||
export default { |
||||
props: { |
||||
chartData: { |
||||
type: Object, |
||||
default: () => {} |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
watch: { |
||||
chartData: { |
||||
deep: true, |
||||
handler (newVal) { |
||||
this.chartData = newVal |
||||
this.draw() |
||||
} |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.draw() |
||||
}, |
||||
methods: { |
||||
draw () { |
||||
const myEchart = echarts.init(this.$refs.myEchart, 'light') |
||||
const o = this.chartData |
||||
|
||||
const option = { |
||||
color: ['#3A68F2', '#DEDEDE'], |
||||
series: [ |
||||
Object.assign({}, { |
||||
type: 'pie', |
||||
radius: ['45%', '60%'], |
||||
center: ['50%', '55%'], |
||||
label: { |
||||
normal: { |
||||
show: true, |
||||
formatter: function (p) { |
||||
// const t = o.lineBreak ? '\n' : ' ' |
||||
// ${p.value + o.unit} |
||||
return `{a|${p.name}}{b| ${p.percent}%}` |
||||
}, |
||||
rich: { |
||||
a: { |
||||
color: '#666666', |
||||
fontSize: 16 |
||||
}, |
||||
b: { |
||||
color: '#666666', |
||||
fontSize: 16 |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
}, o.series), |
||||
o.firstSeries || '' |
||||
] |
||||
} |
||||
myEchart.setOption(option) |
||||
} |
||||
} |
||||
} |
||||
</script> |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,225 @@
|
||||
<template> |
||||
<div ref="usermap" class="full-size"></div> |
||||
</template> |
||||
<script> |
||||
import map from './geo' |
||||
import echarts from 'echarts' |
||||
import 'echarts/lib/chart/map' |
||||
import 'echarts/lib/component/geo' |
||||
import 'echarts/map/js/china' |
||||
export default { |
||||
props: { |
||||
mapdata: { type: Array, default: () => [] } |
||||
}, |
||||
data() { |
||||
return { |
||||
seriesData: { |
||||
seriesData: [{ name: '南海诸岛', value: 0, itemStyle: { normal: { opacity: 0, label: { show: false }}}}], |
||||
minMaxData: { |
||||
min: 0, |
||||
max: 1000 |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
watch: { |
||||
mapdata: { |
||||
handler(newVal) { |
||||
if (newVal.length !== 0) { |
||||
this.seriesData = map.getCityGeo(newVal) |
||||
console.log(newVal, 1212) |
||||
} else { |
||||
this.seriesData = { |
||||
seriesData: [], |
||||
minMaxData: { min: 0, max: 0 } |
||||
} |
||||
} |
||||
this.userMap() |
||||
}, |
||||
deep: true |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.userMap() |
||||
}, |
||||
methods: { |
||||
userMap() { |
||||
// const mychart = this.$echarts.init(document.getElementById('user-map')); |
||||
const mychart = echarts.init(this.$refs.usermap) |
||||
// const d = this.seriesData |
||||
const d = map.getCityGeo(this.mapdata) |
||||
// const fontColor = '#bbb'; |
||||
// const visualMapColor = ['#ff0030', '#fe00f5', '#fbff04', '#48fe00', '#02fffe']; |
||||
const option = { |
||||
// title: { |
||||
// left: '5%', |
||||
// top: '6%', |
||||
// text: '登录情况分布', |
||||
// textStyle: { |
||||
// color: '#fff', |
||||
// fontSize: '18', |
||||
// fontWeight: '400' |
||||
// } |
||||
// }, |
||||
animation: true, |
||||
animationDuration: 1000, |
||||
animationEasing: 'cubicInOut', |
||||
animationDurationUpdate: 1000, |
||||
animationEasingUpdate: 'cubicInOut', |
||||
tooltip: { |
||||
trigger: 'item', |
||||
formatter: (params) => { |
||||
let value = params.value |
||||
if (value instanceof Array) value = params.value[2] |
||||
return `${params.name}总登录次数: ${value}次` |
||||
}, |
||||
extraCssText: 'width:150px;height:30px;' |
||||
}, |
||||
// legend: { |
||||
// orient: 'vertical', |
||||
// y: 'bottom', |
||||
// x: 'right', |
||||
// data: ['访问次数'], |
||||
// textStyle: { |
||||
// color: '#FFFFFF' |
||||
// } |
||||
// }, |
||||
visualMap: [ |
||||
// { |
||||
// show: false, |
||||
// min: this.seriesData.minMaxData.min, |
||||
// max: this.seriesData.minMaxData.max, |
||||
// color: visualMapColor, |
||||
// dimension: 0, |
||||
// seriesIndex: 2 |
||||
// }, |
||||
{ |
||||
// min: this.seriesData.minMaxData.min, |
||||
// max: this.seriesData.minMaxData.max, |
||||
// text: ['高', '低'], |
||||
// calculable: true, |
||||
// itemWidth: 10, |
||||
// itemHeight: 100, |
||||
// color: visualMapColor, |
||||
// textStyle: { |
||||
// color: fontColor |
||||
// }, |
||||
// itemSymbol: 'circle', |
||||
// seriesIndex: [0, 1] |
||||
min: d.minMaxData.min, |
||||
max: d.minMaxData.max, |
||||
calculable: true, |
||||
type: 'piecewise', |
||||
itemWidth: 8, |
||||
itemHeight: 8, |
||||
inRange: { |
||||
color: ['#50a3ba', '#eac736', '#d94e5d'] |
||||
}, |
||||
textStyle: { |
||||
color: '#fff', |
||||
fontSize: 10 |
||||
}, |
||||
orient: 'horizontal', |
||||
left: '50%', |
||||
itemGap: 5, |
||||
textGap: 5, |
||||
seriesIndex: [0, 1], |
||||
formatter(a, b) { |
||||
const fn = function (v) { |
||||
if (v > 999) { |
||||
return `${(v / 1000).toFixed(1)}k` |
||||
} |
||||
if (v > 9 && v < 1000) { |
||||
return Math.floor(v / 10) * 10 |
||||
} |
||||
return parseInt(v, 0) |
||||
} |
||||
return fn(b) |
||||
} |
||||
}], |
||||
geo: [{ |
||||
map: 'china', |
||||
roam: true, |
||||
scaleLimit: { min: 1, max: 3 }, |
||||
z: 1, |
||||
zoom: 1, |
||||
label: { |
||||
emphasis: { |
||||
show: false |
||||
} |
||||
}, |
||||
// right: '40%', |
||||
// left: '5%', |
||||
// top: '10%', |
||||
// bottom: '10%', |
||||
itemStyle: { |
||||
color: { |
||||
type: 'linear', |
||||
x: 0, |
||||
y: 0, |
||||
x2: 0, |
||||
y2: 1, |
||||
colorStops: [{ |
||||
offset: 0, color: 'red' // 0% 处的颜色 |
||||
}, { |
||||
offset: 1, color: 'blue' // 100% 处的颜色 |
||||
}], |
||||
globalCoord: false // 缺省为 false |
||||
}, |
||||
borderWidth: 1, |
||||
shadowBlur: 8, |
||||
shadowColor: 'rgba(0, 0, 0, 0.3)', |
||||
areaColor: '#0040b6', // '#0E0930' |
||||
borderColor: '#84a3dd' |
||||
}, |
||||
emphasis: { |
||||
show: true, |
||||
// areaColor: '#3369D9', |
||||
// opacity: 0.2 |
||||
itemStyle: { |
||||
areaColor: '#034fdb' |
||||
} |
||||
} |
||||
} |
||||
], |
||||
grid: { |
||||
right: '40%' |
||||
// top: 100, |
||||
// bottom: 40, |
||||
// width: '28%' |
||||
}, |
||||
series: [ |
||||
{ |
||||
name: '访问次数', |
||||
type: 'scatter', |
||||
coordinateSystem: 'geo', |
||||
data: d.seriesData, |
||||
// symbolSize: (val) => { |
||||
// return Math.max(val[2] / 200, 8); |
||||
// }, |
||||
symbolSize: 10, |
||||
label: { |
||||
normal: { |
||||
formatter: '{b}', |
||||
position: 'right', |
||||
show: false |
||||
}, |
||||
emphasis: { |
||||
show: true |
||||
} |
||||
}, |
||||
itemStyle: { |
||||
normal: { |
||||
color: 'rgba(7,58,249,1)' |
||||
} |
||||
} |
||||
} |
||||
] |
||||
} |
||||
mychart.setOption(option, true) |
||||
window.addEventListener('resize', () => { mychart.resize() }) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
@ -0,0 +1,110 @@
|
||||
<template> |
||||
<div class="full-size"> |
||||
<div |
||||
ref="myEchart" |
||||
class="full-size" |
||||
></div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import echarts from 'echarts' |
||||
export default { |
||||
props: { |
||||
chartData: { |
||||
type: Object, |
||||
default: () => {} |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
watch: { |
||||
chartData: { |
||||
deep: true, |
||||
handler (newVal) { |
||||
this.chartData = newVal |
||||
this.draw() |
||||
} |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.draw() |
||||
}, |
||||
methods: { |
||||
draw () { |
||||
const myEchart = echarts.init(this.$refs.myEchart, 'light') |
||||
const o = this.chartData |
||||
const data = o.series.data |
||||
let sum = 0 |
||||
const obj = {} |
||||
data.forEach(item => { |
||||
obj[item.name] = item.value |
||||
sum += item.value |
||||
}) |
||||
const option = { |
||||
color: ['#3AA0FF', '#35CACA', '#4FCB74', '#FAD337', '#F1627B', '#965DE4'], |
||||
legend: { |
||||
orient: 'vertical', |
||||
y: 'center', |
||||
left: '52%', |
||||
formatter(name) { |
||||
const text = Number(obj[name]) === 0 ? '0' : `${(parseFloat(obj[name] / sum) * 100).toFixed(2)}%` |
||||
return '{b|' + name + '} ' + '{a|' + text + '}' + `¥${obj[name]}` |
||||
}, |
||||
itemGap: 25, |
||||
textStyle: { |
||||
rich: { |
||||
b: { |
||||
align: 'left', |
||||
fontSize: 16, |
||||
width: 120 |
||||
|
||||
}, |
||||
a: { |
||||
align: 'left', |
||||
fontSize: 16, |
||||
width: 100 |
||||
} |
||||
}, |
||||
fontSize: 16, |
||||
color: '#666666', |
||||
textAlign: 'right' |
||||
} |
||||
}, |
||||
series: [ |
||||
Object.assign({}, { |
||||
type: 'pie', |
||||
radius: ['45%', '60%'], |
||||
center: ['26%', '55%'], |
||||
label: { |
||||
normal: { |
||||
show: false, |
||||
formatter: function (p) { |
||||
const t = o.lineBreak ? '\n' : ' ' |
||||
return `{a|${p.name + t}}{b|${p.value + o.unit} ${p.percent}%}` |
||||
}, |
||||
rich: { |
||||
a: { |
||||
color: '#fff', |
||||
fontSize: 16 |
||||
}, |
||||
b: { |
||||
color: '#A4B5DA', |
||||
fontSize: 16 |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
}, o.series), |
||||
o.firstSeries || '' |
||||
] |
||||
} |
||||
myEchart.setOption(option) |
||||
} |
||||
} |
||||
} |
||||
</script> |
@ -0,0 +1,18 @@
|
||||
<template> |
||||
<div> |
||||
<h1>保证金</h1> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped></style> |
||||
|
@ -0,0 +1,306 @@
|
||||
<template> |
||||
<div class="edit_add_page"> |
||||
<div class="content"> |
||||
<div class="title"> |
||||
活动列表/报名 |
||||
<div class="btn_list"> |
||||
<span @click="cancel">取消</span> |
||||
<span @click="save">保存</span> |
||||
</div> |
||||
</div> |
||||
<el-col :span="12"> |
||||
<el-form ref="form" :model="form" label-width="100px"> |
||||
<h2>基础信息</h2> |
||||
<el-form-item label="活动名称:"> |
||||
<el-input v-model="form.name" placeholder="请输入活动名称" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="活动介绍:"> |
||||
<el-input v-model="form.description" type="textarea" placeholder="请输入活动介绍" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="活动时间:"> |
||||
<el-date-picker |
||||
v-model="date1" |
||||
type="datetimerange" |
||||
range-separator="至" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
value-format="yyyy-MM-dd HH:mm" |
||||
/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="起止时间:"> |
||||
<el-date-picker |
||||
v-model="date2" |
||||
type="datetimerange" |
||||
range-separator="至" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
value-format="yyyy-MM-dd HH:mm" |
||||
/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="活动保证金:"> |
||||
<el-radio-group v-model="form.isNeedSecurityDeposit"> |
||||
<el-radio :label="1">需要</el-radio> |
||||
<el-radio :label="2">不需要</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
|
||||
<el-form-item v-if="form.isNeedSecurityDeposit===1" label="保证金金额:"> |
||||
<el-input v-model="form.securityDeposit" placeholder="请输入活动保证金金额" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="活动标签"> |
||||
<el-input v-model="form.tag" placeholder="请输入活动标签" /> |
||||
</el-form-item> |
||||
|
||||
<h2>优惠规则</h2> |
||||
<el-form-item label="优惠方式:"> |
||||
<el-radio-group v-model="form.promotionType" @change="selectDiscount"> |
||||
<el-radio :label="1">满减</el-radio> |
||||
<el-radio :label="2">优惠券</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="优惠方案:"> |
||||
<el-radio-group v-model="form.promotionPlan" @change="selectPreScheme"> |
||||
<el-radio :label="1" :disabled="form.promotionType ===2">叠加优惠</el-radio> |
||||
<el-radio :label="2">阶梯优惠</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
|
||||
<el-form-item v-for="(item,index) in list" :key="index"> |
||||
<el-col :span="10"> |
||||
每满 |
||||
<el-input v-model="item.fullAmount" style="width: 80%;" /> |
||||
</el-col> |
||||
<el-col :span="10"> |
||||
减 |
||||
<el-input v-model="item.discountAmount" style="width: 80%;" /> |
||||
</el-col> |
||||
</el-form-item> |
||||
|
||||
<el-form-item v-if="form.promotionPlan===2"> |
||||
<el-button type="primary" @click="add">添加层级</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<div class="photo"> |
||||
<el-upload |
||||
class="avatar-uploader" |
||||
:headers="headers" |
||||
:data="dataObj" |
||||
action="/api/authority/file/upload" |
||||
:show-file-list="false" |
||||
:on-success="handleAvatarSuccess" |
||||
:disabled="type" |
||||
> |
||||
<img |
||||
v-if="form.image" |
||||
:src="form.image" class="avatar" |
||||
width="80" |
||||
height="80" |
||||
/> |
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
<el-button size="small" type="primary">点击上传</el-button> |
||||
</el-upload> |
||||
</div> |
||||
</el-col> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import db from '@/utils/localstorage' |
||||
import Marketing from '@/api/Marketing' |
||||
export default { |
||||
data() { |
||||
return { |
||||
form: { |
||||
name: '', |
||||
description: '', |
||||
isNeedSecurityDeposit: 2, |
||||
securityDeposit: '', |
||||
tag: '', |
||||
promotionType: 1, |
||||
promotionPlan: 1, |
||||
image: '' |
||||
|
||||
}, |
||||
list: [ |
||||
{ fullAmount: '', discountAmount: '' } |
||||
], |
||||
date1: [], |
||||
date2: [], |
||||
type: false, |
||||
headers: { |
||||
Authorization: '' |
||||
}, |
||||
dataObj: { |
||||
folderId: 1 |
||||
} |
||||
|
||||
} |
||||
}, |
||||
created() { |
||||
this.headers.token = 'Bearer ' + db.get('TOKEN', '') |
||||
this.headers.tenant = 'MDAwMA==' |
||||
}, |
||||
methods: { |
||||
selectDiscount(v) { |
||||
if (v === 2) { |
||||
this.form.promotionPlan = 2 |
||||
} |
||||
}, |
||||
selectPreScheme(v) { |
||||
if (v === 1) { |
||||
this.list = [ |
||||
{ fullAmount: '', discountAmount: '' } |
||||
] |
||||
} |
||||
}, |
||||
add() { |
||||
if (this.form.promotionPlan === 2) { |
||||
this.list.push({ fullAmount: '', discountAmount: '' }) |
||||
} |
||||
}, |
||||
cancel() { |
||||
this.$router.go(-1) |
||||
}, |
||||
save() { |
||||
const vm = this |
||||
Object.assign(vm.form, { activityStartTime: vm.date1[0] || '', activityEndTime: vm.date1[1] || '', applyStartTime: vm.date2[0] || '', applyEndTime: vm.date2[1] || '', promotionDetail: vm.list }) |
||||
Marketing.addPromotion(vm.form).then(res => { |
||||
const r = res.data |
||||
if (r.code === 0) { |
||||
this.$message({ |
||||
message: '新增成功', |
||||
type: 'success' |
||||
}) |
||||
vm.reset() |
||||
} |
||||
}) |
||||
}, |
||||
handleAvatarSuccess (response) { |
||||
const { url } = response.data |
||||
this.form.image = url |
||||
}, |
||||
reset() { |
||||
this.form = { |
||||
name: '', |
||||
description: '', |
||||
isNeedSecurityDeposit: 2, |
||||
securityDeposit: '', |
||||
tag: '', |
||||
promotionType: 1, |
||||
promotionPlan: 1, |
||||
image: '', |
||||
promotionDetail: '', |
||||
activityStartTime: '', |
||||
activityEndTime: '', |
||||
applyStartTime: '', |
||||
applyEndTime: '' |
||||
} |
||||
this.list = [ |
||||
{ fullAmount: '', discountAmount: '' } |
||||
] |
||||
this.date1 = [] |
||||
this.date2 = [] |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.edit_add_page { |
||||
padding: 20px; |
||||
h2 { |
||||
font-size: 24px; |
||||
font-weight: 500; |
||||
position: relative; |
||||
&::before { |
||||
content: ''; |
||||
height: 24px; |
||||
width: 4px; |
||||
background-color: #3A68F2; |
||||
position: absolute; |
||||
left: -10px; |
||||
top: 2px; |
||||
display: block; |
||||
} |
||||
} |
||||
.content { |
||||
background-color: #fff; |
||||
padding: 0 50px 20px; |
||||
overflow: hidden; |
||||
.title { |
||||
height: 100px; |
||||
line-height: 100px;; |
||||
font-size:24px; |
||||
position: relative; |
||||
border-bottom: 1px solid #E0E5EB; |
||||
.btn_list { |
||||
position: absolute; |
||||
right: 0; |
||||
top: 0; |
||||
height: 50px; |
||||
span { |
||||
padding: 0; |
||||
margin: 0; |
||||
width: 100px; |
||||
height: 50px; |
||||
line-height: 50px; |
||||
text-align: center; |
||||
display: inline-block; |
||||
font-size: 16px; |
||||
border-radius:4px; |
||||
box-sizing: border-box; |
||||
&:hover { |
||||
cursor: pointer; |
||||
} |
||||
&:nth-child(1) { |
||||
background:rgba(255,255,255,1); |
||||
order:1px solid rgba(224,229,235,1); |
||||
margin-right: 20px; |
||||
border:1px solid rgba(224,229,235,1); |
||||
} |
||||
&:nth-child(2) { |
||||
background:rgba(58,104,242,1); |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.el-form { |
||||
.el-form-item { |
||||
label.el-form-item__label { |
||||
font-size:16px !important; |
||||
color: red !important; |
||||
} |
||||
} |
||||
} |
||||
.photo { |
||||
padding:70px 100px; |
||||
.avatar-uploader { |
||||
width: 180px; |
||||
.el-icon-plus, img { |
||||
width: 180px; |
||||
height: 180px; |
||||
line-height: 180px; |
||||
border: 1px #bbb solid; |
||||
border-radius:4px 4px 0px 4px; |
||||
margin-bottom: 10px; |
||||
text-align: center |
||||
} |
||||
img { |
||||
border: none; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
||||
|
@ -0,0 +1,87 @@
|
||||
<template> |
||||
<div class="goods_page"> |
||||
<el-table |
||||
:data="tableData.records" |
||||
border |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column |
||||
prop="value1" |
||||
label="动态" |
||||
/> |
||||
<el-table-column |
||||
prop="value2" |
||||
label="时间" |
||||
/> |
||||
<el-table-column |
||||
prop="value3" |
||||
label="操作人" |
||||
/> |
||||
<el-table-column |
||||
prop="value4" |
||||
label="其它信息" |
||||
/> |
||||
</el-table> |
||||
<pagination |
||||
v-show="tableData.total > 0" |
||||
:limit.sync="formParams.size" |
||||
:page.sync="formParams.current" |
||||
:total="Number(tableData.total)" |
||||
@pagination="fetch" |
||||
/> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Pagination from '@/components/Pagination' |
||||
|
||||
export default { |
||||
components: { |
||||
Pagination |
||||
|
||||
}, |
||||
data() { |
||||
return { |
||||
formParams: { |
||||
size: 10, |
||||
current: 1 |
||||
}, |
||||
tableData: { |
||||
records: [ |
||||
{ value1: '报名', value2: '2020-06-20 17:54', value3: '飞猪旗舰店', value4: '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' } |
||||
], |
||||
total: 1 |
||||
} |
||||
} |
||||
}, |
||||
methods: { |
||||
fetch() { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.goods_page { |
||||
.product-img { |
||||
border-radius: 4px; |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-table { |
||||
th { |
||||
background: #EEF3FF; |
||||
color:#333333; |
||||
font-size:16px; |
||||
font-weight: 400; |
||||
border-color: #E0E5EB; |
||||
text-align: center; |
||||
} |
||||
td { |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #666666; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,112 @@
|
||||
<template> |
||||
<div class="goods_page"> |
||||
<el-table |
||||
:data="tableData.records" |
||||
border |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column |
||||
label="产品主图" |
||||
> |
||||
<template slot-scope="scope"> |
||||
<img |
||||
class="product-img" |
||||
height="90" |
||||
width="90" |
||||
:src="scope.row.value1" |
||||
/> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
prop="value2" |
||||
label="产品名称" |
||||
/> |
||||
<el-table-column |
||||
prop="value3" |
||||
label="产品id" |
||||
/> |
||||
<el-table-column |
||||
prop="value4" |
||||
label="售价 (元)" |
||||
/> |
||||
<el-table-column |
||||
prop="value5" |
||||
label="原价 (元)" |
||||
/> |
||||
<el-table-column |
||||
prop="value6" |
||||
label="库存 (件)" |
||||
/> |
||||
<el-table-column |
||||
prop="value7" |
||||
label="累计销量 (件)" |
||||
/> |
||||
<el-table-column |
||||
prop="value8" |
||||
label="上架状态" |
||||
/> |
||||
</el-table> |
||||
<pagination |
||||
v-show="tableData.total > 0" |
||||
:limit.sync="formParams.size" |
||||
:page.sync="formParams.current" |
||||
:total="Number(tableData.total)" |
||||
@pagination="fetch" |
||||
/> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Pagination from '@/components/Pagination' |
||||
|
||||
export default { |
||||
components: { |
||||
Pagination |
||||
|
||||
}, |
||||
data() { |
||||
return { |
||||
formParams: { |
||||
size: 10, |
||||
current: 1 |
||||
}, |
||||
tableData: { |
||||
records: [ |
||||
{ value1: 'http://cereshop.oss-cn-shenzhen.aliyuncs.com/0000/2020/06/3453cdcc-640d-4f97-afe1-f1bffdf61bc1.jpg', value2: 'BB霜', |
||||
value3: '231243544', value4: '99.9', value5: '169', value6: '888', value7: '19877', value8: '上架' } |
||||
], |
||||
total: 1 |
||||
} |
||||
} |
||||
}, |
||||
methods: { |
||||
fetch() { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.goods_page { |
||||
.product-img { |
||||
border-radius: 4px; |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-table { |
||||
th { |
||||
background: #EEF3FF; |
||||
color:#333333; |
||||
font-size:16px; |
||||
font-weight: 400; |
||||
border-color: #E0E5EB; |
||||
text-align: center; |
||||
} |
||||
td { |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #666666; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,48 @@
|
||||
<template> |
||||
<div class="marketing_details"> |
||||
<div class="content"> |
||||
<el-tabs @tab-click="selectItem"> |
||||
<el-tab-pane v-for="(item, index) in tabList" :key="index" :label="item.name" :name="item.id" /> |
||||
</el-tabs> |
||||
<div class="components"> |
||||
<component :is="compoentsName" /> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import info from './info' |
||||
import shop from './shop' |
||||
import marketData from './marketData' |
||||
export default { |
||||
components: { info, shop, marketData }, |
||||
data() { |
||||
return { |
||||
tabList: [ |
||||
{ name: '活动信息', id: 'info' }, |
||||
{ name: '参与店铺', id: 'shop' }, |
||||
{ name: '活动数据', id: 'marketData' } |
||||
], |
||||
compoentsName: 'info' |
||||
} |
||||
}, |
||||
methods: { |
||||
selectItem(v) { |
||||
this.compoentsName = v.name |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.marketing_details { |
||||
background: #fff; |
||||
.content { |
||||
padding:20px 20px; |
||||
.components { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,129 @@
|
||||
<template> |
||||
<div class="info-page"> |
||||
<h2>基础信息</h2> |
||||
<div class="info"> |
||||
<ul> |
||||
<li v-for="(item, index) in list" :key="index"> |
||||
<p>{{ item.name }}</p> |
||||
<p> |
||||
<span> |
||||
{{ item.value }} |
||||
</span> |
||||
</p> |
||||
</li> |
||||
</ul> |
||||
<div class="image"> |
||||
<img :src="img" alt="" /> |
||||
</div> |
||||
</div> |
||||
<h2>优惠规则</h2> |
||||
<div class="rule"> |
||||
<ul> |
||||
<li v-for="(item, index) in list1" :key="index"> |
||||
<p>{{ item.name }}</p> |
||||
<p>{{ item.value }}</p> |
||||
</li> |
||||
<li> |
||||
<p></p> |
||||
<p>每满500减50</p> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
list: [ |
||||
{ name: '活动名称:', value: '满减活动' }, |
||||
{ name: '活动介绍:', value: '满减活动满减活动满减活动满减活动满减活动满减活动满减活动满减活动满减活减活动满减活动满减活动满减活动满减活动满减活动' }, |
||||
{ name: '报名时间:', value: '2020-09-21 15:00 — 2020-11-23 15:00' }, |
||||
{ name: '起止时间:', value: '2020-09-21 15:00 — 2020-11-23 15:00' }, |
||||
{ name: '活动保证金:', value: '需要' }, |
||||
{ name: '保证金金额:', value: '2000' }, |
||||
{ name: '活动标签:', value: '618活动' } |
||||
], |
||||
list1: [ |
||||
{ name: '优惠方式:', value: '满减' }, |
||||
{ name: '优惠方案:', value: '叠加优惠' } |
||||
], |
||||
img: 'http://cereshop.oss-cn-shenzhen.aliyuncs.com/0000/2020/06/3453cdcc-640d-4f97-afe1-f1bffdf61bc1.jpg' |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.info-page { |
||||
h2 { |
||||
font-size: 24px; |
||||
font-weight: 500; |
||||
position: relative; |
||||
&::before { |
||||
content: ''; |
||||
height: 24px; |
||||
width: 4px; |
||||
background-color: #3A68F2; |
||||
position: absolute; |
||||
left: -10px; |
||||
top: 2px; |
||||
display: block; |
||||
} |
||||
} |
||||
padding: 50px 100px; |
||||
.info, .rule { |
||||
ul { |
||||
width: 45%; |
||||
list-style: none; |
||||
overflow: hidden; |
||||
li { |
||||
p { |
||||
float: left; |
||||
font-size: 16px; |
||||
&:nth-child(1) { |
||||
width: 100px; |
||||
color: #333333; |
||||
} |
||||
&:nth-child(2) { |
||||
width: calc(100% - 120px); |
||||
color: #666666; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.info { |
||||
overflow: hidden; |
||||
ul { |
||||
float: left; |
||||
li { |
||||
&:last-child { |
||||
p { |
||||
&:nth-child(2) { |
||||
span { |
||||
color:#fff; |
||||
display: inline-block; |
||||
padding: 1px 5px; |
||||
background-color: #FF7911; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.image { |
||||
width: 50%; |
||||
height: 100%; |
||||
padding-left: 50px; |
||||
float: left; |
||||
img { |
||||
width: 180px; |
||||
height: 180px; |
||||
border-radius:4px 4px 0px 4px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,443 @@
|
||||
<template> |
||||
<div class="market_data_page"> |
||||
<div class="data_list"> |
||||
<ul> |
||||
<li v-for="(item,index) in dataList" :key="index"> |
||||
<p>{{ item.value }}</p> |
||||
<p>{{ item.name }} <i class="el-icon-warning-outline" :title="item.tips"></i></p> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
|
||||
<div class="visit_data"> |
||||
<div class="item_box"> |
||||
<p class="echart_title">访问分布情况</p> |
||||
<map-chart :mapdata="mapData" /> |
||||
</div> |
||||
<div class="item_box"> |
||||
<div class="item_box-chart"> |
||||
<p class="echart_title">访问占比</p> |
||||
<div class="chart_box"><cake :chart-data="cakeData" /></div> |
||||
<div class="chart_box"><cake :chart-data="cakeData" /></div> |
||||
</div> |
||||
<div class="item_box-chart"> |
||||
<p class="echart_title">终端分布</p> |
||||
<div class="chart_box"><cake :chart-data="cakeData" /></div> |
||||
<div class="chart_box"><cake :chart-data="cakeData" /></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="tendency_data"> |
||||
<div class="item_box"> |
||||
<p class="echart_title">趋势图</p> |
||||
<el-tabs @tab-click="selectItem"> |
||||
<el-tab-pane v-for="(item, index) in tabList" :key="index" :label="item.name" :name="item.id" /> |
||||
</el-tabs> |
||||
<bar :chart-data="tendencyData" style="height: calc(100% - 54px)" /> |
||||
</div> |
||||
<div class="item_box"> |
||||
<p class="title"> |
||||
商家成交排行榜 |
||||
<span>成交额/元</span> |
||||
</p> |
||||
<ul> |
||||
<li v-for="(item,index) in rankList" :key="index"> |
||||
<p> |
||||
<span>{{ index + 1 }}</span> |
||||
</p> |
||||
<p>{{ item.name }}</p> |
||||
<p>{{ item.value }}</p> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="sale_data"> |
||||
<div class="item_box"> |
||||
<p class="echart_title">销售类别分类</p> |
||||
<pie :chart-data="saleData" /> |
||||
</div> |
||||
<div class="item_box"> |
||||
<p class="title"> |
||||
畅销商品排行榜 |
||||
<span>售卖数/个</span> |
||||
</p> |
||||
<ul> |
||||
<li v-for="(item,index) in rankList" :key="index"> |
||||
<p> |
||||
<span>{{ index + 1 }}</span> |
||||
</p> |
||||
<p>{{ item.name }}</p> |
||||
<p>{{ item.value }}</p> |
||||
</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="merchants_detail"> |
||||
<p> |
||||
商家数据明细 |
||||
<span>导出</span> |
||||
</p> |
||||
<el-table |
||||
:data="tableData.records" |
||||
border |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column |
||||
prop="value1" |
||||
label="店铺名称" |
||||
/> |
||||
<el-table-column |
||||
prop="value2" |
||||
label="店铺编码" |
||||
/> |
||||
<el-table-column |
||||
prop="value3" |
||||
label="参与商品数 (件)" |
||||
/> |
||||
<el-table-column |
||||
prop="value4" |
||||
label="访客数 (人)" |
||||
/> |
||||
<el-table-column |
||||
prop="value5" |
||||
label="订单数 (笔)" |
||||
/> |
||||
<el-table-column |
||||
prop="value6" |
||||
label="成交客户数 (笔)" |
||||
/> |
||||
<el-table-column |
||||
prop="value7" |
||||
label="客单件 (元)" |
||||
/> |
||||
<el-table-column |
||||
prop="value8" |
||||
label="成交总额 (元)" |
||||
/> |
||||
</el-table> |
||||
<pagination |
||||
v-show="tableData.total > 0" |
||||
:limit.sync="formParams.size" |
||||
:page.sync="formParams.current" |
||||
:total="Number(tableData.total)" |
||||
@pagination="fetch" |
||||
/> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Pagination from '@/components/Pagination' |
||||
import bar from '@/components/marketEchart/bar' |
||||
import pie from '@/components/marketEchart/pie' |
||||
import echarts from 'echarts' |
||||
import mapChart from '@/components/marketEchart/map' |
||||
import cake from '@/components/marketEchart/cake' |
||||
export default { |
||||
components: { |
||||
Pagination, |
||||
bar, |
||||
pie, |
||||
cake, |
||||
mapChart |
||||
}, |
||||
data() { |
||||
return { |
||||
dataList: [ |
||||
{ name: '成交总额(元)', value: '12454323', tips: '活动开始之后参与活动的商品总成交额' }, |
||||
{ name: '支付订单数(笔)', value: '3450', tips: '活动期间活动商品带来的支付成功订单数,不包括退款订单' }, |
||||
{ name: '支付客户数(人)', value: '3450', tips: '对活动商品进行支付的客户数' }, |
||||
{ name: '参与商家数(家)', value: '3450', tips: '本活动报名成功的商家数量' }, |
||||
{ name: '参与商品数(件)', value: '4322', tips: '本活动报名中的商家所有的活动商品数,不按最小SKU算' } |
||||
|
||||
], |
||||
rankList: [ |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' }, |
||||
{ name: '阿里巴巴小店', value: '12321,3232' } |
||||
|
||||
], |
||||
tabList: [ |
||||
{ name: '销售额', id: 'sale' }, |
||||
{ name: '访问量', id: 'visit' } |
||||
], |
||||
tendencyData: { |
||||
xData: ['2/1', '2/2', '2/3', '2/4', '2/5', '2/6', '2/7', '2/8', '2/9', '2/10', '2/11', '2/12'], |
||||
series: { |
||||
type: 'bar', |
||||
itemStyle: { |
||||
normal: { |
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
||||
offset: 0, |
||||
color: '#74D6FF' |
||||
}, { |
||||
offset: 1, |
||||
color: '#3A68F1' |
||||
}]) |
||||
} |
||||
}, |
||||
label: { |
||||
normal: { |
||||
show: true, |
||||
position: 'top', |
||||
color: '#fff', |
||||
formatter: function (p) { |
||||
return p.value || '' |
||||
} |
||||
} |
||||
}, |
||||
data: [100, 200, 80, 400, 680, 270, 700, 950, 567, 675, 234, 567], |
||||
barMaxWidth: '20px' |
||||
} |
||||
}, |
||||
saleData: { |
||||
series: { |
||||
data: [ |
||||
{ name: '家用电器', value: 4544 }, |
||||
{ name: '食用酒水', value: 4544 }, |
||||
{ name: '个护健康', value: 4544 }, |
||||
{ name: '服饰箱包', value: 4544 }, |
||||
{ name: '母婴产品', value: 4544 }, |
||||
{ name: '其它', value: 4544 } |
||||
] |
||||
} |
||||
}, |
||||
cakeData: { |
||||
series: { |
||||
data: [ |
||||
{ name: '湖北省', value: 75 }, |
||||
{ name: '广东省', value: 20 } |
||||
] |
||||
} |
||||
}, |
||||
mapData: [{ fProvince: "北京", fCity: '北京', fVisitCount: 199 }], |
||||
formParams: { |
||||
size: 10, |
||||
current: 1 |
||||
}, |
||||
tableData: { |
||||
records: [ |
||||
{ value1: '艾莉小店', value2: 'MG239', value3: '66', value4: '66', value5: '66', value6: '66', value7: 323.2, value8: '324234.09' } |
||||
], |
||||
total: 1 |
||||
} |
||||
} |
||||
}, |
||||
methods: { |
||||
fetch() { |
||||
|
||||
}, |
||||
selectItem(v) { |
||||
console.log(v.name) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.market_data_page { |
||||
.data_list { |
||||
box-shadow:0px 0px 10px 0px rgba(51,51,51,0.15); |
||||
border-radius:4px; |
||||
ul { |
||||
height: 140px; |
||||
overflow: hidden; |
||||
list-style: none; |
||||
li { |
||||
float: left; |
||||
width: 20%; |
||||
text-align: center; |
||||
p { |
||||
margin: 0; |
||||
padding: 0; |
||||
i { |
||||
color: red; |
||||
} |
||||
&:nth-child(1) { |
||||
font-size:40px; |
||||
color:rgba(255,173,17,1); |
||||
font-weight: 600; |
||||
line-height: 100px; |
||||
} |
||||
&:nth-child(2) { |
||||
font-size:18px; |
||||
color:rgba(51,51,51,1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.visit_data { |
||||
overflow: hidden; |
||||
.item_box { |
||||
position: relative; |
||||
height: 520px; |
||||
width: calc(50% - 10px); |
||||
margin: 10px 0; |
||||
float: left; |
||||
box-sizing: border-box; |
||||
border-radius:4px; |
||||
&:nth-child(1) { |
||||
margin-right: 20px; |
||||
border-left: 1px solid rgba(51,51,51,0.15); |
||||
box-shadow:0px 0px 10px 0px rgba(51,51,51,0.15); |
||||
} |
||||
&:nth-child(2) { |
||||
.item_box-chart { |
||||
overflow: hidden; |
||||
position: relative; |
||||
height: calc(50% - 10px); |
||||
margin-bottom: 20px; |
||||
box-shadow:0px 0px 10px 0px rgba(51,51,51,0.15); |
||||
border-right: 1px solid rgba(51,51,51,0.15); |
||||
.chart_box { |
||||
width: 50%; |
||||
height: 100%; |
||||
float: left; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.tendency_data, .sale_data { |
||||
overflow: hidden; |
||||
.item_box { |
||||
position: relative; |
||||
float: left; |
||||
height: 520px; |
||||
margin: 10px 0; |
||||
box-shadow:0px 0px 10px 0px rgba(51,51,51,0.15); |
||||
border-radius:4px; |
||||
box-sizing: border-box; |
||||
&:nth-child(1) { |
||||
width: calc(60% - 20px); |
||||
margin-right: 20px; |
||||
border-left: 1px solid rgba(51,51,51,0.15); |
||||
} |
||||
&:nth-child(2) { |
||||
width: 40%; |
||||
border-right: 1px solid rgba(51,51,51,0.15); |
||||
padding: 20px; |
||||
p.title { |
||||
font-size:18px; |
||||
color: #333333; |
||||
span { |
||||
font-size:16px; |
||||
float: right; |
||||
} |
||||
} |
||||
ul { |
||||
li { |
||||
display: flex; |
||||
p { |
||||
flex: 2; |
||||
margin: 0; |
||||
margin-bottom: 20px; |
||||
&:nth-child(1) { |
||||
span { |
||||
display: inline-block; |
||||
width:26px; |
||||
height:26px; |
||||
line-height: 26px; |
||||
text-align: center; |
||||
background:rgba(221,221,221,1); |
||||
border-radius:50%; |
||||
} |
||||
|
||||
} |
||||
&:nth-child(2) { |
||||
flex: 7; |
||||
} |
||||
&:nth-child(3) { |
||||
flex: 5; |
||||
} |
||||
} |
||||
&:nth-child(-n + 3) { |
||||
p { |
||||
&:nth-child(1) { |
||||
span { |
||||
background:rgba(255,121,17,1); |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.tendency_data { |
||||
.item_box { |
||||
&:nth-child(1) { |
||||
padding: 50px 80px 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.merchants_detail { |
||||
margin: 10px 0; |
||||
padding: 10px; |
||||
box-shadow:0px 0px 10px 0px rgba(51,51,51,0.15); |
||||
min-height: 100px; |
||||
border-radius:4px; |
||||
p { |
||||
font-size:18px; |
||||
color: #333333; |
||||
line-height: 38px; |
||||
height:38px; |
||||
span { |
||||
display: inline-block; |
||||
float: right; |
||||
color: #fff; |
||||
text-align: center; |
||||
width:60px; |
||||
height:38px; |
||||
font-size:14px; |
||||
background:rgba(58,104,241,1); |
||||
border-radius:4px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-table { |
||||
th { |
||||
background: #EEF3FF; |
||||
color:#333333; |
||||
font-size:16px; |
||||
font-weight: 400; |
||||
border-color: #E0E5EB; |
||||
text-align: center; |
||||
} |
||||
td { |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #666666; |
||||
} |
||||
} |
||||
|
||||
.echart_title { |
||||
font-size:18px; |
||||
position: absolute; |
||||
top: 30px; |
||||
left: 20px; |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-tabs { |
||||
|
||||
} |
||||
</style> |
@ -0,0 +1,228 @@
|
||||
<template> |
||||
<div class="shop_page"> |
||||
<div class="toolbar"> |
||||
<el-form |
||||
:inline="true" |
||||
:model="formParams" |
||||
> |
||||
<el-form-item label="店铺名称"> |
||||
<el-input v-model="formParams.name" size="mini" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="店铺编码"> |
||||
<el-input v-model="formParams.code" size="mini" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="审核状态"> |
||||
<el-select |
||||
v-model="formParams.status" |
||||
size="mini" |
||||
> |
||||
<el-option |
||||
v-for="(item, index) in statusList" |
||||
:key="index" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item> |
||||
<el-button |
||||
type="primary" |
||||
size="mini" |
||||
@click="query" |
||||
> |
||||
查询 |
||||
</el-button> |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
|
||||
<div class="content_table"> |
||||
<div class="table"> |
||||
<el-table |
||||
:data="tableData.records" |
||||
border |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column |
||||
prop="name" |
||||
label="店铺名称" |
||||
/> |
||||
<el-table-column |
||||
prop="status" |
||||
label="店铺编码" |
||||
/> |
||||
<el-table-column |
||||
prop="type" |
||||
label="参与商品数" |
||||
/> |
||||
<el-table-column |
||||
prop="custom" |
||||
label="审核次数" |
||||
/> |
||||
<el-table-column |
||||
prop="goods" |
||||
label="审核状态" |
||||
/> |
||||
<el-table-column label="操作"> |
||||
<template |
||||
slot-scope="scope" |
||||
> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="details(scope.row)" |
||||
> |
||||
查看商品 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="records(scope.row)" |
||||
> |
||||
审核记录 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="handle(scope.row)" |
||||
> |
||||
处理 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="quit(scope.row)" |
||||
> |
||||
清退 |
||||
</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<pagination |
||||
v-show="tableData.total > 0" |
||||
:limit.sync="formParams.size" |
||||
:page.sync="formParams.current" |
||||
:total="Number(tableData.total)" |
||||
@pagination="fetch" |
||||
/> |
||||
</div> |
||||
|
||||
<Dialog |
||||
:title="dialog.title" |
||||
:visible.sync="dialog.visible" |
||||
:fullscreen="!true" |
||||
width="55%" |
||||
> |
||||
<goods v-if="dialog.type===1" /> |
||||
<audit-log v-if="dialog.type===2" /> |
||||
</Dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Pagination from '@/components/Pagination' |
||||
import goods from './component/goods' |
||||
import auditLog from './component/auditLog' |
||||
import { Dialog } from 'element-ui' |
||||
export default { |
||||
components: { |
||||
Pagination, |
||||
goods, |
||||
Dialog, |
||||
auditLog |
||||
}, |
||||
data() { |
||||
return { |
||||
formParams: { |
||||
name: '', |
||||
code: '', |
||||
status: '', |
||||
size: 10, |
||||
current: 1 |
||||
}, |
||||
statusList: [ |
||||
{ label: '全部', value: '' }, |
||||
{ label: '待审核', value: '1' }, |
||||
{ label: '审核不通过', value: '2' }, |
||||
{ label: '审核通过', value: '3' } |
||||
], |
||||
tableData: { |
||||
records: [ |
||||
{ name: '阿里小店', status: 'N95', type: '23', custom: 12, goods: '待审核' } |
||||
], |
||||
total: 1 |
||||
}, |
||||
dialog: {} |
||||
} |
||||
}, |
||||
methods: { |
||||
fetch() { |
||||
|
||||
}, |
||||
query() { |
||||
|
||||
}, |
||||
details() { |
||||
this.dialog = { |
||||
title: '活动商品', |
||||
visible: true, |
||||
type: 1 |
||||
} |
||||
}, |
||||
records() { |
||||
this.dialog = { |
||||
title: '审核记录', |
||||
visible: true, |
||||
type: 2 |
||||
} |
||||
}, |
||||
handle() { |
||||
|
||||
}, |
||||
quit() { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
.shop_page { |
||||
.content_table { |
||||
.table { |
||||
|
||||
} |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-table { |
||||
th { |
||||
background: #EEF3FF; |
||||
color:#333333; |
||||
font-size:16px; |
||||
font-weight: 400; |
||||
border-color: #E0E5EB; |
||||
text-align: center; |
||||
} |
||||
td { |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #666666; |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-dialog__wrapper { |
||||
.el-dialog__header { |
||||
height: 70px; |
||||
background-color: #3A68F2; |
||||
.el-dialog__title { |
||||
font-size:24px; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,221 @@
|
||||
<template> |
||||
<div class="marketing_page"> |
||||
<div class="content"> |
||||
<div class="toolbar"> |
||||
<el-form |
||||
:inline="true" |
||||
:model="formParams" |
||||
> |
||||
<el-form-item label="活动名称"> |
||||
<el-input v-model="formParams.name" size="mini" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="活动状态"> |
||||
<el-select |
||||
v-model="formParams.status" |
||||
size="mini" |
||||
> |
||||
<el-option |
||||
v-for="(item, index) in statusList" |
||||
:key="index" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="营销方式"> |
||||
<el-select |
||||
v-model="formParams.type" |
||||
size="mini" |
||||
> |
||||
<el-option |
||||
v-for="(item, index) in typeList" |
||||
:key="index" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
/> |
||||
</el-select> |
||||
|
||||
<el-form-item> |
||||
<el-button |
||||
type="primary" |
||||
size="mini" |
||||
@click="query" |
||||
> |
||||
查询 |
||||
</el-button> |
||||
<el-button |
||||
type="primary" |
||||
size="mini" |
||||
@click="add" |
||||
> |
||||
新建活动 |
||||
</el-button> |
||||
</el-form-item> |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
|
||||
<div class="content_table"> |
||||
<div class="table"> |
||||
<el-table |
||||
:data="tableData.records" |
||||
border |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column |
||||
prop="name" |
||||
label="活动名称" |
||||
/> |
||||
<el-table-column |
||||
prop="status" |
||||
label="活动状态" |
||||
/> |
||||
<el-table-column |
||||
prop="type" |
||||
label="营销方式" |
||||
/> |
||||
<el-table-column |
||||
prop="custom" |
||||
label="商家数" |
||||
/> |
||||
<el-table-column |
||||
prop="goods" |
||||
label="商品数量" |
||||
/> |
||||
<el-table-column label="操作"> |
||||
<template |
||||
slot-scope="scope" |
||||
> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="details(scope.row)" |
||||
> |
||||
详情 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="edit(scope.row)" |
||||
> |
||||
编辑 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="stop(scope.row)" |
||||
> |
||||
结束 |
||||
</el-button> |
||||
<el-button |
||||
type="text" |
||||
size="small" |
||||
@click.native.prevent="deletes(scope.row)" |
||||
> |
||||
删除 |
||||
</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<pagination |
||||
v-show="tableData.total > 0" |
||||
:limit.sync="formParams.size" |
||||
:page.sync="formParams.current" |
||||
:total="Number(tableData.total)" |
||||
@pagination="fetch" |
||||
/> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Pagination from '@/components/Pagination' |
||||
export default { |
||||
components: { |
||||
Pagination |
||||
}, |
||||
data() { |
||||
return { |
||||
formParams: { |
||||
name: '', |
||||
status: '', |
||||
type: '', |
||||
size: 10, |
||||
current: 1 |
||||
}, |
||||
statusList: [ |
||||
{ label: '全部', value: '' }, |
||||
{ label: '报名进行中', value: 1 }, |
||||
{ label: '报名未开始', value: 2 }, |
||||
{ label: '活动进行中', value: 3 }, |
||||
{ label: '活动已结束', value: 4 }, |
||||
{ label: '活动待开始', value: 5 } |
||||
], |
||||
typeList: [ |
||||
{ label: '全部', value: '' }, |
||||
{ label: '满减', value: 1 }, |
||||
{ label: '优惠券', value: 2 } |
||||
], |
||||
tableData: { |
||||
records: [ |
||||
{ name: '618大促', status: '报名状态中', type: '满减', custom: 12, goods: 15 } |
||||
] |
||||
} |
||||
} |
||||
}, |
||||
methods: { |
||||
query() {}, |
||||
add() { |
||||
this.$router.push({ path: '/marketing/add' }) |
||||
}, |
||||
details() { |
||||
this.$router.push({ path: '/marketing/details' }) |
||||
}, |
||||
edit() { |
||||
|
||||
}, |
||||
stop() { |
||||
|
||||
}, |
||||
deletes() { |
||||
|
||||
}, |
||||
fetch() {} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang='less' scoped> |
||||
|
||||
.marketing_page { |
||||
padding: 10px 20px; |
||||
box-sizing: border-box; |
||||
.content { |
||||
background-color: #fff; |
||||
.toolbar { |
||||
padding: 10px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/deep/ .el-table { |
||||
th { |
||||
background: #EEF3FF; |
||||
color:#333333; |
||||
font-size:16px; |
||||
font-weight: 400; |
||||
border-color: #E0E5EB; |
||||
text-align: center; |
||||
} |
||||
td { |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #666666; |
||||
} |
||||
} |
||||
</style> |
||||
|
Loading…
Reference in new issue