| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740 |
- import {copy, danxiangdinge_index, danxiangdinge_index_djcs, renameDingE, extractFuzhu, match_target, azfy, addChildren} from './utils';
- import { v4 as uuidv4 } from 'uuid';
- class Service{
-
- constructor() {
- this.footprint = [];
- this.cache = [];
- this.memory = [];
- this.mem_pointer = -1;
- this.cache_djcs = [];
- this.memory_djcs = [];
- this.mem_pointer_djcs = -1;
- this.qufei = [];
- this.qufeiEntry = null;
- this.jiagongcai = [];
-
- }
-
- ip() {
- //return "/api"//return "http://127.0.0.1:8000"
- return "http://127.0.0.1:1313/api"
- }
- clearCache() {//set qufei will clear cache
- this.cache = [];
- this.footprint= [];
- this.memory = [];
- this.mem_pointer = -1;
- this.cache_djcs = [];
- this.memory_djcs = [];
- this.mem_pointer_djcs = -1;
- }
- setQufei(data) {
- let result = [];
- for(let i = 0; i < data[0]['children'].length; i++) {
- let child = data[0]['children'][i];
- for(let j = 0; j < child['children'].length; j++) {
- let grandchild = child['children'][j];
- //console.log(grandchild);
- result.push(grandchild);
- }
- }
- this.qufei = result;
- }
- setJiagongcai(data) {
-
- this.jiagongcai = data;
- }
- setQufeiEntry(bh) {
- this.qufeiEntry = this.qufei.filter(x=>x['key'] == bh)[0];
- }
- processDjcsmingxi(mingxi) {
- this.cache_djcs = copy(mingxi);
- for(let i = 0; i < this.cache_djcs.length; i++) {
- let zimu = this.cache_djcs[i];
- if (!zimu.hasOwnProperty("_children")) {
- zimu["_children"] = [];
- }
- if (!zimu.hasOwnProperty("rcj")) {
- zimu["rcj"] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
- }
- }
- for(let i = 0; i < this.cache_djcs.length; i++) {
- let zimu = this.cache_djcs[i];
- for(let j = 0; j < zimu["_children"].length; j++) {
- let de = zimu["_children"][j];
- if (!de.hasOwnProperty("dercj")) {
- de["dercj"] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
- }
- }
- }
- this.cache_djcs = this.cache_djcs.map(x=>{
- //x["children"] = x["__children"];
- x["key"] = x["序号"];
- x["_children"] = x["_children"].map(y=>{
- if (!y.hasOwnProperty('key')) {
- y['key'] = uuidv4();
- }
- return y;
- })
- return x;
- });
- this.memory_djcs = [];
- this.memory_djcs.push(copy(this.cache_djcs));
- this.mem_pointer_djcs = 0;
- }
- processQingdanmingxi(mingxi) {
- this.cache = copy(mingxi);
- for(let i = 0; i < this.cache.length; i++) {
- let zimu = this.cache[i];
- if (!zimu.hasOwnProperty("__children")) {
- zimu["__children"] = [];
- }
- if (!zimu.hasOwnProperty("rcj")) {
- zimu["rcj"] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
- }
- }
- for(let i = 0; i < this.cache.length; i++) {
- let zimu = this.cache[i];
- for(let j = 0; j < zimu["__children"].length; j++) {
- let de = zimu["__children"][j];
- if (!de.hasOwnProperty("dercj")) {
- de["dercj"] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]];
- }
- }
- }
- this.cache = this.cache.map(x=>{
- x["_children"] = x["__children"];
- x["key"] = x["序号"];
- x["_children"] = x["_children"].map(y=>{
- if (!y.hasOwnProperty('key')) {
- y['key'] = uuidv4();
- }
- return y;
- })
- return x;
- });
- this.memory = [];
- this.footprint = [];
- this.memory.push(copy(this.cache));
- this.mem_pointer = 0;
- }
-
- async uploadFile(fd) {
- const response = await fetch(this.ip().concat( "/upload/"), {
- method : "POST",
- body : fd
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateQufei(name) {
- const response = await fetch(this.ip().concat("/qufei/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body : JSON.stringify({
- "name": name
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateOutline2(name) {
- const response = await fetch(this.ip().concat( "/outline2"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body : JSON.stringify({
- "name": name
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateDetail2(name) {
- const response = await fetch(this.ip().concat("/detail2"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body : JSON.stringify({
- "name": name
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateBaojiahuizong2(name, id) {
- const response = await fetch(this.ip().concat( "/baojiahuizong2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id : id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateGuifeishuijin2(name, id) {
- const response = await fetch(this.ip().concat( "/guifeishuijin2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateQitaxiangmu2(name, id) {
- const response = await fetch(this.ip().concat( "/qitaxiangmu2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id : id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateZygczgj(name, id) {
- const response = await fetch(this.ip().concat( "/zygczgj/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id : id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateZongchengbaofuwufei2(name, id) {
- const response = await fetch(this.ip().concat( "/zongchengbaofuwufei2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateFabaorengongyingcailiao2(name, id) {
- const response = await fetch(this.ip().concat( "/fabaorengongyingcailiao2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id : id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateRencaijihuizong2(name, id) {
- const response = await fetch(this.ip().concat( "/rencaijihuizong2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- let result = [];
- for (let i = 1; i < data.length; i++) {
- result.push({
- 'key': uuidv4(),
- 'ID' : data[i][0],
- '编码' : data[i][1],
- '名称': data[i][2],
- '规格型号' : data[i][3],
- '单位' : data[i][4],
- '数量' : data[i][5],
- '单价' : data[i][6],
- '合价' : data[i][7],
- '产地' : data[i][8],
- '供应厂商' : data[i][9],
- '人材机类别' : data[i][10],
- '主要材料标志' : data[i][11],
- '主材标志' : data[i][12],
- '设备标志' : data[i][13],
- '甲供标志' : data[i][14],
- '暂估价标志' : data[i][15]
- });
- }
- this.setQufeiEntry(id);
- return result;
- }
- }
- async generateJirigong2(name, id) {
- const response = await fetch(this.ip().concat("/jirigong2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateZanliejine2(name, id) {
- const response = await fetch(this.ip().concat( "/zanliejine2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateQingdanxiangmu2(name, id) {
- const response = await fetch(this.ip().concat( "/qingdanxiangmu2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- name: name,
- id: id
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async searchDe(zhuanye, text) {
- const response = await fetch(this.ip().concat( "/searchde/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify({
- zhuanye: zhuanye,
- text: text
- })
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
-
- /////////////////////////////////////qingdan//////////////////////////////////////
- async generateQingdanmingxi(name, bh, bt) {
- if (bt == 'ALL') {
- const response = await fetch(this.ip().concat("/qingdanmingxi/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "bh": bh,
- "bt": bt,
- "name": name
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
-
- return data;
- }
- } else {
- if (this.cache.length == 0 || this.cache[0]["biao_id"] != name || this.cache[0]["Dwgcbh"] != bh || this.cache[0]["bt"] != bt) {
- const response = await fetch(this.ip().concat("/qingdanmingxi/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "bh": bh,
- "bt": bt,
- "name": name
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- this.processQingdanmingxi(data);
- this.setQufeiEntry(bh);
- return copy(this.cache);
- }
- } else {
- return copy(this.cache);
- }
- }
- }
- async generateQingdanrcj(name, bh, bt, bm) {
- if (bt == "Djcs") {
- let qd = this.cache_djcs.filter(x=>x["清单编码"] == bm)[0];
- return copy(qd["rcj"]);
- }
- let qd = this.cache.filter(x=>x["清单编码"] == bm)[0];
- return copy(qd["rcj"]);
-
- }
- async generateDingercj(name, bh, bt, qdbm, debm, danwei, key) {
- console.log('generateDingercj');
- console.log(debm);
- if (bt == 'Djcs') {
- let qd = this.cache_djcs.filter(x=>x["清单编码"] == qdbm)[0];
- let de = qd["_children"].filter(x=>x["清单编码"]==debm && x['key'] == key)[0];
- return [copy(de["dercj"]), de["fuzhuEnable"]];
-
- }
- let qd = this.cache.filter(x=>x["清单编码"] == qdbm)[0];
- let de = qd["_children"].filter(x=>x["清单编码"]==debm && x['key'] == key)[0];
- return [copy(de["dercj"]), de["fuzhuEnable"], de['yuban'], de['rcjbc']];
-
-
-
-
-
- }
- /////////////////////////////end of qingdan////////////////////////////////////
- async generateQingdanTuijian(name, bh, bt, bm) {
- const response = await fetch(this.ip().concat( "/qingdantuijian/".concat(bm)), {
- method : "GET",
-
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateZjcs(name, bh) {
- const response = await fetch(this.ip().concat( "/zjcs/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "bh": bh,
- "name": name
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateDjcs(name, bh) {
- if (this.cache_djcs.length == 0 || this.cache_djcs[0]["biao_id"] != name || this.cache_djcs[0]["Dwgcbh"] != bh) {
- const response = await fetch(this.ip().concat( "/djcs/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "bh": bh,
- "name": name
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- this.processDjcsmingxi(data);
- this.setQufeiEntry(bh);
- return copy(this.cache_djcs);
- }
- } else {
- return copy(this.cache_djcs);
- }
- }
- async generateFiles2() {
- const response = await fetch(this.ip().concat( "/files2/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- }
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async deleteFiles(id) {
- const response = await fetch(this.ip().concat( "/deleteFile/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "name": id,
-
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generatePeibiXilie(id, zhuanye) {
- const response = await fetch(this.ip().concat( "/pbxl/").concat(id).concat('/').concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateJixieXilie(id, zhuanye) {
- const response = await fetch(this.ip().concat( "/jxxl/").concat(id).concat('/').concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateCailiaoXilie(id, zhuanye) {
- const response = await fetch(this.ip().concat( "/clxl/").concat(id).concat('/').concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generatePeibishu(zhuanye) {
-
- const response = await fetch(this.ip().concat( "/pbs/").concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- async generateJixieshu(zhuanye) {
-
- const response = await fetch(this.ip().concat( "/jxs/").concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- async generateCailiaoshu(zhuanye) {
-
- const response = await fetch(this.ip().concat( "/cls/").concat(zhuanye.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- async generateDingeshu(value) {
-
- const response = await fetch(this.ip().concat( "/des/").concat(value.toString()), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- async generateDingeXilie(value, id) {//定额书的一个栏目的所有具体定额
- const response = await fetch(this.ip().concat("/dexilie/").concat(value.toString()).concat("/").concat(id), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateSingleDingeXilie(zhuanye, debh, mc) {//清单页面展示用
- const response = await fetch(this.ip().concat( "/singledexilie/").concat(zhuanye.toString()).concat("/").concat(debh).concat("/").concat(encodeURIComponent(mc.replace(/\//g, ''))), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async generateSingleDingeXilie2(zhuanye, debh) {//清单页面展示用
- const response = await fetch(this.ip().concat( "/singledexilie2/").concat(zhuanye.toString()).concat("/").concat(debh.replace(/\//g, '')), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async save() {
- const response = await fetch(this.ip().concat( "/save/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
-
- "name": JSON.stringify(this.cache.filter(x=>this.footprint.includes(x['key'])))
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- this.footprint = [];
- return data;
- }
- }
- async generateJiagongcai(name) {
- const response = await fetch(this.ip().concat( "/jiagongcai/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
-
- "name": name
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async save_djcs() {
- const response = await fetch(this.ip().concat( "/savedjcs/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
-
- "name": JSON.stringify(this.cache_djcs)
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async applyFL(id, data) {
- const response = await fetch(this.ip().concat( "/applyFL/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "id": id,
- "name": JSON.stringify(data)
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- return data;
- }
- }
- async download(id) {
- const response = await fetch(this.ip().concat( "/download/").concat(id.toString()));
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.blob();
- return data;
- }
- }
- async tiaojia(biao_id, bh, bm, mingcheng, danwei, jiage) {
- let glf = "";
- let lr = "";
- let bz = 0;//changgui
- if (this.qufeiEntry['备注'].length == 0) {
- //changuiqufei
- glf = this.qufeiEntry['管理费(%)'] ;
- lr = this.qufeiEntry['利润(%)'];
- } else {
- glf = this.qufeiEntry['管理费(%)'] ;
- lr = this.qufeiEntry['利润(%)'];
- bz = 1;
- }
- const response = await fetch(this.ip().concat( "/tiaojia/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "biao_id": biao_id,
- "bh": bh,
- "bm": bm,
- "mingcheng": mingcheng,
- "danwei" : danwei,
- "jiage": jiage,
- "glf" : glf,
- "lr" : lr,
- "bz" : bz
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
- this.clearCache();
- return data;
- }
- }
- async updateZjcs(biao_id, bh, row) {
-
- const response = await fetch(this.ip().concat( "/updatezjcs/"), {
- method : "POST",
- headers: {
- "Content-type": "application/json"
- },
- body: JSON.stringify(
- {
- "biao_id": biao_id,
- "bh": bh,
- 'mc': row['名称'].toString(),
- 'fl': row['费率'].toString()
-
- }
- )
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- async cankao() { //参考费率
-
- const response = await fetch(this.ip().concat( "/cankao/"), {
- method : "GET",
-
- });
- if (!response.ok) {
- //const error = await response.json();
- console.error('error');
- } else {
- const data = await response.json();
-
- return data;
- }
- }
- ///////////////////////////////////editor_code//////////////////////////////////
- summarize_one_djcs(qd) {///根据定额汇总清单
- let dict = {};
- let left = [];
- for(let i = 0; i < qd["_children"].length; i++) {
- let de = qd["_children"][i];
- let desl = Number(de['数量']);
- let dercj = de['dercj'];
- for (let j = 1; j < dercj.length; j++) {
- let hl = copy(dercj[j]);
- if (hl[1] == '00EXP001' && hl[4] == '%') {
- left.push(hl);
- continue;
- }
- if (hl[1] == '99EXP007' && hl[4] == '%') {
- left.push(hl);
- continue;
- }
- if (hl[1] == '31130104' && hl[4] == '%') {
- left.push(hl);
- continue;
- }
- hl[10] = desl * Number(hl[10]);
- hl[11] = desl * Number(hl[11]);
- let a = hl[1];//"人材机编码",
- let b = a.concat(hl[2]);//"名称",
- let c = b.concat(hl[4]);// "单位"
- if (dict.hasOwnProperty(c)) {
- dict[c].push(hl);
- } else {
- dict[c] = [hl];
- }
- }
- }
- let result = [];
- for(const key in dict) {
- let list = dict[key];
- let sum = 0;
- let danjia = Number(list[0][5]);
- for (let i =0 ;i < list.length; i++) {
- sum += Number(list[i][10]);
- }
- let entry = [list[0][0], list[0][1], list[0][2], list[0][3], list[0][4], danjia,
- list[0][6], list[0][7], list[0][8], list[0][9], sum, sum * danjia, list[0][12],
- list[0][13], list[0][14], list[0][15]
- ];
- result.push(entry);
- }
- for (let i = 0; i < left.length; i++) {
- result.push(left[i]);
- }
- let gongri = 0;
- for(let i = 0; i < result.length; i++) {
- if (result[i][4] == '工日') {
- gongri += result[i][10];
- }
- }
- result.sort((a, b) => Number(a[8]) - Number(b[8]));
- qd['rcj'] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]].concat(result);
- qd["综合人工工日"] = gongri;
- qd['综合单价'] = 0;
- qd['合价'] = 0;
- qd['人工费'] = 0;
- qd['主材费'] = 0;
- qd['设备费'] = 0;
- qd['辅材费'] = 0;
- qd['材料费'] = 0;
- qd['机械费'] = 0;
- qd['管理费'] = 0;
- qd['利润'] = 0;
- for(let i = 0; i < qd["_children"].length; i++) {
- qd['综合单价'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['综合单价']);
- qd['合价'] += Number(qd['_children'][i]['合价']);
- qd['人工费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['人工费']);
- qd['主材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['主材费']);
- qd['设备费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['设备费']);
- qd['辅材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['辅材费']);
- qd['材料费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['材料费']);
- qd['机械费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['机械费']);
- qd['管理费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['管理费']);
- qd['利润'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['利润']);
- }
- return qd;
- }
- summarize_one(qd) {///根据定额汇总清单
- qd['综合单价'] = 0;
- qd['合价'] = 0;
- qd['人工费'] = 0;
- qd['主材费'] = 0;
- qd['设备费'] = 0;
- qd['辅材费'] = 0;
- qd['材料费'] = 0;
- qd['机械费'] = 0;
- qd['管理费'] = 0;
- qd['利润'] = 0;
- for(let i = 0; i < qd["_children"].length; i++) {
- if (qd["_children"][i]['azfytag'].length > 0)continue;
- qd['综合单价'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['综合单价']);
- qd['合价'] += Number(qd['_children'][i]['合价']);
- qd['人工费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['人工费']);
- qd['主材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['主材费']);
- qd['设备费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['设备费']);
- qd['辅材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['辅材费']);
- qd['材料费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['材料费']);
- qd['机械费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['机械费']);
- qd['管理费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['管理费']);
- qd['利润'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['利润']);
- }
- //处理安装费用
- //console.log(qd["_children"].length);
- for(let i = 0; i < qd["_children"].length; i++) {
- //console.log(i);
- if (qd["_children"][i]['azfytag'].length > 0){
- let tag = qd["_children"][i]['azfytag'];
- if (tag[0] == '人工费') {
- let current_rgf = qd['人工费'];
- let added = Number(current_rgf) * Number(tag[1]) / Number(100);
- let added_rgf = added * Number(tag[2]) / Number(100);
- let added_clf = added * Number(tag[3]) / Number(100);
- let added_jxf = added * Number(tag[4]) / Number(100);
- qd["_children"][i]['人工费'] = added_rgf;
- qd["_children"][i]['辅材费'] = added_clf;
- qd["_children"][i]['材料费'] = added_clf;
- qd["_children"][i]['机械费'] = added_jxf;
- if (this.qufeiEntry['备注'].length == 0) {
- //changuiqufei
- qd["_children"][i]['管理费'] = (added_rgf + added_jxf) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (added_rgf + added_jxf) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- } else {
- qd["_children"][i]['管理费'] = (added_rgf) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (added_rgf) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- }
-
- qd["_children"][i]['综合单价'] = qd["_children"][i]['人工费'] + qd["_children"][i]['材料费'] + qd["_children"][i]['机械费'] + qd["_children"][i]['管理费'] + qd["_children"][i]['利润'];
- qd["_children"][i]['合价'] = qd["_children"][i]['综合单价'] * Number(qd["_children"][i]['数量']) * Number(qd['数量']);
- let dercj = qd["_children"][i]['dercj'];
- for (let j = 1; j < dercj.length; j++) {
- dercj[j][11] = Number(added) * Number(dercj[j][10]) / Number(100);
- }
- }
- if (tag[0] == '人工费+机械费') {
- let current_rgf = qd['人工费'] + qd['机械费'];
- let added = Number(current_rgf) * Number(tag[1]) / Number(100);
- let added_rgf = added * Number(tag[2]) / Number(100);
- let added_clf = added * Number(tag[3]) / Number(100);
- let added_jxf = added * Number(tag[4]) / Number(100);
- qd["_children"][i]['人工费'] = added_rgf;
- qd["_children"][i]['辅材费'] = added_clf;
- qd["_children"][i]['材料费'] = added_clf;
- qd["_children"][i]['机械费'] = added_jxf;
- if (this.qufeiEntry['备注'].length == 0) {
- //changuiqufei
- qd["_children"][i]['管理费'] = (added_rgf + added_jxf) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (added_rgf + added_jxf) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- } else {
- qd["_children"][i]['管理费'] = (added_rgf) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (added_rgf) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- }
-
- qd["_children"][i]['综合单价'] = qd["_children"][i]['人工费'] + qd["_children"][i]['材料费'] + qd["_children"][i]['机械费'] + qd["_children"][i]['管理费'] + qd["_children"][i]['利润'];
- qd["_children"][i]['合价'] = qd["_children"][i]['综合单价'] * Number(qd["_children"][i]['数量']) * Number(qd["数量"]);
- let dercj = qd["_children"][i]['dercj'];
- for (let j = 1; j < dercj.length; j++) {
-
- dercj[j][11] = Number(added) * Number(dercj[j][10]) / Number(100);
-
- }
- }
- }
- }
- qd['综合单价'] = 0;
- qd['合价'] = 0;
- qd['人工费'] = 0;
- qd['主材费'] = 0;
- qd['设备费'] = 0;
- qd['辅材费'] = 0;
- qd['材料费'] = 0;
- qd['机械费'] = 0;
- qd['管理费'] = 0;
- qd['利润'] = 0;
- for(let i = 0; i < qd["_children"].length; i++) {
- qd['综合单价'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['综合单价']);
- qd['合价'] += Number(qd['_children'][i]['合价']);
- qd['人工费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['人工费']);
- qd['主材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['主材费']);
- qd['设备费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['设备费']);
- qd['辅材费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['辅材费']);
- qd['材料费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['材料费']);
- qd['机械费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['机械费']);
- qd['管理费'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['管理费']);
- qd['利润'] += Number(qd['_children'][i]['数量']) * Number(qd['_children'][i]['利润']);
- }
- let dict = {};
- let left = [];
- for(let i = 0; i < qd["_children"].length; i++) {
- let de = qd["_children"][i];
- let desl = Number(de['数量']);
- let dercj = de['dercj'];
- for (let j = 1; j < dercj.length; j++) {
- let hl = copy(dercj[j]);
- if (hl[1].includes('000FE') && hl[4] == '%') {
- left.push(hl);
- continue;
- }
- hl[10] = desl * Number(hl[10]);
- hl[11] = desl * Number(hl[11]);
- let a = hl[1];//"人材机编码",
- let b = a.concat(hl[2]);//"名称",
- let c = b.concat(hl[4]);// "单位"
- if (dict.hasOwnProperty(c)) {
- dict[c].push(hl);
- } else {
- dict[c] = [hl];
- }
- }
- }
- let result = [];
- for(const key in dict) {
- let list = dict[key];
- let sum = 0;
- let danjia = Number(list[0][5]);
- for (let i =0 ;i < list.length; i++) {
- sum += Number(list[i][10]);
- }
- let entry = [list[0][0], list[0][1], list[0][2], list[0][3], list[0][4], danjia,
- list[0][6], list[0][7], list[0][8], list[0][9], sum, sum * danjia, list[0][12],
- list[0][13], list[0][14], list[0][15]
- ];
- result.push(entry);
- }
- for (let i = 0; i < left.length; i++) {
- result.push(left[i]);
- }
- let gongri = 0;
- for(let i = 0; i < result.length; i++) {
- if (result[i][4] == '工日') {
- gongri += result[i][10];
- }
- }
- result.sort((a, b) => Number(a[8]) - Number(b[8]));
- qd['rcj'] = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志" ]].concat(result);
- qd["综合人工工日"] = gongri;
- return qd;
- }
- summarize(data) {
- return data.map(x=>this.summarize_one(x));
- }
- summarize_djcs(data) {
- return data.map(x=>this.summarize_one_djcs(x));
- }
- push_op(newData) {
- if(this.memory.length == this.mem_pointer + 1) {
- this.memory.push(copy(newData));
- this.mem_pointer = this.mem_pointer + 1;
- } else{
- this.memory.splice(this.mem_pointer + 1);
- this.memory.push(copy(newData));
- this.mem_pointer = this.mem_pointer + 1;
-
- }
- }
- push_op_djcs(newData) {
- if(this.memory_djcs.length == this.mem_pointer_djcs + 1) {
- this.memory_djcs.push(copy(newData));
- this.mem_pointer_djcs = this.mem_pointer_djcs + 1;
- } else{
- this.memory_djcs.splice(this.mem_pointer_djcs + 1);
- this.memory_djcs.push(copy(newData));
- this.mem_pointer_djcs = this.mem_pointer_djcs + 1;
-
- }
- }
- undo() {
- if (this.mem_pointer > 0) {
-
- let newData = this.memory[this.mem_pointer - 1];
- this.mem_pointer = this.mem_pointer - 1;
- this.cache = copy(newData);
- return copy(newData);
-
- }
- return copy(this.cache);
- }
- undo_djcs() {
- if (this.mem_pointer_djcs > 0) {
-
- let newData = this.memory_djcs[this.mem_pointer_djcs - 1];
- this.mem_pointer_djcs = this.mem_pointer_djcs - 1;
- this.cache_djcs = copy(newData);
- return copy(newData);
-
- }
- return copy(this.cache_djcs);
- }
-
- redo() {
- if (this.mem_pointer + 1 != this.memory.length) {
- let newData = this.memory[this.mem_pointer + 1];
- this.mem_pointer = this.mem_pointer + 1;
- this.cache = copy(newData);
- return copy(newData);
- }
- return copy(this.cache);
- }
- redo_djcs() {
- if (this.mem_pointer_djcs + 1 != this.memory_djcs.length) {
- let newData = this.memory_djcs[this.mem_pointer_djcs + 1];
- this.mem_pointer_djcs = this.mem_pointer_djcs + 1;
- this.cache_djcs = copy(newData);
- return copy(newData);
- }
- return copy(this.cache_djcs);
- }
- shanchu_djcs(key) {
- if (this.cache_djcs.filter(x=>x['key'] == key).length > 0) {
- ///qd
- let newData = this.cache_djcs.map(x=>{
- if (x["key"] == key) {
- let y = copy(x);
-
- y["_children"] = [];
- return y;
- } else {
- return x;
- }
- });
- let summarized = this.summarize_djcs(newData);
- this.push_op_djcs(summarized);
- /////////////////
- this.cache_djcs = copy(summarized);
- return copy(this.cache_djcs);
- } else {
- let qd = this.cache_djcs.filter(x=>x["_children"].filter(y=>y['key'] == key).length > 0)[0];
- let qdbm = qd['清单编码'];
- let newData = this.cache_djcs.map(x=>{
- if (x["清单编码"] == qdbm) {
- let y = copy(x);
- let origin = y["_children"];
- let trans = origin.filter(z=>z["key"]!=key);
- y["_children"] = trans;
- return y;
- } else {
- return x;
- }
- });
- let summarized = this.summarize_djcs(newData);
- this.push_op_djcs(summarized);
- /////////////////
- this.cache_djcs = copy(summarized);
- return copy(this.cache_djcs);
- }
-
-
- }
- updateFootprint(key) {
- if (this.footprint.includes(key)) {
- } else {
- this.footprint.push(key);
- }
- }
- shanchu(key) {
- if (this.cache.filter(x=>x['key'] == key).length > 0) {
- this.updateFootprint(key);
- ///qd
- let newData = this.cache.map(x=>{
- if (x["key"] == key) {
- let y = copy(x);
-
- y["_children"] = [];
- return y;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return copy(this.cache);
- } else {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key'] == key).length > 0)[0];
- this.updateFootprint(qd['key']);
- let qdbm = qd['清单编码'];
- let newData = this.cache.map(x=>{
- if (x["清单编码"] == qdbm) {
- let y = copy(x);
- let origin = y["_children"];
- let trans = origin.filter(z=>z["key"]!=key);
- y["_children"] = trans;
- return y;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return copy(this.cache);
- }
-
-
- }
- updateDercj_djcs_(row, data, xuhao) {///change 一条定额 inplace, 汇总一条定额的rcj, xuhao is for rename
- console.log("data updated");
- //处理附注
- let huan = false;//换
- let qd = this.cache_djcs.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- if (de.hasOwnProperty("rcjdg")) {//新数据
- for (let i = 1; i < de['rcjdg'].length; i++) {
- for(let j = 1; j < data.length; j++) {
- if (data[j][16] == de['rcjdg'][i][16]) {
- de['rcjdg'][i][5] = data[j][5];//更新单价
- /****ToDo 更新其他字段 */
- if (de['rcjdg'][i][2] == data[j][2]) {//更新名称
-
- } else {
- huan = true;
- }
- }
- }
- }
- if (de['fuzhuEnable'] && de.hasOwnProperty('fuzhu')) {//没强行改过含量
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- let origin = Number(de['rcjdg'][j][10]);
- for(let i = 0; i < de['fuzhu'].length; i++) {
- let selected = de['fuzhu'][i];
- let target = selected[0];
-
-
- if (match_target(de['rcjdg'][j][1], target)) {
- if (selected[2] == '系数') {
- origin = origin * Number(selected[3]);
- } else if (selected[2] == '含量') {
- origin = Number(selected[3]);
- } else if (selected[2] == '调整') {
- origin = origin + Number(selected[3]);
- } else {
- throw new Error('无法处理的附注'.concat(selected[2]));
- }
-
- }
-
- }
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- }
- }
-
- de['dercj'][j][5] = de['rcjdg'][j][5];//单价
- de['dercj'][j][10] = origin;
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
- }
- } else if (de['fuzhuEnable'] && !de.hasOwnProperty('fuzhu')) {
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- let origin = Number(de['rcjdg'][j][10]);
-
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- }
- }
- de['dercj'][j][5] = de['rcjdg'][j][5];
- de['dercj'][j][10] = origin;
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
- }
- }
- else {
- //强行改含量
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- de['dercj'][j][10] = data[k][10];
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * de['dercj'][j][10];
- }
- }
- }
- }
-
-
- data = de['dercj'];
- } else {////单项定额没有底稿,老数据没底搞,无法判断换部换,暂时统一认为不换
- //强行改含量
- de['dercj'] = copy(data);
- data = de['dercj'];
- }
- //模拟formula计算每一行的合价
- for(let i = 1; i < data.length; i++) {
- data[i][11] = Number(data[i][10]) * Number(data[i][5]);
- }
- if (data[0].length > 18)
- data = data.filter(x=>x[18]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16]]);
-
- let sum = 0;
- let rgf_sum = 0;
- let jxf_sum = 0;
- let clf_sum = 0;
- let zcf_sum = 0;
- for(let i = 1; i < data.length; i++) {
- sum += Number(data[i][11]);//11-> hejia
- if (Number(data[i][8]) == 1) {
- rgf_sum += Number(data[i][11]);
- }
- if (Number(data[i][8]) == 2) {
- clf_sum += Number(data[i][11]);
- if (data[i][14] == 'true') {
- zcf_sum += Number(data[i][11]);
- }
- }
- if (Number(data[i][8]) == 3) {
- jxf_sum += Number(data[i][11]);
- }
- }
- console.log("sum=".concat(sum));
- //处理百分比费用
- for(let i = 1; i < data.length; i++) {
- if (data[i][1]=='00EXP001' && data[i][4] == '%'){//回程费占人工费
- data[i][11] = Number(data[i][10]) * rgf_sum / Number(100);
-
- }
- if (data[i][1]=='99EXP007' && data[i][4] == '%'){//回程费占机械费
- data[i][11] = Number(data[i][10]) * jxf_sum / Number(100);
-
- }
- if (data[i][1]=='31130104' && data[i][4] == '%'){//回程费占材料费
- data[i][11] = Number(data[i][10]) * clf_sum / Number(100);
-
- }
- }
- sum = 0;
- rgf_sum = 0;
- jxf_sum = 0;
- clf_sum = 0;
- zcf_sum = 0;
- for(let i = 1; i < data.length; i++) {
- sum += Number(data[i][11]);//11-> hejia
- if (Number(data[i][8]) == 1) {
- rgf_sum += Number(data[i][11]);
- }
- if (Number(data[i][8]) == 2) {
- clf_sum += Number(data[i][11]);
- if (data[i][14] == 'true') {
- zcf_sum += Number(data[i][11]);
- }
- }
- if (Number(data[i][8]) == 3) {
- jxf_sum += Number(data[i][11]);
- }
- }
-
- let shuliang = Number(qd['数量']);
- for(let i = 0; i< qd["_children"].length; i++) {
- if(qd["_children"][i]['key'] == row) {
- let desl = Number(qd["_children"][i]['数量']);
- let oldname = qd["_children"][i]['清单编码'];
-
- qd["_children"][i]['辅材费'] = clf_sum - zcf_sum;
- qd["_children"][i]['材料费'] = clf_sum;
- qd["_children"][i]['人工费'] = rgf_sum;
- qd["_children"][i]['主材费'] = zcf_sum;
- qd["_children"][i]['设备费'] = 0;
- qd["_children"][i]['机械费'] = jxf_sum;
- if (oldname.startsWith("D")) {//单项清单
- qd["_children"][i]['管理费'] = 0;
- qd["_children"][i]['利润'] = 0;
- } else {
- if (this.qufeiEntry['备注'].length == 0) {
- //changuiqufei
- qd["_children"][i]['管理费'] = (rgf_sum + jxf_sum) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (rgf_sum + jxf_sum) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- } else {
- qd["_children"][i]['管理费'] = (rgf_sum) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (rgf_sum) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- }
- }
- qd["_children"][i]['综合单价'] = sum + qd["_children"][i]['管理费'] + qd["_children"][i]['利润'];
- qd["_children"][i]['合价'] = (qd["_children"][i]['综合单价'] * shuliang * desl);
-
-
-
- qd["_children"][i]["dercj"] = copy(data);
- qd["_children"][i]['清单编码'] = renameDingE(oldname, xuhao, huan);
- }
- }
- }
- updateDercj_(row, data, xuhao, yuban, rcjbc) {///change 一条定额 inplace, 汇总一条定额的rcj, xuhao is for rename, yuban is 预拌砂浆
- console.log("data updated");
- //处理附注
- let huan = false;//换
- let huankey = [];
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- if (de.hasOwnProperty("rcjdg")) {//新数据
- for (let i = 1; i < de['rcjdg'].length; i++) {
- for (let j = 1; j < data.length; j++) {
- if (de['rcjdg'][i][16] == data[j][16]) {
- de['rcjdg'][i][5] = data[j][5];//更新单价,底稿的单价不是很需要同步(在人才机汇总修改价格)
- /****ToDo 更新其他字段 */
- if (data[j][2].includes('(湿拌砂浆)')) {
- let index = data[j][2].indexOf("(湿拌砂浆)");
- data[j][2] = data[j][2].substring(0, index);
- }
- if (data[j][2].includes('(干拌(混)砂浆)')) {
- let index = data[j][2].indexOf("(干拌(混)砂浆)");
- data[j][2] = data[j][2].substring(0, index);
- }
- if (de['rcjdg'][i][2] == data[j][2]) {//更新名称
-
- } else {
- //if (de['rcjdg'][i][18] == 'false')
- huan = true;
- huankey.push(de['rcjdg'][i][16]);
- }
- }
- }
-
- }
-
- if (de['fuzhuEnable'] && de.hasOwnProperty('fuzhu')) {//没强行改过含量
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- let origin = Number(de['rcjdg'][j][10]);
- for(let i = 0; i < de['fuzhu'].length; i++) {
- let selected = de['fuzhu'][i];
- let target = selected[0];
-
-
- if (match_target(de['rcjdg'][j][1], target)) {
- if (selected[2] == '系数') {
- origin = origin * Number(selected[3]);
- } else if (selected[2] == '含量') {
- origin = Number(selected[3]);
- } else if (selected[2] == '调整') {
- origin = origin + Number(selected[3]);
- } else {
- throw new Error('无法处理的附注'.concat(selected[2]));
- }
-
- }
-
- }
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- }
- }
- de['dercj'][j][5] = de['rcjdg'][j][5];//单价
- de['dercj'][j][10] = origin;
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
- }
- } else if (de['fuzhuEnable'] && !de.hasOwnProperty('fuzhu')) {
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- let origin = Number(de['rcjdg'][j][10]);
-
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- }
- }
- de['dercj'][j][5] = de['rcjdg'][j][5];
- de['dercj'][j][10] = origin;
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * origin;
- }
- }
- else {
- //强行改含量
- de['dercj'] = copy(de['rcjdg']);
- for(let j = 1; j < de['rcjdg'].length; j++) {
- for (let k = 0; k < data.length; k++) {
- if (data[k][16] == de['dercj'][j][16]) {
- de['dercj'][j][2] = data[k][2];//名称
- de['dercj'][j][1] = data[k][1];//编号
- de['dercj'][j][10] = data[k][10];
- de['dercj'][j][11] = Number(de['dercj'][j][5]) * de['dercj'][j][10];
- }
- }
- }
- }
-
-
- data = de['dercj'];
- if (de['fuzhuEnable']) {
- data = data.filter(x=>x[1] != 'S00001' && x[1] != 'JD0001');//预拌砂浆额外配套
- /*
- for (let i = 1; i < data.length; i++) {
- if (data[i][2].includes('(湿拌砂浆)')) {
- let index = data[i][2].indexOf("(湿拌砂浆)");
- data[i][2] = data[i][2].substring(0, index);
- }
- if (data[i][2].includes('(干拌(混)砂浆)')) {
- let index = data[i][2].indexOf("(干拌(混)砂浆)");
- data[i][2] = data[i][2].substring(0, index);
- }
- }
- */
- de['dercj'] = copy(data);
- }
- } else {////单项定额没有底稿,老数据没底搞,无法判断换部换,暂时统一认为不换
- //强行改含量
- de['dercj'] = copy(data);
- data = de['dercj'];
- }
-
- if (de.hasOwnProperty("rcjdg") && de['fuzhuEnable'] && yuban.length > 0) {//没强行改过含量
- if (yuban.includes('1')) {
- for(let i = 1; i < data.length; i++) {
- if (data[i][4]=='工日') {
- data[i][10] = Number(data[i][10]) - 0.45;
- }
- if (data[i][2].includes('搅拌机')) {
- data[i][10] = 0;
- }
- if (data[i][2].includes('砂浆') && !data[i][2].includes('搅拌机')) {
- data[i][2] = data[i][2].concat('(湿拌砂浆)')
- }
- }
- let flip = [];
- for(let i = 1; i < data.length; i++) {
-
- if (data[i][18]=='true') {
- for (let j = 0; j < data[i][20].length; j++) {
- flip.push(data[i][20][j]);
- }
- data[i][18] = 'false';
- }
-
- }
- for(let i = 1; i < data.length; i++) {
-
- if (flip.includes(data[i][16])) {
- data[i][18] = 'true';
- }
-
- }
- } else if (yuban.includes('2')) {
- let origin = 0;
- for(let i = 1; i < data.length; i++) {
- if (data[i][4]=='工日') {
- data[i][10] = Number(data[i][10]) - 0.3;
- }
- if (data[i][2].includes('搅拌机')) {
- data[i][10] = 0;
- }
-
- if (data[i][2].includes('砂浆') && !data[i][2].includes('搅拌机')) {
- data[i][2] = data[i][2].concat('(干拌(混)砂浆)');
- origin = Number(data[i][10]);
- data[i][10] = origin * 1.75;
- }
- }
- data.push(['', 'S00001', '水', '', 't', '4.70', '', '', '2', 'false', (origin * 0.29).toString(), '', '','','','','', 'false', [], []]);
- data.push(['', 'JD0001', '其他机械费(电)', '', '度', '0.65', '', '', '3', 'false', (origin * 2.15).toString(), '', '','','','', '', 'false', [], []]);
- let flip = [];
- for(let i = 1; i < data.length; i++) {
-
- if (data[i][18]=='true') {
- for (let j = 0; j < data[i][20].length; j++) {
- flip.push(data[i][20][j]);
- }
- data[i][18] = 'false';
- }
-
- }
- for(let i = 1; i < data.length; i++) {
-
- if (flip.includes(data[i][16])) {
- data[i][18] = 'true';
- }
-
- }
- } else if (yuban.includes('3')) {
- let origin = 0;
- for(let i = 1; i < data.length; i++) {
- if (data[i][4]=='工日') {
- data[i][10] = Number(data[i][10]) - 0.2;
- }
-
-
- if (data[i][2].includes('砂浆') && !data[i][2].includes('搅拌机')) {
- data[i][2] = data[i][2].concat('(干拌(混)砂浆)');
- origin = Number(data[i][10]);
- data[i][10] = origin * 1.75;
- }
- }
- data.push(['', 'S00001', '水', '', 't', '4.70', '', '', '2', 'false', (origin * 0.29).toString(), '', '','','','','', 'false', [], []]);
- let flip = [];
- for(let i = 1; i < data.length; i++) {
-
- if (data[i][18]=='true') {
- for (let j = 0; j < data[i][20].length; j++) {
- flip.push(data[i][20][j]);
- }
- data[i][18] = 'false';
- }
-
- }
- for(let i = 1; i < data.length; i++) {
-
- if (flip.includes(data[i][16])) {
- data[i][18] = 'true';
- }
-
- }
- }
- de['dercj'] = copy(data);
- }
- if (de['dercj'][0].length > 18)
- de['dercj'] = de['dercj'].filter(x=>x[18]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17]]);
- let keyleft = de['dercj'].map(x=>x[16]);
- huankey = huankey.filter(x=>keyleft.includes(x));
- if (huankey.length == 0)huan = false;
- de['dercj'] = de['dercj'].filter(x=>!x[1].includes('10000F') && x[17] != 'true');//补充
- de['dercj'] = de['dercj'].map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], '']);
- for(let i = 0; i < rcjbc.length; i++) {
- de['dercj'].push(['', rcjbc[i]['人材机编码'], rcjbc[i]['名称'], rcjbc[i]['规格型号'], rcjbc[i]['单位'], rcjbc[i]['单价'], rcjbc[i]['产地'], rcjbc[i]['供应厂商'], rcjbc[i]['人材机类别'], rcjbc[i]['甲供标志'], rcjbc[i]['含量'], '', rcjbc[i]['暂估价标志'],rcjbc[i]['主要材料标志'],rcjbc[i]['主材标志'],rcjbc[i]['设备标志'], '', 'true']);
- }
- data = copy(de['dercj']);
- //模拟formula计算每一行的合价
- for(let i = 1; i < data.length; i++) {
- data[i][11] = Number(data[i][10]) * Number(data[i][5]);
- }
-
-
- let sum = 0;
- let rgf_sum = 0;
- let jxf_sum = 0;
- let clf_sum = 0;
- let zcf_sum = 0;
- for(let i = 1; i < data.length; i++) {
- if (data[i][1].includes('000FE') && data[i][4] == '%')continue;//azfy
- sum += Number(data[i][11]);//11-> hejia
- if (Number(data[i][8]) == 1) {
- rgf_sum += Number(data[i][11]);
- }
- if (Number(data[i][8]) == 2) {
- clf_sum += Number(data[i][11]);
- if (data[i][14] == 'true') {
- zcf_sum += Number(data[i][11]);
- }
- }
- if (Number(data[i][8]) == 3) {
- jxf_sum += Number(data[i][11]);
- }
- }
- console.log("sum=".concat(sum));
-
- let shuliang = Number(qd['数量']);
- for(let i = 0; i< qd["_children"].length; i++) {
- if(qd["_children"][i]['key'] == row) {
- let desl = Number(qd["_children"][i]['数量']);
- let oldname = qd["_children"][i]['清单编码'];
-
- qd["_children"][i]['辅材费'] = clf_sum - zcf_sum;
- qd["_children"][i]['材料费'] = clf_sum;
- qd["_children"][i]['人工费'] = rgf_sum;
- qd["_children"][i]['主材费'] = zcf_sum;
- qd["_children"][i]['设备费'] = 0;
- qd["_children"][i]['机械费'] = jxf_sum;
- if (oldname.startsWith("D")) {//单项清单
- qd["_children"][i]['管理费'] = 0;
- qd["_children"][i]['利润'] = 0;
- } else {
- if (this.qufeiEntry['备注'].length == 0) {
- //changuiqufei
- qd["_children"][i]['管理费'] = (rgf_sum + jxf_sum) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (rgf_sum + jxf_sum) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- } else {
- qd["_children"][i]['管理费'] = (rgf_sum) * Number(this.qufeiEntry['管理费(%)']) / Number(100);
- qd["_children"][i]['利润'] = (rgf_sum) * Number(this.qufeiEntry['利润(%)']) / Number(100);
- }
- }
- qd["_children"][i]['综合单价'] = sum + qd["_children"][i]['管理费'] + qd["_children"][i]['利润'];
- qd["_children"][i]['合价'] = (qd["_children"][i]['综合单价'] * shuliang * desl);
-
-
-
- qd["_children"][i]["dercj"] = copy(data);
- qd["_children"][i]['清单编码'] = renameDingE(oldname, xuhao, huan);
- }
- }
- }
- updateDercj(row, data) {
- //是否手动设置含量
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- this.updateFootprint(qd['key']);
- let bm = de['清单编码'];
- let alreadyFuzhu = extractFuzhu(bm);//[xuhao]
- let origin = de['dercj'];
- let change = false;
- for(let i = 1; i < data.length; i++) {
- let before = origin[i][10];//含量
- let after = data[i][10];
- if (Number(before) - Number(after) < 0.0001 && Number(before) - Number(after) > -0.0001) {
- //no change
- } else {
- change = true;
- break;
- }
- }
- if (change) {
- de['fuzhuEnable'] = false;
- }
-
- this.updateDercj_(row, data, alreadyFuzhu, de['yuban'], de['rcjbc']);
- //let qd = this.cache.filter(x=>x["children"].filter(y=>y['key']==row).length > 0)[0];
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return copy(this.cache);
- }
- updateDercj_djcs(row, data) {
- //是否手动设置含量
- let qd = this.cache_djcs.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let bm = de['清单编码'];
- let alreadyFuzhu = extractFuzhu(bm);//[xuhao]
- let origin = de['dercj'];
- let change = false;
- for(let i = 1; i < data.length; i++) {
- let before = origin[i][10];
- let after = data[i][10];
- if (Number(before) - Number(after) < 0.0001 && Number(before) - Number(after) > -0.0001) {
- //no change
- } else {
- change = true;
- break;
- }
- }
- if (change) {
- de['fuzhuEnable'] = false;
- }
-
- this.updateDercj_djcs_(row, data, alreadyFuzhu);
- //let qd = this.cache.filter(x=>x["children"].filter(y=>y['key']==row).length > 0)[0];
- let newData = this.cache_djcs.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize_djcs(newData);
- this.push_op_djcs(summarized);
- /////////////////
- this.cache_djcs = copy(summarized);
- return copy(this.cache_djcs);
- }
- updateBeizhu(row, selected, xuhao) {//xuhao is for rename
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- if (!qd) return [null, null];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- if (de.hasOwnProperty("rcjdg")) {//底稿
- } else {///老数据不能有底稿,附注功能也不使能
- //de['rcjdg'] = copy(de['dercj']);
- }
- de['fuzhu'] = copy(selected);
- this.updateDercj_(row, de['dercj'], xuhao, de['yuban'], de['rcjbc']);
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return [copy(this.cache), copy(de['dercj'])];
- }
- updateBeizhu_djcs(row, selected, xuhao) {//xuhao is for rename
- let qd = this.cache_djcs.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- if (!qd) return [null, null];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- if (de.hasOwnProperty("rcjdg")) {//底稿
- } else {///老数据不能有底稿,附注功能也不使能
- //de['rcjdg'] = copy(de['dercj']);
- }
- de['fuzhu'] = copy(selected);
- this.updateDercj_djcs_(row, de['dercj'], xuhao);
- let newData = this.cache_djcs.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize_djcs(newData);
- this.push_op_djcs(summarized);
- /////////////////
- this.cache_djcs = copy(summarized);
- return [copy(this.cache_djcs), copy(de['dercj'])];
- }
- huan(old_index, new_bianhao, new_name, new_jia, zhuanye, row) {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let rcj = copy(de['dercj']);
- /*
- let dg = copy(de['rcjdg']);
- if (dg == null && dg.length == 0) {
- } else {
- let children = [];
-
- for(let i = 1; i < dg.length; i++) {
- if (dg[i][16] == rcj[old_index][16]) {
- if (dg[i][20].length > 0) {
- children = dg[i][20];
-
- }
- }
- }
- let newdg = dg.filter(x=>!children.includes(x['16']));
- let added = addChildren(zhuanye, new_bianhao, rcj[old_index][10], rcj[old_index][16]);
- if (added.length == 0) {
- for(let i = 1; i < newdg.length; i++) {
- if (newdg[i][16] == rcj[old_index][16]) {
- newdg[i][18] = 'false';
-
- }
- }
- }
- else {
- let childid = [];
- for(let i = 0; i < added.length; i++) {
- newdg.push(added[i]);
- childid.push(added[i][16]);
- }
- for(let i = 1; i < newdg.length; i++) {
- if (newdg[i][16] == rcj[old_index][16]) {
- newdg[i][20] = childid;
-
- }
- }
- }
- de['rcjdg'] = newdg;
- }*/
- rcj[old_index][1] = new_bianhao;
- rcj[old_index][2] = new_name;
- rcj[old_index][5] = new_jia;
- return this.updateDercj(row, rcj);
- }
- updateShuliang(value, row) {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let origin = de['数量']
- if (Number(origin) - Number(value) < 0.0001 && Number(origin) - Number(value) > -0.0001) {
- return [false, null];
- }
- console.log("shuliang update");
- de['数量'] = value;
- de['合价'] = Number(qd['数量']) * Number(de['综合单价']) * Number(de['数量']);
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return [true, copy(this.cache)];
- }
- updateDeMingcheng(value, row) {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- de['名称'] = value;
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return copy(this.cache);
- }
- updateShuliang_djcs(value, row) {
- let qd = this.cache_djcs.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let origin = de['数量']
- if (Number(origin) - Number(value) < 0.0001 && Number(origin) - Number(value) > -0.0001) {
- return [false, null];
- }
- console.log("shuliang update");
- de['数量'] = value;
- de['合价'] = Number(qd['数量']) * Number(de['综合单价']) * Number(de['数量']);
- let newData = this.cache_djcs.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize_djcs(newData);
- this.push_op_djcs(summarized);
- /////////////////
- this.cache_djcs = copy(summarized);
- return [true, copy(this.cache_djcs)];
- }
- azfy_djcs_eligible(selectedRow) {
- if (this.cache_djcs.filter(x=>x['key'] == selectedRow).length > 0) {
- return true;
- } else {
- return false;
- }
- }
- azfy_djcs(row, dinge, selected) {
- let res = JSON.parse(dinge);
- let keys = Object.keys(res['DEBH']);
- let key = keys[0];
- let tips = azfy(res['DEBH'][key], res['GCLMC'][key]);
- if (tips != null) {
- res['rgde'] = tips['rgde'];
- res['clde'] = tips['clde'];
- res['jxde'] = tips['jxde'];
- res['azfytag'] = tips['azfytag'];
- }
- let qd = this.cache_djcs.filter(x=>x['key'] == row)[0];
- let dercj = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", 'key', 'bc' ]];
- for(let i = 0; i < selected.length; i++) {
- let rgf = selected[i]['人工费'];
- let clf = selected[i]['材料费'];
- let jxf = selected[i]['机械费'];
- let sl = selected[i]['数量'];
- if (res['azfytag'][0] == '人工费') {
- let sum = Number(sl) * Number(rgf) * Number(res['azfytag'][1]) / Number(100);
- dercj.push(['', res['rgde'][0]['CLBH'], res['rgde'][0]['CLMC'], '', '元',
- '1', '', '', '1', '', Number(sum) * Number(res['azfytag'][2]) / Number(100), Number(sum) * Number(res['azfytag'][2]) / Number(100),
- '', '', '', '', '', '' ]);
- dercj.push(['', res['clde'][0]['CLBH'], res['clde'][0]['CLMC'], '', '元',
- '1', '', '', '2', '', Number(sum) * Number(res['azfytag'][3]) / Number(100), Number(sum) * Number(res['azfytag'][3]) / Number(100),
- '', '', '', '', '', '' ]);
- dercj.push(['', res['jxde'][0]['jxbh'], res['jxde'][0]['jxmc'], '', '元',
- '1', '', '', '3', '', Number(sum) * Number(res['azfytag'][4]) / Number(100), Number(sum) * Number(res['azfytag'][4]) / Number(100),
- '', '', '', '', '', '' ]);
- } else if (res['azfytag'][0] == '人工费+机械费') {
- let sum = Number(sl) * (Number(jxf) + Number(rgf)) * Number(res['azfytag'][1]) / Number(100);
- dercj.push(['', res['rgde'][0]['CLBH'], res['rgde'][0]['CLMC'], '', '元',
- '1', '', '', '1', '', Number(sum) * Number(res['azfytag'][2]) / Number(100), Number(sum) * Number(res['azfytag'][2]) / Number(100),
- '', '', '', '', '', '' ]);
- dercj.push(['', res['clde'][0]['CLBH'], res['clde'][0]['CLMC'], '', '元',
- '1', '', '', '2', '', Number(sum) * Number(res['azfytag'][3]) / Number(100), Number(sum) * Number(res['azfytag'][3]) / Number(100),
- '', '', '', '', '', '' ]);
- dercj.push(['', res['jxde'][0]['jxbh'], res['jxde'][0]['jxmc'], '', '元',
- '1', '', '', '3', '', Number(sum) * Number(res['azfytag'][4]) / Number(100), Number(sum) * Number(res['azfytag'][4]) / Number(100),
- '', '', '', '', '', '' ]);
- }
- }
- let newKey = uuidv4();
- if (!qd.hasOwnProperty('_children')) {
- qd["_children"] = [];
- }
- qd["_children"].push({
- '操作': '',
- '序号': null,
- '清单编码': res['DEBH'][key],
- '名称': res['GCLMC'][key],
- '项目特征': null,
- '计算规则': tips != null ? tips['sm'] : '',
- '单位': res['DW'][key],
- '数量': '1',
- '综合单价': '0',
- '合价': '0',
- '人工费': '0',
- '主材费': '0',
- '设备费': '0',
- '辅材费': '0',
- '材料费': '0',
- '机械费': '0',
- '管理费': '0',
- '利润': '0',
- '暂估价': null,
- '综合人工工日': null,
- '备注': null,
- "dercj": dercj,
- 'rcjdg': dercj.map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], 'false', [], []]),
- 'key' : newKey,
- "fuzhuEnable": false,
- 'yuban': [],
- 'rcjbc': [],
- 'azfytag': []
-
-
- });
- this.updateDercj_djcs_(newKey, dercj, []);
- let summarized = this.summarize_djcs(this.cache_djcs);
- this.push_op_djcs(copy(summarized));
- this.cache_djcs = copy(summarized);
-
- return [true, copy(this.cache_djcs), newKey];
- }
- changguidinge_djcs(dingeclick, row) {
- if (this.cache_djcs.filter(x=>x['key'] == row).length > 0) {
-
- let res =dingeclick;
- let keys = Object.keys(res['DEBH']);
- let key = keys[0];
- //console.log(res);
- let qd = this.cache_djcs.filter(x=>x['key'] == row)[0];
- let dercj = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", "key", 'bc', "hidden", "parent", "children" ]];
- for(let i = 0; i < res['rgde'].length; i++) {
- dercj.push(['', res['rgde'][i]['CLBH'], res['rgde'][i]['CLMC'], '', res['rgde'][i]['JLDW'],
- res['rgde'][i]['YSJG'], '', '', '1', '', res['rgde'][i]['gr'], res['rgde'][i]['gf'],
- '', '', '', '', uuidv4(), "false",'false', [], [] ]);
- }
- for(let i = 0; i < res['clde'].length; i++) {
- let hit = false;
- let jg = null;
- let bh = res['clde'][i]['CLBH'];
- for(let j = 0; j < this.jiagongcai.length; j++) {
- if (this.jiagongcai[j]['材料编号'] == bh) {
- hit = true;
- jg = this.jiagongcai[j]['单价'];
- }
- }
- if (hit) {
- dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- jg, '', '', '2', 'true', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', uuidv4(), 'false','false', [], [] ]);
- } else {
- if (res['clde'][i].hasOwnProperty('children')) {
- let parent = uuidv4();
- let children = [];
- let child_data = res['clde'][i]['children'];
- for(let j = 0; j < child_data.length; j++) {
- let id = uuidv4();
- children.push(id);
- dercj.push(['', child_data[j]['CLBH'], child_data[j]['CLMC'], '', child_data[j]['JLDW'],
- child_data[j]['YSJG'], '', '', '2', 'false', child_data[j]['SL'], child_data[j]['HJ'],
- '', '', '', '', id, 'false','false', [parent], [] ]);
- }
- dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', parent, 'false','true', [], children ]);
- } else {
- dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', uuidv4(), 'false','false', [], [] ]);
- }
- }
-
- }
- for(let i = 0; i < res['jxde'].length; i++) {
- dercj.push(['', res['jxde'][i]['jxbh'], res['jxde'][i]['jxmc'], '', res['jxde'][i]['DW'],
- res['jxde'][i]['tbdj'], '', '', '3', '', res['jxde'][i]['sl'], res['jxde'][i]['hj'],
- '', '', '', '',uuidv4(), 'false','false', [], [] ]);
- }
- let newKey = uuidv4();
- if (!qd.hasOwnProperty('_children')) {
- qd["_children"] = [];
- }
- let newdercj = copy(dercj).filter(x=>x[17]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17]]);
- qd["_children"].push({
- '操作': '',
- '序号': null,
- '清单编码': res['DEBH'][key],
- '名称': res['GCLMC'][key],
- '项目特征': null,
- '计算规则': null,
- '单位': res['DW'][key],
- '数量': '1',
- '综合单价': '0',
- '合价': '0',
- '人工费': '0',
- '主材费': '0',
- '设备费': '0',
- '辅材费': '0',
- '材料费': '0',
- '机械费': '0',
- '管理费': '0',
- '利润': '0',
- '暂估价': null,
- '综合人工工日': null,
- '备注': null,
- "dercj": newdercj,
- 'rcjdg': dercj,
- 'key' : newKey,
- "fuzhuEnable": true
-
-
- });
- this.updateDercj_djcs_(newKey, newdercj, []);
- let summarized = this.summarize_djcs(this.cache_djcs);
- this.push_op_djcs(copy(summarized));
- /////////////////
- this.cache_djcs = copy(summarized);
- //return copy(this.cache);
-
- return [true, copy(this.cache_djcs), newKey];
- } else {
- return [false, null, null];
- }
- }
- changguidinge(dingeclick, row) {
- if (this.cache.filter(x=>x['key'] == row).length > 0) {
- this.updateFootprint(row);
-
- let res = copy(dingeclick);
- let keys = Object.keys(res['DEBH']);
- let key = keys[0];
- let tips = azfy(res['DEBH'][key], res['GCLMC'][key]);
- if (tips != null) {
- res['rgde'] = tips['rgde'];
- res['clde'] = tips['clde'];
- res['jxde'] = tips['jxde'];
- }
- let qd = this.cache.filter(x=>x['key'] == row)[0];
- let dercj = [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", 'key', 'bc', 'hidden', 'parent', 'children' ]];
- for(let i = 0; i < res['rgde'].length; i++) {
- dercj.push(['', res['rgde'][i]['CLBH'], res['rgde'][i]['CLMC'], '', res['rgde'][i]['JLDW'],
- res['rgde'][i]['YSJG'], '', '', '1', '', res['rgde'][i]['gr'], res['rgde'][i]['gf'],
- '', '', '', '', uuidv4(), 'false','false', [],[] ]);
- }
- for(let i = 0; i < res['clde'].length; i++) {
- let hit = false;
- let jg = null;
- let bh = res['clde'][i]['CLBH'];
- for(let j = 0; j < this.jiagongcai.length; j++) {
- if (this.jiagongcai[j]['材料编号'] == bh) {
- hit = true;
- jg = this.jiagongcai[j]['单价'];
- }
- }
- if (hit) {
- dercj.push(['', res['clde'][i]['CLBH'], res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- jg, '', '', '2', 'true', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', uuidv4(), 'false','false', [], [] ]);
- } else {
- if (res['clde'][i].hasOwnProperty('children') && res['clde'][i]['CLMC'].includes('砂浆')) {
- let parent = uuidv4();
- let children = [];
- let child_data = res['clde'][i]['children'];
- for(let j = 0; j < child_data.length; j++) {
- let id = uuidv4();
- children.push(id);
- dercj.push(['', child_data[j]['CLBH'], child_data[j]['CLMC'], '', child_data[j]['JLDW'],
- child_data[j]['YSJG'], '', '', '2', 'false', child_data[j]['SL'], child_data[j]['HJ'],
- '', '', '', '', id, 'false','false', [parent], [] ]);
- }
- dercj.push(['', res['clde'][i]['CLBH'].toString(), res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', parent, 'false','true', [], children ]);
- } else {
- dercj.push(['', res['clde'][i]['CLBH'].toString(), res['clde'][i]['CLMC'], '', res['clde'][i]['JLDW'],
- res['clde'][i]['YSJG'], '', '', '2', 'false', res['clde'][i]['SL'], res['clde'][i]['HJ'],
- '', '', '', '', uuidv4(), 'false','false', [], [] ]);
- }
-
- }
-
- }
- for(let i = 0; i < res['jxde'].length; i++) {
- dercj.push(['', res['jxde'][i]['jxbh'], res['jxde'][i]['jxmc'], '', res['jxde'][i]['DW'],
- res['jxde'][i]['tbdj'], '', '', '3', '', res['jxde'][i]['sl'], res['jxde'][i]['hj'],
- '', '', '', '', uuidv4(), 'false','false', [], [] ]);
- }
- let newKey = uuidv4();
- if (!qd.hasOwnProperty('_children')) {
- qd["_children"] = [];
- }
- let newdercj = copy(dercj).filter(x=>x[18]!='true').map(x=>[x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17]]);
- qd["_children"].push({
- '操作': '',
- '序号': null,
- '清单编码': res['DEBH'][key],
- '名称': res['GCLMC'][key],
- '项目特征': null,
- '计算规则': tips != null ? tips['sm'] : '',
- '单位': res['DW'][key],
- '数量': '1',
- '综合单价': '0',
- '合价': '0',
- '人工费': '0',
- '主材费': '0',
- '设备费': '0',
- '辅材费': '0',
- '材料费': '0',
- '机械费': '0',
- '管理费': '0',
- '利润': '0',
- '暂估价': null,
- '综合人工工日': null,
- '备注': null,
- "dercj": newdercj,
- 'rcjdg': (dercj),
- 'key' : newKey,
- "fuzhuEnable": true,
- 'yuban': [],
- 'rcjbc': [],
- 'azfytag': tips != null ? tips['azfytag'] : []
-
-
- });
- this.updateDercj_(newKey, dercj, [], [], []);
- let summarized = this.summarize(this.cache);
- this.push_op(copy(summarized));
- /////////////////
- this.cache = copy(summarized);
- //return copy(this.cache);
-
- return [true, copy(this.cache), newKey];
- } else {
- return [false, null, null];
- }
- }
- danxiangdinge(row) {
- let bh = danxiangdinge_index(this.cache);
-
- if (this.cache.filter(x=>x['key'] == row).length > 0) {
- this.updateFootprint(row);
- let selected = this.cache.filter(x=>x['key'] == row)[0];
- let danwei = selected["单位"];
- let mingcheng = selected['名称'];
- let children = selected["_children"];
- children.push({
- '操作': '',
- '序号': null,
- '清单编码': bh,
- '名称': mingcheng,
- '项目特征': null,
- '计算规则': null,
- '单位': danwei,
- '数量': '1',
- '综合单价': '',
- '合价': '',
- '人工费': '0',
- '主材费': '0',
- '设备费': '0',
- '辅材费': '',
- '材料费': '',
- '机械费': '0',
- '管理费': '0',
- '利润': '0',
- '暂估价': null,
- '综合人工工日': null,
- '备注': null,
- "dercj": [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", 'key', 'bc' ],
- ['', bh, mingcheng, '', danwei, '', '', '', '2', '', '1', '', '', '', '', '', '', '' ]
- ],
- 'key' : uuidv4(),
- "fuzhuEnable": false,
- 'yuban': [],
- 'rcjbc' : [],
- 'azfytag': []
-
- });
- let summarized = this.summarize(this.cache);
- this.push_op(summarized);
- this.cache = copy(summarized);
-
- return [true, copy(this.cache)];
- } else {
- return [false,null];
- }
- }
- danxiangdinge_djcs(row) {
- let bh = danxiangdinge_index_djcs(this.cache_djcs);
-
- if (this.cache_djcs.filter(x=>x['key'] == row).length > 0) {
- let selected = this.cache_djcs.filter(x=>x['key'] == row)[0];
- let danwei = selected["单位"];
- let mingcheng = selected['名称'];
- let children = selected["_children"];
- children.push({
-
- '序号': null,
- '清单编码': bh,
- '名称': mingcheng,
- '项目特征': null,
- '计算规则': null,
- '单位': danwei,
- '数量': '1',
- '综合单价': '',
- '合价': '',
- '人工费': '0',
- '主材费': '0',
- '设备费': '0',
- '辅材费': '',
- '材料费': '',
- '机械费': '0',
- '管理费': '0',
- '利润': '0',
- '暂估价': null,
- '综合人工工日': null,
- '备注': null,
- "dercj": [["ID", "人材机编码", "名称", "规格型号", "单位", "单价", "产地",
- "供应厂商", "人材机类别", "甲供标志", "含量", "合价", "暂估价标志", "主要材料标志", "主材标志", "设备标志", "key" , "bc" ],
- ['', bh, mingcheng, '', danwei, '', '', '', '2', '', '1', '', '', '', '', '', "", "" ]
- ],
- 'key' : uuidv4(),
- "fuzhuEnable": false
-
- });
- let summarized = this.summarize_djcs(this.cache_djcs);
- this.push_op_djcs(summarized);
- this.cache_djcs = copy(summarized);
-
- return [true, copy(this.cache_djcs)];
- } else {
- return [false,null];
- }
- }
- handleYuban(row, selected) {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- if (!qd) return [null, null];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let bm = de['清单编码'];
- let alreadyFuzhu = extractFuzhu(bm);//[xuhao]
- if (de.hasOwnProperty("rcjdg")) {//底稿
- } else {///老数据不能有底稿,附注功能也不使能,预拌也不能使
- //de['rcjdg'] = copy(de['dercj']);
- }
- de['yuban'] = copy(selected);
- this.updateDercj_(row, de['dercj'], alreadyFuzhu, selected, de['rcjbc']);
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return [copy(this.cache), copy(de['dercj'])];
- }
- handleRcjbc(row, rcjbc) {
- let qd = this.cache.filter(x=>x["_children"].filter(y=>y['key']==row).length > 0)[0];
- if (!qd) return [null, null];
- this.updateFootprint(qd['key']);
- let de = qd["_children"].filter(x=>x['key'] == row)[0];
- let bm = de['清单编码'];
- let alreadyFuzhu = extractFuzhu(bm);//[xuhao]
- if (de.hasOwnProperty("rcjdg")) {//底稿
-
- } else {///老数据不能有底稿,附注功能也不使能,预拌也不能使
- //de['rcjdg'] = copy(de['dercj']);
-
- }
- de['rcjbc'] = copy(rcjbc);
- this.updateDercj_(row, de['dercj'], alreadyFuzhu, de['yuban'], rcjbc);
-
- let newData = this.cache.map(x=>{
- if (x['key'] == qd['key']) {
- return qd;
- } else {
- return x;
- }
- });
- let summarized = this.summarize(newData);
- this.push_op(summarized);
- /////////////////
- this.cache = copy(summarized);
- return [copy(this.cache), copy(de['dercj'])];
- }
-
- }
- export default new Service();
|