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,261 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" clearable slot="prepend"
placeholder="姓名查询"
style="width: 120px;">
<el-option label="子女姓名" value="dj_znname"></el-option>
<el-option label="教职工姓名" value="u.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.djlx" clearable placeholder="请选择登记类型">
<!-- <el-option value="1" label="幼升小"></el-option>-->
<el-option value="2" label="小学"></el-option>
<!-- <el-option value="3" label="初升高"></el-option>-->
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionid" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" @click="doSearch"
type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-radio-group v-model="pageForm.dj_sfba" @change="doSearch">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button :label="true">已备案</el-radio-button>
<el-radio-button :label="false">待备案</el-radio-button>
</el-radio-group>
<el-radio-group v-model="pageForm.dj_sfrx" @change="doSearch">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button :label="true">继续等待</el-radio-button>
<el-radio-button :label="false">放弃名额</el-radio-button>
</el-radio-group>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change="pageOrder">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="dj_znname" label="子女姓名">
<template scope="scope">
{{scope.row.dj_znname}}
</template>
</el-table-column>
<el-table-column
prop="jzgname"
label="教职工姓名"
>
<template scope="scope">
{{scope.row.jzgname}}
</template>
</el-table-column>
<el-table-column label="分工会" prop="jzgfghname" header-align="center"
align="center" sortable
show-overflow-tooltip width="200px"></el-table-column>
<el-table-column label="单位" prop="dj_szdw" header-align="center" align="center"
sortable
show-overflow-tooltip width="200px">
</el-table-column>
<el-table-column
prop="dj_iphone"
label="手机号码">
<template scope="scope">
{{scope.row.dj_iphone}}
</template>
</el-table-column>
<el-table-column
prop="dj_djlx"
label="登记类型" sortable>
<template scope="{row}">
<span v-if="row.dj_djlx==1">幼儿园</span>
<span v-if="row.dj_djlx==2">小学</span>
<span v-if="row.dj_djlx==3">初升高</span>
</template>
</el-table-column>
<el-table-column
prop="dj_sqzt"
label="信息审核状态" sortable>
<template scope="{row}">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column
label="是否备案">
<template scope="{row}">
{{row.dj_sfba?'已备案':'待备案'}}
</template>
</el-table-column>
<el-table-column
label="备案信息">
<template scope="{row}">
<div v-if="row.dj_sfba">
{{row.dj_sfrx?'继续等待':'放弃名额'}}
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="200px">
<template slot-scope="{row}">
<el-button size="mini" @click="openView(row)">查看</el-button>
<el-button size="mini" @click="openba(row)" v-if="!row.dj_sfrx">备案
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
<template #edit>
<rxdj-info ref="auditInfo">
<template slot="audit">
<el-tab-pane label="入学备案" name="beiAnTabName">
<el-form :model="formData" ref="Form" label-width="100px">
<el-form-item label="审核人">
${@shiro.getPrincipalProperty('username')}
</el-form-item>
<el-form-item label="审核时间">
{{moment().format('YYYY-MM-DD')}}
</el-form-item>
<el-form-item label="备案信息">
<el-switch
v-model="formData.dj_sfrx"
active-color="#13ce66"
active-text="继续等待"
inactive-text="放弃名额 "
inactive-color="#ff4949">
</el-switch>
</el-form-item>
<el-form-item label="备注" prop="dj_babz">
<el-input v-model="formData.dj_babz" type="textarea" maxlength="200"
rows="5"></el-input>
</el-form-item>
</el-form>
<el-row class="mt20 text-center">
<el-button type="success" @click="doHandle">确 认</el-button>
</el-row>
</el-tab-pane>
</template>
</rxdj-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue'),
},
data() {
return {
pageForm: {
dj_sfrx: '',
dj_sfba: '',
lx: 2,
year: '',
djlx: '',
unionid: ''
},
tableData: [],
unionList: [],
unions: [],
units: []
}
},
methods: {
openView(row) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(clone(row))
},
openba(row) {
this.formData = clone(row)
this.formData.dj_sfrx = true
this.$refs.auditInfo.openAudit(clone(row), "beiAnTabName")
this.$refs.guava.edit()
},
async doHandle() {
const confirm = await this.$confirm('请确认是否完成备案?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post(loc() + '/doHandle', this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.$refs.guava.index()
this.pageData()
}
}
}
},
async created() {
this.$set(this.pageForm, 'year', moment().format('YYYY'))
this.pageData()
this.unions = await getUnions()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,310 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" clearable slot="prepend"
placeholder="姓名查询"
style="width: 120px;">
<el-option label="子女姓名" value="dj_znname"></el-option>
<el-option label="教职工姓名" value="ur.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.djlx" clearable placeholder="请选择登记类型">
<!-- <el-option value="1" label="幼升小"></el-option>-->
<el-option value="2" label="小学"></el-option>
<!-- <el-option value="3" label="初升高"></el-option>-->
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.isAudit===1">
<el-select placeholder="审核状态" v-model="pageForm.dj_sqzt" style="width: 100%;"
clearable
filterable>
<el-option label="待分工会审核" :value="5100"></el-option>
<el-option label="分工会拒绝" :value="5115"></el-option>
<el-option label="分工会退回" :value="5118"></el-option>
<el-option label="待校工会审核" :value="5200"></el-option>
<el-option label="校工会拒绝" :value="5215"></el-option>
<el-option label="校工会退回" :value="5218"></el-option>
<el-option label="审核通过" :value="5300"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" @click="doSearch" type="primary"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="登记列表">
<template #func>
<el-radio-group size="small" v-model="pageForm.isAudit" @change="doSearch"
class="ml10">
<el-radio-button :label="1">全部</el-radio-button>
<el-radio-button :label="2">已审核</el-radio-button>
<el-radio-button :label="3">未审核</el-radio-button>
</el-radio-group>
</template>
</vi-title2>
<el-table :data="tableData" @sort-change="pageOrder">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="dj_znname" label="子女姓名">
<template scope="scope">
{{scope.row.dj_znname}}
</template>
</el-table-column>
<el-table-column
prop="jzgname"
label="教职工姓名"
>
<template scope="scope">
{{scope.row.jzgname}}
</template>
</el-table-column>
<!-- <el-table-column
prop="dj_jzgzngx"
label="子女关系">
<template scope="scope">
{{scope.row.dj_jzgzngx}}
</template>
</el-table-column>-->
<el-table-column label="分工会" prop="jzgfghname" header-align="center"
align="center"
show-overflow-tooltip sortable width="200px">
</el-table-column>
<el-table-column
prop="dj_iphone"
label="手机号码">
<template scope="scope">
{{scope.row.dj_iphone}}
</template>
</el-table-column>
<el-table-column
prop="dj_djlx"
label="摸底登记类型" sortable>
<template scope="{row}">
<span v-if="row.dj_djlx==1">幼升小</span>
<span v-if="row.dj_djlx==2">小学</span>
<span v-if="row.dj_djlx==3">初升高</span>
</template>
</el-table-column>
<el-table-column
prop="dj_tbrq"
label="填报日期" sortable>
</el-table-column>
<el-table-column
prop="dj_sqzt"
sortable
label="信息审核状态">
<template scope="{row}">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
width="200px">
<template slot-scope="{row}">
<el-button size="mini" @click="openView(row)">查看
</el-button>
<el-button v-if="row.dj_sqzt===5100" size="mini" type="primary"
@click="openAudit(row)">审核
</el-button>
<el-button v-if="[5115,5118,5200].includes(row.dj_sqzt)" size="mini"
type="danger"
@click="ch(row)">
撤回
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #edit>
<rxdj-info ref="auditInfo">
<template slot="audit">
<el-tab-pane label="分工会审核" :name="fghAuditTabName">
<el-form :model="formData" ref="Form" label-width="100px">
<el-form-item label="审核人">
${@shiro.getPrincipalProperty('username')}
</el-form-item>
<el-form-item label="审核时间">
{{moment().format('YYYY-MM-DD')}}
</el-form-item>
<el-form-item label="审核意见" prop="dj_fghshyj" class="is-required">
<el-input v-model="formData.dj_fghshyj" type="textarea"
maxlength="300"
rows="5"></el-input>
</el-form-item>
</el-form>
<el-row class="mt20 text-center">
<el-button type="danger" @click="doHandle(5115)">拒 绝</el-button>
<el-button type="info" @click="doHandle(5118)">退 回</el-button>
<el-button type="success" @click="doHandle(5200)">通 过</el-button>
</el-row>
</el-tab-pane>
</template>
</rxdj-info>
</template>
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue'),
},
data() {
return {
unions: [],
units: [],
pageForm: {
lx: 1,
year: moment().format('YYYY') + "",
isAudit: 3
},
smm: {status: 'table', id: ''},
tableData: [],
formData: {},
fghAuditTabName: 'fghAuditTabName'
}
},
methods: {
pageData: function () {
$.post(base + '/platform/zgfw/rxdj/sh/pageData', this.pageForm).then(res => {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
})
},
openView(row) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(clone(row))
},
openAudit(row) {
this.formData = clone(row)
this.formData.dj_fghshyj = "情况属实。"
this.$refs.guava.edit()
this.$refs.auditInfo.openAudit(clone(row), this.fghAuditTabName)
},
async doHandle(s) {
if (this.formData.dj_fghshyj === null) {
this.$message.warning("请填写审核信息")
return
}
let title = s === 5200 ? "通过" : s === 5115 ? "拒绝" : "退回"
const confirm = await this.$confirm('确认要' + title + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.formData.dj_sqzt = s
const resp = await $.post('/platform/zgfw/rxdj/sh/dofghSh', this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.$refs.guava.index()
this.pageData()
}
}
},
ch(row) {
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post('/platform/zgfw/rxdj/sh/doch', {
dj_id: row.dj_id,
dj_sqzt: 5100
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
}).catch(() => {
});
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -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>
<!--#
}
#-->
@@ -0,0 +1,326 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-range-editor.el-input__inner {
width: 60%
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker v-model="pageForm.bmyear" type="year" value-format="yyyy"
format="yyyy年"
placeholder="年度"></el-date-picker>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.bmlx" placeholder="登记类型" clearable>
<el-option v-for="item in bmlxList" :label="item.val"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" type="primary" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-button size="medium" @click="openAdd"><i class="ti-plus"></i> 创建计划</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" header-align="center">
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column label="年度" prop="bmyear" header-align="center"
align="center"></el-table-column>
<el-table-column label="摸底开始时间" prop="bmkssj" header-align="center"
align="center"></el-table-column>
<el-table-column label="摸底结束时间" prop="bmjssj" header-align="center"
align="center"></el-table-column>
<el-table-column label="登记类型" prop="bmlx" header-align="center" align="center">
<template slot-scope="scope">
<!-- <span v-if="scope.row.bmlx==1">幼升小</span>-->
<span v-if="scope.row.bmlx==2">小学</span>
<!-- <span v-if="scope.row.bmlx==3">初升高</span>-->
</template>
</el-table-column>
<el-table-column label="状态" header-align="center" align="center">
<template slot-scope="scope">
<el-switch v-model="scope.row.bmkqzt===1"
@change="bmkqztChange(scope.row.id,scope.row.bmkqzt)"
active-color="#13ce66"
inactive-color="#dcdfe6">
</el-switch>
</template>
</el-table-column>
<el-table-column label="操作" header-align="center" align="center" width="350px">
<template slot-scope="scope">
<el-button type="info" size="mini"
@click="openCode(scope.row.bmlx)">二维码
</el-button>
<el-button type="primary" size="mini" @click="openEdit(scope.row)">编辑
</el-button>
<el-button type="danger" size="mini" @click="doDelete(scope.row.id)">删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</guava>
<el-dialog :visible.sync="addDialogVisible" title="创建计划" width="60%">
<el-form :model="AddFormData" ref="AddForm" label-width="100px" :rules="rules">
<el-form-item label="年度" prop="bmyear">
<el-date-picker v-model="AddFormData.bmyear" type="year" value-format="yyyy"
format="yyyy年"></el-date-picker>
</el-form-item>
<el-form-item label="类型" prop="bmlx">
<el-select v-model="AddFormData.bmlx">
<el-option v-for="item in bmlxList" :label="item.val"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出生日期" prop="nlxz">
<el-date-picker
v-model="AddFormData.nlxz"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出生日期">
</el-date-picker>
</el-form-item>
<el-form-item label="报名时间" prop="bmsj">
<el-date-picker
v-model="AddFormData.bmsj"
value-format="yyyy-MM-dd"
format="yyyy年MM月dd日"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="开启状态">
<el-switch v-model="AddFormData.bmkqzt"
active-color="#13ce66"
inactive-color="#dcdfe6">
</el-switch>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 认</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="editDialogVisible" title="编辑计划" width="60%">
<el-form :model="EditFormData" ref="EditForm" label-width="100px" :rules="rules">
<el-form-item label="年度" prop="bmyear">
<el-date-picker v-model="EditFormData.bmyear" type="year" value-format="yyyy"
format="yyyy年"></el-date-picker>
</el-form-item>
<el-form-item label="类型" prop="bmlx">
<el-select v-model="EditFormData.bmlx">
<el-option v-for="item in bmlxList" :label="item.val"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出生日期" prop="nlxz">
<el-date-picker
v-model="EditFormData.nlxz"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择出生日期">
</el-date-picker>
</el-form-item>
<el-form-item label="报名时间" prop="bmsj">
<el-date-picker
v-model="EditFormData.bmsj"
value-format="yyyy-MM-dd"
format="yyyy年MM月dd日"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="开启状态">
<el-switch v-model="EditFormData.bmkqzt"
active-color="#13ce66"
inactive-color="#dcdfe6">
</el-switch>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 认</el-button>
</span>
</el-dialog>
<open-qr-code ref="openQRCode" :url="qrcodeUrl"></open-qr-code>
</div>
<script>
let vue = new Vue({
el: '#app',
data() {
return {
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0
},
tableData: [],
addDialogVisible: false,
AddFormData: {
bmyear: '',
kqzt: true
},
/* bmlxList: [
{id: 1, val: '幼升小'}, {id: 2, val: '小学'}, {id: 3, val: '初升高'}
],*/
bmlxList: [{id: 2, val: '小学'}],
rules: {
bmyear: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bmlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bmsj: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
EditFormData: {},
editDialogVisible: false,
qrcodeUrl: ''
}
},
components: {
'open-qr-code': httpVueLoader('/components/plugins/OpenQRCode.vue'),
},
methods: {
openAdd() {
if (this.$refs['AddForm'])
this.$refs['AddForm'].resetFields()
this.addDialogVisible = true
},
pageNumberChange(val) {
this.pageForm.pageNumber = val
this.pageData()
},
pageSizeChange(val) {
this.pageForm.pageSize = val
this.pageData()
},
pageData() {
sublime.showLoadingbar()
$.post(base + '/platform/zgfw/rxdj/plan/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
if (res.code == 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
doAdd() {
this.$refs['AddForm'].validate((valid) => {
if (valid) {
this.AddFormData.bmkssj = this.AddFormData.bmsj[0]
this.AddFormData.bmjssj = this.AddFormData.bmsj[1]
$.post(base + '/platform/zgfw/rxdj/plan/doAdd', this.AddFormData).then(res => {
if (res.code == 0) {
this.addDialogVisible = false
this.doSearch()
this.$message.success(res.msg)
} else if (res.code == 2) {
this.$message.error(res.msg)
}
})
}
})
},
bmkqztChange(id, bmkqzt) {
$.post(base + '/platform/zgfw/rxdj/plan/bmztChange', {
id: id,
bmkqzt: bmkqzt
}).then(res => {
if (res.code == 0) {
this.doSearch()
this.$message.success(res.msg)
}
})
},
openEdit(obj) {
$.post(base + '/platform/zgfw/rxdj/plan/findOne', {id: obj.id}).then(res => {
if (res.code == 0) {
this.EditFormData = res.data
this.$set(this.EditFormData, 'bmsj', [res.data.bmkssj, res.data.bmjssj])
this.editDialogVisible = true
}
})
},
doEdit() {
this.$refs['EditForm'].validate((valid) => {
if (valid) {
this.EditFormData.bmkssj = this.EditFormData.bmsj[0]
this.EditFormData.bmjssj = this.EditFormData.bmsj[1]
$.post(base + '/platform/zgfw/rxdj/plan/doEdit', this.EditFormData).then(res => {
if (res.code == 0) {
this.editDialogVisible = false
this.pageData()
this.$message.success(res.msg)
} else if (res.code == 2) {
this.$message.error(res.msg)
}
})
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
doDelete(id) {
this.$confirm('确定要删除吗?, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post(base + '/platform/zgfw/rxdj/plan/doDelete', {id: id}).then(res => {
if (res.code == 0) {
this.$message.success(res.msg)
this.pageData()
}
})
}).catch(() => {
})
},
openCode(bmlx) {
this.$refs.openQRCode.openCode('/platform/zgfw/mobile/rxdj/psms?client=mobile&dj_djlx=' + bmlx)
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,327 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--
查询统计
Created by lyw on 2020/3/10 15:45
-->
<style>
</style>
<div id="app" v-cloak style="padding: 10px">
<div style="width: 100%;height: 43.5%;background: #fff;">
<div id="year_chart" style="height: 100%;box-sizing: border-box;padding: 20px"></div>
</div>
<div style="width: 100%;height: 5px;background-color: rgb(240,240,240)"></div>
<div style="width: 100%;background-color: rgb(240,240,240);">
<el-date-picker
@change="changYear"
style="width: 100%;"
v-model="year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div style="width: 100%;height: 5px;background-color: rgb(240,240,240)"></div>
<div style="width: 100%;height: 52.5%;background: #fff;">
<el-row style="height: 100%">
<!-- <el-col :span="8" style="box-sizing: border-box;padding: 20px;height: 100%">
<div id="bj_chart"
style="height: 100%;border-right: 2px rgb(240,240,240) solid"></div>
</el-col>-->
<el-col :span="24" style="box-sizing: border-box;padding: 20px;height: 100%">
<div id="ps_chart"
style="height: 100%;border-right: 2px rgb(240,240,240) solid"></div>
</el-col>
<!-- <el-col :span="8" style="box-sizing: border-box;padding: 20px;height: 100%">
<div id="ms_chart" style="height: 100%;"></div>
</el-col>-->
</el-row>
</div>
</div>
<script>
var vue = new Vue({
el: '#app',
data: function () {
var self = this
return {
year: new Date().getFullYear().toString(),
}
},
methods: {
changYear: function () {
var self = this
self.getData3()
self.getData4()
self.getData5()
},
async getData1() {
const resp = await $.get("/platform/zgfw/jzgznbmdj/sjkb/getData1")
if (resp.code === 0) {
const dom = document.getElementById("year_chart")
const myChart = echarts.init(dom)
const option = {
color: ["#5470c6", "#91cc75"],
title: {
text: '年度报名趋势'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: resp.data.names
},
grid: {
left: '4%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: [
{
name: '年份',
type: 'category',
boundaryGap: false,
data: resp.data.years
}
],
yAxis: [
{
name: '人数',
type: 'value'
}
],
series: resp.data.arr
};
if (option && typeof option === "object") {
myChart.setOption(option, true);
myChart.on('click', function (params) {
this.year = params.name
// self.getData2()
// this.getData3()
this.getData4()
// this.getData5()
});
}
}
},
// getData2: function () {
// var self = this
// $.get("/platform/zgfw/jzgznbmdj/sjkb/getData2", {'year': self.year}, function (data) {
// if (data.code == 0) {
// var dom = document.getElementById("lxzb_chart");
// var myChart = echarts.init(dom, 'shine');
// option = {
// title: {
// text: self.year + '年报名类型占比',
// subtext: '',
// left: 'center'
// },
// tooltip: {
// trigger: 'item',
// formatter: '{a} <br/>{b} : {c} ({d}%)'
// },
//
// series: [
// {
// name: '人数占比',
// type: 'pie',
// radius: '55%',
// center: ['50%', '55%'],
// data: data.data.data,
// emphasis: {
// itemStyle: {
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowColor: 'rgba(0, 0, 0, 0.5)'
// }
// }
// }
// ]
// };
// if (option && typeof option === "object") {
// myChart.setOption(option, true);
// }
// }
// })
// },
getData3: function () {
var self = this
$.get("/platform/zgfw/jzgznbmdj/sjkb/getData3", {'year': self.year}, function (data) {
if (data.code == 0) {
var dom = document.getElementById("bj_chart");
var myChart = echarts.init(dom, 'shine');
option = {
title: {
text: self.year + '年幼升小申请班级占比',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
series: [
{
name: '人数占比',
type: 'pie',
radius: '55%',
center: ['50%', '55%'],
data: data.data,
label: {
align: 'left',
normal: {
formatter: function (v) {
return v.name.length > 5 ? v.name.substr(0, 5) + "..." : v.name;
},
textStyle: {
// fontSize : 8
}
}
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
}
})
},
getData4: function () {
var self = this
$.get("/platform/zgfw/jzgznbmdj/sjkb/getData4", {'year': self.year}, function (data) {
if (data.code == 0) {
var dom = document.getElementById("ps_chart");
var myChart = echarts.init(dom, 'shine');
option = {
title: {
text: self.year + '年小学申请学校占比',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
series: [
{
name: '人数占比',
type: 'pie',
radius: '55%',
center: ['50%', '55%'],
data: data.data,
formatter: function (name) {
return name.length > 5 ? name.substr(0, 5) + "..." : name;
},
label: {
align: 'left',
normal: {
formatter: function (v) {
return v.name.length > 5 ? v.name.substr(0, 5) + "..." : v.name;
},
textStyle: {
// fontSize : 8
}
}
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
}
})
},
getData5: function () {
var self = this
$.get("/platform/zgfw/jzgznbmdj/sjkb/getData5", {'year': self.year}, function (data) {
if (data.code == 0) {
var dom = document.getElementById("ms_chart");
var myChart = echarts.init(dom, 'shine');
option = {
color: ["#5470c6", "#91cc75"],
title: {
text: self.year + '年初升高申请学校占比',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
series: [
{
name: '人数占比',
type: 'pie',
radius: '55%',
center: ['50%', '55%'],
label: {
align: 'left',
normal: {
formatter: function (v) {
return v.name.length > 5 ? v.name.substr(0, 5) + "..." : v.name;
},
textStyle: {
// fontSize : 8
}
}
},
data: data.data,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
}
})
},
},
created() {
this.getData1()
// this.getData2();
this.getData3()
this.getData4()
this.getData5()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,733 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<el-card shadow="never">
<template #header>
<h3 style="color: rgb(24, 103, 176);">信息登记</h3>
</template>
<el-form :model="AddFormData" :rules="rules" ref="AddForm" label-width="180px">
<el-form-item label="登记类型" prop="class">
<!-- <el-radio :disabled="planstatus.yey==0"
v-model="AddFormData.dj_djlx"
label="1">
幼升小
</el-radio>-->
<el-radio :disabled="planstatus.xx==0"
v-model="AddFormData.dj_djlx"
:label="2" @change="clickRadio">
小学
</el-radio>
<!-- <el-radio :disabled="planstatus.cz==0"
v-model="AddFormData.dj_djlx"
label="3" @change="clickRadio">
初升高
</el-radio>-->
</el-form-item>
<vi-title title="子女信息"></vi-title>
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="子女姓名" prop="dj_znname">
<el-select v-model="AddFormData.dj_znname" placeholder="请输入子女姓名"
allow-create
filterable
@change="djZnNameChange"
default-first-option
style="width: 100%">
<el-option
v-for="item in znnameOptions"
:key="item.id"
:label="item.dj_znname"
:value="item.dj_znname">
</el-option>
</el-select>
<!-- <el-input clearable v-model="AddFormData.dj_znname"
placeholder="子女姓名"></el-input>-->
</el-form-item>
</el-col>
<!-- <template v-if="AddFormData.dj_djlx==3">
<el-col :span="12">
<el-form-item label="所在小学" prop="dj_szxx">
<el-input clearable v-model="AddFormData.dj_szxx" placeholder="所在小学"></el-input>
</el-form-item>
</el-col>
&lt;!&ndash; <el-col :span="12">
<el-form-item label="六上期末考分" prop="dj_qmkf">
<el-input clearable v-model="AddFormData.dj_qmkf" placeholder="六上期末考分(语数外)"></el-input>
</el-form-item>
</el-col>&ndash;&gt;
<el-col :span="12">
<el-form-item label="学区中学" prop="dj_xqzx">
<el-input clearable v-model="AddFormData.dj_xqzx" placeholder="学区中学"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="意向学校" prop="dj_sqxx">
<el-select clearable v-model="AddFormData.dj_sqxx" style="width: 100%">
<el-option label="南京(A" value="A"></el-option>
<el-option label="南京(B" value="B"></el-option>
<el-option label="南京(C" value="C"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="语文" prop="dj_qmkfy">
<el-input :controls="false" style="width: 100%" v-model="AddFormData.dj_qmkfy"
placeholder="六上期末考分(语文)"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数学" prop="dj_qmkfs">
<el-input :controls="false" style="width: 100%" v-model="AddFormData.dj_qmkfs"
placeholder="六上期末考分(数学)"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="外语" prop="dj_qmkfw">
<el-input :controls="false" style="width: 100%" v-model="AddFormData.dj_qmkfw"
placeholder="六上期末考分(外语)"></el-input>
</el-form-item>
</el-col>
</template>-->
<template>
<!--
<el-col :span="12">
<el-form-item label="户籍所属辖区" prop="dj_hjssxq">
<el-select clearable v-model="AddFormData.dj_hjssxq" style="width: 100%"
placeholder="请选择户籍所属辖区">
<el-option label="南京市秦淮区" value="南京市秦淮区"></el-option>
<el-option label="南京市其它区" value="南京市其它区"></el-option>
<el-option label="南京市以外" value="南京市以外"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="AddFormData.dj_djlx==2">
<el-form-item label="户籍所属小学" prop="dj_hjssxx">
<el-input clearable v-model="AddFormData.dj_hjssxx" placeholder="户籍所属小学"></el-input>
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="性别" prop="dj_znsex">
<el-select clearable v-model="AddFormData.dj_znsex" style="width: 100%">
<el-option value="男" lable="男"></el-option>
<el-option value="女" lable="女"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生日期" prop="dj_znzsny">
<el-date-picker
style="width: 100%"
v-model="AddFormData.dj_znzsny"
type="date"
value-format="yyyy-MM-dd"
:placeholder="dj_znzsny_placeholder">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号" prop="dj_znidcard">
<el-input clearable v-model="AddFormData.dj_znidcard"
placeholder="身份证号"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="正读学校" prop="dj_jdxx">
<el-input clearable v-model="AddFormData.dj_jdxx"
placeholder="正读学校"></el-input>
</el-form-item>
</el-col>
<!--<el-col :span="12">
<el-form-item label="子女户口所在地" prop="dj_znhjszd">
<el-input clearable v-model="AddFormData.dj_znhjszd"
placeholder="子女户口所在地(户口本第一页公安部门盖章处的派出所地址)"></el-input>
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="户籍所在地" prop="dj_hjszd">
<el-input clearable v-model="AddFormData.dj_hjszd"
placeholder="户籍所在地"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟选学校" prop="dj_sqxx">
<el-select clearable v-model="AddFormData.dj_sqxx" style="width: 100%"
placeholder="请选择拟选学校">
<el-option :label="x.name" :value="x.code"
v-for=" x in sqxxOptions"></el-option>
</el-select>
</el-form-item>
</el-col>
</template>
</el-row>
<vi-title title="教职工信息"></vi-title>
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="教职工姓名" prop="dj_jzgid">
<el-select
style="width: 100%"
disabled
v-model="AddFormData.dj_jzgid">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号">
<el-input v-model="AddFormData.dj_gzh" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职务、职称" prop="dj_zw">
<el-input clearable v-model="AddFormData.dj_zw"
placeholder="职务、职称"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12" v-if="AddFormData.dj_djlx==2">
<el-form-item label="工作单位起始时间" prop="dj_rxsj">
<el-date-picker
style="width: 100%"
v-model="AddFormData.dj_rxsj"
type="month"
value-format="yyyy-MM"
placeholder="工作单位起始时间">
</el-date-picker>
</el-form-item>
</el-col>-->
<!--<el-col :span="12">
<el-form-item label="技术职称" prop="dj_zc">
<el-input clearable v-model="AddFormData.dj_zc" placeholder="技术职称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称评定时间" prop="dj_zcsj">
<el-date-picker
style="width: 100%"
v-model="AddFormData.dj_zcsj"
type="month"
value-format="yyyy-MM"
placeholder="职称评定时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政职务级别" prop="dj_zw">
<el-select clearable v-model="AddFormData.dj_zw" style="width: 100%" placeholder="请选择行政职务级别">
<el-option label="无" value="无"></el-option>
<el-option label="副科级" value="副科级"></el-option>
<el-option label="正科级" value="正科级"></el-option>
<el-option label="副处级" value="副处级"></el-option>
<el-option label="正处级" value="正处级"></el-option>
</el-select>
</el-form-item>
&lt;!&ndash; <el-form-item label="行政职务级别" prop="dj_zw">
<el-input clearable v-model="AddFormData.dj_zw" placeholder="行政职务级别"></el-input>
</el-form-item>&ndash;&gt;
</el-col>
<el-col :span="12">
<el-form-item label="行政职级任职时间" prop="dj_rzsj">
<el-date-picker
:disabled="AddFormData.dj_zw==='无'"
style="width: 100%"
v-model="AddFormData.dj_rzsj"
type="month"
value-format="yyyy-MM"
placeholder="行政职级任职时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="省级人才称号" prop="dj_rcch">
<el-input clearable v-model="AddFormData.dj_rcch" placeholder="省部级及以上人才称号"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="获人才称号时间" prop="dj_rcchsj">
<el-date-picker
style="width: 100%"
v-model="AddFormData.dj_rcchsj"
type="month"
value-format="yyyy-MM"
placeholder="获人才称号时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="AddFormData.dj_djlx==3">
<el-form-item label="荣誉或奖项" prop="dj_rxjx">
<el-input clearable v-model="AddFormData.dj_rxjx" placeholder="荣誉或奖项(只填写最高的一项)"></el-input>
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="手机号码" prop="dj_iphone">
<el-input clearable v-model="AddFormData.dj_iphone"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在单位">
<el-input clearable v-model="AddFormData.dj_szdw" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用工方式" prop="dj_ygfs">
<el-select clearable v-model="AddFormData.dj_ygfs" style="width: 100%"
placeholder="请选择用工方式">
<el-option label="老体制" value="老体制"></el-option>
<el-option label="人事代理" value="人事代理"></el-option>
<el-option label="年薪制" value="年薪制"></el-option>
<el-option label="二级单位自聘" value="二级单位自聘"></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="子女关系" prop="dj_jzgzngx">
<el-select clearable v-model="AddFormData.dj_jzgzngx" style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
</el-select>
</el-form-item>
</el-col>-->
</el-row>
<!--幼儿园字段 start-->
<div class="flexbox" v-if="AddFormData.dj_djlx==1">
<!-- <el-form-item label="所在单位">
<el-input clearable v-model="AddFormData.dj_szdw" readonly></el-input>
</el-form-item>
<el-form-item label="子女关系" prop="dj_jzgzngx">
<el-select clearable v-model="AddFormData.dj_jzgzngx" style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
<el-option value="第三代" lable="第三代"></el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="AddFormData.dj_djlx==1">
<el-form-item label="申请班级" prop="dj_sqxx">
<el-select clearable v-model="AddFormData.dj_sqxx" style="width: 100%">
<el-option value="亲子班" lable="亲子班"></el-option>
<el-option value="托班" lable="托班"></el-option>
<el-option value="小班" lable="小班"></el-option>
<el-option value="中班" lable="中班"></el-option>
</el-select>
</el-form-item>
</div>-->
<!--幼儿园字段 end-->
<!--小学 初中字段 start-->
<!-- <el-row gutter="30" v-if="AddFormData.dj_djlx==2">
<el-col :span="12">
<el-form-item label="教职工户籍所在地" prop="dj_hjszd">
<el-input clearable v-model="AddFormData.dj_hjszd"
placeholder="教职工户籍所在地"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房产证地址" prop="dj_jtzz">
<el-input clearable v-model="AddFormData.dj_jtzz"
placeholder="房产证地址"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="flexbox" v-if="AddFormData.dj_djlx==2||AddFormData.dj_djlx==3">
<el-form-item label="子女关系" prop="dj_jzgzngx">
<el-select clearable v-model="AddFormData.dj_jzgzngx" style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="AddFormData.dj_djlx==2||AddFormData.dj_djlx==3">
<el-form-item label="人员类型" prop="dj_rylx">
<dict-select v-model="AddFormData.dj_rylx" style="width: 100%" clearable placeholder="人员类型"
code="UserType"></dict-select>
</el-form-item>
<el-form-item label="是否人才或骨干" prop="dj_sfgcrchywgg">
<el-select clearable v-model="AddFormData.dj_sfgcrchywgg" style="width: 100%">
<el-option
v-for="item,index in ['否','是']"
:key="item"
:label="item"
:value="index">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="AddFormData.dj_djlx==2||AddFormData.dj_djlx==3">
<el-form-item label="是否有学区房" prop="dj_sfyxqf">
<el-select clearable v-model="AddFormData.dj_sfyxqf" style="width: 100%">
<el-option
v-for="item,index in ['否','是']"
:key="item"
:label="item"
:value="index">
</el-option>
</el-select>
</el-form-item>
</div>
<div v-if="AddFormData.dj_djlx==2">
<el-form-item label="房产证或无房证明" prop="fcfile">
<file-upload card :files.sync="AddFormData.fcfile"></file-upload>
</el-form-item>
</div>
<div v-if="AddFormData.dj_djlx==3">
<el-form-item label="六上期末考分证明" prop="qmkffile">
<file-upload card :files.sync="AddFormData.qmkffile"></file-upload>
</el-form-item>
</div>-->
</div>
<el-row gutter="30">
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="AddFormData.dj_bz" show-word-limit="true" type="textarea"
maxlength="100"></el-input>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="户口簿图片" prop="hkfile" class="is-required">
<file-upload :files.sync="AddFormData.hkfile" card></file-upload>
<div style="color: #F56C6C">
请上传首页和户主与子女页面
</div>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="子女出生证图片" prop="csfile" class="is-required">
<file-upload :files.sync="AddFormData.csfile" card></file-upload>
<div style="color: #F56C6C">
请上传子女出生证图片
</div>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="学历学位证或教师资格证" prop="jszgfile" class="is-required">
<file-upload :files.sync="AddFormData.jszgfile" card></file-upload>
<div style="color: #F56C6C">
请上传教职工学历学位证或教师资格证
</div>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="聘用合同复印件" prop="pyhtfile" class="is-required">
<file-upload :files.sync="AddFormData.pyhtfile" card></file-upload>
<div style="color: #F56C6C">
请上传聘用合同复印件
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row style="text-align: right;">
<el-button type="primary" @click="doAdd(false)"
plain
:disabled="planstatus.yey==0&&planstatus.xx==0&&planstatus.cz==0">保 存
</el-button>
<el-button type="primary" @click="doAdd(true)"
:disabled="planstatus.yey==0&&planstatus.xx==0&&planstatus.cz==0">确 定
</el-button>
</el-row>
</el-card>
</div>
<script>
let vue = new Vue({
el: '#app',
components: {
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
},
data() {
let hkFileValidate = (rule, value, callback) => {
if (this.AddFormData.hkfile.length === 0) {
callback(new Error('请上传户口簿图片'));
} else {
callback();
}
};
let csFileValidate = (rule, value, callback) => {
if (this.AddFormData.hkfile.length === 0) {
callback(new Error('请上传子女出生证图片'));
} else {
callback();
}
};
let pyhtFileValidate = (rule, value, callback) => {
if (this.AddFormData.pyhtfile.length === 0) {
callback(new Error('请上传聘用合同复印件'));
} else {
callback();
}
};
let jszgFileValidate = (rule, value, callback) => {
if (this.AddFormData.jszgfile.length === 0) {
callback(new Error('请上传教职工学历学位证或教师资格证'));
} else {
callback();
}
};
return {
planList: [],
sqxxOptions: [],
dj_znzsny_placeholder: "",
planstatus: {dj_znzsny: null},
AddFormData: {
csfile: [],
hkfile: []
},
rules: {
hkfile: [{validator: hkFileValidate, trigger: ['blur', 'change']}],
pyhtfile: [{validator: pyhtFileValidate, trigger: ['blur', 'change']}],
jszgfile: [{validator: jszgFileValidate, trigger: ['blur', 'change']}],
// csfile: [{validator: csFileValidate, trigger: ['blur', 'change']}],
dj_znname: [{required: true, trigger: ['blur', 'change'], message: '请填写子女姓名'}],
dj_znsex: [{required: true, trigger: ['blur', 'change'], message: '请填写性别'}],
dj_znzsny: [{
required: true,
trigger: ['blur', 'change'],
message: '请选择子女出生日期'
}],
dj_jzgzngx: [{required: true, trigger: ['blur', 'change'], message: '请选择子女关系'}],
dj_iphone: [{required: true, trigger: ['blur', 'change'], message: '请填写手机号码'}],
dj_znidcard: [{
required: true,
trigger: ['blur', 'change'],
message: '请填写身份证号'
}],
dj_jdxx: [{required: true, trigger: ['blur', 'change'], message: '请填写现就读学校'}],
dj_jzgid: [{required: true, trigger: ['blur', 'change'], message: '请填写教职工姓名'}],
dj_znhjszd: [{
required: true,
trigger: ['blur', 'change'],
message: '请填写子女户口所在地'
}],
dj_zw: [{required: true, trigger: ['blur', 'change'], message: '请填写职务和岗位'}],
dj_sqxx: [{required: true, trigger: ['blur', 'change'], message: '请选择拟选学校'}],
dj_hjszd: [{required: true, trigger: ['blur', 'change'], message: '请填写户籍所在地'}],
dj_ygfs: [{required: true, trigger: ['blur', 'change'], message: '请填写用工方式'}],
dj_rxsj: [{
required: true,
trigger: ['blur', 'change'],
message: '请选择工作单位起始时间'
}],
},
loading: false,
userList: {},
hkfile: [],
csfile: [],
qmkffile: [],
znnameOptions: [],
}
},
methods: {
clickRadio(val) {
this.$set(this.AddFormData, "dj_znname", null)
this.$set(this.AddFormData, "dj_znzsny", null)
},
async userChange(o) {
let user = this.userList.find(u => u.id == o)
this.$set(this.AddFormData, 'dj_zc', user.zc)
// this.$set(this.AddFormData, 'dj_zw', user.zw)
this.$set(this.AddFormData, 'dj_szdw', user.unitname)
this.$set(this.AddFormData, 'dj_gzh', user.loginname)
this.$set(this.AddFormData, 'dj_iphone', "${@shiro.getPrincipalProperty('mobile')}")
},
async doAdd(flag) {
if (flag) {
await this.$refs['AddForm'].validate()
}
if (this.AddFormData.dj_znzsny > this.planList.find(v => v.bmlx === this.AddFormData.dj_djlx).nlxz) {
this.$message.info('出生年月大于' + this.planList.find(v => v.bmlx === this.AddFormData.dj_djlx).nlxz + '暂不能登记')
return
}
this.AddFormData.dj_sqzt = flag ? 5100 : 5000
let confirm = ""
let msg = ""
const {data} = await $.get("/platform/zgfw/rxdjsq/hasDJ", this.AddFormData)
if (data && data.count > 0 && !this.AddFormData.dj_id) {
msg = "该子女已经提交是否继续,如继续则覆盖上一次提交的内容!"
} else {
msg = flag ? '提交前,请您再次核对“基础信息”和“材料信息”,确保填写完整并准确无误。是否确认提交?' : '保存后如需提交,请前往我的登记修改后再提交'
}
let ts = this.AddFormData.dj_djlx === 1 ? "幼升小" : this.AddFormData.dj_djlx === 2 ? "小学" : "初升高"
confirm = await this.$confirm(msg, ts + '提交提醒', {
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
type: 'warning',
})
if (data && data.count > 0 && !this.AddFormData.dj_id) {
if (confirm === "confirm") {
this.AddFormData.dj_id = data.dj_id
await this.doSubmit(flag)
}
} else {
await this.doSubmit(flag)
}
},
async doSubmit(flag) {
if (this.AddFormData.hkfile && this.AddFormData.hkfile.length > 0) {
this.AddFormData.hkfile.map(v => {
v.bz = "hkfile"
})
}
if (this.AddFormData.csfile && this.AddFormData.csfile.length > 0) {
this.AddFormData.csfile.map(v => {
v.bz = "csfile"
})
}
if (this.AddFormData.jszgfile && this.AddFormData.jszgfile.length > 0) {
this.AddFormData.jszgfile.map(v => {
v.bz = "jszgfile"
})
}
if (this.AddFormData.pyhtfile && this.AddFormData.pyhtfile.length > 0) {
this.AddFormData.pyhtfile.map(v => {
v.bz = "pyhtfile"
})
}
const res = await $.post(this.AddFormData.dj_id ? "/platform/zgfw/rxdjxx/doEdit" : "/platform/zgfw/rxdjsq/doAdd", {
data: JSON.stringify(this.AddFormData),
hkfile: JSON.stringify(this.AddFormData.hkfile),
csfile: JSON.stringify(this.AddFormData.csfile),
jszgfile: JSON.stringify(this.AddFormData.jszgfile),
pyhtfile: JSON.stringify(this.AddFormData.pyhtfile),
flag: flag
})
if (res.code === 0) {
this.$message.success("提交成功");
setTimeout(() => {
sublime.jumpPagePjax('/platform/zgfw/rxdjxx')
}, 1000)
} else {
this.$message.error(res.msg);
}
},
async getPlanStatus() {
const res = await $.post("/platform/zgfw/rxdjsq/planStatus")
this.planstatus = res
if (this.planstatus.yey === 1) {
this.$set(this.AddFormData, "dj_djlx", 1)
} else if (this.planstatus.xx === 1) {
this.$set(this.AddFormData, "dj_djlx", 2)
} else if (this.planstatus.cz === 1) {
this.$set(this.AddFormData, "dj_djlx", 3)
} else {
this.$message.warning('暂未开放')
}
},
async getPlanByThisYear() {
const res = await $.post("/platform/zgfw/rxdj/plan/getPlanByThisYear")
this.planList = res.data
},
async init() {
const data = await queryUserById("${@shiro.getPrincipalProperty('id')}")
this.userList = data
this.$set(this.AddFormData, 'dj_jzgid', "${@shiro.getPrincipalProperty('id')}")
getDictByCode('rxdj_xxmc').then(res => {
this.sqxxOptions = res
})
this.dj_znzsny_placeholder = this.planList.find(v => v.bmlx === this.AddFormData.dj_djlx).nlxz + "以前出生的适龄儿童"
},
async getZnxxByJzgId() {
const resp = await $.post("/platform/zgfw/rxdjsq/getZnxxByJzgId")
if (resp.code === 0) {
this.znnameOptions = resp.data
}
},
djZnNameChange(val) {
const data = clone(this.znnameOptions)
if (data.find(v => v.dj_znname === val)) this.AddFormData = data.find(v => v.dj_znname === val)
},
async findOne(id) {
const refs = await $.post('/platform/zgfw/rxdjxx/findOne', {id: id})
this.AddFormData = refs.data.djuser
this.AddFormData.csfile = refs.data.fjs.filter(f => {
return f.bz === "csfile"
})
this.AddFormData.hkfile = refs.data.fjs.filter(f => {
return f.bz === "hkfile"
})
this.AddFormData.jszgfile = refs.data.fjs.filter(f => {
return f.bz === "jszgfile"
})
this.AddFormData.pyhtfile = refs.data.fjs.filter(f => {
return f.bz === "pyhtfile"
})
}
},
async created() {
await this.getPlanStatus()
await this.getPlanByThisYear()
await this.getZnxxByJzgId()
const id = GetQueryString("id")
if (id) {
await this.findOne(id)
}
await this.init()
await this.userChange("${@shiro.getPrincipalProperty('id')}")
},
})
</script>
<!--#
}
#-->
@@ -0,0 +1,260 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" clearable slot="prepend"
placeholder="姓名查询"
style="width: 120px;">
<el-option label="子女姓名" value="dj_znname"></el-option>
<el-option label="教职工姓名" value="u.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" @click="doSearch"
type="primary"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" @sort-change="pageOrder">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="dj_znname" label="子女姓名">
<template scope="scope">
{{scope.row.dj_znname}}
</template>
</el-table-column>
<!-- <el-table-column prop="dj_znzsny" label="出生日期">
<template scope="scope">
{{scope.row.dj_znzsny}}
</template>
</el-table-column>-->
<el-table-column
prop="jzgname"
label="教职工姓名"
>
<template scope="scope">
{{scope.row.jzgname}}
</template>
</el-table-column>
<!-- <el-table-column
prop="dj_jzgzngx"
label="子女关系">
<template scope="scope">
{{scope.row.dj_jzgzngx}}
</template>
</el-table-column>-->
<el-table-column label="所属单位" prop="dwname" header-align="center" align="center"
sortable
show-overflow-tooltip width="200px">
</el-table-column>
<el-table-column label="所属分工会" prop="jzgfghname" header-align="center"
align="center" sortable
show-overflow-tooltip width="200px">
</el-table-column>
<el-table-column
prop="dj_iphone"
label="手机号码">
<template scope="scope">
{{scope.row.dj_iphone}}
</template>
</el-table-column>
<el-table-column
prop="dj_djlx"
label="摸底登记类型" sortable>
<template scope="{row}">
<span v-if="row.dj_djlx==1">幼升小</span>
<span v-if="row.dj_djlx==2">小学</span>
<span v-if="row.dj_djlx==3">初升高</span>
</template>
</el-table-column>
<el-table-column
prop="dj_tbrq"
label="填报日期" sortable>
</el-table-column>
<el-table-column
prop="dj_sqzt"
sortable
label="信息审核状态">
<template scope="{row}">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column
label="操作">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{action:openView,value:row}">
查看
</el-dropdown-item>
<el-dropdown-item
:disabled="!([5000,5118,5218].includes(row.dj_sqzt))"
:command="{action:openEdit,value:row}">
编辑
</el-dropdown-item>
<el-dropdown-item
:disabled="[5000,5100].includes(row.dj_sqzt)"
v-if="${!@shiro.hasRole('sysadmin')}"
:command="{action:doDelete,value:row.dj_id}">
删除
</el-dropdown-item>
<el-dropdown-item v-else
:command="{action:doDelete,value:row.dj_id}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
</guava>
</div>
<script>
const rules = {}
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue?v=1.0.0'),
},
data() {
return {
dj_znzsny_placeholder: "",
unions: [],
units: [],
pageForm: {
year: moment().format('YYYY')
},
planstatus: {},
tableData: [],
sfkq: {},
}
},
methods: {
dropdownCommand({action, value}) {
if (action) action(value)
},
openEdit(obj) {
sublime.jumpPagePjax("/platform/zgfw/rxdjsq?id=" + obj.dj_id)
},
doDelete(id) {
this.$confirm('此操作将删除该数据,确定吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
closeOnClickModal: false,
type: 'warning'
}).then(() => {
$.post(base + "/platform/zgfw/rxdjxx/doDelete", {id: id}).then(res => {
if (res.code === 0) {
this.doSearch();
this.$message.success(res.msg);
} else {
this.$message.error(res.msg);
}
})
}).catch(err => {
})
},
openView(row) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(row)
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
doSearch() {
this.tableKey = new Date().getTime()
this.pageForm.pageNumber = 1
this.pageData("/platform/zgfw/rxdjxx/pageData")
},
},
async created() {
this.pageData("/platform/zgfw/rxdjxx/pageData")
this.unions = await getUnions()
this.flushUnits()
},
})
</script>
<!--#
}
#-->
@@ -0,0 +1,901 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" clearable slot="prepend"
placeholder="姓名查询"
style="width: 120px;">
<el-option label="子女姓名" value="dj_znname"></el-option>
<el-option label="教职工姓名" value="ur.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.djlx" clearable placeholder="请选择登记类型">
<!-- <el-option value="1" label="幼升小"></el-option>-->
<el-option value="2" label="小学"></el-option>
<!-- <el-option value="3" label="初升高"></el-option>-->
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.isAudit===1">
<el-select placeholder="审核状态" v-model="pageForm.dj_sqzt" style="width: 100%;"
clearable
filterable>
<el-option label="待校工会审核" :value="5200"></el-option>
<el-option label="校工会拒绝" :value="5215"></el-option>
<el-option label="校工会退回" :value="5218"></el-option>
<el-option label="审核通过" :value="5300"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" @click="doSearch" type="primary"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="登记列表">
<template #func>
<div style="color: red;font-size: 10px">温馨提示:导出时请先选择登记类型&nbsp;&nbsp;</div>
<el-button @click="doExport" type="primary" icon="el-icon-s-promotion"
size="small">导出
</el-button>
<el-button @click="doDownload" type="primary" icon="el-icon-s-promotion"
size="small">下载
</el-button>
<el-radio-group size="small" v-model="pageForm.isAudit" @change="doSearch"
class="ml10">
<el-radio-button :label="1">全部</el-radio-button>
<el-radio-button :label="2">已审核</el-radio-button>
<el-radio-button :label="3">未审核</el-radio-button>
</el-radio-group>
</template>
</vi-title2>
<el-table :data="tableData"
@sort-change="pageOrder"
row-key="dj_id">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="dj_znname" label="子女姓名">
<template scope="scope">
{{scope.row.dj_znname}}
</template>
</el-table-column>
<!-- <el-table-column prop="dj_znzsny" label="出生日期">
<template scope="scope">
{{scope.row.dj_znzsny}}
</template>
</el-table-column>-->
<el-table-column
prop="jzgname"
label="教职工姓名"
>
<template scope="scope">
{{scope.row.jzgname}}
</template>
</el-table-column>
<!-- <el-table-column
prop="dj_jzgzngx"
label="子女关系">
<template scope="scope">
{{scope.row.dj_jzgzngx}}
</template>
</el-table-column>-->
<el-table-column label="分工会" prop="jzgfghname" header-align="center"
align="center"
show-overflow-tooltip sortable width="200px">
</el-table-column>
<el-table-column
prop="dj_iphone"
label="手机号码">
<template scope="scope">
{{scope.row.dj_iphone}}
</template>
</el-table-column>
<el-table-column
prop="dj_djlx"
label="登记类型" sortable>
<template scope="{row}">
<span v-if="row.dj_djlx==1">幼升小</span>
<span v-if="row.dj_djlx==2">小学</span>
<span v-if="row.dj_djlx==3">初升高</span>
</template>
</el-table-column>
<el-table-column
prop="dj_tbrq"
label="填报日期" sortable>
</el-table-column>
<el-table-column
prop="dj_sqzt"
label="信息审核状态"
sortable>
<template scope="{row}">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="400px">
<template slot-scope="{row}">
<el-button size="mini" @click="openView(row)">查看</el-button>
<el-button size="mini" type="primary" @click="openAudit(row)"
v-if="row.dj_sqzt==5200">审核
</el-button>
<el-button size="mini" type="primary" @click="openEdit(row)"
plain v-if="row.dj_sqzt==5200">编辑
</el-button>
<el-button v-if="[5215,5218,5300].includes(row.dj_sqzt)" size="mini"
type="danger"
@click="ch(row)">
撤回
</el-button>
<el-button size="mini" type="primary" @click="doExportFind(row)" plain>
导出
</el-button>
<el-button size="mini" type="info" @click="doDownloadFind(row)" plain>下载
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #edit>
<rxdj-info ref="auditInfo">
<template slot="audit">
<el-tab-pane label="校工会审核" :name="xghAuditTabName">
<el-form :model="formData" ref="Form" label-width="100px">
<el-form-item label="审核人">
${@shiro.getPrincipalProperty('username')}
</el-form-item>
<el-form-item label="审核时间">
{{moment().format('YYYY-MM-DD')}}
</el-form-item>
<el-form-item label="审核意见" prop="dj_xghshyj">
<el-input v-model="formData.dj_xghshyj" type="textarea"
maxlength="300"
rows="5"></el-input>
</el-form-item>
</el-form>
<el-row class="mt20 text-center">
<el-button type="danger" @click="doHandle(5215)">拒 绝</el-button>
<el-button type="info" @click="doHandle(5218)">退 回</el-button>
<el-button type="success" @click="doHandle(5300)">通 过</el-button>
</el-row>
</el-tab-pane>
</template>
</rxdj-info>
</template>
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
<template #public>
<el-form :model="EditFormData" ref="EditForm" label-width="150px" :rules="rules">
<el-form-item label="报名类型" prop="class">
<span v-if="EditFormData.dj_djlx==1">幼升小</span>
<span v-if="EditFormData.dj_djlx==2">小学</span>
<span v-if="EditFormData.dj_djlx==3">初升高</span>
</el-form-item>
<vi-title title="子女信息"></vi-title>
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="子女姓名" prop="dj_znname">
<el-input clearable v-model="EditFormData.dj_znname"
placeholder="子女姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="dj_znsex">
<el-select clearable v-model="EditFormData.dj_znsex"
style="width: 100%">
<el-option value="男" lable="男"></el-option>
<el-option value="女" lable="女"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if="EditFormData.dj_djlx==1">
<el-form-item label="出生日期" prop="dj_znzsny">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_znzsny"
type="date"
value-format="yyyy-MM-dd"
:placeholder="dj_znzsny_placeholder">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号" prop="dj_znidcard">
<el-input clearable v-model="EditFormData.dj_znidcard"
placeholder="身份证号" :max="18"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现就读学校" prop="dj_jdxx">
<el-input clearable v-model="EditFormData.dj_jdxx"
placeholder="现就读学校"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="EditFormData.dj_djlx!=2">
<el-form-item label="子女户口所在地" prop="dj_znhjszd">
<el-input clearable v-model="EditFormData.dj_znhjszd"
placeholder="子女户口所在地"></el-input>
</el-form-item>
</el-col>
<!-- <template v-if="EditFormData.dj_djlx==3">
<el-col :span="12">
<el-form-item label="所在小学" prop="dj_szxx">
<el-input clearable v-model="EditFormData.dj_szxx" placeholder="所在小学"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学区中学" prop="dj_xqzx">
<el-input clearable v-model="EditFormData.dj_xqzx" placeholder="学区中学"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="意向学校" prop="dj_sqxx">
<el-select clearable v-model="EditFormData.dj_sqxx" style="width: 100%">
<el-option label="南京(A" value="A"></el-option>
<el-option label="南京(B" value="B"></el-option>
<el-option label="南京(C" value="C"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="语文" prop="dj_qmkfy">
<el-input :controls="false" style="width: 100%" v-model="EditFormData.dj_qmkfy"
placeholder="六上期末考分(语文)"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数学" prop="dj_qmkfs">
<el-input :controls="false" style="width: 100%" v-model="EditFormData.dj_qmkfs"
placeholder="六上期末考分(数学)"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="外语" prop="dj_qmkfw">
<el-input :controls="false" style="width: 100%" v-model="EditFormData.dj_qmkfw"
placeholder="六上期末考分(外语)"></el-input>
</el-form-item>
</el-col>
</template>-->
<!--<template v-if="EditFormData.dj_djlx==2">
<el-col :span="12">
<el-form-item label="出生日期" prop="dj_znzsny">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_znzsny"
type="date"
value-format="yyyy-MM-dd"
placeholder="出生年月">
</el-date-picker>
</el-form-item>
</el-col>
&lt;!&ndash; <el-col :span="12">
<el-form-item label="户籍所属小学" prop="dj_hjssxx">
<el-input clearable v-model="EditFormData.dj_hjssxx"></el-input>
</el-form-item>
</el-col>&ndash;&gt;
<el-col :span="12">
<el-form-item label="户籍所属辖区" prop="dj_hjssxq">
<el-select clearable v-model="EditFormData.dj_hjssxq" style="width: 100%"
placeholder="请选择户籍所属辖区">
<el-option label="南京市秦淮区" value="南京市秦淮区"></el-option>
<el-option label="南京市其它区" value="南京市其它区"></el-option>
<el-option label="南京市以外" value="南京市以外"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="子女户籍所在地" prop="dj_znhjszd">
<el-input clearable v-model="EditFormData.dj_znhjszd"></el-input>
</el-form-item>
</el-col>
</template>-->
</el-row>
<vi-title title="教职工信息"></vi-title>
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="教职工姓名" prop="dj_jzgid">
<el-select
style="width: 100%"
v-model="EditFormData.dj_jzgid"
filterable
remote
readonly
disabled
reserve-keyword
placeholder="请输入工号或者姓名查找"
@change="userChange"
:remote-method="queryUser"
:loading="loading">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号">
<el-input v-model="EditFormData.loginname" readonly></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="技术职称" prop="dj_zc">
<el-input clearable v-model="EditFormData.dj_zc"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称评定时间" prop="dj_zcsj">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_zcsj"
type="month"
value-format="yyyy-MM"
placeholder="职称评定时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政职务级别" prop="dj_zw">
<el-select clearable v-model="EditFormData.dj_zw" style="width: 100%"
placeholder="请选择行政职务级别">
<el-option label="无" value="无"></el-option>
<el-option label="副科级" value="副科级"></el-option>
<el-option label="正科级" value="正科级"></el-option>
<el-option label="副处级" value="副处级"></el-option>
<el-option label="正处级" value="正处级"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政职级任职时间" prop="dj_rzsj">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_rzsj"
type="month"
value-format="yyyy-MM"
placeholder="行政职级任职时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="省级人才称号" prop="dj_rcch">
<el-input clearable v-model="EditFormData.dj_rcch" placeholder="省部级及以上人才称号"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="获人才称号时间" prop="dj_rcchsj">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_rcchsj"
type="month"
value-format="yyyy-MM"
placeholder="获人才称号时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="EditFormData.dj_djlx==3">
<el-form-item label="荣誉或奖项" prop="dj_rxjx">
<el-input clearable v-model="EditFormData.dj_rxjx"
placeholder="荣誉或奖项(只填写最高的一项)"></el-input>
</el-form-item>
</el-col>
-->
<el-col :span="12" v-if="EditFormData.dj_djlx==2">
<el-form-item label="职务和岗位" prop="dj_zw">
<el-input clearable v-model="EditFormData.dj_zw"
placeholder="职务和岗位"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="EditFormData.dj_djlx==2">
<el-form-item label="工作单位起始时间" prop="dj_rxsj">
<el-date-picker
style="width: 100%"
v-model="EditFormData.dj_rxsj"
type="month"
value-format="yyyy-MM"
placeholder="工作单位起始时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码" prop="dj_iphone">
<el-input clearable v-model="EditFormData.dj_iphone"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在单位">
<el-input clearable v-model="EditFormData.dj_szdw" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子女关系" prop="dj_jzgzngx">
<el-select clearable v-model="EditFormData.dj_jzgzngx"
style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!--幼儿园字段 start-->
<!--<div class="flexbox" v-if="EditFormData.dj_djlx==1">
<el-form-item label="所在单位">
<el-input clearable v-model="EditFormData.dwname" readonly></el-input>
</el-form-item>
<el-form-item label="子女关系">
<el-select clearable v-model="EditFormData.dj_jzgzngx" style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
<el-option value="第三代" lable="第三代"></el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="EditFormData.dj_djlx==1">
<el-form-item label="申请班级" prop="dj_sqxx">
<el-select clearable v-model="EditFormData.dj_sqxx" style="width: 100%">
<el-option value="亲子班" lable="亲子班"></el-option>
<el-option value="托班" lable="托班"></el-option>
<el-option value="小班" lable="小班"></el-option>
<el-option value="中班" lable="中班"></el-option>
</el-select>
</el-form-item>
</div>-->
<!--幼儿园字段 end-->
<!--小学 初中字段 start-->
<!-- <el-row gutter="30" >
<el-col :span="12">
<el-form-item label="房产证地址" prop="dj_jtzz">
<el-input clearable v-model="EditFormData.dj_jtzz"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="教职工户籍所在地" prop="dj_hjszd">
<el-input clearable v-model="EditFormData.dj_hjszd"></el-input>
</el-form-item>
</el-col>
</el-row>-->
<!-- <div class="flexbox" v-if="EditFormData.dj_djlx==2||EditFormData.dj_djlx==3">
<el-form-item label="所在单位">
<el-input clearable v-model="EditFormData.dwname" readonly></el-input>
</el-form-item>
<el-form-item label="家庭住址" prop="dj_jtzz">
<el-input clearable v-model="EditFormData.dj_jtzz"></el-input>
</el-form-item>
</div>
<div class="flexbox" v-if="EditFormData.dj_djlx==2||EditFormData.dj_djlx==3">
<el-form-item label="户籍所在地" prop="dj_hjszd">
<el-input clearable v-model="EditFormData.dj_hjszd"></el-input>
</el-form-item>
<el-form-item label="子女关系" prop="dj_jzgzngx">
<el-select clearable v-model="EditFormData.dj_jzgzngx" style="width: 100%">
<el-option value="父子" lable="父子"></el-option>
<el-option value="父女" lable="父女"></el-option>
<el-option value="母子" lable="母子"></el-option>
<el-option value="母女" lable="母女"></el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="EditFormData.dj_djlx==2||EditFormData.dj_djlx==3">
<el-form-item label="人员类型" prop="dj_rylx">
<el-select clearable v-model="EditFormData.dj_rylx" style="width: 100%">
<el-option value="事业编制" lable="事业编制"></el-option>
<el-option value="预任职员" lable="预任职员"></el-option>
<el-option value="专职科研" lable="专职科研"></el-option>
<el-option value="统招博士后" lable="统招博士后"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否人才或骨干" prop="dj_sfgcrchywgg">
<el-select clearable v-model="EditFormData.dj_sfgcrchywgg" style="width: 100%">
<el-option
v-for="item,index in ['否','是']"
:key="item"
:label="item"
:value="index">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="flexbox" v-if="EditFormData.dj_djlx==2||EditFormData.dj_djlx==3">
<el-form-item label="申请学校" prop="dj_sqxx">
<el-select clearable v-model="EditFormData.dj_sqxx" style="width: 100%">
<el-option v-if="EditFormData.dj_djlx==2" value="金陵小学和园校区"
lable="金陵小学和园校区"></el-option>
<el-option v-if="EditFormData.dj_djlx==2" value="汉口路小学"
lable="汉口路小学"></el-option>
<el-option v-if="EditFormData.dj_djlx==3" value="金陵中学仙林分校"
lable="金陵中学仙林分校"></el-option>
<el-option v-if="EditFormData.dj_djlx==3" value="南大附中" lable="南大附中"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否有学区房" prop="dj_sfyxqf">
<el-select clearable v-model="EditFormData.dj_sfyxqf" style="width: 100%">
<el-option
v-for="item,index in ['否','是']"
:key="item"
:label="item"
:value="index">
</el-option>
</el-select>
</el-form-item>
</div>-->
<!--小学 初中字段 end-->
<el-form-item label="备注">
<el-input v-model="EditFormData.dj_bz" show-word-limit="true" type="textarea"
maxlength="100"></el-input>
</el-form-item>
<div>
<el-form-item label="户口簿图片" prop="hkfile">
<file-upload card :files.sync="EditFormData.hkfile"></file-upload>
<div style="color: #F56C6C">
请上传首页和户主与子女页面
</div>
</el-form-item>
<el-form-item label="子女出生证图片" prop="csfile">
<file-upload card :files.sync="EditFormData.csfile"></file-upload>
<div style="color: #F56C6C">
请上传子女出生证图片(教工与子女不在同一户口簿上,或子女有曾用名或教工婚姻重组家庭的,必须同时提供子女出生证照片)
</div>
</el-form-item>
</div>
</el-form>
<div style="float: right;margin-bottom: 50px">
<el-button type="primary" @click="doEdit()">确 定</el-button>
</div>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue'),
},
data() {
let hkFileValidate = (rule, value, callback) => {
if (this.EditFormData.hkfile.length === 0) {
callback(new Error('请上传户口簿图片'));
} else {
callback();
}
};
return {
dj_znzsny_placeholder: "",
userList: [],
loading: false,
EditFormData: {},
unions: [],
units: [],
pageForm: {
djlx: '',
unionId: '',
lx: 2,
year: moment().format('YYYY') + "",
isAudit: 3
},
smm: {status: 'table', id: ''},
tableData: [],
formData: {},
xghAuditTabName: 'xghAuditTabName',
rules: {
hkfile: [{validator: hkFileValidate, trigger: ['blur', 'change']}],
// csfile: [{validator: csFileValidate, trigger: ['blur', 'change']}],
dj_znname: [{required: true, trigger: ['blur', 'change'], message: '请填写子女姓名'}],
dj_znsex: [{required: true, trigger: ['blur', 'change'], message: '请填写性别'}],
dj_znzsny: [{
required: true,
trigger: ['blur', 'change'],
message: '请选择子女出生日期'
}],
dj_jzgzngx: [{required: true, trigger: ['blur', 'change'], message: '请选择子女关系'}],
dj_iphone: [{required: true, trigger: ['blur', 'change'], message: '请填写手机号码'}],
dj_znidcard: [{
required: true,
trigger: ['blur', 'change'],
message: '请填写身份证号'
}],
dj_jdxx: [{required: true, trigger: ['blur', 'change'], message: '请填写现就读学校'}],
dj_jzgid: [{required: true, trigger: ['blur', 'change'], message: '请填写教职工姓名'}],
dj_znhjszd: [{
required: true,
trigger: ['blur', 'change'],
message: '请填写子女户口所在地'
}],
dj_zw: [{required: true, trigger: ['blur', 'change'], message: '请填写职务和岗位'}],
dj_rxsj: [{
required: true,
trigger: ['blur', 'change'],
message: '请选择工作单位起始时间'
}],
},
}
},
methods: {
doExportFind(row) {
window.open("/platform/zgfw/rxdj/zhcx/doExport?djid=" + row.dj_id + "&year=" + this.pageForm.year)
},
doDownloadFind(row) {
window.open("/platform/zgfw/rxdj/zhcx/doDownload?djid=" + row.dj_id + "&year=" + this.pageForm.year)
},
doDownload() {
const {djlx, year, unionId, isAudit} = this.pageForm
if (djlx === "") {
this.$message.warning("请选择下载的登记类型")
return
}
if (unionId === "") {
this.$message.warning("请选择需要下载的工会")
return
}
if (isAudit === 3) {
this.$confirm('此操作将下载未审核的教职工子女出生证或户口簿图片,是否需要下载已下载过的教职工子女出生证或户口簿图片', '提示', {
confirmButtonText: '需要',
cancelButtonText: '不需要',
distinguishCancelAndClose: true
}).then(() => {
window.open("/platform/zgfw/rxdj/zhcx/doDownload?year=" + year + "&djlx=" + djlx + "&unionid=" + unionId + "&isAudit=" + isAudit + "&isDownload=true")
}).catch(action => {
if (action === "cancel") {
window.open("/platform/zgfw/rxdj/zhcx/doDownload?year=" + year + "&djlx=" + djlx + "&unionid=" + unionId + "&isAudit=" + isAudit + "&isDownload=false")
}
});
} else {
window.open("/platform/zgfw/rxdj/zhcx/doDownload?year=" + year + "&djlx=" + djlx + "&unionid=" + unionId + "&isAudit=" + isAudit + "&isDownload=false")
}
},
doExport() {
const {djlx, year, unionId, isAudit} = this.pageForm
if (djlx === "") {
this.$message.warning("请选择导出登记类型")
return
}
this.$alert('此操作将导出' + (isAudit === 1 ? '全部' : isAudit === 2 ? '已审核' : '未审核') + '的教职工子女信息', '提示', {
confirmButtonText: '确定',
type: 'warning'
}).then(() => {
window.open("/platform/zgfw/rxdj/zhcx/doExport?year=" + year + "&djlx=" + djlx + "&unionid=" + unionId + "&isAudit=" + isAudit + "&isDownload=false")
})
},
pageData: function () {
$.post(base + '/platform/zgfw/rxdj/sh/pageData', this.pageForm).then(res => {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
})
},
openView(row) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(clone(row))
},
userChange(o) {
let user = this.userList.find(u => u.id == o)
$.extend(this.EditFormData, user)
},
async queryUser(keywords) {
if (keywords != '') {
this.loading = true
const data = await Gh.selectUser(keywords, 10)
this.loading = false
this.userList = data.list
} else {
this.userList = []
}
},
openEdit(obj) {
$.post(base + '/platform/zgfw/rxdjxx/findOne', {id: obj.dj_id}).then(res => {
this.$refs.guava.public()
let u = res.data.djuser
this.EditFormData.csfile = res.data.fjs.filter(f => {
return f.bz === "csfile"
})
this.EditFormData.hkfile = res.data.fjs.filter(f => {
return f.bz === "hkfile"
})
this.userList = [{
id: u.id,
loginname: u.loginname,
username: u.username,
dwname: u.dwname
}]
this.userChange(u.id)
})
this.EditFormData = obj
this.$set(this.EditFormData, "dj_djlx", obj.dj_djlx.toString())
this.$set(this.EditFormData, "mobile", obj.dj_iphone)
this.$set(this.EditFormData, "dwname", obj.dj_szdw)
this.$set(this.EditFormData, "dj_sfyxqf", obj.dj_sfyxqf == true ? 1 : 0)
this.$set(this.EditFormData, "dj_sfgcrchywgg", obj.dj_sfgcrchywgg == true ? 1 : 0)
},
doEdit() {
this.$refs['EditForm'].validate(async valid => {
if (valid) {
this.EditFormData.hkfile.map(v => {
v.bz = "hkfile"
})
this.EditFormData.csfile.map(v => {
v.bz = "csfile"
})
const res = await $.post("/platform/zgfw/rxdj/sh/doEdit", {
data: JSON.stringify(this.EditFormData),
hkfile: JSON.stringify(this.EditFormData.hkfile),
csfile: JSON.stringify(this.EditFormData.csfile),
})
if (res.code === 0) {
this.EditFormData.hkfile = []
this.EditFormData.csfile = []
this.EditFormData.fcfile = []
this.EditFormData.qmkffile = []
this.$refs.guava.index()
this.doSearch()
this.$message.success(res.msg)
} else {
this.$message.error(data.msg);
}
}
})
},
getPlanStatus() {
$.post("/platform/zgfw/rxdjsq/planStatus").then(res => {
this.planstatus = res
this.dj_znzsny_placeholder = res.nlxz + "以前出生的适龄儿童"
})
},
openAudit(row) {
this.formData = clone(row)
this.$refs.guava.edit()
this.$refs.auditInfo.openAudit(clone(row), this.xghAuditTabName)
},
ch(row) {
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
$.post('/platform/zgfw/rxdj/sh/doch', {
dj_id: row.dj_id,
dj_sqzt: 5200
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
}).catch(() => {
});
},
async doHandle(s) {
let title = s === 5300 ? "通过" : s === 5215 ? "拒绝" : "退回"
const confirm = await this.$confirm('确认要' + title + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.formData.dj_sqzt = s
const resp = await $.post('/platform/zgfw/rxdj/sh/doxghSh', this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.$refs.guava.index()
this.pageData()
}
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,244 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" clearable slot="prepend"
placeholder="姓名查询"
style="width: 120px;">
<el-option label="子女姓名" value="dj_znname"></el-option>
<el-option label="教职工姓名" value="u.username"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.djlx" clearable placeholder="请选择登记类型">
<!-- <el-option value="1" label="幼升小"></el-option>-->
<el-option value="2" label="小学"></el-option>
<!-- <el-option value="3" label="初升高"></el-option>-->
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionid" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitid" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" @click="doSearch"
type="primary"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="登记列表">
<template #func>
<div style="color: red;font-size: 10px">温馨提示:导出时请先选择登记类型&nbsp;&nbsp;</div>
<el-button @click="doExport" type="primary" icon="el-icon-s-promotion"
size="small">导出
</el-button>
<el-button @click="doDownload" type="primary" icon="el-icon-s-promotion"
size="small">下载
</el-button>
</template>
</vi-title2>
<el-table :data="tableData" @sort-change="pageOrder">
<el-table-column label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column prop="dj_znname" label="子女姓名">
<template scope="scope">
{{scope.row.dj_znname}}
</template>
</el-table-column>
<!-- <el-table-column prop="dj_znzsny" label="出生日期">
<template scope="scope">
{{scope.row.dj_znzsny}}
</template>
</el-table-column>-->
<el-table-column
prop="jzgname"
label="教职工姓名"
>
<template scope="scope">
{{scope.row.jzgname}}
</template>
</el-table-column>
<!-- <el-table-column
prop="dj_jzgzngx"
label="子女关系">
<template scope="scope">
{{scope.row.dj_jzgzngx}}
</template>
</el-table-column>-->
<el-table-column label="分工会" prop="jzgfghname" header-align="center"
align="center" sortable
show-overflow-tooltip width="200px"></el-table-column>
<el-table-column label="单位" prop="dj_szdw" header-align="center" align="center"
sortable
show-overflow-tooltip width="200px">
</el-table-column>
<el-table-column
prop="dj_iphone"
label="手机号码">
<template scope="scope">
{{scope.row.dj_iphone}}
</template>
</el-table-column>
<el-table-column
prop="dj_djlx"
label="摸底登记类型" sortable>
<template scope="{row}">
<span v-if="row.dj_djlx==1">幼升小</span>
<span v-if="row.dj_djlx==2">小学</span>
<span v-if="row.dj_djlx==3">初升高</span>
</template>
</el-table-column>
<el-table-column
prop="dj_sqzt"
label="信息审核状态" sortable>
<template scope="{row}">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
width="100px">
<template slot-scope="{row}">
<el-button size="mini" @click="openView(row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue'),
},
data() {
return {
pageForm: {
lx: 2,
year: '',
djlx: '',
unionid: ''
},
tableData: [],
unionList: [],
unions: [],
units: []
}
},
methods: {
doDownload() {
const {djlx, year, unionid} = this.pageForm
if (djlx === "") {
this.$message.warning("请选择下载的登记类型")
return
}
if (unionid === "") {
this.$message.warning("请选择需要下载的工会")
return
}
window.open(loc() + "/doDownload?year=" + year + "&djlx=" + djlx + "&unionid=" + unionid + "&isAudit=2" + "&isDownload=true")
},
doExport() {
const {djlx, year, unionid} = this.pageForm
if (djlx === "") {
this.$message.warning("请选择导出登记类型")
return
}
window.open(loc() + "/doExport?year=" + year + "&djlx=" + djlx + "&unionid=" + unionid + "&isAudit=2")
},
pageData: function () {
$.post(base + '/platform/zgfw/rxdj/zhcx/pageData', this.pageForm).then(res => {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
})
},
openView(row) {
this.$refs.guava.view()
this.$refs.viewInfo.openView(clone(row))
},
async flushUnits() {
this.$set(this.pageForm, "unitid", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unitid)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.$set(this.pageForm, 'year', moment().format('YYYY'))
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->