import { PrintServices, postImportDown, postImport, fileStorage, fileStorageCreate } from '@/api/wms-api' export const mixins = { data() { return { //Dialog标题 formTitle: "", editOptions: { options: [], //autoComplete显示数据|| select显示数据(拉取) // whetherOrNot: this.$staticOptions.WhetherOrNot(), // openToClose: this.$staticOptions.OpenToClose(), // week: this.$staticOptions.Week(), // inspectType: this.$staticOptions.InspectType(), // whetherOrNot: this.$staticOptions.WhetherOrNot(), // storeRelationType: this.$staticOptions.storeRelationType(), // QtyUom: this.$staticOptions.QtyUom(), }, //表头 从本地缓存获取字段设置,如果没有,从js中获取 todo:优化数据 tableColumns: this.initTableColumns(), //明细表头数据 detailsTableColumns: this.$isDetailsTableColumns[this.$route.name], //明细表头数据——汇总 summaryTableColumns: this.$isSummaryTableColumns[this.$route.name], //详情数据 tabsDesTions: this.$isTabsDesTions[this.$route.name], // 主表查询-快速搜索数据配置 quicklySearchOption: this.$isQuicklySearchOption[this.$route.name], // 主表查询-初级搜索数据配置 primarySearchOption: this.$isPrimarySearchOption[this.$route.name], //当前操作 theEvent: "", editHandle: [{ label: "取消", name: "cancel" }, { label: "确定", type: "primary", name: "determine" }, ], } }, methods: { // 结合默认及缓存中的列表tableColumns数据做初始化 initTableColumns(){ let _list_defalut = this.$isTableColumns[this.$route.name] if(!_list_defalut)return let _local = localStorage.getItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name) let _list_local = JSON.parse(localStorage.getItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name)) let _new_list = [] //格式化后的数据 // 如果没有缓存则直接为默认值 if(!_local){ _list_defalut.forEach((defalutItem,index) => { defalutItem.istrue = true _new_list.push(defalutItem) }) } // 如果有缓存:默认中已经删除掉的,本地中缓存中也不显示,新增字段,缓存中也显示(默认为眼睛关闭) else{ // 先处理缓存数据,设置索引 let _locals = {} _list_local.forEach((localItem,index) => { localItem.itemIndex = index if(localItem.showProp && typeof localItem.showProp == 'string'){ _locals[localItem.showProp] = localItem }else{ _locals[localItem.prop] = localItem } }) // 将缓存与默认设置合并,索引同步 let _number = 0 _list_defalut.forEach((defalutItem) => { if(_locals[defalutItem.showProp]){ defalutItem.istrue = _locals[defalutItem.showProp].istrue defalutItem.itemIndex = _locals[defalutItem.showProp].itemIndex }else if(_locals[defalutItem.prop]){ defalutItem.istrue = _locals[defalutItem.prop].istrue defalutItem.itemIndex = _locals[defalutItem.prop].itemIndex }else{ defalutItem.istrue = false defalutItem.itemIndex = _number } _number ++ _new_list.push(defalutItem) }) // 按索引排序 function compare(property) { return function (a, b) { var value1 = a[property]; var value2 = b[property]; return value1 - value2; } } _new_list.sort(compare("itemIndex")) } return _new_list }, //添加子表 openAddNew() { let data = JSON.parse(JSON.stringify(...this.childTableData)) if (data.number != undefined) { //判断是否有number字段 data.number = this.CreateFormData.number } if (this.formReveal) { this.CreateFormData.details.push(data) } else { // data.poLine = Number(this.editFormData.details[this.editFormData.details.length - 1].poLine) + 1 this.editFormData.details.push(data) } // this.displayDialog.AddNewDialog = true }, //子表操作 childTable(e, val) { let UrlData = { detailId: val.row.id } switch (e.target.innerHTML) { case "删除": this.$confirm('您确定删除吗, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { if (this.formReveal) { this.CreateFormData.details.splice(val.$index, 1) } else { // postDetailDelete(this.propsData.id, UrlData, this.URL).then(res => { // this.editFormData.details.splice(val.$index, 1) // }) this.editFormData.details.splice(val.$index, 1) } }).catch(() => { }); break; case "确定": postDetailUpdate(val.row, this.propsData.id, UrlData, this.URL).then(res => {}) } }, //步骤新增OR编辑结束退出 stepsClose(val) { // this.FormRemove(val[0]); this.CreateFormData = val[0] if (val[1] == 1) { this.oldSkipCount = 1; this.paging(); } this.displayDialog.newDialog = false; }, //步骤新增OR编辑第一步 stepsHandelOne() { return new Promise((resolve, reject) => { resolve() }) }, //打印标签 Print(val) { let that = this if(!val){ that.$warningMsg('暂无可打印数据') return } const loading = this.$loading({ lock: true, text: 'Loading', }); return new Promise((resolve, reject) => { PrintServices(val).then(res => { // console.log(process.env.VUE_APP_PRINT_API + '/' + res) // window.open(process.env.VUE_APP_PRINT_API + '/' + res) // window.open('http://10.74.150.81:9082' + '/' + res) //杭州 // const BaseURL = localStorage.getItem('base') + '/' + res // window.open(BaseURL) const PrintURL = localStorage.getItem('print') + '/' + res window.open(PrintURL) loading.close() resolve() }).catch(err => { loading.close() reject() }) }) }, //导出存储-新 blob(res, fileName) { let blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8', }) const href = URL.createObjectURL(blob) //创建新的URL表示指定的blob对象 const a = document.createElement('a') //创建a标签 a.style.display = 'none' a.href = href // 指定下载链接 a.download = fileName //指定下载文件名 a.click() //触发下载 URL.revokeObjectURL(a.href) //释放URL对象 }, //导入文件-新 postImportMergeClick(val) { let that = this let menuName = this.$route.meta.title if (val[0][0] == 0) { that.FormRemove(val[0]); that.displayDialog.importDialog = false; } else { val[0][1].validate((valid) => { if (valid) { that.Loading.importLoading = true; let { formFile } = val[1] // 特殊导入接口判断 let _uploadURL = that.importUploadURL || that.URL let _isSpecial = that.importUploadURL ? true : false let fd = new FormData(); fd.append("fileType", 1) //文件类型 固定1 let methodVal = '' if (val[1].method == '0') { methodVal = 'Update' } else if (val[1].method == '1') { methodVal = 'Append' } else if (val[1].method == '2') { methodVal = 'Replace' } fd.append("method", methodVal) //导入方式 0 更新 1 追加 2 覆盖 fd.append("isAllowPartImport", val[1].isAllowPartImport=='0'?true:false) //是否部分错误导入 fd.append("route", _isSpecial ? _uploadURL : _uploadURL + '/import') //路由 fd.append("function", menuName) //菜单名 fd.append("blobName", menuName) fd.append("file", formFile[0]) postImport(fd, _uploadURL, _isSpecial).then(res => { const headers = JSON.parse(res.headers) // 判断是否有错误记录 if (headers.result.ErrorNum > 0) { that.$alert('发现导入错误数据共:' + headers.result.ErrorNum + '条', '错误报告', { confirmButtonText: '下载错误报告', callback: action => { if (action == 'confirm') { that.blob(res, menuName + '错误报告') } } }) } else if (headers.result.ExceptionMessage != null) { that.$alert('错误信息:' + headers.result.ExceptionMessage, '错误', { confirmButtonText: '确定', callback: action => { } }) } else { that.$alert('全部导入成功,是否下载导入报告', '导入报告', { confirmButtonText: '下载导入报告', cancelButtonText: '取消', callback: action => { if (action == 'confirm') { that.blob(res, menuName + '导入报告') } } }) } that.Loading.importLoading = false that.FormRemove(val[0]); that.displayDialog.importDialog = false; that.paging() }).catch(err => { that.$errorMsg('导入过程中发生错误!请联系管理员!') that.Loading.importLoading = false that.FormRemove(val[0]); that.displayDialog.importDialog = false; that.paging() }) } else { that.$errorMsg('请按照提示继续操作') that.displayDialog.importDialog = false; return false; } }); } }, // downloadFile(data, fileName) { // var byteString = atob(data) // var arrayBuffer = new ArrayBuffer(byteString.length) // 创建缓冲数组 // var intArray = new Uint8Array(arrayBuffer) // 创建视图 // for (var i = 0; i < byteString.length; i++) { // intArray[i] = byteString.charCodeAt(i) // } // const blob = new Blob([intArray], { type: '' }) // // 获取heads中的filename文件名 // const downloadElement = document.createElement('a') // // 创建下载的链接 // const href = window.URL.createObjectURL(blob) // downloadElement.href = href // // 下载后文件名 // downloadElement.download = fileName // document.body.appendChild(downloadElement) // // 点击下载 // downloadElement.click() // // 下载完成移除元素 // document.body.removeChild(downloadElement) // // 释放掉blob对象 // window.URL.revokeObjectURL(href) // }, //导入文件-旧 // postImportMergeClick(val) { // let that = this // let menuName = this.$route.meta.title // if (val[0][0] == 0) { // that.FormRemove(val[0]); // that.displayDialog.importDialog = false; // } else { // val[0][1].validate((valid) => { // if (valid) { // that.Loading.importLoading = true; // let { // formFile // } = val[1] // let fd = new FormData(); // let fileName = '' // let rd = new FileReader(); // 创建文件读取对象 // // formFile.forEach((item) => { // // fd.append("formFile", item) // // fd.append("method", val[1].method) // // fd.append("isAllowPartImport", val[1].isAllowPartImport=='0'?true:false) // // }) // // 目前只有单文件上传,写法只适用于单文件上传 // fileName = formFile[0].name // rd.readAsDataURL(formFile[0]) // rd.onloadend = function(){ // var arrayBuffer = rd.result // let params = { // fileName: fileName, // bytes: arrayBuffer.substring(arrayBuffer.indexOf(',') + 1, arrayBuffer.length) // } // // 特殊导入接口判断 // let _uploadURL = that.importUploadURL || that.URL // let _isSpecial = that.importUploadURL ? true : false // fileStorageCreate(params).then( createRes => { // let importParams = { // fileType: 1, //文件类型 固定1 // method: val[1].method, //导入方式 0 更新 1 追加 2 覆盖 // isAllowPartImport: val[1].isAllowPartImport=='0'?true:false, //是否部分错误导入 // route: _isSpecial ? _uploadURL : _uploadURL + '/import', //路由 // function: menuName, //菜单名 // blobName: createRes, // company: window.SITE_CONFIG['company'] // } // postImport(importParams, _uploadURL, _isSpecial).then(res => { // // 判断是否有错误记录 // if (res.errorNum > 0) { // that.$alert('发现导入错误数据共:' + res.errorNum + '条', '错误报告', { // confirmButtonText: '下载错误报告', // callback: action => { // if (action == 'confirm') { // fileStorage({blobName: res.fileCode}).then( fileStorageRes => { // that.downloadFile(fileStorageRes.bytes, fileStorageRes.fileName) // }).catch( err => { // console.log(err) // }) // } // } // }) // } else if (res.exceptionMessage != null) { // that.$alert('错误信息:' + res.exceptionMessage, '错误', { // confirmButtonText: '确定', // callback: action => { // } // }) // // that.$alert('导入模板错误,请导入正确的模板文件!', '模板错误', { // // confirmButtonText: '确定', // // callback: action => { // // } // // }) // } else { // // that.$successMsg('全部导入成功') // that.$alert('全部导入成功,是否下载导入报告', '导入报告', { // confirmButtonText: '下载导入报告', // cancelButtonText: '取消', // callback: action => { // if (action == 'confirm') { // fileStorage({blobName: res.fileCode}).then( fileStorageRes => { // that.downloadFile(fileStorageRes.bytes, fileStorageRes.fileName) // }).catch( err => { // console.log(err) // }) // } // } // }) // } // that.Loading.importLoading = false // that.FormRemove(val[0]); // that.displayDialog.importDialog = false; // that.paging() // }).catch(err => { // that.Loading.importLoading = false // that.FormRemove(val[0]); // that.displayDialog.importDialog = false; // that.paging() // }) // }).catch(err => { // console.log(err) // }) // } // } else { // that.$errorMsg('请按照提示继续操作') // that.displayDialog.importDialog = false; // return false; // } // }); // } // }, //导入模板下载 importDown(url) { let _url = url ? url : this.URL postImportDown(_url).then(res => { let menuName = this.$route.meta.title this.blob(res,menuName + '导入模板') }) }, //重置表单 FormRemove(val) { val[1].resetFields(); }, } }