hupeng
5 years ago
12 changed files with 522 additions and 144 deletions
@ -0,0 +1,112 @@
|
||||
<template> |
||||
<div :class="className" :style="{height:height,width:width}"/> |
||||
</template> |
||||
|
||||
<script> |
||||
import echarts from 'echarts' |
||||
require('echarts/theme/macarons') // echarts theme |
||||
import { debounce } from '@/utils' |
||||
import { chart } from '@/api/visits' |
||||
|
||||
const animationDuration = 6000 |
||||
|
||||
export default { |
||||
props: { |
||||
className: { |
||||
type: String, |
||||
default: 'chart' |
||||
}, |
||||
width: { |
||||
type: String, |
||||
default: '100%' |
||||
}, |
||||
height: { |
||||
type: String, |
||||
default: '300px' |
||||
} |
||||
}, |
||||
data() { |
||||
return { |
||||
chart: null, |
||||
day: [],num: [] |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.initChart() |
||||
this.__resizeHandler = debounce(() => { |
||||
if (this.chart) { |
||||
this.chart.resize() |
||||
} |
||||
}, 100) |
||||
window.addEventListener('resize', this.__resizeHandler) |
||||
}, |
||||
beforeDestroy() { |
||||
if (!this.chart) { |
||||
return |
||||
} |
||||
window.removeEventListener('resize', this.__resizeHandler) |
||||
this.chart.dispose() |
||||
this.chart = null |
||||
}, |
||||
methods: { |
||||
initChart() { |
||||
this.chart = echarts.init(this.$el, 'macarons') |
||||
|
||||
chart().then(res => { |
||||
var _info = res.chartT, |
||||
day = [], |
||||
num = []; |
||||
_info.forEach(function(item) { |
||||
day.push(item.time); |
||||
num.push(item.num); |
||||
}); |
||||
|
||||
console.log(day,num) |
||||
|
||||
this.chart.setOption({ |
||||
tooltip: { |
||||
trigger: 'axis', |
||||
axisPointer: { // 坐标轴指示器,坐标轴触发有效 |
||||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' |
||||
} |
||||
}, |
||||
grid: { |
||||
top: 10, |
||||
left: '2%', |
||||
right: '2%', |
||||
bottom: '3%', |
||||
containLabel: true |
||||
}, |
||||
xAxis: [{ |
||||
type: 'category', |
||||
data: day, |
||||
axisTick: { |
||||
alignWithLabel: true |
||||
} |
||||
}], |
||||
yAxis: [{ |
||||
type: 'value', |
||||
axisTick: { |
||||
show: false |
||||
} |
||||
}], |
||||
series: [{ |
||||
name: 'pageA', |
||||
type: 'line', |
||||
stack: 'vistors', |
||||
barWidth: '60%', |
||||
data: num, |
||||
animationDuration |
||||
}] |
||||
}) |
||||
|
||||
}) |
||||
|
||||
console.log('day:'+this.day) |
||||
|
||||
|
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
@ -0,0 +1,133 @@
|
||||
<template> |
||||
<el-row :gutter="40" class="panel-group"> |
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> |
||||
<div class="card-panel"> |
||||
<div class="card-panel-icon-wrapper icon-people"> |
||||
<i class="el-icon-s-order card-panel-icon"></i> |
||||
</div> |
||||
<div class="card-panel-description"> |
||||
<div class="card-panel-text">今日订单数</div> |
||||
<count-to :start-val="0" :end-val="count.todayCount" :duration="2600" class="card-panel-num"/> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> |
||||
<div class="card-panel"> |
||||
<div class="card-panel-icon-wrapper icon-message"> |
||||
<i class="el-icon-s-order card-panel-icon"></i> |
||||
</div> |
||||
<div class="card-panel-description"> |
||||
<div class="card-panel-text">昨日订单数</div> |
||||
<count-to :start-val="0" :end-val="count.proCount" :duration="3000" class="card-panel-num"/> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> |
||||
<div class="card-panel"> |
||||
<div class="card-panel-icon-wrapper icon-money"> |
||||
<i class="el-icon-s-order card-panel-icon"></i> |
||||
</div> |
||||
<div class="card-panel-description"> |
||||
<div class="card-panel-text">上周订单数</div> |
||||
<count-to :start-val="0" :end-val="count.lastWeekCount" :duration="3200" class="card-panel-num"/> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> |
||||
<div class="card-panel"> |
||||
<div class="card-panel-icon-wrapper icon-shopping"> |
||||
<i class="el-icon-s-order card-panel-icon"></i> |
||||
</div> |
||||
<div class="card-panel-description"> |
||||
<div class="card-panel-text">本月订单数</div> |
||||
<count-to :start-val="0" :end-val="count.monthCount" :duration="3600" class="card-panel-num"/> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
</el-row> |
||||
</template> |
||||
<script> |
||||
import CountTo from 'vue-count-to' |
||||
import { get,gett } from '@/api/visits' |
||||
export default { |
||||
components: { |
||||
CountTo |
||||
}, |
||||
data() { |
||||
return { |
||||
count: { todayPrice: 0, todayCount: 0, proPrice: 0, proCount: 0, |
||||
monthPrice: 0, monthCount: 0, lastWeekCount: 0, lastWeekPrice: 0 } |
||||
} |
||||
}, |
||||
mounted() { |
||||
gett().then(res => { |
||||
this.count.todayPrice = res.todayPrice |
||||
this.count.todayCount = res.todayCount |
||||
this.count.proCount = res.proCount |
||||
this.count.proPrice = res.proPrice |
||||
|
||||
this.count.monthPrice = res.monthPrice |
||||
this.count.monthCount = res.monthCount |
||||
this.count.lastWeekCount = res.lastWeekCount |
||||
this.count.lastWeekPrice = res.lastWeekPrice |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
.panel-group { |
||||
margin-top: 18px; |
||||
.card-panel-col{ |
||||
margin-bottom: 32px; |
||||
} |
||||
.card-panel { |
||||
height: 108px; |
||||
font-size: 12px; |
||||
position: relative; |
||||
overflow: hidden; |
||||
color: #666; |
||||
background: #fff; |
||||
box-shadow: 4px 4px 40px rgba(0, 0, 0, .05); |
||||
border-color: rgba(0, 0, 0, .05); |
||||
.icon-people { |
||||
color: #40c9c6; |
||||
} |
||||
.icon-message { |
||||
color: #36a3f7; |
||||
} |
||||
.icon-money { |
||||
color: #f4516c; |
||||
} |
||||
.icon-shopping { |
||||
color: #34bfa3 |
||||
} |
||||
.card-panel-icon-wrapper { |
||||
float: left; |
||||
margin: 14px 0 0 14px; |
||||
padding: 16px; |
||||
transition: all 0.38s ease-out; |
||||
border-radius: 6px; |
||||
} |
||||
.card-panel-icon { |
||||
float: left; |
||||
font-size: 48px; |
||||
} |
||||
.card-panel-description { |
||||
float: right; |
||||
font-weight: bold; |
||||
margin: 26px; |
||||
margin-left: 0px; |
||||
.card-panel-text { |
||||
line-height: 18px; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
font-size: 16px; |
||||
margin-bottom: 12px; |
||||
} |
||||
.card-panel-num { |
||||
font-size: 20px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,73 @@
|
||||
<template> |
||||
<div class="app-container"> |
||||
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="150px"> |
||||
<el-form-item label="AppID" > |
||||
<el-input v-model="form.wxpay_appId" style="width: 370px;"/> |
||||
</el-form-item> |
||||
<el-form-item label="商户id" > |
||||
<el-input v-model="form.wxpay_mchId" style="width: 370px;" type="password" /> |
||||
</el-form-item> |
||||
<el-form-item label="商户密钥" > |
||||
<el-input v-model="form.wxpay_mchKey" style="width: 370px;" type="password" /> |
||||
</el-form-item> |
||||
<el-form-item label="" > |
||||
<el-button type="primary" @click="doSubmit">提交</el-button> |
||||
</el-form-item> |
||||
|
||||
</el-form> |
||||
|
||||
|
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import checkPermission from '@/utils/permission' |
||||
import initData from '@/mixins/initData' |
||||
import { del, add, get } from '@/api/yxSystemConfig' |
||||
import eForm from './form' |
||||
import picUpload from '@/components/pic-upload' |
||||
import { Message } from 'element-ui' |
||||
export default { |
||||
components: { eForm, picUpload }, |
||||
mixins: [initData], |
||||
data() { |
||||
return { |
||||
delLoading: false, |
||||
form: { |
||||
wxpay_appId: '', |
||||
wxpay_mchId: '', |
||||
wxpay_mchKey: '' |
||||
}, |
||||
rules: { |
||||
} |
||||
} |
||||
}, |
||||
created() { |
||||
get().then(rese=>{ |
||||
let newObj = {} |
||||
rese.content.map(function (key,value) { |
||||
let keyName = key.menuName; |
||||
newObj[keyName] = key.value |
||||
}) |
||||
|
||||
this.form = newObj |
||||
}) |
||||
}, |
||||
methods: { |
||||
checkPermission, |
||||
doSubmit() { |
||||
add(this.form).then(res => { |
||||
Message({message: '设置成功',type: 'success'}) |
||||
}).catch(err => { |
||||
//this.loading = false |
||||
console.log(err.response.data.message) |
||||
}) |
||||
}, |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
|
||||
</style> |
@ -0,0 +1,69 @@
|
||||
<template> |
||||
<div class="app-container"> |
||||
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="150px"> |
||||
<el-form-item label="AppID" > |
||||
<el-input v-model="form.wxapp_appId" style="width: 370px;"/> |
||||
</el-form-item> |
||||
<el-form-item label="小程序密钥" > |
||||
<el-input v-model="form.wxapp_secret" style="width: 370px;" type="password" /> |
||||
</el-form-item> |
||||
<el-form-item label="" > |
||||
<el-button type="primary" @click="doSubmit">提交</el-button> |
||||
</el-form-item> |
||||
|
||||
</el-form> |
||||
|
||||
|
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import checkPermission from '@/utils/permission' |
||||
import initData from '@/mixins/initData' |
||||
import { del, add, get } from '@/api/yxSystemConfig' |
||||
import eForm from './form' |
||||
import picUpload from '@/components/pic-upload' |
||||
import { Message } from 'element-ui' |
||||
export default { |
||||
components: { eForm, picUpload }, |
||||
mixins: [initData], |
||||
data() { |
||||
return { |
||||
delLoading: false, |
||||
form: { |
||||
wxapp_appId: '', |
||||
wxapp_secret: '' |
||||
}, |
||||
rules: { |
||||
} |
||||
} |
||||
}, |
||||
created() { |
||||
get().then(rese=>{ |
||||
let newObj = {} |
||||
rese.content.map(function (key,value) { |
||||
let keyName = key.menuName; |
||||
newObj[keyName] = key.value |
||||
}) |
||||
|
||||
this.form = newObj |
||||
}) |
||||
}, |
||||
methods: { |
||||
checkPermission, |
||||
doSubmit() { |
||||
add(this.form).then(res => { |
||||
Message({message: '设置成功',type: 'success'}) |
||||
}).catch(err => { |
||||
//this.loading = false |
||||
console.log(err.response.data.message) |
||||
}) |
||||
}, |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
|
||||
</style> |
Loading…
Reference in new issue