2024-05-21 01:19:28 +08:00

571 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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"><text class="star">*</text>培训课件</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"><text class="star">*</text>考试试卷</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>
<view class="addSaveBtn" @click="addSaveBtn">下一步</view>
</view>
</template>
<script>
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: ""
},
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
},
//补充说明
supplementTextarea(e) {
this.form.title = e.detail.value
},
//下拉选择回显
bindPickerChange(e, type) {
console.log(e)
//type ==1 问题等级;2紧急情况;3检查人;4 检查时间;5整改时限; 6整改人; 7复查人; 8核验人;
if (type == 1) {
this.kmTypeIndex = e.detail.value;
this.form.subjectId = this.kmTypeList[e.detail.value].id;
} else if (type == 2) {
this.trainKjIndex = e.detail.value;
this.form.courseId = this.trainKjList[e.detail.value].id;
} else if (type == 3) {
this.examSjIndex = e.detail.value;
this.form.examPaperId = this.examSjList[e.detail.value].id
} 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){
uni.showToast({
title: '请选择培训课件',
icon: 'none'
})
return
}
if(!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
}
let pageData = {
...this.form
}
uni.navigateTo({
url: './selectPerson?pageData=' + JSON.stringify(pageData)
})
}
}
}
</script>
<style scoped lang="scss">
.point {
height: 20px;
width: 20px;
position: absolute;
}
.flex {
display: flex;
align-items: center;
}
.content {
width: 100%;
box-sizing: border-box;
padding: 20px 30rpx;
}
.type {
font-size: 30rpx;
line-height: 40px;
margin-bottom: 8px;
/* border-bottom: 1px solid rgba(194, 194, 194, 0.2); */
}
.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: 20px;
}
}
.accessory {
width: 100%;
height: 70px;
padding: 0 10px;
box-sizing: border-box;
}
.accessoryImg {
width: 110rpx;
height: 60px;
margin-right: 8px;
}
.picker {
width: 70%;
border: 1px solid rgba(42, 43, 91, 0.3);
padding: 0px 30rpx;
box-sizing: border-box;
border-radius: 5px;
}
.uni-input {
line-height: 32px;
}
.textarea {
width: calc(79% - 32px);
border-radius: 5px;
border: 1px solid rgba(42, 43, 91, 0.3);
padding: 8px 15px;
box-sizing: border-box;
height: 50px;
}
.inpuStyle {
width: calc(80% - 35px);
border-radius: 20px;
border: 1px solid rgba(42, 43, 91, 0.3);
padding: 8px 15px;
box-sizing: border-box;
height: 35px;
color: #000;
}
.cl {
font-size: 30rpx;
border-radius: 5px;
}
.imgBox_wrap {
display: flex;
flex-wrap: wrap;
margin-top: 10px;
width: 75%;
}
.imgBox {
width: 60px;
height: 60px;
display: inline-flex;
position: relative;
margin-right: 15px;
margin-bottom: 8px;
.img {
width: 100%;
height: 100%;
border-radius: 10px;
}
}
.addImgBox {
border: 1px solid rgba(42, 43, 91, 0.1);
background-color: #f6f5f8;
width: 60px;
height: 60px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 10px;
font-size: 12px;
.icon-add {
width: 18px;
height: 18px;
}
}
.checkName {
border-bottom: 2px solid #4181FE;
color: #4181FE;
}
.noCheckName {
padding-top: 4px;
}
.unitList {
margin: 10px 0;
font-size: 30rpx;
.title {
margin-bottom: 10px;
}
.list_val {
padding: 8px 10px;
}
}
.bg_999 {
background-color: rgba(153, 153, 153, 0.1);
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.addSaveBtn {
margin: 30px auto;
width: 60%;
padding: 10px 0;
text-align: center;
background-color: #4181FE;
color: #fff;
font-size: 34rpx;
border-radius: 30px;
letter-spacing: 2px;
position: fixed;
bottom: 5%;
left: 20%;
}
.addSaveBtn:active {
background-color: rgba(65, 129, 254, 0.8);
}
.dateTimePiccker {
border: 1px solid #ccc;
border-radius: 5px;
width: calc(79% - 32px);
padding-left: 10px;
}
</style>