QuoteWin.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. Ext.define('saas.view.sale.b2b.QuoteWin', {
  2. extend: 'Ext.window.Window',
  3. xtype: 'quotewin',
  4. title: '报价信息',
  5. width: '800',
  6. height: '400',
  7. scrollable: true,
  8. cls: 'x-window-dbfind',
  9. closlayout: 'fit',
  10. modal: true,
  11. bodyPadding: 20,
  12. initComponent: function () {
  13. var me = this;
  14. var record = me.record;
  15. var quoted = me.quoted;
  16. Ext.apply(me, {
  17. items: [{
  18. xtype: 'form',
  19. layout: 'column',
  20. fieldDefaults: {
  21. margin: '0 0 10 0',
  22. labelAlign: 'right',
  23. labelWidth: 90,
  24. columnWidth: 0.25,
  25. },
  26. isValid: function (values) {
  27. var leadtimeField = this.getForm().findField('leadtime');
  28. var taxrateField = this.getForm().findField('taxrate');
  29. var grid = this.down('grid');
  30. var gridData = grid.store.getData().items;
  31. var flag = gridData.length > 0;
  32. for (var x = 0; x < gridData.length; x++) {
  33. var d = gridData[x];
  34. if (!d.get('lapQty') || !d.get('price')) {
  35. flag = false
  36. }
  37. }
  38. if(flag) {
  39. flag = leadtimeField.getValue() && taxrateField.getValue();
  40. }
  41. return flag;
  42. },
  43. items: [{
  44. xtype: 'textfield',
  45. fieldLabel: '品牌',
  46. name: 'prodBrand',
  47. readOnly: true,
  48. value: record.get('prodBrand')
  49. }, {
  50. xtype: 'textfield',
  51. fieldLabel: '名称',
  52. name: 'prodName',
  53. readOnly: true,
  54. value: record.get('prodName')
  55. }, {
  56. xtype: 'textfield',
  57. fieldLabel: '型号',
  58. name: 'prodOrispeccode',
  59. readOnly: true,
  60. value: record.get('prodOrispeccode')
  61. }, {
  62. xtype: 'textfield',
  63. fieldLabel: '规格',
  64. name: 'prodSpec',
  65. readOnly: true,
  66. value: record.get('prodSpec')
  67. }, {
  68. xtype: 'numberfield',
  69. fieldLabel: '交期(天)',
  70. name: 'leadtime',
  71. allowBlank: false,
  72. beforeLabelTextTpl: "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>"
  73. }, {
  74. xtype: 'numberfield',
  75. fieldLabel: '税率',
  76. name: 'taxrate',
  77. minValue: 0,
  78. maxValue: 100,
  79. allowBlank: false,
  80. beforeLabelTextTpl: "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>"
  81. }, {
  82. xtype: 'detailGridField',
  83. detnoColumn: 'no',
  84. minHeight: 145,
  85. emptyRows: 3,
  86. showCount: false,
  87. width: 280,
  88. store: Ext.create('Ext.data.Store', {
  89. fields: [{
  90. name: 'no',
  91. type: 'int'
  92. }, {
  93. name: 'lapQty',
  94. type: 'int'
  95. }, {
  96. name: 'price',
  97. type: 'float'
  98. }],
  99. data: []
  100. }),
  101. columns: [{
  102. text: '梯度',
  103. dataIndex: 'lapQty',
  104. xtype: 'numbercolumn',
  105. editor: {
  106. xtype: "numberfield",
  107. decimalPrecision: 0,
  108. minValue: 0
  109. },
  110. renderer: function (v, m, r) {
  111. return saas.util.BaseUtil.numberFormat(v, 0, false);
  112. },
  113. }, {
  114. text: '单价',
  115. dataIndex: 'price',
  116. xtype: 'numbercolumn',
  117. editor: {
  118. xtype: "numberfield",
  119. decimalPrecision: 4,
  120. minValue: 0
  121. },
  122. renderer: function (v, m, r) {
  123. return saas.util.BaseUtil.numberFormat(v, 4, true);
  124. },
  125. }]
  126. }, {
  127. xtype: 'textfield',
  128. name: 'message',
  129. columnWidth: 1,
  130. fieldLabel: '回复信息',
  131. hidden: true
  132. }]
  133. }],
  134. buttonAlign: 'center',
  135. buttons: [{
  136. text: quoted && record.get('qutations') && record.get('qutations').agreed == 0 ? '重新发起报价' : '确定',
  137. handler: function () {
  138. if(quoted && record.get('qutations') && record.get('qutations').agreed != 0) {
  139. me.close();
  140. return;
  141. }
  142. var win = this.up('window'),
  143. form = win.down('form'),
  144. grid = form.down('grid');
  145. if (form.isValid()) {
  146. var values = form.getValues();
  147. Ext.Object.mergeIf(values, record.data);
  148. values.detail = grid.store.getData().items.map(function(r) {
  149. return r.data;
  150. })
  151. me.onQuote(values);
  152. } else {
  153. saas.util.BaseUtil.showErrorToast('表单校验失败,请检查字段是否合法');
  154. }
  155. }
  156. }, {
  157. text: '取消',
  158. handler: function () {
  159. me.close();
  160. }
  161. }]
  162. });
  163. me.callParent(arguments);
  164. },
  165. listeners: {
  166. afterrender: function() {
  167. var me = this,
  168. form = me.down('form'),
  169. leadtimeField = form.getForm().findField('leadtime'),
  170. taxrateField = form.getForm().findField('taxrate'),
  171. messageField = form.getForm().findField('message'),
  172. grid = form.down('grid'),
  173. store = grid.store,
  174. record = me.record,
  175. qutations = record.get('qutations'),
  176. quoted = me.quoted;
  177. if(quoted) {
  178. leadtimeField.setValue(qutations.leadTime);
  179. taxrateField.setValue(qutations.taxRate);
  180. store.loadData(qutations.replies || []);
  181. if(qutations.agreed == 0) {
  182. messageField.setValue(qutations.refusereason);
  183. messageField.setVisible(true);
  184. }
  185. }
  186. }
  187. },
  188. onQuote: function (values) {
  189. var view = this;
  190. var params = {
  191. sourceId: values.sourceId,
  192. inquiry: {
  193. id: values.sourceId,
  194. enUU: values.enUU,
  195. recorderUU: values.recorderUU,
  196. code: values.inquiryCode,
  197. },
  198. userUU: values.userUU,
  199. userName: values.userName,
  200. userTel: values.userTel,
  201. currency: "RMB",
  202. taxrate: values.taxrate,
  203. leadtime: values.leadtime, // 交期
  204. replies: values.detail.map(function(d) {
  205. return {
  206. lapQty: d.lapQty,
  207. price: d.price
  208. }
  209. }), // 梯度价格,
  210. date: Ext.Date.format(new Date(), 'Y-m-d H:i:s'), // 当前日期
  211. qutoApp: "sp", // 固定标识
  212. endDate: values.endDate,
  213. prodTitle: values.prodName,
  214. spec: values.prodSpec,
  215. cmpCode: values.prodOrispeccode,
  216. inbrand: values.prodBrand,
  217. isReplace: 0,
  218. };
  219. view.setLoading(true);
  220. saas.util.BaseUtil.request({
  221. // url: 'http://10.1.80.23:8560/api/sale/sale/businessChance/saveQuote',
  222. url: '/api/sale/sale/businessChance/saveQuote',
  223. params: JSON.stringify(params),
  224. method: 'POST'
  225. }).then(function (res) {
  226. view.setLoading(false);
  227. saas.util.BaseUtil.showSuccessToast('报价成功');
  228. view.close();
  229. view.listView.refresh();
  230. }).catch(function (e) {
  231. view.setLoading(false);
  232. saas.util.BaseUtil.showErrorToast('报价失败: ' + e.message);
  233. });
  234. },
  235. });