盘点操作页接口联调及巷道导出接口联调

merge-requests/1/head
张鑫 5 years ago
parent 43819d68c4
commit e6ccb6fe7d

@ -126,5 +126,15 @@ export default {
name: '获取巷道详情', name: '获取巷道详情',
method: 'GET' method: 'GET'
}, },
getStockInfo: {
url: '/stock/info',
name: '复核页面的核对信息',
method: 'POST'
},
exportStock: {
url: '/stock/export',
name: '导出所有巷道',
method: 'GET'
},
} }

@ -1,6 +1,5 @@
import Vue from 'vue'; import Vue from 'vue';
import axios from 'axios'; import axios from 'axios';
const instance = axios.create({ const instance = axios.create({
baseURL: process.env.VUE_APP_API_URL, baseURL: process.env.VUE_APP_API_URL,
timeout: 60 * 1000, timeout: 60 * 1000,
@ -10,6 +9,9 @@ const instance = axios.create({
withCredentials: true, withCredentials: true,
}); });
window.once = 0 window.once = 0
let blobList = [
'/stock/export'
]
instance.interceptors.request.use((config) => { instance.interceptors.request.use((config) => {
const reqObj = config; const reqObj = config;
// 在发送请求之前做些什么 -- 路径参数拼接 // 在发送请求之前做些什么 -- 路径参数拼接
@ -22,10 +24,17 @@ instance.interceptors.request.use((config) => {
if (localStorage.getItem('userInfo')) { if (localStorage.getItem('userInfo')) {
reqObj.headers.token = JSON.parse(localStorage.getItem('userInfo')).token; reqObj.headers.token = JSON.parse(localStorage.getItem('userInfo')).token;
} }
// 流文件下载
if (blobList.indexOf(config.url) > -1) config.responseType = 'blob'
return reqObj; return reqObj;
}, (err) => Promise.reject(err)); }, (err) => Promise.reject(err));
instance.interceptors.response.use((response) => { instance.interceptors.response.use((response) => {
// 流下载处理 response.config.url会加个api/前缀
if (blobList.some(item => {
return response.config.url.indexOf(item) > -1
})) return response.data
const res = response.data; const res = response.data;
// 对响应数据做点什么 // 对响应数据做点什么
if (res.code !== 200 && res.code!==0) { if (res.code !== 200 && res.code!==0) {

@ -1,23 +1,28 @@
<template> <template>
<div class="checkOperation"> <div class="checkOperation">
<div class="topMenu"> <div class="topMenu">
<a-select default-value="lucy" style="width: 160px;margin-right:25px"> <a-select v-if="listData[0]"
<a-select-option value="jack"> :default-value="selectName"
巷道一 style="width:160px;margin-right:25px"
</a-select-option> @change="handleChange"
<a-select-option value="lucy"> class="select-roadway">
巷道二 <a-select-option v-for="i in listData" :key="i.name" :value="i.id">
{{i.name}}
</a-select-option> </a-select-option>
</a-select> </a-select>
<a-select default-value="a" style="width: 160px;margin-right:25px">
<a-select-option value="a"> <a-select
@change="handleTypeChange"
style="width: 160px;margin-right:25px"
:value="selectType">
<a-select-option value="left">
左货架 左货架
</a-select-option> </a-select-option>
<a-select-option value="b"> <a-select-option value="right">
右货架 右货架
</a-select-option> </a-select-option>
</a-select> </a-select>
<a-select default-value="c" style="width: 160px"> <a-select default-value="c" style="width: 160px" v-if="!checkObj.shelveId">
<a-select-option value="c"> <a-select-option value="c">
</a-select-option> </a-select-option>
@ -26,10 +31,8 @@
</a-select-option> </a-select-option>
</a-select> </a-select>
</div> </div>
<div class="carousel-box">
<a-carousel class="carousel" ref="carousel">
<div class="carousel-page"> <div class="carousel-page">
<p class="carousel-page-title">工单号223333331123213</p> <p class="carousel-page-title">工单号{{checkObj.orderNum}}</p>
<div class="carousel-page-content"> <div class="carousel-page-content">
<div class="img-box"> <div class="img-box">
<img <img
@ -46,104 +49,177 @@
</div> </div>
<div class="carousel-page-footer"> <div class="carousel-page-footer">
<div class="info-box"> <div class="info-box">
<p>系统登记品规xxxsxxxx</p> <p>系统登记品规{{checkObj.category}}</p>
<p>系统登记数量23021</p> <p>系统登记数量{{checkObj.count}}</p>
</div> </div>
<div class="status"> <div class="status" v-if="checkObj.status == 0">
未核对 未核对
</div> </div>
<div class="status-btn"> <div class="status" v-if="checkObj.status == 1">
<a-button class="btn" type="danger">人工复核</a-button> 已核对<span style="color: #1afa29;">核对正确</span>
<a-button class="btn" type="primary" style="background:#29c12b;border-color:#29c12b;">核对正确
</a-button>
</div>
</div>
</div>
<!--2-->
<div class="carousel-page">
<p class="carousel-page-title">工单号223333331123213</p>
<div class="carousel-page-content">
<div class="img-box">
<img
src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1520587439,1746635941&fm=26&gp=0.jpg"
alt="">
<p>操作前照片</p>
</div>
<div class="img-box">
<img
src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=274465270,4254987731&fm=26&gp=0.jpg"
alt="">
<p>操作后照片</p>
</div>
</div> </div>
<div class="carousel-page-footer"> <div class="status" v-if="checkObj.status == 2">
<div class="info-box"> 已核对<span style="color: #d81e06;">核对错误</span>
<p>系统登记品规xxxsxxxx</p>
<p>系统登记数量23021</p>
</div>
<div class="status">
未核对
</div> </div>
<div class="status-btn"> <div class="status-btn">
<a-button class="btn" type="danger">人工复</a-button> <a-button class="btn" type="danger">核对错误</a-button>
<a-button class="btn" type="primary" style="background:#29c12b;border-color:#29c12b;">核对正确 <a-button class="btn" type="primary" style="background:#29c12b;border-color:#29c12b;">核对正确
</a-button> </a-button>
</div> </div>
</div> </div>
</div> </div>
<!--3--> <div v-for="(key,value) in checkList" :key="value">
<div class="carousel-page">
<p class="carousel-page-title">工单号223333331123213</p> <div v-if="checkObj.shelveId == value">
<div class="carousel-page-content"> <!--{{value}}{{key}}-->
<div class="img-box"> <div v-for="(columnItem,index) in key" :key="index">
<img
src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1520587439,1746635941&fm=26&gp=0.jpg" <div class="bottom-btn"
alt=""> v-if="columnItem.row == checkObj.row && columnItem.column == checkObj.column">
<p>操作前照片</p> <a-button class="btn" @click="prev(index > 0 ? index : 0)">上一个</a-button>
</div> <p>{{checkObj.row}}{{checkObj.column}}</p>
<div class="img-box"> <a-button class="btn" @click="next(index<=key.length ? index :index=key.length-1)">下一个
<img
src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=274465270,4254987731&fm=26&gp=0.jpg"
alt="">
<p>操作后照片</p>
</div>
</div>
<div class="carousel-page-footer">
<div class="info-box">
<p>系统登记品规xxxsxxxx</p>
<p>系统登记数量23021</p>
</div>
<div class="status">
未核对
</div>
<div class="status-btn">
<a-button class="btn" type="danger">人工复核</a-button>
<a-button class="btn" type="primary" style="background:#29c12b;border-color:#29c12b;">核对正确
</a-button> </a-button>
</div> </div>
</div> </div>
</div> </div>
</a-carousel>
</div>
<div class="bottom-btn">
<a-button class="btn" @click="prev()"></a-button>
<p>6行3列</p>
<a-button class="btn" @click="next()"></a-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {} return {
listData: [],
checkObj: {},
streetDetail: {},
checkList: [],
id: 0,
selectName: '',
shelveId: '',
selectType: ''
}
},
created() {
this.checkObj = this.$route.query.checkObj
this.streetDetail = this.$route.query.item
this.id = this.$route.query.item.id
this.selectName = this.$route.query.item.name
console.log(this.checkObj)
if (this.checkObj.shelveId == this.streetDetail.leftShelveId) {
this.selectType = 'left'
} else {
this.selectType = 'right'
}
},
mounted() {
this.getStreetList()
}, },
methods: { methods: {
prev() { //
this.$refs.carousel.prev(); getStreetList(id) {
this.$api.httpApi.getStreetList({
data: {
pageNum: 1,
pageSize: 50,
}
}).then(res => {
this.listData = res.data.list;
console.log(this.listData)
this.select = this.id
this.getStreetDetail(this.id)
this.getStockList(this.id)
}).catch(err => {
});
},
//
getStreetDetail(id) {
this.$axios.get('/street/' + id, {
data: {}
}).then(res => {
this.streetDetail = res.data
console.log(this.streetDetail)
}).catch(err => {
})
},
//
getStockList(streetId) {
this.$api.httpApi.getStockList({
params: {
streetId: streetId,
}
}).then(res => {
this.checkList = res.data
}).catch(err => {
});
}, },
next() { //
this.$refs.carousel.next(); getStockInfo(row, column, shelveId) {
this.$api.httpApi.getStockInfo({
data: {
row: Number(row),
column: Number(column),
shelveId: shelveId,
}
}).then(res => {
this.checkObj = res.data
this.shelveId = res.data.shelveId
}).catch(err => {
});
},
handleChange(value) {
console.log(value)
this.select = value
this.id = value
this.getStreetList()
for (var i = 0; i < this.listData.length; i++) {
console.log(this.listData[i])
if (this.listData[i].id == value) {
this.shelveId = this.listData[i].leftShelveId
}
}
this.selectType = 'left'
this.getStockInfo(1, 1, this.shelveId)
},
handleTypeChange(value) {
console.log(this.streetDetail.leftShelveId)
console.log(value)
this.selectType = value
if (value == 'left') {
this.getStockInfo(1, 1, this.streetDetail.leftShelveId)
} else if (value == 'right') {
this.getStockInfo(1, 1, this.streetDetail.rightShelveId)
}
},
prev(index) {
index--
console.log(index)
for (let x in this.checkList) {
if (this.checkObj.shelveId == this.checkList[x][index].shelveId) {
console.log(this.checkList[x][index].row)
console.log(this.checkList[x][index].column)
console.log(this.checkList[x][index].shelveId)
this.getStockInfo(this.checkList[x][index].row, this.checkList[x][index].column, this.checkList[x][index].shelveId)
}
}
},
next(index) {
index++
console.log(index)
for (let x in this.checkList) {
if (this.checkObj.shelveId == this.checkList[x][index].shelveId) {
console.log(this.checkList[x][index].row)
console.log(this.checkList[x][index].column)
console.log(this.checkList[x][index].shelveId)
this.getStockInfo(this.checkList[x][index].row, this.checkList[x][index].column, this.checkList[x][index].shelveId)
}
}
} }
} }
} }
@ -154,14 +230,9 @@ export default {
} }
.checkOperation { .checkOperation {
.carousel-box { .carousel-page {
width: 900px; width: 900px;
/*border: solid 1px blue;*/ /*border: solid 1px blue;*/
.carousel-page {
display: flex;
align-items: center;
justify-content: left;
&-title { &-title {
color: #009FE3; color: #009FE3;
font-size: 16px; font-size: 16px;
@ -230,7 +301,6 @@ export default {
} }
} }
} }
}
.bottom-btn { .bottom-btn {
width: 900px; width: 900px;

@ -20,15 +20,20 @@
<!--</div>--> <!--</div>-->
<div class="check-content" v-for="item in data" :key="item.id"> <div class="check-content" v-for="item in data" :key="item.id">
<div v-for="(key,value) in checkList" :key="value"> <div v-for="(key,value) in checkList" :key="value">
<div class="roadway-top" v-if="item.name == select && value == streetDetail.leftShelveId"> <div class="roadway-top" v-if="item.id == select && value == streetDetail.leftShelveId">
<happy-scroll color="rgba(100,100,100,0.5)" size="8" class="scroll-box"> <happy-scroll color="rgba(100,100,100,0.5)" size="8" class="scroll-box">
<div class="roadway-box"> <div class="roadway-box">
<div class="line" v-for="(columnItem,column) in key" :key="columnItem"> <div class="line" v-for="(column,index) in item.leftColumn" :key="index">
<div v-for="(rowItem,row) in columnItem" :key="row" <div v-for="(row,index) in item.leftRow" :key="index">
<div v-for="(columnItem,val) in key" :key="val">
<div v-if="columnItem.row== row && columnItem.column ==column"
@click="tocheckOperation(columnItem,item)"
class="ele" class="ele"
@click="tocheckOperation" :style="{background:columnItem.status ==0?'#bfbfbf':columnItem.status == 1?'#1afa29':'#d81e06'}"
:style="{background:rowItem.status ==0?'#bfbfbf':rowItem.status == 1?'#1afa29':'#d81e06'}" >
>{{rowItem.row}}-{{column}} {{columnItem.row}}-{{columnItem.column}}
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -46,24 +51,33 @@
</div> </div>
</div> </div>
</div> </div>
<div class="center-box">
<a-select v-if="data[0]" :default-value="data[0].name" style="width: 180px" <a-select v-if="data[0]" :default-value="data[0].name" style="width: 180px"
@change="handleChange" class="select-roadway"> @change="handleChange" class="select-roadway">
<a-select-option v-for="i in data" :key="i.name" :value="i.id"> <a-select-option v-for="i in data" :key="i.name" :value="i.id">
{{i.name}} {{i.name}}
</a-select-option> </a-select-option>
</a-select> </a-select>
<a-button type="primary" @click="exportStock">
导出全部巷道
</a-button>
</div>
<div class="check-content" v-for="item in data" :key="item.id"> <div class="check-content" v-for="item in data" :key="item.id">
<div v-for="(key,value) in checkList" :key="value"> <div v-for="(key,value) in checkList" :key="value">
<div class="roadway-buttom" v-if="item.name == select && value == streetDetail.rightShelveId"> <div class="roadway-buttom" v-if="item.id == select && value == streetDetail.rightShelveId">
<happy-scroll color="rgba(100,100,100,0.5)" size="8" class="scroll-box"> <happy-scroll color="rgba(100,100,100,0.5)" size="8" class="scroll-box">
<div class="roadway-box"> <div class="roadway-box">
<div class="line" v-for="(columnItem,column) in key" :key="column"> <div class="line" v-for="(column,index) in item.rightColumn" :key="index">
<div v-for="(rowItem,row) in columnItem" :key="row" <div v-for="(row,index) in item.rightRow" :key="index">
<div v-for="(columnItem,val) in key" :key="val">
<div v-if="columnItem.row== row && columnItem.column ==column"
@click="tocheckOperation(columnItem,item)"
class="ele" class="ele"
@click="tocheckOperation" :style="{background:columnItem.status ==0?'#bfbfbf':columnItem.status == 1?'#1afa29':'#d81e06'}"
:style="{background:rowItem.status ==0?'#bfbfbf':rowItem.status == 1?'#1afa29':'#d81e06'}" >
>{{rowItem.row}}-{{column}} {{columnItem.row}}-{{columnItem.column}}
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -104,11 +118,11 @@ export default {
this.$api.httpApi.getStreetList({ this.$api.httpApi.getStreetList({
data: { data: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 50,
} }
}).then(res => { }).then(res => {
this.data = res.data.list; this.data = res.data.list;
this.select = res.data.list[0].name this.select = res.data.list[0].id
this.getStockList(res.data.list[0].id) this.getStockList(res.data.list[0].id)
this.getStreetDetail(res.data.list[0].id) this.getStreetDetail(res.data.list[0].id)
}).catch(err => { }).catch(err => {
@ -133,8 +147,6 @@ export default {
streetId: streetId, streetId: streetId,
} }
}).then(res => { }).then(res => {
console.log(88888888888888999999999999999)
console.log(res.data)
this.checkList = res.data this.checkList = res.data
}).catch(err => { }).catch(err => {
@ -142,12 +154,26 @@ export default {
}, },
handleChange(value) { handleChange(value) {
console.log(value) console.log(value)
this.select = value
this.getStreetDetail(value) this.getStreetDetail(value)
this.getStockList(value) this.getStockList(value)
}, },
tocheckOperation() { tocheckOperation(checkObj, item) {
this.$router.push({name: 'checkOperation'}) console.log(checkObj)
console.log(item)
this.$router.push({name: 'checkOperation', query: {checkObj: checkObj, item: item}})
},
exportStock() {
this.$api.httpApi.exportStock({
params: {
streetId: this.select,
}
}).then(res => {
let blob = new Blob([res], {type: "application/vnd.ms-excel"})
this.$utils.downloadFile('巷道列表.xls', blob)
}).catch(err => {
});
} }
}, },
components: {} components: {}
@ -213,5 +239,12 @@ export default {
} }
} }
} }
.center-box {
width: 500px;
display: flex;
align-items: center;
justify-content: space-between;
}
} }
</style> </style>

Loading…
Cancel
Save