Merge pull request 'master' (#12) from master into lukeyan

Reviewed-on: #12
pull/13/head^2
lukeyan 1 year ago
commit 457c6e5cd4

@ -39,7 +39,7 @@ export function warningDisposal(params) {
params
})
}
//预警处置
//车辆
export function tbSafeCompanyVehicle(params) {
return request({
url: '/safety/enterpriseArchives/tbSafeCompanyVehicle',
@ -47,4 +47,37 @@ export function tbSafeCompanyVehicle(params) {
params
})
}
//各个物品总数
export function TbSafeCompanyGoodsCount(params) {
return request({
url: 'safety/enterpriseArchives/TbSafeCompanyGoods/count',
method: 'get',
params
})
}
//物品
export function TbSafeCompanyGoods(params) {
return request({
url: '/safety/enterpriseArchives/TbSafeCompanyGoods',
method: 'get',
params
})
}
//物品详情
export function TbSafeCompanyGoodsDetail(params) {
return request({
url: '/safety/enterpriseArchives/TbSafeCompanyGoods/detail',
method: 'get',
params
})
}
//案件列表
export function TbSafeCompanyCase(params) {
return request({
url: '/safety/enterpriseArchives/TbSafeCompanyCase',
method: 'get',
params
})
}

@ -96,7 +96,7 @@ export default {
.then((res) => {
if (res.code === 200) {
this.$router.push({
path: '/home/enterpriseArchives'
path: '/home/safetyIndex'
})
} else {
this.$message.error(res.msg)

@ -28,6 +28,12 @@ const routes = [
name: 'archives',
component: () => import('@/views/archives'),
},
{
path: 'safetyIndex',
name: 'safetyIndex',
component: () => import('@/views/safetyIndex'),
},
// 系统管理
{
path: 'systemManagement',
@ -57,24 +63,27 @@ const routes = [
path: 'correlationEquipment',
name: 'correlationEquipment',
component: () => import('@/views/systemManagement/correlationEquipment'),
},
// 企业名单
{
path: 'companyList',
name: 'companyList',
component: () => import('@/views/systemManagement/companyList'),
}
]
}
]
},
{
path: 'login',
name: 'login',
component: () => import('@/components/login'),
},
]
}]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
mode: 'hash',
routes
})

@ -5,7 +5,7 @@ import { getToken } from '@/utils/auth'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const request = axios.create({
baseURL: 'http://172.18.113.50:8080/zhapi',
// baseURL: `http://${window.location.host}`,
//baseURL: `http://${window.location.host}/zhapi`,
timeout: 50000,
headers: { 'content-type': 'application/json' },
})

