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

This commit is contained in:
”Rain“ 2024-05-24 15:51:46 +08:00
commit 1a27280593
16 changed files with 502 additions and 237 deletions

View File

@ -19,7 +19,7 @@
"type" : "uniCloud" "type" : "uniCloud"
}, },
{ {
"playground" : "standard", "playground" : "custom",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"
}, },
{ {

View File

@ -41,8 +41,8 @@ if (process.env.NODE_ENV === 'development') {
// Vue.prototype.url_config = 'http://182.90.224.237:51234/' //雄哥内网穿透地址 // Vue.prototype.url_config = 'http://182.90.224.237:51234/' //雄哥内网穿透地址
// Vue.prototype.url_config = 'http://jxj.zhgdyun.com:61212/' //杰哥内网穿透地址 // Vue.prototype.url_config = 'http://jxj.zhgdyun.com:61212/' //杰哥内网穿透地址
// Vue.prototype.url_config = ' http://192.168.34.221:28888/' //郭圣雄本地 // Vue.prototype.url_config = ' http://192.168.34.221:28888/' //郭圣雄本地
Vue.prototype.url_config = 'http://192.168.34.221:9111/' //郭圣雄本地 // Vue.prototype.url_config = 'http://192.168.34.221:9111/' //郭圣雄本地
// Vue.prototype.url_config = 'http://192.168.34.155:19111/' //彭洁本地 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://47.93.215.234:19997' // 工作流线上地址(弃用)
// Vue.prototype.work_url = 'http://42.180.188.17: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' // 工作流测试地址

View File

@ -2401,13 +2401,7 @@
{ {
"path": "pages/personLocation/exam/index/index", "path": "pages/personLocation/exam/index/index",
"style": { "style": {
"app-plus": { "navigationBarTitleText": ""
"titleNView": {
"titleColor": "#ffffff",
"autoBackButton": false
}
},
"navigationBarTitleText": "教育培训"
} }
}, },
{ {
@ -2512,9 +2506,17 @@
} }
}, },
{ {
<<<<<<< HEAD
"path": "pages/projectEnd/trainPlan/searchTeam/personList", "path": "pages/projectEnd/trainPlan/searchTeam/personList",
"style": { "style": {
"navigationBarTitleText": "" "navigationBarTitleText": ""
=======
"path" : "pages/projectEnd/trainPlan/searchTeam/personList",
"style" :
{
"navigationBarTitleText" : "",
"onReachBottomDistance": 100
>>>>>>> 8d4c6f69b5f932e4842d3f9ddd13043de9837210
} }
}, },
{ {

View File

@ -72,6 +72,7 @@
let { let {
accountType accountType
} = userInfo; } = userInfo;
if (accountType) {
if (accountType == 5 || accountType == 6 || accountType == 10) { if (accountType == 5 || accountType == 6 || accountType == 10) {
// //
plus.push.addEventListener('click', function(msg) { plus.push.addEventListener('click', function(msg) {
@ -105,6 +106,8 @@
}) })
} }
} }
}
}, },
mounted() { mounted() {
this.systemInfo = uni.getStorageSync('systemInfo') this.systemInfo = uni.getStorageSync('systemInfo')

View File

@ -6,22 +6,37 @@
</view> </view>
</headers> </headers>
<view class="beginexam" v-for="(item,index) in stList" :key="index" v-show="index == stIndex"> <view class="beginexam" v-for="(item,index) in stList" :key="index" v-show="index == stIndex">
<view class=""> <view class="questionTitle">
<text class="text">{{index + 1}}{{item.questionName}}</text> <text class="text">{{index + 1}}{{item.questionName}}({{item.score||0}})</text>
<text class="rest-time">剩余时间{{ timeLeft }}</text>
</view> </view>
<view class="radio-content"> <view class="radio-content">
<radio-group @change="radioChange" class="radio-boxs"> <radio-group @change="radioChange" class="radio-boxs" v-if="item.type == 1">
<label class="radio" v-for="(item2,index2) in item.optionList"> <label class="radio" v-for="(item2,index2) in item.optionList">
<radio :value="item2.optionCode" /><text>{{item2.optionCode}}</text>{{item2.optionDesc}} <radio :value="item2.optionCode" /><text>{{item2.optionCode}}</text>{{item2.optionDesc}}
</label> </label>
</radio-group> </radio-group>
<checkbox-group @change="checkChange" class="check-boxs" v-if="item.type == 2">
<label class="radio" v-for="(item2,index2) in item.optionList">
<checkbox :value="item2.optionCode" /><text>{{item2.optionCode}}</text>{{item2.optionDesc}}
</label>
</checkbox-group>
</view> </view>
</view> </view>
<view class="progress-style"> <view class="progress-style" v-show="stList.length > 0">
<progress :percent="(stIndex + 1) * 100 / stList.length" :stroke-width="11" backgroundColor="#F5F5F5" /> <progress :percent="((stIndex + 1) * 100 / stList.length).toFixed(0)" :stroke-width="11" backgroundColor="#F5F5F5" />
</view> </view>
<button type="primary" class="btn-front" @click="goFront" v-if="stIndex > 0">上一题</button> <view class="step-btn" v-show="stList.length > 0">
<button type="primary" class="btn-front" @click="goFront" v-show="stIndex > 0">上一题</button>
<button type="primary" class="btn-front" @click="goNext" v-show="stIndex < stList.length - 1">下一题</button>
<button type="primary" class="btn" @click="goHiidden">交卷</button> <button type="primary" class="btn" @click="goHiidden">交卷</button>
</view>
<view class="placeholderBox" v-if="stList.length == 0">
<image src="/static/exam/noCourseData.png" class="noDataImg" style="width: 180rpx; height: 160rpx;"></image>
<!-- <view class="text">
暂无数据
</view> -->
</view>
<levitatedsphere :x="100" :y="80"></levitatedsphere> <levitatedsphere :x="100" :y="80"></levitatedsphere>
</view> </view>
</template> </template>
@ -31,6 +46,8 @@
export default { export default {
data() { data() {
return { return {
totalTime: 10, // 60
timer: null, //
percent: 0, percent: 0,
stIndex: 0, stIndex: 0,
stList: [], stList: [],
@ -42,8 +59,82 @@
}, },
onLoad(options) { onLoad(options) {
this.pageData = JSON.parse(options.transportData) this.pageData = JSON.parse(options.transportData)
console.log(this.pageData.examDuration)
this.totalTime = +this.pageData.examDuration * 60;
},
onShow() {
this.startTimer();
},
onHide() {
this.stopTimer();
},
computed: {
timeLeft() {
let hours = Math.floor(this.totalTime / 3600);
let minutes = Math.floor((this.totalTime % 3600) / 60);
let seconds = this.totalTime % 60;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return `${hours}:${minutes}:${seconds}`;
},
}, },
methods: { methods: {
//
autoSubmit() {
var that = this
uni.showModal({
title: '提示',
showCancel: false,
content: '考试时间已到,正在交卷...',
success: function(res) {
if (res.confirm) {
let requestData = {
examAnswerQuestionList: that.stList
}
that.sendRequest({
url: "xmgl/workerExam/submit",
data: that.stList,
method: 'post',
success(res) {
uni.showToast({
title: "提交成功",
icon: "none"
})
let responseData = res.result;
let transportData = {
...that.pageData,
...responseData
}
uni.redirectTo({
url: `/pages/personLocation/exam/examresult/examresult?examData=` +
JSON.stringify(transportData)
});
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
startTimer() {
this.timer = setInterval(() => {
if (this.totalTime > 0) {
this.totalTime -= 1;
} else {
this.stopTimer();
this.autoSubmit();
//
}
}, 1000);
},
stopTimer() {
clearInterval(this.timer);
this.timer = null;
},
getDataFn() { getDataFn() {
var that = this var that = this
let requestData = { let requestData = {
@ -55,13 +146,24 @@
method: 'post', method: 'post',
success(res) { success(res) {
console.log('试题信息', res) console.log('试题信息', res)
if (res.result) { if (res.result && res.result.length > 0) {
that.stList = res.result; that.stList = res.result;
var tab = document.querySelector('.uni-progress-inner-bar'); // var tab = document.querySelector('.uni-progress-inner-bar');
var p = document.createElement('p'); // var p = document.createElement('p');
p.className = "uni-progress-info" // p.className = "uni-progress-info"
p.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%' // p.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%'
tab.appendChild(p); // tab.appendChild(p);
// const query = uni.createSelectorQuery().in(this);
// query.select('.uni-progress-inner-bar').boundingClientRect(data => {
// // data
// console.log(data)
// const element = data[0]
// var p = document.createElement('p');
// p.className = "uni-progress-info"
// p.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(
// 0) + '%'
// element.appendChild(p);
// }).exec();
that.stList.map(item => { that.stList.map(item => {
item.trainRecordId = that.pageData.trainRecordId item.trainRecordId = that.pageData.trainRecordId
}) })
@ -77,19 +179,46 @@
if (that.stIndex == that.stList.length - 1) { if (that.stIndex == that.stList.length - 1) {
return; return;
} }
uni.showLoading() // uni.showLoading()
setTimeout(function() { // setTimeout(function() {
that.stIndex++; // that.stIndex++;
var progressTip = document.querySelector('.uni-progress-info'); // var progressTip = document.querySelector('.uni-progress-info');
progressTip.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%' // progressTip.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%'
uni.hideLoading() // uni.hideLoading()
}, 500) // }, 500)
},
checkChange(evt) {
console.log(evt)
this.stList[this.stIndex].answer = evt.detail.value.join('')
let that = this;
//
if (that.stIndex == that.stList.length - 1) {
return;
}
// uni.showLoading()
// setTimeout(function() {
// that.stIndex++;
// var progressTip = document.querySelector('.uni-progress-info');
// progressTip.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%'
// uni.hideLoading()
// }, 500)
}, },
// //
goFront(index) { goFront(index) {
this.stIndex--; let that = this;
that.stIndex--;
var progressTip = document.querySelector('.uni-progress-info');
progressTip.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%'
}, },
goHiidden(item) { //
goNext(index) {
let that = this;
that.stIndex++;
var progressTip = document.querySelector('.uni-progress-info');
progressTip.innerText = (((that.stIndex + 1) * 100) / that.stList.length).toFixed(0) + '%'
// uni.hideLoading()
},
goHiidden() {
var that = this var that = this
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
@ -109,9 +238,13 @@
icon: "none" icon: "none"
}) })
let responseData = res.result; let responseData = res.result;
let transportData = {
...that.pageData,
...responseData
}
uni.redirectTo({ uni.redirectTo({
url: `/pages/personLocation/exam/examresult/examresult?examData=` + url: `/pages/personLocation/exam/examresult/examresult?examData=` +
JSON.stringify(responseData) JSON.stringify(transportData)
}); });
} }
}) })
@ -131,11 +264,24 @@
.beginexam { .beginexam {
padding: 26.92rpx 32.69rpx; padding: 26.92rpx 32.69rpx;
.questionTitle {
width: 100%;
position: relative;
.text { .text {
width: 61%;
display: inline-block;
font-size: 34.62rpx; font-size: 34.62rpx;
color: #272D45; color: #272D45;
} }
.rest-time {
position: absolute;
top: 7rpx;
right: 20rpx;
}
}
.radio-content { .radio-content {
.radio-boxs { .radio-boxs {
display: flex; display: flex;
@ -145,6 +291,15 @@
.radio-boxs>label { .radio-boxs>label {
padding: 20rpx 0; padding: 20rpx 0;
} }
.check-boxs {
display: flex;
flex-direction: column;
}
.check-boxs>label {
padding: 20rpx 0;
}
} }
} }
@ -152,21 +307,39 @@
padding: 26.92rpx 32.69rpx; padding: 26.92rpx 32.69rpx;
} }
.btn { .step-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: calc(100% - 80.76rpx); width: calc(100% - 80.76rpx);
height: auto;
position: absolute; position: absolute;
bottom: 180.77rpx; bottom: 180.77rpx;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
button {
width: 100%;
margin-bottom: 20rpx;
}
} }
.btn-front { // .btn {
width: calc(100% - 80.76rpx); // width: calc(100% - 80.76rpx);
position: absolute; // position: absolute;
bottom: 290rpx; // bottom: 180.77rpx;
left: 50%; // left: 50%;
transform: translateX(-50%); // transform: translateX(-50%);
} // }
// .btn-front {
// width: calc(100% - 80.76rpx);
// position: absolute;
// bottom: 290rpx;
// left: 50%;
// transform: translateX(-50%);
// }
} }
@ -189,7 +362,6 @@
position: relative; position: relative;
background: linear-gradient(111deg, #5383F6 0%, #7FF0FF 100%); background: linear-gradient(111deg, #5383F6 0%, #7FF0FF 100%);
} }
/deep/ .uni-progress-info { /deep/ .uni-progress-info {
position: absolute; position: absolute;
right: 20rpx; right: 20rpx;

View File

@ -17,13 +17,13 @@
<text>对于成绩不满意可再次考试</text> <text>对于成绩不满意可再次考试</text>
</view> </view>
<button type="primary" class="btn" <button type="primary" class="btn"
@click="goHiidden('/personLocation/exam/beginexam/beginexam')">再考一次</button> @click="examAgain('/personLocation/exam/beginexam/beginexam')">再考一次</button>
<button type="primary" class="btn1" plain="true" <button type="primary" class="btn1" plain="true"
@click="goHiidden('/personLocation/exam/index/index')">返回</button> @click="goHiidden('/personLocation/exam/index/index')">返回</button>
</view> </view>
<view class="examresult" v-else> <view class="examresult" v-else>
<view class="text-success"> <view class="text-success">
<text>80</text> <text>{{pageData.score}}</text>
</view> </view>
<view class="image-tip"> <view class="image-tip">
<image src="/static/exam/examSuccess.png" mode=""></image> <image src="/static/exam/examSuccess.png" mode=""></image>
@ -32,7 +32,7 @@
<text>恭喜您通过考试</text> <text>恭喜您通过考试</text>
</view> </view>
<button type="primary" class="btn" <button type="primary" class="btn"
@click="goHiidden('/personLocation/exam/beginexam/beginexam')">返回</button> @click="goHiidden('/personLocation/exam/index/index')">返回</button>
</view> </view>
<levitatedsphere :x="100" :y="80"></levitatedsphere> <levitatedsphere :x="100" :y="80"></levitatedsphere>
</view> </view>
@ -48,14 +48,20 @@
} }
}, },
created() { created() {
document.querySelector('.uni-page-head-hd').style.display = 'none' // document.querySelector('.uni-page-head-hd').style.display = 'none'
}, },
onLoad(options) { onLoad(options) {
this.pageData = JSON.parse(options.examData) this.pageData = JSON.parse(options.examData)
}, },
methods: { methods: {
examAgain(url){
uni.redirectTo({
url: `/pages${url}?transportData=` + JSON.stringify(this
.pageData)
});
},
goHiidden(url) { goHiidden(url) {
uni.navigateTo({ uni.redirectTo({
url: `/pages${url}` url: `/pages${url}`
}); });
}, },

View File

@ -50,6 +50,8 @@
}, },
onLoad() { onLoad() {
this.userInfo = JSON.parse(uni.getStorageSync("userInfo")) this.userInfo = JSON.parse(uni.getStorageSync("userInfo"))
},
onShow() {
this.getDataList(); this.getDataList();
}, },
methods: { methods: {
@ -80,7 +82,8 @@
courseId: item.courseId, courseId: item.courseId,
examPaperId: item.examPaperId, examPaperId: item.examPaperId,
trainRecordId: item.id, trainRecordId: item.id,
trainId: item.trainId trainId: item.trainId,
examDuration: item.examDuration
} }
uni.navigateTo({ uni.navigateTo({
url: `/pages/personLocation/exam/studydetails/studydetails?transportData=` + JSON.stringify(transportData) url: `/pages/personLocation/exam/studydetails/studydetails?transportData=` + JSON.stringify(transportData)
@ -92,6 +95,9 @@
<style scoped lang="scss"> <style scoped lang="scss">
.main-content { .main-content {
display: flex;
flex-direction: column;
.top-diy { .top-diy {
height: 100%; height: 100%;
display: flex; display: flex;
@ -107,8 +113,10 @@
} }
.index-boxs { .index-boxs {
padding: 58rpx 35rpx; height: calc(100vh - 220rpx);
overflow-y: scroll;
padding: 0rpx 35rpx;
padding-top: 58rpx;
.index-box { .index-box {
width: 100%; width: 100%;
background-color: white; background-color: white;

View File

@ -11,7 +11,7 @@
</view> </view>
<view class="rules"> <view class="rules">
<view class="rules-box" v-for="(item,index) in listData" :key="index"> <view class="rules-box" v-for="(item,index) in listData" :key="index">
<image :src="item.logoUrl" v-if="item.logoUrl"></image> <image :src="item.logoUrl" v-if="fileTypeCondition(item.logoUrl)"></image>
<image src="../../../../static/images.png" v-else></image> <image src="../../../../static/images.png" v-else></image>
<view> <view>
<view class="rules-text1"> <view class="rules-text1">
@ -68,10 +68,21 @@
uni.hideLoading() // uni.hideLoading() //
}, },
methods: { methods: {
fileTypeCondition(file) {
//
const extension = file.substring(file.lastIndexOf('.') + 1).toLowerCase();
//
const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'];
//
return imageExtensions.includes(extension);
},
getRulesDataFn() { getRulesDataFn() {
var that = this var that = this
let requestData = { let requestData = {
projectSn: this.userInfo.projectSn projectSn: this.userInfo.projectSn,
isEnable: 1
} }
this.sendRequest({ this.sendRequest({
url: "exam/regulation/list", url: "exam/regulation/list",
@ -90,7 +101,8 @@
getSafeDataFn() { getSafeDataFn() {
var that = this var that = this
let requestData = { let requestData = {
projectSn: this.userInfo.projectSn projectSn: this.userInfo.projectSn,
isEnable: 1
} }
this.sendRequest({ this.sendRequest({
url: "exam/safetyManual/list", url: "exam/safetyManual/list",
@ -161,7 +173,11 @@
} }
</script> </script>
<style> <style scoped lang="scss">
.main-content{
display: flex;
flex-direction: column;
}
.rules-box3 { .rules-box3 {
color: #A2A4AF; color: #A2A4AF;
font-size: 26.92rpx; font-size: 26.92rpx;
@ -186,6 +202,8 @@
.rules { .rules {
box-shadow: 4rpx 4rpx 8rpx 2rpx rgba(81, 129, 246, 0.12); box-shadow: 4rpx 4rpx 8rpx 2rpx rgba(81, 129, 246, 0.12);
margin-top: 44rpx; margin-top: 44rpx;
height: calc(100vh - 300rpx);
overflow-y: scroll;
} }
.rules-box { .rules-box {

View File

@ -5,13 +5,20 @@
学习详情 学习详情
</view> </view>
</headers> </headers>
<view class="video" v-if="videoList.length"> <view class="video" v-show="videoList.length">
<swiper circular :indicator-dots="true" indicator-color="rgba(99, 99, 99, 1)" style="height: 390rpx;"> <video v-for="(item,index) in videoList" :key="index" id="myVideo" class="disable-progress" style="width: 100%;height: 390rpx;"
<swiper-item v-for="(item,index) in videoList" :key="index"> :muted="true" :show-mute-btn="true" :src="item.url" :enable-progress-gesture="false"
<video id="myVideo" show-mute-btn :src="item.url" :is-live="true" :controls="item.controlsBool" :enable-progress-gesture="false" :controls="item.controlsBool" @play="videoStart(index)" @ended="videoEnd(index)">
@play="videoStart(index)" @ended="videoEnd(index)"></video> </video>
<!-- <swiper circular :indicator-dots="false" indicator-color="rgba(99, 99, 99, 1)"
style="width: 100%;height: 390rpx;">
<swiper-item v-for="(item,index) in videoList" :key="index" style="width: 100%;height: 390rpx;">
<video id="myVideo" class="disable-progress" style="width: 100%;height: 390rpx;"
:muted="true" :show-mute-btn="true" :src="item.url" :enable-progress-gesture="false"
:controls="item.controlsBool" @play="videoStart(index)" @ended="videoEnd(index)">
</video>
</swiper-item> </swiper-item>
</swiper> </swiper> -->
</view> </view>
<view class="studybox" v-if="videoList.length"> <view class="studybox" v-if="videoList.length">
<view class="studybox-line"></view> <view class="studybox-line"></view>
@ -20,7 +27,8 @@
<text>{{responseData.courseName}}</text> <text>{{responseData.courseName}}</text>
</view> </view>
</view> </view>
<button type="primary" :disabled="isStartExam" class="btn" @click="goHiidden" v-if="pageData.examPaperId">开始考试</button> <button type="primary" :disabled="isStartExam" class="btn" @click="goHiidden"
v-if="pageData.examPaperId">开始考试</button>
<levitatedsphere :x="100" :y="80"></levitatedsphere> <levitatedsphere :x="100" :y="80"></levitatedsphere>
</view> </view>
</template> </template>
@ -30,6 +38,7 @@
export default { export default {
data() { data() {
return { return {
videoUrl: "",
videoList: [], videoList: [],
pageData: {}, pageData: {},
videoStartTime: "", videoStartTime: "",
@ -40,7 +49,7 @@
}, },
onReady: function(res) { onReady: function(res) {
// #ifndef MP-ALIPAY // #ifndef MP-ALIPAY
this.videoContext = uni.createVideoContext('myVideo') // this.videoContext = uni.createVideoContext('myVideo')
// #endif // #endif
}, },
onLoad(options) { onLoad(options) {
@ -58,16 +67,16 @@
// //
that.videoList[index].isVideoOver = true; that.videoList[index].isVideoOver = true;
that.videoList[index].controlsBool = true; that.videoList[index].controlsBool = true;
let startExamBool = false; let startExamBool = true;
that.videoList.map(item => { that.videoList.map(item => {
if (!item.isVideoOver) { if (!item.isVideoOver) {
startExamBool = false; startExamBool = false;
} }
}) })
if(startExamBool){ if (!startExamBool) {
that.isStartExam = false;
} else {
that.isStartExam = true; that.isStartExam = true;
} else {
that.isStartExam = false;
} }
let requestData = { let requestData = {
workerId: this.userInfo.id, workerId: this.userInfo.id,
@ -102,6 +111,7 @@
}) })
if (that.videoList.length) { if (that.videoList.length) {
that.isStartExam = true; that.isStartExam = true;
that.videoUrl = that.videoList[0].url
} }
console.log(that.src) console.log(that.src)
} }
@ -138,15 +148,23 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.main-content { .main-content {
.video { .video {
width: 100%; width: 100%;
:deep() {
.uni-video-ball {
display: none !important;
}
}
} }
#myVideo { // #myVideo {
width: 100%; // width: 100%;
height: 386.25rpx; // height: 386.25rpx;
} // position: relative;
// }
.studybox { .studybox {
height: 170rpx; height: 170rpx;

View File

@ -150,10 +150,10 @@
url = "exam/courseRecord/list" url = "exam/courseRecord/list"
} else if(this.activeIndex == 3){ } else if(this.activeIndex == 3){
requestData.examNum = 1 requestData.examNum = 1
url = "exam/trainRecord/list" url = "exam/trainRecord/examRecordList"
} else if(this.activeIndex == 4){ } else if(this.activeIndex == 4){
requestData.examNum = 0 requestData.examNum = 0
url = "exam/trainRecord/list" url = "exam/trainRecord/examRecordList"
} }
this.sendRequest({ this.sendRequest({
url: url, url: url,

View File

@ -87,9 +87,12 @@
<style scoped lang="scss"> <style scoped lang="scss">
.main-content { .main-content {
display: flex;
flex-direction: column;
.list-box { .list-box {
padding: 60rpx 18rpx 0rpx 18rpx; height: calc(100vh - 220rpx);
overflow-y: scroll;
padding: 40rpx 18rpx 20rpx 18rpx;
&-item { &-item {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.1) 0%, rgba(198, 220, 255, 0.2) 100%); background: linear-gradient(180deg, rgba(255, 255, 255, 0.1) 0%, rgba(198, 220, 255, 0.2) 100%);
box-shadow: 0px 8rpx 30rpx -8rpx rgba(42, 60, 106, 0.24); box-shadow: 0px 8rpx 30rpx -8rpx rgba(42, 60, 106, 0.24);
@ -109,6 +112,7 @@
} }
text:nth-child(1){ text:nth-child(1){
margin-right: 10rpx; margin-right: 10rpx;
white-space: nowrap;
} }
} }
@ -121,7 +125,7 @@
.btn-operate{ .btn-operate{
width: 90%; width: 90%;
position: fixed; position: fixed;
bottom: 5%; bottom: 2%;
left: 5%; left: 5%;
z-index: 10; z-index: 10;
} }

View File

@ -5,7 +5,7 @@
人员列表 人员列表
</view> </view>
</headers> </headers>
<scroll-view scroll-y="true" class="pageContent"> <!-- <scroll-view scroll-y="true" class="pageContent"> -->
<view class="personContent"> <view class="personContent">
<checkbox-group @change="checkboxChange"> <checkbox-group @change="checkboxChange">
<view class="personItem" v-for="(item,index) in personList" :key="index" @click="searchPerson(item.id)"> <view class="personItem" v-for="(item,index) in personList" :key="index" @click="searchPerson(item.id)">
@ -33,7 +33,7 @@
</view> </view>
</view> </view>
</view> </view>
</scroll-view> <!-- </scroll-view> -->
<view class="addSaveBtn" @click="addSaveBtn">新增保存</view> <view class="addSaveBtn" @click="addSaveBtn">新增保存</view>
</view> </view>
</template> </template>
@ -50,16 +50,27 @@
projectDetail: {}, projectDetail: {},
workerName: '', workerName: '',
teamId: 0, teamId: 0,
enterpriseId: "", pageNo: 1,
pageSize: 100,
objData: "",
selectCheckVal: [] selectCheckVal: []
}; };
}, },
onLoad(options) { onLoad(options) {
// this.teamId = options.id // this.teamId = options.id
this.enterpriseId = options.enterpriseId this.objData = JSON.parse(options.obj)
console.log(this.objData, 777888)
this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail')) this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail'))
this.loadData() this.loadData()
}, },
onReachBottom() {
console.log("============================")
this.pageNo++;
uni.showLoading({
title: '加载中'
})
this.loadData()
},
methods: { methods: {
addSaveBtn() { addSaveBtn() {
let dealData = []; let dealData = [];
@ -77,6 +88,10 @@
}) })
} }
}) })
if (uni.getStorageSync("personInfo")) {
let alreadyStoreData = JSON.parse(uni.getStorageSync("personInfo"))
dealData = dealData.concat(alreadyStoreData)
}
uni.setStorageSync("personInfo", JSON.stringify(dealData)) uni.setStorageSync("personInfo", JSON.stringify(dealData))
uni.navigateBack({ uni.navigateBack({
delta: 2 delta: 2
@ -88,18 +103,30 @@
}, },
loadData() { loadData() {
var that = this var that = this
let requestData = {
projectSn: this.projectDetail.projectSn,
pageNo: this.pageNo,
pageSize: this.pageSize,
inserviceType: 1
}
if (this.objData.type == 1) {
requestData.teamId = this.objData.id
}
if (this.objData.type == 2) {
requestData.departmentId = this.objData.id
}
this.sendRequest({ this.sendRequest({
url: 'xmgl/workerInfo/selectWorkerInfoList', url: 'xmgl/workerInfo/selectWorkerInfoList',
data: { data: requestData,
// teamId: this.teamId,
enterpriseId: this.enterpriseId,
projectSn: this.projectDetail.projectSn,
pageNo: 1,
pageSize: 100
},
method: "POST", method: "POST",
success(res) { success(res) {
that.personList = res.result.records if (that.pageNo == 1) {
that.personList = []
}
// console.log('--------')
// this.personList = res.result.records
that.personList = [...that.personList, ...res.result.records]
uni.hideLoading() //
that.personList.map((item, index) => { that.personList.map((item, index) => {
item.checkVal = index + ""; item.checkVal = index + "";
}) })
@ -152,6 +179,7 @@
height: 60px; height: 60px;
margin-right: 10px; margin-right: 10px;
} }
.addSaveBtn { .addSaveBtn {
width: 60%; width: 60%;
padding: 10px 0; padding: 10px 0;

View File

@ -6,16 +6,16 @@
</view> </view>
</headers> </headers>
<view class="searchBox" :style="{ 'padding-top': (statusBarHeight+52) + 'px' }"> <view class="searchBox" :style="{ 'padding-top': (statusBarHeight+52) + 'px' }">
<input type="text" v-model="teamName" confirm-type="search" class="input" placeholder-style="color:rgba(72, 141, 236, 0.5)" placeholder="按班组名称查找" @confirm="list=[];loadData()" /> <input type="text" v-model="departmentTeamName" confirm-type="search" class="input" placeholder-style="color:rgba(72, 141, 236, 0.5)" placeholder="按班组/部门名称查找" @confirm="list=[];loadData()" />
</view> </view>
<view class="listBox" :style="{ 'padding-top': (statusBarHeight+52+40) + 'px' }"> <view class="listBox" :style="{ 'padding-top': (statusBarHeight+52+40) + 'px' }">
<view class="listItem" v-for="item in list" :key="item.id" @click="goAdd(item.enterpriseId)"> <view class="listItem" v-for="item in list" :key="item.id" @click="goAdd(item)">
<view class="title"> <view class="title">
{{item.teamName}}-{{item.enterpriseName}} {{item.name}}-{{item.enterpriseName}}
</view> </view>
<view class="bottom"> <view class="bottom">
<image src="/static/icon-person.png" class="icon-person"></image> <image src="/static/icon-person.png" class="icon-person"></image>
<text class="time">{{item.totalPersonNum}}</text> <text class="time">{{item.personNum}}</text>
</view> </view>
<image src="/static/icon-right.png" class="icon-right"></image> <image src="/static/icon-right.png" class="icon-right"></image>
</view> </view>
@ -36,7 +36,7 @@
projectDetail:{}, projectDetail:{},
list:[], list:[],
statusBarHeight:0, statusBarHeight:0,
teamName:'' departmentTeamName:''
}; };
}, },
mounted() { mounted() {
@ -49,17 +49,17 @@
loadData(){ loadData(){
var that = this var that = this
this.sendRequest({ this.sendRequest({
url: 'xmgl/workerInfo/selectAllProjectTeamList', url: 'xmgl/departmentInfo/getDepartmentAndTeamList',
data: {teamName:this.teamName,projectSn:this.projectDetail.projectSn}, data: {departmentTeamName:this.departmentTeamName,projectSn:this.projectDetail.projectSn},
method: "POST", method: "GET",
success(res){ success(res){
that.list=res.result that.list=res.result
} }
}) })
}, },
goAdd(enterpriseId){ goAdd(obj){
uni.navigateTo({ uni.navigateTo({
url:'./personList?enterpriseId='+ enterpriseId url:'./personList?obj='+ JSON.stringify(obj)
}) })
} }
} }

View File

@ -6,7 +6,7 @@
</view> </view>
</headers> </headers>
<view class="index-boxs" v-if="personList.length"> <view class="index-boxs" v-if="personList.length">
<view class="index-box" @click="goDetail" v-for="(item,index) in personList" :key="index"> <view class="index-box" v-for="(item,index) in personList" :key="index">
<image :src="url_config+'image/'+item.fieldAcquisitionUrl"></image> <image :src="url_config+'image/'+item.fieldAcquisitionUrl"></image>
<view class="person-info"> <view class="person-info">
<text>{{item.workerName}}</text> <text>{{item.workerName}}</text>
@ -53,6 +53,13 @@
}, },
methods: { methods: {
addForm(){ addForm(){
if(!this.personList.length){
uni.showToast({
title: '请选择人员',
icon: 'none'
})
return
}
let requestData = { let requestData = {
...this.pageData, ...this.pageData,
examTrainRecordList: this.personList, examTrainRecordList: this.personList,
@ -102,21 +109,20 @@
uni.redirectTo({ uni.redirectTo({
url: `/pages/personLocation/index/index` url: `/pages/personLocation/index/index`
}); });
}, }
goDetail(item) {
uni.navigateTo({
url: `/pages/personLocation/exam/studydetails/studydetails?courseId=` + item.courseId
});
},
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.main-content { .main-content {
display: flex;
flex-direction: column;
.index-boxs { .index-boxs {
height: calc(100vh - 200rpx);
overflow-y: scroll;
padding: 58rpx 35rpx; padding: 58rpx 35rpx;
padding-bottom: 10rpx;
.index-box { .index-box {
width: 100%; width: 100%;
background-color: white; background-color: white;
@ -160,7 +166,7 @@
.editBtn { .editBtn {
position: fixed; position: fixed;
bottom: 40rpx; bottom: 20rpx;
left: 0px; left: 0px;
width: 100%; width: 100%;
display: flex; display: flex;

View File

@ -26,9 +26,9 @@
<view class="zoom zoomout" @click="controlVideoFn(0,0,-0.2,'ZOOM_OUT')"></view> <view class="zoom zoomout" @click="controlVideoFn(0,0,-0.2,'ZOOM_OUT')"></view>
</view> </view>
</view> </view>
<!-- <view class="video-playback" @click="toBackList"> <view class="video-playback" @click="toBackList">
视频回放 视频回放
</view> --> </view>
</view> </view>
</template> </template>
@ -200,7 +200,7 @@
.fullHeight{ .fullHeight{
background-color: #F4F5FD; background-color: #F4F5FD;
height: auto; height: auto;
// padding-bottom: 60rpx; padding-bottom: 60rpx;
} }
/* #endif */ /* #endif */
.videoBox{ .videoBox{