This commit is contained in:
Paidax
2024-07-23 09:52:35 +08:00
parent f734d9511c
commit e2f6a9f4b1
221 changed files with 12004 additions and 14330 deletions
@@ -5,44 +5,43 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<van-nav-bar title="填写慰问申请" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-form ref="addForm" :show-error-message="false" input-align="right" style="margin-bottom: 60px">
<van-cell-group inset class="mt10">
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="manager_name"
label="申请入"></van-field>
label="经办人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" name="manager_name"
label="经办人工号"></van-field>
<van-field @input="userRemoteMethod" name="be_user_name"
required
v-model="formData.be_user_name" label="慰问对象" placeholder="请输入慰问对象"
:rules="[{ required: true, message: '请填写慰问对象' }]"></van-field>
<van-action-sheet v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []; formData.be_user_name = ''"
:close-on-click-overlay="false"
@select="onUserSelect">
</van-action-sheet>
<van-field readonly :value="formData.apply_time" name="apply_time"
label="申请时间"
></van-field>
<van-field @input="userRemoteMethod" name="be_user_name"
required
v-model="formData.be_user_name" label="慰问对象" placeholder="请输入慰问对象"
:rules="[{ required: true, message: '请填写慰问对象' }]"></van-field>
<van-action-sheet v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []"
:close-on-click-overlay="false"
@select="onUserSelect">
</van-action-sheet>
<van-field @input="payeeUserRemoteMethod" name="payee_name"
required :rules="[{ required: true, message: '请选择收款人' }]"
v-model="formData.payee_name" label="收款人" placeholder="请输入收款人"></van-field>
<van-action-sheet v-model="payeeSheetShow"
:actions="payeeUserList"
cancel-text="重新输入姓名或工号查询"
@cancel="payeeUserList = []"
@cancel="payeeUserList = []; formData.payee_name = ''"
:close-on-click-overlay="false"
@select="payeeOnUserSelect">
</van-action-sheet>
<van-field v-model="formData.payee_bank_number" name="payee_bank_number" type="number"
<!--<van-field v-model="formData.payee_bank_number" name="payee_bank_number" type="number"
label="收款人银行卡" placeholder="请输入收款人银行卡"></van-field>
<van-field v-model="formData.payee_bank_name" name="payee_bank_name"
label="收款人开户行" placeholder="请输入收款人开户行"></van-field>
label="收款人开户行" placeholder="请输入收款人开户行"></van-field>-->
<van-field readonly clickable name="type" :value="formData.typeName"
@@ -67,10 +66,22 @@ layout("/mobile/platform.html"){
</van-picker>
</van-popup>
<van-field v-model="formData.money" name="money" type="number" label="慰问金额"
placeholder="请填写慰问金额"
:rules="[{ required:true, message: '请填写慰问金额' }]"></van-field>
<!-- 孩次 -->
<van-field readonly clickable name="type" v-model="formData.birth_child_num"
required v-if="formData.type==='2'"
label="孩次"
@click="showChildPicker = true" placeholder="点击选择孩次"
:rules="[{ required:true, message: '请选择孩次'}]"></van-field>
<van-popup v-model:show="showChildPicker" position="bottom" round>
<van-picker show-toolbar :columns="childColumns" @confirm="onChildConfirm"
@cancel="showChildPicker = false">
</van-picker>
</van-popup>
<van-field
required
:rules="[{ required:true, message: '请填写慰问时间' }]"
@@ -88,23 +99,47 @@ layout("/mobile/platform.html"){
:max-date="maxDate"
:color="themeColor"></van-calendar>
<template
v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">
<van-field :value="formData.hospital_stay"
readonly clickable required
@click="hospital_stay = true"
name="hospital_stay" label="住院时间"
placeholder="请选择住院时间"
:rules="[{ required:true, message: '请选择住院时间' }]"></van-field>
<van-calendar v-model="hospital_stay" type="range" @confirm="onConfirm"
:min-date="new Date('1999-01-01')"
:color="themeColor"></van-calendar>
<van-field v-model="formData.the_hospital" name="the_hospital" name="type" label="所在医院"
placeholder="请填写所在医院" required
:rules="[{ required:true, message: '请填写所在医院' }]"></van-field>
<template v-if="['3','4'].includes(formData.type)">
<van-field v-model="formData.the_hospital" name="the_hospital" label="治疗医院"
placeholder="请填写治疗医院" required
:rules="[{ required:true, message: '请填写治疗医院' }]"></van-field>
<van-field v-model="formData.the_hospital_house_num" name="the_hospital_house_num" label="病房号"
placeholder="请填写病房号" required
:rules="[{ required:true, message: '请填写病房号' }]"></van-field>
<van-field v-model="formData.the_hospital_house_bed_num" name="the_hospital_house_bed_num" label="床号"
placeholder="请填写床号" required
:rules="[{ required:true, message: '请填写床号' }]"></van-field>
</template>
<template v-if="['4'].includes(formData.type)">
<van-field v-model="formData.hospital_by" name="hospital_by" label="患病病种"
placeholder="请填写患病病种" required
:rules="[{ required:true, message: '请填写患病病种' }]"></van-field>
</template>
<template v-if="['6'].includes(formData.type)">
<van-field v-model="formData.deadImmediateFamily" name="deadImmediateFamily" label="直系亲属"
placeholder="配偶、父亲、母亲、子女" required
:rules="[{ required:true, message: '必填' }]"></van-field>
</template>
<!-- <template-->
<!-- v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">-->
<!-- <van-field :value="formData.hospital_stay"-->
<!-- readonly clickable required-->
<!-- @click="hospital_stay = true"-->
<!-- name="hospital_stay" label="住院时间"-->
<!-- placeholder="请选择住院时间"-->
<!-- :rules="[{ required:true, message: '请选择住院时间' }]"></van-field>-->
<!-- <van-calendar v-model="hospital_stay" type="range" @confirm="onConfirm"-->
<!-- :min-date="new Date('1999-01-01')"-->
<!-- :color="themeColor"></van-calendar>-->
<!-- <van-field v-model="formData.the_hospital" name="the_hospital" name="type" label="所在医院"-->
<!-- placeholder="请填写所在医院" required-->
<!-- :rules="[{ required:true, message: '请填写所在医院' }]"></van-field>-->
<!-- </template>-->
<van-field v-model="formData.remark" name="remark" label="申请事由" style="flex-flow: column"
required
:rules="[{ required:true, message: '请填写申请事由' }]"
@@ -115,55 +150,9 @@ layout("/mobile/platform.html"){
<div class="mb10">申请事由</div>
</template>
</van-field>
</van-cell-group>
<van-cell-group inset class="mt10 up_down">
<div class="van-cell">
<div class="van-cell__title van-field__label" style="display: flex;justify-content: space-between">
<div style="display: flex;">
<div class="van-field__left-icon">
<i class="van-icon van-icon-friends-o"></i>
</div>
<div class="van-cell__title van-field__label" style="width: auto">
<span>购置物品及价格</span>
</div>
</div>
<van-button v-if="goods && goods.length>0 && goods.length<3" style="width: 40px"
icon="plus" type="primary" round size="mini"
@click="goods.push({})"
native-type="button"></van-button>
</div>
<van-divider></van-divider>
<template v-if="goods && goods.length>0">
<div v-for="o,i in goods" class="mt5">
<div style="font-weight: 700;display: flex;justify-content: space-between">
<span>物品{{toChinesNum(i+1)}}</span>
<van-button style="width: 40px"
icon="minus" type="danger" round size="mini"
@click="goods.splice(i,1)"
native-type="button"></van-button>
</div>
<van-field label="名称" v-model="o.name" placeholder="请填写物品名称"
:rules="[{ required:true, message: '请填写物品名称' }]"></van-field>
<van-field label="价格" v-model="o.price" placeholder="请填写物品价格"
type="number"
:rules="[{ required:true, message: '请填写物品价格' }]" @input="priceInput"></van-field>
</div>
</template>
<template v-else>
<div style="padding: 50px;text-align: center">
<van-button style="width: 50px"
icon="plus" type="primary" round size="mini"
@click="goods.push({})"
native-type="button"></van-button>
</div>
</template>
</div>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-cell-group inset class="mt10" v-if="isUploadFile === true">
<van-field name="files" label="附&emsp;&emsp;件" required
style="flex-flow: column" input-align="left">
<template #label>
@@ -173,6 +162,9 @@ layout("/mobile/platform.html"){
<vant-file-upload :files.sync="formData.files"></vant-file-upload>
</template>
</van-field>
<div style="margin: 0 0 7px 15px;" v-if="isUploadFile && uploadFileDesc">
<span style="color:red;">上传附件说明:{{ uploadFileDesc }}</span>
</div>
</van-cell-group>
<van-cell-group inset class="mt10">
@@ -192,6 +184,16 @@ layout("/mobile/platform.html"){
</van-button>
</div>
</van-form>
<div>
<van-tabbar v-model="tarBarActive" style="z-index: 99">
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录
</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
@@ -200,6 +202,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
goods: [],
payeeSheetShow: false,
payeeUserList: [],
@@ -216,7 +219,11 @@ layout("/mobile/platform.html"){
// minDate: moment().subtract(5, 'year')._d,
minDate: new Date(2010, 1, 1),
maxDate: new Date(),
money: 0
money: 0,
isUploadFile: true,
uploadFileDesc: null,
showChildPicker:false,
childColumns:[{value:'一孩',text:'一孩'},{value:'二孩',text:'二孩'},{value:'三孩',text:'三孩'}],
}
},
watch: {
@@ -232,9 +239,14 @@ layout("/mobile/platform.html"){
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue?v='+new Date().getTime()),
},
methods: {
onChildConfirm(data){
console.log(data)
this.formData.birth_child_num = data.value
this.showChildPicker = false
},
priceInput() {
let num = 0
this.goods.forEach(v => {
@@ -293,6 +305,11 @@ layout("/mobile/platform.html"){
this.$set(this.formData, "typeName", val.text)
this.$set(this.formData, "type", val.value)
const {data, code, msg} = await $.get("/platform/condolence/type/findOne", {id: val.value})
console.log(data)
this.isUploadFile = data.isUploadFile
this.uploadFileDesc = data.uploadFileDesc
this.$set(this, "money", data.money)
await this.moneyChange(val.value)
this.showTypePicker = false;
@@ -316,15 +333,14 @@ layout("/mobile/platform.html"){
return
}
this.$refs.signature.submitSign()
/* if (this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
return
}*/
if (this.$refs.signature.checkNull()) {
this.$toast('请签名!')
return
}
await this.$refs.signature.updateSign()
const formData = clone(this.formData)
formData.mobile = "${@shiro.getPrincipalProperty('mobile')}"
formData.files = JSON.stringify(formData.files)
formData.goods = this.goods
this.$refs['addForm'].validate().then(async () => {
this.$toast.loading('提交中...')
const res = await $.post('/platform/fw/condolence/apply/doAdd', {
@@ -334,7 +350,6 @@ layout("/mobile/platform.html"){
if (res.code === 0) {
this.$toast.success('申请成功');
setTimeout(() => {
location.replace('/mobile/condolence/apply')
}, 1000)
} else {
@@ -352,6 +367,8 @@ layout("/mobile/platform.html"){
},
async created() {
this.formData.apply_time = moment().format('YYYY-MM-DD')
this.formData.be_user = "${@shiro.getPrincipalProperty('id')}"
//this.formData.be_user_name = "${@shiro.getPrincipalProperty('username')}" + "(" + "${@shiro.getPrincipalProperty('loginname')}" + ")"
const {code, data} = await $.get("/platform/condolence/type/getAll")
data.forEach(v => {
this.typeColumns.push({value: v.id, text: v.name + "(" + v.code + ")"})
@@ -383,4 +400,4 @@ layout("/mobile/platform.html"){
</style>
<!--#
}
#-->
#-->
@@ -59,4 +59,4 @@ layout("/mobile/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -70,9 +70,19 @@ layout("/mobile/platform.html"){
<!-- </van-button>-->
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/condolence/apply/for">慰问申请
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/condolence/apply">慰问记录
</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
@@ -81,6 +91,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 1,
visible: true,
typeOption: [
{value: null, text: '全部'}
@@ -143,4 +154,4 @@ layout("/mobile/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -106,7 +106,7 @@ layout("/mobile/platform.html"){
},
async flushUnits() {
//this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -7,11 +7,11 @@ layout("/mobile/platform.html"){
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="二级党组织审核" :handle="handle">
<condolence-info ref="info" :id.sync="id" title="校工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
二级党组织审核
校工会审核
</div>
</div>
<van-form>
@@ -24,11 +24,6 @@ layout("/mobile/platform.html"){
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field v-model="formData.money" label="慰问金额" type="number"
left-icon="balance-list-o"
required :rules="[{ required:true, message: '请输入慰问金额' }]"
></van-field>
<van-field v-model="formData.opinion"
left-icon="chat-o"
@@ -41,7 +36,6 @@ layout("/mobile/platform.html"){
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
<template #label>
<div class="mb10">签&emsp;&emsp;字</div>
@@ -100,15 +94,13 @@ layout("/mobile/platform.html"){
return
}
this.$refs.signature.submitSign()
/* if (this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
return
}*/
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/condolence/fr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success('审核成功')
setTimeout(() => {
@@ -128,7 +120,6 @@ layout("/mobile/platform.html"){
time: moment().format('YYYY-MM-DD'),
opinion: null,
sign: "",
money: data.money
}
}
@@ -138,4 +129,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -7,11 +7,11 @@ layout("/mobile/platform.html"){
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="校工会审核" :handle="handle">
<condolence-info ref="info" :id.sync="id" title="校工会主席审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt10">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核
校工会主席审核
</div>
</div>
<van-form>
@@ -26,6 +26,23 @@ layout("/mobile/platform.html"){
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field v-model="formData.money" label="慰问金额" type="number"
left-icon="balance-list-o"
required :rules="[{ required:true, message: '请输入慰问金额' }]"
></van-field>
<van-field v-model="auditType" label="审核类型" left-icon="clock-o"
@click="typePicker = true" required readonly></van-field>
<van-popup v-model="typePicker" position="bottom">
<van-picker
show-toolbar
:columns="['审核通过','审核通过(线下提交资料)', '审核拒绝']"
@confirm="typeChange"
@cancel="typePicker = false"
></van-picker>
</van-popup>
<van-field v-model="formData.opinion"
rows="1"
required
@@ -51,7 +68,6 @@ layout("/mobile/platform.html"){
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button color="red" block plain @click="doAudit(2)">返回修改
</van-button>
@@ -76,6 +92,8 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
typePicker: false,
auditType: '审核通过',
handle: true,
id: "",
formData: {},
@@ -87,19 +105,31 @@ layout("/mobile/platform.html"){
},
methods: {
typeChange(value, index) {
if(value === '审核通过') {
this.formData.opinion = '情况属实,同意申请。'
} else if (value === '审核通过(线下提交资料)') {
this.$set(this.formData, 'opinion', '请将纸质发票经办人、分工会主席签字后交至行政楼A426办公室。')
} else {
this.formData.opinion = ''
}
this.typePicker = false
},
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见');
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名')
return
}
if (pass === 3 && this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
if(this.auditType === '审核通过(线下提交资料)') {
pass = 4
}
const resp = await $.post("/platform/fw/condolence/vcr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success('审核成功');
@@ -113,12 +143,14 @@ layout("/mobile/platform.html"){
},
async created() {
this.id = GetQueryString("id")
const {data} = await $.get("/platform/fw/condolence/findOne", {id: this.id})
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format('YYYY-MM-DD'),
opinion: null,
sign: ""
opinion: '情况属实,同意申请。',
sign: "",
money: data.money
}
}
@@ -7,11 +7,11 @@ layout("/mobile/platform.html"){
@click-left="history.back()"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="单位领导审核" :handle="handle">
<condolence-info ref="info" :id.sync="id" title="分工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt10">
<div class="van-sidebar-item van-sidebar-item--select">
单位领导审核
分工会审核
</div>
</div>
<van-form>
@@ -50,7 +50,6 @@ layout("/mobile/platform.html"){
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
</van-col>
<van-col span="8">
<van-button color="red" block @click="doAudit(2)">返回修改
</van-button>
@@ -95,14 +94,13 @@ layout("/mobile/platform.html"){
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名')
vant.Toast('请签名!')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/condolence/ucr/doReview", this.formData)
if (resp.code === 0) {
await doCompletes();
this.$toast.success('审核成功');
setTimeout(() => {
history.back()
@@ -5,7 +5,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<van-nav-bar title="困难补助申请" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-form ref="addForm" :show-error-message="false" input-align="right" style="margin-bottom: 60px">
<van-cell-group inset class="mt10">
<van-field readonly
value="${@shiro.getPrincipalProperty('username')} ( ${@shiro.getPrincipalProperty('loginname')} )"
@@ -114,6 +114,17 @@ layout("/mobile/platform.html"){
</van-button>
</div>
</van-form>
<div>
<van-tabbar v-model="tarBarActive" style="z-index: 99">
<van-tabbar-item icon="home-o" replace url="/mobile/difficulty/apply/index">困难补助申请
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/difficulty/apply/apply_list">
困难补助记录
</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script src="/assets/platform/module/difficulty/common.js?v=1.0.0"></script>
@@ -123,6 +134,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
id: GetQueryString("id"),
hospitalized_timeShow: false,
sq_bzlxShow: false,
@@ -173,7 +185,7 @@ layout("/mobile/platform.html"){
this.$set(this.formData, 'unitname', "${@shiro.getPrincipalProperty('unit').getName()}")
this.$set(this.formData, 'birthday', "${@shiro.getPrincipalProperty('birthday')}")
this.$set(this.formData, 'lxfs', "${@shiro.getPrincipalProperty('mobile')}")
this.$set(this.formData, 'idcard', "${@shiro.getPrincipalProperty('idCard')}")
this.$set(this.formData, 'idcard', "${@shiro.getPrincipalProperty('idcard')}")
} else if (val === 2) {
this.formData = {}
this.$set(this.formData, 'apply_mode', 2)
@@ -216,6 +228,7 @@ layout("/mobile/platform.html"){
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
formData.bbzrusername = formData.difficultyUser
formData.flag = true
this.$refs['addForm'].validate().then(async () => {
this.$toast.loading('提交中...')
const res = await $.post('/platform/fw/difficulty/apply/doAdd', formData)
@@ -269,4 +282,4 @@ layout("/mobile/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -103,7 +103,7 @@ layout("/mobile/platform.html"){
}, 600)
},
async flushUnits() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -23,7 +23,7 @@ layout("/mobile/platform.html"){
></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field v-model="formData.xghbzje" label="补助金额"></van-field>
<van-field v-model="formData.xghbzje" label="初审金额"></van-field>
<van-field v-model="formData.opinion"
rows="1"
@@ -91,10 +91,7 @@ layout("/mobile/platform.html"){
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/difficulty/schoolmanager/doReview", this.formData)
@@ -11,7 +11,7 @@ layout("/mobile/platform.html"){
<template #handle>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
院级工会主席审核
分工会主席审核
</div>
</div>
<van-form>
@@ -90,10 +90,6 @@ layout("/mobile/platform.html"){
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名')
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/difficulty/unionchairman/doReview", this.formData)
@@ -4,369 +4,376 @@ layout("/mobile/platform.html"){
<style>
.van-doc-card {
background-color: #fff;
border-radius: 6px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
position: relative;
}
.van-doc-card {
background-color: #fff;
border-radius: 6px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
position: relative;
}
.van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
border-radius: 6px;
position: absolute;
top: 0;
left: 20px;
}
.van-card-header {
padding: 14px 20px;
border-bottom: 1px solid #ebeef5;
box-sizing: border-box;
color: #0e78c5;
font-weight: bold;
}
.van-card-header {
padding: 14px 20px;
border-bottom: 1px solid #ebeef5;
box-sizing: border-box;
color: #0e78c5;
font-weight: bold;
}
.van-card-body {
padding: 0px 10px 0px 10px
}
.van-card-body {
padding: 0px 10px 0px 10px
}
.join_content {
padding: 10px;
overflow-y: auto;
height: calc(100vh - 46px - 20px - 60px);
}
.join_content {
padding: 10px;
overflow-y: auto;
height: calc(100vh - 46px - 20px - 60px);
}
.basic .van-cell {
flex-direction: row-reverse;
}
.basic .van-cell {
flex-direction: row-reverse;
}
.van-cell__label {
color: #323233;
font-size: 14px;
line-height: 24px;
margin-top: 0;
}
.van-cell__label {
color: #323233;
font-size: 14px;
line-height: 24px;
margin-top: 0;
}
.empty_text {
text-align: center;
padding: 10px 0px;
font-size: 14px;
color: grey;
}
.empty_text {
text-align: center;
padding: 10px 0px;
font-size: 14px;
color: grey;
}
.van-tabs__wrap {
margin: 6px;
}
.van-tabs__wrap {
margin: 6px;
}
.van-tabs__nav--card {
border: none;
}
.van-tabs__nav--card {
border: none;
}
.van-tabs__nav--card .van-tab.van-tab--active {
border-radius: 6px;
}
.van-tabs__nav--card .van-tab.van-tab--active {
border-radius: 6px;
}
.van-tabs__nav--card .van-tab {
border-right: 0 !important;
}
.van-tabs__nav--card .van-tab {
border-right: 0 !important;
}
.footer {
background-color: white;
position: fixed;
bottom: 0;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
z-index: 99;
}
.footer {
background-color: white;
position: fixed;
bottom: 0;
width: 100%;
height: 60px;
display: flex;
justify-content: space-evenly;
align-items: center;
left: 0;
z-index: 99;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.join {
background-color: #0e78c5;
color: white;
}
.join {
background-color: #0e78c5;
color: white;
}
.join_submit {
width: 90% !important;
}
.join_submit {
width: 90% !important;
}
.van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
border: none;
}
.van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
border: none;
}
.pre_text {
white-space: break-spaces;
padding-left: 7px;
/*margin-top: 30px;*/
}
.pre_text {
white-space: break-spaces;
padding-left: 7px;
/*margin-top: 30px;*/
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="体检套餐选择" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
</van-sticky>
<van-sticky>
<van-nav-bar title="体检套餐选择" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
</van-sticky>
<div class="join_content">
<div class="join_content">
<van-form @submit="joinSubmit">
<van-form @submit="joinSubmit">
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
体检套餐
</div>
<div class="van-card-body">
<van-radio-group v-model="formData.subjectId" class="basic">
<van-cell-group>
<van-cell title="" :key="item.id" v-for="item in project.healthCheckupProjectSubjects">
<template #label>
<div style="display: flex; justify-content: space-between; margin-left: 8px">
<div>{{ item.optionName }}</div>
<div @click="viewDesc(item)" style="color: #0e78c5">查看说明</div>
</div>
</template>
<template #right-icon>
<van-radio :name="item.id"></van-radio>
</template>
</van-cell>
</van-cell-group>
</van-radio-group>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
体检套餐
</div>
<div class="van-card-body">
<van-radio-group v-model="formData.subjectId" class="basic">
<van-cell-group>
<van-cell title="" :key="item.id" v-for="item in project.healthCheckupProjectSubjects">
<template #label>
<div style="display: flex; justify-content: space-between; margin-left: 8px">
<div>{{ item.optionName }}</div>
<div @click="viewDesc(item)" style="color: #0e78c5">查看说明</div>
</div>
</template>
<template #right-icon>
<van-radio :name="item.id"></van-radio>
</template>
</van-cell>
</van-cell-group>
</van-radio-group>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-body">
<van-field @click="campusVisible = true" readonly is-link label="院区" name="campus"
placeholder="请选择体检院区" v-model="formData.campusName"
:rules="[{ required: true }]"></van-field>
<van-field :rules="[{ required: true, message: '请选择家属是否体检' }]" label="家属体检" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="formData.isFamily">
<van-radio name="是" shape="square">是</van-radio>
<van-radio name="否" shape="square">否</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-body">
<van-field @click="campusVisible = true" readonly is-link label="院区" name="campus"
placeholder="请选择体检院区" v-model="formData.campusName"
:rules="[{ required: true }]"></van-field>
<!-- <van-field :rules="[{ required: true, message: '请选择家属是否体检' }]" label="家属体检" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="formData.isFamily" disabled>
<van-radio name="是" shape="square">是</van-radio>
<van-radio name="否" shape="square">否</van-radio>
</van-radio-group>
</template>
</van-field>-->
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px" v-if="formData.isFamily === '是'">
<div></div>
<div class="van-card-header" style="display: flex; justify-content: space-between; align-items: center">
<span style="float:left;">家属信息</span>
<div>
<van-tag @click="delCompanion" size="large" type="primary" color="lightgrey">删除家属</van-tag>
<van-tag @click="addCompanion" size="large" type="primary" color="#1867b0">添加家属</van-tag>
</div>
</div>
<div v-if="formData.companionList.length > 0" class="van-card-body">
<van-tabs v-model="active" type="card" color="#0e78c5" animated>
<van-tab v-for="item, index in formData.companionList" :title="'家属' + (index + 1)">
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
:rules="[{ required: true }]"></van-field>
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="item.sex">
<van-radio name="男" shape="square">男</van-radio>
<van-radio name="女" shape="square">女</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field :rules="[{ required: true, message: '请选择婚否' }]" label="婚否" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="item.marry">
<van-radio name="未婚" shape="square">未婚</van-radio>
<van-radio name="已婚" shape="square">已婚</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field label="年龄" name="age" placeholder="请填写年龄" type="digit"
:rules="[{ required: true }]" v-model="item.age"></van-field>
<van-field label="身份证号" name="idCard" placeholder="请填写身份证号" type="digit"
:rules="[{ required: true }]" v-model="item.idCard"></van-field>
<van-field label="手机号" name="mobile" placeholder="请填写手机号" type="digit"
:rules="[{ required: true }]" v-model="item.mobile"></van-field>
</van-tab>
</van-tabs>
</div>
<div v-if="formData.companionList.length == 0" class="empty_text">
<div class="van-doc-card" style="margin-bottom: 16px" v-if="formData.isFamily === '是'">
<div></div>
<div class="van-card-header" style="display: flex; justify-content: space-between; align-items: center">
<span style="float:left;">家属信息</span>
<div>
<van-tag @click="delCompanion" size="large" type="primary" color="lightgrey">删除家属</van-tag>
<van-tag @click="addCompanion" size="large" type="primary" color="#1867b0">添加家属</van-tag>
</div>
</div>
<div v-if="formData.companionList.length > 0" class="van-card-body">
<van-tabs v-model="active" type="card" color="#0e78c5" animated>
<van-tab v-for="item, index in formData.companionList" :title="'家属' + (index + 1)">
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
:rules="[{ required: true }]"></van-field>
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="item.sex">
<van-radio name="男" shape="square">男</van-radio>
<van-radio name="女" shape="square">女</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field :rules="[{ required: true, message: '请选择婚否' }]" label="婚否" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="item.marry">
<van-radio name="未婚" shape="square">未婚</van-radio>
<van-radio name="已婚" shape="square">已婚</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field label="年龄" name="age" placeholder="请填写年龄" type="digit"
:rules="[{ required: true }]" v-model="item.age"></van-field>
<van-field label="身份证号" name="idCard" placeholder="请填写身份证号" type="digit"
:rules="[{ required: true }]" v-model="item.idCard"></van-field>
<van-field label="手机号" name="mobile" placeholder="请填写手机号" type="digit"
:rules="[{ required: true }]" v-model="item.mobile"></van-field>
</van-tab>
</van-tabs>
</div>
<div v-if="formData.companionList.length == 0" class="empty_text">
<span>
如有家属,请添加家属
</span>
</div>
</div>
</div>
</div>
<div class="footer">
<van-button class="join join_submit">提交选择</van-button>
</div>
<div class="footer">
<van-button class="join join_submit">提交选择</van-button>
</div>
</van-form>
</van-form>
</div>
</div>
<!--体检院区弹出框-->
<van-popup position="bottom" round v-model="campusVisible">
<van-picker
title="院区" show-toolbar
:columns="campusList" value-key="campusName"
@confirm="(value, index) => {formData.campusName = value.campusName; formData.campus = value.id; campusVisible = false}"
@cancel="campusVisible = false">
</van-picker>
</van-popup>
<!--体检院区弹出框-->
<van-popup position="bottom" round v-model="campusVisible">
<van-picker
title="院区" show-toolbar
:columns="campusList" value-key="campusName"
@confirm="(value, index) => {formData.campusName = value.campusName; formData.campus = value.id; campusVisible = false}"
@cancel="campusVisible = false">
</van-picker>
</van-popup>
<!--查看说明-->
<van-popup position="bottom" round v-model="descVisible" :style="{ height: '60%' }">
<div v-html="desc" class="pre_text"></div>
</van-popup>
<!--查看说明-->
<van-popup position="bottom" round v-model="descVisible" :style="{ height: '60%' }">
<div v-html="desc" class="pre_text"></div>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
id: '',
selectId: '',
active: 0,
project: {},
formData: {
companionList: [],
isFamily: '否',
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
id: '',
selectId: '',
active: 0,
project: {},
formData: {
companionList: [],
isFamily: '否',
},
campusList: [],
campusVisible: false,
descVisible: false,
desc: '',
}
},
campusList: [],
campusVisible: false,
descVisible: false,
desc: '',
}
},
methods: {
viewDesc(o) {
if(o.description) {
this.desc = o.description
this.descVisible = true
} else {
vant.Toast('暂无详细说明')
}
},
async joinSubmit() {
if(!this.formData.subjectId) {
vant.Toast('请选择体检套餐')
return
}
const p = this.project.healthCheckupProjectSubjects.find(o => o.id === this.formData.subjectId)
const res = await $.post('/mobile/healthCheckup/validCondition', {
cndId: p.conditionStructureId,
})
if(res.code !== 0) {
vant.Dialog.alert({
title: '提示',
message: res.msg,
confirmButtonColor: '#1867b0'
})
return
}
vant.Dialog.confirm({
title: '温馨提醒',
message: '您确定要选择' + p.optionName + '吗?',
}).then(async () => {
const toast = vant.Toast.loading({
duration: 0,
forbidClick: true,
overlay: true,
message: '努力提交中',
})
const cloneData = clone(this.formData)
if(cloneData.isFmaily === '否') {
cloneData.companionList = []
}
cloneData.companionList.forEach((item, index) => {
if (item.userName === '') {
cloneData.companionList.splice(index, 1)
methods: {
viewDesc(o) {
if (o.description) {
this.desc = o.description
this.descVisible = true
} else {
vant.Toast('暂无详细说明')
}
},
async joinSubmit() {
if (!this.formData.subjectId) {
vant.Toast('请选择体检套餐')
return
}
//如果等于家属
if (this.project.healthCheckupType === 'js' && this.formData.companionList && this.formData.companionList.length === 0) {
vant.Toast('当前体检项目需要填写家属信息,请填写家属信息。')
return
}
const p = this.project.healthCheckupProjectSubjects.find(o => o.id === this.formData.subjectId)
const res = await $.post('/mobile/healthCheckup/validCondition', {
cndId: p.conditionStructureId,
})
if (res.code !== 0) {
vant.Dialog.alert({
title: '提示',
message: res.msg,
confirmButtonColor: '#1867b0'
})
return
}
vant.Dialog.confirm({
title: '温馨提醒',
message: '您确定要选择' + p.optionName + '吗?',
}).then(async () => {
const toast = vant.Toast.loading({
duration: 0,
forbidClick: true,
overlay: true,
message: '努力提交中',
})
const cloneData = clone(this.formData)
if (cloneData.isFmaily === '否') {
cloneData.companionList = []
}
cloneData.companionList.forEach((item, index) => {
if (item.userName === '') {
cloneData.companionList.splice(index, 1)
}
})
cloneData.projectId = this.id
const resp = await $.post('/mobile/healthCheckup/doSubmit', {
userSelection: JSON.stringify(cloneData),
})
setTimeout(() => {
if (resp.code === 0) {
toast.message = '提交成功'
toast.type = 'success'
} else {
toast.message = resp.msg
toast.type = 'fail'
}
setTimeout(() => {
toast.clear()
}, 500)
if (resp.code === 0) {
location.href = '/mobile/healthCheckup/mine'
}
}, 1000)
}).catch(() => {
})
},
addCompanion() {
this.formData.companionList.push({userName: '', sex: '', marry: '',})
},
delCompanion() {
this.formData.companionList.splice(this.active, 1)
},
//查询有哪些体检套餐
async findSubject() {
const resp = await $.post('/platform/healthCheckup/project/mange/findOne', {id: this.id})
this.project = resp.data
this.formData.isFamily = this.project.healthCheckupType === 'jzg' ? "否" : "是"
//const sex = "${@shiro.getPrincipalProperty('sex')}";
//this.project.healthCheckupProjectSubjects = this.project.healthCheckupProjectSubjects.filter(o => o.sex === sex || o.sex === '' || o.sex === null)
},
//获取院区
async getCampus() {
const resp = await $.post('/mobile/healthCheckup/getCampus')
this.campusList = resp.data
},
//获取报名信息
async getSelectInfo() {
const resp = await $.post('/mobile/healthCheckup/getSelectInfo', {id: this.selectId})
this.formData = resp.data
const o = this.campusList.find(o => o.id === this.formData.campus)
this.formData.campusName = o.campusName
},
},
async created() {
this.id = GetQueryString('projectId')
this.selectId = GetQueryString('selectId')
await this.getCampus()
if (GetQueryString('selectId')) {
await this.getSelectInfo()
}
})
cloneData.projectId = this.id
const resp = await $.post('/mobile/healthCheckup/doSubmit', {
userSelection: JSON.stringify(cloneData),
})
setTimeout(() => {
if (resp.code === 0) {
toast.message = '提交成功'
toast.type = 'success'
} else {
toast.message = resp.msg
toast.type = 'fail'
}
setTimeout(() => {
toast.clear()
}, 500)
if (resp.code === 0) {
location.href = '/mobile/healthCheckup/mine'
}
}, 1000)
}).catch(() => {})
},
addCompanion() {
this.formData.companionList.push({userName: '', sex: '', marry: '',})
},
delCompanion() {
this.formData.companionList.splice(this.active, 1)
},
//查询有哪些体检套餐
async findSubject() {
const resp = await $.post('/platform/healthCheckup/project/mange/findOne', {id: this.id})
this.project = resp.data
//const sex = "${@shiro.getPrincipalProperty('sex')}";
//this.project.healthCheckupProjectSubjects = this.project.healthCheckupProjectSubjects.filter(o => o.sex === sex || o.sex === '' || o.sex === null)
},
//获取院区
async getCampus() {
const resp = await $.post('/mobile/healthCheckup/getCampus')
this.campusList = resp.data
},
//获取报名信息
async getSelectInfo() {
const resp = await $.post('/mobile/healthCheckup/getSelectInfo', {id: this.selectId})
this.formData = resp.data
const o = this.campusList.find(o => o.id === this.formData.campus)
this.formData.campusName = o.campusName
},
},
async created() {
this.id = GetQueryString('projectId')
this.selectId = GetQueryString('selectId')
await this.getCampus()
if(GetQueryString('selectId')) {
await this.getSelectInfo()
}
await this.findSubject()
},
})
window.onload = () => {
window.addEventListener('pageshow', e => {
if (e.persisted) {
window.location.reload()
}
await this.findSubject()
},
})
}
window.onload = () => {
window.addEventListener('pageshow', e => {
if (e.persisted) {
window.location.reload()
}
})
}
</script>
<!--#
}
@@ -129,12 +129,6 @@ layout("/mobile/platform.html"){
<van-empty v-else description="暂无数据"></van-empty>
</template>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/healthCheckup/list">套餐选择</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/healthCheckup/mine">我的套餐</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
@@ -143,7 +137,6 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
tabName: 'ing',
}
},
@@ -126,13 +126,6 @@ layout("/mobile/platform.html"){
<van-empty v-else description="暂无数据"></van-empty>
</template>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/mobile/healthCheckup/list">套餐选择</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/healthCheckup/mine">我的套餐</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
new Vue({
@@ -140,7 +133,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 1,
}
},
methods: {
@@ -156,7 +149,7 @@ layout("/mobile/platform.html"){
const res = await $.post('/mobile/healthCheckup/cancel', {id: o.id, projectId: o.projectId})
if(res.code === 0) {
vant.Toast('取消成功')
this.getData()
this.doSearch()
}else {
vant.Toast(res.msg)
}
@@ -123,7 +123,7 @@ layout("/mobile/platform.html"){
data() {
return {
tabName: 'ing',
tarBarActive: 0,
tarBarActive: 0
}
},
methods: {
@@ -135,23 +135,11 @@ layout("/mobile/platform.html"){
provideTimeEnd,
provideTimeStart,
choiceTimeEnd,
selfUnionId,
unionIdList,
isAnnualFestival
choiceTimeStart
} = o
/* const resp = await $.get('/mobile/welfare/mine/isReceive', {projectId: id})
const isReceive = resp.data*/
if (isAnnualFestival && !unionIdList.includes(selfUnionId)){
vant.Dialog.confirm({
title: '提醒',
message: '您不在选择范围内,系统已为您默认选择完毕,是否前往查看',
}).then(() => {
location.href = '/mobile/welfare/list/receive_success?projectId=' + id + '&provideMode=' + provideMode
})
return
}
if (this.tabName === 'ing') {
if (flexible) {
if (moment().valueOf() < moment(provideTimeEnd).valueOf() &&
@@ -213,10 +201,9 @@ layout("/mobile/platform.html"){
this.pageForm.tabName = 'ing'
this.pageData()
this.closeLoading()
},
}
},
async created() {
created() {
this.init()
},
@@ -229,7 +229,7 @@ layout("/mobile/platform.html"){
async-change
button-size="20"
theme="round"
:disabled="confirmButtonInfo.disabled || option.isSystemDefault"
:disabled="confirmButtonInfo.disabled"
integer
disable-input
v-model="option.selectNum"></van-stepper>
@@ -410,7 +410,6 @@ layout("/mobile/platform.html"){
}
return null
},
confirmButtonInfo() {
if (this.projectInfo) {
const {choiceTimeEnd, choiceTimeStart, overdueChoiceTimeEnd} = this.projectInfo
@@ -592,11 +591,6 @@ layout("/mobile/platform.html"){
if (resp.code === 0) {
resp.data.multiSelectNum = resp.data.multiSelectNum ? resp.data.multiSelectNum : 1
this.projectInfo = resp.data
this.projectInfo.welfareProjectSubjects[0].options.map(v=>{
if (v.isSystemDefault){
v.selectNum = 1
}
})
this.getUserSelection(this.projectId)
}
},
@@ -39,8 +39,15 @@ layout("/mobile/platform.html"){
background-color: #f3f3f3;
}
.van-empty{
.van-action-sheet__header {
font-weight: bold;
}
.courierNumberSheet .van-empty {
position: relative;
left: unset !important;
top: unset !important;
transform: unset !important;
}
</style>
@@ -51,17 +58,18 @@ layout("/mobile/platform.html"){
title="我的福利"></van-nav-bar>
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" :options="yearOption" @change="yearChange"></van-dropdown-item>
<van-dropdown-item :options="yearOption" @change="yearChange"
v-model="pageForm.year"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<template v-if="vLoading && !vLoading.value">
<van-list
v-if="tableData.length>=0"
:finished="finished"
@load="pageData"
finished-text="没有更多了"
v-if="tableData.length>=0"
v-model="loading">
<template v-for="item in tableData">
<div style="padding: 10px;margin:10px 10px 0 10px;position: relative;background: #FFFFFF;border-radius: 10px">
@@ -89,7 +97,7 @@ layout("/mobile/platform.html"){
v-if="item.cover">
<img src="/assets/mobile/svg/welfare/welfareHome.svg"
style="width: 88px;height: 88px"
v-else></img>
v-else/>
</template>
<div slot="tags" style="margin-top: 5px;padding-left: 30px;"
v-if="item.gifts">
@@ -104,8 +112,10 @@ layout("/mobile/platform.html"){
<div slot="footer" style="margin-top: 10px;">
<van-button @click="openEvaluate(item)" plain round size="small">评价商品
</van-button>
<van-button @click="openExpress(item)" plain round size="small" v-if="item.provideMode==3">物流信息
</van-button>
<!-- <van-button @click="openExpress(item)" plain round size="small"-->
<!-- v-if="item.provideMode==3">-->
<!-- 物流信息-->
<!-- </van-button>-->
<van-button @click="openView(item)" plain round size="small">查看详情
</van-button>
</div>
@@ -116,12 +126,12 @@ layout("/mobile/platform.html"){
</template>
<!--查看详情-->
<van-popup :style="{ height: '80%', background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="descPopup">
<!-- :style="{ height: '80%', background:'#f9f9f9','padding-top':'30px'}"-->
<!-- closeable-->
<!-- position="bottom"-->
<!-- round-->
<!-- safe-area-inset-bottom-->
<van-action-sheet title="查看详情" v-model="descPopup">
<div class="van-cell-group--inset">
<van-cell>
<van-icon class="van-cell__left-icon" color="red" name="location"
@@ -134,10 +144,14 @@ layout("/mobile/platform.html"){
:num="item.selectNum"
:thumb="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.imgUrl"
:title="item.optionName"
desc=""
style="border-radius: 8px;background: #FFFFFF"
v-for="item in selectedOptions"
></van-card>
>
<template #desc>
<div>{{item.supplier}}</div>
<div>{{item.simpleDesc}}</div>
</template>
</van-card>
</van-cell>
</div>
@@ -168,18 +182,37 @@ layout("/mobile/platform.html"){
</div>
</van-popup>
</van-action-sheet>
<!--评价-->
<van-popup :style="{ background:'#f9f9f9','padding-top':'30px'}"
<van-popup :style="{ height: '60%',background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="evaluatePopup">
<div style="margin-top: 20px">
<van-radio-group v-model="evaluateFormData.optionId">
<van-cell-group>
<van-cell
:key="item.selectOptionId"
@click="optionIdClick(item.selectOptionId)"
clickable v-for="item in selectedOptions">
<template #title>
{{item.optionName}}
<span style="color: red" v-if="!item.isPj">未评价</span>
</template>
<template #right-icon>
<van-radio :name="item.selectOptionId"></van-radio>
</template>
</van-cell>
</van-cell-group>
</van-radio-group>
</div>
<div class="evaluateForm">
<div style="text-align: center;margin: 20px 0;font-size: 20px;color: #f18d8d;font-weight: bold;">
您的评价让我们做的更好
</div>
@@ -191,7 +224,6 @@ layout("/mobile/platform.html"){
:gutter="10"
:readonly="evaluateFormData.id"
:size="40"
allow-half
color="#ffd21e"
v-model="evaluateFormData.evaluateScore"
void-color="#eee"
@@ -261,6 +293,50 @@ layout("/mobile/platform.html"){
</div>
</van-popup>
<!--快递物流信息-->
<van-action-sheet class="courierNumberSheet"
title=快递物流信息
v-model="courierNumberShow">
<div style="padding: 16px 16px 16px">
<div v-for="(v,k) in optionCourierNumberInfo">
<van-cell :title="k">
<div slot="title" style="font-weight: bold">
{{k}}
</div>
</van-cell>
<van-collapse accordion v-model="activeName">
<van-collapse-item :key="item.courierNumber" :name="item.courierNumber"
:title="item.courierNumber" v-for="item in v">
<template>
<van-cell :value="item.courierNumber" class="address-cell"
title="快递单号">
<div>
{{item.courierNumber || '暂无'}}
</div>
</van-cell>
<van-cell class="logistics_cell" title="物流跟踪">
<van-steps :active="0"
direction="vertical"
v-if="item.logisticsTrace && item.logisticsTrace.logisticsTraceDetailList">
<van-step
v-for="(timeline, timelineIndex) in item.logisticsTrace.logisticsTraceDetailList">
<h3> {{timeline.desc}}</h3>
<p>{{moment(timeline.time)
.format('YYYY-MM-DD HH:mm:ss')}}</p>
</van-step>
</van-steps>
<van-empty v-else></van-empty>
</van-cell>
<van-divider :hairline="false"></van-divider>
</template>
</van-collapse-item>
</van-collapse>
</div>
</div>
</van-action-sheet>
</div>
<script>
@@ -295,7 +371,14 @@ layout("/mobile/platform.html"){
stepsActive: 0,
yearOption:[]
yearOption: [],
courierNumberShow: false,
courierNumberActions: [],
activeName: null,
optionCourierNumberInfo: []
}
},
@@ -315,19 +398,23 @@ layout("/mobile/platform.html"){
},
methods: {
optionIdClick(selectOptionId) {
this.$set(this.evaluateFormData, 'optionId', selectOptionId)
this.finOneWelfareEvaluate(this.evaluateFormData.projectId, selectOptionId);
},
async getUserSelection(projectId) {
const resp = await $.get('/platform/welfare/mine/getUserSelection', {projectId})
return resp
},
//查看选择详情
async openView(item) {
const {projectId, provideMode, signMode} = item
this.provideMode = provideMode
this.signMode = signMode
const {
code,
data,
msg
} = await $.get('/platform/welfare/mine/getUserSelection', {projectId})
const {code, data, msg} = await this.getUserSelection(projectId)
if (code === 0) {
if (data.length === 0) {
this.$modal.msg('您还没有选择福利,请先到职工福利》福利列表下选择')
this.$modal.msg('您还没有选择福利,请先到职工福利->福利列表下选择')
return
}
this.descPopup = true
@@ -337,20 +424,36 @@ layout("/mobile/platform.html"){
//打开评价
async openEvaluate(item) {
if(!item.courierNumber){
if (!item.courierNumber) {
this.$modal.msg("收货后才能评价")
return
}
const resp = await this.getUserSelection(item.projectId)
this.selectedOptions = resp.data
if (this.selectedOptions && this.selectedOptions.length > 0) {
await this.finOneWelfareEvaluate(item.id, this.selectedOptions[0].selectOptionId)
}
this.evaluatePopup = true
},
async finOneWelfareEvaluate(projectId, optionId) {
const {
data,
code,
msg,
data
} = await $.get('/platform/welfare/mine/finOneWelfareEvaluate', {projectId: item.projectId})
msg
} = await $.post("/platform/welfare/mine/finOneWelfareEvaluate", {
projectId: projectId,
optionId: optionId
})
if (code === 0) {
this.evaluateFormData = data ? data : {}
this.evaluateFormData.projectId = item.projectId
this.evaluatePopup = true
if (data) {
this.evaluateFormData = data
} else {
this.evaluateFormData = {
projectId: projectId,
optionId: optionId
}
}
} else {
this.$message.warning(msg)
}
@@ -411,12 +514,27 @@ layout("/mobile/platform.html"){
//打开物流
async openExpress(item) {
if (!item.courierNumber) {
this.$toast('未发货无法查询物流信息,请耐心等待!')
return
const {
code,
data,
msg
} = await $.get('/platform/welfare/common/courierNumberInfo', {
welfareId: item.projectId,
userId: item.userId
})
if (code === 0) {
if (data == null || data.length === 0) {
this.$modal.msg('您还没有选择福利套餐')
return
}
this.optionCourierNumberInfo = data
const keys = Object.keys(this.optionCourierNumberInfo)
this.activeName = this.optionCourierNumberInfo[keys[0]][0].courierNumber
this.courierNumberShow = true
} else {
this.$modal.msgError(msg)
}
await this.getExpressInfo(item)
this.expressPopup = true
},
yearChange(val) {
@@ -44,7 +44,7 @@ layout("/layouts/platform.html"){
</el-col>
<el-col :span="8">
<el-form-item label="所属工会" prop="unionId">
<el-select placeholder="请选择分工会" v-model="formData.unionId"
<el-select placeholder="请选择院级工会" v-model="formData.unionId"
style="width: 100%;"
disabled
clearable="true"
@@ -3,8 +3,8 @@ layout("/layouts/platform.html"){
#-->
<div id="app" class="platform" v-cloak>
<guava ref="guava" padding="0 5%">
<div class="platform" id="app" v-cloak>
<guava padding="0 5%" ref="guava">
<template>
<el-card shadow="never">
<div class="search">
@@ -16,8 +16,8 @@ layout("/layouts/platform.html"){
:clearable="true"
@change="yearChange"
placeholder="选择年"
type="year"
style="width: 100%;"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
@@ -40,10 +40,10 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">职工信息:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 100%">
<el-select v-model="pageForm.searchName" slot="prepend"
style="width: 80px;">
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
style="width: 100%" v-model="pageForm.searchKeyword">
<el-select slot="prepend" style="width: 80px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
</el-select>
@@ -54,13 +54,13 @@ layout("/layouts/platform.html"){
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="请选择所属工会" v-model="pageForm.unionId"
style="width: 100%;"
<el-select @change="flushUnits" @clear="flushUnits"
clearable
@change="flushUnits" @clear="flushUnits"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
filterable="true"
placeholder="请选择所属工会" style="width: 100%;"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
</div>
@@ -68,12 +68,12 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId"
<el-select clearable filterable
placeholder="所属单位"
style="width: 100%;"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
</div>
@@ -81,16 +81,16 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
<el-select @change="getThreeUnits" clearable
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
placeholder="请选择"
style="width: 100%"
v-model="pageForm.unionGroupId">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
:value="item.id"
v-for="item in unionGroups">
</el-option>
</el-select>
</div>
@@ -99,65 +99,65 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable
clearable
placeholder="请选择">
<el-select clearable filterable placeholder="请选择"
style="width: 100%"
v-model="pageForm.threeUnitId">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in threeUnits">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="体检项目" :app="this">
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="体检项目">
<template #func>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder" :size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" ref="table"
row-key="id" style="width: 100%" v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
min-width="100px" show-overflow-tooltip v-for="column in tableColumns">
<template v-if="column.prop=='optionName'" scope="{row}">
<template scope="{row}" v-if="column.prop=='optionName'">
{{row.optionName?row.optionName:''}}
</template>
<template v-else-if="column.prop=='userSign'" scope="{row}">
<el-image v-if="row.userSign"
:src="row.userSign"
fit="cover" style="height: 60px"></el-image>
<template scope="{row}" v-else-if="column.prop=='userSign'">
<el-image :src="row.userSign"
fit="cover"
style="height: 60px" v-if="row.userSign"></el-image>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="300px"
fixed="right">
<el-table-column align="center" fixed="right" header-align="center"
label="操作" prop="userOnline"
width="300px">
<template scope="{row}">
<el-button @click="openEditHealthCheckup(row)" size="mini"
type="primary">
@@ -172,8 +172,8 @@ layout("/layouts/platform.html"){
</template>
</guava>
<el-dialog title="修改套餐" :visible.sync="exportHealthCheckupDialog" width="50%"
:close-on-click-modal="false">
<el-dialog :close-on-click-modal="false" :visible.sync="exportHealthCheckupDialog" title="修改套餐"
width="50%">
<el-form :model="editHealthCheckupData" label-width="120px" ref="editHealthCheckupForm">
<el-form-item label="姓名">
<el-input :value="editHealthCheckupData.username"></el-input>
@@ -181,17 +181,25 @@ layout("/layouts/platform.html"){
<el-form-item label="工号">
<el-input :value="editHealthCheckupData.loginname"></el-input>
</el-form-item>
<el-form-item label="套餐"
prop="subjectId"
:rules="[{required:true,message:'请选择',trigger:['change','blur']}]">
<el-select v-model="editHealthCheckupData.subjectId" style="width: 100%">
<el-option v-for="item in projectSubjectOptions" :key="item.id" :value="item.id"
:label="item.optionName"></el-option>
<el-form-item :rules="[{required:true,message:'请选择',trigger:['change','blur']}]"
label="套餐"
prop="subjectId">
<el-select style="width: 100%" v-model="editHealthCheckupData.subjectId">
<el-option :key="item.id" :label="item.optionName" :value="item.id"
v-for="item in projectSubjectOptions"></el-option>
</el-select>
</el-form-item>
<el-form-item :rules="[{required:true,message:'请选择',trigger:['change','blur']}]"
label="院区"
prop="campus">
<el-select style="width: 100%" v-model="editHealthCheckupData.campus">
<el-option :key="item.id" :label="item.campusName" :value="item.id"
v-for="item in campusOptions"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="exportHealthCheckupDialog=false" type="primary" plain>取消</el-button>
<el-row justify="end" type="flex">
<el-button @click="exportHealthCheckupDialog=false" plain type="primary">取消</el-button>
<el-button @click="doEditHealthCheckupData" type="primary" v-loading="loading">确定
</el-button>
</el-row>
@@ -231,6 +239,8 @@ layout("/layouts/platform.html"){
exportHealthCheckupDialog: false,
editHealthCheckupData: {},
loading: false,
campusOptions: [],
}
},
components: {},
@@ -256,6 +266,7 @@ layout("/layouts/platform.html"){
username: row.username,
loginname: row.loginname,
subjectId: row.subjectId,
campus: row.campus,
projectId: this.pageForm.projectId,
userId: row.id
}
@@ -284,6 +295,14 @@ layout("/layouts/platform.html"){
this.notifyError(resp.msg)
}
},
async getCampus() {
const resp = await $.get("/mobile/healthCheckup/getCampus")
if (resp.code === 0) {
this.campusOptions = resp.data
} else {
this.notifyError(resp.msg)
}
},
async getThreeUnits() {
this.$set(this.pageForm, "threeUnitId", null)
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unitId, this.pageForm.unionGroupId)
@@ -307,6 +326,7 @@ layout("/layouts/platform.html"){
this.flushUnits()
await this.yearChange()
this.pageData()
this.getCampus()
}
@@ -315,4 +335,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->
@@ -147,6 +147,14 @@ layout("/layouts/platform.html"){
</div>
</el-form-item>
</el-col>
<el-col span="24">
<el-form-item prop="healthCheckupType" label="体检对象类型">
<el-radio-group v-model="formData.healthCheckupType">
<el-radio-button label="jzg">教职工</el-radio-button>
<el-radio-button label="js">家属</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col span="24">
<el-form-item label="体检套餐" prop="healthCheckupProjectSubjects">
<el-card class="item" shadow="hover">
@@ -255,6 +263,9 @@ layout("/layouts/platform.html"){
<el-descriptions-item :span="4" label="可报名人员范围">
{{viewData.activityGroupName}}
</el-descriptions-item>
<el-descriptions-item :span="4" label="体检对象类型">
{{viewData.healthCheckupType==='jzg'?'教职工':'家属'}}
</el-descriptions-item>
<template v-for="i in viewData.healthCheckupProjectSubjects">
<el-descriptions-item label="套餐名称">
{{i.optionName}}
@@ -344,6 +355,7 @@ layout("/layouts/platform.html"){
choiceTime: [{required: true, message: '必填', trigger: ['blur', 'change']}],
activityGroupId: [{required: true, message: '必填', trigger: ['blur', 'change']}],
cover: [{required: true, message: '必填', trigger: ['blur', 'change']}],
healthCheckupType: [{required: true, message: '必填', trigger: ['blur', 'change']}],
healthCheckupProjectSubjects: [{
required: true,
message: '必填',
@@ -373,7 +385,7 @@ layout("/layouts/platform.html"){
this.$refs.openQRCode.openCode("/childrenActivities?id=" + id)
},
sendMsg(row) {
this.url = `<a href="` + (APP_DOMAIN + "/childrenActivities?id=" + row.id) + `">点击参与</a>`
this.url = `<a href="` + (APP_DOMAIN + "/mobile/healthCheckup/checkUp?projectId=" + row.id) + `">点击参与</a>`
this.$refs.sendMsg.openDialog(row.activityGroupId)
},
deleteRow(row, index) {
@@ -3,8 +3,8 @@ layout("/layouts/platform.html"){
#-->
<div id="app" class="platform" v-cloak>
<guava ref="guava" padding="0 5%">
<div class="platform" id="app" v-cloak>
<guava padding="0 5%" ref="guava">
<template>
<el-card shadow="never">
<div class="search">
@@ -15,8 +15,8 @@ layout("/layouts/platform.html"){
:clearable="true"
@change="yearChange"
placeholder="选择年"
type="year"
style="width: 100%;"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
@@ -39,13 +39,13 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select placeholder="请选择所属工会" v-model="pageForm.unionId"
<el-select :clearable="clearable" @change="doSearch();getUnionGroup();"
filterable="true"
placeholder="请选择所属工会"
style="width: 100%;"
:clearable="clearable"
@change="doSearch();getUnionGroup();"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
</div>
@@ -69,7 +69,7 @@ layout("/layouts/platform.html"){
</div>-->
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
@@ -77,42 +77,61 @@ layout("/layouts/platform.html"){
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="工会列表" :app="this" ref="table_tool">
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="工会列表" ref="table_tool">
<template #func>
<template
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H04')}">
<el-button :disabled="!pageForm.projectId" type="primary"
size="small"
icon="el-icon-printer"
@click="exportReceiveDetail()">按分工会导出已选名单
</el-button>
<template v-if="projectInfo.healthCheckupType==='jzg'">
<el-button :disabled="!pageForm.projectId"
@click="exportReceiveDetail(true)"
icon="el-icon-printer"
<el-button :disabled="!pageForm.projectId" type="primary"
size="small"
size="small"
type="primary">导出教职工已选名单
</el-button>
<el-button :disabled="!pageForm.projectId"
@click="exportReceiveDetail(false)"
icon="el-icon-printer"
size="small"
type="primary"
v-if="projectInfo.healthCheckupType==='jzg'">导出教职工未选名单
</el-button>
<el-button @click="selectOptionByAdmin"
icon="el-icon-printer"
size="small"
type="primary"
v-if="${@shiro.hasRole('sysadmin')}">管理员代选择
</el-button>
</template>
<el-button :disabled="!pageForm.projectId"
@click="exportUserCompanion()"
icon="el-icon-printer"
@click="exportUserCompanion()">导出家属名单
size="small"
type="primary"
v-if="projectInfo.healthCheckupType==='js'">导出家属名单
</el-button>
</template>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder" :size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table"
show-summary :summary-method="getSummaries">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
<el-table :data="tableData" :size="tableSize" :summary-method="getSummaries"
@sort-change="pageOrder" class="vi-table"
ref="table" row-key="id" show-summary
style="width: 100%" v-loading="tableLoading">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
min-width="100px" show-overflow-tooltip v-for="column in tableColumns">
<!--<template scope="{row}" v-if="column.prop=='unionname'">
({{row.unioncode}}){{row.unionname}}
@@ -124,13 +143,13 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="200px"
fixed="right">
<el-table-column align="center" fixed="right" header-align="center"
label="操作" prop="userOnline"
width="200px">
<template scope="{row}">
<el-button @click="openView(row.id)" size="mini"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H04')}"
type="primary">
type="primary"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H04')}">
查看已选人员
</el-button>
</template>
@@ -145,12 +164,12 @@ layout("/layouts/platform.html"){
<div class="search">
<div class="search-item">
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable
<el-input clearable placeholder="请输入内容"
v-model="pageFormUnion.searchKeyword">
<el-select v-model="pageFormUnion.searchName" slot="prepend"
placeholder="查询类型"
@keyup.enter.native="doUnionSearch"
style="width: 80px;">
<el-select @keyup.enter.native="doUnionSearch" placeholder="查询类型"
slot="prepend"
style="width: 80px;"
v-model="pageFormUnion.searchName">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginname"></el-option>
</el-select>
@@ -159,7 +178,7 @@ layout("/layouts/platform.html"){
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doUnionSearch">搜索
<el-button @click="doUnionSearch" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
</div>
@@ -169,24 +188,24 @@ layout("/layouts/platform.html"){
icon="el-icon-printer"
@click="exportReceiveDetailByUnionId(true)">导出已选名单
</el-button>-->
<el-card shadow="never" class="mt10">
<el-card class="mt10" shadow="never">
<div v-if="pageFormUnion.isSelected=='0'">
<vi-title title="已选人员"></vi-title>
</div>
<div v-else>
<vi-title title="未选人员"></vi-title>
</div>
<el-table :data="receive_tableData" style="width: 100%;height: 700px" row-key="id"
<el-table :data="receive_tableData" :size="tableSize" class="vi-table"
height="100%"
v-loading="tableLoading" class="vi-table" :size="tableSize">
row-key="id" style="width: 100%;height: 700px" v-loading="tableLoading">
<el-table-column type="index" width="50"></el-table-column>
<el-table-column
align="center"
v-for="column in receive_tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
show-overflow-tooltip
v-for="column in receive_tableColumns"
>
</el-table-column>
</el-table>
@@ -194,18 +213,43 @@ layout("/layouts/platform.html"){
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageFormUnion.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="pageFormUnion.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageFormUnion.totalCount">
:page-sizes="[5,10, 20, 30, 50]"
:total="pageFormUnion.totalCount"
@current-change="pageNumberChange"
@size-change="pageSizeChange"
layout="total, sizes, prev, pager, next">
</el-pagination>
</el-row>
</template>
</guava>
<el-dialog :visible.sync="selectByAdminDialogVisible" title="管理员代选体检项目"
width="35%">
<el-form label-position="right" label-width="120px">
<el-form-item label="体检项目">
<el-select style="width: 100%" v-model="noSelectOptionId">
<el-option :key="item.id" :label="item.optionName" :value="item.id"
v-for="item in projectSubjectOptions"></el-option>
</el-select>
</el-form-item>
<el-form-item
label="院区"
prop="campus">
<el-select style="width: 100%" v-model="campus">
<el-option :key="item.id" :label="item.campusName" :value="item.id"
v-for="item in campusOptions"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-row justify="end" type="flex">
<el-button @click="selectByAdminDialogVisible=false">取消</el-button>
<el-button @click="doSelectByAdmin" type="primary" :loading="loading">提交</el-button>
</el-row>
</el-dialog>
</div>
<script>
@@ -236,9 +280,52 @@ layout("/layouts/platform.html"){
{prop: 'sumCount', label: '本次体检人数'},
],
unioncode: null,
projectInfo: {},
selectByAdminDialogVisible: false,
projectSubjectOptions: [],
campusOptions: [],
noSelectOptionId: null,
campus: null,
loading:false,
}
},
methods: {
async doSelectByAdmin() {
if (!this.noSelectOptionId || !this.campus) {
this.notifyWarning('请选择套餐/院区')
return
}
const {optionName} = this.projectSubjectOptions.find(v => v.id === this.noSelectOptionId)
const confirm = await this.$confirm('请确定是否把【' + optionName + '】福利赋给未选择的教职工?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.loading = true
const resp = await $.get(loc() + '/doSelectByAdmin', {
optionId: this.noSelectOptionId,
campus: this.campus,
projectId: this.pageForm.projectId
})
if (resp.code === 0) {
this.doSearch()
this.loading = false
this.selectByAdminDialogVisible = false
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
},
selectOptionByAdmin() {
this.noSelectOptionId = null
this.selectByAdminDialogVisible = true
},
async yearChange() {
const resp = await $.get("/platform/healthCheckup/project/mange/getHealthCheckupProject", {year: this.pageForm.year})
if (resp.code === 0) {
@@ -258,6 +345,7 @@ layout("/layouts/platform.html"){
const resp = await $.get("/platform/healthCheckup/project/mange/findOne", {id: this.pageForm.projectId})
if (resp.code === 0) {
if (resp.data) {
this.projectInfo = resp.data
this.projectSubjectOptions = resp.data.healthCheckupProjectSubjects
}
} else {
@@ -265,6 +353,14 @@ layout("/layouts/platform.html"){
}
this.doSearch()
},
async getCampus() {
const resp = await $.get("/mobile/healthCheckup/getCampus")
if (resp.code === 0) {
this.campusOptions = resp.data
} else {
this.notifyError(resp.msg)
}
},
async getUnionGroup() {
if (this.pageForm.unionId) {
this.unionGroups = await unionGroupsByUnionId(this.pageForm.unionId)
@@ -323,14 +419,13 @@ layout("/layouts/platform.html"){
await this.getUnionGroup()
if ("${@shiro.hasRole('ghxzzz')}" === 'true') {
this.$set(this.pageForm, "unionGroupId", this.unionGroups[0].id)
} else {
this.clearable = true
}
} else {
this.unions = await getUnions(null)
this.clearable = true
}
await this.yearChange()
await this.getCampus()
},
//查看未选择人数
async openUnclaimed(unionId) {
@@ -359,9 +454,10 @@ layout("/layouts/platform.html"){
this.pageFormUnion.pageNumber = 1
this.pageUnionData();
},
//按分工会导出已选名单
exportReceiveDetail(flag) {
const {year,projectId, unionId} = this.pageForm
const {year, projectId, unionId} = this.pageForm
window.open(loc() + '/exportReceiveDetail?year=' + year + '&projectId=' + projectId + '&unionId=' + (unionId ? unionId : '') + '&flag=' + flag)
},
//导出家属信息
@@ -369,7 +465,7 @@ layout("/layouts/platform.html"){
const {year, projectId, unionId} = this.pageForm
window.open(loc() + '/exportUserCompanion?year=' + year + '&projectId=' + projectId + '&unionId=' + (unionId ? unionId : ''))
},
getSummaries(param){
getSummaries(param) {
const {columns, data} = param;
const sums = [];
columns.forEach((column, index) => {
@@ -95,6 +95,17 @@ layout("/layouts/platform.html"){
</div>
</div>
<div class="search-item">
<div class="search-item-label">套餐:</div>
<div class="search-item-option">
<el-select clearable placeholder="请选择所选福利" style="width: 100%"
v-model="pageForm.optionId">
<el-option :label="item.optionName" :value="item.id"
v-for="item in welfareOptions"></el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索
</el-button>
@@ -212,7 +223,8 @@ layout("/layouts/platform.html"){
{name: "3分", code: 3},
{name: "4分", code: 4},
{name: "5分", code: 5},
]
],
welfareOptions: [],
}
},
methods: {
@@ -235,7 +247,9 @@ layout("/layouts/platform.html"){
},
async yearChange() {
this.$set(this.pageForm, "projectId", null)
this.$set(this.pageForm, "optionId", null)
await this.getWelfareProjectList()
await this.getWelfareOptions()
this.doSearch()
},
async flushUnits() {
@@ -245,11 +259,18 @@ layout("/layouts/platform.html"){
this.units = await getUnits(this.pageForm.unionId)
}
},
async getWelfareOptions() {
const resp = await $.post(loc() + '/welfareOptions', {projectId: this.pageForm.projectId})
this.welfareOptions = resp.data
},
},
async created() {
await this.getWelfareProjectList()
this.pageData()
this.unions = await getUnions(null, false)
await this.getWelfareOptions()
}
})
</script>
@@ -52,8 +52,12 @@ let doExportWelfare = (projectId) => {
window.open(welfareCommonUrl + "/doExportWelfare?projectId=" + projectId)
}
let doExportWelfareReceive = (projectId, welfareUnit) => {
window.open(welfareCommonUrl + "/exportReceive?projectId=" + projectId + "&welfareUnit=" + welfareUnit)
let doExportWelfareReceive = (projectId, welfareUnit, welfareTwoUnit = [], personTypes = [], userStates = []) => {
window.open(welfareCommonUrl + "/exportReceive?projectId=" + projectId
+ "&welfareUnit=" + welfareUnit
+ "&welfareTwoUnit=" + welfareTwoUnit
+ "&personTypes=" + JSON.stringify(personTypes)
+ "&userStates=" + JSON.stringify(userStates))
}
let exportWelfareListSummary = (projectId) => {
@@ -94,19 +98,19 @@ const minixs = {
}
}
const judgmentAuthority = "${@shiro.hasRole('sysadmin')||@shiro.hasRole('flwyh01')||@shiro.hasRole('A06')}" === 'true'
const judgmentAuthority = "${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')||@shiro.hasRole('SchoolUnionWelfareAdmin')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true'
const sexOptions = ['男', '女']
let commonColumns = [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'loginname', label: '工号', width: "100"},
{prop: 'username', label: '姓名', width: "80"},
{prop: 'sex', label: '性别', sortable: true, width: '100px', checked: 0},
{prop: 'personType', label: '人员类型', sortable: true, checked: 0},
{prop: 'personType', label: '人员类型', sortable: true, width: "100"},
{prop: 'userState', label: '在职状态', sortable: true, width: "100"},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 0},
// {prop: 'isReceive', label: '是否领取', sortable: true}
]
// {prop: 'campusName', label: '所属校区', sortable: true},]
@@ -125,6 +125,7 @@ layout("/layouts/platform.html"){
</el-select>
</div>
</div>
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
@@ -172,40 +173,60 @@ layout("/layouts/platform.html"){
</el-select>
</div>
</div>
<!--<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
clearable
@change="doSearch"
multiple
placeholder="人员类型"
code="UserType"></dict-select>
<template v-if="searchMore">
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select @change="doSearch"
clearable
code="UserType"
multiple
placeholder="人员类型"
style="width: 100%"
v-model="pageForm.personTypes"></dict-select>
</div>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userStates" style="width: 100%"
clearable
@change="doSearch"
multiple
placeholder="在职状态"
code="userState"></dict-select>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select @change="doSearch" clearable
code="userState"
multiple
placeholder="在职状态"
style="width: 100%"
v-model="pageForm.userStates"></dict-select>
</div>
</div>
</div>-->
<div class="search-item">
<div class="search-item-label">所选福利:</div>
<div class="search-item-option">
<el-select clearable placeholder="请选择所选福利" style="width: 100%"
v-model="pageForm.optionId">
<el-option :label="item.optionName" :value="item.id"
v-for="item in welfareOptions"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">快递单号:</div>
<div class="search-item-option">
<el-input clearable placeholder="请输入快递单号"
v-model="pageForm.courierNumber"></el-input>
</div>
</div>
</template>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索
</el-button>
<more v-model="searchMore"></more>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="福利名单">
<template #func>
<!--<el-button type="primary" size="small" @click="openImport">导入名单</el-button>-->
<!-- <el-button :disabled="!pageForm.projectId"
@click="doExportWelfareReceive(pageForm.projectId,pageForm.welfareUnit,pageForm.units,pageForm.personTypes,pageForm.userStates)"
icon="el-icon-download"
@@ -214,6 +235,7 @@ layout("/layouts/platform.html"){
导出领取名单
</el-button>-->
<!-- <el-button v-if="pageFormProjectType===3" type="primary" size="small"
icon="el-icon-download"
@click="sendMsgToNotWriteAddressUsers">
@@ -226,7 +248,14 @@ layout("/layouts/platform.html"){
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">
批量领取
</el-button>-->
<el-button v-if="pageFormProjectType==3"
<el-button :disabled="pageFormProjectType!==3"
@click="doExcelByOptionId"
icon="el-icon-printer" size="small"
type="primary"
v-if="judgmentAuthority">
导出报销表
</el-button>
<el-button :disabled="pageFormProjectType!==3"
@click="openImportExpressExcel"
icon="el-icon-printer" size="small"
type="primary"
@@ -242,6 +271,7 @@ layout("/layouts/platform.html"){
一键全部领取
</el-button>
<!-- <el-button :disabled="!pageForm.projectId" type="primary" size="small"
icon="el-icon-download"
@click="openExportWelFareList(pageForm.projectId)">导出签字表
@@ -277,6 +307,7 @@ layout("/layouts/platform.html"){
width="80px"></el-table-column>
<el-table-column
:key="column.prop"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
@@ -285,35 +316,19 @@ layout("/layouts/platform.html"){
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns">
<template scope="{row}" v-if="column.prop=='unionname'">
{{row.unionname}}
<template scope="{row}" v-if="column.prop=='isChoose'">
<span class="text-primary" v-if="row.isChoose">已选择</span>
<span class="text-danger" v-else>未选择</span>
</template>
<template scope="{row}" v-else-if="column.prop=='unitname'">
{{row.unitname}}
</template>
<template scope="{row}" v-else-if="column.prop=='isChoose'">
<el-tag type="success" v-if="row.isChoose">已选择</el-tag>
<el-tag type="warning" v-else>未选择</el-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='gist_list'">
{{row.gist_list?row.gist_list:'暂无'}}
</template>
<template scope="{row}" v-else-if="column.prop=='threeUnitName'">
<span v-if="row.threeUnitName"> {{row.threeUnitName}}</span>
<span v-else>暂无</span>
</template>
<template scope="{row}" v-else-if="column.prop=='userSign'">
<el-image :src="'/signature/getSignData?path=' +row.userSign"
fit="cover"
style="height: 60px" v-if="row.userSign"></el-image>
<el-tag type="warning" v-else>暂无</el-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='realWelfareUnitId'">
<span v-if="!row.editWelfareUnit">{{row.realWelfareUnitName}}</span>
<div v-else>
@@ -330,35 +345,23 @@ layout("/layouts/platform.html"){
</el-select>
</div>
</template>
</el-table-column>
<el-table-column label="快递单号" prop="courierNumber" show-overflow-tooltip
v-if="pageFormProjectType===3"></el-table-column>
v-if="pageFormProjectType===3">
<template scope="{row}">
<span @click="viewCourierNumber(row)" class="text-primary"
style="cursor: pointer">点击查看</span>
</template>
</el-table-column>
<el-table-column label="收货地址" prop="receiveAddress" show-overflow-tooltip
v-if="pageFormProjectType===3"></el-table-column>
<el-table-column align="center" fixed="right"
header-align="center" label="操作"
width="300px">
width="200px">
<template scope="{row}">
<!-- <div v-if="row.editWelfareUnit">-->
<!-- <el-button :loading="row.editWelfareUnitLoading"-->
<!-- @click="doEditWelfareUnit(row)"-->
<!-- size="mini"-->
<!-- type="primary">确定-->
<!-- </el-button>-->
<!-- <el-button :disabled="row.editWelfareUnitLoading"-->
<!-- @click="row.editWelfareUnit=!row.editWelfareUnit"-->
<!-- size="mini">取消-->
<!-- </el-button>-->
<!-- </div>-->
<el-button @click="doReceive(row)" plain size="mini" type="primary"
v-if="pageFormSignMode===1&&!row.isReceive&&${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">
领取
</el-button>
<!-- <el-button @click="openView(row)" size="mini" type="primary">-->
<!-- 查看-->
<!-- <el-button @click="doReceive(row)" plain size="mini" type="primary"-->
<!-- v-if="pageFormSignMode===1&&!row.isReceive&&${@shiro.hasRole('sysadmin')||@shiro.hasRole('H05')}">-->
<!-- 领取-->
<!-- </el-button>-->
<el-button @click="openEditWelfare(row)" size="mini" type="primary"
v-if="pageFormSignMode!==1">
@@ -382,24 +385,8 @@ layout("/layouts/platform.html"){
<template #edit>
<member :id="userId" @save="afterEdit" ref="member"></member>
</template>
<template #view>
<member :id="userId" ref="memberInfo" view></member>
</template>
</guava>
<!-- <el-dialog :visible.sync="exportWelfareListDialog" title="" width="40%">
<el-row class="pt5 pb5 text-danger">勾选需要导出的人员类型</el-row>
<el-row class="pt10 pb10">
<el-checkbox-group v-model="selPersonType">
<el-checkbox :label="i.personType" v-for="i in welfarePersonTypeList"></el-checkbox>
</el-checkbox-group>
</el-row>
<el-row justify="end" type="flex">
<el-button @click="doExportWelFareList" type="primary">确定</el-button>
</el-row>
</el-dialog>-->
<!-- 修改-->
<el-dialog :visible.sync="exportWelfareListDialog" title="修改福利" width="50%">
<el-form :model="editWelfareData" label-width="120px" ref="editWelfareForm">
@@ -413,12 +400,12 @@ layout("/layouts/platform.html"){
prop="optionIds">
<el-row :gutter="10" :key="item.id" style="margin: 10px"
v-for="(item,oidx) in welfareOptions">
<el-col :span="4">
<el-tag style="height:40px;line-height: 40px;width: 90%;">
<el-col :span="12">
<el-tag style="height:40px;line-height: 40px;width: 100%;">
<span style="display: flex; justify-content: center;">{{item.optionName}}</span>
</el-tag>
</el-col>
<el-col span="18">
<el-col span="8">
<el-input-number :max="item.maxNum" :min="0"
@change="numChange(item.selectNum,item,oidx)"
style="width: 50%"
@@ -471,20 +458,30 @@ layout("/layouts/platform.html"){
<!--导入快递单号-->
<el-dialog :visible.sync="importExpressExcelDialog" title="导入快递单号" width="65%">
<el-timeline>
<el-timeline-item timestamp="下载选择数据(提供给各供货商),如已下载可直接进行下一步选择导入。" placement="top">
<el-timeline-item placement="top"
timestamp="下载选择数据(提供给各供货商),如已下载可直接进行下一步选择导入。">
<el-card shadow="never">
<el-button size="medium" type=""
@click="exportSelectData"
icon="el-icon-download">下载选择数据
<el-button @click="exportSelectData" icon="el-icon-download"
size="medium"
type="">下载选择数据
</el-button>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="导入供货商发货快递单号" placement="top">
<el-timeline-item placement="top" timestamp="选择套餐供货商">
<el-select style="width: 440px" v-model="importWelfareOptionId">
<el-option :label="item.optionName" :value="item.id"
v-for="item in welfareOptions"></el-option>
</el-select>
</el-timeline-item>
<el-timeline-item placement="top" timestamp="导入供货商发货快递单号">
<el-upload
:action="loc()+'/importCourierNumber'"
:auto-upload="false"
:data="{projectId:pageForm.projectId}"
:data="{
projectId:pageForm.projectId,
optionId:importWelfareOptionId
}"
:file-list="importExpressExcelFile"
:limit="1"
:on-success="expressExcelHandleSuccess"
@@ -497,6 +494,10 @@ layout("/layouts/platform.html"){
</el-upload>
</el-timeline-item>
</el-timeline>
<el-row justify="end" type="flex">
<el-button @click="importExpressExcelDialog=false">取消</el-button>
<el-button @click="doImportCourierNumber" type="primary">导入</el-button>
</el-row>
</el-dialog>
<!--添加收货地址-->
@@ -565,79 +566,10 @@ layout("/layouts/platform.html"){
</span>
</el-dialog>
<!--导入名单-->
<el-dialog
title="导入"
:visible.sync="importVisible"
:close-on-click-modal="false"
width="50%">
<el-timeline>
<el-timeline-item timestamp="下载模板" placement="top">
<el-card>
<el-button size="medium" type=""
@click="location.href='/platform/welfare/list/mange/downloadImport'"
icon="el-icon-download">下载模板
</el-button>
<!--快递物流信息-->
<courier-number-info ref="courierNumberInfo"></courier-number-info>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="上传文件" placement="top">
<el-card>
<el-form>
<el-form-item label="请选择更新模式">
<el-radio-group v-model="importData.isFlag">
<el-radio-button label="true">清空更新</el-radio-button>
<el-radio-button label="false">追加</el-radio-button>
</el-radio-group>
</el-form-item>
<el-upload
name="file"
ref="upload"
:on-remove="(file, fileList) => {
importData.fileList = fileHandleRemove(file, fileList);
importResult={
errorCount:0,
successCount:0,
totalCount:0,
errorList:[]
}
}"
:on-change="(file, fileList) => {
importData.fileList = fileHandleChange(file, fileList,{type:['xls','xlsx']})
}"
:auto-upload="false"
:limit="1"
:file-list="importData.fileList">
<el-button size="medium" type="" icon="el-icon-upload"
style="width: 200px">选择文件
</el-button>
<div class="el-upload__tip" slot="tip" style="color: #F56C6C">
只能上传 xls/xlsx 文件
</div>
</el-upload>
</el-form>
</el-card>
</el-timeline-item>
<el-timeline-item placement="top" timestamp="导入结果">
<el-card shadow="never">
<p>总记录数:{{errorInfoData.totalCount}}</p>
<p>成功数:<span class="text-success">{{errorInfoData.successCount}}</span></p>
<p>错误数:<span class="text-danger">{{errorInfoData.errorCount}}</span></p>
<el-link @click="exportErrors" type="primary" v-if="errorInfoData.errorCount>0">下载错误记录
</el-link>
</el-card>
</el-timeline-item>
</el-timeline>
<span slot="footer" class="dialog-footer">
<el-button @click="importVisible = false" :disabled="importLoading">取 消</el-button>
<el-button type="primary" @click="doImport" :loading="importLoading">确定</el-button>
</span>
</el-dialog>
</div>
<!--<script src="${base!}/assets/platform/js/chengSh.js"></script>-->
<script>
<!--#include("/platform/welfare/include/common.js"){}#-->
@@ -688,19 +620,11 @@ layout("/layouts/platform.html"){
personTypes: [],
userStates: []
},
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别', sortable: true, width: '100px', checked: 0},
{prop: 'personType', label: '人员类型', sortable: true, checked: 0},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 1},
{prop: 'unionGroupName', label: '工会小组', sortable: true, checked: 1},
tableColumns: commonColumns.concat([
{prop: 'isChoose', label: '是否选择', width: "100px", sortable: true},
{prop: 'gist_list', label: '所选福利', width: "100px"},
{prop: 'userSign', label: '签字', width: "100px"},
],
]),
formRules: {},
welfare,
welfareUnitMode,
@@ -727,68 +651,55 @@ layout("/layouts/platform.html"){
judgmentAuthority,
importVisible: false,
importLoading: false,
importData: {
fileList: [],
},
errorInfoData: {
totalCount: 0,
successCount: 0,
errorCount: 0,
errorList: 0,
},
importWelfareOptionId: null
}
},
components: {
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'courier-number-info': httpVueLoader('/components/welfare/CourierNumberInfo.vue?v=' + new Date().getTime())
},
methods: {
openImport(){
this.importData = {
fileList: [],
}
this.errorInfoData = {
totalCount: 0,
successCount: 0,
errorCount: 0,
errorList: 0,
}
this.importVisible = true;
},
doImport(){
if (this.importData.fileList.length === 0) {
this.notifyWarning("请选择文件!")
doExcelByOptionId() {
if (!this.pageForm.optionId) {
this.$message.warning('请选择要导出的套餐')
return
}
const data = new FormData();
data.append("projectId", this.pageForm.projectId)
this.importData.fileList.forEach((val) => {
data.append("file", val.raw, val.raw.name);
});
this.importLoading = true
$.ajax({
url: loc() + "/doImport",
type: "post",
data: data,
processData: false,
contentType: false,
success: (data) => {
this.importLoading = false
if (data.code === 0) {
this.pageData();
this.notifySuccess("导入成功")
this.importVisible = false
} else {
this.notifyWarning("导入失败")
this.errorInfoData = data.data
}
},
error: (data) => {
this.notifyWarning("导入失败")
this.importLoading = false
if (!this.pageForm.projectId) {
this.$message.warning('请选择要导出的福利')
return
}
window.open(loc() + '/doExcelByOptionId?projectId=' + this.pageForm.projectId + "&optionId=" + this.pageForm.optionId)
},
//查看快递单号
viewCourierNumber(row) {
this.$refs.courierNumberInfo.openView(this.pageForm.projectId, row.id)
},
//导入快递单号
doImportCourierNumber() {
if (this.importWelfareOptionId == null || this.importWelfareOptionId === '') {
this.$message.warning('请选择套餐供货商')
return
}
if (this.$refs.expressExcelUpload.uploadFiles.length === 0) {
this.$message.warning('请选择快递单号文件')
return
}
const formData = new FormData()
formData.append('file', this.$refs.expressExcelUpload.uploadFiles[0].raw, this.$refs.expressExcelUpload.uploadFiles[0].name)
formData.append('projectId', this.pageForm.projectId)
formData.append('optionId', this.importWelfareOptionId)
axios.post(loc() + '/importCourierNumber', formData, {}).then(response => {
if (response.data.code === 0) {
this.$message.success('导入成功')
this.importExpressExcelDialog = false
} else {
this.$message.warning('导入失败,请联系管理员')
}
});
}).catch(error => {
this.$message.warning('导入失败,请联系管理员')
})
},
exportSelectData() {
window.open(loc() + '/exportSelectData?projectId=' + this.pageForm.projectId)
@@ -918,7 +829,7 @@ layout("/layouts/platform.html"){
},
async openEditWelfare(row) {
await this.getUserSelection(row.id)
await this.getWelfareOptions()
this.exportWelfareListDialog = true
const data = await searchUser(row.loginname, null, null, null, null)
this.editWelfareData = {
@@ -1212,13 +1123,13 @@ layout("/layouts/platform.html"){
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
// if (this.isThreeUnit) {
// commonColumns.forEach(v => {
// if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
// v.checked = 1
// }
// })
// }
if (this.isThreeUnit) {
commonColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
}
})
}
this.welfareUnits = await getWelfareUnit(!judgmentAuthority)
@@ -1245,9 +1156,11 @@ layout("/layouts/platform.html"){
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')||@shiro.hasRole('SchoolUnionWelfareAdmin')}" === 'false') {
this.dzOptions = this.dzOptions.filter(d => d.label === "江苏省")
this.dzOptions[0].children = this.dzOptions[0].children.filter(d => d.label === "南京市")
this.dzOptions[0].children = this.dzOptions[0].children.filter(d => d.label === "无锡市")
}
await this.getWelfareOptions()
}
})
</script>
@@ -2,23 +2,11 @@
layout("/layouts/platform.html"){
#-->
<style>
/* .el-table .auditing-row {
background: oldlace;
}
.el-table .audit-error-row {
background: #fa465926;
}*/
/*.item {*/
/* margin-top: 10px;*/
/* margin-right: 40px;*/
/*}*/
</style>
<div id="app" class="platform" v-cloak>
<guava ref="guava" padding="0 5%">
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
@@ -55,8 +43,9 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">组成单位:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unit" style="width: 100%" filterable
<el-select v-model="pageForm.units" style="width: 100%" filterable
clearable
multiple
@change="getThreeUnits"
placeholder="请选择">
<el-option
@@ -68,56 +57,6 @@ layout("/layouts/platform.html"){
</el-select>
</div>
</div>
<template v-if="isThreeUnit">
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
clearable
@change="getThreeUnits"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">组成科室:</div>
<div class="search-item-option">
<el-select v-model="pageForm.threeUnitId" style="width: 100%"
filterable
clearable
placeholder="请选择">
<el-option
v-for="item in threeUnits"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<!-- <div class="search-item" style="width: 22%;">
<div class="search-item-label">所属校区:</div>
<div class="search-item-option">
<el-select v-model="pageForm.campus" style="width: 100%" clearable
placeholder="请选择">
<el-option
v-for="item in campusOptions"
:key="item.campus_id"
:label="item.campus_name"
:value="item.campus_id">
</el-option>
</el-select>
</div>
</div>-->
<template v-if="searchMore">
<div class="search-item">
@@ -133,8 +72,11 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personType" style="width: 100%"
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
clearable
@change="doSearch"
multiple
placeholder="人员类型"
code="UserType"></dict-select>
</div>
@@ -142,8 +84,11 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userState" style="width: 100%"
<dict-select v-model="pageForm.userStates"
style="width: 100%"
clearable
@change="doSearch"
multiple
placeholder="在职状态"
code="userState"></dict-select>
</div>
@@ -201,12 +146,11 @@ layout("/layouts/platform.html"){
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="人员列表" :app="this">
<template #label_end>
<!--<el-badge :value="badgeValue" :hidden="isHidden" style="margin-left: 10px">
<el-button type="primary" size="small">博士后出站</el-button>
</el-badge>-->
</template>
<template #func>
<span class="text-danger" style="font-size: 13px">人员信息有无变化:</span>
@@ -250,24 +194,24 @@ layout("/layouts/platform.html"){
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'select'}">选择加入
</el-dropdown-item>
</el-dropdown-item><!--
<el-dropdown-item :command="{type:'add'}">新增用户
</el-dropdown-item>
</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
<el-button :disabled="!checkUsers.length" type="primary" size="small"
icon="el-icon-edit"
@click="openBatchEdit">
设置校区
</el-button>
<el-button :disabled="!checkUsers.length" type="primary" size="small"
icon="el-icon-edit"
<!-- <el-button :disabled="!checkUsers.length" type="primary" size="small"
icon="el-icon-edit"
@click="openBatchEdit">
设置校区
</el-button>
<el-button :disabled="!checkUsers.length" type="primary" size="small"
icon="el-icon-edit"
@click="openUnitMove" class="ml5 ">
单位调整
</el-button>
@click="openUnitMove" class="ml5 ">
单位调整
</el-button>
-->
</template>
</template>
</table-tool>
@@ -276,15 +220,15 @@ layout("/layouts/platform.html"){
v-loading="tableLoading" ref="table" class="vi-table"
:row-class-name="tableRowClassName"
lazy
:load="load"
:tree-props="{hasChildren: 'hasHis'}"
@selection-change="tableHandleSelectionChange">
<!-- :load="load"-->
<!-- :tree-props="{hasChildren: 'hasHis'}"-->
<el-table-column type="selection" :reserve-selection="true"></el-table-column>
<!-- <el-table-column type="selection" :reserve-selection="true"></el-table-column>-->
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="60px"></el-table-column>
width="80px"></el-table-column>
<el-table-column
align="center"
@@ -324,6 +268,22 @@ layout("/layouts/platform.html"){
</el-table-column>
</el-table-column>
<el-table-column label="会员" header-align="center" align="center"
prop="member"
show-overflow-tooltip sortable>
<template scope="{row}">
<div v-if="row.flag">
<span v-if="row.member==1" class="text-success ">
<i
class="fa fa-circle ml5"></i> 是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
</span>
</div>
</template>
</el-table-column>
<el-table-column label="福利会员" header-align="center" align="center"
prop="welfareMember"
show-overflow-tooltip sortable>
@@ -361,30 +321,30 @@ layout("/layouts/platform.html"){
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority"
:disabled="row.welfareMember==1"
:command="{type:'apply',data:row}">
设为福利会员
</el-dropdown-item>
<!-- <el-dropdown-item-->
<!-- v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority"-->
<!-- :disabled="row.welfareMember==1"-->
<!-- :command="{type:'apply',data:row}">-->
<!-- 设为福利会员-->
<!-- </el-dropdown-item>-->
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item
v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority"
:disabled="row.welfareMember!=1||row.changeUnitAuditing"
:disabled="row.changeUnitAuditing"
:command="{type:'change',data:row}">
变更
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:row}"
v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority">
编辑
</el-dropdown-item>
<el-dropdown-item v-if="row.welfareMember"
v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority"
:command="{type:'delete',data:row}">
移除
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'edit',data:row}"-->
<!-- v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority">-->
<!-- 编辑-->
<!-- </el-dropdown-item>-->
<!-- <el-dropdown-item v-if="row.welfareMember"-->
<!-- v-if="row.apply&&welfareImportUnitList.map(v=>v.code).includes(unitId)||judgmentAuthority"-->
<!-- :command="{type:'delete',data:row}">-->
<!-- 移除-->
<!-- </el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
@@ -486,7 +446,7 @@ layout("/layouts/platform.html"){
:visible.sync="changeVisible"
:before-close="handleClose" size="1000px">
<div style="padding: 0 20px">
<mem-change-apply ref="apply" :userid="userId" @submit="doSubmit"></mem-change-apply>
<mem-change-apply ref="apply" :userid="userId" welfare_member @submit="doSubmit"></mem-change-apply>
</div>
</el-drawer>
@@ -661,13 +621,15 @@ layout("/layouts/platform.html"){
welfareMember: 1,
member: 1,
changed: 0,
units: [],
personTypes: [],
userStates: []
},
tableColumns: [
{prop: 'loginname', label: '工号', width: '140px'},
tableColumns: [{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别', sortable: true, width: '80px'},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'sex', label: '性别', sortable: true, width: '100px'},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'unionname', label: '所属工会', sortable: true},
{prop: 'unitname', label: '所属单位', sortable: true},
{prop: 'threeUnitName', label: '所在科室', sortable: true, checked: 0},
@@ -703,9 +665,6 @@ layout("/layouts/platform.html"){
selectUserLoading: false,
isThreeUnit: false,
unitId: '',
badgeValue:0,
postdoctoralExitData:[]
}
},
components: {
@@ -715,13 +674,7 @@ layout("/layouts/platform.html"){
'user-select': httpVueLoader('/components/plugins/UserTableSelect.vue?v=1.0.0'),
'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),
'mem-change-apply': httpVueLoader('/components/member/MemChangeApply.vue?v=' + new Date().getTime()),
'user-change-history': httpVueLoader('/components/userChangeHistory/UserChangeHistory.vue?v=' + new Date().getTime()),
},
computed: {
// 根据 badgeValue 的值决定是否隐藏徽章
isHidden() {
return this.badgeValue === 0;
}
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=1.0.1'),
},
methods: {
async openUserChangeInfo({hisId}) {
@@ -736,6 +689,7 @@ layout("/layouts/platform.html"){
}
return null
},
pushDropdownCommand({type}) {
if (type == 'select') {
this.selectUsers = []
@@ -832,7 +786,12 @@ layout("/layouts/platform.html"){
}
},
async getChangeData() {
const {data} = await $.post(loc() + "/getChangeNumber", this.pageForm)
const pageForm = clone(this.pageForm)
pageForm.units = JSON.stringify(pageForm.units)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.userStates = JSON.stringify(pageForm.userStates)
const {data} = await $.post(loc() + "/getChangeNumber", pageForm)
this.numberData = data
},
changeDateRangeChange(val) {
@@ -847,22 +806,26 @@ layout("/layouts/platform.html"){
}
return '';
},
async doSubmit(formData) {
const resp = await $.post(loc() + "/change", formData)
this.$refs.apply.closeLoading()
if (resp.code === 0) {
this.$message.success(resp.msg)
this.userId = ""
this.$refs.guava.index()
this.changeVisible = false
this.pageData()
this.getChangeData()
} else {
this.notifyWarning(resp.msg)
this.$message.warning(resp.msg)
}
},
openChange({id}) {
this.userId = id
this.changeVisible = true
},
openBatchEdit() {
this.batchFormData = {}
this.batchEditVisible = true
@@ -893,6 +856,7 @@ layout("/layouts/platform.html"){
tableHandleSelectionChange(val) {
this.checkUsers = val;
},
apply({id, username}) {
this.$confirm('确定将' + username + '设为福利会员吗?', '提示', {
confirmButtonText: '确定',
@@ -910,6 +874,7 @@ layout("/layouts/platform.html"){
}
});
},
async joinWelfareMember(memData) {
await $.post(loc() + "/joinWelfareMember", {userIds: JSON.stringify([memData.id])})
},
@@ -921,6 +886,7 @@ layout("/layouts/platform.html"){
this.pageData()
this.$refs.guava.index()
},
async load(tree, treeNode, resolve) {
const {loginname} = tree
const resp = await $.get(loc() + "/historyUsers", {loginname})
@@ -961,6 +927,7 @@ layout("/layouts/platform.html"){
this.openChange(data)
}
},
openEdit(userId) {
this.userId = userId
this.$refs.guava.edit()
@@ -968,16 +935,19 @@ layout("/layouts/platform.html"){
this.$refs.member.getUserInfo()
}
},
openView({id, flag}) {
this.userId = id
this.source = flag ? 'sys_user' : 'user_history'
this.$refs.guava.view()
},
async changeWelfareUnit() {
this.$set(this.pageForm, 'unit', '')
this.units = await getComponentUnit(this.pageForm.welfareUnit)
this.unionGroups = await unionGroupsByUnionId(this.pageForm.welfareUnit)
},
async getChangeType() {
const changeType = {}
const changeTypeOptions = await getEnumOptions("UserChangeType")
@@ -990,13 +960,27 @@ layout("/layouts/platform.html"){
this.$set(this.pageForm, "threeUnitId", null)
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unit, this.pageForm.unionGroupId)
},
async getPostdoctoralExit(){
const resp = await $.get('')
if (resp.code === 0) {
this.postdoctoralExitData = resp.data.list
}
pageData() {
sublime.showLoadingbar()
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.units = JSON.stringify(pageForm.units)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.userStates = JSON.stringify(pageForm.userStates)
$.post(loc() + '/pageData', pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
}
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
@@ -909,12 +909,13 @@ layout("/layouts/platform.html"){
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
if (this.isThreeUnit) {
this.tableColumns.forEach(v => {
tableColumns.forEach(v => {
if (["threeUnitName", "unionGroupName"].includes(v.prop)) {
v.checked = 1
}
})
}
this.welfareImportUnitList = await getDictOptions("welfareImportUnit")
this.unitId = "${@shiro.getPrincipalProperty('unit').getId()}"
this.welfareUnits = await getWelfareUnit(!judgmentAuthority)
@@ -924,6 +925,8 @@ layout("/layouts/platform.html"){
this.campusOptions = await getCampus()
this.changeWelfareUnit()
this.pageData();
}
})
</script>
@@ -251,7 +251,7 @@
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'userMobile', label: '联系电话'},
{prop: 'mobile', label: '联系电话'},
{prop: 'unitname', label: '所在单位', sortable: true},
{prop: 'realWelfareUnitName', label: welfare.welfareUnitModeName, sortable: true},
{prop: 'type', label: '变更类型', sortable: true},
@@ -328,4 +328,4 @@
this.changeOrigin = await member.getChangeOrigin()
}
})
</script>
</script>
@@ -75,7 +75,7 @@ layout("/layouts/platform.html"){
<el-date-picker
v-model="formData.startTime"
type="datetime"
value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择开始时间">
</el-date-picker>
</el-form-item>
@@ -83,7 +83,7 @@ layout("/layouts/platform.html"){
<el-date-picker
v-model="formData.endTime"
type="datetime"
value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择结束时间">
</el-date-picker>
</el-form-item>
@@ -5,18 +5,6 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">任务:</div>
<div class="search-item-option">
@@ -44,6 +32,56 @@ layout("/layouts/platform.html"){
</div>
</div>
<div class="search-item">
<div class="search-item-label">性&emsp;&emsp;别:</div>
<div class="search-item-option">
<el-select v-model="pageForm.sex" style="width: 100%" clearable
placeholder="请选择">
<el-option v-for="sex in sexOptions" :label="sex"
:value="sex"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">在职状态:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.userStates"
style="width: 100%"
multiple
clearable
placeholder="在职状态"
code="userState"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">人员类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.personTypes"
style="width: 100%"
multiple
clearable
placeholder="人员类型"
code="UserType"></dict-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">变更类型:</div>
<div class="search-item-option">
<enum-select v-model="pageForm.changeTypes"
enum="UserChangeType"
label="description"
multiple
value="code"
style="width: 100%"
clearable
placeholder="变更类型"
></enum-select>
</div>
</div>
<div class="search-item" v-if="judgmentAuthority">
<div class="search-item-label">{{welfare.welfareUnitModeName}}:</div>
<div class="search-item-option">
@@ -59,6 +97,7 @@ layout("/layouts/platform.html"){
</el-select>
</div>
</div>
<div class="search-item" v-if="judgmentAuthority">
<div class="search-item-label">组成单位:</div>
<div class="search-item-option">
@@ -127,27 +166,27 @@ layout("/layouts/platform.html"){
@click="checkAgain">
重新核对
</el-button>
<el-dropdown style="margin: 0 5px" @command="pushDropdownCommand"
>
<el-button type="primary" size="small" icon="el-icon-plus"
:disabled="unionTaskStatus || !allowOperationTask">
添加
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'select'}">选择加入</el-dropdown-item>
<el-dropdown-item :command="{type:'add'}">新增用户</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <el-dropdown style="margin: 0 5px" @command="pushDropdownCommand"-->
<!-- >-->
<!-- <el-button type="primary" size="small" icon="el-icon-plus"-->
<!-- :disabled="unionTaskStatus || !allowOperationTask">-->
<!-- 添加-->
<!-- </el-button>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item :command="{type:'select'}">选择加入</el-dropdown-item>-->
<!-- <el-dropdown-item :command="{type:'add'}">新增用户</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<el-button type="primary" size="small" icon="el-icon-s-promotion"
@click="doWelfareMemberExport">
导出福利会员
</el-button>
<el-button :disabled="!checkUsers.length||!pageForm.taskId" type="primary" size="small"
icon="el-icon-edit"
@click="openUnitMove" class="ml5">
单位调整
</el-button>
<!-- <el-button :disabled="!checkUsers.length||!pageForm.taskId" type="primary" size="small"-->
<!-- icon="el-icon-edit"-->
<!-- @click="openUnitMove" class="ml5">-->
<!-- 单位调整-->
<!-- </el-button>-->
</template>
</table-tool>
@@ -177,22 +216,38 @@ layout("/layouts/platform.html"){
header-align="center" sortable
align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="异动类型" prop="changeType" header-align="center"
<el-table-column label="异动类型" prop="changeTypes" header-align="center"
align="center" show-overflow-tooltip sortable>
<template scope="{row}">
<span style="color: #0e78c5">{{changeType[row.changeType]}}</span>
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">
{{getChangeTypes(row.changeTypes)}}
</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="会员" header-align="center" align="center"
prop="member"
show-overflow-tooltip sortable>
<template scope="{row}">
<div v-if="row.flag">
<span v-if="row.member==1" class="text-success ">
<i class="fa fa-circle ml5"></i> 是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
</span>
</div>
</template>
</el-table-column>
<el-table-column label="福利会员" header-align="center" align="center"
prop="welfareMember"
show-overflow-tooltip sortable>
<template scope="{row}">
<div v-if="row.flag">
<span v-if="row.welfareMember==1" class="text-success ">
<i
class="fa fa-circle ml5"></i> 是
<i class="fa fa-circle ml5"></i> 是
</span>
<span v-else class="text-danger">
<i class="fa fa-circle ml5"></i> 否
@@ -250,7 +305,6 @@ layout("/layouts/platform.html"){
<member ref="member" :id="userId" @save="afterEdit"></member>
</template>
</guava>
<el-drawer
@@ -343,6 +397,8 @@ layout("/layouts/platform.html"){
</span>
</el-drawer>
<user-change-history ref="userChangeHistory"></user-change-history>
</div>
<script>
@@ -356,6 +412,7 @@ layout("/layouts/platform.html"){
'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),
'user-select': httpVueLoader('/components/plugins/UserTableSelect.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.4'),
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=1.0.1'),
},
computed: {
allowOperationTask() {
@@ -406,6 +463,10 @@ layout("/layouts/platform.html"){
unit: '',
unionGroupId: '',
threeUnitId: '',
changeTypes: [],
personTypes: [],
changeOrigins: []
},
memberCheckTaskOptions: [],
changeType: {},
@@ -422,10 +483,25 @@ layout("/layouts/platform.html"){
},
unitMoveUnions: [],
unitMoveUnits: [],
threeUnits2: []
threeUnits2: [],
sexOptions: ['男', '女'],
}
},
methods: {
async openUserChangeInfo({hisId}) {
this.$refs.userChangeHistory.openUserChangeInfo(hisId)
},
getChangeTypes(changeTypes) {
if (changeTypes) {
const c = JSON.parse(changeTypes)
return c.map(v => {
return this.changeType[v]
}).join(',')
}
return null
},
openUnitMove() {
this.unitMoveVisibile = true
this.unitMoveFormData = {
@@ -491,10 +567,10 @@ layout("/layouts/platform.html"){
},
doWelfareMemberExport() {
const {welfareUnit, unit, unionGroupId, threeUnitId} = this.pageForm
if (!welfareUnit) {
this.notifyWarning("请先选择工会小组后在导出")
return
}
// if (!welfareUnit) {
// this.notifyWarning("请先选择工会小组后在导出")
// return
// }
window.open(loc() + "/doWelfareMemberExport?welfareUnit=" + welfareUnit
+ "&unit=" + unit
+ "&unionGroupId=" + unionGroupId
@@ -564,10 +640,10 @@ layout("/layouts/platform.html"){
});
},
pushDropdownCommand({type}) {
if (!this.pageForm.unionGroupId) {
this.notifyWarning("请选择需要核对的工会小组!")
return
}
// if (!this.pageForm.unionGroupId) {
// this.notifyWarning("请选择需要核对的工会小组!")
// return
// }
if (type == 'select') {
this.selectUsers = []
this.selectUserVisible = true
@@ -592,11 +668,13 @@ layout("/layouts/platform.html"){
const resp = await $.post(loc() + '/doSubmitChangeUser', formData)
this.$refs.apply.closeLoading()
if (resp.code === 0) {
this.$message.success(resp.msg)
this.userId = null
this.$refs.guava.index()
this.getChangeData()
this.pageData()
} else {
this.notifyWarning(resp.msg)
this.$message.warning(resp.msg)
}
},
@@ -632,7 +710,12 @@ layout("/layouts/platform.html"){
}
},
async getChangeData() {
const {data} = await $.post("/platform/welfare/member/adjustment/getChangeNumber", this.pageForm)
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
const {data} = await $.post("/platform/welfare/member/adjustment/getChangeNumber", pageForm)
this.numberData = data
},
@@ -683,7 +766,27 @@ layout("/layouts/platform.html"){
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(this.pageForm.unit, this.pageForm.unionGroupId)
await this.getChangeData();
await this.getUnionTaskStatus()
}
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(pageForm.userStates)
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
pageForm.changeTypes = JSON.stringify(pageForm.changeTypes)
pageForm.changeOrigins = JSON.stringify(pageForm.changeOrigins)
$.post(loc() + '/pageData', pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
},
async created() {
@@ -42,7 +42,6 @@ layout("/layouts/platform.html"){
:clearable="true"
placeholder="选择年"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
@@ -96,8 +95,8 @@ layout("/layouts/platform.html"){
</template>
<template scope="{row}" v-else-if="column.prop=='isChoose'">
<span v-if="row.isChoose"><el-tag type="success">已选择</el-tag></span>
<span v-else><el-tag type="warning">未选择</el-tag></span>
<span class="text-primary" v-if="row.isChoose">已选择</span>
<span class="text-danger" v-else>未选择</span>
</template>
<template scope="{row}" v-else-if="column.prop=='gist_list'">
@@ -112,26 +111,26 @@ layout("/layouts/platform.html"){
<span v-else>暂无</span>
</template>
<template scope="{row}" v-else-if="column.prop=='evaluate'">
<span v-if="row.evaluateScore"><el-tag
type="success">已评价</el-tag></span>
<span v-else><el-tag type="warning">暂未评价</el-tag></span>
<template scope="{row}" v-else-if="column.prop=='courierNumber'">
<span @click="viewCourierNumber(row)" class="text-primary"
style="cursor: pointer">点击查看</span>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center"
label="操作" prop="userOnline"
width="300px">
width="200px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">
查看
</el-button>
<el-button :disabled="!row.courierNumber" @click="openExpress(row)"
size="mini"
type="primary">
查看物流
</el-button>
<!-- <el-button :disabled="!row.courierNumber" @click="openExpress(row)"-->
<!-- size="mini"-->
<!-- type="primary">-->
<!-- 查看物流-->
<!-- </el-button>-->
<el-button :disabled="!row.courierNumber" @click="openEvaluate(row)"
size="mini"
type="primary">
@@ -204,7 +203,8 @@ layout("/layouts/platform.html"){
<el-card shadow="never"
style="margin: 5px;">
<div slot="header" style="display: flex;justify-content: space-between">
<div slot="header"
style="display: flex;justify-content: space-between">
<div>
{{option.optionName}}
</div>
@@ -269,9 +269,25 @@ layout("/layouts/platform.html"){
<el-dialog
:close-on-click-modal="false"
:visible.sync="evaluateDialogVisible"
title="评分内容"
width="30%">
title="福利评价"
width="40%">
<el-form :model="formData" label-width="80px" ref="form">
<el-form-item :rules="[{ required: true, message: ''}]" label="评价套餐">
<el-radio-group
@change="finOneWelfareEvaluate(formData.projectId,formData.optionId)"
v-model="formData.optionId">
<el-row gutter="10">
<el-col :key="item.selectOptionId" class="mt10" span="24"
v-for="item in userSelection">
<el-radio :label="item.selectOptionId" border style="width: 100%;position: relative">
{{item.optionName}}
<span style="color: red;position: absolute;right: 10px;" v-if="!item.isPj">未评价</span>
</el-radio>
</el-col>
</el-row>
</el-radio-group>
</el-form-item>
<el-form-item :rules="[{ required: true, message: ''}]" label="评分">
<div style="position: absolute; top: 20%;">
<el-rate :disabled="formData.id"
@@ -281,7 +297,7 @@ layout("/layouts/platform.html"){
</el-form-item>
<el-form-item label="评价">
<el-input :disabled="formData.id"
maxlength="100"
maxlength="500"
placeholder="请输入评价"
rows="5"
show-word-limit
@@ -331,6 +347,9 @@ layout("/layouts/platform.html"){
</el-card>
</el-drawer>
<!--快递物流信息-->
<courier-number-info ref="courierNumberInfo"></courier-number-info>
</div>
<script>
const vue = new Vue({
@@ -362,7 +381,6 @@ layout("/layouts/platform.html"){
{prop: 'gist_list', label: '所选福利'},
{prop: 'receiveAddress', label: '收货地址'},
{prop: 'courierNumber', label: '快递单号', sortable: true},
{prop: 'evaluate', label: '是否评价'},
],
formRules: {},
@@ -375,20 +393,23 @@ layout("/layouts/platform.html"){
expressDrawer: false,
logisticsTrace: {},
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue?v=1.0.0'),
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
'courier-number-info': httpVueLoader('/components/welfare/CourierNumberInfo.vue?v=' + new Date().getTime())
},
methods: {
//查看快递单号
viewCourierNumber(row) {
this.$refs.courierNumberInfo.openView(row.projectId, row.userId)
},
async openExpress(row) {
await this.getExpressInfo(row)
this.expressDrawer = true
},
async doEvaluate() {
if (!this.formData.evaluateScore) {
if (!this.formData.evaluateScore || !this.formData.optionId) {
this.$message({
message: '请打分后再提交',
type: 'warning'
@@ -417,26 +438,35 @@ layout("/layouts/platform.html"){
}
},
async finOneWelfareEvaluate(row) {
async finOneWelfareEvaluate(projectId, optionId) {
const {
data,
code,
msg
} = await $.post(loc() + "/finOneWelfareEvaluate", {projectId: row.id})
} = await $.post(loc() + "/finOneWelfareEvaluate", {
projectId: projectId,
optionId: optionId
})
if (code === 0) {
if (data) {
this.formData = data
} else {
this.formData = {
projectId: row.id
projectId: projectId,
optionId: optionId
}
}
} else {
this.$message.warning(msg)
}
},
openEvaluate(row) {
this.finOneWelfareEvaluate(row)
async openEvaluate(row) {
await this.getUserSelection(row.id)
if (this.userSelection && this.userSelection.length > 0) {
await this.finOneWelfareEvaluate(row.id, this.userSelection[0].selectOptionId)
}
this.evaluateDialogVisible = true
},
async getProjectInfo(id) {
@@ -444,13 +474,13 @@ layout("/layouts/platform.html"){
if (resp.code === 0) {
this.projectInfo = resp.data
await this.getUserSelection(id)
this.echoUserSelection()
}
},
//获取用户选择的数据
async getUserSelection(projectId) {
const resp = await $.get('/platform/welfare/mine/getUserSelection', {projectId: projectId})
this.userSelection = resp.data
this.echoUserSelection()
},
//回显用户选择的数据
echoUserSelection() {
@@ -480,7 +510,6 @@ layout("/layouts/platform.html"){
async getExpressInfo(row) {
const resp = await $.get(loc() + '/getExpressInfo', {courierNumber: row.courierNumber})
if (resp.code === 0) {
console.log(resp.data.logisticsTraceDetailList)
for (let i = 0; i < resp.data.logisticsTraceDetailList.length; i++) {
if (i === resp.data.logisticsTraceDetailList.length - 1) {
resp.data.logisticsTraceDetailList[i].color = "#0bbd87"
@@ -277,7 +277,7 @@ layout("/layouts/platform.html"){
</el-row>
<el-row>
<!--<el-col span="12">
<el-col span="12">
<el-form-item label="逾期选择时间" prop="overdueChoiceTimeEnd">
<el-date-picker
@change="choiceTimeChange"
@@ -288,41 +288,6 @@ layout("/layouts/platform.html"){
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>-->
<el-col span="8">
<el-form-item label="是否全年节日选择" prop="isAnnualFestival">
<el-switch @change="isCheckAnnualFestival" v-model="formData.isAnnualFestival">
</el-switch>
</el-form-item>
</el-col>
<el-col span="8" v-if="formData.isAnnualFestival">
<el-form-item label="是否使用配置" prop="isConfig">
<el-switch @change="isConfigChange" v-model="formData.isConfig">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formData.isAnnualFestival">
<el-col :span="16">
<el-form-item class="is-required" label="可选择工会" prop="unionIdList">
<el-select placeholder="请选择工会" v-model="formData.unionIdList"
style="width: 100%;"
multiple="true"
clearable="true"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div style="margin-left: 10px">
<span style="color: red">在此勾选分工会的福利会员可参与本项目的选择,其他分工会的福利会员不可选择且默认全部勾选</span>
</div>
</el-col>
</el-row>
@@ -415,74 +380,6 @@ layout("/layouts/platform.html"){
</el-form-item>
</template>
<template v-if="formData.isAnnualFestival">
<el-form-item label="新进教工默认福利" prop="teacherSelectList">
<el-button
@click="formData.teacherSelectList.push({startTime:'',endTime:'',optionIdList:[]})"
icon="el-icon-plus" size="mini"
style="float: right;margin-bottom: 10px">
添加
</el-button>
<span style="color: red">说明:当前年度新进教工,依照入校时间判断默认选择福利,即【开始时间< 教工入校时间 < 结束时间】,默认选择那些福利。</span>
<el-table
:data="formData.teacherSelectList"
border
v-fit-columns
size="mini"
style="width: 100%">
<el-table-column label="开始时间" prop="startTime">
<template scope="{row,$index}">
<el-form-item :prop="'teacherSelectList.'+$index+'.startTime'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-date-picker
v-model="row.startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择开始时间">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="结束时间" prop="endTime">
<template scope="{row,$index}">
<el-form-item :prop="'teacherSelectList.'+$index+'.endTime'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]"
label-width="0">
<el-date-picker
v-model="row.endTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择结束时间">
</el-date-picker>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="默认选择福利" prop="optionIdList">
<template slot-scope="{row,$index}">
<el-select placeholder="请选择" v-model="row.optionIdList"
style="width: 100%;"
multiple="true"
clearable="true"
filterable="true">
<el-option v-for="item in formData.welfareProjectSubjects[0].options" :label="item.optionName"
:value="item.optionName"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="80">
<template slot-scope="scope">
<el-button :disabled="formData.teacherSelectList.length<=1"
@click="formData.teacherSelectList.splice(scope.$index,1)" circle
icon="el-icon-delete"
size="mini"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
<!-- <el-form-item prop="noticePushMode" label="通知推送">
<el-radio-group v-model="formData.noticePushMode" size="small">
@@ -586,6 +483,7 @@ layout("/layouts/platform.html"){
</span>
</el-dialog>
</div>
<script>
<!--#include("/platform/welfare/include/common.js"){}#-->
@@ -614,10 +512,6 @@ layout("/layouts/platform.html"){
pageForm: {
year: moment().format('YYYY')
},
formData:{
unionIdList:[],
teacherSelectList:[],
},
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'name', label: '项目名称'},
@@ -645,8 +539,6 @@ layout("/layouts/platform.html"){
welfarePersonTypeList: [],
sendMsgValue: "",
sendMsgDialogVisible: false,
unions:[],
beforeFormData:{},
}
},
components: {
@@ -657,43 +549,6 @@ layout("/layouts/platform.html"){
'send-msg': httpVueLoader('/components/plugins/SendMsgByGroupId.vue'),
},
methods: {
isConfigChange(flag){
console.log(this.formData)
console.log(this.formData.isConfig)
if (!this.formData.welfareProjectSubjects || this.formData.welfareProjectSubjects == 0){
this.formData.welfareProjectSubjects = [{
subjectName: '请输入福利信息',
subjectType: this.formData.isCheckBox ? this.formData.isCheckBox : 'radio',
defaultOption: null,
options: [
{
optionType: "套餐",
optionName: '福利1',
optionNameId: '',
optionSort: '1',
imgUrl: ''
}
]
}]
}
let data
if (this.formData.isConfig){
this.beforeFormData = {...this.formData}
this.beforeFormData.selectOptionList = this.beforeFormData.welfareProjectSubjects[0].options
data = this.welfareConfig;
} else {
data = this.beforeFormData
}
if (!data) return
this.$set(this.formData,'isCheckBox',data.isCheckBox)
this.$set(this.formData,'multiSelectNum',data.multiSelectNum)
this.$set(this.formData,'singleOptionSupportMultipleSelection',data.singleOptionSupportMultipleSelection)
this.$set(this.formData.welfareProjectSubjects[0],'options',data.selectOptionList)
this.$set(this.formData,'unionIdList',data.unionIdList)
this.$set(this.formData,"flexible",data.flexible)
this.$set(this.formData,"provideMode",data.provideMode)
},
async projectStatusChange({id, isDisabled: val}) {
const resp = await $.post(loc() + '/projectStatusChange', {
id, val
@@ -761,33 +616,6 @@ layout("/layouts/platform.html"){
}]
},
async isCheckAnnualFestival(){
console.log(this.formData.isAnnualFestival)
if (this.formData.isAnnualFestival){
const resp = await $.get(loc() + '/isCheckAnnualFestival')
if (resp.data > 0){
this.$confirm("本年度只允许存在一个全年节日选择项目,是否关闭其他节日选择项目?", '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const resp = await $.post(loc() + "/closeAnnualFestivalByThisYear")
if (resp.code === 0) {
this.pageData()
this.$message.success('其他项目关闭成功')
} else {
this.$message.warning(resp.msg)
this.$set(this.formData, "isAnnualFestival", false)
}
}).catch(() => {
this.$set(this.formData, "isAnnualFestival", false)
})
}
} else {
this.formData.isConfig = false
this.isConfigChange()
}
},
async handleAvatarSuccess(res, file) {
this.$set(this.formData, 'cover', res.data.filepath)
await this.$refs['form'].validate()
@@ -828,8 +656,7 @@ layout("/layouts/platform.html"){
});
const formData = clone(this.formData)
formData.provideAddress = "工会"
formData.unionIdList = JSON.stringify(formData.unionIdList)
formData.teacherSelectList = JSON.stringify(formData.teacherSelectList)
if (formData.isCheckBox === "radio") {
formData.multiSelectNum = 1
}
@@ -908,9 +735,7 @@ layout("/layouts/platform.html"){
flexible: false,
noticePushMode: 1,
welfareProjectSubjects: [],
flexibleGifts: [{}],
unionIdList:[],
teacherSelectList:[],
flexibleGifts: [{}]
}
this.$refs.guava.edit()
if (this.$refs.form)
@@ -1045,10 +870,6 @@ layout("/layouts/platform.html"){
})
}
this.formData = data
if(!this.formData.teacherSelectList || this.formData.teacherSelectList.length == 0){
// this.$set(this.formData,"teacherSelectList",[])
this.formData.teacherSelectList = []
}
this.$refs.guava.edit()
} else {
this.notifyWarning(resp.msg)
@@ -1057,17 +878,6 @@ layout("/layouts/platform.html"){
openView() {
this.$refs.guava.view()
},
async getWelfareConfig(){
const resp = await $.post('/platform/welfare/cpu/config/findConfig')
if (resp.code === 0){
resp.data.selectOptionList.forEach(v=>{
v.optionType = '套餐';
})
this.welfareConfig = resp.data
this.$set(this.welfareConfig,"flexible",true)
this.$set(this.welfareConfig,"provideMode",2)
}
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
@@ -1120,8 +930,6 @@ layout("/layouts/platform.html"){
value: 'retiredYear',
type: 'date(year)'
}])
this.unions = await getUnions()
await this.getWelfareConfig()
}
})
</script>
@@ -107,8 +107,8 @@ layout("/layouts/platform.html"){
</template>
<template scope="{row}" v-else-if="column.prop=='isChoose'">
<span v-if="row.isChoose"><el-tag type="success">已选择</el-tag></span>
<span v-else><el-tag type="warning">未选择</el-tag></span>
<span v-if="row.isChoose" class="text-primary">已选择</span>
<span class="text-danger" v-else>未选择</span>
</template>
<template scope="{row}" v-else-if="column.prop=='gist_list'">
@@ -227,7 +227,7 @@ layout("/layouts/platform.html"){
fit="contain"
></el-image>
<div style="width:calc(100% - 150px);padding-left: 20px;position: relative">
<!--<div style="white-space: nowrap;display: flex">
<div style="white-space: nowrap;display: flex">
<span class="desc_label">服务专线</span>
<el-tooltip placement="top" :content="option.supplier">
<span class="desc_value"
@@ -235,7 +235,7 @@ layout("/layouts/platform.html"){
{{option.supplier}}
</span>
</el-tooltip>
</div>-->
</div>
<div v-if="option.simpleDesc">
<span class="desc_label">备&emsp;&emsp;注</span>
<span class="desc_value">
@@ -430,8 +430,6 @@ layout("/layouts/platform.html"){
</el-dialog>
</div>
<script src="${base!}/assets/platform/js/chengSh.js"></script>
<script>
const vue = new Vue({
el: '#app',
@@ -680,24 +678,7 @@ layout("/layouts/platform.html"){
this.descData = val.description
this.descDialogVisible = true
},
parseJSONOnce(jsonString){
try {
// 尝试解析JSON字符串
return JSON.parse(jsonString);
} catch (error) {
// 如果解析失败,打印错误信息
console.error("Invalid JSON format:", error.message);
}
},
async openChoose(row) {
if(row.isAnnualFestival){
const unionIdList = this.parseJSONOnce(row.unionIdList)
if (!unionIdList.includes(row.welfareUnitId)){
this.$message.warning('您不在选择范围内,系统已为您默认选择完毕,可将鼠标移动到左侧所属福利列表,查看选取详情')
return
}
}
this.isView = false
if (this.confirmButtonInfo(row).disabled) {
this.$message.warning("当前时间段无法选择")
@@ -6,30 +6,30 @@ layout("/layouts/platform.html"){
text-align: left !important;
}
</style>
<div id="app" class="platform" v-cloak style="padding: 10px">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 120px;">
<el-option label="名称" value="name"></el-option>
<el-option label="编码" value="code"></el-option>
</el-select>
</el-input>
</div>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 120px;">
<el-option label="名称" value="name"></el-option>
<el-option label="编码" value="code"></el-option>
</el-select>
</el-input>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right mt5">
<el-button icon="el-icon-plus" @click="openAdd">新增类型</el-button>
</div>
</el-card>
<div class="pull-right offscreen-right mt5">
<el-button icon="el-icon-plus" type="primary" @click="openAdd">新增类型</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-row class="el-table-container">
<el-card shadow="never" class="mt10">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" type="index">
@@ -38,10 +38,12 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="名称" show-overflow-tooltip
<el-table-column align="center" header-align="center" label="名称"
show-overflow-tooltip
prop="name"></el-table-column>
<el-table-column align="center" header-align="center" label="编码" show-overflow-tooltip
<el-table-column align="center" header-align="center" label="编码"
show-overflow-tooltip
prop="code"></el-table-column>
<el-table-column label="金额" prop="money" header-align="center"
@@ -50,9 +52,32 @@ layout("/layouts/platform.html"){
{{row.money}} 元
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="慰问方式" show-overflow-tooltip
<el-table-column align="center" header-align="center" label="慰问方式"
show-overflow-tooltip
prop="way"></el-table-column>
<el-table-column align="center" header-align="center" label="是否上传附件"
show-overflow-tooltip
prop="way">
<template scope="{row}">
<span v-if="row.isUploadFile" class="text-success">是</span>
<span v-else class="text-danger">否</span>
</template>
</el-table-column>
<el-table-column label="是否禁用" prop="isDisabled" header-align="center"
align="center">
<template scope="{row}">
<el-switch
@change="doEdit(row)"
v-model="row.isDisabled"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="180px">
<template scope="{row}">
@@ -60,7 +85,7 @@ layout("/layouts/platform.html"){
@click="openEdit(row)">
编辑
</el-button>
<el-button size="mini" type="danger" :loading="row.delLoading"
<el-button disabled size="mini" type="danger" :loading="row.delLoading"
@click="doDelete(row)">
删除
</el-button>
@@ -78,13 +103,13 @@ layout("/layouts/platform.html"){
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-row>
</el-card>
</el-card>
</guava>
<el-dialog :visible.sync="dialogVisible" :title="formData.id?'修改':'新增'" width="40%" :close-on-click-modal="false">
<el-form :model="formData" ref="form" :rules="formRules" label-width="100px" size="medium">
<el-dialog :visible.sync="dialogVisible" :title="formData.id?'修改':'新增'" width="40%"
:close-on-click-modal="false">
<el-form :model="formData" ref="form" :rules="formRules" label-width="110px" size="medium">
<el-form-item label="类型编码" prop="code">
<el-input maxlength="20" placeholder="类型编码"
v-model="formData.code" type="text"></el-input>
@@ -96,16 +121,37 @@ layout("/layouts/platform.html"){
<el-form-item prop="money" label="慰问费用">
<el-input-number style="width: 100%" v-model="formData.money"
placeholder="请填写慰问费用" controls-position="right" :controls="false" precision="2"
placeholder="请填写慰问费用" controls-position="right" :controls="false"
precision="2"
:min="0"
:max="1000000000"></el-input-number>
</el-form-item>
<el-form-item label="慰问方式" prop="way">
<el-radio v-model="formData.way" label="慰问金 (A)" border>慰问金 (A)</el-radio>
<el-radio v-model="formData.way" label="纪念品 (B)" border>纪念品 (B)</el-radio>
<el-radio v-model="formData.way" label="提货券 (B)" border>提货券 (B)</el-radio>
<el-radio v-model="formData.way" label="慰问品 (C)" border>慰问品 (C)</el-radio>
</el-form-item>
<el-form-item label="是否禁用" prop="isDisabled">
<el-switch
v-model="formData.isDisabled"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</el-form-item>
<el-form-item label="是否上传附件" prop="isUploadFile">
<el-radio-group v-model="formData.isUploadFile">
<el-radio-button :label="true">是</el-radio-button>
<el-radio-button :label="false">否</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="上传附件说明" prop="uploadFileDesc" v-if="formData.isUploadFile">
<el-input v-model="formData.uploadFileDesc" maxlength="50" clearable></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
@@ -136,6 +182,7 @@ layout("/layouts/platform.html"){
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
way: [{required: true, message: '必填', trigger: ['blur', 'change']}],
code: [{required: true, message: '必填', trigger: ['blur', 'change']}],
isUploadFile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
sortDialogVisible: false,
@@ -158,7 +205,10 @@ layout("/layouts/platform.html"){
this.$set(row, "delLoading", true)
const {code, msg} = await $.post("/platform/condolence/type/doDelete", {id: id});
const {
code,
msg
} = await $.post("/platform/condolence/type/doDelete", {id: id});
if (code == 0) {
this.$notify({
@@ -179,7 +229,9 @@ layout("/layouts/platform.html"){
});
},
openAdd() {
this.formData = {}
this.formData = {
isUploadFile: true
}
this.dialogVisible = true
if (this.$refs['form']) {
this.$refs['form'].resetFields()
@@ -192,7 +244,10 @@ layout("/layouts/platform.html"){
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.editLoading = true
const {code, msg} = await $.post("/platform/condolence/type/" + (add ? "doAdd" : "doEdit"), this.formData)
const {
code,
msg
} = await $.post("/platform/condolence/type/" + (add ? "doAdd" : "doEdit"), this.formData)
this.editLoading = false
if (code == 0) {
this.$notify({
@@ -212,7 +267,25 @@ layout("/layouts/platform.html"){
}
})
},
async doEdit() {
async doEdit(row) {
if (row) {
const refs = await $.post("/platform/condolence/type/doEdit", row)
if (refs.code == 0) {
this.$notify({
title: '成功',
message: refs.msg,
type: 'success'
});
this.dialogVisible = false
this.pageData()
} else {
this.$notify.error({
title: '错误',
message: refs.msg
});
}
}
await this.submit(false)
},
async openEdit(row) {
@@ -3,345 +3,339 @@ layout("/layouts/platform.html"){
#-->
<style>
input[type="file"] {
display: none
}
.el-input-number input {
text-align: left !important;
}
</style>
<div id="app" v-cloak style="padding: 10px">
<div id="app" v-cloak>
<guava>
<el-card class="box-card" shadow="never">
<template #header>
<h3 style="color: #1867b0">慰问申请</h3>
</template>
<div>
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" label-position="right"
label-suffix=":">
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="manager_name" label="经办人姓名">
<el-input readonly v-model="formData.manager_name" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="manager_loginname" label="经办人工号">
<el-input readonly v-model="formData.manager_loginname" type="text"></el-input>
</el-form-item>
</el-col>
<el-card class="box-card">
<div slot="header" class="clearfix">
<h3 style="color: #409EFF;font-size: 18px">慰问申请</h3>
</div>
<div>
<el-form label-width="100px">
<el-form-item label="填写申请信息&emsp;" label-width="180px" class="view-header">
</el-form-item>
</el-form>
<el-col :span="12">
<!--#if(@shiro.hasRole('sysadmin') || @shiro.hasRole('H04') ){#-->
<el-form-item prop="be_user" label="慰问对象">
<el-select
style="width: 100%"
v-model="formData.be_user"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userRemoteMethod"
:loading="userLoading"
@change="userChange">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.username+'('+item.loginname+')'+'('+item.unitname+')'+'('+item.sex+')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<!--#}else{#-->
<el-form-item prop="be_user" label="慰问对象">
<el-select
style="width: 100%"
v-model="formData.be_user"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userRemoteMethod"
:loading="userLoading"
@change="userChange">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.username+'('+item.loginname+')'+'('+item.unitname+')'+'('+item.sex+')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<!--#}#-->
</el-col>
<el-form :model="formData" ref="form" :rules="formRules" label-width="180px" label-position="right"
label-suffix=":">
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="manager_name" label="经办人">
<el-input disabled v-model="formData.manager_name" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="apply_time" label="申请时间">
<el-input disabled v-model="formData.apply_time" type="text"></el-input>
<el-col :span="12">
<el-form-item prop="payee" label="收款人">
<el-select
style="width: 100%"
v-model="formData.payee"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userPayee"
:loading="userLoading"
@change="payeeChange">
<el-option
v-for="item in userPayees"
:key="item.id"
:label="item.username+'('+item.loginname+')'+'('+item.unitname+')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="慰问类型" prop="type">
<el-select v-model="formData.type" @change="typeChange" style="width: 100%"
placeholder="请选择慰问类型">
<el-option v-for="item in typeOptions"
:value="item.id"
:disabled="item.isDisabled"
:label="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="way" label="慰问方式">
<el-select v-model="formData.way"
placeholder="选择慰问类型自动匹配慰问方式"
style="width: 100%"
clearable
disabled>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="money" label="慰问金额">
<el-input style="width: 100%" v-model="formData.money"
controls-position="right"
:controls="false"
precision="2"
readonly
placeholder="选择慰问类型自动匹配金额"
:min="0"
:max="1000000000"></el-input>
</el-form-item>
</el-col>
<!--生育(孩次)-->
<el-col v-if="formData.type==='2'" :span="12">
<el-form-item prop="birth_child_num" label="孩次">
<el-select v-model="formData.birth_child_num" placeholder="请选择孩次"
style="width: 100%"
clearable>
<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="occur_time">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.occur_time"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择慰问时间">
</el-date-picker>
</el-form-item>
</el-col>
<template v-if="['3','4'].includes(formData.type)">
<el-col :span="12">
<el-form-item prop="the_hospital" label="治疗医院"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="formData.the_hospital" maxlength="50"
placeholder="请填写治疗医院"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="the_hospital_house_num" label="病房号"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="formData.the_hospital_house_num" maxlength="50"
placeholder="请填写病房号"
type="number"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="the_hospital_house_bed_num" label="床号"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="formData.the_hospital_house_bed_num" maxlength="50"
placeholder="请填写床号"
type="number"></el-input>
</el-form-item>
</el-col>
</template>
<template v-if="['4'].includes(formData.type)">
<el-col :span="12">
<el-form-item prop="hospital_by" label="患病病种"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="formData.hospital_by" maxlength="50"
placeholder="请填写患病病种"></el-input>
</el-form-item>
</el-col>
</template>
<template v-if="['6'].includes(formData.type)">
<el-col :span="12">
<el-form-item prop="deadImmediateFamily" label="直系亲属"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<!-- <el-input v-model="formData.deadImmediateFamily" maxlength="20"-->
<!-- placeholder="配偶、父亲、母亲、子女"></el-input>-->
<el-radio-group v-model="formData.deadImmediateFamily" size="mini">
<el-radio label="配偶" border>配偶</el-radio>
<el-radio label="父亲" border>父亲</el-radio>
<el-radio label="母亲" border>母亲</el-radio>
<el-radio label="子女" border>子女</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</template>
</el-row>
<el-row gutter="60"
v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">
<el-col :span="12">
<el-form-item prop="hospital_stay" label="住院时间"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker type="daterange" style="width: 100%" range-separator="——"
v-model="formData.hospital_stay"
value-format="yyyy-MM-dd" format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="the_hospital" label="所在医院"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input placeholder="请填写所在医院" v-model="formData.the_hospital" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<!--申请事由原对应备注字段-->
<el-row gutter="60">
<el-col :span="24">
<el-form-item prop="remark" label="申请事由">
<el-input maxlength="500" v-model="formData.remark" placeholder="请填写申请事由"
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24" v-if="isUploadFile === true">
<el-form-item prop="files" label="附&emsp;&emsp;件">
<file-upload :files.sync="formData.files" card></file-upload>
<div v-if="isUploadFile && uploadFileDesc" class="text-danger">上传附件说明:{{uploadFileDesc}}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="be_user" label="被慰问人">
<el-select
v-if="!formData.id"
style="width: 100%"
v-model="formData.be_user"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userRemoteMethod"
:loading="userLoading"
@change="userChange">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.username+'('+item.loginname+')'"
:value="item.id">
</el-option>
</el-select>
<el-input v-else disabled v-model="formData.be_username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="sex" label="慰问人性别">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.sex" maxlength="30"
v-if="!formData.id"
type="text"></el-input>
<el-input v-model="formData.be_sex" disabled v-else></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="payee" label="收款人">
<el-select
v-if="!formData.id"
style="width: 100%"
v-model="formData.payee"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userPayee"
:loading="userLoading"
@change="payeeChange">
<el-option
v-for="item in userPayees"
:key="item.id"
:label="item.username+'('+item.loginname+')'"
:value="item.id">
</el-option>
</el-select>
<el-input v-else disabled v-model="formData.payee_username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="payee_bank_number" label="收款人银行卡">
<el-input placeholder="请填写银行卡号" v-model="formData.payee_bank_number" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="payee_bank_name" label="支行名称">
<el-input placeholder="请填写支行名称" v-model="formData.payee_bank_name" maxlength="50"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="慰问类型" prop="type">
<el-select v-model="formData.type" @change="typeChange" style="width: 100%">
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="money" label="慰问金额">
<template
v-if="!['7420d077e768480795538e1396cb4945','29cf78eea88d40128f639b9ae7b6aaaa','c0465e50ff1e45f49fad8938e5dad537'].includes(formData.type)">
<el-input-number style="width: 100%" v-model="formData.money"
placeholder="请填写慰问金额" controls-position="right" :controls="false"
precision="2"
:min="0"
disabled
:max="1000000"></el-input-number>
</template>
<template v-else>
<el-input-number style="width: 100%" v-model="formData.money"
placeholder="请填写慰问金额" controls-position="right" :controls="false"
precision="2"
:min="0"
:max="limitMoney"></el-input-number>
<div>
<span style="color: red">【{{condolenceName}}】{{condolenceMoney}}不能超过设置限额({{limitMoney}}元)</span>
</div>
</template>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="way" label="慰问方式">
<el-select v-model="formData.way" disabled placeholder="请选择慰问方式" style="width: 100%"
clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- 普通住院、重疾住院、结婚、生育、退休 -->
<el-form-item prop="condolenceTime" :label="labelName"
:rules="{required:true,message: '请选择日期', trigger: 'blur'}"
v-if="['c7175af55693441e8233be4552cef9d5','c138149575564b159b5919a97e856642','7420d077e768480795538e1396cb4945','29cf78eea88d40128f639b9ae7b6aaaa','c0465e50ff1e45f49fad8938e5dad537'].includes(formData.type)">
<el-date-picker
format="yyyy-MM-dd"
@change="checkCondolenceTime"
value-format="yyyy-MM-dd"
style="width: 100%"
v-model="formData.condolenceTime"
type="date"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<template v-if="formData.way == '慰问品 (C)'">
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">购置物品及价格</span>
</el-divider>
<el-form-item class="int_input border_table">
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
@click="formData.goods.push({name:'',price:''})">
添加
</el-button>
<el-table :data="formData.goods" border size="mini">
<el-table-column sortable type="index" width="100" label="序号"
align="center" header-align="center">
</el-table-column>
<el-table-column prop="name" label="物品名称" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
type="text"></el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="物品价格" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
type="text" @input="blur"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" header-align="center"
width="80px"
fixed="right">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" circle
:disabled="formData.goods.length==0"
@click="delNotesItem(scope)"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
<el-row gutter="60">
<el-col :span="24">
<el-form-item prop="remark" label="备&emsp;&emsp;注">
<el-input maxlength="500" v-model="formData.remark" placeholder="请填写备注"
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign prefix="condolence" :qz.sync="formData.sign"></sign>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item prop="files" label="证明材料(出院小结、结婚证明、生育证明、退休文件或通知单等)">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign prefix="condolence" :qz.sync="formData.sign"></sign>
</el-form-item>
</el-col>
</el-form>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" style="width: 150px" :disabled="compareTimeDis" @click="doAdd()">确 定</el-button>
<div style="float: right;margin: 20px 0">
<el-button type="primary" @click="doAdd()">确 定</el-button>
</div>
</div>
</div>
</el-card>
</el-card>
</guava>
<el-dialog
title="日常慰问申请"
style="margin-left: 180px"
:visible.sync="dialogVisible"
width="40%">
<span style="line-height: 24px">
&emsp;&emsp;我校工会会员符合以下五种情况,可在智慧工会的“日常慰问”申请日常慰问,费用由校工会支付。具体标准如下:<br/>
&emsp;&emsp;&emsp;&emsp;1.工会会员因病住院,一次性给予慰问金1000元;身患重大疾病住院的,一次性给予慰问金2000元,重大疾病范围参见《重大疾病保险的疾病定义使用规范》(2020 年修订版)。年度内会员住院慰问限一次,生育住院不在此范围内。申报时须在智慧工会系统中提交出院小结作为附件。<br/>
&emsp;&emsp;&emsp;&emsp;2.工会会员去世时,一次性给予慰问金3000元;<br/>
&emsp;&emsp;&emsp;&emsp;3.工会会员直系亲属去世时,一次性给予慰问金500元,直系亲属是指会员本人的父母、配偶、和子女。<br/>
&emsp;&emsp;&emsp;&emsp;4.工会会员结婚、生育符合国家法律、政策的,可以报销不超过500元的慰问品(慰问品指与结婚、母婴相关的物品),不可发放现金。<br/>
&emsp;&emsp;&emsp;&emsp;5.工会会员退休离岗,可以报销不超过 500 元的纪念品,不可发放现金。<br/>
&emsp;&emsp;以上情况,须在当年提出申请;12月1 日-12月31日期间发生的事项(如住院慰问以出院日期为准,结婚、生育等以证件为准),未申请报销的,可于下一年 3 月 31 日前申请报销,逾期不再受理。<br/>
</span>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false;">同意</el-button>
</span>
</el-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
data() {
return {
dialogVisible: true,
money: 0,
delNotesList: [],
formData: {},
formRules: {
be_user: [{required: true, message: '必填', trigger: ['blur', 'change']}],
payee_bank_number: [{required: true, message: '必填', trigger: ['blur', 'change']}],
payee_bank_name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
payee: [{required: true, message: '必填', trigger: ['blur', 'change']}],
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
disease_type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
way: [{required: true, message: '必填', trigger: ['blur', 'change']}],
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bank_card: [{required: true, message: '必填', trigger: ['blur', 'change']}],
personnel: [{required: true, message: '必填', trigger: ['blur', 'change']}],
payee: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
remark: [{required: true, message: '必填', trigger: ['blur', 'change']}],
occur_time: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtzz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
poszdw: [{required: true, message: '必填', trigger: ['blur', 'change']}],
files: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
birthday: [{required: true, message: '必填', trigger: ['blur', 'change']}],
// job_title: [{required: true, message: '必填', trigger: ['blur', 'change']}],
birth_child_num: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '请扫码签字', trigger: ['blur', 'change']}],
},
userLoading: false,
userOptions: [],
userPayees: [],
typeOptions: [],
condolenceName: '',
limitMoney: '',
labelName: '',
compareTimeDis: false,
condolenceMoney: '',
id: GetQueryString("id")
isUploadFile: true,
uploadFileDesc: null
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
watch: {
'formData.type'(val) {
const conType = this.typeOptions.find(o => o.id === val)
this.isUploadFile = conType.isUploadFile
this.uploadFileDesc = conType.uploadFileDesc
},
'formData.sign'(val) {
if (this.$refs.form) {
this.$refs.form.validateField(['sign'], () => {
})
}
}
},
methods: {
async typeChange(id) {
const conType = this.typeOptions.find(o => o.id === id)
this.isUploadFile = conType.isUploadFile
this.uploadFileDesc = conType.uploadFileDesc
const {data, code, msg} = await $.get("/platform/condolence/type/findOne", {id})
if (data) {
this.$set(this.formData, "money", data.money)
this.$set(this.formData, "way", data.way)
this.condolenceName = data.name
this.limitMoney = data.money
}
this.condolenceMoney = "慰问品金额"
if (['c7175af55693441e8233be4552cef9d5', 'c138149575564b159b5919a97e856642'].includes(id)) {
this.labelName = '住院时间'
} else if (id === '7420d077e768480795538e1396cb4945') {
this.labelName = '结婚时间'
} else if (id === '29cf78eea88d40128f639b9ae7b6aaaa') {
this.labelName = '生育时间'
} else if (id === 'c0465e50ff1e45f49fad8938e5dad537') {
this.labelName = '退休时间'
this.condolenceMoney = "纪念品金额"
}
},
async getUserData(userId) {
const {data} = await $.get(loc() + "/getUserData", {userId})
@@ -353,6 +347,7 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'birthday', userData.birthday)
this.$set(this.formData, 'idcard', userData.idcard)
this.$set(this.formData, 'mobile', userData.mobile)
this.$set(this.formData, 'job_title', userData.job_title)
},
async payeeChange() {
const payeeData = await this.getUserData(this.formData.payee);
@@ -363,11 +358,7 @@ layout("/layouts/platform.html"){
this.formData.goods.forEach(v => {
num += parseFloat(v.price)
})
this.$set(this.formData, "money", num < 400 ? num : 400)
},
delNotesItem(scope) {
this.delNotesList.push(scope.row.id)
this.formData.goods.splice(scope.$index, 1)
this.$set(this.formData, "money", num)
},
async userPayee(query) {
if (query) {
@@ -380,6 +371,7 @@ layout("/layouts/platform.html"){
async userRemoteMethod(query) {
if (query) {
this.userLoading = true
// const arr = await queryUserById(query)
const arr = await this.queryUser(query)
this.userOptions = arr
this.userLoading = false
@@ -389,31 +381,25 @@ layout("/layouts/platform.html"){
const {data} = await $.get(loc() + "/queryUser", {query})
return data
},
flush() {
async flush() {
//await this.userRemoteMethod("${@shiro.getPrincipalProperty('id')}")
this.delNotesList = []
this.formData = {
goods: [],
manager_name: "${@shiro.getPrincipalProperty('username')}",
manager_loginname: "${@shiro.getPrincipalProperty('loginname')}",
//be_user: this.userOptions[0].id,
/* bank_card: "${@shiro.getPrincipalProperty('bank_number')}",*/
apply_time: moment().format('YYYY-MM-DD'),
}
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
//await this.userChange()
/* if (this.$refs['form']) {
this.$refs['form'].resetFields()
}*/
},
async doAdd() {
if (!this.formData.files) {
this.$message.warning('请上传出院小结等附件')
return
}
this.$refs["form"].validate(async (valid) => {
if (valid) {
if (this.formData.sign === "" && this.formData.sign == null) {
this.$message.error('请扫描二维码签字!');
return;
}
const formData = JSON.parse(JSON.stringify(this.formData))
formData.files = JSON.stringify(formData.files)
formData.sign = ''
@@ -422,11 +408,6 @@ layout("/layouts/platform.html"){
formData.hospital_stay_2 = formData.hospital_stay[1]
}
if (['c7175af55693441e8233be4552cef9d5', 'c138149575564b159b5919a97e856642', '7420d077e768480795538e1396cb4945', '29cf78eea88d40128f639b9ae7b6aaaa'
, 'c0465e50ff1e45f49fad8938e5dad537'].includes(formData.type) && this.formData.condolenceTime == null && this.formData.condolenceTime === '') {
this.$message.error('您申请的慰问需要填写【' + this.labelName + '】,请完成填写!')
}
const loading = this.$loading({
lock: true,
text: '正在提交...',
@@ -434,19 +415,19 @@ layout("/layouts/platform.html"){
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doAdd", {
const resp = await $.post(loc() + (formData.id ? "/doEdit" : "/doAdd"), {
data: JSON.stringify(formData),
hospital_stay_1: formData.hospital_stay_1,
hospital_stay_2: formData.hospital_stay_2,
sign: this.formData.sign
})
loading.close()
if (resp.code === 0) {
this.$notify({title: '成功', message: resp.msg, type: 'success'});
this.flush()
location.href = '/platform/fw/condolence'
this.$notify.success(resp.msg)
sublime.jumpPagePjax('/platform/fw/condolence/myList')
} else {
this.$notify.error({title: '错误', message: resp.msg});
this.$notify.warning(resp.msg)
}
}
})
@@ -457,43 +438,31 @@ layout("/layouts/platform.html"){
this.typeOptions = data
}
},
checkCondolenceTime() {
const arr = this.formData.condolenceTime.split("-")
const year = parseInt(arr[0]);
//报销上一年的慰问时,不能超过本年的3月31日
const compare = moment().format('YYYY') + '-03-31';
if (year <= (moment().format('YYYY') - 1).toString()) {
if (new Date() > new Date(compare)) {
this.$message.warning("已过报销时效!")
this.compareTimeDis = true
this.formData.condolenceTime = ''
return
}
async openEdit(id) {
const resp = await $.get("/platform/fw/condolence/myList/findOne", {id})
const v = resp.data
condolence.toFormData(v)
if (v.starting_time) {
v.hospital_stay = [v.starting_time, v.end_time]
}
this.compareTimeDis = false
},
async backShow() {
const {data, code, msg} = await $.get('/platform/fw/condolence/findOne', {id: this.id})
if (code === 0) {
// await this.userRemoteMethod(data.be_username);
// await this.userPayee(data.payee_username);
this.typeChange(data.type)
if(data.files){
data.files = JSON.parse(data.files)
}
data.sign = data.manager_sign
this.formData = data
this.formData = v
if (v.manager_sign_data) {
this.formData.sign = v.manager_sign_data
this.$nextTick(() => {
if (this.$refs.form) {
this.$refs.form.validateField(['sign'], () => {
})
}
})
}
await this.userRemoteMethod(v.be_user)
await this.userPayee(v.payee_loginname)
}
},
async created() {
if (GetQueryString("id")) {
this.backShow()
this.dialogVisible = false
} else {
this.flush()
}
this.getTypeOptions()
let id = getQueryVariable("id")
id ? this.openEdit(id) : this.flush()
}
})
</script>
@@ -18,10 +18,10 @@ layout("/layouts/platform.html"){
</style>
<div id="app" v-cloak>
<guava ref="guava" padding="0% 5%">
<guava ref="guava">
<template>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<el-card shadow="never">
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
@@ -29,7 +29,7 @@ layout("/layouts/platform.html"){
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</el-select>
</el-input>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button">
<el-select v-model="pageForm.unitId" filterable placeholder="请选择单位" clearable>
<el-option
v-for="item in unit"
@@ -49,18 +49,18 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</div>
</el-row>
</el-card>
<el-row class="el-table-container">
<el-card shadow="never" class="mt20">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
@@ -116,9 +116,10 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<!--#include("/layouts/pagination.html"){}#-->
</template>
<template #edit>
<info ref="info2" handle label="工会常务副主席审核">
@@ -199,7 +200,7 @@ layout("/layouts/platform.html"){
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue'),
},
methods: {
dropdownCommand(command) {
@@ -234,14 +235,15 @@ layout("/layouts/platform.html"){
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
}else{
this.notifyWarning(resp.msg)
}
}
})
},
@@ -259,4 +261,4 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -3,25 +3,15 @@ layout("/layouts/platform.html"){
#-->
<style>
input[type="file"] {
display: none
}
.el-input-number input {
text-align: left !important;
}
.el-input-number__decrease, .el-input-number__increase {
display: none;
}
</style>
<div id="app" v-cloak>
<guava ref="guava" padding="0% 5%">
<guava ref="guava">
<template>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<el-card shadow="never">
<div class="btn-group tool-button ">
<el-date-picker
v-model="pageForm.year"
type="year"
@@ -29,7 +19,7 @@ layout("/layouts/platform.html"){
placeholder="选择年">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button ">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
@@ -39,28 +29,49 @@ layout("/layouts/platform.html"){
</el-select>
</el-input>
</div>
<div class="btn-group tool-button mt5">
<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('SchoolUnionMemberAdmin')}"
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 v-model="pageForm.unitId" filterable placeholder="请选择单位" clearable>
<el-option
v-for="item in unit"
v-for="item in units"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<div class="btn-group tool-button">
<el-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
<div class="btn-group tool-button ">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="btn-group tool-button mt5">
<div class="pull-right offscreen-right">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</div>
</el-row>
</el-row>
</el-card>
<el-card shadow="never" class="mt20">
<el-row class="el-table-container">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
@@ -70,13 +81,19 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
<el-table-column label="慰问对象" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="经办人" prop="man_username" header-align="center"
<el-table-column label="慰问对象工号" prop="be_loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="所在单位" prop="be_unitname" header-align="center"
<el-table-column label="申请人" prop="sqr_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="随从人员" prop="personnel" header-align="center" sortable
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname" header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname" header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="联系方式" prop="mobile" header-align="center"
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center"></el-table-column>
@@ -102,39 +119,38 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'Review',data:row}">
<el-dropdown-item :disabled="![2012, 2031].includes(row.state_id)"
:command="{type:'Review',data:row}">
审核
</el-dropdown-item>
<!-- <el-dropdown-item :disabled="![2014,2015,2020].includes(row.state_id)"-->
<!-- :command="{type:'edit',data:row}">-->
<!-- 撤回-->
<!-- </el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info ref="info2" handle label="财务审核">
<info ref="info2" handle label="校工会审核">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="money" label="慰问金额">
<el-input v-model="formData.money"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="time" label="审核时间">
<el-input v-model="formData.time" disabled></el-input>
@@ -142,6 +158,22 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-form-item prop="time" label="审核类型">
<el-radio-group v-model="auditType" border @change="typeChange">
<el-radio label="1">审核通过</el-radio>
<el-radio label="2">审核通过(线下提交资料)</el-radio>
<el-radio label="3">审核拒绝</el-radio>
<el-radio label="4">退回重填</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="money" label="慰问金额">
<el-input-number v-model="formData.money" :precision="2" style="width: 100%"
:min="0"></el-input-number>
</el-form-item>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.opinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
@@ -153,14 +185,21 @@ layout("/layouts/platform.html"){
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(false)" :disabled="subDis" :loading="subLoading1">拒
绝
</el-button>
<el-button type="primary" @click="doReview(true)" :disabled="subDis" :loading="subLoading2">通
过
</el-button>
</div>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()">取消</el-button>
<el-button type="primary" @click="doSubmit">提交</el-button>
<!-- <el-button @click="doReview(1)" :disabled="subDis" :loading="subLoading1">拒-->
<!-- 绝-->
<!-- </el-button>-->
<!-- <el-button type="danger" @click="doReview(2)" :disabled="subDis"-->
<!-- :loading="subLoading2">退 回-->
<!-- </el-button>-->
<!-- <el-button type="primary" @click="doReview(3)" :disabled="subDis"-->
<!-- :loading="subLoading3">通-->
<!-- 过-->
<!-- </el-button>-->
</el-row>
</template>
</info>
</template>
@@ -191,24 +230,88 @@ layout("/layouts/platform.html"){
subDis: false,
subLoading1: false,
subLoading2: false,
unit: [],
subLoading3: false,
units: [],
unions: [],
typeOptions: [],
auditType: '1',
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue?v='+new Date().getTime()),
},
methods: {
doSubmit() {
this.$refs["form"].validate(async (valid) => {
if (valid) {
let flag = 1
if (this.auditType === '1') {
flag = 3
} else if (this.auditType === '2') {
flag = 3
} else if (this.auditType === '3') {
flag = 1
} else if (this.auditType === '4') {
flag = 2
}
this.formData.pass = flag
console.log(this.formData)
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
this.$message.warning(resp.msg)
}
}
})
},
typeChange(val) {
if (val === '1') {
this.formData.opinion = '情况属实,同意申请。'
} else if (val === '2') {
this.$set(this.formData, 'opinion', '请将分工会主席和经办人签字后的发票、公务卡支付记录(未使用公务卡,请提交支付记录和公务卡结算审批表)一起交至行政楼A426办公室。')
} else {
this.formData.opinion = ''
this.formData.money = 0
}
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'Review') {
this.openReview(data)
} else if (type == 'edit') {
this.doEdit(data)
}
},
doEdit(row) {
const {id} = row
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post(loc() + "/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
async openReview(row) {
const {id} = row
const resp = await $.get("/platform/fw/condolence/findOne", {id})
@@ -216,9 +319,14 @@ layout("/layouts/platform.html"){
id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format('YYYY-MM-DD'),
money: resp.data.money
auditType: '1',
opinion: '情况属实,同意申请。',
money: row.money
}
this.subLoading1 = false
this.subLoading2 = false
this.subLoading3 = false
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
@@ -232,17 +340,25 @@ layout("/layouts/platform.html"){
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
if (flag == 1) {
this.subLoading1 = true
} else if (flag == 2) {
this.subLoading2 = true
} else {
this.subLoading3 = true
}
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
} else {
this.$message.warning(resp.msg)
}
}
})
},
@@ -251,10 +367,26 @@ layout("/layouts/platform.html"){
await this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
async getTypeOptions() {
const {code, data} = await $.get("/platform/condolence/type/getAll")
if (code == 0) {
this.typeOptions = data
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.getTypeOptions()
this.unions = await getUnions()
this.flushUnits()
this.pageData();
this.unit = await getUnits()
}
})
</script>
@@ -3,10 +3,6 @@ layout("/layouts/platform.html"){
#-->
<style>
input[type="file"] {
display: none
}
.el-input-number input {
text-align: left !important;
}
@@ -14,103 +10,75 @@ layout("/layouts/platform.html"){
.el-input-number__decrease, .el-input-number__increase {
display: none;
}
</style>
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
:clearable="false"
clearable
@change="doSearch"
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy" style="width: 150px"
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" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="慰问对象姓名" value="be.username"></el-option>
<el-option label="慰问对象工号" value="be.loginname"></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"
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="be.username"></el-option>
<el-option label="工号" value="be.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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')}"
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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">慰问类型:</div>
<div class="search-item-option">
<el-select v-model="pageForm.type" placeholder="请选择慰问类型" style="width: 100%" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
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 mt5">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</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-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
<!-- <div class="btn-group tool-button">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>-->
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool :app="this" label="申请列表">
<template #func>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize"
<el-card shadow="nerver" class="mt20">
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
@@ -119,45 +87,47 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
<el-table-column label="慰问对象" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="被慰问人工号" prop="be_loginname" header-align="center"
<el-table-column label="慰问对象工号" prop="be_loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请人" prop="sqr_username" header-align="center"
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname" header-align="center"
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname" header-align="center"
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="慰问类型" prop="type_name" header-align="center"
sortable
align="center">
<template slot-scope="{row}">
{{row.type_name}}({{row.type_code}})
</template>
</el-table-column>
<el-table-column label="慰问方式" prop="way" header-align="center"
<el-table-column show-overflow-tooltip label="联系方式" prop="mobile"
header-align="center"
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center"></el-table-column>
<!-- <el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>-->
<!-- <el-table-column label="随从人员" prop="personnel" header-align="center" sortable
align="center"></el-table-column>-->
<el-table-column label="申请时间" prop="apply_time" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="审核人" prop="shrname" header-align="center"
align="center">
<template slot-scope="{row:{shrname}}">
{{shrname?shrname:'暂无'}}
</template>
</el-table-column>
<!-- <el-table-column label="审核人" prop="shrname" header-align="center"
show-overflow-tooltip align="center">
<template slot-scope="{row:{shrname}}">
{{shrname?shrname:'暂无'}}
</template>
</el-table-column>-->
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" prop="state_id" header-align="center"
label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.state_color">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
min-width="100px">
<template scope="{row}">
@@ -173,48 +143,59 @@ layout("/layouts/platform.html"){
<!-- <el-dropdown-item :command="{type:'Print',data:row}">
阅览
</el-dropdown-item>-->
<!-- <el-dropdown-item
:command="{type:'doExport',data:row}">
导出报销凭证
</el-dropdown-item>-->
<!-- <el-dropdown-item-->
<!-- :command="{type:'export',data:row}">-->
<!-- 导出慰问登记表-->
<!-- </el-dropdown-item>-->
<el-dropdown-item
:command="{type:'edit',data:row}">
:disabled="![2011,2000,2015].includes(row.state_id)"
:command="{type:'edit',data:row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:row}">
<el-dropdown-item
:disabled="![2010,2011,2015].includes(row.state_id)"
:command="{type:'edit',data:row}">
重新提交
</el-dropdown-item>
<el-dropdown-item v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}"
:command="{type:'delete',data:row}">
删除
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id!=2080"
:command="{type:'doExport',data:row}">
导出报销凭证
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id!=2080"
:command="{type:'export',data:row}">
导出慰问审批表
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id!=2080"
:command="{type:'Print',data:row}">
打印
<el-dropdown-item v-else :disabled="![2000, 2010, 2011].includes(row.state_id)"
:command="{type:'delete',data:row}">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<!--<template #edit>
</template>
<template #edit>
<el-form label-width="100px">
<el-form-item label="填写申请信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
</el-form>
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" label-position="right"
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px"
label-position="right"
label-suffix=":">
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="manager_name" label="经办人">
<el-input disabled v-model="formData.manager_name" type="text"></el-input>
<el-form-item prop="manager_name" label="申请人">
<el-input disabled v-model="formData.manager_name"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -223,170 +204,247 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item prop="be_user" label="慰问对象">
<el-input disabled v-model="formData.be_username" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="job_title" label="职&emsp;&emsp;称">
<el-input placeholder="输入慰问对象查询" v-model="formData.job_title" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>-->
<!-- <el-col :span="12">
<el-form-item prop="sex" label="慰问人性别">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.sex" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>-->
<!-- <el-col :span="12">
<el-form-item prop="birthday" label="生&emsp;&emsp;日">
<el-input disabled placeholder="输入慰问人查询" format="yyyy-MM-dd" v-model="formData.birthday" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item prop="be_user" label="被慰问人">
<el-input disabled v-model="formData.be_username" type="text"></el-input>
<el-form-item prop="sex" label="性别">
<el-input disabled placeholder="输入慰问对象查询" v-model="formData.sex"
maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="sex" label="慰问人性别">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.sex" maxlength="30"
<el-form-item prop="sex" label="联系电话">
<el-input placeholder="请输入联系电话" v-model="formData.mobile"
maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="birthday" label="生&emsp;&emsp;日">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.birthday" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="mobile" label="联系方式">
<el-input placeholder="请输入联系方式" v-model="formData.mobile" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="idcard" label="身份证">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.idcard" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item prop="idcard" label="身份证">
<el-input disabled placeholder="输入慰问人查询" v-model="formData.idcard" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>-->
</el-row>
<!-- <el-row gutter="60">
<el-col :span="12">
&lt;!&ndash;<el-form-item prop="payee" label="收款人">
<el-input maxlength="100" disabled
v-model="formData.payee_username"
type="text"></el-input>
</el-form-item>&ndash;&gt;
<el-form-item prop="payee" label="收款人">
<el-select
style="width: 100%"
v-model="formData.payee"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userPayee"
:loading="userLoading"
@change="payeeChange">
<el-option
v-for="item in userPayees"
:key="item.id"
:label="item.username+'('+item.loginname+')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="payee_bank_number" label="收款人银行卡">
<el-input placeholder="请填写银行卡号" v-model="formData.payee_bank_number" maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>-->
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="payee" label="收款人">
<el-input maxlength="100" disabled
v-model="formData.payee_username"
type="text"></el-input>
<el-form-item prop="birthday" label="出生年月">
<el-date-picker value-format="yyyy-MM-dd" v-model="formData.birthday"
style="width: 100%" placeholder="请选择出生年月">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="payee_bank_number" label="收款人银行卡">
<el-input placeholder="请填写银行卡号" v-model="formData.payee_bank_number" maxlength="30"
<el-form-item label="家庭住址" prop="jtzz">
<el-input placeholder="请填写家庭住址" v-model="formData.jtzz" maxlength="40"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="配偶所在单位" prop="poszdw">
<el-input placeholder="请填写配偶所在单位" v-model="formData.poszdw"
maxlength="40"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="type" label="慰问类型">
<el-select v-model="formData.type" @change="typeChange" placeholder="请选择慰问类型"
<el-select v-model="formData.type" @change="typeChange"
placeholder="请选择慰问类型"
style="width: 100%">
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item prop="money" label="慰问金额">
<el-input-number style="width: 100%" v-model="formData.money"
placeholder="请填写慰问金额" controls-position="right" :controls="false"
precision="2"
:min="0"
:max="1000000000"></el-input-number>
</el-form-item>
</el-col>-->
</el-row>
<!--
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="type" label="慰问方式">
<el-select v-model="formData.way" placeholder="请选择慰问方式" style="width: 100%">
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="k">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="occur_time" label="慰问时间">
<el-date-picker value-format="yyyy-MM-dd" v-model="formData.occur_time" style="width: 100%">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>-->
<el-row gutter="60"
v-if="['c7175af55693441e8233be4552cef9d5','0872ea0b95aa463fb8d98c46bdf72537'].includes(formData.type)">
<el-col :span="12">
<el-form-item prop="occur_time" label="发生时间">
<el-date-picker value-format="yyyy-MM-dd" v-model="formData.occur_time" style="width: 100%">
</el-date-picker>
<el-form-item prop="hospital_stay" label="住院时间">
<el-date-picker type="daterange" style="width: 100%"
range-separator="——"
v-model="formData.hospital_stay"
value-format="yyyy-MM-dd" format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="the_hospital" label="所在医院">
<el-input placeholder="请填写所在医院" v-model="formData.the_hospital"
maxlength="30"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="60">
<el-col :span="12">
<el-form-item prop="type" label="慰问方式">
<el-select v-model="formData.way" placeholder="请选择慰问方式" style="width: 100%">
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="k">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="money" label="慰问金额">
<el-input-number style="width: 100%" v-model="formData.money"
placeholder="请填写慰问金额" controls-position="right" :controls="false"
precision="2"
:min="0"
:max="1000000000"></el-input-number>
</el-form-item>
</el-col>
&lt;!&ndash; <el-col :span="24">&ndash;&gt;
&lt;!&ndash; <el-form-item prop="personnel" label="参加慰问人员">&ndash;&gt;
&lt;!&ndash; <el-input maxlength="100" v-model="formData.personnel" placeholder="请填写参加慰问人员"&ndash;&gt;
&lt;!&ndash; type="text"></el-input>&ndash;&gt;
&lt;!&ndash; </el-form-item>&ndash;&gt;
&lt;!&ndash; </el-col>&ndash;&gt;
<!-- <el-col :span="24">
<el-form-item prop="personnel" label="参加慰问人员">
<el-input maxlength="100" v-model="formData.personnel" placeholder="请填写参加慰问人员"
type="text"></el-input>
</el-form-item>
</el-col>-->
</el-row>
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">购置物品及价格</span>
</el-divider>
<!--
<el-form-item prop="remark" label="申请事由">
<el-input maxlength="500" v-model="formData.remark" placeholder="请填写申请事由"
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
</el-form-item>-->
<!-- <el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">购置物品及价格</span>
</el-divider>
<el-form-item class="int_input border_table">
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
@click="formData.goods.push({name:'',price:''})">
添加
</el-button>
<el-form-item class="int_input border_table">
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
@click="formData.goods.push({name:'',price:''})">
添加
</el-button>
<el-table :data="formData.goods" border size="mini" style="width: 100%">
<el-table :data="formData.goods" border size="mini" style="width: 100%">
<el-table-column sortable type="index" width="100" label="序号"
align="center" header-align="center">
</el-table-column>
<el-table-column prop="name" label="物品名称" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
type="text"></el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="物品价格" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
type="text"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" header-align="center"
width="80px"
fixed="right">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" circle
:disabled="formData.goods.length==0"
@click="delNotesItem(scope)"></el-button>
</template>
</el-table-column>
</el-table>
<el-table-column sortable type="index" width="100" label="序号"
align="center" header-align="center">
</el-table-column>
<el-table-column prop="name" label="物品名称" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
type="text"></el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="物品价格" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
type="text" @input="blur"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" header-align="center"
width="80px"
fixed="right">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" circle
:disabled="formData.goods.length==0"
@click="delNotesItem(scope)"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>-->
<el-form-item prop="files" label="附&emsp;&emsp;件">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
<el-row gutter="60">
<el-col :span="24">
<el-form-item prop="remark" label="备&emsp;&emsp;注">
<el-input maxlength="500" v-model="formData.remark" placeholder="请填写备注"
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="files" label="附&emsp;&emsp;件">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" @click="doEdit()">确 定</el-button>
</div>
</template>-->
</template>
<template #view>
@@ -409,6 +467,7 @@ layout("/layouts/platform.html"){
userLoading: false,
userOptions: [],
formData: {
hospital_stay: [],
goods: []
},
tableData: [],
@@ -417,24 +476,53 @@ layout("/layouts/platform.html"){
searchName: "be.username",
year: new Date().getFullYear() + ""
},
serPayees: [],
userPayees: [],
formRules: {
be_user: [{required: true, message: '必填', trigger: ['blur', 'change']}],
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
disease_type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
way: [{required: true, message: '必填', trigger: ['blur', 'change']}],
money: [{required: true, message: '必填', trigger: ['blur', 'change']}],
files: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtzz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
poszdw: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
birthday: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
subDis: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue?v='+new Date().getTime()),
},
methods: {
async payeeChange() {
const payeeData = await this.getUserData(this.formData.payee);
if (this.formData.payee_bank_number === null) {
this.$set(this.formData, 'payee_bank_number', payeeData.bank_number)
}
},
async queryUser(query) {
const {data} = await $.get("/platform/fw/condolence/applyWrite/queryUser", {query})
return data
},
async userPayee(query) {
if (query) {
this.userLoading = true
const arr = await this.queryUser(query)
this.userPayees = arr
this.userLoading = false
}
},
blur() {
let num = 0
this.formData.goods.forEach(v => {
num += parseFloat(v.price)
})
this.$set(this.formData, "money", num)
},
async typeChange(id) {
const {data, code, msg} = await $.get("/platform/condolence/type/findOne", {id})
if (data) {
@@ -454,17 +542,8 @@ layout("/layouts/platform.html"){
this.openEdit(data)
} else if (type == 'delete') {
this.doDelete(data)
} else if (type == 'doExport') {
condolence.doExport(data.id)
} else if (type == 'export') {
condolence.export(data.id)
} else if (type == 'Print') {
condolence.doPrint(data.id)
}
},
/*doExport(row) {
location.href = "/platform/fw/medicalAid/common/exportDoc?id=" + row.id
},*/
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
@@ -475,7 +554,10 @@ layout("/layouts/platform.html"){
if (valid) {
const formData = JSON.parse(JSON.stringify(this.formData))
formData.files = JSON.stringify(formData.files)
if (formData.hospital_stay) {
formData.hospital_stay_1 = formData.hospital_stay[0]
formData.hospital_stay_2 = formData.hospital_stay[1]
}
const loading = this.$loading({
lock: true,
text: '正在提交...',
@@ -485,15 +567,16 @@ layout("/layouts/platform.html"){
const resp = await $.post(loc() + "/doEdit", {
data: JSON.stringify(formData),
sign: this.formData.manager_sign,
hospital_stay_1: formData.hospital_stay_1,
hospital_stay_2: formData.hospital_stay_2,
delNotesList: JSON.stringify(this.delNotesList)
})
loading.close()
if (resp.code === 0) {
this.pageData()
this.$refs.guava.index()
} else {
this.$message.error(msg);
this.notifyWarning(resp.msg)
}
}
});
@@ -509,22 +592,27 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'idcard', userData.idcard)
},
async openEdit(row) {
sublime.jumpPagePjax("/platform/fw/condolence/apply?id="+row.id)
// const {id} = row
// this.formData = {}
// this.$set(row, "editLoading", true)
// const resp = await $.get(loc() + "/findOne", {id})
// if (resp.code === 0) {
// // condolence.toFormData(v)
// this.formData = resp.data
// await this.userChange(resp.data.be_user)
// this.$refs.guava.edit()
// this.$set(row, "editLoading", false)
// } else {
// this.$notify.error({title: '错误', message: '获取信息失败'});
// this.$set(row, "editLoading", false)
// }
/* const {id} = row
this.formData = {}
this.$set(row, "editLoading", true)
const resp = await $.get(loc() + "/findOne", {id})
this.$set(row, "editLoading", false)
if (resp.code === 0) {
const v = resp.data
condolence.toFormData(v)
this.formData = v
this.formData.hospital_stay = [v.starting_time, v.end_time]
await this.userChange(v.be_user)
await this.userPayee(v.payee_loginname)
if (this.userPayees > 0) {
this.$set(this.formData, 'payee', arr[0].id)
}
this.$refs.guava.edit()
} else {
this.notifyWarning(resp.msg)
}*/
const {id} = row
sublime.jumpPagePjax('/platform/fw/condolence/applyWrite?id=' + id)
},
doDelete(row) {
const {id} = row
@@ -534,14 +622,14 @@ layout("/layouts/platform.html"){
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post(loc() + "/doDelete", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
this.$set(row, "delLoading", false)
} else {
this.$notify.error(resp.msg);
this.notifyWarning(resp.msg)
}
}
}
@@ -565,12 +653,12 @@ layout("/layouts/platform.html"){
data: JSON.stringify(formData),
sign: this.formData.sign
})
loading.close()
if (resp.code === 0) {
this.pageData()
this.$refs.guava.index()
} else {
this.$message.error(resp.msg);
this.notifyWarning(resp.msg)
}
}
});
@@ -16,94 +16,93 @@ layout("/layouts/platform.html"){
}
</style>
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
v-model="pageForm.year"
type="year"
@change="doSearch"
value-format="yyyy"
style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="be.username"></el-option>
<el-option label="工号" value="be.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">慰问类型:</div>
<div class="search-item-option">
<el-select v-model="pageForm.type" style="width: 100%" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
</div>
<!--<div class="search-item">
<div class="search-item-label">慰问方式:</div>
<div class="search-item-option">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>
</div>-->
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy" style="width: 150px"
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" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="慰问对象姓名" value="be.username"></el-option>
<el-option label="慰问对象工号" value="be.loginname"></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('SchoolUnionMemberAdmin')}"
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-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.money+')'"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :app="this" label="申请列表">
<el-card shadow="never" class="mt20">
<vi-title2 title="申请列表">
<template #func>
<el-button @click="exportSummary('month')" icon="el-icon-printer"
size="small"
type="primary">
导出月度汇总表
</el-button>
<el-button @click="exportSummary('year')" icon="el-icon-printer"
size="small"
type="primary">
导出年度汇总表
</el-button>
<el-button @click="exportAllApply" icon="el-icon-printer"
size="small"
type="primary">
导出全部申请表
</el-button>
<el-button @click="exportAllPay" icon="el-icon-printer"
size="small"
type="primary">
导出全部领取通知单
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" class="vi-table" row-key="id" @sort-change="pageOrder"
</vi-title2>
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
@@ -111,35 +110,46 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
<el-table-column label="慰问对象" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="被慰问人工号" prop="be_loginname" header-align="center"
<el-table-column label="慰问对象工号" prop="be_loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请人" prop="sqr_username" header-align="center"
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname" header-align="center"
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname" header-align="center"
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="联系方式" prop="mobile"
header-align="center"
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>
align="center">
<template scope="{row}">
{{row.type_name}}({{row.money}})
</template>
</el-table-column>
<!-- <el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>-->
<!--<el-table-column label="随从人员" prop="personnel" header-align="center" sortable
align="center"></el-table-column>-->
<el-table-column label="申请时间" prop="apply_time" header-align="center" sortable
align="center"></el-table-column>
align="center" width="200px"></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" prop="state_id" header-align="center"
label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.state_color">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<el-table-column align="center" header-align="center" label="操作" fixed="right"
width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -151,17 +161,11 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item
:command="{type:'doExport',data:row}">
导出报销凭证
<el-dropdown-item :command="{type:'exportReceipt',data:row}">
导出领取通知单
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id!=2080"
:command="{type:'export',data:row}">
导出慰问审批表
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id!=2080"
:command="{type:'Print',data:row}">
打印
<el-dropdown-item :command="{type:'exportApply',data:row}">
导出申请表
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -171,9 +175,7 @@ layout("/layouts/platform.html"){
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
</template>
<template #view>
<info ref="info"></info>
</template>
@@ -190,30 +192,41 @@ layout("/layouts/platform.html"){
tabLoading: false,
tableData: [],
pageForm: {
searchName: "be.username",
year: new Date().getFullYear() + ""
year: new Date().getFullYear() + "",
unionId: '',
unitId: '',
type: '',
searchName: 'be.username',
},
unions: [],
units: [],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue?v='+new Date().getTime()),
},
methods: {
exportAllApply() {
window.open(loc() + '/exportAllApply?year=' + this.pageForm.year)
},
exportAllPay() {
window.open(loc() + '/exportAllPay?year=' + this.pageForm.year)
},
exportSummary(type) {
if(!this.pageForm.type) {
this.$message.warning('请选择慰问类型')
return
}
window.open(loc() + '/exportSummary?exportType=' + type + '&conType=' + this.pageForm.type)
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'doExport') {
condolence.doExport(data.id)
} else if (type == 'export') {
condolence.export(data.id)
} else if (type == 'Print') {
condolence.doPrint(data.id)
} else if (type == 'exportReceipt') {
window.open(loc() + '/exportReceipt?id=' + data.id)
} else if (type == 'exportApply') {
window.open(loc() + '/exportApply?id=' + data.id)
}
},
openView(row) {
@@ -223,7 +236,7 @@ layout("/layouts/platform.html"){
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -1,90 +1,114 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" class="platform" v-cloak style="padding: 10px">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker
v-model="pageForm.year"
type="year"
style="width: 100%"
value-format="yyyy"
:clearable="false"
placeholder="选择年"
clearable
@change="yearChange">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.unionid" filterable placeholder="请选择工会" clearable @change="yearChange">
<el-option
v-for="item in union"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable @change="yearChange" c>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable @change="yearChange">
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" @click="allView">查看全部</el-button>
</div>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<!-- <el-date-picker
v-model="pageForm.year"
type="year"
style="width: 100%"
value-format="yyyy"
:clearable="false"
placeholder="选择年"
clearable
@change="yearChange">
</el-date-picker>-->
</el-card>
<el-col class="center-col">
<div style="width: 100%;height:calc(50% - 35px);box-sizing: border-box;padding: 30px 10px"
v-loading="loading.condolencesType"
id="condolencesTypeId"></div>
</el-col>
<el-date-picker
v-model="pageForm.yearMonth"
type="monthrange"
align="right"
unlink-panels
value-format="yyyy-MM"
style="width: 100%"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份"
@change="yearChange"
:picker-options="pickerOptions">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.unionid" filterable placeholder="请选择工会" clearable
@change="yearChange">
<el-option
v-for="item in union"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.reiItemId" filterable placeholder="请报销项目" clearable
@change="yearChange">
<el-option :value="item.code" :label="item.name"
v-for="item in reimbursementItem"></el-option>
</el-select>
</div>
<el-card shadow="never" class="mt20">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<!-- <div class="btn-group tool-button mt5">
<el-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable @change="yearChange">
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable @change="yearChange">
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>-->
</el-card>
<el-col class="center-col">
<div style="width: 100%;height:calc(50% - 35px);box-sizing: border-box;padding: 30px 10px"
v-loading="loading.condolencesType"
id="condolencesTypeId"></div>
</el-col>
<el-card shadow="never" class="mt10">
<el-table :data="tableData" row-key="id" @sort-change="pageOrder"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="所属工会" prop="unionname" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请时间" prop="apply_time" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center">
</el-table-column>
<el-table-column label="慰问方式" prop="way" header-align="center"
align="center">
</el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.state_color">{{scope.row.state_name}}</span>
</template>
</el-table-column>
</el-table>
<template scope="{row}" v-if="column.prop=='stateId'">
<span :style="'color:'+row.stateColor">{{row.stateName}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='reimbursementItemSort'">
{{row.reimbursementItemSort==='fy'?'费用报销':'支付报销'}}
</template>
<template scope="{row}" v-else-if="column.prop=='description'">
<span>{{row.activity_name!=null?'活动名称:'+row.activity_name:'被慰问人:'+row.be_username}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='money'">
<span>{{row.money}}元</span>
</template>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</guava>
</div>
@@ -98,6 +122,29 @@ layout("/layouts/platform.html"){
mixins: [initTableMixins],
data() {
return {
pickerOptions: {
shortcuts: [{
text: '本月',
onClick(picker) {
picker.$emit('pick', [moment().format('YYYY-MM'), moment().format('YYYY-MM')]);
}
}, {
text: '今年至今',
onClick(picker) {
const end = new Date();
const start = new Date(new Date().getFullYear(), 0);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近六个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setMonth(start.getMonth() - 6);
picker.$emit('pick', [start, end]);
}
}]
},
tabLoading: false,
union: [],
typeOptions: [],
@@ -105,14 +152,47 @@ layout("/layouts/platform.html"){
condolencesType: false,
},
pageForm: {
year: moment().format("YYYY")
yearMonth: [moment().startOf('year').format('YYYY-MM'), moment().format('YYYY-MM')]
},
tableColumns: [
{prop: 'loginName', label: '经办人工号', sortable: true},
{prop: 'userName', label: '姓名', sortable: true},
{prop: 'unionName', label: '所属工会', sortable: true},
{prop: 'unitName', label: '所属单位', sortable: true},
{prop: 'applyTime', label: '申请时间', sortable: true},
{prop: 'reimbursementItemSort', label: '报销类别', sortable: true},
{prop: 'reimbursementItemName', label: '报销项目', sortable: true},
{prop: 'description', label: '备注'},
{prop: 'money', label: '金额'},
{prop: 'stateId', label: '申请状态', sortable: true}
],
reimbursementItem: [
{code: "fyww", name: '报销慰问', type: "fy", value: 0},
{code: "fyhd", name: '活动', type: "fy", value: 0},
{code: "fyjj", name: '建家', type: "fy", value: 0},
{code: "fyrc", name: '日常', type: "fy", value: 0},
{code: "zfww", name: '支付慰问', type: "zf", value: 0},
{code: "zfzj", name: '专家', type: "zf", value: 0},
{code: "zflw", name: '劳务', type: "zf", value: 0},
]
}
},
methods: {
allView() {
this.$set(this.pageForm, "conType", null)
this.pageData()
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.yearMonth = JSON.stringify(pageForm.yearMonth)
$.post(loc() + "/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
yearChange() {
this.pageData()
@@ -120,53 +200,51 @@ layout("/layouts/platform.html"){
},
async getCondolencesType() {
this.loading.condolencesType = true
const resp = await $.get(loc() + '/condolencesType', this.pageForm)
if (resp.code === 0){
this.loading.condolencesType = false
if (chart.condolencesTypeId) {
chart.condolencesTypeId.changeData(resp.data)
return
}
const data = resp.data
chart.condolencesTypeId = new G2Plot.Column('condolencesTypeId', {
data,
autoFit: true,
xField: 'name',
yField: 'value',
label: {
// 可手动配置 label 数据标签位置
position: 'middle', // 'top', 'bottom', 'middle',
// 配置样式
style: {
fill: '#FFFFFF',
opacity: 0.6,
},
},
xAxis: {
label: {
autoHide: true,
autoRotate: false,
},
},
meta: {
label: {
alias: '类型',
},
value: {
alias: '慰问数',
},
}
});
chart.condolencesTypeId.render();
chart.condolencesTypeId.on('element:click', (v) => {
const aa = v.data.data.name
this.$set(this.pageForm, "conType", this.typeOptions.find(v => v.name == aa).id)
this.pageData()
});
const pageForm = clone(this.pageForm)
pageForm.yearMonth = JSON.stringify(pageForm.yearMonth)
const {data} = await $.get(loc() + '/condolencesType', pageForm)
this.reimbursementItem.forEach(v => {
v.value = data.filter(d => d.reimbursementitemid === v.code).length
})
let data2 = this.reimbursementItem
this.loading.condolencesType = false
if (chart.condolencesTypeId) {
chart.condolencesTypeId.changeData(data2)
return
}
},
chart.condolencesTypeId = new G2Plot.Column('condolencesTypeId', {
data: data2,
autoFit: true,
xField: 'name',
yField: 'value',
label: {
// 可手动配置 label 数据标签位置
position: 'middle', // 'top', 'bottom', 'middle',
// 配置样式
style: {
fill: '#FFFFFF',
opacity: 0.6,
},
},
xAxis: {
label: {
autoHide: true,
autoRotate: false,
},
},
meta: {
label: {
alias: '类型',
},
value: {
alias: '报销数',
},
},
});
chart.condolencesTypeId.render();
},
async getTypeOptions() {
const {code, data} = await $.get("/platform/condolence/type/getAll")
if (code == 0) {
@@ -175,13 +253,14 @@ layout("/layouts/platform.html"){
},
},
async created() {
this.pageData()
this.getCondolencesType()
this.getTypeOptions()
await this.pageData()
await this.getTypeOptions()
this.union = await getUnions()
await this.getCondolencesType()
}
})
</script>
<!--#
}
#-->
#-->
@@ -16,104 +16,82 @@ layout("/layouts/platform.html"){
}
</style>
<div id="app" class="platform" v-cloak>
<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" style="width: 150px"
placeholder="选择年">
</el-date-picker>
</div>
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
v-model="pageForm.year"
type="year"
@change="doSearch"
value-format="yyyy"
style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</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" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="慰问对象姓名" value="be.username"></el-option>
<el-option label="慰问对象工号" value="be.loginname"></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"
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="be.username"></el-option>
<el-option label="工号" value="be.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">慰问类型:</div>
<div class="search-item-option">
<el-select v-model="pageForm.type" style="width: 100%" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
</div>
<!--<div class="search-item">
<div class="search-item-label">慰问方式:</div>
<div class="search-item-option">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>
</div>-->
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}"
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-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.money+')'"></el-option>
</el-select>
</div>
<!-- <div class="btn-group tool-button">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>-->
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<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="mt10">
<table-tool :app="this" label="审核列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize"
<el-card shadow="never" class="mt20">
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
@@ -122,33 +100,44 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
<el-table-column label="慰问对象" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="被慰问人工号" prop="be_loginname" header-align="center"
<el-table-column label="慰问对象工号" prop="be_loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请人" prop="sqr_username" header-align="center"
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname" header-align="center"
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname" header-align="center"
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname"
header-align="center"
sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="联系方式" prop="mobile"
header-align="center"
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>
align="center">
<template scope="{row}">
{{row.type_name}}({{row.money}})
</template>
</el-table-column>
<!-- <el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>-->
<!--<el-table-column label="随从人员" prop="personnel" header-align="center" sortable
align="center"></el-table-column>-->
<el-table-column label="申请时间" prop="apply_time" header-align="center" sortable
align="center"></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" prop="state_id" header-align="center"
label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.state_color">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<el-table-column align="center" header-align="center" label="操作" fixed="right"
width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -160,14 +149,15 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'doWithdraw',data:row.id}"
:disabled="row.state_id!=2040">
撤回
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id == 2040||row.state_id==2080"
:command="{type:'Review',data:row}">
<el-dropdown-item
:disabled="row.state_id!=2000"
:command="{type:'Review',data:row}">
审核
</el-dropdown-item>
<el-dropdown-item :disabled="![1990,2010,2012].includes(row.state_id)"
:command="{type:'edit',data:row}">
撤回
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -176,16 +166,15 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info ref="info2" handle label="基层工会主席审核">
<info ref="info2" handle label="分工会审核">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
@@ -201,7 +190,8 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.opinion" rows="4" maxlength="500"
<el-input type="textarea" v-model="formData.opinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
@@ -212,11 +202,12 @@ layout("/layouts/platform.html"){
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(false)" :disabled="subDis" :loading="subLoading1">拒
绝
<el-button @click="doReview(1)">拒 绝
</el-button>
<el-button type="primary" @click="doReview(true)" :disabled="subDis" :loading="subLoading2">通
过
<el-button type="danger" @click="doReview(2)"
>退 回
</el-button>
<el-button type="primary" @click="doReview(3)">通 过
</el-button>
</div>
</template>
@@ -248,18 +239,12 @@ layout("/layouts/platform.html"){
},
formRules: {
opinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}]
},
subDis: false,
subLoading1: false,
subLoading2: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue?v='+new Date().getTime()),
},
methods: {
dropdownCommand(command) {
@@ -268,10 +253,32 @@ layout("/layouts/platform.html"){
this.openView(data)
} else if (type == 'Review') {
this.openReview(data)
} else if (type == 'doWithdraw') {
this.doWithdraw(data)
} else if (type == 'edit') {
this.doEdit(data)
}
},
doEdit(row) {
const {id} = row
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post(loc() + "/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
async openReview(row) {
const {id} = row
@@ -280,56 +287,24 @@ layout("/layouts/platform.html"){
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doWithdraw(id) {
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doWithdraw", {id: id})
requestLaterMsgFun(vue, resp, () => {
this.pageData()
}, () => {
}, () => {
})
}
}
})
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
if (this.formData.sign === "" && this.formData.sign == null) {
this.$message.error('请扫描二维码签字!');
return;
}
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0){
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
this.$refs.guava.index()
this.$message.success(resp.msg)
}else {
this.$message.error(resp.msg)
} else {
this.$message.warning(resp.msg)
}
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
}
})
},
@@ -16,102 +16,71 @@ layout("/layouts/platform.html"){
}
</style>
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava" padding="0% 5%">
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
v-model="pageForm.year"
type="year"
@change="doSearch"
value-format="yyyy"
style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="be.username"></el-option>
<el-option label="工号" value="be.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">慰问类型:</div>
<div class="search-item-option">
<el-select v-model="pageForm.type" style="width: 100%" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.code+')'"></el-option>
</el-select>
</div>
</div>
<!--<div class="search-item">
<div class="search-item-label">慰问方式:</div>
<div class="search-item-option">
<el-select v-model="pageForm.way" placeholder="请选择慰问方式" clearable>
<el-option
v-for="(v,k) in condolence.way"
:key="k"
:label="v"
:value="v">
</el-option>
</el-select>
</div>
</div>-->
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
<div class="btn-group tool-button">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy" style="width: 150px"
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" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="慰问对象姓名" value="be.username"></el-option>
<el-option label="慰问对象工号" value="be.loginname"></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('SchoolUnionMemberAdmin')}"
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-select v-model="pageForm.type" placeholder="请选择慰问类型" clearable>
<el-option v-for="item in typeOptions" :value="item.id"
:label="item.name+' ('+item.money+')'"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<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="mt10">
<table-tool :app="this" label="审核列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize"
<el-card shadow="never" class="mt20">
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="120px">
<template scope="scope">
@@ -119,34 +88,43 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="被慰问人" prop="be_username" header-align="center"
<el-table-column label="慰问对象" prop="be_username" header-align="center"
align="center"></el-table-column>
<el-table-column label="被慰问人工号" prop="be_loginname" header-align="center"
<el-table-column label="慰问对象工号" prop="be_loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请人" prop="sqr_username" header-align="center"
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname" header-align="center"
sortable
<el-table-column show-overflow-tooltip label="所在工会" prop="be_unionname"
header-align="center" sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname" header-align="center"
sortable
<el-table-column show-overflow-tooltip label="所在单位" prop="be_unitname"
header-align="center" sortable
align="center"></el-table-column>
<el-table-column show-overflow-tooltip label="联系方式" prop="mobile"
header-align="center"
align="center"></el-table-column>
<el-table-column label="慰问类型" prop="type_name" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>
align="center">
<template scope="{row}">
{{row.type_name}}({{row.money}})
</template>
</el-table-column>
<!-- <el-table-column label="慰问方式" prop="way" header-align="center"
align="center"></el-table-column>-->
<!-- <el-table-column label="随从人员" prop="personnel" header-align="center" sortable
align="center"></el-table-column>-->
<el-table-column label="申请时间" prop="apply_time" header-align="center" sortable
align="center"></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
align="center" width="200px"></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center"
label="申请状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.state_color">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<el-table-column align="center" header-align="center" label="操作" fixed="right"
width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -158,11 +136,7 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'doWithdraw',data:row.id}"
:disabled="row.state_id!=2080">
撤回
</el-dropdown-item>
<el-dropdown-item :disabled="row.state_id==2080"
<el-dropdown-item :disabled="row.state_id!=2020"
:command="{type:'Review',data:row}">
审核
</el-dropdown-item>
@@ -173,6 +147,8 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info ref="info2" handle label="校工会主席审核">
@@ -180,13 +156,6 @@ layout("/layouts/platform.html"){
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
<el-divider>
<span class="text-danger">
{{formData.applyUserName}}已在{{formData.year}}年度,第{{formData.conNum+1}}次申请六必访的{{formData.type_name}}
</span>
</el-divider>
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
@@ -195,31 +164,44 @@ layout("/layouts/platform.html"){
disabled></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item prop="money" label="慰问金额">-->
<!-- <el-input v-model="formData.money"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="12">
<el-form-item prop="time" label="审核时间">
<el-input v-model="formData.time" disabled></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item prop="time" label="审核类型">-->
<!-- <el-select placeholder="请选择审核类型" @change="typeChange"-->
<!-- v-model="auditType" style="width: 100%">-->
<!-- <el-option label="审核通过" value="1"></el-option>-->
<!-- <el-option label="审核通过(线下提交资料)" value="2"></el-option>-->
<!-- <el-option label="审核拒绝" value="3"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.opinion" rows="4" maxlength="500"
<el-input type="textarea" v-model="formData.opinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign prefix="condolence" :qz.sync="formData.sign"></sign>
<sign ref="sign" prefix="condolence" :qz.sync="formData.sign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(false)" :disabled="subDis" :loading="subLoading1">拒
绝
</el-button>
<el-button type="primary" @click="doReview(true)" :disabled="subDis" :loading="subLoading2">通
过
</el-button>
<el-button @click="doReview(1)">拒 绝</el-button>
<el-button type="danger" @click="doReview(2)">退 回</el-button>
<el-button type="primary" @click="doReview(3)">通 过</el-button>
</div>
</template>
</info>
@@ -236,13 +218,15 @@ layout("/layouts/platform.html"){
mixins: [initTableMixins],
data() {
return {
auditType: '1',
unions: [],
units: [],
tabLoading: false,
userOptions: [],
formData: {},
formData: {
opinion: '',
},
tableData: [],
typeOptions: [],
pageForm: {
searchName: "be.username",
isAudit: false,
@@ -250,64 +234,45 @@ layout("/layouts/platform.html"){
},
formRules: {
opinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
subDis: false,
subLoading1: false,
subLoading2: false,
unit: [],
appNum: 0
typeOptions: [],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue?v=1.0.5'),
'info': httpVueLoader('/components/condolence/Info.vue?v='+new Date().getTime()),
},
methods: {
typeChange(val) {
if(val === '1') {
this.formData.opinion = '情况属实,同意申请。'
} else if (val === '2') {
this.$set(this.formData, 'opinion', '请将纸质发票经办人、分工会主席签字后交至行政楼A426办公室。')
} else {
this.formData.opinion = ''
}
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'Review') {
this.openReview(data)
} else if (type == 'doWithdraw') {
this.doWithdraw(data)
}
},
async doWithdraw(id) {
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doWithdraw", {id: id})
requestLaterMsgFun(vue, resp, () => {
this.pageData()
}, () => {
}, () => {
})
}
}
})
},
async openReview(row) {
const {id, type, type_name} = row
const {data} = await $.post(loc() + "/getApplyNum", {userId: row.be_user, type: type})
const {id} = row
const resp = await $.get("/platform/fw/condolence/findOne", {id})
this.formData = {
conNum: data.conNum,
knbfNum: data.knbfNum,
applyUserName: row.be_username,
type_name: type_name,
id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format('YYYY-MM-DD'),
year: moment().format('YYYY'),
type: row.type
money: resp.data.money,
opinion: '情况属实,同意申请。',
}
// this.subLoading1 = false
// this.subLoading2 = false
// this.subLoading3 = false
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
@@ -315,41 +280,24 @@ layout("/layouts/platform.html"){
}
},
async doReview(flag) {
if(flag === 3 && !this.formData.sign) {
this.$message.warning('请签字后再提交')
return
}
if(this.auditType === '2') {
flag = 4
}
this.$refs["form"].validate(async (valid) => {
if (valid) {
if (this.formData.sign === "" && this.formData.sign == null) {
this.$message.error('请扫描二维码签字!');
return;
}
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0){
if (resp.code === 0) {
this.$message.success(resp.msg)
this.pageData()
this.$refs.guava.index()
this.$message.success(resp.msg)
}else {
this.$message.error(resp.msg)
} else {
this.$message.warning(resp.msg)
}
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
// requestLaterMsgFun(vue, resp, () => {
// this.pageData()
// this.$refs.guava.index()
// }, null, (v) => {
// this.subDis = false
// this.subLoading1 = false
// this.subLoading2 = false
// })
}
})
},
@@ -10,345 +10,38 @@ layout("/layouts/platform.html"){
</style>
<div id="app" v-cloak style="padding: 10px">
<template>
<!-- <apply :form="formData" @radio="radioButton">-->
<el-card class="box-card">
<div slot="header" class="clearfix">
<span style="color: #409EFF;font-size: 18px">填写申请信息</span>
</div>
<el-form :model="formData" ref="addform" :rules="formRules" label-width="180px">
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="user_name" label="申请人姓名">
<el-input disabled v-model="formData.sqrname == null ? formData.sqr : formData.sqrname"
type="text">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="apply_mode" label="申请模式">
<el-radio-group :disabled="formData.id" v-model="formData.apply_mode" @change="radioButton"
style="width: 100%"
>
<el-radio-button label="1" border>本人申请</el-radio-button>
<el-radio-button label="2" border>替他人申请</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="user_name" label="申请人工号">
<el-input disabled v-model="formData.sqrloginname"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="bbzrusername" label="受补助人">
<el-select v-if="formData.id==null" clearable
v-model="formData.bbzrusername" filterable remote
placeholder="输入工号或者姓名查找" :remote-method="querySqr" @change="userChange"
style="width: 100%">
<el-option v-for="o in subsidizedList"
:label="o.username+'('+o.loginname+')-'+o.unit_name" :value="o.id"
:key="o.id"></el-option>
</el-select>
<el-input maxlength="100" disabled v-else v-model="formData.bbname"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="idcard" label="身份证号">
<el-input maxlength="50" placeholder="请输入身份证号" clearable
v-model="formData.idcard"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="sex" label="性&emsp;&emsp;别">
<el-select v-model="formData.sex" placeholder="请选择性别" clearable
:disabled="formData.apply_mode==1" style="width: 100%">
<el-option v-for="item in ['男','女']" :key="item" :label="item" :value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="mz" label="民&emsp;&emsp;族">
<el-select v-model="formData.mz" placeholder="请选择民族" filterable clearable
style="width: 100%">
<el-option
v-for="item in mzOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="zc" label="职&emsp;&emsp;称">
<el-select v-model="formData.zc" placeholder="请选择或输入职称" filterable clearable
style="width: 100%">
<el-option
v-for="item in zcOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="zw" label="职&emsp;&emsp;务">
<el-input maxlength="50" clearable placeholder="请填写职务" v-model="formData.zw"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="brnzsr" label="本人年收入" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.brnzsr" :min="0"
:max="9999999"
controls-position="right" placeholder="请填写年收入(元)">
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="birthday" label="生&emsp;&emsp;日">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.birthday"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择生日">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="lxfs" label="手机号码">
<el-input maxlength="100" clearable placeholder="请填写手机号码" v-model="formData.lxfs"
type="text"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item prop="rsbz" label="人事编制">
<el-select v-model="form.rsbz" placeholder="请选择人事编制" clearable
style="width: 100%">
<el-option
v-for="item in bzOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>-->
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="unitname" label="所在单位">
<el-input maxlength="50" clearable placeholder="所在单位" v-model="formData.unitname"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="sq_ksbz" label="科室班组">
<el-input maxlength="50" clearable placeholder="科室班组" v-model="formData.sq_ksbz"
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- <el-col :span="8">
<el-form-item prop="ybzk" label="医保状况">
<el-select v-model="form.ybzk" placeholder="请选择医保状况" clearable style="width: 100%">
<el-option
v-for="item in ybOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>-->
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="补助类型" prop="sq_bzlx">
<el-select v-model="formData.sq_bzlx" @change="$set(formData,'sq_knlx','')"
@clear="$set(formData,'sq_knlx','')" style="width: 100%">
<el-option v-for="(v,k) in difficulty.subsidy" :label="v" :value="k"
:key="k"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="困难类型" prop="sq_knlx">
<el-select v-model="formData.sq_knlx" clearable style="width: 100%">
<el-option v-for="(v,k) in difficulty.getHard(formData.sq_bzlx)" :key="k" :value="k"
:label="v"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="formData.sq_knlx==1" gutter="20">
<el-col :span="12">
<el-form-item label="所在医院" prop="hospital">
<el-input placeholder="请填写所在所在医院" v-model="formData.hospital"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="住院时间" prop="hospitalized_time">
<el-date-picker
clearable
style="width: 100%"
v-model="formData.hospitalized_time"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择住院时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="yhmc" label="发放补助银行支行名称">
<el-input maxlength="100" placeholder="请输入发放补助银行支行名称" clearable v-model="formData.yhmc"
type="text" style="width: 100%"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="yhkh" label="银行卡号">
<el-input maxlength="30" placeholder="请输入银行卡号" clearable v-model="formData.yhkh"
type="text" style="width: 100%"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="apply_reason" label="申请理由">
<el-input maxlength="500" :autosize="{ minRows: 5, maxRows: 10}" placeholder="请简述申请理由" clearable
v-model="formData.apply_reason"
type="textarea"></el-input>
</el-form-item>
<el-form-item prop="zyzkyybz" label="备&emsp;&emsp;注">
<el-input maxlength="500" placeholder="请简述原因" clearable v-model="formData.zyzkyybz"
type="textarea"></el-input>
</el-form-item>
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">主要家庭成员</span></el-divider>
<el-form-item label-width="0">
<el-button style="float: right;margin-bottom: 10px" icon="el-icon-plus" size="mini"
@click="formData.jtcys.push({})">
添加
</el-button>
<el-table
:data="formData.jtcys"
border
size="mini"
style="width: 100%">
<el-table-column prop="xm" label="姓名" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入姓名" maxlength="100" v-model="scope.row.xm"
clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="gx" label="与本人关系" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入与本人关系" maxlength="30" v-model="scope.row.gx"
clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="nl" label="年龄" align="center" header-align="center">
<template slot-scope="scope">
<el-input-number clearable style="width: 100%" v-model="scope.row.nl" :min="0" :max="99"
controls-position="right" placeholder="请填写年龄">
</el-input-number>
</template>
</el-table-column>
<el-table-column prop="gzdw" label="工作单位" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入工作单位" maxlength="100" v-model="scope.row.gzdw"
clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="nsr" label="年收入(元)" align="center" header-align="center">
<template slot-scope="scope">
<el-input-number clearable style="width: 100%" v-model="scope.row.nsr" :min="0"
:max="9999999"
controls-position="right" placeholder="请填写年收入">
</el-input-number>
</template>
</el-table-column>
<el-table-column label="操作" width="100px" align="center" header-align="center">
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" circle
:disabled="formData.jtcys.length==0"
@click="formData.jtcys.splice(scope.$index,1)"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-divider content-position="left" class="dia"><span style="color: #3ea1ec;">附&emsp;&emsp;件</span>
</el-divider>
<el-form-item prop="files" label-width="auto">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
<el-divider content-position="left" class="dia"><span
style="color: #3ea1ec;">签&emsp;&emsp;字</span></el-divider>
<el-form-item prop="sign" label-width="auto">
<sign :qz.sync="formData.sqsign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" @click="operation">确 定</el-button>
</div>
</el-card>
<div id="app" v-cloak>
<guava>
<apply :form="formData" @radio="radioButton" ref="addFrom">
<template #footer>
<div style="float: right;margin: 20px 0">
<el-button @click="operation(false)" type="primary">保 存</el-button>
<el-button @click="operation(true)" type="primary">确 定</el-button>
</div>
</template>
</apply>
</template>
</guava>
<el-dialog
title="元旦春节困难补助慰问须知"
:visible.sync="dialogVisible"
title=""
width="40%">
<el-form>
<el-form-item class="view-header" label="&emsp;&emsp;申请须知">
</el-form-item>
</el-form>
<span style="line-height: 24px">
&emsp;&emsp;校工会每年12月份集中进行一次“元旦、春节”困难补助(慰问),费用由校工会支付。<br/>
&emsp;&emsp;&emsp;&emsp;1.患重大疾病(癌症)的会员;<br/>
&emsp;&emsp;&emsp;&emsp;2.会员本人的家庭(仅指会员及其配偶、子女共同组成的家庭)人均月收入低于1300元或会员的配偶、子女患有重大疾病且自付医疗费用超过家庭年收入的80%,导致生活负担较重的会员;<br/>
&emsp;&emsp;&emsp;&emsp;3.患精神类疾病的会员;<br/>
&emsp;&emsp;&emsp;&emsp;4.长期病休的会员;<br/>
&emsp;&emsp;&emsp;&emsp;5.其它特殊情况由校工会委员会集体讨论决定。<br/>
&emsp;&emsp;以上由基层工会在智慧工会“元旦、春节”困难补助(慰问)栏目申请,由基层工会主席审核后报校工会审批。补助金额将根据学校下拔工会经费的调整而进行调整,具体由校工会委员会研究决定。校工会委员会对基层工会审核提交的申请及相关证明进行复核、审议,审议结果在一定范围内予以公示。
&emsp;&emsp;一、住院慰问金申请:每位在职工会会员每年限申请一次,需在当年提出申请。系统全部审核完成后,可打印出报销凭证和纸质审批表,由本部门审核人员及本人签字并盖章后,以分工会为单位送交工会。为减少分工会工作量,分工会可于每月10号、20号(遇周末节假日可顺延)集中审核盖章后送交工会纸质材料。<br/>
&emsp;&emsp;二、因生活困难申报“元旦、春节”困难补助(慰问)金的会员,还须同时向分工会提交下列相关证明:<br/>
&emsp;&emsp;&emsp;&emsp;(1)申请人配偶、子女及家庭其他成员的收入情况证明原件(不涉及则无需提供);<br/>
&emsp;&emsp;&emsp;&emsp;(2)个人收入证明(年度工资银行对账单且有银行或单位盖章);<br/>
&emsp;&emsp;&emsp;&emsp;(3)涉及会员本人、配偶或子女患重病、大病者须提供病史证明复印件和自费医药费正式发票;
</span>
<span slot="footer" class="dialog-footer">
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">关闭</el-button>
<el-button type="primary" @click="dialogVisible = false">同意</el-button>
<el-button @click="dialogVisible = false" type="primary">同意</el-button>
</span>
</el-dialog>
@@ -372,13 +65,11 @@ layout("/layouts/platform.html"){
el: '#app',
mixins: [initTableMixins],
components: {
'apply': httpVueLoader('/components/difficulty/apply.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'apply': httpVueLoader('/components/difficulty/apply.vue?v=' + new Date().getTime()),
},
data() {
return {
dialogVisible: true,
dialogVisible: false,
formData: {
sq_bzlx: "1",
sqsj: moment().format('YYYY-MM-DD'),
@@ -386,123 +77,10 @@ layout("/layouts/platform.html"){
jtcys: [],
},
userData: {},
formRules: {
bbzrusername: [{required: true, message: '必填', trigger: ['blur', 'change']}],
apply_reason: [{required: true, message: '必填', trigger: ['blur', 'change']}],
/*brnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],*/
sq_bzlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sq_knlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhmc: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhkh: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
subsidizedList: [],
mzOptions: [
'汉族',
'蒙古族',
'回族',
'藏族',
'维吾尔族',
'苗族',
'彝族',
'壮族',
'布依族',
'朝鲜族',
'满族',
'侗族',
'瑶族',
'白族',
'土家族',
'哈尼族',
'哈萨克族',
'傣族',
'黎族',
'傈僳族',
'佤族',
'畲族',
'高山族',
'拉祜族',
'水族',
'东乡族',
'纳西族',
'景颇族',
'柯尔克孜族',
'土族',
'达翰尔族',
'么佬族',
'羌族',
'布朗族',
'撒拉族',
'毛南族',
'仡佬族',
'锡伯族',
'阿昌族',
'普米族',
'塔吉克族',
'怒族',
'乌孜别克族',
'俄罗斯族',
'鄂温克族',
'德昂族',
'保安族',
'裕固族',
'京族',
'塔塔尔族',
'独龙族',
'鄂伦春族',
'赫哲族',
'门巴族',
'珞巴族',
'基诺族',
],
ybOptions: ['统筹', '社保'],
zcOptions: ['教授', '副教授', '讲师', '助教', '其他'],
bzOptions: ['事业编制职工(正式职工)', '合同制职工', '人事代理职工', '集体职工', '流动编制职工', '非事业编制职工', '博士后进站人员', '劳务派遣人员', '聘用工(各二级单位聘用)'],
subsidy: {
1: "日常补助慰问",
2: "“元旦春节”困难补助慰问"
},
sq_knlx: {
1: "会员因病住院",
2: "家庭重大意外事故",
3: "会员去世",
4: "重大疾病(癌症)",
5: "困难家庭",
6: "精神疾病",
7: "长期病休",
8: "其它"
},
fclxOptions: ['商品房', '福利房', '经济适用房', '限价房', '自建房'],
hyzkOptions: ['未婚', '已婚', '离异', '丧偶', '再婚'],
fclyOptions: ['购买', '接收赠与', '继承', '其他来源'],
zzyyOptions: ['本人大病', '供养直系亲属大病', '本人残疾', '家属残疾', '本人下岗失业', '家属下岗失业', '收入低', '自然灾害', '重大事故', '子女上学', '其他'],
}
},
methods: {
async getUserData(userId) {
const {data} = await $.get("/platform/fw/condolence/apply/getUserData", {userId})
return data
},
async userChange() {
const userData = await this.getUserData(this.formData.bbzrusername);
this.$set(this.formData, 'sex', userData.sex)
this.$set(this.formData, 'idcard', userData.idcard)
this.$set(this.formData, 'yhkh', userData.bank_number)
this.$set(this.formData, 'zzmm', userData.political)
this.$set(this.formData, 'rsbz', userData.personType)
this.$set(this.formData, 'mz', userData.nation)
this.$set(this.formData, 'zw', userData.zw)
this.$set(this.formData, 'birthday', userData.birthday)
this.$set(this.formData, 'lxfs', userData.mobile)
this.$set(this.formData, 'unitname', userData.name)
},
querySqr(key) {
$.post(base + '/platform/fw/difficulty/apply/querySqr', {key: key}).then(res => {
this.subsidizedList = res.data;
});
},
radioButton() {
this.$set(this.formData, 'brnzsr', null)
this.$set(this.formData, 'idcard', '${@shiro.getPrincipalProperty("idcard")}')
this.$set(this.formData, 'sqr', '${@shiro.getPrincipalProperty("username")}')
this.$set(this.formData, 'bbzrusername', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('username')}" : null)
@@ -514,56 +92,51 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'yhkh', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('bank_number')}" : null)
this.$set(this.formData, 'yhmc', this.formData.apply_mode == 1 ? "${@shiro.getPrincipalProperty('yhmc')}" : null)
this.$set(this.formData, 'unitname', this.formData.apply_mode == 1 ? this.userData.unitname : null)
this.$set(this.formData, 'zw', this.formData.apply_mode == 1 ? this.userData.zw : null)
this.$set(this.formData, 'zzmm', this.formData.apply_mode == 1 ? this.userData.zzmm : null)
this.$set(this.formData, 'mz', this.formData.apply_mode == 1 ? this.userData.mz : null)
this.$set(this.formData, 'zw', this.formData.apply_mode == 1 ? this.userData.position : null)
this.$set(this.formData, 'zc', this.formData.apply_mode == 1 ? this.userData.jobtitle : null)
this.$set(this.formData, 'zzmm', this.formData.apply_mode == 1 ? this.userData.political : null)
this.$set(this.formData, 'mz', this.formData.apply_mode == 1 ? this.userData.nation : null)
},
async getUserData() {
const resp = await $.post(loc() + "/getUserData")
if (resp.code === 0){
if (resp.code === 0) {
this.userData = resp.data;
}else {
} else {
this.$notify.error({title: '失败', message: resp.msg});
}
},
async operation() {
let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addform"].validate(async (valid) => {
if (valid) {
if (this.formData.sq_bzlx === "2" && this.formData.brnzsr == 0) {
this.$notify.warning({title: '警告', message: '本人年收入必填'});
return
} else {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const formData = Object.assign({}, this.formData);
formData.jtcys = JSON.stringify(formData.jtcys)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
if (formData.apply_mode == 1) {
formData.bbzrusername = "${@shiro.getPrincipalProperty('id')}"
}
const resp = await $.post(loc() + method, formData)
if (resp.code === 0){
window.location.href = '/platform/fw/difficulty/applylist'
loading.close()
}else {
this.$notify.error({title: '失败', message: resp.msg});
loading.close()
}
}
async operation(flag) {
this.$refs.addFrom.operation(flag)
/*let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addFrom"].validate(async (valid) => {
if (valid) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const formData = Object.assign({}, this.formData);
formData.jtcys = JSON.stringify(formData.jtcys)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
if (formData.apply_mode == 1) {
formData.bbzrusername = "${@shiro.getPrincipalProperty('id')}"
}
const resp = await $.post(loc() + method, formData)
if (resp.code === 0) {
sublime.jumpPagePjax('/platform/fw/difficulty/applylist')
loading.close()
} else {
this.$notify.error({title: '失败', message: resp.msg});
loading.close()
}
}
);
})*/
},
async openEdit(id) {
const resp = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
if (resp.code === 0){
if (resp.code === 0) {
if (resp.data.files) {
resp.data.files = JSON.parse(resp.data.files)
}
@@ -572,13 +145,9 @@ layout("/layouts/platform.html"){
}
},
async created() {
await this.getUserData()
let id = getQueryVariable("id")
id ? this.openEdit(id) : this.radioButton()
}
})
</script>
@@ -6,117 +6,115 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
v-model="pageForm.year"
placeholder="选择年"
type="year"
style="width: 100%;"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
placeholder="年度"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 140px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :app="this" label="申请列表">
<template #func>
</template>
</table-tool>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData" :size="tableSize"
:data="tableData"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%">
<el-table-column label="序号" type="index" header-align="center" align="center">
style="width: 100%"
>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<!-- <el-table-column align="center" header-align="center" label="受补助人姓名"
prop="sbzrname">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="受补助人工号"
prop="sbzrloginname"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname" show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center" prop="sqrunionname"
label="工会"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center" prop="unitname"
label="单位">
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
<el-table-column prop="lxfs" label="联系方式" header-align="center" align="center" show-overflow-tooltip
min-width="100"></el-table-column>
<el-table-column sortable prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
{{row.unitname?row.unitname:row.sqrunitname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column align="center" header-align="center" label="困难类型"
min-width="100"
prop="sq_knlx" show-overflow-tooltip>
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column sortable align="center" header-align="center" prop="sqsj"
label="申请时间"></el-table-column>
<el-table-column align="center" header-align="center" prop="shrname" label="审核人"
show-overflow-tooltip min-width="100">
<template slot-scope="{row:{shrname}}">
{{shrname?shrname:'暂无'}}
</template>
</el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
<!-- <el-table-column align="center" header-align="center" label="审核人"
min-width="100"
prop="shrname" show-overflow-tooltip>
<template slot-scope="{row:{shrname}}">
{{shrname?shrname:'暂无'}}
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -128,24 +126,29 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt!=100"
:command="{type:'edit',data:row}">
<el-dropdown-item
:command="{type:'edit',data:row}"
:disabled="![98,152,252].includes(row.zt)">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:row}" :loading="row.delLoading">
<el-dropdown-item
v-if="[250,156,150].includes(row.zt)"
:command="{type:'edit',data:row}"
:disabled="![250,156,150].includes(row.zt)">
重新提交
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:row}"
:disabled="![98].includes(row.zt)&&${@shiro.hasRole('sysadmin')}=== 'false'"
:loading="row.delLoading">
删除
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt!=500"
:command="{type:'downloadAnnex',data:row}">
下载
<el-dropdown-item :command="{type:'export',data:row}"
:disabled="row.zt!=500">
导出申请表
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt!=500"
:command="{type:'export',data:row}">
导出备案表
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt!=500"
:command="{type:'doExport',data:row}">
导出报销单
<el-dropdown-item :command="{type:'doExport',data:row}"
:disabled="row.zt!=500">
导出领取通知单
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -170,14 +173,14 @@ layout("/layouts/platform.html"){
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue'),
'info': httpVueLoader('/components/difficulty/info.vue?v=' + new Date().getTime()),
},
data() {
return {
pageForm: {
unit: "",
year: "",
searchName: "sbzr.username"
searchName: "sbzr.loginname"
},
unions: [],
units: [],
@@ -192,12 +195,10 @@ layout("/layouts/platform.html"){
this.doDelete(data)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'downloadAnnex') {
window.location.href = "/platform/fw/difficulty/reading/downloadAnnex?id=" + data.id
} else if (type == 'doExport') {
window.location.href = "/platform/fw/difficulty/reading/doExport?id=" + data.id
} else if (type == 'export') {
window.location.href = "/platform/fw/difficulty/reading/export?id=" + data.id
} else if (type == 'doExport') {
window.location.href = "/platform/fw/difficulty/reading/doExport?id=" + data.id
}
},
dodownloadAnnex(id) {
@@ -210,8 +211,7 @@ layout("/layouts/platform.html"){
},
openEdit(row) {
const {id} = row
window.location.href = '/platform/fw/difficulty/apply?id=' + id
sublime.jumpPagePjax('/platform/fw/difficulty/apply?id=' + id)
},
doDelete(row) {
const {id} = row
@@ -222,14 +222,13 @@ layout("/layouts/platform.html"){
callback: async (a, b) => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await GET(loc() + '/doDelete', {id: id})
requestLaterMsgFun(vue, resp, async () => {
const resp = await $.get(loc() + '/doDelete', {id: id})
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
}, () => {
}, () => {
this.$set(row, "delLoading", false)
})
} else {
this.notifyWarning(resp.msg)
}
}
}
});
@@ -2,138 +2,116 @@
layout("/layouts/platform.html"){
#-->
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">时间范围:</div>
<div class="search-item-option">
<el-date-picker clearable value-format="yyyy-MM-dd"
v-model="pageForm._dateRange"
type="daterange"
range-separator="-"
style="width: 100%"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</div>
<div class="btn-group tool-button">
<div class="block">
<el-date-picker clearable end-placeholder="结束日期"
range-separator="-"
start-placeholder="开始日期"
type="daterange"
v-model="pageForm._dateRange"
value-format="yyyy-MM-dd">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('wyh02')||@shiro.hasRole('wyh03')||@shiro.hasRole('H03')}"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">补助类型:</div>
<div class="search-item-option">
<el-select placeholder="补助类型" v-model="pageForm.sq_bzlx" style="width: 100%;"
clearable="true"
filterable="true">
<el-option label="日常补助慰问" value="1"></el-option>
<el-option label="元旦、春节困难补助慰问" value="2"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<!--#if(@shiro.hasRole('A06')||@shiro.hasRole('wyh02')||@shiro.hasRole('wyh03')||@shiro.hasRole('H04')||@shiro.hasRole('sysadmin')){#-->
<el-button @click="doExcel"><i class="el-icon-download"></i> 导出
</el-button>
<!--#}#-->
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :app="this" label="帮扶列表">
<template #func>
<!--#if(@shiro.hasRole('A06')||@shiro.hasRole('H04')||@shiro.hasRole('sysadmin')){#-->
<el-button size="small" @click="doExcel"><i class="el-icon-download"></i> 导出
</el-button>
<!--#}#-->
</template>
</table-tool>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData" :size="tableSize"
:data="tableData"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%"
style="width: 100%"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center"
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
label="工会"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center"
prop="unitname"
label="单位">
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
<el-table-column sortable prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>
<el-table-column sortable align="center" header-align="center" prop="sqsj"
label="申请时间"></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -145,18 +123,17 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item
:command="{type:'downloadAnnex',data:row}">
下载
<!-- <el-dropdown-item
:command="{type:'downloadAnnex',data:row}">
下载
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'export',data:row}"
:disabled="row.zt!=500">
导出申请表
</el-dropdown-item>
<!-- :disabled="row.zt!=500" -->
<el-dropdown-item
:command="{type:'export',data:row}">
导出备案表
</el-dropdown-item>
<el-dropdown-item
:command="{type:'doExport',data:row}">
导出报销单
<el-dropdown-item :command="{type:'doExport',data:row}"
:disabled="row.zt!=500">
导出领取通知单
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -165,6 +142,8 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
@@ -187,9 +166,11 @@ layout("/layouts/platform.html"){
unions: [],
units: [],
pageForm: {
unitId: '',
unionId: '',
unit: "",
year: "",
searchName: "sbzr.username"
searchName: "sbzr.loginname"
},
unitOptions: [],
}
@@ -225,11 +206,14 @@ layout("/layouts/platform.html"){
this.$refs.guava.view()
},
doExcel() {
if (!(this.pageForm._dateRange && this.pageForm._dateRange.length)) {
this.$message.error("请选择日期");
return
}
window.location.href = "/platform/fw/difficulty/reading/doExcel?dateRange=" + JSON.stringify(this.pageForm._dateRange) + "&sq_bzlx=" + (this.pageForm.sq_bzlx ? this.pageForm.sq_bzlx : '')
const {unionId, unitId, _dateRange} = this.pageForm
window.open("/platform/fw/difficulty/reading/doExcel?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId + "&unitId=" + unitId)
},
doWholeExcel() {
window.open("/platform/fw/difficulty/reading/doWholeExcel?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId
+ "&unitId=" + unitId)
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
@@ -5,111 +5,123 @@ layout("/layouts/platform.html"){
<!--校工会经办人-->
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 80px;">
<el-option label="姓名" value="sbzr.username"></el-option>
<el-option label="工号" value="sbzr.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
placeholder="年度"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 140px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-radio-group @change="doSearch" v-model="pageForm.isAudit">
<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="mt10">
<table-tool label="申请列表" :app="this">
<template #func>
<div class="pull-right offscreen-right mt5">
<el-radio-group v-model="pageForm.bzlx" @change="doSearch" size="small">
<el-radio-button :label="1">日常补助慰问</el-radio-button>
<el-radio-button :label="2">“元旦、春节”困难补助慰问</el-radio-button>
</el-radio-group>
</div>
<div class="pull-right offscreen-right mt5" style="margin-left: 10px">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</div>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%">
<el-table-column type="index" label="序号" width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
>
<template v-if="column.prop==='sq_knlx'" scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
<template v-else-if="column.prop==='state_id'" scope="{row}">
<span :style="'color:'+ row.statecolor">{{row.state_name}}</span>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData"
@sort-change="pageOrder"
style="width: 100%"
>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="性别"
prop="sex"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
show-overflow-tooltip
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>
-->
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -121,14 +133,14 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'doWithdraw',data:row.id}"
:disabled="row.zt!=250&&row.zt!=500">
撤回
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt==250||row.zt == 500"
:command="{type:'openReview',data:row}">
<el-dropdown-item :command="{type:'openReview',data:row}"
:disabled="row.zt == 500">
审核
</el-dropdown-item>
<!-- <el-dropdown-item v-if="row.zt==500"
:command="{type:'edit',data:row}">
撤回
</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -139,65 +151,64 @@ layout("/layouts/platform.html"){
</template>
<template #edit>
<info ref="info2" :handle="true" label="校工会主席审核" :panes="[2]">
<info :handle="true" label="校工会主席审核" ref="info2">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
<el-divider v-if="formData.sq_knlx=='1'">
<span class="text-danger">
{{formData.applyUserName}}已在{{formData.year}}年度,第{{formData.knbfNum+1}}次申请困难帮扶的{{formData.knbfTypeName}}
</span>
</el-divider>
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px"
ref="form"
style="padding: 20px 0">
<el-form-item class="view-header" label="审核信息&emsp;" label-width="135px">
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
<el-form-item label="审核人员" prop="username">
<el-input disabled
v-model="formData.username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
<el-form-item label="审核时间" prop="time">
<el-input disabled v-model="formData.auditTime"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="xghbzje" label="补助金额">
<el-input v-model="formData.xghbzje"
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
placeholder="请输入补助金额" type="number">
<template style="border: none;background-color: white;" slot="append">元
<el-form-item label="补助金额" prop="xghbzje">
<el-input disabled
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
placeholder="请输入补助金额"
type="number" v-model="formData.xghbzje">
<template slot="append"
style="border: none;background-color: white;">元
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
<el-form-item label="审核意见" prop="opinion">
<el-input maxlength="500" placeholder="请填写您的审核意见" rows="4"
type="textarea"
v-model="formData.auditOpinion"></el-input>
</el-form-item>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(1)" :disabled="subDis" :loading="subLoading1">拒
<el-button :disabled="subDis" :loading="subLoading1" @click="doReview(1)">拒
绝
</el-button>
<el-button type="danger" @click="doReview(3)" :disabled="subDis" :loading="subLoading3">返回修改
<el-button :disabled="subDis" :loading="subLoading3" @click="doReview(3)"
type="danger">返回修改
</el-button>
<el-button type="primary" @click="doReview(2)" :disabled="subDis" :loading="subLoading2">通
<el-button :disabled="subDis" :loading="subLoading2" @click="doReview(2)"
type="primary">通
过
</el-button>
@@ -235,25 +246,13 @@ layout("/layouts/platform.html"){
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.username",
bzlx:"1",
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
xghbzje: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
tableColumns: [
{prop: 'sbzrname', label: '受补助人姓名', sortable: true},
{prop: 'sbzrloginname', label: '受补助人工号', sortable: true},
{prop: 'sqrname', label: '申请人', sortable: true},
{prop: 'sqrunionname', label: '工会', sortable: true},
{prop: 'unitname', label: '单位', sortable: true},
{prop: 'lxfs', label: '联系方式', sortable: true},
{prop: 'sq_knlx', label: '困难类型', sortable: true},
{prop: 'sqsj', label: '申请时间', sortable: true},
{prop: 'state_id', label: '申请状态', sortable: true},
],
}
},
methods: {
@@ -263,49 +262,44 @@ layout("/layouts/platform.html"){
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
} else if (type == 'doWithdraw') {
this.doWithdraw(data)
} else if (type == 'edit') {
this.doEdit(data)
}
},
async doWithdraw(id) {
doEdit(row) {
const {id} = row
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doWithdraw", {id: id})
requestLaterMsgFun(vue, resp, () => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post("/platform/fw/difficulty/unionchairman/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
}, () => {
}, () => {
})
} else {
this.notifyWarning(resp.msg)
}
}
}
})
});
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
async openReview(row) {
const {id} = row
const {data} = await $.post("/platform/fw/condolence/vcr/getApplyNum", {
userId: row.be_user,
type: row.sq_knlx
})
this.formData = {
conNum: data.conNum,
knbfNum: data.knbfNum,
applyUserName: row.sbzrname,
knbfTypeName: difficulty.sq_knlx[row.sq_knlx],
id,
xghbzje: row.xghbzje,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
year: moment().format('YYYY'),
sq_knlx: row.sq_knlx
}
this.$refs.info2.getInfo(id)
@@ -329,14 +323,15 @@ layout("/layouts/platform.html"){
}
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
} else {
this.notifyWarning(resp.msg)
}
}
})
},
@@ -34,9 +34,9 @@ layout("/layouts/platform.html"){
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="sqr.loginname"></el-option>
<el-option label="姓名" value="sqr.username"></el-option>
style="width: 140px;">
<el-option label="受助人工号" value="sbzr.loginname"></el-option>
<el-option label="受助人姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
@@ -216,7 +216,7 @@ layout("/layouts/platform.html"){
unit: "",
year: "",
isAudit: false,
searchName: "sqr.username"
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
@@ -262,14 +262,15 @@ layout("/layouts/platform.html"){
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
}else{
this.notifyWarning(resp.msg)
}
}
})
},
@@ -34,9 +34,9 @@ layout("/layouts/platform.html"){
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="sqr.loginname"></el-option>
<el-option label="姓名" value="sqr.username"></el-option>
style="width: 140px;">
<el-option label="受助人工号" value="sbzr.loginname"></el-option>
<el-option label="受助人姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
@@ -190,7 +190,7 @@ layout("/layouts/platform.html"){
unit: "",
year: "",
isAudit: false,
searchName: "sqr.username"
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
@@ -234,16 +234,16 @@ layout("/layouts/platform.html"){
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
}else{
this.notifyWarning(resp.msg)
}
}
})
},
@@ -489,7 +489,7 @@ layout("/layouts/platform.html"){
],
bzOptions: ['事业编制职工(正式职工)', '合同制职工', '人事代理职工', '集体职工', '流动编制职工', '非事业编制职工', '博士后进站人员', '劳务派遣人员', '聘用工(各二级单位聘用)'],
ztObj: {
1: {color: '#E6A23C', label: '待基层工会审核'},
1: {color: '#E6A23C', label: '待分工会审核'},
2: {color: '#E6A23C', label: '待二级党组织审核'},
3: {color: '#E6A23C', label: '待校工会审核'},
4: {color: '#67C23A', label: '审核通过'},
@@ -740,4 +740,4 @@ layout("/layouts/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -4,133 +4,122 @@ layout("/layouts/platform.html"){
<!--工会主席-->
<div id="app" class="platform" v-cloak>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
:clearable="false"
clearable
@change="doSearch"
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<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>
<div class="search-item">
<div class="search-item-label">姓名工号:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 80px;">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
placeholder="年度"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="工号" value="sbzr.loginname"></el-option>
<el-option label="姓名" value="sbzr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
</div>
<div class="pull-right offscreen-right">
<el-radio-group @change="doSearch" v-model="pageForm.isAudit">
<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">
<table-tool :app="this" label="审核列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</template>
</table-tool>
<el-card class="mt20" shadow="never">
<el-table
:data="tableData" :size="tableSize"
:data="tableData"
@sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id" style="width: 100%">
<el-table-column label="序号" type="index" header-align="center" align="center">
style="width: 100%"
>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center"
<!-- <el-table-column align="center" header-align="center" prop="sbzrname"
label="受补助人姓名">
<template slot-scope="{row}">
{{row.sbzrname?row.sbzrname:row.sqrname}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sbzrloginname"
label="受补助人工号"></el-table-column>-->
<el-table-column align="center" header-align="center" label="申请人"
prop="sqrname"></el-table-column>
<el-table-column align="center" header-align="center" label="性别"
prop="sex"></el-table-column>
<el-table-column align="center" header-align="center" label="工会"
prop="sqrunionname"
label="工会"></el-table-column>
<el-table-column sortable show-overflow-tooltip align="center" header-align="center"
prop="unitname"
label="单位">
<template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>
</el-table-column>
<el-table-column prop="lxfs" label="联系方式" header-align="center" align="center"
show-overflow-tooltip
min-width="100"></el-table-column>
<el-table-column sortable prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip
sortable>
<!-- <template slot-scope="{row}">
{{row.unitname?row.unitname:row.sqrname}}
</template>-->
</el-table-column>
<el-table-column align="center" header-align="center" label="联系方式"
min-width="100"
prop="lxfs"
show-overflow-tooltip></el-table-column>
<el-table-column sortable align="center" header-align="center" prop="sqsj"
label="申请时间"></el-table-column>
<!-- <el-table-column prop="sq_knlx" label="困难类型" header-align="center" align="center"
show-overflow-tooltip min-width="100">
<template slot-scope="{row}">
<span> {{ difficulty.sq_knlx[row.sq_knlx] }}</span>
</template>
</el-table-column>-->
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" sortable>
<el-table-column align="center" header-align="center" label="申请时间" prop="sqsj"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
prop="state_id" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.state_name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
@@ -142,14 +131,16 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'doWithdraw',data:row.id}"
:disabled="row.zt!=200&&row.zt!=150">
撤回
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt==200||row.zt==500||row.zt==250||row.zt==150"
:command="{type:'openReview',data:row}">
<el-dropdown-item
:command="{type:'openReview',data:row}"
:disabled="pageForm.isAudit == true || (row.zt==200||row.zt==155||row.zt==500)">
审核
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'edit',data:row}"
v-if="row.zt==200||row.zt==150||row.zt==152">
撤回
</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -157,49 +148,54 @@ layout("/layouts/platform.html"){
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<info ref="info2" :handle="true" label="基层工会主席审核" :panes="[2]">
<info :handle="true" :panes="[2]" label="分工会主席审核" ref="info2">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
<el-form :model="formData" :rules="formRules" label-position="right"
label-width="120px"
ref="form"
style="padding: 20px 0">
<el-form-item class="view-header" label="审核信息&emsp;" label-width="135px">
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
<el-form-item label="审核人员" prop="username">
<el-input disabled
v-model="formData.username"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
<el-form-item label="审核时间" prop="time">
<el-input disabled v-model="formData.auditTime"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
<el-form-item label="审核意见" prop="opinion">
<el-input maxlength="500" placeholder="请填写您的审核意见" rows="4"
type="textarea"
v-model="formData.auditOpinion"></el-input>
</el-form-item>
<el-form-item prop="auditSign" label="签&emsp;&emsp;字">
<el-form-item label="签&emsp;&emsp;字" prop="sign">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(1)" :disabled="subDis" :loading="subLoading1">拒
<el-button :disabled="subDis" :loading="subLoading1" @click="doReview(1)">拒
绝
</el-button>
<el-button type="danger" @click="doReview(3)" :disabled="subDis" :loading="subLoading3">返回修改
<el-button :disabled="subDis" :loading="subLoading3" @click="doReview(2)"
type="danger">返回修改
</el-button>
<el-button type="primary" @click="doReview(2)" :disabled="subDis" :loading="subLoading2">通
<el-button :disabled="subDis" :loading="subLoading2" @click="doReview(3)"
type="primary">通
过
</el-button>
@@ -237,12 +233,11 @@ layout("/layouts/platform.html"){
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.username"
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
@@ -253,26 +248,32 @@ layout("/layouts/platform.html"){
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
} else if (type == 'doWithdraw') {
this.doWithdraw(data)
} else if (type == 'edit') {
this.doEdit(data)
}
},
async doWithdraw(id) {
doEdit(row) {
const {id} = row
this.$confirm('确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a, b) => {
if ("confirm" == a) {
const resp = await $.post(loc() + "/doWithdraw", {id: id})
requestLaterMsgFun(vue, resp, () => {
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.post(loc() + "/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
}, () => {
}, () => {
})
} else {
this.notifyWarning(resp.msg)
}
}
}
})
});
},
openView(row) {
const {id} = row
@@ -287,7 +288,9 @@ layout("/layouts/platform.html"){
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.subLoading1 = false
this.subLoading2 = false
this.subLoading3 = false
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
@@ -308,14 +311,15 @@ layout("/layouts/platform.html"){
this.subLoading3 = true
}
const resp = await $.post(loc() + "/doReview", this.formData)
requestLaterMsgFun(vue, resp, () => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.pageData()
this.$refs.guava.index()
}, null, (v) => {
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
})
} else {
this.notifyWarning(resp.msg)
}
}
})
},
File diff suppressed because it is too large Load Diff
@@ -42,111 +42,122 @@ layout("/layouts/platform.html"){
<guava>
<el-row class="transition-row">
<transition name="el-zoom-in-center">
<div v-show="v=='index'" class="transition-item">
<div class="transition-item" v-show="v=='index'">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-date-picker
v-model="pageForm.year"
placeholder="选择年度"
type="year"
value-format="yyyy"
placeholder="选择年度">
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select class="d-select" v-model="pageForm.pastQuota" filterable clearable
width="300px"
placeholder="请选择活动">
<el-select class="d-select" clearable filterable
placeholder="请选择活动"
v-model="pageForm.pastQuota"
width="300px">
<el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in lxyHd">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select class="d-select" v-model="pageForm.hdcd" filterable clearable
width="300px"
placeholder="请选择场地">
<el-select class="d-select" clearable filterable placeholder="请选择场地"
v-model="pageForm.hdcd"
width="300px">
<el-option
v-for="item in lxyHdCd"
:key="item.id"
:label="item.hdcd"
:value="item.id">
:value="item.id"
v-for="item in lxyHdCd">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
<el-button @click="doSearch" icon="el-icon-search"
type="primary"></el-button>
</div>
<div class="pull-right offscreen-right mt5">
<el-button icon="el-icon-plus" @click="openAdd">创建活动</el-button>
<el-button @click="openAdd" icon="el-icon-plus">创建活动</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
<el-card class="mt10" shadow="never">
<el-table :data="tableData" @sort-change="pageOrder" row-key="id"
style="width: 100%"
v-loading="tabLoading">
<el-table-column align="center" header-align="center" label="序号" width="100px">
<el-table-column align="center" header-align="center" label="序号"
width="100px">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column label="活动名称" prop="name" header-align="center" width="300px"
align="center">
<el-table-column align="center" header-align="center" label="活动名称"
prop="name"
width="300px">
<template scope="scope">
<el-link type="primary" @click="lxy_app.openView(scope.row.id)">
<el-link @click="lxy_app.openView(scope.row.id)" type="primary">
{{scope.row.name}}
</el-link>
</template>
</el-table-column>
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column align="center" header-align="center" label="活动场地"
prop="hdcd"
show-overflow-tooltip></el-table-column>
<el-table-column label="活动时间" prop="hdkssj" header-align="center" sortable
align="center">
<el-table-column align="center" header-align="center" label="活动时间"
prop="hdkssj"
sortable>
<template scope="scope">
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
</template>
</el-table-column>
<el-table-column label="报名时间" prop="bmsj" header-align="center" sortable
align="center" width="330px">
<el-table-column align="center" header-align="center" label="报名时间"
prop="bmsj"
sortable width="330px">
<template scope="scope">
{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}
</template>
</el-table-column>
<el-table-column label="状态" prop="name" header-align="center"
align="center">
<el-table-column align="center" header-align="center" label="状态"
prop="name">
<template scope="scope">
<span :class="lxy_app.getStatus(scope.row).class">{{lxy_app.getStatus(scope.row).name}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right"
<el-table-column align="center" fixed="right" header-align="center"
label="操作"
width="250px">
<template scope="scope">
<!-- <el-button size="mini" @click="openView(scope.row.id)">查看</el-button>-->
<el-button size="mini" type="primary" @click="openEdit(scope.row.id)" plain>编辑
<el-button @click="openEdit(scope.row.id)" plain
size="mini" type="primary">编辑
</el-button>
<el-button size="mini" type="danger" @click="doDelete(scope.row.id)" plain>删除
<el-button @click="doDelete(scope.row.id)" plain
size="mini" type="danger">删除
</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"
:total="pageForm.totalCount">
:page-sizes="[10, 20, 30, 50]"
:total="pageForm.totalCount"
@current-change="pageNumberChange"
@size-change="pageSizeChange"
layout="total, sizes, prev, pager, next">
</el-pagination>
</el-row>
</el-card>
@@ -155,44 +166,51 @@ layout("/layouts/platform.html"){
<!-- 新增 -->
<transition name="el-zoom-in-center">
<div v-show="v=='add'" class="transition-item">
<div class="transition-item" v-show="v=='add'">
<el-card class="box-card v-box" shadow="never">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
<div class="clearfix" slot="header">
<el-button @click="v='index'" icon="el-icon-back"
style="font-size: 18px"
type="text">返回
</el-button>
</div>
<el-row style="padding: 0 10%;" v-loading="loading">
<el-steps :active="stepActive" simple finish-status="success">
<el-step title="活动信息" description="">
<el-steps :active="stepActive" finish-status="success" simple>
<el-step description="" title="活动信息">
</el-step>
<el-step title="名额分配" description="">
<el-step description="" title="名额分配">
</el-step>
</el-steps>
<transition name="el-zoom-in-top">
<div v-show="stepActive==0" class="transition-box" style="margin-top: 20px;">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="120px">
<el-form-item label="填写活动信息&emsp;" label-width="135px" class="view-header">
<div class="transition-box" style="margin-top: 20px;"
v-show="stepActive==0">
<el-form :model="formData" :rules="formRules"
label-width="120px"
ref="form">
<el-form-item class="view-header" label="填写活动信息&emsp;"
label-width="135px">
</el-form-item>
<el-form-item label="活动名称" prop="name">
<el-input type="text" v-model="formData.name" maxlength="100"
placeholder="请填写活动名称"></el-input>
<el-input maxlength="100" placeholder="请填写活动名称"
type="text"
v-model="formData.name"></el-input>
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="报名时间" label-width="120px" prop="bmsj">
<el-form-item label="报名时间" label-width="120px"
prop="bmsj">
<el-date-picker
style="width: 100%"
v-model="formData.bmsj"
type="datetimerange"
align="right"
start-placeholder="开始日期"
end-placeholder="结束日期"
start-placeholder="开始日期"
style="width: 100%"
type="datetimerange"
v-model="formData.bmsj"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
@@ -200,12 +218,12 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="活动时间" prop="hdsj">
<el-date-picker
style="width: 100%"
v-model="formData.hdsj"
type="daterange"
align="right"
start-placeholder="开始日期"
end-placeholder="结束日期"
start-placeholder="开始日期"
style="width: 100%"
type="daterange"
v-model="formData.hdsj"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@@ -213,13 +231,15 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item label="活动场地" prop="hdcd">
<el-input type="text" v-model="formData.hdcd" maxlength="100"
placeholder="请填写活动场地"></el-input>
<el-input maxlength="100" placeholder="请填写活动场地"
type="text"
v-model="formData.hdcd"></el-input>
</el-form-item>
<el-form-item label="报名条件" prop="hdzysx">
<el-input type="textarea" rows="4" v-model="formData.hdzysx" maxlength="500"
placeholder="请填写报名条件"></el-input>
<el-input maxlength="500" placeholder="请填写报名条件"
rows="4" type="textarea"
v-model="formData.hdzysx"></el-input>
</el-form-item>
<div class="hdnr">
@@ -229,45 +249,49 @@ layout("/layouts/platform.html"){
</div>
<el-form-item prop="accessory" label="附件上传">
<el-form-item label="附件上传" prop="accessory">
<el-upload
name="file"
ref="upload"
action="**"
:on-remove="handleRemove"
:on-change="handleChange"
:auto-upload="false"
:file-list="fileList"
:on-change="handleChange"
:on-remove="handleRemove"
action="**"
limit="5"
:file-list="fileList">
<el-button size="small" type="primary">选择文件</el-button>
name="file"
ref="upload">
<el-button size="small" type="primary">选择文件
</el-button>
</el-upload>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" @click="next">下一步</el-button>
<el-button @click="next" type="primary">下一步</el-button>
</div>
</div>
</transition>
<transition name="el-zoom-in-bottom">
<div v-show="stepActive==1" class="transition-box" style="margin-top: 20px;">
<div class="transition-box" style="margin-top: 20px;"
v-show="stepActive==1">
<div class="pull-right offscreen-right mt5">
<span style="color:#409EFF">沿用之前活动名额&nbsp;&nbsp;</span>
<el-select class="d-select" v-model="pastQuota" filterable clearable
width="300px"
placeholder="请选择活动" @change="mefpChange">
<el-select @change="mefpChange" class="d-select" clearable
filterable
placeholder="请选择活动"
v-model="pastQuota" width="300px">
<el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in lxyHd">
</el-option>
</el-select>
</div>
<el-table :data="unions_" size="medium" height="70vh">
<el-table-column align="center" type="index" header-align="center"
label="序号"></el-table-column>
<el-table :data="unions_" height="70vh" size="medium">
<el-table-column align="center" header-align="center"
label="序号"
type="index"></el-table-column>
<el-table-column label="分工会" prop="unionname" sortable>
<template scope="{row}">
@@ -275,21 +299,26 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="会员人数" prop="membercount" sortable></el-table-column>
<el-table-column label="会员人数" prop="membercount"
sortable></el-table-column>
<el-table-column label="名额" prop="number" header-align="center" width="200px"
align="center">
<el-table-column align="center" header-align="center"
label="名额" prop="number"
width="200px">
<template scope="scope">
<el-input-number v-model="scope.row.number" placeholder="请填写名额数"
controls-position="right" :min="0"
:max="1000"></el-input-number>
<el-input-number :max="1000"
:min="0"
controls-position="right"
placeholder="请填写名额数"
v-model="scope.row.number"></el-input-number>
</template>
</el-table-column>
</el-table>
<div style="float: right;margin: 20px 0">
<el-button @click="stepActive=0">上一步</el-button>
<el-button type="primary" :disabled="subDis" @click="doAdd()">提
<el-button :disabled="subDis" @click="doAdd()"
type="primary">提
交
</el-button>
</div>
@@ -302,33 +331,38 @@ layout("/layouts/platform.html"){
<!-- 编辑 -->
<transition name="el-zoom-in-center">
<div v-show="v=='edit'" class="transition-item">
<div class="transition-item" v-show="v=='edit'">
<el-card class="box-card v-box" shadow="never">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
<div class="clearfix" slot="header">
<el-button @click="v='index'" icon="el-icon-back"
style="font-size: 18px"
type="text">返回
</el-button>
</div>
<el-row style="padding: 0 10%;" v-loading="loading">
<el-tabs v-model="tabs_active" stretch>
<el-tabs stretch v-model="tabs_active">
<el-tab-pane label="活动信息" name="1">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="120px">
<el-form :model="formData" :rules="formRules"
label-width="120px"
ref="form">
<vi-title title="修改活动信息"></vi-title>
<el-form-item label="活动名称" prop="name">
<el-input type="text" v-model="formData.name" maxlength="100"
placeholder="请填写活动名称"></el-input>
<el-input maxlength="100" placeholder="请填写活动名称"
type="text"
v-model="formData.name"></el-input>
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="报名时间" label-width="120px" prop="bmsj">
<el-form-item label="报名时间" label-width="120px"
prop="bmsj">
<el-date-picker
style="width: 100%"
v-model="formData.bmsj"
type="datetimerange"
align="right"
start-placeholder="开始日期"
end-placeholder="结束日期"
start-placeholder="开始日期"
style="width: 100%"
type="datetimerange"
v-model="formData.bmsj"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
@@ -336,12 +370,12 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="活动时间" prop="hdsj">
<el-date-picker
style="width: 100%"
v-model="formData.hdsj"
type="daterange"
align="right"
start-placeholder="开始日期"
end-placeholder="结束日期"
start-placeholder="开始日期"
style="width: 100%"
type="daterange"
v-model="formData.hdsj"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@@ -349,36 +383,41 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item label="活动场地" prop="hdcd">
<el-input type="text" v-model="formData.hdcd" maxlength="100"
placeholder="请填写活动场地"></el-input>
<el-input maxlength="100" placeholder="请填写活动场地"
type="text"
v-model="formData.hdcd"></el-input>
</el-form-item>
<el-form-item label="报名条件" prop="hdzysx">
<el-input type="textarea" rows="4" v-model="formData.hdzysx" maxlength="500"
placeholder="请填写报名条件"></el-input>
<el-input maxlength="500" placeholder="请填写报名条件"
rows="4" type="textarea"
v-model="formData.hdzysx"></el-input>
</el-form-item>
<el-form-item label="活动内容" prop="hdnr">
<div v-if="v=='edit'" id="lrEditor"></div>
<div id="lrEditor" v-if="v=='edit'"></div>
</el-form-item>
<el-form-item prop="accessory" label="附件上传">
<el-form-item label="附件上传" prop="accessory">
<el-upload
name="file"
ref="upload"
action="**"
:on-remove="handleRemove"
:on-change="handleChange"
:auto-upload="false"
:file-list="fileList"
:on-change="handleChange"
:on-remove="handleRemove"
action="**"
limit="5"
:file-list="fileList">
<el-button size="small" type="primary">选择文件</el-button>
name="file"
ref="upload">
<el-button size="small" type="primary">选择文件
</el-button>
</el-upload>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" :disabled="subDis" @click="doEdit()">修 改</el-button>
<el-button :disabled="subDis" @click="doEdit()"
type="primary">修 改
</el-button>
</div>
</el-tab-pane>
<el-tab-pane label="名额分配" name="2">
@@ -386,21 +425,23 @@ layout("/layouts/platform.html"){
<vi-title title="修改名额分配"></vi-title>
<div class="pull-right offscreen-right mt5">
<span style="color:#409EFF">沿用之前活动名额&nbsp;&nbsp;</span>
<el-select class="d-select" v-model="pastQuota" filterable clearable
width="300px"
placeholder="请选择活动" @change="mefpChange">
<el-select @change="mefpChange" class="d-select"
clearable filterable
placeholder="请选择活动"
v-model="pastQuota" width="300px">
<el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in lxyHd">
</el-option>
</el-select>
</div>
</el-form>
<el-table :data="unions_" size="medium" height="70vh">
<el-table-column align="center" type="index" header-align="center"
label="序号"></el-table-column>
<el-table :data="unions_" height="70vh" size="medium">
<el-table-column align="center" header-align="center"
label="序号"
type="index"></el-table-column>
<el-table-column label="分工会" prop="unionname" sortable>
<template scope="{row}">
@@ -408,21 +449,27 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="会员人数" prop="membercount" sortable></el-table-column>
<el-table-column label="会员人数" prop="membercount"
sortable></el-table-column>
<el-table-column label="名额" prop="number" header-align="center" width="200px"
align="center">
<el-table-column align="center" header-align="center"
label="名额" prop="number"
width="200px">
<template scope="scope">
<el-input-number v-model="scope.row.number" placeholder="请填写名额数"
controls-position="right" :min="0"
:max="1000"></el-input-number>
<el-input-number :max="1000"
:min="0"
controls-position="right"
placeholder="请填写名额数"
v-model="scope.row.number"></el-input-number>
</template>
</el-table-column>
</el-table>
<div style="float: right;margin: 20px 0">
<el-button type="primary" :disabled="subDis" @click="doEditMefp">提 交</el-button>
<el-button :disabled="subDis" @click="doEditMefp"
type="primary">提 交
</el-button>
</div>
</el-tab-pane>
</el-tabs>
@@ -671,11 +718,20 @@ layout("/layouts/platform.html"){
if (data.code == 0) {
data.data.hdsj = [data.data.hdkssj, data.data.hdjssj]
data.data.bmsj = [data.data.bmkssj, data.data.bmjzsj]
data.data.mefp.map(m => {
const union = this.unions.find(un => un.id === m.ghid)
m.membercount = union.membercount
})
this.unions_ = data.data.mefp
this.formData = data.data
//files
data.data.files.forEach(v => {
this.fileList.push({id: v.id, name: v.filename, url: v.filepath, status: 'success'})
this.fileList.push({
id: v.id,
name: v.filename,
url: v.filepath,
status: 'success'
})
})
this.$nextTick(() => {
@@ -12,6 +12,10 @@ layout("/layouts/platform.html"){
bottom: -100px;
cursor: pointer;
}
.viewFile {
height: 150px;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
@@ -60,7 +64,10 @@ layout("/layouts/platform.html"){
</div>
<div class="pull-right offscreen-right mt5">
<el-button @click="doExport" icon="el-icon-download" plain type="primary">导 出</el-button>
<el-button :disabled="!pageForm.hdid" @click="$refs.customMessage.open()"
type="primary">一键发送
</el-button>
<el-button @click="doExport" icon="el-icon-download" type="primary">导 出</el-button>
</div>
</el-card>
@@ -87,11 +94,10 @@ layout("/layouts/platform.html"){
prop="unionname" show-overflow-tooltip sortable></el-table-column>
<el-table-column align="center" header-align="center" label="单位"
prop="unitname" show-overflow-tooltip sortable></el-table-column>
<el-table-column align="center" header-align="center" label="职务"
prop="zw" sortable></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px">
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template scope="scope">
<el-button @click="openView(scope.row)" size="mini" type="primary">查看
</el-button>
@@ -130,11 +136,6 @@ layout("/layouts/platform.html"){
{{viewData.username}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职务:">
{{viewData.zw}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="人事编制:">
{{viewData.rsbz}}
@@ -160,46 +161,22 @@ layout("/layouts/platform.html"){
{{viewData.mobile}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号:">
{{viewData.idcard}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="获奖名称:">
{{viewData.zyhj}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注:">
{{viewData.bz}}
</el-form-item>
</el-col>
</el-row>
<vi-title title="曾获荣誉"></vi-title>
<el-table :data="viewData.chry" show-header="false" size="mini" style="width: 100%">
<el-table-column align="center" header-align="center" label="获得时间" prop="hdsj"
width="250px">
<template slot-scope="{row}">
<el-date-picker format="yyyy-MM-dd" readonly type="date"
v-model="row.hdsj"></el-date-picker>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="曾获荣誉" prop="shry">
<template slot-scope="{row}">
<el-input readonly v-model="row.shry"></el-input>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="附件" width="120px">
<template slot-scope="{row}">
<div @click="dd3s.download(row.filepath,row.filename)"
class="file-down-span">
<i class="el-icon-download"></i>
</div>
<el-image :src="'${AppFileDomain!}'+row.filepath" @click="dd3s.showpic(row.filepath)"
fit="cover"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(row.filepath)">
</el-image>
<el-image src="***"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-else>
<div class="image-slot" slot="error"
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.filename}}</span>
</div>
</el-image>
</template>
</el-table-column>
</el-table>
<template v-if="viewData.files&&viewData.files.length">
<vi-title title="身份证复印件"></vi-title>
<div style="text-align: left;">
@@ -209,7 +186,8 @@ layout("/layouts/platform.html"){
class="file-down-span">
<i class="el-icon-download"></i>
</div>
<el-image :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)"
<el-image :src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)"
fit="cover"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(item.filepath)">
@@ -230,10 +208,17 @@ display: -webkit-box;
</div>
</template>
<vi-title title="个人材料"></vi-title>
<file-upload :files="viewData.bmFiles"
:view="true"
v-if="viewData.bmFiles && viewData.bmFiles.length > 0"></file-upload>
<span v-else>暂无个人材料</span>
</el-form>
</el-row>
</template>
<custom-message @confirm="confirmMsg" ref="customMessage"></custom-message>
</guava>
@@ -275,6 +260,26 @@ display: -webkit-box;
}
},
methods: {
async confirmMsg(val) {
const confirm = await this.$confirm('确定要给报名人员发送消息吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const {
data,
code,
msg
} = await $.get(base + "/platform/zgfw/lxy/hdtj/openSendMessage", {hdid: this.pageForm.hdid, ...val})
if (code === 0) {
this.$message.success(msg)
this.$refs.customMessage.close()
} else {
this.$message.warning(msg)
}
}
},
doExport() {
let obj = this.lxyHd.find(o => {
return o.id === this.pageForm.hdid
@@ -327,7 +332,6 @@ display: -webkit-box;
return data
},
async openView(row) {
this.v = "view"
this.$refs.guava.view()
this.viewData = await this.getLxyBmInfo(row.id)
this.viewData.unitname = row.unitname
@@ -358,4 +362,4 @@ display: -webkit-box;
</script>
<!--#
}
#-->
#-->
@@ -2,35 +2,8 @@
layout("/layouts/platform.html"){
#-->
<style>
.w-e-text-container {
height: 250px !important;
}
.v-box .el-card__header {
padding: 5px 15px;
}
.el-select-dropdown {
z-index: 99999999 !important;
}
.el-loading-mask {
z-index: 99999999 !important;
}
.el-picker-panel {
z-index: 99999999 !important;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
.el-textarea__inner {
width: 600px;
text-align: center;
.viewFile {
height: 150px;
}
</style>
@@ -57,10 +30,10 @@ layout("/layouts/platform.html"){
</el-select>
</div>
<div class="btn-group tool-button mt5">
<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 clearable="true" filterable="true" placeholder="所属工会"
style="width: 100%;" v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
@@ -73,19 +46,20 @@ layout("/layouts/platform.html"){
<el-radio-button :label="2">已审核</el-radio-button>
<el-radio-button :label="3">未审核</el-radio-button>
</el-radio-group>
<el-button @click="yjTg" type="primary">一键通过</el-button>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<vi-title2 title="审核列表">
<template #func>
<el-button size="small" type="primary" @click="downLoadAll">
<el-button @click="yjTg" size="small" type="primary">一键通过</el-button>
<el-button @click="downLoadAll" size="small" type="primary">
一键下载材料
</el-button>
</template>
</vi-title2>
<el-table :data="ghTableData" @selection-change="handleSelectionChangeGh" @sort-change="pageOrder"
<el-table :data="ghTableData" @selection-change="handleSelectionChangeGh"
@sort-change="pageOrder"
ref="multipleTableGh" row-key="ghid"
style="width: 100%" v-loading="tabLoading">
@@ -109,7 +83,8 @@ layout("/layouts/platform.html"){
<el-table-column align="center" header-align="center" label="活动场地" prop="hdcd"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="联系人及联系方式" prop="fglyname"
<el-table-column align="center" header-align="center" label="联系人及联系方式"
prop="fglyname"
show-overflow-tooltip></el-table-column>
@@ -134,6 +109,9 @@ layout("/layouts/platform.html"){
<span style="color: tomato">{{scope.row.number}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="已报名成功人数"
prop="ysh">
</el-table-column>
<el-table-column align="center" header-align="center" label="审核状态" prop="dsh"
show-overflow-tooltip>
@@ -146,83 +124,92 @@ layout("/layouts/platform.html"){
<el-table-column align="center" header-align="center" label="报名人员" prop="username"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="120px">
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="120px">
<template scope="scope">
<el-button @click="openSh(scope.row)" plain size="mini" type="primary">查看人员</el-button>
<el-button @click="openSh(scope.row)" size="mini" type="primary">
查看人员
</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"
:total="pageForm.totalCount">
:page-sizes="[10, 20, 30, 50]"
:total="pageForm.totalCount"
@current-change="pageNumberChange"
@size-change="pageSizeChange"
layout="total, sizes, prev, pager, next">
</el-pagination>
</el-row>
</el-card>
<template #edit_func>
<el-button @click="sh(5)" size="small" type="primary">批量审核</el-button>
</template>
<template #edit>
<el-row justify="end" type="flex">
<el-button @click="sh(5)" plain type="primary">批量审核</el-button>
<!--<el-button type="danger" @click="sh(4)" plain>不通过</el-button>-->
</el-row>
<el-table :data="bmTableData" @selection-change="handleSelectionChange"
ref="multipleTableRy"
row-key="id"
style="width: 100%" tooltip-effect="dark">
<el-row class="el-table-container">
<el-table :data="bmTableData" @selection-change="handleSelectionChange" ref="multipleTableRy"
row-key="id"
style="width: 100%" tooltip-effect="dark">
<el-table-column :reserve-selection="true" :selectable='checkboxT' disabled
type="selection"
width="55"></el-table-column>
<el-table-column :reserve-selection="true" :selectable='checkboxT' disabled type="selection"
width="55"></el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex"
sortable width="80"></el-table-column>
<el-table-column align="center" header-align="center" label="年龄" prop="age"
sortable width="80"></el-table-column>
<el-table-column align="center" header-align="center" label="手机号码"
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="身份证号"
prop="idcard"></el-table-column>
<el-table-column align="center" header-align="center" label="获奖名称"
prop="zyhj"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="备注"
prop="bz"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
<template scope="scope">
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67C23A" v-if="scope.row.bmzt==5">报名成功</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="工号"
prop="loginname"></el-table-column>
<el-table-column align="center" header-align="center" label="姓名"
prop="username"></el-table-column>
<el-table-column align="center" header-align="center" label="性别" prop="sex"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="年龄" prop="age"
sortable></el-table-column>
<el-table-column align="center" header-align="center" label="联系电话"
prop="mobile"></el-table-column>
<el-table-column align="center" header-align="center" label="报名状态" prop="bmzt">
<template scope="scope">
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67C23A" v-if="scope.row.bmzt==5">报名成功</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</span>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="150px">
<template scope="{row}">
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="150px">
<template 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="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'Review',data:row}" :disabled="row.bmzt==5">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-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="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'Review',data:row}"
:disabled="row.bmzt==5">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@@ -237,9 +224,12 @@ layout("/layouts/platform.html"){
</el-row>
</template>
</guava>
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogSh" custom-class="ViewDialogClass"
<el-dialog :close-on-click-modal="false" :visible.sync="viewDialogSh"
custom-class="ViewDialogClass"
top="3%" width="60%">
<el-form label-position="right" label-width="120px" style="padding: 20px 0">
<vi-title title="个人信息"></vi-title>
@@ -284,55 +274,34 @@ layout("/layouts/platform.html"){
{{ viewData.mobile }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="身份证号:">
{{ viewData.idcard }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="获奖名称:">
{{ viewData.zyhj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注:">
{{ viewData.bz }}
</el-form-item>
</el-col>
</el-row>
<!-- <vi-title title="曾获荣誉"></vi-title>
<el-table :data="viewData.chry" show-header="false" size="mini" style="width: 100%">
<el-table-column align="center" header-align="center" label="获得时间" prop="hdsj"
width="250px">
<template slot-scope="{row}">
<el-date-picker format="yyyy-MM-dd" readonly type="date"
v-model="row.hdsj"></el-date-picker>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="曾获荣誉" prop="shry">
<template slot-scope="{row}">
<el-input readonly v-model="row.shry"></el-input>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="附件" width="120px">
<template slot-scope="{row}">
<div @click="dd3s.download(row.ryfj,row.ryfj)" class="file-down-span">
<i class="el-icon-download"></i>
</div>
<el-image :src="'${AppFileDomain!}'+row.ryfj" @click="dd3s.showpic(row.ryfj)"
fit="cover"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(row.ryfj)">
</el-image>
<el-image src="***"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-else>
<div class="image-slot" slot="error"
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.ryfj}}</span>
</div>
</el-image>
</template>
</el-table-column>
</el-table>-->
<template v-if="viewData.files&&viewData.files.length">
<vi-title title="身份证复印件"></vi-title>
<div style="text-align: left;">
<div style="display: inline-block;width: 100px;margin-right:10px"
v-for="item in viewData.files">
<div @click="dd3s.download(item.filepath,item.filename)" class="file-down-span">
<div @click="dd3s.download(item.filepath,item.filename)"
class="file-down-span">
<i class="el-icon-download"></i>
</div>
<el-image :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)"
<el-image :src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)"
fit="cover"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
v-if="dd3s.isPic(item.filepath)">
@@ -353,19 +322,19 @@ display: -webkit-box;
</div>
</template>
<vi-title title="个人材料" style="margin-top: 10px"></vi-title>
<vi-title style="margin-top: 10px" title="个人材料"></vi-title>
<el-descriptions :column="2" border>
<el-descriptions-item label="附件">
<file-upload v-if="viewData.bmFiles && viewData.bmFiles.length > 0"
:files="viewData.bmFiles"
:view="true"></file-upload>
<file-upload :files="viewData.bmFiles"
:view="true"
v-if="viewData.bmFiles && viewData.bmFiles.length > 0"></file-upload>
<span v-else>暂无个人材料</span>
</el-descriptions-item>
</el-descriptions>
</el-form>
<span class="dialog-footer" slot="footer" v-if="this.viewData.num==2">
<el-button type="danger" @click="grsh(4)" plain>不通过</el-button>
<el-button type="success" @click="grsh(5)" plain>通 过</el-button>
<el-button @click="grsh(4)" type="danger">不通过</el-button>
<el-button @click="grsh(5)" type="primary">通 过</el-button>
</span>
</el-dialog>
</div>
@@ -418,6 +387,7 @@ display: -webkit-box;
}
},
methods: {
downLoadAll() {
location.href = '/platform/zgfw/lxy/xghsh/downLoadAll?year=' + this.pageForm.year +
'&hdid=' + this.pageForm.hdid + '&searchKeyword=' + this.pageForm.searchKeyword +
@@ -497,13 +467,21 @@ display: -webkit-box;
}
}, "json");
},
yjTg() {
async yjTg() {
if (this.multipleSelectionGh.length == 0) {
this.$message({
message: '请选择工会!',
type: 'warning'
});
return
}
const confirm = await this.$confirm('确定要给报名人员发送消息吗', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
}
const loading = this.$loading({
lock: true,
@@ -515,22 +493,22 @@ display: -webkit-box;
this.multipleSelectionGh.map(v => {
arr.push({ghid: v.ghid, hdid: v.hdid})
})
$.post(base + "/platform/zgfw/lxy/xghsh/yjSh", {maps: JSON.stringify(arr)}, (data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.toggleSelectionGh()
this.openShGh({id: this.pageForm.hdid});
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
const data = await $.post(base + "/platform/zgfw/lxy/xghsh/yjSh", {maps: JSON.stringify(arr)})
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.toggleSelectionGh()
this.openShGh({id: this.pageForm.hdid});
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
loading.close()
},
sh(zt) {
if (this.multipleSelection.length == 0) {
@@ -38,6 +38,12 @@
.el-tabs__item {
color: rgb(120, 120, 120)
}
.ViewDialogClass .el-tabs__content{
height: calc(100vh - 350px);
overflow-y: scroll;
}
</style>
<div id="v-app" v-cloak>
<el-dialog
@@ -1,4 +1,4 @@
<el-table :data="viewData.mefp" size="medium" height="70vh">
<el-table :data="viewData.mefp" size="medium">
<el-table-column align="center" type="index" header-align="center"
label="序号"></el-table-column>
@@ -30,28 +30,29 @@
<template v-if="viewData.files&&viewData.files.length">
<vi-title title="附件"></vi-title>
<div style="text-align: left;">
<div v-for="item in viewData.files"
style="display: inline-block;width: 100px;margin-right:10px">
<div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">
<i class="el-icon-download"></i>
</div>
<el-image fit="cover" v-if="dd3s.isPic(item.filepath)"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
:src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">
</el-image>
<el-image v-else
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
src="***">
<div slot="error" class="image-slot"
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical">{{item.filename}}</span>
</div>
</el-image>
</div>
<file-upload :files="viewData.files" view></file-upload>
<!-- <div v-for="item in viewData.files"-->
<!-- style="display: inline-block;width: 100px;margin-right:10px">-->
<!-- <div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">-->
<!-- <i class="el-icon-download"></i>-->
<!-- </div>-->
<!-- <el-image fit="cover" v-if="dd3s.isPic(item.filepath)"-->
<!-- style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"-->
<!-- :src="'${AppFileDomain!}'+item.filepath" @click="dd3s.showpic(item.filepath)">-->
<!-- </el-image>-->
<!-- <el-image v-else-->
<!-- style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"-->
<!-- src="***">-->
<!-- <div slot="error" class="image-slot"-->
<!-- style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">-->
<!-- <span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;-->
<!--text-overflow: ellipsis;-->
<!--display: -webkit-box;-->
<!-- -webkit-line-clamp: 2;-->
<!-- -webkit-box-orient: vertical">{{item.filename}}</span>-->
<!-- </div>-->
<!-- </el-image>-->
<!-- </div>-->
</div>
</template>
</el-form>
@@ -0,0 +1,143 @@
<style>
.applyForm .el-row--flex .el-form-item {
flex: auto;
}
.descriptions-form .el-form-item {
margin-bottom: 0;
}
.disabled-group .el-radio {
pointer-events: none;
}
.nowrap-select-tag .el-select__tags {
flex-wrap: nowrap;
overflow: hidden;
}
.required-form-item::before {
content: '*';
color: #f56c6c;
margin-right: 3px;
}
.el-descriptions-item__label {
min-width: 180px;
}
.applyForm .el-table__empty-block {
background: unset;
min-height: 60px;
}
</style>
<div id="app2" v-cloak>
<guava>
<el-card shadow="never">
<template #header>
<h3 style="color: rgb(24, 103, 176);">信息登记</h3>
</template>
</el-card>
</guava>
</div>
<script>
const vue2 = new Vue({
el: '#app2',
data() {
return {
id: null,
sqxxOptions: [],
dj_znzsny_placeholder: "",
planstatus: {dj_znzsny: null},
AddFormData: {
csfile: [],
hkfile: []
},
rules: {},
loading: false,
userList: {},
hkfile: [],
csfile: [],
qmkffile: [],
znnameOptions: [],
currentYearSchoolPlans: []
}
},
computed: {
typeStatus() {
if (this.AddFormData.dj_djlx) {
return this.currentYearSchoolPlans.find(v => v.bmlx === this.AddFormData.dj_djlx)
}
return null
}
},
methods: {
async save() {
this.$refs['AddForm'].validateField(['dj_djlx'], async (err) => {
if (!err) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/save', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
sublime.jumpPagePjax('/platform/zgfw/rxdjxx')
} else {
this.$message.error(msg)
}
}
})
},
async submit() {
this.$refs['AddForm'].validate(async (valid) => {
if (valid) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/submit', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
sublime.jumpPagePjax('/platform/zgfw/rxdjxx')
} else {
this.$message.error(msg)
}
}
})
},
async adminSave() {
const {code, msg, data} = await $.post('/platform/zgfw/rxdj/sh/adminSave', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
$('#childrenSchoolUnionAuditModal').modal('hide');
vue.pageData()
} else {
this.$message.error(msg)
}
}
},
async created() {
if (this.id) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/findOne', {id: this.id})
if (code === 0) {
this.AddFormData = data
}
}
$.get('/platform/zgfw/rxdjsq/schoolPlans').then(resp => {
if (resp.code === 0) {
this.currentYearSchoolPlans = resp.data
}
})
},
})
</script>
@@ -5,77 +5,82 @@ layout("/layouts/platform.html"){
<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="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
:clearable="false"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
</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="search-item">
<div class="search-item-label">姓名:</div>
<div class="search-item-option">
<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>
<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="search-item">
<div class="search-item-label">登记类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.djlx"
code="childrenSchoolRegisterType"
style="width: 100%"
></dict-select>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}"
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>
<!-- <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>-->
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="登记列表">
<template #func>
<!-- <el-button size="mini" @click="exportSummary" type="primary">导出汇总表(word)</el-button>-->
<el-button size="mini"
@click="$refs.customMessage.open()"
type="primary"
icon="el-icon-s-promotion"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')||@shiro.hasRole('SchoolUnionZnrxAdmin')}"
>通知分工会主席审核
</el-button>
<el-button size="mini" @click="exportSummaryExcel" type="primary" icon="el-icon-download">
导出汇总表(excel)
</el-button>
<el-radio-group size="small" v-model="pageForm.isAudit" @change="doSearch"
class="ml10">
<el-radio-button :label="1">全部</el-radio-button>
@@ -84,83 +89,45 @@ layout("/layouts/platform.html"){
</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 :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
prop="jzgname"
label="教职工姓名"
:label="column.label"
:prop="column.prop"
:width="column.width"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="scope">
{{scope.row.jzgname}}
<template scope="scope" v-if="column.prop==='dj_djlx'">
<dict-tag :options="dict.type.childrenSchoolRegisterType"
:value="scope.row.dj_djlx"></dict-tag>
</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}">
<template scope="{row}" v-else-if="column.prop==='stateName'">
<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 size="mini" @click="openView(row)" type="primary">查看
</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"
<!--<el-button v-if="[5300,5115,5118,5200].includes(row.dj_sqzt)" size="mini"
type="danger"
@click="ch(row)">
撤回
</el-button>
</el-button>-->
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@@ -193,11 +160,10 @@ layout("/layouts/platform.html"){
rows="5"></el-input>
</el-form-item>
</el-form>
<el-row class="mt20 text-center">
<el-row class="mt20" type="flex" justify="end">
<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-button type="primary" @click="doHandle(5300)">通 过</el-button>
</el-row>
</el-tab-pane>
</template>
@@ -207,15 +173,18 @@ layout("/layouts/platform.html"){
<template #view>
<rxdj-info ref="viewInfo"></rxdj-info>
</template>
<custom-message ref="customMessage" @confirm="confirmMsgBranchUnionAudit"></custom-message>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
dicts: ['childrenSchoolRegisterType'],
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue'),
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue?v=' + new Date().getTime()),
},
data() {
return {
@@ -229,12 +198,64 @@ layout("/layouts/platform.html"){
smm: {status: 'table', id: ''},
tableData: [],
formData: {},
fghAuditTabName: 'fghAuditTabName'
fghAuditTabName: 'fghAuditTabName',
tableColumns: [
{label: '登记类型', prop: 'dj_djlx'},
{label: '教职工姓名', prop: 'dj_xm'},
{label: '工号', prop: 'dj_gzh'},
{label: '单位', prop: 'dj_szdw'},
{label: '子女姓名', prop: 'dj_znname'},
{label: '子女出生年月', prop: 'dj_znzsny'},
{label: '手机号', prop: 'dj_iphone'},
{label: '填报日期', prop: 'dj_tbrq'},
{label: '审核状态', prop: 'stateName'},
]
}
},
methods: {
exportSummary() {
const {year, djlx} = this.pageForm
if (!year) {
this.$message.warning('请选择导出的年份')
return
}
if (!djlx) {
this.$message.warning('请选择导出的登记类型')
return
}
this.$confirm('此表请导出盖章后交至校工会办公室(行政楼A426)。', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
window.open('/platform/zgfw/rxdj/sh/exportSummary?year=' + year + '&djlx=' + djlx)
}).catch(() => {
});
},
exportSummaryExcel() {
const {year, djlx} = this.pageForm
if (!year) {
this.$message.warning('请选择导出的年份')
return
}
if (!djlx) {
this.$message.warning('请选择导出的登记类型')
return
}
this.$confirm('此表请导出盖章后交至校工会办公室(行政楼A426)。', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
window.open('/platform/zgfw/rxdj/sh/exportSummaryExcel?year=' + year + '&djlx=' + djlx)
}).catch(() => {
});
},
pageData: function () {
sublime.showLoadingbar()
$.post(base + '/platform/zgfw/rxdj/sh/pageData', this.pageForm).then(res => {
sublime.closeLoadingbar()
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
})
@@ -254,7 +275,7 @@ layout("/layouts/platform.html"){
this.$message.warning("请填写审核信息")
return
}
let title = s === 5200 ? "通过" : s === 5115 ? "拒绝" : "退回"
let title = s === 5300 ? "通过" : s === 5115 ? "拒绝" : "退回"
const confirm = await this.$confirm('确认要' + title + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -264,9 +285,11 @@ layout("/layouts/platform.html"){
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.$message.success(resp.msg)
this.$refs.guava.index()
this.pageData()
} else {
this.$message.error(resp.msg)
}
}
},
@@ -296,6 +319,33 @@ layout("/layouts/platform.html"){
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
//通知分工会主席审核
confirmMsgBranchUnionAudit(val) {
this.$confirm('您确定将以短信通知未审核的分工会吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const {
data,
code,
msg
} = await $.post('/platform/zgfw/rxdj/sh/confirmMsgBranchUnionAudit', {
year: this.pageForm.year,
...val
})
if (code === 0) {
this.$message.success(msg)
this.$refs.customMessage.close()
} else {
this.$message.warning(msg)
}
}).catch(() => {
})
}
},
async created() {
this.pageData()
@@ -307,4 +357,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->
@@ -2,10 +2,6 @@
layout("/mobile/platform.html"){
#-->
<style>
[v-clock] {
display: none
}
html, body {
height: 100%;
width: 100%;
@@ -144,628 +140,252 @@ layout("/mobile/platform.html"){
</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>
<van-nav-bar
title="入学登记"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
safe-area-inset-top
></van-nav-bar>
<!-- <van-nav-bar title="入学登记" fixed placeholder safe-area-inset-top-->
<!-- @click-left="history.go(-1)"></van-nav-bar>-->
<div>
<van-image
width="100%"
height="200px"
fit="cover"
src="/assets/mobile/img/school_apply_bg.webp"
/>
></van-image>
</div>
<van-form label-width="120" colon style="margin-top: 10px;"
@submit="doSubmit"
input-align="right" ref="form">
<van-tabs v-model="checked" color="#004e64" type="card">
<van-tab name="1" title="基础信息">
<van-cell-group>
<van-field readonly
v-model="formData.dj_xm"
name="dj_xm"
label="姓名"
></van-field>
<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
v-model="formData.dj_zc"
name="dj_zc"
label="职称"
maxlength="20"
:rules="[{ required: true, message: '请填写职称' }]"
placeholder="职称"
></van-field>
<van-field
required
v-model="formData.dj_xl"
name="dj_xl"
label="学历"
maxlength="20"
:rules="[{ required: true, message: '请填写学历' }]"
placeholder="学历"
></van-field>
<van-field
required
v-model="formData.dj_jtzz"
name="dj_jtzz"
label="家庭住址"
maxlength="50"
:rules="[{ required: true, message: '请填写家庭住址' }]"
placeholder="家庭住址"
></van-field>
<van-field
required
v-model="formData.dj_hjszd"
name="dj_hjszd"
label="户口所在地"
maxlength="50"
:rules="[{ required: true, message: '请填写户口所在地' }]"
placeholder="户口所在地"
></van-field>
<van-field
required
v-model="formData.dj_hjssxq"
name="dj_hjssxq"
label="户口所在地派出所"
maxlength="50"
:rules="[{ required: true, message: '请填写户口所在地派出所' }]"
placeholder="户口所在地派出所"
></van-field>
<van-field
required
v-model="formData.dj_iphone"
name="dj_iphone"
label="联系电话"
maxlength="11"
placeholder="联系电话"
:rules="[{ required: true, message: '请填写联系电话' }]"
></van-field>
<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 name="isCollectiveHouseholds" required
placeholder="是否集体户" label="是否集体户">
<template #input>
<van-radio-group v-model="formData.isCollectiveHouseholds" direction="horizontal">
<van-radio :name="true">是</van-radio>
<van-radio :name="false">否</van-radio>
</van-radio-group>
</template>
</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
required
v-model="formData.dj_znname"
name="dj_znname"
label="子女姓名"
maxlength="20"
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')"
@confirm="birthdayConfirm"
@cancel="birthdayShowPicker = false"
></van-datetime-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-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;" v-if="!isExist">
<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-field
v-model="formData.dj_bz"
name="dj_wxqyy"
label="备&emsp;&emsp;注"
rows="2"
autosize
type="textarea"
placeholder="请输入备注"
></van-field>-->
</van-cell-group>
<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="24">
<van-button round block color="#004e64" type="info"
native-type="submit">
提交
</van-button>
</van-col>
</van-row>
</div>
</van-form>
</div>
<script>
const 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: [],
id: GetQueryString("id"),
djlx: GetQueryString("dj_djlx"),
formData: {},
isNull: function (val) {
if (val == null || val == undefined || val == '') {
return true
}
return false
},
showMsg: false,
msg: '',
currentYearSchoolPlans: [],
checked: '1',
dj_znsexShowPicker: false,
sexArr: ['男', '女'],
birthdayShowPicker: false,
nlxz: '',
isExist: true,
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
computed: {
typeStatus() {
if (this.AddFormData.dj_djlx) {
return this.currentYearSchoolPlans.find(v => v.bmlx === this.AddFormData.dj_djlx)
}
return null
}
},
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 "输入工资号后自动匹配"
async doSubmit() {
this.formData.dj_djlx = this.djlx
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/submit', {
info: JSON.stringify(this.formData)
})
if (code === 0) {
this.$modal.msgSuccess(msg)
location.href='/platform/zgfw/mobile/rxdj/apply'
} else {
if (this.isNull(formData[key])) {
return '暂无'
}
return formData[key]
this.$modal.msgError(msg)
}
},
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")
const data = this.planList.find(v => v.bmlx === dj_djlx)
if (data) {
const isExist = await getScopeUser(data.activityGroupId)
this.isExist = isExist
if (!isExist) {
vant.Dialog.alert({
title: '温馨提示',
message: "您不在报名范围中",
confirmButtonColor: '#1867b0'
})
return
if (this.id) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/findOne', {id: this.id})
if (code === 0) {
this.formData = data
}
} else {
this.isExist = true
vant.Dialog.alert({
title: '温馨提示',
message: "您不在报名范围中",
confirmButtonColor: '#1867b0'
})
return
this.$set(this.formData, 'dj_jzgid', "${@shiro.getPrincipalProperty('id')}")
this.$set(this.formData, 'dj_gzh', "${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.formData, 'dj_szdwid', "${@shiro.getPrincipalProperty('unit').getId()}")
this.$set(this.formData, 'dj_szdw', "${@shiro.getPrincipalProperty('unit').getName()}")
this.$set(this.formData, 'dj_szfghid', "${@shiro.getPrincipalProperty('union').getId()}")
this.$set(this.formData, 'dj_szfgh', "${@shiro.getPrincipalProperty('union').getUnionname()}")
this.$set(this.formData, 'dj_zc', "${@shiro.getPrincipalProperty('jobTitle')}")
this.$set(this.formData, 'dj_xm', "${@shiro.getPrincipalProperty('username')}")
this.$set(this.formData, 'dj_xl', "${@shiro.getPrincipalProperty('education')}")
this.$set(this.formData, 'dj_jtzz', "${@shiro.getPrincipalProperty('homeAddress')}")
this.$set(this.formData, 'dj_iphone', "${@shiro.getPrincipalProperty('mobile')}")
}
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
$.get('/platform/zgfw/rxdjsq/schoolPlans').then(resp => {
if (resp.code === 0) {
this.currentYearSchoolPlans = resp.data
}
})
}
})
@@ -15,10 +15,10 @@ layout("/layouts/platform.html"){
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>
<dict-select v-model="pageForm.bmlx"
code="childrenSchoolRegisterType"
style="width: 100%"
></dict-select>
</div>
<div class="btn-group tool-button">
<el-button icon="el-icon-search" type="primary" @click="doSearch"></el-button>
@@ -43,8 +43,10 @@ layout("/layouts/platform.html"){
align="center"></el-table-column>
<el-table-column label="登记类型" prop="bmlx" header-align="center" align="center">
<template slot-scope="scope">
<dict-tag :options="dict.type.childrenSchoolRegisterType"
:value="scope.row.bmlx"></dict-tag>
<!-- <span v-if="scope.row.bmlx==1">幼升小</span>-->
<span v-if="scope.row.bmlx==2">小学</span>
<!--<span v-if="scope.row.bmlx==2">小学</span>-->
<!-- <span v-if="scope.row.bmlx==3">初升高</span>-->
</template>
</el-table-column>
@@ -83,44 +85,44 @@ layout("/layouts/platform.html"){
</el-card>
</guava>
<el-dialog :visible.sync="addDialogVisible" title="创建计划" width="60%">
<el-dialog :visible.sync="addDialogVisible" title="创建计划" width="40%">
<el-form :model="AddFormData" ref="AddForm" label-width="150px" :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>
<dict-select v-model="AddFormData.bmlx"
code="childrenSchoolRegisterType"
style="width: 220px"
></dict-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 prop="activityGroupId" label="可报名人员范围">-->
<!-- <div style="display: flex; justify-content: space-between">-->
<!-- <div>-->
<!-- <el-select prop="groupId" placeholder="参加人员范围"-->
<!-- v-model="AddFormData.activityGroupId"-->
<!-- clearable-->
<!-- filterable>-->
<!-- <el-option v-for="item in activityGroupList"-->
<!-- :label="item.groupName"-->
<!-- :value="item.groupId"></el-option>-->
<!-- </el-select>-->
<!-- <el-button-->
<!-- @click="$refs.drawerUserScope.userScopeDialog = true"-->
<!-- type="primary">设置-->
<!-- </el-button>-->
<!-- </div>-->
<!-- </div>-->
<!-- <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 prop="activityGroupId" label="可报名人员范围">-->
<!-- <div style="display: flex; justify-content: space-between">-->
<!-- <div>-->
<!-- <el-select prop="groupId" placeholder="参加人员范围"-->
<!-- v-model="AddFormData.activityGroupId"-->
<!-- clearable-->
<!-- filterable>-->
<!-- <el-option v-for="item in activityGroupList"-->
<!-- :label="item.groupName"-->
<!-- :value="item.groupId"></el-option>-->
<!-- </el-select>-->
<!-- <el-button-->
<!-- @click="$refs.drawerUserScope.userScopeDialog = true"-->
<!-- type="primary">设置-->
<!-- </el-button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </el-form-item>-->
<el-form-item label="报名时间" prop="bmsj">
<el-date-picker
v-model="AddFormData.bmsj"
@@ -133,6 +135,13 @@ layout("/layouts/platform.html"){
</el-date-picker>
</el-form-item>
<el-form-item label="上传附件" prop="needFiles">
<el-radio-group v-model="AddFormData.needFiles" size="small">
<el-radio :label="true" border>需要</el-radio>
<el-radio :label="false" border>不需要</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="开启状态">
<el-switch v-model="AddFormData.bmkqzt"
active-color="#13ce66"
@@ -147,45 +156,45 @@ layout("/layouts/platform.html"){
</el-dialog>
<el-dialog :visible.sync="editDialogVisible" title="编辑计划" width="60%">
<el-dialog :visible.sync="editDialogVisible" title="编辑计划" width="40%">
<el-form :model="EditFormData" ref="EditForm" label-width="150px" :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>
<dict-select v-model="EditFormData.bmlx"
code="childrenSchoolRegisterType"
style="width: 220px"
></dict-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 prop="activityGroupId" label="可报名人员范围">-->
<!-- <div style="display: flex; justify-content: space-between">-->
<!-- <div>-->
<!-- <el-select prop="groupId" placeholder="参加人员范围"-->
<!-- v-model="EditFormData.activityGroupId"-->
<!-- clearable-->
<!-- filterable>-->
<!-- <el-option v-for="item in activityGroupList"-->
<!-- :label="item.groupName"-->
<!-- :value="item.groupId"></el-option>-->
<!-- </el-select>-->
<!-- <el-button-->
<!-- @click="$refs.drawerUserScope.userScopeDialog = true"-->
<!-- type="primary">设置-->
<!-- </el-button>-->
<!-- </div>-->
<!-- </div>-->
<!-- <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 prop="activityGroupId" label="可报名人员范围">-->
<!-- <div style="display: flex; justify-content: space-between">-->
<!-- <div>-->
<!-- <el-select prop="groupId" placeholder="参加人员范围"-->
<!-- v-model="EditFormData.activityGroupId"-->
<!-- clearable-->
<!-- filterable>-->
<!-- <el-option v-for="item in activityGroupList"-->
<!-- :label="item.groupName"-->
<!-- :value="item.groupId"></el-option>-->
<!-- </el-select>-->
<!-- <el-button-->
<!-- @click="$refs.drawerUserScope.userScopeDialog = true"-->
<!-- type="primary">设置-->
<!-- </el-button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </el-form-item>-->
<el-form-item label="报名时间" prop="bmsj">
<el-date-picker
v-model="EditFormData.bmsj"
@@ -198,6 +207,13 @@ layout("/layouts/platform.html"){
</el-date-picker>
</el-form-item>
<el-form-item label="上传附件" prop="needFiles">
<el-radio-group v-model="EditFormData.needFiles" size="small">
<el-radio :label="true" border>需要</el-radio>
<el-radio :label="false" border>不需要</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="开启状态">
<el-switch v-model="EditFormData.bmkqzt"
active-color="#13ce66"
@@ -223,6 +239,7 @@ layout("/layouts/platform.html"){
<script>
let vue = new Vue({
el: '#app',
dicts: ['childrenSchoolRegisterType'],
data() {
return {
activityGroupList: [],
@@ -245,6 +262,7 @@ layout("/layouts/platform.html"){
bmyear: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bmlx: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bmsj: [{required: true, message: '必填', trigger: ['blur', 'change']}],
needFiles: [{required: true, message: '必填', trigger: ['blur', 'change']}]
},
EditFormData: {},
editDialogVisible: false,
@@ -2,7 +2,37 @@
layout("/layouts/platform.html"){
#-->
<style>
.applyForm .el-row--flex .el-form-item {
flex: auto;
}
.descriptions-form .el-form-item {
margin-bottom: 0;
}
.disabled-group .el-radio {
pointer-events: none;
}
.nowrap-select-tag .el-select__tags {
flex-wrap: nowrap;
overflow: hidden;
}
.required-form-item::before {
content: '*';
color: #f56c6c;
margin-right: 3px;
}
.el-descriptions-item__label {
min-width: 180px;
}
.applyForm .el-table__empty-block {
background: unset;
min-height: 60px;
}
</style>
<div id="app" v-cloak>
<guava>
@@ -10,513 +40,165 @@ layout("/layouts/platform.html"){
<template #header>
<h3 style="color: rgb(24, 103, 176);">信息登记</h3>
</template>
<el-form :model="AddFormData" :rules="rules" ref="AddForm" label-width="180px">
<vi-title title="登记类型"></vi-title>
<el-form :model="AddFormData"
:rules="rules"
ref="AddForm"
class="applyForm"
label-width="0">
<el-form-item label="登记类型" prop="dj_djlx">
<!-- <el-radio :disabled="planstatus.yey==0"
v-model="AddFormData.dj_djlx"
label="1">
幼升小
</el-radio>-->
<el-radio :disabled="planstatus.xx==0"
border
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-descriptions border class="descriptions-form">
<el-descriptions-item label="登记类型" :span="3">
<el-form-item label-width="0" prop="dj_djlx"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.dj_djlx" size="small">
<el-radio v-for="item in currentYearSchoolPlans"
:key="item.id"
:label="item.bmlx"
:disabled="!item.bmkqzt"
border>
<span v-if="item.bmlx==1">
幼儿园({{item.bmkssj + '至' + item.bmjssj}})
</span>
<span v-else-if="item.bmlx==2">
小学({{item.bmkssj + '至' + item.bmjssj}})
</span>
<span v-else-if="item.bmlx==3">
其他({{item.bmkssj + '至' + item.bmjssj}})
</span>
</el-radio>
</el-radio-group>
</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-descriptions-item>
<el-descriptions-item label="青年教职工姓名">
<el-form-item label-width="0" prop="dj_xm">
<el-input clearable v-model="AddFormData.dj_xm"
disabled
placeholder="青年教职工姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号">
<el-input v-model="AddFormData.dj_gzh" readonly></el-input>
</el-descriptions-item>
<el-descriptions-item label="职称">
<el-form-item label-width="0" prop="dj_zc"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input clearable v-model="AddFormData.dj_zc"
max="20"
placeholder="职称"></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-descriptions-item>
<el-descriptions-item label="学历"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-form-item label-width="0" prop="dj_xl">
<el-input clearable v-model="AddFormData.dj_xl"
max="20"
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-descriptions-item>
<!--<el-col :span="12">
<el-form-item label="技术职称" prop="dj_zc">
<el-input clearable v-model="AddFormData.dj_zc" placeholder="技术职称"></el-input>
<el-descriptions-item label="青年教职工家庭住址" :span="3">
<el-form-item label-width="0" prop="dj_jtzz"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_jtzz" max="50"
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-descriptions-item>
<el-descriptions-item label="户口所在地" :span="3">
<el-form-item label-width="0" prop="dj_hjszd"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_hjszd" max="50"
placeholder="请填写户口所在地"
></el-input>
</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-descriptions-item>
<el-descriptions-item label="户口所在地派出所" :span="3">
<el-form-item label-width="0" prop="dj_hjssxq"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_hjssxq" max="50"
placeholder="请填写户口所在地派出所"
></el-input>
</el-form-item>
&lt;!&ndash; <el-form-item label="行政职务级别" prop="dj_zw">
</el-descriptions-item>
<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-descriptions-item label="联系电话">
<el-form-item label-width="0" prop="dj_iphone"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_iphone" max="11"
placeholder="请填写联系电话"></el-input>
</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-descriptions-item>
<el-descriptions-item label="是否集体户">
<el-form-item label-width="0" prop="isCollectiveHouseholds"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.isCollectiveHouseholds" size="small">
<el-radio :label="true" border>是</el-radio>
<el-radio :label="false" border>否</el-radio>
</el-radio-group>
</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-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="子女姓名">
<el-form-item label-width="0" prop="dj_znname"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_znname" max="30"
placeholder="请填写子女姓名"
></el-input>
</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-descriptions-item>
<el-descriptions-item label="子女性别">
<el-form-item label-width="0" prop="dj_znsex"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.dj_znsex" size="small">
<el-radio label="男" border>男</el-radio>
<el-radio label="女" border>女</el-radio>
</el-radio-group>
</el-form-item>
</el-col>-->
</el-descriptions-item>
<el-col :span="12">
<el-form-item label="手机号码" prop="dj_iphone">
<el-input clearable v-model="AddFormData.dj_iphone"></el-input>
<el-descriptions-item label="子女出生年月">
<el-form-item label-width="0" prop="dj_znzsny"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker v-model="AddFormData.dj_znzsny"
placeholder="请选择子女出生年月"
value-format="yyyy-MM-dd"
></el-date-picker>
</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-descriptions-item>
<el-descriptions-item label="附件" v-if="uploadFileShow">
<el-form-item label-width="0" prop="files"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<file-upload :files.sync="AddFormData.files"></file-upload>
</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-descriptions-item>
</el-descriptions>
</el-form>
<el-row style="text-align: right;" v-if="!isExist">
<el-button type="primary" @click="doAdd(false)"
<el-row type="flex" justify="end" class="mt20" v-if="!isExist">
<el-button type="primary" @click="save"
plain
:disabled="planstatus.yey==0&&planstatus.xx==0&&planstatus.cz==0">保 存
: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 type="primary" @click="submit"
:disabled="planstatus.yey==0&&planstatus.xx==0&&planstatus.cz==0">
提交
</el-button>
</el-row>
</el-card>
</guava>
</div>
<script>
let vue = new Vue({
const 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: [],
id: GetQueryString("id"),
sqxxOptions: [],
dj_znzsny_placeholder: "",
planstatus: {dj_znzsny: null},
@@ -524,240 +206,94 @@ layout("/layouts/platform.html"){
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_djlx: [{required: true, trigger: ['blur', 'change'], message: '必选'}],
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: '请选择工作单位起始时间'
}],
},
rules: {},
loading: false,
userList: {},
hkfile: [],
csfile: [],
qmkffile: [],
znnameOptions: [],
isExist: false
isExist: false,
currentYearSchoolPlans: []
}
},
methods: {
async clickRadio(val) {
this.$set(this.AddFormData, "dj_znname", null)
this.$set(this.AddFormData, "dj_znzsny", null)
const data = this.planList.find(v => v.id === val)
// if (data) {
// const isExist = await getScopeUser(data.activityGroupId)
// this.isExist = isExist
// if (!isExist) {
// this.$alert('您不在报名范围中', '温馨提示', {
// confirmButtonText: '确定',
// callback: action => {
//
// }
// });
// return
// }
// } else {
// this.isExist = true
// this.$alert('您不在报名范围中', '温馨提示', {
// confirmButtonText: '确定',
// callback: action => {
//
// }
// });
// return
// }
computed: {
typeStatus() {
if (this.AddFormData.dj_djlx) {
return this.currentYearSchoolPlans.find(v => v.bmlx === this.AddFormData.dj_djlx)
}
return 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()
uploadFileShow() {
if (this.AddFormData.dj_djlx) {
return this.currentYearSchoolPlans.find(v => v.bmlx === this.AddFormData.dj_djlx)?.needFiles
}
if (!this.AddFormData.dj_djlx) {
this.$message.info('请选择登记类型')
return
}
if (this.planList.find(v => v.bmlx === this.AddFormData.dj_djlx).nlxz) {
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"
})
return false
}
},
methods: {
async save() {
this.$refs['AddForm'].validateField(['dj_djlx'], async (err) => {
if (!err) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/save', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
sublime.jumpPagePjax('/platform/zgfw/rxdjxx')
} else {
this.$message.error(msg)
}
}
})
},
async submit() {
this.$refs['AddForm'].validate(async (valid) => {
if (valid) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/submit', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
sublime.jumpPagePjax('/platform/zgfw/rxdjxx')
} else {
this.$message.error(msg)
}
}
})
},
},
async created() {
if (this.id) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/findOne', {id: this.id})
if (code === 0) {
this.AddFormData = data
}
await this.getPlanStatus()
await this.getPlanByThisYear()
await this.getZnxxByJzgId()
const id = GetQueryString("id")
if (id) {
await this.findOne(id)
} else {
this.$set(this.AddFormData, 'dj_jzgid', "${@shiro.getPrincipalProperty('id')}")
this.$set(this.AddFormData, 'dj_gzh', "${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.AddFormData, 'dj_szdwid', "${@shiro.getPrincipalProperty('unit').getId()}")
this.$set(this.AddFormData, 'dj_szdw', "${@shiro.getPrincipalProperty('unit').getName()}")
this.$set(this.AddFormData, 'dj_szfghid', "${@shiro.getPrincipalProperty('union').getId()}")
this.$set(this.AddFormData, 'dj_szfgh', "${@shiro.getPrincipalProperty('union').getUnionname()}")
this.$set(this.AddFormData, 'dj_zc', "${@shiro.getPrincipalProperty('jobTitle')}")
this.$set(this.AddFormData, 'dj_xm', "${@shiro.getPrincipalProperty('username')}")
this.$set(this.AddFormData, 'dj_xl', "${@shiro.getPrincipalProperty('education')}")
this.$set(this.AddFormData, 'dj_jtzz', "${@shiro.getPrincipalProperty('homeAddress')}")
this.$set(this.AddFormData, 'dj_iphone', "${@shiro.getPrincipalProperty('mobile')}")
}
await this.init()
await this.userChange("${@shiro.getPrincipalProperty('id')}")
$.get('/platform/zgfw/rxdjsq/schoolPlans').then(resp => {
if (resp.code === 0) {
this.currentYearSchoolPlans = resp.data
}
})
},
})
@@ -8,127 +8,82 @@ layout("/layouts/platform.html"){
<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="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
type="year"
:clearable="false"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
</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="search-item">
<div class="search-item-label">姓名:</div>
<div class="search-item-option">
<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="dj_xm"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
<div class="search-item">
<div class="search-item-label">登记类型:</div>
<div class="search-item-option">
<dict-select v-model="pageForm.djlx"
code="childrenSchoolRegisterType"
style="width: 100%"
></dict-select>
</div>
</div>
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}"
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
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>
<el-button type="primary" @click="doExportExcel" size="small">导出汇总表</el-button>
<el-button type="primary" @click="doExportEnclosure" 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 :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
prop="jzgname"
label="教职工姓名"
:label="column.label"
:prop="column.prop"
:width="column.width"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="scope">
{{scope.row.jzgname}}
<template scope="scope" v-if="column.prop==='dj_djlx'">
<dict-tag :options="dict.type.childrenSchoolRegisterType"
:value="scope.row.dj_djlx"></dict-tag>
</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}">
<template scope="{row}" v-else-if="column.prop==='stateName'">
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
</template>
</el-table-column>
<el-table-column
label="操作">
<el-table-column label="操作">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
@@ -144,8 +99,8 @@ layout("/layouts/platform.html"){
编辑
</el-dropdown-item>
<el-dropdown-item
v-if="[5115,5118,5215,5218].includes(row.dj_sqzt)"
:disabled="!([5115,5118,5215,5218].includes(row.dj_sqzt))"
v-if="[5118,5218].includes(row.dj_sqzt)"
:disabled="!([5118,5218].includes(row.dj_sqzt))"
:command="{action:openEdit,value:row}">
重新提交
</el-dropdown-item>
@@ -163,7 +118,6 @@ layout("/layouts/platform.html"){
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
@@ -192,25 +146,56 @@ layout("/layouts/platform.html"){
let vue = new Vue({
el: '#app',
dicts: ['childrenSchoolRegisterType'],
mixins: [initTableMixins],
components: {
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue?v=1.0.0'),
'rxdj-info': httpVueLoader('/components/zgfw/rxdj/rxdj.vue?v=' + new Date().getTime()),
},
data() {
return {
dj_znzsny_placeholder: "",
unions: [],
units: [],
pageForm: {
year: moment().format('YYYY')
year: moment().format('YYYY'),
searchName: '',
searchKeyword: '',
djlx: ''
},
planstatus: {},
tableData: [],
sfkq: {},
tableColumns: [
{label: '登记类型', prop: 'dj_djlx'},
{label: '教职工姓名', prop: 'dj_xm'},
{label: '工号', prop: 'dj_gzh'},
{label: '单位', prop: 'dj_szdw'},
{label: '子女姓名', prop: 'dj_znname'},
{label: '子女出生年月', prop: 'dj_znzsny'},
{label: '手机号', prop: 'dj_iphone'},
{label: '填报日期', prop: 'dj_tbrq'},
{label: '审核状态', prop: 'stateName'},
]
}
},
methods: {
doExportExcel() {
const {year, djlx, searchName, searchKeyword} = this.pageForm
window.open(loc() + '/doExportExcel?year=' + year + '&djlx=' + djlx + '&searchName='
+ searchName + '&searchKeyword=' + searchKeyword)
},
async doExportEnclosure() {
const resp = await $.get(loc() + '/hasFiles')
if (resp.code === 0){
const {year, djlx, searchName, searchKeyword} = this.pageForm
window.open(loc() + '/doExportEnclosure?year=' + year + '&djlx=' + djlx + '&searchName='
+ searchName + '&searchKeyword=' + searchKeyword)
} else {
this.$message.warning('所有填报信息中全无附件,无法导出')
}
},
dropdownCommand({action, value}) {
if (action) action(value)
},
File diff suppressed because it is too large Load Diff
@@ -8,7 +8,7 @@ layout("/layouts/platform.html"){
}
</style>
<div class="platform" id="app" v-cloak>
<div id="app" class="platform" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
@@ -17,46 +17,43 @@ layout("/layouts/platform.html"){
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
@change="doSearch"
placeholder="选择年"
style="width: 100%" type="year"
v-model="pageForm.year" value-format="yyyy">
v-model="pageForm.year"
type="year"
value-format="yyyy" style="width: 100%"
placeholder="选择年" @change="doSearch">
</el-date-picker>
</div>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="申请列表">
<el-card shadow="never" class="mt10">
<table-tool label="申请列表" :app="this">
<template #func>
<el-button @click="openAdd" icon="el-icon-s-promotion" size="small"
type="primary">上报
<el-button icon="el-icon-s-promotion" type="primary" size="small"
@click="openAdd">上报
</el-button>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table"
ref="table" row-key="id"
style="width: 100%" v-loading="tableLoading">
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading" ref="table"
:size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" label="序号" type="index"
width="80px">
<el-table-column align="center" header-align="center" width="80px" label="序号" type="index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span></template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
>
<!-- <template v-if="column.prop=='shjg'" scope="{row:{shjg}}">-->
<!-- <el-tag v-if="shjg=='1'" type="warning">待基层工会审核</el-tag>-->
@@ -67,8 +64,7 @@ layout("/layouts/platform.html"){
<!-- </template>-->
</el-table-column>
<el-table-column align="center" header-align="center" label="操作"
prop="userOnline"
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="100px">
<template scope="scope">
<el-dropdown @command="dropdownCommand">
@@ -81,7 +77,7 @@ layout("/layouts/platform.html"){
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'edit',data:scope.row}"
:disabled="![100,300,200].includes(scope.row.state)">
:disabled="![100,300].includes(scope.row.state)">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:scope.row}"
@@ -101,102 +97,100 @@ layout("/layouts/platform.html"){
<div style="margin-bottom: 50px">
<h3 style="color: rgb(24, 103, 176);margin: 0;text-align: center">填写申请信息</h3>
</div>
<el-form :model="formData" :rules="formRules" label-width="86px" ref="form">
<el-form :model="formData" ref="form" :rules="formRules" label-width="86px">
<el-row gutter="60">
<el-col :span="12">
<el-form-item label="工&emsp;&emsp;号">
<el-input auto-complete="off" disabled
maxlength="100"
placeholder="工号" style="width: 100%;"
tabindex="4" type="text" v-model="formData.loginname"></el-input>
<el-input maxlength="100" placeholder="工号"
disabled
v-model="formData.loginname" style="width: 100%;"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职工姓名">
<el-input auto-complete="off" disabled
maxlength="100"
placeholder="职工姓名" style="width: 100%;"
tabindex="4" type="text" v-model="formData.username"></el-input>
<el-input maxlength="100" placeholder="职工姓名"
disabled
v-model="formData.username" style="width: 100%;"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单&emsp;&emsp;位">
<el-input auto-complete="off" disabled
maxlength="100"
placeholder="所属单位" style="width: 100%;"
tabindex="4" type="text" v-model="formData.dwname"></el-input>
<el-input maxlength="100" placeholder="所属单位"
disabled
v-model="formData.dwname" style="width: 100%;"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="基层工会">
<el-input auto-complete="off" disabled
maxlength="100"
placeholder="所属基层工会" style="width: 100%;"
tabindex="4" type="text" v-model="formData.unionname"></el-input>
<el-input maxlength="100" placeholder="所属基层工会"
disabled
v-model="formData.unionname" style="width: 100%;"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="入职时间" prop="rzsj">
<el-date-picker format="yyyy-MM-dd" placeholder="请输入职时间"
style="width: 100%;"
v-model="formData.rzsj" value-format="yyyy-MM-dd">
<el-date-picker v-model="formData.rzsj" value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
style="width: 100%;" placeholder="请输入职时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="子女姓名" prop="name">
<el-input @change="childNameChange" auto-complete="off"
maxlength="100"
placeholder="请填写子女姓名" style="width: 100%;"
tabindex="4" type="text" v-model="formData.name"></el-input>
<el-input maxlength="100" placeholder="请填写子女姓名"
@change="childNameChange"
v-model="formData.name" style="width: 100%;"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="is-required" label="子女性别" prop="sex">
<el-radio border label="男" style="margin-right: 60px;"
v-model="formData.sex">男
<el-form-item label="子女性别" class="is-required" prop="sex">
<el-radio v-model="formData.sex" label="男" style="margin-right: 60px;" border>男
</el-radio>
<el-radio border label="女" v-model="formData.sex">女</el-radio>
<el-radio v-model="formData.sex" label="女" border>女</el-radio>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办证时间" prop="bzsj">
<el-date-picker
:picker-options="pickerOptions"
default-value="2007-1-1"
format="yyyy-MM-dd"
placeholder="请选择办证时间"
style="width: 100%;"
type="date"
v-model="formData.bzsj"
value-format="yyyy-MM-dd">
default-value="2007-1-1"
:picker-options="pickerOptions"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
style="width: 100%;"
placeholder="请选择办证时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="出生时间" prop="cssj">
<el-date-picker
:default-value="startYear + '-01-01'"
v-model="formData.cssj"
default-value="2007-1-1"
:picker-options="pickerOptions"
format="yyyy-MM-dd"
placeholder="请选择出生时间"
style="width: 100%;"
value-format="yyyy-MM-dd"
type="date"
v-model="formData.cssj"
value-format="yyyy-MM-dd">
style="width: 100%;"
placeholder="请选择出生时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="独生子女父母光荣证" prop="files">
<el-form-item prop="files" label="独生子女父母光荣证">
<file-upload :files.sync="formData.files"
card></file-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备&emsp;&emsp;注" prop="bz">
<el-input placeholder="备注.." type="textarea"
v-model="formData.bz"></el-input>
<el-input type="textarea" v-model="formData.bz" placeholder="备注.."></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -204,20 +198,20 @@ layout("/layouts/platform.html"){
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doAdd" type="primary">确 定</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</div>
</template>
<el-dialog
:visible.sync="dialogVisible"
title="申请须知"
:visible.sync="dialogVisible"
width="40%">
<span style="line-height: 24px">
&emsp;&emsp;本次独生子女费申报范围为{{startYear}}年1月1日至2015年12月31日之间出生的、并已经办理好独生子女证的独生子女,如果是以上日期出生但未办理独生子女证的一孩则不予申报,已生育二孩的也不予申报。独生子女费每人每年40元,双职工同时申报。同时根据新修改的《中华人民共和国人口与计划生育法》,自2016年1月1日起,我省实施全面两孩政策。2016年1月1日以后生育子女的夫妻,不再发放《独生子女父母光荣证》。
</span>
<span class="dialog-footer" slot="footer">
<el-button @click="dialog" type="primary">同意</el-button>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialog">同意</el-button>
</span>
</el-dialog>
@@ -251,7 +245,7 @@ layout("/layouts/platform.html"){
},
pickerOptions: {
disabledDate: time => {
var begin = moment(new Date().getFullYear() - 14 + '-01-01').valueOf();
var begin = moment("2007-1-1").valueOf();
var end = moment("2015-12-31").valueOf();
return time.getTime() < begin || time.getTime() > end;
}
@@ -304,22 +298,6 @@ layout("/layouts/platform.html"){
this.dialogVisible = true
},
doAdd() {
const startDate = new Date('2010-01-01');
const endDate = new Date('2015-12-31');
const nowDate = new Date(this.formData.cssj);
if (nowDate > endDate || nowDate < startDate) {
this.$message.warning('您填报的出生时间不在申请时间范围内!')
return
}
if (!this.formData.files || this.formData.files.length == 0) {
this.$message.warning('请上传独生子女父母光荣证')
return;
}
if (this.formData.files && this.formData.files[0] == null) {
this.$message.warning('请上传独生子女父母光荣证')
return;
}
let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["form"].validate(async (valid) => {
if (valid) {
@@ -332,15 +310,13 @@ layout("/layouts/platform.html"){
const formData = Object.assign({}, this.formData);
formData.files = JSON.stringify(formData.files)
const resp = await $.post(loc() + method, formData)
if (resp.code === 0) {
loading.close()
if(resp.code===0){
this.pageData();
this.$refs.guava.index()
this.$message.success(resp.msg)
} else {
this.$message.warning(resp.msg)
}else{
this.notifyWarning(resp.msg)
}
loading.close()
}
})
},
@@ -350,12 +326,15 @@ layout("/layouts/platform.html"){
},
async openEdit(id) {
const resp = await $.get("/platform/fw/singleChild/report/findOne", {id})
if (resp.code === 0) {
if (resp.data.files) {
resp.data.files = JSON.parse(resp.data.files)
if(resp.code===0){
const data = resp.data
if (data.files) {
data.files = JSON.parse(data.files)
}
this.formData = resp.data
this.formData = data
this.$refs.guava.edit()
}else{
this.notifyWarning(resp.msg)
}
},
doDelete(row) {
@@ -368,12 +347,12 @@ layout("/layouts/platform.html"){
if ("confirm" == a) {//确认后再执行
this.$set(row, "delLoading", true)
const resp = await $.get(loc() + '/doDelete', {id: id})
if (resp.code === 0) {
this.$set(row, "delLoading", false)
if(resp.code===0){
this.pageData();
this.$refs.guava.index()
this.$message.success(resp.msg)
} else {
this.$message.warning(resp.msg)
}else{
this.notifyWarning(resp.msg)
}
}
}
@@ -391,7 +370,11 @@ layout("/layouts/platform.html"){
const resp = await $.get(loc() + '/getCert', {childName: val})
if (resp.code === 0) {
if (resp.data) {
this.$message.success('已为您匹配到最近一年的申请信息,部分信息已自动填写,请您核实!')
this.$notify.success({
title: '提示',
message: '已为您匹配到最近一年的申请信息,部分信息已自动填写,请您核实!',
duration: 0
})
this.$nextTick(() => {
this.$set(this.formData, "files", resp.data.files)
this.$set(this.formData, "bzsj", resp.data.bzsj)
@@ -418,4 +401,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->
@@ -71,10 +71,10 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="审核列表" :app="this">
<template #func>
<!--<el-button type="primary" size="small" class="mr10"
<el-button type="primary" size="small" class="mr10"
:disabled="tableSelection.length===0"
@click="batchPass">批量通过
</el-button>-->
</el-button>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="1">全部</el-radio-button>
@@ -88,7 +88,7 @@ layout("/layouts/platform.html"){
v-loading="tableLoading" ref="table"
:size="tableSize" @selection-change="selectionChange">
<!-- <el-table-column type="selection" v-if="pageForm.isAudit===3"></el-table-column>-->
<el-table-column type="selection" v-if="pageForm.isAudit===3"></el-table-column>
<el-table-column align="center" header-align="center" width="80px" label="序号" type="index">
<template scope="scope">
@@ -129,10 +129,10 @@ layout("/layouts/platform.html"){
:disabled="scope.row.state!==500">
审核
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'rollBack',data:scope.row}"
<el-dropdown-item :command="{type:'rollBack',data:scope.row}"
:disabled="![200,600,700].includes(scope.row.state)">
撤回
</el-dropdown-item>-->
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@@ -73,8 +73,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="审核列表" :app="this">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small"
style="margin-bottom: -7.5px">
<el-radio-group v-model="pageForm.isAudit" @change="doSearch" size="small">
<el-radio-button :label="1">全部</el-radio-button>
<el-radio-button :label="2">已审核</el-radio-button>
<el-radio-button :label="3">未审核</el-radio-button>
@@ -277,24 +276,15 @@ layout("/layouts/platform.html"){
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0){
this.pageData()
this.$refs.guava.index()
this.$message.success(resp.msg)
}
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
// requestLaterMsgFun(vue, resp, () => {
// this.pageData()
// this.$refs.guava.index()
// }, null, (v) => {
// this.subDis = false
// this.subLoading1 = false
// this.subLoading2 = false
// })
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
})
},
@@ -318,4 +308,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->