You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

665 lines
17 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// pages/install/install.js
const {
usedMaterial,
getUsedMaterialInfo,
deleteUsedRocerd,
getWarehouseList,
saveWarehouse,
saveMaterialSN,checkMaterialCode
} = require('../../../api/api')
const { routeLink } = require("../../../utils/route.js");
import Dialog from '@vant/weapp/dialog/dialog';
Page({
/**
* 页面的初始数据
*/
data: {
mshow: false,
title: '逆变器物料条码',
materialCode: '',
converterList: [],
oldConverterList: [],
oldItemList: [],
batchCode: '',//批量条码
showDialog: false,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.data.entryId = options.projectId;
this.getWarehouseList()
},
onShow() {
// this.getWarehouseList()
},
/** 跳转连续扫码 **/
goScanCode(e) {
// console.log(66666, e)
var that = this;
var materialType = e.currentTarget.dataset.type; //1逆变器3组件
var nbqSpec = e.currentTarget.dataset.spec; //规格
var dataNum = e.currentTarget.dataset.num; //剩余数量
var zb = e.currentTarget.dataset.zb; //自备物料
var model = e.currentTarget.dataset.model; //型号
var spec = ''; //规格
if(materialType == 1){//1逆变器
spec = nbqSpec
}else if(materialType == 3){//1逆变器3组件
spec = this.data.zjMap.model
}
if (!that.data.warehouseId) {
wx.showToast({
title: '请先选择所属仓库',
icon: 'none'
})
return
}
this.setData({
lxSpec: spec,
lxMaterialType: materialType,
lxMaterialModel: model
})
console.log('剩余数量', dataNum)
let warehouseId = that.data.warehouseId?that.data.warehouseId: ''
routeLink("/pages/scanCode/scanCode?entryId="+ this.data.entryId +"&model="+model+"&warehouseId="+ warehouseId +"&spec="+ spec +"&materialType="+ materialType +"&zb="+ zb +"&num="+dataNum);
},
/**批量条码处理**/
getBatchCode(e){
var that = this
if (!that.data.warehouseId) {
wx.showToast({
title: '请先选择所属仓库',
icon: 'none'
})
return
}
usedMaterial({
userId: wx.getStorageSync('userId'),
entryId: that.data.entryId,
barcode: that.data.batchCode,
warehouseId: that.data.warehouseId,
flag: 1,
spec: that.data.lxSpec,
materialType: that.data.lxMaterialType,
materialModel: that.data.lxMaterialModel,
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
that.getUsedMaterialInfo()
} else {
let msgStr = res.msg || res.errMsg
// that.getUsedMaterialInfo()
Dialog.alert({
message: msgStr.replace(';',';'),
});
}
})
// console.log('批量条码处理', this.data.batchCode)
},
/**
*
*
* 单独扫码
*
* @param {*} e
*/
scanCode(e) {
var that = this;
var materialType = e.currentTarget.dataset.type; //1逆变器3组件
var nbqspec = e.currentTarget.dataset.spec; //规格
var materialModel = e.currentTarget.dataset.model; //型号
var spec = ''; //规格
if(materialType == 1){//1逆变器
spec = nbqspec
}else if(materialType == 3){//1逆变器3组件
spec = this.data.zjMap.model
}
if (!that.data.warehouseId) {
wx.showToast({
title: '请先选择所属仓库',
icon: 'none'
})
return
}
// 只允许从相机扫码
wx.showLoading({
title: "扫码查询中"
})
wx.scanCode({
onlyFromCamera: true,
success(res) {
let result = res.result.split(',');
if(result.length>1){
result = result[0]
}else{
if(materialType =='1'){//逆变器
result = result[0].substring(0,16)
}else{//组件
result = result[0]
}
}
console.log('扫码结果', res, result)
usedMaterial({
userId: wx.getStorageSync('userId'),
entryId: that.data.entryId,
barcode: result.trim(),
warehouseId: that.data.warehouseId,
flag: 1,
spec,
materialType,
materialModel
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
that.getUsedMaterialInfo()
} else {
wx.showModal({
title: '',
content: res.msg || res.errMsg,
showCancel: false,
complete: (res) => {}
})
// wx.showToast({
// title: res.msg || res.errMsg,
// icon: 'none'
// })
}
})
},
fail(res) {
wx.showToast({
title: '扫码失败',
icon: 'none'
})
}
})
},
/**
*
* 获取仓库信息
*
*/
getWarehouseList() {
getWarehouseList({
userId: wx.getStorageSync('userId')
}).then((res) => {
if (res.code == 200) {
var warehourseList = []
for (let i = 0; i < res.data.length; i++) {
const element = res.data[i];
warehourseList.push(element.columns)
}
this.setData({
warehourseList: warehourseList
})
}
//只有一个仓库时,默认选择这个仓库
if (this.data.warehourseList.length == 1) {
saveWarehouse({
entryId: this.data.entryId,
warehouseId: this.data.warehourseList[0].id,
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
this.setData({
warehourseName: this.data.warehourseList[0].name,
warehouseId: this.data.warehourseList[0].id,
})
} else {
this.setData({
warehourseName: "",
warehouseId: "",
})
wx.showToast({
title: '选择失败',
icon: "none"
})
}
})
}
this.getUsedMaterialInfo()
})
},
/**
*
* 获取使用物料列表
*
* @param {*} e
*/
getUsedMaterialInfo(e) {
getUsedMaterialInfo({
entryId: this.data.entryId,
}).then((res) => {
var componentList = []; //组件
var converterList = []; //逆变器
var cagesList = []; //并网箱
var supportList = []; //支架
if (res.code == 200) {
res.data.materialEntryList = JSON.parse(res.data.materialEntryList)
console.log(9999, res.data.materialEntryList)
if (res.data.warehouseId) {
this.data.warehourseList.forEach(element => {
if (element.id == res.data.warehouseId) {
this.setData({
warehourseName: element.name,
warehouseId: res.data.warehouseId
})
}
});
}
if (res.data.materialEntryList.length > 0) {//有安装数据
res.data.materialEntryList.forEach(element => {
if (element.type == "组件") {
componentList.push(element)
} else if (element.type == "逆变器") {
converterList.push(element)
} else if (element.type == "并网箱") {
cagesList.push(element)
} else if (element.type == "支架") {
supportList.push(element)
}
});
var list = [];
componentList.forEach(element => {
var pos = list.findIndex((res) => {
return res.materialId == element.materialId
})
if (pos == -1) {
element.itemList = [JSON.parse(JSON.stringify(element))]
list.push(element)
} else {
list[pos].itemList.push(element)
}
});
var list1 = [];
converterList.forEach(element => {
var pos = list1.findIndex((res) => {
return res.materialId == element.materialId
})
if (pos == -1) {
element.itemList = [JSON.parse(JSON.stringify(element))]
list1.push(element)
} else {
list1[pos].itemList.push(element)
}
});
//保留输入的数据
let oldItemList = this.data.oldItemList;
if(list1.length>0 && oldItemList.length>0){
list1.forEach((item,index)=>{
item.itemList.forEach((item2,index2)=>{
oldItemList.forEach((itm, index3)=>{
if(item2.id === itm.id){
item2.sn = itm.sn
}
})
})
})
// oldItemList.forEach((item,index)=>{
// list1[index].itemList.forEach((itm)=>{
// if(itm.id === item.id){
// itm.sn = item.sn
// }
// })
// })
}
// console.log(9966, list1,oldItemList)
// list1.forEach(itm=>{
// oldItemList.forEach((item,index)=>{
// if(itm.itemList[index].id === item.id){
// itm.itemList[index] = item
// }
// })
// })
this.setData({
componentList: list,
converterList: list1,
cagesList: cagesList,
supportList: supportList,
// nbqMap: JSON.parse(res.data.nbqMap),
nbqList: JSON.parse(res.data.nbqMap),
zjMap: JSON.parse(res.data.zjMap)
})
// console.log(5555, this.data.converterList)
} else {
this.setData({
componentList: [],
converterList: [],
cagesList: [],
supportList: [],
// nbqMap: JSON.parse(res.data.nbqMap),
nbqList: JSON.parse(res.data.nbqMap),
zjMap: JSON.parse(res.data.zjMap)
})
}
}
})
},
/**
*
* 删除物料
*
*
* @param {*} e
*/
deleteUsedRocerd(e) {
const ids = e.currentTarget.dataset.id
const oldFlag = e.currentTarget.dataset.oldflag
const index = e.currentTarget.dataset.index
const type = e.currentTarget.dataset.type
// console.log(111, index)
if (oldFlag == 2) {
wx.showToast({
title: '旧物料不可删除',
icon: 'none'
})
return
}
wx.showModal({
title: '提示',
content: '确认删除当前物料?',
complete: (res) => {
if (res.cancel) {
// this.getUsedMaterialInfo()
}
if (res.confirm) {
deleteUsedRocerd({
ids: ids
}).then((res) => {
if (res.code == 200) {
if(type=='nbq'){
let oldItemList = this.data.oldItemList;
if(index>-1){
oldItemList.splice(index, 1)
}
this.setData({
oldItemList
})
}
wx.showToast({
title: '删除成功',
icon: 'none'
})
this.getUsedMaterialInfo()
} else {
wx.showToast({
title: res.errMsg,
icon: 'none'
})
}
})
}
}
})
},
/**
*
*
* 添加自用
*
* @param {*} e
*/
installOwn(e) {
if (!this.data.warehouseId) {
wx.showToast({
title: '请先选择所属仓库',
icon: 'none'
})
return
}
wx.navigateTo({
url: '/home/pages/installOwn/installOwn?entryId=' + this.data.entryId + "&type=" + e.currentTarget.dataset.type +
"&warehouseId=" + this.data.warehouseId,
})
},
/**
*
*
* 选择所属仓库
*
* @param {*} e
*/
bindWarehourseList(e) {
const index = e.detail.value
wx.showLoading({
title: '保存中',
})
saveWarehouse({
entryId: this.data.entryId,
warehouseId: this.data.warehourseList[index].id,
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
this.setData({
warehourseName: this.data.warehourseList[index].name,
warehouseId: this.data.warehourseList[index].id,
})
} else {
this.setData({
warehourseName: "",
})
wx.showToast({
title: '选择失败',
icon: "none"
})
}
})
},
/**
*
*
* 添加物料
*
* @param {*} e
*/
addMaterial(e){
this.setData({
mshow: true,
title: e.currentTarget.dataset.title,
materialType: e.currentTarget.dataset.type,
nbqSpec: e.currentTarget.dataset.spec,
})
},
//取消
onClose() {
this.setData({
mshow: false,
materialCode: ''
})
},
//确认保存物料
onConfirm(){
let that = this
if(this.data.materialCode ==''){
wx.showToast({
title: '请输入物料条码',
icon: 'none'
})
return
}
if (!that.data.warehouseId) {
wx.showToast({
title: '请先选择所属仓库',
icon: 'none'
})
return
}
usedMaterial({
userId: wx.getStorageSync('userId'),
entryId: that.data.entryId,
barcode: that.data.materialCode,
warehouseId: that.data.warehouseId,
flag: 1,
spec: that.data.nbqSpec,
materialType: that.data.materialType
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
that.setData({
mshow: false,
materialCode: ''
})
that.getUsedMaterialInfo()
} else {
wx.showToast({
title: res.msg || res.errMsg,
icon: 'none'
})
}
})
},
//输入SN码/扫码
snFn(e){
let that = this
let way = e.currentTarget.dataset.way; //录入方式input输入scan扫码
let type = e.currentTarget.dataset.type; //类型nbqSn逆变器sn码,sn通讯棒sn码
let cindex = e.currentTarget.dataset.cind; //一级下标
let index = e.currentTarget.dataset.ind; //二级下标
if(way =='input'){
if(type ==='sn'){
that.setData({
[`converterList[${cindex}].itemList[${index}].sn`]: e.detail.value.trim()
})
}else if(type==='yzm'){
that.setData({
[`converterList[${cindex}].itemList[${index}].yzCode`]: e.detail.value.trim()
})
}else{
that.setData({
[`converterList[${cindex}].itemList[${index}].nbqSn`]: e.detail.value.trim()
})
}
// console.log(98989, this.data.converterList)
}else if(way =='scan'){
wx.scanCode({
onlyFromCamera: true,
success(res) {
if(type ==='sn'){
let result = res.result.split(',');
if(result.length>1){
result = result[0]
}else{
result = res.result
}
if (!/^[a-zA-Z0-9]+$/.test(result)) {
wx.showToast({
title: '条码格式异常,请重新扫码',
icon: 'none',
duration: 2000
})
return;
}
that.setData({
[`converterList[${cindex}].itemList[${index}].sn`]: result
})
}else{
that.setData({
[`converterList[${cindex}].itemList[${index}].nbqSn`]: res.result
})
}
},
fail(res) {
wx.showToast({
title: '扫码失败',
icon: 'none'
})
}
})
}
let itemList = []
this.data.converterList.forEach(item=>{
item.itemList.forEach(itm=>{
itemList.push(itm)
})
})
this.setData({
oldItemList: itemList
})
// console.log('输入', itemList)
},
//保存逆变器
submit(){
let that = this
let list = this.data.converterList
let itemArr = [];
try{
list.forEach(item=>{
item.itemList.forEach(item2=>{
itemArr.push({
entryId: item.entryId,
materialId: item.materialId,
barcode: item2.barcode, //物料号
sn: item2.sn,
nbqSn: item2.barcode,
yzCode: item2.yzCode
})
if(!item2.barcode || !item2.sn){
wx.showToast({
title: '逆变器SN码通讯棒SN码不能为空',
icon: 'none'
})
throw Error()
}
if((item.materialBrand=='固德威'|| item.materialBrand=='爱士惟') && !item2.yzCode){
wx.showToast({
title: '请正确填写验证码',
icon: 'none'
})
throw Error()
}
})
})
// console.log(8989, itemArr)
// return
saveMaterialSN({
userId: wx.getStorageSync('userId'),
snList: itemArr
}).then((res) => {
wx.hideLoading()
if (res.code == 200) {
wx.showToast({
title: '保存成功',
icon: 'none'
})
setTimeout(function () {
wx.navigateBack()
}, 1500)
} else {
wx.showToast({
title: res.msg || res.errMsg,
icon: 'none'
})
}
})
}catch(e) {
console.log(e)
}
}
})