| 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=script&lang=js","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\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"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:DQppbXBvcnQgeyBzdGF0aXN0aWNQcm9kdWN0TGlzdEFwaSB9IGZyb20gJ0AvYXBpL3N0YXRpc3RpYyc7DQppbXBvcnQgZ29vZHNEZXRhaWwgZnJvbSAnLi4vY29tcG9uZW50cy9nb29kc0RldGFpbCc7DQppbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQC91dGlscy92YWxpZGF0ZSc7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdwcm9kdWN0UmFua2luZycsDQogIGNvbXBvbmVudHM6IHsNCiAgICBnb29kc0RldGFpbCwNCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgdmFsaWRhdGVGdW46IHRoaXMuJHZhbGlkYXRlRnVuLA0KICAgICAgb3B0aW9uczogdGhpcy4kdGltZU9wdGlvbnMsDQogICAgICBuYW1lOiAn6L+RMzDlpKknLA0KICAgICAgdGltZVZhbDogW10sDQogICAgICBkYXRhVGltZTogJycsDQogICAgICBmb3JtVmFsaWRhdGU6IHsNCiAgICAgICAgbGltaXQ6IDEwLA0KICAgICAgICBwYWdlOiAxLA0KICAgICAgICBzb3J0OiAndmlzaXQnLA0KICAgICAgICBkYXRhOiAnJywNCiAgICAgIH0sDQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIHRhYkxpc3Q6IFtdLA0KICAgICAgdG90YWw6IDAsDQogICAgICBnb29kc0lkOiAnJywNCiAgICAgIGlzUHJvZHVjdEJveDogZmFsc2UsDQogICAgICBsaXN0OiBbDQogICAgICAgIHsNCiAgICAgICAgICB2YWw6ICd2aXNpdCcsDQogICAgICAgICAgbmFtZTogJ+a1j+iniOmHjycsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB2YWw6ICd1c2VyJywNCiAgICAgICAgICBuYW1lOiAn6K6/5a6i5pWwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbDogJ2NhcnQnLA0KICAgICAgICAgIG5hbWU6ICfliqDotK3ku7bmlbAnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsOiAnb3JkZXJzJywNCiAgICAgICAgICBuYW1lOiAn5LiL5Y2V5Lu25pWwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbDogJ3ByaWNlJywNCiAgICAgICAgICBuYW1lOiAn5pSv5LuY6YeR6aKdJywNCiAgICAgICAgfSwNCiAgICAgICAgLy8gew0KICAgICAgICAvLyAgIHZhbDogJ3Byb2ZpdCcsDQogICAgICAgIC8vICAgbmFtZTogJ+avm+WIqeeOhycsDQogICAgICAgIC8vIH0sDQogICAgICAgIHsNCiAgICAgICAgICB2YWw6ICdjb2xsZWN0JywNCiAgICAgICAgICBuYW1lOiAn5pS26JeP5pWwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbDogJ2NoYW5nZXMnLA0KICAgICAgICAgIG5hbWU6ICforr/lrqIt5pSv5LuY6L2s5YyW546HJywNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgfTsNCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSgpOw0KICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsNCiAgICBzdGFydC5zZXRUaW1lKHN0YXJ0LnNldFRpbWUobmV3IERhdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCBuZXcgRGF0ZSgpLmdldE1vbnRoKCksIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gMjkpKSk7DQogICAgdGhpcy50aW1lVmFsID0gW3N0YXJ0LCBlbmRdOw0KICAgIHRoaXMuZm9ybVZhbGlkYXRlLmRhdGEgPSBmb3JtYXREYXRlKHN0YXJ0LCAneXl5eS9NTS9kZCcpICsgJy0nICsgZm9ybWF0RGF0ZShlbmQsICd5eXl5L01NL2RkJyk7DQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy5nZXRMaXN0KCk7DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICAvLyDlhbfkvZPml6XmnJ8NCiAgICBvbmNoYW5nZVRpbWUoZSkgew0KICAgICAgdGhpcy50aW1lVmFsID0gZTsNCiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmRhdGEgPSB0aGlzLnRpbWVWYWwgPyB0aGlzLnRpbWVWYWwuam9pbignLScpIDogJyc7DQogICAgICB0aGlzLm5hbWUgPSB0aGlzLmZvcm1WYWxpZGF0ZS5kYXRhOw0KICAgIH0sDQogICAgY2hhbmdlTWVudShuYW1lKSB7DQogICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5zb3J0ID0gbmFtZTsNCiAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgIH0sDQogICAgLy8g5YiX6KGoDQogICAgZ2V0TGlzdCgpIHsNCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7DQogICAgICBzdGF0aXN0aWNQcm9kdWN0TGlzdEFwaSh0aGlzLmZvcm1WYWxpZGF0ZSkNCiAgICAgICAgLnRoZW4oYXN5bmMgKHJlcykgPT4gew0KICAgICAgICAgIGxldCBkYXRhID0gcmVzLmRhdGE7DQogICAgICAgICAgdGhpcy50YWJMaXN0ID0gZGF0YTsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChyZXMpID0+IHsNCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIGxvb2socm93KSB7DQogICAgICB0aGlzLmdvb2RzSWQgPSByb3cucHJvZHVjdF9pZDsNCiAgICAgIHRoaXMuaXNQcm9kdWN0Qm94ID0gdHJ1ZTsNCiAgICB9LA0KICB9LA0KfTsNCg=="},{"version":3,"sources":["productRanking.vue"],"names":[],"mappings":";AAiGA;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;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;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"]}]}
|