de58cb8b2488c8423e992a6a00bed6c0.json 15 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\product\\productList\\components\\goodsImport.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\product\\productList\\components\\goodsImport.vue","mtime":1761614939050},{"path":"D:\\front\\item\\zyAdmin\\babel.config.js","mtime":1761614925168},{"path":"D:\\front\\item\\zyAdmin\\.babelrc","mtime":1761614925165},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCB7IGltcG9ydFByb2R1Y3RJbXBvcnQgfSBmcm9tICdAL2FwaS9leHBvcnQnOwppbXBvcnQgU2V0dGluZyBmcm9tICdAL3NldHRpbmcnOwppbXBvcnQgeyBnZXRDb29raWVzIH0gZnJvbSAnQC9saWJzL3V0aWwnOwppbXBvcnQgeyBpc1hsc1VwbG9hZCB9IGZyb20gJ0AvdXRpbHMvaW5kZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ2dvb2RzSW1wb3J0JywKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgdXBsb2FkVXJsOiBTZXR0aW5nLmFwaUJhc2VVUkwgKyAnL2ZpbGUvdXBsb2FkLzEnLAogICAgICBoZWFkZXI6IHsKICAgICAgICAnQXV0aG9yaS16YXRpb24nOiAnQmVhcmVyICcgKyBnZXRDb29raWVzKCd0b2tlbicpCiAgICAgIH0sCiAgICAgIGZpbGVOYW1lOiAnJywKICAgICAgZmlsZVVybDogJycsCiAgICAgIGltcG9ydFN0YXR1czogZmFsc2UsCiAgICAgIGltcG9ydExvYWRpbmc6IGZhbHNlLAogICAgICByZXN1bHREYXRhOiB7CiAgICAgICAgYWxsOiAwLAogICAgICAgIHN1Y2Nlc3M6IDAsCiAgICAgICAgZmFpbDogMCwKICAgICAgICBqdW1wOiAwCiAgICAgIH0sCiAgICAgIHN0YXR1c0ltYWdlOiByZXF1aXJlKCdAL2Fzc2V0cy9pbWFnZXMvZmlsZS1zdWNjZXNzLnBuZycpCiAgICB9OwogIH0sCiAgd2F0Y2g6IHsKICAgIHJlc3VsdERhdGE6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWx1ZSkgewogICAgICAgIGlmIChuZXdWYWx1ZS5mYWlsID4gMCkgewogICAgICAgICAgdGhpcy5zdGF0dXNJbWFnZSA9IHJlcXVpcmUoJ0AvYXNzZXRzL2ltYWdlcy9maWxlLWZhaWwucG5nJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuc3RhdHVzSW1hZ2UgPSByZXF1aXJlKCdAL2Fzc2V0cy9pbWFnZXMvZmlsZS1zdWNjZXNzLnBuZycpOwogICAgICAgIH0KICAgICAgfSwKICAgICAgZGVlcDogdHJ1ZSAvLyDpu5jorqTlgLzmmK8gZmFsc2XvvIzku6PooajmmK/lkKbmt7Hluqbnm5HlkKwKICAgIH0KICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7fSwKICBtZXRob2RzOiB7CiAgICBmaWxlQ2hhbmdlOiBmdW5jdGlvbiBmaWxlQ2hhbmdlKGZpbGUsIGZpbGVMaXN0KSB7CiAgICAgIGlmIChpc1hsc1VwbG9hZChmaWxlKSkgewogICAgICAgIC8vIOmZkOWItjEwTQogICAgICAgIGlmIChmaWxlLnNpemUgPj0gMTA0ODU3NjApIHsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+aWh+S7tuWkp+Wwj+S4jeiDvei2hei/hzEwTUInKTsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9LAogICAgc2VsZWN0RmlsZTogZnVuY3Rpb24gc2VsZWN0RmlsZSgpIHsKICAgICAgdGhpcy5pbXBvcnRTdGF0dXMgPSBmYWxzZTsKICAgICAgdGhpcy5pbXBvcnRMb2FkaW5nID0gZmFsc2U7CiAgICAgIC8vIOiwg+i1t+mAieaLqeaWh+S7tgogICAgICB0aGlzLiRyZWZzWyd1cGxvYWQnXS4kcmVmc1sndXBsb2FkLWlubmVyJ10uaGFuZGxlQ2xpY2soKTsKICAgIH0sCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcywgZmlsZSwgZmlsZUxpc3QpIHsKICAgICAgY29uc29sZS5sb2cocmVzLCAnMicpOwogICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgdGhpcy5maWxlVXJsID0gcmVzLmRhdGEuc3JjOwogICAgICB9CiAgICB9LAogICAgaW1wb3J0R29vZHM6IGZ1bmN0aW9uIGltcG9ydEdvb2RzKCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICB0aGlzLmltcG9ydExvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLmltcG9ydFN0YXR1cyA9IGZhbHNlOwogICAgICBpbXBvcnRQcm9kdWN0SW1wb3J0KHsKICAgICAgICBmaWxlOiB0aGlzLmZpbGVVcmwKICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgLy8g6L+U5Zue5a+85YWl57uT5p6cCiAgICAgICAgX3RoaXMuaW1wb3J0U3RhdHVzID0gdHJ1ZTsKICAgICAgICBfdGhpcy5yZXN1bHREYXRhID0gcmVzLmRhdGE7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpcy5pbXBvcnRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgX3RoaXMuaW1wb3J0U3RhdHVzID0gZmFsc2U7CiAgICAgICAgX3RoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHsKICAgICAgdGhpcy5maWxlVXJsID0gJyc7CiAgICAgIHRoaXMuZmlsZU5hbWUgPSAnJzsKICAgICAgdGhpcy5pbXBvcnRTdGF0dXMgPSBmYWxzZTsKICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTsKICAgIH0sCiAgICBkb3dubG9hZEZhaWxEYXRhOiBmdW5jdGlvbiBkb3dubG9hZEZhaWxEYXRhKCkgewogICAgICAvLyDkuIvovb3lpLHotKXmlbDmja4KICAgIH0KICB9Cn07"},{"version":3,"names":["importProductImport","Setting","getCookies","isXlsUpload","name","data","uploadUrl","apiBaseURL","header","fileName","fileUrl","importStatus","importLoading","resultData","all","success","fail","jump","statusImage","require","watch","handler","newValue","deep","mounted","methods","fileChange","file","fileList","size","$message","error","selectFile","$refs","handleClick","handleSuccess","res","console","log","status","src","importGoods","_this","then","catch","err","msg","close","$emit","downloadFailData"],"sources":["src/pages/product/productList/components/goodsImport.vue"],"sourcesContent":["<!-- 商品导入 -->\r\n<template>\r\n <div class=\"goods-import\">\r\n <!-- 下载模板 -->\r\n <div class=\"download acea-row row-middle\">\r\n <span>上传前请先按Excel模板中的格式编辑内容</span>\r\n <img src=\"@/assets/images/excel-icon.png\" alt=\"\" />\r\n <a href=\"/product_migration.xlsx\" download class=\"download-text cup\">下载Excel模板</a>\r\n </div>\r\n\r\n <div class=\"goods-upload mt20\">\r\n <el-upload\r\n v-show=\"!fileUrl && !importStatus\"\r\n ref=\"upload\"\r\n class=\"upload-demo\"\r\n :drag=\"!fileUrl\"\r\n :show-file-list=\"false\"\r\n :action=\"uploadUrl\"\r\n :headers=\"header\"\r\n :before-upload=\"fileChange\"\r\n :on-success=\"handleSuccess\"\r\n accept=\".xls, .xlsx\"\r\n >\r\n <template>\r\n <img class=\"el-upload-dragger__icon mb20\" src=\"@/assets/images/upload-icon.png\" alt=\"\" />\r\n <div class=\"el-upload__text\">将文件拖到此处,或<em>点击添加</em></div>\r\n <div class=\"el-upload__trip\">支持 .xls,.xlsx,限10M以内</div>\r\n </template>\r\n </el-upload>\r\n <div v-show=\"fileUrl && !importStatus\" class=\"file-info\">\r\n <img class=\"el-upload-dragger__icon mb20\" src=\"@/assets/images/upload-icon.png\" alt=\"\" />\r\n <div class=\"el-upload__text\">{{ fileName }}</div>\r\n <div class=\"flex mt12\" v-if=\"fileUrl && !importLoading\">\r\n <div class=\"active-btn\" @click=\"selectFile\">重新上传</div>\r\n <div class=\"active-btn\" @click=\"fileUrl = ''\">删除</div>\r\n </div>\r\n <div class=\"el-upload__trip\" v-if=\"importLoading\">\r\n 正在导入,您可关闭当前弹窗,稍候可在列表查看导入结果\r\n <i class=\"el-icon-loading\"></i>\r\n </div>\r\n <el-button v-else class=\"btn-import\" type=\"primary\" size=\"small\" @click=\"importGoods\">立即导入</el-button>\r\n </div>\r\n <div v-show=\"fileUrl && importStatus\" class=\"file-info\">\r\n <img class=\"el-upload-dragger__icon mb20\" :src=\"statusImage\" alt=\"\" />\r\n <div class=\"el-upload__text\">\r\n 共导入 {{ resultData.all }} 个,成功 {{ resultData.success }} 个,失败 {{ resultData.fail }} 跳过\r\n {{ resultData.jump }} 个\r\n </div>\r\n <div class=\"el-upload__trip\" v-if=\"resultData.fail > 0\">\r\n 您可以下载失败数据,修改后再重新导入 <span class=\"active-btn\" @click=\"downloadFailData\">下载失败数据</span>\r\n </div>\r\n <div>\r\n <el-button class=\"btn-import\" size=\"small\" @click=\"selectFile\">再次导入</el-button>\r\n <el-button type=\"primary\" class=\"btn-import\" @click=\"close\">完成</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 导入规则 -->\r\n <div class=\"import-rule mt20\">\r\n <div class=\"rule-title\">导入规则</div>\r\n <!-- 1. 请先下载模板,在模板中按字段填写信息,然后上传该文件。\r\n2. 导入未完成之前,请勿关闭页面,否则可能数据错误。\r\n3. 文件大小不超过10MB。\r\n4. 限制导入10000行记录,超出部分请分多次导入。 -->\r\n <div class=\"rule-text\">1. 请先下载模板,在模板中按字段填写信息,然后上传该文件。</div>\r\n <div class=\"rule-text\">2. 导入未完成之前,请勿关闭页面,否则可能数据错误。</div>\r\n <div class=\"rule-text\">3. 文件大小不超过10MB。</div>\r\n <div class=\"rule-text\">4. 限制导入10000行记录,超出部分请分多次导入。</div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { importProductImport } from '@/api/export';\r\nimport Setting from '@/setting';\r\nimport { getCookies } from '@/libs/util';\r\nimport { isXlsUpload } from '@/utils/index';\r\n\r\nexport default {\r\n name: 'goodsImport',\r\n data() {\r\n return {\r\n uploadUrl: Setting.apiBaseURL + '/file/upload/1',\r\n header: {\r\n 'Authori-zation': 'Bearer ' + getCookies('token'),\r\n },\r\n fileName: '',\r\n fileUrl: '',\r\n importStatus: false,\r\n importLoading: false,\r\n resultData: {\r\n all: 0,\r\n success: 0,\r\n fail: 0,\r\n jump: 0,\r\n },\r\n statusImage: require('@/assets/images/file-success.png'),\r\n };\r\n },\r\n watch: {\r\n resultData: {\r\n handler(newValue) {\r\n if (newValue.fail > 0) {\r\n this.statusImage = require('@/assets/images/file-fail.png');\r\n } else {\r\n this.statusImage = require('@/assets/images/file-success.png');\r\n }\r\n },\r\n deep: true, // 默认值是 false,代表是否深度监听\r\n },\r\n },\r\n mounted() {},\r\n methods: {\r\n fileChange(file, fileList) {\r\n if (isXlsUpload(file)) {\r\n // 限制10M\r\n if (file.size >= 10485760) {\r\n this.$message.error('文件大小不能超过10MB');\r\n return false;\r\n } else {\r\n this.fileName = file.name;\r\n }\r\n } else {\r\n return false;\r\n }\r\n },\r\n selectFile() {\r\n this.importStatus = false;\r\n this.importLoading = false;\r\n // 调起选择文件\r\n this.$refs['upload'].$refs['upload-inner'].handleClick();\r\n },\r\n handleSuccess(res, file, fileList) {\r\n console.log(res, '2');\r\n if (res.status === 200) {\r\n this.fileUrl = res.data.src;\r\n }\r\n },\r\n importGoods() {\r\n this.importLoading = true;\r\n this.importStatus = false;\r\n importProductImport({\r\n file: this.fileUrl,\r\n })\r\n .then((res) => {\r\n // 返回导入结果\r\n this.importStatus = true;\r\n this.resultData = res.data;\r\n })\r\n .catch((err) => {\r\n this.importLoading = false;\r\n this.importStatus = false;\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n close() {\r\n this.fileUrl = '';\r\n this.fileName = '';\r\n this.importStatus = false;\r\n this.$emit('close');\r\n },\r\n downloadFailData() {\r\n // 下载失败数据\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.download {\r\n background-color: var(--prev-color-primary-light-9);\r\n padding: 12px;\r\n border-radius: 4px;\r\n color: #303133;\r\n font-size: 12px;\r\n img {\r\n width: 19px;\r\n height: 19px;\r\n margin: 0 4px 0 8px;\r\n }\r\n .download-text {\r\n color: var(--prev-color-primary);\r\n }\r\n}\r\n.goods-upload {\r\n width: 100%;\r\n ::v-deep .el-upload {\r\n width: 100%;\r\n .el-upload-dragger {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n padding: 170px 0;\r\n .el-upload-dragger__icon {\r\n width: 42px;\r\n height: 57px;\r\n }\r\n .el-upload__trip {\r\n font-weight: 400;\r\n font-size: 12px;\r\n color: #999999;\r\n margin-top: 6px;\r\n }\r\n }\r\n }\r\n .file-info {\r\n height: 342px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n border: 1px dashed #d9d9d9;\r\n border-radius: 4px;\r\n margin-top: 10px;\r\n .active-btn {\r\n color: var(--prev-color-primary);\r\n font-size: 12px;\r\n font-weight: 400;\r\n margin: 0 6px;\r\n cursor: pointer;\r\n }\r\n .btn-import {\r\n margin-top: 26px;\r\n }\r\n .el-upload-dragger__icon {\r\n width: 42px;\r\n height: 57px;\r\n }\r\n .el-upload__trip {\r\n display: flex;\r\n align-items: center;\r\n font-weight: 400;\r\n font-size: 12px;\r\n color: #999;\r\n margin-top: 6px;\r\n }\r\n }\r\n}\r\n.import-rule {\r\n .rule-title {\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #303133;\r\n margin-bottom: 6px;\r\n }\r\n .rule-text {\r\n font-size: 12px;\r\n color: #303133;\r\n }\r\n}\r\n</style>\r\n"],"mappings":";AAyEA,SAAAA,mBAAA;AACA,OAAAC,OAAA;AACA,SAAAC,UAAA;AACA,SAAAC,WAAA;AAEA;EACAC,IAAA;EACAC,IAAA,WAAAA,KAAA;IACA;MACAC,SAAA,EAAAL,OAAA,CAAAM,UAAA;MACAC,MAAA;QACA,8BAAAN,UAAA;MACA;MACAO,QAAA;MACAC,OAAA;MACAC,YAAA;MACAC,aAAA;MACAC,UAAA;QACAC,GAAA;QACAC,OAAA;QACAC,IAAA;QACAC,IAAA;MACA;MACAC,WAAA,EAAAC,OAAA;IACA;EACA;EACAC,KAAA;IACAP,UAAA;MACAQ,OAAA,WAAAA,QAAAC,QAAA;QACA,IAAAA,QAAA,CAAAN,IAAA;UACA,KAAAE,WAAA,GAAAC,OAAA;QACA;UACA,KAAAD,WAAA,GAAAC,OAAA;QACA;MACA;MACAI,IAAA;IACA;EACA;EACAC,OAAA,WAAAA,QAAA;EACAC,OAAA;IACAC,UAAA,WAAAA,WAAAC,IAAA,EAAAC,QAAA;MACA,IAAAzB,WAAA,CAAAwB,IAAA;QACA;QACA,IAAAA,IAAA,CAAAE,IAAA;UACA,KAAAC,QAAA,CAAAC,KAAA;UACA;QACA;UACA,KAAAtB,QAAA,GAAAkB,IAAA,CAAAvB,IAAA;QACA;MACA;QACA;MACA;IACA;IACA4B,UAAA,WAAAA,WAAA;MACA,KAAArB,YAAA;MACA,KAAAC,aAAA;MACA;MACA,KAAAqB,KAAA,WAAAA,KAAA,iBAAAC,WAAA;IACA;IACAC,aAAA,WAAAA,cAAAC,GAAA,EAAAT,IAAA,EAAAC,QAAA;MACAS,OAAA,CAAAC,GAAA,CAAAF,GAAA;MACA,IAAAA,GAAA,CAAAG,MAAA;QACA,KAAA7B,OAAA,GAAA0B,GAAA,CAAA/B,IAAA,CAAAmC,GAAA;MACA;IACA;IACAC,WAAA,WAAAA,YAAA;MAAA,IAAAC,KAAA;MACA,KAAA9B,aAAA;MACA,KAAAD,YAAA;MACAX,mBAAA;QACA2B,IAAA,OAAAjB;MACA,GACAiC,IAAA,WAAAP,GAAA;QACA;QACAM,KAAA,CAAA/B,YAAA;QACA+B,KAAA,CAAA7B,UAAA,GAAAuB,GAAA,CAAA/B,IAAA;MACA,GACAuC,KAAA,WAAAC,GAAA;QACAH,KAAA,CAAA9B,aAAA;QACA8B,KAAA,CAAA/B,YAAA;QACA+B,KAAA,CAAAZ,QAAA,CAAAC,KAAA,CAAAc,GAAA,CAAAC,GAAA;MACA;IACA;IACAC,KAAA,WAAAA,MAAA;MACA,KAAArC,OAAA;MACA,KAAAD,QAAA;MACA,KAAAE,YAAA;MACA,KAAAqC,KAAA;IACA;IACAC,gBAAA,WAAAA,iBAAA;MACA;IAAA;EAEA;AACA","ignoreList":[]}]}