index.vue 86 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970
  1. <template>
  2. <div class="simpleMatrix ">
  3. <!-- <headerNav @firstRender="firstRender"/> -->
  4. <HeaderMultiBtn @onChange="onChange"/>
  5. <div class="matrix-body">
  6. <div class="body-title">
  7. <div class="title-name">
  8. <!-- <div class="imgs" v-if="status === 0">-->
  9. <!-- <img src="@assets/img/images/downF.png">-->
  10. <!-- <img src="@assets/img/images/all.png" class="all_img">-->
  11. <!-- </div>-->
  12. <div class="imgs" v-if="status == -1">
  13. <img src="@assets/img/images/downF.png">
  14. <img src="@assets/img/images/windup.png" class="qty_img">
  15. </div>
  16. <div class="imgs" v-if="status == -2">
  17. <img src="@assets/img/images/downg.png">
  18. <img src="@assets/img/images/ptyup.png" class="qty_img">
  19. </div>
  20. <div class="base-num" @click="handleClick('all')">
  21. <div class="base-name">接入台数</div>
  22. <div class="nums">{{ titleArr.JRTS }}</div>
  23. </div>
  24. </div>
  25. <div class="base-inf">
  26. <div></div>
  27. <div class="el-cole" v-for="(item, index) in titleList" :key="index">
  28. <div class="active-b" :class="{ active_bor: this.act == item.value1 }">
  29. <div>
  30. <p class="left_p"></p>
  31. <p class="right_p"></p>
  32. </div>
  33. <div class="yuan">
  34. <p><span class="circle"></span></p>
  35. <p>{{ item.name }}</p>
  36. </div>
  37. <div @click="handleClick(item.value1)" class="disCircles"
  38. style="cursor: pointer;font-size: 16px;font-family: 'Bicubik'">
  39. <span class="circles"></span>
  40. <span>
  41. {{
  42. titleArr[item.code] ? (Number(titleArr[item.code])).toFixed(0) : '0'
  43. }}
  44. </span>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. <div class="lineContent">
  50. </div>
  51. <div class="unpaid">
  52. <ul>
  53. <li class="unpaid_name">
  54. <div v-for="(item, index) in unpaidLists" :key="index">{{ item }}</div>
  55. </li>
  56. <li class="unpaid_num">
  57. <div> {{
  58. titleArr.capacityZl ? (Number(titleArr.capacityZl) / 1000).toFixed(2) : '0'
  59. }}
  60. </div>
  61. <div>{{
  62. titleArr.capacityJl ? (Number(titleArr.capacityJl) / 1000).toFixed(2) : '0'
  63. }}
  64. </div>
  65. <div>{{
  66. titleArr.SSZGL ? Number(titleArr.SSZGL / 1000).toFixed(2) : '0'
  67. }}
  68. </div>
  69. <div>{{
  70. titleArr.RFDL ? Number(titleArr.RFDL / 1000).toFixed(2) : '0'
  71. }}
  72. </div>
  73. <div>{{
  74. titleArr.RLYXS ? Number(titleArr.RLYXS).toFixed(2) : '0'
  75. }}
  76. </div>
  77. </li>
  78. </ul>
  79. </div>
  80. <div style="display: flex">
  81. <div class="unpaid_left"></div>
  82. <div class="unpaid_lefts"></div>
  83. <div class="unpaid-tit"></div>
  84. <div class="unpaid-tits"></div>
  85. <el-button class="updownTits " round size="mini" type="primary" @click="setTitle">
  86. 自定义指标
  87. </el-button>
  88. </div>
  89. </div>
  90. <div style="height: 888px;overflow-y: auto;">
  91. <el-collapse v-model="activeNames" @change="handleChange">
  92. <el-collapse-item style="position: relative" class="matrixs"
  93. v-for="(values, leng) in showMatrixList"
  94. :key="leng" :name="leng + 1">
  95. <template #title>
  96. <div class="matrix-titles" style="height: 50px;padding: 0 0 0 10px"
  97. v-if="values.LISTS?.length != 0 || current == 'all'">
  98. <div style="width: 150px">
  99. <span class="station-name">{{ values.CMANAME }}</span>
  100. </div>
  101. <div class="indicator" @click.stop="" style="margin-left: 6px">
  102. <div class="sub-title-item" v-for="(item, indexse) in subTitleData" :key="indexse"
  103. :class="indexse >= 7 ? 'active' : ''"
  104. @click="handleCurveClicks(leng, indexse)">
  105. <span>{{ item.text }}</span>
  106. <span class="sub-value" :style="{ color: item.color }">
  107. {{
  108. values[item.key] ? (values[item.key] / item.ratio).toFixed(item.fix) : "0"
  109. }}
  110. </span>
  111. </div>
  112. </div>
  113. </div>
  114. </template>
  115. <div v-for="(value, index) in values.LISTS" :key="index">
  116. <div v-if="values.CMCODE!=values.LISTS[0].CZBM">
  117. <div class="matrix-title active"
  118. v-if="value.lists.length !=0 || current=='all'">
  119. <div class="matrix-Left"></div>
  120. <div class="matrix-top"></div>
  121. <!-- <i v-if="(value.CZLX === '-1')" class="icon-wind"></i>-->
  122. <i class="icon-photovoltaic" v-if="status==-2"></i>
  123. <i style="color:#1c99ff" class="icon-fan" v-if="status==-1"></i>
  124. <span style="color:#1c99ff" class="station-name" v-if="status==-1">{{
  125. value.CZAMC
  126. }}</span>
  127. <span class="station-name" v-if="status==-2">{{ value.CZAMC }}</span>
  128. <div class="indicator">
  129. <div class="sub-title-item"
  130. :class="indexs >= 7 && indexs!=10 ? 'active' : 'active1'"
  131. v-for="(item, indexs) in subTitleDatas" :key="indexs"
  132. @click="handleCurveClick(leng,item, index,indexs)">
  133. <span>{{ item.type === value.CZLX ? item.text1 : item.text }}</span>
  134. <span class="sub-value" :style="{ color: item.color }">
  135. {{
  136. value[item.key] ? Number(value[item.key] / (item.ratio)).toFixed(item.fix) : "0"
  137. }}
  138. </span>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <div class="matrix-list"
  144. :style="{ margin: (value.lists.length == 0 ? '0' : '10px 0 5px 0') }">
  145. <!-- 风机颜色判断,随机数不对-->
  146. <div class="matrix-card" style="cursor: pointer"
  147. :class="val.SBZT !== '' && colorList[Number(val.SBZT.toFixed(0))] ? colorList[Number(val.SBZT.toFixed(0))] : 'gray'"
  148. v-for="(val, indexe) in value.lists" :key="indexe">
  149. <div class="info">
  150. <div style="cursor: pointer" class="card-left"
  151. @click="handleClickMatrix(val, value.CZLX, value.CZMC, indexe, values.CMANAME, value.CZAMC)">
  152. <span class="card-name">{{ val.aname }}</span>
  153. </div>
  154. <div class="card-right" style="cursor: pointer"
  155. @click="handleDetailClick(index, indexe, leng, 'sun')">
  156. <div class="right-item" v-for="(vales, ind) in electTarget">
  157. <div style="width: 70px">
  158. {{ vales.name }}
  159. </div>
  160. <div class="right-value"
  161. @contextmenu="handDialog(vales, val[vales.type], val, value.CZAMC)">
  162. {{
  163. vales.type ? Number(val[vales.type + 'Value']).toFixed(2) : '0.00'
  164. }}
  165. </div>
  166. <div class="right-unite">
  167. {{ val[vales.unite] }}
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. <!-- <div class="matrix-progress"-->
  173. <!-- v-if="Number(val.QFZT) > 0 && Number(val.QFZT) <= 5 && (Number(val.MXZT) === 2 || Number(val.MXZT) === 3)">-->
  174. <!-- <div class="progress-block" v-for="(item, index) in parseInt(Number(val.QFZT)) + 1"-->
  175. <!-- :key="index"></div>-->
  176. <!-- </div>-->
  177. </div>
  178. </div>
  179. </div>
  180. </el-collapse-item>
  181. </el-collapse>
  182. </div>
  183. <el-dialog class="dialogs" width="90%" top="40px" v-model="displayMatrix" :show-close="true"
  184. :destroy-on-close="true">
  185. <template #title>
  186. <div class="dialog-title">
  187. <img class="dialog-title-img" src="@assets/img/images/dialog-title.png"/>
  188. <div class="title">设备详情</div>
  189. </div>
  190. </template>
  191. <div class="dialog-body" style="height: 77vh">
  192. <img class="dialog-img" src="@assets/img/images/dialog.png"/>
  193. <windDetail :wind="wind" showHeight="77vh"></windDetail>
  194. </div>
  195. </el-dialog>
  196. <el-dialog class="dialogs" width="90%" top="40px" v-model="displaySunMatrix" :show-close="true"
  197. :destroy-on-close="true">
  198. <template #title>
  199. <div class="dialog-title">
  200. <img class="dialog-title-img" src="@assets/img/images/dialog-title.png"/>
  201. <div class="title">设备详情1</div>
  202. </div>
  203. </template>
  204. <div class="dialog-body" style="height: 880px">
  205. <img class="dialog-img" src="@assets/img/images/dialog.png"/>
  206. <lightDetial ref="lightDetial" :JZheight="'63%'" :GJheight="'95%'" :stationName="stationName"
  207. :leftcellHeight="'2.8vh'" :rightcellHeight="'2.4vh'"/>
  208. </div>
  209. </el-dialog>
  210. </div>
  211. <el-dialog width="50%" top="80px" v-model="displaySet" :show-close="true" :destroy-on-close="true">
  212. <template #title>
  213. <div class="dialog-title">
  214. <img class="dialog-title-img" src="@assets/img/images/dialog-title.png"/>
  215. <div class="title">自定义指标</div>
  216. </div>
  217. </template>
  218. <img class="dialog-img" style="position:absolute;right: 0px;bottom: 40px"
  219. src="@assets/img/images/dialog.png"/>
  220. <div class="dialog-body" style="height:30vh;position: relative">
  221. <el-checkbox-group v-model="checkList" @change="change">
  222. <el-checkbox v-for="(item2, index2) in setTarget" :key="index2" :label="item2.name"></el-checkbox>
  223. </el-checkbox-group>
  224. <el-row class="footerButton">
  225. <el-button round @click="cancel">取消</el-button>
  226. <el-button type="primary" round @click="tableRefresh">确认</el-button>
  227. </el-row>
  228. </div>
  229. </el-dialog>
  230. <dialog-check ref="tagChild"
  231. />
  232. <qushi-dialog ref="child" :chartName="chartName"></qushi-dialog>
  233. </div>
  234. </template>
  235. <script>
  236. import dialogCheck from "@/views/layout/stateMonitor/factoryMonitor/components/dialogCheck";
  237. import qushiDialog from "../factoryMonitor/components/qushiDialog";
  238. import {GetPowerstationTypeList} from '@/api/factoryMonitor';
  239. // import headerNav from '@/components/headerNav'
  240. import windDetail from "@/components/windDetail/index";
  241. import windChartCom from "@/views/layout/stateMonitor/factoryMonitor/windPowerPlant/components/lineCharts.vue";
  242. import lightDetial from '@/components/lightDetial'
  243. import {
  244. GetEquipmentsListGroupByCompany,
  245. GetCompanyListGroupByRegion,
  246. GetRtValuesByTagName,
  247. GetGfEquipmentInfo
  248. } from "@api/stateMonitor";
  249. import {GetCurveValues} from '@/api/home'
  250. import dayjs from "dayjs";
  251. import HeaderMultiBtn from "../simpleMatrix/HeaderMultiBtn.vue";
  252. import {rtDataRefreshTime} from "../../../../config";
  253. export default {
  254. name: 'detailMatrix',//明细矩阵
  255. components: {
  256. // headerNav,
  257. windDetail,
  258. windChartCom,
  259. lightDetial,
  260. qushiDialog,
  261. dialogCheck,
  262. HeaderMultiBtn
  263. },
  264. data() {
  265. return {
  266. checkList: [],
  267. displaySet: false,
  268. activeNames: 1,
  269. units: [],
  270. unitDatas: [{flag: false, min: 0, max: 0, codex: 0}],
  271. color: ["#1985de", "#ff8300", "#06a746", "#3eede7", "#eb0f7c", "#dfdc0a", "#de0feb", "#cca4e3"],
  272. stationName: '',
  273. unpaidLists: ["容量(直流)MWp", "容量(交流)MW", "实时功率(MW)", "日发电量(MWh)", "日等效小时(h)"],
  274. titleList: [
  275. {
  276. color: "gray",
  277. name: "通讯中断",
  278. ic: 'icon-offline',
  279. value1: "dj",
  280. code: 'TXZDTS',
  281. },
  282. {
  283. color: "red",
  284. name: "设备停机",
  285. value1: "yx",
  286. ic: 'icon-gz-downtime',
  287. code: 'SBTJTS',
  288. },
  289. {
  290. color: "orange",
  291. name: "带障运行",
  292. value1: "gz",
  293. ic: 'icon-jx-downtime',
  294. code: 'DZYXTS',
  295. },
  296. {
  297. color: "blue",
  298. name: "正常运行",
  299. ic: 'icon-normal-power',
  300. value1: "jx",
  301. code: 'ZCYXTS',
  302. },
  303. ],
  304. act: '',
  305. titleLists: [
  306. {
  307. color: "green",
  308. name: "待机",
  309. value1: "dj",
  310. code: 'DJTS',
  311. },
  312. {
  313. color: "blue",
  314. name: "并网",
  315. value1: "yx",
  316. code: 'YXTS',
  317. },
  318. {
  319. color: "red",
  320. name: "故障",
  321. value1: "gz",
  322. code: 'GZTJTS',
  323. },
  324. {
  325. color: "orange",
  326. name: "检修",
  327. value1: "jx",
  328. code: 'JXTJTS',
  329. },
  330. {
  331. color: "pink",
  332. name: "限电",
  333. value1: "xd",
  334. code: 'XDTS',
  335. },
  336. {
  337. color: "write",
  338. name: "受累",
  339. value1: "sl",
  340. code: 'SLTS',
  341. },
  342. {
  343. color: "gray",
  344. name: "离线",
  345. value1: "lx",
  346. code: 'TXZDTS',
  347. },
  348. ],
  349. unpaidList: [
  350. {
  351. id: 1,
  352. test: "欠发电量",
  353. num1: 0,
  354. key: "r0qf",
  355. num3: "0%~5%",
  356. },
  357. {
  358. id: 2,
  359. test: "欠发电量",
  360. num1: 0,
  361. key: "r1qf",
  362. num3: "5%~10%",
  363. },
  364. {
  365. id: 3,
  366. test: "欠发电量",
  367. num1: 0,
  368. key: "r2qf",
  369. num3: "10%~20%",
  370. },
  371. {
  372. id: 4,
  373. test: "欠发电量",
  374. num1: 0,
  375. key: "r3qf",
  376. num3: "20%~40%",
  377. },
  378. {
  379. id: 5,
  380. test: "欠发电量",
  381. num1: 0,
  382. key: "r4qf",
  383. num3: ">40%",
  384. },
  385. ],
  386. stse: [
  387. {
  388. statiomName: "实时功率",
  389. stse: 'CZMC',
  390. sts: "SSZGL",
  391. },
  392. {
  393. statiomName: "日发电量",
  394. stse: 'CZMC',
  395. sts: "RFDL",
  396. },
  397. {
  398. statiomName: "日等效小时",
  399. stse: 'CZMC',
  400. sts: "RLYXS",
  401. },
  402. ],
  403. companyStse: [
  404. {
  405. statiomName: "实时功率",
  406. stse: 'CMANAME',
  407. sts: "SSZGL",
  408. },
  409. {
  410. statiomName: "日发电量",
  411. stse: 'CMANAME',
  412. sts: "RFDL",
  413. },
  414. {
  415. statiomName: "日等效小时",
  416. stse: 'CMANAME',
  417. sts: "RLYXS",
  418. },
  419. ],
  420. stsed: '',
  421. subTitleDatas: [
  422. {
  423. text: "接入台数",
  424. color: "#ffffff",
  425. key: "JRTS",
  426. ratio: 1,
  427. fix: 0
  428. },
  429. {
  430. text: "通讯中断",
  431. color: "#606769",
  432. key: "TXZDTS",
  433. ratio: 1,
  434. fix: 0
  435. },
  436. {
  437. text: "设备停机",
  438. color: "#BA3237",
  439. key: "SBTJTS",
  440. ratio: 1,
  441. fix: 0
  442. },
  443. {
  444. text: "带障运行",
  445. color: "#E17D24",
  446. key: "DZYXTS",
  447. ratio: 1,
  448. fix: 0
  449. },
  450. {
  451. text: "正常运行",
  452. color: "#1C99FF",
  453. key: "ZCYXTS",
  454. ratio: 1,
  455. fix: 0
  456. },
  457. {
  458. text: "容量(直流)",
  459. color: "#9CA5A8",
  460. key: "capacityJl",
  461. ratio: 1000,
  462. fix: 2
  463. },
  464. {
  465. text: "容量(交流)",
  466. color: "#9CA5A8",
  467. key: "capacityZl",
  468. ratio: 1000,
  469. fix: 2
  470. },
  471. {
  472. text: "实时功率",
  473. color: "#9CA5A8",
  474. key: "SSZGL",
  475. ratio: 1000,
  476. fix: 2
  477. },
  478. {
  479. text: "日发电量",
  480. color: "#9CA5A8",
  481. key: "RFDL",
  482. ratio: 1000,
  483. fix: 2
  484. },
  485. {
  486. text: "日等效小时",
  487. color: "#9CA5A8",
  488. key: "RLYXS",
  489. ratio: 1,
  490. fix: 0
  491. },
  492. {
  493. text: "接入电压",
  494. color: "#9CA5A8",
  495. key: "JRDY",
  496. ratio: 1,
  497. fix: 0
  498. },
  499. ],
  500. subTitleData: [
  501. {
  502. text: "接入台数",
  503. color: "#ffffff",
  504. key: "JRTS",
  505. ratio: 1,
  506. fix: 0
  507. },
  508. {
  509. text: "通讯中断",
  510. color: "#606769",
  511. key: "TXZDTS",
  512. ratio: 1,
  513. fix: 0
  514. },
  515. {
  516. text: "设备停机",
  517. color: "#BA3237",
  518. key: "SBTJTS",
  519. ratio: 1,
  520. fix: 0
  521. },
  522. {
  523. text: "带障运行",
  524. color: "#E17D24",
  525. key: "DZYXTS",
  526. ratio: 1,
  527. fix: 0
  528. },
  529. {
  530. text: "正常运行",
  531. color: "#1C99FF",
  532. key: "ZCYXTS",
  533. ratio: 1,
  534. fix: 0
  535. },
  536. {
  537. text: "容量(直流)",
  538. color: "#9CA5A8",
  539. key: "capacityJl",
  540. ratio: 1000,
  541. fix: 2
  542. },
  543. {
  544. text: "容量(交流)",
  545. color: "#9CA5A8",
  546. key: "capacityZl",
  547. ratio: 1000,
  548. fix: 2
  549. },
  550. {
  551. text: "实时功率",
  552. color: "#9CA5A8",
  553. key: "SSZGL",
  554. ratio: 1000,
  555. fix: 2
  556. },
  557. {
  558. text: "日发电量",
  559. color: "#9CA5A8",
  560. key: "RFDL",
  561. ratio: 1000,
  562. fix: 2
  563. },
  564. {
  565. text: "日等效小时",
  566. color: "#9CA5A8",
  567. key: "RLYXS",
  568. ratio: 1,
  569. fix: 0
  570. },
  571. ],
  572. carCode: '',
  573. iconList: [
  574. 'icon-normal-power',
  575. 'icon-jx-downtime',
  576. 'icon-gz-downtime',
  577. 'icon-offline',
  578. ],
  579. stationSet: '',
  580. stsee: [],
  581. colorList: [
  582. "blue",
  583. "orange",
  584. "red",
  585. "gray",
  586. ],
  587. status: 0,
  588. totle: 0,
  589. company: '',
  590. pointList: [],
  591. titleArr: [],
  592. showMatrixList: [],
  593. current: 'all',
  594. timer: null,
  595. param: {},
  596. pointArr: {},
  597. displayMatrix: false,
  598. wind: '',
  599. chartsData: [],
  600. dialogVisible: false,
  601. chartsDatas: [],
  602. dialogDetail: false,
  603. chartName: '对比曲线',
  604. displaySunMatrix: false,
  605. detailsValue: [],
  606. setTit: [],
  607. params: {},
  608. pointArrs: [],
  609. data5: [],
  610. changeCom: '',
  611. setTarget: [],
  612. electTarget: [],
  613. electType: '',
  614. // 趋势对比曲线
  615. cilent: "", //区分点击事件触发条件
  616. }
  617. },
  618. created() {
  619. this.getPowerstationTypeList()
  620. },
  621. methods: {
  622. // 点击趋势对比
  623. handDialog(val, de, item, aname) {
  624. if (de !== '') {
  625. this.cilent = process.env.VUE_APP_DIALOG_POINT; //区分鼠标左右键点击
  626. this.$refs.tagChild.getXY(val.type, val.name, de, aname + item.aname, item[val.dataTime])
  627. } else {
  628. this.$message({
  629. type: 'warning',
  630. offset: 200,
  631. center: true,
  632. customClass: 's',
  633. message: '指标测点为空'
  634. });
  635. }
  636. event.preventDefault();
  637. },
  638. // 获取逆变器可选的指标
  639. async getPowerstationTypeList() {
  640. const data = await GetPowerstationTypeList({code: 'INUniformCodes'});
  641. if (data) {
  642. data.push({
  643. name: '转换率', type: 'ZHL', unite: 'zhUnit'
  644. })
  645. data.forEach(s => {
  646. s.value = s.type
  647. s.dataTime = s.type + 'Time'
  648. if (s.name != '转换率') {
  649. s.unite = s.type + '-UNIT'
  650. }
  651. })
  652. this.setTarget = this.deepClone(data)
  653. let list = [];
  654. this.electTarget = data.splice(0, 4)
  655. this.electTarget.forEach(s => {
  656. list.push(s.type)
  657. })
  658. this.electType = list
  659. }
  660. },
  661. // 切换title
  662. setTitle() {
  663. this.displaySet = true
  664. let arr = []
  665. this.electTarget.forEach(s => {
  666. arr.push(s.name)
  667. })
  668. this.checkList = arr
  669. },
  670. //点击取消重置选中项
  671. cancel() {
  672. this.displaySet = false
  673. },
  674. //点击确定,将checkList文字转为编码
  675. async tableRefresh() {
  676. if (this.checkList.length > 4) {
  677. this.$message({
  678. type: 'warning',
  679. offset: 200,
  680. center: true,
  681. message: '请选择4个指标',
  682. });
  683. } else if (this.checkList.length < 4) {
  684. this.$message({
  685. type: 'warning',
  686. offset: 200,
  687. center: true,
  688. message: '请选择4个指标',
  689. });
  690. } else if (this.checkList.length == 4) {
  691. var arr = []
  692. this.checkList.forEach(item => {
  693. const obj = this.setTarget.find(s => {
  694. return s.name == item
  695. })
  696. arr.push(obj);
  697. })
  698. this.electTarget = arr
  699. let list = [];
  700. arr.forEach(s => {
  701. list.push(s.type)
  702. })
  703. this.electType = list
  704. // this.current='all'
  705. // this.act=''
  706. this.getEquipmentsListGroupByCompany(this.carCode, this.param)
  707. this.displaySet = false
  708. }
  709. },
  710. change(val) {
  711. if (val.length > 4) {
  712. this.$message({
  713. type: 'warning',
  714. offset: 200,
  715. center: true,
  716. message: '最多选择4个指标',
  717. });
  718. this.checkList.pop()
  719. }
  720. },
  721. curveSwitchData(e) {
  722. this.value = e.showy
  723. var option = "{";
  724. this.detailsValue.forEach((value, index) => {
  725. option += "'" + value.name + "'" + ":" + value.showy + ","
  726. })
  727. option = option.substring(0, option.length - 1)
  728. option += "}";
  729. var json = eval("(" + option + ")");
  730. this.$refs.windChartCom.changDateVisible(json)
  731. },
  732. tagCellStyle({row, column, rowIndex, columnIndex}) {
  733. if (!row.showy) {
  734. return {color: '#525252', fontSize: '11px'};
  735. }
  736. if ((columnIndex == 0 || columnIndex == 1) && row.showy) {
  737. return {color: this.color[rowIndex], fontSize: '13px'};
  738. } else {
  739. return {padding: '6px 0px'};
  740. }
  741. },
  742. handleClickMatrix(val, type, name, index, valed, vale) {
  743. let obj = {
  744. namesed: 'name'
  745. }
  746. this.displaySunMatrix = true
  747. setTimeout(() => {
  748. this.$refs.lightDetial.render(obj, val.nemCode);
  749. }, 100);
  750. },
  751. async getPoint() {
  752. let pointList = []
  753. let arr = []
  754. if (this.company == undefined) {
  755. this.company = ''
  756. }
  757. const data = await GetCompanyListGroupByRegion({
  758. companyCode: this.company,
  759. stationType: this.status,
  760. stationCode: '',
  761. })
  762. if (data) {
  763. this.data5 = this.deepClone(data?.LIST2)
  764. for (const key in data.LIST1) {
  765. if (key !== 'JRTS' && key !== 'NAME' && key !== 'JRDY' && key !== 'ANAME' && key !== 'CMCODE' && key !== 'NEMCODE' && key !== 'capacityJl' && key !== 'capacityZl') {
  766. pointList.push(data.LIST1[key])
  767. }
  768. }
  769. data.LIST2?.forEach(item => {
  770. for (const key in item) {
  771. if (key !== 'CZBM ' && key !== 'zjCapacityJl ' && key !== 'orgType' && key !== 'CMCODE ' && key !== 'JRDY' && key !== 'CZLX' && key !== 'CZMC' && key !== 'CZAMC' && key !== 'JRTS' && key !== 'CMANAME' && key !== 'CMNAME' && key !== 'COMPNAME' && key !== 'capacityJl' && key !== 'capacityZl') {
  772. arr.push(item[key])
  773. }
  774. }
  775. })
  776. this.stsee = data.LIST2
  777. this.pointArr = JSON.parse(JSON.stringify(data))
  778. let param = arr.join('|') + '|' + pointList.join('|')
  779. this.param = param
  780. this.carCode = data?.LIST2[0]?.CMCODE
  781. this.getEquipmentsListGroupByCompany(this.carCode, param)
  782. }
  783. },
  784. handleChange(val) {
  785. let arr = []
  786. let arr2 = 0
  787. if (this.data5.length != 0) {
  788. val.forEach(l => {
  789. arr.push(this.data5[l - 1].CMCODE)
  790. })
  791. this.carCode = arr.toString()
  792. arr.forEach(z => {
  793. this.setTit.forEach(s => {
  794. if (z == s.CMCODE) {
  795. arr2++
  796. }
  797. })
  798. })
  799. if (arr.length != arr2) {
  800. this.getEquipmentsListGroupByCompany(this.carCode, this.param)
  801. }
  802. }
  803. },
  804. async getEquipmentsListGroupByCompany(val, par) {
  805. let pointList = []
  806. if (this.company == '' || this.company.length == 1) {
  807. this.changeCom = val
  808. } else {
  809. this.changeCom = this.company
  810. }
  811. const data = await GetEquipmentsListGroupByCompany({
  812. companyCode: this.changeCom,
  813. stationType: this.status,
  814. stationCode: this.stationSet,
  815. })
  816. if (data) {
  817. let arr3 = []
  818. this.electTarget.forEach(s => {
  819. arr3.push(s.value)
  820. })
  821. let arr2 = ['SBZT', 'AIG007', 'AIG010']
  822. let arr = arr3.concat(arr2);
  823. data.LISTS?.forEach(items => {
  824. items.list?.forEach(item => {
  825. for (const key in item) {
  826. if (key !== 'CZBM ' && key !== 'CMCODE' && key !== 'JRDY' && key !== 'CZLX' && key !== 'CZMC' && key != 'CZAMC' && key != 'JRDYUNIT' && key !== 'JRTS' && key != 'COMPNAME' && key != 'capacityJl' && key != 'capacityZl') {
  827. if (key == 'lists') {
  828. item.lists.forEach(val => {
  829. arr.forEach(z => {
  830. for (const keys in val) {
  831. if (keys === z) {
  832. pointList.push(val[keys])
  833. }
  834. }
  835. })
  836. })
  837. } else {
  838. pointList.push(item[key])
  839. }
  840. }
  841. }
  842. })
  843. })
  844. this.setTit = data.LISTS
  845. this.pointArrs = JSON.parse(JSON.stringify(data))
  846. let param = pointList.join('|')
  847. this.params = param + par
  848. this.GetRtValuesByTagName(this.params)
  849. }
  850. },
  851. async GetRtValuesByTagName(param) {
  852. let data = JSON.parse(JSON.stringify(this.pointArr))
  853. let datas = JSON.parse(JSON.stringify(this.pointArrs))
  854. datas.LISTS.forEach((s, ind) => {
  855. data.LIST2?.forEach((z, index) => {
  856. if (z.CMCODE == s.CMCODE) {
  857. data.LIST2[index].LISTS = datas.LISTS[ind].list
  858. }
  859. })
  860. })
  861. const lists = await GetRtValuesByTagName(param)
  862. this.dataDeal(data.LIST1, data?.LIST2, lists)
  863. clearInterval(this.timer);
  864. this.timer = null;
  865. this.timer = setInterval(() => {
  866. this.GetRtValuesByTagName(param)
  867. }, rtDataRefreshTime);
  868. },
  869. dataDeal(titleList, matrixList, data) {
  870. for (const key in titleList) {
  871. titleList[key] = data.find(val => val.tagName === titleList[key]) ? data.find(val => val.tagName === titleList[key])?.value : titleList[key]
  872. }
  873. let arr3 = []
  874. this.electTarget.forEach(s => {
  875. arr3.push(s.value)
  876. })
  877. let arr2 = ['SBZT', 'AIG007', 'AIG010']
  878. let arr = arr3.concat(arr2);
  879. matrixList?.forEach(items => {
  880. for (const key in items) {
  881. if (key !== 'CMCODE') {
  882. items[key] = data.find(val => val.tagName === items[key]) ? data.find(val => val.tagName === items[key])?.value : items[key]
  883. }
  884. }
  885. items.LISTS?.forEach(item => {
  886. for (const key in item) {
  887. if (key === 'lists') {
  888. item[key].forEach(val => {
  889. arr.forEach(d => {
  890. let dataValue = data.find(vals => vals.tagName === val[d])
  891. if (dataValue) {
  892. if (d === 'SBZT') {
  893. val[d + 'tagName'] = dataValue?.tagName
  894. val[d + 'Time'] = dataValue?.dateTime
  895. val[d] = dataValue?.value
  896. } else {
  897. val[d + 'tagName'] = dataValue?.tagName
  898. val[d + 'Time'] = dataValue?.dateTime
  899. val[d + 'Value'] = dataValue?.value
  900. }
  901. }
  902. })
  903. val.ZHLValue = (val.AIG007 / val.AIG010) * 100 ? (val.AIG007 / val.AIG010) * 100 : ''
  904. val.ZHLdateTime = val.AIG010dateTime
  905. val.zhUnit = '%'
  906. })
  907. } else {
  908. if (key !== "CZBM") {
  909. item[key] = data.find(val => val.tagName === item[key]) ? data.find(val => val.tagName === item[key])?.value : item[key]
  910. }
  911. }
  912. }
  913. })
  914. })
  915. this.titleArr = titleList
  916. this.matrixList = matrixList
  917. this.handleClickWind()
  918. },
  919. handleClickWind() {
  920. if (this.matrixList != undefined) {
  921. this.showMatrixList = JSON.parse(JSON.stringify(this.matrixList))
  922. }
  923. if (this.current !== 'all') {
  924. // this.changeCom=this.company
  925. // this.activeNames=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
  926. this.showMatrixList.forEach(item => {
  927. item.list = []
  928. })
  929. switch (this.current) {
  930. case 'dj':
  931. this.matrixList?.forEach((val, index) => {
  932. val.LISTS?.forEach((ls, indexe) => {
  933. this.showMatrixList[index].LISTS[indexe].lists = []
  934. ls.lists?.forEach(item => {
  935. if (item.SBZT == '') {
  936. item.SBZT = 3
  937. }
  938. if (Number(item.SBZT.toFixed(0)) === 3) {
  939. this.showMatrixList[index].LISTS[indexe].lists.push(item)
  940. }
  941. })
  942. })
  943. })
  944. break;
  945. case 'yx':
  946. this.matrixList?.forEach((val, index) => {
  947. val.LISTS?.forEach((ls, indexe) => {
  948. this.showMatrixList[index].LISTS[indexe].lists = []
  949. ls.lists.forEach(item => {
  950. if (item.SBZT == '') {
  951. item.SBZT = 3
  952. }
  953. if (Number(item.SBZT.toFixed(0)) === 2) {
  954. this.showMatrixList[index].LISTS[indexe].lists.push(item)
  955. }
  956. })
  957. })
  958. })
  959. break;
  960. case 'gz':
  961. this.matrixList?.forEach((val, index) => {
  962. val.LISTS?.forEach((ls, indexe) => {
  963. this.showMatrixList[index].LISTS[indexe].lists = []
  964. ls.lists.forEach(item => {
  965. if (item.SBZT == '') {
  966. item.SBZT = 3
  967. }
  968. if (Number(item.SBZT.toFixed(0)) === 1) {
  969. this.showMatrixList[index].LISTS[indexe].lists.push(item)
  970. }
  971. })
  972. })
  973. })
  974. break;
  975. case 'jx':
  976. this.matrixList?.forEach((val, index) => {
  977. val.LISTS?.forEach((ls, indexe) => {
  978. this.showMatrixList[index].LISTS[indexe].lists = []
  979. ls.lists.forEach(item => {
  980. if (item.SBZT == '') {
  981. item.SBZT = 3
  982. }
  983. if (Number(item.SBZT.toFixed(0)) === 0) {
  984. this.showMatrixList[index].LISTS[indexe].lists.push(item)
  985. }
  986. })
  987. })
  988. })
  989. break;
  990. }
  991. }
  992. },
  993. handleClick(val) {
  994. this.act = val
  995. this.current = val
  996. this.handleClickWind()
  997. },
  998. onChange({type, companys, stations, area}) {
  999. this.firstRender(type, companys, stations, area, 'all')
  1000. },
  1001. firstRender(val, company, stationSet, activeNode, a) {
  1002. this.current = 'all'
  1003. this.status = val
  1004. this.company = company
  1005. this.stationSet = stationSet;
  1006. if (company != "" || this.company.length > 1) {
  1007. this.activeNames = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
  1008. } else {
  1009. this.activeNames = 1
  1010. }
  1011. this.getPoint()
  1012. },
  1013. handleCurveClicks(index, length) {
  1014. if (length >= 7) {
  1015. let s = this.deepClone(this.stsee[index]);
  1016. let y = this.deepClone(this.companyStse)
  1017. y?.forEach(vals => {
  1018. for (let key in vals) {
  1019. for (let k in s) {
  1020. if (vals[key] == k) {
  1021. vals[key] = s[k]
  1022. }
  1023. }
  1024. }
  1025. })
  1026. this.$refs.child.openCurvDatas(y)
  1027. }
  1028. },
  1029. handleCurveClick(index, vale, indexs, leng) {
  1030. if (leng >= 7 && leng != 10) {
  1031. let s;
  1032. if (this.setTit.length == 1) {
  1033. s = this.deepClone(this.setTit[0].list[indexs])
  1034. } else {
  1035. s = this.deepClone(this.setTit[index].list[indexs])
  1036. }
  1037. let y = this.deepClone(this.stse)
  1038. y?.forEach(vals => {
  1039. for (let key in vals) {
  1040. for (let k in s) {
  1041. if (vals[key] == k) {
  1042. vals[key] = s[k]
  1043. }
  1044. }
  1045. }
  1046. })
  1047. this.stsed = y
  1048. this.$refs.child.openCurvDatas(this.stsed)
  1049. }
  1050. },
  1051. handleDetailClick(index, indexe, leng) {
  1052. let s;
  1053. if (this.setTit.length == 1) {
  1054. s = this.deepClone(this.setTit[0].list[index].lists[indexe])
  1055. } else {
  1056. s = this.deepClone(this.setTit[leng].list[index].lists[indexe])
  1057. }
  1058. let y = this.deepClone(this.electTarget)
  1059. y?.forEach((val, ine) => {
  1060. if (val.name == '转换率') {
  1061. y.splice(ine)
  1062. }
  1063. val.statiomName = val.name
  1064. val.sts = val.type
  1065. val.stse = 'stse'
  1066. for (let key in val) {
  1067. for (let k in s) {
  1068. if (val[key] == k) {
  1069. val[key] = s[k]
  1070. } else if (val[key] == 'stse') {
  1071. if (this.setTit.length == 1) {
  1072. val[key] = this.setTit[0].list[index].CZAMC + s.name
  1073. } else {
  1074. val[key] = this.setTit[leng].list[index].CZAMC + s.name
  1075. }
  1076. }
  1077. }
  1078. }
  1079. })
  1080. this.$refs.child.openCurvDatas(y, 2)
  1081. },
  1082. deepClone(ob) {
  1083. var obj = JSON.stringify(ob)
  1084. var objClone = JSON.parse(obj)
  1085. return objClone
  1086. },
  1087. },
  1088. unmounted() {
  1089. clearInterval(this.timer);
  1090. this.timer = null;
  1091. },
  1092. }
  1093. </script>
  1094. <style lang="less" scoped>
  1095. /deep/ .el-collapse {
  1096. div {
  1097. &:first-of-type {
  1098. margin-top: 0;
  1099. }
  1100. }
  1101. }
  1102. .matrixs {
  1103. /deep/ .el-icon-arrow-right:before {
  1104. content: '';
  1105. }
  1106. /deep/ .el-icon-arrow-right {
  1107. width: 22px;
  1108. height: 17px;
  1109. top: 17px;
  1110. background: url("../../../../assets/img/images/zuLeft.png") no-repeat;
  1111. }
  1112. /deep/ .el-collapse-item__arrow.is-active {
  1113. transform: rotate(0);
  1114. top: 15px;
  1115. background: url("../../../../assets/img/images/zuTop.png") no-repeat;
  1116. }
  1117. }
  1118. .simpleMatrix {
  1119. padding: 0 18px;
  1120. height: 100%;
  1121. }
  1122. .footerButton {
  1123. position: absolute;
  1124. right: 20px;
  1125. bottom: 5px;
  1126. .el-button:first-child {
  1127. background-color: rgba(0, 70, 199, 0.2) !important;
  1128. color: #B3B3B3;
  1129. border-color: transparent;
  1130. }
  1131. }
  1132. .unpaid_left {
  1133. position: absolute;
  1134. right: 113px;
  1135. top: 0;
  1136. width: 1px;
  1137. height: 61px;
  1138. background: #000000;
  1139. }
  1140. .unpaid_lefts {
  1141. position: absolute;
  1142. right: 111px;
  1143. top: 0;
  1144. width: 1px;
  1145. height: 61px;
  1146. background: rgba(28, 153, 255, 0.2);
  1147. }
  1148. .unpaid-tit {
  1149. position: absolute;
  1150. right: 2px;
  1151. top: .5px;
  1152. width: 113px !important;
  1153. border-radius: 0 4px 4px 0;
  1154. height: 1px !important;
  1155. background: linear-gradient(to left, rgba(28, 153, 255, .8), rgba(0, 70, 199, .05));
  1156. }
  1157. .unpaid-tits {
  1158. position: absolute;
  1159. right: 2px;
  1160. bottom: 3px;
  1161. width: 113px !important;
  1162. border-radius: 0 4px 4px 0;
  1163. height: 1px !important;
  1164. background: linear-gradient(to left, rgba(28, 153, 255, .8), rgba(0, 70, 199, .05));
  1165. }
  1166. .updownTits {
  1167. position: absolute;
  1168. right: 0;
  1169. top: 0;
  1170. color: #1C99FF;
  1171. font-size: 14px;
  1172. padding: 0 !important;
  1173. width: 114px !important;
  1174. height: 62px !important;
  1175. font-family: Microsoft YaHei;
  1176. border-radius: 0 4px 4px 0;
  1177. //border: 1px solid rgba(225, 225, 225, .3) !important;
  1178. border-right: 1px solid rgba(28, 153, 255, .8) !important;
  1179. background: linear-gradient(to right, rgba(28, 153, 255, 0), rgba(28, 153, 255, .1), rgba(28, 108, 255, .3));
  1180. }
  1181. .lineContent {
  1182. width: 1px;
  1183. height: 51px;
  1184. background: #333333;
  1185. margin-left: -35px;
  1186. margin-right: 52px;
  1187. position: relative;
  1188. &:after {
  1189. content: '';
  1190. position: absolute;
  1191. top: -3px;
  1192. left: -3px;
  1193. width: 7px;
  1194. height: 7px;
  1195. border: 1px solid #333333;
  1196. }
  1197. &:before {
  1198. content: '';
  1199. position: absolute;
  1200. bottom: -3px;
  1201. left: -3px;
  1202. width: 7px;
  1203. height: 7px;
  1204. border: 1px solid #333333;
  1205. }
  1206. }
  1207. ::v-deep .el-collapse {
  1208. border: none !important;
  1209. .el-icon-arrow-right {
  1210. margin: 0;
  1211. }
  1212. .el-collapse-item__arrow {
  1213. position: absolute;
  1214. left: 132px;
  1215. color: #1C99FF !important;
  1216. }
  1217. .el-collapse-item__content {
  1218. padding-bottom: 1px;
  1219. }
  1220. .el-collapse-item__wrap {
  1221. background-color: transparent !important;
  1222. border: none !important;
  1223. }
  1224. .el-collapse-item__header {
  1225. cursor: auto;
  1226. background-color: transparent !important;
  1227. border: none !important;
  1228. height: 48px !important;
  1229. margin-bottom: 5px !important;
  1230. line-height: 48px !important;
  1231. }
  1232. .el-collapse-item {
  1233. }
  1234. }
  1235. .unpaid {
  1236. display: flex;
  1237. flex-direction: row;
  1238. align-items: center;
  1239. width: 39.5% !important;
  1240. height: 65px !important;
  1241. position: relative;
  1242. right: 1%;
  1243. font-size: 14px;
  1244. ul {
  1245. width: 100%;
  1246. .unpaid_num {
  1247. width: 99%;
  1248. height: 35px;
  1249. line-height: 18px;
  1250. display: flex;
  1251. justify-content: space-between;
  1252. div {
  1253. width: 111px;
  1254. text-align: center;
  1255. height: 11px;
  1256. margin-left: 2px;
  1257. font-size: 16px;
  1258. text-align: center;
  1259. font-family: 'Bicubik';
  1260. color: #FFFFFF;
  1261. }
  1262. }
  1263. .unpaid_name {
  1264. width: 100%;
  1265. height: 31px;
  1266. line-height: 31px;
  1267. display: flex;
  1268. justify-content: space-between;
  1269. div {
  1270. width: 111px;
  1271. height: 31px;
  1272. margin-left: 2px;
  1273. text-align: center;
  1274. }
  1275. }
  1276. }
  1277. .unpaid-item1 {
  1278. width: 20%;
  1279. height: 80%;
  1280. margin-right: 5px;
  1281. .percent {
  1282. width: 100%;
  1283. height: 34%;
  1284. display: flex;
  1285. align-items: center;
  1286. justify-content: center;
  1287. border-top: 1px solid #0A214C;
  1288. border-left: 1px solid #0A214C;
  1289. border-right: 1px solid #0A214C;
  1290. background-color: rgba(0, 70, 199, 0.35);
  1291. font-size: 14px;
  1292. font-family: Arial;
  1293. font-weight: 400;
  1294. color: #FFFFFF;
  1295. }
  1296. .nums {
  1297. width: 100%;
  1298. height: 33%;
  1299. display: flex;
  1300. flex-direction: row;
  1301. align-items: center;
  1302. justify-content: center;
  1303. border-left: 1px solid #0A214C;
  1304. border-right: 1px solid #0A214C;
  1305. border-bottom: 1px solid #0A214C;
  1306. background-color: rgba(0, 70, 199, .15);
  1307. font-size: 16px;
  1308. font-family: Arial;
  1309. font-weight: 400;
  1310. color: #FFFFFF;
  1311. padding: 0 8px;
  1312. }
  1313. .progress-item {
  1314. width: 24%;
  1315. height: 3px;
  1316. background-color: #05BB4C;
  1317. margin-right: 2px;
  1318. }
  1319. }
  1320. }
  1321. .el-cole {
  1322. width: 134px;
  1323. height: 65px;
  1324. .yuan:first-child {
  1325. height: 31px;
  1326. width: 135px;
  1327. margin-left: -10px;
  1328. margin-top: -3px;
  1329. }
  1330. .yuan:last-child {
  1331. height: 31px;
  1332. width: 135px;
  1333. margin-left: -10px;
  1334. margin-top: -3px;
  1335. }
  1336. }
  1337. .el-cole:first-child {
  1338. display: flex;
  1339. width: 180px;
  1340. flex: unset;
  1341. color: #B3B3B3;
  1342. font-family: 思源黑体;
  1343. img {
  1344. margin-right: 20px;
  1345. margin-bottom: 10px;
  1346. }
  1347. div {
  1348. margin-top: 10px;
  1349. font-size: 14px;
  1350. }
  1351. p {
  1352. font-size: 16px;
  1353. font-family: Bicubik;
  1354. color: #FFFFFF;
  1355. width: 50px;
  1356. text-align: center;
  1357. position: absolute;
  1358. top: 31px;
  1359. left: 72px;
  1360. margin-top: 2px;
  1361. }
  1362. }
  1363. .el-cole:last-child {
  1364. padding-left: 0;
  1365. }
  1366. .el-cole:not(:first-child) {
  1367. flex: 1;
  1368. color: #1C99FF;
  1369. text-align: center;
  1370. .active-b {
  1371. width: 96px;
  1372. height: 52px;
  1373. padding: 6px;
  1374. margin-top: -5px;
  1375. padding-left: 10px;
  1376. position: relative;
  1377. border: 1px solid transparent;
  1378. .yuan {
  1379. font-family: AgencyFB-Reg;
  1380. line-height: 20px;
  1381. display: flex;
  1382. > p:first-of-type {
  1383. width: 13px;
  1384. height: 13px;
  1385. border: 1px solid transparent;
  1386. position: absolute;
  1387. top: 9px;
  1388. left: 10px;
  1389. }
  1390. > p:last-of-type {
  1391. margin-left: 20px;
  1392. }
  1393. .circle {
  1394. display: inline-block;
  1395. width: 5px;
  1396. height: 5px;
  1397. vertical-align: middle;
  1398. margin-right: 10px;
  1399. position: absolute;
  1400. top: 3.5px;
  1401. left: -4px;
  1402. }
  1403. }
  1404. .disCircles {
  1405. position: relative;
  1406. }
  1407. > div:last-child {
  1408. font-size: 16px;
  1409. font-family: Bicubik;
  1410. text-align: right;
  1411. padding-right: 6px;
  1412. }
  1413. }
  1414. }
  1415. .checkIcon {
  1416. position: absolute;
  1417. left: 50px;
  1418. top: 8px;
  1419. font-size: 20px;
  1420. color: #929396
  1421. }
  1422. .matrix-body {
  1423. display: flex;
  1424. flex-direction: column;
  1425. height: 100%;
  1426. margin-top: 10px;
  1427. .body-title {
  1428. display: flex;
  1429. flex-direction: row;
  1430. align-items: center;
  1431. width: 100%;
  1432. position: relative;
  1433. //padding-top: 10px;
  1434. height: 64px;
  1435. border-radius: 4px;
  1436. margin-bottom: 5px;
  1437. background-color: rgba(0, 0, 0, .45);
  1438. .title-name {
  1439. display: flex;
  1440. flex-direction: row;
  1441. align-items: center;
  1442. width: 18%;
  1443. height: 100%;
  1444. .imgs {
  1445. display: flex;
  1446. flex-direction: row;
  1447. align-items: center;
  1448. height: 100%;
  1449. margin-left: 55px;
  1450. margin-bottom: 10px;
  1451. }
  1452. .base-num {
  1453. display: flex;
  1454. flex-direction: column;
  1455. align-items: center;
  1456. justify-content: center;
  1457. cursor: pointer;
  1458. margin-left: 40px;
  1459. .nums {
  1460. font-size: 16px;
  1461. font-family: Bicubik;
  1462. font-weight: 400;
  1463. color: #FFFFFF;
  1464. }
  1465. .base-name {
  1466. font-size: 14px;
  1467. font-family: Microsoft YaHei;
  1468. font-weight: 400;
  1469. color: #B3B3B3;
  1470. margin-top: 10px;
  1471. }
  1472. }
  1473. .all_img {
  1474. width: 20px;
  1475. position: relative;
  1476. left: -34px;
  1477. top: 1px;
  1478. margin-right: 10px;
  1479. animation: move 1s infinite linear;
  1480. }
  1481. .qty_img {
  1482. position: relative;
  1483. left: -41px;
  1484. top: 1px;
  1485. animation: move 1s infinite linear;
  1486. }
  1487. @keyframes move {
  1488. 0% {
  1489. top: 0px;
  1490. }
  1491. 20% {
  1492. top: -1px
  1493. }
  1494. 40% {
  1495. top: -2px
  1496. }
  1497. 80% {
  1498. top: -1px
  1499. }
  1500. 100% {
  1501. top: 0px
  1502. }
  1503. }
  1504. }
  1505. .base-inf {
  1506. display: flex;
  1507. flex-direction: row;
  1508. align-items: center;
  1509. height: 100%;
  1510. width: 34%;
  1511. font-size: 14px;
  1512. margin-left: -14px;
  1513. .status {
  1514. width: 84%;
  1515. display: flex;
  1516. flex-direction: row;
  1517. align-items: center;
  1518. height: 80%;
  1519. }
  1520. .title-status {
  1521. display: flex;
  1522. flex-direction: column;
  1523. width: 15%;
  1524. height: 100%;
  1525. padding-right: 5px;
  1526. cursor: pointer;
  1527. &.green {
  1528. .status-first {
  1529. width: 100%;
  1530. height: 34%;
  1531. display: flex;
  1532. flex-direction: row;
  1533. align-items: center;
  1534. justify-content: space-between;
  1535. background-color: rgba(5, 187, 76, .28);
  1536. border-top: 1px solid #0B3D26;
  1537. border-left: 1px solid #0B3D26;
  1538. border-right: 1px solid #0B3D26;
  1539. .left {
  1540. margin-left: 6px;
  1541. font-size: 14px;
  1542. font-family: Microsoft YaHei;
  1543. font-weight: 400;
  1544. color: #05BB4C;
  1545. }
  1546. .right {
  1547. margin-right: 6px;
  1548. font-size: 16px;
  1549. font-family: Arial;
  1550. font-weight: 400;
  1551. color: #05BB4C;
  1552. }
  1553. }
  1554. .status-end {
  1555. width: 100%;
  1556. height: 33%;
  1557. display: flex;
  1558. flex-direction: row;
  1559. align-items: center;
  1560. justify-content: space-between;
  1561. background-color: rgba(5, 187, 76, .16);
  1562. border-left: 1px solid #0B3D26;
  1563. border-right: 1px solid #0B3D26;
  1564. border-bottom: 1px solid #0B3D26;
  1565. .left {
  1566. margin-left: 6px;
  1567. font-size: 12px;
  1568. font-family: Microsoft YaHei;
  1569. font-weight: 400;
  1570. color: #05BB4C;
  1571. }
  1572. .right {
  1573. margin-right: 6px;
  1574. font-size: 14px;
  1575. font-family: Arial;
  1576. font-weight: 400;
  1577. color: #05BB4C;
  1578. }
  1579. }
  1580. .right {
  1581. margin-right: 6px;
  1582. }
  1583. }
  1584. &.blue {
  1585. .status-first {
  1586. width: 100%;
  1587. height: 34%;
  1588. display: flex;
  1589. flex-direction: row;
  1590. align-items: center;
  1591. justify-content: space-between;
  1592. background-color: rgba(0, 70, 199, .48);
  1593. border-top: 1px solid #1E2341;
  1594. border-left: 1px solid #1E2341;
  1595. border-right: 1px solid #1E2341;
  1596. .left {
  1597. margin-left: 6px;
  1598. font-size: 14px;
  1599. font-family: Microsoft YaHei;
  1600. font-weight: 400;
  1601. color: #1C99FF;
  1602. }
  1603. .right {
  1604. margin-right: 6px;
  1605. font-size: 16px;
  1606. font-family: Arial;
  1607. font-weight: 400;
  1608. color: #1C99FF;
  1609. }
  1610. }
  1611. .status-end {
  1612. width: 100%;
  1613. height: 33%;
  1614. display: flex;
  1615. flex-direction: row;
  1616. align-items: center;
  1617. justify-content: space-between;
  1618. background-color: rgba(0, 70, 199, .16);
  1619. border-left: 1px solid #1E2341;
  1620. border-right: 1px solid #1E2341;
  1621. border-bottom: 1px solid #1E2341;
  1622. .left {
  1623. margin-left: 6px;
  1624. font-size: 12px;
  1625. font-family: Microsoft YaHei;
  1626. font-weight: 400;
  1627. color: #1C99FF;
  1628. }
  1629. .right {
  1630. margin-right: 6px;
  1631. font-size: 14px;
  1632. font-family: Arial;
  1633. font-weight: 400;
  1634. color: #1C99FF;
  1635. }
  1636. }
  1637. .right {
  1638. margin-right: 6px;
  1639. }
  1640. }
  1641. &.pink {
  1642. .status-first {
  1643. width: 100%;
  1644. height: 34%;
  1645. display: flex;
  1646. flex-direction: row;
  1647. align-items: center;
  1648. justify-content: space-between;
  1649. background-color: rgba(197, 48, 200, .28);
  1650. border-top: 1px solid #3E1A48;
  1651. border-left: 1px solid #3E1A48;
  1652. border-right: 1px solid #3E1A48;
  1653. .left {
  1654. margin-left: 6px;
  1655. font-size: 14px;
  1656. font-family: Microsoft YaHei;
  1657. font-weight: 400;
  1658. color: #C530C8;
  1659. }
  1660. .right {
  1661. margin-right: 6px;
  1662. font-size: 16px;
  1663. font-family: Arial;
  1664. font-weight: 400;
  1665. color: #C530C8;
  1666. }
  1667. }
  1668. .status-end {
  1669. width: 100%;
  1670. height: 33%;
  1671. display: flex;
  1672. flex-direction: row;
  1673. align-items: center;
  1674. justify-content: space-between;
  1675. background-color: rgba(197, 48, 200, .16);
  1676. border-left: 1px solid #3E1A48;
  1677. border-right: 1px solid #3E1A48;
  1678. border-bottom: 1px solid #3E1A48;
  1679. .left {
  1680. margin-left: 6px;
  1681. font-size: 12px;
  1682. font-family: Microsoft YaHei;
  1683. font-weight: 400;
  1684. color: #C530C8;
  1685. }
  1686. .right {
  1687. margin-right: 6px;
  1688. font-size: 14px;
  1689. font-family: Arial;
  1690. font-weight: 400;
  1691. color: #C530C8;
  1692. }
  1693. }
  1694. .right {
  1695. margin-right: 6px;
  1696. }
  1697. }
  1698. &.red {
  1699. .status-first {
  1700. width: 100%;
  1701. height: 34%;
  1702. display: flex;
  1703. flex-direction: row;
  1704. align-items: center;
  1705. justify-content: space-between;
  1706. background-color: rgba(186, 50, 55, .28);
  1707. border-top: 1px solid #3C1C1F;
  1708. border-left: 1px solid #3C1C1F;
  1709. border-right: 1px solid #3C1C1F;
  1710. .left {
  1711. margin-left: 6px;
  1712. font-size: 14px;
  1713. font-family: Microsoft YaHei;
  1714. font-weight: 400;
  1715. color: #BA3237;
  1716. }
  1717. .right {
  1718. margin-right: 6px;
  1719. font-size: 16px;
  1720. font-family: Arial;
  1721. font-weight: 400;
  1722. color: #BA3237;
  1723. }
  1724. }
  1725. .status-end {
  1726. width: 100%;
  1727. height: 33%;
  1728. display: flex;
  1729. flex-direction: row;
  1730. align-items: center;
  1731. justify-content: space-between;
  1732. background-color: rgba(186, 50, 55, .16);
  1733. border-left: 1px solid #3C1C1F;
  1734. border-right: 1px solid #3C1C1F;
  1735. border-bottom: 1px solid #3C1C1F;
  1736. .left {
  1737. margin-left: 6px;
  1738. font-size: 12px;
  1739. font-family: Microsoft YaHei;
  1740. font-weight: 400;
  1741. color: #BA3237;
  1742. }
  1743. .right {
  1744. margin-right: 6px;
  1745. font-size: 14px;
  1746. font-family: Arial;
  1747. font-weight: 400;
  1748. color: #BA3237;
  1749. }
  1750. }
  1751. .right {
  1752. margin-right: 6px;
  1753. }
  1754. }
  1755. &.orange {
  1756. .status-first {
  1757. width: 100%;
  1758. height: 34%;
  1759. display: flex;
  1760. flex-direction: row;
  1761. align-items: center;
  1762. justify-content: space-between;
  1763. background-color: rgba(225, 125, 36, .28);
  1764. border-top: 1px solid #46301A;
  1765. border-left: 1px solid #46301A;
  1766. border-right: 1px solid #46301A;
  1767. .left {
  1768. margin-left: 6px;
  1769. font-size: 14px;
  1770. font-family: Microsoft YaHei;
  1771. font-weight: 400;
  1772. color: #E17D24;
  1773. }
  1774. .right {
  1775. margin-right: 6px;
  1776. font-size: 16px;
  1777. font-family: Arial;
  1778. font-weight: 400;
  1779. color: #E17D24;
  1780. }
  1781. }
  1782. .status-end {
  1783. width: 100%;
  1784. height: 33%;
  1785. display: flex;
  1786. flex-direction: row;
  1787. align-items: center;
  1788. justify-content: space-between;
  1789. background-color: rgba(225, 125, 36, .16);
  1790. border-left: 1px solid #46301A;
  1791. border-right: 1px solid #46301A;
  1792. border-bottom: 1px solid #46301A;
  1793. .left {
  1794. margin-left: 6px;
  1795. font-size: 12px;
  1796. font-family: Microsoft YaHei;
  1797. font-weight: 400;
  1798. color: #E17D24;
  1799. }
  1800. .right {
  1801. margin-right: 6px;
  1802. font-size: 14px;
  1803. font-family: Arial;
  1804. font-weight: 400;
  1805. color: #E17D24;
  1806. }
  1807. }
  1808. .right {
  1809. margin-right: 6px;
  1810. }
  1811. }
  1812. &.gray {
  1813. .status-first {
  1814. width: 100%;
  1815. height: 34%;
  1816. display: flex;
  1817. flex-direction: row;
  1818. align-items: center;
  1819. justify-content: space-between;
  1820. background-color: rgba(96, 103, 105, .28);
  1821. border-top: 1px solid #262B32;
  1822. border-left: 1px solid #262B32;
  1823. border-right: 1px solid #262B32;
  1824. .left {
  1825. margin-left: 6px;
  1826. font-size: 14px;
  1827. font-family: Microsoft YaHei;
  1828. font-weight: 400;
  1829. color: #606769;
  1830. }
  1831. .right {
  1832. margin-right: 6px;
  1833. font-size: 16px;
  1834. font-family: Arial;
  1835. font-weight: 400;
  1836. color: #606769;
  1837. }
  1838. }
  1839. .status-end {
  1840. width: 100%;
  1841. height: 33%;
  1842. display: flex;
  1843. flex-direction: row;
  1844. align-items: center;
  1845. justify-content: space-between;
  1846. background-color: rgba(96, 103, 105, .16);
  1847. border-left: 1px solid #262B32;
  1848. border-right: 1px solid #262B32;
  1849. border-bottom: 1px solid #262B32;
  1850. .left {
  1851. margin-left: 6px;
  1852. font-size: 12px;
  1853. font-family: Microsoft YaHei;
  1854. font-weight: 400;
  1855. color: #606769;
  1856. }
  1857. .right {
  1858. margin-right: 6px;
  1859. font-size: 14px;
  1860. font-family: Arial;
  1861. font-weight: 400;
  1862. color: #606769;
  1863. }
  1864. }
  1865. .right {
  1866. margin-right: 6px;
  1867. }
  1868. }
  1869. &.write {
  1870. .status-first {
  1871. width: 100%;
  1872. height: 34%;
  1873. display: flex;
  1874. flex-direction: row;
  1875. align-items: center;
  1876. justify-content: space-between;
  1877. background-color: rgba(255, 255, 255, .28);
  1878. border-top: 1px solid #3F4349;
  1879. border-left: 1px solid #3F4349;
  1880. border-right: 1px solid #3F4349;
  1881. .left {
  1882. margin-left: 6px;
  1883. font-size: 14px;
  1884. font-family: Microsoft YaHei;
  1885. font-weight: 400;
  1886. color: #FFFFFF;
  1887. }
  1888. .right {
  1889. margin-right: 6px;
  1890. font-size: 16px;
  1891. font-family: Arial;
  1892. font-weight: 400;
  1893. color: #FFFFFF;
  1894. }
  1895. }
  1896. .status-end {
  1897. width: 100%;
  1898. height: 33%;
  1899. display: flex;
  1900. flex-direction: row;
  1901. align-items: center;
  1902. justify-content: space-between;
  1903. background-color: rgba(255, 255, 255, .16);
  1904. border-left: 1px solid #3F4349;
  1905. border-right: 1px solid #3F4349;
  1906. border-bottom: 1px solid #3F4349;
  1907. .left {
  1908. margin-left: 6px;
  1909. font-size: 12px;
  1910. font-family: Microsoft YaHei;
  1911. font-weight: 400;
  1912. color: #FFFFFF;
  1913. }
  1914. .right {
  1915. margin-right: 6px;
  1916. font-size: 14px;
  1917. font-family: Arial;
  1918. font-weight: 400;
  1919. color: #FFFFFF;
  1920. }
  1921. }
  1922. .right {
  1923. margin-right: 6px;
  1924. }
  1925. }
  1926. }
  1927. }
  1928. .unpaid {
  1929. display: flex;
  1930. flex-direction: row;
  1931. align-items: center;
  1932. width: 40%;
  1933. margin-top: 15px;
  1934. height: 100%;
  1935. .unpaid-item {
  1936. width: 20%;
  1937. height: 80%;
  1938. margin-right: 5px;
  1939. padding: 0 10px;
  1940. .unpaid-img {
  1941. width: 115px;
  1942. height: 39px;
  1943. }
  1944. .unpaid-value {
  1945. width: 90%;
  1946. display: flex;
  1947. flex-direction: row-reverse;
  1948. font-size: 18px;
  1949. font-family: Arial;
  1950. font-weight: 400;
  1951. color: #FF9F1F;
  1952. margin-top: -20px;
  1953. }
  1954. .unpaid-name {
  1955. width: 90%;
  1956. display: flex;
  1957. flex-direction: row-reverse;
  1958. font-size: 14px;
  1959. font-family: Microsoft YaHei;
  1960. font-weight: 400;
  1961. color: #B3B3B3;
  1962. }
  1963. }
  1964. .unpaid-item1 {
  1965. width: 20%;
  1966. height: 80%;
  1967. margin-right: 5px;
  1968. .percent {
  1969. width: 100%;
  1970. height: 34%;
  1971. display: flex;
  1972. align-items: center;
  1973. justify-content: center;
  1974. border-top: 1px solid #0A214C;
  1975. border-left: 1px solid #0A214C;
  1976. border-right: 1px solid #0A214C;
  1977. background-color: rgba(0, 70, 199, 0.35);
  1978. font-size: 14px;
  1979. font-family: Arial;
  1980. font-weight: 400;
  1981. color: #FFFFFF;
  1982. }
  1983. .nums {
  1984. width: 100%;
  1985. height: 33%;
  1986. display: flex;
  1987. flex-direction: row;
  1988. align-items: center;
  1989. justify-content: center;
  1990. border-left: 1px solid #0A214C;
  1991. border-right: 1px solid #0A214C;
  1992. border-bottom: 1px solid #0A214C;
  1993. background-color: rgba(0, 70, 199, .15);
  1994. font-size: 16px;
  1995. font-family: Arial;
  1996. font-weight: 400;
  1997. color: #FFFFFF;
  1998. padding: 0 8px;
  1999. }
  2000. .progress-item {
  2001. width: 24%;
  2002. height: 3px;
  2003. background-color: #05BB4C;
  2004. margin-right: 2px;
  2005. }
  2006. }
  2007. }
  2008. }
  2009. .matrixs {
  2010. width: 100%;
  2011. background-color: rgba(0, 0, 0, 0.45);
  2012. margin-top: 5px;
  2013. padding: 0 10px;
  2014. .matrix-titles {
  2015. display: flex;
  2016. flex-direction: row;
  2017. align-items: center;
  2018. width: 100%;
  2019. height: 32px;
  2020. font-size: 15px;
  2021. font-family: SourceHanSansCN;
  2022. font-weight: 400;
  2023. color: #FFFFFF;
  2024. padding: 0 0 0 50px;
  2025. .icon-enterprise {
  2026. font-size: 15px;
  2027. position: relative;
  2028. top: 2px;
  2029. }
  2030. &.active {
  2031. color: #FC8004;
  2032. }
  2033. .station-name {
  2034. margin-left: 5px;
  2035. margin-right: 39px;
  2036. width: 96px;
  2037. }
  2038. .indicator {
  2039. display: flex;
  2040. flex-direction: row;
  2041. justify-content: space-between;
  2042. width: 84%;
  2043. height: 100%;
  2044. }
  2045. .sub-title-item {
  2046. display: flex;
  2047. flex-direction: row;
  2048. align-items: center;
  2049. // justify-content: space-between;
  2050. width: 8%;
  2051. height: 100%;
  2052. font-size: 14px;
  2053. font-family: Microsoft YaHei;
  2054. font-weight: 400;
  2055. color: #B3B3B3;
  2056. &:nth-of-type(4) {
  2057. //margin-left: -5px;
  2058. }
  2059. &:nth-of-type(6) {
  2060. //margin-left: -5px;
  2061. }
  2062. &:nth-of-type(8) {
  2063. //margin-left: -5px;
  2064. }
  2065. &:nth-of-type(9) {
  2066. //margin-left: 45px;
  2067. }
  2068. &:last-of-type {
  2069. //margin-left: 47px;
  2070. }
  2071. &.active {
  2072. cursor: pointer;
  2073. }
  2074. &.active1 {
  2075. width: 5%;
  2076. }
  2077. .sub-value {
  2078. font-size: 14px;
  2079. font-family: Bicubik;
  2080. font-weight: 400;
  2081. margin-left: 5px;
  2082. }
  2083. }
  2084. }
  2085. .matrix-title {
  2086. display: flex;
  2087. flex-direction: row;
  2088. align-items: center;
  2089. width: 100%;
  2090. height: 38px;
  2091. background: rgba(9, 30, 69, 0.6);
  2092. border: 1px solid #072866;
  2093. border-radius: 4px;
  2094. font-size: 13px;
  2095. font-family: SourceHanSansCN;
  2096. font-weight: 400;
  2097. color: #1C99FF;
  2098. padding: 0 0 0 40px;
  2099. position: relative;
  2100. .matrix-Left {
  2101. position: absolute;
  2102. width: 1px;
  2103. height: 30px;
  2104. left: 0;
  2105. top: 0;
  2106. background: linear-gradient(to bottom, rgba(0, 70, 199, 1), rgba(0, 70, 199, 0));
  2107. }
  2108. .matrix-top {
  2109. position: absolute;
  2110. width: 30px;
  2111. height: 1px;
  2112. left: 0;
  2113. top: 0;
  2114. background: linear-gradient(to right, rgba(0, 70, 199, 1), rgba(0, 70, 199, 0));
  2115. }
  2116. .icon-photovoltaic {
  2117. margin-right: 2px;
  2118. font-size: 15px;
  2119. position: relative;
  2120. top: 0;
  2121. left: -25px
  2122. }
  2123. &.active {
  2124. color: #FC8004;
  2125. }
  2126. .station-name {
  2127. font-size: 15px;
  2128. margin-left: -15px;
  2129. width: 125px;
  2130. white-space: nowrap;
  2131. }
  2132. .indicator {
  2133. display: flex;
  2134. flex-direction: row;
  2135. align-items: center;
  2136. justify-content: space-between;
  2137. width: 100%;
  2138. height: 100%;
  2139. margin-left: 8px;
  2140. &:first-of-type {
  2141. margin-left: 5px;
  2142. }
  2143. }
  2144. .sub-title-item {
  2145. display: flex;
  2146. flex-direction: row;
  2147. align-items: center;
  2148. // justify-content: space-between;
  2149. width: 6.2%;
  2150. white-space: nowrap;
  2151. height: 100%;
  2152. margin-right: -5px;
  2153. font-size: 14px;
  2154. font-family: Microsoft YaHei;
  2155. font-weight: 400;
  2156. color: #B3B3B3;
  2157. &.active {
  2158. cursor: pointer;
  2159. }
  2160. &.active1 {
  2161. //width: 5%;
  2162. }
  2163. .sub-value {
  2164. font-size: 15px;
  2165. font-family: Bicubik;
  2166. font-weight: 400;
  2167. margin-left: 5px;
  2168. margin-top: 2px;
  2169. }
  2170. }
  2171. }
  2172. .matrix-list {
  2173. display: grid;
  2174. justify-content: space-between;
  2175. grid-template-columns: repeat(auto-fill, 8%);
  2176. width: 100%;
  2177. margin: 5px 0;
  2178. padding-right: 6px;
  2179. .matrix-card:hover .info {
  2180. transform: translateZ(40px);
  2181. }
  2182. .matrix-card {
  2183. perspective: 800px;
  2184. display: flex;
  2185. flex-direction: column;
  2186. width: 100%;
  2187. height: 114px;
  2188. margin-left: 1px;
  2189. margin-right: 1px;
  2190. margin-bottom: 2px;
  2191. .info {
  2192. width: 100%;
  2193. height: 114px;
  2194. margin-right: 4px;
  2195. .card-left {
  2196. text-align: center;
  2197. width: 100%;
  2198. height: 33px;
  2199. border-left: 1px solid #474D58;
  2200. border-right: 1px solid #474D58;
  2201. font-size: 14px;
  2202. line-height: 25px;
  2203. color: #ffffff;
  2204. background: #474d58;
  2205. box-shadow: 0px -7px 7px #2d3342 inset;
  2206. border-radius: 10px 10px 0 0;
  2207. .card-name {
  2208. font-size: 14px;
  2209. font-family: Arial;
  2210. font-weight: 400;
  2211. margin-top: 17px;
  2212. margin-bottom: 1px;
  2213. }
  2214. }
  2215. .card-right {
  2216. width: 100%;
  2217. height: 90px;
  2218. color: #ffffff;
  2219. background: #2d3342;
  2220. border: 1px solid #303749;
  2221. border-radius: 7px 7px 10px 10px;
  2222. display: flex;
  2223. flex-direction: column;
  2224. align-content: space-between;
  2225. padding: 0px 8px;
  2226. position: relative;
  2227. margin-top: -12px;
  2228. padding-top: 7px;
  2229. .right-item {
  2230. display: flex;
  2231. flex-direction: row;
  2232. align-items: center;
  2233. height: 19px;
  2234. width: 100%;
  2235. div:first-of-type {
  2236. font-family: Microsoft YaHei;
  2237. width: 80px;
  2238. white-space: nowrap;
  2239. overflow: hidden;
  2240. color: rgba(179, 179, 179, 1);
  2241. text-overflow: ellipsis;
  2242. }
  2243. .right-value {
  2244. width: 50px;
  2245. font-size: 12px;
  2246. color: #FFFFFF;
  2247. font-family: Arial;
  2248. }
  2249. .right-unite {
  2250. font-size: 12px;
  2251. margin-left: -5px;
  2252. color: #B3B3B3;
  2253. }
  2254. }
  2255. .card-hover {
  2256. position: absolute;
  2257. // width: 100px;
  2258. // height: 50px;
  2259. background-color: rgba(0, 0, 0, 1);
  2260. left: -30px;
  2261. top: -50px;
  2262. display: none;
  2263. }
  2264. }
  2265. .card-right:hover {
  2266. .card-hover {
  2267. display: block;
  2268. }
  2269. }
  2270. }
  2271. .matrix-progress {
  2272. display: flex;
  2273. flex-direction: row;
  2274. align-items: center;
  2275. width: 100%;
  2276. padding: 0 4px;
  2277. height: 8px;
  2278. .progress-block {
  2279. width: 19px;
  2280. height: 3px;
  2281. background-color: #05BB4C;
  2282. margin-right: 2px;
  2283. }
  2284. }
  2285. &.blue {
  2286. .info {
  2287. .card-left {
  2288. background: rgba(12, 71, 149, 1);
  2289. border-left: 1px solid #0C4795;
  2290. border-right: 1px solid #0C4795;
  2291. }
  2292. }
  2293. }
  2294. &.red {
  2295. .info {
  2296. .card-left {
  2297. background: rgba(139, 46, 51, 1);
  2298. border-left: 1px solid #8B2E33;
  2299. border-right: 1px solid #8B2E33;
  2300. }
  2301. }
  2302. }
  2303. &.orange {
  2304. .info {
  2305. .card-left {
  2306. background: rgba(186, 93, 10, 1);
  2307. border-left: 1px solid #BA5D0A;
  2308. border-right: 1px solid #BA5D0A;
  2309. }
  2310. }
  2311. }
  2312. &.gray {
  2313. .info {
  2314. .card-left {
  2315. background: rgba(97, 105, 119, 1);
  2316. border-left: 1px solid #474D58;
  2317. border-right: 1px solid #474D58;
  2318. }
  2319. }
  2320. }
  2321. }
  2322. }
  2323. }
  2324. .active_vie {
  2325. width: 100%;
  2326. margin-top: 0;
  2327. .matrix-list {
  2328. display: grid;
  2329. justify-content: space-between;
  2330. grid-template-columns: repeat(auto-fill, 114px);
  2331. width: 100%;
  2332. margin-top: 0;
  2333. }
  2334. }
  2335. }
  2336. .el-col:last-child {
  2337. padding-left: 0;
  2338. }
  2339. .el-cole {
  2340. flex: 1;
  2341. color: #1C99FF;
  2342. height: 40px;
  2343. text-align: center;
  2344. .active-b {
  2345. width: 96px;
  2346. height: 52px;
  2347. padding: 6px;
  2348. margin-top: -5px;
  2349. padding-left: 10px;
  2350. margin-left: -20px;
  2351. position: relative;
  2352. border: 1px solid transparent;
  2353. .yuan {
  2354. font-family: AgencyFB-Reg;
  2355. line-height: 20px;
  2356. display: flex;
  2357. > p:first-of-type {
  2358. width: 13px;
  2359. height: 13px;
  2360. border: 1px solid transparent;
  2361. position: absolute;
  2362. top: 9px;
  2363. left: 14px;
  2364. }
  2365. > p:last-of-type {
  2366. margin-left: 20px;
  2367. }
  2368. .circle {
  2369. display: inline-block;
  2370. width: 5px;
  2371. height: 5px;
  2372. vertical-align: middle;
  2373. margin-right: 10px;
  2374. position: absolute;
  2375. top: 4px;
  2376. left: -4px;
  2377. }
  2378. }
  2379. > div:last-child {
  2380. font-size: 16px;
  2381. font-family: Bicubik;
  2382. text-align: center;
  2383. margin-left: 2px;
  2384. }
  2385. }
  2386. }
  2387. .el-cole:nth-child(2) {
  2388. color: #05BB4C;
  2389. .active_bor {
  2390. .left_p {
  2391. width: 16px;
  2392. height: 20px;
  2393. border-left: 1px solid #333333;
  2394. border-bottom: 1px solid #333333;
  2395. position: absolute;
  2396. left: 8px;
  2397. top: 17px
  2398. }
  2399. }
  2400. }
  2401. .el-cole:nth-child(5) {
  2402. color: #1C99FF;
  2403. .active_bor {
  2404. .left_p {
  2405. width: 16px;
  2406. height: 20px;
  2407. border-left: 1px solid #333333;
  2408. border-bottom: 1px solid #333333;
  2409. position: absolute;
  2410. left: 8px;
  2411. top: 17px
  2412. }
  2413. .circles {
  2414. display: inline-block;
  2415. width: 5px;
  2416. height: 5px;
  2417. vertical-align: middle;
  2418. margin-right: 10px;
  2419. position: absolute;
  2420. top: 8px;
  2421. left: 13px;
  2422. background-color: #1C99FF;
  2423. }
  2424. }
  2425. .circle {
  2426. background-color: #1C99FF;
  2427. }
  2428. }
  2429. .el-cole:nth-child(3) {
  2430. color: #BA3237;
  2431. .active_bor {
  2432. .circles {
  2433. display: inline-block;
  2434. width: 5px;
  2435. height: 5px;
  2436. vertical-align: middle;
  2437. margin-right: 10px;
  2438. position: absolute;
  2439. top: 8px;
  2440. left: 13px;
  2441. background-color: #BA3237;
  2442. }
  2443. .left_p {
  2444. width: 16px;
  2445. height: 20px;
  2446. border-left: 1px solid #333333;
  2447. border-bottom: 1px solid #333333;
  2448. position: absolute;
  2449. left: 8px;
  2450. top: 17px
  2451. }
  2452. }
  2453. .circle {
  2454. background-color: #BA3237;
  2455. }
  2456. }
  2457. .el-cole:nth-child(4) {
  2458. color: #E17D24;
  2459. .active_bor {
  2460. .circles {
  2461. display: inline-block;
  2462. width: 5px;
  2463. height: 5px;
  2464. vertical-align: middle;
  2465. margin-right: 10px;
  2466. position: absolute;
  2467. top: 8px;
  2468. left: 13px;
  2469. background-color: #E17D24;
  2470. }
  2471. .left_p {
  2472. width: 16px;
  2473. height: 20px;
  2474. border-left: 1px solid #333333;
  2475. border-bottom: 1px solid #333333;
  2476. position: absolute;
  2477. left: 8px;
  2478. top: 17px
  2479. }
  2480. }
  2481. .circle {
  2482. background-color: #E17D24;
  2483. }
  2484. }
  2485. .el-cole:nth-child(6) {
  2486. color: #C530C8;
  2487. .active_bor {
  2488. .left_p {
  2489. width: 16px;
  2490. height: 20px;
  2491. border-left: 1px solid #333333;
  2492. border-bottom: 1px solid #333333;
  2493. position: absolute;
  2494. left: 8px;
  2495. top: 17px
  2496. }
  2497. }
  2498. .circle {
  2499. background-color: #C530C8;
  2500. }
  2501. .circles {
  2502. background-color: #C530C8;
  2503. }
  2504. }
  2505. .el-cole:nth-child(7) {
  2506. color: rgba(255, 255, 255, 1);
  2507. .active_bor {
  2508. .left_p {
  2509. width: 16px;
  2510. height: 20px;
  2511. border-left: 1px solid #333333;
  2512. border-bottom: 1px solid #333333;
  2513. position: absolute;
  2514. left: 8px;
  2515. top: 17px
  2516. }
  2517. }
  2518. .circle {
  2519. background-color: rgba(255, 255, 255, 1);
  2520. }
  2521. .circles {
  2522. background-color: rgba(255, 255, 255, 1);
  2523. }
  2524. }
  2525. .el-cole:nth-child(2) {
  2526. color: #606769;
  2527. .active_bor {
  2528. .circles {
  2529. display: inline-block;
  2530. width: 5px;
  2531. height: 5px;
  2532. vertical-align: middle;
  2533. margin-right: 10px;
  2534. position: absolute;
  2535. top: 8px;
  2536. left: 13px;
  2537. background-color: #606769;
  2538. }
  2539. .left_p {
  2540. width: 16px;
  2541. height: 20px;
  2542. border-left: 1px solid #333333;
  2543. border-bottom: 1px solid #333333;
  2544. position: absolute;
  2545. left: 8px;
  2546. top: 17px
  2547. }
  2548. }
  2549. .active-b {
  2550. .circle {
  2551. background-color: #606769;
  2552. }
  2553. }
  2554. }
  2555. </style>