std_bills_lib.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. /**
  2. * Created by Mai on 2017/5/16.
  3. */
  4. /**
  5. * showObj = {bills, jobAndFeatureTab, job, feature, remarkTab, remark}
  6. */
  7. /*var stdBillsLibObj = {
  8. createNew: function (sessionID, showObj) {
  9. var tools = {
  10. sessionID: sessionID,
  11. billsSpread: null,
  12. billsJobSpread: null,
  13. billsFeatureSpread: null,
  14. checkSpread: function (spread, spreadObj) {
  15. if (!spread) {
  16. spread = SheetDataHelper.createNewSpread(spreadObj);
  17. }
  18. }
  19. };
  20. var libObj = function () {
  21. this.billsTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
  22. this.spread = tools.billsSpread;
  23. };
  24. libObj.prototype.LoadStdBills = function () {
  25. tools.checkSpread(tools.billsSpread, showObj.bills);
  26. };
  27. return new libObj(sessionID);
  28. },
  29. settings: {
  30. stdBillsTreeSetting: {
  31. "treeCol": 0,
  32. "emptyRows":0,
  33. "headRows":1,
  34. "headRowHeight":[
  35. 35
  36. ],
  37. "cols":[{
  38. "width":100,
  39. "readOnly":null,
  40. "head":{
  41. "titleNames":["项目编码"],
  42. "spanCols":[1],
  43. "spanRows":[1],
  44. "vAlign":[1],
  45. "hAlign":[1],
  46. "font":["12px Arial"]
  47. },
  48. "data":{
  49. "field":"code",
  50. "vAlign":0,
  51. "hAlign":3,
  52. "font":"12px Arial"
  53. }
  54. }, {
  55. "width":120,
  56. "readOnly":null,
  57. "head":{
  58. "titleNames":["项目名称"],
  59. "spanCols":[1],
  60. "spanRows":[1],
  61. "vAlign":[1],
  62. "hAlign":[1],
  63. "font":["12px Arial"]
  64. },
  65. "data":{
  66. "field":"name",
  67. "vAlign":0,
  68. "hAlign":3,
  69. "font":"12px Arial"
  70. }
  71. }, {
  72. "width":40,
  73. "readOnly":null,
  74. "head":{
  75. "titleNames":["计量单位"],
  76. "spanCols":[1],
  77. "spanRows":[1],
  78. "vAlign":[1],
  79. "hAlign":[1],
  80. "font":["12px Arial"],
  81. "wordWrap": true
  82. },
  83. "data":{
  84. "field":"unti",
  85. "vAlign":0,
  86. "hAlign":3,
  87. "font":"12px Arial"
  88. }
  89. }, {
  90. "width":100,
  91. "readOnly": true,
  92. "head":{
  93. "titleNames":["工程量计算规则"],
  94. "spanCols":[1],
  95. "spanRows":[1],
  96. "vAlign":[1],
  97. "hAlign":[1],
  98. "font":["12px Arial"]
  99. },
  100. "data":{
  101. "field":"ruleText",
  102. "vAlign":0,
  103. "hAlign":3,
  104. "font":"12px Arial"
  105. }
  106. }]
  107. },
  108. stdBillsJobSetting: {
  109. "emptyRows":0,
  110. "headRows":1,
  111. "headRowHeight":[
  112. 20
  113. ],
  114. "cols":[{
  115. "width":200,
  116. "readOnly":true,
  117. "head":{
  118. "titleNames":["工程内容"],
  119. "spanCols":[1],
  120. "spanRows":[1],
  121. "vAlign":[1],
  122. "hAlign":[1],
  123. "font":["12px Arial"]
  124. },
  125. "data":{
  126. "field":"content",
  127. "vAlign":0,
  128. "hAlign":3,
  129. "font":"12px Arial"
  130. }
  131. }]
  132. },
  133. stdBillsFeatureSetting: {
  134. "emptyRows":0,
  135. "headRows":1,
  136. "headRowHeight":[
  137. 20
  138. ],
  139. "cols":[{
  140. "width":200,
  141. "readOnly":null,
  142. "head":{
  143. "titleNames":["项目特征"],
  144. "spanCols":[1],
  145. "spanRows":[1],
  146. "vAlign":[1],
  147. "hAlign":[1],
  148. "font":["12px Arial"]
  149. },
  150. "data":{
  151. "field":"content",
  152. "vAlign":0,
  153. "hAlign":3,
  154. "font":"12px Arial"
  155. }
  156. }]
  157. }
  158. }
  159. };*/
  160. CommonAjax.post('/stdBillsEditor/getStdBillsLib', {userId: userID}, function (datas) {
  161. var i, select = $('#stdBillsLibSelect');
  162. select.empty();
  163. datas.forEach(function (data) {
  164. var option = $('<option>').val(data.billsLibId).text(data.billsLibName);
  165. select.append(option);
  166. });
  167. if (select.children.length !== 0) {
  168. LoadStdBills(select.val());
  169. }
  170. });
  171. var LoadStdBills = (function () {
  172. var stdBillsSpread = SheetDataHelper.createNewSpread($('#stdBillsSpread')[0]);
  173. var stdBillsJobSpread = null, stdBillsFeatureSpread = null;
  174. var stdBillsTreeSetting = {
  175. "treeCol": 0,
  176. "emptyRows":0,
  177. "headRows":1,
  178. "headRowHeight":[
  179. 40
  180. ],
  181. "defaultRowHeight": 21,
  182. "cols":[{
  183. "width":150,
  184. "readOnly":null,
  185. "head":{
  186. "titleNames":["项目编码"],
  187. "spanCols":[1],
  188. "spanRows":[1],
  189. "vAlign":[1],
  190. "hAlign":[1],
  191. "font":["Arial"]
  192. },
  193. "data":{
  194. "field":"code",
  195. "vAlign":1,
  196. "hAlign":0,
  197. "font":"Arial"
  198. }
  199. }, {
  200. "width":120,
  201. "readOnly":null,
  202. "head":{
  203. "titleNames":["项目名称"],
  204. "spanCols":[1],
  205. "spanRows":[1],
  206. "vAlign":[1],
  207. "hAlign":[1],
  208. "font":["Arial"]
  209. },
  210. "data":{
  211. "field":"name",
  212. "vAlign":1,
  213. "hAlign":0,
  214. "font":"Arial"
  215. }
  216. }, {
  217. "width":40,
  218. "readOnly":null,
  219. "head":{
  220. "titleNames":["计量单位"],
  221. "spanCols":[1],
  222. "spanRows":[1],
  223. "vAlign":[1],
  224. "hAlign":[1],
  225. "font":["Arial"],
  226. "wordWrap": true
  227. },
  228. "data":{
  229. "field":"unit",
  230. "vAlign":1,
  231. "hAlign":1,
  232. "font":"Arial"
  233. }
  234. }, {
  235. "width":100,
  236. "readOnly": true,
  237. "head":{
  238. "titleNames":["工程量计算规则"],
  239. "spanCols":[1],
  240. "spanRows":[1],
  241. "vAlign":[1],
  242. "hAlign":[1],
  243. "font":["Arial"]
  244. },
  245. "data":{
  246. "field":"ruleText",
  247. "vAlign":1,
  248. "hAlign":0,
  249. "font":"Arial"
  250. }
  251. }]
  252. };
  253. var stdBillsData, stdBillsJobData, stdBillsFeatureData;
  254. var stdBillsTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
  255. var stdBillsTreeController = TREE_SHEET_CONTROLLER.createNew(stdBillsTree, stdBillsSpread.getActiveSheet(), stdBillsTreeSetting);
  256. var findData = function (value, field, Array) {
  257. var i = 0;
  258. for (i = 0; i < Array.length - 1; i++) {
  259. if (value === Array[i][field]) {
  260. return Array[i];
  261. }
  262. }
  263. return null;
  264. };
  265. var getBillsJobs = function (node) {
  266. var jobs = [], i, jobData = null;
  267. if (stdBillsJobData && node && node.data.jobs) {
  268. for (i = 0; i < node.data.jobs.length - 1; i++) {
  269. jobData = findData(node.data.jobs[i], 'id', stdBillsJobData);
  270. if (jobData) {
  271. jobs.push(jobData);
  272. }
  273. }
  274. }
  275. return jobs;
  276. };
  277. var getBillsFeatures = function (node) {
  278. var features = [], i, featureData = null;
  279. if (stdBillsFeatureData && node && node.data.items) {
  280. for (i = 0; i < node.data.items.length - 1; i++) {
  281. featureData = findData(node.data.items[i], 'id', stdBillsFeatureData);
  282. if (featureData) {
  283. features.push(featureData);
  284. }
  285. }
  286. }
  287. return features;
  288. };
  289. var showJobs = function (jobs) {
  290. var jobsSetting = {
  291. "emptyRows":0,
  292. "headRows":1,
  293. "headRowHeight":[25],
  294. "defaultRowHeight": 21,
  295. "cols":[{
  296. "width":200,
  297. "readOnly":true,
  298. "head":{
  299. "titleNames":["工程内容"],
  300. "spanCols":[1],
  301. "spanRows":[1],
  302. "vAlign":[1],
  303. "hAlign":[1],
  304. "font":["Arial"]
  305. },
  306. "data":{
  307. "field":"content",
  308. "vAlign":0,
  309. "hAlign":3,
  310. "font":"Arial"
  311. }
  312. }]
  313. };
  314. SheetDataHelper.loadSheetHeader(jobsSetting, stdBillsJobSpread.getActiveSheet());
  315. SheetDataHelper.loadSheetData(jobsSetting, stdBillsJobSpread.getActiveSheet(), jobs);
  316. };
  317. var showFeatures = function (features) {
  318. var featuresSetting = {
  319. "emptyRows":0,
  320. "headRows":1,
  321. "headRowHeight":[25],
  322. "defaultRowHeight": 21,
  323. "cols":[{
  324. "width":200,
  325. "readOnly":true,
  326. "head":{
  327. "titleNames":["项目特征"],
  328. "spanCols":[1],
  329. "spanRows":[1],
  330. "vAlign":[1],
  331. "hAlign":[1],
  332. "font":["Arial"]
  333. },
  334. "data":{
  335. "field":"content",
  336. "vAlign":0,
  337. "hAlign":3,
  338. "font":"Arial"
  339. }
  340. }]
  341. };
  342. SheetDataHelper.loadSheetHeader(featuresSetting, stdBillsFeatureSpread.getActiveSheet());
  343. SheetDataHelper.loadSheetData(featuresSetting, stdBillsFeatureSpread.getActiveSheet(), features);
  344. }
  345. var showJobsAndFeatures = function (node) {
  346. $('#stdBillsJobTab').show();
  347. $('#stdBillsRemarkTab').hide();
  348. if (!stdBillsJobSpread) {
  349. stdBillsJobSpread = SheetDataHelper.createNewSpread($('#stdBillsJobs')[0]);
  350. }
  351. showJobs(getBillsJobs(node));
  352. if (!stdBillsFeatureSpread) {
  353. stdBillsFeatureSpread = SheetDataHelper.createNewSpread($('#stdBillsFeatures')[0]);
  354. }
  355. showFeatures(getBillsFeatures(node));
  356. };
  357. var showBillsRemark = function (node) {
  358. $('#stdBillsJobTab').hide();
  359. $('#stdBillsRemarkTab').show();
  360. $('#stdBillsRemark').text(node && node.data.recharge ? node.data.recharge : '');
  361. };
  362. var showBillsRela = function (node) {
  363. if (node && node.children.length === 0) {
  364. showJobsAndFeatures(node);
  365. } else {
  366. showBillsRemark(node);
  367. }
  368. }
  369. var LoadData = function (stdBillsLibID) {
  370. CommonAjax.post('/stdBillsEditor/getJobContent', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  371. stdBillsJobData = datas;
  372. }, function () {
  373. stdBillsJobData = [];
  374. });
  375. CommonAjax.post('/stdBillsEditor/getItemCharacter', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  376. stdBillsFeatureData = datas;
  377. }, function () {
  378. stdBillsFeatureData = [];
  379. });
  380. CommonAjax.post('/stdBillsEditor/getBills', {userId: userID, billsLibId: stdBillsLibID}, function (datas) {
  381. stdBills = datas;
  382. stdBillsTree.loadDatas(stdBills);
  383. stdBillsTreeController.showTreeData();
  384. showBillsRela(stdBillsTree.firstNode());
  385. stdBillsTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, showBillsRela);
  386. });
  387. };
  388. return LoadData;
  389. })();
  390. $('#stdBillsLibSelect').change(function () {
  391. var select = $(this);
  392. if (this.children.length !== 0) {
  393. LoadStdBills(select.val());
  394. }
  395. });