index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <template>
  2. <div class="dustMonitor">
  3. <customHeader>粉尘监测报表分析</customHeader>
  4. <div class="content-container">
  5. <div class="file-list">
  6. <ul>
  7. <li v-for="item in selectList" :key="item.id" :class="{ selected: item.id === selectedFileId }" @click="handleFileClick(item)">
  8. {{ item.fileName }}
  9. </li>
  10. </ul>
  11. </div>
  12. <div class="table-container">
  13. <a-table :columns="computedColumns" :data-source="tableData" size="small" :pagination="false" :scroll="{ y: 330 }" class="tableW">
  14. <template #bodyCell="{ record, column }">
  15. <template v-if="record[column.dataIndex] === null">
  16. <span>-</span>
  17. </template>
  18. </template>
  19. </a-table>
  20. <div class="tab-container">
  21. <a-tabs v-model:activeKey="activeTab">
  22. <a-tab-pane key="workplace" class="tab1" tab="监测地点粉尘情况分析">
  23. <div class="filter-container" v-if="workplaceList.length > 0">
  24. <a-select
  25. :key="DefaultValue"
  26. :default-value="DefaultValue"
  27. v-model="selectedWorkplace"
  28. @change="workPlaceChange"
  29. placeholder="选择工作场所"
  30. style="width: 280px; margin: 5px"
  31. >
  32. <a-select-option v-for="workplace in workplaceList" :key="workplace.index" :value="workplace">
  33. {{ workplace }}
  34. </a-select-option>
  35. </a-select>
  36. </div>
  37. <a-table
  38. :columns="DataComputedColumns"
  39. :data-source="filteredResultByWorkplace"
  40. :pagination="false"
  41. size="small"
  42. :scroll="updateScrollPosition"
  43. class="tableW"
  44. />
  45. </a-tab-pane>
  46. <a-tab-pane key="overall" class="tab2" tab="当日粉尘情况分析">
  47. <a-table
  48. :columns="AllDataComputedColumns"
  49. :data-source="AllMaxValues"
  50. size="small"
  51. :pagination="false"
  52. :scroll="{ y: 280 }"
  53. class="tableW"
  54. />
  55. </a-tab-pane>
  56. </a-tabs>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </template>
  62. <script setup lang="ts">
  63. import { ref, onMounted, reactive, computed, watch, nextTick } from 'vue';
  64. import {
  65. columns,
  66. Dltcolumns,
  67. Swcolumns,
  68. Hjtcolumns,
  69. Bdcolumns,
  70. dataColumns,
  71. dataDltColumns,
  72. dataSwColumns,
  73. dataHjtColumns,
  74. dataBdColumns,
  75. AllDataColumns,
  76. AllDataDltColumns,
  77. AllDataSwColumns,
  78. AllDataHjtColumns,
  79. AllDataBdColumns,
  80. } from './dust-table.data';
  81. import { getDustInfoList, getAllFileList, getAllFileListById } from './dsut-table.api';
  82. import customHeader from '/@/components/vent/customHeader.vue';
  83. import { result } from 'lodash-es';
  84. // import { nextTick } from 'process';
  85. import { useGlobSetting } from '/@/hooks/setting';
  86. let tableData = ref<any[]>([]);
  87. let selectList = ref<any[]>([]);
  88. let resultByWorkplace = ref<any[]>([]);
  89. let AllMaxValues = ref<any[]>([]);
  90. let resultValues = ref<any[]>([]);
  91. let filteredResultByWorkplace = ref<any[]>([]); //根据工作场所查询的数据
  92. let workplaceList = ref<any[]>([]); //根据工作场所查询的数据
  93. let activeTab = ref<string>('workplace');
  94. let selectedFileId = ref<string | null>(null);
  95. let selectedWorkplace = ref<string | null>(null);
  96. let DefaultValue = ref<string | null>(null);
  97. const { sysOrgCode } = useGlobSetting();
  98. let formSearch = reactive({
  99. pageNum: 1,
  100. pageSize: 1000,
  101. id: '',
  102. fileName: '',
  103. });
  104. const updateScrollPosition = computed(() => {
  105. return {
  106. y: workplaceList.value.length > 0 ? 240 : 280,
  107. };
  108. });
  109. //获取粉尘监测列展示数据
  110. const computedColumns = computed(() => {
  111. switch (sysOrgCode) {
  112. case 'sdmtjtbetmk':
  113. return columns; // 布尔台对应的列配置
  114. case 'sdmtjtdltmk':
  115. return Dltcolumns; // 大柳塔对应的列配置
  116. case 'sdmtjtswmk':
  117. return Swcolumns; // 上湾对应的列配置
  118. case 'sdmtjtdltmkhjtj':
  119. return Hjtcolumns; // 活鸡兔对应的列配置
  120. case 'sdmtjtBdmk':
  121. return Bdcolumns; // 保德对应的列配置
  122. default:
  123. return columns; // 默认情况下返回的列配置
  124. }
  125. });
  126. const AllDataComputedColumns = computed(() => {
  127. switch (sysOrgCode) {
  128. case 'sdmtjtbetmk':
  129. return AllDataColumns; // 布尔台对应的列配置
  130. case 'sdmtjtdltmk':
  131. return AllDataDltColumns; // 大柳塔对应的列配置
  132. case 'sdmtjtswmk':
  133. return AllDataSwColumns; // 上湾对应的列配置
  134. case 'sdmtjtdltmkhjtj':
  135. return AllDataHjtColumns; // 活鸡兔对应的列配置
  136. case 'sdmtjtBdmk':
  137. return AllDataBdColumns; // 保德对应的列配置
  138. default:
  139. return AllDataColumns; // 默认情况下返回的列配置
  140. }
  141. });
  142. const DataComputedColumns = computed(() => {
  143. switch (sysOrgCode) {
  144. case 'sdmtjtbetmk':
  145. return dataColumns; // 布尔台对应的列配置
  146. case 'sdmtjtdltmk':
  147. return dataDltColumns; // 大柳塔对应的列配置
  148. case 'sdmtjtswmk':
  149. return dataSwColumns; // 上湾对应的列配置
  150. case 'sdmtjtdltmkhjtj':
  151. return dataHjtColumns; // 活鸡兔对应的列配置
  152. case 'sdmtjtBdmk':
  153. return dataBdColumns; // 保德对应的列配置
  154. default:
  155. return dataColumns; // 默认情况下返回的列配置
  156. }
  157. });
  158. //获取粉尘监测结果数据
  159. async function getTableList(params: any) {
  160. let res = await getDustInfoList({ type: 'smoke', ...params });
  161. const content = res.content;
  162. let contentArr = JSON.parse(content);
  163. tableData.value = contentArr;
  164. processTableData(contentArr);
  165. if (workplaceList.value.length > 0) {
  166. console.log(workplaceList.value, 'workplaceList');
  167. DefaultValue.value = workplaceList.value[0];
  168. workPlaceChange(selectedWorkplace.value);
  169. }
  170. }
  171. async function getTableListById(params: any) {
  172. let res = await getAllFileListById({ ...params });
  173. const content = res.content;
  174. let contentArr = JSON.parse(content);
  175. tableData.value = contentArr;
  176. processTableData(contentArr);
  177. if (workplaceList.value.length > 0) {
  178. console.log(workplaceList.value, 'workplaceList');
  179. DefaultValue.value = workplaceList.value[0];
  180. workPlaceChange(selectedWorkplace.value);
  181. }
  182. }
  183. // 处理 tableData 数据
  184. function processTableData(data: any) {
  185. // 根据 gzcs 字段进行分组
  186. const groupedData = data.reduce((acc: any, item: any) => {
  187. const workplace = item.gzcs;
  188. if (!acc[workplace]) {
  189. acc[workplace] = [];
  190. }
  191. acc[workplace].push(item);
  192. return acc;
  193. }, {});
  194. // 筛选每个工作场所下的最大值
  195. const result = Object.keys(groupedData).flatMap((workplace) => {
  196. const items = groupedData[workplace];
  197. const maxValues = [
  198. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  199. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  200. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  201. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  202. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  203. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  204. { key: 'zcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  205. { key: 'zcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  206. { key: 'hcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  207. { key: 'hcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  208. ];
  209. const DltMaxValues = [
  210. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  211. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  212. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  213. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  214. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  215. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  216. ];
  217. const SwMaxValues = [
  218. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  219. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  220. ];
  221. const HjtMaxValues = [
  222. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  223. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  224. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  225. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  226. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  227. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  228. ];
  229. const BdMaxValues = [
  230. { key: 'qc', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  231. { key: 'hc', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: workplace },
  232. ];
  233. items.forEach((item: any) => {
  234. maxValues.forEach((maxValue) => {
  235. if (item[maxValue.key] > maxValue.value) {
  236. maxValue.value = item[maxValue.key];
  237. maxValue.gz = item.gz;
  238. maxValue.jcdd = item.jcdd;
  239. maxValue.fczl = item.fczl;
  240. }
  241. });
  242. DltMaxValues.forEach((maxValue) => {
  243. if (item[maxValue.key] > maxValue.value) {
  244. maxValue.value = item[maxValue.key];
  245. maxValue.gz = item.gz;
  246. maxValue.jcdd = item.jcdd;
  247. maxValue.fczl = item.fczl;
  248. maxValue.gzcs = item.gzcs;
  249. }
  250. });
  251. SwMaxValues.forEach((maxValue) => {
  252. if (item[maxValue.key] > maxValue.value) {
  253. maxValue.value = item[maxValue.key];
  254. maxValue.gz = item.gz;
  255. maxValue.jcdd = item.jcdd;
  256. maxValue.fczl = item.fczl;
  257. maxValue.gzcs = item.gzcs;
  258. }
  259. });
  260. HjtMaxValues.forEach((maxValue) => {
  261. if (item[maxValue.key] > maxValue.value) {
  262. maxValue.value = item[maxValue.key];
  263. maxValue.gz = item.gz;
  264. maxValue.jcdd = item.jcdd;
  265. maxValue.fczl = item.fczl;
  266. maxValue.gzcs = item.gzcs;
  267. }
  268. });
  269. BdMaxValues.forEach((maxValue) => {
  270. if (item[maxValue.key] > maxValue.value) {
  271. maxValue.value = item[maxValue.key];
  272. maxValue.gz = item.gz;
  273. maxValue.jcdd = item.jcdd;
  274. maxValue.fczl = item.fczl;
  275. maxValue.gzcs = item.gzcs;
  276. }
  277. });
  278. });
  279. switch (sysOrgCode) {
  280. case 'sdmtjtbetmk':
  281. return maxValues; // 布尔台对应的列配置
  282. case 'sdmtjtdltmk':
  283. return DltMaxValues; // 大柳塔对应的列配置
  284. case 'sdmtjtswmk':
  285. return SwMaxValues; // 上湾对应的列配置
  286. case 'sdmtjtdltmkhjtj':
  287. return HjtMaxValues; // 活鸡兔对应的列配置
  288. case 'sdmtjtBdmk':
  289. return BdMaxValues; // 保德对应的列配置
  290. default:
  291. return maxValues; // 默认情况下返回的列配置
  292. }
  293. });
  294. resultByWorkplace.value = result;
  295. workplaceList.value = Array.from(new Set(resultByWorkplace.value.map((item) => item.gzcs)));
  296. if (workplaceList.value.length > 0) {
  297. selectedWorkplace.value = workplaceList.value[0];
  298. workPlaceChange(selectedWorkplace.value);
  299. }
  300. // 筛选整个 tableData 下的最大值
  301. const overallMaxValues = [
  302. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  303. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  304. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  305. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  306. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  307. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  308. { key: 'zcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  309. { key: 'zcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  310. { key: 'hcrxd_ds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  311. { key: 'hcrxd_jqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  312. ];
  313. const overallDltMaxValues = [
  314. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  315. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  316. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  317. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  318. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  319. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  320. ];
  321. const overallSwMaxValues = [
  322. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  323. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  324. ];
  325. const overallHjtMaxValues = [
  326. { key: 'sc_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  327. { key: 'jx_zcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  328. { key: 'sc_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  329. { key: 'jx_hcds', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  330. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  331. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  332. ];
  333. const overallBdMaxValues = [
  334. { key: 'zcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  335. { key: 'hcjqpj', value: -Infinity, gz: '', jcdd: '', fczl: '', gzcs: '' },
  336. ];
  337. data.forEach((item: any) => {
  338. overallMaxValues.forEach((maxValue) => {
  339. if (item[maxValue.key] > maxValue.value) {
  340. maxValue.value = item[maxValue.key];
  341. maxValue.gz = item.gz;
  342. maxValue.jcdd = item.jcdd;
  343. maxValue.fczl = item.fczl;
  344. maxValue.gzcs = item.gzcs;
  345. }
  346. });
  347. overallDltMaxValues.forEach((maxValue) => {
  348. if (item[maxValue.key] > maxValue.value) {
  349. maxValue.value = item[maxValue.key];
  350. maxValue.gz = item.gz;
  351. maxValue.jcdd = item.jcdd;
  352. maxValue.fczl = item.fczl;
  353. maxValue.gzcs = item.gzcs;
  354. }
  355. });
  356. overallSwMaxValues.forEach((maxValue) => {
  357. if (item[maxValue.key] > maxValue.value) {
  358. maxValue.value = item[maxValue.key];
  359. maxValue.gz = item.gz;
  360. maxValue.jcdd = item.jcdd;
  361. maxValue.fczl = item.fczl;
  362. maxValue.gzcs = item.gzcs;
  363. }
  364. });
  365. overallHjtMaxValues.forEach((maxValue) => {
  366. if (item[maxValue.key] > maxValue.value) {
  367. maxValue.value = item[maxValue.key];
  368. maxValue.gz = item.gz;
  369. maxValue.jcdd = item.jcdd;
  370. maxValue.fczl = item.fczl;
  371. maxValue.gzcs = item.gzcs;
  372. }
  373. });
  374. overallBdMaxValues.forEach((maxValue) => {
  375. if (item[maxValue.key] > maxValue.value) {
  376. maxValue.value = item[maxValue.key];
  377. maxValue.gz = item.gz;
  378. maxValue.jcdd = item.jcdd;
  379. maxValue.fczl = item.fczl;
  380. maxValue.gzcs = item.gzcs;
  381. }
  382. });
  383. });
  384. AllMaxValues = computed(() => {
  385. switch (sysOrgCode) {
  386. case 'sdmtjtbetmk':
  387. return overallMaxValues; // 布尔台对应的列配置
  388. case 'sdmtjtdltmk':
  389. return overallDltMaxValues; // 大柳塔对应的列配置
  390. case 'sdmtjtswmk':
  391. return overallSwMaxValues; // 上湾对应的列配置
  392. case 'sdmtjtdltmkhjtj':
  393. return overallHjtMaxValues; // 活鸡兔对应的列配置
  394. case 'sdmtjtBdmk':
  395. return overallBdMaxValues; // 保德对应的列配置
  396. default:
  397. return overallMaxValues; // 默认情况下返回的列配置
  398. }
  399. });
  400. }
  401. //获取所有文件列表
  402. async function getAllFile() {
  403. let res = await getAllFileList({ type: 'smoke' });
  404. selectList.value = res.records.map((item: any) => ({
  405. id: item.id,
  406. fileName: item.fileName,
  407. }));
  408. if (selectList.value.length > 0) {
  409. formSearch.id = selectList.value[0].id;
  410. getSearch();
  411. }
  412. }
  413. //查询
  414. // 处理文件点击事件
  415. function handleFileClick(item: any) {
  416. formSearch.id = item.id;
  417. formSearch.fileName = item.fileName;
  418. selectedFileId.value = item.id;
  419. getSearch();
  420. }
  421. function getSearch() {
  422. // const selectedFile = selectList.value.find((item) => item.id === formSearch.id);
  423. const params = {
  424. id: formSearch.id,
  425. // fileName: selectedFile ? selectedFile.fileName : '',
  426. };
  427. getTableListById(params);
  428. // getTableList(params);
  429. }
  430. function workPlaceChange(value: any) {
  431. selectedWorkplace.value = value;
  432. filteredResultByWorkplace.value = resultByWorkplace.value.filter((item) => item.gzcs === value);
  433. }
  434. onMounted(() => {
  435. getTableList({ type: 'smoke' });
  436. getAllFile().then(() => {
  437. if (selectList.value.length > 0) {
  438. formSearch.id = selectList.value[0].id;
  439. selectedFileId.value = selectList.value[0].id;
  440. getSearch();
  441. }
  442. });
  443. });
  444. </script>
  445. <style lang="less" scoped>
  446. @import '/@/design/theme.less';
  447. .content-container {
  448. display: flex;
  449. width: 100%;
  450. height: 100%;
  451. padding-top: 54px;
  452. }
  453. .file-list {
  454. width: 20%;
  455. padding: 10px;
  456. margin-right: 10px;
  457. margin-bottom: 40px;
  458. border: 1px solid #99e8ff66;
  459. background: #27546e1a;
  460. box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
  461. -moz-box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
  462. -webkit-box-shadow: 0px 0px 50px 1px rgb(149 235 255 / 5%) inset;
  463. }
  464. .file-list ul {
  465. list-style: none;
  466. padding: 0;
  467. }
  468. .file-list li {
  469. color: #fff;
  470. padding: 5px;
  471. cursor: pointer;
  472. }
  473. .file-list li:hover,
  474. .file-list li.selected {
  475. background: #1c4869;
  476. }
  477. .table-container {
  478. margin-top: 10px;
  479. width: 80%;
  480. box-sizing: border-box;
  481. }
  482. .tab-container {
  483. display: flex;
  484. align-items: center;
  485. padding-top: 50px;
  486. }
  487. .tab-container .ant-tabs {
  488. flex-grow: 1;
  489. }
  490. :deep(.zxm-tabs-nav) {
  491. margin: 0 !important;
  492. .zxm-tabs-tab {
  493. width: 180px;
  494. height: 45px;
  495. background: url('@/assets/images/defaultbg.png') center no-repeat;
  496. background-size: 100%;
  497. display: flex;
  498. justify-content: center;
  499. font-size: 16px;
  500. margin-right: 10px;
  501. }
  502. .zxm-tabs-tab-active {
  503. width: 180px;
  504. position: relative;
  505. background: url('@/assets/images/selected.png') center no-repeat;
  506. background-size: 100%;
  507. .zxm-tabs-tab-btn {
  508. color: #fff !important;
  509. }
  510. }
  511. .zxm-tabs-ink-bar {
  512. width: 0 !important;
  513. }
  514. .zxm-tabs-tab + .zxm-tabs-tab {
  515. margin: 0 !important;
  516. }
  517. }
  518. .dustMonitor {
  519. width: 100%;
  520. height: 100%;
  521. padding: 10px 10px 15px 10px;
  522. box-sizing: border-box;
  523. position: relative;
  524. }
  525. :deep(.zxm-table-thead > tr > th:last-child) {
  526. border-right: 1px solid #91e9fe !important;
  527. }
  528. :deep(.zxm-picker-input > input) {
  529. color: #fff;
  530. }
  531. :deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
  532. border: 1px solid var(--vent-form-item-border) !important;
  533. background-color: #ffffff00 !important;
  534. }
  535. :deep(.zxm-select-selection-item) {
  536. color: #fff !important;
  537. }
  538. </style>