1 |
- {"remainingRequest":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\goods\\manageG\\GoodsImport.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\goods\\manageG\\GoodsImport.vue","mtime":1678954023610},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\babel.config.js","mtime":1681371897685},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1681371912860},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1681371925849}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IHsgZ29vZHNJbXBvcnQgfSBmcm9tICJAL2FwaS9nb29kcyI7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiR29vZHNJbXBvcnQiLAoKICBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgZmlsZV9uYW1lOiAiIiwKICAgICAgZmlsZTogIiIsCiAgICAgIGZpbGVMaXN0OiBbXSwKICAgICAgZ29vZHNfZGF0YTogW10sCiAgICAgIHN0ZXBzX2FjdGl2ZTogMCwKICAgICAgdGFibGVDb2x1bW46IFt7CiAgICAgICAgZmllbGQ6ICJnb29kc05hbWUiLAogICAgICAgIHRpdGxlOiAi5ZWG5ZOB5ZCN56ewIgogICAgICB9LCB7CiAgICAgICAgZmllbGQ6ICJkZXNjcmliZSIsCiAgICAgICAgdGl0bGU6ICLllYblk4HljZbngrkiCiAgICAgIH0sIHsKICAgICAgICBmaWVsZDogImNhdGVnb3J5TmFtZSIsCiAgICAgICAgdGl0bGU6ICLkuIDnuqfliIbnsbsiCiAgICAgIH0sIHsKICAgICAgICBmaWVsZDogImNhdGVnb3J5VHdvIiwKICAgICAgICB0aXRsZTogIuS6jOe6p+WIhuexuyIKICAgICAgfSwgewogICAgICAgIGZpZWxkOiAiY2F0ZWdvcnlUaHJlZSIsCiAgICAgICAgdGl0bGU6ICLkuInnuqfliIbnsbsiCiAgICAgIH0sIHsKICAgICAgICBmaWVsZDogIm1lcmNoYW50TmFtZSIsCiAgICAgICAgdGl0bGU6ICLllYbmiLciCiAgICAgIH0sIHsKICAgICAgICBmaWVsZDogInNrdU5hbWUiLAogICAgICAgIHRpdGxlOiAi5Z+65pys5Y2V5L2NIgogICAgICB9LCB7CiAgICAgICAgZmllbGQ6ICJiYXJDb2RlIiwKICAgICAgICB0aXRsZTogIuS4u+WNleS9jeadoeeggSIKICAgICAgfSwgewogICAgICAgIGZpZWxkOiAic2t1TmFtZVR3byIsCiAgICAgICAgdGl0bGU6ICLovoXliqnljZXkvY0iCiAgICAgIH0sIHsKICAgICAgICBmaWVsZDogImJhckNvZGVUd28iLAogICAgICAgIHRpdGxlOiAi6L6F5Y2V5L2N5p2h56CBIgogICAgICB9LCB7CiAgICAgICAgZmllbGQ6ICJjb252ZXJzaW9uIiwKICAgICAgICB0aXRsZTogIui+heWNleS9jeaNoueulyIKICAgICAgfV0sCiAgICAgIEltcG9ydF90aGVfaW5mb3JtYXRpb246ICIiCiAgICB9OwogIH0sCgogIG1ldGhvZHM6IHsKICAgIGxvb2tEZXRhaWwoKSB7fSwKCiAgICAvLyDlj5bmtogv5a6M5oiQIOaMiemSrgogICAgY2xvc2VQYWdlKCkgewogICAgICBpZiAodGhpcy5zdGVwc19hY3RpdmUgPT09IDEpIHsKICAgICAgICB0aGlzLnN0ZXBzX2FjdGl2ZSA9IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvZ29vZHMvbWFuYWdlRy9CYXNlRGF0YUxpc3QiKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDkuIvkuIDmraUKICAgIHByZXZpZXdEYXRhKCkgewogICAgICBpZiAoIXRoaXMuZmlsZSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup6KaB5a+85YWl55qE5paH5Lu2Iik7CiAgICAgICAgcmV0dXJuOwogICAgICB9IC8vIHRoaXMuJHJlZnMueFRhYmxlLmltcG9ydERhdGEoKTsKCgogICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKCiAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gZXYgPT4gewogICAgICAgIGNvbnN0IGRhdGEgPSBldi50YXJnZXQucmVzdWx0OwogICAgICAgIGNvbnN0IHdvcmtib29rID0gdGhpcy4kWExTWC5yZWFkKGRhdGEsIHsKICAgICAgICAgIHR5cGU6ICJiaW5hcnkiCiAgICAgICAgfSk7CiAgICAgICAgY29uc3QgY3N2RGF0YSA9IHRoaXMuJFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtib29rLlNoZWV0cy5TaGVldDEpOwogICAgICAgIGNvbnN0IHRhYmxlRGF0YSA9IFtdOwogICAgICAgIGNvbnNvbGUubG9nKCJjc3ZEYXRhIiwgY3N2RGF0YS5zcGxpdCgiXG4iKSk7IC8vIOino+aekOaVsOaNrgoKICAgICAgICBjc3ZEYXRhLnNwbGl0KCJcbiIpLmZvckVhY2goKHZSb3csIHJpbmRleCkgPT4gewogICAgICAgICAgaWYgKHZSb3cgJiYgcmluZGV4ID4gMCkgewogICAgICAgICAgICBjb25zdCB2Q29scyA9IHZSb3cuc3BsaXQoIiwiKTsKICAgICAgICAgICAgY29uc29sZS5sb2coInZDb2xzIiwgdkNvbHMpOwogICAgICAgICAgICBjb25zdCBpdGVtID0ge307CiAgICAgICAgICAgIHZDb2xzLmZvckVhY2goKHZhbCwgY0luZGV4KSA9PiB7CiAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy50YWJsZUNvbHVtbltjSW5kZXhdOwoKICAgICAgICAgICAgICBpZiAoY29sdW1uICYmIGNvbHVtbi5maWVsZCkgewogICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdmFsOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRhYmxlRGF0YS5wdXNoKGl0ZW0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGNvbnNvbGUubG9nKCJ0YWJsZURhdGE6OiIsIHRhYmxlRGF0YSk7CiAgICAgICAgdGhpcy5nb29kc19kYXRhID0gdGFibGVEYXRhOwogICAgICB9OwoKICAgICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGhpcy5maWxlKTsKICAgICAgdGhpcy5zdGVwc19hY3RpdmUgPSAxOwogICAgfSwKCiAgICAvL+ehruWumuWvvOWFpQogICAgYXN5bmMgZXhwb3J0c0RhdGEoKSB7CiAgICAgIHRoaXMuc3RlcHNfYWN0aXZlID0gMjsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdvb2RzSW1wb3J0KHRoaXMuZ29vZHNfZGF0YSk7CiAgICAgIHRoaXMuSW1wb3J0X3RoZV9pbmZvcm1hdGlvbiA9IGRhdGE7CiAgICB9LAoKICAgIC8v6YeN5paw5LiK5LygCiAgICBhZ2FpbkV4cG9ydCgpIHsKICAgICAgdGhpcy5zdGVwc19hY3RpdmUgPSAwOwogICAgfSwKCiAgICAvL+imhueblum7mOiupOeahOS4iuS8oOihjOS4uu+8jOWPr+S7peiHquWumuS5ieS4iuS8oOeahOWunueOsAogICAgc3VibWl0VXBsb2FkKHJlcXVlc3QpIHsKICAgICAgY29uc29sZS5sb2coInN1Ym1pdFVwbG9hZCIsIHJlcXVlc3QpOyAvLyB0aGlzLiRyZWZzLnVwbG9hZC5zdWJtaXQoKTsKICAgIH0sCgogICAgLy/kuIrkvKDmlofku7bkuYvliY3nmoTpkqnlrZDvvIzlj4LmlbDkuLrkuIrkvKDnmoTmlofku7bvvIzoi6Xov5Tlm54gZmFsc2Ug5oiW6ICF6L+U5ZueIFByb21pc2Ug5LiU6KKrIHJlamVjdO+8jOWImeWBnOatouS4iuS8oOOAggogICAgYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgY29uc29sZS5sb2coImJlZm9yZVVwbG9hZCIsIGZpbGUpOwogICAgfSwKCiAgICAvL+aWh+S7tuWIl+ihqOenu+mZpOaWh+S7tuaXtueahOmSqeWtkAogICAgb25SZW1vdmUoZmlsZSwgZmlsZUxpc3QpIHsKICAgICAgY29uc29sZS5sb2coIm9uUmVtb3ZlIiwgZmlsZSwgZmlsZUxpc3QpOwogICAgfSwKCiAgICBvbkNoYW5nZShmaWxlKSB7CiAgICAgIGNvbnNvbGUubG9nKCJvbkNoYW5nZSIsIGZpbGUpOwogICAgICB0aGlzLmZpbGVfbmFtZSA9IGZpbGUubmFtZTsKICAgICAgdGhpcy5maWxlID0gZmlsZS5yYXc7CiAgICB9CgogIH0KfTs="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGA;AACA;EACAA,mBADA;;EAEAC;IACA;MACAC,aADA;MAEAC,QAFA;MAGAC,YAHA;MAIAC,cAJA;MAKAC,eALA;MAMAC,cACA;QAAAC;QAAAC;MAAA,CADA,EAEA;QAAAD;QAAAC;MAAA,CAFA,EAGA;QAAAD;QAAAC;MAAA,CAHA,EAIA;QAAAD;QAAAC;MAAA,CAJA,EAKA;QAAAD;QAAAC;MAAA,CALA,EAMA;QAAAD;QAAAC;MAAA,CANA,EAOA;QAAAD;QAAAC;MAAA,CAPA,EAQA;QAAAD;QAAAC;MAAA,CARA,EASA;QAAAD;QAAAC;MAAA,CATA,EAUA;QAAAD;QAAAC;MAAA,CAVA,EAWA;QAAAD;QAAAC;MAAA,CAXA,CANA;MAmBAC;IAnBA;EAqBA,CAxBA;;EAyBAC;IACAC,eADA;;IAEA;IACAC;MACA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CATA;;IAWA;IACAC;MACA;QACA;QACA;MACA,CAJA,CAKA;;;MACA;;MACAC;QACA;QACA;UAAAC;QAAA;QACA;QACA;QACAC,4CALA,CAMA;;QACAC;UACA;YACA;YACAD;YACA;YACAE;cACA;;cACA;gBACAC;cACA;YACA,CALA;YAMAC;UACA;QACA,CAbA;QAcAJ;QACA;MACA,CAvBA;;MAwBAF;MACA;IACA,CA7CA;;IA8CA;IACA;MACA;MACA;QAAAd;MAAA;MACA;IACA,CAnDA;;IAoDA;IACAqB;MACA;IACA,CAvDA;;IAwDA;IACAC;MACAN,qCADA,CAEA;IACA,CA5DA;;IA6DA;IACAO;MACAP;IACA,CAhEA;;IAiEA;IACAQ;MACAR;IACA,CApEA;;IAqEAS;MACAT;MACA;MACA;IACA;;EAzEA;AAzBA","names":["name","data","file_name","file","fileList","goods_data","steps_active","tableColumn","field","title","Import_the_information","methods","lookDetail","closePage","previewData","fileReader","type","console","csvData","vCols","item","tableData","againExport","submitUpload","beforeUpload","onRemove","onChange"],"sourceRoot":"src/views/goods/manageG","sources":["GoodsImport.vue"],"sourcesContent":["<template>\n <ContainerTit class=\"ContainerTit\">\n <div class=\"header\">\n <el-steps align-center :active=\"steps_active\">\n <el-step title=\"商品导入文件\" icon=\"el-icon-upload\"></el-step>\n <el-step title=\"商品导入预览\" icon=\"el-icon-s-order\"></el-step>\n <el-step title=\"商品导入完成\" icon=\"el-icon-s-claim\"></el-step>\n </el-steps>\n </div>\n <!-- 商品导入预览-->\n <div v-if=\"steps_active === 0\">\n <div slot=\"tip\" class=\"page-tip-div\">\n <i class=\"el-icon-info\"></i>\n 温馨提示:\n <span>1、商品名称、一级分类、基本单位、销售价为必填项</span>\n \n <span>2、单位换算规则:例如商品1件=24袋,表格中填写24即可!</span>\n \n <span>\n 3、单位规则,如只按件进行售卖,基本单位填写“件”即可,如大小单位都卖,基本单位填写最小单位,辅助单位填写最大单位!\n </span>\n </div>\n <div class=\"span\">\n <span>\n <a\n href=\"https://upload.qianniao.vip/template/liansuoshangping.xlsx\"\n target=\"_blank\"\n >\n <i class=\"iconfont icon-xiazai-xue\"></i>\n <span>下载模板</span>\n </a>\n </span>\n </div>\n <div class=\"content\">\n <p class=\"title\">\n <i class=\"required\">*</i>\n 商品文件\n </p>\n <div class=\"input-up\">\n <i class=\"iconfont icon-lianjie\"></i>\n <el-upload\n ref=\"upload\"\n action=\"#\"\n accept=\"xlsx,xls\"\n :auto-upload=\"false\"\n :file-list=\"fileList\"\n list-type=\"text\"\n :before-upload=\"beforeUpload\"\n :on-remove=\"onRemove\"\n :on-change=\"onChange\"\n >\n <div\n slot=\"trigger\"\n style=\"width: 360px; padding: 0 10px; text-align: left\"\n >\n <span v-if=\"file_name\">{{ file_name }}</span>\n <span v-else style=\"color: #999999\">选取文件</span>\n </div>\n </el-upload>\n </div>\n </div>\n </div>\n <!-- 商品导入预览-->\n <div v-else-if=\"steps_active === 1\" class=\"steps-two\">\n <vxe-grid\n ref=\"xTable\"\n border=\"inner\"\n :columns=\"tableColumn\"\n :data=\"goods_data\"\n ></vxe-grid>\n </div>\n <div v-else class=\"steps-three\">\n <p class=\"title\">导入情况</p>\n <div class=\"desc\">\n {{ Import_the_information }}\n <!-- <el-button type=\"text\">下载失败数据</el-button>-->\n </div>\n </div>\n <div slot=\"headr\">\n <el-button @click=\"closePage\">\n {{ steps_active === 2 ? \"完成\" : \"取消\" }}\n </el-button>\n <el-button v-if=\"steps_active === 0\" type=\"primary\" @click=\"previewData\">\n 下一步\n </el-button>\n <el-button v-if=\"steps_active === 1\" type=\"primary\" @click=\"exportsData\">\n 确定导入\n </el-button>\n <el-button v-if=\"steps_active === 2\" type=\"primary\" @click=\"againExport\">\n 重新上传\n </el-button>\n </div>\n </ContainerTit>\n</template>\n\n<script>\n import { goodsImport } from \"@/api/goods\";\n export default {\n name: \"GoodsImport\",\n data() {\n return {\n file_name: \"\",\n file: \"\",\n fileList: [],\n goods_data: [],\n steps_active: 0,\n tableColumn: [\n { field: \"goodsName\", title: \"商品名称\" },\n { field: \"describe\", title: \"商品卖点\" },\n { field: \"categoryName\", title: \"一级分类\" },\n { field: \"categoryTwo\", title: \"二级分类\" },\n { field: \"categoryThree\", title: \"三级分类\" },\n { field: \"merchantName\", title: \"商户\" },\n { field: \"skuName\", title: \"基本单位\" },\n { field: \"barCode\", title: \"主单位条码\" },\n { field: \"skuNameTwo\", title: \"辅助单位\" },\n { field: \"barCodeTwo\", title: \"辅单位条码\" },\n { field: \"conversion\", title: \"辅单位换算\" },\n ],\n Import_the_information: \"\",\n };\n },\n methods: {\n lookDetail() {},\n // 取消/完成 按钮\n closePage() {\n if (this.steps_active === 1) {\n this.steps_active = 0;\n } else {\n this.$closeCurrentGoEdit(\"/goods/manageG/BaseDataList\");\n }\n },\n\n // 下一步\n previewData() {\n if (!this.file) {\n this.$message.warning(\"请选择要导入的文件\");\n return;\n }\n // this.$refs.xTable.importData();\n const fileReader = new FileReader();\n fileReader.onload = (ev) => {\n const data = ev.target.result;\n const workbook = this.$XLSX.read(data, { type: \"binary\" });\n const csvData = this.$XLSX.utils.sheet_to_csv(workbook.Sheets.Sheet1);\n const tableData = [];\n console.log(\"csvData\", csvData.split(\"\\n\"));\n // 解析数据\n csvData.split(\"\\n\").forEach((vRow, rindex) => {\n if (vRow && rindex > 0) {\n const vCols = vRow.split(\",\");\n console.log(\"vCols\", vCols);\n const item = {};\n vCols.forEach((val, cIndex) => {\n const column = this.tableColumn[cIndex];\n if (column && column.field) {\n item[column.field] = val;\n }\n });\n tableData.push(item);\n }\n });\n console.log(\"tableData::\", tableData);\n this.goods_data = tableData;\n };\n fileReader.readAsBinaryString(this.file);\n this.steps_active = 1;\n },\n //确定导入\n async exportsData() {\n this.steps_active = 2;\n const { data } = await goodsImport(this.goods_data);\n this.Import_the_information = data;\n },\n //重新上传\n againExport() {\n this.steps_active = 0;\n },\n //覆盖默认的上传行为,可以自定义上传的实现\n submitUpload(request) {\n console.log(\"submitUpload\", request);\n // this.$refs.upload.submit();\n },\n //上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。\n beforeUpload(file) {\n console.log(\"beforeUpload\", file);\n },\n //文件列表移除文件时的钩子\n onRemove(file, fileList) {\n console.log(\"onRemove\", file, fileList);\n },\n onChange(file) {\n console.log(\"onChange\", file);\n this.file_name = file.name;\n this.file = file.raw;\n },\n },\n };\n</script>\n<style scoped lang=\"scss\">\n .ContainerTit {\n background-color: #ffffff;\n }\n\n .span {\n border-radius: 5px;\n height: 15px;\n padding: 0 20px 20px;\n width: 98%;\n margin: 20px auto;\n .icon-xiazai-xue {\n font-size: 16px;\n margin-right: 4px;\n }\n }\n .header {\n margin: 40px auto 20px;\n width: 60%;\n }\n .content {\n width: 98%;\n margin: 20px auto;\n padding: 24px 20px;\n border-radius: 4px 4px 0 0;\n background-color: #f5f7fc;\n .title {\n padding-bottom: 20px;\n .required {\n color: #ff4400;\n }\n }\n .input-up {\n width: 360px;\n text-align: left;\n height: 32px;\n line-height: 32px;\n border-radius: 4px;\n background-color: #fff;\n border: 1px solid #d5dae0 !important;\n position: relative;\n overflow: hidden;\n .icon-lianjie {\n position: absolute;\n top: 50%;\n right: 20px;\n color: #768696;\n transform: translateY(-50%);\n display: block;\n }\n }\n }\n .steps-three {\n margin-top: 90px;\n text-align: center;\n .title {\n color: #333;\n font-size: 24px;\n }\n .desc {\n color: #333;\n font-size: 14px;\n margin: 18px 0 60px;\n }\n }\n</style>\n"]}]}
|