|
@@ -157,7 +157,8 @@ export default {
|
|
|
runStockString:null,
|
|
|
stockStringArr: [],
|
|
|
downStockStringArr: [],
|
|
|
- runStockStringArr:[]
|
|
|
+ runStockStringArr:[],
|
|
|
+ loadTable:[]
|
|
|
};
|
|
|
},
|
|
|
created() {},
|
|
@@ -166,6 +167,7 @@ export default {
|
|
|
this.getStockString();
|
|
|
this.getDownStockString();
|
|
|
this.getRunStockList();
|
|
|
+ this.searchLoadData();
|
|
|
// console.log(this.$refs.excelDom);
|
|
|
},
|
|
|
methods: {
|
|
@@ -193,9 +195,14 @@ export default {
|
|
|
let table_book = XLSX.utils.table_to_book(tables);
|
|
|
console.log("table_book:",table_book);
|
|
|
console.log("sheet:",table_book.Sheets.Sheet1);
|
|
|
+ //限制单元格样式范围
|
|
|
+ let rangeList=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',,'R','S','T','U','V']
|
|
|
+ //得到自定义过滤数组
|
|
|
+ let filterList=this.exportFilter(table_book.Sheets.Sheet1);
|
|
|
+ console.log("filterList:",filterList);
|
|
|
//这里遍历单元格给单元格对象设置属性,s为控制样式的属性
|
|
|
Object.keys(table_book.Sheets.Sheet1).forEach((key) => {
|
|
|
- if (key.indexOf('!') < 0) {
|
|
|
+ if (key.indexOf('!') < 0 && rangeList.indexOf(this.getCol(key)) >= 0 && filterList.indexOf(key)< 0) {
|
|
|
table_book.Sheets.Sheet1[key].s = {
|
|
|
font:{
|
|
|
name:"宋体",
|
|
@@ -213,8 +220,37 @@ export default {
|
|
|
right: { style: 'thin' }
|
|
|
}
|
|
|
}
|
|
|
+ //库存三列特殊对待
|
|
|
+ if(table_book.Sheets.Sheet1[key].t=='s' && table_book.Sheets.Sheet1[key].v && (table_book.Sheets.Sheet1[key].v.includes('下游港口库存') || table_book.Sheets.Sheet1[key].v.includes('万港库存') || table_book.Sheets.Sheet1[key].v.includes('在途货物'))){
|
|
|
+
|
|
|
+ table_book.Sheets.Sheet1[key].s = {
|
|
|
+ font:{
|
|
|
+ name:"宋体",
|
|
|
+ sz:10
|
|
|
+ },
|
|
|
+ alignment: {
|
|
|
+ vertical: 'center',
|
|
|
+ wrapText: true,
|
|
|
+ },
|
|
|
+ border: {
|
|
|
+ top: { style: 'thin' },
|
|
|
+ bottom: { style: 'thin' },
|
|
|
+ left: { style: 'thin' },
|
|
|
+ right: { style: 'thin' }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
+ //表头字体重新设置
|
|
|
+ table_book.Sheets.Sheet1['A1'].s.font={
|
|
|
+ name:"宋体",
|
|
|
+ sz:16,
|
|
|
+ bold:true
|
|
|
+ }
|
|
|
+ //画一个简报
|
|
|
+ this.drawExcel(table_book.Sheets.Sheet1);
|
|
|
+ //处理合并行样式
|
|
|
this.addRangeBorder(table_book.Sheets.Sheet1['!merges'],table_book.Sheets.Sheet1);
|
|
|
console.log("sheet:",table_book.Sheets.Sheet1);
|
|
|
//导出
|
|
@@ -232,10 +268,82 @@ export default {
|
|
|
}
|
|
|
return table_write;
|
|
|
},
|
|
|
+ drawExcel(sheet){
|
|
|
+ //画一个进口矿水联运情况简报
|
|
|
+ let style={
|
|
|
+ font:{
|
|
|
+ name:"宋体",
|
|
|
+ sz:10
|
|
|
+ },
|
|
|
+ alignment: {//对齐方式
|
|
|
+ horizontal: 'center',//水平居中
|
|
|
+ vertical: 'center',//竖直居中
|
|
|
+ wrapText: true,//自动换行
|
|
|
+ },
|
|
|
+ border: { // 设置边框
|
|
|
+ top: { style: 'thin' },
|
|
|
+ bottom: { style: 'thin' },
|
|
|
+ left: { style: 'thin' },
|
|
|
+ right: { style: 'thin' }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ Object.keys(sheet).forEach((key) => {
|
|
|
+ if (key.indexOf('!') < 0 && sheet[key].v=='万州港发货信息') {
|
|
|
+ let row = this.getRow(key);
|
|
|
+ console.log("万州港发货信息:",row);
|
|
|
+ //第一行表头
|
|
|
+ sheet['I'+row]={
|
|
|
+ t:'s',
|
|
|
+ v:'进口矿水联运情况简报',
|
|
|
+ s:style
|
|
|
+ };
|
|
|
+ for(let i=row+1; i<this.loadTable.length+row+3;i++){
|
|
|
+ sheet['I'+i]={
|
|
|
+ t:'s',
|
|
|
+ v:'',
|
|
|
+ s:style
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //表格合并
|
|
|
+ for(let i=row-1; i<this.loadTable.length+row+2;i++){
|
|
|
+ sheet['!merges'].push({
|
|
|
+ s:{
|
|
|
+ r:i,
|
|
|
+ c:8,
|
|
|
+ },
|
|
|
+ e:{
|
|
|
+ r:i,
|
|
|
+ c:15,
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ exportFilter(sheet){
|
|
|
+ //导出过滤方法
|
|
|
+ let keys=[];
|
|
|
+ Object.keys(sheet).forEach((key) => {
|
|
|
+ if (key.indexOf('!') < 0 && sheet[key].v=='万州港发货信息') {
|
|
|
+ let row = this.getRow(key);
|
|
|
+ console.log("万州港发货信息:",row);
|
|
|
+ for(let i=row; i<this.loadTable.length+row+3;i++){
|
|
|
+ keys.push('F'+i);
|
|
|
+ }
|
|
|
+ }else if(key.indexOf('!') < 0 && sheet[key].v=='控制线等闸船舶动态'){
|
|
|
+ let row = this.getRow(key);
|
|
|
+ console.log("控制线等闸船舶动态:",row);
|
|
|
+ for(let i=row;i<row+2;i++){
|
|
|
+ keys.push('Q'+i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return keys;
|
|
|
+ },
|
|
|
addRangeBorder (range, ws) {
|
|
|
- let cols = ["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"];
|
|
|
+ let cols = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V"];
|
|
|
range.forEach(item => {
|
|
|
- console.log(item)
|
|
|
let style = {
|
|
|
s: {
|
|
|
border: {
|
|
@@ -257,6 +365,13 @@ export default {
|
|
|
})
|
|
|
return ws;
|
|
|
},
|
|
|
+ getRow(key){
|
|
|
+ return parseInt(key.replace(/[^0-9]/ig,""));
|
|
|
+ },
|
|
|
+ getCol(key){
|
|
|
+ let row=key.replace(/[^0-9]/ig,"");
|
|
|
+ return key.replace(row,"");
|
|
|
+ },
|
|
|
appendOne(Sheet,row){
|
|
|
//从后面新增1行,并行合并
|
|
|
let seArr=Sheet['!fullref'].split(":");
|
|
@@ -481,6 +596,20 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+ //查询装车数据
|
|
|
+ searchLoadData() {
|
|
|
+ let map = {}
|
|
|
+ this.axios.post('/api/v1/tms/getLoadData', map).then(res => {
|
|
|
+ if (res.data.code == '200') {
|
|
|
+ this.loadTable = res.data.data;
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'error',
|
|
|
+ message: res.data.data
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
}
|
|
|
};
|
|
|
</script>
|