Merge remote-tracking branch 'origin/master'

This commit is contained in:
haozq 2024-04-07 09:49:04 +08:00
commit 36015414df
32 changed files with 182 additions and 41 deletions

View File

@ -100,7 +100,7 @@
<el-input v-model="temp.remarks" placeholder="备注" :maxlength="200" />
</el-form-item>
<el-form-item label="是否是有限空间:" prop="areaType">
<el-select v-model="temp.areaType" placeholder="请选择" style="width: 100%">
<el-select v-model="temp.areaType" placeholder="请选择" style="width: 100%" clearable>
<el-option v-for="item in Object.keys(areaTypeMap)" :key="item" :value="Number(item)" :label="areaTypeMap[item]" />
</el-select>
</el-form-item>

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择建管单位" style="width: 100%">
<el-select v-model="currentOption" placeholder="请选择建管单位" style="width: 100%" clearable>
<el-option
v-for="item in options"
:key="item.value"

View File

@ -71,7 +71,7 @@
label-width="120px"
>
<el-form-item :label="`${title}`" prop="gxId">
<el-select v-model="temp.gxId" placeholder="请选择" style="width: 100%">
<el-select v-model="temp.gxId" placeholder="请选择" style="width: 100%" clearable>
<el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name" />
</el-select>
</el-form-item>

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择工程状态" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择工程状态" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -151,7 +151,7 @@
<el-input v-model="temp.bidCode" placeholder="标段编码" :maxlength="50" :disabled="textMap[dialogStatus] === 'update'" />
</el-form-item>
<el-form-item label="工程类型:" prop="proType">
<el-select v-model="temp.proType" placeholder="请选择" style="width: 100%">
<el-select v-model="temp.proType" placeholder="请选择" style="width: 100%" clearable>
<el-option key="变电" value="变电" label="变电" />
<el-option key="线路" value="线路" label="线路" />
</el-select>
@ -282,7 +282,7 @@
<el-input v-model="temp.jlManage" :rows="2" placeholder="监理工程师" :maxlength="50" />
</el-form-item>
<el-form-item label="变电站类型:" prop="subType">
<el-select v-model="temp.subType" placeholder="请选择" style="width: 100%">
<el-select v-model="temp.subType" placeholder="请选择" style="width: 100%" clearable>
<el-option :key="1" :value="1" label="土建" />
<el-option :key="2" :value="2" label="电气" />
<el-option :key="3" :value="3" label="变电" />

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择项目编码" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择项目编码" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择单项工程编码" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择单项工程编码" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -4,7 +4,7 @@
open a Drag Dialog
</el-button>
<el-dialog v-el-drag-dialog :visible.sync="dialogTableVisible" title="Shipping address" @dragDialog="handleDrag">
<el-select ref="select" v-model="value" placeholder="请选择">
<el-select ref="select" v-model="value" placeholder="请选择" clearable>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-table :data="gridData">

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择区域" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择区域" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择工程" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择工程" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -2,7 +2,7 @@
<div class="app-container">
<div class="filter-container">
<el-input
v-model="listQuery.keyword"
v-model="listQuery.keyWord"
placeholder="关键字"
style="width: 200px"
class="filter-item"
@ -152,7 +152,7 @@ export default {
listQuery: {
pageNum: 1,
pageSize: 10,
keyword: ''
keyWord: ''
},
tableHeight: 650,
showReviewer: false,

View File

@ -160,7 +160,7 @@ export default {
listQuery: {
pageNum: 1,
pageSize: 10,
keyword: '',
keyWord: '',
id: ''
},
tableHeight: 650,

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -63,7 +63,7 @@
</div>
</div>
<div class="watch-operate__keyboard">
<h3 class="item-title">球机当日上线记录 &emsp;&emsp;<a href="#" style="color: #1890ff">快捷键设置</a></h3>
<h3 class="item-title">球机当日上线记录 &emsp;&emsp;<a href="#" style="color: #1890ff" @click="handleShortcut">快捷键设置</a></h3>
<el-divider />
<div>
<div class="filter-container">
@ -146,6 +146,8 @@
</el-container>
<TeamModal :component-visible.sync="teamQualityVisible" :current-id="currentBidCode" />
<GtTable :component-visible.sync="gtInfoVisible" :current-id="currentGtId" />
<ShortcutModal :component-visible.sync="shortcutModalVisible" />
</el-dialog>
</template>
@ -172,6 +174,7 @@ import { videoConfig } from '@/views/risk/dailyTask/config/video'
import moment from 'moment'
import TeamModal from '@/views/risk/dailyTask/components/TeamModal.vue'
import GtTable from '@/views/basic/project/components/GtTable.vue'
import ShortcutModal from '@/views/risk/dailyTask/components/ShortcutModal.vue'
const tmp = {
bidName: '',
@ -194,7 +197,7 @@ const tmp = {
export default {
name: 'RemoteWatchModal',
components: { GtTable, TeamModal },
components: { ShortcutModal, GtTable, TeamModal },
props: ['componentVisible', 'currentId', 'currentBid'],
data() {
return {
@ -203,11 +206,25 @@ export default {
startVideoStatus: false,
mediaRecorder: null,
recordedChunks: [],
shortcut: [
{ key: 'w', name: '向上', value: 'up', stop: 'stopTurn' },
{ key: 's', name: '向下', value: 'down', stop: 'stopTurn' },
{ key: 'a', name: '向左', value: 'left', stop: 'stopTurn' },
{ key: 'd', name: '向右', value: 'right', stop: 'stopTurn' },
{ key: 'q', name: '放大', value: 'amplify', stop: 'stopZoom' },
{ key: 'e', name: '缩小', value: 'shrink', stop: 'stopZoom' },
{ key: 'r', name: '远焦', value: 'far', stop: 'stopFocus' },
{ key: 't', name: '近焦', value: 'near', stop: 'stopFocus' },
{ key: 'f', name: '拍照', value: 'capture' },
{ key: 'g', name: '录像', value: 'video' }
],
videoUrl: null,
//
teamQualityVisible: true,
teamQualityVisible: false,
currentBidCode: '',
gtInfoVisible: false,
shortcutModalVisible: false,
handlingKeyEvent: false,
currentGtId: '',
list: [],
listQuery: {
@ -248,11 +265,21 @@ export default {
this.getList()
this.initVideo()
this.handleFilter()
window.addEventListener('keydown', this.handleKeyDown)
window.addEventListener('keyup', this.handleKeyUp)
} else {
window.removeEventListener('keydown', this.handleKeyDown)
window.removeEventListener('keyup', this.handleKeyUp)
}
}
},
mounted() {
// this.initVideo()
window.addEventListener('keydown', this.handleKeyDown)
window.addEventListener('keyup', this.handleKeyUp)
},
beforeDestroy() {
window.removeEventListener('keydown', this.handleKeyDown)
window.removeEventListener('keyup', this.handleKeyUp)
},
methods: {
getList() {
@ -458,6 +485,35 @@ export default {
handleGtInfoShow() {
this.currentBidCode = this.currentBid
this.gtInfoVisible = true
},
handleShortcut() {
this.shortcutModalVisible = true
},
handleKeyDown(event) {
if (this.shortcutModalVisible || this.teamQualityVisible || this.gtInfoVisible || this.handlingKeyEvent) return
this.handlingKeyEvent = true
const key = event.key
let shortcut = localStorage.getItem('shortcut')
shortcut = shortcut ? JSON.parse(shortcut) : this.shortcut
const currentKey = shortcut.find(item => item?.key === key)
if (currentKey) {
this.handleControl(currentKey.value)
}
console.log('按键被按下:', event.key)
},
handleKeyUp(event) {
if (this.shortcutModalVisible || this.teamQualityVisible || this.gtInfoVisible) return
console.log('按键被释放:', event.key)
const key = event.key
let shortcut = localStorage.getItem('shortcut')
shortcut = shortcut ? JSON.parse(shortcut) : this.shortcut
const currentKey = shortcut.find(item => item?.key === key)
if (currentKey && currentKey?.stop) {
this.handleControl(currentKey.stop)
}
this.handlingKeyEvent = false
}
}
}

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="风险等级" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="风险等级" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -0,0 +1,85 @@
<template>
<el-dialog title="快捷键设置" :visible.sync="visible" append-to-body width="500px">
<el-input
v-for="(item, index) in shortcut"
:key="index"
:value="item.key"
placeholder="请设置快捷键"
style="margin-bottom: 10px"
:maxlength="1"
@keydown.native="handleKey(index, $event)"
>
<template slot="prepend">{{ item.name }}</template>
</el-input>
<div slot="footer" class="dialog-footer">
<el-button @click="visible = false"> 关闭 </el-button>
<el-button type="primary" @click="handleSave">
保存
</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'ShortcutModal',
props: ['currentId', 'componentVisible'],
data() {
return {
shortcut: [
{ key: 'w', name: '向上', value: 'up', stop: 'stopTurn' },
{ key: 's', name: '向下', value: 'down', stop: 'stopTurn' },
{ key: 'a', name: '向左', value: 'left', stop: 'stopTurn' },
{ key: 'd', name: '向右', value: 'right', stop: 'stopTurn' },
{ key: 'q', name: '放大', value: 'amplify', stop: 'stopZoom' },
{ key: 'e', name: '缩小', value: 'shrink', stop: 'stopZoom' },
{ key: 'r', name: '远焦', value: 'far', stop: 'stopFocus' },
{ key: 't', name: '近焦', value: 'near', stop: 'stopFocus' },
{ key: 'f', name: '拍照', value: 'capture' },
{ key: 'g', name: '录像', value: 'video' }
]
}
},
computed: {
visible: {
get() {
return this.componentVisible
},
set(val) {
this.$emit('update:componentVisible', val)
}
}
},
watch: {
visible(val) {
if (val) {
this.getList()
}
}
},
methods: {
getList() {
const shortcut = localStorage.getItem('shortcut')
if (shortcut) this.shortcut = JSON.parse(shortcut)
},
handleKey(index, event) {
const key = event.key
if (this.shortcut.find(item => item.key === key)) {
this.$message({
showClose: true,
message: '快捷键已存在',
type: 'error',
duration: 2000
})
return
}
this.shortcut[index].key = event.key
},
handleSave() {
localStorage.setItem('shortcut', JSON.stringify(this.shortcut))
this.visible = false
}
}
}
</script>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="车辆进出场记录" :visible.sync="visible" append-to-body custom-class="custom-modal" fullscreen>
<el-dialog title="班组评价" :visible.sync="visible" append-to-body custom-class="custom-modal" fullscreen>
<TeamQuality ref="teamQualityRef" />
</el-dialog>
</template>

View File

@ -2,7 +2,7 @@
<div>
<div class="filter-container">
<el-input
v-model="listQuery.name"
v-model="listQuery.emergencyName"
placeholder="应急预案名称"
style="width: 200px"
class="filter-item"
@ -133,7 +133,7 @@ export default {
listQuery: {
pageNum: 1,
pageSize: 10,
name: ''
emergencyName: ''
},
tableHeight: 650,
temp: _.cloneDeep(defaultTmp),

View File

@ -2,7 +2,7 @@
<div>
<div class="filter-container">
<el-input
v-model="listQuery.keyWord"
v-model="listQuery.emergencyName"
placeholder="应急联系人"
style="width: 200px"
class="filter-item"
@ -108,7 +108,7 @@ export default {
listQuery: {
pageNum: 1,
pageSize: 10,
keyWord: ''
emergencyName: ''
},
tableHeight: 650,
temp: _.cloneDeep(defaultTmp),

View File

@ -2,7 +2,7 @@
<div>
<div class="filter-container">
<el-input
v-model="listQuery.name"
v-model="listQuery.emergencyName"
placeholder="应急流程名称"
style="width: 200px"
class="filter-item"
@ -134,7 +134,7 @@ export default {
listQuery: {
pageNum: 1,
pageSize: 10,
name: ''
emergencyName: ''
},
tableHeight: 650,
temp: _.cloneDeep(defaultTmp),

View File

@ -1,5 +1,5 @@
<template>
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" @change="handleChange">
<el-select v-model="currentOption" placeholder="请选择" style="width: 100%" clearable @change="handleChange">
<el-option
v-for="item in options"
:key="item.value"

View File

@ -19,7 +19,7 @@
:maxlength="30"
@keyup.enter.native="handleFilter"
/>
<el-select v-model="temp.type" placeholder="请选择是否已分配" style="width: 200px" class="filter-item ml-20">
<el-select v-model="temp.type" placeholder="请选择是否已分配" style="width: 200px" class="filter-item ml-20" clearable>
<el-option v-for="item in Object.keys(typeMap)" :key="item" :value="Number(item)" :label="typeMap[item]" />
</el-select>
<el-button

View File

@ -120,8 +120,8 @@
<treeselect v-model="temp.orgId" :options="orgOptions" :show-count="true" placeholder="请选择组织机构" />
</el-form-item> -->
<el-form-item label="组织机构" prop="orgId">
<el-select v-model="temp.orgId" placeholder="请选择组织机构" class="filter-item" style="width: 100%">
<el-option v-for="item in buildArr" :key="item.orgId" :label="item.name" :value="item.orgId"></el-option>
<el-select v-model="temp.orgId" placeholder="请选择组织机构" class="filter-item" style="width: 100%" clearable>
<el-option v-for="item in buildArr" :key="item.orgId" :label="item.name" :value="item.orgId" />
</el-select>
</el-form-item>
<el-form-item label="登录权限" prop="loginType">
@ -184,7 +184,7 @@
<script>
import { fetchList, addUser, getUserById, editUser, delUser, editPwd } from '@/api/user'
import { fetchOrgList, fetchRoleList,fetchBuildList } from '@/api/select'
import { fetchOrgList, fetchRoleList, fetchBuildList } from '@/api/select'
import { validPhone, validPwd } from '@/utils/validate'
import waves from '@/directive/waves'
import { parseTime } from '@/utils'