Merge branch 'bjxz-dev' of http://139.9.66.234:18023/dhp/zhgdyunapp into bjxz-rain

This commit is contained in:
”Rain“ 2024-05-28 19:56:13 +08:00
commit 102f880519
34 changed files with 1935 additions and 906 deletions

18
main.js
View File

@ -45,10 +45,10 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://192.168.34.155:19111/' //彭洁本地
// Vue.prototype.work_url = 'http://47.93.215.234:19997' // 工作流线上地址(弃用)
// Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
// Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://192.168.34.138:5173' // 工作流地址
// Vue.prototype.work_url = 'http://139.9.66.234:5173' // 工作流地址
Vue.prototype.work_url = 'http://192.168.34.126:5173' // 工作流地址
// Vue.prototype.work_url = 'http://192.168.34.126:5173' // 工作流地址
// Vue.prototype.url_config = 'http://8.142.139.165:7080/' // 湖里
// Vue.prototype.url_config = 'http://139.9.66.234:5173/'
// Vue.prototype.url_config = 'http://192.168.34.125:6023/'
@ -87,13 +87,13 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://10.168.1.105:11111/' // 线上地址
// Vue.prototype.url_config = 'http://10.168.1.104:11111/' // 线上地址
// Vue.prototype.url_config = 'http://47.93.215.234:9809/' // 鞍钢线上地址(弃用)
Vue.prototype.url_config = 'http://42.180.188.17:9809/' // 鞍钢线上地址
// Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢线上测试地址
// Vue.prototype.url_config = 'http://42.180.188.17:9809/' // 鞍钢线上地址
Vue.prototype.url_config = 'http://42.180.188.17:11211/' // 鞍钢线上测试地址
// Vue.prototype.url_config = 'http://182.90.224.237:51234/' // 百色三标段
// Vue.prototype.url_config = 'http://192.168.34.221:9111/' // 百色三标段
// Vue.prototype.work_url = 'http://47.93.215.234:19997' // 工作流线上地址(弃用)
Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
// Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://42.180.188.17:19997' // 工作流线上地址
Vue.prototype.work_url = 'http://42.180.188.17:19097' // 工作流测试地址
// Vue.prototype.work_url = 'http://192.168.34.139:5173' // 工作流地址
// Vue.prototype.url_config = 'http://182.90.224.147:100/' //演示平台
// Vue.prototype.url_config ='http://124.71.178.44:8012/' // 河南
@ -308,19 +308,17 @@ Vue.prototype.sendRequest = function(param) {
// 判断权限的函数
Vue.prototype.checkPermission = function(permission) {
var permissions = JSON.parse(uni.getStorageSync("userInfo")).menuAuthority.menuList;
console.log(permission,'我的测试指令1')
console.log(permissions,'我的测试指令2')
// var permissions = store.state.userInfo.menuAuthority.menuList;
permissions = permissions.filter(
(x) => x.path == permission.menuPath
)[0];
if (!permissions.actionList) {
console.log(permissions,'按钮权限')
if (!permissions || !permissions.actionList) {
return false;
}
let index = permissions.actionList.findIndex(
(x) => x.actionCode == permission.key
)
console.log(index,'我的测试指令3')
return index != -1 ? true : false;
}
const app = new Vue({

View File

@ -2,8 +2,8 @@
"name" : "智慧安全", //
"appid" : "__UNI__4AA4101",
"description" : "",
"versionName" : "1.5.7",
"versionCode" : 157,
"versionName" : "1.5.8",
"versionCode" : 158,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@ -66,7 +66,8 @@
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"targetSdkVersion" : 30
},
/* ios */
"ios" : {

View File

@ -310,6 +310,13 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/projectEnd/carManage/indexPage",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path": "pages/projectEnd/carManage/addCar",
"style": {

View File

@ -46,7 +46,7 @@
@click="previewImg(url_config+'image/'+item.imageUrl)"></image>
<!-- @click="previewImg(item.imageUrl)"></image> -->
</view>
<view class="bottom-right" @click="goDisposition(item)" v-if="!item.handleResult">
<view class="bottom-right" @click="goDisposition(item)" v-if="!item.handleResult" v-show="btnAuth">
去处置
</view>
<view class="bottom-right" @click="goShutting(item)" style="background-color: #b0b0b0;" v-else>
@ -78,9 +78,13 @@
{ id: 6, value: '闯入报警' },
{ id: 7, value: '反光衣报警' },
{ id: 8, value: '未穿反光衣' },
]
],
btnAuth: true
}
},
onLoad() {
this.btnAuth = this.checkPermission({key: 'ai_disposition', menuPath: '/project/aiAnalysis/warningList'})
},
onShow(){
this.systemInfo = uni.getStorageSync('systemInfo')
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;

View File

@ -95,7 +95,7 @@
</view>
</view>
</view>
<view class="confirm-btn" @click="confirm">
<view class="confirm-btn" @click="confirm" v-show="btnAuth">
<view class="inner-btn">处置推送</view>
</view>
</view>
@ -139,10 +139,12 @@
alrmTypeId: "",
areaList: [],
selectedAreaItem: {},
areaId: ""
areaId: "",
btnAuth: true
}
},
onLoad(option) {
this.btnAuth = this.checkPermission({key: 'dealPush_push', menuPath: '/project/aiAnalysis/dealPushManage'})
this.alarmItem = JSON.parse(decodeURIComponent(option.item));
console.log('alarmItem', this.alarmItem)
},

View File

@ -7,7 +7,7 @@
<view class="loginBox">
<view class="loginTitle">
<image class="loginLogo" src="@/static/login/logo.pic.jpg" mode="heightFix"></image>
智慧工地服务平台
智慧安全
</view>
<view class="btns">
<view class="user feedback" @click="goto('user')">用户登录</view>

View File

