material_adjust_view.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. /**
  2. * Created by zhang on 2019/5/15.
  3. */
  4. let materialAdjustObj = {
  5. spread:null,
  6. priceInfoSheet:null,
  7. priceCoeSheet:null,
  8. priceInfoDatas:[],
  9. priceCoeDatas:[],
  10. priceInfoSetting:{
  11. header: [
  12. {headerName: "关联", headerWidth: 80, dataCode: "is_related", dataType: "String",cellType:'checkBox'},
  13. {headerName: "材料号", headerWidth: 80, dataCode: "code", dataType: "String"},
  14. {headerName: "材料名称", headerWidth: 160, dataCode: "name", dataType: "String",cellType:'tipsCell'},
  15. {headerName: "规格型号", headerWidth: 120, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'},
  16. {headerName: "单位", headerWidth: 45, dataCode: "unit", hAlign: "center", dataType: "String"},
  17. {headerName: "数量", headerWidth: 90, dataCode: "quantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
  18. {headerName: "风险系数%", headerWidth: 80, dataCode: "riskCoe", hAlign: "right", dataType: "Number",validator:"number"},
  19. {headerName: "基准单价", headerWidth: 70, dataCode: "standardPrice", hAlign: "right", dataType: "Number",validator:"number"},
  20. {headerName: "投标单价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",validator:"number"},
  21. {headerName: "合价", headerWidth: 90, dataCode: "totalPrice", hAlign: "right", dataType: "Number",validator:"number",decimalField:'bills.totalPrice'},
  22. {headerName: "供货方式", headerWidth: 70, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
  23. {headerName: "备注", headerWidth: 100, dataCode: "remark", hAlign: "left", dataType: "String"}
  24. ],
  25. view:{ lockColumns: ["is_related","quantity","totalPrice","originPlace","vender","supply"]}
  26. },
  27. priceCoeSetting:{
  28. header: [
  29. {headerName: "关联", headerWidth: 80, dataCode: "is_related", dataType: "String",cellType:'checkBox'},
  30. {headerName: "材料号", headerWidth: 80, dataCode: "code", dataType: "String"},
  31. {headerName: "材料名称", headerWidth: 160, dataCode: "name", dataType: "String",cellType:'tipsCell'},
  32. {headerName: "规格型号", headerWidth: 120, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'},
  33. {headerName: "单位", headerWidth: 45, dataCode: "unit", hAlign: "center", dataType: "String"},
  34. {headerName: "变值权重B", headerWidth: 90, dataCode: "varWeight", hAlign: "right", dataType: "Number",validator:"number"},
  35. {headerName: "基本价格指数F0", headerWidth: 70, dataCode: "FO", hAlign: "right", dataType: "Number",validator:"number"},
  36. {headerName: "现行价格指数Ft", headerWidth: 70, dataCode: "FI", hAlign: "right", dataType: "Number",validator:"number"},
  37. {headerName: "数量", headerWidth: 90, dataCode: "quantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
  38. {headerName: "单价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",validator:"number"},
  39. {headerName: "合价", headerWidth: 90, dataCode: "totalPrice", hAlign: "right", dataType: "Number",validator:"number",decimalField:'bills.totalPrice'},
  40. {headerName: "供货方式", headerWidth: 70, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
  41. {headerName: "备注", headerWidth: 100, dataCode: "remark", hAlign: "left", dataType: "String"}
  42. ],
  43. view:{ lockColumns: ["is_related","quantity","totalPrice","originPlace","varWeight","vender","supply"]}
  44. },
  45. refreshSheetDatas:function () {
  46. //读项目属性的值,若没有则默认为造价信息差额调整法
  47. let adjustType = $('#adjustType').val();
  48. if (adjustType === 'priceInfo') {
  49. materialAdjustObj.showPriceInfoDatas();
  50. } else {
  51. materialAdjustObj.showPriceCoeDatas();
  52. }
  53. configMaterialObj.showEvaluateRelateDatas();
  54. },
  55. getSheetDatas:function () {
  56. let adjustType = $('#adjustType').val();
  57. return adjustType === 'priceInfo' ? this.priceInfoDatas : this.priceCoeDatas;
  58. },
  59. getSheet:function () {
  60. let adjustType = $('#adjustType').val();
  61. return adjustType === 'priceInfo' ? this.priceInfoSheet : this.priceCoeSheet;
  62. },
  63. initPriceInfoSheet:function () {
  64. this.priceInfoSheet = configMaterialObj.configSpread.getSheet(2);
  65. sheetCommonObj.initSheet(this.priceInfoSheet,this.priceInfoSetting,30);
  66. this.priceInfoSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
  67. this.priceInfoSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onSelectionChange);
  68. // this.priceInfoSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onSheetRangeChange);
  69. this.priceInfoSheet.name('priceInfoSheet');
  70. this.priceInfoSheet.setRowHeight(0, 36, 1);
  71. },
  72. initPriceCoeSheet:function () {
  73. this.priceCoeSheet = configMaterialObj.configSpread.getSheet(3);
  74. sheetCommonObj.initSheet(this.priceCoeSheet,this.priceCoeSetting,30);
  75. this.priceCoeSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange);
  76. this.priceCoeSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onSelectionChange);
  77. this.priceCoeSheet.name('priceCoeSheet');
  78. this.priceCoeSheet.setRowHeight(0, 36, 1);
  79. },
  80. onSelectionChange:function (sender, args) {
  81. let me = configMaterialObj;
  82. let newSel = args.newSelections[0];
  83. let oldSel = args.oldSelections?args.oldSelections[0]:{};
  84. if(newSel.row != oldSel.row){
  85. me.showEvaluateRelateDatas();
  86. me.relateFilterAgain = false;
  87. }
  88. },
  89. onSheetRangeChange:function (a,args) {
  90. let me = materialAdjustObj,updateMap = {};
  91. let projectGLJ = projectObj.project.projectGLJ;
  92. let setting = $("#adjustType").val() == "priceInfo"?me.priceInfoSetting:me.priceCoeSetting;
  93. let datas = $("#adjustType").val() == "priceInfo"?me.priceInfoDatas:me.priceCoeDatas;
  94. for(let c of args.changedCells){
  95. let dataCode = setting.header[c.col].dataCode;
  96. let value= args.sheet.getCell(c.row, c.col).text();
  97. if (value&&!sheetCommonObj.checkData(c.col,setting,value)) {
  98. alert('输入的数据类型不对,请重新输入!');
  99. me.refreshSheetDatas();
  100. return ;
  101. }
  102. let recode = datas[c.row];
  103. if(dataCode=='marketPrice'){
  104. let editField ="market_price";
  105. projectGLJ.updatePrice(recode,editField,value,'pg',me.refreshSheetDatas);
  106. }else {
  107. let tem = {};
  108. if(value) value = scMathUtil.roundForObj(value,getDecimal("process"));
  109. if(value == recode[dataCode]) continue;
  110. tem[dataCode] = value;
  111. updateMap[recode.id] = tem;
  112. }
  113. }
  114. if( _.isEmpty(updateMap)) return;
  115. projectGLJ.batchUpdateGLJProperty(updateMap,function () {
  116. me.refreshSheetDatas();
  117. });
  118. },
  119. onSheetValueChange:function (a,args) {
  120. let me = materialAdjustObj,row = args.row, col = args.col;
  121. let setting = $("#adjustType").val() == "priceInfo"?me.priceInfoSetting:me.priceCoeSetting;
  122. let datas = $("#adjustType").val() == "priceInfo"?me.priceInfoDatas:me.priceCoeDatas;
  123. let dataCode = setting.header[col].dataCode;
  124. let evaluate = datas[row];
  125. let value = args.newValue;
  126. if (value&&! sheetCommonObj.checkData(col,setting,value)) {
  127. alert('输入的数据类型不对,请重新输入!');
  128. return me.refreshSheetDatas();
  129. }
  130. if(dataCode == 'marketPrice'){
  131. dataCode = 'market_price';
  132. if(evaluate.is_evaluate == 1){
  133. alert("当前材料市场价已被锁定,修改请先返回人材机汇总界面解除锁定。");
  134. return me.refreshSheetDatas();
  135. }
  136. if(evaluate.is_related){//关联的情况下,直接修改工料机价格
  137. return projectObj.project.projectGLJ.updatePrice(evaluate,dataCode,value,'rg', projectGljObject.refreshViewsData);
  138. }
  139. }
  140. let edata = {type:'contractor_list',doc:{},action:"update",ID:evaluate.ID};
  141. if(evaluate[dataCode] == value) return me.refreshSheetDatas();
  142. edata.doc[dataCode] = value;
  143. configMaterialObj.updateEvaluateMaterial([edata],false);
  144. },
  145. deleteAdjust:function () {
  146. let me = this,updateMap={};
  147. let projectGLJ = projectObj.project.projectGLJ;
  148. let datas = $("#adjustType").val() == "priceInfo"?me.priceInfoDatas:me.priceCoeDatas;
  149. let sels = this.spread.getActiveSheet().getSelections();
  150. let select = sels.length > 0? sels[0]:null;
  151. if(!select) return;
  152. for(let i =0;i<select.rowCount;i++){
  153. let recode = datas[select.row+i];
  154. if(recode) updateMap[recode.id] = {is_info_adjust:0,is_coe_adjust:0};
  155. }
  156. if( _.isEmpty(updateMap)) return;
  157. projectGLJ.batchUpdateGLJProperty(updateMap,materialAdjustObj.refreshSheetDatas);
  158. },
  159. showPriceInfoDatas:function () {
  160. configMaterialObj.configSpread.setActiveSheetIndex(2);
  161. this.priceInfoDatas = this.getPirceInfoDatas();
  162. sheetCommonObj.showData(this.priceInfoSheet, this.priceInfoSetting,this.priceInfoDatas);
  163. this.priceInfoSheet.setRowCount(this.priceInfoDatas.length);
  164. },
  165. showPriceCoeDatas:function () {
  166. configMaterialObj.configSpread.setActiveSheetIndex(3);
  167. this.priceCoeDatas = this.getPriceCoeDatas();
  168. sheetCommonObj.showData(this.priceCoeSheet, this.priceCoeSetting,this.priceCoeDatas);
  169. this.priceCoeSheet.setRowCount(this.priceCoeDatas.length);
  170. },
  171. getPirceInfoDatas:function(projectGLJList,contractor_list){
  172. let datas = [];
  173. let pgljList = projectGLJList?projectGLJList:projectObj.project.projectGLJ.datas.gljList;
  174. let contractorList = contractor_list?contractor_list:projectObj.project.contractor_list.datas;
  175. let gljMap = _.indexBy(pgljList,'id');
  176. for(let e of contractorList){
  177. let t = {
  178. ID:e.ID,
  179. projectID: e.projectID,
  180. is_related:e.is_related,//关联,1关,0不关
  181. projectGLJID:e.projectGLJID,//关联工料机ID
  182. seq:e.seq,//序号
  183. code:e.code,
  184. name:e.name,
  185. specs:e.specs,
  186. unit:e.unit,
  187. type:e.type,
  188. marketPrice:e.market_price,
  189. quantity:e.quantity,
  190. remark:e.remark,
  191. supply:e.supply,
  192. riskCoe : e.riskCoe,
  193. is_evaluate:0,
  194. standardPrice : e.standardPrice
  195. };
  196. let pglj = gljMap[e.projectGLJID];
  197. if(e.is_related && pglj){
  198. gljOprObj.setGLJPrice(t,pglj);
  199. t.vender = pglj.vender;
  200. t.supply = pglj.supply;
  201. t.is_evaluate = pglj.is_evaluate;
  202. t.quantity = pglj.quantity;
  203. }
  204. t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
  205. datas.push(t);
  206. }
  207. return _.sortByAll(datas,'code');
  208. },
  209. getPriceCoeDatas:function (projectGLJList,contractor_list,totalFee) {
  210. let datas = [];
  211. let pgljList = projectGLJList?projectGLJList:projectObj.project.projectGLJ.datas.gljList;
  212. let contractorList = contractor_list?contractor_list:projectObj.project.contractor_list.datas;
  213. let gljMap = _.indexBy(pgljList,'id');
  214. if(!gljUtil.isDef(totalFee)){
  215. let node = projectObj.project.Bills.getEngineeringCostNode(projectObj.mainController);
  216. totalFee = node && node.data.feesIndex && node.data.feesIndex.common?node.data.feesIndex.common.totalFee:0;
  217. }
  218. for(let e of contractorList){
  219. let t = {
  220. ID:e.ID,
  221. projectID: e.projectID,
  222. is_related:e.is_related,//关联,1关,0不关
  223. projectGLJID:e.projectGLJID,//关联工料机ID
  224. seq:e.seq,//序号
  225. code:e.code,
  226. name:e.name,
  227. specs:e.specs,
  228. unit:e.unit,
  229. type:e.type,
  230. marketPrice:e.market_price,
  231. quantity:e.quantity,
  232. remark:e.remark,
  233. supply:e.supply,
  234. is_evaluate:0,
  235. FO : e.FO,
  236. FI : e.FI
  237. };
  238. let pglj = gljMap[e.projectGLJID];
  239. if(e.is_related && pglj){
  240. gljOprObj.setGLJPrice(t,pglj);
  241. t.vender = pglj.vender;
  242. t.supply = pglj.supply;
  243. t.quantity = pglj.quantity;
  244. t.is_evaluate = pglj.is_evaluate;
  245. }
  246. t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
  247. if(totalFee !==0) t.varWeight = scMathUtil.roundForObj(t.totalPrice/totalFee,2);
  248. datas.push(t);
  249. }
  250. return _.sortByAll(datas,'code');
  251. },
  252. getCommonObject:function (glj) {
  253. let data ={
  254. select:0,
  255. id:glj.id,
  256. code:glj.code,
  257. name:glj.name,
  258. specs:glj.specs,
  259. unit:glj.unit,
  260. type:glj.type,
  261. quantity:glj.quantity,
  262. supply:glj.supply,
  263. originPlace:glj.originPlace,
  264. vender:glj.vender,
  265. brand:glj.brand,
  266. remark:glj.remark
  267. };
  268. gljOprObj.setGLJPrice(data,glj);
  269. return data;
  270. }
  271. };
  272. let gljFromObj={
  273. spread:null,
  274. sheet:null,
  275. datas:[],
  276. setting:{
  277. header: [
  278. {headerName: "选择", headerWidth: 45, dataCode: "select", hAlign: "center", dataType: "String",cellType:'checkBox'},
  279. {headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String"},
  280. {headerName: "类型", headerWidth: 30, dataCode: "short_name", hAlign: "center", dataType: "String"},
  281. {headerName: "名称", headerWidth: 160, dataCode: "name", dataType: "String",cellType:'tipsCell'},
  282. {headerName: "规格型号", headerWidth: 100, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'},
  283. {headerName: "单位", headerWidth: 45, dataCode: "unit", hAlign: "center", dataType: "String"},
  284. {headerName: "总消耗量", headerWidth: 90, dataCode: "quantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
  285. {headerName: "市场价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",validator:"number"},//,decimalField:"glj.unitPrice"
  286. {headerName: "供货方式", headerWidth: 70, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
  287. {headerName: "暂估", headerWidth: 45, dataCode: "is_evaluate", hAlign: "center", dataType: "String",cellType:'checkBox'},
  288. {headerName: "产地", headerWidth: 80, dataCode: "originPlace", hAlign: "left", dataType: "String"},
  289. {headerName: "厂家", headerWidth: 80, dataCode: "vender", hAlign: "left", dataType: "String"},
  290. {headerName: "备注", headerWidth: 100, dataCode: "remark", hAlign: "left", dataType: "String"}
  291. ],
  292. view: {
  293. lockColumns: ["is_evaluate"]
  294. }
  295. },
  296. checkType:"取消",//记住点击过的按钮的text
  297. initSpread:function () {
  298. if(!this.spread){
  299. this.spread = SheetDataHelper.createNewSpread($("#glj_from_sheet")[0]);
  300. sheetCommonObj.spreadDefaultStyle(this.spread);
  301. }else {
  302. this.spread.refresh();
  303. }
  304. this.sheet = this.spread.getSheet(0);
  305. sheetCommonObj.initSheet(this.sheet,this.setting);
  306. this.sheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onEditStarting);
  307. this.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, this.onClipboardPasting);
  308. this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onValueChanged);
  309. this.sheet.setRowHeight(0, 36, 1);
  310. disableRightMenu("glj_from_sheet",this.spread);
  311. },
  312. onEditStarting:function (e,args) {
  313. args.cancel = true;
  314. },
  315. onClipboardPasting:function (e,args) {
  316. args.cancel = true;
  317. },
  318. onValueChanged:function (e,args) {
  319. let me = gljFromObj;
  320. let value = args.newValue;
  321. value = value == true?1:0;
  322. me.datas[args.row].select = value;
  323. },
  324. showDatas:function () {
  325. this.datas = [];
  326. let gljList = projectObj.project.projectGLJ.datas.gljList;
  327. gljList = this.filterGLJ(gljList);
  328. gljList = sortProjectGLJ(gljList);
  329. for(let glj of gljList){
  330. this.datas.push(this.getSheetDatas(glj));
  331. }
  332. this.refreshDatas();
  333. },
  334. filterGLJ:function (gljList) {
  335. let typeMap = {};
  336. for(let ch of $(".glj_sel_input:checked")){
  337. typeMap[$(ch).val()] = true;
  338. }
  339. let inputV = $("#glj_sel_input").val();
  340. return _.filter(gljList,function (item) {
  341. if(item.quantity === 0 || item.quantity === '0') return false;
  342. if(!typeMap[0]){//如果没有勾选所有,下面再细分
  343. let firstS = (item.type+"").substring(0,1);
  344. if(!typeMap[firstS]) return false
  345. }
  346. if(inputV!=""){//输入的关键字过滤
  347. if(item.code.indexOf(inputV)==-1 && item.name.indexOf(inputV)==-1) return false
  348. }
  349. return true;
  350. });
  351. },
  352. refreshDatas:function () {
  353. this.checkByType(this.checkType);
  354. sheetCommonObj.showData(this.sheet, this.setting,this.datas);
  355. this.sheet.setRowCount(this.datas.length);
  356. },
  357. getSheetDatas(glj){
  358. let projectGLJ = projectObj.project.projectGLJ;
  359. let materialIdList = projectGLJ.datas.constData.materialIdList;
  360. let data = materialAdjustObj.getCommonObject(glj);
  361. data.select = 0;
  362. data.short_name = projectGLJ.getShortNameByID(glj.type);
  363. // 只有材料才显示是否暂估
  364. if (materialIdList.indexOf(glj.type) >= 0) data.is_evaluate = glj.is_evaluate;
  365. data.from = glj;
  366. data.is_contractor_material = glj.is_contractor_material;
  367. return data;
  368. },
  369. checkByType:function (type) {
  370. for(let d of this.datas){
  371. d.select = 0;
  372. switch (type){
  373. case "全选":
  374. d.select = 1;
  375. break;
  376. case "全选主材":
  377. if(d.type == 4) d.select = 1;
  378. break;
  379. case "全选设备":
  380. if(d.type == 5) d.select = 1;
  381. break;
  382. case "取消":
  383. d.select = d.is_contractor_material?1:0;
  384. break;
  385. }
  386. }
  387. },
  388. confirmSelect:function () {
  389. let tasks = [];
  390. let datas = projectObj.project.contractor_list.datas,modelType= 'contractor_list',field= 'is_contractor_material';
  391. let evaluateMap = _.indexBy(datas,"projectGLJID");
  392. let evaluateKeyMap = {};//关键字映射表
  393. for(let e of datas){
  394. let eIndex = gljUtil.getIndex(e);
  395. evaluateKeyMap[eIndex] = e;
  396. }
  397. for(let d of this.datas){
  398. if(d.select == 1){//如果是选中状态
  399. if(d[field] == 1) {//如果已经标记为承包人材料
  400. let evl = evaluateMap[d.id];
  401. if(evl){
  402. //这里应该是错误检查的保证,按正常是不应该出现这种情况的
  403. if(evl.is_related !=1) tasks.push({type:modelType,doc:{projectGLJID:d.id,is_related:1},action:"update",ID:evl.ID});
  404. }else {
  405. tasks.push(getNewEval(d,modelType))
  406. }
  407. }else {//如果不是暂估,要改成暂估
  408. let pdata = {id:d.id,doc:{},action:'update',type:"glj_list"};
  409. pdata.doc[field] = 1;
  410. tasks.push(pdata);
  411. let evaluate = evaluateKeyMap[gljUtil.getIndex(d)];
  412. if(evaluate) {//如果已经存在5个关键字相同的暂估材料,则自动关联起来
  413. let edata = {type:modelType,doc:{projectGLJID:d.id,is_related:1},action:"update",ID:evaluate.ID};
  414. tasks.push(edata);
  415. }else {//如果不存在,则生成一条新的
  416. tasks.push(getNewEval(d,modelType));
  417. }
  418. }
  419. }else {//未选中状态的,检查一下是否存在关联的情况,取消关联
  420. let tdoc = {};
  421. tdoc[field] = 0;
  422. if(d[field] == 1) tasks.push({id:d.id,doc:tdoc,action:'update',type:"glj_list"});
  423. let evl = evaluateMap[d.id];
  424. if(evl){
  425. if(evl.is_related ==1) tasks.push({type:modelType,doc:{is_related:0},action:"update",ID:evl.ID});
  426. }
  427. let evaluate = evaluateKeyMap[gljUtil.getIndex(d)];
  428. if(evaluate) {
  429. if(evaluate.is_related ==1) tasks.push({type:modelType,doc:{is_related:0},action:"update",ID:evaluate.ID});
  430. }
  431. }
  432. }
  433. if(tasks.length > 0) configMaterialObj.updateEvaluateMaterial(tasks);
  434. function getNewEval(d,m_t) {
  435. let ndata = {type:m_t,doc:{},action:"add"};
  436. ndata.doc['ID'] = uuid.v1();
  437. ndata.doc['projectGLJID'] = d.id;
  438. ndata.doc['is_related'] = 1;
  439. ndata.doc['seq'] = d.code;
  440. ndata.doc['projectID'] = d.from.project_id;
  441. ndata.doc['code'] = d.code;
  442. ndata.doc['name'] = d.name;
  443. ndata.doc['specs'] = d.specs;
  444. ndata.doc['unit'] = d.unit;
  445. ndata.doc['quantity'] = d.quantity;
  446. ndata.doc['type'] = d.type;
  447. ndata.doc['market_price'] = d.from.unit_price.market_price;
  448. ndata.doc['originPlace'] = d.originPlace;
  449. ndata.doc['vender'] = d.vender;
  450. ndata.doc['remark'] = d.remark;
  451. ndata.doc['supply'] = d.supply;
  452. ndata.doc['riskCoe'] = "";
  453. ndata.doc['standardPrice'] = "";
  454. ndata.doc['FO'] = "";
  455. ndata.doc['FI'] = "";
  456. return ndata;
  457. }
  458. }
  459. };
  460. $(function () {
  461. $("#adjustType").change(function () {
  462. materialAdjustObj.refreshSheetDatas();
  463. let val = $(this).val();
  464. let mixDatas = {projectID: projectObj.project.projectInfo.ID, updateType: 'update',
  465. properties: {'property.gljAdjustType': val},
  466. options: {}, labourCoes: {}, rations: [], bills: []};
  467. CommonAjax.post('/pm/api/updateMixDatas', {user_id: userID, mixDataArr: mixDatas}, function (rstData) {
  468. projectObj.project.projectInfo.property.gljAdjustType = val;
  469. });
  470. });
  471. $('#selectFromGLJ').on('shown.bs.modal',function(e){
  472. gljFromObj.checkType="取消";
  473. gljFromObj.initSpread();
  474. gljFromObj.showDatas();
  475. });
  476. $(".glj_sel_input").change(function () {
  477. let check = $(this).prop("checked");
  478. if($(this).val() == 0){//勾选的是全选,其它的勾选项跟着改变
  479. for(let a of $(".glj_sel_input")){
  480. $(a).prop("checked",check)
  481. }
  482. }else {//勾选其它选项
  483. let a_checked = true;
  484. for(let o of $(".glj_sel_input_other")){//如果其它的有一个不勾选,则所有项也不打勾
  485. if($(o).prop("checked") === false){
  486. a_checked = false;
  487. break;
  488. }
  489. }
  490. $("#glj_sel_all").prop("checked",a_checked);
  491. }
  492. gljFromObj.showDatas();
  493. });
  494. $("#glj_sel_btn_find").click(function () {
  495. gljFromObj.showDatas();
  496. });
  497. $(".glj_sel_check_btn").click(function () {
  498. gljFromObj.checkType = $(this).text();
  499. gljFromObj.refreshDatas();
  500. })
  501. $("#glj_sel_confirm").click(function () {
  502. gljFromObj.confirmSelect();
  503. })
  504. });