yshop2.1
This commit is contained in:
87
src/views/dashboard/OrderCount.vue
Normal file
87
src/views/dashboard/OrderCount.vue
Normal file
@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<div :class="className" :style="{height:height,width:width}" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import echarts from 'echarts'
|
||||
require('echarts/theme/macarons') // echarts theme
|
||||
import { getOrderCount } from '@/api/visits'
|
||||
import { debounce } from '@/utils'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
className: {
|
||||
type: String,
|
||||
default: 'chart'
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: '100%'
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '300px'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chart: null,
|
||||
column: [],
|
||||
orderCountDatas: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
getOrderCount().then(res => {
|
||||
this.column = res.column,
|
||||
this.orderCountDatas = res.orderCountDatas
|
||||
}).then(() =>{
|
||||
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')
|
||||
|
||||
this.chart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
left: 'center',
|
||||
bottom: '10',
|
||||
data: this.column
|
||||
},
|
||||
calculable: true,
|
||||
series: [
|
||||
{
|
||||
name: '商品分类销售占总销售的比例',
|
||||
type: 'pie',
|
||||
roseType: 'radius',
|
||||
radius: [15, 95],
|
||||
center: ['50%', '38%'],
|
||||
data: this.orderCountDatas,
|
||||
animationEasing: 'cubicInOut',
|
||||
animationDuration: 2600
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -3,44 +3,52 @@
|
||||
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<div class="card-panel-icon-wrapper icon-people">
|
||||
<svg-icon icon-class="today" class-name="card-panel-icon" />
|
||||
<svg-icon icon-class="peoples" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">今日成交额</div>
|
||||
<count-to :start-val="0" :end-val="count.todayPrice" :duration="2600" class="card-panel-num" />
|
||||
<div class="card-panel-text">
|
||||
会员总数
|
||||
</div>
|
||||
<count-to :start-val="0" :end-val="count.userCount" :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">
|
||||
<svg-icon icon-class="ic-yesterday" class-name="card-panel-icon" />
|
||||
<svg-icon icon-class="order" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">昨日成交额</div>
|
||||
<count-to :start-val="0" :end-val="count.proPrice" :duration="3000" class="card-panel-num" />
|
||||
<div class="card-panel-text">
|
||||
订单总数
|
||||
</div>
|
||||
<count-to :start-val="0" :end-val="count.orderCount" :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">
|
||||
<svg-icon icon-class="seven" class-name="card-panel-icon" />
|
||||
<svg-icon icon-class="money" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">近七天成交额</div>
|
||||
<count-to :start-val="0" :end-val="count.lastWeekPrice" :duration="3200" class="card-panel-num" />
|
||||
<div class="card-panel-text">
|
||||
总金额
|
||||
</div>
|
||||
<count-to :start-val="0" :end-val="count.priceCount" :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" >
|
||||
<div class="card-panel-icon-wrapper icon-shopping">
|
||||
<svg-icon icon-class="monthlyview" class-name="card-panel-icon" />
|
||||
<svg-icon icon-class="shopping" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">本月成交额</div>
|
||||
<count-to :start-val="0" :end-val="count.monthPrice" :duration="3600" class="card-panel-num" />
|
||||
<div class="card-panel-text">
|
||||
商品总数
|
||||
</div>
|
||||
<count-to :start-val="0" :end-val="count.goodsCount" :duration="3600" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@ -56,7 +64,8 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
count: { todayPrice: 0, todayCount: 0, proPrice: 0, proCount: 0,
|
||||
monthPrice: 0, monthCount: 0, lastWeekCount: 0, lastWeekPrice: 0 }
|
||||
monthPrice: 0, monthCount: 0, lastWeekCount: 0, lastWeekPrice: 0,
|
||||
userCount: 0, orderCount: 0, priceCount: 0, goodsCount: 0}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -70,64 +79,102 @@ export default {
|
||||
this.count.monthCount = res.monthCount
|
||||
this.count.lastWeekCount = res.lastWeekCount
|
||||
this.count.lastWeekPrice = res.lastWeekPrice
|
||||
|
||||
this.count.userCount = res.userCount
|
||||
this.count.orderCount = res.orderCount
|
||||
this.count.priceCount = res.priceCount
|
||||
this.count.goodsCount = res.goodsCount
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.panel-group {
|
||||
margin-top: 18px;
|
||||
.card-panel-col{
|
||||
margin-bottom: 32px;
|
||||
.panel-group {
|
||||
margin-top: 18px;
|
||||
|
||||
.card-panel-col {
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-panel {
|
||||
height: 108px;
|
||||
cursor: pointer;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.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;
|
||||
}
|
||||
|
||||
@media (max-width:550px) {
|
||||
.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;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card-panel-icon-wrapper {
|
||||
float: none !important;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
display: block;
|
||||
margin: 14px auto !important;
|
||||
float: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -86,10 +86,14 @@ export default {
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
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;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@
|
||||
<span style="font-weight: bolder">github:</span><a target="_blank" href="https://github.com/guchengwuyue/yshopmall">访问github</a>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">公众号演示:</span><img width="100" height="100" src="https://image.dayouqiantu.cn/qrcode_for_gh_95df5a2881cc_258.jpg">
|
||||
<span style="font-weight: bolder">公众号演示:</span><img width="100" height="100" src="https://image.dayouqiantu.cn/5e79f9ff4c694.jpg">
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">小程序演示:</span>关注上面公众号之后,选择yshop小程序体验即可
|
||||
@ -40,7 +40,7 @@
|
||||
<span style="font-weight: bolder">H5测试号</span>:hupeng/123456,也可以自行注册
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder;color: red">如果想体验手机端商户管理与订单核销功能,记得去后台会员管理,搜索找到自己,
|
||||
<span style="font-weight: bolder;color: red">如果想体验手机端商户管理功能,记得去后台会员管理,搜索找到自己,
|
||||
然后编辑设置商户管理员开启即可,然后刷新个人中心即可体验</span>
|
||||
</div>
|
||||
</el-card>
|
||||
@ -62,20 +62,31 @@
|
||||
</div>
|
||||
<div class="text item">
|
||||
1、VIP为终身制包括JAVA端+H5公众号端,后期免费升级迭代及其技术支持。!<br>
|
||||
2、价格:vip会员价298元(JAVA+H5+公众号版),后续的系统升级vip价格会有相应的调整的,所以早上车更优惠哦!<br>
|
||||
2、价格:vip会员价299元(JAVA+H5+公众号版),后续的系统升级vip价格会有相应的调整的,所以早上车更优惠哦!<br>
|
||||
3、VIP购买淘宝地址:https://item.taobao.com/item.htm?id=607532386325<br>
|
||||
4、加入vip群:931426444,请输入你的淘宝订单编号,即可入群<br>
|
||||
5、群里面获取私服git<br>
|
||||
6、如果需要小程序需要单独购买看下面<br>
|
||||
7、此套餐必须购买才能进VIP会员群<br>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">VIP版如果需要小程序需要另外单独购买:</span>
|
||||
<span style="font-weight: bolder">VIP版如果需要小程序端需要另外单独购买:</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
1、小程序是mpvue2.0框架开发<br>
|
||||
2、价格:100元,只是单独的小程序!购买小程序请务必要购买上面VIP套餐<br>
|
||||
3、购买淘宝地址:https://item.taobao.com/item.htm?id=612007949053<br>
|
||||
4、群里面获取私服git<br>
|
||||
5、可选<br>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">VIP版如果需要uniapp端另外单独购买:</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
1、uniapp目前已经基本开发完成,预计于2.1版本一块发布<br>
|
||||
2、uniapp目前支持打包微信小程序与APP(包括安卓Android与苹果IOS)<br>
|
||||
3、uniapp目前只针对会员预售而且预售阶段是有优惠的哦<br>
|
||||
4、可选<br>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
@ -87,22 +98,49 @@
|
||||
<span style="font-weight: bolder">更新日志</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">(预计4月发布)yshop2.1版本 更新如下:</span>
|
||||
<span style="font-weight: bolder">(预计4月初发布)yshop2.1版本(已上演示版的公众号/H5版本) 更新如下:</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
1、单门店升级为多门店
|
||||
1、单门店升级为多门店)
|
||||
</div>
|
||||
<div class="text item">
|
||||
2、充值增加充值方案
|
||||
2、充值新增充值方案
|
||||
</div>
|
||||
<div class="text item">
|
||||
3、打通小程序与公众号账号
|
||||
</div>
|
||||
<div class="text item">
|
||||
4、新增微信app支付(主要用于uniapp)
|
||||
4、新增微信app支付
|
||||
</div>
|
||||
<div class="text item">
|
||||
5、修复。。。。。等
|
||||
5、会员等级升级新增手动解锁
|
||||
</div>
|
||||
<div class="text item">
|
||||
6、app分销海报与商品详情海报新增了邀请码
|
||||
</div>
|
||||
<div class="text item">
|
||||
7、app注册新增了邀请码形成分销关系)
|
||||
</div>
|
||||
<div class="text item">
|
||||
8、后台素材按照时间排序#I1C6MK
|
||||
</div>
|
||||
<div class="text item">
|
||||
9、商品分类新增判断自己不能选择自己作为父级#I1C5AP
|
||||
</div>
|
||||
<div class="text item">
|
||||
10、修复订单详情昵称不显示问题#I1C055
|
||||
</div>
|
||||
<div class="text item">
|
||||
11、修复导入微信地址必须要刷新的问题#I1CCEJ
|
||||
</div>
|
||||
<div class="text item">
|
||||
12、修复当设置最大抵扣积为0的导致积分不能抵扣的问题
|
||||
</div>
|
||||
<div class="text item">
|
||||
13、优化订单详情腾讯key的提示
|
||||
</div>
|
||||
<div class="text item">
|
||||
14、优化订单列表新增门店标识
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">(2020-03-15)2.0.X修复优化版本 发布更新如下:</span>
|
||||
|
Reference in New Issue
Block a user