first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,711 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 在 head 标签中添加 meta 标签,并设置 viewport-fit=cover 值 -->
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover">
<title>教职工子女入学登记
</title>
<!-- 引入样式文件 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/vant/2.12.5/index.min.css">
<link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/2.2.0/weui.min.css">
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
<script src="https://cdn.staticfile.org/vue/2.6.9/vue.min.js"></script>
<script src="https://cdn.staticfile.org/vant/2.12.5/vant.js"></script>
<script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.js"></script>
<script src="/assets/platform/plugins/moment/moment.min.js"></script>
</head>
<style>
[v-clock] {
display: none
}
html, body {
height: 100%;
width: 100%;
font-family: PingFang SC, 'Helvetica Neue', Arial, sans-serif;
}
#v-cover {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
z-index: 9999;
box-sizing: border-box;
/*background-color: rgba(216,191,216,.3);*/
background-image: url(//image.wjx.com/images/newimg/mobile-cover/cover3@1x.jpg);
background-repeat: no-repeat;
background-size: cover;
background-color: #7b99ec;
}
@keyframes mylogo {
from {
top: 3px;
}
to {
top: -3px;
}
}
@-moz-keyframes mylogo /* Firefox */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
@-webkit-keyframes mylogo /* Safari 和 Chrome */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
@-o-keyframes mylogo /* Opera */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
.start_title {
position: relative;
font-size: 12px;
/*color: rgb(106, 0, 95);*/
color: white;
animation: mylogo 0.1s linear 0s infinite alternate;
/* Firefox: */
-moz-animation: mylogo 0.1s linear 0s infinite alternate;
/* Safari 和 Chrome: */
-webkit-animation: mylogo 0.1s linear 0s infinite alternate;
/* Opera: */
-o-animation: mylogo 0.1s linear 0s infinite alternate;
}
.start_logo {
text-align: center;
border-radius: 50%;
/*border: rgb(106, 0, 95) 1px solid;*/
border: white 1px solid;
position: relative;
width: 30px;
height: 30px;
left: 0;
right: 0;
margin: auto;
margin-bottom: 30px;
cursor: pointer;
box-sizing: border-box;
animation: mylogo 0.1s linear 0s infinite alternate;
/* Firefox: */
-moz-animation: mylogo 0.1s linear 0s infinite alternate;
/* Safari 和 Chrome: */
-webkit-animation: mylogo 0.1s linear 0s infinite alternate;
/* Opera: */
-o-animation: mylogo 0.1s linear 0s infinite alternate;
}
.v-cover-title {
padding: 30px 20px;
box-sizing: border-box;
width: 100%;
height: 60%;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.van-doc-demo-block__title {
margin: 0;
padding: 0 16px;
color: rgba(69, 90, 100, 0.6);
font-weight: normal;
font-size: 14px;
line-height: 16px;
}
.delete-button {
height: 100%;
}
.van-swipe-cell__wrapper {
border: none;
}
</style>
<body>
<!--<div id="v-cover">
<div class="v-cover-title">
<div style="font-size: 24px;width: 100%;text-align: center;color: white">幼儿园秋季入园登记</div>
</div>
<div style="position: absolute;height: 55px;width: 100%;bottom: 0;left: 0;text-align: center">
<div class="start_title" style="height: 16px;line-height: 16px">上滑开始</div>
<div class="start_logo">
<svg style="height: 40%;width: 100%;margin-top: 30%" t="1583736487548" class="icon" viewBox="0 0 1462 1024"
version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3119" width="32" height="32">
<path d="M788.187 477.842a80.823 80.823 0 0 0-111.908 0l-484.937 469.65c-21.358 20.773-26.99 50.25-18.652 76.508l494.958-415.451c6.437-5.486 13.75-9.436 21.358-13.02 26.331-16.603 60.708-16.603 86.82 0.146 7.46 3.438 14.629 7.388 20.846 12.727L1291.776 1024a74.533 74.533 0 0 0-18.725-76.654L788.187 477.842z m645.56 165.01L804.132 29.33a104.74 104.74 0 0 0-145.335 0L29.038 642.853C1.17 669.915-5.925 708.535 4.754 742.839l642.56-542.866a121.417 121.417 0 0 1 27.868-16.97 105.106 105.106 0 0 1 112.786 0.366c9.655 4.389 18.87 9.801 27.136 16.604l642.926 542.866a97.134 97.134 0 0 0-24.357-99.986z"
p-id="3120" fill="white"></path>
</svg>
</div>
</div>
</div>-->
<div v-clock id="app" style="width: 100%;height: 100%;position: relative;overflow-y: auto;">
<van-nav-bar title="入学登记" fixed placeholder safe-area-inset-top @click-left="history.back()"
:left-arrow="leftArrow"></van-nav-bar>
<div>
<van-image
width="100%"
height="200px"
fit="cover"
src="/assets/mobile/img/school_apply_bg.webp"/>
</div>
<van-form @submit="doSubmit" style="margin-top: 10px">
<van-tabs v-model="checked" color="rgb(106, 0, 95)" type="card">
<van-tab name="1" title="基础信息">
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title"
style="font-weight: bolder;color: rgb(106, 0, 95)">
用户信息</h2>
</div>
<van-cell-group>
<van-field
@input="doInput"
required
v-model="formData.loginname"
name="loginname"
label="工&emsp;&emsp;号"
placeholder="工资号"
:rules="[{ required: true, message: '请填写工资号' }]"
></van-field>
<van-field
v-model="formData.username"
name="username"
label="姓&emsp;&emsp;名"
:placeholder="getPlaceholder(formData,'username')"
></van-field>
<van-field
v-model="formData.unionname"
name="unionname"
label="所属工会"
:placeholder="getPlaceholder(formData,'unionname')"
></van-field>
<van-field
required
v-model="formData.dj_iphone"
name="dj_iphone"
label="手机号码"
placeholder="手机号码"
:rules="[{ required: true, message: '请填写手机号码' }]"
></van-field>
<van-field
required
v-model="formData.dj_zw"
name="dj_zw"
label="职&emsp;&emsp;务"
placeholder="职务"
:rules="[{ required: true, message: '请填写职务' }]"
></van-field>
</van-cell-group>
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title"
style="font-weight: bolder;color: rgb(106, 0, 95)">
子女信息</h2>
</div>
<van-cell-group>
<van-field
required
v-model="formData.dj_znname"
name="dj_znname"
label="子女姓名"
placeholder="子女姓名"
:rules="[{ required: true, message: '请填写子女姓名' }]"
></van-field>
<van-field
readonly
clickable
name="dj_znsex"
:value="formData.dj_znsex"
label="性别"
placeholder="性别"
@click="dj_znsexShowPicker = true"
required
:rules="[{ required: true, message: '请选择性别' }]"
></van-field>
<van-popup v-model="dj_znsexShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="sexArr"
@confirm="function(val){formData.dj_znsex=val;dj_znsexShowPicker=false}"
@cancel="dj_znsexShowPicker = false"
></van-picker>
</van-popup>
<!-- <van-field
readonly
clickable
name="dj_znzsny"
:value="formData.dj_znzsny"
label="出生日期"
placeholder="点击选择"
@click="birthdayShowPicker = true"
required
:rules="[{ required: true, message: '请选择出生日期' }]"
></van-field>
<van-popup v-model="birthdayShowPicker" position="bottom">
<van-datetime-picker
type="date"
:min-date="new Date('2000-01-01')"
:max-date="new Date()"
@confirm="birthdayConfirm"
@cancel="birthdayShowPicker = false"
></van-datetime-picker>
</van-popup>-->
<van-field
required
name="dj_znidcard"
v-model="formData.dj_znidcard"
label="身份证号"
placeholder="身份证号"
:rules="[{ required: true, message: '请填写子女身份证号' }]"
></van-field>
<van-field
name="dj_jdxx"
v-model="formData.dj_znidcard"
label="就读学校"
placeholder="就读学校"
></van-field>
<van-field
name="dj_jdxx"
v-model="formData.dj_znidcard"
label="子女户口所在地"
placeholder="子女户口所在地"
></van-field>
<van-field
readonly
clickable
name="dj_jzgzngx"
:value="formData.dj_jzgzngx"
label="子女关系"
placeholder="点击选择"
@click="dj_jzgzngxShowPicker = true"
required
:rules="[{ required: true, message: '请选择子女关系' }]"
></van-field>
<van-popup v-model="dj_jzgzngxShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="fzgxArr"
@confirm="function(val){formData.dj_jzgzngx=val;dj_jzgzngxShowPicker=false}"
@cancel="dj_jzgzngxShowPicker = false"
></van-picker>
</van-popup>
<van-field
readonly
clickable
name="dj_sqxx"
:value="formData.dj_sqxx"
label="申请班级"
placeholder="点击选择"
@click="dj_sqxxShowPicker = true"
required
:rules="[{ required: true, message: '请选择申请班级' }]"
></van-field>
<van-popup v-model="dj_sqxxShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="sqbjArr"
@confirm="function(val){formData.dj_sqxx=val;dj_sqxxShowPicker=false}"
@cancel="dj_sqxxShowPicker = false"
></van-picker>
</van-popup>
<van-field
v-model="formData.dj_wxqyy"
name="dj_wxqyy"
label="备&emsp;&emsp;注"
rows="2"
autosize
type="textarea"
placeholder="请输入备注"
></van-field>
</van-cell-group>
</van-tab>
<van-tab name="2" title="材料信息">
<van-cell-group style="margin-top: 20px">
<van-field label="户口簿照片" required label-width="250" disabled
style="border: none;"></van-field>
<van-field>
<template #input>
<van-uploader multiple
accept="image/*"
:max-count="5"
v-model="formData.fileList1">
</van-uploader>
</template>
</van-field>
<van-field label="子女出生证照片" required label-width="250" disabled
style="border: none;"></van-field>
<van-field>
<template #input>
<van-uploader multiple
accept="image/*"
:max-count="5"
v-model="formData.fileList2">
</van-uploader>
</template>
</van-field>
<!-- <van-field label="人才骨干证明材料" label-width="250" disabled style="border: none;"></van-field>-->
<!-- <van-field>-->
<!-- <template #input>-->
<!-- <van-uploader multiple-->
<!-- accept="image/*"-->
<!-- :max-count="5"-->
<!-- v-model="formData.fileList3">-->
<!-- </van-uploader>-->
<!-- </template>-->
<!-- </van-field>-->
<!-- <van-field label="无学区房证明材料" label-width="250" disabled style="border: none;"></van-field>-->
<!-- <van-field>-->
<!-- <template #input>-->
<!-- <van-uploader multiple-->
<!-- accept="image/*"-->
<!-- :max-count="5"-->
<!-- v-model="formData.fileList4">-->
<!-- </van-uploader>-->
<!-- </template>-->
<!-- </van-field>-->
</van-cell-group>
</van-tab>
</van-tabs>
<div style="margin: 16px;">
<van-button round block color="rgb(106, 0, 95)" :disabled="subFlag" type="info"
native-type="submit">
提交
</van-button>
</div>
</van-form>
<van-number-keyboard safe-area-inset-bottom/>
</div>
<script src="https://cdn.staticfile.org/js-cookie/2.2.1/js.cookie.min.js"></script>
<script>
var startX, startY, moveEndX, moveEndY, X, Y;
$("#v-cover").on("touchstart", function (e) {
e.preventDefault();
startX = e.originalEvent.changedTouches[0].pageX,
startY = e.originalEvent.changedTouches[0].pageY;
});
$("#v-cover").on("touchmove", function (e) {
$(".start_logo").click(function () {
$("#v-cover").animate({"bottom": '200%'}, "slow");
})
e.preventDefault();
moveEndX = e.originalEvent.changedTouches[0].pageX
moveEndY = e.originalEvent.changedTouches[0].pageY
X = moveEndX - startX
Y = moveEndY - startY
if (Math.abs(X) > Math.abs(Y) && X > 0) {
// alert("像右滑动");
} else if (Math.abs(X) > Math.abs(Y) && X < 0) {
// alert("像左滑动");
} else if (Math.abs(Y) > Math.abs(X) && Y > 0) {
// alert("下滑动");
} else if (Math.abs(Y) > Math.abs(X) && Y < -100) {
$("#v-cover").animate({"bottom": '200%'}, "slow");
} else {
// alert("触摸");
}
});
$(".start_logo").click(function () {
$("#v-cover").animate({"bottom": '200%'}, "slow");
})
$("#v-cover").click(function () {
$("#v-cover").animate({"bottom": '200%'}, "slow");
})
var vue = new Vue({
el: "#app",
data: function () {
return {
fzgxArr: ['父子', '父女', '母子', '母女', '第三代'],
sqbjArr: ['亲子班', '托班', '小班', '中班', '大班'],
fjlxArr: ['户口簿复印件', '子女出生证复印件', '单位主要负责人签字、盖章的书面证明材料', '书面情况说明以及相关证明材料'],
fjlxObj: {
'户口簿复印件': 1,
'子女出生证复印件': 2,
'单位主要负责人签字、盖章的书面证明材料': 3,
'书面情况说明以及相关证明材料': 4
},
birthdayShowPicker: false,
dj_jzgzngxShowPicker: false,
dj_sqxxShowPicker: false,
fj_lxShowPicker: false,
fileIdx: '',
checked: 1,
formData: {
dj_djlx: 1,
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
},
isNull: function (val) {
if (val == null || val == undefined || val == '') {
return true
}
return false
},
showMsg: false,
msg: '',
subFlag: true,
}
},
methods: {
checkIdCard(val) {
const p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
const result = p.test(this.formData.dj_znidcard)
if (!result) {
vant.Toast('请输入正确的身份证号码')
return
}
if (this.formData.dj_znzsny) {
const calc_birthday = this.formData.dj_znidcard.substr(6, 8)
const input_birthday = this.formData.dj_znzsny.replaceAll('-', '')
if (calc_birthday !== input_birthday) {
vant.Toast('您输入正确的身份证号码与出生日期不符合')
}
}
},
doSubmit: function () {
const calc_birthday = this.formData.dj_znidcard.substr(6, 8)
const input_birthday = this.formData.dj_znzsny.replaceAll('-', '')
if (calc_birthday !== input_birthday) {
vant.Toast('您输入正确的身份证号码与出生日期不符合')
}
if (vue.formData.fileList1.length == 0) {
vue.$toast.fail("请上传户口簿照片!")
return
}
if (vue.formData.fileList2.length == 0) {
vue.$toast.fail("请上传子女出生证照片!")
return
}
vue.$dialog.confirm({
title: '提醒',
message: '提交前,请您再次核对“基础信息”和“材料信息”,确保填写完整并准确无误。是否确认提交?'
}).then(function (value) {
setTimeout(function () {
var formdata = new FormData();
var data = Object.assign({}, vue.formData);
data.fileList1 = undefined
data.fileList2 = undefined
data.fileList3 = undefined
data.fileList4 = undefined
for (key in data) {
formdata.append(key, vue.isNull(data[key]) ? '' : data[key]);
}
formdata.append("dj_tbrq", moment().format('YYYY-MM-DD'));
formdata.append("dj_sqzt", 0);
formdata.append("dj_year", moment().format('YYYY'));
vue.formData.fileList1.forEach(function (val) {
formdata.append("files1", val.file, val.file.name);
});
vue.formData.fileList2.forEach(function (val) {
formdata.append("files2", val.file, val.file.name);
});
vue.formData.fileList3.forEach(function (val) {
formdata.append("files3", val.file, val.file.name);
});
vue.formData.fileList4.forEach(function (val) {
formdata.append("files4", val.file, val.file.name);
});
const toast = vue.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true,
message: '数据提交中...'
});
$.ajax({
url: "/platform/zgfw/mobile/rxdj/doSubmit",
type: "post",
data: formdata,
processData: false,
contentType: false,
success: function (data) {
if (data.code === 0) {
setTimeout(function () {
// 手动清除 Toast
vue.$toast.clear();
vue.$toast.success('提交成功!')
vue.formData = {
dj_djlx: 1,
loginname: vue.formData.loginname,
dj_iphone: vue.formData.dj_iphone,
dj_jzgid: vue.formData.dj_jzgid,
dj_zw: vue.formData.dj_zw,
dj_rylx: vue.formData.dj_rylx,
dj_szdw: vue.formData.dj_szdw,
dj_tbrfgh: vue.formData.dj_tbrfgh,
dj_gzh: vue.formData.dj_gzh,
username: vue.formData.username,
unionname: vue.formData.unionname,
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
}
Cookies.remove('formData_rk');
})
} else {
setTimeout(function () {
vue.$toast.clear();
vue.$toast.fail(data.msg)
}, 500)
}
},
error: function (data) {
setTimeout(function () {
vue.$toast.clear();
vue.$toast.fail(data.msg)
}, 500)
}
});
}, 500)
}).catch(function (reason) {
});
},
fjlxConfirm: function (val) {
vue.formData.fileList[vue.fileIdx].fj_lxName = val
vue.formData.fileList[vue.fileIdx].fj_lx = vue.fjlxObj[val]
vue.fj_lxShowPicker = false
},
birthdayConfirm: function (val) {
vue.formData.dj_znzsny = moment(val).format('YYYY-MM-DD');
vue.birthdayShowPicker = false
},
getPlaceholder: function (formData, key) {
if (this.isNull(formData.userid)) {
return "输入工资号后自动匹配"
} else {
if (this.isNull(formData[key])) {
return '暂无'
}
return formData[key]
}
},
doInput: function (val) {
vue.$set(vue.formData, 'username', undefined)
vue.$set(vue.formData, 'unionname', undefined)
vue.$set(vue.formData, 'dj_jzgid', undefined)
vue.$set(vue.formData, 'dj_szdw', undefined)
vue.$set(vue.formData, 'dj_tbrfgh', undefined)
vue.$set(vue.formData, 'dj_gzh', undefined)
$.get("/platform/zgfw/mobile/rxdj/queryUserByLoginname", {loginname: val}, function (data) {
if (data.code == 0) {
if (!vue.isNull(data.data)) {
vue.$set(vue.formData, 'dj_jzgid', data.data.id)
vue.$set(vue.formData, 'dj_szdw', data.data.unitid)
vue.$set(vue.formData, 'dj_tbrfgh', data.data.unioninfomgr_id)
vue.$set(vue.formData, 'dj_gzh', data.data.loginname)
vue.$set(vue.formData, 'username', data.data.username)
vue.$set(vue.formData, 'unionname', data.data.unionname)
}
}
})
},
async getUserInfo() {
const {data} = await $.get('/platform/zgfw/mobile/rxdj/getUserInfo')
if (data != null) {
vue.$set(vue.formData, 'dj_jzgid', data.id)
vue.$set(vue.formData, 'dj_szdw', data.unitid)
vue.$set(vue.formData, 'dj_tbrfgh', data.unionid)
vue.$set(vue.formData, 'dj_gzh', data.loginname)
vue.$set(vue.formData, 'username', data.username)
vue.$set(vue.formData, 'unionname', data.unionname)
vue.$set(vue.formData, 'loginname', data.loginname)
} else {
vant.Dialog.alert({
title: '提示',
message: '智慧工会系统没有查询到您的个人信息,请联系校工会老师进行人员数据更新。',
}).then(() => {
});
}
}
},
async created() {
GetQueryString("client") == "mobile" ? this.leftArrow = true : this.leftArrow = false
await this.getUserInfo()
let self = this
$.post("/platform/zgfw/mobile/rxdj/getFlag", {'lx': self.formData.dj_djlx}, function (data) {
if (data.code != 0) {
self.$toast.fail(data.msg)
} else {
self.subFlag = false
}
})
if (Cookies.get("formData_rk") != undefined) {
parseData = JSON.parse(Cookies.get("formData_rk"))
parseData.fileList1 = []
parseData.fileList2 = []
parseData.fileList3 = []
parseData.fileList4 = []
self.formData = parseData
Cookies.remove('formData_rk');
}
setInterval(function () {
var data = Object.assign({}, self.formData);
data.fileList1 = []
data.fileList2 = []
data.fileList3 = []
data.fileList4 = []
Cookies.set("formData_rk", JSON.stringify(data))
}, 1000)
}
})
function GetQueryString(name) {
const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
const r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return "";
}
</script>
</body>
</html>
@@ -0,0 +1,753 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
[v-clock] {
display: none
}
html, body {
height: 100%;
width: 100%;
font-family: PingFang SC, 'Helvetica Neue', Arial, sans-serif;
}
#v-cover {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
z-index: 9999;
box-sizing: border-box;
/*background-color: rgba(216,191,216,.3);*/
background-image: url(//image.wjx.com/images/newimg/mobile-cover/cover3@1x.jpg);
background-repeat: no-repeat;
background-size: cover;
background-color: #1867b0;
}
@keyframes mylogo {
from {
top: 3px;
}
to {
top: -3px;
}
}
@-moz-keyframes mylogo /* Firefox */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
@-webkit-keyframes mylogo /* Safari 和 Chrome */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
@-o-keyframes mylogo /* Opera */
{
from {
top: 3px;
}
to {
top: -3px;
}
}
.start_title {
position: relative;
font-size: 12px;
/*color: rgb(106, 0, 95);*/
color: white;
animation: mylogo 0.1s linear 0s infinite alternate;
/* Firefox: */
-moz-animation: mylogo 0.1s linear 0s infinite alternate;
/* Safari 和 Chrome: */
-webkit-animation: mylogo 0.1s linear 0s infinite alternate;
/* Opera: */
-o-animation: mylogo 0.1s linear 0s infinite alternate;
}
.start_logo {
text-align: center;
border-radius: 50%;
/*border: rgb(106, 0, 95) 1px solid;*/
border: white 1px solid;
position: relative;
width: 30px;
height: 30px;
left: 0;
right: 0;
margin: auto;
margin-bottom: 30px;
cursor: pointer;
box-sizing: border-box;
animation: mylogo 0.1s linear 0s infinite alternate;
/* Firefox: */
-moz-animation: mylogo 0.1s linear 0s infinite alternate;
/* Safari 和 Chrome: */
-webkit-animation: mylogo 0.1s linear 0s infinite alternate;
/* Opera: */
-o-animation: mylogo 0.1s linear 0s infinite alternate;
}
.v-cover-title {
padding: 30px 20px;
box-sizing: border-box;
width: 100%;
height: 60%;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.van-doc-demo-block__title {
margin: 0;
padding: 0 16px;
color: #1867b0;
font-weight: normal;
font-size: 14px;
line-height: 16px;
}
.delete-button {
height: 100%;
}
.van-swipe-cell__wrapper {
border: none;
}
.van-cell {
width: 90%;
margin-left: 24px;
}
</style>
<body>
<!--<div id="v-cover" >
<div class="v-cover-title">
<div style="font-size: 20px;width: 100%;text-align: center;color: white">教职工子女幼升小、小学入学调查</div>
</div>
<div style="position: absolute;height: 55px;width: 100%;bottom: 0;left: 0;text-align: center">
<div class="start_title" style="height: 16px;line-height: 16px">上滑开始</div>
<div class="start_logo">
<svg style="height: 40%;width: 100%;margin-top: 30%" t="1583736487548" class="icon" viewBox="0 0 1462 1024"
version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3119" width="32" height="32">
<path d="M788.187 477.842a80.823 80.823 0 0 0-111.908 0l-484.937 469.65c-21.358 20.773-26.99 50.25-18.652 76.508l494.958-415.451c6.437-5.486 13.75-9.436 21.358-13.02 26.331-16.603 60.708-16.603 86.82 0.146 7.46 3.438 14.629 7.388 20.846 12.727L1291.776 1024a74.533 74.533 0 0 0-18.725-76.654L788.187 477.842z m645.56 165.01L804.132 29.33a104.74 104.74 0 0 0-145.335 0L29.038 642.853C1.17 669.915-5.925 708.535 4.754 742.839l642.56-542.866a121.417 121.417 0 0 1 27.868-16.97 105.106 105.106 0 0 1 112.786 0.366c9.655 4.389 18.87 9.801 27.136 16.604l642.926 542.866a97.134 97.134 0 0 0-24.357-99.986z"
p-id="3120" fill="white"></path>
</svg>
</div>
</div>
</div>-->
<div v-clock id="app" style="width: 100%;height: 100%;position: relative;overflow-y: auto;">
<van-nav-bar title="入学登记" fixed placeholder safe-area-inset-top
@click-left="history.go(-1)"
:left-arrow="leftArrow"></van-nav-bar>
<div>
<van-image
width="100%"
height="200px"
fit="cover"
src="/assets/mobile/img/school_apply_bg.webp"
/>
</div>
<van-form label-width="120" colon style="margin-top: 10px;"
input-align="right" ref="form">
<van-tabs v-model="checked" color="#004e64" type="card">
<van-tab name="1" title="基础信息">
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title"
style="font-weight: bolder;color: #004e64">
子女信息</h2>
</div>
<van-cell-group>
<van-field
required
v-model="formData.dj_znname"
name="dj_znname"
label="子女姓名"
placeholder="子女姓名"
:rules="[{ required: true, message: '请填写子女姓名' }]"
></van-field>
<van-field
readonly
clickable
name="dj_znsex"
:value="formData.dj_znsex"
label="性别"
placeholder="性别"
@click="dj_znsexShowPicker = true"
required
:rules="[{ required: true, message: '请选择性别' }]"
></van-field>
<van-popup v-model="dj_znsexShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="sexArr"
@confirm="function(val){formData.dj_znsex=val;dj_znsexShowPicker=false}"
@cancel="dj_znsexShowPicker = false"
></van-picker>
</van-popup>
<van-field
readonly
clickable
name="dj_znzsny"
:value="formData.dj_znzsny"
label="出生日期"
placeholder="点击选择"
@click="birthdayShowPicker = true"
required
:rules="[{ required: true, message: '请选择出生日期' }]"
></van-field>
<van-popup v-model="birthdayShowPicker" position="bottom">
<van-datetime-picker
type="date"
:min-date="new Date('2000-1-1')"
:max-date="new Date(nlxz)"
@confirm="birthdayConfirm"
@cancel="birthdayShowPicker = false"
></van-datetime-picker>
</van-popup>
<van-field
required
name="dj_znidcard"
v-model="formData.dj_znidcard"
label="身份证号"
placeholder="身份证号"
:rules="[{ required: true, message: '请填写子女身份证号' }]"
></van-field>
<van-field
required
name="dj_jdxx"
v-model="formData.dj_jdxx"
label="正读学校"
:rules="[{ required: true, message: '请填写正读学校' }]"
placeholder="正读学校"
></van-field>
<van-field
required
name="dj_hjszd"
v-model="formData.dj_hjszd"
label="户籍所在地"
:rules="[{ required: true, message: '请填写户籍所在地' }]"
placeholder="户籍所在地"
></van-field>
<van-field
required
readonly
v-model="formData.dj_sqxx"
name="dj_sqxx"
label="拟选学校"
@click="sqxxShow = true"
placeholder="拟选学校"
></van-field>
<van-action-sheet v-model="sqxxShow" :actions="sqxxActions"
@select="(val)=>{$set(formData,'dj_sqxx',val.name);sqxxShow=false}"></van-action-sheet>
<!--
<van-field
readonly
clickable
name="dj_sqxx"
:value="formData.dj_sqxx"
label="申请班级"
placeholder="点击选择"
@click="dj_sqxxShowPicker = true"
required
:rules="[{ required: true, message: '请选择申请班级' }]"
></van-field>
<van-popup v-model="dj_sqxxShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="sqbjArr"
@confirm="function(val){formData.dj_sqxx=val;dj_sqxxShowPicker=false}"
@cancel="dj_sqxxShowPicker = false"
></van-picker>
</van-popup>-->
</van-cell-group>
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title"
style="font-weight: bolder;color: #004e64">
教职工信息</h2>
</div>
<van-cell-group>
<van-field readonly
v-model="formData.loginname"
name="loginname"
label="工&emsp;&emsp;号"
placeholder="工资号"
></van-field>
<van-field readonly
v-model="formData.username"
name="username"
label="姓&emsp;&emsp;名"
></van-field>
<template>
<van-field
required
v-model="formData.dj_zw"
name="dj_zw"
label="职务、职称"
:rules="[{ required: true, message: '请填写职务、职称' }]"
placeholder="职务、职称"
></van-field>
<!-- <van-field
required
:value="formData.dj_rxsj"
label="工作单位起始时间"
placeholder="请选择工作单位起始时间"
:rules="[{ required: true, message: '请选择工作单位起始时间' }]"
@click="dj_rxsjShowPicker = true"
></van-field>
<van-popup v-model="dj_rxsjShowPicker" position="bottom">
<van-datetime-picker
type="year-month"
cancel-button-text="取消选择"
:min-date="new Date('1952-10')"
:max-date="maxYearMonth"
@confirm="dj_rxsjConfirm"
@cancel="dj_rxsjCancel"
></van-datetime-picker>
</van-popup>-->
</template>
<van-field
required
v-model="formData.dj_iphone"
name="dj_iphone"
label="手机号码"
placeholder="手机号码"
:rules="[{ required: true, message: '请填写手机号码' }]"
></van-field>
<van-field
readonly
v-model="formData.dj_szdw"
name="dj_szdw"
label="所在单位"
placeholder="所在单位"
></van-field>
<van-field
required
readonly
v-model="formData.dj_ygfs"
name="dj_ygfs"
label="用工方式"
@click="ygfsShow = true"
placeholder="用工方式"
></van-field>
<van-action-sheet v-model="ygfsShow" :actions="ygfsActions"
@select="(val)=>{$set(formData,'dj_ygfs',val.name);ygfsShow=false}"></van-action-sheet>
<!-- <van-field
readonly
clickable
name="dj_jzgzngx"
:value="formData.dj_jzgzngx"
label="子女关系"
placeholder="点击选择"
@click="dj_jzgzngxShowPicker = true"
required
:rules="[{ required: true, message: '请选择子女关系' }]"
></van-field>
<van-popup v-model="dj_jzgzngxShowPicker" position="bottom">
<van-picker
show-toolbar
:columns="fzgxArr"
@confirm="function(val){formData.dj_jzgzngx=val;dj_jzgzngxShowPicker=false}"
@cancel="dj_jzgzngxShowPicker = false"
></van-picker>
</van-popup>-->
<van-field
v-model="formData.dj_bz"
name="dj_wxqyy"
label="备&emsp;&emsp;注"
rows="2"
autosize
type="textarea"
placeholder="请输入备注"
></van-field>
<van-field label="户口簿照片" label-width="300"
required></van-field>
<van-field>
<template #input>
<vant-file-upload :files.sync="hkfile"></vant-file-upload>
</template>
</van-field>
<van-field required
label="子女出生证图片"
label-width="300"
></van-field>
<van-field>
<template #input>
<vant-file-upload :files.sync="csfile"></vant-file-upload>
</template>
</van-field>
<van-field required
label="学历学位证或教师资格证"
label-width="300"
></van-field>
<van-field>
<template #input>
<vant-file-upload :files.sync="jszgfile"></vant-file-upload>
</template>
</van-field>
<van-field required
label="聘用合同复印件"
label-width="300"
></van-field>
<van-field>
<template #input>
<vant-file-upload :files.sync="pyhtfile"></vant-file-upload>
</template>
</van-field>
</van-cell-group>
</van-tab>
<div style="margin: 16px;">
<van-row gutter="20">
<van-col span="12">
<van-button round block plain color="#004e64" type="info"
native-type="submit" @click="doSubmit(false)">
保存
</van-button>
</van-col>
<van-col span="12">
<van-button round block color="#004e64" type="info"
native-type="submit" @click="doSubmit(true)">
提交
</van-button>
</van-col>
</van-row>
</div>
</van-tabs>
</van-form>
</div>
<script>
var vue = new Vue({
el: "#app",
data() {
return {
sqxxShow: false,
sqxxActions: [],
planList: [],
dj_jzgzngxShowPicker: false,
dj_rxsjShowPicker: false,
dj_znsexShowPicker: false,
ygfsShow: false,
ygfsActions: [{name: '老体制'}, {name: '人事代理'}, {name: '年薪制'}, {name: '二级单位自聘'}],
sexArr: ['男', '女'],
fzgxArr: ['父子', '父女', '母子', '母女'],
maxYearMonth: new Date(moment().format('YYYY-MM')),
leftArrow: false,
bmlxObj: [],
dj_zwColumns: ['无', '副科级', '正科级', '副处级', '正处级'],
dj_hjssxqColumns: ['南京市秦淮区', '南京市其它区', '南京市以外'],
dj_sqxxShowPicker: false,
dj_rylxShowPicker: false,
birthdayShowPicker: false,
dj_rzsjShowPicker: false,
dj_zcsjShowPicker: false,
dj_rcchsjShowPicker: false,
dj_djlxShowPicker: false,
dj_zwShowPicker: false,
dj_hjssxqShowPicker: false,
fileIdx: '',
checked: 1,
csfile: [],
hkfile: [],
fcfile: [],
qmkffile: [],
pyhtfile: [],
jszgfile: [],
formData: {},
isNull: function (val) {
if (val == null || val == undefined || val == '') {
return true
}
return false
},
showMsg: false,
msg: '',
nlxz: '',
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
methods: {
dj_rxsjConfirm(val) {
this.formData.dj_rxsj = moment(val).format('YYYY-MM');
this.dj_rxsjShowPicker = false
},
dj_rxsjCancel() {
this.formData.dj_rxsj = "";
this.dj_rxsjShowPicker = false
},
dj_rcchsjCancel() {
this.formData.dj_rcchsj = "";
this.dj_rcchsjShowPicker = false
},
dj_rzsjCancel() {
this.formData.dj_rzsj = "";
this.dj_rzsjShowPicker = false
},
dj_zcsjCancel() {
this.formData.dj_zcsj = "";
this.dj_zcsjShowPicker = false
},
dj_hjssxqConfirm(val) {
this.formData.dj_hjssxq = val
this.dj_hjssxqShowPicker = false
},
dj_zwConfirm(val) {
this.formData.dj_zw = val
this.dj_zwShowPicker = false
},
dj_sqxxConfirm(val) {
this.formData.dj_sqxx = val.value
this.formData.dj_sqxx_name = val.text
this.dj_sqxxShowPicker = false
},
djlxConfirm(val) {
this.formData.dj_djlx = val.value
this.formData.dj_djlx_str = val.text
this.dj_djlxShowPicker = false
},
async doSubmit(flag) {
if (flag) {
await this.$refs.form.validate();
}
if (this.hkfile.length === 0 && flag) {
this.$toast.fail("请上传户口簿照片!")
return
}
if (this.csfile.length === 0 && flag) {
this.$toast.fail("请上传子女出生证图片!")
return
}
if (this.jszgfile.length === 0 && flag) {
this.$toast.fail("请上传教职工学历学位证或教师资格证!")
return
}
if (this.pyhtfile.length === 0 && flag) {
this.$toast.fail("请上传聘用合同复印件!")
return
}
let confirm = ""
const {data} = await $.get("/platform/zgfw/rxdjsq/hasDJ", this.formData)
if (data && data.count >= 1 && !this.formData.dj_id) {
this.formData.dj_djlx_str = this.formData.dj_djlx_str ? this.formData.dj_djlx_str : this.bmlxObj[0].text
confirm = await this.$dialog.confirm({
title: '确定要提交【' + this.formData.dj_djlx_str + "】的入学登记吗?",
message: '该子女已经提交是否继续,如继续则覆盖上一次提交的内容!'
})
this.formData.dj_id = data.dj_id
} else {
confirm = await this.$dialog.confirm({
title: '确定要提交【' + this.formData.dj_djlx_str + "】的入学登记吗?",
message: flag ? '提交前,请您再次核对“基础信息”和“材料信息”,确保填写完整并准确无误。是否确认提交?' : '保存后如需提交,请前往我的登记修改后在提交'
})
}
if (confirm === "confirm") {
this.hkfile.map(v => {
v.bz = "hkfile"
})
this.csfile.map(v => {
v.bz = "csfile"
})
this.jszgfile.map(v => {
v.bz = "jszgfile"
})
this.pyhtfile.map(v => {
v.bz = "pyhtfile"
})
const toast = vue.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true,
message: '数据提交中...'
})
const a = this.formData.dj_id ? "/doEdit" : "/doSubmit"
const data = await $.post("/platform/zgfw/mobile/rxdj" + a, {
flag: flag,
data: JSON.stringify(this.formData),
csfile: JSON.stringify(this.csfile),
hkfile: JSON.stringify(this.hkfile),
jszgfile: JSON.stringify(this.jszgfile),
pyhtfile: JSON.stringify(this.pyhtfile)
})
if (data.code === 0) {
this.$toast.success('提交成功!')
setTimeout(() => {
this.$toast.clear();
history.go(-1)
}, 2000)
} else {
this.$toast.clear();
this.$toast.fail(data.msg)
}
}
},
dj_rcchsjConfirm(val) {
this.formData.dj_rcchsj = moment(val).format('YYYY-MM');
this.dj_rcchsjShowPicker = false
},
dj_zcsjConfirm(val) {
this.formData.dj_zcsj = moment(val).format('YYYY-MM');
this.dj_zcsjShowPicker = false
},
dj_rzsjConfirm(val) {
this.formData.dj_rzsj = moment(val).format('YYYY-MM');
this.dj_rzsjShowPicker = false
},
birthdayConfirm(val) {
this.formData.dj_znzsny = moment(val).format('YYYY-MM-DD');
this.birthdayShowPicker = false
},
getPlaceholder: function (formData, key) {
if (this.isNull(formData.userid)) {
return "输入工资号后自动匹配"
} else {
if (this.isNull(formData[key])) {
return '暂无'
}
return formData[key]
}
},
async getUserInfo() {
const {data} = await $.get('/platform/zgfw/mobile/rxdj/getUserInfo')
if (data != null) {
this.$set(this.formData, 'dj_jzgid', data.id)
this.$set(this.formData, 'dj_szdw', data.unitname)
this.$set(this.formData, 'dj_tbrfgh', data.unionid)
this.$set(this.formData, 'dj_gzh', data.loginname)
this.$set(this.formData, 'username', data.username)
this.$set(this.formData, 'unionname', data.unionname)
this.$set(this.formData, 'loginname', data.loginname)
this.$set(this.formData, 'dj_zc', data.position)
// this.$set(this.formData, 'dj_zw', data.position)
this.$set(this.formData, 'dj_iphone', data.mobile)
} else {
vant.Dialog.alert({
title: '提示',
message: '智慧工会系统没有查询到您的个人信息,请联系校工会老师进行人员数据更新。',
}).then(() => {
});
}
},
async getPlanStatus(dj_djlx) {
const res = await $.post("/platform/zgfw/rxdjsq/planStatus")
if ((res.yey > 0 || this.formData.dj_id) && dj_djlx === "1") {
this.bmlxObj.push({text: "幼升小", value: 1})
}
if ((res.xx > 0 || this.formData.dj_id) && dj_djlx === "2") {
this.bmlxObj.push({text: "小学", value: 2})
}
if ((res.cz > 0 || this.formData.dj_id) && dj_djlx === "3") {
this.bmlxObj.push({text: "初升高", value: 3})
}
if (this.bmlxObj && this.bmlxObj.length > 0) {
this.formData.dj_djlx = this.bmlxObj[0].value
this.formData.dj_djlx_str = this.bmlxObj[0].text
}
this.nlxz = this.planList.find(v => v.bmlx === this.formData.dj_djlx).nlxz
},
async getPlanByThisYear() {
const res = await $.post("/platform/zgfw/rxdj/plan/getPlanByThisYear")
this.planList = res.data
},
async getFile(dj_id) {
const {data} = await $.get('/platform/zgfw/rxdjxx/findOne', {id: dj_id})
this.csfile = []
this.hkfile = []
this.fcfile = []
this.qmkffile = []
if (data.fjs && data.fjs.length > 0) {
const csfile = data.fjs.filter(v => v.bz === "csfile")
const hkfile = data.fjs.filter(v => v.bz === "hkfile")
const fcfile = data.fjs.filter(v => v.bz === "fcfile")
const qmkffile = data.fjs.filter(v => v.bz === "qmkffile")
const jszgfile = data.fjs.filter(v => v.bz === "jszgfile")
const pyhtfile = data.fjs.filter(v => v.bz === "pyhtfile")
this.csfile = csfile
this.hkfile = hkfile
this.fcfile = fcfile
this.qmkffile = qmkffile
this.jszgfile = jszgfile
this.pyhtfile = pyhtfile
}
},
async findOne(dj_id) {
const {data} = await $.get("/platform/zgfw/mobile/rxdj/audit/findOne", {dj_id: dj_id})
data.username = "${@shiro.getPrincipalProperty('username')}"
data.loginname = "${@shiro.getPrincipalProperty('loginname')}"
this.formData = data
}
},
async created() {
await this.getPlanByThisYear()
GetQueryString("client") == "mobile" ? this.leftArrow = true : this.leftArrow = false
const dj_id = GetQueryString("dj_id")
const dj_djlx = GetQueryString("dj_djlx")
if (dj_id) {
this.findOne(dj_id)
this.getFile(dj_id)
} else {
await this.getUserInfo()
}
await this.getPlanStatus(dj_djlx)
getDictByCode('rxdj_xxmc').then(res => {
this.sqxxActions = res
})
}
})
</script>
<!--#
}
#-->