Fix: 解决冲突

This commit is contained in:
vce 2024-03-08 18:23:20 +08:00
commit 36bedb8270
7 changed files with 499 additions and 27 deletions

View File

@ -31,7 +31,7 @@ export default {
out:'出',
carPhotosUrl: '车辆图片',
carType: '车辆类型',
carModuleType: '固定/临时车辆',
carModuleType: '固定/临时车辆',//1固定车辆2临时车辆
reserveStartTime: '预约开始时间',
reserveEndTime: '预约结束时间',
entryAndExitPermit: '允许进出次数',

View File

@ -72,6 +72,7 @@ export default {
alarmData: '报警数据',
dutyCycleData: '工作循环数据',
violationData: '违章数据',
workerAttendanceData: '考勤数据',
allTowerCranes: '全部塔吊(位置配置)',
newTowerCrane: '新增塔吊',
@ -439,4 +440,12 @@ export default {
violationInfo6: '风速违章',
violationInfo7: '添加时间',
violationInfo8: '违章时间',
//考勤记录列表
driverName: '驾驶员名称',
idCardNo: '驾驶员身份证号码',
recgRercentage: '匹配百分比',
recognitionType: '识别类型',
systemTime: '考勤时间',
towerName: '塔吊名称',
}

View File

@ -112,6 +112,8 @@ export const selectTowerWorkCycleCountApi = data => post('xmgl/towerWorkCycle/se
export const selectTowerWorkCycleApi = data => post('xmgl/towerWorkCycle/list', data,'aa');
// 分页列表查询塔机违章数据表信息
export const selectTowerViolationApi = data => post('xmgl/towerViolation/list', data);
// 分页列表查询塔机考勤记录表信息
export const selectTowerWorkerAttendanceApi = data => get('xmgl/towerWorkerAttendance/page', data);
//螺母
export const selectTowerNutByNutHostIdApi = data => post('xmgl/towerNut/selectTowerNutByNutHostId', data);

View File

@ -88,7 +88,7 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL = 'http://182.90.224.237:51234' //郭圣雄远程
// axios.defaults.baseURL ='http://101.43.164.214:45020/' //沈阳和盈
// axios.defaults.baseURL ='http://183.249.224.118:9000/' //嘉兴王江泾公用码头
axios.defaults.baseURL ='http://101.43.164.214:11111/' // 百色三标段项目
// axios.defaults.baseURL ='http://101.43.164.214:11111/' // 百色三标段项目
// axios.defaults.baseURL = 'http://125.88.207.86:8088/'//中建四局线上(最新)地址
// axios.defaults.baseURL = 'http://125.88.207.86:8099/'//中建四局(沙湖)线上(最新)地址

View File

@ -103,6 +103,42 @@
/>
</div>
</el-table-column>
<el-table-column
prop="carModuleType"
align="center"
:label="$t('message.carManage.carModuleType')"
>
<template slot-scope="scope">
<span v-if="scope.row.carModuleType === 1">固定车辆</span>
<span v-else-if="scope.row.carModuleType === 2">临时车辆</span>
</template>
</el-table-column>
<el-table-column
prop="reserveStartTime reserveEndTime"
align="center"
label="预约时间"
width="350"
>
<template slot-scope="scope" v-if="scope.row.carModuleType === 2">
<span v-if="scope.row.carModuleType === 2">
{{ scope.row. reserveStartTime + ' 至 ' + scope.row.reserveEndTime}}
</span>
</template>
</el-table-column>
<el-table-column
prop="entryAndExitPermit"
align="center"
:label="$t('message.carManage.entryAndExitPermit')"
>
<template slot-scope="scope" v-if="scope.row.carModuleType === 2">
<span v-if="scope.row.entryAndExitPermit === 0">单次</span>
<span v-else-if="scope.row.entryAndExitPermit === 1">多次</span>
</template>
</el-table-column>
<el-table-column
:label="$t('message.deviceManage.operation')"
align="center"
@ -163,36 +199,56 @@
class="dialogFormBox"
>
<!-- 司机姓名 -->
<el-form-item
:label="$t('message.carManage.driverName')"
prop="driverName"
>
<el-input
v-model="addEditForm.driverName"
:placeholder="$t('message.deviceManage.placeholder')"
></el-input>
<!-- 固定/临时车辆 -->
<el-form-item :label="$t('message.carManage.carModuleType')" prop="carModuleType">
<!-- <el-radio-group v-model="addEditForm.carModuleType" @change="changeForm()"> -->
<el-radio-group v-model="addEditForm.carModuleType">
<el-radio :label="1">固定车辆</el-radio>
<el-radio :label="2">临时车辆</el-radio>
</el-radio-group>
</el-form-item>
<!-- 预约时间 -->
<el-form-item
label="预约时间"
prop="carTimes"
v-if="true"
<!-- 预约开始时间 -->
<el-form-item :label="$t('message.carManage.reserveStartTime')" prop="reserveStartTime"
:rules="this.addEditForm.carModuleType === 2 ? reserveStartTimeRule : []"
v-if="this.addEditForm.carModuleType === 2"
>
<el-date-picker
v-model="time"
type="daterange"
:range-separator="$t('message.deviceManage.to')"
:start-placeholder="$t('message.carManage.reserveStartTime')"
v-model="addEditForm.reserveStartTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:end-placeholder="$t('message.carManage.reserveEndTime')"
@change="testCOnsole()"
width="10"
@change="getStratEndTime()"
:placeholder="$t('message.deviceManage.placeholder')"
>
</el-date-picker>
</el-form-item>
<!-- 预约结束时间 -->
<el-form-item :label="$t('message.carManage.reserveEndTime')" prop="reserveEndTime"
:rules="this.addEditForm.carModuleType === 2 ? reserveEndTimeRule : []"
v-if="this.addEditForm.carModuleType === 2"
>
<el-date-picker
v-model="addEditForm.reserveEndTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
@change="getStratEndTime()"
:placeholder="$t('message.deviceManage.placeholder')"
:default-value="new Date"
>
</el-date-picker>
</el-form-item>
<!-- 允许进出次数 -->
<el-form-item :label="$t('message.carManage.entryAndExitPermit')" prop="entryAndExitPermit"
:rules="this.addEditForm.carModuleType === 2 ? isRequireRule : []"
v-if="this.addEditForm.carModuleType === 2">
<el-radio-group v-model="addEditForm.entryAndExitPermit">
<el-radio :label="0">单次</el-radio>
<el-radio :label="1">多次</el-radio>
</el-radio-group>
</el-form-item>
<!-- 车牌号 -->
<el-form-item
:label="$t('message.carManage.carNumber')"
@ -391,8 +447,46 @@ export default {
this.getAppWorkerList()
},
data() {
var validReserveStartTime = (rule, value, callback) => {
if(this.addEditForm.reserveStartTime === '' || this.addEditForm.reserveStartTime === undefined){
callback(new Error("必填"));
}else{
let startTime = new Date(this.addEditForm.reserveStartTime)
let endTime = new Date(this.addEditForm.reserveEndTime)
if (startTime > endTime) {
callback(new Error("必须小于预约结束时间"));
}else {
callback();
}
}
};
var validReserveEndTime = (rule, value, callback) => {
if(this.addEditForm.reserveEndTime === '' || this.addEditForm.reserveEndTime === undefined){
callback(new Error("必填"));
}else{
let startTime = new Date(this.addEditForm.reserveStartTime)
let endTime = new Date(this.addEditForm.reserveEndTime)
if (startTime > endTime) {
callback(new Error("必须大于预约开始时间"));
}else {
callback();
}
}
};
return {
time: '',
isRequireRule: [
{ required: true, message: this.$t('message.carManage.required'), trigger: "blur" },
{ required: true, message: this.$t('message.carManage.required'), trigger: "change" }
],
reserveStartTimeRule: [
{ required: true, validator: validReserveStartTime, trigger: "blur" },
{ required: true, validator: validReserveStartTime, trigger: "change" }
],
reserveEndTimeRule: [
{ required: true, validator: validReserveEndTime, trigger: "blur" },
{ required: true, validator: validReserveEndTime, trigger: "change" }
],
startEndTimeArr: [],
COMPANY: COMPANY,
fileList: [],
showImgUrl: '',
@ -400,6 +494,18 @@ export default {
multiple: true
},
addEditRules: {
carModuleType: [
{ required: true, message: this.$t('message.carManage.required'), trigger: "blur" },
{ required: true, message: this.$t('message.carManage.required'), trigger: "change" }
],
startEndTimeArr: [
// { required: true, validator: validIsCarModuleType1, trigger: "blur" },
// { required: true, validator: validIsCarModuleType1, trigger: "change" }
],
entryAndExitPermit: [
// { required: true, validator: validIsCarModuleType2, trigger: "blur" },
// { required: true, validator: validIsCarModuleType2, trigger: "change" }
],
carColor: [
{ required: true, message: this.$t('message.carManage.required'), trigger: "blur" },
{ required: true, message: this.$t('message.carManage.required'), trigger: "change" }
@ -463,8 +569,25 @@ export default {
}
},
methods: {
testCOnsole(){
console.log(this.time);
changeForm(){
if(this.addEditForm.carModuleType === 1){
this.addEditForm.reserveStartTime = null
this.addEditForm.reserveEndTime = null
this.addEditForm.entryAndExitPermit = null
this.getStratEndTime()
}
if(this.addEditForm.carModuleType === 2){
this.addEditForm.reserveStartTime = ''
this.addEditForm.reserveEndTime = ''
this.addEditForm.entryAndExitPermit = ''
this.getStratEndTime()
}
},
getStratEndTime(){
console.log("固定/临时车辆 " + this.addEditForm.carModuleType);
console.log("开始时间 " + this.addEditForm.reserveStartTime);
console.log("结束时间 " + this.addEditForm.reserveEndTime);
console.log("进出次数类型 " + this.addEditForm.entryAndExitPermit);
},
//
// handleInput() {
@ -495,6 +618,8 @@ export default {
},
edit(obj) {
this.addEditForm = JSON.parse(JSON.stringify(obj));
// this.addEditForm.startEndTimeArr = []
// this.addEditForm.startEndTimeArr.push(this.addEditForm.reserveStartTime,this.addEditForm.reserveEndTime)
this.fileList = obj.carPhotosUrl;
console.log('类型============', obj);
if (typeof obj.carPhotosUrl === 'string') {
@ -534,6 +659,8 @@ export default {
submit() {
this.processTheFile();
let params = JSON.parse(JSON.stringify(this.addEditForm));
// params.startEndTimeArr = []
// params.startEndTimeArr.push(params.reserveStartTime,params.reserveEndTime)
var arr = [], arr2 = JSON.parse(params.carPhotosUrl)
if (arr2.length > 0) {
arr2.forEach(element => {
@ -570,6 +697,7 @@ export default {
} else if (this.Popup.type === 'edit') {
// this.processTheFile();
console.log('编辑信息', this.addEditForm)
editCarInfoApi(params).then(result => {
if (result.success) {
this.$message.success(result.message);

View File

@ -21,6 +21,9 @@
<div class="menu-item" :class="{'active-menu': activeNav == 5}" @click="checkNav(5)">
钢丝绳监测记录
</div>
<div class="menu-item" :class="{'active-menu': activeNav == 6}" @click="checkNav(6)">
考勤记录数据
</div>
</div>
</div>
<div class="right">
@ -35,6 +38,7 @@
import liveDataTable from './liveDataTable.vue'
import violationData from './violationData.vue'
import wireRopeMonitoring from './wireRopeMonitoring.vue'
import workerAttendanceData from './workerAttendanceData.vue'
export default {
name: "reportForm",
props:['sn'],
@ -50,7 +54,8 @@
alarmsTable,//
liveDataTable,//
violationData,//
wireRopeMonitoring//
wireRopeMonitoring,//
workerAttendanceData//
},
created(){
this.projectSn = this.sn ? this.sn:this.$store.state.projectSn;
@ -71,6 +76,9 @@
else if(val == 5){
this.componentName = wireRopeMonitoring
}
else if(val == 6){
this.componentName = workerAttendanceData
}
}
}
}

View File

@ -0,0 +1,325 @@
<template>
<div class="content">
<div class="search-box">
<div class="search-item">
<!-- 设备名称 -->
<span>{{ $t('message.towerCrane.equipmentName') }}</span>
<el-select
style="margin-right: 20px"
v-model="devSn"
clearable
size="medium"
:placeholder="$t('message.towerCrane.pleaseSelect')"
>
<el-option
v-for="item in devList"
:key="item.id"
:label="item.devName"
:value="item.devSn"
>
</el-option>
</el-select>
<el-date-picker
class="serarch_picker"
size="medium"
v-model="valueTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
:start-placeholder="$t('message.towerCrane.startDate')"
:end-placeholder="$t('message.towerCrane.endDate')"
>
</el-date-picker>
</div>
<!-- 查询 -->
<el-button size="medium" @click="quertData">{{
$t('message.towerCrane.query')
}}</el-button>
<!-- 刷新 -->
<el-button size="medium" @click="refresh">{{
$t('message.towerCrane.refresh')
}}</el-button>
<!-- 导出 -->
<el-button size="medium" @click="exportExcel">{{
$t('message.towerCrane.export')
}}</el-button>
</div>
<div class="table-box">
<el-table
:data="tableData"
class="tables"
height="560"
style="width: 100%"
>
<!-- 考勤数据 -->
<el-table-column :label="$t('message.towerCrane.workerAttendanceData')">
<template slot-scope="scope">
<!-- <template> -->
<div class="table-list f-2">
<div class="table-item">
<!-- 塔吊名称 -->
{{ $t('message.towerCrane.towerName') }}
{{ scope.row.towerName }}
</div>
<div class="table-item">
<!-- 驾驶员名称 -->
{{ $t('message.towerCrane.driverName') }}
{{ scope.row.driverName }}
</div>
<div class="table-item">
<!-- 驾驶员身份证号码 -->
{{ $t('message.towerCrane.idCardNo') }}
{{ scope.row.idCardNo }}
</div>
<div class="table-item">
<!-- 匹配百分比 -->
{{ $t('message.towerCrane.recgRercentage') }}
{{ scope.row.recgRercentage }}
</div>
<div class="table-item">
<!-- 识别类型 -->
{{ $t('message.towerCrane.recognitionType') }}
{{ scope.row.recognitionType }}
</div>
<div class="table-item">
<!-- 考勤时间 -->
{{ $t('message.towerCrane.systemTime') }}
{{ scope.row.systemTime }}
</div>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination
class="pagerBox"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(total)"
background
></el-pagination>
</div>
</div>
</template>
<script>
import {
getTowerListApi,
selectTowerWorkerAttendanceApi,
exporExcelTowerWorkCycleApi
} from '@/assets/js/api/towerCrane'
export default {
props: ['sn'],
data() {
return {
devSn: '',
projectSn: '',
devList: [],
tableData: [],
pageNo: 1,
pageSize: 10,
total: 0,
valueTime: ''
}
},
created() {
this.projectSn = this.sn ? this.sn : this.$store.state.projectSn
this.queryDev()
this.selectNowDate()
this.queryTowerAttendance()
},
computed: {
transformTimestamp() {
return function (timestamp) {
if (timestamp) {
let a = new Date(timestamp).getTime()
const date = new Date(a)
const Y = date.getFullYear() + '-'
const M =
(date.getMonth() + 1 < 10
? '0' + (date.getMonth() + 1)
: date.getMonth() + 1) + '-'
const D =
(date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
const h =
(date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) +
':'
const m =
(date.getMinutes() < 10
? '0' + date.getMinutes()
: date.getMinutes()) + ':'
const s = date.getSeconds() //
const dateString = Y + M + D + h + m + s
return dateString
}
}
},
transformTimestamp2() {
return function (timestamp) {
if (timestamp) {
let a = new Date(timestamp).getTime()
const date = new Date(a)
const Y = date.getFullYear() + '-'
const M =
(date.getMonth() + 1 < 10
? '0' + (date.getMonth() + 1)
: date.getMonth() + 1) + '-'
const D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
const h =
(date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) +
':'
const m =
(date.getMinutes() < 10
? '0' + date.getMinutes()
: date.getMinutes()) + ':'
const s = date.getSeconds() //
const dateString = Y + M + D
return dateString
}
}
}
},
methods: {
// YYYY-MM-DD HH:mm:ss
selectNowDate() {
var date = new Date(),
year = date.getFullYear(),
month = date.getMonth() + 1,
day = date.getDate(),
hours = date.getHours(), //(0-23)
minutes = date.getMinutes(), //(0-59)
seconds = date.getSeconds()
month >= 1 && month <= 9 ? (month = '0' + month) : ''
day >= 0 && day <= 9 ? (day = '0' + day) : ''
hours >= 0 && hours <= 9 ? (hours = '0' + hours) : ''
minutes >= 0 && minutes <= 9 ? (minutes = '0' + minutes) : ''
seconds >= 0 && seconds <= 9 ? (seconds = '0' + seconds) : ''
// var timer = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes+ ':' + seconds;
let timer = year + '-' + month + '-' + day + ' ' + '00:00:00';
// var timer = year + '-' + month + '-' + day
let timerOut = year + '-' + month + '-' + day + ' ' + '23:59:59'
this.valueTime = [timer, timerOut]
console.log(timer)
// return timer;
},
queryDev() {
getTowerListApi({ projectSn: this.projectSn }).then((res) => {
// console.log(res)
if (res.code == 200 && res.result) {
this.devList = res.result
}
})
},
quertData() {
this.pageNo = 1
this.pageSize = 10
console.log(this.devSn)
this.queryTowerAttendance()
},
refresh() {
this.pageNo = 1
this.pageSize = 10
this.total = 0
this.devSn = ''
this.valueTime = ''
this.queryTowerAttendance()
},
queryTowerAttendance() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
let data = {
devSn: this.devSn,
pageNo: this.pageNo,
pageSize: this.pageSize,
projectSn: this.projectSn,
systemTime_begin: this.valueTime ? this.valueTime[0] : '',
systemTime_end: this.valueTime ? this.valueTime[1] : ''
}
console.log(data)
selectTowerWorkerAttendanceApi(data).then((res) => {
console.log(res)
if (res.code == 200 && res.result) {
this.tableData = res.result.records
console.log(this.tableData)
this.total = res.result.total
loading.close()
}
})
},
handleSizeChange(value) {
this.pageSize = value
this.queryTowerAttendance()
},
handleCurrentChange(value) {
this.pageNo = value
this.queryTowerAttendance()
},
exportExcel() {
if (this.valueTime) {
window.location.href =
this.$http.defaults.baseURL +
'xmgl/download/exporExcelTowerWorkCycle?projectSn=' +
this.projectSn +
'&devSn=' +
this.devSn
? this.devSn
: '' +
'&startTime=' +
this.valueTime[0] +
'&endTime=' +
this.valueTime[1]
} else {
window.location.href =
this.$http.defaults.baseURL +
'xmgl/download/exporExcelTowerWorkCycle?projectSn=' +
this.projectSn +
'&devSn=' +
this.devSn
}
}
}
}
</script>
<style lang="less" scoped>
.content {
display: flex;
flex-direction: column;
height: 100%;
.search-box {
background: #fff;
padding: 25px;
margin-bottom: 14px;
.search-item {
display: inline-block;
margin-right: 26px;
}
}
.table-box {
flex: 1;
background: #fff;
/deep/.el-table {
td {
vertical-align: top;
}
.cell {
padding-left: 44px;
}
}
.f-2 {
display: flex;
flex-wrap: wrap;
.table-item {
width: 50%;
}
}
}
}
</style>