597 lines
14 KiB
Vue
597 lines
14 KiB
Vue
<template>
|
|
<!-- 新增问题 -->
|
|
<view class="addIssue">
|
|
<headers :showBack="true" :themeType="true">
|
|
<view class="headerName">
|
|
培训计划新增
|
|
</view>
|
|
</headers>
|
|
<view class="content">
|
|
<view class="type flex" v-if="typeCheck == 'type1'">
|
|
<view class="name"><text class="star">*</text>培训计划名称:</view>
|
|
<textarea class="textarea" maxlength="-1" placeholder-class="cl" name="inspectContent"
|
|
@input='trainPlanNameTextarea' :value="form.name" placeholder="请输入"></textarea>
|
|
</view>
|
|
<view class="type flex" v-if="typeCheck == 'type1'">
|
|
<view class="name"><text class="star">*</text>科目类型:</view>
|
|
<picker @change="(e)=>bindPickerChange(e,1)" :value="kmTypeIndex" class="picker" :range="kmTypeList"
|
|
range-key="name">
|
|
<view class="uni-input uni-select cl" v-if="form.subjectId==''">
|
|
请选择 <image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
<view class="uni-input uni-select" v-else>
|
|
{{kmTypeList[kmTypeIndex].name}}
|
|
<image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
<view class="type flex" v-if="typeCheck == 'type1'">
|
|
<view class="name"><text class="star">*</text>教育主题:</view>
|
|
<textarea class="textarea" maxlength="-1" placeholder-class="cl" name="inspectContent"
|
|
@input='supplementTextarea' :value="form.title" placeholder="请输入"></textarea>
|
|
</view>
|
|
<view class="type flex" v-if="typeCheck == 'type1'">
|
|
<view class="name">培训课件:</view>
|
|
<picker @change="(e)=>bindPickerChange(e,2)" :value="trainKjIndex" class="picker" :range="trainKjList"
|
|
range-key="courseName">
|
|
<view class="uni-input uni-select cl" v-if="form.courseId==''">
|
|
请选择 <image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
<view class="uni-input uni-select" v-else>
|
|
{{trainKjList[trainKjIndex].courseName}}
|
|
<image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
|
|
<view class="type flex" v-if="typeCheck == 'type1'">
|
|
<view class="name">考试试卷:</view>
|
|
<picker @change="(e)=>bindPickerChange(e,3)" :value="examSjIndex" class="picker" :range="examSjList"
|
|
range-key="name">
|
|
<view class="uni-input uni-select cl" v-if="form.examPaperId==''">
|
|
请选择 <image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
<view class="uni-input uni-select" v-else>
|
|
{{examSjList[examSjIndex].name}}
|
|
<image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
<view class="type flex">
|
|
<view class="name"><text class="star">*</text>培训开始时间:</view>
|
|
<dateTimePiccker :placeholder="'请选择'" :start="startTime" fields="second"
|
|
:default-value="form.trainBeginTime" @change="bindPickerChange($event,'startTime')"
|
|
class="dateTimePiccker">
|
|
</dateTimePiccker>
|
|
<!-- <picker @change="(e)=>bindPickerChange(e,4)" mode="date" :value="form.inspectTime" class="picker">
|
|
<view class="uni-input uni-select cl" v-if="form.inspectTime===''">
|
|
请选择 <image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
<view class="uni-input uni-select" v-else>{{form.inspectTime}}
|
|
<image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
</picker> -->
|
|
</view>
|
|
<view class="type flex">
|
|
<view class="name"><text class="star">*</text>培训结束时间:</view>
|
|
<dateTimePiccker :placeholder="'请选择'" :start="startTime" fields="second"
|
|
:default-value="form.trainEndTime" @change="bindPickerChange($event,'endTime')"
|
|
class="dateTimePiccker">
|
|
</dateTimePiccker>
|
|
<!-- <picker @change="(e)=>bindPickerChange(e,4)" mode="date" :value="form.inspectTime" class="picker">
|
|
<view class="uni-input uni-select cl" v-if="form.inspectTime===''">
|
|
请选择 <image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
<view class="uni-input uni-select" v-else>{{form.inspectTime}}
|
|
<image class="icon-down" src="/static/icon-down-black.png"></image>
|
|
</view>
|
|
</picker> -->
|
|
</view>
|
|
<view class="type flex" v-if="form.examPaperId">
|
|
<view class="name"><text class="star">*</text>重考次数:</view>
|
|
<input class="num-input" style="border: 1px solid rgba(42, 43, 91, 0.3);" type="number"
|
|
:value="form.examNum" placeholder="请输入" placeholder-class="cl" @input="examNumInput" />
|
|
</view>
|
|
</view>
|
|
<view class="addSaveBtn" @click="addSaveBtn">下一步</view>
|
|
<levitatedsphere :x="100" :y="80"></levitatedsphere>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import levitatedsphere from "@/components/levitatedsphere/levitatedsphere.vue"
|
|
import dateTimePiccker from '@/components/dateTimePicker/index.vue'
|
|
import {
|
|
dateformat
|
|
} from "@/utils/tool.js"
|
|
export default {
|
|
components: {
|
|
dateTimePiccker
|
|
|
|
},
|
|
data() {
|
|
return {
|
|
isShowPicker: true,
|
|
startTime: this.getDate({
|
|
format: true,
|
|
}),
|
|
startTime2: this.getDate({
|
|
format: true,
|
|
}),
|
|
checkedTab: 'type1',
|
|
imgList: {},
|
|
openImg: false,
|
|
base64Image: '',
|
|
imgIndex: -1,
|
|
pointList: [],
|
|
location: {
|
|
left: '0',
|
|
top: '0'
|
|
},
|
|
x: 0,
|
|
y: 0,
|
|
imgDialogUrlSu: false,
|
|
imgDialogUrlText: "编辑隐患点",
|
|
imgDialog: false,
|
|
imgDialogUrl: [],
|
|
pageTitle: '新增检查',
|
|
projectSn: '',
|
|
checkType: 1, //分包商类型 1专业分包 6劳务分包
|
|
kmTypeIndex: 0,
|
|
kmTypeList: [{
|
|
name: '数学',
|
|
value: 1
|
|
}],
|
|
trainKjIndex: 0,
|
|
trainKjList: [{
|
|
name: '数学',
|
|
value: 1
|
|
}],
|
|
examSjIndex: 0,
|
|
examSjList: [{
|
|
name: '数学',
|
|
value: 1
|
|
}],
|
|
form: {
|
|
name: "",
|
|
subjectId: "",
|
|
title: "",
|
|
courseId: "",
|
|
examPaperId: "",
|
|
trainBeginTime: "",
|
|
trainEndTime: "",
|
|
examNum: 0
|
|
},
|
|
checkPointName: '',
|
|
issueList: [], //问题分类 || 问题描述
|
|
issueName: '',
|
|
issueGradeList: [{
|
|
name: '一级',
|
|
value: 1
|
|
},
|
|
{
|
|
name: '二级',
|
|
value: 2
|
|
},
|
|
{
|
|
name: '三级',
|
|
value: 3
|
|
},
|
|
{
|
|
name: '四级',
|
|
value: 4
|
|
},
|
|
], //问题等级
|
|
issueGradeIndex: 0,
|
|
urgencyList: [{
|
|
name: '一般',
|
|
value: 1
|
|
},
|
|
{
|
|
name: '严重',
|
|
value: 2
|
|
},
|
|
{
|
|
name: '紧要',
|
|
value: 3
|
|
},
|
|
], //紧急程度
|
|
urgencyIndex: 0,
|
|
personUpdateList: [], // 人员列表-整改人
|
|
personList: [], //人员列表 -- 检查人、整改人、复查人、核验人、通知人
|
|
inspectManIndex: null, //检查人
|
|
changePeopleIndex: null, //整改人
|
|
verifyManIndex: null, //核验人
|
|
reviewIndex: null, //复查人
|
|
notifier: '', //通知人
|
|
unitDialog: false, //分包商弹窗
|
|
subpackageLsit: [], //分包商数据列表
|
|
videoFileList: [],
|
|
imgFileList: [],
|
|
mapImgList: [],
|
|
basicInfo: {},
|
|
selectIndex: null,
|
|
userInfo: '',
|
|
typeCheck: 'type1', // 类型 type1为质量问题 type2为排查记录
|
|
listData: [], //分部工程
|
|
subListData: [], //分项工程
|
|
subsectionIndex: -1, //分部工程
|
|
subentryIndex: -1, ////分项工程
|
|
unitEnterpriseId: "",
|
|
taskId: '', //任务ID
|
|
itemId: '', // 任务子ID
|
|
defaultAuditPerson: "",
|
|
areaData: {}
|
|
}
|
|
},
|
|
onLoad(option) {
|
|
this.pageTitle = option.type == 'add' ? '新增检查' : '编辑检查';
|
|
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
|
|
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
|
|
this.getKmListFn();
|
|
this.getTrainListFn();
|
|
this.getExamSjListFn();
|
|
},
|
|
|
|
|
|
methods: {
|
|
// 考试试卷列表
|
|
getExamSjListFn() {
|
|
let that = this;
|
|
this.sendRequest({
|
|
url: 'exam/paper/list',
|
|
method: 'post',
|
|
data: {
|
|
projectSn: this.projectSn
|
|
},
|
|
success: res => {
|
|
if (res.code == 200) {
|
|
that.examSjList = res.result
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 培训课件列表
|
|
getTrainListFn() {
|
|
let that = this;
|
|
this.sendRequest({
|
|
url: 'exam/course/list',
|
|
method: 'post',
|
|
data: {
|
|
projectSn: this.projectSn
|
|
},
|
|
success: res => {
|
|
if (res.code == 200) {
|
|
that.trainKjList = res.result
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 科目列表
|
|
getKmListFn() {
|
|
let that = this;
|
|
this.sendRequest({
|
|
url: 'exam/subject/list',
|
|
method: 'post',
|
|
data: {
|
|
projectSn: this.projectSn
|
|
},
|
|
success: res => {
|
|
if (res.code == 200) {
|
|
that.kmTypeList = res.result
|
|
}
|
|
}
|
|
})
|
|
},
|
|
getDate(type) {
|
|
const date = new Date();
|
|
let year = date.getFullYear();
|
|
let month = date.getMonth() + 1;
|
|
let day = date.getDate();
|
|
if (type === 'start') {
|
|
year = year;
|
|
} else if (type === 'end') {
|
|
// year = year + 2;
|
|
}
|
|
month = month > 9 ? month : '0' + month;
|
|
day = day > 9 ? day : '0' + day;
|
|
return `${year}-${month}-${day}`;
|
|
},
|
|
|
|
trainPlanNameTextarea(e) {
|
|
this.form.name = e.detail.value
|
|
},
|
|
// 重考次数
|
|
examNumInput(e) {
|
|
this.form.examNum = e.detail.value
|
|
},
|
|
//补充说明
|
|
supplementTextarea(e) {
|
|
this.form.title = e.detail.value
|
|
},
|
|
//下拉选择回显
|
|
bindPickerChange(e, type) {
|
|
console.log(e)
|
|
if (!e) return;
|
|
//type ==1 问题等级;2紧急情况;3检查人;4 检查时间;5整改时限; 6整改人; 7复查人; 8核验人;
|
|
if (type == 1) {
|
|
this.kmTypeIndex = e.detail.value;
|
|
this.form.subjectId = this.kmTypeList.length ? this.kmTypeList[e.detail.value].id : "";
|
|
} else if (type == 2) {
|
|
this.trainKjIndex = e.detail.value;
|
|
this.form.courseId = this.trainKjList.length ? this.trainKjList[e.detail.value].id : "";
|
|
} else if (type == 3) {
|
|
this.examSjIndex = e.detail.value;
|
|
this.form.examPaperId = this.examSjList.length ? this.examSjList[e.detail.value].id : "";
|
|
this.form.examNum = "";
|
|
} else if (type == 'startTime') {
|
|
this.form.trainBeginTime = e.f3;
|
|
} else if (type == 'endTime') {
|
|
this.form.trainEndTime = e.f3;
|
|
}
|
|
|
|
},
|
|
//新增保存
|
|
async addSaveBtn() {
|
|
if (!this.form.name) {
|
|
uni.showToast({
|
|
title: '请输入培训计划名称',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if (!this.form.subjectId) {
|
|
uni.showToast({
|
|
title: '请选择科目类型',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if (!this.form.title) {
|
|
uni.showToast({
|
|
title: '请输入教育主题',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if (!this.form.courseId && !this.form.examPaperId) {
|
|
uni.showToast({
|
|
title: '请选择至少选择培训课件或考试试卷一种',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if (!this.form.trainBeginTime) {
|
|
uni.showToast({
|
|
title: '请选择培训开始时间',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if (!this.form.trainEndTime) {
|
|
uni.showToast({
|
|
title: '请选择培训结束时间',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
if(this.form.examNum<0){
|
|
uni.showToast({
|
|
title: '重考次数需要大于或等于0',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
let pageData = {
|
|
...this.form
|
|
}
|
|
uni.navigateTo({
|
|
url: './selectPerson?pageData=' + JSON.stringify(pageData)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.point {
|
|
height: 40rpx;
|
|
width: 40rpx;
|
|
position: absolute;
|
|
}
|
|
|
|
.flex {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.content {
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
padding: 40rpx 30rpx;
|
|
}
|
|
|
|
.type {
|
|
font-size: 30rpx;
|
|
line-height: 80rpx;
|
|
margin-bottom: 16rpx;
|
|
/* border-bottom: 1px solid rgba(194, 194, 194, 0.2); */
|
|
}
|
|
|
|
.type .num-input {
|
|
width: 70%;
|
|
height: 80rpx;
|
|
line-height: 80rpx;
|
|
border: 2rpx solid rgba(42, 43, 91, 0.3);
|
|
padding: 0px 30rpx;
|
|
box-sizing: border-box;
|
|
border-radius: 10rpx;
|
|
}
|
|
|
|
.type .name {
|
|
margin-right: 6px;
|
|
width: 240rpx;
|
|
text-align: right;
|
|
font-family: Source Han Sans CN, Source Han Sans CN;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
color: #272D45;
|
|
}
|
|
|
|
.radio-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.radio {
|
|
margin-right: 40rpx;
|
|
}
|
|
}
|
|
|
|
.accessory {
|
|
width: 100%;
|
|
height: 70px;
|
|
padding: 0 20rpx;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.accessoryImg {
|
|
width: 110rpx;
|
|
height: 120rpx;
|
|
margin-right: 16rpx;
|
|
}
|
|
|
|
.picker {
|
|
width: 70%;
|
|
border: 1px solid rgba(42, 43, 91, 0.3);
|
|
padding: 0px 30rpx;
|
|
box-sizing: border-box;
|
|
border-radius: 10rpx;
|
|
}
|
|
|
|
.uni-input {
|
|
line-height: 64rpx;
|
|
}
|
|
|
|
.textarea {
|
|
width: calc(79% - 64rpx);
|
|
border-radius: 10rpx;
|
|
border: 1px solid rgba(42, 43, 91, 0.3);
|
|
padding: 8px 30rpx;
|
|
box-sizing: border-box;
|
|
height: 100rpx;
|
|
}
|
|
|
|
.inpuStyle {
|
|
width: calc(80% - 70rpx);
|
|
border-radius: 40rpx;
|
|
border: 1px solid rgba(42, 43, 91, 0.3);
|
|
padding: 8px 30rpx;
|
|
box-sizing: border-box;
|
|
height: 70rpx;
|
|
color: #000;
|
|
}
|
|
|
|
.cl {
|
|
font-size: 30rpx;
|
|
border-radius: 10rpx;
|
|
}
|
|
|
|
|
|
.imgBox_wrap {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin-top: 20rpx;
|
|
width: 75%;
|
|
}
|
|
|
|
.imgBox {
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
display: inline-flex;
|
|
position: relative;
|
|
margin-right: 30rpx;
|
|
margin-bottom: 16rpx;
|
|
|
|
.img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 20rpx;
|
|
}
|
|
|
|
}
|
|
|
|
.addImgBox {
|
|
border: 1px solid rgba(42, 43, 91, 0.1);
|
|
background-color: #f6f5f8;
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 20rpx;
|
|
font-size: 24rpx;
|
|
|
|
.icon-add {
|
|
width: 36rpx;
|
|
height: 36rpx;
|
|
}
|
|
}
|
|
|
|
.checkName {
|
|
border-bottom: 4rpx solid #4181FE;
|
|
color: #4181FE;
|
|
}
|
|
|
|
.noCheckName {
|
|
padding-top: 4px;
|
|
}
|
|
|
|
.unitList {
|
|
margin: 20rpx 0;
|
|
font-size: 30rpx;
|
|
|
|
.title {
|
|
margin-bottom: 20rpx;
|
|
}
|
|
|
|
.list_val {
|
|
padding: 8px 20rpx;
|
|
}
|
|
}
|
|
|
|
.bg_999 {
|
|
background-color: rgba(153, 153, 153, 0.1);
|
|
}
|
|
|
|
.ellipsis {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.addSaveBtn {
|
|
margin: 60rpx auto;
|
|
width: 60%;
|
|
padding: 20rpx 0;
|
|
text-align: center;
|
|
background-color: #4181FE;
|
|
color: #fff;
|
|
font-size: 34rpx;
|
|
border-radius: 60rpx;
|
|
letter-spacing: 4rpx;
|
|
position: fixed;
|
|
bottom: 5%;
|
|
left: 20%;
|
|
}
|
|
|
|
.addSaveBtn:active {
|
|
background-color: rgba(65, 129, 254, 0.8);
|
|
}
|
|
|
|
.dateTimePiccker {
|
|
border: 1px solid #ccc;
|
|
border-radius: 10rpx;
|
|
width: calc(79% - 64rpx);
|
|
padding-left: 20rpx;
|
|
}
|
|
</style> |