diff --git a/src/api/ecss/ecss.js b/src/api/ecss/ecss.js
index 7177bdb..4e5887d 100644
--- a/src/api/ecss/ecss.js
+++ b/src/api/ecss/ecss.js
@@ -103,4 +103,6 @@ export const saveWalMartOrderByExcel = data => createAPI(`/ecss/coDel/saveWalMar
export const getPropertiesListByDeclaration = data => createAPI(`/ecss/coDel/getPropertiesListByDeclaration`,'post',data)
+export const queryPartListAll = data => createAPI(`/ecss/coDel/queryPartListAll`,'post',data)
+
diff --git a/src/utils/ajax.js b/src/utils/ajax.js
index 81bc39a..da4c246 100644
--- a/src/utils/ajax.js
+++ b/src/utils/ajax.js
@@ -1,8 +1,40 @@
import Vue from "vue";
-
+import axios from 'axios';
+const qs = require('qs');
var apiServer = (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl);
-
+var http = axios.create({
+ timeout: 10000,
+ headers: {},
+ transformRequest: data => {
+ if (typeof data === 'object') {
+ return qs.stringify(data, { arrayFormat: 'brackets' });
+ }
+ return data;
+ }
+});
export default {
+ axios: http,
+ $post(url, data, callback, error) {
+ // 添加 headers 配置项
+ const config = {
+ headers: {
+ 'Content-Type': 'application/json;charset=UTF-8',
+ 'token': Vue.cookie.get('token')
+ }
+ };
+ let p = http.post(apiServer +url, JSON.stringify(data), config);
+ if (callback) {
+ p.then(res => {
+ callback(res);
+ })
+ }
+ if (error) {
+ p.catch(err => {
+ error(err);
+ });
+ }
+ return p;
+ },
file:(url, data, succ, err )=>{
let requestUrl = apiServer + url;
var xhr = new XMLHttpRequest();
diff --git a/src/utils/excel-util.js b/src/utils/excel-util.js
new file mode 100644
index 0000000..a3ca248
--- /dev/null
+++ b/src/utils/excel-util.js
@@ -0,0 +1,156 @@
+import XLSX from "xlsx";
+import ajax from '@/utils/ajax'
+import {
+ Message
+} from 'element-ui';
+const excelHeaderName = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+/**
+ * excel导出默认选项
+ */
+const exportOptionDefault = {
+ url: "",//*必填,导出请求地址
+ tableRef: undefined,//#1组合必填 导出数据对应列信息,el-table引用
+ columnMapping: undefined,//#1组合必填 自定义导出列映射
+ fileName: "export.xlsx",//导出文件名
+ params: {},//导出请求参数
+ rowFetcher: res => {//从请求结果中获取导出行的方式,默认取请求结果中的data作为导出数据
+ return (res || {data: []}).data;
+ },
+ columnFormatter: [],//需要格式化的列
+ mergeSetting: {
+ refs: [], //检测需要合并的数据列属性名
+ columns: [] //检测需要合并后,要合并的列,以第一条数据为准合并
+ }
+};
+let HEADERS = [];
+for (let i =0;i< 200;i++) {
+ let c = parseInt(i / 26);
+ let m = i % 26;
+ HEADERS.push((c > 0 ? excelHeaderName[c - 1] : "") + excelHeaderName[m]);
+}
+let validOption = opt => {
+ let option = Object.assign({}, opt);
+ if (!option.url) {
+ throw new Error("request url is required.");
+ }
+ if (!option.tableRef && !option.columnMapping) {
+ throw new Error("element table ref object or columnMapping is required.");
+ }
+ if (option.rowFetcher != undefined && typeof option.rowFetcher != "function") {
+ throw new Error("rowFetcher must be a function with one param.");
+ }
+}
+
+let getMergeSetting = (data, s, allCols) => {
+ let refCols = s.refs;
+ let mcols = s.columns;
+ let mergeList = [];
+
+ let refRow = data[0];
+ let mergeSetting = {
+ s: 0,
+ e: 0
+ };
+ for (let i = 0; i < data.length; i++) {
+ let same = refCols.map(c => data[i][c] === refRow[c]).filter(r => !!r).length == refCols.length;
+ if (!same) {
+ mergeSetting.e > mergeSetting.s && (mergeList.push(mergeSetting));
+ refRow = data[i];
+ mergeSetting = {
+ s: i,
+ e: i
+ };
+ } else {
+ i > mergeSetting.e && (mergeSetting.e = i);
+ i == data.length - 1 && (mergeList.push(mergeSetting));
+ }
+
+ }
+
+ let setting = [];
+ mergeList.forEach(e => {
+ mcols.forEach(c => {
+ let ci = allCols.indexOf(c);
+ setting.push({
+ s: {
+ r: e.s + 1,
+ c: ci
+ },
+ e: {
+ r: e.e + 1,
+ c: ci
+ }
+ });
+ });
+ });
+ return setting;
+}
+
+let setStyle = (ws, s) => {}
+
+let getColSetting = mapping => {
+ let columns = [];
+ for (let i = 0; i < mapping.length; i++) {
+ let c = mapping[i];
+ columns.push({
+ property: c.prop || c.property,
+ label: c.label,
+ type: "default"
+ });
+ }
+ return {
+ columns: columns
+ };
+}
+let export2Excel = opt => {
+ validOption(opt);
+ let options = Object.assign({}, exportOptionDefault, opt);
+ let expColSetting = !!options.tableRef ? options.tableRef : getColSetting(options.columnMapping);
+ ajax.$post(options.url, options.params, resp => {
+ if (resp.status !== 200) {
+ Message.error({
+ message: resp.description
+ });
+ }
+ let rows = options.rowFetcher(resp).rows;
+ var columns = [
+ []
+ ];
+ var keys = [];
+ let formaters = new Array();
+ expColSetting.columns.forEach(column => {
+ if (!!column.label && column.type === "default") {
+ columns[0].push(column.label);
+ keys.push(column.property);
+ let formater = options.columnFormatter.find(f => !!f[column.property] && typeof f[column.property] == 'function');
+ !!formater && (formaters[column.property] = formater[column.property]);
+ }
+ });
+ rows.forEach(o => {
+ let list = [];
+ keys.forEach(k => {
+ let formater = formaters[k];
+ if (!!formater) {
+ list.push(formater(o[k]));
+ } else {
+ list.push(o[k]);
+ }
+ });
+ columns.push(list);
+ });
+ const ws = XLSX.utils.aoa_to_sheet(columns);
+ if (!!options.mergeSetting && !!options.mergeSetting.refs && options.mergeSetting.refs.length > 0) {
+ let merges = getMergeSetting(rows, options.mergeSetting, keys);
+ ws["!merges"] = merges;
+ setStyle(ws, merges);
+ }
+ // console.log(ws);
+ const wb = XLSX.utils.book_new();
+ XLSX.utils.book_append_sheet(wb, ws, "sheet1");
+ XLSX.writeFile(wb, options.fileName);
+ });
+}
+
+export default {
+ exportTable: export2Excel
+}
diff --git a/src/utils/export-options.js b/src/utils/export-options.js
new file mode 100644
index 0000000..b11e146
--- /dev/null
+++ b/src/utils/export-options.js
@@ -0,0 +1,74 @@
+const PalletSku = {
+ columnMapping: [
+ {
+ prop: "seqNo",
+ label: "序号",
+ },
+ {
+ prop: "cmcInvoice",
+ label: "发票号",
+ },
+ {
+ prop: "seqNo",
+ label: "托盘号/箱号",
+ },
+ {
+ prop: "customerPO",
+ label: "PO",
+ },
+ {
+ prop: "pn",
+ label: "PN",
+ },
+ {
+ prop: "qty",
+ label: "数量",
+ },
+ {
+ prop: "seqNo",
+ label: "箱数",
+ },
+ {
+ prop: "seqNo",
+ label: "Rolls",
+ },
+ {
+ prop: "seqNo",
+ label: "托数",
+ },
+ {
+ prop: "seqNo",
+ label: "长(M)",
+ },
+ {
+ prop: "seqNo",
+ label: "宽(M)",
+ },
+ {
+ prop: "seqNo",
+ label: "高(M)",
+ },
+ {
+ prop: "seqNo",
+ label: "体积",
+ },
+ {
+ prop: "seqNo",
+ label: "毛重",
+ },
+ {
+ prop: "seqNo",
+ label: "净重",
+ }
+ ],
+ mergeSetting: {
+ mergeSetting: {
+ refs: [],
+ columns: []
+ }
+ }
+}
+
+export default {
+ PalletSku,
+};
diff --git a/src/views/modules/ecss/codelnotify.vue b/src/views/modules/ecss/codelnotify.vue
index ec3be68..671807a 100644
--- a/src/views/modules/ecss/codelnotify.vue
+++ b/src/views/modules/ecss/codelnotify.vue
@@ -268,7 +268,7 @@
-
+ PN
@@ -399,6 +399,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+ {{scope.row[item.columnProp]}}
+
+
+
+
+
+
+
+
+ 关闭
+
+
@@ -415,6 +466,7 @@
updateEcssDelDetail,
deleteEcssDelDetail,
searchCoDelPalletData,
+ queryPartListAll
}from "@/api/ecss/ecss.js"
import {getBuList}from '@/api/factory/site.js'
export default {
@@ -429,6 +481,56 @@
pageSize: 100,
totalPage: 0,
height: 200,
+ componentPartModelFlag: false,
+ componentPartData: {
+ site: '',
+ buNo: '',
+ sku: '',
+ partNo: '',
+ partDesc: '',
+ page: 1,
+ limit: 10
+ },
+ pageIndex3: 1,
+ pageSize3: 20,
+ totalPage3: 0,
+ componentPartList: [],
+ componentPartColumnList: [
+ {
+ columnProp: 'sku',
+ headerAlign: "center",
+ align: "center",
+ columnLabel: 'PN',
+ columnHidden: false,
+ columnImage: false,
+ status: true,
+ fixed: '',
+ columnWidth: 120
+ },
+ {
+ columnProp: 'partNo',
+ headerAlign: "center",
+ align: "center",
+ columnLabel: '物料编码',
+ columnHidden: false,
+ columnImage: false,
+ status: true,
+ fixed: '',
+ columnWidth: 120
+ },
+ {
+ columnProp: 'partDesc',
+ headerAlign: "center",
+ align: "center",
+ columnLabel: '物料描述',
+ columnHidden: false,
+ columnImage: false,
+ status: true,
+ fixed: '',
+ columnWidth: 300
+ },
+ ],
+
walMartOrderFlag: 'N',
walMartOrderDialog:false,
buList:[],
@@ -1588,6 +1690,12 @@
})
},
xiadaChoose(){
+ if (this.dataList2.length===0) {
+ this.$alert('该发货通知单下没有明细无法下达!', '错误', {
+ confirmButtonText: '确定'
+ })
+ return false
+ }
if (this.currentRow.buNo=='03-RFID') {
this.walMartOrderDialog=true;
this.walMartOrderFlag='N';
@@ -1645,6 +1753,61 @@
})
})
},
+ // 每页数
+ sizeChangeHandle3 (val) {
+ this.pageSize3 = val
+ this.pageIndex3 = 1
+ this.queryComponentPartModal()
+ },
+
+ // 当前页
+ currentChangeHandle3 (val) {
+ this.pageIndex3 = val
+ this.queryComponentPartModal()
+ },
+ // 子物料列表
+ queryComponentPartModal () {
+ this.componentPartData.limit = this.pageSize3
+ this.componentPartData.page = this.pageIndex3
+ this.componentPartData.site = this.currentRow.site
+ this.componentPartData.buNo = this.currentRow.buNo
+ // 查询所有物料
+ queryPartListAll(this.componentPartData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.componentPartList = data.page.list
+ this.pageIndex3 = data.page.currPage
+ this.pageSize3 = data.page.pageSize
+ this.totalPage3 = data.page.totalCount
+ this.componentPartModelFlag = true
+ } else {
+ this.componentPartList = []
+ }
+ })
+ },
+ // 物料查询列表
+ queryComponentPartList () {
+ this.componentPartData.limit = this.pageSize3
+ this.componentPartData.page = this.pageIndex3
+ // 查询所有物料
+ queryPartListAll(this.componentPartData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.componentPartList = data.page.list
+ this.pageIndex3 = data.page.currPage
+ this.pageSize3 = data.page.pageSize
+ this.totalPage3 = data.page.totalCount
+ } else {
+ this.componentPartList = []
+ }
+ })
+ },
+ // 双击选中子物料
+ getComponentRowData (row) {
+ this.updateDetailModel.partDescription = row.partDesc
+ this.updateDetailModel.pa = row.sku
+ this.updateDetailModel.partNo = row.partNo
+ this.componentPartModelFlag = false
+ },
+
doUpdateDetail(){
if(this.updateDetailModel.partNo==null||this.updateDetailModel.partNo==''){
this.$alert('请输入PN!', '错误', {
diff --git a/src/views/modules/ecss/codelnotifyConfirm.vue b/src/views/modules/ecss/codelnotifyConfirm.vue
index 6a0a4e6..3caa427 100644
--- a/src/views/modules/ecss/codelnotifyConfirm.vue
+++ b/src/views/modules/ecss/codelnotifyConfirm.vue
@@ -451,6 +451,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -2119,12 +2129,12 @@
})
return false
}
- if(this.currentRow.notifyStatus!=='仓库已确认'){
+ /* if(this.currentRow.notifyStatus!=='仓库已确认'){
this.$alert('仓库未确认无法导入装箱清单!', '错误', {
confirmButtonText: '确定'
})
return false
- }
+ } */
let inData={
site:this.currentRow.site,
buNo:this.currentRow.buNo,
@@ -2352,6 +2362,13 @@
this.dataList5 = data.rows
}
})
+ searchCoDelPalletData(this.currentRow).then(({data}) => {
+ if (data && data.code == 0) {
+ this.dataList3 = data.rows
+ } else {
+ this.dataList3 = [];
+ }
+ });
this.boxModelFlag=false;
this.$message({
message: '操作成功',
@@ -2365,7 +2382,6 @@
})
}
})
-
},
deleteBox(row){
this.$confirm('确认删除此明细?', '提示').then(() => {
diff --git a/src/views/modules/ecss/declaration.vue b/src/views/modules/ecss/declaration.vue
index 7e9ad19..4d7cb9b 100644
--- a/src/views/modules/ecss/declaration.vue
+++ b/src/views/modules/ecss/declaration.vue
@@ -51,7 +51,7 @@
{{'导出出口货物委托书'}}
-
diff --git a/src/views/modules/ecss/ecssWalMartOrder.vue b/src/views/modules/ecss/ecssWalMartOrder.vue
index c758d85..595ec3b 100644
--- a/src/views/modules/ecss/ecssWalMartOrder.vue
+++ b/src/views/modules/ecss/ecssWalMartOrder.vue
@@ -238,7 +238,7 @@ import walUploadExcel from "./walmart_upload_excel.vue";
columnProp: "grossWeight",
headerAlign: "center",
align: "center",
- columnLabel: "重量",
+ columnLabel: "重量(KG)",
columnHidden: false,
columnImage: false,
columnSortable: false,
diff --git a/src/views/modules/ecss/pallet_upload_excel.vue b/src/views/modules/ecss/pallet_upload_excel.vue
index 4d0d032..9b23326 100644
--- a/src/views/modules/ecss/pallet_upload_excel.vue
+++ b/src/views/modules/ecss/pallet_upload_excel.vue
@@ -17,7 +17,7 @@
-
+ class="el-button el-button--primary el-button--medium">
{{ '导出模版' }}
-
-
+ -->
+ 下载文件模板
@@ -57,6 +57,8 @@
import {saveCoDelPalletDataByExcel,searchEcssCoDelNotifyDetail} from '@/api/ecss/ecss.js'
import {downLoadObjectFile} from '@/api/eam/eam_object_list.js'
import {getBuList}from '@/api/factory/site.js'
+ import excel from "@/utils/excel-util.js";
+ import excelOpts from '@/utils/export-options.js'
export default {
name: 'bomComponentUpload',
data() {
@@ -143,7 +145,25 @@
}
},
methods: {
-
+ async exportExcel() {
+ let searchData={
+ site: this.pageData.site,
+ buNo: this.pageData.buNo,
+ delNo: this.pageData.delNo,
+ cmcInvoice: this.pageData.cmcInvoice,
+ createBy: this.$store.state.user.name,
+ }
+ let columnMapping = excelOpts.PalletSku.columnMapping;
+ excel.exportTable({
+ url: "/ecss/coDel/searchEcssCoDelNotifyDetail",
+ columnMapping: columnMapping,
+ mergeSetting: excelOpts.PalletSku.mergeSetting,
+ params: searchData,
+ fileName: this.exportName+".xlsx",
+ rowFetcher: res => res.data,
+ columnFormatter: []
+ });
+ },
// 初始化组件的参数
init (inData) {
this.fileList = []
@@ -218,7 +238,9 @@
// 关闭窗口并刷新页面
this.closeDialog()
} else {
- this.$message.warning(data.msg)
+ this.$alert(data.msg, '错误', {
+ confirmButtonText: '确定'
+ })
}
})
},
diff --git a/src/views/modules/ecss/partHsCode.vue b/src/views/modules/ecss/partHsCode.vue
index 50b1e3f..4f18a97 100644
--- a/src/views/modules/ecss/partHsCode.vue
+++ b/src/views/modules/ecss/partHsCode.vue
@@ -11,10 +11,10 @@
-
+
-
+
@@ -387,7 +387,7 @@
columnProp: 'partNo',
headerAlign: 'center',
align: 'left',
- columnLabel: '物料编码',
+ columnLabel: 'ERP物料编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
@@ -405,7 +405,7 @@
columnProp: 'sku',
headerAlign: 'center',
align: 'left',
- columnLabel: 'ERP物料编码',
+ columnLabel: 'SKU',
columnHidden: false,
columnImage: false,
columnSortable: false,