Files
2025-12-09 20:22:03 +08:00

165 lines
7.0 KiB
JavaScript

(function (vc) {
vc.extends({
data: {
constrainFinishRepairInfo: {
repairId: '',
repairType: '',
context: '',
feeFlag: '200',
repairObjType: '',
publicArea: '',
repairChannel: '',
maintenanceTypes: [],
maintenanceType: '',
totalPrice: 0,
choosedGoodsList: [],
payTypes: [],
mark: 1,
sign: 1,
payType: ''
}
},
_initMethod: function () {
//与字典表支付方式关联
vc.getDict('r_repair_pool', "pay_type", function (_data) {
vc.component.constrainFinishRepairInfo.payTypes = _data;
});
$that.constrainFinishRepairInfo.repairType = vc.getParam('repairType');
$that.constrainFinishRepairInfo.repairId = vc.getParam('repairId');
$that.constrainFinishRepairInfo.repairObjType = vc.getParam('repairObjType');
$that.constrainFinishRepairInfo.publicArea = vc.getParam('publicArea');
$that.constrainFinishRepairInfo.repairChannel = vc.getParam('repairChannel');
$that._loadMaintenanceType();
},
_initEvent: function () {
vc.on('constrainFinishRepairInfo', 'chooseSingleResource', function (_data) {
$that.constrainFinishRepairInfo.choosedGoodsList.push(_data);
$that._updateTotalPrice();
});
},
methods: {
_loadMaintenanceType() {
vc.getDict('r_repair_pool', "maintenance_type", function (_data) {
vc.component.constrainFinishRepairInfo.maintenanceTypes = _data;
});
},
finishRepairValidate() {
return vc.validate.validate({
constrainFinishRepairInfo: vc.component.constrainFinishRepairInfo
}, {
'constrainFinishRepairInfo.repairId': [{
limit: "required",
param: "",
errInfo: "报修单不能为空"
}],
'constrainFinishRepairInfo.maintenanceType': [{
limit: "required",
param: "",
errInfo: "维修类型不能为空"
}],
'constrainFinishRepairInfo.context': [{
limit: "required",
param: "",
errInfo: "处理意见不能为空"
}]
});
},
_constrainFinishRepairInfo: function () {
if (!vc.component.finishRepairValidate()) {
vc.toast(vc.validate.errInfo);
return;
}
if (vc.component.constrainFinishRepairInfo.maintenanceType == '1001' || vc.component.constrainFinishRepairInfo.maintenanceType == '1003') {
if (vc.component.constrainFinishRepairInfo.choosedGoodsList.length < 1) {
vc.toast('请选择商品');
return;
}
}
if (vc.component.constrainFinishRepairInfo.maintenanceType == '1001' && vc.component.constrainFinishRepairInfo.payType == '') {
vc.toast('请选择支付方式');
return;
}
vc.component.constrainFinishRepairInfo.communityId = vc.getCurrentCommunity().communityId;
vc.http.apiPost(
'ownerRepair.repairForceFinish',
JSON.stringify(vc.component.constrainFinishRepairInfo), {
emulateJSON: true
},
function (json, res) {
let _json = JSON.parse(json);
if (_json.code == 0) {
vc.component.clearConstrainFinishRepairInfo();
$that._back();
vc.toast("操作成功");
return;
} else {
vc.toast(_json.msg);
}
},
function (errInfo, error) {
console.log('请求失败处理');
vc.toast(errInfo);
}
);
},
// 选择商品
_openChooseSingleResourceModel: function () {
vc.emit('chooseSingleResource', 'openChooseSingleResourceModel', {
maintenanceType: vc.component.constrainFinishRepairInfo.maintenanceType,
repairId: vc.component.constrainFinishRepairInfo.repairId,
sign: 1
});
},
// 移除商品
_removeChoosedGoodsItem: function (index) {
vc.component.constrainFinishRepairInfo.choosedGoodsList.splice(index, 1);
$that._updateTotalPrice();
},
// 商品数量减少
_useNumberDec: function (index) {
if (vc.component.constrainFinishRepairInfo.choosedGoodsList[index].useNumber <= 1) {
vc.toast("不能再减少了");
return;
}
vc.component.constrainFinishRepairInfo.choosedGoodsList[index].useNumber -= 1;
this.$forceUpdate();
$that._updateTotalPrice();
},
// 商品数量增加
_useNumberInc: function (index) {
vc.component.constrainFinishRepairInfo.choosedGoodsList[index].useNumber += 1;
this.$forceUpdate();
$that._updateTotalPrice();
},
// 更新总金额
_updateTotalPrice: function () {
let totalPrice = 0;
vc.component.constrainFinishRepairInfo.choosedGoodsList.forEach((item) => {
totalPrice += item.price * item.useNumber;
});
vc.component.constrainFinishRepairInfo.totalPrice = totalPrice.toFixed(2);
},
// 返回
_back: function () {
vc.jumpToPage('/#/pages/property/repairForceFinishManage');
},
clearConstrainFinishRepairInfo: function () {
vc.component.constrainFinishRepairInfo = {
repairId: '',
repairType: '',
context: '',
feeFlag: '200',
repairObjType: '',
publicArea: '',
repairChannel: '',
maintenanceTypes: [],
maintenanceType: '',
totalPrice: 0,
mark: 1,
sign: 1,
choosedGoodsList: []
};
}
}
});
})(window.vc);