Business.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /**
  2. * 商机-公司商机
  3. */
  4. Ext.define('saas.view.sale.b2b.Business', {
  5. extend: 'saas.view.core.base.BasePanel',
  6. xtype: 'sale-b2b-business',
  7. controller: 'sale-b2b-business',
  8. viewModel: 'sale-b2b-business',
  9. viewName: 'sale-b2b-business',
  10. // dataUrl: 'http://10.1.80.23:8560/api/sale/sale/enterprise/businessChance',
  11. dataUrl: '/api/sale/sale/enterprise/businessChance',
  12. initComponent: function () {
  13. var me = this;
  14. Ext.apply(this, {
  15. searchField: [{
  16. xtype: 'textfield',
  17. name: 'keyword',
  18. columnWidth: 0.2,
  19. emptyText: '物料名称/型号/品牌'
  20. }, {
  21. xtype: 'condatefield',
  22. name: 'date',
  23. fieldLabel: '日期',
  24. labelWidth: 50,
  25. columnWidth: 0.4,
  26. }, {
  27. xtype: 'combobox',
  28. name: 'quoted',
  29. fieldLabel: '报价状态',
  30. queryMode: 'local',
  31. displayField: 'name',
  32. valueField: 'value',
  33. emptyText: '未报价',
  34. value: '0',
  35. editable: false,
  36. labelWidth: 80,
  37. columnWidth: 0.2,
  38. store: Ext.create('Ext.data.ArrayStore', {
  39. fields: ['name', 'value'],
  40. data: [
  41. ["未报价", "0"],
  42. ["已报价", "1"]
  43. ]
  44. })
  45. // }, {
  46. // xtype: 'combobox',
  47. // name: 'closed',
  48. // fieldLabel: '截止状态',
  49. // queryMode: 'local',
  50. // displayField: 'name',
  51. // valueField: 'value',
  52. // emptyText :'全部',
  53. // editable:false,
  54. // columnWidth: 0.2,
  55. // store: Ext.create('Ext.data.ArrayStore', {
  56. // fields: ['name', 'value'],
  57. // data: [
  58. // ["全部", "all"],
  59. // ["未截止", "0"],
  60. // ["已截止", "1"]
  61. // ]
  62. // })
  63. }],
  64. caller: null,
  65. _formXtype: null,
  66. _title: null,
  67. _deleteUrl: null,
  68. _batchOpenUrl: null,
  69. _batchCloseUrl: null,
  70. _batchDeleteUrl: null,
  71. gridConfig: {
  72. idField: null,
  73. codeField: null,
  74. statusCodeField: null,
  75. dataUrl: me.dataUrl,
  76. caller: null,
  77. rootProperty: 'data.content',
  78. totalProperty: 'data.totalElements',
  79. actionColumn: [],
  80. selModel: {
  81. type: 'cellmodel'
  82. },
  83. hiddenTools: true,
  84. data: [{
  85. }],
  86. columns: [{
  87. text: '客户名称',
  88. dataIndex: 'custName',
  89. width: 200
  90. }, {
  91. text: '物料品牌',
  92. dataIndex: 'prodBrand',
  93. width: 100
  94. }, {
  95. text: '物料名称',
  96. dataIndex: 'prodName',
  97. width: 120
  98. }, {
  99. text: '物料型号',
  100. dataIndex: 'prodOrispeccode',
  101. width: 120
  102. }, {
  103. text: '物料规格',
  104. dataIndex: 'prodSpec',
  105. width: 120
  106. }, {
  107. text: '物料单位',
  108. dataIndex: 'prodUnit'
  109. }, {
  110. text: '采购数量',
  111. xtype: 'numbercolumn',
  112. dataIndex: 'needQty',
  113. renderer: function (v, m, r) {
  114. return saas.util.BaseUtil.numberFormat(v, 0, false);
  115. }
  116. }, {
  117. text: '发布时间',
  118. xtype: 'datecolumn',
  119. dataIndex: 'startDate',
  120. format: 'Y-m-d H:i:s',
  121. width: 150
  122. }, {
  123. text: '截止时间',
  124. xtype: 'datecolumn',
  125. dataIndex: 'endDate',
  126. format: 'Y-m-d H:i:s',
  127. width: 150
  128. }, {
  129. text: '报价状态',
  130. dataIndex: 'quoted',
  131. textAlign: 'center',
  132. renderer: function (val, meta, record, x, y, store, view) {
  133. if (val == 0) {
  134. return '<div style="text-align: center;color: #35BAF6;">未报价</div>';
  135. } else {
  136. var qutations = record.data.qutations;
  137. if (qutations.agreed == null) {
  138. return '<div style="text-align: center;color: #FBBC05;">已报价</div>';
  139. } else if (qutations.agreed == 1) {
  140. return '<div style="text-align: center;color: green;">被采纳</div>';
  141. } else if (qutations.agreed == 0) {
  142. return '<div style="text-align: center;color:#ff6c00;">被拒绝</div>';
  143. }
  144. }
  145. }
  146. }, {
  147. text: '操作',
  148. dataIndex: 'quoted',
  149. renderer: function (val, meta, record, x, y, store, view) {
  150. if (val == 0) {
  151. return '<div style="text-align: center;color: #35BAF6;cursor: pointer;">点击报价</div>';
  152. } else {
  153. var qutations = record.data.qutations;
  154. if (qutations.agreed == null) {
  155. return '<div style="text-align: center;color: #FBBC05;cursor: pointer;">查看报价信息</div>';
  156. } else if (qutations.agreed == 1) {
  157. return '<div style="text-align: center;color: green;cursor: pointer;">查看报价信息</div>';
  158. } else if (qutations.agreed == 0) {
  159. return '<div style="text-align: center;color:#ff6c00;">查看报价信息</div>';
  160. }
  161. }
  162. },
  163. listeners: {
  164. click: function (tableView, td, rowIdx, colIdx, e, model, tr) {
  165. var dataIndex = this.dataIndex;
  166. var record = tableView.store.getAt(rowIdx);
  167. var value = record.get(dataIndex);
  168. me.getController().showQuoteWin(record, !!value);
  169. },
  170. }
  171. }],
  172. listeners: {
  173. itemmouseenter: function (view, record, item, index, e, eOpts) {
  174. var grid = view.up('grid');
  175. grid.focusRecord = record;
  176. }
  177. }
  178. },
  179. });
  180. this.callParent(arguments);
  181. },
  182. /**
  183. * 处理部分字段值
  184. */
  185. getConditionValue: function (field, value) {
  186. var me = this,
  187. xtypes = field.getXTypes().split('/'),
  188. conditionValue;
  189. if (me.isContainsAny(xtypes, ['datefield'])) {
  190. conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
  191. } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
  192. var from = value.from,
  193. to = value.to;
  194. conditionValue = from + ',' + to;
  195. } else if (me.isContainsAny(xtypes, ['condatefield'])) {
  196. var from = value.from,
  197. to = value.to;
  198. conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
  199. } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
  200. conditionValue = value;
  201. } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
  202. conditionValue = value;
  203. } else if (me.isContainsAny(xtypes, ['multicombo'])) {
  204. conditionValue = value.map ? value.map(function (v) {
  205. return v.value;
  206. }).join(',') : '';
  207. } else {
  208. conditionValue = value;
  209. }
  210. return conditionValue;
  211. },
  212. getExtraParams: function (store, op, condition) {
  213. var temp = {};
  214. for (let x = 0; x < condition.length; x++) {
  215. let c = condition[x];
  216. if (c.field == 'keyword') {
  217. temp.keyword = c.value;
  218. } else if (c.field == 'date') {
  219. temp.fromDate = new Date(c.value.split(',')[0]).getTime();
  220. temp.endDate = new Date(c.value.split(',')[1]).getTime();
  221. } else if (c.field == 'quoted') {
  222. temp.quoted = c.value == 'all' ? null : c.value;
  223. } else if (c.field == 'closed') {
  224. // temp.endDate = c.value == 'all' ? null : (
  225. // c.value == '0' ?
  226. // );
  227. }
  228. }
  229. let obj = {
  230. pageNumber: store.exportNumber ? store.exportNumber : op._page,
  231. pageSize: store.exportPageSize ? store.exportPageSize : store.pageSize
  232. };
  233. for (let k in temp) {
  234. if (!!temp[k]) {
  235. obj[k] = temp[k];
  236. }
  237. }
  238. return obj;
  239. },
  240. });