|
|
@@ -7,20 +7,20 @@ Page({
|
|
|
mixins: [mixins],
|
|
|
/**
|
|
|
* 页面的初始数据 采购退货相关 TODO
|
|
|
- */
|
|
|
+ */
|
|
|
data: {
|
|
|
routeObjName: 'inboundReturn',
|
|
|
tableData: [],
|
|
|
table: Constants.tables.purchase,
|
|
|
commonService: app.globalData['commonService'],
|
|
|
inboundPurchaseReturnService: app.globalData['inboundPurchaseReturnService'],
|
|
|
- btnFormData: JSON.stringify({ flag: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false }),
|
|
|
+ btnFormData: JSON.stringify({
|
|
|
+ flag: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false
|
|
|
+ }),
|
|
|
+ validFlag: true,
|
|
|
// 系统参数
|
|
|
flgHandleSetting: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false,
|
|
|
pageFlag: false,
|
|
|
- flgAutoIvt: false,
|
|
|
- showPopFlag: true,
|
|
|
- stepperFlag: true,
|
|
|
cardList: [
|
|
|
{ name: 'main', title: '' },
|
|
|
{ name: 'relation', title: '' },
|
|
|
@@ -125,7 +125,6 @@ Page({
|
|
|
formData.address = {
|
|
|
address: data.item.returnAddress,
|
|
|
addressFull: data.item.returnAddress,
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
///设置主从业务员
|
|
|
@@ -171,14 +170,20 @@ Page({
|
|
|
let itemIndex = 0
|
|
|
let formData = JSON.parse(this.data.formData)
|
|
|
params.fromNo = (params.fromNo && params.fromNo.length > 0) ? params.fromNo[0] : null
|
|
|
- params.fromId = this.data.item? (this.data.item.purId ? this.data.item.purId : params.purId) : null
|
|
|
+ params.fromId = this.data.item ? (this.data.item.purId ? this.data.item.purId : params.purId) : null
|
|
|
params.factAmt = params.intoingAmt
|
|
|
params.intoQty = this.convertToNegative(params.intoQty)
|
|
|
params.intoAmt = this.convertToNegative(params.intoAmt)
|
|
|
+ if (this.data.formMode == 'edit') {
|
|
|
+ delete params['intoType']
|
|
|
+ }
|
|
|
params.goodsList.forEach(res => {
|
|
|
delete res['priceReturn']
|
|
|
delete res['pricePurchase']
|
|
|
delete res['rejectQty']
|
|
|
+ if (this.data.formMode == 'edit') {
|
|
|
+ delete res['intoType']
|
|
|
+ }
|
|
|
res.sIntoId = res.sIntoId ? res.sIntoId : params.outId
|
|
|
res.sPurId = res.sPurId ? res.sPurId : params.purId
|
|
|
res.supId = res.supId ? res.supId : null
|
|
|
@@ -232,14 +237,159 @@ Page({
|
|
|
convertToNegative(number) {
|
|
|
return Math.abs(number) * -1
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc : 保存数据服务--校验
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 王英杰
|
|
|
+ */
|
|
|
+ validData() {
|
|
|
+ let msgError = null
|
|
|
+ let formData = JSON.parse(this.data.formData)
|
|
|
+ if (this.data.formMode == Constants.formMode.edit) { //编辑
|
|
|
+ let changeList = this.searchEditList(this.data.searchEditList, formData.goodsList)
|
|
|
+ let deleteList = formData.deleteList ? formData.deleteList.filter(it => !!it["itemId"]) : [] //过滤掉选择的商品 留下查询出的
|
|
|
+ if (changeList.length <= 0 && deleteList.length <= 0) { //明细未改变
|
|
|
+ let changeData = this.isEqualFormData(JSON.parse(this.data.initialFormData), formData)
|
|
|
+ if (changeData) { //总单也未改变
|
|
|
+ msgError = '数据未修改';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (msgError != null) {
|
|
|
+ utils.showToast(msgError);
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 查找出 编辑过的list数据(处理前 整理数据)
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 王英杰
|
|
|
+ */
|
|
|
+ searchEditList(oldList_, newList_) {
|
|
|
+ //因为isEqual 对比方法 的对象 要一样内容对比
|
|
|
+ let oldList = []
|
|
|
+ let newList = []
|
|
|
+ oldList_.forEach(element => {
|
|
|
+ oldList.push({
|
|
|
+ itemId: element.itemId,
|
|
|
+ skuId: element.skuId,
|
|
|
+ skuModel: element.skuModel,
|
|
|
+ skuName: element.skuName,
|
|
|
+ intoingQty: Number(element.intoingQty),
|
|
|
+ priceInto: element.priceInto,
|
|
|
+ whId: element.whId,
|
|
|
+ nonStdCode: element.nonStdCode,
|
|
|
+ flgGift: element.flgGift,
|
|
|
+ remarks: element.remarks,
|
|
|
+ })
|
|
|
+ });
|
|
|
+ newList_.forEach(element => {
|
|
|
+ newList.push({
|
|
|
+ itemId: element.itemId,
|
|
|
+ skuId: element.skuId,
|
|
|
+ skuModel: element.skuModel,
|
|
|
+ skuName: element.skuName,
|
|
|
+ intoingQty: Number(element.intoingQty),
|
|
|
+ priceInto: element.priceInto,
|
|
|
+ whId: element.whId,
|
|
|
+ nonStdCode: element.nonStdCode,
|
|
|
+ flgGift: element.flgGift,
|
|
|
+ remarks: element.remarks,
|
|
|
+ })
|
|
|
+ });
|
|
|
+ return this.findChangedItems(oldList, newList, newList_)
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc : 查找出 编辑过的list数据
|
|
|
+ * 参数 一 编辑查询出的数据
|
|
|
+ * 二 修改以及未修改的数据
|
|
|
+ * 三 是未格式处理的 混合数据(取值用 因为isEqual要求对比数据格式统一 所以一和二是处理过的 如果从二取值 会丢失数据)
|
|
|
+ * _.isEqual:lodash 库中的函数
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 王英杰
|
|
|
+ */
|
|
|
+ findChangedItems(oldList, newList, unHandleNewData) {
|
|
|
+ let changedItems = [];
|
|
|
+ // 建一个映射,以便快速查找 oldList 中的 item
|
|
|
+ const oldMap = new Map(oldList.map(item => [item.itemId, item]));
|
|
|
+ // 遍历 newList
|
|
|
+ newList.forEach((item, index) => {
|
|
|
+ // 尝试在 oldMap 中找到对应的 item
|
|
|
+ const oldItem = oldMap.get(item.itemId);
|
|
|
+ // 如果找不到,说明这是一个新添加的 item
|
|
|
+ // 如果找到了但内容不同,则视为改动
|
|
|
+ if (!oldItem || !_.isEqual(oldItem, item)) {
|
|
|
+ changedItems.push(unHandleNewData[index]); // 将改动或新添加的 item 添加到 changedItems 中
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return changedItems;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc :检查总单是否编辑过(处理前 整理数据)
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 王英杰
|
|
|
+ */
|
|
|
+ isEqualFormData(oldData_, newData_) {
|
|
|
+ //因为isEqual 对比方法 的对象 要一样内容对比
|
|
|
+ let oldData = {
|
|
|
+ supId: newData_.supId || '',
|
|
|
+ supName: newData_.supName || '',
|
|
|
+ remarks: newData_.remarks || '',
|
|
|
+ }
|
|
|
+ let newData = {
|
|
|
+ supId: newData_.supId || '',
|
|
|
+ supName: newData_.supName || '',
|
|
|
+ remarks: newData_.remarks || '',
|
|
|
+ }
|
|
|
+ //验证总单上的 附件list
|
|
|
+ let oldData_annexPaths = oldData_.annexPaths || []
|
|
|
+ let newData_annexPaths = newData_.annexPaths || []
|
|
|
+ let annexPathsEditFalg = this.hasGoodsChanged(oldData_annexPaths, newData_annexPaths)
|
|
|
+ if (annexPathsEditFalg) { //说明有附件改变
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ //_.isEqual:lodash 库中的函数
|
|
|
+ if (!_.isEqual(oldData, newData)) { //不相同进
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @desc : 对比 附件是否相同
|
|
|
+ * @date : 2024/2/1 15:49
|
|
|
+ * @author : 王英杰
|
|
|
+ */
|
|
|
+ hasGoodsChanged(originalList, currentList) {
|
|
|
+ if (originalList.length !== currentList.length) {
|
|
|
+ return true; // 列表长度不同,认为有改动
|
|
|
+ }
|
|
|
+ for (let i = 0; i < originalList.length; i++) {
|
|
|
+ if (!_.isEqual(originalList[i], currentList[i])) {
|
|
|
+ return true; // 找到一个不同的商品,认为有改动
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false; // 所有商品都相同,没有改动
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* @desc : 保存数据服务
|
|
|
* @date : 2024/2/1 15:49
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
saveData() {
|
|
|
- if (this.data.formType == Constants.formMode.edit) {
|
|
|
- return this.excute(this.data.service, this.data.service.update, this.data.params);
|
|
|
+ if (this.data.formMode == Constants.formMode.edit) {
|
|
|
+ return this.excute(this.data.inboundPurchaseReturnService, this.data.inboundPurchaseReturnService.inboundUpdate, this.data.params);
|
|
|
} else {
|
|
|
return this.excute(this.data.inboundPurchaseReturnService, this.data.inboundPurchaseReturnService.inboundInsert, this.data.params);
|
|
|
}
|
|
|
@@ -249,25 +399,25 @@ Page({
|
|
|
* @date : 2024/2/1 15:49
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
- handleData(){
|
|
|
+ handleData() {
|
|
|
let cardList = this.data.cardList
|
|
|
let contentSaveList = this.data.contentSaveList
|
|
|
- cardList.forEach(res=>{
|
|
|
- if(res.name == 'items'){
|
|
|
- res.sumAmount = 0
|
|
|
- res.sumQuantity = 0
|
|
|
- res.chooseGoodsFlag = true
|
|
|
+ cardList.forEach(res => {
|
|
|
+ if (res.name == 'items') {
|
|
|
+ res.sumAmount = 0
|
|
|
+ res.sumQuantity = 0
|
|
|
+ res.chooseGoodsFlag = true
|
|
|
}
|
|
|
})
|
|
|
- contentSaveList.forEach(res=>{
|
|
|
- if(res.code == 'sumAmount'){
|
|
|
- res.content = 0
|
|
|
+ contentSaveList.forEach(res => {
|
|
|
+ if (res.code == 'sumAmount') {
|
|
|
+ res.content = 0
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
this.setData({
|
|
|
- cardList:cardList,
|
|
|
- contentSaveList:contentSaveList
|
|
|
+ cardList: cardList,
|
|
|
+ contentSaveList: contentSaveList
|
|
|
})
|
|
|
},
|
|
|
|
|
|
@@ -484,33 +634,72 @@ Page({
|
|
|
*/
|
|
|
setValuesByEdit(data) {
|
|
|
let formData = JSON.parse(this.data.formData)
|
|
|
- data.goodsList.forEach(res => {
|
|
|
- //处理图片
|
|
|
- if (res.skuImages) {
|
|
|
- res['imagesUrl'] = res.skuImages.length > 0 ? res.skuImages[0].url : null
|
|
|
- }
|
|
|
- res['itemQty'] = res.returnQty
|
|
|
- res['itemQtyMin'] = res.sintoItemIntoQty ? Number(res.sintoItemIntoQty * -1) : Number(res.invQty * -1)
|
|
|
- res['itemQtyMax'] = Number(-1)
|
|
|
- res['priceReturn'] = res.priceInto * -1
|
|
|
- if (res.fromId) {
|
|
|
- //有关联源单
|
|
|
- res['swipeDisabled'] = true
|
|
|
- }
|
|
|
- })
|
|
|
- formData = data
|
|
|
+ formData = data.data
|
|
|
//处理地址
|
|
|
formData.address = {
|
|
|
address: data.returnAddress,
|
|
|
- addressFull: data.returnAddress,
|
|
|
+ addressFull: data.returnAddress
|
|
|
}
|
|
|
+ formData['staff'] = {
|
|
|
+ text: formData.staffName ? formData.staffName : app.globalData.user.staffName,
|
|
|
+ value: [formData.staffId ? formData.staffId : app.globalData.user.staffId]
|
|
|
+ }
|
|
|
+ formData['org'] = {
|
|
|
+ text: formData.orgName ? formData.orgName : app.globalData.user.orgName,
|
|
|
+ value: [formData.orgId ? formData.orgId : app.globalData.user.orgId]
|
|
|
+ }
|
|
|
+ formData.orgId = formData.orgId ? formData.orgId : app.globalData.user.orgId
|
|
|
+ formData.staffId = formData.staffId ? formData.staffId : app.globalData.user.staffId
|
|
|
+ data.dataItem.forEach(item => {
|
|
|
+ item.intoingQty_max = 0
|
|
|
+ item.priceStd = item.priceInto
|
|
|
+ //处理图片
|
|
|
+ if (item.skuImages) {
|
|
|
+ item['imagesUrl'] = item.skuImages.length > 0 ? item.skuImages[0].url : null
|
|
|
+ }
|
|
|
+ item.intoingQty_min = item.canReturnQty ? item.canReturnQty : item.invQty * -1 //可出库最大值
|
|
|
+
|
|
|
+ })
|
|
|
+ formData.goodsList = data.dataItem
|
|
|
+ let searchEditList = data.dataItem
|
|
|
+ searchEditList.forEach(element => {
|
|
|
+ if (this.data.formMode == Constants.formMode.edit) {
|
|
|
+ element.eidtFlag = true
|
|
|
+ }
|
|
|
+ });
|
|
|
+ formData.goodsList.forEach(element => {
|
|
|
+ if (this.data.formMode == Constants.formMode.edit) {
|
|
|
+ element.eidtFlag = true
|
|
|
+ }
|
|
|
+ if (element.intoStatus == Constants.intoStatus.inBounded) {
|
|
|
+ element.box = element.intoBox
|
|
|
+ element.piece = element.intoPiece
|
|
|
+ } else {
|
|
|
+ element.box = element.intoingBox
|
|
|
+ element.piece = element.intoingPiece
|
|
|
+ }
|
|
|
+ if (element.flgSubUnit) {
|
|
|
+ element.calculationFormula = element.packBox + element.unitName + '= 1' + element.subUnitName
|
|
|
+ element.packageBox = element['box'] + element.subUnitName + element['piece'] + element.unitName
|
|
|
+ }
|
|
|
+ element.sumPrice = element.priceInto * element.itemQty
|
|
|
+ // 原仓库ID 240701
|
|
|
+ element.whIdPri = element.whId
|
|
|
+ element.nonStdCodePri = element.nonStdCode
|
|
|
+ })
|
|
|
this.setData({
|
|
|
- beforeSumAmount: data.returnAmt,
|
|
|
- formData: JSON.stringify(formData)
|
|
|
+ beforeSumAmount: formData.returnAmt,
|
|
|
+ searchEditList: searchEditList,
|
|
|
+ formData: JSON.stringify(formData),
|
|
|
+ initialFormData: JSON.stringify(formData)
|
|
|
})
|
|
|
- //设置业务员业务部门
|
|
|
- this.setStaffOrg()
|
|
|
this.calculateTotal()
|
|
|
+ setTimeout(() => {
|
|
|
+ // 刷新商品明细 显示 查看更多
|
|
|
+ let card = this.data.cardList.filter(it => it.name == 'items');
|
|
|
+ this.selectComponent('#' + this.data.formName).handleContentObj(card[0])
|
|
|
+ }, 2000)
|
|
|
+
|
|
|
},
|
|
|
|
|
|
//计算可售量相关
|
|
|
@@ -634,14 +823,17 @@ Page({
|
|
|
})
|
|
|
},
|
|
|
loadInit() {
|
|
|
-
|
|
|
- let flgHandleSetting = this.data.flgHandleSetting //true为自动办理 false 为手动办理
|
|
|
- let contentSaveList = this.data.contentSaveList
|
|
|
- if (flgHandleSetting) { //系统参数中的自动办理参数 隐藏左下角cheakbox
|
|
|
- // 使用 filter 方法删除 code 为 flag 的项
|
|
|
- contentSaveList = contentSaveList.filter(item => item.code !== 'flag');
|
|
|
+ if (this.data.gradeCode == Constants.gradeCode.STD) { //标准
|
|
|
this.setData({
|
|
|
- contentSaveList: contentSaveList,
|
|
|
+ contentSaveList: [{
|
|
|
+ code: 'need',
|
|
|
+ title: mixins.$t("totalReturn"),//'合计金额',
|
|
|
+ type: 'str'
|
|
|
+ }, {
|
|
|
+ code: 'sumAmount',
|
|
|
+ content: 0,
|
|
|
+ type: 'number'
|
|
|
+ }]
|
|
|
})
|
|
|
}
|
|
|
if (this.data.formMode != Constants.formMode.edit) {
|
|
|
@@ -663,8 +855,15 @@ Page({
|
|
|
})
|
|
|
}
|
|
|
let contentObj = this.data.contentObj
|
|
|
+ // 标准版,自动出库办理标识默认勾上
|
|
|
if (this.data.gradeCode == Constants.gradeCode.STD) {
|
|
|
+ let btnFormData = JSON.parse(this.data.btnFormData) || {}
|
|
|
+ btnFormData.flag = true
|
|
|
contentObj.relation = []
|
|
|
+ this.setData({
|
|
|
+ btnFormData: JSON.stringify(btnFormData),
|
|
|
+ contentObj: contentObj
|
|
|
+ })
|
|
|
} else {
|
|
|
contentObj.relation = [{
|
|
|
code: 'fromNo',
|
|
|
@@ -675,10 +874,10 @@ Page({
|
|
|
title: mixins.$t("sourceOrder"),//'关联源单'
|
|
|
urlKey: 'selectSourcePurchaseOrder'
|
|
|
}]
|
|
|
+ this.setData({
|
|
|
+ contentObj: contentObj
|
|
|
+ })
|
|
|
}
|
|
|
- this.setData({
|
|
|
- contentObj: contentObj
|
|
|
- })
|
|
|
}
|
|
|
|
|
|
})
|