| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="device-page"> |
| | | <div class="device-left"> |
| | | <el-input v-model="deviceName" class="div_left_input" clearable placeholder="è¾å
¥è®¾å¤åç§°" size="small" |
| | | suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" |
| | | @keyup.enter.native="searchFilter"></el-input> |
| | | <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="id" |
| | | @node-click="handleNodeClick" :filter-node-method="filterNode" highlight-current @node-expand="nodeOpen" |
| | | @node-collapse="nodeClose" v-loading="loading" :expand-on-click-node="false" style="height:calc(100% - 46px); |
| | | overflow-y: scroll; |
| | | scrollbar-width: none;"> |
| | | <div class="custom-tree-node" slot-scope="{ node, data }"> |
| | | <el-row style="width: 100%;"> |
| | | <el-col :span="21" :title="data.label"> |
| | | <span class="single-line-ellipsis" style="width: 100%;display: inline-block;"> |
| | | <i :class="`node_i ${data.children != undefined |
| | | ? data.code === '[1]' |
| | | ? 'el-icon-folder-opened' |
| | | : 'el-icon-folder' |
| | | : 'el-icon-tickets' |
| | | }` |
| | | "></i> |
| | | {{ data.label }} |
| | | </span> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-tree> |
| | | </div> |
| | | <div class="device-right"> |
| | | <div v-if="isShowAll" style="height: 100%;"> |
| | | <el-tabs v-model="menuListActiveName" class="main_right" type="border-card"> |
| | | <el-tab-pane label="è®¾å¤æ»è§" name="è®¾å¤æ»è§"> |
| | | <overview v-if="menuListActiveName == 'è®¾å¤æ»è§'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤å·¥å
·æç»" name="设å¤å·¥å
·æç»"> |
| | | <management v-if="menuListActiveName == '设å¤å·¥å
·æç»'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="èµæºé¢å®" name="èµæºé¢å®"> |
| | | <resourceReservation v-if="menuListActiveName == 'èµæºé¢å®'" :clickNodeVal="clickNodeVal"/> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="ä½ä¸æå¯¼ä¹¦" name="ä½ä¸æå¯¼ä¹¦"> |
| | | <operationInstruction v-if="menuListActiveName == 'ä½ä¸æå¯¼ä¹¦'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <div v-if="!isShowAll" style="height: 100%;"> |
| | | <el-tabs v-model="tabListActiveName" class="main_right" type="border-card" @tab-click="handleClick"> |
| | | <el-tab-pane label="设å¤è¿è¡æ»è§" name="设å¤è¿è¡æ»è§"> |
| | | <operationOverview v-if="tabListActiveName == '设å¤è¿è¡æ»è§'" :clickNodeVal="clickNodeVal"/> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è®¾å¤æ¡£æ¡" name="è®¾å¤æ¡£æ¡"> |
| | | <files v-if="tabListActiveName == 'è®¾å¤æ¡£æ¡'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤éªæ¶" name="设å¤éªæ¶"> |
| | | <checkAndAccept v-if="tabListActiveName == '设å¤éªæ¶'" :clickNodeVal="clickNodeVal"/> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è®¾å¤æ ¡å" name="è®¾å¤æ ¡å"> |
| | | <calibration v-if="tabListActiveName == 'è®¾å¤æ ¡å'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è®¾å¤æ ¸æ¥" name="è®¾å¤æ ¸æ¥"> |
| | | <check v-if="tabListActiveName == 'è®¾å¤æ ¸æ¥'" :clickNodeVal="clickNodeVal"/> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤ç»´æ¤" name="设å¤ç»´æ¤"> |
| | | <maintenance v-if="tabListActiveName == '设å¤ç»´æ¤'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤åç¨" name="设å¤åç¨"> |
| | | <borrow v-if="tabListActiveName == '设å¤åç¨'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è®¾å¤æ
é" name="è®¾å¤æ
é"> |
| | | <fault v-if="tabListActiveName == 'è®¾å¤æ
é'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="使ç¨è®°å½" name="使ç¨è®°å½"> |
| | | <record v-if="tabListActiveName == '使ç¨è®°å½'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="设å¤åç¨/å¯ç¨" name="设å¤åç¨/å¯ç¨"> |
| | | <state v-if="tabListActiveName == '设å¤åç¨/å¯ç¨'" :clickNodeVal="clickNodeVal" /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import management from "./component/management.vue"; |
| | | import overview from "./component/device-overview.vue"; |
| | | import resourceReservation from "./component/resource-reservation.vue"; |
| | | import operationInstruction from "./component/operationInstruction.vue"; |
| | | import operationOverview from "./component/operationOverview.vue"; |
| | | import files from "./component/files.vue"; |
| | | import checkAndAccept from "./component/check-and-accept.vue"; |
| | | import calibration from "./component/calibration.vue"; |
| | | import check from "./component/check.vue"; |
| | | import maintenance from "./component/maintenance.vue"; |
| | | import borrow from "./component/borrow.vue"; |
| | | import fault from "./component/fault.vue"; |
| | | import record from "./component/record.vue"; |
| | | import state from "./component/state.vue"; |
| | | |
| | | import { |
| | | treeDevice, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | components: { |
| | | checkAndAccept, |
| | | operationOverview, |
| | | files, |
| | | calibration, |
| | | check, |
| | | maintenance, |
| | | borrow, |
| | | fault, |
| | | record, |
| | | state, |
| | | management, |
| | | overview, |
| | | resourceReservation, |
| | | operationInstruction |
| | | }, |
| | | data() { |
| | | return { |
| | | isShowAll: true, |
| | | deviceName: "", // ä¾§è¾¹æ æç´¢ |
| | | loading: false, |
| | | tabListActiveName: 'è®¾å¤æ¡£æ¡', |
| | | menuListActiveName: 'è®¾å¤æ»è§', |
| | | list: [], |
| | | clickNodeVal: {} |
| | | }; |
| | | }, |
| | | mounted() { |
| | | // åå§åè°ç¨ |
| | | this.geList(); |
| | | }, |
| | | methods: { |
| | | handleClick(tab, event) { |
| | | }, |
| | | searchFilter() { |
| | | this.$refs.tree.filter(this.deviceName) |
| | | }, |
| | | filterNode(value, data) { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }, |
| | | // ç¶çº§ |
| | | geList() { |
| | | this.loading = true; |
| | | treeDevice().then(res => { |
| | | let data = res.data; |
| | | this.list = data; |
| | | this.loading = false |
| | | }); |
| | | }, |
| | | handleNodeClick(val, node, el) { |
| | | // ç¹å»ä¸´æ¶ç¼å |
| | | this.clickNodeVal = val; |
| | | // åå¨ç¶çº§èç¹çº§æ° |
| | | this.clickNodeVal.level = node.level |
| | | this.clickNodeVal.parent = node.parent.data |
| | | // æ¯å¦æ¾ç¤ºè®¾å¤è¯¦æ
|
| | | if (!val.value) { |
| | | this.isShowAll = true |
| | | } else { |
| | | this.isShowAll = false |
| | | } |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | // $($(el.$el).find(".node_i")[0]).attr( |
| | | // "class", |
| | | // "node_i el-icon-folder-opened" |
| | | // ); |
| | | }, |
| | | nodeClose(data, node, el) { |
| | | // $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder"); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .device-page { |
| | | display: flex; |
| | | padding-top: 10px; |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | } |
| | | |
| | | .device-left { |
| | | width: 250px; |
| | | height: 100%; |
| | | background: #fff; |
| | | border-radius: 16px; |
| | | box-sizing: border-box; |
| | | padding: 10px 16px; |
| | | flex-shrink: 0; |
| | | padding-right: 0; |
| | | } |
| | | |
| | | .device-right { |
| | | background: #fff; |
| | | width: calc(100% - 250px); |
| | | height: calc(100vh - 100px); |
| | | border-radius: 16px; |
| | | box-sizing: border-box; |
| | | padding: 10px; |
| | | } |
| | | |
| | | .showLargeCategory { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .device-right-content { |
| | | /* margin-top: 10px; */ |
| | | height: calc(100% - 42px); |
| | | width: 100%; |
| | | } |
| | | |
| | | .custom-tree-node { |
| | | width: 100%; |
| | | line-height: 32px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .node_i { |
| | | color: orange; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .main_right { |
| | | height: calc(100% - 5px); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | >>>.el-tabs__content { |
| | | padding-top: 0; |
| | | } |
| | | |
| | | >>>.single-line-ellipsis { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | >>>.el-tree-node__content { |
| | | text-align: left; |
| | | align-items: start; |
| | | margin: 4px; |
| | | height: 100%; |
| | | } |
| | | </style> |