3b50a8e1077c11de5adb5bbc5cd4a1b6.json 16 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\\marketing\\live\\live_goods.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\marketing\\live\\live_goods.vue","mtime":1761185180116},{"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:DQppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOw0KaW1wb3J0IHsgbGl2ZUdvb2RzLCBsaXZlU3luY0dvb2RzLCBsaXZlR29vZHNEZXRhaWwsIGxpdmVHb29kc1Nob3cgfSBmcm9tICdAL2FwaS9saXZlJzsNCmltcG9ydCBnb29kc0Zyb20gZnJvbSAnLi9jb21wb25lbnRzL2dvb2RzX2RldGFpbCc7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdsaXZlJywNCiAgY29tcG9uZW50czogew0KICAgIGdvb2RzRnJvbSwNCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgZ3JpZDogew0KICAgICAgICB4bDogNywNCiAgICAgICAgbGc6IDcsDQogICAgICAgIG1kOiAxMiwNCiAgICAgICAgc206IDI0LA0KICAgICAgICB4czogMjQsDQogICAgICB9LA0KICAgICAgZm9ybVZhbGlkYXRlOiB7DQogICAgICAgIHN0YXR1czogJycsDQogICAgICAgIGtlcndvcmQ6ICcnLA0KICAgICAgICBwYWdlOiAxLA0KICAgICAgICBsaW1pdDogMjAsDQogICAgICB9LA0KICAgICAgdHJlZURhdGE6IHsNCiAgICAgICAgd2l0aGRyYXdhbDogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHRpdGxlOiAn5YWo6YOoJywNCiAgICAgICAgICAgIHZhbHVlOiAnJywNCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHRpdGxlOiAn5b6F5a6h5qC4JywNCiAgICAgICAgICAgIHZhbHVlOiAwLA0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgdGl0bGU6ICflt7LpgJrov4cnLA0KICAgICAgICAgICAgdmFsdWU6IDEsDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICB0aXRsZTogJ+acqumAmui/hycsDQogICAgICAgICAgICB2YWx1ZTogLTEsDQogICAgICAgICAgfSwNCiAgICAgICAgXSwNCiAgICAgIH0sDQogICAgICBjb2x1bW5zMTogWw0KICAgICAgICB7IGtleTogJ3Byb2R1Y3RfaWQnLCB0aXRsZTogJ+WVhuWTgUlEJywgbWluV2lkdGg6IDM1IH0sDQogICAgICAgIHsgc2xvdDogJ25hbWUnLCBtaW5XaWR0aDogMzUsIHRpdGxlOiAn5ZWG5ZOB5ZCN56ewJyB9LA0KICAgICAgICB7IGtleTogJ3ByaWNlJywgbWluV2lkdGg6IDM1LCB0aXRsZTogJ+ebtOaSreS7tycgfSwNCiAgICAgICAgeyBzbG90OiAnY29zdF9wcmljZScsIG1pbldpZHRoOiAzNSwgdGl0bGU6ICfljp/ku7cnIH0sDQogICAgICAgIHsgc2xvdDogJ3N0b2NrJywgbWluV2lkdGg6IDM1LCB0aXRsZTogJ+W6k+WtmCcgfSwNCiAgICAgICAgeyBzbG90OiAnc3RhdHVzJywgbWluV2lkdGg6IDM1LCB0aXRsZTogJ+WuoeaguOeKtuaAgScgfSwNCiAgICAgICAgeyBzbG90OiAnaXNfbWVyX3Nob3cnLCB0aXRsZTogJ+aYr+WQpuaYvuekuicsIG1pbldpZHRoOiA4MCB9LA0KICAgICAgICAvLyB7ImtleSI6ICJzb3J0IiwgInRpdGxlIjogIuaOkuW6jyIsICJtaW5XaWR0aCI6IDM1fSwNCiAgICAgICAgeyBzbG90OiAnYWN0aW9uJywgZml4ZWQ6ICdyaWdodCcsIHRpdGxlOiAn5pON5L2cJywgbWluV2lkdGg6IDEyMCB9LA0KICAgICAgXSwNCiAgICAgIHRhYkxpc3Q6IFtdLA0KICAgICAgbG9hZGluZzogZmFsc2UsDQogICAgICBtb2RhbHM6IGZhbHNlLA0KICAgICAgdG90YWw6IDAsDQogICAgICBGb3JtRGF0YToge30sDQogICAgfTsNCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICAuLi5tYXBTdGF0ZSgnbWVkaWEnLCBbJ2lzTW9iaWxlJ10pLA0KICAgIGxhYmVsV2lkdGgoKSB7DQogICAgICByZXR1cm4gdGhpcy5pc01vYmlsZSA/IHVuZGVmaW5lZCA6ICc4MHB4JzsNCiAgICB9LA0KICAgIGxhYmVsUG9zaXRpb24oKSB7DQogICAgICByZXR1cm4gdGhpcy5pc01vYmlsZSA/ICd0b3AnIDogJ3JpZ2h0JzsNCiAgICB9LA0KICB9LA0KICBtb3VudGVkKCkgew0KICAgIHRoaXMuZ2V0TGlzdCgpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy8g55u05pKt6Ze05pi+56S66ZqQ6JePDQogICAgb25jaGFuZ2VJc1Nob3coeyBpZCwgaXNfc2hvdyB9KSB7DQogICAgICBsaXZlR29vZHNTaG93KGlkLCBpc19zaG93KQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvci5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIC8vIOWIl+ihqOaVsOaNrg0KICAgIGdldExpc3QoKSB7DQogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOw0KICAgICAgbGl2ZUdvb2RzKHRoaXMuZm9ybVZhbGlkYXRlKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy50b3RhbCA9IHJlcy5kYXRhLmNvdW50Ow0KICAgICAgICAgIHRoaXMudGFiTGlzdCA9IHJlcy5kYXRhLmxpc3Q7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yLm1zZyk7DQogICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g6YCJ5oupDQogICAgc2VsQ2hhbmdlKCkgew0KICAgICAgdGhpcy5mb3JtVmFsaWRhdGUucGFnZSA9IDE7DQogICAgICB0aGlzLmdldExpc3QoKTsNCiAgICB9LA0KICAgIC8vIOa3u+WKoOWVhuWTgQ0KICAgIG1lbnVzQWRkKCkgew0KICAgICAgdGhpcy4kcm91dGVyLnB1c2goew0KICAgICAgICBwYXRoOiB0aGlzLiRyb3V0ZVByb1N0ciArICcvbWFya2V0aW5nL2xpdmUvYWRkX2xpdmVfZ29vZHMnLA0KICAgICAgfSk7DQogICAgfSwNCiAgICAvLyDlkIzmraXllYblk4ENCiAgICBzeW5jR29vZHMoKSB7DQogICAgICBsaXZlU3luY0dvb2RzKCkNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsNCiAgICAgICAgICB0aGlzLmdldExpc3QoKTsNCiAgICAgICAgfSkNCiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IubXNnKTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgICBlZGl0KHJvdykgew0KICAgICAgbGl2ZUdvb2RzRGV0YWlsKHJvdy5pZCkNCiAgICAgICAgLnRoZW4oKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuRm9ybURhdGEgPSByZXMuZGF0YTsNCiAgICAgICAgICB0aGlzLm1vZGFscyA9IHRydWU7DQogICAgICAgIH0pDQogICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yLm1zZyk7DQogICAgICAgIH0pOw0KICAgIH0sDQogICAgLy8g5Yig6ZmkDQogICAgZGVsKHJvdywgdGl0LCBudW0pIHsNCiAgICAgIGxldCBkZWxmcm9tRGF0YSA9IHsNCiAgICAgICAgdGl0bGU6IHRpdCwNCiAgICAgICAgbnVtOiBudW0sDQogICAgICAgIHVybDogYGxpdmUvZ29vZHMvZGVsLyR7cm93LmlkfWAsDQogICAgICAgIG1ldGhvZDogJ0RFTEVURScsDQogICAgICAgIGlkczogJycsDQogICAgICB9Ow0KICAgICAgdGhpcy4kbW9kYWxTdXJlKGRlbGZyb21EYXRhKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOw0KICAgICAgICAgIHRoaXMudGFiTGlzdC5zcGxpY2UobnVtLCAxKTsNCg0KICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLm1zZyk7DQogICAgICAgIH0pOw0KICAgIH0sDQogIH0sDQp9Ow0K"},{"version":3,"sources":["live_goods.vue"],"names":[],"mappings":";AAuIA;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;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;AACA;AACA;AACA;AACA;AACA","file":"live_goods.vue","sourceRoot":"src/pages/marketing/live","sourcesContent":["<template>\r\n <div>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt\" :body-style=\"{ padding: 0 }\">\r\n <div class=\"padding-add\">\r\n <el-form\r\n ref=\"formValidate\"\r\n :model=\"formValidate\"\r\n :label-width=\"labelWidth\"\r\n label-position=\"right\"\r\n inline\r\n class=\"tabform\"\r\n @submit.native.prevent\r\n >\r\n <el-form-item label=\"审核状态:\">\r\n <el-select v-model=\"formValidate.status\" clearable @change=\"selChange\" class=\"form_content_width\">\r\n <el-option\r\n v-for=\"(item, index) in treeData.withdrawal\"\r\n :value=\"item.value\"\r\n :key=\"index\"\r\n :label=\"item.title\"\r\n ></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"搜索:\">\r\n <el-input\r\n clearable\r\n placeholder=\"请输入商品名称/ID\"\r\n v-model=\"formValidate.kerword\"\r\n class=\"form_content_width\"\r\n />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button type=\"primary\" v-db-click @click=\"selChange\">查询</el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </el-card>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt mt16\">\r\n <el-button v-auth=\"['setting-system_menus-add']\" type=\"primary\" v-db-click @click=\"menusAdd('添加直播间')\"\r\n >添加商品\r\n </el-button>\r\n <!-- <el-button\r\n v-auth=\"['setting-system_menus-add']\"\r\n type=\"success\"\r\n v-db-click @click=\"syncGoods\"\r\n style=\"margin-left: 20px\"\r\n >同步商品\r\n </el-button> -->\r\n <el-table\r\n :data=\"tabList\"\r\n ref=\"table\"\r\n class=\"mt14\"\r\n v-loading=\"loading\"\r\n highlight-current-row\r\n no-userFrom-text=\"暂无数据\"\r\n no-filtered-userFrom-text=\"暂无筛选结果\"\r\n >\r\n <el-table-column label=\"商品ID\" 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=\"120\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"product_box\">\r\n <div v-viewer>\r\n <img :src=\"scope.row.product.image\" alt=\"\" />\r\n </div>\r\n <div class=\"txt\">{{ scope.row.name }}</div>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"直播价\" min-width=\"80\">\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=\"80\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.cost_price }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"库存\" min-width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.product.stock }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"审核状态\" min-width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <div>{{ scope.row.audit_status | liveStatusFilter }}</div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"是否显示\" min-width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n class=\"defineSwitch\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n v-model=\"scope.row.is_show\"\r\n :value=\"scope.row.is_show\"\r\n @change=\"onchangeIsShow(scope.row)\"\r\n size=\"large\"\r\n :disabled=\"scope.row.audit_status != 2\"\r\n active-text=\"显示\"\r\n inactive-text=\"隐藏\"\r\n >\r\n </el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"170\">\r\n <template slot-scope=\"scope\">\r\n <a v-db-click @click=\"edit(scope.row, '编辑')\">详情</a>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <a v-db-click @click=\"del(scope.row, '删除这条信息', scope.$index)\">删除</a>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"acea-row row-right page\">\r\n <pagination\r\n v-if=\"total\"\r\n :total=\"total\"\r\n :page.sync=\"formValidate.page\"\r\n :limit.sync=\"formValidate.limit\"\r\n @pagination=\"getList\"\r\n />\r\n </div>\r\n </el-card>\r\n <!--详情-->\r\n <el-dialog :visible.sync=\"modals\" title=\"商品详情\" class=\"paymentFooter\" scrollable width=\"720px\">\r\n <goodsFrom ref=\"goodsDetail\" :FormData=\"FormData\" />\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex';\r\nimport { liveGoods, liveSyncGoods, liveGoodsDetail, liveGoodsShow } from '@/api/live';\r\nimport goodsFrom from './components/goods_detail';\r\nexport default {\r\n name: 'live',\r\n components: {\r\n goodsFrom,\r\n },\r\n data() {\r\n return {\r\n grid: {\r\n xl: 7,\r\n lg: 7,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n formValidate: {\r\n status: '',\r\n kerword: '',\r\n page: 1,\r\n limit: 20,\r\n },\r\n treeData: {\r\n withdrawal: [\r\n {\r\n title: '全部',\r\n value: '',\r\n },\r\n {\r\n title: '待审核',\r\n value: 0,\r\n },\r\n {\r\n title: '已通过',\r\n value: 1,\r\n },\r\n {\r\n title: '未通过',\r\n value: -1,\r\n },\r\n ],\r\n },\r\n columns1: [\r\n { key: 'product_id', title: '商品ID', minWidth: 35 },\r\n { slot: 'name', minWidth: 35, title: '商品名称' },\r\n { key: 'price', minWidth: 35, title: '直播价' },\r\n { slot: 'cost_price', minWidth: 35, title: '原价' },\r\n { slot: 'stock', minWidth: 35, title: '库存' },\r\n { slot: 'status', minWidth: 35, title: '审核状态' },\r\n { slot: 'is_mer_show', title: '是否显示', minWidth: 80 },\r\n // {\"key\": \"sort\", \"title\": \"排序\", \"minWidth\": 35},\r\n { slot: 'action', fixed: 'right', title: '操作', minWidth: 120 },\r\n ],\r\n tabList: [],\r\n loading: false,\r\n modals: false,\r\n total: 0,\r\n FormData: {},\r\n };\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : '80px';\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n mounted() {\r\n this.getList();\r\n },\r\n methods: {\r\n // 直播间显示隐藏\r\n onchangeIsShow({ id, is_show }) {\r\n liveGoodsShow(id, is_show)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n // 列表数据\r\n getList() {\r\n this.loading = true;\r\n liveGoods(this.formValidate)\r\n .then((res) => {\r\n this.total = res.data.count;\r\n this.tabList = res.data.list;\r\n this.loading = false;\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n this.loading = false;\r\n });\r\n },\r\n // 选择\r\n selChange() {\r\n this.formValidate.page = 1;\r\n this.getList();\r\n },\r\n // 添加商品\r\n menusAdd() {\r\n this.$router.push({\r\n path: this.$routeProStr + '/marketing/live/add_live_goods',\r\n });\r\n },\r\n // 同步商品\r\n syncGoods() {\r\n liveSyncGoods()\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getList();\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n edit(row) {\r\n liveGoodsDetail(row.id)\r\n .then((res) => {\r\n this.FormData = res.data;\r\n this.modals = true;\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n // 删除\r\n del(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `live/goods/del/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.tabList.splice(num, 1);\r\n\r\n this.getList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.product_box {\r\n display: flex;\r\n align-items: center;\r\n img {\r\n width: 36px;\r\n height: 36px;\r\n }\r\n .txt {\r\n margin-left: 10px;\r\n color: #000;\r\n font-size: 12px;\r\n }\r\n}\r\n</style>\r\n"]}]}