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

This commit is contained in:
X_Rian 2024-07-01 09:47:10 +08:00
commit 2f15f42eeb
26 changed files with 1020 additions and 96 deletions

View File

@ -20,6 +20,7 @@ var COMPANY = ""; //通用
// COMPANY = 'shjg'//上海优益(上海建工)
COMPANY = "agjt"; //鞍钢集团
// COMPANY = 'zkax' //中科安信
// COMPANY = 'hfqc' //乌丹站舍(合肥启程)
var PROJECT = {
local_test: "common", // 普通版
@ -53,6 +54,8 @@ if (COMPANY == "longguang") {
mqttUrl = "ws://zhgdmqtt.loganwy.com:80/mqtt";
} else if (COMPANY == "henan") {
mqttUrl = "ws://182.90.224.147:8083/mqtt";
} else if (COMPANY == "hfqc") {
mqttUrl = "ws://192.168.100.4:8083/mqtt";
}
var enabledProjectV2 = 2; //是否用精益建造版 1精益建造版(黑色) 2 最初版(白色) 3数据看板UI蓝色版白色 4:湛蓝色
var CONSTRUCTIONSTAGE = [{

View File

@ -29,6 +29,7 @@ export const xmglXzHikvisionSyncRetryAPI = data => post('xmgl/xzHikvisionSync/re
//详情
export const getTrainRecordsByWorkerIdApi = data => post('xmgl/workerInfo/getTrainRecordsByWorkerId', data); //获取 安全教育列表数据
export const getWorkerInfoData = data => post('xmgl/workerInfo/viewWorkerInfoDetail', data); //获取 人员 详细所有信息
export const getRegisterWorkerInfoData = data => post('xmgl/xzWorkerInfoAuditRecord/viewWorkerInfoDetail', data); //获取 人员登记培训 详细所有信息
export const addContractApi = data => post('xmgl/workerContract/add', data); //新增合同信息

View File

@ -73,7 +73,7 @@ export const getSelectEnterpriseScoreList = data => post('xmgl/hiddenDangerInspe
//验证身份证
// export const getAnswerWorkerInfoList = data => post('xmgl/safeEducationQuestionAnswer/getAnswerWorkerInfo', data);
export const getAnswerWorkerInfoOriginList = data => post('xmgl/safeEducationQuestionAnswer/getAnswerWorkerInfo', data);
export const getAnswerWorkerInfoList = data => post('xmgl/xzWorkerInfoAuditRecord/queryByCard', data);
@ -82,7 +82,7 @@ export const getSelectSafeEducationQuestionInfoList = data => post('xmgl/safeEdu
//考试成功
// export const addSafeEducationQuestionAnswer = data => post('xmgl/safeEducationQuestionAnswer/add', data);
export const addSafeEducationQuestionAnswerOrigin = data => post('xmgl/safeEducationQuestionAnswer/add', data);
export const addSafeEducationQuestionAnswer = data => post('xmgl/xzWorkerInfoAuditRecord/submit', data);
// 责任区域

View File

@ -148,7 +148,7 @@
<div
class="width_100"
@click="goto3"
v-if="dataCenter1 != 1"
v-if="$store.state.userInfo.systemLogoConfig.showFileCenter == 1"
:title="dataCenter"
>
<!-- <img src="@/assets/images/zlzx.png" width="15px" height="15px" /> -->
@ -210,7 +210,6 @@ export default {
COMPANY: COMPANY,
projectType: "",
loginData: "",
dataCenter1: 0,
seeEquipment: "",
projectBackground: "项目后台",
enterpriseBackground: "企业后台",
@ -236,7 +235,6 @@ export default {
this.projectType = PROJECT_TYPE;
this.loginData = JSON.parse(localStorage.getItem("systemInfo"));
this.seeEquipment = this.$store.state.userInfo.seeEquipment;
// this.getModuleList();
console.log("seeEquipment------", this.seeEquipment);
console.log(" this.loginData===================", this.loginData);
if (this.loginData.headerConfiguration != "") {
@ -267,16 +265,6 @@ export default {
// console.log('',this.enterpriseBackground)
},
methods: {
//
getModuleList() {
let allModuleList = this.$store.state.userInfo.menuAuthority.moduleList;
for(let i = 0;i<allModuleList.length;i++){
if(allModuleList[i].modulePath == '/companyAdmin/docManage'){ //
this.dataCenter1 = 0;
break;
}
}
},
//
updatePw() {
this.$router.push({

View File

@ -331,8 +331,11 @@ router.beforeEach((to, form, next) => {
'/entryCodeDetail',
'/entryCode',
'/authentication',
'/authenticationOrigin',
'/test',
'/testOrigin',
'/videoLearning',
'/videoLearningOrigin',
'/pages/projectEnd/safetyEducation/authentication',
'/companyAdmin/docManage',
]

View File

@ -3414,6 +3414,25 @@ const routes2 = [{
component: () =>
import ("@/views/projectFront/examination/videoLearning.vue"),
},
//扫二维码路由(原始)
{
path: "/authenticationOrigin",
name: "安全教育_考试_原始",
component: () =>
import ("@/views/projectFront/examinationOrigin/authentication.vue"),
},
{
path: "/testOrigin",
name: "安全教育_考试提示_原始",
component: () =>
import ("@/views/projectFront/examinationOrigin/test.vue"),
},
{
path: "/videoLearningOrigin",
name: "安全教育_考试视频_原始",
component: () =>
import ("@/views/projectFront/examinationOrigin/videoLearning.vue"),
},
//准入二维码-验证
{
path: "/entryCode",

View File

@ -55,7 +55,7 @@ export default new Vuex.Store({
UPLOADURL: 'http://192.168.34.221:9111/upload/image/', // 郭圣雄本地
FILEURL: 'http://192.168.34.221:9111/image/', //郭圣雄本地
// WORKFLOWURL: "http://192.168.34.138:88/#/workspace/forms", //坤工作流地址(本地)
WORKFLOWURL: "http://192.168.34.129:88/#/workspace/forms", //罗峰工作流地址(本地)
// WORKFLOWURL: "http://192.168.34.129:88/#/workspace/forms", //罗峰工作流地址(本地)
// UPLOADURL:'http://182.90.224.237:51234/upload/image/',// 郭圣雄远程
// FILEURL:'http://182.90.224.237:51234/image/',//郭圣雄远程
// UPLOADURL: 'http://42.180.188.17:11211/upload/image', //测试

View File

@ -141,6 +141,21 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="是否显示资料中心" prop="showFileCenter">
<el-switch
v-model="form.showFileCenter"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0"
>
</el-switch>
{{ form.showFileCenter == 1 ? '是' : '否' }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="是否开启施工人员资质证书到期预警" prop="isOpenCertificateExpireWarn">
@ -299,6 +314,7 @@ export default {
projectBackground: '', //
equipmentChina: '', //
dataCenter: '', //
showFileCenter: 0, //
projectFront: '', //
isShowProjectFront: 0, //
isOpenCertificateExpireWarn: 0, //

View File

@ -147,6 +147,22 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="是否显示资料中心" prop="showFileCenter">
<el-switch
v-model="form.showFileCenter"
active-color="#13ce66"
inactive-color="#ff4949"
:active-value="1"
:inactive-value="0"
@change='switchChange'
>
</el-switch>
{{ form.showFileCenter == 1 ? '是' : '否' }}
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="12">
<el-col :span="6">
<el-form-item label="是否开启施工人员资质证书到期预警" prop="isOpenCertificateExpireWarn">
@ -339,6 +355,7 @@ export default {
certificateExpireWarnAheadDay: 0, //
defaultApprovalCompanySn: "", //
dataCenter: '', //
showFileCenter: 0, //
loginTimeOut:1,
zoomType:0,

View File

@ -283,9 +283,10 @@ export default {
phoneNumber: [
{
required: true,
message: "请输入",
message: "请输入正确的手机号格式",
trigger: "blur",
},
pattern: /^1(3|4|5|6|7|8|9)\d{9}$/,
}
],
remark: [
{

View File

@ -68,7 +68,7 @@
<el-button class="expintBtn" size="mini" type="primary" plain @click="editSuccess(scope.$index, scope.row)" v-if="scope.row.isEdit">
保存
</el-button>
<el-button class="expintBtn" size="mini" type="danger" @click="scope.row.isEdit = false" v-if="scope.row.isEdit">
<el-button class="expintBtn" size="mini" type="danger" @click="cancelData(scope.$index,scope.row)" v-if="scope.row.isEdit">
取消
</el-button>
</template>
@ -217,6 +217,14 @@ export default {
})
})
},
//
cancelData(index,row){
if(row.id){
this.ruleList[index].isEdit = false;
} else {
this.ruleList.splice(index,1)
}
},
//
getProgressListData() {
getExamPointListApi({

View File

@ -0,0 +1,182 @@
<template>
<div class="fullHeight">
<img src="@/assets/images/onlineTest_bg.png" class="onlineTest_bg" />
<div class="centerBox">
<!-- <img src="@/assets/images/aqjy.png" class="aqjyImg" /> -->
<div class="inputContent">
<input
class="inputBox"
type="text"
v-model="idCard"
placeholder="请输入身份证号码"
/>
</div>
<div type="primary" class="btn submitBtn big" @click="verifyFn">
<span>开始培训</span>
</div>
</div>
</div>
</template>
<script>
import { getAnswerWorkerInfoOriginList } from '@/assets/js/api/safeManage.js'
export default {
data() {
return {
idCard: '',
projectSn: '',
eduId: ''
}
},
created() {
console.log('收到的参数 :', this.$route.query)
this.projectSn = this.$route.query.projectSn
this.eduId = this.$route.query.eduId
},
methods: {
verifyFn() {
if (this.idCard == '') {
this.$message.error('请输入身份证号码')
return
}
getAnswerWorkerInfoOriginList({
idCard: this.idCard,
projectSn: this.projectSn
}).then((result) => {
if (result.result) {
// this.$message({
// message: '',
// type: 'success'
// })
// this.$message.success('')
setTimeout(() => {
this.$router.push({
path: '/videoLearningOrigin',
query: {
eduId: this.eduId,
workerId: result.result.id
}
})
}, 1000)
}
})
}
}
}
</script>
<style lang='less' scoped>
.onlineTest_bg {
width: 100%;
height: 100%;
}
.fullHeight {
width: 100%;
height: 100%;
}
.centerBox {
position: absolute;
left: 5%;
bottom: 50px;
// transform: translate(-50%, -50%);
text-align: center;
width: 90%;
}
// .aqjyImg {
// width: 50rem;
// height: 40rem;
// margin-bottom: 15rem;
// }
.inputContent {
/* position: fixed;
bottom: 10%;
left: 0; */
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.inputBox {
// margin-top: 30rem;
background-color: white;
border-radius: 8px;
padding: 12px;
width: 100%;
font-size: 16px;
display: inline-block;
// margin-right: 2rem;
border: 1px solid rgba(63, 83, 110, 0.5);
/* margin-left: 2rem; */
}
.submitBtn {
// margin: -55rem -13rem;
// position: fixed;
// bottom: 10rem;
/* left: 20px; */
width: 100%;
background: #4181fe;
height: 44px;
border: none;
color: #fff;
font-size: 16px;
border-radius: 10px;
line-height: 44px;
margin-top: 20px;
}
// .onlineTest_bg {
// width: 100%;
// height: 180rem;
// margin-top: -83rem;
// }
// .fullHeight {
// width: 100%;
// height: 100%;
// }
// .centerBox {
// position: absolute;
// left: 50%;
// top: 90%;
// transform: translate(-50%, -50%);
// text-align: center;
// }
// .aqjyImg {
// width: 50rem;
// height: 40rem;
// margin-bottom: 15rem;
// }
// .inputContent {
// /* position: fixed;
// bottom: 10%;
// left: 0; */
// width: 100%;
// display: flex;
// align-items: center;
// justify-content: center;
// }
// .inputBox {
// margin-top: 30rem;
// background-color: white;
// border-radius: 2rem;
// padding: 3rem 0rem;
// width: 80rem;
// font-size: 6.5rem;
// display: inline-block;
// margin-right: 2rem;
// border: 0.5rem solid rgba(63, 83, 110, 0.5);
// /* margin-left: 2rem; */
// }
// .submitBtn {
// margin: -55rem -13rem;
// position: fixed;
// bottom: 10rem;
// /* left: 20px; */
// width: calc(130% - 0rem);
// background: #4181fe;
// height: 15rem;
// border: none;
// color: #fff;
// font-size: 7.5rem;
// border-radius: 10rem;
// line-height: 15rem;
// }
</style>

View File

@ -0,0 +1,80 @@
<template>
<div>
<div class="dialogBox" v-show="dialogVisible">
<div class="mask" @click="hideFn"></div>
<div class="dialogContent">
<!-- <div class="dialogTitle">
<slot name="title"></slot>
<text @click="hideFn" style="float: right;">X</text>
</div> -->
<!-- <div class="dialogInner"> -->
<slot name="content"></slot>
<!-- </div> -->
</div>
</div>
</div>
</template>
<script>
export default {
props: {
canClickMask: {
type: Boolean,
default: true
}
},
data() {
return {
dialogVisible: false
}
},
mounted() {},
methods: {
showFn() {
this.dialogVisible = true
},
hideFn() {
if (this.canClickMask) {
this.dialogVisible = false
}
},
hideFn2() {
this.dialogVisible = false
}
}
}
</script>
<style lang="scss" scoped>
.dialogBox {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 999;
}
.mask {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.4);
}
.dialogTitle {
padding: 15px;
}
.dialogContent {
width: calc(100% - 90px);
position: fixed;
left: 45px;
top: 50%;
transform: translateY(-50%);
background-color: white;
border-radius: 4px;
}
.dialogInner {
padding: 0 15px;
}
</style>

View File

@ -0,0 +1,369 @@
<template>
<div class="fullHeight">
<div class="headers">
<div class="headerName">考试</div>
</div>
<div class="pageContent">
<div class="tips">交卷之前离开当前页面会导致本次考试作废</div>
<vue-scroll style="height: 83vh">
<div class="blockBox" v-for="(item, index) in courseDetail.questionList" :key="index">
<div class="testTilte">
{{ index + 1 }}{{ item.questionName }}{{
item.questionScore
}}
</div>
<!-- 多选 -->
<el-checkbox-group class="optionsBox" v-if="item.questionType == 2" v-model="form.checkboxArray[index]" @change="(e) => {
changeChecked(e, item.questionId, index)
}
">
<el-checkbox v-for="(data, index2) in item.optionList" :label="data.optionId" :key="index2">{{
indexList[index2] }}{{ data.optionName }}</el-checkbox>
</el-checkbox-group>
<!-- 单选 -->
<el-radio-group v-if="item.questionType == 1" v-model="form.radioArray[index]" @change="(e) => {
changeChecked(e, item.questionId, index)
}
" class="optionsBox">
<el-radio v-for="(data, index2) in item.optionList" :key="index2" :label="data.optionId">{{ indexList[index2]
}}{{ data.optionName }}</el-radio>
</el-radio-group>
</div>
<div style="height:350px"></div>
</vue-scroll>
<button type="primary" class="btn submitBtn big" @click="submitData()">
交卷
</button>
</div>
<dialogs ref="dialogs">
<!-- <template v-slot:title>
{{isAdd?'添加':'编辑'}}
</template> -->
<template v-slot:content>
<div class="formBox2">
<form @submit="submitData">
<div class="uni-form-item">
<div class="uni-form-label">
<text class="star">*</text>身份证号码
</div>
<div class="uni-form-input">
<input class="uni-input" placeholder-class="cl" name="idCard" v-model="idCard" placeholder="请输入" />
</div>
</div>
<button form-type="submit" type="primary" class="btn submitBtn">
提交
</button>
</form>
</div>
</template>
</dialogs>
<div class="testResultBox" v-if="showResult">
<img v-if="isQualified == 1" src="@/assets/images/Pass.png" class="resultImg" />
<img v-else src="@/assets/images/noPass.png" class="resultImg" />
<div class="score">
<span>{{ score }}</span>
</div>
</div>
</div>
</template>
<script>
import dialogs from '@/views/projectFront/examination/dialog.vue'
import {
getSelectSafeEducationQuestionInfoList,
addSafeEducationQuestionAnswerOrigin
} from '@/assets/js/api/safeManage.js'
export default {
components: { dialogs },
data() {
return {
radio: 6,
form: {
//
radioArray: [],
checkboxArray: []
},
radioList: [],
indexList: [
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'N',
'M',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z'
],
courseDetail: {
eduAddr: '',
eduClasshour: '',
eduContent: '',
eduCourseName: '',
eduPhoto: '',
eduTeacher: '',
eduTime: '',
eduType: '',
eduVideo: '',
passScore: '',
projectSn: '',
questionList: [],
totalScore: '',
videoType: 1
},
eduId: '',
selectList: [],
idCard: '',
workerId: '',
score: 0,
showResult: false,
isQualified: 1 //12
}
},
created(options) {
console.log('获取课程详细数据1516', this.$route.query)
this.eduId = this.$route.query.eduId
this.workerId = this.$route.query.workerId
this.getDetailData()
},
methods: {
changeChecked(e, questionId, index) {
console.log('optionId' + e, 'questionId' + questionId, 'index' + index);
var arr = e
//
for (var i = 0; i < this.selectList.length; i++) {
if (this.selectList[i].questionId == questionId) {
console.log(this.selectList[i].questionId == questionId);
this.selectList.splice(i--, 1)
}
}
//
if (Array.isArray(arr)) {
console.log('111111');
for (var i = 0; i < arr.length; i++) {
this.selectList.push({
questionId: questionId,
optionId: arr[i]
})
}
} else {
console.log('2222');
this.selectList.push({
questionId: questionId,
optionId: arr
})
this.courseDetail.questionList[index].optionId = arr
}
console.log(this.selectList)
},
//
getDetailData() {
var that = this
getSelectSafeEducationQuestionInfoList({ eduId: this.eduId }).then(
(result) => {
if (result.result) {
that.courseDetail = result.result.safeEducation
for (var i = 0; i < this.courseDetail.questionList.length; i++) {
let indexArry = []
this.form.checkboxArray.push(indexArry)
this.form.radioArray.push('')
}
console.log("得到的课程详细数据 ", result.result)
console.log("得到的checkboxArray ", this.form.checkboxArray)
}
}
)
},
inputIdCard() {
this.$refs.dialogs.showFn()
},
submitData() {
// if(this.idCard==''){
// uni.showToast({
// title:''
// })
// return
// }
var json = {
eduId: this.eduId,
workerId: this.workerId,
// idCard:this.idCard,
list: this.selectList
}
addSafeEducationQuestionAnswerOrigin(json).then((result) => {
if (result.result) {
this.$message.success('考试成功!')
this.showResult = true
this.isQualified = result.result.isQualified
this.score = result.result.score
}
})
}
}
}
</script>
<style lang="less" scoped>
.optionsBox{
display: flex;
flex-direction: column;
/deep/.el-radio__label{
white-space: normal;
}
/deep/.el-checkbox__label{
white-space: normal;
}
}
.fullHeight{
font-size: 16px
}
.tips {
// font-size: 7rem;
color: red;
margin: 10px;
text-align: center;
}
.blockBox {
box-shadow: 0 4px 12px 0px rgba(212, 220, 236, 0.69);
border-radius: 10px;
margin: 16px;
padding: 10px;
position: relative;
}
.optionItem {
/* padding-left: 20px; */
margin-top: 10px;
// font-size: 7rem;
display: block;
}
.desc {
margin-left: 10px;
}
.checkbox {
transform: scale(0.8);
}
.submitBtn {
// margin: -70rem 5rem;
position: fixed;
z-index: 100;
bottom: 10px;
left: 5%;
width: 90%;
background: #4181fe;
height: 44px;
border: none;
color: #fff;
/* font-size: 7.5rem; */
border-radius: 10px;
}
.testResultBox {
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 99999;
}
.resultImg {
width: 100%;
height: 100%;
// margin: -70rem 0rem;
}
.score {
position: absolute;
left: 50%;
top: 50%;
width: 200px;
height: 200px;
border-radius: 50%;
border: 4px solid #fdcb05;
text-align: center;
line-height: 200px;
transform: translate(-50%, -50%);
span {
// width: 90%;
// position: absolute;
// display: inline-block;
color: #fdcb05;
font-size: 30px
// margin-top: -12rem;
// margin-left: -28rem;
}
}
.headers {
/* border-bottom: 0.5rem solid #f3f3f3; */
height: 44px;
color: #3d4490;
/* font-size: 7.5rem; */
text-align: center;
line-height: 44px;
/* margin-top: -55%; */
/* background-color: pink; */
}
.testTilte {
// font-size: 6rem;
margin-bottom: 6px;
}
// ::v-deep .el-checkbox__label {
// font-size: 4rem;
// line-height: 10rem;
// }
// ::v-deep .el-checkbox__inner {
// margin-top: -2rem;
// width: 4rem;
// height: 4rem;
// line-height: 10rem;
// /* border: 0.5rem solid #fff; */
// }
// ::v-deep .el-radio__inner {
// margin-top: -2rem;
// width: 4rem;
// height: 4rem;
// line-height: 10rem;
// }
// ::v-deep .el-radio__label {
// font-size: 4rem;
// line-height: 10rem;
// }
</style>

View File

@ -0,0 +1,149 @@
<template>
<div>
<div class="fullHeight">
<div class="headers">
<div class="headerName">课程学习</div>
</div>
<video
:src="$store.state.FILEURL + courseDetail.eduVideo"
controls
class="videoBox"
></video>
<div class="courseTitle">
{{ courseDetail.eduCourseName }}
</div>
<div class="desc">
课程类型{{ educateTypeList[courseDetail.eduType - 1] }}
</div>
<div class="desc">试卷总分{{ courseDetail.totalScore }}</div>
<div class="desc">及格分数{{ courseDetail.passScore }}</div>
<div class="desc">创建时间{{ courseDetail.addTime }}</div>
<button
type="primary"
class="btn submitBtn big"
@click="gotoTest"
v-if="courseDetail.questionList.length > 0"
>
开始考试
</button>
</div>
</div>
</template>
<script>
import { getSelectSafeEducationQuestionInfoList } from '@/assets/js/api/safeManage.js'
export default {
data() {
return {
courseDetail: {
eduAddr: '',
eduClasshour: '',
eduContent: '',
eduCourseName: '',
eduPhoto: '',
eduTeacher: '',
eduTime: '',
eduType: 1,
eduVideo: '',
passScore: '',
projectSn: '',
questionList: [],
totalScore: '',
addTime: ''
},
educateTypeList: [
'入场三级教育',
'定期安全教育',
'安全技术交底',
'VR安全教育'
],
eduId: '',
workerId: ''
}
},
created(options) {
console.log('获取课程详细数据1516', this.$route.query)
this.eduId = this.$route.query.eduId
this.workerId = this.$route.query.workerId
this.getDetailData()
},
methods: {
gotoTest() {
this.$router.push({
path: '/testOrigin',
query: {
eduId: this.eduId,
workerId: this.workerId
}
})
},
//
getDetailData() {
var that = this
console.log('获取课程详细数据1515')
getSelectSafeEducationQuestionInfoList({ eduId: this.eduId }).then(
(result) => {
if (result.result) {
that.courseDetail = result.result.safeEducation
}
}
)
}
}
}
</script>
<style scoped>
.fullHeight {
width: 100%;
height: 100%;
font-size: 16px;
}
.videoBox {
width: 100%;
height: 300px;
/* margin: 0rem 0; */
}
.courseTitle {
/* font-size: 7.5rem; */
padding: 10px 16px;
}
.desc {
/* font-size: 6rem; */
opacity: 0.6;
padding: 10px 16px;
}
.submitBtn {
/* margin: -70rem 5rem; */
position: fixed;
bottom: 10px;
left: 5%;
width: 90%;
background: #4181fe;
height: 44px;
border: none;
color: #fff;
/* font-size: 7.5rem; */
border-radius: 10px;
}
.headers {
/* border-bottom: 0.5rem solid #f3f3f3; */
height: 44px;
color: #3d4490;
/* font-size: 7.5rem; */
text-align: center;
line-height: 44px;
/* margin-top: -55%; */
/* background-color: pink; */
}
/* 播放器按钮 */
::v-deep video::-webkit-media-controls-play-button {
/* background-image: url(play-button.png); */
/* display: none; */
/* width: 200rem;
height: 200rem; */
}
</style>

View File

@ -70,18 +70,15 @@
</el-tabs>
<!-- v-loading="loading" -->
<el-table
ref="multipleTable"
key="multipleTableValidate"
ref="multipleTableValidate"
class="tables"
row-key="id"
:data="tableList"
@selection-change="handleSelectionChange"
>
<!-- :reserve-selection="true" -->
<el-table-column
align="center"
type="selection"
width="55"
>
<el-table-column align="center" type="selection" width="55">
</el-table-column>
<el-table-column
show-overflow-tooltip
@ -212,7 +209,7 @@ export default {
multipleSelection: [],
topicName: "topic",
userId: "",
isInitTable: false
isInitTable: false,
};
},
created() {
@ -238,6 +235,17 @@ export default {
// },
// ];
},
beforeDestroy() {
// console.log(client)
if (client) {
client.unsubscribe(this.topicName + this.userId, options)
client.end()
}
client = null
console.log(client)
// client = null
// mqttX.unsubscribe(this.topicName + this.userId);
},
mounted() {
this.userId = this.$store.state.userInfo.userId;
this.topicName = this.$store.state.userInfo.scope;
@ -247,6 +255,7 @@ export default {
methods: {
// mqtt
mqttMSG() {
let that = this;
// mqtt +"/#" +workerId
client.on("connect", (e) => {
// console.log(':', this.topicName + this.userId)
@ -330,37 +339,43 @@ export default {
//
getHikvisionPage() {
this.loading = true;
console.log(1111111111, this.activeName)
getHikvisionPageApi({
projectSn: this.projectSn,
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
type: Number(this.activeName),
}).then((res) => {
if (res.code == 200) {
this.tableList = res.result.records;
this.pagInfo.total = res.result.total;
if (
+res.result.total > this.pageSizeList[this.pageSizeList.length - 1] && this.pageSizeList.length == 4
) {
this.pageSizeList.push(+res.result.total);
} else {
this.pageSizeList.splice(4,1,+res.result.total);
if(this.pagInfo.pageSize> +res.result.total){
this.pagInfo.pageSize = +res.result.total;
})
.then((res) => {
if (res.code == 200) {
this.tableList = res.result.records;
// this.$set(this, 'tableList', res.result.records);
// this.tableList.length = 0;
// this.tableList.push(...res.result.records);
this.pagInfo.total = res.result.total;
if (
+res.result.total >
this.pageSizeList[this.pageSizeList.length - 1] &&
this.pageSizeList.length == 4
) {
this.pageSizeList.push(+res.result.total);
} else {
this.pageSizeList.splice(4, 1, +res.result.total);
if (this.pagInfo.pageSize > +res.result.total) {
this.pagInfo.pageSize = +res.result.total;
}
}
}
}
}).finally(() => {
this.loading = false;
});
})
.finally(() => {
this.loading = false;
});
},
//Tab
handleClick(val) {
// console.log(val.name);
this.activeName = val.name;
this.$refs.multipleTable.clearSelection();
this.$refs.multipleTableValidate.clearSelection();
this.pageSizeList = JSON.parse(
JSON.stringify(this.$store.state.PAGESIZRS)
);
@ -392,6 +407,26 @@ export default {
this.getHikvisionPage();
},
},
computed: {
msgObj() { //
const { tableList, activeName } = this;
return {
tableList,
activeName,
};
},
},
// watch: {
// msgObj: {
// handler(newVal, oldVal) {
// //
// if (newVal.activeName == oldVal.activeName && JSON.stringify(newVal.tableList) != JSON.stringify(oldVal.tableList)) {
// this.getHikvisionPage();
// }
// },
// deep: true,
// },
// },
};
</script>
<style lang="less" scoped>

View File

@ -1920,16 +1920,31 @@
</div>
<el-table :data="safeEducationList" style="width: 100%">
<el-table-column
prop="addTime"
prop="date"
:label="$t('message.laborMange.trainingDate')"
></el-table-column>
<el-table-column
prop="eduCourseName"
prop="subject"
:label="$t('message.laborMange.trainingTopic')"
>
</el-table-column>
<el-table-column
prop="score"
label="考试分数"
></el-table-column>
<el-table-column
prop="isPass"
label="是否及格"
>
<template slot-scope="scope">
{{
scope.row.isPass == 1
? "是"
: "否"
}}
</template>
</el-table-column>
<!-- <el-table-column
prop="eduTime"
:label="$t('message.laborMange.courseHours')"
@ -2391,6 +2406,7 @@
<script>
import {
getTrainRecordsByWorkerIdApi,
getWorkerInfoData,
editWorkerInfo,
addContractApi,
@ -2518,6 +2534,7 @@ export default {
this.getUfaceDevList();
this.getUGroupDevList();
this.getWorkerInfo();
this.getSafeEducationListFn();
this.getSafeScoreDetail();
this.getAttendRuleList();
this.getProjectConfig();
@ -2740,6 +2757,16 @@ export default {
}
);
},
//
getSafeEducationListFn(){
let data = {
workerId: this.userId,
projectSn: this.projectSn
};
getTrainRecordsByWorkerIdApi(data).then((res) => {
this.safeEducationList = res.result; //
})
},
//
getWorkerInfo() {
let data = {
@ -2941,7 +2968,7 @@ export default {
}
});
}
this.safeEducationList = data.safeEducationList; //
// this.safeEducationList = data.safeEducationList; //
this.workExperienceList = data.workExperienceList; //
this.badList = data.badList; // --
this.rewardList = data.rewardList; // --

View File

@ -703,32 +703,32 @@ export default {
},
getWorkerData(data) {
//
var arr = this.cardForm.list;
var arr2 = [];
data.forEach((item2) => {
for(let i = 0;i<data.length;i++){
if (arr.length > 0) {
var onoff = true;
arr.forEach((item) => {
if (item.id == item2.id) {
for(let x = 0;x<arr.length;x++){
if (arr[x].id == data[i].id) {
onoff = false;
break;
}
if (item.workerId == item2.id) {
if (arr[x].workerId == data[i].id) {
onoff = false;
break;
}
});
}
if (onoff) {
item2.isQualified = "";
item2.score = "";
arr2.push(item2);
data[i].isQualified = "";
data[i].score = "";
arr2.push(data[i]);
}
} else {
item2.isQualified = "";
item2.score = "";
arr2.push(item2);
data[i].isQualified = "";
data[i].score = "";
arr2.push(data[i]);
}
});
}
this.cardForm.list = arr.concat(arr2);
// this.cardForm.workernum = this.cardForm.list.length;
},
@ -830,14 +830,13 @@ export default {
return;
}
this.cardForm.workernum = this.cardForm.list.length;
let json = this.cardForm;
let json = {...this.cardForm};
let arr = [];
console.log(json.list);
json.list.forEach((element) => {
let item = {
isQualified: element.isQualified,
score: element.score,
workerId: element.id,
workerId: element.workerId || element.id,
projectSn: this.$store.state.projectSn,
};
if (!this.isAdd) {

View File

@ -110,33 +110,33 @@
</el-form>
</div>
<div class="table_wrap whiteBlock">
<vue-scroll>
<el-table height="650" class="tables" :data="listData" lazy row-key="id" default-expand-all
<vue-scroll style="height: 580px;">
<el-table class="tables" :data="listData" lazy row-key="id" default-expand-all
:tree-props="{ children: 'children' }">
<el-table-column width="200" prop="taskName" label="分部分项工程名称" style="display: flex;align-items: center;">
<template slot-scope="scope">
<span :title="scope.row.taskName"
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;display: inline-block;width: 60%;vertical-align: middle;">
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;display: inline-block;width: 100px;vertical-align: middle;">
{{ scope.row.taskName }}
</span>
</template>
</el-table-column>
<el-table-column align="center" prop="qualityRegionName" label="区域" show-overflow-tooltip>
<el-table-column width="100" align="center" prop="qualityRegionName" label="区域" show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" prop="startDate" label="计划开始时间">
<el-table-column width="120" align="center" prop="startDate" label="计划开始时间">
</el-table-column>
<el-table-column align="center" prop="finishDate" label="计划完成时间">
<el-table-column width="120" align="center" prop="finishDate" label="计划完成时间">
</el-table-column>
<el-table-column align="center" prop="actualStartDate" label="实际开始时间">
<el-table-column width="120" align="center" prop="actualStartDate" label="实际开始时间">
</el-table-column>
<el-table-column align="center" prop="actualFinishDate" label="实际完成时间"></el-table-column>
<el-table-column align="center" prop="dutyUserName" label="负责人"></el-table-column>
<el-table-column align="center" prop="progressRatio" label="进度">
<el-table-column width="120" align="center" prop="actualFinishDate" label="实际完成时间"></el-table-column>
<el-table-column width="80" align="center" prop="dutyUserName" label="负责人"></el-table-column>
<el-table-column width="80" align="center" prop="progressRatio" label="进度">
<template slot-scope="scope">{{
scope.row.progressRatio + "%"
}}</template>
</el-table-column>
<el-table-column prop="status" align="center" label="执行状态">
<el-table-column width="100" prop="status" align="center" label="执行状态">
<template slot-scope="scope">
<span :class="scope.row.status == 0
? 'no-start' : scope.row.status == 1
@ -154,7 +154,7 @@
</span>
</template>
</el-table-column>
<el-table-column prop="beginWarning" align="center" label="开始预警">
<el-table-column width="80" prop="beginWarning" align="center" label="开始预警">
<template slot-scope="scope">
<div style="color: #fe6565;" v-if="scope.row.beginWarning === 3">
{{
@ -176,7 +176,7 @@
</div>
</template>
</el-table-column>
<el-table-column prop="endWarning" align="center" label="结束预警">
<el-table-column width="80" prop="endWarning" align="center" label="结束预警">
<template slot-scope="scope">
<div style="color: #fe6565;" v-if="scope.row.endWarning === 3">
{{
@ -458,6 +458,13 @@ export default {
},
type: "add",
addEditRules: {
qualityRegionId: [
{
required: true,
message: this.$t("message.personnelPosition.required"),
trigger: "blur",
},
],
taskName: [
{
required: true,
@ -571,7 +578,6 @@ export default {
this.downUrl =
this.$http.defaults.baseURL + "xmgl/progressTask/downloadTemplate";
this.getCrewListData();
this.getPositionList();
this.getHierarchyEnterpriseList();
this.getTreeList();
},
@ -599,6 +605,7 @@ export default {
this.workerInfo.qualityRegionId = data.id;
this.$refs.selectFormRef.blur();
}
this.$refs.addEditForm.validateField("qualityRegionId")
},
//
treeAreaClick(data) {
@ -618,6 +625,10 @@ export default {
}).then((result) => {
if (result.success) {
this.treeList = result.result;
if(result.result.length > 0){
this.treeData = result.result[0]
}
this.getPositionList();
}
});
},
@ -626,6 +637,7 @@ export default {
console.log(data);
this.treeData = data;
this.getProgressListData();
this.getPositionList();
},
//
getHierarchyEnterpriseList() {
@ -652,6 +664,7 @@ export default {
getPositionList() {
let data = {
projectSn: this.$store.state.projectSn,
enterpriseId: this.treeData.enterpriseId
};
getQualityRegionListApi(data).then((res) => {
console.log("res=================", res);
@ -826,6 +839,7 @@ export default {
close() {
this.workerInfo = {};
this.workerInfo.parentId = 0;
this.selectFormVal = "";
this.$nextTick(() => {
this.$refs.addEditForm.clearValidate();
});
@ -1005,8 +1019,14 @@ export default {
};
</script>
<style lang="less" scoped>
.tables{
min-height: 0;
max-height: none;
height: auto;
}
.table-content {
flex: 1;
// width: calc(100% - 370px)
}
.down {
@ -1172,8 +1192,8 @@ export default {
.el-select-dropdown__item:hover {
background-color: transparent;
}
// /deep/.cell{
// display: flex;
// align-items: center;
// }
/deep/.el-table__row td:nth-child(1) .cell{
display: flex;
align-items: center;
}
</style>

View File

@ -145,7 +145,7 @@
<el-table-column align="center" label="操作" width="280">
<template slot-scope="scope">
<div class="tableBtns">
<div v-permission="{key: 'jdsp_pass', menuPath: '/project/progressManagementAg/progressApproval'}" @click="pass(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<div v-permission="{key: 'jdsp_edit', menuPath: '/project/progressManagementAg/progressApproval'}" @click="pass(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<img
src="@/assets/images/tableIcon/passIcon.png"
width="15px"
@ -153,7 +153,7 @@
/>
<span style="white-space: nowrap;color: #5678E8;">通过</span>
</div>
<div v-permission="{key: 'jdsp_reject', menuPath: '/project/progressManagementAg/progressApproval'}" @click="openBackDialog(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<div v-permission="{key: 'jdsp_edit', menuPath: '/project/progressManagementAg/progressApproval'}" @click="openBackDialog(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<img
src="@/assets/images/tableIcon/backApply.png"
width="15px"

View File

@ -277,6 +277,7 @@ import { aiAnalyseHardWareRecordList } from "@/assets/js/api/equipmentCenter/ele
export default {
data() {
return {
COMPANY: COMPANY,
title: this.$t("message.quality.NewRootNode"),
dialogType: 1,
projectSn: "",
@ -408,6 +409,11 @@ export default {
//
editBtn(value) {
if (value.parentRegion && value.parentRegion != '0') {
this.form.parentRegion = value.parentRegion;
} else {
this.form.parentRegion = '0';
}
if (value.intendanceIds == "" || value.intendanceIds == null) {
this.form.intendanceIds = null;
} else {

View File

@ -3234,11 +3234,12 @@ export default {
//
getReviewPeopleList(regionId) {
this.addForm1.reviewId = ""; //
let data = {
projectSn: this.projectSn,
// enterpriseTypeId: 7,
// qualityRegionId: regionId[0].toString(),
qualityRegionId: regionId.toString(),
qualityRegionId: regionId[regionId.length - 1].toString(),
// qualityRegionId: regionId.toString(),
qualityRegionBindType: 2,
isSupervisingRoleName: 1,
};

View File

@ -158,13 +158,11 @@ export default {
// return timer;
},
refresh() {
this.queryInfo = {
deviceId: "",
};
this.queryInfo.deviceId = "";
this.time = [];
this.pagInfo.pageNo = 1; //
this.pagInfo.pageSize = 10; //
this.selectNowDate();
// this.selectNowDate();
this.getList();
},
query() {

View File

@ -251,8 +251,9 @@ export default {
refresh() {
this.pageNo = 1;
this.pageSize = 10;
this.devSn = "";
this.valueTime = [];
this.selectNowDate();
// this.selectNowDate();
this.selectDustNoisePageList();
},
quertData() {

View File

@ -3191,11 +3191,12 @@ export default {
//
getReviewPeopleList(regionId) {
this.addForm1.reviewId = ""; //
let data = {
projectSn: this.projectSn,
// enterpriseTypeId: 7,
// qualityRegionId: regionId[0].toString(),
qualityRegionId: regionId.toString(),
qualityRegionId: regionId[regionId.length - 1].toString(),
// qualityRegionId: regionId.toString(),
qualityRegionBindType: 2,
isSupervisingRoleName: 1,
};

View File

@ -665,7 +665,7 @@ export default {
console.log(
'扫码进来了吗====3 :' +
(url +
'#/authentication?eduId=' +
'#/authenticationOrigin?eduId=' +
this.eduId +
'&projectSn=' +
this.$store.state.projectSn)
@ -682,7 +682,7 @@ export default {
text:
url +
'#/authentication?eduId=' +
'#/authenticationOrigin?eduId=' +
this.eduId +
'&projectSn=' +
this.$store.state.projectSn, //