
- <template>
- <view>
- <view>
- <view class="title">概况view>
- <view class="line_position">
- <view class="line1">
- <view class="item">
- <view class="one">今日销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.daysale_allamount}}view>
- <view class="right">{{line1_info.daychangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.daychangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">本周销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.weeksale_allamount}}view>
- <view class="right">{{line1_info.weekchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.weekchangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">本月销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.monthsale_allamount}}view>
- <view class="right">{{line1_info.monthchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.monthchangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">今年销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.yearsale_allamount}}view>
- <view class="right">{{line1_info.yearchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.yearchangeRate)" alt="">image>
- view>
- view>
- view>
- view>
- view>
- <view>
- <view class="title">销售额统计view>
- <view class="tab_position">
- <view class="tab-bar">
- <text class="tab" :class="{ 'active': activeTab === '0' }" @click="changeTab('0')">周统计text>
- <text class="tab" :class="{ 'active': activeTab === '1' }" @click="changeTab('1')">月统计text>
- <text class="tab" :class="{ 'active': activeTab === '2' }" @click="changeTab('2')">年统计text>
- view>
- view>
- <view v-show="activeTab === '0'">
- <view class="out">
- <view id="myChart">view>
- view>
- view>
- <view v-show="activeTab === '1'">
- <view class="out">
- <view id="myChart1">view>
- view>
- view>
- <view v-show="activeTab === '2'">
- <view class="out">
- <view id="myChart2">view>
- view>
- view>
- view>
-
-
-
- view>
- template>
- <script>
- // import echarts from '@/static/js/echarts.js' // 引入文件
- import * as echarts from 'echarts';
- export default {
- data() {
- return {
- line1_info: '',
- down: getApp().globalData.icon + 'report/down.png',
- up: getApp().globalData.icon + 'report/up.png',
- line: getApp().globalData.icon + 'report/line.png',
- activeTab: '0', //默认分页面
- weekinfo: [], // 定义一个空数组用于存储周统计数据
- monthinfo: [], // 定义一个空数组用于存储月统计数据
- }
- },
- methods: {
- //切换分页面
- changeTab(index) {
- this.activeTab = index;
- },
- //图片展示
- getImagePath(rate) {
- if (rate === "无法计算") {
- return this.line;
- } else if (rate && rate.startsWith("-")) {
- return this.down;
- } else {
- return this.up;
- }
- },
- getdata() {
- uni.request({
- url: getApp().globalData.position + 'Other/select_sale_ekanbaninfo',
- data: {},
- header: {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- method: 'POST',
- dataType: 'json',
- success: res => {
- //行1:年月日总额统计
- this.line1_info = res.data;
- //行2:周统计
- var weekinfo = res.data.week_info;
- this.weekinfo = weekinfo;
- //行2:月统计
- var monthinfo = res.data.month_info;
- this.monthinfo = monthinfo;
- //行2:年统计
- var yearinfo = res.data.year_info;
- this.yearinfo = yearinfo;
- console.log(this.yearinfo)
- //显示图表
- this.echart();
- },
- fail(res) {
- console.log("查询失败")
- }
- });
- },
- //绘制图标
- echart() {
- // 周统计金额
- const myChart = echarts.init(document.getElementById('myChart'))
- // 提取日期和对应的值
- var dates = this.weekinfo.date;
- var values = this.weekinfo.total_amount;
- var weeks = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
- // 进行图表的配置和数据处理
- myChart.setOption({
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#e57b7b'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values[params.dataIndex];
- var date = dates[params.dataIndex];
- var week = weeks[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '
' + week + ' : ' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: weeks,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '8',
- name: '销量',
- type: 'bar',
- data: values,
- itemStyle: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }]
- });
- //月统计
- // 周统计金额
- const myChart1 = echarts.init(document.getElementById('myChart1'))
- // 提取日期和对应的值
- var dates1 = this.monthinfo.date;
- var values1 = this.monthinfo.total_amount;
- var months1 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
- var months1_chinese = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
- // 进行图表的配置和数据处理
- myChart1.setOption({
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#5588d4'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values1[params.dataIndex];
- var date = dates1[params.dataIndex];
- var month = months1_chinese[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '
' + month + ' : ' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: months1,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '6',
- name: '销量',
- type: 'bar',
- data: values1,
- itemStyle: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }]
- });
- //近五年年统计
- // 年统计金额
- const myChart2 = echarts.init(document.getElementById('myChart2'))
- // 提取日期和对应的值
- var dates2 = this.yearinfo.date;
- var values2 = this.yearinfo.total_amount;
- // 进行图表的配置和数据处理
- myChart2.setOption({
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#71aa77'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values2[params.dataIndex];
- var date = dates2[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '年' + '
' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: dates2,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '8',
- name: '销量',
- type: 'bar',
- data: values2,
- itemStyle: {
- normal: {
- label: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }
- }
- }]
- })
- },
- },
- onLoad() {
- this.getdata();
- },
- }
- script>
- <style lang="scss">
- //第一行内容
- .title {
- // border:1px solid black;
- padding-left: 2%;
- font-size: 105%;
- }
-
- .line_position {
- overflow-x: scroll;
- scroll-behavior: smooth; // 设置滚动平滑过渡
-
- //隐藏滚动条
- &::-webkit-scrollbar {
- width: 0; // 隐藏默认的滚动条
- height: 0;
- }
-
- &::-webkit-scrollbar-thumb {
- background-color: transparent; // 隐藏滚动条拖拽的小方块
- }
-
- .line1 {
- width: 400%;
- display: flex;
-
- // border:1px solid red;
- .item:nth-child(1) {
- background-color: #515dc3;
- }
-
- .item:nth-child(2) {
- background-color: #ff9a3e;
- }
-
- .item:nth-child(3) {
- background-color: #38bf80;
- }
-
- .item:nth-child(4) {
- background-color: #fc5959;
- }
-
- .item {
- width: 40%;
- margin: 1% 2%;
- border-radius: 5px;
- padding: 1% 1% 0 1%;
- // border:1px solid red;
- color: white;
-
- .two {
- display: flex;
- margin: 5% 0;
- align-items: center;
-
- // border:1px solid red;
- .left {
- width: 70%;
- font-size: 24px;
- // border:1px solid red;
- }
-
- .right {
- text-align: right;
- width: 30%;
- // border:1px solid red;
- }
- }
-
- .three {
- text-align: center;
-
- // border:1px solid red;
- image {
- width: 60px;
- height: 50px;
- }
- }
- }
- }
- }
-
- //第二行内容
- .tab_position {
- width: 100%;
- display: flex;
- justify-content: center;
- }
-
- .tab-bar {
- display: flex;
- justify-content: space-between;
- width: 90%;
- // border: 1px solid black;
- background-color: #f2f2f2;
- border-radius: 15px;
- margin: 3% 1%;
- }
-
- .tab {
- padding: 5px;
- font-size: 16px;
- cursor: pointer;
- // border: 1px solid black;
- width: 33%;
- text-align: center;
- // border-bottom: 1px solid #ccc;
- }
-
- .active {
- color: white;
- background-color: #515dc3;
- border-radius: 15px;
- /* background-color:#74bfe7; */
- // border-bottom: 1px solid #74bfe7;
- }
-
- //图标
- .out {
- width: 800rpx;
- // border:1px solid red;
- display: flex;
- justify-content: center;
- }
-
- #myChart {
- width: 700rpx;
- height: 600rpx;
- }
-
- #myChart1 {
- width: 700rpx;
- height: 600rpx;
- }
-
- #myChart2 {
- width: 700rpx;
- height: 600rpx;
- }
- style>
这样写会发现在手机端无法正常运
现改用renderjs进行重写
- //查询销售看板需要使用的数据
- public function select_sale_ekanbaninfo(){
- $yesterday = strtotime('-1 day', strtotime(date('Y-m-d')));//获得昨天的时间戳
- $today = strtotime(date('Y-m-d')); // 获取当前日期的时间戳
- $data['today'] = $today;
- // 获取本周开始和结束时间戳
- $thisWeekStart = strtotime('this week', $today);
- $thisWeekEnd = strtotime('next week', $today) - 1;
- // 获取上一周开始和结束时间戳
- $lastWeekStart = strtotime('-1 week', $thisWeekStart);
- $lastWeekEnd = strtotime('-1 week', $thisWeekEnd);
- // 获取本月的开始和结束时间戳
- $thisMonthStart = strtotime('first day of this month', $today);
- $thisMonthEnd = strtotime('last day of this month', $today);
- // 获取上一个月的开始和结束时间戳
- $lastMonthStart = strtotime('first day of last month', $today);
- $lastMonthEnd = strtotime('last day of last month', $today);
- // 获取今年的开始和结束时间戳
- $thisYearStart = strtotime('first day of January', $today);
- $thisYearEnd = strtotime('last day of December', $today);
- // 获取去年的开始和结束时间戳
- $lastYearStart = strtotime('-1 year', $thisYearStart);
- $lastYearEnd = strtotime('-1 year', $thisYearEnd);
-
- // $oneMonthAgo = strtotime('-1 month'); // 获取一个月前的时间戳
- // $oneYearAgo = strtotime('-1 year'); // 获取一年前的时间戳
- // 获取昨天的总金额
- $data['yesterday_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $yesterday)
- ->where('creation_date', '<', $today)
- ->sum('order_all_amount');
- //当天的总金额
- $data['daysale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $today) // 筛选 creation_date 大于等于今天的记录
- ->sum('order_all_amount'); // 求和 order_all_amount 列的值
- // 计算日涨幅比率
- if ($data['yesterday_allamount'] == 0) {
- $data['weekchangeRate'] = '无法计算';
- }
- else{
- $data['daychangeRate'] = ($data['daysale_allamount'] - $data['yesterday_allamount']) / $data['yesterday_allamount'] * 100;
- if ($data['daychangeRate'] >= 0) {
- $data['daychangeRate'] = '+' . number_format($data['daychangeRate'], 2) . '%';
- } else {
- $data['daychangeRate'] = number_format($data['daychangeRate'], 2) . '%';
- }
- }
- $data['daysale_allamount'] = number_format($data['daysale_allamount']/10000.0, 2); // 格式化结果保留两位小数
- //近一周的总金额
- // 获取本周的总金额
- $data['weeksale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $thisWeekStart)
- ->where('creation_date', '<=', $thisWeekEnd)
- ->sum('order_all_amount');
- // 获取上一周的总金额
- $data['lastweeksale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $lastWeekStart)
- ->where('creation_date', '<=', $lastWeekEnd)
- ->sum('order_all_amount');
- // 计算周涨幅比率
- if ($data['lastweeksale_allamount'] == 0) {
- $data['weekchangeRate'] = '无法计算';
- } else {
- $data['weekchangeRate'] = ($data['weeksale_allamount'] - $data['lastweeksale_allamount']) / $data['lastweeksale_allamount'] * 100;
- if ($data['weekchangeRate'] >= 0) {
- $data['weekchangeRate'] = '+' . number_format($data['weekchangeRate'], 2) . '%';
- } else {
- $data['weekchangeRate'] = number_format($data['weekchangeRate'], 2) . '%';
- }
- // $data['weekchangeRate'] = number_format(($data['weeksale_allamount'] - $data['lastweeksale_allamount']) / $data['lastweeksale_allamount'] * 100, 2) . '%';
- }
- $data['weeksale_allamount'] = number_format($data['weeksale_allamount']/10000.0, 2);
- // 获取本月的总金额
- $data['monthsale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $thisMonthStart)
- ->where('creation_date', '<=', $thisMonthEnd)
- ->sum('order_all_amount');
- // 获取上一个月的总金额
- $data['lastmonthsale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $lastMonthStart)
- ->where('creation_date', '<=', $lastMonthEnd)
- ->sum('order_all_amount');
- // 计算月涨幅比率
- if ($data['lastmonthsale_allamount'] == 0) {
- $data['monthchangeRate'] = '无法计算';
- } else {
- $data['monthchangeRate'] = ($data['monthsale_allamount'] - $data['lastmonthsale_allamount']) / $data['lastmonthsale_allamount'] * 100;
- if ($data['monthchangeRate'] >= 0) {
- $data['monthchangeRate'] = '+' . number_format($data['monthchangeRate'], 2) . '%';
- } else {
- $data['monthchangeRate'] = number_format($data['monthchangeRate'], 2) . '%';
- }
- // $data['monthchangeRate'] = number_format(($data['monthsale_allamount'] - $data['lastmonthsale_allamount']) / $data['lastmonthsale_allamount'] * 100, 2) . '%';
- }
- $data['monthsale_allamount'] = number_format($data['monthsale_allamount']/10000.0, 2);
- // 获取今年的总金额
- $data['yearsale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $thisYearStart)
- ->where('creation_date', '<=', $thisYearEnd)
- ->sum('order_all_amount');
- // 获取去年的总金额
- $data['lastyearsale_allamount'] = Db::table('so_headers_all')
- ->where('creation_date', '>=', $lastYearStart)
- ->where('creation_date', '<=', $lastYearEnd)
- ->sum('order_all_amount');
- // 计算年涨幅
- if ($data['lastyearsale_allamount'] == 0) {
- $data['yearchangeRate'] = '无法计算';
- } else {
- $data['yearchangeRate'] = ($data['yearsale_allamount'] - $data['lastyearsale_allamount']) / $data['lastyearsale_allamount'] * 100;
- if ($data['yearchangeRate'] >= 0) {
- $data['yearchangeRate'] = '+' . number_format($data['yearchangeRate'], 2) . '%';
- } else {
- $data['yearchangeRate'] = number_format($data['yearchangeRate'], 2) . '%';
- }
- // $data['yearchangeRate'] = number_format(($data['yearsale_allamount'] - $data['lastyearsale_allamount']) / $data['lastyearsale_allamount'] * 100, 2) . '%';
- }
- $data['yearsale_allamount'] = number_format($data['yearsale_allamount']/10000.0, 2);
- //查询本周每天的的总金额数
- //获取本周的起始日期和结束日期
- $weekStart = date('Y-m-d', strtotime('this week Monday'));
- $weekEnd = date('Y-m-d', strtotime('this week Sunday'));
- // 构造日期范围数组(从周一到周天)
- $dateRange = [];
- $currentDate = $weekStart;
- while ($currentDate <= $weekEnd) {
- $dateRange[] = $currentDate;
- $currentDate = date('Y-m-d', strtotime($currentDate . ' +1 day'));
- }
- // 查询每天的总金额数
- $result = Db::table('so_headers_all')
- ->field("DATE_FORMAT(FROM_UNIXTIME(creation_date), '%Y-%m-%d') AS date, IFNULL(SUM(order_all_amount), 0) AS total_amount")
- ->whereTime('creation_date', '>=', $weekStart)
- ->whereTime('creation_date', '<=', $weekEnd)
- ->group('date')
- ->select();
- //去掉逗号,转换为
- foreach ($result as &$item) {
- $item['total_amount'] = round(($item['total_amount'] / 10000),2);
- }
- // 构造最终结果数组
- $dateArray = [];
- $totalAmountArray = [];
- foreach ($dateRange as $date) {
- $found = false;
- foreach ($result as $row) {
- if ($row['date'] == $date) {
- $dateArray[] = $row['date'];
- $totalAmountArray[] = $row['total_amount'];
- $found = true;
- break;
- }
- }
- if (!$found) {
- $weekdayIndex = date('w', strtotime($date));
- $dateArray[] = $date;
- $totalAmountArray[] = 0;
- }
- }
- $data['week_info']['date'] = $dateArray;
- $data['week_info']['total_amount'] = $totalAmountArray;
-
-
- //查询今年中每月的总金额数据
- // 获取当前年份
- $year = date('Y');
- $result1 = Db::table('so_headers_all')
- ->field("DATE_FORMAT(FROM_UNIXTIME(creation_date), '%Y-%m') AS month, IFNULL(SUM(order_all_amount), 0) AS total_amount")
- ->whereTime('creation_date', '>=', strtotime($year . '-01-01'))
- ->whereTime('creation_date', '<=', strtotime($year . '-12-31'))
- ->group('month')
- ->select();
- //去掉逗号,转换为
- foreach ($result1 as &$item) {
- $item['total_amount'] = round(($item['total_amount'] / 10000),2);
- }
- // 构造最终结果数组
- $dateArray1 = [];
- $totalAmountArray1 = [];
- for ($i = 1; $i <= 12; $i++) {
- //str_pad 函数用于在字符串的左侧(或右侧)填充指定字符,达到指定长度。这里,使用 str_pad 函数在 $i 左侧填充字符 '0',直到 $i 的长度达到 2。
- $month = str_pad($i, 2, '0', STR_PAD_LEFT);
- $dateArray1[] = $year . '-' . $month;
- $totalAmountArray1[$year . '-' . $month] = 0;
- }
- // 将查询结果填充到对应的月份位置
- foreach ($result1 as $item) {
- $totalAmountArray1[$item['month']] = $item['total_amount'];
- }
- // 最终结果数组
- foreach ($dateArray1 as $date) {
- $finalResult[] = [
- 'date' => $date,
- 'total_amount' => $totalAmountArray1[$date]
- ];
- $data['month_info']['date'][] = $date;
- $data['month_info']['total_amount'][] = $totalAmountArray1[$date];
- }
-
- //查询近五年总金额数据
- // 获取当前年份
- $currentYear = date('Y');
- // 构造最终结果数组
- $data['year_info']['date'] = [];
- $data['year_info']['total_amount'] = [];
-
- for ($i = $currentYear - 5; $i <= $currentYear; $i++) {
- $year = (string) $i;
-
- $result = Db::table('so_headers_all')
- ->field("IFNULL(SUM(order_all_amount), 0) AS total_amount")
- ->whereTime('creation_date', '>=', strtotime($year . '-01-01'))
- ->whereTime('creation_date', '<=', strtotime($year . '-12-31'))
- ->find();
- $totalAmount = round(($result['total_amount'] / 10000), 2);
- $data['year_info']['date'][] = $year;
- $data['year_info']['total_amount'][] = $totalAmount;
- }
- echo json_encode($data);
- }
- <template>
- <view>
- <view>
- <view class="title">概况view>
- <view class="line_position">
- <view class="line1">
- <view class="item">
- <view class="one">今日销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.daysale_allamount}}view>
- <view class="right">{{line1_info.daychangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.daychangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">本周销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.weeksale_allamount}}view>
- <view class="right">{{line1_info.weekchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.weekchangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">本月销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.monthsale_allamount}}view>
- <view class="right">{{line1_info.monthchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.monthchangeRate)" alt="">image>
- view>
- view>
- <view class="item">
- <view class="one">今年销售额(万元)view>
- <view class="two">
- <view class="left">{{line1_info.yearsale_allamount}}view>
- <view class="right">{{line1_info.yearchangeRate}}view>
- view>
- <view class="three">
- <image :src="getImagePath(line1_info.yearchangeRate)" alt="">image>
- view>
- view>
- view>
- view>
- view>
- <view>
- <view class="title">销售额统计view>
- <view class="tab_position">
- <view class="tab-bar">
- <text class="tab" :class="{ 'active': activeTab === '0' }" @click="changeTab('0')">周统计text>
- <text class="tab" :class="{ 'active': activeTab === '1' }" @click="changeTab('1')">月统计text>
- <text class="tab" :class="{ 'active': activeTab === '2' }" @click="changeTab('2')">年统计text>
- view>
- view>
- <view v-show="activeTab === '0'">
- <view class="out">
- <view :prop="option" :change:prop="echarts.updateEcharts" id="echarts" class="echarts">view>
- view>
- view>
- <view v-show="activeTab === '1'">
- <view class="out">
- <view :prop="option1" :change:prop="echarts.updateEcharts1" id="echarts1" class="echarts">view>
- view>
- view>
- <view v-show="activeTab === '2'">
- <view class="out">
- <view :prop="option2" :change:prop="echarts.updateEcharts2" id="echarts2" class="echarts">view>
- view>
- view>
- view>
- view>
- template>
- <script>
- // import echarts from '@/static/js/echarts.js' // 引入文件
- import * as echarts from 'echarts';
- export default {
- data() {
- return {
- line1_info: '',
- down: getApp().globalData.icon + 'report/down.png',
- up: getApp().globalData.icon + 'report/up.png',
- line: getApp().globalData.icon + 'report/line.png',
- activeTab: '0', //默认分页面
- weekinfo: [], // 定义一个空数组用于存储周统计数据
- monthinfo: [], // 定义一个空数组用于存储月统计数据
- yearinfo: [], // 定义一个空数组用于存储年统计数据
- option: '',
- option1: '',
- option2: '',
- }
- },
- mounted() {
- this.getData(); // 在组件挂载后调用获取数据的方法
- },
- methods: {
- //切换分页面
- changeTab(index) {
- this.activeTab = index;
- },
- //图片展示
- getImagePath(rate) {
- if (rate === "无法计算") {
- return this.line;
- } else if (rate && rate.startsWith("-")) {
- return this.down;
- } else {
- return this.up;
- }
- },
- getData() {
- uni.request({
- url: getApp().globalData.position + 'Other/select_sale_ekanbaninfo',
- data: {},
- header: {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- method: 'POST',
- dataType: 'json',
- success: res => {
- //行1:年月日总额统计
- this.line1_info = res.data;
- //行2:周统计
- var weekinfo = res.data.week_info;
- this.weekinfo = weekinfo;
- //行2:月统计
- var monthinfo = res.data.month_info;
- this.monthinfo = monthinfo;
- //行2:年统计
- var yearinfo = res.data.year_info;
- this.yearinfo = yearinfo;
- // console.log(this.yearinfo)
- //显示图表
- this.echart();
- },
- fail(res) {
- console.log("查询失败")
- }
- });
- },
- //绘制图标
- echart() {
- // 周统计金额
- // 提取日期和对应的值
- var dates = this.weekinfo.date;
- var values = this.weekinfo.total_amount;
- var weeks = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
- // 进行图表的配置和数据处理
- this.option = {
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#e57b7b'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values[params.dataIndex];
- var date = dates[params.dataIndex];
- var week = weeks[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '
' + week + ' : ' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: weeks,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '8',
- name: '销量',
- type: 'bar',
- data: values,
- itemStyle: {
- normal: {
- label: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }
- }
- }]
- };
- //月统计
- // 月统计金额
- // 提取日期和对应的值
- var dates1 = this.monthinfo.date;
- var values1 = this.monthinfo.total_amount;
- var months1 = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
- var months1_chinese = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
- // 进行图表的配置和数据处理
- this.option1 = {
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#5588d4'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values1[params.dataIndex];
- var date = dates1[params.dataIndex];
- var month = months1_chinese[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '
' + month + ' : ' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: months1,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '6',
- name: '销量',
- type: 'bar',
- data: values1,
- itemStyle: {
- normal: {
- label: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }
- }
- }]
- };
- //近五年年统计
- // 年统计金额
- // 提取日期和对应的值
- var dates2 = this.yearinfo.date;
- var values2 = this.yearinfo.total_amount;
- // 进行图表的配置和数据处理
- this.option2 = {
- //配置网格组件,用于定义图表的位置和大小
- grid: {
- top: '15%', // 增加top的值来创建间距
- left: '2%',
- right: '2%',
- bottom: '2%', // 增加bottom的值来创建间距
- containLabel: true, //自动计算并包含坐标轴标签、刻度和标题等内容在内。
- },
- color: ['#71aa77'],
- tooltip: {
- trigger: 'item',
- axisPointer: {
- type: 'line'
- },
- formatter: function(params) {
- var value = values2[params.dataIndex];
- var date = dates2[params.dataIndex];
- var marker = params.marker; // 添加marker(小圆点)
- return marker + ' ' + date + '年' + '
' + value + '万元'; - }
- },
- xAxis: {
- // name: '日期',
- data: dates2,
- axisLine: {
- show: false // 隐藏纵坐标轴的横线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- yAxis: {
- name: '金额(万元)',
- splitLine: {
- show: false // 隐藏纵坐标轴的背景横线
- },
- axisLine: {
- show: false // 隐藏纵坐标轴的竖线
- },
- //隐藏小刻度短线
- axisTick: { // x轴刻度相关配置
- show: false, // 是否显示x轴刻度线
- },
- axisLabel: {
- fontSize: 12 // 设置横轴标签字体大小为12
- },
- nameTextStyle: {
- fontSize: 12 // 设置横轴名称字体大小为12
- }
- },
- series: [{
- barWidth: '8',
- name: '销量',
- type: 'bar',
- data: values2,
- itemStyle: {
- normal: {
- label: {
- show: true,
- position: 'top',
- textStyle: {
- // color: '#515dc3',
- fontSize: 12
- }
- }
- }
- }
- }]
- }
- },
- },
- }
- script>
- <script module="echarts" lang="renderjs">
- let myChart
- let myChart1
- let myChart2
- export default {
- mounted() {
- // 首先判断window.echarts是否存在,如果存在则调用initEcharts1方法进行初始化。
- if (typeof window.echarts === 'function') {
- this.initEcharts()
- this.initEcharts1()
- this.initEcharts2()
- } else {
- // 如果不存在,则动态创建一个