99ab4413e5dbfe608d2e5456fd59bdaa.json 13 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\statistic\\user\\components\\userInfo.vue?vue&type=style&index=0&id=fba006de&scoped=true&lang=scss","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\statistic\\user\\components\\userInfo.vue","mtime":1761185180201},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\css-loader\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\postcss-loader\\src\\index.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQoub25lIHsNCiAgYmFja2dyb3VuZDogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCn0NCi50d28gew0KICBiYWNrZ3JvdW5kOiAjMDBjMDUwOw0KfQ0KLnRocmVlIHsNCiAgYmFja2dyb3VuZDogI2ZmYWIyYjsNCn0NCi5mb3VyIHsNCiAgYmFja2dyb3VuZDogI2IzN2ZlYjsNCn0NCi51cCwNCi5lbC1pY29uLWNhcmV0LXRvcCB7DQogIGNvbG9yOiAjZjUyMjJkOw0KICBmb250LXNpemU6IDEycHg7DQogIG9wYWNpdHk6IDEgIWltcG9ydGFudDsNCn0NCi5pY29uZm9udCB7DQogIGZvbnQtc2l6ZTogMTZweDsNCiAgY29sb3I6ICNmZmY7DQp9DQouZG93biwNCi5lbC1pY29uLWNhcmV0LWJvdHRvbSB7DQogIGNvbG9yOiAjMzljMTViOw0KICBmb250LXNpemU6IDEycHg7DQp9DQouY3VyUCB7DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5oZWFkZXIgew0KICAmLXRpdGxlIHsNCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7DQogIH0NCiAgJi10aW1lIHsNCiAgICBmb250LXNpemU6IDEycHg7DQogICAgY29sb3I6ICMwMDAwMDA7DQogICAgb3BhY2l0eTogMC40NTsNCiAgfQ0KfQ0KLmljb25Dcmwgew0KICB3aWR0aDogMzJweDsNCiAgaGVpZ2h0OiAzMnB4Ow0KICBib3JkZXItcmFkaXVzOiA1MCU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgbGluZS1oZWlnaHQ6IDMycHg7DQogIG9wYWNpdHk6IDAuNzsNCiAgLyptYXJnaW4tbGVmdDogNzRweDsqLw0KfQ0KDQoubGFuIHsNCiAgYmFja2dyb3VuZDogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCn0NCg0KLmljb25zaGFuZ3BpbmxpdWxhbmxpYW5nIHsNCiAgY29sb3I6ICNmZmY7DQp9DQoNCi5pbmZvQm94IHsNCiAgd2lkdGg6IDIwJTsNCn0NCg0KLmluZm8gew0KICAuc3AxIHsNCiAgICBjb2xvcjogIzY2NjsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgZGlzcGxheTogYmxvY2s7DQogIH0NCiAgLnNwMiB7DQogICAgZm9udC13ZWlnaHQ6IDQwMDsNCiAgICBmb250LXNpemU6IDMwcHg7DQogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7DQogICAgZGlzcGxheTogYmxvY2s7DQogIH0NCiAgLnNwMyB7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiA0MDA7DQogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40NSk7DQogICAgZGlzcGxheTogYmxvY2s7DQogIH0NCn0NCi5md24gew0KICBmbGV4LXdyYXA6IG5vd3JhcDsNCn0NCg=="},{"version":3,"sources":["userInfo.vue"],"names":[],"mappings":";AAsQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"userInfo.vue","sourceRoot":"src/pages/statistic/user/components","sourcesContent":["<template>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt-16\" v-loading=\"spinShow\">\r\n <div class=\"acea-row row-between-wrapper\">\r\n <div class=\"statics-header-title mb20\">\r\n <h4>用户概况</h4>\r\n <el-tooltip placement=\"right-start\">\r\n <i class=\"el-icon-question ml10\"></i>\r\n <div slot=\"content\">\r\n <div>累积用户数</div>\r\n <div>商城的总用户</div>\r\n <br />\r\n <div>访客数</div>\r\n <div>在选定条件下,访问商城页面的去重人数</div>\r\n <br />\r\n <div>浏览量</div>\r\n <div>在选定条件下,用户浏览商城页面的次数。每打开一个页面或每刷新一次页面都记录1次</div>\r\n <br />\r\n <div>新增用户数</div>\r\n <div>在选定条件下,新注册的用户</div>\r\n <br />\r\n <div>成交用户数</div>\r\n <div>在选定条件下,下单并支付成功的用户</div>\r\n <br />\r\n <div>付费会员数</div>\r\n <div>筛选时间截止时,具有商城付费会员身份的用户数</div>\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n <div class=\"mb20\">\r\n <el-row>\r\n <el-col v-bind=\"grid\" v-for=\"(item, index) in list\" :key=\"index\">\r\n <div class=\"acea-row mb30 fwn\">\r\n <div class=\"iconCrl mr15\" :class=\"item.colors\">\r\n <i class=\"iconfont\" :class=\"item.icon\"></i>\r\n </div>\r\n <div class=\"info\">\r\n <span class=\"sp1\" v-text=\"item.name\"></span>\r\n <span class=\"sp2\" v-if=\"index === list.length - 1\" v-text=\"item.list.num\"></span>\r\n <span class=\"sp2\" v-else v-text=\"item.list.num\"></span>\r\n <span class=\"content-time spBlock\"\r\n >环比增长:<i class=\"content-is\" :class=\"Number(item.list.percent) >= 0 ? 'up' : 'down'\"\r\n >{{ item.list.percent }}%</i\r\n >\r\n <i\r\n :style=\"{ color: Number(item.list.percent) >= 0 ? '#F5222D' : '#39C15B' }\"\r\n :class=\"[Number(item.list.percent) >= 0 ? 'el-icon-caret-top' : 'el-icon-caret-bottom']\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n <echarts-new :option-data=\"optionData\" :styles=\"style\" height=\"100%\" width=\"100%\" v-if=\"optionData\"></echarts-new>\r\n </el-card>\r\n</template>\r\n\r\n<script>\r\nimport { statisticUserBasicApi, statisticUserTrendApi } from '@/api/statistic';\r\nimport echartsNew from '@/components/echartsNew/index';\r\nexport default {\r\n name: 'userInfo',\r\n components: {\r\n echartsNew,\r\n },\r\n props: {\r\n formInline: {\r\n type: Object,\r\n default: function () {\r\n return {\r\n channel_type: '',\r\n data: '',\r\n };\r\n },\r\n },\r\n },\r\n data() {\r\n return {\r\n spinShow: false,\r\n grid: {\r\n xl: 4,\r\n lg: 4,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n name: '近30天',\r\n timeVal: [],\r\n dataTime: '',\r\n list: [],\r\n optionData: {},\r\n style: { height: '400px' },\r\n };\r\n },\r\n mounted() {\r\n this.getStatistics();\r\n this.getTrend();\r\n },\r\n methods: {\r\n onSeach() {\r\n this.getStatistics();\r\n this.getTrend();\r\n },\r\n // 具体日期\r\n onchangeTime(e) {\r\n this.timeVal = e;\r\n this.dataTime = this.timeVal ? this.timeVal.join('-') : '';\r\n this.name = this.dataTime;\r\n },\r\n // 统计\r\n getStatistics() {\r\n statisticUserBasicApi(this.formInline)\r\n .then(async (res) => {\r\n const cardLists = res.data;\r\n this.list = [\r\n {\r\n name: '累计用户',\r\n icon: 'iconleijiyonghu',\r\n list: cardLists.cumulativeUser,\r\n colors: 'four',\r\n },\r\n {\r\n name: '访客数',\r\n icon: 'iconfangkeshu',\r\n list: cardLists.people,\r\n colors: 'one',\r\n },\r\n {\r\n name: '浏览量',\r\n icon: 'iconshangpinliulanliang',\r\n list: cardLists.browse,\r\n colors: 'two',\r\n },\r\n {\r\n name: '新增用户数',\r\n icon: 'iconxinzengyonghushu',\r\n list: cardLists.newUser,\r\n colors: 'three',\r\n },\r\n {\r\n name: '成交用户数',\r\n icon: 'iconchengjiaoyonghushu',\r\n list: cardLists.payPeople,\r\n colors: 'four',\r\n },\r\n {\r\n name: '付费会员数',\r\n icon: 'iconfufeihuiyuanshu',\r\n list: cardLists.payUser,\r\n colors: 'four',\r\n },\r\n ];\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 统计图\r\n getTrend() {\r\n this.spinShow = true;\r\n statisticUserTrendApi(this.formInline)\r\n .then(async (res) => {\r\n let legend = res.data.series.map((item) => {\r\n return item.name;\r\n });\r\n let xAxis = res.data.xAxis;\r\n let col = ['#5B8FF9', '#5AD8A6', '#FFAB2B', '#5D7092'];\r\n let series = [];\r\n res.data.series.map((item, index) => {\r\n series.push({\r\n name: item.name,\r\n type: 'line',\r\n data: item.value,\r\n itemStyle: {\r\n normal: {\r\n color: col[index],\r\n },\r\n },\r\n smooth: true,\r\n });\r\n });\r\n this.optionData = {\r\n tooltip: {\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n label: {\r\n backgroundColor: '#6a7985',\r\n },\r\n },\r\n },\r\n legend: {\r\n x: 'center',\r\n data: legend,\r\n },\r\n grid: {\r\n left: '3%',\r\n right: '4%',\r\n bottom: '3%',\r\n containLabel: true,\r\n },\r\n toolbox: {\r\n feature: {\r\n saveAsImage: {},\r\n },\r\n },\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: true,\r\n // axisTick:{\r\n // show:false\r\n // },\r\n // axisLine:{\r\n // show:false\r\n // },\r\n // splitLine: {\r\n // show: false\r\n // },\r\n axisLabel: {\r\n interval: 0,\r\n rotate: 40,\r\n textStyle: {\r\n color: '#000000',\r\n },\r\n },\r\n data: xAxis,\r\n },\r\n yAxis: {\r\n type: 'value',\r\n axisLine: {\r\n show: false,\r\n },\r\n axisTick: {\r\n show: false,\r\n },\r\n axisLabel: {\r\n textStyle: {\r\n color: '#7F8B9C',\r\n },\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#F5F7F9',\r\n },\r\n },\r\n },\r\n series: series,\r\n };\r\n this.spinShow = false;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n this.spinShow = false;\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.one {\r\n background: var(--prev-color-primary);\r\n}\r\n.two {\r\n background: #00c050;\r\n}\r\n.three {\r\n background: #ffab2b;\r\n}\r\n.four {\r\n background: #b37feb;\r\n}\r\n.up,\r\n.el-icon-caret-top {\r\n color: #f5222d;\r\n font-size: 12px;\r\n opacity: 1 !important;\r\n}\r\n.iconfont {\r\n font-size: 16px;\r\n color: #fff;\r\n}\r\n.down,\r\n.el-icon-caret-bottom {\r\n color: #39c15b;\r\n font-size: 12px;\r\n}\r\n.curP {\r\n cursor: pointer;\r\n}\r\n.header {\r\n &-title {\r\n font-size: 16px;\r\n color: rgba(0, 0, 0, 0.85);\r\n }\r\n &-time {\r\n font-size: 12px;\r\n color: #000000;\r\n opacity: 0.45;\r\n }\r\n}\r\n.iconCrl {\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 50%;\r\n text-align: center;\r\n line-height: 32px;\r\n opacity: 0.7;\r\n /*margin-left: 74px;*/\r\n}\r\n\r\n.lan {\r\n background: var(--prev-color-primary);\r\n}\r\n\r\n.iconshangpinliulanliang {\r\n color: #fff;\r\n}\r\n\r\n.infoBox {\r\n width: 20%;\r\n}\r\n\r\n.info {\r\n .sp1 {\r\n color: #666;\r\n font-size: 14px;\r\n display: block;\r\n }\r\n .sp2 {\r\n font-weight: 400;\r\n font-size: 30px;\r\n color: rgba(0, 0, 0, 0.85);\r\n display: block;\r\n }\r\n .sp3 {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: rgba(0, 0, 0, 0.45);\r\n display: block;\r\n }\r\n}\r\n.fwn {\r\n flex-wrap: nowrap;\r\n}\r\n</style>\r\n"]}]}