@ -199,14 +199,15 @@
}
.tab {
width: 100%;
// width: 100%;
overflow: auto;
height: 45px;
text-align: center;
box-shadow: 0 0 10px rgba(194, 194, 194, 0.5);
.tabType {
// width: 33%;
width: max-content;
min-width: 180rpx;
line-height: 43px;
border-bottom: 1px solid rgba(194, 194, 194, 0.2);
}

View File

@ -82,7 +82,7 @@
</view>
</view>
<view v-if="checkingInfoList.length == 0" class="scancodebtn" @click="getScanCode()">
<view v-if="checkingInfoList.length == 0 && btnAuth" class="scancodebtn" @click="getScanCode()">
扫码巡检
</view>
</view>
@ -115,9 +115,11 @@
statusBarHeight: 0,
pageNo: 1,
pageSize: 10,
btnAuth: true
}
},
onLoad(options) {
this.btnAuth = this.checkPermission({key: 'selfInspect_scanCheck', menuPath: '/project/inspecPoint/selfInspect'})
this.info = JSON.parse(options.info);
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;

File diff suppressed because it is too large Load Diff

View File

@ -5,15 +5,15 @@
车辆管理
</view>
</headers>
<view class="menuBox">
<!-- <view class="menuBox">
<view v-if="type !== 'supplier'" class="menuItem" @click="changeMenu(0)" :class="tabIndex==0?'active':''">
进出记录
</view>
<view class="menuItem" @click="changeMenu(1)" :class="tabIndex==1?'active':''">
黑白名单
</view>
</view>
<view class="" v-if="tabIndex==0">
</view> -->
<view class="" v-if="tabIndex==0" style="padding-top: 20rpx;">
<view class="selectContent selectContent2">
<input class="selectVideoBox" type="text" confirm-type="search" v-model="carNumber" placeholder="搜索车牌号"
@confirm="inOutList=[];getInOutList()" />
@ -25,6 +25,14 @@
</picker>
</view>
<view class="blockBoxRecord" v-for="(item,index) in inOutList" :key="index">
<view class="alarmItem">
<text class="label">企业名称</text>
<text class="value">{{ item.enterpriseName?item.enterpriseName:'无' }}</text>
</view>
<view class="alarmItem">
<text class="label">司机姓名</text>
<text class="value">{{ item.driverWorkerName?item.driverWorkerName:'无' }}</text>
</view>
<view class="alarmItem">
<text class="label">车牌号</text>
<text class="value">{{ item.carNumber }}</text>
@ -42,9 +50,13 @@
<text class="value">{{ item.location }}</text>
</view>
<view class="alarmItem">
<text class="label">颜色</text>
<text class="label">颜色</text>
<text class="value">{{ item.carColor }}</text>
</view>
<view class="alarmItem">
<text class="label">车辆类型</text>
<text class="value">{{ item.carModuleType == "1" ? "固定" : item.carModuleType == "2" ? "长期" : item.carModuleType == "3" ? "临时": "外来" }}</text>
</view>
<view class="alarmItem">
<text class="label">进出场图片</text>
<text class="value">
@ -68,7 +80,7 @@
</view>
</view>
</view>
<view class="" v-if="tabIndex==1">
<view class="" v-if="tabIndex==1" style="padding-top: 20rpx;">
<view class="selectContent selectContent2">
<view class="selectBox">
<input class="selectInput" confirm-type="search" type="text" v-model="carNumber"
@ -83,35 +95,47 @@
<!-- </picker>-->
</view>
<view class="blockBox" v-for="(item,index) in carList" :key="index" @click="goAdd(item.id)">
<view class="alarmItem" v-if="type !== 'supplier'" style="width: 100%;">
<text class="label">企业名称</text>
<text class="value">{{ item.enterpriseName }}</text>
</view>
<view class="alarmItem">
<text class="label">车牌号</text>
<text class="value">{{ item.carNumber }}</text>
</view>
<view class="alarmItem">
<text class="label">车辆颜色</text>
<text class="value">{{ item.carColor }}</text>
</view>
<view class="alarmItem">
<text class="label">车辆类型</text>
<text class="label">车种类型</text>
<text class="value">{{ item.carTypeName }}</text>
</view>
<view class="alarmItem">
<text class="label">司机姓名</text>
<text class="value">{{ item.driverWorkerName }}</text>
</view>
<!-- <view class="alarmItem">
<text class="label">车辆颜色</text>
<text class="value">{{ item.carColor }}</text>
</view> -->
<view class="alarmItem">
<text class="label">司机电话</text>
<text class="value">{{ item.driverTelephone }}</text>
</view>
<view class="alarmItem">
<text class="label">固定/长期车辆</text>
<text class="value">{{ item.carModuleType == "1" ? "固定" : "长期" }}</text>
</view>
<view class="alarmItem" v-if="type !== 'supplier'" style="width: 100%;">
<text class="label">企业名称</text>
<text class="value">{{ item.enterpriseName }}</text>
<text class="label">车辆类型</text>
<text class="value">{{ item.carModuleType == "1" ? "固定" : item.carModuleType == "2" ? "长期" : "临时" }}</text>
</view>
<view class="alarmItem">
<text class="label">预约时间</text>
<text class="value">{{ item.reserveStartTime }}-{{item.reserveEndTime}}</text>
</view>
<view class="alarmItem">
<text class="label">允许进出次数</text>
<text class="value">{{ item.entryAndExitPermit === 0?'单次':item.entryAndExitPermit === 1?'多次':'' }}</text>
</view>
<view class="alarmItem">
<text class="label">车辆下发状态</text>
<text class="value">{{ item.sendSuccessStatus === 1?'成功':item.sendSuccessStatus === 2?'失败':item.sendSuccessStatus === 3?'部分成功':'' }}</text>
</view>
<!-- <view class="alarmItem">
<text class="label">车辆图片</text>
<text class="value">
<image v-if="item.carPhotosUrl"
@ -120,6 +144,42 @@
@click="previewImg(url_config+'image/'+JSON.parse(item.carPhotosUrl)[0].url)"></image>
</text>
</view>
<view class="alarmItem">
<text class="label">驾驶证</text>
<text class="value">
<image v-if="item.jsz"
:src="JSON.parse(item.jsz)[0]?url_config+'image/'+JSON.parse(item.jsz)[0].url:''"
class="profile_photo"
@click="previewImg(url_config+'image/'+JSON.parse(item.jsz)[0].url)"></image>
</text>
</view>
<view class="alarmItem">
<text class="label">行驶证</text>
<text class="value">
<image v-if="item.xsz"
:src="JSON.parse(item.xsz)[0]?url_config+'image/'+JSON.parse(item.xsz)[0].url:''"
class="profile_photo"
@click="previewImg(url_config+'image/'+JSON.parse(item.xsz)[0].url)"></image>
</text>
</view>
<view class="alarmItem">
<text class="label">交强险</text>
<text class="value">
<image v-if="item.jqx"
:src="JSON.parse(item.jqx)[0]?url_config+'image/'+JSON.parse(item.jqx)[0].url:''"
class="profile_photo"
@click="previewImg(url_config+'image/'+JSON.parse(item.jqx)[0].url)"></image>
</text>
</view>
<view class="alarmItem">
<text class="label">其他证明</text>
<text class="value">
<image v-if="item.otherProve"
:src="JSON.parse(item.otherProve)[0]?url_config+'image/'+JSON.parse(item.otherProve)[0].url:''"
class="profile_photo"
@click="previewImg(url_config+'image/'+JSON.parse(item.otherProve)[0].url)"></image>
</text>
</view> -->
<text class="tags" :class="item.isBlack?'black':''">{{ item.isBlack ? '黑名单' : '白名单' }}</text>
</view>
<view class="placeholderBox" v-if="carList.length==0">
@ -186,9 +246,10 @@
//
this.type = option.type
}
},
mounted() {
if (option.listType) {
//
this.tabIndex = option.listType
}
this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail'))
this.searchDate = GetDateStr(0, '-')
this.loadData()
@ -241,7 +302,7 @@
this.loadData()
},
loadData() {
switch (this.tabIndex) {
switch (+this.tabIndex) {
case 0:
this.getInOutList()
break;
@ -383,7 +444,7 @@
font-size: 14px;
position: relative;
padding: 15rpx 0;
width: 50%;
width: 100%;
overflow: hidden;
display: flex;

View File

@ -0,0 +1,474 @@
<template>
<view class="fullHeight personContent">
<image src="/static/personManage/titleBG.png" class="titleBg"></image>
<headers :showBack="true" :themeType="'white'">
<view class="headerName">
车辆管理
</view>
</headers>
<view class="topBox" :style="{ 'margin-top': (200-statusBarHeight-44 - 110) + 'px' }">
<image src="/static/personManage/left.png" class="topBoxBG" v-show="tabIndex==0"></image>
<image src="/static/personManage/right.png" class="topBoxBG" v-show="tabIndex==1"></image>
<view class="item item1">
<view class="itemInner" @click="tabIndex=0">
<view class="">
<view class="txt" :class="tabIndex==0?'active':''">
今日总进场次数
</view>
<view class="num">
{{statictisData.innum}}
</view>
</view>
</view>
<view class="itemInner" @click="tabIndex=1">
<view class="">
<view class="txt" :class="tabIndex==1?'active':''">
今日总出场次数
</view>
<view class="num">
{{statictisData.outnum}}
</view>
</view>
</view>
</view>
<view class="item item2">
<view class="itemInner">
<view class="">
<view class="txt">
<text>外来车辆进场车次</text>
</view>
<view class="num">
{{statictisData.wlcInNum}}
</view>
</view>
</view>
<view class="itemInner">
<view class="">
<view class="txt">
<text>固定车辆进场车次</text>
</view>
<view class="num">
{{statictisData.gdcInNum}}
</view>
</view>
</view>
</view>
<view class="item item3">
<view class="itemInner">
<view class="">
<view class="txt">
<text>长期车进场车次</text>
</view>
<view class="num">
{{statictisData.cqcInNum}}
</view>
</view>
</view>
<view class="itemInner">
<view class="">
<view class="txt">
临时车进场车次
</view>
<view class="num">
{{statictisData.lscInNum}}
</view>
</view>
</view>
</view>
</view>
<view class="middleBox" v-if="COMPANY != 'longguang' && COMPANY != 'nanchang'">
<view class="box" @click="viewWorkerAnalysis">
<image src="/static/card.png" class="img" style="width: 20px;height: 19px;"></image>
<view class="data-count">
<view>
<text>固定车总数</text>
<text>{{carstatictisData.gdcNum}}</text>
</view>
<view>
<text>长期车总数</text>
<text>{{carstatictisData.cqcNum}}</text>
</view>
<view>
<text>临时车总数</text>
<text>{{carstatictisData.lscNum}}</text>
</view>
</view>
</view>
</view>
<view class="box operateBox">
<!-- <view class="item" @click="viewSafeMange">
<view class="imgBox">
<image src="/static/personManage/aqjy.png" mode="" style="width: 29px;height: 20px;"></image>
</view>
<view class="txt">
安全教育
</view>
</view> -->
<!-- <view v-if="COMPANY != 'longguang'" class="item" @click="goClockIn" v-show="mobileAttendance==0">
<view class="imgBox">
<image src="/static/personManage/ydkq.png" mode="" style="width: 22px;height: 22px;"></image>
</view>
<view class="txt">
移动考勤
</view>
</view>
<view class="item" v-if="COMPANY == 'longguang'" @click="viewTeamList" v-show="mobileAttendance==0">
<view class="imgBox">
<image src="/static/personManage/cdw.png" mode="" style="width: 22px;height: 22px;"></image>
</view>
<view class="txt">
查队伍
</view>
</view> -->
<view class="item" @click="viewRecord(0)">
<view class="imgBox">
<image src="/static/carManage/icon1.png" mode="" style="width: 70rpx;height: 50rpx;"></image>
</view>
<view class="txt">
车辆通行记录
</view>
</view>
<view class="item" @click="viewRecord(1)">
<view class="imgBox">
<image src="/static/carManage/icon2.png" mode="" style="width: 80rpx;height: 70rpx;"></image>
</view>
<view class="txt">
车辆黑白名单统计
</view>
</view>
</view>
<!-- <view class="tabBarBox">
<view class="item active">
<image src="/static/personManage/index.png" class="img"></image>
<view class="txt">
首页
</view>
</view>
<view class="item" @click="queryStaff">
<image src="/static/personManage/search.png" class="img"></image>
<view class="txt">
查人员
</view>
</view>
</view> -->
<levitatedsphere :x="100" :y="80"></levitatedsphere>
</view>
</template>
<script>
import levitatedsphere from "@/components/levitatedsphere/levitatedsphere.vue"
import headers from "../../../components/headers/headers.vue"
export default {
data() {
return {
projectDetail: null,
statictisData: {},
statusBarHeight: 0,
tabIndex: 0,
mobileAttendance:1,//01
carstatictisData: {}
};
},
onLoad() {
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight
this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail'))
this.mobileAttendance=JSON.parse(uni.getStorageSync('userInfo')).mobileAttendance
this.loadData()
this.loadCarData()
},
methods: {
loadCarData(){
var that = this
this.sendRequest({
url: 'xmgl/carInfo/countCarModuleType',
data: {
projectSn: this.projectDetail.projectSn
},
method: "POST",
success(res) {
that.carstatictisData = res.result
console.log('获取的数据',that.statictisData);
}
})
},
loadData() {
var that = this
this.sendRequest({
url: 'xmgl/carPassRecord/getTodayOutInNumber',
data: {
projectSn: this.projectDetail.projectSn
},
method: "GET",
success(res) {
that.statictisData = res.result
console.log('获取的数据',that.statictisData);
}
})
},
viewWorkerAnalysis() {
uni.navigateTo({
url: './workerAnalysis'
})
},
viewSafeMange() {
uni.navigateTo({
url: './safetyEducationManage/index'
})
},
viewTeamList() {
uni.navigateTo({
url: './searchTeam/teamList'
})
},
goClockIn() {
var userInfo = JSON.parse(uni.getStorageSync('userInfo'))
if (userInfo.accountType == 6) {
uni.navigateTo({
url: './clockIn?faceScore='
})
// uni.navigateTo({
// url:'./faceRecognition'
// })
} else {
uni.showModal({
title: '提示',
content: '只有项目子账号才能使用该功能!'
})
}
},
viewRecord(type) {
uni.navigateTo({
url: './index?listType=' + type
})
},
safeMeeting(){
uni.navigateTo({
url:'../../videoManage/safeMeeting?sn='+this.projectDetail.projectSn
})
},
viewVideo(){
uni.navigateTo({
url: '../../videoManage/videoList?sn='+this.projectDetail.projectSn+'&pageType=backEnd'
})
},
//
queryStaff(){
uni.navigateTo({
url: './queryStaff'
})
},
}
}
</script>
<style lang="scss" scoped>
.personContent {
color: $uni-text-color2;
font-size: 15px;
/deep/.headerBox{
background-color: transparent;
border-bottom: none;
}
}
.titleBg {
width: 100%;
position: absolute;
top: 0;
left: 0;
height: 200px;
}
.middleBox {
display: flex;
align-items: center;
margin: 15px;
.box {
flex: 1;
display: inline-flex;
align-items: center;
height: 65px;
&:first-child {
margin-right: 5px;
}
.img {
margin-right: 8px;
margin-left: 20px;
}
.data-count{
flex: 1;
display: flex;
justify-content: space-around;
>view{
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text:nth-child(1){
color: #3C3C3C;
font-size: 28rpx ;
}
text:nth-child(2){
color: #5382F6;
font-size: 30rpx ;
}
}
}
}
}
.box {
box-shadow: 0 4px 24px 0px rgba(212, 220, 236, 0.69);
border-radius: 8px;
}
.operateBox {
display: flex;
align-items: center;
font-size: 12px;
height: 96px;
margin: 0 15px;
.item {
flex: 1;
.imgBox {
height: 22px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.txt {
text-align: center;
}
}
}
.tabBarBox {
display: flex;
align-items: center;
font-size: 12px;
border-top: 1px solid rgba(151, 151, 151, 0.2);
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 62px;
.item {
flex: 1;
// display: inline-flex;
text-align: center;
color: rgba(148, 149, 173, 1);
.img {
width: 35px;
height: 35px;
}
&.active {
color: rgba(72, 141, 236, 1);
}
}
}
.topBox {
margin: 0 5px;
position: relative;
height: 270px;
z-index: 4;
.topBoxBG {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
}
.item {
margin: 0 10px;
display: flex;
.itemInner {
display: inline-flex;
flex: 1;
align-items: center;
justify-content: center;
&:first-child {
border-right: 1px solid rgba(55, 45, 102, 0.1);
}
}
.txt {
color: rgba(55, 45, 102, 0.6);
font-size: 15px;
text-align: center;
}
.active {
color: rgba(55, 45, 102, 1);
font-weight: bold;
}
.num {
font-size: 20px;
font-weight: bold;
text-align: center;
}
}
.item1 {
height: calc(33% - 10px);
padding-top: 10px;
.itemInner {
&:first-child {
border-right: none;
}
}
}
.item2 {
height: 20%;
margin: 4% 10px;
// padding-bottom: 2%;
// .itemInner{
// padding-bottom: 10px;
// }
}
.item3 {
padding-top: 4%;
height: 20%;
position: relative;
&::after {
content: "";
position: absolute;
left: 5%;
width: 90%;
top: 0px;
border-top: 1px solid rgba(55, 45, 102, 0.1);
}
}
}
</style>

View File

@ -68,7 +68,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -135,6 +135,7 @@
detailId: "",
detailData:{},
isShowBtn: null,
btnAuth: true
}
},
onReachBottom() {
@ -156,6 +157,7 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({key: 'wdgc_add', menuPath: '/project/dangerousBigProject/parameter'})
this.detailId = val.id
// if(val.)
// this.initData()

View File

@ -163,7 +163,7 @@
<text>{{item.disposalCompletionTime}}</text>
</view>
</view>
<view class="addSaveBtn" v-if="emergencyDetail.incidentClosedStatus == 1"
<view class="addSaveBtn" v-if="emergencyDetail.incidentClosedStatus == 1 && btnAuth"
@click="getnavigateTo(`./ImmediateRescue?id=${emergencyDetail.id}`)">
立即救援
</view>
@ -197,7 +197,7 @@
</view>
</view>
</view>
<view class="addSaveBtn" @click="addSaveBtn">提交</view>
<view class="addSaveBtn" @click="addSaveBtn" v-if="btnEditAuth">提交</view>
</view>
<view v-if="emergencyDetail.dispositionStatus == 3"
style="color: #5181f6; cursor: pointer; height: 88rpx; justify-content: center; align-items: center;display: flex;"
@ -228,12 +228,22 @@
emergencyTypeList: [],
emergencyInfo: {},
statusBarHeight: "",
btnAuth: true,
btnEditAuth: true
}
},
mounted() {
},
onLoad(options) {
this.btnAuth = this.checkPermission({
key: 'emergencyDisposal_add',
menuPath: '/project/emergencyDisposal/emergencyDisposal'
})
this.btnEditAuth = this.checkPermission({
key: 'emergencyDisposal_edit',
menuPath: '/project/emergencyDisposal/emergencyDisposal'
})
this.id = options.id;
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;

View File

@ -2,7 +2,6 @@
<view class="fullHeight personContent">
<image src="/static/personManage/titleBG.png" class="titleBg"></image>
<headers :showBack="true" :themeType="'white'">
<view class="headerName">
劳务管理
</view>
@ -63,16 +62,48 @@
<view class="itemInner">
<view class="">
<view class="txt">
<text v-if="tabIndex === 0">施工人员昨日出勤率</text>
<text v-if="tabIndex === 1">管理人员昨日出勤率</text>
<!-- <text v-if="tabIndex === 0">施工人员昨日出勤率</text> -->
<text v-if="tabIndex === 0">施工人员考勤环比</text>
<!-- <text v-if="tabIndex === 1">管理人员昨日出勤率</text> -->
<text v-if="tabIndex === 1">管理人员考勤环比</text>
</view>
<view class="" v-if="statictisData.yesterdayAttendancePerson.totalPerson != 0">
<view class="num" v-show="tabIndex==0">
{{((statictisData.yesterdayAttendancePerson.lwPersonTotal/Number(statictisData.toaltPerson.lwPersonTotal))*100).toFixed(2)}}%
<!-- {{((statictisData.yesterdayAttendancePerson.lwPersonTotal/Number(statictisData.toaltPerson.lwPersonTotal))*100).toFixed(2)}}% -->
<!-- {{(((statictisData.attendancePerson.lwPersonTotal-statictisData.yesterdayAttendancePerson.lwPersonTotal)/statictisData.yesterdayAttendancePerson.lwPersonTotal)*100).toFixed(2)}}% -->
<text v-if="lwRadio(statictisData) > 0">
<u-icon name="arrow-upward" color="#2979ff" size="40"></u-icon>
<text>{{Math.abs(lwRadio(statictisData))}}%</text>
</text>
<text v-if="lwRadio(statictisData) === 0">
<text>{{Math.abs(lwRadio(statictisData))}}%</text>
</text>
<text v-if="lwRadio(statictisData) === '--'">
<text>{{Math.abs(lwRadio(statictisData))}}</text>
</text>
<text v-if="lwRadio(statictisData) < 0">
<u-icon name="arrow-downward" color="#FF0000" size="40"></u-icon>
<text>{{Math.abs(lwRadio(statictisData))}}%</text>
</text>
</view>
<view class="num" v-show="tabIndex==1">
{{((statictisData.yesterdayAttendancePerson.glPersonTotal/Number(statictisData.toaltPerson.glPersonTotal))*100).toFixed(2)}}%
<!-- {{((statictisData.yesterdayAttendancePerson.glPersonTotal/Number(statictisData.toaltPerson.glPersonTotal))*100).toFixed(2)}}% -->
<!-- {{(((statictisData.attendancePerson.glPersonTotal-statictisData.yesterdayAttendancePerson.glPersonTotal)/statictisData.yesterdayAttendancePerson.glPersonTotal)*100).toFixed(2)}}% -->
<text v-if="glRadio(statictisData) > 0">
<u-icon name="arrow-upward" color="#2979ff" size="40"></u-icon>
<text>{{Math.abs(glRadio(statictisData))}}%</text>
</text>
<text v-if="glRadio(statictisData) === 0">
<text>{{Math.abs(glRadio(statictisData))}}%</text>
</text>
<text v-if="glRadio(statictisData) === '--'">
<text>{{Math.abs(glRadio(statictisData))}}</text>
</text>
<text v-if="glRadio(statictisData) < 0">
<u-icon name="arrow-downward" color="#FF0000" size="40"></u-icon>
<text>{{Math.abs(glRadio(statictisData))}}%</text>
</text>
</view>
</view>
@ -224,6 +255,9 @@
tabIndex: 0,
mobileAttendance:1,//01
};
},
computed:{
},
onLoad() {
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight
@ -232,6 +266,22 @@
this.loadData()
},
methods: {
lwRadio(statictisData){
let today = statictisData.attendancePerson.lwPersonTotal
let yesterday = statictisData.yesterdayAttendancePerson.lwPersonTotal
if(yesterday === 0) return '--'
let radio = (((today - yesterday)/yesterday)*100).toFixed(2)
return radio
},
glRadio(statictisData){
let today = statictisData.attendancePerson.glPersonTotal
let yesterday = statictisData.yesterdayAttendancePerson.glPersonTotal
if(yesterday === 0) return '--'
let radio = (((today - yesterday)/yesterday)*100).toFixed(2)
return radio
},
loadData() {
var that = this
this.sendRequest({

View File

@ -73,14 +73,14 @@
<image class="margin_r_5" style="width: 46rpx;height:46rpx"
src="../../../../static/personManage/ht.png"></image>
<text>劳动合同</text>
<text class="state1" v-if="contractList.length>0">已签</text>
<text class="state1" style="top: -7px;left: 68px;" v-if="contractList.length>0">已签</text>
<text class="state2" style="top: -7px;left: 68px;" v-else>未签</text>
</view>
<view class="flex item" @click="showItemDetails(2)">
<image class="margin_r_5" style="width: 42rpx;height:42rpx"
src="../../../../static/personManage/tjzs.png"></image>
<text>体检</text>
<text class="state1" v-if="physicalsList.length>0">已体检</text>
<text class="state1" style="top: -7px;left: 40px;" v-if="physicalsList.length>0">已体检</text>
<text class="state2" style="top: -7px;left: 40px;" v-else>未体检</text>
</view>
<view class="flex item" @click="showItemDetails(3)">

View File

@ -8,39 +8,63 @@
<view class="content">
<view class="nav_wrap">
<view class="navigation1 flex2">
<view class="navType" :class="checkNavType==1?'checkNavType':'padding_2'" @click="changeNavType(1)">按工种</view>
<view class="navType" :class="checkNavType==2?'checkNavType':'padding_2'" @click="changeNavType(2)">按年龄</view>
<view class="navType" :class="checkNavType==3?'checkNavType':'padding_2'" @click="changeNavType(3)">按地区</view>
<view class="navType" :class="checkNavType==1?'checkNavType':'padding_2'" @click="changeNavType(1)">
按单位</view>
<view class="navType" :class="checkNavType==2?'checkNavType':'padding_2'" @click="changeNavType(2)">
按工种</view>
<view class="navType" :class="checkNavType==3?'checkNavType':'padding_2'" @click="changeNavType(3)">
按年龄</view>
<view class="navType" :class="checkNavType==4?'checkNavType':'padding_2'" @click="changeNavType(4)">
按地区</view>
</view>
<view class="navigation2 flex">
<view class="navCharts" :class="navChartsType==1?'navChartsType1':''" @click="changeNavCharts(1)">饼图</view>
<view class="navCharts" :class="navChartsType==2?'navChartsType2':''" @click="changeNavCharts(2)">条形图</view>
<view class="navCharts" :class="navChartsType==1?'navChartsType1':''" @click="changeNavCharts(1)">饼图
</view>
<view class="navCharts" :class="navChartsType==2?'navChartsType2':''" @click="changeNavCharts(2)">
条形图</view>
</view>
</view>
<!-- 饼图 -->
<view class="charts_wrap" v-if="navChartsType==1">
<u-charts canvas-id="pieChart" chartType="ring" :opts="pieChartData" ref="pieChart" />
<u-charts canvas-id="pieChart" chartType="ring" :cWidth="cWidth" :opts="pieChartData"
ref="pieChart" />
<view class="data_wrap">
<!-- 工种 -->
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==1" v-for="(item,index) in workerTypeList" :key="index">
<!-- 单位 -->
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==1" v-for="(item,index) in unitList"
:key="index">
<view class="name flex">
<view class="bg_color" :style="{'background-color': colorList[index]}"></view> {{item.typeName}}
<view class="bg_color" :style="{'background-color': colorList[index]}"></view>
<view>{{item.enterprise_name}}</view>
</view>
<view class="num">{{item.num}} </view>
<view class="ratio">{{item.ratio}} %</view>
</view>
<!-- 工种 -->
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==2"
v-for="(item,index) in workerTypeList" :key="index">
<view class="name flex">
<view class="bg_color" :style="{'background-color': colorList[index]}"></view>
<view>{{item.typeName}}</view>
</view>
<view class="num">{{item.personNum}} </view>
<view class="ratio">{{item.ratioNum}} %</view>
</view>
<!-- 年龄 -->
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==2" v-for="(item,index) in workercountList" :key="index">
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==3"
v-for="(item,index) in workercountList" :key="index">
<view class="name flex">
<view class="bg_color" :style="{'background-color': colorList[index]}"></view> {{item.typeName}}
<view class="bg_color" :style="{'background-color': colorList[index]}"></view>
<view>{{item.typeName}}</view>
</view>
<view class="num">{{item.personNum}} </view>
<view class="ratio">{{item.ratioNum}} %</view>
</view>
<!-- 区域 -->
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==3" v-for="(item,index) in provinceList" :key="index">
<view class="flex" style="margin: 10px 0;" v-if="checkNavType==4"
v-for="(item,index) in provinceList" :key="index">
<view class="name flex">
<view class="bg_color" :style="{'background-color': colorList[index]}"></view> {{item.provinceName}}
<view class="bg_color" :style="{'background-color': colorList[index]}"></view>
<view>{{item.provinceName}}</view>
</view>
<view class="num">{{item.personNum}} </view>
<view class="ratio">{{item.ratioNum}} %</view>
@ -49,10 +73,21 @@
</view>
<!-- 条形图 -->
<view class="bar_wrap" v-else>
<!-- 工种 -->
<view class="item" v-if="checkNavType==1" v-for="(item,index) in workerTypeList" :key="index">
<!-- 单位 -->
<view class="item" v-if="checkNavType==1" v-for="(item,index) in unitList" :key="index">
<view class="flex2" style="margin-bottom: 6px;">
<view class="flex">
<view class="flex flex-content">
<text class="item_name">{{item.enterprise_name}}</text>
<text class="item_ratio">{{item.ratio}}%</text>
</view>
<view class="item_num">{{item.num}}</view>
</view>
<view class="showRatioBar" :style="{width:item.ratio +'%'}"></view>
</view>
<!-- 工种 -->
<view class="item" v-if="checkNavType==2" v-for="(item,index) in workerTypeList" :key="index">
<view class="flex2" style="margin-bottom: 6px;">
<view class="flex flex-content">
<text class="item_name">{{item.typeName}}</text>
<text class="item_ratio">{{item.ratioNum}}%</text>
</view>
@ -61,9 +96,9 @@
<view class="showRatioBar" :style="{width:item.ratioNum+'%'}"></view>
</view>
<!-- 年龄 -->
<view class="item" v-if="checkNavType==2" v-for="(item,index) in workercountList" :key="index">
<view class="item" v-if="checkNavType==3" v-for="(item,index) in workercountList" :key="index">
<view class="flex2" style="margin-bottom: 6px;">
<view class="flex">
<view class="flex flex-content">
<text class="item_name">{{item.typeName}}</text>
<text class="item_ratio">{{item.ratioNum}}%</text>
</view>
@ -72,9 +107,9 @@
<view class="showRatioBar" :style="{width:item.ratioNum+'%'}"></view>
</view>
<!-- 区域 -->
<view class="item" v-if="checkNavType==3" v-for="(item,index) in provinceList" :key="index">
<view class="item" v-if="checkNavType==4" v-for="(item,index) in provinceList" :key="index">
<view class="flex2" style="margin-bottom: 6px;">
<view class="flex">
<view class="flex flex-content">
<text class="item_name">{{item.provinceName}}</text>
<text class="item_ratio">{{item.ratioNum}}%</text>
</view>
@ -97,75 +132,78 @@
},
data() {
return {
cWidth: 200,
pieChartData: {
categories: [],
title: {
name: "",
color: '#7cb5ec',
fontSize: 25,
offsetY: 0,
offsetY: 0
},
series: [{
"data": 0,
"data": 60,
color: '#1890FF'
},
{
"data": 0,
"data": 50,
color: '#E7EDF3'
},
]
},
checkNavType: 1, //
navChartsType: 1, // ;
projectSn: '',
provinceList:[],//
workerTypeList:[],//
workercount:{},//
workercountList:[],
colorList:['#00b0f0','#0070c0','#c00000','#ff0000','#ffc000','#ffff00','#92d050','#00b050','#002060','#7030a0','#262626',
'#a6a6a6','#660010','#b21016','#c00000','#ff0000','#ffc000','#ffff00','#00b0f0','#0070c0','#92d050','#00b050','#002060','#7030a0','#262626',
'#a6a6a6','#660010','#b21016'],
unitList: [], //
provinceList: [], //
workerTypeList: [], //
workercount: {}, //
workercountList: [],
colorList: ['#00b0f0', '#0070c0', '#c00000', '#ff0000', '#ffc000', '#ffff00', '#92d050', '#00b050',
'#002060', '#7030a0', '#262626',
'#a6a6a6', '#660010', '#b21016', '#c00000', '#ff0000', '#ffc000', '#ffff00', '#00b0f0', '#0070c0',
'#92d050', '#00b050', '#002060', '#7030a0', '#262626',
'#a6a6a6', '#660010', '#b21016'
],
};
},
onLoad() {
let that = this;
//
uni.getSystemInfo({
success(res) {
that.cWidth = res.screenWidth
}
})
},
mounted() {
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
// this.projectSn = '52f1b39bac744fb597a1a1b71511362c';
this.getListData();
this.getUnitListData();
},
methods: {
// tabs
changeNavType(type) {
this.checkNavType = type;
if(type==1){
this.pieChartData.title.name = '工种';
if(this.workerTypeList.length>0){
if (type == 1) {
this.pieChartData.title.name = '单位';
if (this.unitList.length > 0) {
let arr = [];
this.workerTypeList.forEach((item,index)=>{
this.unitList.forEach((item, index) => {
let json = {
"data": item.ratioNum,
"data": item.ratio,
color: this.colorList[index]
};
arr.push(json)
});
this.pieChartData.series = arr;
};
}else if(type==2){
this.pieChartData.title.name = '年龄';
this.workercountList = [
{typeName:'18岁以下', personNum:this.workercount.age18,ratioNum:this.workercount.age18ratio},
{typeName:'18岁至25岁', personNum:this.workercount.age18to25,ratioNum:this.workercount.age18to25ratio},
{typeName:'25岁至35岁', personNum:this.workercount.age25to35,ratioNum:this.workercount.age25to35ratio},
{typeName:'35岁至45岁', personNum:this.workercount.age35to45,ratioNum:this.workercount.age35to45ratio},
{typeName:'45岁至60岁', personNum:this.workercount.age45to60,ratioNum:this.workercount.age45to60ratio},
{typeName:'60岁以上', personNum:this.workercount.age60,ratioNum:this.workercount.age60ratio}
];
}else if(type==3){
this.pieChartData.title.name = '区域';
if(this.provinceList.length>0){
} else if (type == 2) {
this.pieChartData.title.name = '工种';
if (this.workerTypeList.length > 0) {
let arr = [];
this.provinceList.forEach((item,index)=>{
this.workerTypeList.forEach((item, index) => {
let json = {
"data": item.ratioNum,
color: this.colorList[index]
@ -173,7 +211,55 @@
arr.push(json)
});
this.pieChartData.series = arr;
};
} else if (type == 3) {
this.pieChartData.title.name = '年龄';
this.workercountList = [{
typeName: '18岁以下',
personNum: this.workercount.age18,
ratioNum: this.workercount.age18ratio
},
{
typeName: '18岁至25岁',
personNum: this.workercount.age18to25,
ratioNum: this.workercount.age18to25ratio
},
{
typeName: '25岁至35岁',
personNum: this.workercount.age25to35,
ratioNum: this.workercount.age25to35ratio
},
{
typeName: '35岁至45岁',
personNum: this.workercount.age35to45,
ratioNum: this.workercount.age35to45ratio
},
{
typeName: '45岁至60岁',
personNum: this.workercount.age45to60,
ratioNum: this.workercount.age45to60ratio
},
{
typeName: '60岁以上',
personNum: this.workercount.age60,
ratioNum: this.workercount.age60ratio
}
];
} else if (type == 4) {
this.pieChartData.title.name = '区域';
if (this.provinceList.length > 0) {
let arr = [];
this.provinceList.forEach((item, index) => {
let json = {
"data": item.ratioNum,
color: this.colorList[index]
};
arr.push(json)
});
this.pieChartData.series = arr;
};
}
@ -183,7 +269,37 @@
changeNavCharts(type) {
this.navChartsType = type;
},
//
getUnitListData() {
let that = this;
this.sendRequest({
url: 'xmgl/workerInfo/selectWorkerManageEnterpriseStatistics',
method: 'POST',
data: {
sn: this.projectSn,
},
success: (res) => {
if (res.code == 200) {
that.unitList = res.result.enterpriseList; //
that.pieChartData.title.name = '单位';
//
if (that.unitList.length > 0) {
let arr = [];
that.unitList.forEach((item, index) => {
let json = {
"data": item.ratio,
color: that.colorList[index]
};
arr.push(json)
});
that.pieChartData.series = arr;
};
}
}
})
},
//
getListData() {
this.sendRequest({
@ -194,26 +310,49 @@
},
success: (res) => {
if (res.code == 200) {
this.pieChartData.title.name = '工种';
this.provinceList=res.result.provinceList;//
this.workerTypeList=res.result.workerTypeList;//
this.workercount=res.result.workercount;//
console.log('区域数据--',this.provinceList);
console.log('工种数据--',this.workerTypeList);
console.log('年龄数据--',this.workercount);
this.workercountList = [
{typeName:'18岁以下', personNum:this.workercount.age18,ratioNum:this.workercount.age18ratio},
{typeName:'18岁至25岁', personNum:this.workercount.age18to25,ratioNum:this.workercount.age18to25ratio},
{typeName:'25岁至35岁', personNum:this.workercount.age25to35,ratioNum:this.workercount.age25to35ratio},
{typeName:'35岁至45岁', personNum:this.workercount.age35to45,ratioNum:this.workercount.age35to45ratio},
{typeName:'45岁至60岁', personNum:this.workercount.age45to60,ratioNum:this.workercount.age45to60ratio},
{typeName:'60岁以上', personNum:this.workercount.age60,ratioNum:this.workercount.age60ratio}
// this.pieChartData.title.name = '';
this.provinceList = res.result.provinceList; //
this.workerTypeList = res.result.workerTypeList; //
this.workercount = res.result.workercount; //
console.log('区域数据--', this.provinceList);
console.log('工种数据--', this.workerTypeList);
console.log('年龄数据--', this.workercount);
this.workercountList = [{
typeName: '18岁以下',
personNum: this.workercount.age18,
ratioNum: this.workercount.age18ratio
},
{
typeName: '18岁至25岁',
personNum: this.workercount.age18to25,
ratioNum: this.workercount.age18to25ratio
},
{
typeName: '25岁至35岁',
personNum: this.workercount.age25to35,
ratioNum: this.workercount.age25to35ratio
},
{
typeName: '35岁至45岁',
personNum: this.workercount.age35to45,
ratioNum: this.workercount.age35to45ratio
},
{
typeName: '45岁至60岁',
personNum: this.workercount.age45to60,
ratioNum: this.workercount.age45to60ratio
},
{
typeName: '60岁以上',
personNum: this.workercount.age60,
ratioNum: this.workercount.age60ratio
}
];
//
if(this.workerTypeList.length>0){
if (this.workerTypeList.length > 0) {
let arr = [];
this.workerTypeList.forEach((item,index)=>{
this.workerTypeList.forEach((item, index) => {
let json = {
"data": item.ratioNum,
color: this.colorList[index]
@ -222,15 +361,15 @@
});
this.pieChartData.series = arr;
};
}
}
})
},
}
}
@ -323,6 +462,14 @@
.data_wrap .name {
width: 45%;
>view:nth-child(2) {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: left;
}
}
.data_wrap .bg_color {
@ -357,7 +504,15 @@
background-color: rgba(43, 141, 243, 0.9);
}
.flex-content {
width: 82%;
}
.item_name {
max-width: 90%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: 12px;
}
@ -368,4 +523,4 @@
.item_ratio {
color: rgba(38, 45, 71, 0.7);
}
</style>
</style>

View File

@ -562,11 +562,17 @@
// return false;
// }
console.log('item=======item.plugin', item, item.plugin)
if (item.moduleName == "进度管理AG") {
return uni.navigateTo({
url: '/pages/standardScheduleNews/home'
})
switch (item.moduleName) {
case "进度管理AG":
uni.navigateTo({
url: '/pages/standardScheduleNews/home'
})
break;
case "智能巡检":
uni.navigateTo({
url: '../../projectEnd/InspectionRoute/inspectedstay'
})
break;
}
switch (item.plugin) {
// case 'markRoom':
@ -626,7 +632,7 @@
break
case 'carManage':
uni.navigateTo({
url: '../carManage/index'
url: '../carManage/indexPage'
})
break
case 'towerManage':
@ -749,12 +755,6 @@
url: '../../projectEnd/emergencyDisposal/index'
})
break
case 'inspectRoute':
uni.navigateTo({
url: '../../projectEnd/InspectionRoute/inspectedstay'
})
break
case 'saosao':
console.log('打开saosao')
// let that = this;

View File

@ -128,13 +128,13 @@
</view>
</view>
<view class="backBtn" v-if="basicInfo.status == 2 && issueInfoList.length == 0 &&
basicInfo.inspectManId == userInfo.userId">
basicInfo.inspectManId == userInfo.userId && btnEditAuth">
<view class="btn-option" @click="backCheckRecord">撤回</view>
</view>
<view class="editBtn" v-if="basicInfo.status == 6 &&
basicInfo.inspectManId == userInfo.userId">
<view class="btn-delete" @click="deleteCheckRecord">删除检查</view>
<view class="btn-resubmit" @click="resubmitCheckRecord">重新提交</view>
<view class="btn-delete" @click="deleteCheckRecord" v-if="btnDeleteAuth">删除检查</view>
<view class="btn-resubmit" @click="resubmitCheckRecord" v-if="btnEditAuth">重新提交</view>
</view>
</view>
@ -190,18 +190,18 @@
</view>
<view class="approveBtn">
<view class="btn"
v-if="
v-if="btnEditAuth &&
userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length <= 0 || userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].statusText !== '已整改'"
@click="replyBtn(1)">整改回复</view>
</view>
<view class="approveBtn">
<view class="btn"
v-if="userInfo.userId==basicInfo.reviewId && entryType == 3 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 2"
v-if="btnEditAuth && userInfo.userId==basicInfo.reviewId && entryType == 3 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 2"
@click="replyBtn(2)">复查回复</view>
</view>
<view class="approveBtn">
<view class="btn"
v-if="userInfo.userId==basicInfo.verifyManId && entryType == 4 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 3"
v-if="btnEditAuth && userInfo.userId==basicInfo.verifyManId && entryType == 4 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 3"
@click="replyBtn(3)">核验回复</view>
</view>
</view>
@ -221,9 +221,19 @@
entryType: '',
recordType: 1, // 1 2
id: '',
btnEditAuth: true,
btnDeleteAuth: true
}
},
onLoad(option) {
this.btnEditAuth = this.checkPermission({
key: 'inspectionLedger_edit',
menuPath: '/project/quality/inspectionLedger'
})
this.btnDeleteAuth = this.checkPermission({
key: 'inspectionLedger_delete',
menuPath: '/project/quality/inspectionLedger'
})
this.id = option.id;
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
this.entryType = Number(option.type)

View File

@ -60,7 +60,7 @@
<image class="icon" style="width: 30px; height: 30px;" src="@/static/newZlgl1.png"></image>
<view>检查台账</view>
</view>
<view class="menu" @click="addBtn">
<view class="menu" @click="addBtn" v-if="btnAuth">
<image class="icon" style="width: 30px; height: 30px;" src="@/static/newZlgl2.png"></image>
<view>新增检查</view>
</view>
@ -155,8 +155,12 @@
},
nowTime: '',
timer: '', //
btnAuth: true
}
},
onLoad() {
this.btnAuth = this.checkPermission({key: 'inspectionLedger_add', menuPath: '/project/quality/inspectionLedger'})
},
mounted() {
this.getTime()
// this.getListData();

View File

@ -128,13 +128,13 @@
</view>
</view>
<view class="backBtn" v-if="basicInfo.status == 2 && issueInfoList.length == 0 &&
basicInfo.inspectManId == userInfo.userId">
basicInfo.inspectManId == userInfo.userId && btnEditAuth">
<view class="btn-option" @click="backCheckRecord">撤回</view>
</view>
<view class="editBtn" v-if="basicInfo.status == 6 &&
basicInfo.inspectManId == userInfo.userId">
<view class="btn-delete" @click="deleteCheckRecord">删除检查</view>
<view class="btn-resubmit" @click="resubmitCheckRecord">重新提交</view>
<view class="btn-delete" @click="deleteCheckRecord" v-if="btnDeleteAuth">删除检查</view>
<view class="btn-resubmit" @click="resubmitCheckRecord" v-if="btnEditAuth">重新提交</view>
</view>
</view>
@ -190,18 +190,18 @@
</view>
<view class="approveBtn">
<view class="btn"
v-if="
userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length <= 0 || userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].statusText !== '已整改'"
v-if="
btnEditAuth && userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length <= 0 || userInfo.userId == basicInfo.changeId && entryType == 2 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].statusText !== '已整改'"
@click="replyBtn(1)">整改回复</view>
</view>
<view class="approveBtn">
<view class="btn"
v-if="userInfo.userId==basicInfo.reviewId && entryType == 3 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 2"
v-if="btnEditAuth && userInfo.userId==basicInfo.reviewId && entryType == 3 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 2"
@click="replyBtn(2)">复查回复</view>
</view>
<view class="approveBtn">
<view class="btn"
v-if="userInfo.userId==basicInfo.verifyManId && entryType == 4 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 3"
v-if="btnEditAuth && userInfo.userId==basicInfo.verifyManId && entryType == 4 && issueInfoList.length > 0 && issueInfoList[issueInfoList.length-1].type !== 3"
@click="replyBtn(3)">核验回复</view>
</view>
</view>
@ -221,9 +221,19 @@
entryType: '',
recordType: 1, // 1 2
id: '',
btnEditAuth: true,
btnDeleteAuth: true
}
},
onLoad(option) {
this.btnEditAuth = this.checkPermission({
key: 'inspectionLedger_edit',
menuPath: '/project/safeSame/inspectionLedger'
})
this.btnDeleteAuth = this.checkPermission({
key: 'inspectionLedger_delete',
menuPath: '/project/safeSame/inspectionLedger'
})
this.id = option.id;
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
this.entryType = Number(option.type)
@ -234,7 +244,7 @@
},
methods: {
//
resubmitCheckRecord(){
resubmitCheckRecord() {
uni.navigateTo({
url: '/pages/projectEnd/safeSame/editIssue?id=' + this.id
})
@ -404,8 +414,8 @@
item.statusText = '核验合格'
}
})
}
})
},
@ -599,7 +609,7 @@
.approveBtn .btn:active {
background-color: rgba(65, 129, 254, 0.8);
}
.backBtn {
position: fixed;
bottom: 0px;
@ -608,7 +618,7 @@
box-sizing: border-box;
z-index: 99;
}
.backBtn .btn-option {
width: 100%;
line-height: 40px;
@ -616,11 +626,11 @@
color: #fff;
text-align: center;
}
.backBtn .btn-option:active {
background-color: rgba(65, 129, 254, 0.8);
}
.editBtn {
position: fixed;
bottom: 0px;
@ -631,6 +641,7 @@
box-sizing: border-box;
z-index: 99;
}
.editBtn .btn-delete {
width: 50%;
line-height: 40px;
@ -638,13 +649,15 @@
color: #fff;
text-align: center;
}
.editBtn .btn-resubmit{
.editBtn .btn-resubmit {
width: 50%;
line-height: 40px;
background-color: #5382F6;
color: #fff;
text-align: center;
}
.pass_wrap {
position: absolute;
top: 100px;
@ -799,4 +812,4 @@
color: gray;
width: 68px;
}
</style>
</style>

View File

@ -60,7 +60,7 @@
<image class="icon" style="width: 30px; height: 30px;" src="@/static/newZlgl1.png"></image>
<view>检查台账</view>
</view>
<view class="menu" @click="addBtn">
<view class="menu" @click="addBtn" v-if="btnAuth">
<image class="icon" style="width: 30px; height: 30px;" src="@/static/newZlgl2.png"></image>
<view>新增检查</view>
</view>
@ -176,8 +176,12 @@
},
nowTime: '',
timer: '', //
btnAuth: true
}
},
onLoad() {
this.btnAuth = this.checkPermission({key: 'inspectionLedger_add', menuPath: '/project/safeSame/inspectionLedger'})
},
mounted() {
this.getTime()
// this.getListData();

View File

@ -166,7 +166,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -212,7 +212,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -237,6 +238,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'blindPlugWork_add',
menuPath: '/project/specialWork/blindPlugWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -118,7 +118,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -164,7 +164,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -189,6 +190,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'fireWork_add',
menuPath: '/project/specialWork/fireWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -130,7 +130,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -176,7 +176,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -201,6 +202,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'startBuildingWork_add',
menuPath: '/project/specialWork/startBuildingWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -129,7 +129,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -175,7 +175,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -200,6 +201,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'towerOverWork_add',
menuPath: '/project/specialWork/towerOverWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -129,7 +129,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -175,7 +175,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -200,6 +201,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'riggingOutWork_add',
menuPath: '/project/specialWork/riggingOutWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -206,7 +206,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -252,7 +252,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -277,6 +278,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'confinedSpaceWork_add',
menuPath: '/project/specialWork/confinedSpaceWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -138,7 +138,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -184,7 +184,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -209,6 +210,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'disconnectionWork_add',
menuPath: '/project/specialWork/disconnectionWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -150,7 +150,7 @@
</view>
<!-- <view class="add-btn" v-if="activeIndex != 7 && activeIndex != 2 && !(activeIndex == 1 && detailData.engineeringState == 3) -->
<view class="add-btn" v-if="activeIndex != 7 && userInfo.userId === detailData.assignmentPersonInCharge
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn"
&& COMPANY != 'longguang' && detailData.finalAcceptanceStatus !== 2 && isShowBtn && btnAuth"
@click="addForm">
<uni-icons v-if="activeIndex == 5" type="camera" size="30" color="#fff"></uni-icons>
<uni-icons v-else type="plusempty" size="30" color="#fff"></uni-icons>
@ -196,7 +196,8 @@
detailId: "",
detailData:{},
isShowBtn: null,
userInfo: {}
userInfo: {},
btnAuth: true
}
},
onReachBottom() {
@ -221,6 +222,10 @@
},200)
},
onLoad(val){
this.btnAuth = this.checkPermission({
key: 'temporaryPowerWork_add',
menuPath: '/project/specialWork/temporaryPowerWork'
})
this.detailId = val.id
},
mounted() {

View File

@ -5,7 +5,7 @@
培训计划
</view>
</headers>
<view class="list-box" v-if="dataList.length">
<view class="list-box" :style="{height: btnAuth?'calc(100vh - 114px)':'100vh'}" v-if="dataList.length">
<view class="list-box-item" @click="toDetail(item)" v-for="(item,index) in dataList" :key="index">
<view class="item-flex">
<text>培训计划名称: </text>
@ -39,7 +39,7 @@
暂无数据
</view> -->
</view>
<view class="btn-operate" @click="toAdd">
<view class="btn-operate" @click="toAdd" v-if="btnAuth">
<button type="primary"
>创建培训计划</button>
</view>
@ -53,10 +53,12 @@
data() {
return {
dataList: [],
projectSn:""
projectSn:"",
btnAuth: true
}
},
onLoad(options) {
this.btnAuth = this.checkPermission({key: 'trainPlan_add', menuPath: '/project/examSystem2/trainPlan'})
this.projectSn = JSON.parse(uni.getStorageSync("userInfo")).sn
this.getDataList();
},

View File

@ -47,7 +47,7 @@
<span>{{ result.isEnable === 0 ? '预约有效' : '预约已失效'}}</span>
</view>
</view>
<view class="delete" @click="deleteEvent">删除</view>
<view class="delete" @click="deleteEvent" v-if="btnAuth">删除</view>
<levitatedsphere :x="100" :y="80"></levitatedsphere>
</view>
</template>
@ -60,13 +60,15 @@
data() {
return {
id: '',
result: {}
result: {},
btnAuth: true
}
},
onShow() {
this.getDetails()
},
onLoad(vai) {
this.btnAuth = this.checkPermission({key: 'trainPlan_add', menuPath: '/project/labor/visitRecord'})
this.id = vai.itemS
},
onReachBottom() {

View File

@ -15,15 +15,15 @@
<view class="videoOperateBox">
<view class="box">
<image src="../../static/videoControlIcon/bg.png" class="bg"></image>
<view class="pic top" @click="controlVideoFn(0,0.2,0,'UP')"></view>
<view class="pic left" @click="controlVideoFn(-0.2,0,0,'LEFT')"></view>
<view class="pic bottom" @click="controlVideoFn(0,-0.2,0,'DOWN')"></view>
<view class="pic right" @click="controlVideoFn(0.2,0,0,'RIGHT')"></view>
<view class="pic top" :style="{backgroundImage: typeName == 'UP' && videoFlag?'url(../../static/videoControlIcon/top-active.png)':'url(../../static/videoControlIcon/top.png)'}" @click="controlVideoFn(0,0.2,0,'UP')"></view>
<view class="pic left" :style="{backgroundImage: typeName == 'LEFT' && videoFlag?'url(../../static/videoControlIcon/left-active.png)':'url(../../static/videoControlIcon/left.png)'}" @click="controlVideoFn(-0.2,0,0,'LEFT')"></view>
<view class="pic bottom" :style="{backgroundImage: typeName == 'DOWN' && videoFlag?'url(../../static/videoControlIcon/bottom-active.png)':'url(../../static/videoControlIcon/bottom.png)'}" @click="controlVideoFn(0,-0.2,0,'DOWN')"></view>
<view class="pic right" :style="{backgroundImage: typeName == 'RIGHT' && videoFlag?'url(../../static/videoControlIcon/right-active.png)':'url(../../static/videoControlIcon/right.png)'}" @click="controlVideoFn(0.2,0,0,'RIGHT')"></view>
<!-- <view class="pic center" @click="stop()"></view> -->
</view>
<view class="box2">
<view class="zoom zoomin" @click="controlVideoFn(0,0,0.2,'ZOOM_IN')"></view>
<view class="zoom zoomout" @click="controlVideoFn(0,0,-0.2,'ZOOM_OUT')"></view>
<view class="zoom zoomin" :style="{backgroundImage: typeName == 'ZOOM_IN' && videoFlag?'url(../../static/videoControlIcon/2.png)':'url(../../static/videoControlIcon/1.png)'}" @click="controlVideoFn(0,0,0.2,'ZOOM_IN')"></view>
<view class="zoom zoomout" :style="{backgroundImage: typeName == 'ZOOM_OUT' && videoFlag?'url(../../static/videoControlIcon/4.png)':'url(../../static/videoControlIcon/3.png)'}" @click="controlVideoFn(0,0,-0.2,'ZOOM_OUT')"></view>
</view>
</view>
<view class="video-playback" @click="toBackList">
@ -42,7 +42,8 @@
videoInfo:{videoName:'',videoType:null},
streamType: 1, //1 2
videoResponseInfo: {},
videoFlag:false,
videoFlag: false,
typeName: ""
};
},
onLoad(options) {
@ -104,8 +105,9 @@
}
})
},
controlVideoFn(pan, tilt, zoom,opType){
if(this.videoFlag){
controlVideoFn(pan, tilt, zoom, opType) {
this.typeName = opType
if (this.videoFlag) {
uni.showToast({
title:'不要重复点击',
icon:'none'
@ -155,7 +157,7 @@
icon:'none'
})
},
complete(){
complete() {
that.videoFlag = false;
}
})
@ -188,7 +190,7 @@
icon:'none'
})
},
complete(){
complete() {
that.videoFlag = false;
}
})

BIN
static/carManage/icon1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/carManage/icon2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB