| | |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | ul { |
| | | .card { |
| | | list-style-type: none; |
| | | display: grid; |
| | | grid-template-columns: repeat(auto-fit, 375px); |
| | | justify-content: center; |
| | | grid-template-columns: repeat(auto-fit, 415px); |
| | | /* justify-content: center; */ |
| | | grid-gap: 16px; |
| | | min-height: 300px; |
| | | } |
| | | ul li{ |
| | | width: 375px; |
| | | .card li{ |
| | | width: 415px; |
| | | height: 165px; |
| | | border-radius: 8px 8px 8px 8px; |
| | | border: 1px solid #EEEEEE; |
| | |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | ul li .img{ |
| | | .card li .img{ |
| | | width: 114px; |
| | | height: 114px; |
| | | border-radius: 16px; |
| | | margin-right: 24px; |
| | | } |
| | | .list-left .list-left-info{ |
| | | line-height: 30px; |
| | | line-height: 36px; |
| | | display: flex; |
| | | } |
| | | .text-truncate { |
| | |
| | | <div class="role_manage"> |
| | | <div> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;">设备总览</el-col> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">设备总览</el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">状态:</div> |
| | | <el-select v-model="searchForm.status" placeholder="全部" size="small"> |
| | | <el-select v-model="entity.deviceStatus" placeholder="全部" size="small"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">设备名称:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="searchForm.name" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="entity.deviceName"></el-input></div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | <el-button size="small" type="primary" @click="currentPage= 1,keyMap = {},list=[],finishLoding = false,refreshTable()">查 询</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ul v-loading="loading" @scroll="scrollFn"> |
| | | <div class="table" v-loading="loading"> |
| | | <scroll-pagination @load="refreshTable" :finishLoding="finishLoding" :list="list" v-if="list.length>0||loading"> |
| | | <ul class="card"> |
| | | <li v-for="(m,i) in list" :key="i"> |
| | | <el-image class="img"> |
| | | <el-image class="img" :src="javaApi+'/img/'+m.imageUpload"> |
| | | <div slot="error" class="image-error" style="width: 112px; |
| | | height: 112px; |
| | | border-radius: 16px; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | border: 1px solid #EEEEEE;"> |
| | | <i class="el-icon-picture-outline"></i> |
| | | <i class="el-icon-picture-outline" style="font-size:30px;color:#666666;"></i> |
| | | </div> |
| | | </el-image> |
| | | <div class="list-left"> |
| | | <div class="list-left-info"> |
| | | <span class="label">设备名称:</span> |
| | | <span style="color:#3A7BFA;font-size: 16px;display: inline-block; |
| | | width: 129px; word-break: break-all;" class="text-truncate">小舞灵漩涡混合器</span> |
| | | <span style="color:#3A7BFA; |
| | | font-size: 16px; |
| | | display: inline-block; |
| | | width: 129px; |
| | | word-break: break-all;" class="text-truncate">{{m.deviceName?m.deviceName:'无'}}</span> |
| | | </div> |
| | | <div class="list-left-info"> |
| | | <span class="label">规格型号:</span> |
| | | <span style="color:#333333;font-size: 16px;">CASJTS-C004-01</span> |
| | | <span style="color:#333333;font-size: 16px;">{{m.specificationModel?m.specificationModel:'无'}}</span> |
| | | </div> |
| | | <div class="list-left-info"> |
| | | <span class="label">状态:</span> |
| | | <el-tag :type="m.type">标签五</el-tag> |
| | | <el-tag :type="m.type" v-if="m.deviceStatusName">{{m.deviceStatusName}}</el-tag> |
| | | <span v-else style="color:#333333;font-size: 16px;">无</span> |
| | | </div> |
| | | </div> |
| | | <div class="circles" :class="m.type"> |
| | |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-if="list.length<1&&!loading&&!isLoding&&!finishLoding" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >暂无数据</div> |
| | | <div v-if="!noMore&&list.length>0"> |
| | | <el-button |
| | | v-show="isLoding" |
| | | type="text" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | ><i class="el-icon-loading"></i |
| | | ></el-button> |
| | | <el-button |
| | | type="text" |
| | | v-show="finishLoding" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | >已经没有更多啦~</el-button |
| | | > |
| | | </div> |
| | | </scroll-pagination> |
| | | <div v-if="list.length<1&&!loading" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >暂无数据</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ScrollPagination from '../tool/scroll-paging.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | | data() { |
| | | return { |
| | | entity:{ |
| | | deviceStatus: null, |
| | | deviceName: null, |
| | | orderBy: {field: "id", order: "asc"} |
| | | }, |
| | | options:[], |
| | | // 搜索表单 |
| | | searchForm:{}, |
| | | list:[ |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'success' |
| | | }, |
| | | { |
| | | type:'success' |
| | | }, |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'danger' |
| | | }, |
| | | { |
| | | type:'warning' |
| | | }, |
| | | { |
| | | type:'warning' |
| | | }, |
| | | ], |
| | | noMore: false, // 搜索结果无的展示 |
| | | list:[], |
| | | currentPage: 1, // 当前页 |
| | | pageSize: 12, // 一页12条 |
| | | pageSize: 16, // 一页16条 |
| | | total: '', |
| | | loading: false, // 组件loading的展示,默认为true |
| | | isLoding: false, // 加载中,loading图标,默认为true |
| | | finishLoding: false // 加载完成,显示已经没有更多了 |
| | | loading: true, // 组件loading的展示,默认为true |
| | | finishLoding: false, // 加载完成,显示已经没有更多了 |
| | | keyMap: {} |
| | | } |
| | | }, |
| | | created() { |
| | | this.selectEnumByCategory() |
| | | this.keyMap = {}; |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.refreshTable(); |
| | | }, |
| | | mounted() { |
| | | // window.addEventListener("scroll", this.throttle(this.scrollFn, 500)); |
| | | }, |
| | | destroyed() { |
| | | // window.removeEventListener("scroll", this.throttle(), false); |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | this.loading = true |
| | | this.isLoding = true |
| | | this.$axios.get(this.$api.deviceScope.selectEquipmentOverview).then(res => { |
| | | console.log(11111,res) |
| | | const key = `_${this.currentPage}` |
| | | const value = this.keyMap[key] |
| | | // 如果value存在,表示缓存有值,那么阻止请求 |
| | | if(value) { |
| | | return |
| | | } |
| | | // value不存在,表示第一次请求,设置占位 |
| | | this.keyMap[key] = 'temp' |
| | | if(this.currentPage==1){ |
| | | this.loading = true |
| | | } |
| | | this.$axios.post(this.$api.deviceScope.selectDeviceParameter,{ |
| | | page: { |
| | | current: this.currentPage, |
| | | size: this.pageSize |
| | | }, |
| | | entity: this.entity |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | if(res.code==200){ |
| | | this.total = res.data.body.total |
| | | let list = res.data.body.records.map(m=>{ |
| | | switch (m.deviceStatus){ |
| | | case 0: |
| | | // 正常 |
| | | m.type ='success' |
| | | break; |
| | | case 1: |
| | | // 报废 |
| | | m.type ='warning' |
| | | break; |
| | | case 2: |
| | | // 保修 |
| | | m.type ='danger' |
| | | break; |
| | | } |
| | | this.options.forEach(j=>{ |
| | | if(m.deviceStatus==j.value){ |
| | | m.deviceStatusName = j.label |
| | | } |
| | | }) |
| | | return m; |
| | | }) |
| | | if(list.length==0){ |
| | | this.finishLoding = true; |
| | | }else{ |
| | | if(list.length<this.pageSize){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.list = this.list.concat(list) |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | } |
| | | this.loading = false |
| | | }) |
| | | // allCoursesList({ |
| | | // currentPage: this.currentPage, |
| | | // pageSize: this.pageSize, |
| | | // keyword: this.$route.query.keywords |
| | | // }).then((res) => { |
| | | // if (res.data.code === 0) { |
| | | // this.loading = false |
| | | // this.keyWordsCoursesList = [...res.data.data.rows] |
| | | // this.total = res.data.data.total |
| | | // if (this.keyWordsCoursesList.length === 0) { |
| | | // this.noMore = true; |
| | | // } |
| | | // } |
| | | // }); |
| | | }, |
| | | refresh() { |
| | | |
| | | this.keyMap = {}; |
| | | this.currentPage= 1; |
| | | this.list=[]; |
| | | this.finishLoding = false; |
| | | this.entity={ |
| | | deviceStatus: null, |
| | | deviceName: null, |
| | | orderBy: {field: "id", order: "asc"} |
| | | }; |
| | | this.refreshTable() |
| | | }, |
| | | // 获取字典 |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "设备状态" |
| | | }).then(res => { |
| | | this.options = res.data |
| | | }) |
| | | }, |
| | | // 滚动触底加载 |
| | | scrollFn() { |
| | |
| | | scrollTop + clientHeight >= scrollHeight - height && |
| | | scrollHeight != 0 |
| | | ) { |
| | | if (this.pageSize > this.total) { |
| | | this.isLoding = false; |
| | | this.finishLoding = true; |
| | | window.removeEventListener("scroll", this.throttle(), false); |
| | | }else{ |
| | | this.currentPage + 1; |
| | | this.pageSize = this.pageSize += 12; |
| | | if (!this.finishLoding&&this.currentPage*this.pageSize<this.total) { |
| | | this.currentPage = this.currentPage + 1; |
| | | this.refreshTable(); |
| | | } |
| | | } else { |
| | |
| | | } |
| | | }; |
| | | }, |
| | | } |
| | | }, |
| | | destroyed() { |
| | | window.removeEventListener("scroll", this.throttle(), false); |
| | | }, |
| | | } |
| | | </script> |