@ -0,0 +1,408 @@
<template>
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
案件信息<span>{{ total }}</span>
</div>
<div class="monitorBox">
<el-table :cell-style="{ background: 'revert' }" :data="tableData" class="table"
style="width: calc(100% - 40px); margin:0 20px;" :row-style="tableRowStyle"
:header-row-style="tableHeaderColor" :header-cell-style="tableHeaderCellColor">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column show-overflow-tooltip prop="caseNo" label="案件编号">
</el-table-column>
<el-table-column show-overflow-tooltip prop="caseName" label="案件名称">
</el-table-column>
<el-table-column show-overflow-tooltip prop="caseAddress" label="发案地点">
</el-table-column>
<el-table-column show-overflow-tooltip prop="caseDetail" label="简要案情">
</el-table-column>
<el-table-column show-overflow-tooltip prop="registerTime" label="受理时间">
</el-table-column>
<el-table-column show-overflow-tooltip label="操作" width="80">
<template slot-scope="scope">
<div class="detail" @click="checkDetail(scope.row)">
<button class="xiangqing">详情</button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<el-pagination style="float:right;margin:5px;" class="msg-pagination-container" :background="true"
@size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum"
:page-sizes="[3]" layout="total, sizes, prev, pager, next, jumper" :total="total">
</el-pagination>
</div>
<el-dialog title="案件详情" :visible.sync="diaVisible" class="picForm" v-if="anjianDetail">
<div class="jibenx">
<div class="jibenhang">
<div class="jibenhangTitle">企业名称</div>
<div class="jibenhangleftText">
<span v-html="anjianDetail.caseName"></span>
</div>
<div class="jibenhangTitle">企业类型</div>
<div class="jibenhangrightText">
<div>{{ anjianDetail.caseName }}</div>
</div>
</div>
<div class="jibenhang">
<div class="jibenhangTitle">案件编号</div>
<div class="jibenhangleftText">
<span v-html="anjianDetail.caseNo"></span>
</div>
<div class="jibenhangTitle">案件名称</div>
<div class="jibenhangrightText">
<div>{{ anjianDetail.caseName }}</div>
</div>
</div>
<div class="jibenhang">
<div class="jibenhangTitle">案件分类</div>
<div class="jibenhangleftText">
<span v-html="anjianDetail.caseType"></span>
</div>
<div class="jibenhangTitle">案件类别</div>
<div class="jibenhangrightText">
<div>{{ anjianDetail.caseCategory }}</div>
</div>
</div>
<div class="jibenhang">
<div class="jibenhangTitle">发案区划</div>
<div class="jibenhangleftText">
<span v-html="anjianDetail.policeDistrictCode"></span>
</div>
<div class="jibenhangTitle">派出所</div>
<div class="jibenhangrightText">
<div>{{ anjianDetail.policeDistrictCn }}</div>
</div>
</div>
<div class="jibenhang">
<div class="jibenhangTitle">破案情况</div>
<div class="jibenhangleftText">
<span v-html="anjianDetail.caseState"></span>
</div>
<div class="jibenhangTitle">发案地点</div>
<div class="jibenhangrightText">
<div>{{ anjianDetail.caseAddress }}</div>
</div>
</div>
<div class="jibenhang1 jibenhang">
<div class="jibenhangTitle">简要案情</div>
<div class="jibenhangText">
<span>{{ anjianDetail.caseDetail }}</span>
</div>
</div>
</div>
</el-dialog>
<div class="bottomZS"></div>
</div>
</template>
<script>
import { TbSafeCompanyCase } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
formInline: {},
pageSize: 3,
pageNum: 1,
total: 0,
diaVisible: false,
tableData: [],
anjianDetail: {}
}
},
created() {
this.getList()
},
methods: {
getList() {
TbSafeCompanyCase({ pageSize: this.pageSize, pageNum: this.pageNum, companyId: this.companyID }).then(res => {
this.tableData = res.data
this.total = res.total
})
},
tableRowStyle({ rowIndex }) {
if ((rowIndex + 1) % 2 == 1) {
return { 'background': 'rgba(0,0,0,0)', 'color': '#fff', 'border': '0' }
} else {
return { 'background': 'rgba(61, 85, 102, 0.16)', 'border': '0', 'color': '#fff' }
}
},
tableHeaderColor() {
return { 'background': 'linear-gradient( rgba(38, 88, 76, 0.6) 100%, rgba(55, 131, 128, 0.6) 100%, rgba(34, 74, 53, 0.46) 46%)' }
// return { 'background': 'url("~@/assets/archives/9910.png") no-repeat;', 'background-size': '100% 100%;', 'color': '#fff' }
},
tableHeaderCellColor() {
return { 'background': 'rgba(0,0,0,0)', 'border': '0', 'color': '#fff' }
},
handleSizeChange(val) {
this.pageNum = 1;
this.pageSize = val;
this.getList()
},
handleCurrentChange(val) {
this.pageNum = val;
this.getList()
},
checkDetail(val) {
this.anjianDetail = val
this.diaVisible = true
},
},
}
</script>
<style lang="less" scoped>
.mainBox {
width: 100%;
height: 320px;
background: url('~@/assets/companyFile/背景22136.png') no-repeat;
background-size: 100% 100%;
padding: 70px 20px 60px;
box-sizing: border-box;
display: flex;
position: relative;
margin-top: 20px;
.monitorBox {
width: 100%;
height: 100%;
flex-wrap: wrap;
}
/deep/.el-input__inner {
// background: url('~@/assets/companyFile/2121.png') no-repeat;
background: url('~@/assets/companyFile/矩形备份 18.png') no-repeat;
background-size: 100% 100%;
border: 1px solid rgba(40, 132, 126, 1);
color: rgba(234, 246, 255, 0.7);
;
.el-range-separator {
color: #ccc;
}
.el-range-input {
background: rgba(0, 0, 0, 0);
color: #ccc;
}
}
/deep/.el-table {
background: rgba(0, 0, 0, 0);
td.el-table__cell {
border: 0;
}
.xiangqing {
background: rgba(0, 0, 0, 0);
border: 0;
color: rgba(48, 196, 255, 0.7);
cursor: pointer;
}
.alarmType {
width: 72px;
height: 32px;
font-size: 14px;
color: rgba(255, 255, 255, 0.9);
letter-spacing: 1px;
font-weight: 400;
.red {
width: 100%;
height: 100%;
background: rgba(152, 7, 7, 0.21);
border: 1px solid rgba(214, 38, 38, 1);
display: flex;
justify-content: center;
align-items: center;
}
.yellow {
width: 100%;
height: 100%;
background: rgba(152, 95, 7, 0.21);
border: 1px solid rgba(255, 169, 38, 1);
display: flex;
justify-content: center;
align-items: center;
}
}
}
.title {
position: absolute;
top: 14px;
left: 20px;
width: 162px;
height: 36px;
line-height: 36;
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
line-height: 36px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.60);
font-weight: 400;
span {
color: #FF9191;
}
}
.picForm {
/deep/ .el-dialog {
background-color: rgba(0, 0, 0, 0);
background: url('~@/assets/companyFile/背景2.png') no-repeat;
background-size: 100% 100%;
width: 811px;
height: 420px;
position: relative;
.el-dialog__title {
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.77);
font-weight: 400;
}
.el-dialog__body {
box-sizing: border-box;
height: 360px;
.jibenx {
width: 100%;
height: 100%;
border: 1px solid rgba(91, 116, 140, 0.6);
.jibenhang {
height: 16%;
width: 100%;
display: flex;
border-bottom: 1px solid rgba(91, 116, 140, 0.6);
.jibenhangTitle {
box-sizing: border-box;
padding-left: 10px;
width: 15%;
height: 100%;
background: rgba(108, 128, 151, 0.20);
line-height: 48px;
border-right: 1px solid rgba(91, 116, 140, 0.6);
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
letter-spacing: 0;
font-weight: 400;
}
.jibenhangleftText {
width: 30%;
box-sizing: border-box;
padding-left: 10px;
height: 100%;
border-right: 1px solid rgba(91, 116, 140, 0.6);
line-height: 48px;
font-size: 12px;
color: #FFFFFF;
letter-spacing: 0;
font-weight: 400;
}
.jibenhangrightText {
box-sizing: border-box;
padding-left: 10px;
width: 40%;
height: 100%;
line-height: 48px;
font-size: 12px;
color: #FFFFFF;
letter-spacing: 0;
font-weight: 400;
overflow: hidden;
}
.jibenhangText {
padding-left: 10px;
width: 85%;
height: 100%;
display: flex;
align-items: center;
font-size: 12px;
color: #FFFFFF;
}
}
.jibenhang1 {
height: 19%;
width: 100%;
border-bottom: 0;
box-sizing: border-box;
.jibenhangTitle {
padding-left: 12px;
width: 15%;
height: 100%;
background: rgba(108, 128, 151, 0.20);
line-height: 57px;
border-right: 1px solid rgba(91, 116, 140, 0.6);
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
letter-spacing: 0;
font-weight: 400;
}
.jibenhangText {
padding-left: 10px;
width: 84.8%;
height: 100%;
display: flex;
align-items: center;
font-size: 12px;
color: #FFFFFF;
box-sizing: border-box;
}
}
}
}
}
}
/deep/.el-form-item {
display: flex;
margin-left: 20px;
.el-form-item__label {
color: #EAF6FF;
letter-spacing: 1px;
text-align: center;
font-weight: 400;
}
}
}
</style>

