12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849 |
- <template>
- <div>
- <div class="page_main">
- <div class="download_box">
- <el-button size="small" class="ml20" @click="exportClick()">下载报告</el-button>
- </div>
- <div class="page_header">
- 环境管理周报告
- <span>({{this.startDate&&moment(this.startDate).format("MM.DD")}}-{{this.endDate&&moment(this.endDate).format("MM.DD")}})</span>
- <span class="pname">{{projectName}}</span>
- </div>
-
- <section class="env_module title_one_table mb16">
- <div class="sj_title title_one">环境概况</div>
- <el-table class="sj_table" :data="surveyTable.slice(0,5)" :row-class-name="tableRowClassName" :header-cell-style="{background:'#3399ff !important',color:'#ffffff',padding:'10px 0'}">
- <el-table-column align="left" label="" width="30"></el-table-column>
- <el-table-column align="left" prop="name" label="环境参数"></el-table-column>
- <el-table-column align="left" prop="weeknormalProprotion" label="周达标率">
- <template slot-scope='{row}'>
- {{row.weeknormalProprotion+'%'}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="weekAvg" label="周平均">
- <template slot-scope='{row}'>
- {{row.weekAvg+row.unit}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="assess" label="评价"></el-table-column>
- </el-table>
- <div class="title_tips big_tips"><i class="el-icon-warning-outline"></i>数据来源:物联网传感器数据监测备份</div>
-
- <userAdjust :projectId="projectId" :energyDate="surveyTable[6]" :userAdjust="surveyTable[5]" class="mp40"/>
- </section>
-
-
-
- <section class="env_module mb16">
-
- <Tabs type="card" :data="envTypelistnow" v-model="envType" class="daytabs"/>
- <div class="sj_title">本周环境概况</div>
- <envSurvey :surveyTable="surveyTable[currentEnv]" :envType="envType"></envSurvey>
-
- <div class="pm_container" v-if="envType=='PM2d5'">
- <p>各PM2.5浓度区间累计时长及占比</p>
- <div class="pm_table">
- <div class="left">
- <div class="pm_chart">
- <ringChart :chartId="'pm_chart'+exportPdf" :color-arr="pmchartColor" :chart-date="pmDate"/>
- </div>
- <div class="pm_count">总空间数量:<span>{{chartweekDate.registeredSpaceNum&&chartweekDate.registeredSpaceNum.filter(Boolean)[0]}}</span>个</div>
- <div class="title_tips"><i class="el-icon-warning-outline"></i>各评价标准累计时长一定程度上反映出当前建筑的整体PM2.5浓度所处的水平</div>
- </div>
- <div class="right">
- <el-table size="mini" :data="pmDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column align="left" label="" width="30"></el-table-column>
-
- <el-table-column align="left" prop="name" label="评价标准"></el-table-column>
- <el-table-column align="left" prop="evaluationScope" label="范围(μg/m3)"></el-table-column>
- <el-table-column align="left" label="周累计时长(h)" prop="accumulatedTime"></el-table-column>
- <el-table-column align="left" label="时长占比(%)" prop="proportion"></el-table-column>
- </el-table>
- </div>
- </div>
- </div>
- <div class="title_tips" v-if="envType=='Tdb'"><i class="el-icon-warning-outline"></i>评价标准、达标标准、计算方法见数据解释</div>
- <div class="content_title mp40"><span>{{contentTitle(envType)}}</span></div>
- <div class="content_title_noline mb32">{{seccontentTitle(envType)}}</div>
- <chartLegend class="charttext_p" :legend-type="envType" :num-type="false"/>
-
- <lineChart v-if="!isUserorEngry(envType)" :chart-id="chartId" :chart-date="chartweekDate" :env-type="envType" :xType="dayType"/>
-
- <barChart :numberChart="isUserorEngry(envType)" :chart-id="chartId+'1'" :key="envType" :chart-date="chartweekDate" :env-type="envType" :xType="dayType"/>
-
- <div class="room_table" v-if="!isUserorEngry(envType)">
- <div class="room_table_number">
- <div>服务空间数(总:{{chartweekDate.registeredSpaceNum&&chartweekDate.registeredSpaceNum.filter(Boolean)[0]}})</div>
- <div>
- <div v-for="(item,index) in chartweekDate.daySpaceNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- </div>
- <div class="room_table room_table_user" v-if="envType==='userAdjust'">
- <div class="room_table_number">
- <div>异常热调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackAbnorHotNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- <div class="room_table_number" :style="{'margin-top':0}">
- <div>异常冷调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackAbnorColdNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- <div class="room_table_number" :style="{'margin-top':0}">
- <div>吹风调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackNoisyHotNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- </div>
- <section v-if="envType=='Tdb'">
- <div class="content_title_noline mb40"><span>逐刻平均温度及达标空间数量变化趋势</span></div>
- <chartLegend class="charttext_p charttext_mt mb40" :num-type="false"/>
- <lineChart :chart-id="chartId+'zhou'" :contant="true" :chart-date="chartweekTemp" :xType="hourType"/>
- <barChart :chart-id="chartId+'zhou1'" :chart-date="chartweekTemp" :xType="hourType"/>
-
- </section>
- <div class="addmark" :key="envType+'11'">
- <div class="remarkshow remark_input" title="点击即可编辑" v-if="!quarterRemarkEdit" @click="toRemarkedit('quarterRemark')">{{quarterRemark[envType]}}</div>
- <section v-else>
- <el-input class="remark_input" type="textarea" :rows="2" v-model="quarterRemark[envType]" placeholder="添加备注"></el-input>
- <el-button type="primary" size="small" @click="saveRemark('quarterRemark')">保存</el-button>
- <el-button @click="cancelRemark('quarterRemark')" size="small">取消</el-button>
- </section>
- </div>
- <div class="hcho_parame" v-if="envType=='HCHO'">
- <div class="content_title mp40"><span>异常空间</span><span>(超标率排序)</span></div>
- <el-table size="mini" :data="hchogirdDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="abnormalProprotion" width='130' label="超标率(%)" align="left"></el-table-column>
- <el-table-column property="hchoAbnormalTime" width='130' label="超标时长(h)" align="left"></el-table-column>
- <el-table-column property="hchoMaxSolubility" width='150' label="峰值浓度(mg/m³)" align="left"></el-table-column>
- <el-table-column property="assess" width='130' label="峰值浓度评价" align="left">
- <template slot-scope='{row}'>
- <span :style="{color:row.assess=='较高'?'#C6322B':'#1F2329'}">{{row.assess}}</span>
- </template>
- </el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- <el-input v-model="row.hchoRemark" size="small" maxlength="24" @blur="changeInput(row,'hcho')"></el-input>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="co2_parame" v-if="envType=='CO2'">
- <div class="content_title mp40"><span>异常空间</span><span>(超标率排序)</span></div>
- <el-table size="mini" :data="co2girdDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="abnormalProprotion" width='130' label="超标率(%)" align="left"></el-table-column>
- <el-table-column property="co2AbnormalTime" width='130' label="超标时长(h)" align="left"></el-table-column>
- <el-table-column property="co2MaxSolubility" width='150' label="峰值浓度(ppm)" align="left"></el-table-column>
- <el-table-column property="assess" width='130' label="峰值浓度评价" align="left">
- <template slot-scope='{row}'>
- <span :style="{color:row.assess=='较高'?'#DCAA04':'#1F2329'}">{{row.assess}}</span>
- </template>
- </el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- <el-input v-model="row.co2Remark" size="small" maxlength="24" @blur="changeInput(row,'co2')"></el-input>
- </template>
- </el-table-column>
- </el-table>
- <div class="content_title_noline mp40 mb16">参数释义</div>
- <ul class="paramlist ft12">
- <li>
- <p><span><b>CO₂:</b>通常作为建筑空间新风是否充足的量化参数</span></p>
- <div>
- <el-table class="co2table ft12" :data="co2Date" border :header-cell-style="{background:'#ffffff!important',color:'#606266',padding:'6px 0'}">
-
- <el-table-column label="序号" type="index" width="60" align="left"></el-table-column>
- <el-table-column label="CO₂浓度区间" prop="area" align="left" width="150"></el-table-column>
- <el-table-column label="评价" prop="assess" align="left" width="200"></el-table-column>
- <el-table-column label="环境感受" prop="feel" align="left"></el-table-column>
- </el-table>
- <div class="title_tips"><i class="el-icon-warning-outline"></i>室外新鲜空气一般在 400~500ppm</div>
- </div>
- </li>
- </ul>
- </div>
- <div class="rh_parame" v-if="envType=='RH'">
- <div class="content_title_noline mp40 mb16">参数解释</div>
- <ul class="paramlist ft12">
- <li>
- <p><i></i><span><b>相对湿度</b></span></p>
- <div style="margin-top:8px">评价空气中的水蒸气的相对含量</div>
- </li>
- <li>
- <p><i></i><span><b>舒适范围</b></span></p>
- <div>
- <div class="hum_list">
- <div><span>供暖季</span>30%~60%</div>
- <div><span>供冷季</span>40%~60%</div>
- <div><span>过渡季</span>30%~60%</div>
- </div>
- </div>
- </li>
- <li>
- <p><i></i><span><b>参数评价</b></span></p>
- <p class="rh_img"><img src="../../../../static/images/hot.png" alt=""/>干燥:低于上述区间 </p>
- <p class="rh_img"><img src="../../../../static/images/cold.png" alt=""/>偏湿:高于上述区间 </p>
- </li>
- <li>
- <p><i></i><span><b>相对湿度的影响</b><br></span></p>
- <div style="margin-top:8px">
- 高湿度可促进微生物病原体(如细菌、尘螨和霉菌)的聚集和生长,同时湿度过高可能会增加建筑材料释放气体:相对湿度增加 35%可使甲醛释放量增加 1.8-2.6 倍。 低湿度会导致气道、皮肤、眼 睛、咽喉和粘膜的干燥和刺激。也与病毒较长的存活率有关(活性失去较慢)
- </div>
- </li>
- </ul>
- </div>
- <div class="pm_parame" v-if="envType=='PM2d5'">
- <div class="content_title_noline mp40 mb16"><span>参数释义</span></div>
- <ul class="paramlist ft12">
- <li>
- <p><i></i><span><b>PM2.5简介</b><br>大气中空气动力学当量直径小于或等于 2.5 微米的颗粒物,也称为可入肺颗粒物;</span></p>
- </li>
- <li>
- <p><i></i><span><b>达标率</b><br>参数良好级别及以上,浓度≤75 μg/m3;超出此数值记为超限。</span></p>
- </li>
- <li>
- <p><i></i><span>WELL标准中,对不同PM2.5浓度所在区间所能申请的标准(铂金级、金级、银级),均有对应的先决条件。如:在 PM2.5 浓度为 20μg/m3,最高只能达到 WELL 金级标准。</span></p>
- </li>
- </ul>
- </div>
- <div class="ad_parame" v-if="envType=='userAdjust'">
- <div class="content_title_noline mp40 mb16"><span>解释说明</span>:用户异常反馈的几种情况</div>
- <ul class="paramlist ft12">
- <li>
- <p><i></i><span><b>环境温度高,用户反馈“热”</b></span></p>
- </li>
- <li>
- <p><i></i><span><b>用户2次反馈“热”</b></span></p>
- </li>
- <li>
- <p><i></i><span><b>用户1次反馈“吹风”</b></span></p>
- </li>
- <li>
- <p><i></i><span><b>环境温度低,用户反馈“冷”</b></span></p>
- </li>
- <li>
- <p><i></i><span><b>用户2次反馈“冷”</b></span></p>
- </li>
- <li>
- <p><span><b>用户通过app(小程序)调节空调,反馈冷热</b></span></p>
- </li>
- </ul>
- </div>
-
- <section class="mb16" v-if="envType=='Tdb'">
- <div class="content_title"><span>环境温度分析(空间维度)</span></div>
- <div class="sj_reminder mb32">
- <p>温馨提示:</p>
- <p>1.空间划分维度:内外区、朝向、楼层、新风机组各自服务的空间四个维度,分别进行周不达标率分析计算。</p>
- <p>2.数据表:每个空间划分维度均有对应的空间数量。</p>
- <p>3.朝向维度仅外区空间,其中内区空间无朝向。</p>
- </div>
- <div class="sj_chartbox">
- <div class="pr65">
- <div class="day_title mb32">内、外区</div>
- <barChart :chart-id="'echart_left_out'" :chart-date="localtionDate.regionsChart" :sjChartType="'regions'" class="daychart"/>
- <div class="chart_sj_bottom mb40">
- <div>空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.regionsChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- <div>
- <div class="day_title mb32">各个朝向<chartLegend :avgTemp="false" class="charttext"/></div>
- <barChart :chart-id="'echart_left_orientation'" :chart-date="localtionDate.orientationChart" :sjChartType="'orientation'" class="daychart"/>
- <div class="chart_sj_bottom mb40">
- <div class="twoline">空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.orientationChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- </div>
- <div class="sj_chartbox">
- <div class="pr65">
- <div class="day_title mb32">各个楼层</div>
- <barChart :chart-id="'echart_left_floor'" :chart-date="localtionDate.floorChart" :sjChartType="'localtion'" class="daychart"/>
- <div class="chart_sj_bottom">
- <div class="twoline">空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.floorChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- <div>
-
- {{item}}
- </div>
- </div>
- <div class="addmark">
- <div class="remarkshow remark_input" title="点击即可编辑" v-if="!typeRemarkEdit" @click="toRemarkedit('typeRemark')">{{typeRemark}}</div>
- <section v-else>
- <el-input class="remark_input" type="textarea" :rows="2" v-model="typeRemark" placeholder="添加备注"></el-input>
- <el-button type="primary" size="small" @click="saveRemark('typeRemark')">保存</el-button>
- <el-button @click="cancelRemark('typeRemark')" size="small">取消</el-button>
- </section>
- </div>
- </section>
-
-
- <section class="mb16" v-show="envType=='Tdb'">
- <div class="content_title"><span>各达标区间空间数量分布及异常冷热空间列表</span></div>
- <div class="content_title_noline mb16">各达标区间空间数量分布</div>
- <div class="up_distribution">
- <div class="up_distribution_text"><span></span>达标率偏低,亟待解决</div>
- <barChart :chart-id="'echart_left_week'" :chart-date="StandardList" :weekNormalChart="true" :y-type="yType" class="daychart"/>
- </div>
- <div class="title_tips mb52"></div>
- <div class="content_body">
- <div class="body_title"><span>偏热空间</span><span class="tabletag taghot">偏热</span></div>
- <el-table size="mini" :data="hotgirdDate" :height="520" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="avgTemp" width='100' label="周均温度(°C)" align="left"></el-table-column>
- <el-table-column property="hotProprotion" width='120' label="周偏热不达标(%)" align="left"></el-table-column>
- <el-table-column property="serviceTime" width='110' label="周服务时长(h)" align="left"></el-table-column>
- <el-table-column property="validProprotion" width='110' label="周有效数据(%)" align="left"></el-table-column>
- <el-table-column property="hotNum" width='120' label="周累计热反馈数" align="left"></el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- <el-input v-model="row.hotRemark" size="small" maxlength="24" @blur="changeInput(row,'hot')"></el-input>
- </template>
- </el-table-column>
- </el-table>
- <div class="body_title body_coldtitle"><span>偏冷空间</span><span class="tabletag tagclod">偏冷</span></div>
- <el-table size="mini" :data="coldgirdDate" :height="520" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="avgTemp" width='100' label="周均温度(°C)" align="left"></el-table-column>
- <el-table-column property="coldProprotion" width='120' label="周偏冷不达标(%)" align="left"></el-table-column>
- <el-table-column property="serviceTime" width='110' label="周服务时长(h)" align="left"></el-table-column>
- <el-table-column property="validProprotion" width='110' label="周有效数据(%)" align="left"></el-table-column>
- <el-table-column property="coldNum" width='120' label="周累计冷反馈数" align="left"></el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- <el-input v-model="row.coldRemark" maxlength="24" size="small" @blur="changeInput(row,'cold')"></el-input>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </section>
-
-
- <section class="mb16" v-show="envType=='Tdb'">
- <div class="content_title"><span>每日环境详情</span></div>
- <Tabs type="card" :data="dayData" v-model="tableItem" class="daytabs"/>
- <div v-if="dataDeal">
- <div class="pageitem_box" v-for="(item,index) in daysDateCurrent" :key="index" :id="'list'+item.name">
- {{item.pname}}
- <div class="content_body">
- <div class="day_title oneday_title">逐刻平均温度及达标空间数量变化趋势</div>
- <chartLegend class="charttext" :dot-line="true"/>
- <lineChart :chart-id="'echart_top'+item.name" :chart-date="item.chartDate" :contant="true" :xType="hourType"/>
- <barChart :chart-id="'echart_bottom'+item.name" :chart-date="item.chartDate" :numberChart="true" :x-type="hourType" :y-type="yType"/>
- <div class="room_table">
- <div class="room_table_number">
- <div>室外温度(°C)</div>
- <div>
- <div v-for="(items,sgin) in item.chartDate.outSideTemp" :key="sgin">
- {{items}}
- </div>
- </div>
- </div>
- </div>
- <div class="twochart_box">
- <div>
- <div class="day_title">各房间日均温度分布</div>
- <barChart :chart-id="'echart_left'+item.name" :temp-color="true" :chart-date="item.chartDateLeft" :normalChart="true" :y-type="yType" class="daychart"/>
- </div>
- <div>
- <div class="day_title">各楼层日均温及偏冷(热)空间数量</div>
- <lineChart :x-type="floorType" :chart-id="'echart_righttop'+item.name" :chart-date="item.chartDateRight" :contant="true" class="daylinechart"/>
- <barChart :chart-id="'echart_rightbottom'+item.name" :x-type="floorType" :y-type="yType" :numberChart="true" :chart-date="item.chartDateRight" class="daybarchart"/>
- </div>
- </div>
- </div>
- </div>
- </div>
- </section>
-
-
- <section class="mb16" v-show="envType=='Tdb'">
- <div class="content_title"><span>用户活跃度统计(周)</span></div>
- <div class="user_total">
- <div v-if="projectId!=='Pj1101020002'">
- <div>用户总数量</div>
- <div><span>{{userDate.userRegistNum}}</span>人</div>
- </div>
- <div v-if="projectId!=='Pj1101020002'">
- <div>周活跃用户数量</div>
- <div><span>{{userDate.userActiveNum}}</span>人</div>
- </div>
- <div>
- <div>用户与系统互动数量</div>
- <div><span>{{userDate.userSysNum}}</span>次</div>
- </div>
- <div>
- <div>用户问题反馈数量</div>
- <div><span>{{userDate.UserFbNum}}</span>条</div>
- </div>
- <div>
- <div>帮用户解决问题</div>
- <div><span>{{userDate.solveFbNum}}</span>条</div>
- </div>
- </div>
- <div class="content_title"><span>环境管理周报数据解释</span></div>
- <section>
- <div class="content_title_noline mb16">名词解释</div>
- <ul class="paramlist ft12">
- <li v-for="(item,index) in expTerms" :key="index">
- <p><i></i><span><b>{{item.name}}:</b>{{item.content}}。</span></p>
- </li>
- </ul>
- </section>
- <section>
- <div class="content_title_noline mb16">计算说明</div>
- <ul class="paramlist paramlist_explain ft12">
- <li>
- <p><i></i><span><b>温度评价</b></span></p>
- <p>“偏冷”、“舒适”、“偏热”。以平均温度的不同区间对应,区间对应如下:</p>
- <div>
- <div class="hum_list">
- <div><img src="../../../../static/images/cold.png" alt="" srcset=""/>  偏冷 平均温度<20°C</div>
- <div><img src="../../../../static/images/happy.png" alt="" srcset=""/>  舒适 平均温度 20°C~25°C</div>
- <div><img src="../../../../static/images/hot.png" alt="" srcset=""/>  偏热 平均温度>25°C</div>
- </div>
- </div>
- </li>
- <li>
- <p><i></i><span><b>周达标率计算</b></span></p>
- <div class="ml17">
- <p>单个空间当前时刻是否达标的判断方法:min(当前时刻服务定制温度下限,合同约定 温度范围下限)<当前环境温度<max(当前时刻服务定制温度上限,合同约定温度范 围上限),满足上述区间内,视为达标;</p>
- <p>低于区间,视为偏冷;</p>
- <p>高于区间,视为偏热。</p>
- </div>
- <p class="ml17">所有空间一周时间达标率的判断方法:所有空间所有存在空调服务的累计时间中,判断为达标的时间占比,即周达标率。</p>
- <p class="ml17">偏冷(热)率的计算如上。</p>
- </li>
- </ul>
- </section>
- <section>
- <div class="content_title_noline mb16">合约与管控时间段</div>
- <el-table class="sj_table ft12" :data="custormList" :header-cell-style="{background:'#F8F9FA!important',padding:'6px 0'}">
- <el-table-column align="left" width="40" ></el-table-column>
- <el-table-column align="left" prop="objectName" label="空间组" ></el-table-column>
- <el-table-column align="left" label="合同约定温度达标区间">
- <template slot-scope='{row}'>
- {{row.minValue}}~{{row.maxValue}}
- </template>
- </el-table-column>
- <el-table-column align="left" label="环境保障时间段(工作日)">
- <template slot-scope='{row}'>
- {{row.startTime&&(row.startTime.slice(0,2)+':'+row.startTime.slice(2,4))}}~{{row.endTime&&(row.endTime.slice(0,2)+':'+row.endTime.slice(2,4))}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="dayType" label="环境保障时间段(周末)"></el-table-column>
- </el-table>
- </section>
- </section>
-
- </section>
-
- </div>
-
- <div class="page_main" id="exportPdf">
- <div class="page_header">
- 环境管理周报<span>({{this.startDate&&moment(this.startDate).format("MM.DD")}}-{{this.endDate&&moment(this.endDate).format("MM.DD")}})</span>
- <span class="pname">{{projectName}}</span>
- </div>
-
- <section class="env_module title_one_table mb690">
- <div class="sj_title title_one">环境概况</div>
- <el-table class="sj_table" :data="surveyTable.slice(0,5)" :row-class-name="tableRowClassName" :header-cell-style="{background:'#3399ff !important',color:'#ffffff',padding:'10px 0'}">
- <el-table-column align="left" label="" width="30"></el-table-column>
- <el-table-column align="left" prop="name" label="环境参数"></el-table-column>
- <el-table-column align="left" prop="weeknormalProprotion" label="周达标率">
- <template slot-scope='{row}'>
- {{row.weeknormalProprotion+'%'}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="weekAvg" label="周平均">
- <template slot-scope='{row}'>
- {{row.weekAvg+row.unit}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="assess" label="评价"></el-table-column>
- </el-table>
- <div class="title_tips big_tips"><i class="el-icon-warning-outline"></i>数据来源:物联网传感器数据监测备份</div>
-
- <userAdjust :projectId="projectId" :energyDate="surveyTable[6]" :userAdjust="surveyTable[5]" class="mp40"/>
- </section>
-
-
-
- <section class="env_module" :class="'mb'+mbList[index]" v-for="(item,index) in surveyTablenow" :key="index">
- <div class="sj_title">{{item.name}}概况</div>
- <envSurvey :surveyTable="item" :envType="item.id" :pdf-id="item.id"></envSurvey>
- <div class="pm_container" v-if="item.id=='PM2d5'&&pdfPmDateShow">
- <p>各PM2.5浓度区间累计时长及占比</p>
- <div class="pm_table">
- <div class="left">
- <div class="pm_chart">
- <ringChart :chartId="'pm_chart1'+exportPdf+item.id" :color-arr="pmchartColor" :chart-date="pmDate"/>
- </div>
- <div class="pm_count">总空间数量:<span>{{chartweekDate.registeredSpaceNum&&chartweekDate.registeredSpaceNum.filter(Boolean)[0]}}</span>个</div>
- <div class="title_tips"><i class="el-icon-warning-outline"></i>各评价标准累计时长一定程度上反映出当前建筑的整体PM2.5浓度所处的水平</div>
- </div>
- <div class="right">
- <el-table size="mini" :data="pmDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column align="left" label="" width="30"></el-table-column>
-
- <el-table-column align="left" prop="name" label="评价标准"></el-table-column>
- <el-table-column align="left" prop="evaluationScope" label="范围(μg/m3)"></el-table-column>
- <el-table-column align="left" label="周累计时长(h)" prop="accumulatedTime"></el-table-column>
- <el-table-column align="left" label="时长占比(%)" prop="proportion"></el-table-column>
- </el-table>
- </div>
- </div>
- </div>
- <div class="title_tips" v-if="item.id=='Tdb'"><i class="el-icon-warning-outline"></i>评价标准、达标标准、计算方法见数据解释</div>
- <div v-if="item.id!=='Tdb'" style="height:20px"></div>
- <div class="content_title mp40"><span>{{contentTitle(item.id)}}</span></div>
- <div class="content_title_noline mb32">{{seccontentTitle(item.id)}}</div>
- <chartLegend class="charttext_p" :legend-type="item.id" :num-type="false"/>
-
- <lineChart v-if="!isUserorEngry(item.id)" :chart-id="chartId+item.id" :chart-date="chartweekDate" :env-type="item.id" :xType="dayType"/>
-
- <barChart :numberChart="isUserorEngry(item.id)" :chart-id="chartId+item.id+'1'" :key="item.id" :chart-date="chartweekDate" :env-type="item.id" :xType="dayType"/>
-
- <div class="room_table" v-if="!isUserorEngry(item.id)">
- <div class="room_table_number">
- <div>服务空间数(总:{{chartweekDate.registeredSpaceNum&&chartweekDate.registeredSpaceNum.filter(Boolean)[0]}})</div>
- <div>
- <div v-for="(item,index) in chartweekDate.daySpaceNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- </div>
- <div class="room_table room_table_user" v-if="item.id==='userAdjust'">
- <div class="room_table_number">
- <div>异常热调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackAbnorHotNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- <div class="room_table_number" :style="{'margin-top':0}">
- <div>异常冷调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackAbnorColdNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- <div class="room_table_number" :style="{'margin-top':0}">
- <div>吹风调节</div>
- <div>
- <div v-for="(item,index) in chartweekDate.feedbackNoisyHotNum" :key="index">
- {{item}}
- </div>
- </div>
- </div>
- </div>
- <section v-if="item.id=='Tdb'">
- <div class="content_title_noline mb40"><span>逐刻平均温度及达标空间数量变化趋势</span></div>
- <chartLegend class="charttext_p charttext_mt mb40" :num-type="false"/>
- <lineChart :chart-id="chartId+'zhou'+item.id" :contant="true" :chart-date="chartweekTemp" :xType="hourType"/>
- <barChart :chart-id="chartId+'zhou1'+item.id" :chart-date="chartweekTemp" :xType="hourType"/>
-
- </section>
- <div class="addmark">
- <div class="remarkshow remark_input">{{quarterRemark[item.id]}}</div>
- </div>
- <div class="hcho_parame" v-if="item.id=='HCHO'">
- <div class="content_title mp40"><span>异常空间</span><span>(超标率排序)</span></div>
- <el-table size="mini" :height="216" :data="hchogirdDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="abnormalProprotion" width='130' label="超标率(%)" align="left"></el-table-column>
- <el-table-column property="hchoAbnormalTime" width='130' label="超标时长(h)" align="left"></el-table-column>
- <el-table-column property="hchoMaxSolubility" width='150' label="峰值浓度(mg/m³)" align="left"></el-table-column>
- <el-table-column width='130' label="峰值浓度评价" align="left">
- <template slot-scope='{row}'>
- <span :style="{color:row.assess=='较高'?'#C6322B':'#1F2329'}">{{row.assess}}</span>
- </template>
- </el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- {{row.hchoRemark}}
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="co2_parame" v-if="item.id=='CO2'">
- <div class="content_title mp40"><span>异常空间</span><span>(超标率排序)</span></div>
- <el-table size="mini" :height="216" :data="co2girdDate" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' label="空间名称" align="left"></el-table-column>
- <el-table-column property="abnormalProprotion" width='130' label="超标率(%)" align="left"></el-table-column>
- <el-table-column property="co2AbnormalTime" width='130' label="超标时长(h)" align="left"></el-table-column>
- <el-table-column property="co2MaxSolubility" width='150' label="峰值浓度(ppm)" align="left"></el-table-column>
- <el-table-column property="assess" width='130' label="峰值浓度评价" align="left">
- <template slot-scope='{row}'>
- <span :style="{color:row.assess=='较高'?'#DCAA04':'#1F2329'}">{{row.assess}}</span>
- </template>
- </el-table-column>
- <el-table-column label="解释" align="center">
- <template slot-scope='{row}'>
- {{row.co2Remark}}
-
- </template>
- </el-table-column>
- </el-table>
- <div class="content_title_noline mp40 mb16">参数释义</div>
- <ul class="paramlist ft12">
- <li>
- <p><span><b>CO₂:</b>通常作为建筑空间新风是否充足的量化参数</span></p>
- <div>
- <el-table class="co2table ft12" :data="co2Date" border :header-cell-style="{background:'#ffffff!important',color:'#606266',padding:'6px 0'}">
-
- <el-table-column label="序号" type="index" width="60" align="left"></el-table-column>
- <el-table-column label="CO₂浓度区间" prop="area" align="left" width="150"></el-table-column>
- <el-table-column label="评价" prop="assess" align="left" width="200"></el-table-column>
- <el-table-column label="环境感受" prop="feel" align="left"></el-table-column>
- </el-table>
- <div class="title_tips"><i class="el-icon-warning-outline"></i>室外新鲜空气一般在 400~500ppm</div>
- </div>
- </li>
- </ul>
- </div>
- <div class="rh_parame" v-if="item.id=='RH'">
- <div class="content_title_noline mp40 mb16">参数解释</div>
- <ul class="paramlist ft12">
- <li>
- <p><i></i><span><b>相对湿度</b></span></p>
- <div style="margin-top:8px">评价空气中的水蒸气的相对含量</div>
- </li>
- <li>
- <p><i></i><span><b>舒适范围</b></span></p>
- <div>
- <div class="hum_list">
- <div><span>供暖季</span>30%~60%</div>
- <div><span>供冷季</span>40%~60%</div>
- <div><span>过渡季</span>30%~60%</div>
- </div>
- </div>
- </li>
- <li>
- <p><i></i><span><b>参数评价</b></span></p>
- <p class="rh_img"><img src="../../../../static/images/hot.png" alt=""/>干燥:低于上述区间 </p>
- <p class="rh_img"><img src="../../../../static/images/cold.png" alt=""/>偏湿:高于上述区间 </p>
- </li>
- <li>
- <p><i></i><span><b>相对湿度的影响</b><br></span></p>
- <div style="margin-top:8px">
- 高湿度可促进微生物病原体(如细菌、尘螨和霉菌)的聚集和生长,同时湿度过高可能会增加建筑材料释放气体:相对湿度增加 35%可使甲醛释放量增加 1.8-2.6 倍。 低湿度会导致气道、皮肤、眼 睛、咽喉和粘膜的干燥和刺激。也与病毒较长的存活率有关(活性失去较慢)
- </div>
- </li>
- </ul>
- </div>
- <div class="pm_parame" v-if="item.id=='PM2d5'">
- <div class="content_title_noline mp40 mb16"><span>参数释义</span></div>
- <ul class="paramlist ft12">
- <li>
- <p><i></i><span><b>PM2.5简介</b><br>大气中空气动力学当量直径小于或等于 2.5 微米的颗粒物,也称为可入肺颗粒物;</span></p>
- </li>
- <li>
- <p><i></i><span><b>达标率</b><br>参数良好级别及以上,浓度≤75 μg/m3;超出此数值记为超限。</span></p>
- </li>
- <li>
- <p><i></i><span>WELL标准中,对不同PM2.5浓度所在区间所能申请的标准(铂金级、金级、银级),均有对应的先决条件。如:在 PM2.5 浓度为 20μg/m3,最高只能达到 WELL 金级标准。</span></p>
- </li>
- </ul>
- </div>
-
- <section class="mp400 mb730" v-if="item.id=='Tdb'">
- <div class="content_title"><span>环境温度分析(空间维度)</span></div>
- <div class="sj_reminder mb16">
- <p>温馨提示:</p>
- <p>1.空间划分维度:内外区、朝向、楼层、新风机组各自服务的空间四个维度,分别进行周不达标率分析计算。</p>
- <p>2.数据表:每个空间划分维度均有对应的空间数量。</p>
- <p>3.朝向维度仅外区空间,其中内区空间无朝向。</p>
- </div>
- <div class="sj_chartbox">
- <div class="pr65">
- <div class="day_title mb32">内、外区</div>
- <barChart :chart-id="'echart_left_out'+exportPdf" :chart-date="localtionDate.regionsChart" :sjChartType="'regions'" class="daychart"/>
- <div class="chart_sj_bottom mb10">
- <div>空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.regionsChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- <div>
- <div class="day_title mb32">各个朝向<chartLegend :avgTemp="false" class="charttext"/></div>
- <barChart :chart-id="'echart_left_orientation'+exportPdf" :chart-date="localtionDate.orientationChart" :sjChartType="'orientation'" class="daychart"/>
- <div class="chart_sj_bottom mb10">
- <div class="twoline">空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.orientationChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- </div>
- <div class="sj_chartbox mp40">
- <div class="pr65">
- <div class="day_title mb32">各个楼层</div>
- <barChart :chart-id="'echart_left_floor'+exportPdf" :chart-date="localtionDate.floorChart" :sjChartType="'localtion'" class="daychart"/>
- <div class="chart_sj_bottom">
- <div class="twoline">空间数量</div>
- <div class="chart_sj_bottom_main">
- <div v-for="(item,index) in localtionDate.floorChart.spaceNum" :key="index">{{item}}</div>
- </div>
- </div>
- </div>
- <div>
-
- {{item}}
- </div>
- </div>
- <div class="addmark addmarkhg">
- <div class="remarkshow remark_input" v-show="typeRemark">{{typeRemark}}</div>
- </div>
- </section>
-
-
- <section class="mb16" v-if="item.id=='Tdb'">
- <div class="content_title"><span>各达标区间空间数量分布及异常冷热空间列表</span></div>
- <div class="content_title_noline mb16">各达标区间空间数量分布</div>
- <div class="up_distribution">
- <div class="up_distribution_text"><span></span>达标率偏低,亟待解决</div>
- <barChart :chart-id="'echart_left_week'+exportPdf" :chart-date="StandardList" :weekNormalChart="true" :y-type="yType" class="daychart"/>
- </div>
- <div class="title_tips mb52"></div>
- <div class="content_body mb475">
- <div class="body_title"><span>偏热空间</span><span class="tabletag taghot">偏热</span></div>
- <el-table size="mini" :data="hotgirdDate" :height="396" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' show-overflow-tooltip label="空间名称" align="left"></el-table-column>
- <el-table-column property="avgTemp" width='100' label="周均温度(°C)" align="left"></el-table-column>
- <el-table-column property="hotProprotion" width='120' label="周偏热不达标(%)" align="left"></el-table-column>
- <el-table-column property="serviceTime" width='110' label="周服务时长(h)" align="left"></el-table-column>
- <el-table-column property="validProprotion" width='110' label="周有效数据(%)" align="left"></el-table-column>
- <el-table-column property="hotNum" width='120' label="周累计热反馈数" align="left"></el-table-column>
- <el-table-column label="解释" align="left">
- <template slot-scope='{row}'>
- {{row.hotRemark}}
- </template>
- </el-table-column>
- </el-table>
- <div class="body_title body_coldtitle"><span>偏冷空间</span><span class="tabletag tagclod">偏冷</span></div>
- <el-table size="mini" :data="coldgirdDate" :height="396" :header-cell-style="{background:'#F8F9FA!important',color:'#646A73',padding:'6px 0'}">
- <el-table-column label='序号' prop width='80' type='index' align="left"></el-table-column>
- <el-table-column property="spaceName" width='130' show-overflow-tooltip label="空间名称" align="left"></el-table-column>
- <el-table-column property="avgTemp" width='100' label="周均温度(°C)" align="left"></el-table-column>
- <el-table-column property="coldProprotion" width='120' label="周偏冷不达标(%)" align="left"></el-table-column>
- <el-table-column property="serviceTime" width='110' label="周服务时长(h)" align="left"></el-table-column>
- <el-table-column property="validProprotion" width='110' label="周有效数据(%)" align="left"></el-table-column>
- <el-table-column property="coldNum" width='120' label="周累计冷反馈数" align="left"></el-table-column>
- <el-table-column label="解释" align="left">
- <template slot-scope='{row}'>
- {{row.coldRemark}}
- </template>
- </el-table-column>
- </el-table>
- </div>
- </section>
-
- <section v-if="dataDeal&&item.id=='Tdb'" class="pageitem_box_list" >
-
- <div class="pageitem_box" v-for="(item,index) in daysDate" :key="index" >
- <div class="content_title"><span>每日环境详情(周{{item.pname}})</span></div>
- <div class="content_body" :key="item.pname">
- <div class="day_title oneday_title">逐刻平均温度及达标空间数量变化趋势</div>
-
- <chartLegend class="charttext" :dot-line="true"/>
- <lineChart :chart-id="'echart_top'+item.name+exportPdf" :chart-date="item.chartDate" :contant="true" :xType="hourType"/>
- <barChart :chart-id="'echart_bottom'+item.name+exportPdf" :chart-date="item.chartDate" :numberChart="true" :x-type="hourType" :y-type="yType"/>
- <div class="room_table">
- <div class="room_table_number">
- <div>室外温度(°C)</div>
- <div>
- <div v-for="(items,sgin) in item.chartDate.outSideTemp" :key="sgin">
- {{items}}
- </div>
- </div>
- </div>
- </div>
- <div class="twochart_box">
- <div>
- <div class="day_title">各房间日均温度分布</div>
- <barChart :chart-id="'echart_left'+item.name+exportPdf" :chart-date="item.chartDateLeft" :normalChart="true" :y-type="yType" class="daychart"/>
- </div>
- <div>
- <div class="day_title">各楼层日均温及偏冷(热)空间数量</div>
-
- <lineChart :x-type="floorType" :chart-id="'echart_righttop'+item.name+exportPdf" :chart-date="item.chartDateRight" :contant="true" class="daylinechart"/>
- <barChart :chart-id="'echart_rightbottom'+item.name+exportPdf" :x-type="floorType" :y-type="yType" :numberChart="true" :chart-date="item.chartDateRight" class="daybarchart"/>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <div v-if="item.id=='Tdb'" :class="{'mp990':daysDate.length%2?true:false,'mp140':daysDate.length%2?false:true}">
- <div class="content_title"><span>用户活跃度统计(周)</span></div>
- <div class="user_total">
- <div v-if="projectId!=='Pj1101020002'">
- <div>用户总数量</div>
- <div><span>{{userDate.userRegistNum}}</span>人</div>
- </div>
- <div v-if="projectId!=='Pj1101020002'">
- <div>周活跃用户数量</div>
- <div><span>{{userDate.userActiveNum}}</span>人</div>
- </div>
- <div>
- <div>用户与系统互动数量</div>
- <div><span>{{userDate.userSysNum}}</span>次</div>
- </div>
- <div>
- <div>用户问题反馈数量</div>
- <div><span>{{userDate.UserFbNum}}</span>条</div>
- </div>
- <div>
- <div>帮用户解决问题</div>
- <div><span>{{userDate.solveFbNum}}</span>条</div>
- </div>
- </div>
- <div class="content_title"><span>环境管理周报数据解释</span></div>
- <section>
- <div class="content_title_noline mb16">名词解释</div>
- <ul class="paramlist ft12">
- <li v-for="(item,index) in expTerms" :key="index">
- <p><i></i><span><b>{{item.name}}:</b>{{item.content}}。</span></p>
- </li>
- </ul>
- </section>
- <section>
- <div class="content_title_noline mb16">计算说明</div>
- <ul class="paramlist paramlist_explain ft12">
- <li>
- <p><i></i><span><b>温度评价</b></span></p>
- <p>“偏冷”、“舒适”、“偏热”。以平均温度的不同区间对应,区间对应如下:</p>
- <div>
- <div class="hum_list">
- <div><img src="../../../../static/images/cold.png" alt="偏冷"/>  偏冷 平均温度<20°C</div>
- <div><img src="../../../../static/images/happy.png" alt="舒适"/>  舒适 平均温度 20°C~25°C</div>
- <div><img src="../../../../static/images/hot.png" alt="偏热"/>  偏热 平均温度>25°C</div>
- </div>
- </div>
- </li>
- <li>
- <p><i></i><span><b>周达标率计算</b></span></p>
- <div class="ml17">
- <p>单个空间当前时刻是否达标的判断方法:min(当前时刻服务定制温度下限,合同约定 温度范围下限)<当前环境温度<max(当前时刻服务定制温度上限,合同约定温度范 围上限),满足上述区间内,视为达标;</p>
- <p>低于区间,视为偏冷;</p>
- <p>高于区间,视为偏热。</p>
- </div>
- <p class="ml17">所有空间一周时间达标率的判断方法:所有空间所有存在空调服务的累计时间中,判断为达标的时间占比,即周达标率。</p>
- <p class="ml17">偏冷(热)率的计算如上。</p>
- </li>
- </ul>
- </section>
- <section>
- <div class="content_title_noline mb16">合约与管控时间段</div>
- <el-table class="sj_table ft12" :height="620" :data="custormList.slice(0,12)" border :header-cell-style="{background:'#F8F9FA!important',padding:'6px 0'}">
-
- <el-table-column align="left" prop="objectName" label="空间组" ></el-table-column>
- <el-table-column align="left" label="合同约定温度达标区间">
- <template slot-scope='{row}'>
- {{row.minValue}}~{{row.maxValue}}
- </template>
- </el-table-column>
- <el-table-column align="left" label="环境保障时间段(工作日)">
- <template slot-scope='{row}'>
- {{row.startTime&&(row.startTime.slice(0,2)+':'+row.startTime.slice(2,4))}}~{{row.endTime&&(row.endTime.slice(0,2)+':'+row.endTime.slice(2,4))}}
- </template>
- </el-table-column>
- <el-table-column align="left" prop="dayType" label="环境保障时间段(周末)"></el-table-column>
- </el-table>
- </section>
- </div>
-
- </section>
-
- </div>
- <el-dialog
- title="提示"
- :visible.sync="emailVisible"
- :modal='false'
- :close-on-click-modal="false"
- width="30%">
- <div class="nosend" v-if="!checkSendEmail">
- 是否将周报发送给
- <span v-for="(items,k) in emailData" :key="k">
- {{items.receiver}}:{{items.mailbox}}
- </span>
- </div>
- <div class="sended" v-if="checkSendEmail">
- <span>已将周报发送给</span>
- <el-checkbox-group v-model="emailCheckList">
- <el-checkbox :label="items.id" v-for="(items,k) in sendedUser" :key="k">{{items.receiver}}</el-checkbox>
- </el-checkbox-group>
- <div v-show="noSendUser&&noSendUser.length">
- <span>未将周报发送给</span>
- <el-checkbox-group v-model="nosendCheckList">
- <el-checkbox :label="items.id" v-for="(items,k) in noSendUser" :key="k">{{items.receiver}}</el-checkbox>
- </el-checkbox-group>
- </div>
- <span>是否继续发送</span>
- </div>
- <span slot="footer" class="dialog-footer">
- <el-button @click="emailVisible = false" size="small">取 消</el-button>
- <el-button type="primary" @click="sendEmail" size="small"> 确 定</el-button>
- </span>
- </el-dialog>
- </div>
- </template>
- <script>
- import {mapGetters} from "vuex"
- import {Tabs} from 'meri-design'
- import lineChart from "./lineChart.vue"
- import barChart from "./barChart.vue"
- import ringChart from "./ringChart.vue"
- import chartLegend from "./chartLegend.vue"
- import envSurvey from "./envSurvey.vue"
- import userAdjust from "./userAdjust.vue"
- import moment from "moment"
- import {queryWeekday,querySubstandardList,queryDay,querysectionSpace,saveRemark,passEmail,
- querysectionFloor,queryStandardList,queryWeekSpace,queryUserActivity,queryTempRate,explainSave,
- querySeason,queryCustormList,queryEmail,queryPm2d5} from "@/api/ReportForm/ReportForm.js";
- export default {
- props:{
-
-
-
-
-
-
-
-
-
- },
- data(){
- return {
- pdfPmDateShow:false,
- mbList:[200,200,600,520,300,900,0],
- emailVisible:false,
- checkSendEmail:false,
- emailCheckList:[],
- nosendCheckList:[],
- chartweekDate:{},
- chartweekTemp:{},
- portDate:"",
- exportPdf:"exportPdf",
- co2Date:[
- {
- area:"400~800",
- assess:"新鲜空气",
- feel:"无,与室外接近"
- },
- {
- area:"800~1000",
- assess:"达标",
- feel:"无,高强度脑力劳动者可能会有轻微头晕感觉"
- },
- {
- area:"1000~1500",
- assess:"新风轻微不足",
- feel:"感觉轻微头晕,头胀,伴随工作效率下降"
- },
- {
- area:"1500~2000",
- assess:"新风明显不足",
- feel:"会有轻微头疼的感觉,无法继续工作"
- },
- {
- area:"≥2000",
- assess:"新风严重不足",
- feel:"属空气严重污染,通常无新风补给,不建议常驻"
- }
- ],
- chartDate:{
- "date": "20200810",
- "avgTemp": "",
- "hotProprotion": 0,
- "coldProprotion": "",
- "normalProprotion": 0,
- "daySpaceNum": 0,
- "registeredSpaceNum": "",
- },
- chartId:'linechart',
- dayType:"day",
- hourType:"hour",
- floorType:"floor",
- yType:"number",
- hotgirdDate:[],
- coldgirdDate:[],
- co2girdDate:[],
- hchogirdDate:[],
- daysDate:[],
- dataDeal:false,
- numIndex:0,
- startDate:'',
- endDate:'',
- pickerOptions: {
- disabledDate(time) {
- return time.getTime() > Date.now();
- },
- },
- chartModel:{
- },
- expTerms:[
- {name:'达标率',content:'按照合约范围约定的达标区间'},
- {name:'环比',content:'相对上周的数据进行比较'},
- {name:'时间维度',content:'日期、时刻等角度分析数据'},
- {name:'空间维度',content:'空间自身固有属性的角度分析数据'},
- {name:'内外区',content:'通常没有直接与室外关联的外窗的空间,划为内区,内区没有朝向之说'},
- {name:'朝向',content:'实际交付有 16 个朝向(含东北偏东),最终划到四个朝向(东北偏东属于东)'},
- {name:'新风机组服务的空间',content:'每个空间都有唯一的新风机组为其服务,一台新风机组服务多个空间'},
- {name:'周偏热(冷)不达标率',content:'空调服务时间段内,偏热(冷)时长占比总时长'},
- {name:'周有效数据',content:'反映数据质量好坏,空调服务时间段内,传感器刨除数据丢包的数据量占比'},
- ],
- dayData:[],
- envType:'Tdb',
- envTypelist:[
- {
- name:'温度',
- id:'Tdb'
- },
- {
- name:'CO₂',
- id:"CO2"
- },
- {
- name:'甲醛',
- id:"HCHO"
- },
- {
- name:'相对湿度',
- id:"RH"
- },
- {
- name:'PM2.5',
- id:"PM2d5"
- },
- {
- name:'用户调节',
- id:"userAdjust"
- },
- {
- name:'能源管理',
- id:"energyManage"
- }
- ],
- tableItem:'',
- daysDateCurrent:[],
- surveyTable:[
- {name:"温度", id:'Tdb',weeknormalProprotion:'',weekAvg:'--',img:'happy',init:1,assess:'',weekcoldProprotion:'',weekhotProprotion:'',unit:'°C',assessHotTable:[
- {name:'偏冷',min:-50},{name:"舒适",min:20},{name:"偏热",min:25}
- ],assessColdTable:[
- {name:'偏冷',min:-50},{name:"舒适",min:24},{name:"偏热",min:27}
- ]},
- {name:"CO₂",id:"CO2",weeknormalProprotion:'',weekAvg:'',assess:'',img:'happy',init:0,unit:'ppm',assessTable:[
- {name:"新鲜空气",min:400,type:"happy"},{name:"达标",min:800,type:"happy"},{name:"新风轻微不足",min:1000,type:"happy"},{name:"新风明显不足",min:1500,type:"hot"},{name:"新风严重不足",min:2000,type:"hot"}
- ]},
- {name:"甲醛",id:"HCHO",weeknormalProprotion:'',weekAvg:'',assess:'',img:'happy',init:2,unit:'mg/m3',assessTable:[
- {name:"符合国标",type:"happy"},{name:"超标",min:0.1,type:"hot"}
- ]},
- {name:"相对湿度", id:"RH",weeknormalProprotion:'',weekAvg:'',init:0,img:'happy',assess:'',unit:'%',assessTable:[
- {name:"干燥",type:"hot"},{name:"舒适",min:30,type:"happy"},{name:"湿润",min:70,type:"cold"}
- ]},
- {name:"PM2.5",id:"PM2d5",weeknormalProprotion:'',weekAvg:'',assess:'',img:'happy',init:0,unit:'ug/m3',assessTable:[
- {name:"优",min:0,type:"happy"},{name:"良好",min:50,type:"happy"},{name:"轻度污染",min:100,type:"hot"},{name:"严重污染",min:200,type:"hot"}
- ]},
- {name:"用户调节",id:"userAdjust",},
- {name:"能源管理",id:"energyManage",},
- ],
- imgList:["cold","happy","hot"],
- StandardList:[],
- userDate:{
- "userRegistNum": 0,
- "userActiveNum": 0,
- "userSysNum": 0,
- "UserFbNum": 0,
- "solveFbNum": 0
- },
- localtionTable:['regionsChart','orientationChart','floorChart','freshAirChart'],
- localtionDate:{
- regionsChart:{},
- orientationChart:{},
- floorChart:{},
- freshAirChart:{}
- },
- seasonType:'',
- hotStandardList:{},
- custormList:[],
- quarterRemark:{},
- typeRemark:"",
- typeRemarkEdit:false,
- quarterRemarkEdit:false,
- remarkId:{},
- reportImg:null,
- emailData:null,
- noSendUser:[],
- sendedUser:[],
- noEmailuser:true,
- isSpecialType:["userAdjust","energyManage"],
- pmDate:[
- {name:"WELL铂金级",range:"0~15"},
- {name:"WELL金级",range:"15~25"},
- {name:"优秀",range:"25~35"},
- {name:"良好",range:"35~75"},
- {name:"轻微污染",range:"75~115"},
- {name:"中度污染",range:"115~150"},
- {name:"重度污染",range:"150~250"},
- {name:"严重污染",range:">250"},
- ],
- pmchartColor:['#2EA121','#8EE085','#B7EDB1','#D9F5D6','#F8E6AB','#FAD355','#DCAA04','#AA8303'],
- }
- },
- components:{lineChart,barChart,chartLegend,Tabs,ringChart,envSurvey,userAdjust},
- beforeMount(){
-
-
- this.comstartDate= this.$route.query.startDate;
- this.comendDate=this.$route.query.endDate;
- this.projectName=this.$route.query.projectName;
- this.projectId=this.$route.query.projectId;
- this.dataChange([this.comstartDate,this.comendDate])
- },
- async mounted(){
- this.indexMap={
- Tdb:9,
- RH:10,
- CO2:11,
- PM2d5:12,
- HCHO:13,
- userAdjust:16,
- energyManage:17
- }
- this.timeArray=this.generateTime();
- await this.getSeasontype();
- this.getWeekSpace('floor');
- this.getWeekSpace();
- this.getUserActivity();
- this.getTempRate();
- this.getStandardList();
- this.getCustormList();
-
- this.getPmdate();
- },
- methods:{
- moment,
- contentTitle(value){
- if(value==="Tdb"){
- return '环境温度分析(时间维度)'
- }
- if(this.isUserorEngry) {
- return '趋势'
- }
- return '逐日详情'
- },
- seccontentTitle(value){
- if(value==="Tdb"){
- return '逐14日环境达标率及平均温度变化趋势'
- }
- if(value=="userAdjust") {
- return '逐14日用户调节空间数量变化趋势'
- }
- if(value=="energyManage") {
- return '逐日电耗变化趋势'
- }
- return '逐日达标率及日浓度'
- },
- getPmdate(){
- const getParams={
- "projectId": this.projectId,
- "startDate":this.startDate,
- "endDate":this.endDate,
- }
- queryPm2d5({getParams}).then(res=>{
- console.log(res);
- if(res.data){
-
- res.data.sort((a,b)=>{
- return a.evaluationStandard - b.evaluationStandard
- })
- res.data.forEach((item,index)=>{
- item.proportion = parseInt(item.proportion*100);
- this.pmDate[index]=Object.assign(this.pmDate[index],item);
- })
- this.pdfPmDateShow=true;
- }
- })
- },
- toRemarkedit(value){
- this[value+'Edit'] =true;
- },
- saveRemark(value){
- let postParams={
- "id": this.remarkId[this.envType],
- "projectId": this.projectId,
- "startDate":this.startDate,
- "endDate":this.endDate,
- "year":this.startDate.slice(0,4),
- "type":value=="typeRemark"?9:this.indexMap[this.envType],
- "quarterRemark": this.quarterRemark[this.envType],
- }
- value=="typeRemark"&&(postParams.typeRemark=this.typeRemark);
- saveRemark({postParams}).then(res=>{
- if(res.result=='success'){
- this.$message.success('保存成功');
- this.remarkId[this.envType]=res.id || '';
- this[value+'Edit']=false;
- }
- })
- },
- cancelRemark(value){
- this[value+'Edit'] =false;
- },
- tableRowClassName({row, rowIndex}) {
- const passValue=['舒适','新鲜空气','优','符合国标','达标'];
- if (!passValue.includes(row.assess)) {
- return 'warning-row';
- }
- return '';
- },
- getCustormList(){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "startDate":this.startDate
- }
- }
-
- queryCustormList({postParams}).then(res=>{
- this.custormList=res.data||[];
- const weekType={
- WeekDay:"工作日",
- Weekend:"周末",
- Holiday:"假日"
- }
- this.custormList.forEach(item=>{
- item.dayType = (item.endMinValue?(item.endMinValue.slice(0,2)+':'+item.endMinValue.slice(2,4)):'-') +'~'+ (item.endMaxValue?(item.endMaxValue.slice(0,2)+':'+item.endMaxValue.slice(2,4)):'-');
- })
- })
- },
- changeInput(e,type){
- this.tableSave(e,type)
- },
- async getSeasontype(falg=true){
- let getParams= {
- projectId:this.projectId,
- dateTiime:falg?this.startDate:this.endDate
- }
- await querySeason({getParams}).then(res=>{
- this.seasonType=res.content&&res.content[0].seasonType||'Warm';
- })
- },
- tableSave(e,type){
- let getParams={
- projectId:this.projectId,
- spaceId:e.spaceId,
- startDate:this.startDate,
- }
- getParams[type + 'Remark']=e[type + 'Remark'];
- explainSave({getParams}).then(res=>{
- })
- },
- dataChange(value) {
- if(value){
- this.startDate=moment(value[0]).format("YYYYMMDD");
- this.endDate=moment(value[1]).format("YYYYMMDD");
- this.portDate=[moment(value[0]),moment(value[1])];
- this.getweekDate(this.startDate,this.endDate);
- this.getTableList("hotProprotion","hotgirdDate","hotRemark");
- this.getTableList("coldProprotion","coldgirdDate","coldRemark");
- this.getTableList("co2AbnormalTime","co2girdDate","co2Remark",1000);
- this.getTableList("hchoAbnormalTime","hchogirdDate","hchoRemark",0.1);
- this.getDayDate();
- }
- },
- getWeekSpace(value){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "startDate":this.startDate,
- "endDate":this.endDate,
-
- }
- }
- if(value){
- postParams.criteria.type=2;
- }
- queryWeekSpace({postParams}).then(res=>{
- if(!res.content){
- return
- }
- let obj={};
- if(!value){
- let keyMap={
- 11:"CO2",
- 13:"HCHO",
- 10:"RH",
- 12:"PM2d5",
- 9:"Tdb",
- 16:'userAdjust',
- 17:'energyManage'
- }
- this.localtionTable.forEach(item=>{
- !(item=='floorChart')&&(obj[item]=[]);
- })
- res.content.forEach(item=>{
- if(item.type<4){
- item.type!==2&&obj[this.localtionTable[item.type]].push(item);
- }else if(item.type<=8){
- let ctypeMap={4:0,5:3,6:1,7:4,8:2};
- let ctype= ctypeMap[item.type];
-
- if(ctype==4){
- this.surveyTable[ctype].weekAvg =(typeof item.avgDate =="number")?(item.avgDate*this.multipleInit).toFixed(this.surveyTable[ctype].init):'--';
- }else{
- this.surveyTable[ctype].weekAvg =(typeof item.avgDate =="number")?item.avgDate.toFixed(this.surveyTable[ctype].init):'--';
- }
- (typeof item.normalProprotion=="number")&&(this.surveyTable[ctype].weeknormalProprotion=(item.normalProprotion*100).toFixed(0));
- (typeof item.coldProprotion=="number")&&(this.surveyTable[ctype].weekcoldProprotion=(item.coldProprotion*100).toFixed(0));
- (typeof item.hotProprotion=="number")&&(this.surveyTable[ctype].weekhotProprotion=(item.hotProprotion*100).toFixed(0));
- (typeof item.chainRatio=="number")&&(this.surveyTable[ctype].chainRatio=(item.chainRatio*100).toFixed(0));
- (typeof item.coldChainRatio=="number")&&(this.surveyTable[ctype].coldChainRatio=(item.coldChainRatio*100).toFixed(0));
- (typeof item.hotChainRatio=="number")&&(this.surveyTable[ctype].hotChainRatio=(item.hotChainRatio*100).toFixed(0));
- (typeof item.overNormalProprotion=="number")&&(this.surveyTable[ctype].overNormalProprotion=(item.overNormalProprotion*100).toFixed(0));
- (typeof item.partialDryRate=="number")&&(this.surveyTable[ctype].partialDryRate=(item.partialDryRate*100).toFixed(0));
- (typeof item.partialHumidityRate=="number")&&(this.surveyTable[ctype].partialHumidityRate=(item.partialHumidityRate*100).toFixed(0));
- }else if(item.type===14||item.type===15){
- let ctypeMap={14:5,15:6};
- let ctype= ctypeMap[item.type];
- let intList={
- totalEnergy:1,
- acTotalEnergy:1,
- acColdHotTotalEnergy:1,
- acTerTotalEnergy:1,
- seTotalEnergy:1,
- othersTotalEnergy:1,
- monthEnergy:1,
- yearEnergy:1,
- }
- for(let key in item){
- intList[key]&&(item[key]=parseInt(item[key]));
- this.$set(this.surveyTable[ctype],key,item[key]);
- }
- }else{
- this.$set(this.quarterRemark,keyMap[item.type],item.quarterRemark||'');
- !this.remarkId[keyMap[item.type]]&&(this.remarkId[keyMap[item.type]]=item.id||'');
- item.type==9&&(this.typeRemark=item.typeRemark||'');
- }
- })
- for(let k in obj){
- if(k=="orientationChart"){
- obj[k] = obj[k].sort((a,b)=>a.typeCategory- b.typeCategory)
- }
- this.localtionDate[k] = this.arreyInit(obj[k])||{};
- }
- this.surveyTable.forEach((item,index)=>{
- if(item.weekAvg||item.weekAvg==0){
-
- item.assess = this.makeAssess(item,index);
- }
- })
- this.surveyTable[0].img&&(this.reportImg = require(`../../../../static/images/${this.surveyTable[0].img}.png`));
- }else{
- obj.floorChart=res.content||[];
- obj.floorChart = obj.floorChart.filter(item=>item.objectName!=='楼顶');
- this.localtionDate.floorChart = this.arreyInit(obj.floorChart)||{};
- }
- })
- },
- makeAssess(value,sgin){
- let assessList=[];
- if(value.weekAvg=='--'){
- return '--'
- }
- assessList.push(Number(value.weekAvg));
- if(value.name=="温度"&&this.seasonType){
- if(this.seasonType=="Warm"){
- value.assessTable = value.assessHotTable ||[];
- }else{
- value.assessTable = value.assessColdTable ||[]
- }
- }
- value.assessTable&&value.assessTable.forEach(item=>{
- item.min&&assessList.push(item.min)
- })
- assessList.sort((a,b)=>a-b);
- let index = assessList.findIndex(item=>item ==Number(value.weekAvg)) || 1;
- if(value.name=="温度"){
- this.surveyTable[sgin].img = this.imgList[index-1];
- }else{
- this.$set(this.surveyTable[sgin],'img',value.assessTable[index-1].type || 'happy');
-
- }
- return (value.assessTable[index-1]&&value.assessTable[index-1].name) ||'--';
- },
- getStandardList(){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "startDate":this.startDate
- }
- };
- queryStandardList({postParams}).then(res=>{
- this.StandardList = res.data ||[];
- })
- },
- getUserActivity(){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- starDate:this.startDate,
- endDate:this.endDate,
-
-
-
-
- },
- }
- queryUserActivity({postParams}).then(res=>{
- this.userDate = res;
- })
- },
-
- getTempRate(){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "date":{
- "$gte":this.startDate,
- "$lte":this.endDate
- },
- }
- }
- postParams.criteria.time={$gte:"060000", $lte:"200000"};
- queryTempRate({postParams}).then(res=>{
- if(res.data){
- this.chartweekTemp = this.arreyInit(res.data);
- this.chartweekTemp.coldSpaceProprotion&&(this.chartweekTemp.coldProprotion=this.chartweekTemp.coldSpaceProprotion);
- this.chartweekTemp.hotSpaceProprotion&&(this.chartweekTemp.hotProprotion=this.chartweekTemp.hotSpaceProprotion);
- this.chartweekTemp.normalSpaceProprotion&&(this.chartweekTemp.normalProprotion=this.chartweekTemp.normalSpaceProprotion);
- }
- })
- },
- toDomposition(id){
- document.querySelector('#' + id).scrollIntoView(true)
- },
-
- getweekDate(start,end){
- start=moment(start).subtract('days', 7).format("YYYYMMDD");
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "date":{
- "$gte":start,
- "$lte":end
- }
- },
- orders:[
- {
- column:"date",
- asc:true,
- }
- ]
- }
- queryWeekday({postParams}).then(res=>{
- res.count?(this.chartweekDate = this.arreyInit(res.content,'custom')):(this.chartweekDate={});
- })
- },
-
- async getDayDate(){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "date":{
- "$gte":this.startDate,
- "$lte":this.endDate
- }
- }
- }
- this.daysDate=[];
- this.numIndex=0;
-
- let custompostParams=JSON.parse(JSON.stringify(postParams));
- custompostParams.criteria.time={$gte:"060000", $lte:"200000"};
- custompostParams.orders=[{"column":"time","asc":"true"}];
-
-
-
-
-
-
-
- await queryDay({postParams:custompostParams}).then(async res=>{
- if(res.count){
- await this.getDategroup(res.content,"chartDate")
- }else{
- this.getDategroup([],"chartDate")
- }
- })
-
- querysectionSpace({postParams}).then(async res=>{
- if(res.data){
- await this.getDategroup(res.data,"chartDateLeft");
- }else{
- this.getDategroup([],"chartDateLeft")
- }
- })
-
- querysectionFloor({postParams}).then(async res=>{
- if(res.data){
- await this.getDategroup(res.data,"chartDateRight")
- }else{
- this.getDategroup([],"chartDateRight")
- }
- })
- },
- getDategroup(value,type){
- if(!Array.isArray(value)){
- return
- }
- this.numIndex=this.numIndex+1;
- let obj={}
- value.map(v => {
- obj[v.date] = 0
- })
- let dataListlen = Object.keys(obj);
- let dataList =dataListlen;
- let result = dataList.map(v => {
- let resObj={name:v,pname:this.getWeek(moment(v).format('E'))};
- resObj[type] = value.filter(_v => v == _v.date)
- return resObj
- })
- if(this.daysDate&&this.daysDate.length){
- this.daysDate.forEach(item=>{
- item = Object.assign(item,result.filter(_v=> _v.name===item.name)[0])
- if(type=="chartDate"&&Array.isArray(item.chartDate)){
- item.chartDate = this.arreyInit(item.chartDate)
- }
- if(type=="chartDateRight"&&Array.isArray(item.chartDateRight)){
- item.chartDateRight = this.arreyInit(item.chartDateRight)
- }
- })
- }else{
- this.daysDate=result;
- this.daysDate.forEach(item=>{
- if(type=="chartDate"&&Array.isArray(item.chartDate)){
- item.chartDate = this.arreyInit(item.chartDate)
- }
- if(type=="chartDateRight"&&Array.isArray(item.chartDateRight)){
- item.chartDateRight = this.arreyInit(item.chartDateRight)
- }
- })
- }
- this.dayData=[];
- let onceFlag=false;
- this.daysDate.forEach((item,index)=>{
- if(!onceFlag){
- this.tableItem = index;
- onceFlag=true;
- }
- let obj={
- name:`周${item.pname}`,
- id:index
- }
- this.dayData.push(obj);
- })
- },
- initTableTime(serviceTime){
- serviceTime = (serviceTime/60)
- let stringnumber = serviceTime.toString();
- serviceTime = stringnumber.indexOf('.')=== -1?serviceTime:serviceTime.toFixed(2);
- return serviceTime
- },
- getTableList(value,date,remark,assessNum){
- let postParams={
- "criteria":{
- "projectId":this.projectId,
- "startDate":this.startDate,
- },
- page:1,
- size:10,
- "orders":[{"column":value,"asc":false}]
- }
- querySubstandardList({postParams}).then(res=>{
- if(res.content){
- res.content.forEach(item=>{
- if(value=="hotProprotion"){
- item.hotProprotion = parseInt(item.hotProprotion*100);
- }else{
- item.coldProprotion = parseInt(item.coldProprotion*100);
- }
- item.abnormalProprotion&&(item.abnormalProprotion = parseInt(item.abnormalProprotion*100));
- item.validProprotion = typeof item.validProprotion == "number"?parseInt(item.validProprotion*100):'--';
- item.avgTemp = typeof item.avgTemp == "number" ? item.avgTemp.toFixed(1) : '--';
- item.serviceTime&&(item.serviceTime=this.initTableTime(item.serviceTime));
- item.co2AbnormalTime&&(item.co2AbnormalTime=this.initTableTime(item.co2AbnormalTime));
- item.hchoAbnormalTime&&(item.hchoAbnormalTime=this.initTableTime(item.hchoAbnormalTime));
- })
- res.content=res.content.filter(item=>{return item.avgTemp!=='--'})
- }
- this[date] = res.content||[];
- this[date].length&&this[date].forEach((item,index)=>{
- this.$set(this[date][index],remark,item[remark]||'');
- })
- if(value==="hotProprotion"||value === "coldProprotion"){
- this[date] = this[date].filter((item,index)=>{
- return item[value]>=10&&item.avgTemp!=='--';
- })
- }
- if(value==="co2AbnormalTime"||value === "hchoAbnormalTime"){
- this[date] = this[date].slice(0,5);
- this[date] = this[date].filter(item=>{
- if(value==="co2AbnormalTime"){
- return item.co2MaxSolubility>assessNum
- }else{
- return item.hchoMaxSolubility>assessNum
- }
- })
- }
- assessNum&&this[date].forEach(item=>{
- if(value==="co2AbnormalTime"){
- item.assess = item.co2MaxSolubility>assessNum?'较高':'正常';
- item.co2MaxSolubility=(typeof(item.co2MaxSolubility)=='number')?item.co2MaxSolubility.toFixed(0):'--';
- }else{
- item.assess = item.hchoMaxSolubility>assessNum?'较高':'正常';
- item.hchoMaxSolubility = item.hchoMaxSolubility.toFixed(2);
- }
- })
- })
- },
- generateDate(startDate,day){
- let start;
- let startList =[];
- for(let i=0;i<day;i++){
- start = moment(startDate);
- startList.push(start.add("days",i).format("YYYYMMDD"))
- }
- return startList
- },
- generateTime(){
- let Timearray=[
- "060000","061500","063000","064500","070000","071500","0,78000","074500","080000", "081500","083000","084500","090000", "091500","093000"
- ,"094500", "100000", "101500","103000","104500","110000", "111500", "113000", "114500","120000", "121500","123000", "124500"
- ,"130000", "131500","133000","134500","140000", "141500", "143000", "144500","150000","151500","153000", "154500", "160000"
- ,"161500", "163000", "164500","170000", "171500","173000","174500", "180000", "181500","183000", "184500", "190000","191500"
- ,"193000", "194500", "200000"
- ]
- return Timearray
- },
- arreyInit(arr,type){
- if(arr&&!arr.length){
- return
- }
- if(type&&type=='custom'){
- let startTime = moment(this.startDate).subtract('days', 7).format("YYYYMMDD")
- let dataList = this.generateDate(startTime,14);
- let copeArr=dataList.map(index=>{
- let items = arr.filter(v=> index ===v.date).length&&arr.filter(v=> index===v.date)[0];
- items.avgPm2d5&&(items.avgPm2d5 =items.avgPm2d5*this.multipleInit);
- let itemsModel={
- avgTemp: -9999,
- coldLastTime:-9999,
- coldProprotion: -9999,
- createTime: -9999,
- date: index,
- daySpaceNum: -9999,
- hotLastTime:-9999,
- hotProprotion: -9999,
- initializeServiceCustomizationTime: -9999,
- normalLastTime: -9999,
- normalProprotion: -9999,
- registeredSpaceNum: -9999,
- }
- return items?items:{...itemsModel,...items}
- })
- arr = copeArr;
- }
- const obj={};
- let keysIndex = this.getKeysIndex(arr)
- let keysArr=arr[keysIndex]&&Object.keys(arr[keysIndex]);
- keysArr.forEach(item=>{
- obj[item]=[];
- })
- arr.forEach(item => {
- for (let keys in keysArr){
- if(!item.hasOwnProperty(keysArr[keys])){
- item[keysArr[keys]]="-9999"
- }
- }
- for (let key in item){
- item[key]=Number(item[key])===-9999?null:item[key];
- obj[key].push(item[key]);
- }
- });
- return obj
- },
- getWeek (week) {
- switch (Number(week)) {
- case 1:
- return '一'
- case 2:
- return '二'
- case 3:
- return '三'
- case 4:
- return '四'
- case 5:
- return '五'
- case 6:
- return '六'
- case 7:
- return '日'
- default:
- return '--'
- }
- },
- getKeysIndex(arr){
- let value = JSON.parse(JSON.stringify(arr));
- let valueArr = value.map(item=>{
- return item&&Object.keys(item).length || 0
- });
-
- let valueCope = Math.max.call(null,...valueArr);
- return valueArr.indexOf(valueCope)
- },
- exportClick(){
- this.getPdf('exportPdf', `${this.projectName} - 环境周报 ${moment(this.startDate).format("MM.DD")}~${moment(this.endDate).format("MM.DD")}`,`${this.projectName}`)
- },
- getEmailDate(){
- let postParams={
- "criteria": {
- "projectId": this.projectId,
- },
- "orders": [
- {
- "column": "updateTime",
- "asc": false
- }
- ]
- }
- queryEmail({postParams}).then(res=>{
- if(res.count){
- this.emailData=res.content;
- this.noEmailuser=false;
- }else{
- this.noEmailuser=true
- }
- })
- },
- emailClick(){
-
- let sendTime = moment().week(moment().week()).startOf('week').valueOf();
- let postParams={
- "criteria": {
- "projectId": this.projectId,
- "sendTime": {
- "$gte": sendTime+''
- }
- },
- "orders": [
- {
- "column": "updateTime",
- "asc": false
- }
- ]
- }
- queryEmail({postParams}).then(res=>{
- if(res.count){
-
- this.checkSendEmail=true;
- this.sendedUser=[];
- this.noSendUser=[];
- res.content.forEach(item=>{
- if(item.emailRecords&&item.emailRecords.length){
-
- this.sendedUser.push(item);
- }else{
-
- this.noSendUser.push(item);
- }
- })
- }
- if(this.noSendUser.length===res.count){
-
- this.checkSendEmail=false
- }
- this.emailVisible=true;
- })
- },
- sendEmail(){
- let postParams={
- ids:[],
- lastWeekMonday:this.startDate,
- lastWeekSunday:this.endDate
- }
- if(!this.checkSendEmail){
- this.emailData.forEach((item)=>{
- postParams.ids.push(item.id)
- })
- }else{
- postParams.ids =this.emailCheckList.concat(this.nosendCheckList)
- }
- passEmail({postParams}).then(res=>{
- if(res.result="success"){
- this.$message.success('发送成功')
- }else{
- this.$message.error;('发送失败')
- }
- this.emailVisible=false;
- })
- }
- },
- watch:{
- comstartDate:{
- handler(newval){
- this.comstartDate=newval;
- if(!this.comstartDate){
- return
- }
- this.dataChange([this.comstartDate,this.comendDate])
- },
- immediate:true
- },
- portDate(newval){
- this.portDate=newval;
- },
- tableItem(){
- this.daysDateCurrent[0] = this.daysDate[this.tableItem];
- },
- chartweekDate:{
- handler(newval){
- this.chartweekDate=newval;
- },
- deep:true
- },
- daysDate:{
- handler(newval){
- this.daysDate=newval;
- },
- deep:true
- },
- numIndex(newval){
- if(this.numIndex==3){
- this.daysDate = this.daysDate.filter(item=>{
- if(!!(item.chartDate||item.chartDateRight||(item.chartDateLeft&&item.chartDateLeft.length))){
- return item
- }
- })
- this.daysDate.forEach(item=>{
- let timeObj=item.chartDate.time;
- (timeObj&&timeObj.length!==57)&&this.timeArray.forEach((items,index)=>{
- if(!timeObj.includes(items)){
- item.chartDate.avgTemp&&item.chartDate.avgTemp.splice(index,0,null)
- item.chartDate.coldSpaceNum&&item.chartDate.coldSpaceNum.splice(index,0,0)
- item.chartDate.coldSpaceProprotion&&item.chartDate.coldSpaceProprotion.splice(index,0,0)
- item.chartDate.hotSpaceNum&&item.chartDate.hotSpaceNum.splice(index,0,0)
- item.chartDate.hotSpaceProprotion&&item.chartDate.hotSpaceProprotion.splice(index,0,0)
- item.chartDate.normalSpaceNum&&item.chartDate.normalSpaceNum.splice(index,0,0);
- item.chartDate.normalSpaceProprotion&&item.chartDate.normalSpaceProprotion.splice(index,0,0);
- !item.chartDate.outSideTemp&&(item.chartDate.outSideTemp=[]);
- (items.slice(1)=='0000')?item.chartDate.outSideTemp.splice(Number(items.slice(0,2))-6,0,'-'):item.chartDate.outSideTemp.splice(index,0,null);
- item.chartDate.spaceNum&&item.chartDate.spaceNum.splice(index,0,0);
- item.chartDate.time.splice(index,0,items);
- }
- })
- })
- this.dataDeal=true;
- }else{
- this.dataDeal=false;
- }
- }
- },
- computed: {
-
- isUserorEngry(){
- return function(value){
- if(value){
- return this.isSpecialType.includes(value)
- }
- return this.isSpecialType.includes(this.envType)
- }
- },
- currentEnv(){
- return this.surveyTable.findIndex(item=>{
- return item.id==this.envType
- })
- },
- multipleInit(){
- if(this.projectId==="Pj1101080259"){
- return 1000;
- }
- return 1
- },
- envTypelistnow(){
- if(this.projectId!=="Pj1101080259"){
- return this.envTypelist.slice(0,6)
- }
- return this.envTypelist
- },
- surveyTablenow(){
- if(this.projectId!=="Pj1101080259"){
- return this.surveyTable.slice(0,6)
- }
- return this.surveyTable
- }
-
-
-
- },
- }
- </script>
- <style lang="less" scoped>
- .sended{
- line-height: 25px;
- }
- .download_box{
- display: flex;
- justify-content: flex-end;
- padding: 20px 20px 0 0;
- // margin-bottom: 20px;
- .ml20{
- margin-left: 20px;
- }
- }
- .mp40{
- margin-top: 40px;
- }
- .mp80{
- margin-top: 170px;
- }
- .mp990{
- margin-top: 1020px;
- }
- .mp140{
- margin-top: 90px;
- }
- .mp400{
- margin-top: 620px;
- }
- .marginList(@Name,@number){
- .mb@{number}{
- margin-@{Name}:@number*1px;
- }
- }
- @bottom: 0,5,10,16,32,40,52,100,180,200,250,300,380,430,350,475,480,330,450,500,520,600,690,730,900;
- .loopMarginList(@i) when (@i < (length(@bottom)+1)) {
- .marginList(bottom, extract(@bottom, @i));
- .loopMarginList(@i+1);
- }
- .loopMarginList(1);
- .pr65{
- padding-right: 65px;
- }
- .addmarkhg{
- height: 200px;
- }
- .addmark{
- user-select: none;
- margin-top: 30px;
- .remark_txt{
- padding-bottom: 12px;
- color: #1F2429;
- font-size: 14px;
- }
- .remarkshow{
- width: 100%;
- height: 80px;
- background: #f7f7f7;
- padding: 10px;
- box-sizing: border-box;
- border-radius: 8px;
- }
- .remark_input{
- margin-bottom: 20px;
- }
- }
- .ml17{
- margin:0 0 20px 31px;
- position: relative;
- &::before{
- content:'';
- display: inline-block;
- position: absolute;
- top: 7px;
- left: -15px;
- width:6px;
- height: 6px;
- border-radius: 50%;
- border: 1px solid #8d9399;
- }
- &>p{
- margin:0 0 8px 0;
- }
- }
- .page_main{
- width: 1300px; //最合适宽度
- margin: auto;
- position: relative;
- background: #f7f9fa;
- .page_header{
- text-align: center;
- // background: #ffffff;
- position: relative;
- padding:40px 0 28px; //60px
- font-size:30px;
- color:rgba(31,36,41,1);
- span{
- font-size: 24px;
- font-family: serif;
- }
- .pname{
- position: absolute;
- font-size: 24px;
- right: 40px;
- top: 49px;
- }
- }
- .title_one_table{
- & >.sj_table{
- font-size: 16px;
- }
- }
- .env_module{
- background: #ffffff;
- // overflow: hidden;
- border-radius: 8px;
- padding: 24px 0 48px 20px;
- & /deep/ .el-table thead>tr{
- background: #F8F9FA;
- }
- & /deep/ .el-table .warning-row{
- background: #fff5e9;
- color: #DE7802;
- }
- .daytabs{
- margin-left: 16px;
- }
- .sj_title{
- text-align: center;
- margin:28px auto 36px;
- font-size: 24px;
- color: #1F2429;
- line-height: 24px;
- }
- .title_one{
- font-size: 26px;
- }
- .pm_container{
- &>p{
- font-size: 16px;
- color: #1F2429;
- padding: 26px 0;
- }
- .pm_table{
- display: flex;
- .left{
- flex:1;
- padding: 0 50px 0 10px;
- .pm_chart{
- height: 250px;
- }
- .pm_count{
- font-size: 14px;
- margin-bottom: 15px;
- span{
- font-size: 20px;
- }
- }
- }
- .right{
- margin-right: 52px;
- width: 679px;
- & /deep/ .el-table--mini td, .el-table--mini th {
- padding: 8px 0;
- }
- }
- }
- }
- .sj_table{
- margin-bottom: 18px;
- }
- .title_tips{
- font-size: 12px;
- font-weight: 400;
- color: #8D9399;
- line-height: 20px;
- &>i{
- margin-right: 5px;
- }
- }
- .big_tips{
- font-size: 14px;
- }
- .charttext_p{
- float: right;
- margin-top: 7px;
- }
- .charttext{
- float: right;
- }
- .content_title{
- font-size: 20px;
- // display: inline-block;
- margin-bottom: 24px;
- &::before {
- content: "";
- display: inline-block;
- width: 4px;
- height: 20px;
- margin: 4px 8px 0 0;
- background-color: rgba(51, 153, 255, 1);
- }
- span{
- vertical-align: top;
- }
- span:nth-child(2){
- font-size: 16px;
- vertical-align: text-top;
- color: #646A73;
- }
- }
- .content_title_gray{
- font-size: 16px;
- line-height: 28px;
- &::before {
- background-color: #8d9399;
- }
- }
- .content_title_noline{
- font-size: 16px;
- color: #1F2429;
- line-height: 22px;
- margin-left: 12px;
- display: inline-block;
- }
- .room_table{
- height: 56px;
- margin: 0px 0 40px -30px;
- &>div{
- display: flex;
- flex-direction: row;
- align-items: center;
- padding: 0 10px;
- &>div:nth-child(1){
- width: 80px;
- margin-right: 5px;
- }
- &>div:not(:first-child){
- text-align: center;
- min-width: 40px;
- }
- &>div{
- // margin-right: 33px;
- // margin-right: 42.5px;
- margin-right: 46.5px;
- }
- }
- .room_table_name{
- background: #f8f9fa;
- height:32px;
- }
- .room_table_number{
- position: relative;
- display: flex;
- font-size: 14px;
- &>div:nth-child(1){
- position: absolute;
- left: 10px;
- width: 71px;
- line-height: 16px;
- }
- &>div:nth-child(2){
- flex:1;
- display: flex;
- padding-left: 65px;
- justify-content: space-around;
- &>div{
- min-width: 9px;
- min-width: 13px;
- }
- }
- margin-top:8px;
- height: 36px;
- line-height: 36px;
- border-bottom: 1px solid #EEEEEE;
- border-top: 1px solid #EEEEEE;
- // line-height: 50px;
- }
- }
- .room_table_user{
- height: auto;
- }
- .paramlist{
- padding: 0 0 0 12px;
- color: #8D9399;
- .rh_img{
- display: flex;
- align-items: center;
- margin: 8px 0 0 9px;
- img{
- width: 16px;
- height: 16px;
- margin-right: 4px;
- }
- }
- &>li{
- margin: 0 0 20px 0;
- &>p i{
- display: inline-block;
- width: 6px;
- height: 6px;
- margin-right: 7px;
- // background: #0091FF;
- background: #8D9399;
- border-radius: 50%;
- }
- .co2table{
- margin:16px 0;
- }
- .hum_list{
- display: flex;
- align-items: center;
- margin: 15px 0 9px 10px;
- color: #2B3036;
- div{
- // width: 182px;
- padding: 0 16px;
- height: 32px;
- display: flex;
- margin-right: 53px;
- justify-content: center;
- align-items: center;
- background: #F8F9FA;
- border-radius: 16px;
- img{
- width: 16px;
- height:16px;
- }
- span{
- margin: 0 10px 0 5px;
- }
- }
- }
- }
- }
- .paramlist_explain{
- &>li>p:nth-child(1){
- margin: 0 0 8px 0;
- }
- }
- .sj_survey{
- display: flex;
- padding: 0 31px;
- margin: 0 0 14px;
- .sj_survey_left{
- display: flex;
- min-width: 160px;
- max-width: 160px;
- flex-direction: column;
- border-right: 1px solid #EFF0F1;
- &>span{
- font-size: 14px;
- color: #646A73;
- line-height: 19px;
- }
- .avgtemp{
- font-size: 42px;
- font-weight: 500;
- color: #1F2329;
- line-height: 59px;
- &>span{
- font-size: 24px;
- }
- }
- .tempstatus{
- width: 96px;
- height: 26px;
- display: flex;
- justify-content: center;
- align-items: center;
- background: #F4F6F9;
- border-radius: 16px;
- color:#8D9399;
- img{
- width: 16px;
- height: 16px;
- margin-right: 6px;
- }
- }
- }
- .sj_survey_right{
- display: flex;
- .survey_chart{
- width: 128px;
- height: 128px;
- margin:0 82px 0 63px;
- }
- .right_ratelist{
- display: flex;
- flex-direction: row;
- .rate_item{
- margin-right: 106px;
- &>div:nth-child(1){
- font-size: 14px;
- color: #646A73;
- line-height: 19px;
- }
- &>div:nth-child(2){
- margin-top: 12px;
- font-size: 14px;
- color: #646A73;
- line-height: 19px;
- div{
- font-size: 28px;
- color: #1F2329;
- line-height: 37px;
- &>span{
- font-size: 12px;
- }
- }
- p{
- font-size: 12px;
- color: #646A73;
- line-height: 17px;
- img{
- width: 9px;
- height: 12px;
- margin-left: 12px;
- }
- }
- }
- }
- }
- }
- }
- .sj_reminder{
- width: 100%;
- padding: 16px 24px 0;
- height: 136px;
- background: #F8F9FA;
- border-radius: 12px;
- &>p{
- font-size: 14px;
- font-weight: 400;
- color: #646C73;
- line-height: 24px;
- }
- &>p:first-child{
- color: #8D9399;
- margin-bottom: 5px;
- }
- }
- .sj_chartbox{
- display: flex;
- padding: 0 15px;
- &>div{
- flex: 1;
- .day_title{
- font-size: 16px;
- color: #1F2429;
- line-height: 22px;
- }
- .chart_sj_bottom{
- display: flex;
- position: relative;
- height: 36px;
- line-height: 36px;
- border-bottom: 1px solid #EEEEEE;
- border-top: 1px solid #EEEEEE;
- &>div:nth-child(1){
- position: absolute;
- }
- .twoline{
- left: -22px;
- width: 37px;
- line-height: 16px;
- }
- .chart_sj_bottom_main{
- flex: 1;
- display: flex;
- justify-content: space-around;
- }
- }
- }
- }
- .up_distribution{
- height: 255px;
- position: relative;
- .up_distribution_text{
- position: absolute;
- top: 0;
- right: 400px;
- span{
- display: inline-block;
- width: 12px;
- height: 12px;
- margin-right: 10px;
- background: #ff0000;
- }
- }
- }
- .content_body{
- padding: 10px;
- .body_title{
- overflow: hidden;
- line-height: 44px;
- height: 44px;
- font-size: 14px;
- margin-bottom: 12px;
- border-radius: 4px;
- background: #F8F9FA;
- width: 100%;
- &::before {
- content: "";
- display: inline-block;
- width: 7px;
- height: 44px;
- margin: 0px 8px 0 0;
- background-color: #F9908B;
- }
- span{
- vertical-align: top;
- }
- .temptable{
- height: 400px!important;
- }
- .tabletag{
- display: inline-block;
- // height: 32px;
- padding: 0 10px;
- line-height: 18px;
- font-size: 12px;
- border-radius: 2px;
- box-sizing: border-box;
- white-space: nowrap;
- margin: 13px 10px;
- width:44px;
- height:18px;
- }
- .taghot{
- background: #FDE3E2;
- color: #AC2F28;
- }
- .tagclod{
- background: #E1F2FF;
- color: #0065B3;
- }
- }
- .day_title{
- display: inline-block;
- height:22px;
- font-size:16px;
- color:rgba(31,36,41,1);
- line-height:22px;
- }
- .oneday_title{
- margin-bottom: 50px;
- }
- .body_coldtitle{
- margin-top: 40px;
- &::before {
- background-color: #0091FF;
- }
- }
- .twochart_box{
- display: flex;
- flex-direction: row;
- &>div{
- flex: 1;
- .daychart{
- min-width: 488px;
- height: 285px;
- }
- .daylinechart{
- margin-top: 25px;
- }
- .daybarchart{
- height: 180px;
- }
- }
- }
- }
- .user_total{
- display: flex;
- flex-wrap: nowrap;
- height: 54px;
- margin-bottom: 48px;
- padding: 0 0 0 10px;
- &>div{
- display: flex;
- flex:1;
- justify-content: center;
- flex-direction: column;
- align-items: center;
- border-left: 1px solid #EFF0F1;
- &>div{
- max-width: 130px;
- min-width: 130px;
- text-align: left;
- }
- &>div:nth-child(1){
- font-size: 14px;
- color: #646A73;
- line-height: 19px;
- }
- &>div:nth-child(2){
- font-size: 12px;
- color: #000000;
- line-height: 27px;
- span{
- font-size: 20px;
- }
- }
- }
- &>div:nth-child(1){
- border-left: 1px solid transparent;
- align-items: flex-start;
- }
- }
- .ft12{
- font-size: 12px;
- }
- }
- .todom_box{
- padding: 0 20px 20px;
- font-size: 14px;
- color: rgb(0, 145, 255);
- &>div{
- margin-top: 15px;
- cursor: pointer;
- }
- }
- .pageitem_box{
- padding: 20px;
- margin-bottom: 16px;
- border-radius: 8px;
- background: #ffffff;
- .charttext_p{
- float: right;
- margin-top: 7px;
- }
- .charttext{
- float: right;
- }
- .content_title{
- font-size: 20px;
- // font-weight: bold;
- display: inline-block;
- margin-bottom: 12px;
- &::before {
- content: "";
- display: inline-block;
- width: 4px;
- height: 20px;
- margin: 4px 8px 0 0;
- background-color: rgba(51, 153, 255, 1);
- }
- span{
- vertical-align: top;
- }
- span:nth-child(2){
- font-size: 16px;
- vertical-align: text-top;
- color: #646A73;
- }
- }
- .room_table{
- height: 56px;
- margin: 0px 0 0 -30px;
- &>div{
- display: flex;
- flex-direction: row;
- align-items: center;
- padding: 0 10px;
- &>div:nth-child(1){
- width: 80px;
- margin-right: 5px;
- }
- &>div:not(:first-child){
- text-align: center;
- min-width: 40px;
- }
- &>div{
- margin-right: 33px;
- }
- }
- .room_table_name{
- background: #f8f9fa;
- height:32px;
- }
- .room_table_number{
- position: relative;
- display: flex;
- &>div:nth-child(1){
- position: absolute;
- left: 10px;
- width: 65px;
- line-height: 16px;
- }
- &>div:nth-child(2){
- flex:1;
- display: flex;
- padding-left: 65px;
- justify-content: space-around;
- &>div{
- min-width: 9px;
- }
- }
- margin-top:8px;
- height: 36px;
- line-height: 36px;
- border-bottom: 1px solid #EEEEEE;
- border-top: 1px solid #EEEEEE;
- }
- }
- .content_body{
- padding: 10px;
- .body_title{
- overflow: hidden;
- line-height: 44px;
- height: 44px;
- font-size: 14px;
- // display: inline-flex;
- margin-bottom: 12px;
- border-radius: 4px;
- background: #F8F9FA;
- width: 100%;
- &::before {
- content: "";
- display: inline-block;
- width: 7px;
- height: 44px;
- margin: 0px 8px 0 0;
- background-color: #F9908B;
- }
- span{
- vertical-align: top;
- }
- .temptable{
- height: 400px!important;
- }
- .tabletag{
- display: inline-block;
- // height: 32px;
- padding: 0 10px;
- line-height: 18px;
- font-size: 12px;
- border-radius: 2px;
- box-sizing: border-box;
- white-space: nowrap;
- margin: 13px 10px;
- width:44px;
- height:18px;
- }
- .taghot{
- background: #FDE3E2;
- color: #AC2F28;
- }
- .tagclod{
- background: #E1F2FF;
- color: #0065B3;
- }
- }
- .day_title{
- display: inline-block;
- height:22px;
- font-size:16px;
- color:rgba(31,36,41,1);
- line-height:22px;
- }
- .oneday_title{
- margin-bottom: 50px;
- }
- .body_coldtitle{
- margin-top: 25px;
- &::before {
- background-color: #0091FF;
- }
- }
- .twochart_box{
- display: flex;
- flex-direction: row;
- &>div{
- flex: 1;
- .daychart{
- min-width: 488px;
- height: 285px;
- }
- .daylinechart{
- margin-top: 25px;
- }
- .daybarchart{
- height: 180px;
- }
- }
- }
- }
- }
- }
- #exportPdf{
- /* display: none; */
- position: absolute;
- background: #ffffff;
- left: -999999px;
- top: 0;
- // width: 1260px;
- width: 1320px;
- .page_header{
- padding: 430px 0 158px;
- .pname{
- right: 70px;
- top: 760px;
- }
- }
- .env_module{
- padding: 24px 0 20px;
- &>div{
- padding:0 100px 0px
- }
- &>section{
- padding:0 100px 0px
- }
- &>.room_table{
- .room_table_number{
- &>div{
- &>div:not(:first-child){
- text-align: center;
- min-width: 41px;
- }
- }
- &>div:nth-child(2){
- &>div{
- min-width: 47px;
- }
- }
- }
- }
- .pageitem_box_list{
- padding:0;
- }
- .pageitem_box{
- // padding: 0 40px 12px;
- padding: 0 70px 12px;
- // margin-bottom: 10px;
- }
- .pageitem_box_coustom{
- // padding: 0 40px;
- padding: 0 70px;
- }
- .pageitem_box_first{
- margin-bottom: 0px;
- }
- .pageitem_box_sec{
- margin-bottom: 74px;
- }
- .pageitem_box_list>.pageitem_box:nth-child(2n+0){
- // margin-bottom: 100px;
- margin-bottom: 200px;
- }
- .pageitem_box:nth-child(1){
- margin-bottom: 0px;
- }
- .pageitem_box:last-child{
- margin-bottom: 0px;
- }
- .pageitem_box_list>.pageitem_box:last-child{
- margin-bottom: 0;
- }
- }
- }
- </style>
|