46e921275b8ae195dd13533fde4cfdc0.json 10 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\\product\\components\\productRanking.vue?vue&type=style&index=0&id=3a33f6ed&scoped=true&lang=scss","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\statistic\\product\\components\\productRanking.vue","mtime":1761185180198},{"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:DQouaGVhZGVyIHsNCiAgJi10aXRsZSB7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpOw0KICB9DQogICYtdGltZSB7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGNvbG9yOiAjMDAwMDAwOw0KICAgIG9wYWNpdHk6IDAuNDU7DQogIH0NCn0NCg=="},{"version":3,"sources":["productRanking.vue"],"names":[],"mappings":";AA2MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"productRanking.vue","sourceRoot":"src/pages/statistic/product/components","sourcesContent":["<template>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt-16\">\r\n <div class=\"acea-row row-between-wrapper mb20\">\r\n <h4 class=\"statics-header-title\">商品排行</h4>\r\n <div class=\"acea-row\">\r\n <el-select v-model=\"formValidate.sort\" style=\"width: 200px\" class=\"mr20\" @change=\"changeMenu\">\r\n <el-option v-for=\"item in list\" :value=\"item.val\" :key=\"item.val\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n <el-date-picker\r\n :editable=\"false\"\r\n clearable\r\n @change=\"onchangeTime\"\r\n v-model=\"timeVal\"\r\n format=\"yyyy/MM/dd\"\r\n type=\"datetimerange\"\r\n value-format=\"yyyy/MM/dd\"\r\n range-separator=\"-\"\r\n start-placeholder=\"开始日期\"\r\n end-placeholder=\"结束日期\"\r\n class=\"mr20\"\r\n ></el-date-picker>\r\n <el-button type=\"primary\" class=\"mr20\" v-db-click @click=\"getList\">查询</el-button>\r\n </div>\r\n </div>\r\n <el-table ref=\"selection\" :data=\"tabList\" v-loading=\"loading\" empty-text=\"暂无数据\" highlight-current-row>\r\n <el-table-column label=\"ID\" min-width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.product_id }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品图片\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"tabBox_img\" v-viewer>\r\n <img v-lazy=\"scope.row.image\" />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品名称\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.store_name }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"浏览量\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.visit }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"访客数\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.user }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"加购件数\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.cart }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"下单件数\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.orders }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"支付件数\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.pay }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"支付金额\" min-width=\"110\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.price }}</span>\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column label=\"毛利率(%)\" min-width=\"130\">\r\n <template slot-scope=\"scope\">\r\n <span v-text=\"$tools.accMul(scope.row.profit, 100).toFixed(2) + '%'\"></span>\r\n </template>\r\n </el-table-column> -->\r\n <el-table-column label=\"收藏数\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.collect }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"访客-支付转化率(%)\" min-width=\"140\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ $tools.accMul(scope.row.changes, 100) + '%' }}</span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <!-- 商品弹窗 -->\r\n <div v-if=\"isProductBox\">\r\n <div class=\"bg\" v-db-click @click=\"isProductBox = false\"></div>\r\n <goodsDetail :goodsId=\"goodsId\"></goodsDetail>\r\n </div>\r\n </el-card>\r\n</template>\r\n\r\n<script>\r\nimport { statisticProductListApi } from '@/api/statistic';\r\nimport goodsDetail from '../components/goodsDetail';\r\nimport { formatDate } from '@/utils/validate';\r\nexport default {\r\n name: 'productRanking',\r\n components: {\r\n goodsDetail,\r\n },\r\n data() {\r\n return {\r\n validateFun: this.$validateFun,\r\n options: this.$timeOptions,\r\n name: '近30天',\r\n timeVal: [],\r\n dataTime: '',\r\n formValidate: {\r\n limit: 10,\r\n page: 1,\r\n sort: 'visit',\r\n data: '',\r\n },\r\n loading: false,\r\n tabList: [],\r\n total: 0,\r\n goodsId: '',\r\n isProductBox: false,\r\n list: [\r\n {\r\n val: 'visit',\r\n name: '浏览量',\r\n },\r\n {\r\n val: 'user',\r\n name: '访客数',\r\n },\r\n {\r\n val: 'cart',\r\n name: '加购件数',\r\n },\r\n {\r\n val: 'orders',\r\n name: '下单件数',\r\n },\r\n {\r\n val: 'price',\r\n name: '支付金额',\r\n },\r\n // {\r\n // val: 'profit',\r\n // name: '毛利率',\r\n // },\r\n {\r\n val: 'collect',\r\n name: '收藏数',\r\n },\r\n {\r\n val: 'changes',\r\n name: '访客-支付转化率',\r\n },\r\n ],\r\n };\r\n },\r\n created() {\r\n const end = new Date();\r\n const start = new Date();\r\n start.setTime(start.setTime(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 29)));\r\n this.timeVal = [start, end];\r\n this.formValidate.data = formatDate(start, 'yyyy/MM/dd') + '-' + formatDate(end, 'yyyy/MM/dd');\r\n },\r\n mounted() {\r\n this.getList();\r\n },\r\n methods: {\r\n // 具体日期\r\n onchangeTime(e) {\r\n this.timeVal = e;\r\n this.formValidate.data = this.timeVal ? this.timeVal.join('-') : '';\r\n this.name = this.formValidate.data;\r\n },\r\n changeMenu(name) {\r\n this.formValidate.sort = name;\r\n this.getList();\r\n },\r\n // 列表\r\n getList() {\r\n this.loading = true;\r\n statisticProductListApi(this.formValidate)\r\n .then(async (res) => {\r\n let data = res.data;\r\n this.tabList = data;\r\n this.loading = false;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n look(row) {\r\n this.goodsId = row.product_id;\r\n this.isProductBox = true;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\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</style>\r\n<style lang=\"scss\" scoped>\r\n.bg {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 11;\r\n}\r\n::v-deep .happy-scroll-content {\r\n width: 100%;\r\n .demo-spin-icon-load {\r\n animation: ani-demo-spin 1s linear infinite;\r\n }\r\n\r\n @-webkit-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-moz-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-ms-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @-o-keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n .demo-spin-col {\r\n height: 100px;\r\n position: relative;\r\n border: 1px solid #eee;\r\n }\r\n}\r\n</style>\r\n"]}]}