387 lines
12 KiB
Vue
387 lines
12 KiB
Vue
<template>
|
||
<view class="container" v-if="query">
|
||
<xinsoft-form-input :itemDefine='itemDefine1' :bindSource.sync="dataItem1" @toSearch='searchFacility'></xinsoft-form-input>
|
||
<!-- <xinsoft-form-input :itemDefine='itemDefine2' :bindSource.sync="dataItem2" @toScan='scanFacilityLocation'></xinsoft-form-input> -->
|
||
<xinsoft-form-input :itemDefine='itemDefine2' :bindSource.sync="dataItem2" @toSearch='searchFacilityLocation' @toScan='scanFacilityLocation'></xinsoft-form-input>
|
||
<xinsoft-scan :qrCodeProps='qrCodeProps' @submitData='submitData' ></xinsoft-scan>
|
||
<!-- //搜索仓库列表 -->
|
||
<chooseFacilitySingle :showsearch.sync="show_search_facility"
|
||
:itemInfo_.sync="search_value_facility"></chooseFacilitySingle>
|
||
<!-- //搜索仓位列表 -->
|
||
<chooseFacilityLocationSingle :showsearch.sync="show_search_location" :facilityId='facilityId'
|
||
:itemInfo_.sync="search_value_location"></chooseFacilityLocationSingle>
|
||
<view class="goHome" @click='goMain()'>
|
||
<img src="@/static/img/gohome.png">
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import jweixin from '@/jweixin-module/index.js';
|
||
import xinsoftFormInput from '@/components/xinsoft-form-input/xinsoft-form-input.vue'
|
||
//搜索仓库列表
|
||
import chooseFacilitySingle from '@/components/xinsoft-search-list/chooseFacilitySingle.vue'
|
||
//搜索仓位列表
|
||
import chooseFacilityLocationSingle from '@/components/xinsoft-search-list/chooseFacilityLocationSingle.vue'
|
||
//扫码组件
|
||
import xinsoftScan from '@/components/wms/xinsoft-scan.vue'
|
||
export default {
|
||
components: {
|
||
xinsoftFormInput,chooseFacilitySingle,chooseFacilityLocationSingle,xinsoftScan
|
||
},
|
||
data() {
|
||
return {
|
||
userId:'',
|
||
deptId:'',
|
||
query:false,
|
||
qrCodeProps:{
|
||
title:'扫码入库明细',
|
||
countType:'入库数量',
|
||
qrCodeDetailUrl:'/apis/scm/qrcode/inDetail',
|
||
countEdit:true,//入库/出库数量是否有disabled. true数量不可修改,false数量可修改
|
||
inType:1,//入库类型 0:采购入库,1:生产入库,2:委外入库,3:其他入库
|
||
isMultiple:1,//是否多单入库 1:是,0:否
|
||
contractNo:'',//合同号
|
||
id:'',//源单id
|
||
},
|
||
itemDefine1:{
|
||
title: "仓库",
|
||
fieldName: "valueName",
|
||
type: "kd-vlookup-edit",
|
||
required: true,
|
||
disabled: true,
|
||
placeholder: "",
|
||
canClear:false,//是否带清空按钮
|
||
},
|
||
dataItem1:{
|
||
valueName: "",
|
||
},
|
||
itemDefine2:{
|
||
title: "仓位",
|
||
fieldName: "valueName",
|
||
// type: "kd-vlookup-scan",
|
||
type: "kd-vlookup-scan-edit",
|
||
required: false,
|
||
disabled: true,
|
||
placeholder: "",
|
||
canClear:false
|
||
},
|
||
dataItem2:{
|
||
valueName: "",
|
||
},
|
||
show_search_facility:false,//显示仓库搜索列表
|
||
search_value_facility:[],//选择的仓库信息
|
||
show_search_location:false,//显示仓位搜索列表
|
||
search_value_location:[],//选择的仓位信息
|
||
facilityId:'',//选的仓库id,
|
||
facilityLocationId:'',//选的仓位id,
|
||
}
|
||
},
|
||
mounted() {
|
||
let _this=this;
|
||
uni.getStorage({
|
||
key: 'userInfo',
|
||
success: function (res) {
|
||
_this.userId=res.data.userId
|
||
_this.deptId=res.data.deptId
|
||
}
|
||
});
|
||
let query=this.$route.query;
|
||
if(query.contractNo){//获取列表页带过来的参数
|
||
this.qrCodeProps.contractNo=decodeURIComponent(query.contractNo)
|
||
this.qrCodeProps.id=decodeURIComponent(query.id)
|
||
console.log(this.qrCodeProps.id)
|
||
this.qrCodeProps.isMultiple=0
|
||
}
|
||
this.query=true//必须要有这句
|
||
this.initiateWX();
|
||
},
|
||
|
||
methods:{
|
||
//获取微信相关
|
||
initiateWX() {
|
||
this.$http
|
||
.request({
|
||
url: '/apis/weChat/getSignature',
|
||
params: {
|
||
// url:"http://120.132.17.220:18093/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.corpId, // 必填,公众号的唯一标识
|
||
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
|
||
});
|
||
});
|
||
},
|
||
//点击显示仓库列表
|
||
searchFacility(){
|
||
this.show_search_facility=true;
|
||
},
|
||
////点击显示仓位列表
|
||
searchFacilityLocation(){
|
||
if(this.facilityId==''){
|
||
uni.showToast({
|
||
title:'请先选择仓库',
|
||
icon:"none",
|
||
duration: 2000
|
||
});
|
||
}else{
|
||
this.show_search_location=true;
|
||
}
|
||
},
|
||
//点击扫码仓位
|
||
scanFacilityLocation(){
|
||
console.log("你点击了按钮")
|
||
if(this.facilityId==''){
|
||
uni.showToast({
|
||
title:'请先选择仓库',
|
||
icon:"none",
|
||
duration: 2000
|
||
});
|
||
} else {
|
||
// 允许从相机和相册扫码
|
||
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.facilityLocationId) {
|
||
|
||
_this.getQrCodeInfo(resultStr.facilityLocationId);
|
||
} 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(facilityLocationId) {
|
||
var _this = this
|
||
this.$http
|
||
.request({
|
||
url: '/apis/facilityLocation/detail',
|
||
params: {
|
||
id: facilityLocationId,
|
||
},
|
||
method: 'GET'
|
||
})
|
||
.then(res => {
|
||
if (res.data.code == 0) {
|
||
if(res.data.data.facilityId==_this.facilityId) {
|
||
_this.dataItem2.valueName=res.data.data.name
|
||
_this.facilityLocationId=res.data.data.id
|
||
|
||
} else {
|
||
uni.showToast({
|
||
title: '对不起,当前扫描的仓位不属于所选仓库,请核对后重新操作。',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
_this.dataItem2.valueName=''
|
||
_this.facilityLocationId=''
|
||
}
|
||
|
||
}else{
|
||
uni.showToast({
|
||
title: res.data.msg? res.data.msg:'扫码失败',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
}
|
||
});
|
||
},
|
||
//获取当前时间
|
||
getCurrentTime(){
|
||
let date = new Date();
|
||
let y = date.getFullYear();
|
||
let MM = date.getMonth() + 1;
|
||
MM = MM < 10 ? ('0' + MM) : MM;
|
||
let d = date.getDate();
|
||
d = d < 10 ? ('0' + d) : d;
|
||
let h = date.getHours();
|
||
h = h < 10 ? ('0' + h) : h;
|
||
let m = date.getMinutes();
|
||
m = m < 10 ? ('0' + m) : m;
|
||
let s = date.getSeconds();
|
||
s = s < 10 ? ('0' + s) : s;
|
||
return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
||
},
|
||
submitData(data){
|
||
console.log(data)
|
||
if(this.facilityId==''){
|
||
uni.showToast({
|
||
title: '请先选择仓库',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
return
|
||
}
|
||
if(data.length==0){
|
||
uni.showToast({
|
||
title: '请先扫码',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
return
|
||
}
|
||
let _this=this;
|
||
let bodyDetail=[];
|
||
data.forEach(p=>{
|
||
let json_={
|
||
materielId:p.materielId,
|
||
count:p.count?p.count:0,
|
||
warehouse:_this.facilityId,
|
||
qrcodeId:p.qrcodeId,
|
||
unitPrice:p.unitPrice,
|
||
amount:p.amount,
|
||
supportUom:p.supportUom,
|
||
}
|
||
if(p.batch){
|
||
json_.batch=p.batch
|
||
}
|
||
if(_this.facilityLocationId&&_this.facilityLocationId!=''){
|
||
json_.warehLocation=_this.facilityLocationId
|
||
}
|
||
if(this.qrCodeProps.contractNo){
|
||
json_.sourceType=278//生产计划单的源单类型
|
||
json_.sourceId=this.qrCodeProps.id
|
||
json_.sourceCode=this.qrCodeProps.contractNo
|
||
}
|
||
bodyDetail.push(json_)
|
||
})
|
||
|
||
this.$http.request({
|
||
url: '/apis/scm/produceInStock/saveAndChange',//生产入库
|
||
params: {
|
||
inOutTime: this.getCurrentTime(),
|
||
qrSign:1,
|
||
bodyDetail:encodeURIComponent(JSON.stringify(bodyDetail))
|
||
},
|
||
}).then(res => {
|
||
if(res.data.code==0){
|
||
uni.showToast({
|
||
title:"提交成功",
|
||
icon:"none",
|
||
duration: 2000
|
||
});
|
||
setTimeout(function(){
|
||
uni.redirectTo({
|
||
url: 'index'
|
||
});
|
||
},1000)
|
||
}else{
|
||
uni.showToast({
|
||
title:res.data.msg?res.data.msg:"提交失败",
|
||
icon:"none",
|
||
duration: 2000
|
||
});
|
||
}
|
||
|
||
}).catch(err => {
|
||
uni.showToast({
|
||
title:err,
|
||
icon:"none",
|
||
duration: 2000
|
||
});
|
||
});
|
||
}
|
||
},
|
||
watch:{
|
||
search_value_facility(newv){
|
||
this.dataItem1.valueName=newv.name
|
||
this.facilityId=newv.id;
|
||
},
|
||
search_value_location(newv){
|
||
this.dataItem2.valueName=newv.name
|
||
this.facilityLocationId=newv.id
|
||
},
|
||
facilityId(newv,oldv){
|
||
if(newv!=oldv&&oldv!=''){
|
||
this.facilityLocationId='';
|
||
this.dataItem2.valueName=''
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.container{
|
||
position: relative;
|
||
min-height: 100%;
|
||
background-color: #fff;
|
||
}
|
||
.supplier{
|
||
height: 40px;
|
||
line-height: 40px;
|
||
border-bottom: 1px solid #e6e6e6;
|
||
box-sizing: border-box;
|
||
font-size: 15px;
|
||
padding: 0 10px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
</style>
|