Commit d816c42b authored by xinzhedeai's avatar xinzhedeai

Merge branch 'rev2'

parents 6491b0fc e20525ea
......@@ -88,9 +88,9 @@ export default {
},
// 修改
set: (iotNormalMachine) => {
iotNormalMachine.enterpriseId = null
iotNormalMachine.mineType = null
iotNormalMachine.mineId = null
// iotNormalMachine.enterpriseId = null
// iotNormalMachine.mineType = null
// iotNormalMachine.mineId = null
iotNormalMachine.createDatetime = null
iotNormalMachine.createBy = null
iotNormalMachine.updateDatetime = null
......
......@@ -61,9 +61,9 @@ export default {
},
// 修改
set: (iotNormalMachine) => {
iotNormalMachine.enterpriseId = null
iotNormalMachine.mineType = null
iotNormalMachine.mineId = null
// iotNormalMachine.enterpriseId = null
// iotNormalMachine.mineType = null
// iotNormalMachine.mineId = null
iotNormalMachine.createDatetime = null
iotNormalMachine.createBy = null
iotNormalMachine.updateDatetime = null
......
......@@ -64,7 +64,7 @@ export default {
// 修改露天矿山
setOpencast: (mine) => {
mine.hasEnable = null
mine.enterpriseId = null
// mine.enterpriseId = null
mine.createDatetime = null
mine.createBy = null
mine.updateDatetime = null
......@@ -78,7 +78,7 @@ export default {
// 修改尾矿库
setTailings: (mine) => {
mine.hasEnable = null
mine.enterpriseId = null
// mine.enterpriseId = null
mine.createDatetime = null
mine.createBy = null
mine.updateDatetime = null
......
src/assets/home4Index/icon1.png

36.9 KB | W: | H:

src/assets/home4Index/icon1.png

5.18 KB | W: | H:

src/assets/home4Index/icon1.png
src/assets/home4Index/icon1.png
src/assets/home4Index/icon1.png
src/assets/home4Index/icon1.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/home4Index/icon2.png

31 KB | W: | H:

src/assets/home4Index/icon2.png

7.22 KB | W: | H:

src/assets/home4Index/icon2.png
src/assets/home4Index/icon2.png
src/assets/home4Index/icon2.png
src/assets/home4Index/icon2.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/home4Index/icon3.png

34.2 KB | W: | H:

src/assets/home4Index/icon3.png

5.85 KB | W: | H:

src/assets/home4Index/icon3.png
src/assets/home4Index/icon3.png
src/assets/home4Index/icon3.png
src/assets/home4Index/icon3.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/home4Index/icon4.png

32 KB | W: | H:

src/assets/home4Index/icon4.png

4.49 KB | W: | H:

src/assets/home4Index/icon4.png
src/assets/home4Index/icon4.png
src/assets/home4Index/icon4.png
src/assets/home4Index/icon4.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -29,7 +29,7 @@ export default {
data() {
return {
selectedMine: {},
title: '中和地信应急平台',
title: '中和地信企业管理平台',
logo: false,
showPublic: false,
showMineUnderground: false,
......
......@@ -2,7 +2,7 @@ module.exports = {
/**
* @description 网站标题
*/
title: '应急管理',
title: '中和地信企业管理平台',
/**
* @description 是否显示 tagsView
*/
......@@ -38,7 +38,7 @@ module.exports = {
/**
* 底部文字,支持html语法
*/
footerTxt: '© 2023 <a href="#" target="_blank">淄博应急局</a>',
footerTxt: '© 2024 <a href="#" target="_blank">中和地信有限公司</a>',
/**
* 备案号
*/
......
<template>
<div class="login" :style="'background-image:url(' + Background + ');'">
<div class="topTitle" :style="'background-image:url(' + Title + ');'">
中和地信应急平台
中和地信企业管理平台
</div>
<div class="subTopTitle">
<h2 :style="'background-image:url(' + Welcome + ');'">
<img src="@/assets/home4Index/icon5.png" />中和地信有限公司欢迎您!
<img src="@/assets/home4Index/icon5.png" />
<div class="wrapper" style=" position: absolute;
top: 38px;
left: 86px;
width: 300px;
padding-left: 20px;
overflow: hidden;
"> <div class="floating-text">
中和地信有限公司欢迎您!
</div>
</div>
</h2>
<h2 @click="navTo('admin')" style="cursor: pointer;">
<img src="@/assets/home4Index/icon6.png" />管理后台
......@@ -124,11 +137,11 @@ export default {
<style rel="stylesheet/scss" lang="scss">
@keyframes floatShadow {
0% {
transform: translateX(1300px);
transform: translateX(280px);
display: block;
}
100% {
transform: translateX(-1300px);
transform: translateX(-300px);
display: none;
}
}
......@@ -136,15 +149,15 @@ export default {
.floating-text {
font-size: 18px;
line-height: 1;
color: #fdd756;
color: #fff;
text-shadow: 0 0 5px #fff;
animation: floatShadow;
animation-name: floatShadow;
animation-duration: 20s;
animation-duration: 10s;
animation-iteration-count: infinite;
animation-timing-function: linear;
position: absolute;
top: 8px;
// position: absolute;
// top: 38px;
}
.subTopTitle {
......@@ -257,7 +270,7 @@ export default {
align-items: center;
& > img {
width: 120px;
margin-left: 30px;
margin-left: 20px;
}
p {
width: 180px;
......
......@@ -4,7 +4,9 @@
<div class="head-container">
<div>
<el-input v-model="searchParam.nameLike" clearable size="small" placeholder="设备名称" style="width: 200px;" class="filter-item" />
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="searchSubmit">搜索</el-button>
<el-input v-model="searchParam.enterpriseName" clearable size="small" placeholder="所属企业" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.mineName" clearable size="small" placeholder="所属矿山" style="width: 200px;" class="filter-item" />
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="searchSubmit">搜索2</el-button>
<el-button class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="searchParamReset">重置</el-button>
<el-tooltip class="item" effect="dark" content="按当前查询条件导出" placement="top">
<el-button :loading="exporting" class="filter-item" size="mini" type="info" plain icon="el-icon-download" @click="exportSubmit">导出</el-button>
......@@ -28,6 +30,34 @@
<!--弹出框1-->
<el-dialog append-to-body :close-on-click-modal="true" :visible.sync="dialog1Show" :title="editState==1?'新增':editState==2?'修改':'查看'" width="960px">
<el-form ref="dialog1Form" :hide-required-asterisk="!dialog1Editing" :model="dialog1Data" :rules="dialog1Rules" size="mini" label-width="180px" style="margin-right: 80px;">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属企业:" prop="enterpriseId">
<span v-show="!dialog1Editing">{{ dialog1Data.enterpriseName }}</span>
<el-select
v-model="dialog1Data.enterpriseId"
placeholder="请选择"
@change="enterpriseChange"
>
<el-option
v-for="item in options4enterpriseIdList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属矿山" prop="mineId">
<span v-show="!dialog1Editing">{{ dialog1Data.mineName }}</span>
<el-select v-model="dialog1Data.mineId" placeholder="请选择" clearable size="small" class="filter-item" style="width: 200px;">
<el-option v-for="mine in mineList" :key="mine.index" :label="mine.name" :value="mine.index" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备编号:" prop="code">
......@@ -164,6 +194,8 @@
<el-table-column :show-overflow-tooltip="true" prop="id" label="编号" width="100px" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="name" label="设备名称" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="code" label="设备编码" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="enterpriseName" label="所属企业" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="mineName" label="所属矿山" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="unit" label="单位" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="manufacturer" label="生产厂家" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="place" label="安装位置" align="center" />
......@@ -190,6 +222,8 @@
<script>
import iotGroundPressureMachineApi from '@/api/kd/iotGroundPressureMachine'
import mineApi from '@/api/kd/mine'
import {getCompanyList} from '@/api/system/user'
import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex'
import { downloadFile } from '@/utils'
......@@ -197,13 +231,18 @@ import { downloadFile } from '@/utils'
const searchParam = {// 默认搜索条件
page: 1,
count: 10,
searchCount: true
searchCount: true,
mineName: '',
enterpriseName: ''
}
export default {
name: 'EIotGroundPressureMachine', // 本页面名
components: {},
data() {
return {
options4enterpriseIdList: [],
mineList: [],
selectedMine: {},
httpHeaders: {
'Authorization': getToken()
......@@ -220,6 +259,8 @@ export default {
dialog1Saving: false,
dialog1Data: {},
dialog1Rules: {
enterpriseId: [{ required: true, message: '请选择' }],
mineId: [{ required: true, message: '请选择' }],
code: [{ required: true, message: '请填写' }],
name: [{ required: true, message: '请填写' }],
unit: [{ required: true, message: '请填写' }],
......@@ -252,26 +293,44 @@ export default {
}
},
mounted() {
const selectedMineJson = window.localStorage.getItem('kd.selected.mine')
let noMine = false
if (!selectedMineJson) {
noMine = true
} else {
const selectedMine = JSON.parse(selectedMineJson)
if (!selectedMine || selectedMine.enterpriseId !== this.user.enterpriseId) {
noMine = true
} else {
this.selectedMine = selectedMine
}
}
// if (noMine) {
// const selectedMineJson = window.localStorage.getItem('kd.selected.mine')
// let noMine = false
// if (!selectedMineJson) {
// noMine = true
// } else {
// const selectedMine = JSON.parse(selectedMineJson)
// if (!selectedMine || selectedMine.enterpriseId !== this.user.enterpriseId) {
// noMine = true
// } else {
// this.selectedMine = selectedMine
// }
// }
// // if (noMine) {
// this.$message.error('当前未选择矿山')
// this.$router.replace('/dashboard')
// }
this.searchParamReset()
this.searchSubmit()
// 获取企业公司
getCompanyList({})
.then((res) => {
this.options4enterpriseIdList = res.body;
});
},
methods: {
enterpriseChange(value){
// 矿山选项卡
this.getAllMineByEnterpriseId(value)
},
getAllMineByEnterpriseId(enterpriseId){
mineApi.getAllMineByEnterpriseId({
enterpriseId
}).then(response => {
let i = 1
response.body.forEach(x => { x.index = i++ })
this.mineList = response.body
})
},
searchParamReset() {
this.searchParam = JSON.parse(JSON.stringify(searchParam))
},
......@@ -309,8 +368,8 @@ export default {
} else {
this.dialog1Saving = true
if (this.editState === 1) { // 新增
this.dialog1Data.mineType = this.selectedMine.mineType
this.dialog1Data.mineId = this.selectedMine.id
// this.dialog1Data.mineType = this.selectedMine.mineType
// this.dialog1Data.mineId = this.selectedMine.id
iotGroundPressureMachineApi.add(this.dialog1Data).then(() => {
this.dialog1Show = false
this.$message.success('保存成功')
......@@ -365,6 +424,7 @@ export default {
this.dialog1Show = true
this.$nextTick(() => {
this.$refs['dialog1Form'].clearValidate()
this.getAllMineByEnterpriseId(this.dialog1Data.enterpriseId)
})
}).catch(() => {
this.searchSubmit()
......
......@@ -4,6 +4,8 @@
<div class="head-container">
<div>
<el-input v-model="searchParam.nameLike" clearable size="small" placeholder="设备名称" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.enterpriseName" clearable size="small" placeholder="所属企业" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.mineName" clearable size="small" placeholder="所属矿山" style="width: 200px;" class="filter-item" />
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="searchSubmit">搜索</el-button>
<el-button class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="searchParamReset">重置</el-button>
<el-tooltip class="item" effect="dark" content="按当前查询条件导出" placement="top">
......@@ -28,6 +30,34 @@
<!--弹出框1-->
<el-dialog append-to-body :close-on-click-modal="true" :visible.sync="dialog1Show" :title="editState==1?'新增':editState==2?'修改':'查看'" width="960px">
<el-form ref="dialog1Form" :hide-required-asterisk="!dialog1Editing" :model="dialog1Data" :rules="dialog1Rules" size="mini" label-width="180px" style="margin-right: 80px;">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属企业:" prop="enterpriseId">
<span v-show="!dialog1Editing">{{ dialog1Data.enterpriseName }}</span>
<el-select
v-model="dialog1Data.enterpriseId"
placeholder="请选择"
@change="enterpriseChange"
>
<el-option
v-for="item in options4enterpriseIdList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属矿山" prop="mineId">
<span v-show="!dialog1Editing">{{ dialog1Data.mineName }}</span>
<el-select v-model="dialog1Data.mineId" placeholder="请选择" clearable size="small" class="filter-item" style="width: 200px;">
<el-option v-for="mine in mineList" :key="mine.index" :label="mine.name" :value="mine.index" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备编号:" prop="code">
......@@ -164,6 +194,8 @@
<el-table-column :show-overflow-tooltip="true" prop="id" label="编号" width="100px" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="name" label="设备名称" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="code" label="设备编号" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="enterpriseName" label="所属企业" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="mineName" label="所属矿山" align="center" />
<el-table-column :show-overflow-tooltip="true" prop="monitoringType" label="监测类型" align="center">
<template slot-scope="scope">
<span>{{ (getMonitoringTypeByCode(scope.row.code)||{}).name }}</span>
......@@ -195,6 +227,8 @@
<script>
import iotTailingsMachineApi from '@/api/kd/iotTailingsMachine'
import AMapSearchPoint from '@/components/AMap/AMapSearchPoint'
import mineApi from '@/api/kd/mine'
import {getCompanyList} from '@/api/system/user'
import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex'
import { downloadFile } from '@/utils'
......@@ -202,13 +236,17 @@ import { downloadFile } from '@/utils'
const searchParam = {// 默认搜索条件
page: 1,
count: 10,
searchCount: true
searchCount: true,
mineName: '',
enterpriseName: ''
}
export default {
name: 'EIotTailingsMachine', // 本页面名
components: { AMapSearchPoint },
data() {
return {
options4enterpriseIdList: [],
mineList: [],
selectedMine: {},
httpHeaders: {
'Authorization': getToken()
......@@ -225,6 +263,8 @@ export default {
dialog1Saving: false,
dialog1Data: {},
dialog1Rules: {
enterpriseId: [{ required: true, message: '请选择' }],
mineId: [{ required: true, message: '请选择' }],
code: [{ required: true, message: '请填写' }],
name: [{ required: true, message: '请填写' }],
unit: [{ required: true, message: '请填写' }],
......@@ -259,26 +299,44 @@ export default {
}
},
mounted() {
const selectedMineJson = window.localStorage.getItem('kd.selected.mine')
let noMine = false
if (!selectedMineJson) {
noMine = true
} else {
const selectedMine = JSON.parse(selectedMineJson)
if (!selectedMine || selectedMine.enterpriseId !== this.user.enterpriseId) {
noMine = true
} else {
this.selectedMine = selectedMine
}
}
// const selectedMineJson = window.localStorage.getItem('kd.selected.mine')
// let noMine = false
// if (!selectedMineJson) {
// noMine = true
// } else {
// const selectedMine = JSON.parse(selectedMineJson)
// if (!selectedMine || selectedMine.enterpriseId !== this.user.enterpriseId) {
// noMine = true
// } else {
// this.selectedMine = selectedMine
// }
// }
// if (noMine) {
// this.$message.error('当前未选择矿山')
// this.$router.replace('/dashboard')
// }
this.searchParamReset()
this.searchSubmit()
// 获取企业公司
getCompanyList({})
.then((res) => {
this.options4enterpriseIdList = res.body;
});
},
methods: {
enterpriseChange(value){
// 矿山选项卡
this.getAllMineByEnterpriseId(value)
},
getAllMineByEnterpriseId(enterpriseId){
mineApi.getAllMineByEnterpriseId({
enterpriseId
}).then(response => {
let i = 1
response.body.forEach(x => { x.index = i++ })
this.mineList = response.body
})
},
searchParamReset() {
this.searchParam = JSON.parse(JSON.stringify(searchParam))
},
......@@ -316,8 +374,8 @@ export default {
} else {
this.dialog1Saving = true
if (this.editState === 1) { // 新增
this.dialog1Data.mineType = this.selectedMine.mineType
this.dialog1Data.mineId = this.selectedMine.id
// this.dialog1Data.mineType = this.selectedMine.mineType
// this.dialog1Data.mineId = this.selectedMine.id
iotTailingsMachineApi.add(this.dialog1Data).then(() => {
this.dialog1Show = false
this.$message.success('保存成功')
......@@ -372,6 +430,7 @@ export default {
this.dialog1Show = true
this.$nextTick(() => {
this.$refs['dialog1Form'].clearValidate()
this.getAllMineByEnterpriseId(this.dialog1Data.enterpriseId)
})
}).catch(() => {
this.searchSubmit()
......
......@@ -5,6 +5,7 @@
<div>
<el-input v-model="searchParam.code" clearable size="small" placeholder="矿山编号" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.nameLike" clearable size="small" placeholder="矿山名称" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.enterpriseName" clearable size="small" placeholder="所属企业" style="width: 200px;" class="filter-item" />
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="searchSubmit">搜索</el-button>
<el-button class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="searchParamReset">重置</el-button>
</div>
......@@ -30,9 +31,20 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属行政区划:" prop="_administrativeAreaCascade">
<!-- <el-form-item label="所属行政区划:" prop="_administrativeAreaCascade">
<span v-show="!editing">{{ dialog1Data.administrativeAreaName }}</span>
<el-cascader v-show="editing" v-model="dialog1Data._administrativeAreaCascade" style="width: 100%;" :options="administrativeAreaList" clearable />
</el-form-item> -->
<el-form-item label="所属企业:" prop="enterpriseId">
<span v-show="!editing">{{ dialog1Data.enterpriseName }}</span>
<el-select v-show="editing" size="mini" v-model="dialog1Data.enterpriseId" placeholder="" @change="handleChange">
<el-option
v-for="item in companyList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -433,6 +445,7 @@
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column :show-overflow-tooltip="true" label="编号" prop="id" width="100px" align="center" />
<el-table-column :show-overflow-tooltip="true" label="矿山名称" prop="name" align="center" />
<el-table-column :show-overflow-tooltip="true" label="所属企业" prop="enterpriseName" align="center" />
<el-table-column :show-overflow-tooltip="true" label="矿山编号" prop="code" align="center" />
<el-table-column :show-overflow-tooltip="true" label="矿山地址" prop="address" align="center" />
<el-table-column :show-overflow-tooltip="true" label="建矿时间" prop="buildDate" align="center" />
......@@ -467,6 +480,7 @@
</template>
<script>
import {getCompanyList} from '@/api/system/user'
import mineApi from '@/api/kd/mine'
import mineStopApplyApi from '@/api/kd/mineStopApply'
import dictionaryApi from '@/api/kd/dictionary'
......@@ -478,7 +492,8 @@ import { validatePhone } from '@/utils/validate'
const searchParam = {// 默认搜索条件
page: 1,
count: 10,
searchCount: true
searchCount: true,
enterpriseName: ''
}
export default {
name: 'EOpencast', // 本页面名
......@@ -488,6 +503,7 @@ export default {
httpHeaders: {
'Authorization': getToken()
},
companyList: [],
administrativeAreaList: [],
dict12List: [],
dict13List: [],
......@@ -514,7 +530,8 @@ export default {
liablePersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
managedPersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
safetyPersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
runState: [{ required: true, message: '请选择' }]
runState: [{ required: true, message: '请选择' }],
enterpriseId: [{ required: true, message: '请选择' }]
},
editState: 0, // (刚打开窗口时)记录了上次窗口作用;(保存编辑时)记录了当前窗口作用; 0无 1新增 2修改 3查看
addingData: {}, // 上次正在新增时的内容,下次打开dialog1窗口时记录下来
......@@ -539,6 +556,7 @@ export default {
}
},
mounted() {
administrativeAreaApi.cascadeElementUI().then(response => {
this.administrativeAreaList = response.results
})
......@@ -550,8 +568,15 @@ export default {
})
this.searchParamReset()
this.searchSubmit()
this.getCompanyList()
},
methods: {
getCompanyList(){
getCompanyList({})
.then((res) => {
this.companyList = res.body;
});
},
searchParamReset() {
this.searchParam = JSON.parse(JSON.stringify(searchParam))
},
......
......@@ -5,6 +5,7 @@
<div>
<el-input v-model="searchParam.code" clearable size="small" placeholder="尾矿库编号" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.nameLike" clearable size="small" placeholder="尾矿库名称" style="width: 200px;" class="filter-item" />
<el-input v-model="searchParam.enterpriseName" clearable size="small" placeholder="所属企业" style="width: 200px;" class="filter-item" />
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="searchSubmit">搜索</el-button>
<el-button class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="searchParamReset">重置</el-button>
</div>
......@@ -30,9 +31,20 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所属行政区划:" prop="_administrativeAreaCascade">
<!-- <el-form-item label="所属行政区划:" prop="_administrativeAreaCascade">
<span v-show="!editing">{{ dialog1Data.administrativeAreaName }}</span>
<el-cascader v-show="editing" v-model="dialog1Data._administrativeAreaCascade" style="width: 100%;" :options="administrativeAreaList" clearable />
</el-form-item> -->
<el-form-item label="所属企业:" prop="enterpriseId">
<span v-show="!editing">{{ dialog1Data.enterpriseName }}</span>
<el-select v-show="editing" size="mini" v-model="dialog1Data.enterpriseId" placeholder="" @change="handleChange">
<el-option
v-for="item in companyList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -567,6 +579,7 @@
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column :show-overflow-tooltip="true" label="编号" prop="id" width="100px" align="center" />
<el-table-column :show-overflow-tooltip="true" label="尾矿库名称" prop="name" align="center" />
<el-table-column :show-overflow-tooltip="true" label="所属企业" prop="enterpriseName" align="center" />
<el-table-column :show-overflow-tooltip="true" label="尾矿库编号" prop="code" align="center" />
<el-table-column :show-overflow-tooltip="true" label="尾矿库地址" prop="address" align="center" />
<el-table-column :show-overflow-tooltip="true" label="尾矿库等级" prop="dict19Name" align="center" />
......@@ -601,6 +614,7 @@
</template>
<script>
import {getCompanyList} from '@/api/system/user'
import mineApi from '@/api/kd/mine'
import mineStopApplyApi from '@/api/kd/mineStopApply'
import dictionaryApi from '@/api/kd/dictionary'
......@@ -612,13 +626,15 @@ import { validatePhone } from '@/utils/validate'
const searchParam = {// 默认搜索条件
page: 1,
count: 10,
searchCount: true
searchCount: true,
enterpriseName: ''
}
export default {
name: 'ETailings', // 本页面名
components: { AMapSearchPoint },
data() {
return {
companyList: [],
httpHeaders: {
'Authorization': getToken()
},
......@@ -658,7 +674,8 @@ export default {
liablePersonPhone: [{ required: true, trigger: 'blur', validator: validatePhone }],
safetyPersonPhone: [{ required: true, trigger: 'blur', validator: validatePhone }],
dutyPhone: [{ required: true, trigger: 'blur', validator: validatePhone }],
runState: [{ required: true, message: '请选择' }]
runState: [{ required: true, message: '请选择' }],
enterpriseId: [{ required: true, message: '请选择' }]
},
editState: 0, // (刚打开窗口时)记录了上次窗口作用;(保存编辑时)记录了当前窗口作用; 0无 1新增 2修改 3查看
addingData: {}, // 上次正在新增时的内容,下次打开dialog1窗口时记录下来
......@@ -694,8 +711,15 @@ export default {
})
this.searchParamReset()
this.searchSubmit()
this.getCompanyList()
},
methods: {
getCompanyList(){
getCompanyList({})
.then((res) => {
this.companyList = res.body;
});
},
searchParamReset() {
this.searchParam = JSON.parse(JSON.stringify(searchParam))
},
......
......@@ -484,7 +484,8 @@ export default {
liablePersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
managedPersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
safetyPersonPhone: [{ required: false, trigger: 'blur', validator: validatePhone }],
runState: [{ required: true, message: '请选择' }]
runState: [{ required: true, message: '请选择' }],
enterpriseId: [{ required: true, message: '请选择' }],
},
editState: 0, // (刚打开窗口时)记录了上次窗口作用;(保存编辑时)记录了当前窗口作用; 0无 1新增 2修改 3查看
addingData: {}, // 上次正在新增时的内容,下次打开dialog1窗口时记录下来
......
<template>
<div v-show="show" class="login" :style="'background-image:url('+ Background +');'">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<h2 class="title">
中和地信应急平台
</h2>
<h4 class="title">
{{ userStyle }}账号登录
</h4>
<div
v-show="show"
class="login"
:style="'background-image:url(' + Background + ');'"
>
<!-- <div class="top">
<div class="bd top_main">
<div class="tempWrap" style="overflow:hidden; position:relative; width:1280px"><ul style="width: 3840px; position: relative; overflow: hidden; padding: 0px; margin: 0px; left: -1807px;"><li class="clone" style="float: left; width: 1280px;">欢迎您访问中和地信有限公司官网 </li><li style="float: left; width: 1280px;">欢迎您访问中和地信有限公司官网 </li><li class="clone" style="float: left; width: 1280px;">欢迎您访问中和地信有限公司官网 </li></ul></div>
</div>
</div> -->
<div class="topTitle">
<div class="floating-text">中和地信有限公司欢迎您!</div>
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
label-position="left"
label-width="0px"
class="login-form"
>
<h2 class="title">中和地信企业管理平台</h2>
<h4 class="title">{{ userStyle }}账号登录</h4>
<el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="账号"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode">
<img :src="codeUrl" @click="getCode" />
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
<el-checkbox v-model="loginForm.rememberMe" style="margin: 0 0 25px 0">
记住我
</el-checkbox>
<el-form-item style="width:100%;">
<el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleLogin">
<el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
......@@ -43,220 +93,356 @@
</el-form-item> -->
</el-form>
<!-- 底部 -->
<div v-if="$store.state.settings.showFooter" id="el-login-footer">
<!-- <div v-if="$store.state.settings.showFooter" id="el-login-footer">
<span v-html="$store.state.settings.footerTxt" />
<span v-if="$store.state.settings.caseNumber"></span>
<a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">{{ $store.state.settings.caseNumber }}</a>
</div> -->
<div class="foots">
<div class="foots_logo">
<img
src="@/assets/images/foot_logo.png"
alt="logo"
/>
</div>
<div class="foots_con">
<div class="foots_info" style="float: left">
<p>网址: http://zhidcLcomy</p>
<p>地址: 淄博市张店区潘南西路8号院</p>
<p>电话/传真: 0533-3338333</p>
</div>
<div
class="r foots_ewm"
style="
float: right;
display: flex;
justify-content: space-between;
align-items: center;
"
>
<div class="foots_ewm_info">
扫一扫<br /><br />
手机浏览网站
</div>
<div class="foots_ewm_img">
<img
src="@/assets/images/ewm.jpg"
alt="二维码"
/>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
</div>
</div>
</template>
<script>
import { encrypt } from '@/utils/rsaEncrypt'
import Config from '@/settings'
import { getCodeImg } from '@/api/login'
import Cookies from 'js-cookie'
import qs from 'qs'
import Background from '@/assets/images/background.webp'
import { mapGetters } from 'vuex'
import { encrypt } from "@/utils/rsaEncrypt";
import Config from "@/settings";
import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie";
import qs from "qs";
import Background from "@/assets/images/background.png";
import { mapGetters } from "vuex";
export default {
name: 'Login',
name: "Login",
data() {
return {
show: false,
userStyle: null,
Background: Background,
codeUrl: '',
cookiePass: '',
codeUrl: "",
cookiePass: "",
loginForm: {
username: '',
password: '',
username: "",
password: "",
rememberMe: false,
code: '',
uuid: ''
code: "",
uuid: "",
},
loginRules: {
username: [{ required: true, trigger: 'blur', message: '用户名不能为空' }],
password: [{ required: true, trigger: 'blur', message: '密码不能为空' }],
code: [{ required: true, trigger: 'change', message: '验证码不能为空' }]
username: [
{ required: true, trigger: "blur", message: "用户名不能为空" },
],
password: [
{ required: true, trigger: "blur", message: "密码不能为空" },
],
code: [
{ required: true, trigger: "change", message: "验证码不能为空" },
],
},
loading: false,
redirect: undefined
}
redirect: undefined,
};
},
computed: {
...mapGetters([
'user'
])
...mapGetters(["user"]),
},
watch: {
$route: {
handler: function(route) {
const data = route.query
handler: function (route) {
const data = route.query;
if (data && data.redirect) {
this.redirect = data.redirect
delete data.redirect
if (JSON.stringify(data) !== '{}') {
this.redirect = this.redirect + '&' + qs.stringify(data, { indices: false })
this.redirect = data.redirect;
delete data.redirect;
if (JSON.stringify(data) !== "{}") {
this.redirect =
this.redirect + "&" + qs.stringify(data, { indices: false });
}
}
},
immediate: true
}
immediate: true,
},
},
created() {
// 按照不同域名加载不同页面样式(企业、应急局),加载完毕后再显示页面
const host = window.location.host
if (host === 'yingji.longxijiancai.com') {
this.userStyle = '应急局'
const host = window.location.host;
if (host === "yingji.longxijiancai.com") {
this.userStyle = "应急局";
}
if (host === 'qiye.longxijiancai.com') {
this.userStyle = '企业'
if (host === "qiye.longxijiancai.com") {
this.userStyle = "企业";
}
this.show = true
this.show = true;
// 获取验证码
this.getCode()
this.getCode();
// 获取用户名密码等Cookie
this.getCookie()
this.getCookie();
// token 过期提示
this.point()
this.point();
},
methods: {
getCode() {
getCodeImg().then(res => {
this.codeUrl = res.img
this.loginForm.uuid = res.uuid
})
getCodeImg().then((res) => {
this.codeUrl = res.img;
this.loginForm.uuid = res.uuid;
});
},
getCookie() {
const username = Cookies.get('username')
let password = Cookies.get('password')
const rememberMe = Cookies.get('rememberMe')
const username = Cookies.get("username");
let password = Cookies.get("password");
const rememberMe = Cookies.get("rememberMe");
// 保存cookie里面的加密后的密码
this.cookiePass = password === undefined ? '' : password
password = password === undefined ? this.loginForm.password : password
this.cookiePass = password === undefined ? "" : password;
password = password === undefined ? this.loginForm.password : password;
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password,
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
code: ''
}
code: "",
};
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
this.$refs.loginForm.validate((valid) => {
const user = {
username: this.loginForm.username,
password: this.loginForm.password,
rememberMe: this.loginForm.rememberMe,
code: this.loginForm.code,
uuid: this.loginForm.uuid
}
uuid: this.loginForm.uuid,
};
if (user.password !== this.cookiePass) {
user.password = encrypt(user.password)
user.password = encrypt(user.password);
}
if (valid) {
this.loading = true
this.loading = true;
if (user.rememberMe) {
Cookies.set('username', user.username, { expires: Config.passCookieExpires })
Cookies.set('password', user.password, { expires: Config.passCookieExpires })
Cookies.set('rememberMe', user.rememberMe, { expires: Config.passCookieExpires })
Cookies.set("username", user.username, {
expires: Config.passCookieExpires,
});
Cookies.set("password", user.password, {
expires: Config.passCookieExpires,
});
Cookies.set("rememberMe", user.rememberMe, {
expires: Config.passCookieExpires,
});
} else {
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove("rememberMe");
}
this.$store.dispatch('Login', user).then(() => {
this.loading = false
if (this.userStyle) {
if (this.userStyle === '应急局' && this.user.enterpriseId !== 0) {
this.$message.error('您是企业用户,请使用企业端登录')
setTimeout(() => {
this.$store.dispatch('LogOut').then(() => {
location.reload()
})
}, 1000)
return
}
if (this.userStyle === '企业' && this.user.enterpriseId === 0) {
this.$message.error('您是应急局用户,请使用应急局端登录')
setTimeout(() => {
this.$store.dispatch('LogOut').then(() => {
location.reload()
})
}, 1000)
return
this.$store
.dispatch("Login", user)
.then(() => {
this.loading = false;
if (this.userStyle) {
if (
this.userStyle === "应急局" &&
this.user.enterpriseId !== 0
) {
this.$message.error("您是企业用户,请使用企业端登录");
setTimeout(() => {
this.$store.dispatch("LogOut").then(() => {
location.reload();
});
}, 1000);
return;
}
if (this.userStyle === "企业" && this.user.enterpriseId === 0) {
this.$message.error("您是应急局用户,请使用应急局端登录");
setTimeout(() => {
this.$store.dispatch("LogOut").then(() => {
location.reload();
});
}, 1000);
return;
}
}
}
// this.$router.push({ path: /* 记住上次退出时的页面 */ /* this.redirect || */'/home4Login' })
this.$router.push({ path: 'login4Index' })
}).catch(() => {
this.loading = false
this.getCode()
})
// this.$router.push({ path: /* 记住上次退出时的页面 */ /* this.redirect || */'/home4Login' })
this.$router.push({ path: "login4Index" });
})
.catch(() => {
this.loading = false;
this.getCode();
});
} else {
console.log('error submit!!')
return false
console.log("error submit!!");
return false;
}
})
});
},
point() {
const point = Cookies.get('point') !== undefined
const point = Cookies.get("point") !== undefined;
if (point) {
this.$notify({
title: '提示',
message: '当前登录状态已过期,请重新登录!',
type: 'warning',
duration: 5000
})
Cookies.remove('point')
title: "提示",
message: "当前登录状态已过期,请重新登录!",
type: "warning",
duration: 5000,
});
Cookies.remove("point");
}
},
},
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.foots {
position: absolute;
bottom: 0;
width: 100%;
padding: 0.8rem 0 0.2rem 0;
background: rgba(4,38,75, 0.9);
.foots_logo {
width: 1140px;
padding-bottom: 0.2rem;
margin: 0 auto;
font-size: 0;
// border-bottom: 1px solid #4a637e;
img {
height: 48px;
}
}
.foots_con {
width: 1140px;
margin: 2px auto 15px;
overflow: hidden;
.foots_info {
font-size: 14px;
line-height: 18px;
color: #adb2ba;
letter-spacing: 1px;
}
.foots_ewm {
font-size: 16px;
line-height: 16px;
color: #c7cacf;
padding-top: 0.3rem;
letter-spacing: 1px;
.foots_ewm_info {
text-align: right;
padding-right: 18px;
}
.foots_ewm_img img {
width: 101px;
}
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss">
.login {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-size: cover;
@keyframes floatShadow {
0% {
transform: translateX(1300px);
display: block;
}
.title {
margin: 0 auto 30px auto;
text-align: center;
color: #707070;
100% {
transform: translateX(-200px);
display: none;
}
}
.floating-text {
font-size: 14px;
color: #fff;
animation: floatShadow;
animation-name: floatShadow;
animation-duration: 20s;
animation-iteration-count: infinite;
animation-timing-function: linear;
position: absolute;
top: 0px;
}
.topTitle {
position: absolute;
// display: flex;
// align-items: center;
top: 0;
background: rgba(110,148,178,0.8);
color: #fff;
height: 30px;
width: 100%;
line-height: 30px;
text-align: center;
}
.login {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
margin: 0 auto 30px auto;
text-align: center;
color: #707070;
}
.login-form {
border-radius: 6px;
background: #ffffff;
width: 500px; /* 385px */
padding: 25px 25px 5px 25px;
.el-input {
.login-form {
border-radius: 6px;
background: #ffffff;
width: 500px; /* 385px */
padding: 25px 25px 5px 25px;
.el-input {
height: 38px;
input {
height: 38px;
input {
height: 38px;
}
}
.input-icon{
height: 39px;width: 14px;margin-left: 2px;
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
.input-icon {
height: 39px;
width: 14px;
margin-left: 2px;
}
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img{
cursor: pointer;
vertical-align:middle
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img {
cursor: pointer;
vertical-align: middle;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment