1 |
- {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/account/locomotiveMsg/index.vue?vue&type=style&index=0&id=6317df7a&lang=scss&scoped=true","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/account/locomotiveMsg/index.vue","mtime":1708395041886},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/css-loader/dist/cjs.js","mtime":1708395146948},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":1708395147772},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/postcss-loader/src/index.js","mtime":1708395147225},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/sass-loader/dist/cjs.js","mtime":1708395146389},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgouZGFzaGJvYXJkIHsKICAmLWNvbnRhaW5lciB7CiAgICBtYXJnaW46IDMwcHg7CiAgfQoKICAmLXRleHQgewogICAgZm9udC1zaXplOiAzMHB4OwogICAgbGluZS1oZWlnaHQ6IDQ2cHg7CiAgfQp9CgouZGFzaGJvYXJkLWNvbnRhaW5lciB7CiAgLnNlYXJjaC1jb250ZW50IHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiA3NHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZy1sZWZ0OiAxMHB4OwoKICAgIC5lbC1pbnB1dCB7CiAgICAgIG1hcmdpbjogMCAxMHB4OwogICAgfQoKICAgIC5lbC1zZWxlY3QgewogICAgICBtYXJnaW46IDAgMTBweDsKICAgIH0KCiAgICAuc2VhcmNoLWJ0biB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CgogICAgICBkaXYgewogICAgICAgIC8vIG1hcmdpbjogMCA2cHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQoKICAgICAgZGl2OmhvdmVyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5zZWFyY2ggewogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjc2NkREOwogICAgICAgIGNvbG9yOiAjRjdGOEZCOwogICAgICB9CgogICAgICAuc2VhcmNoOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEQ4NUY0OwogICAgICB9CgogICAgICAucmVzZXQgewogICAgICAgIGNvbG9yOiAjMzMzMzM0OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEN0Q3RDc7CiAgICAgIH0KCiAgICAgIC5yZXNldDpob3ZlciB7CiAgICAgICAgY29sb3I6ICMxRjlGRkY7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzFGOUZGRjsKICAgICAgfQogICAgfQogIH0KCiAgLnRhYmxlLWNvbnRlbnQgewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHdpZHRoOiAxMDAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIHBhZGRpbmc6IDAgMjBweCAyMHB4OwoKICAgIC5idG4gewogICAgICBtYXJnaW46IDE1cHggMjBweCAxNXB4IDA7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgd2lkdGg6IDk4cHg7CiAgICAgIGhlaWdodDogMzRweDsKICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjQUJDN0ZEOwogICAgICBsaW5lLWhlaWdodDogMzRweDsKICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogIzIyNTBDODsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0U3RUVGRjsKICAgIH0KCiAgICAuYnRuOmhvdmVyIHsKICAgICAgY29sb3I6ICNGRkZGRkY7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjUwQzg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyMjUwQzg7CiAgICB9CgogICAgLmJ0bjphY3RpdmUgewogICAgICBjb2xvcjogI0ZGRkZGRjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE5NERBNDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgIzE5NERBNDsKICAgIH0KCiAgICAuc3RhcnRVc2luZyB7CiAgICAgIHdpZHRoOiA2MHB4OwogICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgIG1hcmdpbjogMTQuNXB4IGF1dG8gMDsKICAgICAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICBjb2xvcjogI2ZmZjsKICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NzRCOwogICAgfQoKICAgIC5EZWFjdGl2YXRlIHsKICAgICAgd2lkdGg6IDYwcHg7CiAgICAgIGhlaWdodDogMjVweDsKICAgICAgbWFyZ2luOiAxNC41cHggYXV0byAwOwogICAgICBsaW5lLWhlaWdodDogMjVweDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk5MzM7CiAgICB9CgogICAgLm9wZXJhdGVCdG4gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgY29sb3I6ICMyODY2REQ7CgogICAgICBkaXYgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgfQoKICAgIC5wYWdpbmF0aW9uIHsKICAgICAgbWFyZ2luOiAxMHB4IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDIwcHg7CgogICAgICAuZWwtcGFnaW5hdGlvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1hcmdpbjogMTBweCAwOwogICAgICB9CiAgICB9CiAgfQp9CgouaHhqIHsKICBoZWlnaHQ6IDQ2cHg7CiAgbGluZS1oZWlnaHQ6IDQ2cHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgoueHptYmEgewogIGNvbG9yOiAjMjc2NmRkOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLm9wZXJhdGVCdG4gewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgY29sb3I6ICMyODY2REQ7CgogIGRpdiB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBtYXJnaW46IDAgNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KfQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+dA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/account/locomotiveMsg","sourcesContent":["<template>\n <div class=\"dashboard-container\">\n <div class=\"search-content\">\n <!-- <el-input v-model=\"queryParams.vehicleName\" placeholder=\"请输入机车名称\" style=\"width: 220px;\" clearable /> -->\n <el-input v-model=\"queryParams.vehicleCode\" placeholder=\"请输入机车号\" style=\"width: 220px;\" clearable />\n <div class=\"search-btn\">\n <div class=\"search\" @click=\"handleQuery\">查询</div>\n <div class=\"reset\" @click=\"reset\">重置</div>\n </div>\n </div>\n\n <div class=\"table-content\">\n <div style=\"width: 100%;height: 30px;\">\n <div class=\"btn\" @click=\"addVehicle\">\n <span class=\"icon font_family\"></span>\n 新增\n </div>\n <div class=\"btn\" @click=\"batchDelVehicle\">\n <span class=\"icon font_family\"></span>\n 批量删除\n </div>\n <div class=\"btn\" @click=\"importLoadIn\">\n <span class=\"icon font_family\"></span>\n 导入\n </div>\n <div class=\"btn\" @click=\"exportBaseVehicle\">\n <span class=\"icon font_family\"></span>\n 导出\n </div>\n <div class=\"btn\" @click=\"downloaExcel\">\n <span class=\"icon font_family\"></span>\n 下载模板\n </div>\n </div>\n <el-table :data=\"tableData\" style=\"width: 100%\" @selection-change=\"handleSelectionChange\">\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"vehicleCode\" label=\"机车号\" align=\"center\" />\n <!-- <el-table-column prop=\"vehicleName\" label=\"机车名称\" align=\"center\" /> -->\n <el-table-column prop=\"terminalName\" label=\"车载终端\" align=\"center\" />\n <el-table-column prop=\"remark\" label=\"备注\" align=\"center\" />\n <el-table-column prop=\"createTime\" label=\"创建时间\" align=\"center\" width=\"170px;\" />\n <el-table-column prop=\"updateTime\" label=\"更新时间\" align=\"center\" width=\"170px;\" />\n <el-table-column label=\"操作\" align=\"center\" width=\"250px;\">\n <template slot-scope=\"scope\">\n <div class=\"operateBtn\">\n <div type=\"text\" @click=\"openList(scope.row)\">车载终端挂载</div>\n <div type=\"text\" @click=\"updateVehicle(scope.row)\">修改</div>\n <div type=\"text\" @click=\"delVehicle(scope.row)\"><span>删除</span></div>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"pagination\">\n <el-pagination :page-sizes=\"[10, 15, 20]\" layout=\"total, sizes, prev, pager, next, jumper\" :total=\"total\"\n @size-change=\"handleSizeChange\" @current-change=\"handleCurrentChange\" />\n </div>\n </div>\n <addVehicleDialog v-if=\"addVehicleData.dialogVisible\" :addVehicleData=\"addVehicleData\" @addVehicleBtn=\"addVehicleBtn\"></addVehicleDialog>\n <updateVehicleDialog v-if=\"updateVehicleData.dialogVisible\" :updateVehicleData=\"updateVehicleData\"\n @updateVehicleBtn=\"updateVehicleBtn\">\n </updateVehicleDialog>\n <mountVehicleList @mountSave=\"mountSaveBtn\" :mountListData=\"mountListData\" v-if=\"mountListData.dialogVisible\">\n </mountVehicleList>\n <el-dialog center :visible.sync=\"uploadDialog\" title=\"机车信息导入\" width=\"620px\">\n <el-upload style=\"text-align: center\" ref=\"uploadFile\" class=\"upload-demo\" drag action=\"#\"\n :http-request=\"uploadHttpRequest\" :auto-upload=\"false\" :file-list=\"fileList\" :on-change=\"uploadFileList\">\n <i class=\"el-icon-upload\" />\n <div class=\"el-upload__text\">将文件拖到此处,或<em>点击上传</em></div>\n <!-- <div class=\"el-upload__tip\">只能上传xls/xlsx文件,且不超过500kb</div> -->\n </el-upload>\n <div class=\"hxj\">支持扩展名:.xlsx</div>\n <div class=\"hxj\">请先下载模板,根据模板内容填写,再上传文件 <span class=\"xzmba\" @click=\"downloaExcel\">下载模板</span> </div>\n <div slot=\"footer\" class=\"dialog-footer\">\n <div class=\"search\" @click=\"httpRequest\">保 存</div>\n <div class=\"reset\" @click=\"uploadDialog = false\">取 消</div>\n </div>\n\n </el-dialog>\n </div>\n</template>\n \n<script>\nimport { getToken } from '@/utils/auth'\nimport { mapGetters } from 'vuex'\nimport {\n getLocomotiveList,\n exportBaseVehicle,\n downloaExcel,\n vehicleDelete,\n importVehicle,\n addVehicle,\n vehicleUpdate,\n vehicleTerminalAdd,\n vehicleTerminalUnmount\n} from '@/api/account/locomotiveMsg'\nimport addVehicleDialog from './components/addVehicleDialog.vue'\nimport updateVehicleDialog from './components/updateVehicleDialog.vue'\nimport mountVehicleList from './components/mountVehicleList.vue'\nexport default {\n name: 'Cart',\n computed: {\n ...mapGetters(['name'])\n },\n components: {\n addVehicleDialog,\n updateVehicleDialog,\n mountVehicleList\n },\n data() {\n return {\n uploadDialog: false,\n fileList: [],\n addVehicleData: {\n dialogVisible: false\n },\n updateVehicleData: {\n dialogVisible: false,\n data: {}\n },\n queryParams: {\n pageNum: 1,\n pageSize: 10,\n vehicleName: '',\n vehicleCode: ''\n },\n tableData: [],\n total: 0,\n action: '#',\n delVehicleList: '',\n mountListData: {\n dialogVisible: false,\n vehicleCode: ''\n },\n exportData: {\n ids: []\n }\n }\n },\n created() {\n this.getLocomotiveList(this.queryParams)\n },\n methods: {\n mountSaveBtn(payload) {\n let params = {\n vehicleCode: payload.vehicleCode,\n terminalCode: payload.terminalCode\n }\n if (!payload.isMount) {\n vehicleTerminalAdd(params).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '挂载成功!'\n });\n this.getLocomotiveList(this.queryParams)\n this.mountListData.dialogVisible = false\n }\n })\n } else {\n if (params.terminalCode == '') {\n this.$confirm('确定要解绑吗?', '信息提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n vehicleTerminalUnmount({\n vehicleCode: payload.vehicleCode\n }).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '解绑成功!'\n });\n this.getLocomotiveList(this.queryParams)\n this.mountListData.dialogVisible = false\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n }).catch(() => {\n this.$message({\n type: 'info',\n message: '已取消'\n });\n });\n } else {\n this.$confirm(`确定要将终端更改为${params.terminalCode}吗?`, '信息提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n vehicleTerminalAdd(params).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '更换成功!'\n });\n this.getLocomotiveList(this.queryParams)\n this.mountListData.dialogVisible = false\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n }).catch(() => {\n this.$message({\n type: 'info',\n message: '已取消'\n });\n });\n }\n\n }\n },\n getLocomotiveList(params) {\n getLocomotiveList(params).then(res => {\n if (res.code == 200) {\n this.tableData = res.data.records\n this.total = res.data.total\n }\n })\n },\n handleSizeChange(val) {\n this.queryParams.pageSize = val\n this.getLocomotiveList(this.queryParams)\n },\n handleCurrentChange(val) {\n this.queryParams.pageNum = val\n this.getLocomotiveList(this.queryParams)\n },\n handleQuery() {\n this.getLocomotiveList(this.queryParams)\n },\n reset() {\n this.queryParams = {\n pageNum: 1,\n pageSize: 10,\n vehicleName: '',\n vehicleCode: ''\n }\n this.getLocomotiveList(this.queryParams)\n },\n //导出信息\n exportBaseVehicle() {\n if (this.exportData.ids.length == 0) {\n return this.$message({\n type: 'error',\n message: '请选择要导出的机车信息!'\n });\n } else {\n exportBaseVehicle(this.exportData).then(res => {\n // const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\n // const url = window.URL.createObjectURL(blob);\n // const a = document.createElement('a');\n // a.href = url;\n // a.download = '机车信息管理.xls';\n // a.click();\n // window.URL.revokeObjectURL(url);\n\n\n if (res.type == \"application/json\") {\n const reader = new FileReader(); \n reader.readAsText(res, 'utf-8'); \n reader.onload = function () {\n const msg = JSON.parse(reader.result);\n if(msg.code == 200){\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = '机车信息管理.xls';\n a.click();\n window.URL.revokeObjectURL(url);\n } else{\n Message({\n type: 'error',\n message: msg.msg\n });\n } \n }\n }else{\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = '机车信息管理.xls';\n a.click();\n window.URL.revokeObjectURL(url);\n }\n\n\n\n })\n }\n },\n downloaExcel() {\n downloaExcel('/baseVehicle/downloaExcel').then(res => {\n const blob = new Blob([res], { type: 'text/plain;charset=utf-8' });\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = '机车信息模板.xls';\n a.click();\n window.URL.revokeObjectURL(url);\n })\n },\n delVehicle(scope) {\n this.$confirm('确定要删除吗?', '信息提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n vehicleDelete(scope.id).then(res => {\n if (res.code == 200) {\n this.getLocomotiveList(this.queryParams)\n this.$message({\n type: 'success',\n message: '删除成功!'\n });\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n }).catch(() => {\n this.$message({\n type: 'info',\n message: '已取消删除'\n });\n });\n },\n handleSelectionChange(v) {\n this.exportData.ids = []\n let delVehicleList = ''\n v.forEach(element => {\n delVehicleList += element.id + ','\n this.exportData.ids.push(element.id)\n });\n delVehicleList = delVehicleList.slice(0, delVehicleList.length - 1)\n this.delVehicleList = delVehicleList\n },\n batchDelVehicle() {\n if (this.delVehicleList.length == 0) {\n return this.$message({\n type: 'error',\n message: '请选择要删除的机车信息!'\n });\n }\n this.$confirm('确定要删除吗?', '信息提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n vehicleDelete(this.delVehicleList).then(res => {\n if (res.code == 200) {\n this.getLocomotiveList(this.queryParams)\n this.$message({\n type: 'success',\n message: '删除成功!'\n });\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n }).catch(() => {\n this.$message({\n type: 'info',\n message: '已取消删除'\n });\n });\n },\n importLoadIn: function () {\n this.uploadDialog = true\n },\n uploadFileList(file) {\n if (file.status === 'ready') {\n this.fileList.push(file)\n if (this.fileList.length > 1) {\n this.fileList.splice(0, 1)\n }\n }\n },\n // 导入\n httpRequest(param) {\n let formData = new FormData();\n // formData.append('file', this.dataForm.file.raw);\n formData.append('file', this.fileList[0].raw)\n let configHeaders = {\n headers: { \"Content-Type\": \"multipart/form-data\" }\n };\n importVehicle(formData).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '导入成功!'\n });\n let uid = this.fileList[0].raw.uid\n let idx = this.$refs.uploadFile.uploadFiles.findIndex(item => item.uid === uid)\n this.$refs.uploadFile.uploadFiles.splice(idx, 1)\n this.getLocomotiveList(this.queryParams)\n this.uploadDialog = false\n } else {\n let uid = this.fileList[0].raw.uid\n let idx = this.$refs.uploadFile.uploadFiles.findIndex(item => item.uid === uid)\n this.$refs.uploadFile.uploadFiles.splice(idx, 1)\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n },\n addVehicle() {\n this.addVehicleData.dialogVisible = true\n },\n updateVehicle(row) {\n let newRow = { ...row }\n this.updateVehicleData.data = newRow\n this.updateVehicleData.dialogVisible = true\n },\n addVehicleBtn(payload) {\n addVehicle(payload).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '新增成功!'\n });\n this.getLocomotiveList(this.queryParams)\n this.addVehicleData.dialogVisible = false\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n },\n updateVehicleBtn(payload) {\n let params = {\n id: payload.data.id,\n vehicleCode: payload.data.vehicleCode,\n vehicleName: payload.data.vehicleName,\n remark: payload.data.remark\n }\n vehicleUpdate(params).then(res => {\n if (res.code == 200) {\n this.$message({\n type: 'success',\n message: '修改成功!'\n });\n this.getLocomotiveList(this.queryParams)\n this.updateVehicleData.dialogVisible = false\n } else {\n this.$message({\n type: 'error',\n message: res.msg\n });\n }\n })\n },\n openList(row) {\n this.mountListData.dialogVisible = true,\n this.mountListData.vehicleCode = row.vehicleCode\n }\n }\n}\n</script>\n \n<style lang=\"scss\" scoped>\n.dashboard {\n &-container {\n margin: 30px;\n }\n\n &-text {\n font-size: 30px;\n line-height: 46px;\n }\n}\n\n.dashboard-container {\n .search-content {\n width: 100%;\n height: 74px;\n background-color: #fff;\n display: flex;\n align-items: center;\n padding-left: 10px;\n\n .el-input {\n margin: 0 10px;\n }\n\n .el-select {\n margin: 0 10px;\n }\n\n .search-btn {\n display: flex;\n align-items: center;\n height: 100%;\n margin-left: 10px;\n\n div {\n // margin: 0 6px;\n display: inline-block;\n width: 80px;\n height: 40px;\n border-radius: 2px;\n font-size: 14px;\n line-height: 40px;\n text-align: center;\n }\n\n div:hover {\n cursor: pointer;\n }\n\n .search {\n margin-right: 10px;\n background-color: #2766DD;\n color: #F7F8FB;\n }\n\n .search:hover {\n background-color: #4D85F4;\n }\n\n .reset {\n color: #333334;\n border: 1px solid #D7D7D7;\n }\n\n .reset:hover {\n color: #1F9FFF;\n border: 1px solid #1F9FFF;\n }\n }\n }\n\n .table-content {\n margin-top: 15px;\n width: 100%;\n background-color: #fff;\n padding: 0 20px 20px;\n\n .btn {\n margin: 15px 20px 15px 0;\n cursor: pointer;\n float: left;\n text-align: center;\n width: 98px;\n height: 34px;\n border-radius: 2px;\n border: 1px solid #ABC7FD;\n line-height: 34px;\n font-weight: 400;\n font-size: 14px;\n color: #2250C8;\n background-color: #E7EEFF;\n }\n\n .btn:hover {\n color: #FFFFFF;\n background-color: #2250C8;\n border: 1px solid #2250C8;\n }\n\n .btn:active {\n color: #FFFFFF;\n background-color: #194DA4;\n border: 1px solid #194DA4;\n }\n\n .startUsing {\n width: 60px;\n height: 25px;\n margin: 14.5px auto 0;\n line-height: 25px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n border-radius: 5px;\n background-color: #00974B;\n }\n\n .Deactivate {\n width: 60px;\n height: 25px;\n margin: 14.5px auto 0;\n line-height: 25px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n border-radius: 5px;\n background-color: #FF9933;\n }\n\n .operateBtn {\n display: flex;\n justify-content: center;\n color: #2866DD;\n\n div {\n font-size: 14px;\n margin: 0 5px;\n cursor: pointer;\n }\n }\n\n .pagination {\n margin: 10px 0;\n width: 100%;\n height: 20px;\n\n .el-pagination {\n float: right;\n margin: 10px 0;\n }\n }\n }\n}\n\n.hxj {\n height: 46px;\n line-height: 46px;\n text-align: center;\n}\n\n.xzmba {\n color: #2766dd;\n text-decoration: underline;\n cursor: pointer;\n}\n\n.operateBtn {\n display: flex;\n justify-content: center;\n color: #2866DD;\n\n div {\n font-size: 16px;\n margin: 0 5px;\n cursor: pointer;\n }\n}\n</style>\n "]}]}
|