Ext.define('saas.view.sale.b2b.QuoteWin', {
extend: 'Ext.window.Window',
xtype: 'quotewin',
title: '报价信息',
width: '800',
height: '400',
scrollable: true,
cls: 'x-window-dbfind',
closlayout: 'fit',
modal: true,
bodyPadding: 20,
initComponent: function () {
var me = this;
var record = me.record;
var quoted = me.quoted;
Ext.apply(me, {
items: [{
xtype: 'form',
layout: 'column',
fieldDefaults: {
margin: '0 0 10 0',
labelAlign: 'right',
labelWidth: 90,
columnWidth: 0.5,
},
isValid: function (values) {
var leadtimeField = this.getForm().findField('leadtime');
var taxrateField = this.getForm().findField('taxrate');
var grid = this.down('grid');
var gridData = grid.store.getData().items;
var count = gridData.length > 0;
if(leadtimeField.getValue() == undefined) {
saas.util.BaseUtil.showErrorToast('交期不可为空');
return false;
}
if(leadtimeField.getValue() <= 0) {
saas.util.BaseUtil.showErrorToast('交期必须大于零');
return false;
}
if(taxrateField.getValue() == undefined) {
saas.util.BaseUtil.showErrorToast('税率不可为空');
return false;
}
if(taxrateField.getValue() <= 0) {
saas.util.BaseUtil.showErrorToast('税率必须大于零');
return false;
}
if(!count) {
saas.util.BaseUtil.showErrorToast('梯度单价不可为空');
return false;
}
let lastQ = 0;
for (var x = 0; x < gridData.length; x++) {
let d = gridData[x];
let idx = d.get('no');
if (!d.get('lapQty')) {
saas.util.BaseUtil.showErrorToast('序号为' + idx + '的行梯度有误');
return false;
}
if(d.get('lapQty') <= lastQ) {
saas.util.BaseUtil.showErrorToast('序号为' + idx + '的行梯度需要大于上一梯度设置');
return false;
}
if(!d.get('price')) {
saas.util.BaseUtil.showErrorToast('序号为' + idx + '的行单价有误');
return false;
}
lastQ = d.get('lapQty');
}
return true;
},
items: [{
xtype: 'textfield',
fieldLabel: '品牌',
name: 'prodBrand',
readOnly: true,
value: record.get('prodBrand')
}, {
xtype: 'textfield',
fieldLabel: '名称',
name: 'prodName',
readOnly: true,
value: record.get('prodName')
}, {
xtype: 'textfield',
fieldLabel: '型号',
name: 'prodOrispeccode',
readOnly: true,
value: record.get('prodOrispeccode')
}, {
xtype: 'textfield',
fieldLabel: '规格',
name: 'prodSpec',
readOnly: true,
value: record.get('prodSpec')
}, {
xtype: 'numberfield',
fieldLabel: '交期(天)',
name: 'leadtime',
allowBlank: false,
vtype: 'positiveNumber',
beforeLabelTextTpl: "*"
}, {
xtype: 'numberfield',
fieldLabel: '税率',
name: 'taxrate',
maxValue: 100,
allowBlank: false,
vtype: 'positiveNumber',
beforeLabelTextTpl: "*"
}, {
xtype: 'detailGridField',
detnoColumn: 'no',
minHeight: 145,
emptyRows: 3,
showCount: false,
width: 280,
store: Ext.create('Ext.data.Store', {
fields: [{
name: 'no',
type: 'int'
}, {
name: 'lapQty',
type: 'int',
vtype: 'positiveNumber'
}, {
name: 'price',
type: 'float',
vtype: 'positiveNumber'
}],
data: []
}),
columns: [{
text: '梯度',
dataIndex: 'lapQty',
xtype: 'numbercolumn',
editor: {
xtype: "numberfield",
decimalPrecision: 0,
minValue: 0
},
renderer: function (v, m, r) {
return saas.util.BaseUtil.numberFormat(v, 0, false);
},
}, {
text: '单价',
dataIndex: 'price',
xtype: 'numbercolumn',
editor: {
xtype: "numberfield",
decimalPrecision: 4,
minValue: 0
},
renderer: function (v, m, r) {
return saas.util.BaseUtil.numberFormat(v, 4, true);
},
}],
listeners: {
beforeaddrow: function(grid, index, data) {
if(grid.store.getCount() < 5) {
return true;
}else {
saas.util.BaseUtil.showErrorToast('最多只能设置5条梯度价格');
return false;
}
}
}
}, {
xtype: 'textfield',
name: 'message',
columnWidth: 1,
fieldLabel: '回复信息',
hidden: true
}]
}],
buttonAlign: 'center',
buttons: [{
text: '确定',
handler: function () {
if(quoted && record.get('qutations')) {
me.close();
return;
}
var win = this.up('window'),
form = win.down('form'),
grid = form.down('grid');
if (form.isValid()) {
var values = form.getValues();
Ext.Object.mergeIf(values, record.data);
values.detail = grid.store.getData().items.map(function(r) {
return r.data;
})
me.onQuote(values);
}
}
}, {
text: '取消',
handler: function () {
me.close();
}
}]
});
me.callParent(arguments);
},
listeners: {
afterrender: function() {
var me = this,
form = me.down('form'),
leadtimeField = form.getForm().findField('leadtime'),
taxrateField = form.getForm().findField('taxrate'),
messageField = form.getForm().findField('message'),
grid = form.down('grid'),
store = grid.store,
record = me.record,
qutations = record.get('qutations'),
quoted = me.quoted,
storeData = [];
if(quoted) {
leadtimeField.setReadOnly(true);
taxrateField.setReadOnly(true);
grid.setGridDisabled();
leadtimeField.setValue(qutations.leadTime);
taxrateField.setValue(qutations.taxRate);
storeData = qutations.replies.map(function(r, i) {
r.no = i + 1;
return r;
});
store.loadData(storeData);
if(qutations.agreed == 0) {
messageField.setValue(qutations.refusereason);
messageField.setVisible(true);
}
}
}
},
onQuote: function (values) {
var view = this;
var params = {
sourceId: values.sourceId,
inquiry: {
id: values.sourceId,
enUU: values.enUU,
recorderUU: values.recorderUU,
code: values.inquiryCode,
},
userUU: values.userUU,
userName: values.userName,
userTel: values.userTel,
currency: "RMB",
taxrate: values.taxrate,
leadtime: values.leadtime, // 交期
replies: values.detail.map(function(d) {
return {
lapQty: d.lapQty,
price: d.price
}
}), // 梯度价格,
date: Ext.Date.format(new Date(), 'Y-m-d H:i:s'), // 当前日期
qutoApp: "sp", // 固定标识
endDate: values.endDate,
prodTitle: values.prodName,
spec: values.prodSpec,
cmpCode: values.prodOrispeccode,
inbrand: values.prodBrand,
isReplace: 0,
};
view.setLoading(true);
saas.util.BaseUtil.request({
// url: 'http://10.1.80.23:8560/api/sale/sale/businessChance/saveQuote',
url: '/api/sale/sale/businessChance/saveQuote',
params: JSON.stringify(params),
method: 'POST'
}).then(function (res) {
view.setLoading(false);
saas.util.BaseUtil.showSuccessToast('报价成功');
view.close();
view.listView.refresh();
}).catch(function (e) {
view.setLoading(false);
saas.util.BaseUtil.showErrorToast('报价失败: ' + e.message);
});
},
});