@ -1,5 +1,5 @@
<template>
<div class="mainBox">
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
车辆信息<span>{{ total }}</span>
@ -16,7 +16,7 @@
:header-row-style="tableHeaderColor" :header-cell-style="tableHeaderCellColor">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column show-overflow-tooltip prop="plateNo" label="车牌号" width="80">
<el-table-column show-overflow-tooltip prop="plateNo" label="车牌号" width="120">
</el-table-column>
<el-table-column show-overflow-tooltip prop="vehicleType" label="车型">
</el-table-column>
@ -52,6 +52,9 @@
<script>
import { tbSafeCompanyVehicle } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
formInline: {},
@ -68,7 +71,7 @@ export default {
},
methods: {
getList() {
tbSafeCompanyVehicle({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, }).then(res => {
tbSafeCompanyVehicle({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, companyId: this.companyID }).then(res => {
this.tableData = res.data
this.total = res.total
})
@ -126,7 +129,7 @@ export default {
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}

@ -1,8 +1,13 @@
<template>
<div class="main">
<div class="leftMenu">
<el-menu default-active="2" class="el-menu-vertical-demo">
<el-menu-item index="1" :popper-class="'jibenxinxi'">
<div class="fanhui">
<span @click="goBack">
<i class="el-icon-back"></i> 返回</span>
</div>
<div class="fengexian"></div>
<el-menu default-active="2" class="el-menu-vertical-demo" :default-openeds="openeds" @select="handleMenuSelect">
<el-menu-item index="1">
<img src="../../assets/companyFile/基本信息.png" alt="">&nbsp;&nbsp;
<span slot="title">基本信息</span>
</el-menu-item>
@ -42,9 +47,9 @@
</el-menu-item>
</el-menu>
</div>
<div class="mainBody">
<div class="mainBody" ref="container">
<el-scrollbar ref="scrollbar">
<div class="jibenxinxi" ref="jibenxinxi">
<div class="jibenxinxi scroll-target" ref="child1">
<div class="topZS"></div>
<div class="title">
基本信息
@ -60,9 +65,11 @@
<p>上月</p>
<div class="zhishu">{{ safeData.monthScore }}</div>
<div class="paiming" v-show="isMonthShow">
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.monthScore }}</span>
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.monthScore
}}</span>
</div>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.monthRank }}</span>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.monthRank
}}</span>
<i class="el-icon-caret-top blue" v-if="safeData.monthTrend == '1'"></i>
<i class="el-icon-caret-bottom red" v-if="safeData.monthTrend == '-1'"></i>
</div>
@ -73,9 +80,11 @@
<p>上季</p>
<div class="zhishu">{{ safeData.seasonScore }}</div>
<div class="paiming" v-show="isSeasonShow">
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.seasonScore }}</span>
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.seasonScore
}}</span>
</div>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.seasonRank }}</span>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.seasonRank
}}</span>
<i class="el-icon-caret-top blue" v-if="safeData.seasonTrend == '1'"></i>
<i class="el-icon-caret-bottom red" v-if="safeData.seasonTrend == '-1'"></i>
</div>
@ -86,9 +95,11 @@
<p>去年</p>
<div class="zhishu">{{ safeData.yearScore }}</div>
<div class="paiming" v-show="isYearShow">
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.yearScore }}</span>
<div class="pingan">平安指数&nbsp;<span class="pinganNum">{{ safeData.yearScore
}}</span>
</div>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.yearRank }}</span>
<div class="pingan">辖区排名&nbsp;<span class="pinganNum">{{ safeData.yearRank
}}</span>
<i class="el-icon-caret-top blue" v-if="safeData.yearTrend == '1'"></i>
<i class="el-icon-caret-bottom red" v-if="safeData.yearTrend == '-1'"></i>
</div>
@ -167,10 +178,12 @@
</div>
</el-dialog>
</div>
<monitor></monitor>
<kakou></kakou>
<yujing></yujing>
<car></car>
<monitor :companyID="companyID" ref="child2-1"></monitor>
<kakou :companyID="companyID" ref="child2-2"></kakou>
<yujing :companyID="companyID" ref="child2-3"></yujing>
<car :companyID="companyID" ref="child4"></car>
<wupin :companyID="companyID" ref="child5"></wupin>
<anjian :companyID="companyID" ref="child6"></anjian>
</el-scrollbar>
</div>
</div>
@ -183,12 +196,16 @@ import monitor from './monitor.vue'
import kakou from './kakou.vue'
import yujing from './yujing.vue'
import car from './car.vue'
import wupin from './wupin.vue'
import anjian from './anjian.vue'
export default {
components: {
monitor,
kakou,
yujing,
car
car,
wupin,
anjian
},
data() {
return {
@ -200,12 +217,16 @@ export default {
isYearShow: false,
diaVisible: false,
picShow: false,
companyID: '',
openeds: ['2', '3'],
}
},
created() {
this.companyData = this.$route.query
this.companyID = this.companyData.id
this.getsafeIndex()
},
methods: {
getsafeIndex() {
safeIndex({ id: this.companyData.id }).then(res => {
@ -271,6 +292,22 @@ export default {
closeYearScore() {
this.isYearShow = false
},
handleMenuSelect(index) {
if (index == 1) {
this.$refs.container.scrollTo(0, 0);
return
}
const refName = `child${index}`
const child = this.$refs[refName]
if (child) {
child.$el.scrollIntoView()
}
},
goBack() {
this.$router.go(-1)
}
}
}
</script>
@ -297,8 +334,31 @@ export default {
background-size: 100% 100%;
padding: 20px;
box-sizing: border-box;
.fengexian {
width: 100%;
height: 1px;
background: rgba(108, 128, 151, 0.6);
margin-top: 10px;
margin-bottom: 20px;
}
.fanhui {
font-size: 14px;
color: #66FFDF;
letter-spacing: 1px;
font-weight: 400;
span {
cursor: pointer;
}
}
}
.mainBody {
width: calc(100% - 305px);
margin-left: 280px;
@ -477,6 +537,7 @@ export default {
height: 370px;
border: 1px solid rgba(91, 116, 140, 0.6);
border-bottom: 0;
.jibenhang {
height: 40px;
@ -725,8 +786,15 @@ export default {
}
}
.el-menu-item:focus,
.el-menu-item:hover {
filter: brightness(150%);
text-shadow: 0 0 9px rgba(21, 255, 198, 0.64);
}
.el-menu-item.is-active {
color: orange;
filter: brightness(150%);
text-shadow: 0 0 9px rgba(21, 255, 198, 0.64);
}
.el-menu-item-group__title {

@ -1,5 +1,5 @@
<template>
<div class="mainBox">
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
实时卡口流量<span>{{ total }}</span>
@ -15,7 +15,7 @@
<el-input v-model.trim="formInline.deviceName" class="formIpt"></el-input>
</el-form-item>
<el-form-item label="姓名:" class="formItem" v-if="activeName == 'first'">
<el-input v-model.trim="formInline.deviceName" class="formIpt"></el-input>
<el-input v-model.trim="formInline.userName" class="formIpt"></el-input>
</el-form-item>
<el-form-item label="车牌号:" class="formItem" v-if="activeName == 'second'">
<el-input v-model.trim="formInline.plateNo" class="formIpt"></el-input>
@ -143,6 +143,9 @@
<script>
import { realTimePassageFlowFace, realTimePassageFlowVehicle } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
formInline: {},
@ -176,12 +179,12 @@ export default {
},
methods: {
getList() {
realTimePassageFlowFace({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, }).then(res => {
realTimePassageFlowFace({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, companyId: this.companyID }).then(res => {
this.tableData = res.data
this.imgDetailList = res.data[0] || {}
this.total = res.total
})
realTimePassageFlowVehicle({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, }).then(res => {
realTimePassageFlowVehicle({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, companyId: this.companyID }).then(res => {
this.vechileList = res.data
this.total = res.total
this.vechileDetailList = res.data[0] || {}

@ -1,5 +1,5 @@
<template>
<div class="mainBox">
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
实时监控<span>{{ total }}</span>
@ -14,10 +14,12 @@
<div class="monitorBox">
<div class="monitorItem" v-for="(item, index) in monitorList" :key="index">
<div class="online" v-if="item.isOnline">
<img src="../../assets/archives/摄像头0912.png" v-if="item.deviceVideoSubType == 3">
<div class="left">{{ item.deviceVideoSubTypeCn }}</div>
<div class="right"><i class="dian"></i><span>在线</span></div>
</div>
<div class="outline" v-else>
<img src="../../assets/archives/摄像头0912.png" v-if="item.deviceVideoSubType == 3">
<div class="left">{{ item.deviceVideoSubTypeCn }}</div>
<div class="right"><i class="dian"></i><span>离线</span></div>
</div>
@ -28,9 +30,9 @@
</div>
<img :src="item.snapURL" alt="" @mouseover="showShadow(index)">
</div>
<div class="bottomtext"><i class="el-icon-location online1" v-if="false"></i><i
<div class="bottomtext"><i class="el-icon-location online1" v-if="item.isOnline"></i><i
class="el-icon-location outline1" v-else></i>&nbsp;&nbsp;{{ item.channelName }}</div>
<el-dialog title="企业图片" :visible.sync="diaVisible" class="picForm">
<el-dialog title="实时监控" :visible.sync="diaVisible" class="picForm">
<playVideo :video="{ url: item.wsFlv, index: index }" :control="true" v-if="diaVisible"></playVideo>
</el-dialog>
</div>
@ -50,6 +52,9 @@
import playVideo from '@/components/videoPlayer'
import { realTimeMonitoring } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
formInline: {},
@ -69,7 +74,7 @@ export default {
},
methods: {
getList() {
realTimeMonitoring({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, }).then(res => {
realTimeMonitoring({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, companyId: this.companyID }).then(res => {
this.monitorList = res.data
this.total = res.total
})
@ -136,10 +141,11 @@ export default {
line-height: 20px;
display: flex;
align-items: center;
justify-content: space-around;
padding-left: 20px;
.left {
color: #EAF6FF;
margin-right: 10px;
}
.dian {
@ -163,7 +169,8 @@ export default {
line-height: 20px;
display: flex;
align-items: center;
justify-content: space-around;
padding-left: 20px;
.left {
color: #EAF6FF;

@ -0,0 +1,453 @@
<template>
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
物品信息<span>{{ total }}</span>
</div>
<el-form :model="formInline" class="search">
<el-form-item label="物品名称:" class="formItem">
<el-input v-model.trim="formInline.goodsName" class="formIpt"></el-input>
</el-form-item>
<el-button type="primary" @click="getList()"></el-button>
</el-form>
<div class="monitorBox">
<el-tabs type="border-card">
<el-tab-pane v-for="(item, index) in wpCount" :key="index">
<div class="paneInner" slot="label" @click="getList(item.type)">{{ item.type
}}{{ item.number }}</div>
</el-tab-pane>
</el-tabs>
<el-table :cell-style="{ background: 'revert' }" :data="tableData" class="table"
style="width: calc(100% - 40px); margin:0 20px;" :row-style="tableRowStyle"
:header-row-style="tableHeaderColor" :header-cell-style="tableHeaderCellColor">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column show-overflow-tooltip prop="goodsName" label="物品名称">
</el-table-column>
<el-table-column show-overflow-tooltip prop="goodsTypeCn" label="物品类型">
</el-table-column>
<el-table-column show-overflow-tooltip prop="quantity" label="总量t">
</el-table-column>
<el-table-column show-overflow-tooltip prop="companyName" label="隶属企业">
</el-table-column>
<el-table-column show-overflow-tooltip prop="emergencyContact" label="安全责任人">
</el-table-column>
<el-table-column show-overflow-tooltip prop="emergencyContactPhone" label="联系方式">
</el-table-column>
<el-table-column show-overflow-tooltip label="登记时间" prop="registerTime" width="150">
</el-table-column>
<el-table-column show-overflow-tooltip label="操作" width="80">
<template slot-scope="scope">
<div class="detail" @click="checkDetail(scope.row)">
<button class="xiangqing">详情</button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<el-pagination style="float:right;margin:5px;" class="msg-pagination-container" :background="true"
@size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum"
:page-sizes="[6]" layout="total, sizes, prev, pager, next, jumper" :total="total">
</el-pagination>
</div>
<el-dialog :title="detailItem.goodsName" :visible.sync="diaVisible" class="picForm">
<el-table :cell-style="{ background: 'revert' }" :data="goodsDetailData" class="table"
style="width: calc(100% - 40px); margin:0 20px;" :row-style="tableRowStyle"
:header-row-style="tableHeaderColor" :header-cell-style="tableHeaderCellColor">
<el-table-column show-overflow-tooltip prop="unloadTime" label="登记时间" width="150">
</el-table-column>
<el-table-column show-overflow-tooltip label="总量" width="90">
<template slot-scope="scope">
<div class="scopeQuantity">
{{ scope.row.quantity || 0 }}t
</div>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="总物品数量统计">
<template slot-scope="scope">
<div class="scopeQuantity">
储存{{ scope.row.storageQuantity || 0 }}t 生产{{ scope.row.produceQuantity || 0 }}t 购买{{
scope.row.purchaseQuantity || 0 }}t 使用{{ scope.row.useQuantity || 0 }}t 销售{{
scope.row.saleQuantity || 0
}}t
</div>
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination style="float:right;margin:5px;" class="msg-pagination-container" :background="true"
@size-change="SizeChange" @current-change="CurrentChange" :current-page="detailpageNum"
:page-sizes="[5]" layout="total, sizes, prev, pager, next, jumper" :total="detailtotal">
</el-pagination>
</div>
</el-dialog>
<div class="bottomZS"></div>
</div>
</template>
<script>
import { TbSafeCompanyGoods, TbSafeCompanyGoodsCount, TbSafeCompanyGoodsDetail } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
formInline: {},
pageSize: 6,
pageNum: 1,
DetailpageSize: 5,
detailpageNum: 1,
detailtotal: 0,
total: 0,
isShow: [{ show: false }, { show: false }, { show: false }, { show: false }, { show: false }],
diaVisible: false,
tableData: [],
wpCount: {},
goodsDetailData: [],
detailItem: {},
goodsType: null,
}
},
created() {
this.getList()
},
methods: {
getWpTotal() {
TbSafeCompanyGoodsCount({ companyId: this.companyID, ...this.formInline, }).then(res => {
this.wpCount = res.data
this.wpCount.forEach((item) => {
if (item.type == '全部') {
this.wpCount = this.wpCount.filter(a => a.type != '全部')
this.wpCount.unshift(item)
}
});
})
},
getList(val) {
if (val) {
if (val == '全部') {
this.goodsType = null
} else if (val == '放射源') {
this.goodsType = 1
} else if (val == '易制毒') {
this.goodsType = 2
} else if (val == '易制爆') {
this.goodsType = 3
} else if (val == '民爆') {
this.goodsType = 4
} else if (val == '有毒化学品') {
this.goodsType = 5
} else if (val == '易燃气体') {
this.goodsType = 6
} else if (val == '易燃液体') {
this.goodsType = 7
}
}
TbSafeCompanyGoods({ pageSize: this.pageSize, pageNum: this.pageNum, ...this.formInline, companyId: this.companyID, goodsType: this.goodsType }).then(res => {
this.tableData = res.data
this.total = res.total
})
this.getWpTotal()
},
showDia() {
this.diaVisible = true
},
tableRowStyle({ rowIndex }) {
if ((rowIndex + 1) % 2 == 1) {
return { 'background': 'rgba(0,0,0,0)', 'color': '#fff', 'border': '0' }
} else {
return { 'background': 'rgba(61, 85, 102, 0.16)', 'border': '0', 'color': '#fff' }
}
},
tableHeaderColor() {
return { 'background': 'linear-gradient( rgba(38, 88, 76, 0.6) 100%, rgba(55, 131, 128, 0.6) 100%, rgba(34, 74, 53, 0.46) 46%)' }
// return { 'background': 'url("~@/assets/archives/9910.png") no-repeat;', 'background-size': '100% 100%;', 'color': '#fff' }
},
tableHeaderCellColor() {
return { 'background': 'rgba(0,0,0,0)', 'border': '0', 'color': '#fff' }
},
handleSizeChange(val) {
this.pageNum = 1;
this.pageSize = val;
this.getList()
},
handleCurrentChange(val) {
this.pageNum = val;
this.getList()
},
SizeChange(val) {
this.detailpageNum = 1;
this.DetailpageSize = val;
this.checkDetail(this.detailItem)
},
CurrentChange(val) {
this.detailpageNum = val;
this.checkDetail(this.detailItem)
},
checkDetail(val) {
this.detailItem = val
TbSafeCompanyGoodsDetail({ companyId: this.companyID, goodsName: val.goodsName, pageSize: this.DetailpageSize, pageNum: this.detailpageNum }).then(res => {
this.goodsDetailData = res.data
this.detailtotal = res.total
this.diaVisible = true
})
}
},
}
</script>
<style lang="less" scoped>
.mainBox {
width: 100%;
height: 550px;
background: url('~@/assets/companyFile/背景22136.png') no-repeat;
background-size: 100% 100%;
padding: 70px 20px 60px;
box-sizing: border-box;
display: flex;
position: relative;
margin-top: 20px;
.monitorBox {
width: 100%;
height: 100%;
flex-wrap: wrap;
}
/deep/.el-input__inner {
// background: url('~@/assets/companyFile/2121.png') no-repeat;
background: url('~@/assets/companyFile/矩形备份 18.png') no-repeat;
background-size: 100% 100%;
border: 1px solid rgba(40, 132, 126, 1);
color: rgba(234, 246, 255, 0.7);
;
.el-range-separator {
color: #ccc;
}
.el-range-input {
background: rgba(0, 0, 0, 0);
color: #ccc;
}
}
/deep/.el-tabs--border-card {
background: rgba(0, 0, 0, 0);
border: 0;
height: 50px;
width: calc(100% - 40px);
margin: 0 20px;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04);
.el-tabs__header {
display: inline-block;
width: auto;
background: linear-gradient(180deg, rgba(234, 241, 248, 0.1) 0%, rgba(208, 222, 238, 0.1) 100%);
opacity: 0.7;
border: 1px solid #5B748C;
.el-tabs__nav {
display: inline-block;
width: auto;
display: flex;
}
.el-tabs__item {
width: 110px;
border: 0;
color: #EAF6FF;
padding: 5px;
box-sizing: border-box;
display: flex;
align-items: center;
.paneInner {
width: 100px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
.el-tabs__item:not(:last-child)::after {
content: '';
width: 1px;
height: 20px;
background: #EAF6FF;
display: inline-block;
vertical-align: middle;
margin-left: 5px;
}
.el-tabs__item.is-active {
background: rgba(0, 0, 0, 0);
border: 0;
color: #4BFFAD;
padding: 5px;
box-sizing: border-box;
.paneInner {
background: rgba(129, 255, 204, 0.26);
}
}
}
}
/deep/.el-table {
background: rgba(0, 0, 0, 0);
td.el-table__cell {
border: 0;
}
.xiangqing {
background: rgba(0, 0, 0, 0);
border: 0;
color: rgba(48, 196, 255, 0.7);
cursor: pointer;
}
.alarmType {
width: 72px;
height: 32px;
font-size: 14px;
color: rgba(255, 255, 255, 0.9);
letter-spacing: 1px;
font-weight: 400;
.red {
width: 100%;
height: 100%;
background: rgba(152, 7, 7, 0.21);
border: 1px solid rgba(214, 38, 38, 1);
display: flex;
justify-content: center;
align-items: center;
}
.yellow {
width: 100%;
height: 100%;
background: rgba(152, 95, 7, 0.21);
border: 1px solid rgba(255, 169, 38, 1);
display: flex;
justify-content: center;
align-items: center;
}
}
}
.title {
position: absolute;
top: 14px;
left: 20px;
width: 162px;
height: 36px;
line-height: 36;
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
line-height: 36px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.60);
font-weight: 400;
span {
color: #FF9191;
}
}
.search {
position: absolute;
right: 20px;
top: 20px;
display: flex;
}
/deep/.el-button--primary {
margin-top: 5px;
margin-left: 20px;
width: 60px;
height: 30px;
line-height: 30px;
padding: 0;
text-align: center;
background: rgba(0, 0, 0, 0);
border: 0;
background: url('~@/assets/companyFile/2121.png') no-repeat;
background-size: 100% 100%;
font-size: 14px;
color: #F8FBFF;
letter-spacing: 0.89px;
font-weight: 500;
}
.picForm {
/deep/ .el-dialog {
background-color: rgba(0, 0, 0, 0);
background: url('~@/assets/companyFile/背景091.png') no-repeat;
background-size: 100% 100%;
width: 1041px;
height: 420px;
position: relative;
.el-dialog__title {
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.77);
font-weight: 400;
}
.el-dialog__body {
box-sizing: border-box;
height: 360px;
.scopeQuantity {
letter-spacing: 2px;
}
}
}
}
/deep/.el-form-item {
display: flex;
margin-left: 20px;
.el-form-item__label {
color: #EAF6FF;
letter-spacing: 1px;
text-align: center;
font-weight: 400;
}
}
}
</style>

@ -1,8 +1,8 @@
<template>
<div class="mainBox">
<div class="mainBox scroll-target">
<div class="topZS"></div>
<div class="title">
预警处置<span>{{ total }}</span>
实时预警<span>{{ total }}</span>
</div>
<div class="monitorBox">
<el-table :cell-style="{ background: 'revert' }" :data="tableData" class="table"
@ -51,9 +51,11 @@
import { warningDisposal } from '@/api/archives'
export default {
props: {
companyID: String
},
data() {
return {
pageSize: 5,
pageNum: 1,
total: 0,
@ -65,10 +67,11 @@ export default {
created() {
this.getList()
},
methods: {
getList() {
warningDisposal({ pageSize: this.pageSize, pageNum: this.pageNum, }).then(res => {
warningDisposal({ pageSize: this.pageSize, pageNum: this.pageNum, companyId: this.companyID }).then(res => {
this.tableData = res.data
this.total = res.total
})
@ -128,7 +131,8 @@ export default {
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
/deep/.el-input {

@ -7,10 +7,10 @@
</div>
<div class="totalNum">
<span>共有</span><i class="numItem" v-for="(item, index) in numList" :key="index">{{ item
}}</i><span>条数据</span>
}}</i><span>家企业</span>
</div>
<div class="zhcxBox"><input type="text" class="zhcxBoxIPT" placeholder="请输入需要查找的企业名称/姓名/车牌号检索"
v-model="searchVal">
<div class="zhcxBox"><input type="text" class="zhcxBoxIPT" placeholder="请输入企业名称/员工姓名/车牌号检索"
v-model.trim="searchVal">
<el-button type="primary" icon="el-icon-search" class="ssBtn" @click="showResult(searchVal)"><span>搜索</span>
</el-button>
</div>
@ -85,7 +85,6 @@ export default {
gethistoryList() {
historyList().then((res) => {
this.historyList = res.data
})
},
},

@ -42,7 +42,7 @@
</div>
</div>
<div class="resultHistory">
<div class="searchHistory">检索历史</div>
<div class="searchHistory">最近搜索</div>
<div class="historyItem" v-for="(item, index) in historyList1" :key="index" @click="showResult(item)">{{
item
}}<br></div>
@ -131,8 +131,8 @@ export default {
searchList({ searchValue: this.modifiedText, pageNum: this.pageNum, pageSize: this.pageSize }).then(res => {
if (res.total || res.data.length) {
this.$set(this, 'resultList1', res.data)
console.log(res.data, 'res.data');
console.log(this.resultList1, 'this.resultList1');
// console.log(res.data, 'res.data');
// console.log(this.resultList1, 'this.resultList1');
this.total1 = res.total
//this.isShow = true
this.gethistoryList()

@ -8,7 +8,7 @@
<el-menu :default-active="activeIndex" class="el-menu-demo topMenu" mode="horizontal" @select="handleSelect"
:router="true">
<div class="shu"></div>
<el-menu-item index="1" route="/home">平安指数</el-menu-item>
<el-menu-item index="1" route="/home/safetyIndex">平安指数</el-menu-item>
<div class="shu"></div>
<el-menu-item index="2" route="/home">实时预警</el-menu-item>
<div class="shu"></div>
@ -18,8 +18,8 @@
<div class="shu"></div>
<el-menu-item index="5" route="/home/enterpriseArchives">企业档案</el-menu-item>
<div class="shu"></div>
<el-menu-item index="6" route="/home">应用超市</el-menu-item>
<div class="shu"></div>
<!-- <el-menu-item index="6" route="/home">应用超市</el-menu-item>
<div class="shu"></div> -->
<el-menu-item index="7" route="/home/systemManagement">系统管理</el-menu-item>
<div class="shu"></div>
</el-menu>
@ -82,7 +82,7 @@ export default {
.headText {
font-family: YouSheBiaoTiHei;
font-size: 40px;
font-size: 38px;
color: #edf6ff;
letter-spacing: 4px;
text-shadow: 0 8px 8px rgba(0, 0, 0, 0.3);
@ -91,7 +91,8 @@ export default {
}
.jingGuan {
margin-left: 100px;
position: absolute;
right: 30px;
display: flex;
color: #edf6ff;
align-items: center;
@ -153,7 +154,7 @@ export default {
align-items: center;
.el-menu-item {
width: 130px;
width: 100px;
height: 35px;
display: flex;
justify-content: center;

@ -0,0 +1,11 @@
<template>
<div></div>
</template>
<script>
export default {
}
</script>
<style></style>

@ -1,8 +1,6 @@
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/production-sub-path/'
: '/',
publicPath: '/',
configureWebpack: {
plugins: [
new CopyWebpackPlugin([

Loading…
Cancel
Save