Device_motore.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
  1. <template>
  2. <section class="mainbox">
  3. <div
  4. class="Site-details"
  5. :style="
  6. activeName === 'first'
  7. ? 'height: 684px;'
  8. : activeName === 'third'
  9. ? 'height: 670px;'
  10. : 'height: 710px;'
  11. "
  12. >
  13. <el-tabs v-model="activeName" @tab-click="handleClick">
  14. <el-tab-pane label="实时数据" name="first">
  15. <el-tabs
  16. v-model="ac_content"
  17. @tab-click="handleClick1"
  18. class="ac-content"
  19. >
  20. <el-tab-pane
  21. label="模拟量"
  22. name="model"
  23. style="display: flex"
  24. class="model"
  25. >
  26. <div>
  27. <div
  28. v-for="arr in model_array.slice(0, 16)"
  29. :key="arr"
  30. class="display"
  31. >
  32. <div>{{ arr.name }}</div>
  33. <div>{{ arr.value }}</div>
  34. </div>
  35. </div>
  36. <div>
  37. <div
  38. v-for="arr in model_array.slice(16, 30)"
  39. :key="arr"
  40. class="display"
  41. >
  42. <div>{{ arr.name }}</div>
  43. <div>{{ arr.value }}</div>
  44. </div>
  45. </div>
  46. <div>
  47. <div
  48. v-for="arr in model_array.slice(30, 46)"
  49. :key="arr"
  50. class="display"
  51. >
  52. <div>{{ arr.name }}</div>
  53. <div>{{ arr.value }}</div>
  54. </div>
  55. </div>
  56. <div>
  57. <div
  58. v-for="arr in model_array.slice(46)"
  59. :key="arr"
  60. class="display"
  61. >
  62. <div>{{ arr.name }}</div>
  63. <div>{{ arr.value }}</div>
  64. </div>
  65. </div>
  66. </el-tab-pane>
  67. <el-tab-pane label="状态量" name="states" class="states">
  68. <div>
  69. <div
  70. v-for="arr in state_array.slice(0, 17)"
  71. :key="arr"
  72. class="display"
  73. >
  74. <div style="display: flex">
  75. <div class="name">{{ arr.name }}</div>
  76. <div :class="'state_' + arr.value"></div>
  77. </div>
  78. </div>
  79. </div>
  80. <div>
  81. <div
  82. v-for="arr in state_array.slice(17)"
  83. :key="arr"
  84. class="display"
  85. >
  86. <div style="display: flex">
  87. <div class="name1">{{ arr.name }}</div>
  88. <div :class="'state_' + arr.value"></div>
  89. </div>
  90. </div>
  91. </div>
  92. </el-tab-pane>
  93. </el-tabs>
  94. <el-button type="primary" class="primary">刷新</el-button>
  95. </el-tab-pane>
  96. <el-tab-pane label="历史趋势" name="second" style="top: 1px">
  97. <el-tabs
  98. v-model="se_content"
  99. @tab-click="handleClick2"
  100. class="se-content"
  101. >
  102. <el-tab-pane label="电流" name="flow" class="flow"> </el-tab-pane>
  103. <el-tab-pane label="功率" name="power" class="power"> </el-tab-pane>
  104. <el-tab-pane label="电度" name="degree" class="degree">
  105. </el-tab-pane>
  106. <el-tab-pane label="电压" name="voltage" class="voltage">
  107. </el-tab-pane>
  108. <el-tab-pane label="温度" name="temperature" class="temperature">
  109. </el-tab-pane>
  110. <el-tab-pane label="频率" name="frequency" class="frequency">
  111. </el-tab-pane>
  112. <el-tab-pane
  113. label="功率因数"
  114. name="power_factor"
  115. class="power_factor"
  116. >
  117. </el-tab-pane>
  118. <el-tab-pane
  119. label="谐波电流有效值"
  120. name="hc_valid_value"
  121. class="hc_valid_value"
  122. >
  123. </el-tab-pane>
  124. <el-tab-pane
  125. label="通讯参数"
  126. name="c_parameters"
  127. class="c_parameters"
  128. >
  129. </el-tab-pane>
  130. <el-tab-pane label="电压突变" name="v_mutation" class="v_mutation">
  131. </el-tab-pane>
  132. <el-button type="primary" class="preservation" @click="preservation"
  133. >保存为图片</el-button
  134. >
  135. </el-tabs>
  136. <div class="block">
  137. <span>选择时间范围:</span>
  138. <el-date-picker
  139. v-model="defaultTime"
  140. type="datetimerange"
  141. start-placeholder="开始日期"
  142. end-placeholder="结束日期"
  143. range-separator="~"
  144. :disabledDate="disabledDate"
  145. >
  146. </el-date-picker>
  147. </div>
  148. </el-tab-pane>
  149. <el-tab-pane label="数据报表" name="third" style="top: 2px">
  150. <div class="block">
  151. <span>选择时间范围:</span>
  152. <el-date-picker
  153. v-model="defaultTime"
  154. type="datetimerange"
  155. start-placeholder="开始日期"
  156. end-placeholder="结束日期"
  157. range-separator="~"
  158. :disabledDate="disabledDate"
  159. >
  160. </el-date-picker>
  161. <div class="operation">
  162. <el-button type="primary" class="query" :disabled="checkedCities.length > 0 ? false : true" @click="Time_all">查询</el-button>
  163. <el-button type="primary" class="export" :disabled="tableData.length > 0 ? false : true">导出</el-button>
  164. </div>
  165. </div>
  166. <div class="box">
  167. <el-checkbox
  168. :indeterminate="isIndeterminate"
  169. v-model="checkAll"
  170. @change="handleCheckAllChange"
  171. >全选</el-checkbox
  172. >
  173. <el-checkbox-group
  174. v-model="checkedCities"
  175. @change="handleCheckedCitiesChange"
  176. >
  177. <el-checkbox v-for="city in cities" :label="city" :key="city">{{
  178. city
  179. }}</el-checkbox>
  180. </el-checkbox-group>
  181. </div>
  182. <div class="table">
  183. <el-table :data="tableData" style="width: 100%" height="520" show>
  184. <el-table-column prop="time" label="时间" fixed>
  185. </el-table-column>
  186. <el-table-column label="电流 A" v-if="columnHeaders[0].isShow">
  187. <el-table-column prop="name" label="A相电流"> </el-table-column>
  188. <el-table-column prop="province" label="B相电流">
  189. </el-table-column>
  190. <el-table-column prop="city" label="C相电流"> </el-table-column>
  191. </el-table-column>
  192. <el-table-column label="电流 B" v-if="columnHeaders[1].isShow">
  193. <el-table-column prop="name" label="B相电流"> </el-table-column>
  194. <el-table-column prop="province" label="B相电流">
  195. </el-table-column>
  196. <el-table-column prop="city" label="B相电流"> </el-table-column>
  197. </el-table-column>
  198. <!-- <el-table-column label="地址">
  199. <el-table-column prop="province" label="省份" width="120">
  200. </el-table-column>
  201. <el-table-column prop="city" label="市区" width="120">
  202. </el-table-column>
  203. <el-table-column prop="address" label="地址"> </el-table-column>
  204. <el-table-column prop="zip" label="邮编" width="120">
  205. </el-table-column>
  206. <el-table-column prop="zip" label="邮编" width="120">
  207. </el-table-column>
  208. <el-table-column prop="zip" label="邮编" width="120">
  209. </el-table-column>
  210. <el-table-column prop="zip" label="邮编" width="120">
  211. </el-table-column>
  212. <el-table-column prop="zip" label="邮编" width="120">
  213. </el-table-column>
  214. </el-table-column> -->
  215. <template #empty>
  216. <div class="zwsj">
  217. <img src="./../../assets/images/No_data.png" alt="" />
  218. <p>暂无数据</p>
  219. </div>
  220. </template>
  221. </el-table>
  222. </div>
  223. </el-tab-pane>
  224. <devicemotore
  225. v-if="activeName === 'second'"
  226. ref="main"
  227. :defaul_tTime="defaultTime"
  228. ></devicemotore>
  229. <el-tab-pane label="运行状态统计" name="fourth" style="top: 3px"
  230. >运行状态统计</el-tab-pane
  231. >
  232. </el-tabs>
  233. </div>
  234. </section>
  235. </template>
  236. <script>
  237. import devicemotore from "../site_ehcarts/Device_motore";
  238. const cityOptions = [
  239. "电流",
  240. "功率",
  241. "电度",
  242. "电压",
  243. "温度",
  244. "频率",
  245. "功率因数",
  246. "谐波电流有效值",
  247. "通讯参数",
  248. "电压突变",
  249. ];
  250. export default {
  251. name: "site_details",
  252. components: { devicemotore },
  253. data() {
  254. return {
  255. activeName: "first",
  256. ac_content: "model",
  257. se_content: "flow",
  258. se_label: "电流",
  259. model_array: [
  260. { name: "A相电压:", value: "236.94V" },
  261. { name: "B相电压:", value: "237.94V" },
  262. { name: "C相电压:", value: "237.82V" },
  263. { name: "回路电压:", value: "236.94V" },
  264. { name: "A相电流:", value: "0A" },
  265. { name: "B相电流:", value: "0A" },
  266. { name: "C相电流:", value: "0A" },
  267. { name: "剩余电流(漏电流):", value: "0mA" },
  268. { name: "外接温度1:", value: "-273℃" },
  269. { name: "外接温度2:", value: "-273℃" },
  270. { name: "外接温度3:", value: "-273℃" },
  271. { name: "外接温度4:", value: "-273℃" },
  272. { name: "频率:", value: "49.97Hz" },
  273. { name: "AB线电压:", value: "411.06V" },
  274. { name: "BC线电压:", value: "412.48V" },
  275. { name: "CA线电压:", value: "410.66V" },
  276. { name: "A相有功功率:", value: "0kW" },
  277. { name: "A相无功功率:", value: "0kVar" },
  278. { name: "A相功率因数:", value: 0 },
  279. { name: "B相有功功率:", value: "0kW" },
  280. { name: "B相无功功率:", value: "0kVar" },
  281. { name: "B相功率因数:", value: "0" },
  282. { name: "C相有功功率:", value: "0kW" },
  283. { name: "C相无功功率:", value: "0kVar" },
  284. { name: "C相功率因数:", value: "0" },
  285. { name: "总有功功率:", value: "0kW" },
  286. { name: "总无功功率:", value: "0kVar" },
  287. { name: "功率因数:", value: "0" },
  288. { name: "实时需量:", value: "0kW" },
  289. { name: "昨日最大有功需量:", value: "0.12kW" },
  290. { name: "昨日Pmax发生时间:", value: "1057" },
  291. { name: "负序电流:", value: "0.075A" },
  292. { name: "零序电流:", value: "0.05A" },
  293. { name: "负序电压不平衡度:", value: "0.37%" },
  294. { name: "零序电压不平衡度:", value: "0.12%" },
  295. { name: "A相电压畸变率:", value: "1.59%" },
  296. { name: "B相电压畸变率:", value: "1.75%" },
  297. { name: "C相电压畸变率:", value: "1.6%" },
  298. { name: "Ia总谐波电流:", value: "0A" },
  299. { name: "Ib总谐波电流:", value: "0A" },
  300. { name: "Ic总谐波电流:", value: "0A" },
  301. { name: "设备温度:", value: "33.1℃" },
  302. { name: "设备信号强度:", value: "29" },
  303. { name: "电压暂升次数:", value: "102次" },
  304. { name: "电压暂降次数:", value: "6次" },
  305. { name: "电压中断次数:", value: "6次" },
  306. { name: "母线停电次数:", value: "1次" },
  307. { name: "设备复位次数:", value: "0次" },
  308. { name: "正有功电度:", value: "8.27.0001kWh" },
  309. { name: "负有功电度:", value: "3.4kWh" },
  310. { name: "正无功电度:", value: "410.2kWh" },
  311. { name: "负无功电度:", value: "37kWh" },
  312. { name: "尖段正向有功:", value: "0kWh" },
  313. { name: "尖段反向有功:", value: "0kWh" },
  314. { name: "峰段正向有功:", value: "652.8kWh" },
  315. { name: "峰段反向有功:", value: "3.2kWh" },
  316. { name: "平段正向有功:", value: "0kWh" },
  317. { name: "平段反向有功:", value: "0kWh" },
  318. { name: "谷段正向有功:", value: "157.2kWh" },
  319. { name: "谷段反向有功:", value: "0.2kWh" },
  320. ],
  321. state_array: [
  322. { name: "外接遥信1状态:", value: "OFF" },
  323. { name: "外接遥信2状态:", value: "OFF" },
  324. { name: "外接遥信3状态:", value: "OFF" },
  325. { name: "火警预警总:", value: "OFF" },
  326. { name: "线路电气故障总:", value: "OFF" },
  327. { name: "电压缺相:", value: "OFF" },
  328. { name: "回路带电/停电:", value: "ON" },
  329. { name: "线路开关状态:", value: "ON" },
  330. { name: "电压越上限告警:", value: "OFF" },
  331. { name: "电压越下限告警:", value: "OFF" },
  332. { name: "电流越限:", value: "OFF" },
  333. { name: "回路跳闸:", value: "OFF" },
  334. { name: "母线停电:", value: "OFF" },
  335. { name: "剩余电流超限:", value: "OFF" },
  336. { name: "测温点T1超温:", value: "OFF" },
  337. { name: "测温点T2超温:", value: "OFF" },
  338. { name: "测温点T3超温:", value: "OFF" },
  339. { name: "测温点T4超温:", value: "OFF" },
  340. { name: "设备温度越限:", value: "OFF" },
  341. { name: "A相燃弧:", value: "OFF" },
  342. { name: "B相燃弧:", value: "OFF" },
  343. { name: "C相燃弧:", value: "OFF" },
  344. { name: "电压谐波越限:", value: "OFF" },
  345. { name: "电流谐波越限:", value: "OFF" },
  346. { name: "视在需量超限:", value: "OFF" },
  347. { name: "测量通道故障:", value: "OFF" },
  348. { name: "设备异常:", value: "OFF" },
  349. { name: "消音:", value: "OFF" },
  350. { name: "继电器1状态:", value: "OFF" },
  351. { name: "继电器2状态:", value: "OFF" },
  352. { name: "备用遥信1:", value: "OFF" },
  353. { name: "备用遥信2:", value: "OFF" },
  354. { name: "备用遥信3:", value: "OFF" },
  355. { name: "备用遥信4:", value: "OFF" },
  356. ],
  357. value: "",
  358. defaultTime: [
  359. new Date(2021, 6, 1, 0, 0, 0),
  360. new Date(2021, 6, 1, 12, 0, 0),
  361. ],
  362. disabledDate(date) {
  363. return date.getTime() > new Date();
  364. },
  365. checkAll: false,
  366. checkedCities: [],
  367. cities: cityOptions,
  368. isIndeterminate: false,
  369. tableData: [],
  370. msg: "暂无数据",
  371. columnHeaders: [
  372. { index: 0, title: "电流", isShow: false },
  373. { index: 1, title: "功率", isShow: false },
  374. { index: 2, title: "电度", isShow: false },
  375. { index: 3, title: "电压", isShow: false },
  376. { index: 4, title: "温度", isShow: false },
  377. { index: 5, title: "频率", isShow: false },
  378. {
  379. index: 6,
  380. title: "功率因数",
  381. isShow: false,
  382. },
  383. {
  384. index: 7,
  385. title: "谐波电流有效值",
  386. isShow: false,
  387. },
  388. {
  389. index: 8,
  390. title: "通讯参数",
  391. isShow: false,
  392. },
  393. {
  394. index: 9,
  395. title: "电压突变",
  396. isShow: false,
  397. },
  398. ],
  399. };
  400. },
  401. mounted() {
  402. },
  403. methods: {
  404. preservation() {
  405. console.log(this.$refs.main.chart);
  406. var url = this.$refs.main.chart.getConnectedDataURL({
  407. pixelRatio: 15,
  408. backgroundColor: "black",
  409. excludeComponents: ["toolbox"],
  410. type: "png",
  411. });
  412. var $a = document.createElement("a");
  413. var type = "png";
  414. //图片名称
  415. $a.download = this.se_label + "." + type;
  416. $a.target = "_blank";
  417. $a.href = url;
  418. if (typeof MouseEvent === "function") {
  419. var evt = new MouseEvent("click", {
  420. view: window,
  421. bubbles: true,
  422. cancelable: false,
  423. });
  424. $a.dispatchEvent(evt);
  425. }
  426. },
  427. //最外层tabs切换事件触发
  428. handleClick(tab, event) {
  429. // this.Time_all();
  430. // console.log(tab, event);
  431. // console.log(tab.props.name)
  432. this.ac_content = "model";
  433. this.se_content = "flow";
  434. for (let i in event.path) {
  435. if (event.path[i].className === "el-tabs__nav is-top") {
  436. var childNodes = event.path[i].childNodes;
  437. for (let i in childNodes) {
  438. if (childNodes[i].className === "el-tabs__active-bar is-top") {
  439. childNodes[i].style.left = tab.index + "px";
  440. }
  441. }
  442. }
  443. }
  444. },
  445. //实时数据 内部tabs 点击事件触发
  446. handleClick1(tab, event) {
  447. console.log(tab, event);
  448. },
  449. //历史趋势 内部tabs 点击事件触发
  450. handleClick2(tab, event) {
  451. console.log(tab, event);
  452. this.se_label = tab.props.label;
  453. },
  454. Time_all() {
  455. // console.log(this.defaultTime)
  456. // console.log("bbbbbbb",data)
  457. // this.$emit("func", this.defaultTime);
  458. this.tableData = [
  459. {
  460. time: "2016-05-03",
  461. name: "1",
  462. province: "2",
  463. city: "3",
  464. address: "1518",
  465. zip: 200333,
  466. },
  467. {
  468. time: "2016-05-02",
  469. name: "1",
  470. province: "2",
  471. city: "3",
  472. address: "2市3金沙江路 1518 弄",
  473. zip: 200333,
  474. },
  475. {
  476. time: "2016-05-04",
  477. name: "1",
  478. province: "2",
  479. city: "3",
  480. address: "2市3金沙江路 1518 弄",
  481. zip: 200333,
  482. },
  483. {
  484. time: "2016-05-01",
  485. name: "1",
  486. province: "2",
  487. city: "3",
  488. address: "2市3金沙江路 1518 弄",
  489. zip: 200333,
  490. },
  491. {
  492. time: "2016-05-08",
  493. name: "1",
  494. province: "2",
  495. city: "3",
  496. address: "2市3金沙江路 1518 弄",
  497. zip: 200333,
  498. },
  499. {
  500. time: "2016-05-06",
  501. name: "1",
  502. province: "2",
  503. city: "3",
  504. address: "2市3金沙江路 1518 弄",
  505. zip: 200333,
  506. },
  507. {
  508. time: "2016-05-07",
  509. name: "1",
  510. province: "2",
  511. city: "3",
  512. address: "2市3金沙江路 1518 弄",
  513. zip: 200333,
  514. },
  515. {
  516. time: "2016-05-07",
  517. name: "1",
  518. province: "2",
  519. city: "3",
  520. address: "2市3金沙江路 1518 弄",
  521. zip: 200333,
  522. },
  523. {
  524. time: "2016-05-07",
  525. name: "1",
  526. province: "2",
  527. city: "3",
  528. address: "2市3金沙江路 1518 弄",
  529. zip: 200333,
  530. },
  531. {
  532. time: "2016-05-07",
  533. name: "1",
  534. province: "2",
  535. city: "3",
  536. address: "2市3金沙江路 1518 弄",
  537. zip: 200333,
  538. },
  539. {
  540. time: "2016-05-07",
  541. name: "1",
  542. province: "2",
  543. city: "3",
  544. address: "2市3金沙江路 1518 弄",
  545. zip: 200333,
  546. },
  547. {
  548. time: "2016-05-07",
  549. name: "1",
  550. province: "2",
  551. city: "3",
  552. address: "2市3金沙江路 1518 弄",
  553. zip: 200333,
  554. },
  555. {
  556. time: "2016-05-07",
  557. name: "1",
  558. province: "2",
  559. city: "3",
  560. address: "2市3金沙江路 1518 弄",
  561. zip: 200333,
  562. },
  563. {
  564. time: "2016-05-07",
  565. name: "1",
  566. province: "2",
  567. city: "3",
  568. address: "2市3金沙江路 1518 弄",
  569. zip: 200333,
  570. },
  571. {
  572. time: "2016-05-07",
  573. name: "1",
  574. province: "2",
  575. city: "3",
  576. address: "2市3金沙江路 1518 弄",
  577. zip: 200333,
  578. },
  579. {
  580. time: "2016-05-07",
  581. name: "1",
  582. province: "2",
  583. city: "3",
  584. address: "2市3金沙江路 1518 弄",
  585. zip: 200333,
  586. },
  587. {
  588. time: "2016-05-07",
  589. name: "1",
  590. province: "2",
  591. city: "3",
  592. address: "2市3金沙江路 1518 弄",
  593. zip: 200333,
  594. },
  595. {
  596. time: "2016-05-07",
  597. name: "1",
  598. province: "2",
  599. city: "3",
  600. address: "2市3金沙江路 1518 弄",
  601. zip: 200333,
  602. },
  603. {
  604. time: "2016-05-07",
  605. name: "1",
  606. province: "2",
  607. city: "3",
  608. address: "2市3金沙江路 1518 弄",
  609. zip: 200333,
  610. },
  611. ]
  612. },
  613. handleCheckAllChange(val) {
  614. this.checkedCities = val ? cityOptions : [];
  615. this.isIndeterminate = false;
  616. },
  617. handleCheckedCitiesChange(value) {
  618. let checkedCount = value.length;
  619. this.checkAll = checkedCount === this.cities.length;
  620. this.isIndeterminate =
  621. checkedCount > 0 && checkedCount < this.cities.length;
  622. },
  623. },
  624. watch: {
  625. /**
  626. * @title 监听列显示隐藏
  627. */
  628. checkedCities(newArrayVal) {
  629. newArrayVal.length <= 0 ? this.tableData=[] : ''
  630. // 计算为被选中的列标题数组
  631. var nonSelecteds = this.columnHeaders
  632. .filter((item) => newArrayVal.indexOf(item.title) == -1)
  633. .map((item) => item.title);
  634. // 根据计算结果进行表格重绘
  635. this.columnHeaders.filter((item) => {
  636. let isNonSelected = nonSelecteds.indexOf(item.title) != -1;
  637. if (isNonSelected) {
  638. // 隐藏未选中的列
  639. item.isShow = false;
  640. } else {
  641. // 显示已选中的列
  642. item.isShow = true;
  643. }
  644. });
  645. },
  646. },
  647. };
  648. </script>
  649. <style>
  650. /*
  651. 数据报表css样式
  652. */
  653. #pane-third .el-table__fixed {
  654. height: 100% !important;
  655. }
  656. #pane-third .el-table {
  657. color: #fff;
  658. }
  659. #pane-third .el-table thead {
  660. color: #fff;
  661. }
  662. #pane-third .cell {
  663. text-align: center;
  664. }
  665. .el-table__fixed-body-wrapper {
  666. /* height: 369px !important; */
  667. }
  668. #pane-third .el-table__header {
  669. /* width: 100.65% !important; */
  670. }
  671. #pane-third .el-table--fit {
  672. background-color: rgb(0, 66, 78, 0) !important;
  673. }
  674. #pane-third .el-table th,
  675. .el-table tr {
  676. background-color: rgb(0, 66, 78, 0.5) !important;
  677. }
  678. .el-table__fixed-body-wrapper::-webkit-scrollbar {
  679. width: 0;
  680. height: 0;
  681. }
  682. #pane-third .block span {
  683. padding: 0 10px;
  684. }
  685. #pane-third .el-input__inner {
  686. width: 414px !important;
  687. height: 30px !important;
  688. line-height: 30px !important;
  689. background-color: transparent;
  690. border: 1px solid rgba(3, 107, 119, 1);
  691. }
  692. #pane-third .el-range-input {
  693. background-color: transparent;
  694. color: #fff;
  695. }
  696. #pane-third .el-range-separator {
  697. line-height: 20px;
  698. color: #fff;
  699. }
  700. #pane-third .operation {
  701. float: right;
  702. margin-right: 10px;
  703. }
  704. #pane-third button {
  705. height: 30px !important;
  706. min-height: 30px;
  707. line-height: 0;
  708. margin-top: 0px;
  709. padding: 0px 10px;
  710. margin-left: 17px;
  711. }
  712. #pane-third button span {
  713. font-size: 0.18rem;
  714. padding: 0 10px;
  715. font-family: Microsoft YaHei Regular, Microsoft YaHei Regular-Regular;
  716. }
  717. #pane-third .box {
  718. padding-left: 10px;
  719. display: flex;
  720. margin-top: 12px;
  721. }
  722. #pane-third .el-checkbox-group {
  723. margin-left: 30px;
  724. }
  725. #pane-third .el-checkbox .el-checkbox__label {
  726. color: #fff;
  727. font-size: 0.18rem;
  728. }
  729. #pane-third .el-checkbox .el-checkbox__input .el-checkbox__inner {
  730. background-color: transparent;
  731. border: 1px solid rgba(1, 111, 109, 1);
  732. }
  733. #pane-third .el-checkbox__input.is-checked .el-checkbox__inner,
  734. .el-checkbox__input.is-indeterminate .el-checkbox__inner {
  735. background-color: rgba(1, 111, 109, 1) !important;
  736. }
  737. #pane-third .el-checkbox__inner::after {
  738. border: 1px solid rgba(0, 244, 253, 1);
  739. border-left: 0;
  740. border-top: 0;
  741. }
  742. #pane-third .table {
  743. margin-top: 10px;
  744. padding: 0 10px;
  745. }
  746. #pane-third .el-table--border,
  747. .el-table--group {
  748. border: 1px solid rgba(1, 111, 109, 0.5);
  749. background-color: transparent;
  750. }
  751. #pane-third .el-table--border td,
  752. .el-table--border th,
  753. .el-table__body-wrapper .el-table--border.is-scrolling-left ~ .el-table__fixed {
  754. border-right: 1px solid rgba(1, 111, 109, 0.5);
  755. color: #fff;
  756. }
  757. #pane-third .el-table td,
  758. .el-table th.is-leaf {
  759. border-bottom: 1px solid rgba(1, 111, 109, 0.5);
  760. }
  761. #pane-third .el-table th,
  762. .el-table tr {
  763. border-bottom: 1px solid rgba(1, 111, 109, 0.5);
  764. }
  765. #pane-third .table .el-table thead.is-group th {
  766. background-color: rgb(0, 66, 78, 1) !important;
  767. }
  768. #pane-third .el-table__row {
  769. background-color: transparent;
  770. }
  771. /* #pane-third .el-table__body {
  772. width: 100% !important;
  773. } */
  774. #pane-third .el-table__body .hover-row > td {
  775. background-color: rgb(3, 61, 72, 1) !important;
  776. }
  777. #pane-third .el-table__body tr > td:nth-child(1) {
  778. background-color: rgb(0, 66, 78, 1) !important;
  779. }
  780. #pane-third .el-table__body-wrapper::-webkit-scrollbar {
  781. width: 5px;
  782. height: 5px;
  783. }
  784. #pane-third .el-table__body-wrapper::-webkit-scrollbar-thumb {
  785. border-right: none;
  786. background-color: #01f5f1;
  787. border-radius: 5px;
  788. }
  789. #pane-third .el-table__body-wrapper::-webkit-scrollbar-track {
  790. background-color: rgb(0, 66, 78, 1);
  791. }
  792. #pane-third .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
  793. background-color: rgb(17, 177, 174);
  794. }
  795. #pane-third .el-table__body-wrapper::-webkit-scrollbar-thumb:active {
  796. background-color: rgb(9, 136, 134);
  797. }
  798. #pane-third .zwsj {
  799. margin: 65px 0;
  800. }
  801. #pane-third .el-table--border::after,
  802. .el-table--group::after {
  803. width: 0;
  804. }
  805. #pane-third .el-table::before {
  806. height: 0px;
  807. }
  808. #pane-third .el-table__fixed-right::before,
  809. .el-table__fixed::before {
  810. height: 0px;
  811. }
  812. /* #pane-third .is-scrolling-middle {
  813. height: 374px !important;
  814. z-index: 1;
  815. }
  816. #pane-third .is-scrolling-right {
  817. height: 374px !important;
  818. z-index: 1;
  819. }
  820. #pane-third .is-scrolling-left {
  821. height: 374px !important;
  822. z-index: 1;
  823. } */
  824. </style>
  825. <style>
  826. /* 历史趋势css样式 */
  827. .se-content {
  828. width: 100%;
  829. height: 100%;
  830. margin: 0 auto;
  831. display: flex;
  832. }
  833. .se-content .el-tabs__header {
  834. /* width: calc(130px * 10); */
  835. width: 100%;
  836. margin: 0 auto;
  837. }
  838. .se-content .el-tabs__item.is-active {
  839. background: rgba(6, 68, 83, 1) !important;
  840. }
  841. .se-content .el-tabs__active-bar {
  842. width: 130px !important;
  843. top: 0;
  844. background: transparent;
  845. }
  846. .se-content .el-tabs__item {
  847. border-top: 1px rgba(0, 244, 253, 0.1) solid;
  848. border-bottom: 1px rgba(0, 244, 253, 0.1) solid;
  849. }
  850. .se-content .el-tabs__nav-scroll {
  851. border-bottom: 0px rgba(0, 244, 253, 0.1) solid;
  852. }
  853. .se-content .el-tabs__nav {
  854. /* width: 100%; */
  855. width: calc(130px * 9);
  856. float: none !important;
  857. margin: auto;
  858. }
  859. .se-content .preservation {
  860. min-height: 35px !important;
  861. line-height: 10px;
  862. height: 35px;
  863. margin: 5px 0.4rem 5px 0px;
  864. }
  865. .se-content #tab-flow {
  866. border-left: 1px rgba(0, 244, 253, 0.1) solid;
  867. }
  868. #pane-second .block {
  869. margin-top: 3px;
  870. }
  871. #pane-second .el-input__inner {
  872. width: 414px !important;
  873. height: 30px !important;
  874. line-height: 30px !important;
  875. background-color: transparent;
  876. border: 1px solid rgba(3, 107, 119, 1);
  877. }
  878. #pane-second span {
  879. font-size: 0.2rem;
  880. padding: 0 10px;
  881. font-family: Microsoft YaHei Regular, Microsoft YaHei Regular-Regular;
  882. }
  883. #pane-second .el-range-input {
  884. background-color: transparent;
  885. color: #fff;
  886. }
  887. #pane-second .el-range-separator {
  888. line-height: 20px;
  889. color: #fff;
  890. }
  891. </style>
  892. <style>
  893. .Site-details {
  894. width: 98%;
  895. /* opacity: 0.2; */
  896. background-color: rgba(0, 244, 253, 0.1);
  897. border: 1px solid rgba(0, 244, 253, 0.1);
  898. margin: 0 auto;
  899. margin-top: 5px;
  900. }
  901. .el-tabs__nav-wrap {
  902. margin-bottom: 0px;
  903. }
  904. .el-tabs__nav-scroll {
  905. border-bottom: 1px rgba(0, 244, 253, 0.1) solid;
  906. margin: 0 auto;
  907. }
  908. .el-tabs__item {
  909. width: 130px !important;
  910. height: 40px !important;
  911. color: #ffffff !important;
  912. text-align: center;
  913. padding: 0 !important;
  914. /* padding: 0 1px !important; */
  915. border-right: 1px rgba(0, 244, 253, 0.1) solid;
  916. }
  917. .el-tabs__item.is-active {
  918. color: rgba(0, 244, 253, 1) !important;
  919. }
  920. .el-tabs__active-bar {
  921. width: 130px !important;
  922. top: 0;
  923. background: #4bf4f9;
  924. }
  925. .el-tabs__nav-wrap::after {
  926. bottom: revert;
  927. height: 1px !important;
  928. background-color: rgba(0, 244, 253, 0.1) !important;
  929. }
  930. .ac-content {
  931. height: 100%;
  932. }
  933. .ac-content .el-tabs__header {
  934. width: 260px;
  935. margin: 0 auto;
  936. }
  937. .ac-content .el-tabs__item.is-active {
  938. background: rgba(6, 68, 83, 1) !important;
  939. }
  940. .ac-content .el-tabs__active-bar {
  941. width: 130px !important;
  942. top: 0;
  943. background: transparent;
  944. }
  945. .ac-content .el-tabs__item {
  946. border-left: 1px rgba(0, 244, 253, 0.1) solid;
  947. border-top: 1px rgba(0, 244, 253, 0.1) solid;
  948. }
  949. .primary {
  950. position: absolute;
  951. top: 0;
  952. right: 10px;
  953. min-height: 34px !important;
  954. line-height: 8px;
  955. z-index: 10;
  956. }
  957. </style>
  958. <style>
  959. /*
  960. 模拟量css样式
  961. */
  962. .ac-content .model > div {
  963. width: 25%;
  964. height: 580px;
  965. margin-top: 10px;
  966. }
  967. .ac-content .model .display {
  968. display: flex;
  969. }
  970. .ac-content .model .display div:nth-child(1) {
  971. height: 36px;
  972. line-height: 36px;
  973. border-bottom: 1px solid rgba(0, 244, 253, 0.1);
  974. text-align: right;
  975. width: 50%;
  976. color: rgba(255, 255, 255, 1);
  977. }
  978. .ac-content .model .display div:nth-child(2) {
  979. height: 36px;
  980. line-height: 36px;
  981. border-bottom: 1px solid rgba(0, 244, 253, 0.1);
  982. width: 50%;
  983. text-align: left;
  984. padding-left: 0.7rem;
  985. color: rgba(1, 201, 208, 1);
  986. }
  987. </style>
  988. <style>
  989. /*
  990. 状态量css样式
  991. */
  992. .ac-content .states {
  993. display: flex;
  994. }
  995. .ac-content .states > div {
  996. width: 50%;
  997. }
  998. .ac-content .states .display {
  999. color: rgba(1, 201, 208, 1);
  1000. font-size: 15px;
  1001. font-family: Microsoft YaHei Regular, Microsoft YaHei Regular-Regular;
  1002. font-weight: 400;
  1003. }
  1004. .ac-content .states .display > div:nth-child(1) {
  1005. border-bottom: 1px solid rgba(0, 244, 253, 0.1);
  1006. width: 100%;
  1007. height: 36px;
  1008. line-height: 36px;
  1009. text-align: right;
  1010. }
  1011. .ac-content .states .display > div:nth-child(2) {
  1012. border-bottom: 1px solid rgba(0, 244, 253, 0.1);
  1013. width: 100%;
  1014. height: 36px;
  1015. line-height: 36px;
  1016. text-align: right;
  1017. }
  1018. .ac-content .states .display .name {
  1019. width: 75%;
  1020. }
  1021. .ac-content .states .display .name1 {
  1022. width: 3.5rem;
  1023. }
  1024. .ac-content .states .display .state_ON {
  1025. width: 44px;
  1026. height: 24px;
  1027. background: url(./../../assets/images/state_ON.png) no-repeat;
  1028. background-size: cover;
  1029. margin-top: 0.1rem;
  1030. margin-left: 0.2rem;
  1031. }
  1032. .ac-content .states .display .state_OFF {
  1033. width: 44px;
  1034. height: 24px;
  1035. background: url(./../../assets/images/state_OFF.png) no-repeat;
  1036. background-size: cover;
  1037. margin-top: 6px;
  1038. margin-left: 0.2rem;
  1039. }
  1040. </style>