移动端V1.0
This commit is contained in:
864
pages/applyleave/editLeave.vue
Normal file
864
pages/applyleave/editLeave.vue
Normal file
@@ -0,0 +1,864 @@
|
||||
<template>
|
||||
<view class="container" style="padding-bottom: 60px;">
|
||||
<!--学号 -->
|
||||
<view class="form-item">
|
||||
<text class="label">学号:</text>
|
||||
<text class="uni-input">{{ stuInfo.stuNo }}</text>
|
||||
</view>
|
||||
|
||||
<!--姓名 -->
|
||||
<view class="form-item">
|
||||
<text class="label">姓名:</text>
|
||||
<text class="uni-input">{{ stuInfo.studentName }}</text>
|
||||
</view>
|
||||
|
||||
<!-- 性别 -->
|
||||
<view class="form-item">
|
||||
<text class="label">性别:</text>
|
||||
<text class="uni-input">{{ stuInfo.gender }}</text>
|
||||
</view>
|
||||
|
||||
<!--院部 -->
|
||||
<view class="form-item">
|
||||
<text class="label">院部:</text>
|
||||
<text class="uni-input">{{ stuInfo.departmentName }}</text>
|
||||
</view>
|
||||
|
||||
<!--班级 -->
|
||||
<view class="form-item">
|
||||
<text class="label">班级:</text>
|
||||
<text class="uni-input">{{ stuInfo.className }}</text>
|
||||
</view>
|
||||
|
||||
<!--联系电话 -->
|
||||
<view class="form-item">
|
||||
<text class="label">联系电话:</text>
|
||||
<text class="uni-input">{{ stuInfo.phoneNumber }}</text>
|
||||
</view>
|
||||
|
||||
<!--家长姓名 -->
|
||||
<view class="form-item">
|
||||
<text class="label">家长姓名:</text>
|
||||
<text class="uni-input">{{ stuInfo.fatherName }}</text>
|
||||
</view>
|
||||
|
||||
<!--家长联系电话 -->
|
||||
<view class="form-item">
|
||||
<text class="label">家长联系电话:</text>
|
||||
<text class="uni-input">{{ stuInfo.fatherRelation }}</text>
|
||||
</view>
|
||||
<!-- 请假事由 -->
|
||||
<view class="form-item">
|
||||
<text class="label"> <text class="required">*</text> 请假事由:</text>
|
||||
<picker :range="politicalOptions" v-model="formData.selectedPoliticalIndex" @change="onPoliticalChange">
|
||||
<view class="select">{{ politicalOptions[formData.selectedPoliticalIndex] || '请选择请假事由' }}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<!-- 请假事由说明 -->
|
||||
<view class="form-text">
|
||||
<text class="label"> <text class="required">*</text> 请假事由说明:</text>
|
||||
<view class="txt">
|
||||
<uni-forms-item>
|
||||
<uni-easyinput type="textarea" v-model="formData.deeds" maxlength="500" placeholder="输入请假事由说明" />
|
||||
</uni-forms-item>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 请假时间 -->
|
||||
<view class="form-item">
|
||||
<text class="label"> <text class="required">*</text> 请假起始时间:</text>
|
||||
<view class="example-body">
|
||||
<uni-datetime-picker @change="changeDate('start',$event)" returnType="timestamp" v-model="formData.single" />
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<text class="label"> <text class="required">*</text> 请假结束时间:</text>
|
||||
<view class="example-body">
|
||||
<uni-datetime-picker @change="changeDate('end',$event)" returnType="timestamp" v-model="formData.endsingle" />
|
||||
</view>
|
||||
</view>
|
||||
<!--请假天数 -->
|
||||
<view class="form-item">
|
||||
<text class="label"> <text class="required">*</text> 请假天数:</text>
|
||||
<input v-model="formData.dataNum" class="uni-input" focus placeholder="请输入请假天数 " />
|
||||
</view>
|
||||
|
||||
<!-- 目的地 -->
|
||||
<view class="form-item">
|
||||
<text class="label"> <text class="required">*</text> 目的地:</text>
|
||||
<input v-model="formData.endAddress" class="uni-input" focus placeholder="请输入目的地 " />
|
||||
</view>
|
||||
<!--详细地址 -->
|
||||
<view class="form-item">
|
||||
<text class="label"><text class="required">*</text> 详细地址:</text>
|
||||
<input v-model="formData.address" class="uni-input" focus placeholder="请输入详细地址 " />
|
||||
</view>
|
||||
<!-- 是否离桂 -->
|
||||
<view class="form-item">
|
||||
<text class="label">是否离桂:</text>
|
||||
<checkbox class="uni-input" :value="isLeaveGui!=null?isLeaveGui.toString():'0'" :checked="isLeaveGui==1?true:false"
|
||||
@click="toggleLG" />
|
||||
</view>
|
||||
<!-- 上传佐证 -->
|
||||
<view class="form-img">
|
||||
<text class="label">上传佐证:</text>
|
||||
<view class="example-body">
|
||||
<uni-file-picker @select="uploadEvidence" v-model="imgVals" @delete="onDelImg" :auto-upload="false"
|
||||
limit="9"></uni-file-picker>
|
||||
</view>
|
||||
</view>
|
||||
<!--协议 -->
|
||||
<view class="form-item">
|
||||
安全承诺书:
|
||||
<text class="labelsafe">《广西水利电力职业技术学院安全承诺书》
|
||||
</text>
|
||||
<label>
|
||||
<checkbox :value="checkboxValue.toString()" @click="toggleCheckbox" />
|
||||
</label>
|
||||
</view>
|
||||
<!-- 签名 -->
|
||||
<view class="form-canvas">
|
||||
<text class="label">手写签字:</text>
|
||||
<view class="sign-img" v-if="signImg!=''">
|
||||
<image :src="signImg" mode=""></image>
|
||||
<text @tap="signToggle">重新签名</text>
|
||||
</view>
|
||||
<view v-else class="sign" @tap="signToggle">
|
||||
点击签名
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<text class="label">备注:</text>
|
||||
<input v-model="remark" class="uni-input" placeholder="请输入备注" />
|
||||
</view>
|
||||
<!-- 按钮 -->
|
||||
<view class="btn" v-if="type!='task'">
|
||||
<button style="background-color: red;" @click="clean">清除</button>
|
||||
<button style="background-color: #fff; color: #4097FE;border: 1px solid #4097FE;" :disabled="isSubmitting" @click="save">保存</button>
|
||||
<button :disabled="isSubmitting" @click="applyLeave()">提交申请</button>
|
||||
</view>
|
||||
<view class="btn" v-else>
|
||||
<button style="width: 100%;" :disabled="isSubmitting" @tap="resubmitTask">重新提交</button>
|
||||
</view>
|
||||
<uni-popup ref="popup" background-color="#fff">
|
||||
<view class="popup-content" style="height: 35vh;">
|
||||
<liu-signature @change="uploadSign" bgColor="#e8e8e8" lineColor="#000" :width="700"></liu-signature>
|
||||
</view>
|
||||
</uni-popup>
|
||||
<uni-popup class="safety-popup" :is-mask-click="false" ref="safetyPopup" background-color="#fff">
|
||||
<view class="popup-content">
|
||||
<view class="title">
|
||||
请假承诺书
|
||||
</view>
|
||||
<view class="content">
|
||||
<scroll-view scroll-y="true" style="height:300px;">
|
||||
<view class="txt">
|
||||
为进一步加强学生的安全教育和管理,切实维护校园安全及校园秩序,结合我校实际,学生请假外出期间就以下安全事项作如下承诺:
|
||||
<view>
|
||||
1.严格遵守国家法律法规和公民道德行为规范,健康文明生活,不赌博、不打架、不从事非法传销活动、不参与宗教迷信宣传等;不造谣、不传谣、不信谣,不做任何违法违纪行为,自觉维护良好大学生形象。
|
||||
</view>
|
||||
<view>2.自觉遵守学校规章制度,在规定允许时间内出入校园,按时返校;离开宿舍时确认断电和锁好门窗,保管好自己的贵重物品。</view>
|
||||
<view>
|
||||
3.增强安全防范意识,不轻信陌生人,注意防骗、防盗、防抢、防踩踏等,保护人身换人财产安全;不携带易燃易爆等危险品进入公共场所、不在非吸烟区吸烟,不乱扔烟头、不私拉电线,防范消防安全隐患;不买、不吃“三无”食品和野味,确保饮食卫生安全。
|
||||
</view>
|
||||
<view>4.增强安全保护意识,遵守交通规则,乘坐合法正规营运车辆;不到不明水域游泳、戏水、垂钓等。</view>
|
||||
<view>5.增强个人健康安全意识,认真履行个人“健康第一责任人”责任,自觉做好健康监测,身体出现异常情况随时向辅导员和家长报告,及时就医。</view>
|
||||
<view>6.主动与家长、辅导员保持联系,随时保持通讯畅通,并如实告知自己的情况。</view>
|
||||
<view>7.本人承诺已经认真阅读并自愿遵守上述规定,离校期间个人安全将由本人自行负责。</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="time" v-if="safetime>0">
|
||||
请阅读{{safetime}}s承诺书
|
||||
</view>
|
||||
</view>
|
||||
<view class="safety-btn">
|
||||
<button :disabled="isDisabled" @tap="closeSafePopup">我知道了</button>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import uploadFile from "@/plugins/upload.js";
|
||||
import {
|
||||
baseUrl
|
||||
} from "@/config.js";
|
||||
import {
|
||||
calculateDays,
|
||||
convertToTimestamp
|
||||
} from "@/utils/time-calculation.js"
|
||||
import {
|
||||
editApply,
|
||||
getStuInfo,
|
||||
commonUpload,
|
||||
leaveSave,
|
||||
leaveDetail,
|
||||
addApply
|
||||
} from "@/api/applyleave/applyleave.js";
|
||||
import {
|
||||
getLeaveApplicationByProcInsId,
|
||||
complete
|
||||
} from "@/api/task.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
isSubmitting: false, //表单提交标志位
|
||||
isDisabled: true,
|
||||
safetime: 5,
|
||||
// 用户信息
|
||||
stuInfo: {},
|
||||
studID: "",
|
||||
name: "",
|
||||
courtyard: "",
|
||||
sex: '',
|
||||
classroom: "",
|
||||
phone: "",
|
||||
parent: "",
|
||||
parentPhone: "",
|
||||
selectedOptionIndex: -1, // 当前选中的奖项索引
|
||||
politicalOptions: ['因病', '因事'], // 请假选项
|
||||
beginData: '',
|
||||
endData: "",
|
||||
remark: "",
|
||||
leave: ['是', '否'],
|
||||
leaveIndex: -1,
|
||||
url: "",
|
||||
urltwo: "",
|
||||
checkboxValue: 0,
|
||||
//附件
|
||||
attachmentFile: "",
|
||||
signImg: "",
|
||||
imgVals: [],
|
||||
isLeaveGui: 0, //是否离桂
|
||||
formData: {
|
||||
selectedPoliticalIndex: "", // 当前选中的请假索引
|
||||
deeds: "",
|
||||
endsingle: "",
|
||||
single: '',
|
||||
dataNum: "",
|
||||
endAddress: "",
|
||||
address: "",
|
||||
signFile: "",
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
onLoad(option) {
|
||||
this.procInsId = option.id;
|
||||
this.taskId = option.taskId
|
||||
this.type = option.type;
|
||||
if (option.type == 'task') {
|
||||
this.getTaskDetail();
|
||||
} else {
|
||||
this.getLeaveDetail();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggleLG() {
|
||||
this.isLeaveGui = this.isLeaveGui === 1 ? 0 : 1;
|
||||
},
|
||||
changeDate(type, e) {
|
||||
this.formData.single = convertToTimestamp(this.formData.single);
|
||||
this.formData.endsingle = convertToTimestamp(this.formData.endsingle);
|
||||
if (type == "end") {
|
||||
this.formData.endsingle = e;
|
||||
if (this.formData.endsingle < this.formData.single) {
|
||||
uni.showToast({
|
||||
title: "时间不能早于请假开始时间",
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
this.formData.dataNum = calculateDays(this.formData.single, this.formData.endsingle);
|
||||
} else {
|
||||
this.single = e;
|
||||
if (this.formData.endsingle < this.formData.single) {
|
||||
uni.showToast({
|
||||
title: "起始时间不能晚于结束时间",
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
this.formData.dataNum = calculateDays(this.formData.single, this.formData.endsingle);
|
||||
}
|
||||
},
|
||||
getLeaveDetail() {
|
||||
let sdata = this.procInsId;
|
||||
leaveDetail(sdata).then(res => {
|
||||
this.stuInfo = res.data;
|
||||
this.formData.selectedPoliticalIndex = res.data.leaveType;
|
||||
this.formData.deeds = res.data.reason;
|
||||
this.formData.single = res.data.startDate;
|
||||
this.formData.endsingle = res.data.endDate;
|
||||
this.formData.dataNum = res.data.leaveDays;
|
||||
this.formData.endAddress = res.data.destination;
|
||||
this.formData.address = res.data.destinationDetails;
|
||||
this.formData.signFile = res.data.applicantSignature;
|
||||
this.attachmentFile = res.data.attachment;
|
||||
this.signImg = baseUrl + res.data.applicantSignature;
|
||||
this.remark = res.data.remark;
|
||||
this.leaveApplicationId = res.data.leaveApplicationId;
|
||||
this.isLeaveGui = res.data.leavingGx;
|
||||
console.log(this.formData);
|
||||
if (res.data.attachment != "" && res.data.attachment != null) {
|
||||
let imgs = res.data.attachment.split(',');
|
||||
this.imgVals = imgs.map(img => {
|
||||
return {
|
||||
url: baseUrl + img
|
||||
};
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
getTaskDetail() {
|
||||
getLeaveApplicationByProcInsId(this.procInsId).then(res => {
|
||||
this.stuInfo = res.data;
|
||||
this.formData.selectedPoliticalIndex = res.data.leaveType;
|
||||
this.formData.deeds = res.data.reason;
|
||||
this.formData.single = res.data.startDate;
|
||||
this.formData.endsingle = res.data.endDate;
|
||||
this.formData.dataNum = res.data.leaveDays;
|
||||
this.formData.endAddress = res.data.destination;
|
||||
this.formData.address = res.data.destinationDetails;
|
||||
this.attachmentFile = res.data.attachment;
|
||||
this.signImg = baseUrl + res.data.applicantSignature;
|
||||
this.formData.signFile = res.data.applicantSignature;
|
||||
this.remark = res.data.remark;
|
||||
this.leaveApplicationId = res.data.leaveApplicationId;
|
||||
this.isLeaveGui = res.data.leavingGx;
|
||||
if (res.data.attachment != "" && res.data.attachment != null) {
|
||||
let imgs = res.data.attachment.split(',');
|
||||
this.imgVals = imgs.map(img => {
|
||||
return {
|
||||
url: baseUrl + img
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
// 提交申请
|
||||
applyLeave() {
|
||||
if (this.checkboxValue == 0) {
|
||||
// 如果复选框未被选中,则不允许提交
|
||||
uni.showToast({
|
||||
title: "请勾选承诺书",
|
||||
icon: "error"
|
||||
});
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
if (this.signFile == '') {
|
||||
// 如果复选框未被选中,则不允许提交
|
||||
uni.showToast({
|
||||
title: "请先进行签名",
|
||||
icon: "error"
|
||||
});
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
if (this.endsingle < this.single) {
|
||||
uni.showToast({
|
||||
title: "起始时间不能晚于结束时间",
|
||||
icon: "none"
|
||||
})
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
//表单非空校验
|
||||
const requiredFields = [
|
||||
'selectedPoliticalIndex',
|
||||
'deeds',
|
||||
'endsingle',
|
||||
'single',
|
||||
'dataNum',
|
||||
'endAddress',
|
||||
'address'
|
||||
];
|
||||
const emptyField = requiredFields.find(field => this.formData[field] === ""||this.formData[field] ==null);
|
||||
if (emptyField) {
|
||||
uni.showToast({
|
||||
title: `请填写完必填字段`,
|
||||
icon: "none"
|
||||
})
|
||||
return;
|
||||
}
|
||||
console.log(this.formData);
|
||||
uni.showLoading({
|
||||
title: "正在提交"
|
||||
})
|
||||
let data = {
|
||||
applicantSignature: this.formData.signFile,
|
||||
attachment: this.attachmentFile,
|
||||
destination: this.formData.endAddress,
|
||||
destinationDetails: this.formData.address,
|
||||
startDate: this.formData.single,
|
||||
endDate: this.formData.endsingle,
|
||||
leaveDays: this.formData.dataNum,
|
||||
leaveType: this.formData.selectedPoliticalIndex,
|
||||
reason: this.formData.deeds,
|
||||
remark: this.remark,
|
||||
safetyPromise: 1,
|
||||
leaveApplicationId: this.leaveApplicationId,
|
||||
leavingGx:this.isLeaveGui
|
||||
}
|
||||
this.isSubmitting = true; // 设置为正在提交
|
||||
if (this.type == "task") {
|
||||
editApply(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
let sData = {
|
||||
taskId: this.taskId,
|
||||
comment: "",
|
||||
}
|
||||
complete(sData).then(res => {
|
||||
console.log(res);
|
||||
if (res.code == 200) {
|
||||
uni.hideLoading();
|
||||
this.isSubmitting = false;
|
||||
uni.navigateBack({
|
||||
success: () => {
|
||||
const pages = getCurrentPages();
|
||||
if (pages.length > 0) {
|
||||
const prevPage = pages[pages.length - 2]
|
||||
if (prevPage && typeof prevPage.getList ===
|
||||
'function') {
|
||||
prevPage.handleChange(2);
|
||||
console.log('刷新已办任务数据');
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "提交失败,请先填写完整内容",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
addApply(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: "提交成功",
|
||||
icon: "success"
|
||||
});
|
||||
this.isSubmitting = false;
|
||||
uni.navigateBack({
|
||||
success: () => {
|
||||
const pages = getCurrentPages();
|
||||
if (pages.length > 0) {
|
||||
const prevPage = pages[pages.length - 2]
|
||||
if (prevPage && typeof prevPage.getLeaveList ===
|
||||
'function') {
|
||||
prevPage.getLeaveList();
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "提交失败,请先填写完整内容",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
// 重新提交任务
|
||||
resubmitTask() {
|
||||
this.applyLeave();
|
||||
},
|
||||
//上传佐证
|
||||
uploadEvidence(e) {
|
||||
uploadFile('/common/upload', e.tempFilePaths[0]).then((res) => {
|
||||
console.log(this.attachmentFile);
|
||||
if (this.attachmentFile !== "") {
|
||||
this.attachmentFile = this.attachmentFile + "," + JSON.parse(res).fileName;
|
||||
} else {
|
||||
this.attachmentFile = JSON.parse(res).fileName;
|
||||
}
|
||||
console.log(this.attachmentFile);
|
||||
})
|
||||
},
|
||||
//删除已选图片
|
||||
onDelImg(e) {
|
||||
let newImgs = this.imgVals.filter(fileName => fileName.path !== e.tempFilePath);
|
||||
newImgs = newImgs.map(img => img.url.replace(baseUrl, ''))
|
||||
newImgs = newImgs.join(",");
|
||||
this.attachmentFile = newImgs;
|
||||
},
|
||||
//上传签名
|
||||
uploadSign(e) {
|
||||
const blob = this.base64ToBlob(e);
|
||||
const fileObj = new File([blob], 'signature', {
|
||||
type: 'image/png'
|
||||
});
|
||||
const formData = new FormData();
|
||||
formData.append("file", fileObj);
|
||||
const formDataObj = this.formDataToObject(formData);
|
||||
uploadFile('/common/upload', '', formDataObj).then((res) => {
|
||||
this.formData.signFile = JSON.parse(res).fileName;
|
||||
this.signImg = baseUrl + JSON.parse(res).fileName;
|
||||
this.$refs.popup.close('center')
|
||||
})
|
||||
},
|
||||
// onPickerChange(event) {
|
||||
// this.selectedOptionIndex = event.detail.value;
|
||||
// },
|
||||
onPoliticalChange(event) {
|
||||
this.formData.selectedPoliticalIndex = event.detail.value;
|
||||
},
|
||||
toggleCheckbox() {
|
||||
// 切换 checkboxValue 的值
|
||||
this.checkboxValue = this.checkboxValue === 1 ? 0 : 1;
|
||||
if (this.checkboxValue) {
|
||||
this.$refs.safetyPopup.open('center')
|
||||
if (this.safetime > 0) {
|
||||
const intervalId = setInterval(() => {
|
||||
this.safetime--;
|
||||
console.log(this.safetime);
|
||||
if (this.safetime === 0) {
|
||||
clearInterval(intervalId); // 停止倒计时
|
||||
this.isDisabled = false;
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
},
|
||||
// 清空表单
|
||||
clean() {
|
||||
this.studID = "";
|
||||
this.name = "";
|
||||
this.courtyard = "";
|
||||
this.formData.selectedOptionIndex = "";
|
||||
this.classroom = '';
|
||||
this.phone = '';
|
||||
this.parent = '';
|
||||
this.parentPhone = "";
|
||||
this.formData.selectedPoliticalIndex = ""
|
||||
this.beginData = "";
|
||||
this.endData = '';
|
||||
this.formData.dataNum = '';
|
||||
this.formData.deeds = '';
|
||||
this.leaveIndex = -1;
|
||||
this.formData.endAddress = '';
|
||||
this.formData.address = '';
|
||||
this.isChecked = false;
|
||||
this.$forceUpdate(); // 强制更新组件
|
||||
this.url = ''
|
||||
localStorage.removeItem('formData');
|
||||
},
|
||||
//保存假条信息
|
||||
save() {
|
||||
if (this.checkboxValue == 0) {
|
||||
// 如果复选框未被选中,则不允许提交
|
||||
uni.showToast({
|
||||
title: "请勾选承诺书",
|
||||
icon: "error"
|
||||
});
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
if (this.formData.signFile == '' || this.formData.signFile == null) {
|
||||
// 如果复选框未被选中,则不允许提交
|
||||
uni.showToast({
|
||||
title: "请先进行签名",
|
||||
icon: "error"
|
||||
});
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
if (this.formData.endsingle < this.formData.single) {
|
||||
uni.showToast({
|
||||
title: "起始时间不能晚于结束时间",
|
||||
icon: "none"
|
||||
})
|
||||
return; // 阻止表单提交
|
||||
}
|
||||
//表单非空校验
|
||||
const requiredFields = [
|
||||
'selectedPoliticalIndex',
|
||||
'deeds',
|
||||
'endsingle',
|
||||
'single',
|
||||
'dataNum',
|
||||
'endAddress',
|
||||
'address'
|
||||
];
|
||||
const emptyField = requiredFields.find(field => this.formData[field] === ""||this.formData[field] ==null);
|
||||
if (emptyField) {
|
||||
uni.showToast({
|
||||
title: `请填写完必填字段`,
|
||||
icon: "none"
|
||||
})
|
||||
return;
|
||||
}
|
||||
this.isSubmitting=true;
|
||||
let data = {
|
||||
applicantSignature: this.formData.signFile,
|
||||
attachment: this.attachmentFile,
|
||||
destination: this.formData.endAddress,
|
||||
destinationDetails: this.formData.address,
|
||||
endDate: this.formData.endsingle,
|
||||
leaveDays: this.formData.dataNum,
|
||||
leaveType: this.formData.selectedPoliticalIndex,
|
||||
reason: this.formData.deeds,
|
||||
remark: this.remark,
|
||||
safetyPromise: 1,
|
||||
startDate: this.formData.single,
|
||||
leaveApplicationId: this.procInsId,
|
||||
leavingGx:this.isLeaveGui
|
||||
}
|
||||
|
||||
leaveSave(data).then(res => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: "保存成功",
|
||||
icon: "success"
|
||||
});
|
||||
this.isSubmitting=false;
|
||||
uni.navigateBack({
|
||||
success: () => {
|
||||
const pages = getCurrentPages();
|
||||
if (pages.length > 0) {
|
||||
const prevPage = pages[pages.length - 2]
|
||||
if (prevPage && typeof prevPage.getLeaveList ===
|
||||
'function') {
|
||||
prevPage.getLeaveList();
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "提交失败,请先填写完整内容",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
signToggle() {
|
||||
this.$refs.popup.open('center')
|
||||
},
|
||||
closeSafePopup() {
|
||||
this.$refs.safetyPopup.close('center')
|
||||
this.safetime = 5;
|
||||
},
|
||||
base64ToBlob(base64String) {
|
||||
const byteCharacters = atob(base64String.split(',')[1]);
|
||||
const byteNumbers = new Array(byteCharacters.length);
|
||||
for (let i = 0; i < byteCharacters.length; i++) {
|
||||
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
||||
}
|
||||
|
||||
const byteArray = new Uint8Array(byteNumbers);
|
||||
return new Blob([byteArray], {
|
||||
type: 'application/octet-stream'
|
||||
});
|
||||
},
|
||||
formDataToObject(formData) {
|
||||
const obj = {};
|
||||
formData.forEach((value, key) => {
|
||||
obj[key] = value;
|
||||
});
|
||||
return obj;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 10rpx;
|
||||
|
||||
}
|
||||
|
||||
.form-item {
|
||||
width: 95%;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
justify-content: space-between;
|
||||
|
||||
checkbox {
|
||||
/deep/.uni-checkbox-input.uni-checkbox-input-checked {
|
||||
background: #007aff;
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
text:last-child {
|
||||
text-wrap: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.form-text {
|
||||
width: 95%;
|
||||
margin-bottom: 20rpx;
|
||||
border-bottom: 1px solid #ededee;
|
||||
}
|
||||
|
||||
.form-img {
|
||||
width: 95%;
|
||||
margin-bottom: 20rpx;
|
||||
border-bottom: 1px solid #ededee;
|
||||
}
|
||||
|
||||
.example-body {
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.txt {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.label {
|
||||
text-align: right;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.select {
|
||||
color: #888889;
|
||||
white-space: nowrap;
|
||||
/* 防止换行 */
|
||||
overflow: hidden;
|
||||
/* 隐藏溢出部分 */
|
||||
text-overflow: ellipsis;
|
||||
/* 显示省略号 */
|
||||
}
|
||||
|
||||
.uni-input {
|
||||
color: #888889;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: 0 auto;
|
||||
border-top: 1px solid #d6d6d6;
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
right: 0;
|
||||
|
||||
button {
|
||||
width: 30%;
|
||||
background-color: #1890FF;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.form-address {
|
||||
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.labelsafe {
|
||||
color: red;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.form-canvas {
|
||||
width: 95%;
|
||||
margin-bottom: 25px;
|
||||
|
||||
.sign-img {
|
||||
position: relative;
|
||||
margin-top: 8px;
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
text {
|
||||
position: absolute;
|
||||
right: 9px;
|
||||
bottom: 10px;
|
||||
background: white;
|
||||
padding: 3px 5px;
|
||||
border-radius: 2px;
|
||||
color: #5c5c5c;
|
||||
}
|
||||
}
|
||||
|
||||
.sign {
|
||||
margin-top: 8px;
|
||||
border: 1px solid #ebebeb;
|
||||
padding: 25px;
|
||||
color: #1e6fff;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.tab-box {
|
||||
width: 80%;
|
||||
height: 100vh;
|
||||
background-color: #f0f0f0;
|
||||
|
||||
.success-img {
|
||||
width: 90%;
|
||||
height: 300rpx;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.safety-popup {
|
||||
scroll-view {
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.popup-content {
|
||||
width: 90vw;
|
||||
box-sizing: border-box;
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
padding: 25px;
|
||||
}
|
||||
|
||||
.content {
|
||||
color: #7e7e7e;
|
||||
padding: 0 25px 0 25px;
|
||||
line-height: 25px;
|
||||
|
||||
.time {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.safety-btn {
|
||||
margin-top: 20px;
|
||||
border-top: 1px solid #b6b6b6;
|
||||
padding: 5px 0;
|
||||
|
||||
button {
|
||||
&::after {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user