开始签到时间 不做跟着培训时间默认赋值提前5分钟 、非必填

是否触发培训通知  => 是否触发培训通知反馈
培训签到 审阅 按钮显示逻辑修改 (非签到中 处理签到  枚举值变更)
This commit is contained in:
wyw 2026-07-15 09:46:15 +08:00
parent a99d012bf4
commit dffa1cb381
2 changed files with 85 additions and 47 deletions

View File

@ -42,22 +42,22 @@
inputAlign="right" customStyle="margin:0px;display:flex;padding:3px 0px">
</u--input>
</u-form-item>
<u-form-item label="签到开始时间" required prop="DT_START_SIGN" borderBottom
<u-form-item label="签到开始时间" prop="DT_START_SIGN" borderBottom
@click="showCheckDate({name: 'DT_START_SIGN'})">
<u--input disabledColor="#fff" v-model="model.DT_START_SIGN" disabled placeholder="请选择签到开始时间"
suffixIcon="arrow-down" suffixIconStyle="font-size:12px" fontSize="14px" border="none"
inputAlign="right" customStyle="margin:0px;display:flex;padding:3px 0px">
</u--input>
</u-form-item>
<!-- <u-form-item label="是否触发培训通知" required prop="ISSENDNOTICE" borderBottom >
<!-- <u-form-item label="是否触发培训通知反馈" required prop="ISSENDNOTICE" borderBottom >
<u--input disabledColor="#fff" v-model="model.ISSENDNOTICE" disabled placeholder="请选择是否触发培训通知" suffixIcon="arrow-down" suffixIconStyle="font-size:12px" fontSize="14px" border="none"
inputAlign="right" customStyle="margin:0px;display:flex;padding:3px 0px">
</u--input>
</u-form-item> -->
<!-- <u-form-item v-if="isAdd==1" label="是否触发培训通知" prop="ISSENDNOTICE" borderBottom>
<u-form-item v-if="isAdd==1" label="是否触发培训通知反馈" prop="ISSENDNOTICE" borderBottom>
<u-switch v-model="model.ISSENDNOTICE" @change="changeSwitch($event,'ISSENDNOTICE')"
border="none" slot="right" inputAlign="right"></u-switch>
</u-form-item> -->
</u-form-item>
<u-form-item required label="培训地点" prop="TRAIN_ADDR" borderBottom>
<u--input v-model="model.TRAIN_ADDR" border="none" slot="right" inputAlign="right"
fontSize="14px" placeholder="请填写培训地点"></u--input>
@ -398,7 +398,7 @@
} = this.dateTimePickerInfo
if (name === 'TRAIN_START_TIME') {
this.model.TRAIN_START_TIME = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
this.model.DT_START_SIGN =uni.$u.timeFormat(new Date(e.value - 5 * 60 * 1000), 'yyyy-mm-dd hh:MM');
// this.model.DT_START_SIGN =uni.$u.timeFormat(new Date(e.value - 5 * 60 * 1000), 'yyyy-mm-dd hh:MM');
} else if (name === 'TRAIN_END_TIME') {
this.model.TRAIN_END_TIME = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
} else if (name === 'DT_START_SIGN') {
@ -410,8 +410,8 @@
this.model.HOURS = ((new Date(this.model.TRAIN_END_TIME).getTime() - new Date(this.model
.TRAIN_START_TIME).getTime()) / 1000 / 60 / 45.0).toFixed(1)
}
this.dateTimePickerInfo.showCheckDate = false
},
//end

View File

