314 lines
7.2 KiB
Vue
314 lines
7.2 KiB
Vue
<template>
|
||
<view>
|
||
<view class="header">
|
||
<span>扫码追溯</span>
|
||
<uni-icons type="scan" color="#333" size="26" style="display: block;" @click="toScanAdd"></uni-icons>
|
||
</view>
|
||
<view class="flex-row">
|
||
<view class="flex-cell ">
|
||
<span>物料代码:</span>
|
||
{{ detailHead.materielNo }}
|
||
</view>
|
||
<view class="flex-cell ">
|
||
<span>物料名称:</span>
|
||
{{ detailHead.materielName }}
|
||
</view>
|
||
<view class="flex-cell">
|
||
<span>规格型号:</span>
|
||
{{ detailHead.specification }}
|
||
</view>
|
||
<view class="flex-cell">
|
||
<span>计量单位:</span>
|
||
{{ detailHead.uomName }}
|
||
</view>
|
||
<view class="flex-cell">
|
||
<span>批号:</span>
|
||
{{ detailHead.batch }}
|
||
</view>
|
||
<view class="flex-cell">
|
||
<span>入库数量:</span>
|
||
{{ detailHead.count }}
|
||
</view>
|
||
<view class="flex-cell">
|
||
<span>剩余数量:</span>
|
||
{{ detailHead.remainCount }}
|
||
</view>
|
||
</view>
|
||
<view class="head">入库出库明细</view>
|
||
<view class="table_container">
|
||
<t-table border="0">
|
||
<view class="tr-body">
|
||
<t-tr font-size="14" v-for="(item, index) in tableList" :key="index">
|
||
<view class="tr_view">
|
||
<t-td style='width:80px'>{{ item.dateType }}</t-td>
|
||
<t-td class='t_td_cell'>{{ setTime(item.createTime)}}</t-td>
|
||
<t-td style='width:80px'>{{ item.countType }}</t-td>
|
||
<t-td class='t_td_cell'>{{ item.count }}</t-td>
|
||
</view>
|
||
</t-tr>
|
||
</view>
|
||
</t-table>
|
||
</view>
|
||
|
||
<!-- <view class="goHome" @click="goMain()"><img src="@/static/img/gohome.png" /></view> -->
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import jweixin from '@/jweixin-module/index.js';
|
||
import tTable from '@/components/wms/t-table/t-table.vue';
|
||
import tTh from '@/components/wms/t-table/t-th.vue';
|
||
import tTr from '@/components/wms/t-table/t-tr.vue';
|
||
import tTd from '@/components/wms/t-table/t-td.vue';
|
||
import uniIcons from '@/components/uni-icons/uni-icons.vue';
|
||
export default {
|
||
data() {
|
||
return {
|
||
detailHead: {
|
||
materielName: ''
|
||
},
|
||
tableList: []
|
||
};
|
||
},
|
||
components: {
|
||
tTable,
|
||
tTh,
|
||
tTr,
|
||
tTd,
|
||
uniIcons
|
||
},
|
||
mounted() {
|
||
this.initiateWX();
|
||
},
|
||
methods: {
|
||
//获取微信相关
|
||
initiateWX() {
|
||
this.$http
|
||
.request({
|
||
url: '/apis/weChat/getSignature',
|
||
params: {
|
||
// url:"http://120.132.17.220:18090/gyhl-app/"
|
||
url: window.location.href.split('#')[0]
|
||
}
|
||
})
|
||
.then(res => {
|
||
if (res.data.code == 0) {
|
||
var s = res.data;
|
||
jweixin.config({
|
||
beta: true,
|
||
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
||
appId: s.appId, // 必填,公众号的唯一标识
|
||
timestamp: s.timestamp, // 必填,生成签名的时间戳
|
||
nonceStr: s.nonceStr, // 必填,生成签名的随机串
|
||
signature: s.signature.toLowerCase(), // 必填,签名,见附录1
|
||
jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'scanQRCode']
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: res.msg ? res.msg : '获取微信配置失败',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
})
|
||
.catch(err => {
|
||
uni.showToast({
|
||
title: err,
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
});
|
||
},
|
||
toScanAdd() {
|
||
let _this = this;
|
||
jweixin.scanQRCode({
|
||
desc: 'scanQRCode desc',
|
||
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
||
scanType: ['qrCode'], // 可以指定扫二维码还是条形码(一维码),默认二者都有"qrCode", "barCode"
|
||
success: function(res) {
|
||
if (res.errMsg != 'scanQRCode:ok') {
|
||
uni.showToast({
|
||
title: '扫描结果:' + res.resultStr,
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
} else {
|
||
//扫码正确
|
||
let resultStr = res.resultStr;
|
||
try {
|
||
resultStr = JSON.parse(resultStr);
|
||
if (resultStr.id) {
|
||
_this.getQrCodeInfo(resultStr.id);
|
||
} else {
|
||
uni.showToast({
|
||
title: '二维码错误,请扫描正确的二维码',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
} catch (e) {
|
||
uni.showToast({
|
||
title: '二维码错误,请扫描正确的二维码',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
}
|
||
// 回调
|
||
},
|
||
error: function(res) {
|
||
uni.showToast({
|
||
title: 'error:' + res,
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
if (res.errMsg.indexOf('function_not_exist') > 0) {
|
||
alert('版本过低请升级');
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
//调用接口获取二维码信息
|
||
getQrCodeInfo(id) {
|
||
this.$http
|
||
.request({
|
||
url: '/apis/scm/qrcode/logDetail',
|
||
params: {
|
||
qrCodeId: id
|
||
},
|
||
method: 'GET'
|
||
})
|
||
.then(res => {
|
||
if (res.data.code == 0) {
|
||
this.detailHead=res.data.header
|
||
this.tableList=res.data.body
|
||
}else{
|
||
uni.showToast({
|
||
title: res.data.msg? res.data.msg:'扫码失败',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
});
|
||
},
|
||
setTime(time){
|
||
if(time.split(' ')[0]){
|
||
return time.split(' ')[0]
|
||
}else {
|
||
return time
|
||
}
|
||
}
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.header {
|
||
position: relative;
|
||
width: 100%;
|
||
height: 40px;
|
||
background-color: #fff;
|
||
}
|
||
.header span {
|
||
line-height: 40px;
|
||
font-size: 15px;
|
||
margin-left: 10px;
|
||
}
|
||
.header .uni-icon {
|
||
position: absolute;
|
||
right: 10px;
|
||
top: 0px;
|
||
padding: 7px;
|
||
}
|
||
.head {
|
||
height: 40px;
|
||
width: 100%;
|
||
line-height: 40px;
|
||
font-size: 15px;
|
||
background-color: #fff;
|
||
padding-left: 10px;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.flex-row {
|
||
position: relative;
|
||
width: 100%;
|
||
padding-right: 45px !important;
|
||
background-color: #fff;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.flex-cell {
|
||
width: 100%;
|
||
text-align: left;
|
||
/* overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis; */
|
||
min-height: 30px;
|
||
line-height: 30px;
|
||
font-size: 14px;
|
||
padding-left: 10px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.table_container {
|
||
position: relative;
|
||
width: 100%;
|
||
margin: auto;
|
||
margin-top: 10px;
|
||
height: calc(100% - 91px);
|
||
font-size: 13px;
|
||
color: #333;
|
||
}
|
||
.t-table {
|
||
position: relative;
|
||
height: 100%;
|
||
padding-bottom: 10px;
|
||
}
|
||
.tr-body {
|
||
position: relative;
|
||
width: 100%;
|
||
left: 0;
|
||
bottom: 0;
|
||
overflow: auto;
|
||
background-color: #fff;
|
||
}
|
||
.t-table .t-tr {
|
||
position: relative;
|
||
border-bottom: 1px solid #efefef;
|
||
}
|
||
.tr_view {
|
||
/* position: relative;
|
||
display: block;
|
||
width: 100%; */
|
||
|
||
position: relative;
|
||
overflow: auto;
|
||
width: 100%;
|
||
}
|
||
.tr-head {
|
||
position: relative;
|
||
top: 0;
|
||
width: 100%;
|
||
}
|
||
.tr-head .t-th {
|
||
display: inline-block;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
width: calc((100% / 4));
|
||
}
|
||
.t-td {
|
||
position: relative;
|
||
box-sizing: border-box;
|
||
float: left;
|
||
/* width: calc((100% / 4)); */
|
||
height: 33px;
|
||
padding: 4px 0;
|
||
}
|
||
.t_td_cell{
|
||
width: calc((100% - 160px) / 2);
|
||
}
|
||
</style>
|