349 lines
15 KiB
JavaScript
349 lines
15 KiB
JavaScript
(function(vc) {
|
|
vc.extends({
|
|
data: {
|
|
finishRepairInfo: {
|
|
repairId: '',
|
|
repairType: '',
|
|
context: '',
|
|
feeFlag: '200',
|
|
amount: 0.0,
|
|
repairObjType: '',
|
|
maintenanceTypes: [],
|
|
maintenanceType: '',
|
|
goodsTypes: [],
|
|
resourceStores: [],
|
|
resourceStoreTypes: [],
|
|
price: '',
|
|
outLowPrice: '',
|
|
outHighPrice: '',
|
|
publicArea: '',
|
|
repairChannel: '',
|
|
conditions: {
|
|
goodsType: '',
|
|
resId: ''
|
|
},
|
|
selectedGoodsInfo: {},
|
|
useNumber: 1,
|
|
totalPrice: 0,
|
|
resId: '',
|
|
isCustom: false,
|
|
customGoodsName: '',
|
|
choosedGoodsList: []
|
|
}
|
|
},
|
|
_initMethod: function() {
|
|
vc.component.clearFinishRepairInfo();
|
|
},
|
|
_initEvent: function() {
|
|
vc.on('finishRepair', 'openFinishRepairModal', function(_repair) {
|
|
vc.component.clearFinishRepairInfo();
|
|
$that._loadMaintenanceType();
|
|
$that._listResourceStoreType();
|
|
$that.finishRepairInfo.repairType = _repair.repairType;
|
|
$that.finishRepairInfo.repairId = _repair.repairId;
|
|
$that.finishRepairInfo.repairObjType = _repair.repairObjType;
|
|
$that.finishRepairInfo.publicArea = _repair.publicArea;
|
|
$that.finishRepairInfo.repairChannel = _repair.repairChannel;
|
|
$('#finishRepairModel').modal('show');
|
|
});
|
|
},
|
|
methods: {
|
|
_loadMaintenanceType() {
|
|
vc.getDict('r_repair_pool', "maintenance_type", function(_data) {
|
|
vc.component.finishRepairInfo.maintenanceTypes = _data;
|
|
});
|
|
},
|
|
finishRepairValidate() {
|
|
return vc.validate.validate({
|
|
finishRepairInfo: vc.component.finishRepairInfo
|
|
}, {
|
|
'finishRepairInfo.repairId': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "报修单不能为空"
|
|
}],
|
|
'finishRepairInfo.maintenanceType': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "维修类型不能为空"
|
|
}],
|
|
'finishRepairInfo.conditions.goodsType': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品类型不能为空"
|
|
}],
|
|
'finishRepairInfo.conditions.resId': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品不能为空"
|
|
}],
|
|
'finishRepairInfo.price': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品价格不能为空"
|
|
},
|
|
{
|
|
limit: "money",
|
|
param: "",
|
|
errInfo: "商品价格格式错误"
|
|
},
|
|
],
|
|
'finishRepairInfo.useNumber': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品数量不能为零"
|
|
}],
|
|
'finishRepairInfo.context': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "处理意见不能为空"
|
|
}]
|
|
});
|
|
},
|
|
yongLiaoValidate() {
|
|
return vc.validate.validate({
|
|
finishRepairInfo: vc.component.finishRepairInfo
|
|
}, {
|
|
'finishRepairInfo.repairId': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "报修单不能为空"
|
|
}],
|
|
'finishRepairInfo.maintenanceType': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "维修类型不能为空"
|
|
}],
|
|
'finishRepairInfo.conditions.goodsType': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品类型不能为空"
|
|
}],
|
|
'finishRepairInfo.conditions.resId': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品不能为空"
|
|
}],
|
|
'finishRepairInfo.useNumber': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "商品数量不能为零"
|
|
}],
|
|
'finishRepairInfo.context': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "处理意见不能为空"
|
|
}]
|
|
});
|
|
},
|
|
repairValidate() {
|
|
return vc.validate.validate({
|
|
finishRepairInfo: vc.component.finishRepairInfo
|
|
}, {
|
|
'finishRepairInfo.repairId': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "报修单不能为空"
|
|
}],
|
|
'finishRepairInfo.context': [{
|
|
limit: "required",
|
|
param: "",
|
|
errInfo: "处理意见不能为空"
|
|
}]
|
|
});
|
|
},
|
|
_finishRepairInfo: function() {
|
|
// 有偿
|
|
if (vc.component.finishRepairInfo.maintenanceType == '1001' && !vc.component.finishRepairValidate()) {
|
|
vc.toast(vc.validate.errInfo);
|
|
return;
|
|
}
|
|
// 用料
|
|
if (vc.component.finishRepairInfo.maintenanceType == '1003' && !vc.component.yongLiaoValidate()) {
|
|
vc.toast(vc.validate.errInfo);
|
|
return;
|
|
}
|
|
// 无偿 或 不用料
|
|
if (vc.component.finishRepairInfo.maintenanceType != '1001' && vc.component.finishRepairInfo.maintenanceType != '1003' && !vc.component.repairValidate()) {
|
|
vc.toast(vc.validate.errInfo);
|
|
return;
|
|
}
|
|
// 自定义商品验证
|
|
if (vc.component.finishRepairInfo.isCustom && vc.component.finishRepairInfo.customGoodsName == '') {
|
|
vc.toast('商品名不能为空');
|
|
}
|
|
if (vc.component.finishRepairInfo.maintenanceType == '1002' || vc.component.finishRepairInfo.maintenanceType == '1004') {
|
|
// 无偿服务 修改商品数量为零
|
|
vc.component.finishRepairInfo.useNumber = 0;
|
|
}
|
|
vc.component.finishRepairInfo.communityId = vc.getCurrentCommunity().communityId;
|
|
vc.http.apiPost(
|
|
'ownerRepair.repairFinish',
|
|
JSON.stringify(vc.component.finishRepairInfo), {
|
|
emulateJSON: true
|
|
},
|
|
function(json, res) {
|
|
let _json = JSON.parse(json);
|
|
if (_json.code == 0) {
|
|
//关闭model
|
|
$('#finishRepairModel').modal('hide');
|
|
vc.component.clearFinishRepairInfo();
|
|
vc.emit('repairDispatchManage', 'listOwnerRepair', {});
|
|
return;
|
|
}
|
|
vc.toast(_json.msg);
|
|
},
|
|
function(errInfo, error) {
|
|
console.log('请求失败处理');
|
|
vc.toast(errInfo);
|
|
}
|
|
);
|
|
},
|
|
//选择商品类型
|
|
_choseGoods: function() {
|
|
vc.component.finishRepairInfo.conditions.resId = '';
|
|
vc.component.finishRepairInfo.resId = '';
|
|
var select = document.getElementById("goods");
|
|
vc.component.finishRepairInfo.conditions.goodsType = select.value;
|
|
if (vc.component.finishRepairInfo.conditions.goodsType == null || vc.component.finishRepairInfo.conditions.goodsType == '') {
|
|
return;
|
|
}
|
|
var param = {
|
|
params: {
|
|
page: 1,
|
|
row: 100,
|
|
goodsType: vc.component.finishRepairInfo.conditions.goodsType,
|
|
resId: vc.component.finishRepairInfo.conditions.resId,
|
|
communityId: vc.getCurrentCommunity().communityId
|
|
}
|
|
};
|
|
//发送get请求
|
|
vc.http.apiGet('resourceStore.listUserStorehouses',
|
|
param,
|
|
function(json, res) {
|
|
var _goods = JSON.parse(json);
|
|
if (vc.component.finishRepairInfo.conditions.goodsType == '1003') {
|
|
_goods.data.push({ 'resName': '自定义', 'resId': 'custom' });
|
|
}
|
|
vc.component.finishRepairInfo.resourceStores = _goods.data;
|
|
},
|
|
function(errInfo, error) {
|
|
console.log('请求失败处理');
|
|
}
|
|
);
|
|
},
|
|
//选择商品
|
|
_chosePrice: function() {
|
|
var _that = this;
|
|
var select = document.getElementById("goodsPrice");
|
|
// 如果选择自定义商品
|
|
if (select.value == 'custom') {
|
|
vc.component.finishRepairInfo.isCustom = true;
|
|
return;
|
|
} else {
|
|
vc.component.finishRepairInfo.isCustom = false;
|
|
}
|
|
vc.component.finishRepairInfo.conditions.resId = select.value;
|
|
vc.component.finishRepairInfo.resId = select.value;
|
|
// 保存选中的商品信息
|
|
vc.component.finishRepairInfo.resourceStores.forEach((item) => {
|
|
if (item.resId == select.value) {
|
|
vc.component.finishRepairInfo.selectedGoodsInfo = item;
|
|
}
|
|
})
|
|
|
|
if (vc.component.finishRepairInfo.selectedGoodsInfo.outLowPrice == vc.component.finishRepairInfo.selectedGoodsInfo.outHighPrice) {
|
|
vc.component.finishRepairInfo.price = vc.component.finishRepairInfo.selectedGoodsInfo.outLowPrice;
|
|
} else {
|
|
vc.component.finishRepairInfo.price = '';
|
|
}
|
|
_that._updateTotalPrice();
|
|
vc.component.finishRepairInfo.outLowPrice = vc.component.finishRepairInfo.selectedGoodsInfo.outLowPrice;
|
|
vc.component.finishRepairInfo.outHighPrice = vc.component.finishRepairInfo.selectedGoodsInfo.outHighPrice;
|
|
},
|
|
// 监听价格变化 更新总金额
|
|
singlePriceChanged: function() {
|
|
this._updateTotalPrice();
|
|
},
|
|
// 商品数量减少
|
|
_useNumDec: function() {
|
|
if (vc.component.finishRepairInfo.useNumber <= 1) {
|
|
vc.toast("不能再减少了");
|
|
return;
|
|
}
|
|
vc.component.finishRepairInfo.useNumber -= 1;
|
|
this._updateTotalPrice();
|
|
},
|
|
// 商品数量增加
|
|
_useNumInc: function() {
|
|
var goodsInfo = vc.component.finishRepairInfo.selectedGoodsInfo;
|
|
// if (vc.component.finishRepairInfo.useNumber >= goodsInfo.stock) {
|
|
// vc.toast("库存不足");
|
|
// return;
|
|
// }
|
|
vc.component.finishRepairInfo.useNumber += 1;
|
|
this._updateTotalPrice();
|
|
},
|
|
// 更新总金额
|
|
_updateTotalPrice: function() {
|
|
let totalPrice = vc.component.finishRepairInfo.useNumber * vc.component.finishRepairInfo.price
|
|
vc.component.finishRepairInfo.totalPrice = totalPrice.toFixed(2);
|
|
},
|
|
//查询物品类型
|
|
_listResourceStoreType: function() {
|
|
var param = {
|
|
params: {
|
|
page: 1,
|
|
row: 100,
|
|
communityId: vc.getCurrentCommunity().communityId,
|
|
parentId:'0'
|
|
}
|
|
};
|
|
//发送get请求
|
|
vc.http.apiGet('/resourceStoreType.listResourceStoreTypes',
|
|
param,
|
|
function(json, res) {
|
|
let _resourceStoreType = JSON.parse(json);
|
|
vc.component.finishRepairInfo.resourceStoreTypes = _resourceStoreType.data;
|
|
},
|
|
function(errInfo, error) {
|
|
console.log('请求失败处理');
|
|
}
|
|
);
|
|
},
|
|
// 选择商品
|
|
_openChooseSingleResourceModel: function() {
|
|
vc.emit('chooseSingleResource', 'openChooseSingleResourceModel', {});
|
|
},
|
|
clearFinishRepairInfo: function() {
|
|
vc.component.finishRepairInfo = {
|
|
repairId: '',
|
|
repairType: '',
|
|
context: '',
|
|
feeFlag: '200',
|
|
amount: 0.0,
|
|
repairObjType: '',
|
|
maintenanceTypes: [],
|
|
maintenanceType: '',
|
|
repairChannel: '',
|
|
goodsTypes: [],
|
|
resourceStores: [],
|
|
price: '',
|
|
outLowPrice: '',
|
|
outHighPrice: '',
|
|
conditions: {
|
|
goodsType: '',
|
|
resId: ''
|
|
},
|
|
selectedGoodsInfo: {},
|
|
useNumber: 1,
|
|
totalPrice: 0,
|
|
resId: '',
|
|
isCustom: false,
|
|
customGoodsName: '',
|
|
choosedGoodsList: []
|
|
};
|
|
}
|
|
}
|
|
});
|
|
})(window.vc); |