// 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) } } })