疗休养
This commit is contained in:
@@ -0,0 +1,366 @@
|
||||
const BASE = {
|
||||
template: /*language=HTML*/ `
|
||||
<div>
|
||||
<div>
|
||||
<el-form :model="formData" ref="formRef" label-width="0" :rules="formRules" size="small">
|
||||
<el-descriptions :column="2" border class="descriptions-form">
|
||||
<el-descriptions-item label="姓名">
|
||||
<el-form-item prop="userName">
|
||||
<el-input v-model="formData.userName" readonly size="small"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">
|
||||
<el-form-item prop="loginName">
|
||||
<el-input v-model="formData.loginName" readonly size="small"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证件">
|
||||
<el-form-item prop="idCard">
|
||||
<el-input v-model="formData.idCard" placeholder="请输入身份证号码" maxlength="18"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="手机号">
|
||||
<el-form-item prop="mobile">
|
||||
<el-input v-model="formData.mobile" placeholder="请输入联系电话" maxlength="32"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会" :span="2">
|
||||
<el-form-item prop="unionName">
|
||||
<el-input v-model="formData.unionName" readonly size="small"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报名酒店">
|
||||
<el-form-item prop="baseName">
|
||||
<el-input v-model="formData.baseName" readonly size="small"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出行时间">
|
||||
<el-form-item prop="specificTime">
|
||||
<el-date-picker
|
||||
v-model="formData.specificTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
:picker-options="datePickerOptions"
|
||||
:default-value="defaultPickerDate">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-form-item prop="sign">
|
||||
<sign :is_value_base64="false" :qz.sync="formData.sign"
|
||||
prefix="RAPY" ref="sign"></sign>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="相关文件" :span="3">
|
||||
<div style="display: flex;justify-content: space-around">
|
||||
<div style="display: flex">
|
||||
<el-checkbox size="medium" style="width: 70%;color: #F56C6C;white-space: nowrap"
|
||||
@change="readChangeSafe" v-model="hasReadSafe">
|
||||
我已查看
|
||||
<span @click="openReadSafe" style="color: #0e5996; text-decoration: underline">
|
||||
《安全告知书》
|
||||
</span>
|
||||
<el-tag @click="openReadSafe" size="medium" effect="dark">查看</el-tag>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
<div style="display: flex;" v-if="formData.specificTime && formData.sign">
|
||||
<el-checkbox size="medium" style="width: 70%;color: #F56C6C;white-space: nowrap"
|
||||
@change="readChange" v-model="hasRead">
|
||||
我已查看
|
||||
<span @click="openRead" style="color: #0e5996; text-decoration: underline">
|
||||
《定点自由行申请表》
|
||||
</span>
|
||||
<el-tag @click="openRead" size="medium" effect="dark">查看</el-tag>
|
||||
</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
|
||||
</el-form>
|
||||
|
||||
<el-row justify="end" type="flex" class="mt10">
|
||||
<el-button v-if="showButton" @click="joinSubmit" type="primary">提交报名</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<el-dialog title="安全告知书" :visible.sync="readVisibleSafe" :close-on-click-modal="false"
|
||||
:close-on-press-escape="false" append-to-body>
|
||||
<iframe
|
||||
:src="readSafeUrl + '#toolbar=0'"
|
||||
width="100%"
|
||||
height="550px"
|
||||
frameborder="0"
|
||||
></iframe>
|
||||
<el-row justify="end" type="flex" class="mt10">
|
||||
<el-button @click="onReadSafe" type="primary">我已阅读确认</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog title="定点自由行申请表" :visible.sync="readVisible" :close-on-click-modal="false"
|
||||
:close-on-press-escape="false" append-to-body>
|
||||
<iframe
|
||||
:src="readUrl"
|
||||
width="100%"
|
||||
height="550px"
|
||||
frameborder="0"
|
||||
></iframe>
|
||||
<el-row justify="end" type="flex" class="mt10">
|
||||
<el-button @click="onRead" type="primary">我已阅读确认</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
`,
|
||||
props: {
|
||||
config_data: { type: Object, required: true},
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
id: '',
|
||||
index: '',
|
||||
enrollId: '',
|
||||
fromUrlByMy: '',
|
||||
baseData: {},
|
||||
formData: {
|
||||
userName: "",
|
||||
loginName: "",
|
||||
unionName: "",
|
||||
idCard: "",
|
||||
mobile: "",
|
||||
specificTime: '',
|
||||
sign: '',
|
||||
bedInfo: {},
|
||||
companionList: [],
|
||||
},
|
||||
formRules: {
|
||||
userName: [{required: false, message: "必填", trigger: ["change", "blur"]}],
|
||||
loginName: [{required: false, message: "必填", trigger: ["change", "blur"]}],
|
||||
specificTime: [{required: false, message: "必填", trigger: ["change", "blur"]}],
|
||||
},
|
||||
// 出行日期相关
|
||||
timeVisible: false,
|
||||
|
||||
// 定点疗休养申请表相关
|
||||
readVisible: false,
|
||||
hasRead: false,
|
||||
clickRead: false,
|
||||
readUrl: '',
|
||||
|
||||
// 修改其他线路相关
|
||||
editOther: '',
|
||||
|
||||
// 安全告知书相关
|
||||
readVisibleSafe: false,
|
||||
clickReadSafe: false,
|
||||
hasReadSafe: false,
|
||||
readSafeUrl: '',
|
||||
|
||||
showButton: true,
|
||||
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
datePickerOptions: {
|
||||
disabledDate: (time) => {
|
||||
// 如果没有设置时间范围,允许选择所有日期
|
||||
if (!this.startTime || !this.endTime) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 将当前日期转换为 yyyy-MM-dd 格式字符串进行比较
|
||||
const currentDateStr = this.formatDate(time);
|
||||
|
||||
// 直接比较日期字符串(因为都是 yyyy-MM-dd 格式)
|
||||
return currentDateStr < this.startTime ||
|
||||
currentDateStr > this.endTime
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 将 Date 对象格式化为 yyyy-MM-dd
|
||||
formatDate(date) {
|
||||
const year = date.getFullYear();
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||
const day = date.getDate().toString().padStart(2, '0');
|
||||
return year + '-' + month + '-' + day;
|
||||
},
|
||||
// 展示安全告知书
|
||||
async openReadSafe(){
|
||||
let pdfStreamUrl = encodeURIComponent(CREATE_PREVIEW_URL(this.config_data.files[0].id)) //将路径转码
|
||||
this.readSafeUrl = '/assets/platform/plugins/pdfJs/web/viewer.html?file=' + pdfStreamUrl
|
||||
this.readVisibleSafe = true
|
||||
|
||||
},
|
||||
onReadSafe() {
|
||||
this.clickReadSafe = true
|
||||
this.hasReadSafe = true
|
||||
this.readVisibleSafe = false
|
||||
},
|
||||
readChangeSafe() {
|
||||
if (this.clickReadSafe === false) {
|
||||
// this.$message.error('请先阅读《安全告知书》')
|
||||
this.hasReadSafe = false
|
||||
} else {
|
||||
this.hasReadSafe = true
|
||||
}
|
||||
},
|
||||
// 展示申请表
|
||||
async openRead(){
|
||||
const url = '/platform/theRapyRecuperation/baseManagement/showBaseApplyPdf?baseName='
|
||||
+ (this.formData.baseName ? this.formData.baseName : '') + '&specificTime=' + (this.formData.specificTime ? this.formData.specificTime : '')
|
||||
+ '&sign=' + (this.formData.sign ? this.formData.sign : '') + '&idCard=' + (this.formData.idCard ? this.formData.idCard : '')
|
||||
|
||||
let pdfStreamUrl = encodeURIComponent(url) //将路径转码
|
||||
this.readUrl = '/assets/platform/plugins/pdfJs/web/viewer.html?file=' + pdfStreamUrl
|
||||
|
||||
// this.readUrl = url
|
||||
this.readVisible = true
|
||||
// this.$nextTick(() => {
|
||||
// pdfh5 = new Pdfh5('#basePdf', {
|
||||
// pdfurl: url,
|
||||
// });
|
||||
// })
|
||||
},
|
||||
onRead() {
|
||||
this.clickRead = true
|
||||
this.hasRead = true
|
||||
this.readVisible = false
|
||||
},
|
||||
readChange() {
|
||||
if (this.clickRead === false) {
|
||||
// this.$message.error('请先阅读《定点自由行申请表》')
|
||||
this.hasRead = false
|
||||
}
|
||||
},
|
||||
//修改时查询报名信息,进行回显
|
||||
async findSignUpInfoById() {
|
||||
const res = await $.post('/platform/theRapyRecuperation/line/enroll/findSignUpInfoById', {
|
||||
id: this.enrollId,
|
||||
editOther: this.editOther
|
||||
})
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.formData.bedInfo = {}
|
||||
this.formData.companionList = []
|
||||
this.$forceUpdate()
|
||||
}
|
||||
},
|
||||
async getTimeArray(){
|
||||
const resp = await $.post('/platform/theRapyRecuperation/baseManagement/getTimeArray', {
|
||||
id: this.id
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.startTime = resp.data.minDate
|
||||
this.endTime = resp.data.maxDate
|
||||
}
|
||||
},
|
||||
async getData() {
|
||||
const res = await $.get('/platform/theRapyRecuperation/baseManagement/selectBaseAllInfo', {
|
||||
id: this.id
|
||||
})
|
||||
if (res.code === 0) {
|
||||
this.baseData = res.data
|
||||
this.formData.baseName = this.baseData.baseName
|
||||
}
|
||||
},
|
||||
async join(){
|
||||
if (this.fromUrlByMy !== 'editDo') {
|
||||
if (this.editOther) {
|
||||
this.$set(this.formData, 'baseName', this.baseData.baseName)
|
||||
this.$set(this.formData, 'takePartInLineId', null)
|
||||
this.$set(this.formData, 'takePartInUnionId', null)
|
||||
this.$set(this.formData, 'takePartInTravelAgencyId', null)
|
||||
this.$set(this.formData, 'takePartInBaseManagementId', this.baseData.id)
|
||||
} else {
|
||||
this.formData = {
|
||||
userName: "${@shiro.getPrincipalProperty('username')}",
|
||||
loginName: "${@shiro.getPrincipalProperty('loginname')}",
|
||||
unionName: "${@shiro.getPrincipalProperty('union').getUnionname()}",
|
||||
idCard: "${@shiro.getPrincipalProperty('idcard')}",
|
||||
mobile: "${@shiro.getPrincipalProperty('mobile')}",
|
||||
baseName: this.baseData.baseName,
|
||||
takePartInBaseManagementId: this.baseData.id,
|
||||
companionList: [],
|
||||
}
|
||||
}
|
||||
}
|
||||
if(this.index == 3) {
|
||||
await this.getTimeArray()
|
||||
}
|
||||
},
|
||||
joinSubmit(){
|
||||
if (this.hasReadSafe === false) {
|
||||
this.$message.error('请先阅读《安全告知书》')
|
||||
return
|
||||
}
|
||||
if (!this.formData.sign) {
|
||||
this.$message.error('请签字')
|
||||
return
|
||||
}
|
||||
if (this.hasRead === false) {
|
||||
this.$message.error('请先阅读《定点自由行申请表》')
|
||||
return
|
||||
}
|
||||
this.formData.editOther = this.editOther ? this.editOther : ''
|
||||
const cloneData = clone(this.formData)
|
||||
|
||||
this.$confirm('请确保信息填写无误,是否确认提交?', '提示', {
|
||||
confirmButtonText: '提交',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
this.showButton = false
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据提交中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForBaseManagement', {
|
||||
enroll: JSON.stringify(cloneData),
|
||||
})
|
||||
loading.close()
|
||||
if (resp.code === 0) {
|
||||
this.$message.success('报名成功')
|
||||
this.$emit('success')
|
||||
// vant.Dialog.alert({
|
||||
// title: '提示',
|
||||
// message: '报名成功',
|
||||
// }).then(() => {
|
||||
// location.replace('/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index)
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
this.showButton = true
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
async initData(data){
|
||||
this.id = data.id
|
||||
this.index = data.index
|
||||
this.enrollId = data.enrollId
|
||||
this.fromUrlByMy = data.fromUrlByMy
|
||||
this.editOther = data.editOther
|
||||
|
||||
await this.getData()
|
||||
|
||||
if (this.enrollId || this.editOther) {
|
||||
await this.findSignUpInfoById()
|
||||
}
|
||||
await this.join()
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
defaultPickerDate() {
|
||||
return this.startTime ? new Date(this.startTime) : new Date();
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user