大屏二级工程信息带出

This commit is contained in:
jjLv 2024-12-13 08:44:13 +08:00
parent dcb863bef2
commit 8890e61eb6
10 changed files with 18894 additions and 15 deletions

17810
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,8 @@
"build": "node build/build.js" "build": "node build/build.js"
}, },
"dependencies": { "dependencies": {
"@jiaminghi/data-view": "^2.10.0",
"autofit.js": "^3.1.1",
"axios": "^0.21.1", "axios": "^0.21.1",
"echarts": "^5.4.1", "echarts": "^5.4.1",
"echarts-gl": "^2.0.9", "echarts-gl": "^2.0.9",
@ -33,8 +35,6 @@
"vuex": "^3.6.2" "vuex": "^3.6.2"
}, },
"devDependencies": { "devDependencies": {
"@jiaminghi/data-view": "^2.10.0",
"autofit.js": "^3.1.1",
"autoprefixer": "^7.1.2", "autoprefixer": "^7.1.2",
"babel-core": "^6.22.1", "babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",

BIN
src/assets/img/device.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/assets/img/title-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -18,7 +18,6 @@ export default {
this.initMap() this.initMap()
} }
) )
}, },
beforeDestroy() { beforeDestroy() {
/** 组件销毁之前 先清除地图实例 */ /** 组件销毁之前 先清除地图实例 */
@ -41,8 +40,18 @@ export default {
this.$route.query.location[0] || 117.13805, this.$route.query.location[0] || 117.13805,
this.$route.query.location[1] || 31.8734 this.$route.query.location[1] || 31.8734
) // ) //
console.log(point, 'point--')
// let point = new BMapGL.Point(this.calLon, this.calLat) // // let point = new BMapGL.Point(this.calLon, this.calLat) //
this.map.centerAndZoom(point, 15) // this.map.centerAndZoom(point, 15) //
//
// if (this.projectList.length > 0) {
// const firstProjectPosition = new BMapGL.Point(
// this.projectList[0].longitude,
// this.projectList[0].latitude
// )
// this.map.setCenter(firstProjectPosition)
// this.map.setZoom(13) //
// }
this.map.enableScrollWheelZoom(true) // this.map.enableScrollWheelZoom(true) //
this.map.setHeading(64.5) // this.map.setHeading(64.5) //
this.map.setTilt(73) // this.map.setTilt(73) //
@ -98,7 +107,7 @@ export default {
) )
// //
// this.addInfoWindow(marker, points[i].title) // this.addInfoWindow(marker, points[i].title)
console.log(111111,points[i])
if (points[i].type === 2) { if (points[i].type === 2) {
// let opts = { // let opts = {
// width: 320, // // width: 320, //
@ -118,15 +127,35 @@ export default {
}) })
} }
marker.addEventListener('click', function (e) { if (points[i].type === 1) {
// infoWindow.open(this.map, marker) console.log('project--',points[i])
// infoWindow.setPosition(marker.getPosition()) // let opts = {
// this.map.openInfoWindow(infoWindow, this.map.getCenter()) // width: 320, //
console.log(e, '地图点击了--') // height: 280, //
_this.$emit('openDrawer', e.target.data) // title: points[i].typeModelName, //
// }
// const mapHtml = `<div style="height: 35px;line-height: 35px;letter-spacing: 1px;font-size: 16px"><span></span>${points[i].maCode}</div><div style="height: 35px;line-height: 35px;letter-spacing: 1px;;font-size: 16px"><span>${points[i].maStatus}</span></div><div style="height: 35px;line-height: 35px;letter-spacing: 1px;;font-size: 16px"><span>${points[i].projectName}</span></div><div style='border-bottom: 2px dashed #3484ff;margin:15px 0'></div><div style="height: 35px;line-height: 35px;letter-spacing: 1px;;font-size: 16px"><span>${points[i].iotId}</span></div><div style="height: 35px;line-height: 35px;letter-spacing: 1px;;font-size: 16px"><span>//${points[i].voltagepercent}%</span></div><div style="height: 35px;line-height: 35px;letter-spacing: 1px;;font-size: 16px"><span></span></div>`
const mapHtml = `<div class='my-info-windowPro'><div class='my-info-window-content'><div style="height: 35px;line-height: 35px;letter-spacing: 1px;font-size: 16px"><span>工程名称:</span>${points[i].lotName}</div><div class='my-info-window-content'><div style="height: 35px;line-height: 35px;letter-spacing: 1px;font-size: 16px"><span>地址:</span>${points[i].address}</div></div>`
let infoWindow = new BMapGL.InfoWindow(mapHtml) //
// marker.openInfoWindow(infoWindow) //
//
marker.addEventListener('mouseover', function () {
this.openInfoWindow(infoWindow, this.map.getCenter())
})
marker.addEventListener('mouseout', function () {
this.closeInfoWindow(infoWindow)
}) })
} }
// marker.addEventListener('click', function (e) {
// // infoWindow.open(this.map, marker)
// // infoWindow.setPosition(marker.getPosition())
// // this.map.openInfoWindow(infoWindow, this.map.getCenter())
// console.log(e, '--')
// _this.$emit('openDrawer', e.target.data)
// })
}
console.log('ssss',positionList)
this.map.setViewport(positionList) this.map.setViewport(positionList)
}) })
}, },
@ -137,6 +166,15 @@ export default {
province: this.$route.query.province, province: this.$route.query.province,
}) })
this.projectList = res this.projectList = res
//
// if (this.projectList.length > 0) {
// const firstProjectPosition = new BMapGL.Point(
// this.projectList[0].longitude,
// this.projectList[0].latitude
// )
// this.map.setCenter(firstProjectPosition)
// this.map.setZoom(13) //
// }
} }
}, },
// //
@ -197,9 +235,12 @@ export default {
<style> <style>
.my-info-window { .my-info-window {
margin: 15px; margin: 5px;
width: 420px; width: 420px;
} }
.my-info-windowPro {
width: 300px;
}
.my-info-window-title { .my-info-window-title {
margin: 0; margin: 0;

View File

@ -7,6 +7,21 @@ import store from './store'
import ElementUI from 'element-ui'; import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'; import 'element-ui/lib/theme-chalk/index.css';
import { Message } from 'element-ui'; import { Message } from 'element-ui';
import { fullScreenContainer, borderBox1, borderBox2, borderBox3, borderBox4, borderBox5, borderBox7, borderBox8, borderBox11, decoration6, decoration3 } from '@jiaminghi/data-view'
Vue.use(borderBox1)
Vue.use(borderBox2)
Vue.use(borderBox3)
Vue.use(borderBox4)
Vue.use(borderBox5)
Vue.use(borderBox7)
Vue.use(borderBox8)
Vue.use(borderBox11)
Vue.use(borderBox8)
Vue.use(decoration3)
Vue.use(decoration6)
Vue.use(fullScreenContainer)
Vue.prototype.$eventBus = new Vue() Vue.prototype.$eventBus = new Vue()
Vue.config.productionTip = false; Vue.config.productionTip = false;

View File

@ -0,0 +1,525 @@
<template>
<div class="drawer-container">
<div class="drawer-left">
<h1 class="title-content">{{ queryParams.typeModelName }}</h1>
<ul class="info-list">
<li>
<span>机具设备编码{{ queryParams.maCode }}</span>
<span>{{ queryParams.maStatus }}</span>
</li>
<li>领用工程{{ queryParams.projectName }} <span></span></li>
<li>定位设备编号{{ queryParams.iotId }}<span></span></li>
</ul>
<div class="date-select">
<el-radio-group v-model="radio" @change="onChangeRadio" ref="radio">
<el-radio :label="1">当天</el-radio>
<el-radio :label="2">本月</el-radio>
</el-radio-group>
<el-date-picker
v-model="queryForm.date"
type="datetimerange"
range-separator="至"
start-placeholder="请选择开始日期"
end-placeholder="请选择结束日期"
value-format="yyyy-MM-dd HH:mm:ss"
@change="onChangeTime"
style="margin-left: 5px"
>
</el-date-picker>
</div>
<div class="btn-select">
<div
v-for="(item, index) in checkBtnList"
:key="index"
:class="{ active: activeIndex === index }"
@click="handleCheck(index)"
>
{{ item.title }}
</div>
</div>
<div class="location-list" v-loading="loading">
<template v-if="activeIndex === 0">
<template v-if="tripList.length > 0">
<div
v-for="(item, index) in tripList"
:key="index"
@click="handleTrip(item, index)"
class="trip-container"
:class="{ activeIndex: activeIndexTrip === index }"
>
<!-- <div>里程10KM</div>
<div>时长30分种</div> -->
<div class="location-start">
<img src="../../../assets/img/start.png" alt="" />
<span>
{{ item.startTime }}
</span>
<div>
{{ item.startAddress }}
</div>
</div>
<div class="location-start">
<img src="../../../assets/img/end.png" alt="" />
<span>
{{ item.endTime }}
</span>
<div>{{ item.endAddress }}</div>
</div>
</div>
</template>
<template v-else>
{{ loading ? '数据加载中...' : '暂无数据...' }}
</template>
</template>
<template v-else>
<template v-if="parkList.length > 0">
<div
v-for="(item, index) in parkList"
:key="index"
class="trip-container"
>
<div class="location-start">
<span>{{ item.startTime }}</span>
<span>{{ item.hours }}{{ item.mints }}</span>
</div>
<div>{{ item.address }}</div>
</div>
</template>
<template v-else>
{{ loading ? '数据加载中...' : '暂无数据...' }}
</template>
</template>
</div>
</div>
<div class="drawer-right">
<div id="drawer-map-container"></div>
</div>
</div>
</template>
<script>
import { getIotDeviceTripApi, getIotDeviceParkDetailApi } from '@/api/screen.js'
import moment from 'moment'
export default {
props: {
queryParams: {
type: Object,
default: null,
},
},
data() {
return {
radio: 1,
value1: [],
map: null,
trackAni: null,
loading: false,
checkBtnList: [{ title: '行程' }, { title: '停留点' }],
activeIndex: 0,
activeIndexTrip: null,
//
tripParams: {
// beginTime: moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss'),
beginTime: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
endTime: moment().format('YYYY-MM-DD HH:mm:ss'),
iotId: '',
},
queryForm: {
date: [
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
moment().format('YYYY-MM-DD HH:mm:ss'),
],
},
//
tripList: [],
//
parkList: [],
//
linePointList: [
{
lng: '',
lat: '',
},
{
lng: '',
lat: '',
},
],
}
},
mounted() {
this.$refs.radio.$children.forEach((item) => {
item.$refs.radio.removeAttribute('aria-hidden')
})
console.log(this.queryParams, '参数---')
this.getIotDeviceTripData()
this.initMap()
},
beforeDestroy() {
// 1.
if (this.trackAni) {
this.trackAni.cancel()
}
// 2.
if (this.map) {
this.map.clearOverlays()
this.map.destroy()
this.map = null
}
},
methods: {
initMap() {
this.$nextTick(() => {
this.map = new BMapGL.Map('drawer-map-container') //
let point = new BMapGL.Point(
this.queryParams.iotLocationVo.callon,
this.queryParams.iotLocationVo.callat
) //
// let point = new BMapGL.Point(this.calLon, this.calLat) //
this.map.centerAndZoom(point, 15) //
this.map.enableScrollWheelZoom(true) //
this.map.setHeading(64.5) //
this.map.setTilt(73) //
var icon = new BMapGL.Icon(
require('../../../assets/img/location-icon.png'),
new BMapGL.Size(30, 42),
{
anchor: new BMapGL.Size(3, 10),
}
)
let marker = new BMapGL.Marker(point, { icon }) //
this.map.addOverlay(marker)
})
},
/** 筛选停留点和行程 */
handleCheck(index) {
this.activeIndex = index
},
/** 获取行程信息和停六点信息 */
async getIotDeviceTripData() {
if (!this.queryForm.date) {
this.$message.error('请选择时间范围!')
return
}
this.tripParams.iotId = this.queryParams.iotId
this.tripParams.beginTime = this.queryForm.date[0]
this.tripParams.endTime = this.queryForm.date[1]
this.loading = true
const res = await getIotDeviceTripApi(this.tripParams)
const resS = await getIotDeviceParkDetailApi(this.tripParams)
this.loading = false
this.parkList = resS.data
this.parkList.forEach((e) => {
e.startTime = moment(parseInt(e.beginTime)).format(
'YYYY-MM-DD HH:mm:ss'
)
e.hours = parseInt(
(parseInt(e.endTime) - parseInt(e.beginTime)) / 1000 / 60 / 60
)
e.mints = parseInt(
((parseInt(e.endTime) - parseInt(e.beginTime)) / 1000 / 60) % 60
)
})
let tripInfo = JSON.parse(res.msg)
let addressList = []
if (tripInfo.addressmap) {
addressList = Object.keys(tripInfo.addressmap)
}
tripInfo.totaltrips.forEach((e) => {
e.startTime = moment(e.trackstarttime).format('YYYY-MM-DD HH:mm:ss')
e.endTime = moment(e.trackendtime).format('YYYY-MM-DD HH:mm:ss')
e.drivingDuration = parseInt((e.trackendtime - e.trackstarttime) / 1000)
addressList.forEach((v) => {
if (v.indexOf(e.slat.toString().slice(0, 7)) > -1) {
e.startAddress = tripInfo.addressmap[v]
}
if (v.indexOf(e.elat.toString().slice(0, 7)) > -1) {
e.endAddress = tripInfo.addressmap[v]
}
})
})
this.tripList = tripInfo.totaltrips
console.log(this.parkList, '停留点信息', this.tripList, '行程信息')
},
/** 时间选择器 */
onChangeTime(val) {
if (val) {
this.tripParams.beginTime = val[0]
this.tripParams.endTime = val[1]
}
this.radio = null
this.getIotDeviceTripData()
},
/** 单选框change事件 */
onChangeRadio(val) {
if (val == 1) {
this.queryForm.date = [
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'),
moment().format('YYYY-MM-DD HH:mm:ss'),
]
}
if (val == 2) {
this.queryForm.date = [
moment().startOf('month').format('YYYY-MM-DD HH:mm:ss'),
moment().format('YYYY-MM-DD HH:mm:ss'),
]
}
this.getIotDeviceTripData()
},
/** 点击查看行程 */
handleTrip(item, index) {
if (this.trackAni) {
this.trackAni.cancel()
}
this.activeIndexTrip = index
this.map.clearOverlays()
let pointList = []
this.linePointList[0].lng = item.slon
this.linePointList[0].lat = item.slat
this.linePointList[1].lng = item.elon
this.linePointList[1].lat = item.elat
if (this.linePointList.length === 0) return
for (var i = 0; i < this.linePointList.length; i++) {
pointList.push(
new BMapGL.Point(this.linePointList[i].lng, this.linePointList[i].lat)
)
}
// pointList.push(new BMapGL.Point(item.slon, item.slat))
// pointList.push(new BMapGL.Point(item.elon, item.elat))
let polyline = new BMapGL.Polyline(pointList)
// 线
polyline.setStrokeColor('#EA3323') // 线 #EA3323
// polyline.setStrokeWeight(2) // 线
this.trackAni = new BMapGLLib.TrackAnimation(this.map, polyline, {
overallView: true, //
tilt: 55, // 55
duration: 800, // 10000ms
delay: 500, // 0ms
})
this.trackAni.start()
//
this.triggerMovement()
},
//
triggerMovement() {
//
let startLatLng = new BMapGL.Point(
this.linePointList[0].lng,
this.linePointList[0].lat
)
let endLatLng = new BMapGL.Point(
this.linePointList[this.linePointList.length - 1].lng,
this.linePointList[this.linePointList.length - 1].lat
)
//
this.addStartEndMarkers(startLatLng, endLatLng)
},
//
addStartEndMarkers(startLatLng, endLatLng) {
let startIcon = new BMapGL.Icon(
require('@/assets/img/startIcon.png'),
new BMapGL.Size(32, 32)
)
let startMarker = new BMapGL.Marker(startLatLng, {
icon: startIcon,
})
this.map.addOverlay(startMarker)
let endIcon = new BMapGL.Icon(
require('@/assets/img/endIcon.png'),
new BMapGL.Size(32, 32)
)
let endMarker = new BMapGL.Marker(endLatLng, { icon: endIcon })
this.map.addOverlay(endMarker)
},
},
}
</script>
<style lang="less" scoped>
//
.drawer-container {
// position: relative;
height: 100%;
width: 100%;
padding: 15px;
display: flex;
border: 1px solid #46b4ea;
box-shadow: 0 0 2px #46b4ea;
.drawer-left {
width: 30%;
padding: 0 8px;
border-right: 1px dashed #0098ee;
color: #fff;
background-color: #030c3c;
display: flex;
flex-direction: column;
ul {
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
list-style: none;
}
ul li {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.info-list {
padding-top: 10px;
border-top: 1px solid #0362a9;
li {
margin-bottom: 8px;
}
}
/deep/.el-radio__label {
color: #fff;
}
.date-select {
display: flex;
align-items: center;
}
/deep/.el-input__inner {
// width: 200px;
margin-right: 6px;
background-color: #07154a;
color: #fff;
}
/deep/ .el-range-editor .el-range-input {
background: transparent;
color: #fff;
}
.btn-select {
display: flex;
align-items: center;
margin: 8px 0;
div {
margin-right: 8px;
text-align: center;
width: 96px;
height: 44px;
line-height: 44px;
cursor: pointer;
background: url('../../../assets/img/myImage/no_active.png') no-repeat;
background-size: 100% 100%;
}
.active {
background: url('../../../assets/img/myImage/active.png') no-repeat;
}
}
.location-list {
flex: 1;
overflow: auto;
.trip-container {
margin-bottom: 8px;
padding: 15px 10px;
border: 1px solid #035ea6;
cursor: pointer;
}
div {
// padding: 6px 0;
}
.activeIndex {
background-color: #3d4883;
}
.location-start {
display: flex;
align-items: center;
justify-content: space-around;
img {
vertical-align: middle;
margin-right: 6px;
}
span {
flex: 1;
}
div {
flex: 1;
word-break: break-all;
}
}
}
}
.drawer-right {
flex: 1;
padding-left: 6px;
display: flex;
align-items: center;
background: linear-gradient(
90deg,
rgba(11, 20, 71, 1) 0%,
rgba(11, 20, 71, 0.9) 32%,
rgba(11, 20, 70, 0.5) 70%,
rgba(11, 20, 71, 0.1) 100%
);
#drawer-map-container {
width: 100%;
height: 70%;
}
}
}
/deep/ .el-radio-button__inner,
.el-radio-group {
display: flex;
}
//
*::-webkit-scrollbar {
width: 5px;
height: 5px;
}
// +
*::-webkit-scrollbar-thumb {
border-radius: 1em;
background-color: rgba(230, 237, 248, 0.3);
}
// +
*::-webkit-scrollbar-track {
border-radius: 1em;
background-color: rgba(230, 237, 248, 0.1);
}
</style>

View File

@ -0,0 +1,488 @@
<template>
<div class="drawer-container">
<div class="drawer-left">
<h1 class="title-content">{{ queryParams.lotName || '' }}</h1>
<h4 class="address-content">{{ queryParams.address || '' }}</h4>
<h4 class="user-device">在用设备</h4>
<ul>
<li class="user-num">
<span>{{ useNumJj }}</span>
<img src="../../../assets/img/device.png" />
<span>机具设备</span>
</li>
<li class="user-num">
<span>{{ useNumTs }}</span>
<img src="../../../assets/img/device.png" />
<span>调试设备</span>
</li>
</ul>
<h4 class="record-title">领料记录</h4>
<ul class="device-list">
<li v-for="(item, index) in applyList" :key="index">
<span>{{ item.createTime.split(' ')[0] }}</span>
<span>{{ item.createTime.split(' ')[1] }}</span>
<span>{{ item.typeModelName }}</span>
</li>
</ul>
<h4 class="record-title">退料记录</h4>
<ul class="device-list">
<li v-for="(item, index) in returnList" :key="index">
<span>{{ item.createTime.split(' ')[0] }}</span>
<span>{{ item.createTime.split(' ')[1] }}</span>
<span>{{ item.typeModelName }}</span>
</li>
</ul>
</div>
<div class="drawer-right">
<el-row style="padding-top: 8px">
<el-form inline :model="formParams" ref="formParamsRef">
<el-form-item prop="code">
<el-input
v-model="formParams.code"
placeholder="请输入领料单号"
clearable
/>
</el-form-item>
<el-form-item label="" prop="unitId">
<el-select
:popper-append-to-body="false"
v-model="formParams.unitId"
placeholder="请选择单位"
style="width: 100%"
clearable
>
<el-option
v-for="item in uniList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="companyId">
<el-select
:popper-append-to-body="false"
placeholder="请选择设备类型"
v-model="formParams.companyId"
style="width: 100%"
clearable
>
<el-option label="机具设备" :value="101" />
<el-option label="调试设备" :value="102" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">查询</el-button>
<el-button @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
</el-row>
<el-table :data="tableData">
<el-table-column
prop="createTime"
align="center"
label="出库时间"
></el-table-column>
<el-table-column
prop="typeName"
align="center"
label="设备类型"
></el-table-column>
<el-table-column
prop="typeModelName"
align="center"
label="规格型号"
></el-table-column>
<el-table-column
prop="preNum"
align="center"
label="出库数量"
></el-table-column>
<el-table-column
prop="typeKeepName"
align="center"
label="设备负责人"
></el-table-column>
<el-table-column
prop="code"
align="center"
label="领料单号"
></el-table-column>
<el-table-column
prop="unitName"
align="center"
label="领料申请单位"
></el-table-column>
<el-table-column
prop="proName"
align="center"
label="领料申请工程"
></el-table-column>
</el-table>
<!-- <Pagination
:total="total"
:page.sync="formParams.pageNum"
:limit.sync="formParams.pageSize"
@pagination="getList"
/> -->
<!-- <el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="formParams.pageNum"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400"
popper-class="select_bottom"
>
</el-pagination> -->
</div>
</div>
</template>
<script>
import {
getProjectOutApi,
getUnitListApi,
getProjectReturnApi,
getProjectDeviceNumApi,
} from '@/api/screen.js'
import Pagination from '@/components/Pagination/index'
export default {
components: {
Pagination,
},
props: {
queryParams: {
type: Object,
default: null,
},
},
data() {
return {
tableData: [{ demo: '999' }],
formParams: {
companyId: '',
code: '',
unitId: '',
pageNum: 1,
pageSize: 10,
lotId: '',
},
uniList: [],
applyList: [],
returnList: [],
useNumJj: 0,
useNumTs: 0,
total: 0,
}
},
mounted() {
this.getList()
this.getProjectOutData()
this.getUnitListData()
},
methods: {
async getProjectOutData() {
console.log(this.queryParams, 'this.queryParams')
if (this.queryParams && this.queryParams.lotId) {
const res = await getProjectOutApi({ lotId: this.queryParams.lotId })
const resS = await getProjectReturnApi({
lotId: this.queryParams.lotId,
})
const resSs = await getProjectDeviceNumApi({
lotId: this.queryParams.lotId,
})
this.applyList = res.data.rows
this.returnList = resS.data.rows
this.useNumJj = resSs.data.useNumJj
this.useNumTs = resSs.data.useNumTs
}
},
/** 获取单位数据 */
async getUnitListData() {
const { data: res } = await getUnitListApi({})
this.uniList = res
},
/** 获取列表数据 */
async getList() {
this.formParams.lotId = this.queryParams.lotId
const res = await getProjectOutApi(this.formParams)
this.total = res.data.total
this.tableData = res.data.rows
},
/** 查询按钮 */
handleQuery() {
this.getList()
},
/** 重置按钮 */
handleReset() {
this.$refs.formParamsRef.resetFields()
this.getList()
},
handleSizeChange() {},
handleCurrentChange() {},
},
}
</script>
<style lang="less" scoped>
//
.drawer-container {
// position: relative;
height: 100%;
width: 100%;
padding: 15px;
display: flex;
border: 1px solid #46b4ea;
box-shadow: 0 0 2px #46b4ea;
.drawer-left {
width: 30%;
padding: 0 8px;
border-right: 1px dashed #0098ee;
color: #fff;
background-color: #030c3c;
display: flex;
flex-direction: column;
h4 {
font-weight: normal;
letter-spacing: 1px;
}
.title-content {
margin: 0;
padding: 0;
height: 38px;
line-height: 38px;
letter-spacing: 3px;
font-size: 18px;
background: url('../../../assets/img/title-bg.png') no-repeat;
background-size: 100%, 100%;
}
.address-content {
margin: 5px 0;
font-size: 14px;
letter-spacing: 4px;
font-weight: normal;
}
.user-device {
margin: 20px 0;
text-align: center;
}
ul {
margin-bottom: 30px;
list-style: none;
display: flex;
justify-content: space-around;
.user-num {
display: flex;
align-items: center;
flex-direction: column;
font-size: 18px !important;
}
.user-num span:first-child {
font-size: 16px;
font-weight: bold;
letter-spacing: 1px;
}
}
.record-title {
margin: 10px 0;
font-size: 18px;
}
.device-list {
list-style: none;
flex: 1;
margin: 20px 0 0 0;
padding: 0;
display: flex;
flex-direction: column;
overflow-y: auto;
li {
margin-bottom: 8px;
padding: 0 8px;
height: 38px;
display: flex;
align-items: center;
justify-content: space-between;
border: 1px solid #035ea6;
span {
text-align: center;
}
}
li span:nth-child(1) {
width: 25%;
}
li span:nth-child(2) {
width: 15%;
}
li span:last-child {
width: 60%;
text-align: right;
}
}
}
.drawer-right {
// flex: 1;
width: 70%;
padding-left: 6px;
background: linear-gradient(
90deg,
rgba(11, 20, 71, 1) 0%,
rgba(11, 20, 71, 0.9) 32%,
rgba(11, 20, 70, 0.5) 70%,
rgba(11, 20, 71, 0.1) 100%
);
/deep/ .el-input__inner {
// margin-right: 6px;
background-color: #07154a;
color: #fff;
}
}
}
/deep/ .el-table th {
// #253855 #30619B
background: linear-gradient(to bottom, #2b313d, #3267a7) !important;
color: #fff !important;
border-bottom: 1px solid #84fcfd !important;
}
/deep/ .el-table tr {
background-color: #335684 !important;
color: #fff !important;
}
/deep/ .el-table--striped .el-table__body tr.el-table__row--striped td {
background-color: #25447d !important;
color: #fff !important;
}
/deep/ .el-table td,
.building-top .el-table th.is-leaf {
border-bottom: 1px solid #6983a5 !important;
}
/deep/ .el-table::before {
border-bottom: 1px solid #6983a5 !important;
background-color: #6983a5 !important;
height: 1px !important;
}
/deep/ .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: transparent !important;
}
/deep/ .el-select-dropdown {
position: absolute !important;
left: 0 !important;
}
/deep/ .el-pagination__sizes {
position: relative;
}
// /deep/ .pagination-container .el-select-dropdown {
// position: absolute !important;
// left: 0 !important;
// }
/deep/ .el-pagination__sizes .el-input .el-input__inner {
color: #e3e4e7 !important;
border: 1px solid #e3e4e7 !important;
background-color: transparent;
}
/deep/ .el-pagination__editor.el-input .el-input__inner {
color: #e3e4e7 !important;
border: 1px solid #e3e4e7 !important;
background-color: transparent;
}
/deep/ .el-pagination.is-background .btn-prev,
.el-pagination.is-background .el-pager li {
color: #e3e4e7 !important;
border: 1px solid #e3e4e7 !important;
background-color: transparent !important;
}
/deep/ .el-pagination.is-background .btn-next {
color: #e3e4e7 !important;
border: 1px solid #e3e4e7 !important;
background-color: transparent !important;
}
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #00a5ff !important;
color: #000 !important;
}
/deep/ .el-button--primary {
background-color: #84fcfd !important;
border: #84fcfd !important;
color: #285050 !important;
}
/deep/ .el-button--default {
background-color: transparent !important;
border: 1px solid #84fcfd !important;
color: #d5d6da !important;
}
/deep/ .el-table__empty-block {
background-color: #335684 !important;
.el-table__empty-text {
color: #fff !important;
}
}
/deep/ .el-pagination__total {
color: #fff;
}
// /deep/ .select_bottom {
// z-index: 2008;
// position: absolute;
// // left: 147px !important;
// // top: 355px !important;
// margin: 0px;
// border: 1px solid #55aaff;
// .el-select-dropdown {
// }
// .el-select-dropdown {
// background-color: #ffffff;
// }
// .el-select-dropdown__item.selected {
// color: red;
// }
// .el-select-dropdown__item.hover,
// .el-select-dropdown__item:hover {
// background: red;
// color: #fff;
// }
// }
//
*::-webkit-scrollbar {
width: 5px;
height: 5px;
}
// +
*::-webkit-scrollbar-thumb {
border-radius: 1em;
background-color: rgba(230, 237, 248, 0.3);
}
// +
*::-webkit-scrollbar-track {
border-radius: 1em;
background-color: rgba(230, 237, 248, 0.1);
}
</style>

View File

@ -205,7 +205,7 @@ export default {
methods: { methods: {
openDrawer(query) { openDrawer(query) {
this.queryParams = query this.queryParams = query
// console.log(query, 'c') console.log(query, 'c参数')
this.drawerType = query.type this.drawerType = query.type
this.drawer = true this.drawer = true
}, },