@ -3,39 +3,52 @@
<view class="card">
<view class="background"></view>
<view>
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="model" class="demo-ruleForm">
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="model"
class="demo-ruleForm">
<u-form-item label="培训名称:" prop="NAME" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.NAME" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.NAME" border="none" slot="right"
inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训编号:" prop="CODE" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.CODE" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.CODE" border="none" slot="right"
inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训类型:" prop="Nav_LaunchUser.NAME" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.Nav_TrainType.NAME" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.Nav_TrainType.NAME" border="none"
slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训级别:" prop="LEVEL" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.LEVEL_SHOW" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.LEVEL_SHOW" border="none"
slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="组织部门:" prop="Nav_Notify.Nav_LaunchDepartment.NAME" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.Nav_LaunchDepartment.NAME" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.Nav_LaunchDepartment.NAME"
border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff"
fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训时间:" prop="TRAIN_TIME" borderBottom>
<u--input v-model="model.TRAIN_TIME" border="none" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-model="model.TRAIN_TIME" border="none" inputAlign="right" disabled
disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训地点:" prop="Nav_Notify.TRAIN_ADDR" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAIN_ADDR" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAIN_ADDR" border="none"
slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训学时:" prop="Nav_Notify.HOURS" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.HOURS" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.HOURS" border="none" slot="right"
inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训老师:" prop="Nav_Notify.TRAIN_TEACHER" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAIN_TEACHER" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAIN_TEACHER" border="none"
slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训形式:" prop="" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAINTYPE_SHOW" border="none" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.TRAINTYPE_SHOW" border="none"
inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="考核方式:" prop="Nav_TrainCheckType.NAME" borderBottom>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.CHECKTYPE_SHOW" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-if="model.Nav_Notify" v-model="model.Nav_Notify.CHECKTYPE_SHOW" border="none"
slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="培训课件:" prop="trainCour" borderBottom>
<u-textarea autoHeight v-html="model.trainCour" border="none" disabled></u-textarea>
@ -52,26 +65,33 @@
</u-form-item>
<u-form-item label="培训人员:" prop="Users">
</u-form-item>
<rich-text autoHeight v-html="model.Users" border="none" disabled style="font-size: 14px;"></rich-text>
<!-- <view style="margin-top: 10px;">
<rich-text autoHeight v-html="model.Users" border="none" disabled
style="font-size: 14px;"></rich-text>
<!-- <view style="margin-top: 10px;">
<u-button type="primary" class="bottom" v-if='isLoadOK&&tableKey!=1&&model.Nav_Notify.CHECKTYPE == 51' @click="openTest(model.ID)">查看试卷</u-button>
</view> -->
<view class="upload-title">附件</view>
<full-upload v-model="model.Nav_Files" :listProp='listPropUpload' :listPropVal='listPropValUpload' :isShowBtn="false"></full-upload>
<full-upload v-model="model.Nav_Files" :listProp='listPropUpload' :listPropVal='listPropValUpload'
:isShowBtn="false"></full-upload>
<u-form-item label="审阅意见:" prop="TRAIN_PLAN" borderBottom>
<u--input v-model="model.STATUS>2?'已阅':''" border="none" slot="right" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-model="model.STATUS>2?'已阅':''" border="none" slot="right" inputAlign="right"
disabled disabledColor="#ffffff" fontSize="14px"></u--input>
</u-form-item>
<u-form-item label="合格率:" prop="Nav_TrainCheckType.NAME" borderBottom>
<u--input v-model="passRate" border="none" inputAlign="right" disabled disabledColor="#ffffff" fontSize="14px"></u--input>
<u--input v-model="passRate" border="none" inputAlign="right" disabled disabledColor="#ffffff"
fontSize="14px"></u--input>
</u-form-item>
</u--form>
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="model" class="demo-ruleForm" v-if="model.Nav_Users">
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="model" class="demo-ruleForm"
v-if="model.Nav_Users">
<view style="position: relative;">
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
</view>
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;margin-top: 20px;">培训签到表</view>
<view
style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;margin-top: 20px;">
培训签到表</view>
<uni-collapse :border="false" accordion>
<view v-for="(item, index) in model.Nav_Users.filter(it=>it.OK)" :key="index">
<uni-collapse-item title-border="none" :border="false">
@ -85,37 +105,48 @@
<view class="content" style="padding: 0px 0px 0px 10px;">
<u-form-item label="部门" prop="HIDDEN_PLACE" border-bottom>
<u--input v-model="item.DEPARTMENT_NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u--input v-model="item.DEPARTMENT_NAME" disabled disabledColor="#ffffff"
inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="工号" prop="HIDDEN_PLACE" border-bottom>
<u--input v-model="(item.Nav_User||{}).CODE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u--input v-model="(item.Nav_User||{}).CODE" disabled disabledColor="#ffffff"
inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="岗位" prop="HIDDEN_PLACE" border-bottom>
<u--input v-model="item.POST_NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u--input v-model="item.POST_NAME" disabled disabledColor="#ffffff"
inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="分数" prop="HIDDEN_PLACE" border-bottom v-if='model.Nav_Notify.CHECKTYPE == 51||model.Nav_Notify.CHECKTYPE == 56||model.Nav_Notify.CHECKTYPE == 81'>
<u--input v-model="item.SCORE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
<u-form-item label="分数" prop="HIDDEN_PLACE" border-bottom
v-if='model.Nav_Notify.CHECKTYPE == 51||model.Nav_Notify.CHECKTYPE == 56||model.Nav_Notify.CHECKTYPE == 81'>
<u--input v-model="item.SCORE" disabled disabledColor="#ffffff"
inputAlign="right" fontSize="14px" border="none">
</u--input>
</u-form-item>
<u-form-item label="查看试卷" prop="HIDDEN_PLACE">
</u-form-item>
<view v-if="!signable">
<view v-if="isLoadOK&&model.Nav_Notify.CHECKTYPE&&isCHECKTYPE">
<u-button type="primary" class="bottom" v-if='model.Nav_Notify.CHECKTYPE == 51' @click="openTest(model.ID,item.USER_ID)">查看试卷</u-button>
<full-upload v-model="item.Nav_Files" :listProp='listPropUpload' :listPropVal='listPropValUpload' :isShowBtn="false" v-else></full-upload>
<u-button type="primary" class="bottom"
v-if='model.Nav_Notify.CHECKTYPE == 51'
@click="openTest(model.ID,item.USER_ID)">查看试卷</u-button>
<full-upload v-model="item.Nav_Files" :listProp='listPropUpload'
:listPropVal='listPropValUpload' :isShowBtn="false"
v-else></full-upload>
</view>
<view v-else>
<u-button type="primary" class="bottom" @click="openTest(model.ID,item.USER_ID)">查看试卷</u-button>
<u-button type="primary" class="bottom"
@click="openTest(model.ID,item.USER_ID)">查看试卷</u-button>
</view>
</view>
<u-form-item label="电子签名" prop="CHECKSTANDARD">
</u-form-item>
<view v-if="model.Nav_User&&model.Nav_User.FILE_PATH">
<image style="width: 150px;height: 60px;" :src="imgurl+model.Nav_User.FILE_PATH">
<image style="width: 150px;height: 60px;"
:src="imgurl+model.Nav_User.FILE_PATH">
</image>
</view>
@ -128,10 +159,13 @@
</u--form>
</view>
<view class="bottom-button" v-if='isLoadOK&&tableKey==1&&model.STATUS==1'>
<u-button type="primary" class="bottom" color="#3d4b70" @click="onTableBtnAgree" :disabled="isAgree">签到</u-button>
<view class="bottom-button"
v-if='isLoadOK&&tableKey==1&&(model.STATUS==1||(model&&model.Nav_Users&&model.Nav_Users.find(e=>e.USER_ID==this.userId&&e.IS_RESEND==true)!=null ))'>
<u-button type="primary" class="bottom" color="#3d4b70" @click="onTableBtnAgree"
:disabled="isAgree">签到</u-button>
</view>
<view class="bottom-button" v-if='isLoadOK&&tableKey==1&&model.STATUS==2'>
<view class="bottom-button"
v-if='isLoadOK&&tableKey==1&&model.STATUS==40&&model.USER_ID_APPROVE==this.userId'>
<u-button type="primary" class="bottom" color="#3d4b70" @click="onTableBtnAudit">审阅</u-button>
</view>
</view>
@ -172,7 +206,7 @@
signable: false,
userId: uni.getStorageSync('appInfo').User.ID,
passRate: '100%',
isCHECKTYPE:true
isCHECKTYPE: true
}
},
onLoad(option) {
@ -269,22 +303,26 @@
// this.model.LEVEL = this.transLevel(this.model.Nav_Notify.LEVEL);
this.model.TRAIN_TIME = this.model.Nav_Notify.TRAIN_START_TIME?.substring(0, 16) + "~" + this
.model.Nav_Notify
.TRAIN_END_TIME?.substring(0, 16);
.TRAIN_END_TIME?.substring(8, 16);
this.model.TRAINCONTENT = trainContent;
this.model.trainCour = trainCour;
this.model.MissUsers = MissUsers;
this.model.LeaveUsers = LeaveUsers;
this.model.Users = Users;
let passRateThis = 0
let userAll = res.Nav_Users.filter(e => e.STATUS == 0 && e.ENABLE_STATUS == 0 && e.EXAMINATION_RESULTS != null)
let userPass = res.Nav_Users.filter(e => e.STATUS == 0 && e.ENABLE_STATUS == 0 && e.EXAMINATION_RESULTS != null && e.EXAMINATION_RESULTS == 1)
let userAll = res.Nav_Users.filter(e => e.STATUS == 0 && e.ENABLE_STATUS == 0 && e
.EXAMINATION_RESULTS != null)
let userPass = res.Nav_Users.filter(e => e.STATUS == 0 && e.ENABLE_STATUS == 0 && e
.EXAMINATION_RESULTS != null && e.EXAMINATION_RESULTS == 1)
if (userAll && userAll.length > 0 && userPass && userPass.length > 0) {
passRateThis = (userPass.length / userAll.length).toFixed(4) * 100;
}
this.passRate = passRateThis+'%'
this.isCHECKTYPE = this.model.Nav_Notify.CHECKTYPE == 51||this.model.Nav_Notify.CHECKTYPE == 56||this.model.Nav_Notify.CHECKTYPE == 81
this.passRate = passRateThis + '%'
this.isCHECKTYPE = this.model.Nav_Notify.CHECKTYPE == 51 || this.model.Nav_Notify.CHECKTYPE ==
56 || this.model.Nav_Notify.CHECKTYPE == 81
this.signable = res.STATUS == 1 && res.Nav_Users && res.Nav_Users.find(it => it.USER_ID === this.userId) && (this.tableKey == "1")
this.signable = res.STATUS == 1 && res.Nav_Users && res.Nav_Users.find(it => it.USER_ID ===
this.userId) && (this.tableKey == "1")
this.isLoadOK = true;
})
},
@ -321,9 +359,9 @@
return '公司 ';
}
},
openTest(id,userid) {
openTest(id, userid) {
uni.navigateTo({
url: '/pages/apply/subPages/SE/7answerPageEdit?ID=' + id+'&userID='+userid
url: '/pages/apply/subPages/SE/7answerPageEdit?ID=' + id + '&userID=' + userid
})
},
onTableBtnAgree() {