4dc76ea53a3c36e2d897a3183fa2000e.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\\wechetInfo.vue?vue&type=style&index=0&id=25a97d68&scoped=true&lang=scss","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\statistic\\user\\components\\wechetInfo.vue","mtime":1761185180202},{"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:DQoub25lIHsNCiAgYmFja2dyb3VuZDogdmFyKC0tcHJldi1jb2xvci1wcmltYXJ5KTsNCn0NCi50d28gew0KICBiYWNrZ3JvdW5kOiAjMDBjMDUwOw0KfQ0KLnRocmVlIHsNCiAgYmFja2dyb3VuZDogI2ZmYWIyYjsNCn0NCi5mb3VyIHsNCiAgYmFja2dyb3VuZDogI2IzN2ZlYjsNCn0NCi51cCwNCi5lbC1pY29uLWNhcmV0LXRvcCB7DQogIGNvbG9yOiAjZjUyMjJkOw0KICBmb250LXNpemU6IDEycHg7DQogIG9wYWNpdHk6IDEgIWltcG9ydGFudDsNCn0NCg0KLmRvd24sDQouZWwtaWNvbi1jYXJldC1ib3R0b20gew0KICBjb2xvcjogIzM5YzE1YjsNCiAgZm9udC1zaXplOiAxMnB4Ow0KfQ0KLmN1clAgew0KICBjdXJzb3I6IHBvaW50ZXI7DQp9DQouaGVhZGVyIHsNCiAgJi10aXRsZSB7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpOw0KICB9DQogICYtdGltZSB7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGNvbG9yOiAjMDAwMDAwOw0KICAgIG9wYWNpdHk6IDAuNDU7DQogIH0NCn0NCg0KLmljb25mb250IHsNCiAgZm9udC1zaXplOiAxNnB4Ow0KICBjb2xvcjogI2ZmZjsNCn0NCg0KLmljb25Dcmwgew0KICB3aWR0aDogMzJweDsNCiAgaGVpZ2h0OiAzMnB4Ow0KICBib3JkZXItcmFkaXVzOiA1MCU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgbGluZS1oZWlnaHQ6IDMycHg7DQogIG9wYWNpdHk6IDAuNzsNCn0NCg0KLmxhbiB7DQogIGJhY2tncm91bmQ6IHZhcigtLXByZXYtY29sb3ItcHJpbWFyeSk7DQp9DQoNCi5pY29uc2hhbmdwaW5saXVsYW5saWFuZyB7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQouaW5mb0JveCB7DQogIHdpZHRoOiAyMCU7DQogIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCkgew0KICAgIHdpZHRoOiAzMyU7DQogIH0NCiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTAwcHgpIHsNCiAgICB3aWR0aDogNTAlOw0KICB9DQp9DQoNCi5pbmZvIHsNCiAgLnNwMSB7DQogICAgY29sb3I6ICM2NjY7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGRpc3BsYXk6IGJsb2NrOw0KICB9DQogIC5zcDIgew0KICAgIGZvbnQtd2VpZ2h0OiA0MDA7DQogICAgZm9udC1zaXplOiAzMHB4Ow0KICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpOw0KICAgIGRpc3BsYXk6IGJsb2NrOw0KICB9DQogIC5zcDMgew0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBmb250LXdlaWdodDogNDAwOw0KICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDUpOw0KICAgIGRpc3BsYXk6IGJsb2NrOw0KICB9DQp9DQo="},{"version":3,"sources":["wechetInfo.vue"],"names":[],"mappings":";AAmPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"wechetInfo.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 公众号用户概括\r\n <el-tooltip effect=\"light\" word-wrap width=\"500\" trigger=\"hover\" placement=\"right-start\">\r\n <i class=\"el-icon-info\"></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>在选定条件下,新增关注用户数 - 新增取关用户数</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=\"acea-row mb20\">\r\n <div class=\"infoBox acea-row mb30\" v-for=\"(item, index) in list\" :key=\"index\">\r\n <div\r\n class=\"iconCrl mr15\"\r\n :class=\"{ one: index % 4 == 0, two: index % 4 == 1, three: index % 4 == 2, four: index % 4 == 3 }\"\r\n >\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 >{{ Number(item.list.percent).toFixed(2) }}%</i\r\n ><Icon\r\n :color=\"Number(item.list.percent) >= 0 ? '#F5222D' : '#39C15B'\"\r\n :type=\"Number(item.list.percent) >= 0 ? 'md-arrow-dropup' : 'md-arrow-dropdown'\"\r\n /></span>\r\n </div>\r\n </div>\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 { statisticWechatApi, statisticWechatTrendApi } from '@/api/statistic';\r\nimport echartsNew from '@/components/echartsNew/index';\r\nexport default {\r\n name: 'wechetInfo',\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: 8,\r\n lg: 8,\r\n md: 8,\r\n sm: 24,\r\n xs: 24,\r\n },\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 // 具体日期\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 this.getStatistics();\r\n this.getTrend();\r\n // this.userFrom.user_time = this.timeVal ? this.timeVal.join('-') : ''\r\n },\r\n // 统计\r\n getStatistics() {\r\n statisticWechatApi(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: 'iconxinzengguanzhuyonghu',\r\n list: cardLists.subscribe,\r\n },\r\n {\r\n name: '新增取关用户数',\r\n icon: 'iconxinzengquguanyonghu',\r\n list: cardLists.unSubscribe,\r\n },\r\n {\r\n name: '净增用户数',\r\n icon: 'iconjingzengyonghu',\r\n list: cardLists.increaseSubscribe,\r\n },\r\n {\r\n name: '累积关注用户数',\r\n icon: 'iconleijiguanzhuyonghu',\r\n list: cardLists.cumulativeSubscribe,\r\n },\r\n {\r\n name: '累积取关用户数',\r\n icon: 'iconleijiquguanyonghu',\r\n list: cardLists.cumulativeUnSubscribe,\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 statisticWechatTrendApi(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', '#5D7092', '#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\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\r\n.iconfont {\r\n font-size: 16px;\r\n color: #fff;\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}\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 @media screen and (max-width: 1200px) {\r\n width: 33%;\r\n }\r\n @media screen and (max-width: 900px) {\r\n width: 50%;\r\n }\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</style>\r\n"]}]}