79abfc71d5b4459de44dd009e636f68a.json 12 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\\add_goods.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\marketing\\live\\add_goods.vue","mtime":1761185180113},{"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:DQppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOw0KaW1wb3J0IGdvb2RzTGlzdCBmcm9tICdAL2NvbXBvbmVudHMvZ29vZHNMaXN0JzsNCmltcG9ydCB7IGxpdmVHb29kc0NyZWF0LCBsaXZlR29vZHNBZGQgfSBmcm9tICdAL2FwaS9saXZlJzsNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ2FkZF9nb29kcycsDQogIGNvbXBvbmVudHM6IHsNCiAgICBnb29kc0xpc3QsDQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwU3RhdGUoJ21lZGlhJywgWydpc01vYmlsZSddKSwNCiAgICBsYWJlbFdpZHRoKCkgew0KICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAnMTAwcHgnOw0KICAgIH0sDQogICAgbGFiZWxQb3NpdGlvbigpIHsNCiAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlID8gJ3RvcCcgOiAncmlnaHQnOw0KICAgIH0sDQogIH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIGlzU2hvd0JveDogZmFsc2UsDQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIG1vZGFsczogZmFsc2UsDQogICAgICBnb29kc0xpc3Q6IFtdLA0KICAgICAgdGVtcEdvb2RzOiB7fSwNCiAgICAgIGZvcm1WYWxpZGF0ZToge30sDQogICAgICB0YWJMaXN0OiBbXSwNCiAgICAgIGRpc2FibGVkOiBmYWxzZSwNCiAgICAgIGxvYWRpbmdzOiBmYWxzZSwNCiAgICAgIHNlbGVjdElkczogW10sDQogICAgfTsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIHNlbGVjdEdvb2RzKCkgew0KICAgICAgdGhpcy5tb2RhbHMgPSB0cnVlOw0KICAgIH0sDQogICAgLy8g55Sf5oiQ55u05pKt5ZWG5ZOBDQogICAgbGl2ZUdvb2RzKCkgew0KICAgICAgbGV0IGFycmF5ID0gW107DQogICAgICB0aGlzLmdvb2RzTGlzdC5tYXAoKGVsKSA9PiB7DQogICAgICAgIGFycmF5LnB1c2goZWwucHJvZHVjdF9pZCk7DQogICAgICB9KTsNCiAgICAgIGxpdmVHb29kc0NyZWF0KHsNCiAgICAgICAgcHJvZHVjdF9pZDogYXJyYXksDQogICAgICB9KQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy50YWJMaXN0ID0gcmVzLmRhdGE7DQogICAgICAgICAgdGhpcy5pc1Nob3dCb3ggPSB0cnVlOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJvci5tc2cpOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIC8v5a+56LGh5pWw57uE5Y676YeN77ybDQogICAgdW5pcXVlKGFycikgew0KICAgICAgY29uc3QgcmVzID0gbmV3IE1hcCgpOw0KICAgICAgcmV0dXJuIGFyci5maWx0ZXIoKGFycikgPT4gIXJlcy5oYXMoYXJyLnByb2R1Y3RfaWQpICYmIHJlcy5zZXQoYXJyLnByb2R1Y3RfaWQsIDEpKTsNCiAgICB9LA0KICAgIGdldFByb2R1Y3RJZChwcm9kdWN0TGlzdCkgew0KICAgICAgdGhpcy5tb2RhbHMgPSBmYWxzZTsNCiAgICAgIHRoaXMuZ29vZHNMaXN0ID0gdGhpcy51bmlxdWUodGhpcy5nb29kc0xpc3QuY29uY2F0KHByb2R1Y3RMaXN0KSk7DQogICAgfSwNCiAgICBiaW5kRGVsZXRlKGluZGV4LCBpdGVtKSB7DQogICAgICB0aGlzLmdvb2RzTGlzdC5zcGxpY2UoaW5kZXgsIDEpOw0KICAgICAgbGV0IGkgPSB0aGlzLnRhYkxpc3QuZmluZEluZGV4KChlKSA9PiBlLmlkID09IGl0ZW0ucHJvZHVjdF9pZCk7DQogICAgICB0aGlzLnRhYkxpc3Quc3BsaWNlKGksIDEpOw0KICAgICAgaWYgKCF0aGlzLmdvb2RzTGlzdC5sZW5ndGgpIHsNCiAgICAgICAgdGhpcy5pc1Nob3dCb3ggPSBmYWxzZTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGRlbChyb3csIGluZGV4KSB7DQogICAgICB0aGlzLnRhYkxpc3Quc3BsaWNlKGluZGV4LCAxKTsNCiAgICAgIGxldCBpID0gdGhpcy5nb29kc0xpc3QuZmluZEluZGV4KChlKSA9PiBlLnByb2R1Y3RfaWQgPT0gcm93LmlkKTsNCiAgICAgIHRoaXMuZ29vZHNMaXN0LnNwbGljZShpLCAxKTsNCiAgICAgIGlmICghdGhpcy50YWJMaXN0Lmxlbmd0aCkgew0KICAgICAgICB0aGlzLmlzU2hvd0JveCA9IGZhbHNlOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5o+Q5LqkDQogICAgYmluZFN1YigpIHsNCiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgdGhpcy5sb2FkaW5ncyA9IHRydWU7DQogICAgICBsaXZlR29vZHNBZGQoew0KICAgICAgICBnb29kc19pbmZvOiB0aGlzLnRhYkxpc3QsDQogICAgICB9KQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfmt7vliqDmiJDlip8nKTsNCiAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7IHBhdGg6IHRoaXMuJHJvdXRlUHJvU3RyICsgJy9tYXJrZXRpbmcvbGl2ZS9saXZlX2dvb2RzJyB9KTsNCiAgICAgICAgICB9LCA1MDApOw0KICAgICAgICB9KQ0KICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7DQogICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IubXNnKTsNCiAgICAgICAgfSk7DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["add_goods.vue"],"names":[],"mappings":";AA8FA;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":"add_goods.vue","sourceRoot":"src/pages/marketing/live","sourcesContent":["<template>\r\n <div>\r\n <pages-header\r\n ref=\"pageHeader\"\r\n :title=\"$route.meta.title\"\r\n :backUrl=\"$routeProStr + '/marketing/live/live_goods'\"\r\n ></pages-header>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"mt16\">\r\n <el-form\r\n ref=\"formValidate\"\r\n :model=\"formValidate\"\r\n :label-width=\"labelWidth\"\r\n :label-position=\"labelPosition\"\r\n class=\"tabform\"\r\n @submit.native.prevent\r\n >\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"选择商品:\">\r\n <div class=\"box\">\r\n <div class=\"box-item\" v-for=\"(item, index) in goodsList\" :key=\"index\">\r\n <img :src=\"item.image\" alt=\"\" />\r\n <i class=\"el-icon-error\" v-db-click @click=\"bindDelete(index, item)\" style=\"font-size: 16px\"></i>\r\n </div>\r\n <div class=\"upload-box acea-row row-center-wrapper\" v-db-click @click=\"selectGoods\">\r\n <i class=\"el-icon-goods\" style=\"font-size: 24px\"></i>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <div class=\"active-btn\" v-if=\"goodsList.length > 0\">\r\n <el-button type=\"primary\" v-db-click @click=\"liveGoods\">生成直播商品</el-button>\r\n </div>\r\n <div class=\"table-box\" v-if=\"isShowBox\">\r\n <el-table\r\n :data=\"tabList\"\r\n ref=\"table\"\r\n class=\"mt14\"\r\n v-loading=\"loading\"\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.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=\"product_box\">\r\n <img :src=\"scope.row.image\" alt=\"\" />\r\n <span>{{ scope.row.store_name }}</span>\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.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>{{ scope.row.stock }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"80\">\r\n <template slot-scope=\"scope\">\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\r\n <div class=\"sub_btn\">\r\n <el-button\r\n type=\"primary\"\r\n style=\"width: 8%\"\r\n v-db-click\r\n @click=\"bindSub\"\r\n :disabled=\"disabled\"\r\n :loading=\"loadings\"\r\n >提交</el-button\r\n >\r\n </div>\r\n </div>\r\n </el-card>\r\n <el-dialog :visible.sync=\"modals\" title=\"商品列表\" class=\"paymentFooter\" width=\"1000px\">\r\n <goods-list ref=\"goodslist\" :selectIds=\"selectIds\" @getProductId=\"getProductId\" :ischeckbox=\"true\"></goods-list>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState } from 'vuex';\r\nimport goodsList from '@/components/goodsList';\r\nimport { liveGoodsCreat, liveGoodsAdd } from '@/api/live';\r\nexport default {\r\n name: 'add_goods',\r\n components: {\r\n goodsList,\r\n },\r\n computed: {\r\n ...mapState('media', ['isMobile']),\r\n labelWidth() {\r\n return this.isMobile ? undefined : '100px';\r\n },\r\n labelPosition() {\r\n return this.isMobile ? 'top' : 'right';\r\n },\r\n },\r\n data() {\r\n return {\r\n isShowBox: false,\r\n loading: false,\r\n modals: false,\r\n goodsList: [],\r\n tempGoods: {},\r\n formValidate: {},\r\n tabList: [],\r\n disabled: false,\r\n loadings: false,\r\n selectIds: [],\r\n };\r\n },\r\n methods: {\r\n selectGoods() {\r\n this.modals = true;\r\n },\r\n // 生成直播商品\r\n liveGoods() {\r\n let array = [];\r\n this.goodsList.map((el) => {\r\n array.push(el.product_id);\r\n });\r\n liveGoodsCreat({\r\n product_id: array,\r\n })\r\n .then((res) => {\r\n this.tabList = res.data;\r\n this.isShowBox = true;\r\n })\r\n .catch((error) => {\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n //对象数组去重;\r\n unique(arr) {\r\n const res = new Map();\r\n return arr.filter((arr) => !res.has(arr.product_id) && res.set(arr.product_id, 1));\r\n },\r\n getProductId(productList) {\r\n this.modals = false;\r\n this.goodsList = this.unique(this.goodsList.concat(productList));\r\n },\r\n bindDelete(index, item) {\r\n this.goodsList.splice(index, 1);\r\n let i = this.tabList.findIndex((e) => e.id == item.product_id);\r\n this.tabList.splice(i, 1);\r\n if (!this.goodsList.length) {\r\n this.isShowBox = false;\r\n }\r\n },\r\n del(row, index) {\r\n this.tabList.splice(index, 1);\r\n let i = this.goodsList.findIndex((e) => e.product_id == row.id);\r\n this.goodsList.splice(i, 1);\r\n if (!this.tabList.length) {\r\n this.isShowBox = false;\r\n }\r\n },\r\n // 提交\r\n bindSub() {\r\n this.disabled = true;\r\n this.loadings = true;\r\n liveGoodsAdd({\r\n goods_info: this.tabList,\r\n })\r\n .then((res) => {\r\n this.$message.success('添加成功');\r\n this.disabled = false;\r\n setTimeout(() => {\r\n this.$router.push({ path: this.$routeProStr + '/marketing/live/live_goods' });\r\n }, 500);\r\n })\r\n .catch((error) => {\r\n this.disabled = false;\r\n this.$message.error(error.msg);\r\n });\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.upload-box {\r\n width: 58px;\r\n height: 58px;\r\n line-height: 58px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n background: rgba(0, 0, 0, 0.02);\r\n cursor: pointer;\r\n}\r\n.box {\r\n display: flex;\r\n flex-wrap: wrap;\r\n .box-item {\r\n position: relative;\r\n margin-right: 20px;\r\n .el-icon-error {\r\n position: absolute;\r\n right: -10px;\r\n top: -8px;\r\n color: #999;\r\n cursor: pointer;\r\n }\r\n }\r\n .upload-box,\r\n .box-item {\r\n width: 60px;\r\n height: 60px;\r\n margin-bottom: 10px;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n cursor: pointer;\r\n }\r\n }\r\n}\r\n.active-btn {\r\n padding-left: 96px;\r\n}\r\n.table-box {\r\n margin: 0 107px;\r\n}\r\n.sub_btn {\r\n margin-top: 10px;\r\n}\r\n.product_box {\r\n display: flex;\r\n\r\n img {\r\n width: 36px;\r\n height: 36px;\r\n margin-right: 10px;\r\n }\r\n}\r\n</style>\r\n"]}]}