| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548 |
- /**
- * Created by zhang on 2019/9/10.
- */
- let configMaterialObj = {
- GLJIDMap: {},
- relateFilterAgain: false,
- configSpread: null,
- relatedSpread: null,
- evaluateMaterialDatas: [],
- bidMaterialDatas: [],
- evaluateMaterialSetting: {
- header: [{
- headerName: "关联",
- headerWidth: 80,
- dataCode: "is_related",
- dataType: "String",
- cellType: 'checkBox'
- },
- {
- headerName: "序号",
- headerWidth: 80,
- dataCode: "seq",
- dataType: "String",
- formatter: "@"
- },
- {
- headerName: "材料号",
- headerWidth: 80,
- dataCode: "code",
- dataType: "String",
- formatter: "@"
- },
- {
- headerName: "材料名称",
- headerWidth: 160,
- dataCode: "name",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "规格型号",
- headerWidth: 120,
- dataCode: "specs",
- hAlign: "left",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "单位",
- headerWidth: 45,
- dataCode: "unit",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "数量",
- headerWidth: 90,
- dataCode: "quantity",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- }, //decimalField:'glj.quantity'
- {
- headerName: "暂定价",
- headerWidth: 70,
- dataCode: "marketPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- },
- {
- headerName: "合价",
- headerWidth: 90,
- dataCode: "totalPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number",
- decimalField: 'bills.totalPrice'
- },
- {
- headerName: "锁定",
- headerWidth: 80,
- dataCode: "locked",
- hAlign: "left",
- dataType: "String",
- cellType: 'checkBox'
- },
- {
- headerName: "产地",
- headerWidth: 80,
- dataCode: "originPlace",
- hAlign: "left",
- dataType: "String",
- visible: false
- },
- {
- headerName: "厂家",
- headerWidth: 80,
- dataCode: "vender",
- hAlign: "left",
- dataType: "String",
- visible: false
- },
- {
- headerName: "备注",
- headerWidth: 100,
- dataCode: "remark",
- hAlign: "left",
- dataType: "String"
- }
- ],
- view: {
- lockColumns: ["is_related", "totalPrice", "originPlace", "vender", "quantity"]
- }
- },
- bidMaterialSetting: {
- header: [{
- headerName: "关联",
- headerWidth: 80,
- dataCode: "is_related",
- dataType: "String",
- cellType: 'checkBox'
- },
- {
- headerName: "序号",
- headerWidth: 80,
- dataCode: "seq",
- dataType: "String",
- formatter: "@"
- },
- {
- headerName: "材料号",
- headerWidth: 80,
- dataCode: "code",
- dataType: "String",
- formatter: "@"
- },
- {
- headerName: "材料名称",
- headerWidth: 160,
- dataCode: "name",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "规格型号",
- headerWidth: 120,
- dataCode: "specs",
- hAlign: "left",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "单位",
- headerWidth: 45,
- dataCode: "unit",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "数量",
- headerWidth: 90,
- dataCode: "quantity",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- }, //decimalField:'glj.quantity'
- {
- headerName: "单价",
- headerWidth: 70,
- dataCode: "marketPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- },
- {
- headerName: "合价",
- headerWidth: 90,
- dataCode: "totalPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number",
- decimalField: 'bills.totalPrice'
- },
- {
- headerName: "产地",
- headerWidth: 80,
- dataCode: "originPlace",
- hAlign: "left",
- dataType: "String",
- visible: false
- },
- {
- headerName: "厂家",
- headerWidth: 80,
- dataCode: "vender",
- hAlign: "left",
- dataType: "String",
- visible: false
- },
- {
- headerName: "备注",
- headerWidth: 100,
- dataCode: "remark",
- hAlign: "left",
- dataType: "String"
- }
- ],
- view: {
- lockColumns: ["is_related", "totalPrice", "originPlace", "vender", "quantity"]
- }
- },
- evaluateRelateSetting: {
- header: [{
- headerName: "关联",
- headerWidth: 80,
- dataCode: "is_related",
- dataType: "String",
- cellType: 'checkBox'
- },
- {
- headerName: "编码",
- headerWidth: 80,
- dataCode: "code",
- dataType: "String"
- },
- {
- headerName: "类别",
- headerWidth: 45,
- dataCode: "short_name",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "名称",
- headerWidth: 160,
- dataCode: "name",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "规格型号",
- headerWidth: 120,
- dataCode: "specs",
- hAlign: "left",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "单位",
- headerWidth: 45,
- dataCode: "unit",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "数量",
- headerWidth: 90,
- dataCode: "quantity",
- hAlign: "right",
- dataType: "Number",
- decimalField: 'glj.quantity'
- },
- {
- headerName: "定额价",
- headerWidth: 70,
- dataCode: "basePrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- },
- {
- headerName: "市场价",
- headerWidth: 70,
- dataCode: "marketPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- },
- {
- headerName: "合价",
- headerWidth: 90,
- dataCode: "totalPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number",
- decimalField: 'bills.totalPrice'
- },
- /* {headerName: "供货方式", headerWidth: 70, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
- {headerName: "产地", headerWidth: 80, dataCode: "originPlace", hAlign: "left", dataType: "String"},
- {headerName: "厂家", headerWidth: 80, dataCode: "vender", hAlign: "left", dataType: "String"}, */
- {
- headerName: "备注",
- headerWidth: 100,
- dataCode: "remark",
- hAlign: "left",
- dataType: "String"
- }
- ],
- view: {
- lockColumns: ["code", "type", "name", "specs", "unit", "quantity", "marketPrice", "basePrice", "supply", "originPlace", "vender", "remark"]
- }
- },
- initSpread: function () {
- if (!this.configSpread) {
- this.configSpread = SheetDataHelper.createNewSpread($("#config_material_sheet")[0], 4);
- sheetCommonObj.spreadDefaultStyle(this.configSpread);
- this.relatedSpread = SheetDataHelper.createNewSpread($("#related_sheet")[0], 4);
- sheetCommonObj.spreadDefaultStyle(this.relatedSpread);
- }
- this.initEvaluateMaterialSheet();
- this.initbidMaterialSheet();
- this.initEvaluateRelateSheet();
- //打开别人分享的项目,只读
- if (projectReadOnly) {
- sheetCommonObj.disableSpread(this.configSpread);
- sheetCommonObj.disableSpread(this.relatedSpread);
- } else {
- this.initRightClick();
- }
- },
- initEvaluateMaterialSheet: function () {
- this.evaluateMaterialSheet = this.configSpread.getSheet(0);
- sheetCommonObj.initSheet(this.evaluateMaterialSheet, this.evaluateMaterialSetting, 30);
- this.evaluateMaterialSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onEvaluateMaterialValueChange);
- this.evaluateMaterialSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onEvaluateMaterialSelectionChange);
- this.evaluateMaterialSheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onEvaluateMaterialEditStarting);
- this.evaluateMaterialSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onSheetRangeChange);
- this.evaluateMaterialSheet.name('evaluateMaterialSheet');
- this.evaluateMaterialSheet.setRowHeight(0, 36, 1);
- },
- initbidMaterialSheet: function () {
- this.bidMaterialSheet = this.configSpread.getSheet(1);
- sheetCommonObj.initSheet(this.bidMaterialSheet, this.bidMaterialSetting, 30);
- this.bidMaterialSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onBidEvaluateMaterialValueChange);
- this.bidMaterialSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onEvaluateMaterialSelectionChange);
- this.bidMaterialSheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onBitMaterialEditStarting);
- this.bidMaterialSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onSheetRangeChange);
- this.bidMaterialSheet.name('bidMaterialSheet');
- this.bidMaterialSheet.setRowHeight(0, 36, 1);
- },
- initEvaluateRelateSheet: function () {
- this.evaluateRelateSheet = this.relatedSpread.getSheet(0);
- sheetCommonObj.initSheet(this.evaluateRelateSheet, this.evaluateRelateSetting, 30);
- this.evaluateRelateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onEvaluateRelateValueChange);
- this.evaluateRelateSheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onEvaluateRelateEditStarting);
- //this.evaluateRelateSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onSheetRangeChange);
- this.evaluateRelateSheet.name('evaluateRelateSheet');
- this.evaluateRelateSheet.setRowHeight(0, 36, 1);
- },
- showEvaluateMaterialDatas: function () {
- this.configSpread.setActiveSheetIndex(0);
- let sel = this.evaluateMaterialSheet.getSelections()[0];
- let oldData = sel.row < this.evaluateMaterialDatas.length ? this.evaluateMaterialDatas[sel.row] : "";
- this.evaluateMaterialDatas = this.getEvaluateMaterialDatas();
- sheetCommonObj.showData(this.evaluateMaterialSheet, this.evaluateMaterialSetting, this.evaluateMaterialDatas);
- this.evaluateMaterialSheet.setRowCount(this.evaluateMaterialDatas.length);
- sel.row = oldData ? _.findIndex(this.evaluateMaterialDatas, {
- 'ID': oldData.ID
- }) : '';
- this.evaluateMaterialSheet.setSelection(sel.row == -1 ? 0 : sel.row, sel.col, sel.rowCount, sel.colCount);
- },
- showBidMaterialDatas: function () {
- this.configSpread.setActiveSheetIndex(1);
- let sel = this.bidMaterialSheet.getSelections()[0];
- let oldData = sel.row < this.bidMaterialDatas.length ? this.bidMaterialDatas[sel.row] : "";
- this.bidMaterialDatas = this.getBidMaterialDatas();
- sheetCommonObj.showData(this.bidMaterialSheet, this.bidMaterialSetting, this.bidMaterialDatas);
- this.bidMaterialSheet.setRowCount(this.bidMaterialDatas.length);
- sel.row = oldData ? _.findIndex(this.bidMaterialDatas, {
- 'ID': oldData.ID
- }) : '';
- this.bidMaterialSheet.setSelection(sel.row == -1 ? 0 : sel.row, sel.col, sel.rowCount, sel.colCount);
- },
- showEvaluateRelateDatas: function () {
- this.relatedSpread.setActiveSheetIndex(0);
- this.evaluateRelateDatas = this.getEvaluateRelateDatas();
- sheetCommonObj.showData(this.evaluateRelateSheet, this.evaluateRelateSetting, this.evaluateRelateDatas);
- this.evaluateRelateSheet.setRowCount(this.evaluateRelateDatas.length);
- },
- refreshSheetDatas: function () {
- if (projectGljObject.displayType == filterType.ZGCL) {
- this.showEvaluateMaterialDatas();
- } else if (projectGljObject.displayType == filterType.PBCL) {
- this.showBidMaterialDatas();
- }
- this.showEvaluateRelateDatas();
- },
- setNavLinkText: function (type) {
- let text = "关联暂估材料";
- switch (type) {
- case filterType.ZGCL:
- text = "关联暂估材料";
- break;
- case filterType.PBCL:
- text = "关联评标材料";
- break;
- case filterType.AMAE:
- text = "关联材料";
- break;
- }
- $("#related_link").text(text);
- },
- getEvaluateRelateDatas: function () {
- //$('filterGljName')
- let name = '',
- datas = [],
- sheet = null,
- field = '',
- rdata = [];
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- sheet = this.evaluateMaterialSheet;
- datas = this.evaluateMaterialDatas;
- field = "is_evaluate";
- break;
- case filterType.PBCL:
- sheet = this.bidMaterialSheet;
- datas = this.bidMaterialDatas;
- field = "is_eval_material";
- break;
- case filterType.AMAE:
- sheet = materialAdjustObj.getSheet();
- datas = materialAdjustObj.getSheetDatas();
- field = "is_contractor_material";
- }
- let sel = sheet.getSelections()[0];
- let srow = sel.row == -1 || sel.row == "" ? 0 : sel.row;
- if (gljUtil.isDef(srow) && datas.length > srow) {
- name = this.relateFilterAgain == true ? $('#filterGljName').val() : datas[srow].name;
- rdata = this.filterEvaluateRelate(name, datas[srow].projectGLJID, field);
- }
- if (this.relateFilterAgain == false) $('#filterGljName').val(name);
- return rdata;
- },
- filterEvaluateRelate: function (name, projectGLJID, relateField) {
- let datas = [];
- let projectGLJ = projectObj.project.projectGLJ;
- let materialIdList = projectGLJ.datas.constData.materialIdList;
- for (let d of projectGLJ.datas.gljList) {
- if (parseFloat(d.quantity) > 0) { //材料类型//materialIdList.indexOf(d.type) >= 0 &&
- if (projectGljObject.displayType != filterType.AMAE) {
- if (materialIdList.indexOf(d.type) == -1) continue;
- }
- if (d[relateField] == 1 && d.id != projectGLJID) continue; //排除其它已被关联的工料机
- if (name != '') { //name为''时不做过滤
- if (d.name.indexOf(name) == -1) {
- if (!(d[relateField] == 1 && d.id == projectGLJID)) continue; //虽然不匹配,但是是关联的暂估材料,这时应该显示
- }
- }
- let t = {
- id: d.id,
- code: d.code,
- type: d.type,
- short_name: projectGLJ.getShortNameByID(d.type),
- name: d.name,
- specs: d.specs,
- unit: d.unit,
- quantity: d.quantity,
- supply: d.supply,
- originPlace: d.originPlace,
- vender: d.vender,
- remark: d.remark,
- from: d
- };
- t.is_related = d[relateField] ? 1 : 0;
- gljOprObj.setGLJPrice(t, d);
- t.totalPrice = scMathUtil.roundForObj(t.quantity * t.marketPrice, getDecimal('bills.totalPrice'));
- datas.push(t);
- }
- }
- return _.sortByAll(datas, 'code');
- },
- getEvaluateMaterialDatas: function (projectGLJList, evaluateList, decimalObj) {
- projectGLJList = projectGLJList ? projectGLJList : projectObj.project.projectGLJ.datas.gljList;
- evaluateList = evaluateList ? evaluateList : projectObj.project.evaluate_list.datas;
- const billsDecimal = decimalObj ? decimalObj.bills.totalPrice : getDecimal('bills.totalPrice');
- let datas = [];
- let gljMap = _.indexBy(projectGLJList, 'id');
- for (let e of evaluateList) {
- let t = {
- ID: e.ID,
- projectID: e.projectID,
- is_related: e.is_related, //关联,1关,0不关
- projectGLJID: e.projectGLJID, //关联工料机ID
- seq: e.seq, //序号
- code: e.code,
- name: e.name,
- specs: e.specs,
- unit: e.unit,
- type: e.type,
- marketPrice: e.market_price,
- quantity: e.quantity,
- locked: e.locked, //锁定,1锁,0不锁
- remark: e.remark,
- originPlace: e.originPlace, //产地
- vender: e.vender //厂家
- };
- let pglj = gljMap[e.projectGLJID];
- if (e.is_related && pglj) {
- gljOprObj.setGLJPrice(t, pglj);
- t.originPlace = pglj.originPlace;
- t.vender = pglj.vender;
- t.brand = pglj.brand;
- t.qualityGrace = pglj.qualityGrace;
- t.remark = pglj.remark;
- t.quantity = pglj.quantity;
- }
- t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice), billsDecimal);
- datas.push(t);
- }
- return _.sortByAll(datas, 'code');
- },
- getBidMaterialDatas: function (projectGLJList, bidEvaluationList, decimalObj) {
- projectGLJList = projectGLJList ? projectGLJList : projectObj.project.projectGLJ.datas.gljList;
- bidEvaluationList = bidEvaluationList ? bidEvaluationList : projectObj.project.bid_evaluation_list.datas;
- const billsDecimal = decimalObj ? decimalObj.bills.totalPrice : getDecimal('bills.totalPrice');
- let datas = [];
- let gljMap = _.indexBy(projectGLJList, 'id');
- for (let e of bidEvaluationList) {
- let t = {
- ID: e.ID,
- projectID: e.projectID,
- is_related: e.is_related, //关联,1关,0不关
- projectGLJID: e.projectGLJID, //关联工料机ID
- seq: e.seq, //序号
- code: e.code,
- name: e.name,
- specs: e.specs,
- unit: e.unit,
- type: e.type,
- marketPrice: e.market_price,
- quantity: e.quantity,
- remark: e.remark,
- originPlace: e.originPlace, //产地
- is_evaluate: 0,
- vender: e.vender //厂家
- };
- let pglj = gljMap[e.projectGLJID];
- if (e.is_related && pglj) {
- gljOprObj.setGLJPrice(t, pglj);
- t.originPlace = pglj.originPlace;
- t.vender = pglj.vender;
- t.brand = pglj.brand;
- t.qualityGrace = pglj.qualityGrace;
- t.quantity = pglj.quantity;
- t.is_evaluate = pglj.is_evaluate;
- }
- t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice), billsDecimal);
- datas.push(t);
- }
- return _.sortByAll(datas, 'code');
- },
- updateConfigMaterial: function (dataCode, value, recode) {
- let task = [];
- for (let t of projectObj.project.projectGLJ.datas.gljList) {
- this.GLJIDMap[t.id] = t;
- }
- let glj = this.GLJIDMap[recode.id];
- if (!glj) return;
- let pdata = {
- doc: {},
- action: 'update'
- };
- pdata['type'] = 'glj_list';
- pdata.doc[dataCode] = value;
- pdata['id'] = glj.id;
- task.push(pdata);
- this.getEvaluateUpdateTasks(value, glj, dataCode, task);
- this.updateEvaluateMaterial(task, dataCode == "is_evaluate");
- },
- updateEvaluateMaterial: async function (data, refreshEvaluate = true) {
- try {
- $.bootstrapLoading.start();
- let result = await ajaxPost('/glj/updateEvaluateMaterial', {
- tasks: data
- });
- //先刷新缓存
- let [gljs, sendPriceChange] = this.refreshCache(data);
- if (refreshEvaluate == true) {
- let [rationNodes, impactGLJs] = projectObj.project.projectGLJ.batchChangeIsEvaluate(gljs);
- projectObj.project.calcProgram.calcNodesAndSave(rationNodes, function () {
- projectObj.mainController.refreshTreeNode(projectObj.project.mainTree.roots);
- });
- }
- projectGljObject.refreshViewsData();
- gljOprObj.refreshView();
- if (sendPriceChange == true) projectGljObject.onUnitFileChange();
- } catch (e) {
- console.log(e)
- } finally {
- $.bootstrapLoading.end();
- }
- },
- refreshCache: function (tasks) {
- let gljs = [];
- let sendPriceChange = false;
- for (let t of tasks) {
- if (t.type == "evaluate_list") {
- refreshDatas(projectObj.project.evaluate_list.datas, t);
- } else if (t.type == "bid_evaluation_list") {
- refreshDatas(projectObj.project.bid_evaluation_list.datas, t);
- } else if (t.type == "contractor_list") {
- refreshDatas(projectObj.project.contractor_list.datas, t);
- } else {
- if (_.isEmpty(this.GLJIDMap)) this.GLJIDMap = _.indexBy(projectObj.project.projectGLJ.datas.gljList, 'id');
- //剩下两个类型只有更新操作
- if (t.type == "unit_price") {
- let g = this.GLJIDMap[t.projectGLJID];
- if (g) {
- let f = updateProperty(g.unit_price, t.doc);
- if (f == true) sendPriceChange = true;
- gljs.push(g);
- }
- }
- if (t.type == "glj_list") {
- let g = this.GLJIDMap[t.id];
- if (g) {
- let f = updateProperty(g, t.doc);
- if (f == true) sendPriceChange = true;
- gljs.push(g);
- }
- }
- }
- }
- this.GLJIDMap = {};
- return [gljs, sendPriceChange];
- function refreshDatas(datas, t_t) {
- if (t_t.action == "update") {
- let e = _.find(datas, {
- 'ID': t_t.ID
- });
- if (e) updateProperty(e, t_t.doc);
- }
- if (t_t.action == "add") datas.push(t_t.doc);
- if (t_t.action == "delete") _.remove(datas, {
- 'ID': t_t.ID
- });
- }
- function updateProperty(obj, doc) {
- let updatePrice = false;
- for (let k in doc) {
- obj[k] = doc[k];
- if (k == 'base_price' || k == 'market_price') updatePrice = true;
- }
- return updatePrice;
- }
- },
- getEvaluateUpdateTasks: function (value, glj, dataCode, task) {
- let dataList = [],
- modelType = 'evaluate_list';
- if (dataCode == 'is_evaluate') {
- dataList = projectObj.project.evaluate_list.datas;
- modelType = 'evaluate_list';
- } else if (dataCode == 'is_eval_material') {
- dataList = projectObj.project.bid_evaluation_list.datas;
- modelType = 'bid_evaluation_list';
- }
- if (value == 1) { //勾选暂估选项,查看已有的暂估材料列表中是否有名称,编号等完全相同的记录,有则直接关联,无则添加
- let evaluate = null;
- let pindex = gljUtil.getIndex(glj, gljUtil.materialKeyArray);
- for (let e of dataList) {
- let eIndex = gljUtil.getIndex(e, gljUtil.materialKeyArray);
- if (pindex == eIndex) {
- evaluate = e;
- break;
- }
- }
- if (evaluate) { //有找到则更新,没有则添加
- let edata = {
- type: modelType,
- doc: {},
- action: "update",
- ID: evaluate.ID
- };
- edata.doc = {
- projectGLJID: glj.id,
- is_related: 1
- };
- task.push(edata);
- if (dataCode == 'is_evaluate') {
- let udata = {
- type: 'unit_price',
- doc: {},
- action: "update",
- projectGLJID: glj.id,
- id: glj.unit_price.id
- };
- //if(evaluate.base_price != glj.unit_price.base_price) udata.doc['base_price'] = evaluate.base_price;
- if (evaluate.market_price != glj.unit_price.market_price) udata.doc['market_price'] = evaluate.market_price;
- if (!_.isEmpty(udata.doc)) task.push(udata);
- }
- } else {
- let ndata = {
- type: modelType,
- doc: {},
- action: "add"
- };
- ndata.doc['ID'] = uuid.v1();
- ndata.doc['projectGLJID'] = glj.id;
- ndata.doc['is_related'] = 1;
- if (dataCode == 'is_evaluate') ndata.doc['locked'] = 0;
- ndata.doc['seq'] = glj.code;
- ndata.doc['projectID'] = glj.project_id;
- ndata.doc['code'] = glj.code;
- ndata.doc['name'] = glj.name;
- ndata.doc['specs'] = glj.specs;
- ndata.doc['unit'] = glj.unit;
- ndata.doc['quantity'] = glj.quantity;
- ndata.doc['type'] = glj.type;
- ndata.doc['market_price'] = glj.unit_price.market_price;
- ndata.doc['originPlace'] = glj.originPlace;
- ndata.doc['vender'] = glj.vender;
- ndata.doc['remark'] = glj.remark;
- task.push(ndata);
- }
- } else if (value == 0) {
- let t_evaluate = null;
- for (let e of dataList) {
- if (e.projectGLJID == glj.id && e.is_related == 1) {
- t_evaluate = e;
- break;
- }
- }
- if (t_evaluate) {
- let tdata = {
- type: modelType,
- doc: {
- is_related: 0,
- quantity: '0'
- },
- action: "update",
- ID: t_evaluate.ID
- };
- task.push(tdata);
- }
- }
- },
- onEvaluateMaterialSelectionChange: function (sender, args) {
- let me = configMaterialObj;
- let newSel = args.newSelections[0];
- let oldSel = args.oldSelections ? args.oldSelections[0] : {};
- if (newSel.row != oldSel.row) {
- me.showEvaluateRelateDatas();
- me.relateFilterAgain = false;
- }
- },
- onBidEvaluateMaterialValueChange: function (e, info) {
- let me = configMaterialObj,
- row = info.row,
- col = info.col;
- let dataCode = me.bidMaterialSetting.header[col].dataCode;
- let value = info.newValue;
- let bid = me.bidMaterialDatas[row];
- if (value && !sheetCommonObj.checkData(col, me.bidMaterialSetting, value)) {
- alert('输入的数据类型不对,请重新输入!');
- return me.showBidMaterialDatas();
- }
- if (dataCode == 'marketPrice') {
- dataCode = 'market_price';
- if (bid.is_related) { //关联的情况下,直接修改工料机价格
- if (bid.is_evaluate == 1) {
- alert("当前材料市场价已被锁定,修改请先返回人材机汇总界面解除锁定。");
- return me.showBidMaterialDatas();
- }
- return projectObj.project.projectGLJ.updatePrice(bid, dataCode, value, 'rg', projectGljObject.refreshViewsData);
- }
- value = scMathUtil.roundToString(value, getDecimal('glj.unitPrice'));
- }
- if (value && dataCode === 'quantity') { //修改数量需做4舍5入
- value = scMathUtil.roundToString(value, getDecimal('glj.quantity'));
- }
- let edata = {
- type: 'bid_evaluation_list',
- doc: {},
- action: "update",
- ID: bid.ID
- };
- if (bid[dataCode] == value) return me.showBidMaterialDatas();
- edata.doc[dataCode] = value;
- me.updateEvaluateMaterial([edata], false);
- },
- onSheetRangeChange: function (e, args) {
- let me = configMaterialObj,
- updateMap = {},
- modelType = '',
- setting = {},
- datas = [],
- tasks = [];
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- modelType = "evaluate_list";
- setting = me.evaluateMaterialSetting;
- datas = me.evaluateMaterialDatas;
- break;
- case filterType.PBCL:
- modelType = "bid_evaluation_list";
- setting = me.bidMaterialSetting;
- datas = me.bidMaterialDatas;
- break;
- }
- for (let c of args.changedCells) {
- let dataCode = setting.header[c.col].dataCode;
- let value = args.sheet.getCell(c.row, c.col).text();
- let recode = datas[c.row];
- if (me.editChecking(recode, dataCode, modelType == "evaluate_list") == false) {
- me.refreshSheetDatas();
- return;
- }
- if (value && !sheetCommonObj.checkData(c.col, setting, value)) {
- alert('输入的数据类型不对,请重新输入!');
- me.refreshSheetDatas();
- return;
- }
- if (dataCode == 'marketPrice') {
- dataCode = 'market_price';
- if (recode.is_related) { //关联的情况下,直接修改工料机价格 暂时不支持批量修改
- return projectObj.project.projectGLJ.updatePrice(recode, dataCode, value, 'rg', null, projectGljObject.refreshViewsData);
- }
- } else {
- let tem = updateMap[recode.ID] ? updateMap[recode.ID] : {};
- if (value && dataCode === 'quantity') value = scMathUtil.roundToString(value, getDecimal('glj.quantity')); //修改数量需做4舍5入
- if (value == recode[dataCode]) continue;
- tem[dataCode] = value;
- updateMap[recode.ID] = tem;
- }
- }
- for (let ID in updateMap) {
- let edata = {
- type: modelType,
- doc: updateMap[ID],
- action: "update",
- ID: ID
- };
- tasks.push(edata);
- }
- if (tasks.length > 0) me.updateEvaluateMaterial(tasks, false);
- },
- onEvaluateMaterialValueChange: function (e, info) {
- let me = configMaterialObj,
- row = info.row,
- col = info.col;
- let dataCode = me.evaluateMaterialSetting.header[col].dataCode;
- let value = info.newValue;
- let evaluate = me.evaluateMaterialDatas[row];
- if (value && !sheetCommonObj.checkData(col, me.evaluateMaterialSetting, value)) {
- alert('输入的数据类型不对,请重新输入!');
- return me.showEvaluateMaterialDatas();
- }
- if (dataCode == 'locked') value = value == true ? 1 : 0;
- if (dataCode == 'marketPrice') {
- dataCode = 'market_price';
- if (evaluate.is_related) { //关联的情况下,直接修改工料机价格
- return projectObj.project.projectGLJ.updatePrice(evaluate, dataCode, value, 'rg', projectGljObject.refreshViewsData);
- }
- }
- if (value && dataCode === 'quantity') { //修改数量需做4舍5入
- value = scMathUtil.roundToString(value, getDecimal('glj.quantity'));
- }
- let edata = {
- type: 'evaluate_list',
- doc: {},
- action: "update",
- ID: evaluate.ID
- };
- if (evaluate[dataCode] == value) return me.showEvaluateMaterialDatas();
- edata.doc[dataCode] = value;
- me.updateEvaluateMaterial([edata], false);
- },
- onEvaluateRelateValueChange: function (e, info) {
- let me = configMaterialObj,
- row = info.row,
- col = info.col;
- let value = info.newValue;
- let sheet = null,
- datas = [],
- field = "",
- type = "";
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- sheet = me.evaluateMaterialSheet;
- datas = me.evaluateMaterialDatas;
- field = "is_evaluate";
- type = "evaluate_list";
- break;
- case filterType.PBCL:
- sheet = me.bidMaterialSheet;
- datas = me.bidMaterialDatas;
- field = "is_eval_material";
- type = "bid_evaluation_list";
- break;
- case filterType.AMAE:
- sheet = materialAdjustObj.getSheet();
- datas = materialAdjustObj.getSheetDatas();
- field = "is_contractor_material";
- type = "contractor_list";
- }
- let sel = sheet.getSelections()[0];
- let srow = sel.row == -1 || sel.row == "" ? 0 : sel.row;
- let task = [];
- value = value == true ? 1 : 0;
- if (datas.length > srow) {
- let evaluate = datas[srow];
- let relate = me.evaluateRelateDatas[row];
- let pdata = {
- id: relate.id,
- doc: {},
- action: 'update',
- type: "glj_list"
- };
- pdata.doc[field] = value;
- task.push(pdata);
- let tdata = {
- type: type,
- doc: {},
- action: "update",
- ID: evaluate.ID
- };
- if (value == 0) { //如果是0的话
- tdata.doc = {
- is_related: 0,
- quantity: '0'
- };
- } else {
- if (relate.unit != evaluate.unit) { //检查单位是否相同,如果不同不能关联
- alert("单位不一致,不允许关联!");
- return me.showEvaluateRelateDatas();
- }
- //如果已经关联了其它项目工料机,要把那个项目工料机的是否暂估标记为否
- if (evaluate.is_related == 1) {
- let tdoc = {};
- tdoc[field] = 0;
- task.push({
- id: evaluate.projectGLJID,
- doc: tdoc,
- action: 'update',
- type: "glj_list"
- });
- }
- //更新暂估材料的工料机ID,和关联标记
- tdata.doc = {
- projectGLJID: relate.id,
- is_related: 1
- };
- if (projectGljObject.displayType == filterType.ZGCL) {
- //更新新关联工料机的市场价格
- let udata = {
- type: 'unit_price',
- doc: {},
- action: "update",
- projectGLJID: relate.from.id,
- id: relate.from.unit_price.id
- };
- //if(evaluate.base_price != relate.from.unit_price.base_price) udata.doc['base_price'] = evaluate.base_price;
- if (evaluate.marketPrice != relate.from.unit_price.market_price) udata.doc['market_price'] = evaluate.marketPrice;
- if (!_.isEmpty(udata.doc)) task.push(udata);
- }
- }
- task.push(tdata);
- me.updateEvaluateMaterial(task);
- }
- },
- deleteMaterial: function (row) {
- let me = configMaterialObj;
- let evaluate = {},
- task = [],
- type = '',
- field = '';
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- evaluate = me.evaluateMaterialDatas[row];
- field = "is_evaluate";
- type = "evaluate_list";
- break;
- case filterType.PBCL:
- evaluate = me.bidMaterialDatas[row];
- field = "is_eval_material";
- type = "bid_evaluation_list";
- break;
- case filterType.AMAE:
- let t_datas = materialAdjustObj.getSheetDatas();
- evaluate = t_datas[row];
- field = "is_contractor_material";
- type = "contractor_list";
- }
- if (evaluate) {
- task.push({
- type: type,
- action: "delete",
- ID: evaluate.ID
- });
- if (evaluate.is_related == 1) { //如果关联了工料机,则要把工料机标记为不是暂估
- let tdoc = {};
- tdoc[field] = 0;
- task.push({
- id: evaluate.projectGLJID,
- doc: tdoc,
- action: 'update',
- type: "glj_list"
- })
- }
- me.updateEvaluateMaterial(task);
- }
- },
- onEvaluateMaterialEditStarting: function (sender, args) {
- let me = configMaterialObj;
- let row = args.row,
- col = args.col;
- let evaluate = me.evaluateMaterialDatas[row];
- let dataCode = me.evaluateMaterialSetting.header[col].dataCode;
- if (me.editChecking(evaluate, dataCode, true) == false) args.cancel = true;
- },
- editChecking: function (record, dataCode, checkLock = false) { //return false 为不能编辑
- if (checkLock && record.locked) return false;
- if ((dataCode == 'quantity' || dataCode == 'unit') && record.is_related) return false; //在关联的情况下,数量和单位不可编辑
- return true;
- },
- onBitMaterialEditStarting: function (sender, args) {
- let me = configMaterialObj;
- let row = args.row,
- col = args.col;
- let bid = me.bidMaterialDatas[row];
- let dataCode = me.bidMaterialSetting.header[col].dataCode;
- if (me.editChecking(bid, dataCode) == false) args.cancel = true;
- },
- onEvaluateRelateEditStarting: function (sender, args) {
- let me = configMaterialObj;
- let row = args.row,
- col = args.col;
- args.cancel = true;
- },
- insertEmptyRow: function () {
- let m_t = "";
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- m_t = "evaluate_list";
- break;
- case filterType.PBCL:
- m_t = "bid_evaluation_list";
- break;
- }
- let ndata = {
- type: m_t,
- doc: {},
- action: "add"
- };
- ndata.doc['ID'] = uuid.v1();
- ndata.doc['is_related'] = 0;
- if (m_t == "evaluate_list") ndata.doc['locked'] = 0;
- ndata.doc['seq'] = "";
- ndata.doc['projectID'] = projectObj.project.ID();
- ndata.doc['code'] = "";
- ndata.doc['name'] = "";
- ndata.doc['unit'] = "";
- ndata.doc['originPlace'] = "";
- ndata.doc['vender'] = "";
- ndata.doc['remark'] = "";
- configMaterialObj.updateEvaluateMaterial([ndata], false);
- },
- initRightClick: function () {
- let me = this;
- $.contextMenu({
- selector: '#config_material_sheet',
- build: function ($trigger, e) {
- me.rightClickTarget = SheetDataHelper.safeRightClickSelection($trigger, e, me.configSpread);
- return me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.viewport ||
- me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
- },
- items: {
- "addFromGLJ": {
- name: '从人材机汇总中选择',
- icon: 'fa-sign-in',
- disabled: function () {
- return false;
- },
- callback: function (key, opt) {
- if (projectGljObject.displayType == filterType.AMAE) {
- materialAdjustObj.checkedDefualtOption("glj_sel_input");
- $("#selectFromGLJ").modal('show');
- } else {
- // materialAdjustObj.checkedDefualtOption("pglj_sel_input"); 暂时没有这个
- $("#selectPGLJ").modal('show');
- }
- }
- },
- "insertRow": {
- name: '插入',
- icon: 'fa-sign-in',
- disabled: function () {
- return false;
- },
- callback: function (key, opt) {
- if (projectGljObject.displayType == filterType.AMAE) {
- materialAdjustObj.insertEmptyRow();
- } else {
- configMaterialObj.insertEmptyRow();
- }
- }
- },
- "deleteAdjust": {
- name: "删除",
- icon: 'fa-trash-o',
- disabled: function () {
- return me.rightClickTarget.row === undefined;
- },
- callback: function (key, opt) {
- let row = me.rightClickTarget.row;
- me.deleteMaterial(row);
- }
- }
- }
- });
- }
- };
- let pgljSelObj = {
- spread: null,
- sheet: null,
- datas: [],
- setting: {
- header: [{
- headerName: "选择",
- headerWidth: 45,
- dataCode: "select",
- hAlign: "center",
- dataType: "String",
- cellType: 'checkBox'
- },
- {
- headerName: "编码",
- headerWidth: 80,
- dataCode: "code",
- dataType: "String"
- },
- {
- headerName: "类型",
- headerWidth: 30,
- dataCode: "short_name",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "名称",
- headerWidth: 160,
- dataCode: "name",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "规格型号",
- headerWidth: 100,
- dataCode: "specs",
- hAlign: "left",
- dataType: "String",
- cellType: 'tipsCell'
- },
- {
- headerName: "单位",
- headerWidth: 45,
- dataCode: "unit",
- hAlign: "center",
- dataType: "String"
- },
- {
- headerName: "总消耗量",
- headerWidth: 90,
- dataCode: "quantity",
- hAlign: "right",
- dataType: "Number",
- decimalField: 'glj.quantity'
- },
- {
- headerName: "市场价",
- headerWidth: 70,
- dataCode: "marketPrice",
- hAlign: "right",
- dataType: "Number",
- validator: "number"
- }, //,decimalField:"glj.unitPrice"
- {
- headerName: "供货方式",
- headerWidth: 70,
- dataCode: "supply",
- hAlign: "center",
- dataType: "String",
- cellType: 'comboBox',
- editorValueType: true,
- options: supplyComboMap
- },
- {
- headerName: "暂估",
- headerWidth: 45,
- dataCode: "is_evaluate",
- hAlign: "center",
- dataType: "String",
- cellType: 'checkBox'
- },
- /* {
- headerName: "产地",
- headerWidth: 80,
- dataCode: "originPlace",
- hAlign: "left",
- dataType: "String"
- },
- {
- headerName: "厂家",
- headerWidth: 80,
- dataCode: "vender",
- hAlign: "left",
- dataType: "String"
- }, */
- {
- headerName: "备注",
- headerWidth: 100,
- dataCode: "remark",
- hAlign: "left",
- dataType: "String"
- }
- ],
- view: {
- lockColumns: ["is_evaluate"]
- }
- },
- checkType: "取消", //记住点击过的按钮的text
- initSpread: function () {
- if (!this.spread) {
- this.spread = SheetDataHelper.createNewSpread($("#pglj_from_sheet")[0]);
- sheetCommonObj.spreadDefaultStyle(this.spread);
- } else {
- this.spread.refresh();
- }
- this.sheet = this.spread.getSheet(0);
- sheetCommonObj.initSheet(this.sheet, this.setting);
- this.sheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onEditStarting);
- this.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, this.onClipboardPasting);
- this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onValueChanged);
- this.sheet.setRowHeight(0, 36, 1);
- disableRightMenu("pglj_from_sheet", this.spread);
- },
- onEditStarting: function (e, args) {
- args.cancel = true;
- },
- onClipboardPasting: function (e, args) {
- args.cancel = true;
- },
- onValueChanged: function (e, args) {
- let me = pgljSelObj;
- let value = args.newValue;
- value = value == true ? 1 : 0;
- me.datas[args.row].select = value;
- },
- showDatas: function () {
- this.datas = [];
- let gljList = projectObj.project.projectGLJ.datas.gljList;
- gljList = this.filterGLJ(gljList);
- gljList = sortProjectGLJ(gljList);
- for (let glj of gljList) {
- this.datas.push(this.getSheetDatas(glj));
- }
- this.refreshDatas();
- },
- filterGLJ: function (gljList) {
- let typeMap = {};
- for (let ch of $(".pglj_sel_input:checked")) {
- typeMap[$(ch).val()] = true;
- }
- let inputV = $("#pglj_sel_input").val();
- return _.filter(gljList, function (item) {
- if (item.quantity === 0 || item.quantity === '0') return false;
- let firstS = (item.type + "").substring(0, 1);
- if (!typeMap[firstS]) return false;
- if (inputV != "") { //输入的关键字过滤
- if (item.code.indexOf(inputV) == -1 && item.name.indexOf(inputV) == -1) return false
- }
- return true;
- });
- },
- refreshDatas: function () {
- this.checkByType(this.checkType);
- sheetCommonObj.showData(this.sheet, this.setting, this.datas);
- this.sheet.setRowCount(this.datas.length);
- },
- getSheetDatas(glj) {
- let projectGLJ = projectObj.project.projectGLJ;
- let materialIdList = projectGLJ.datas.constData.materialIdList;
- let data = this.getCommonObject(glj);
- data.select = projectGljObject.displayType == filterType.ZGCL ? glj.is_evaluate : glj.is_eval_material;
- if (!gljUtil.isDef(data.select)) data.select = 0;
- data.from = glj;
- data.short_name = projectGLJ.getShortNameByID(glj.type);
- // 只有材料才显示是否暂估
- // if (materialIdList.indexOf(glj.type) >= 0) data.is_evaluate = glj.is_evaluate;
- data.is_eval_material = glj.is_eval_material;
- data.is_evaluate = glj.is_evaluate;
- return data;
- },
- getCommonObject: function (glj) {
- let data = {
- select: 0,
- id: glj.id,
- code: glj.code,
- name: glj.name,
- specs: glj.specs,
- unit: glj.unit,
- type: glj.type,
- quantity: glj.quantity,
- supply: glj.supply,
- originPlace: glj.originPlace,
- vender: glj.vender,
- brand: glj.brand,
- remark: glj.remark
- };
- gljOprObj.setGLJPrice(data, glj);
- return data;
- },
- checkByType: function (type) {
- for (let d of this.datas) {
- d.select = 0;
- switch (type) {
- case "全选":
- d.select = 1;
- break;
- case "全选主材":
- if (d.type == 4) d.select = 1;
- break;
- case "全选设备":
- if (d.type == 5) d.select = 1;
- break;
- case "取消":
- d.select = projectGljObject.displayType == filterType.ZGCL ? d.is_evaluate : d.is_eval_material;
- if (!gljUtil.isDef(d.select)) d.select = 0;
- break;
- }
- }
- //this.refreshDatas();
- },
- confirmSelect: function () {
- let tasks = [];
- let datas = [],
- modelType = '',
- field = '';
- switch (projectGljObject.displayType) {
- case filterType.ZGCL:
- datas = projectObj.project.evaluate_list.datas;
- field = "is_evaluate";
- modelType = "evaluate_list";
- break;
- case filterType.PBCL:
- datas = projectObj.project.bid_evaluation_list.datas;
- field = "is_eval_material";
- modelType = "bid_evaluation_list";
- break;
- }
- let evaluateMap = _.indexBy(datas, "projectGLJID");
- let evaluateKeyMap = {}; //关键字映射表
- for (let e of datas) {
- let eIndex = gljUtil.getIndex(e, gljUtil.materialKeyArray);
- evaluateKeyMap[eIndex] = e;
- }
- for (let d of this.datas) {
- if (d.select == 1) { //如果是选中状态
- if (d[field] == 1) { //如果已经标记为暂估或评标材料,查看是否已经存在关联的材料
- let evl = evaluateMap[d.id];
- if (evl) {
- //这里应该是错误检查的保证,按正常是不应该出现这种情况的
- if (evl.is_related != 1) tasks.push({
- type: modelType,
- doc: {
- projectGLJID: d.id,
- is_related: 1
- },
- action: "update",
- ID: evl.ID
- });
- } else {
- tasks.push(getNewEval(d, modelType))
- }
- } else { //如果不是暂估,要改成暂估
- let pdata = {
- id: d.id,
- doc: {},
- action: 'update',
- type: "glj_list"
- };
- pdata.doc[field] = 1;
- tasks.push(pdata);
- let evaluate = evaluateKeyMap[gljUtil.getIndex(d, gljUtil.materialKeyArray)];
- if (evaluate) { //如果已经存在5个关键字相同的暂估材料,则自动关联起来
- let edata = {
- type: modelType,
- doc: {
- projectGLJID: d.id,
- is_related: 1
- },
- action: "update",
- ID: evaluate.ID
- };
- tasks.push(edata);
- if (modelType == 'evaluate_list') {
- let udata = {
- type: 'unit_price',
- doc: {},
- action: "update",
- projectGLJID: d.id,
- id: d.from.unit_price.id
- };
- if (evaluate.market_price != d.from.unit_price.market_price) udata.doc['market_price'] = evaluate.market_price;
- if (!_.isEmpty(udata.doc)) tasks.push(udata);
- }
- } else { //如果不存在,则生成一条新的
- tasks.push(getNewEval(d, modelType));
- }
- }
- } else { //未选中状态的,检查一下是否存在关联的情况,取消关联
- let tdoc = {};
- tdoc[field] = 0;
- if (d[field] == 1) tasks.push({
- id: d.id,
- doc: tdoc,
- action: 'update',
- type: "glj_list"
- });
- let evl = evaluateMap[d.id];
- if (evl) {
- if (evl.is_related == 1) tasks.push({
- type: modelType,
- doc: {
- is_related: 0
- },
- action: "update",
- ID: evl.ID
- });
- }
- let evaluate = evaluateKeyMap[gljUtil.getIndex(d, gljUtil.materialKeyArray)];
- if (evaluate) {
- if (evaluate.is_related == 1) tasks.push({
- type: modelType,
- doc: {
- is_related: 0
- },
- action: "update",
- ID: evaluate.ID
- });
- }
- }
- }
- if (tasks.length > 0) configMaterialObj.updateEvaluateMaterial(tasks);
- function getNewEval(d, m_t) {
- let ndata = {
- type: m_t,
- doc: {},
- action: "add"
- };
- ndata.doc['ID'] = uuid.v1();
- ndata.doc['projectGLJID'] = d.id;
- ndata.doc['is_related'] = 1;
- if (m_t == "evaluate_list") ndata.doc['locked'] = 0;
- ndata.doc['seq'] = d.code;
- ndata.doc['projectID'] = d.from.project_id;
- ndata.doc['code'] = d.code;
- ndata.doc['name'] = d.name;
- ndata.doc['specs'] = d.specs;
- ndata.doc['unit'] = d.unit;
- ndata.doc['quantity'] = d.quantity;
- ndata.doc['type'] = d.type;
- ndata.doc['market_price'] = d.from.unit_price.market_price;
- ndata.doc['originPlace'] = d.originPlace;
- ndata.doc['vender'] = d.vender;
- ndata.doc['remark'] = d.remark;
- return ndata;
- }
- }
- };
- $(function () {
- $("#filterAgain").click(function () {
- configMaterialObj.relateFilterAgain = true; //重新过滤标记
- configMaterialObj.showEvaluateRelateDatas();
- })
- $('#selectPGLJ').on('shown.bs.modal', function (e) {
- pgljSelObj.checkType = "取消";
- pgljSelObj.initSpread();
- pgljSelObj.showDatas();
- });
- $(".pglj_sel_input").change(function () {
- let check = $(this).prop("checked");
- if ($(this).val() == 0) { //勾选的是全选,其它的勾选项跟着改变
- for (let a of $(".pglj_sel_input")) {
- $(a).prop("checked", check)
- }
- } else { //勾选其它选项
- let a_checked = true;
- for (let o of $(".pglj_sel_input_other")) { //如果其它的有一个不勾选,则所有项也不打勾
- if ($(o).prop("checked") === false) {
- a_checked = false;
- break;
- }
- }
- $("#pglj_sel_all").prop("checked", a_checked);
- }
- pgljSelObj.showDatas();
- });
- $("#pglj_sel_btn_find").click(function () {
- pgljSelObj.showDatas();
- });
- $(".pglj_sel_check_btn").click(function () {
- pgljSelObj.checkType = $(this).text();
- pgljSelObj.refreshDatas();
- })
- $("#pglj_sel_confirm").click(function () {
- pgljSelObj.confirmSelect();
- })
- });
|