first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,353 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-divider--horizontal {
margin-top: 50px;
margin-bottom: 40px;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div slot="header" class="clearfix">
<h3 style="color: #1867b0">填写申请信息</h3>
</div>
<el-form :model="formData" ref="addform" :rules="formRules" label-width="120px">
<el-row :gutter="20">
<!--#if(@shiro.hasRole('sysadmin') || @shiro.hasRole('ghzl') ){#-->
<el-col :span="8">
<el-form-item prop="sqrusername" label="姓名">
<el-select
style="width: 100%"
v-model="formData.sqrusername"
@change="userChange"
filterable
remote
reserve-keyword
placeholder="请输入姓名查找"
:disabled="isModify"
:remote-method="getSelfUnionUser">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username"
:value="item.username">
</el-option>
</el-select>
</el-form-item>
</el-col>
<!--#}else{#-->
<el-col :span="8">
<el-form-item prop="sqrusername" label="姓名">
<el-input disabled v-model="formData.sqrusername"
type="text">
</el-input>
</el-form-item>
</el-col>
<!--#}#-->
<el-col :span="8">
<el-form-item prop="sqrloginname" label="工号">
<el-input disabled v-model="formData.sqrloginname"
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="sex" label="性别">
<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="birthday" label="出生年月">
<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-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="unitname" label="所在单位">
<el-input maxlength="100" clearable placeholder="所在单位" v-model="formData.unitname"
readonly
type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="unionname" label="所在分工会">
<el-input maxlength="100" clearable placeholder="所在分工会" v-model="formData.unionname"
readonly
type="text"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<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="16">
<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-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="files" label="申请附件">
<file-upload :files.sync="formData.files" card></file-upload>
</el-form-item>
<el-form-item prop="sqsign" label="申请签字">
<sign :qz.sync="formData.sqsign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="primary" @click="operation">
{{formData.zt==150?'重新提交':'提交'}}
</el-button>
</div>
</el-card>
</guava>
<el-dialog
title="申请须知"
:visible.sync="dialogVisible"
width="60%">
<h2 style="text-align: center;"><span
style="font-family: 黑体;"><strong>关于开展“送温暖”活动的通知</strong></span></h2>
<p style="text-align: left;"><span style="color: black;">各分工会:</span></p>
<p style="text-indent: 32pt; text-align: left;"><span style="color: black;">为进一步做好困难教职工帮扶关怀工作,根据校工会工作计划,经研究,拟定于2026年春节前夕对我校生活困难的在职教职工开展“送温暖”活动。现将有关事宜通知如下:</span>
</p>
<p style="text-indent: 32.15pt;"><strong>一、活动内容</strong></p>
<p style="text-indent: 24pt;">根据“照顾重点,兼顾一般”的原则。请各分工会认真做好宣传、调查和申报工作,开展送温暖活动。
</p>
<p style="text-indent: 32.15pt;"><strong>二、慰问对象的条件</strong></p>
<p style="text-indent: 32pt;">1.本年度会员身患重大疾病,造成生活特别困难的;</p>
<p style="text-indent: 32pt;">
2.本年度会员直系亲属(指会员本人的父母、配偶、子女)身患重大疾病,造成生活特别困难的;</p>
<p style="text-indent: 32pt;">3.本年度会员家庭因遭遇突发重大事件,造成生活特别困难等其它特殊情况。</p>
<p style="text-indent: 32.15pt;"><strong>三、工作要求</strong></p>
<p style="text-indent: 32pt;">
1.请各分工会对照条件,摸清困难教职工的致困原因和家庭生活等详情,做到不漏报,确保申报工作的准确性。</p>
<p style="text-indent: 32pt;">
2.对符合申报要求者,请登录“智慧工会”系统办理(“职工服务”→“爱心帮扶系统”→“帮扶申请”),由分工会会员本人填报或各分工会委员代为填报。申请困难补助原因务必详尽,并请提供相关支撑材料(凡申请重病补助者须持本年度市以上医院出院记录或病情诊断书)。填报截止时间:2025年12月25日(周四)下午5点。</p>
<p style="text-indent: 32pt;">
3.机关一/机关二/机关三分工会均归口机关党委书记网上审核,其它分工会由党总支书记/直属党支部书记网上审核。待校工会审批通过后,会自动生成表单,无需提交纸质单据。</p>
<p style="text-indent: 32pt;">
校工会对符合条件的在职教职工,可确定为“送温暖”慰问对象,慰问标准根据当年实际情况而定。</p>
<p style="text-indent: 32pt; text-align: right;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; 南京体育学院工会委员会</p>
<p style="text-indent: 256pt; text-align: right;">2025年12月18日 &nbsp; </p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">我已知晓</el-button>
</span>
</el-dialog>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'apply': httpVueLoader('/components/difficulty/apply.vue'),
},
data() {
return {
dialogVisible: true,
formData: {
sq_bzlx: "1",
sqsj: moment().format('YYYY-MM-DD'),
apply_mode: '1',
jtcys: [],
},
formRules: {
sq_knlx: [{required: true, message: '请选择困难类型', trigger: ['blur', 'change']}],
apply_reason: [{required: true, message: '请输入申请困难补助的原因', trigger: ['blur', 'change']}],
files: [{required: true, message: '请上传附件', trigger: ['blur', 'change']}],
sqsign: [{required: true, message: '请签字', trigger: ['blur', 'change']}]
},
userList: [],
}
},
computed: {
isModify() {
return GetQueryString("id") != null && GetQueryString("id") !== ''
}
},
watch: {
'formData.sq_knlx'(val) {
if (['1', '2'].includes(val)) {
this.formRules.files[0].message = '请上传市以上医院病情诊断复印件壹份'
} else {
this.formRules.files[0].message = '请上传相关证明材料'
}
if (this.$refs.addform) {
this.$refs.addform.validateField(['files'], (val) => {
console.log(val)
})
}
},
'formData.files'(val) {
if (this.$refs.addform) {
this.$refs.addform.validateField(['files'], (val) => {
console.log(val)
})
}
}
},
methods: {
async getSelfUnionUser(keyword) {
const {data} = await $.get(loc() + '/getSelfUnionUser', {keyword})
this.userList = data
},
userChange(userId) {
const user = this.userList.find(v => v.username === userId)
this.$set(this.formData, 'sqr', user.id)
this.$set(this.formData, 'sqrloginname', user.loginname)
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'lxfs', user.mobile)
this.$set(this.formData, 'unitname', user.unitname)
this.$set(this.formData, 'unionname', user.unionname)
// this.formData = u
},
async getUserData() {
const {data, code, msg} = await $.post(loc() + "/getUserData")
if (code === 0) {
this.$set(this.formData, 'sqr', data.id)
this.$set(this.formData, 'sqrusername', data.username)
this.$set(this.formData, 'sqrloginname', data.loginname)
this.$set(this.formData, 'sex', data.sex)
this.$set(this.formData, 'birthday', data.birthday)
this.$set(this.formData, 'lxfs', data.mobile)
this.$set(this.formData, 'unitname', data.unitname)
this.$set(this.formData, 'unionname', data.unionname)
} else {
this.$notify.error({title: '失败', message: msg});
}
},
async operation() {
let method = this.formData.id ? "/doEdit" : "/doAdd"
this.$refs["addform"].validate(async (valid) => {
if (valid) {
this.$confirm('您确定要提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
})
const {code, msg} = await $.post(loc() + method, {
"knbf": JSON.stringify(this.formData),
"sqsign": this.formData.sqsign
})
loading.close()
if (code === 0) {
this.$notify.success({title: '成功', message: msg});
sublime.jumpPagePjax('/platform/fw/difficulty/applylist')
} else {
this.$notify.error({title: '失败', message: msg});
}
})
}
})
/* this.$refs["addform"].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.data.files) {
resp.data.files = JSON.parse(resp.data.files)
}
this.formData = resp.data
}
}
},
async created() {
const id = GetQueryString("id")
if (id) {
this.openEdit(id)
} else {
await this.getUserData()
}
// id ? this.openEdit(id) : this.radioButton()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,229 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<!-- <div class="btn-group tool-button">-->
<!-- <el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"-->
<!-- clearable="true"-->
<!-- @change="flushUnits" @clear="flushUnits"-->
<!-- v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"-->
<!-- filterable="true">-->
<!-- <el-option v-for="item in unions" :label="item.unionname"-->
<!-- :value="item.id"></el-option>-->
<!-- </el-select>-->
<!-- </div>-->
<!-- <div class="btn-group tool-button">-->
<!-- <el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"-->
<!-- clearable="true"-->
<!-- filterable="true">-->
<!-- <el-option v-for="item in units" :label="item.name"-->
<!-- :value="item.id"></el-option>-->
<!-- </el-select>-->
<!-- </div>-->
<!-- <div class="btn-group tool-button">-->
<!-- <div>-->
<!-- <el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">-->
<!-- <el-select v-model="pageForm.searchName" slot="prepend"-->
<!-- placeholder="查询类型"-->
<!-- style="width: 140px;">-->
<!-- <el-option label="申请人工号" value="sqr.loginname"></el-option>-->
<!-- <el-option label="申请人姓名" value="sqr.username"></el-option>-->
<!-- </el-select>-->
<!-- </el-input>-->
<!-- </div>-->
<!-- </div>-->
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table
:data="tableData"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人姓名"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrloginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sex"
label="性别"></el-table-column>
<el-table-column align="center" header-align="center" prop="birthday"
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="sqrunitname"
label="单位"></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 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 align="center" prop="state_id" header-align="center"
label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item
:disabled="![95,96,100,150,155,156,157].includes(row.zt)"
:command="{type:'edit',data:row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',data:row}"
:loading="row.delLoading"
:disabled="![155].includes(row.zt)">
删除
</el-dropdown-item>
<!-- <el-dropdown-item :disabled="row.zt!=500"-->
<!-- :command="{type:'export',data:row}">-->
<!-- 导出审批表-->
<!-- </el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
pageForm: {
unit: "",
year: "",
searchName: "sqr.username"
},
unions: [],
units: [],
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'delete') {
this.doDelete(data)
} else if (type == 'edit') {
this.openEdit(data)
} else if (type == 'export') {
window.location.href = "/platform/fw/difficulty/reading/export?id=" + data.id
}
},
dodownloadAnnex(id) {
window.location.href = "/platform/fw/difficulty/applylist/downloadAnnex?id=" + id
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openEdit(row) {
const {id} = row
sublime.jumpPagePjax('/platform/fw/difficulty/apply?id=' + id)
},
doDelete(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 $.get(loc() + '/doDelete', {id: id})
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,241 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker clearable value-format="yyyy-MM-dd"
v-model="pageForm._dateRange"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</div>
</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('wyh02')||@shiro.hasRole('wyh03')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="申请人工号" value="sqr.loginname"></el-option>
<el-option label="申请人姓名" value="sqr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="pull-right offscreen-right">
</div>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="申请列表">
<template #func>
<!--#if(@shiro.hasRole('A06')||@shiro.hasRole('wyh02')||@shiro.hasRole('wyh03')||@shiro.hasRole('H04')||@shiro.hasRole('sysadmin')){#-->
<el-button type="primary" @click="doExcel" size="small"><i class="el-icon-download"></i>
导出word
</el-button>
<el-button type="primary" @click="doExcel2" size="small"><i class="el-icon-download"></i>
导出excel
</el-button>
<!--#}#-->
</template>
</vi-title2>
<el-table
:data="tableData"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人姓名"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrloginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sex"
label="性别"></el-table-column>
<el-table-column align="center" header-align="center" prop="birthday"
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="sqrunitname"
label="单位"></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 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 align="center" prop="state_id" header-align="center"
label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<!-- <el-dropdown-item
:command="{type:'downloadAnnex',data:row}">
下载
</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>-->
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
unions: [],
units: [],
pageForm: {
unitId: '',
unionId: '',
unit: "",
year: "",
searchName: "sqr.username"
},
unitOptions: [],
}
},
methods: {
doSearch() {
this.tabKey = new Date().getTime()
this.pageForm.pageNumber = 1
if (this.pageForm._dateRange && this.pageForm._dateRange.length) {
this.pageForm.dateRange = JSON.stringify(this.pageForm._dateRange)
} else {
this.pageForm.dateRange = ""
}
this.pageData()
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(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
}
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
doExcel() {
const {unionId, unitId, _dateRange,searchName,searchKeyword} = this.pageForm
// window.open("/platform/fw/difficulty/reading/doExcel?dateRange=" + JSON.stringify(_dateRange)
// + "&unionId=" + unionId + "&unitId=" + unitId)
window.open("/platform/fw/difficulty/reading/exportDifficult?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId + "&unitId=" + unitId+"&searchName="+searchName+"&searchKeyword="+searchKeyword)
},
doExcel2() {
const {unionId, unitId, _dateRange} = this.pageForm
// window.open("/platform/fw/difficulty/reading/doExcel?dateRange=" + JSON.stringify(_dateRange)
// + "&unionId=" + unionId + "&unitId=" + unitId)
window.open("/platform/fw/difficulty/reading/doExcel2?dateRange=" + JSON.stringify(_dateRange)
+ "&unionId=" + unionId + "&unitId=" + unitId)
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,327 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--校工会经办人-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="申请人工号" value="sqr.loginname"></el-option>
<el-option label="申请人姓名" value="sqr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></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="mt20">
<el-table
:data="tableData"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人姓名"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrloginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sex"
label="性别"></el-table-column>
<el-table-column align="center" header-align="center" prop="birthday"
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="sqrunitname"
label="单位"></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 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 align="center" prop="state_id" header-align="center"
label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt==250 || row.zt == 500"
:command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
<el-dropdown-item v-if="row.zt==250 || row.zt==500"
:command="{type:'revoke',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>
<info ref="info2" :handle="true" label="校工会审核">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="auditSign" label="审核签字">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="danger" @click="doReview(1)" :disabled="subDis" :loading="subLoading1">
拒绝
</el-button>
<!-- <el-button type="danger" @click="doReview(3)" :disabled="subDis" :loading="subLoading3">返回修改-->
<!-- </el-button>-->
<el-button type="primary" @click="doReview(2)" :disabled="subDis" :loading="subLoading2">
通过
</el-button>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sqr.username"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
watch: {
'formData.auditSign'(val) {
this.$refs.form.validateField(['auditSign'], (val) => {
console.log(val)
})
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
} else if (type == 'revoke') {
this.revoke(data)
}
},
revoke(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() + "/revoke", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
} 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
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = 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)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,288 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--校工会常务副主席审核-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.unit" filterable placeholder="请选择单位" clearable>
<el-option
v-for="item in unitOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<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 mt5">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="btn-group tool-button mt5">
<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 class="el-table-container">
<el-table
:data="tableData"
size="mini"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="sqrloginname"
label="工号"
>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="sqrname"
label="姓名"
>
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="unitname"
label="单位"
>
</el-table-column>
<el-table-column sortable
align="center" header-align="center"
prop="sqsj"
label="申请时间"
>
</el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
</template>
<template #edit>
<info ref="info2" :handle="true" label="校工会常务副主席审核" :panes="[2]">
<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="审核人员">
<el-input v-model="formData.username"
disabled></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>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="jb" label="级&emsp;&emsp;别">
<el-select v-model="formData.jb" placeholder="请选择级别"
clearable style="width: 100%">
<el-option
v-for="item in jbOptions"
:key="item"
:label="item"
:value="item">
</el-option>
</el-select>
</el-form-item>
</el-col>
<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">
</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>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></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>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
jbOptions: ['甲级', '乙级', '丙级'],
subDis: false,
subLoading1: false,
subLoading2: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
}
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openReview(row) {
const {id} = row
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
})
},
},
async created() {
this.pageData()
this.unitOptions = await getUnits(null)
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,261 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--校工会副主席审核-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="pageForm.unit" filterable placeholder="请选择单位" clearable>
<el-option
v-for="item in unitOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<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 mt5">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
</div>
<div class="btn-group tool-button mt5">
<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 class="el-table-container">
<el-table
:data="tableData"
size="mini"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column 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 prop="lxfs" label="联系方式" header-align="center" align="center" show-overflow-tooltip
min-width="100"></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 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 sortable align="center" header-align="center" prop="sqsj"
label="申请时间"></el-table-column>
<el-table-column align="center" prop="state_id" header-align="center" label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
</template>
<template #edit>
<info ref="info2" :handle="true" label="校工会副主席审核" :panes="[2]">
<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="审核人员">
<el-input v-model="formData.username"
disabled></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>
</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>
<el-form-item prop="sign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></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>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
subDis: false,
subLoading1: false,
subLoading2: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sbzr.loginname"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
}
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openReview(row) {
const {id} = row
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = true
flag ? this.subLoading2 = true : this.subLoading1 = true
const resp = await $.post(loc() + "/doReview", this.formData)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if(resp.code===0){
this.pageData()
this.$refs.guava.index()
}else{
this.notifyWarning(resp.msg)
}
}
})
},
},
async created() {
this.pageData()
this.unitOptions = await getUnits(null)
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,743 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
#app {
padding: 20px;
}
input[type=file] {
display: none;
}
.card-title {
margin-bottom: 20px;
letter-spacing: 2px;
display: flex;
justify-content: space-between;
height: 30px;
line-height: 30px;
}
.card-title .title-left {
font-size: 25px;
}
.card-title .title-right {
text-align: right;
font-size: 15px;
color: #0e78c5;
cursor: pointer;
}
.card-title .title-right:hover {
text-decoration: underline;
}
.el-date-editor.el-input, .el-select, .el-input-number {
width: 100%;
}
.addFormCard {
}
.excelCard {
min-height: 650px;
}
.excelBack {
font-size: 15px;
color: #0e78c5;
cursor: pointer;
}
.excelBack:hover {
text-decoration: underline;
}
.el-icon-loading {
font-size: 30px;
}
.el-input-number__decrease, .el-input-number__increase {
display: none;
}
.el-input-number .el-input__inner {
padding: 0 15px;
text-align: left;
}
.el-icon-eleme:before {
content: '元';
}
.submitClass {
text-align: right;
}
.ivu-upload {
display: inline;
}
.el-table th.gutter {
display: table-cell !important
}
.el-table {
margin-top: 100px;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"] {
-moz-appearance: textfield;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.int_input .el-input-number__decrease {
display: none;
}
.int_input .el-input-number__increase {
display: none;
}
.int_input .el-input-number.is-controls-right .el-input__inner {
text-align: left;
}
.border_table .el-table--border td, .el-table--border th, .el-table__body-wrapper .el-table--border.is-scrolling-left ~ .el-table__fixed {
border-right: 1px solid #EBEEF5;
border-right-width: 1px;
border-right-style: solid;
border-right-color: rgb(235, 238, 245);
}
.border_table .el-table {
border: 1px solid #EBEEF5;
border-top-color: rgb(235, 238, 245);
border-top-style: solid;
border-top-width: 1px;
border-right-color: rgb(235, 238, 245);
border-right-style: solid;
border-right-width: 1px;
border-bottom-color: rgb(235, 238, 245);
border-bottom-style: solid;
border-bottom-width: 1px;
border-left-color: rgb(235, 238, 245);
border-left-style: solid;
border-left-width: 1px;
border-image-source: initial;
border-image-slice: initial;
border-image-width: initial;
border-image-outset: initial;
border-image-repeat: initial;
}
.border_table .el-table--border::after, .el-table--group::after {
width: 1px;
}
.textareaDiv {
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
</style>
<div id="app" v-cloak>
<transition name="el-zoom-in-top">
<el-card class="addFormCard" v-show="AddFormCardShow">
<div class="card-title">
<span class="title-left" style="font-size: 18px;font-weight: bold">新增历史数据</span>
<span class="title-right"
@click="AddFormCardShow=!AddFormCardShow;ExcelCardShow=!AddFormCardShow;">
从excel导入
<span slot="suffix">
<i class="el-icon-upload"></i>
</span>
</span>
</div>
<el-form :model="formData" style="width: 90%;margin: 0 auto" ref="addForm" :rules="formRules" size="medium"
label-position="right"
label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item prop="year" label="年&emsp;&emsp;份">
<el-date-picker
v-model="formData.year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="sqr" label="困难职工">
<el-select
v-model="formData.sqr"
@change="userChange"
filterable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.username+''+item.unitname+''"
:value="item.id">
</el-option>
</el-select>
</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>
<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>
<el-col :span="16">
<el-form-item prop="jtzz" label="家庭地址">
<el-input maxlength="50" placeholder="请输入家庭地址" clearable v-model="formData.jtzz"
type="text"></el-input>
</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-row>
<el-row>
<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="jtnzsr" label="家庭年收入" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.jtnzsr" :min="0"
:max="9999999"
controls-position="right" placeholder="请填写年收入(元)">
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="jtrs" label="家庭人数" class="int_input">
<el-input-number clearable style="width: 100%" v-model="formData.jtrs" :min="0" :max="99"
controls-position="right" placeholder="请填写家庭人数">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item prop="zyzkyybz" label="致困特殊原因">
<el-input maxlength="500" placeholder="请简述原因" clearable v-model="formData.zyzkyybz"
type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="submitClass">
<el-button type="primary" @click="doAdd">确定</el-button>
</div>
</el-card>
</transition>
<transition name="el-zoom-in-bottom">
<el-card class="excelCard" v-show="ExcelCardShow">
<div class="mb10">
<span class="excelBack" @click="ExcelCardShow=!ExcelCardShow;AddFormCardShow=!ExcelCardShow;">&lt;&ensp;返回</span>
</div>
<div class="mb20">
<el-row class="header navbar">
<div class="btn-group tool-button mt5">
<el-button size="small" icon="el-icon-download" style="width: 100px"
@click="location.href='/platform/knbf/sjdr/downLoadTemp'">下载模板
</el-button>
</div>
<div class="btn-group tool-button mt5">
<!-- <i-button icon="ios-cloud-download-outline" style="width: 100px" @click="download">下载模板</i-button>-->
<el-upload :before-upload="handleUpload">
<!--<i-button icon="ios-cloud-upload-outline" style="width: 100px">选择文件</i-button>-->
<el-button icon="el-icon-upload" size="small" style="width: 100px">上传文件</el-button>
</el-upload>
</div>
<div class="btn-group tool-button mt5">
<el-date-picker size="small"
v-model="year"
type="year"
value-format="yyyy"
placeholder="选择年">
</el-date-picker>
</div>
<div v-if="file!==null" style="height: 30px;">
<el-row style="padding: 0 15px">
<el-col :span="18">
<span style="float: left;overflow: hidden;line-height: 30px;">
<i class="el-icon-tickets"></i>
{{file.name}}&emsp;
<span style="font-size: 12px;color: #b49672;" v-if="tableData.length>0">共读取了{{tableData.length}}条数据</span>
</span>
</el-col>
<span style="line-height: 30px;">
<el-button size="mini" type="danger" @click="file=null">删除</el-button>
<el-button size="mini" type="primary" @click="read">读取</el-button>
</span>
</el-row>
</div>
</el-row>
<!--<i-button @click="ls">未提交数据</i-button>-->
</div>
<el-table :data="rows" empty-text="暂无数据,请上传文件">
<el-table-column label="序号" type="index" header-align="center" align="center">
</el-table-column>
<el-table-column
align="center" header-align="center"
prop="unitname" show-overflow-tooltip width="250px"
label="单位"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="loginname"
label="工号"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="username"
label="职工姓名"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="100px"
prop="sex"
label="性别"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="jtzz"
label="家庭住址"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="lxfs"
label="联系电话"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="zyzkyybz"
label="致困特殊原因"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="100px"
prop="jtrs"
label="家庭人数"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="brnzsr"
label="本人总收入(元)"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="200px"
prop="jtnzsr"
label="家庭总收入(元)"
>
</el-table-column>
<el-table-column
align="center" header-align="center" show-overflow-tooltip width="150px"
prop="jb"
label="级别"
>
</el-table-column>
<el-table-column label="操作" header-align="center" align="center" width="100">
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" circle
@click="rows.splice(scope.$index,1)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="submitClass mt20 mr10">
<el-button type="primary" @click="write">导 入</el-button>
</div>
</el-card>
</transition>
</div>
<script>
var vue = new Vue({
el: '#app',
data() {
return {
year: '',
loading: false,
userOptions: [],
rows: [],
file: null,
AddFormCardShow: true,
ExcelCardShow: false,
ybOptions: ['统筹', '社保'],
activeName: ['1'],
zzyyOptions: ['本人大病', '供养直系亲属大病', '本人残疾', '家属残疾', '本人下岗失业', '家属下岗失业', '收入低', '自然灾害', '重大事故', '子女上学', '其他'],
fclxOptions: ['商品房', '福利房', '经济适用房', '限价房', '自建房'],
fclyOptions: ['购买', '接收赠与', '继承', '其他来源'],
hyzkOptions: ['未婚', '已婚', '离异', '丧偶', '再婚'],
zcOptions: ['教授', '副教授', '讲师', '助教'],
mzOptions: [
'汉族',
'蒙古族',
'回族',
'藏族',
'维吾尔族',
'苗族',
'彝族',
'壮族',
'布依族',
'朝鲜族',
'满族',
'侗族',
'瑶族',
'白族',
'土家族',
'哈尼族',
'哈萨克族',
'傣族',
'黎族',
'傈僳族',
'佤族',
'畲族',
'高山族',
'拉祜族',
'水族',
'东乡族',
'纳西族',
'景颇族',
'柯尔克孜族',
'土族',
'达翰尔族',
'么佬族',
'羌族',
'布朗族',
'撒拉族',
'毛南族',
'仡佬族',
'锡伯族',
'阿昌族',
'普米族',
'塔吉克族',
'怒族',
'乌孜别克族',
'俄罗斯族',
'鄂温克族',
'德昂族',
'保安族',
'裕固族',
'京族',
'塔塔尔族',
'独龙族',
'鄂伦春族',
'赫哲族',
'门巴族',
'珞巴族',
'基诺族',
],
bzOptions: ['事业编制职工(正式职工)', '合同制职工', '人事代理职工', '集体职工', '流动编制职工', '非事业编制职工', '博士后进站人员', '劳务派遣人员', '聘用工(各二级单位聘用)'],
ztObj: {
1: {color: '#E6A23C', label: '待院级工会审核'},
2: {color: '#E6A23C', label: '待二级党组织审核'},
3: {color: '#E6A23C', label: '待校工会审核'},
4: {color: '#67C23A', label: '审核通过'},
5: {color: '#F56C6C', label: '审核不通过'},
},
subDis: false,
formData: {
zyzkyy: [],
jtcys: [],
jtfc: [],
jtcc: [],
},
userData: {},
viewData: {},
viewDialogVisible: false,
addDialogVisible: false,
editDialogVisible: false,
tableData: [],
pageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
formRules: {
// parentUnit: [{validator: validateUnit, trigger: ['blur', 'change']}],
idcard: [{
required: false,
message: '必填',
trigger: ['blur', 'change']
}, {
pattern: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号'
}],
year: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
username: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
loginname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrloginname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unitname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sqrunitname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
zyzkyy: [{required: true, message: '必选', trigger: ['blur', 'change']}],
brnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtnzsr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtrs: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhmc: [{required: true, message: '必填', trigger: ['blur', 'change']}],
yhkh: [{required: true, message: '必填', trigger: ['blur', 'change']}],
rsbz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
jtzz: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sex: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
isNull(val) {
return val === null || val === undefined || val === ''
}
}
},
filters: {
arr2str(val) {
if (val && val.length > 0) {
let str = ""
for (let i = 0; i < val.length; i++) {
str += val[i]
if (i < val.length - 1) {
str += '、'
}
}
return str
}
return ''
},
none2str(val) {
if (val === null || val === undefined || val === '') {
return '暂无'
}
return val
}
},
methods: {
write() {
if (this.year == "" || this.year == undefined) {
this.$message.warning("请选择数据所属年份!");
return;
}
let obj = {
zgfw_knbfs: JSON.stringify(this.rows),
sqsj: this.year + "-01-01"
}
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + "/platform/knbf/sjdr/write", obj, (data) => {
if (data.code == 0) {
this.$message({
message: data.msg,
type: 'success'
});
this.rows = []
this.file = null
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
this.subDis = false
loading.close()
}, "json");
},
read: function () {
var self = this;
var formData = new FormData();
formData.append("file", self.file);
sublime.showLoadingbar()
const loading = this.$loading({
lock: true,
text: '数据读取中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.ajax({
url: base + "/platform/knbf/sjdr/getRow",
type: "post",
data: formData,
processData: false,
contentType: false,
success: function (data) {
if (data.code == 0) {
console.log(data)
loading.close();
if (data.data.length > 0) {
self.rows = data.data
self.$message.success("读取成功!一共读取了" + self.rows.length + "条数据");
} else {
self.$message.warning("表格内没有数据,请重新导入文件");
}
} else {
loading.close();
self.$message.error(data.msg);
}
sublime.closeLoadingbar()
},
error: function (data) {
loading.close();
sublime.closeLoadingbar()
}
});
/* $.post((base + "/platform/knbf/sjdr/getRow", this.formData, (data => {
if (data.code == 0) {
console.log(1)
loading.close();
if (data.data.length > 0) {
self.rows = data.data
self.$message.success("读取成功!一共读取了" + self.rows.length + "条数据");
} else {
self.$message.warning("表格内没有数据,请重新导入文件");
}
} else {
loading.close();
self.$message.error(data.msg);
}
sublime.closeLoadingbar()
})
));*/
},
doAdd() {
this.$refs["addForm"].validate((valid) => {
if (valid) {
this.subDis = true
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.formData.sqsj = this.formData.year + '-01-01'
$.post(base + "/platform/knbf/sjdr/doAdd", this.formData, (data) => {
if (data.code == 0) {
this.$message({
message: data.msg,
type: 'success'
});
this.formData = {}
this.userOptions = []
if (this.$refs["addForm"])
this.$refs["addForm"].resetFields();
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
this.subDis = false
loading.close()
}, "json");
}
});
},
userChange(id) {
this.userOptions.forEach(val => {
if (val.id == id) {
vue.$set(this.formData, 'username', val.username)
vue.$set(this.formData, 'birthday', val.birthday)
vue.$set(this.formData, 'sex', val.sex)
vue.$set(this.formData, 'unitname', val.unitname)
}
})
},
remoteMethod(query) {
this.loading = true
this.userOptions = []
$.post(base + "/platform/knbf/sjdr/queryUser", {query: query}, (data) => {
if (data.code == 0) {
this.userOptions = data.data.list;
}
this.loading = false
}, "json");
},
zcBlur(e) {
this.$set(this.formData, 'zc', e.target.value)
},
handleUpload(file) {
var self = this;
var typename = file.name.substring(file.name.lastIndexOf('.'), file.name.length);
if (typename.indexOf('xls', 'xlsx') < 0) {
self.$message.error('只能上传xls,xlsx格式的文件');
return false;
}
self.file = file;
return false;
},
},
created() {
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,344 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--二级党组织-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="申请人工号" value="sqr.loginname"></el-option>
<el-option label="申请人姓名" value="sqr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></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="mt20">
<el-table
:data="tableData"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人姓名"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrloginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sex"
label="性别"></el-table-column>
<el-table-column align="center" header-align="center" prop="birthday"
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="sqrunitname"
label="单位"></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 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 align="center" prop="state_id" header-align="center"
label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :disabled="row.zt > 155"
:command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
<!-- <el-dropdown-item :disabled="row.zt > 155" v-if="${@shiro.hasAnyRoles('sysadmin', 'A06')}"-->
<!-- :command="{type:'urging',data:row}">-->
<!-- 催办-->
<!-- </el-dropdown-item>-->
<el-dropdown-item v-if="row.zt==200"
:command="{type:'revoke',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>
<info ref="info2" :handle="true" label="二级党组织审核">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="auditSign" label="审核签字">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="danger" @click="doReview(1)" :disabled="subDis" :loading="subLoading1">
拒绝
</el-button>
<!-- <el-button type="danger" @click="doReview(3)" :disabled="subDis" :loading="subLoading3">-->
<!-- 返回修改-->
<!-- </el-button>-->
<el-button type="primary" @click="doReview(2)" :disabled="subDis" :loading="subLoading2">
通过
</el-button>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sqr.username"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
watch: {
'formData.auditSign'(val) {
this.$refs.form.validateField(['auditSign'], (val) => {
console.log(val)
})
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
} else if (type == 'revoke') {
this.revoke(data)
}else if (type == 'urging') {
this.doUrging(data)
}
},
async doUrging(){
const resp = await $.get("")
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
},
revoke(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("/platform/fw/difficulty/unionchairman/doEdit", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
} 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
this.formData = {
id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = 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)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,320 @@
<!--#
layout("/layouts/platform.html"){
#-->
<!--工会主席-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 140px;">
<el-option label="申请人工号" value="sqr.loginname"></el-option>
<el-option label="申请人姓名" value="sqr.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-button type="primary" @click="doSearch" icon="el-icon-search"></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="mt20">
<el-table
:data="tableData"
style="width: 100%"
@sort-change="pageOrder"
>
<el-table-column label="序号" type="index" header-align="center" align="center">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="sqrname"
label="申请人姓名"></el-table-column>
<el-table-column align="center" header-align="center" prop="sqrloginname"
label="工号"></el-table-column>
<el-table-column align="center" header-align="center" prop="sex"
label="性别"></el-table-column>
<el-table-column align="center" header-align="center" prop="birthday"
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="sqrunitname"
label="分工会"></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 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 align="center" prop="state_id" header-align="center"
label="申请状态" 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"
width="120px">
<template slot-scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :disabled="pageForm.isAudit == true || row.zt!=100"
:command="{type:'openReview',data:row}">
审核
</el-dropdown-item>
<el-dropdown-item v-if="[150,200].includes(row.zt)"
:command="{type:'revoke',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>
<info ref="info2" :handle="true" label="分工会审核" :panes="[2]">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
<el-form-item prop="auditSign" label="审核签字">
<sign :qz.sync="formData.auditSign"></sign>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="danger" @click="doReview(1)" :disabled="subDis" :loading="subLoading1">
拒绝
</el-button>
<!-- <el-button type="danger" @click="doReview(2)" :disabled="subDis" :loading="subLoading3">-->
<!-- 返回修改-->
<!-- </el-button>-->
<el-button type="primary" @click="doReview(3)" :disabled="subDis" :loading="subLoading2">
通过
</el-button>
</div>
</template>
</info>
</template>
<template #view>
<info ref="info"></info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'info': httpVueLoader('/components/difficulty/info.vue'),
},
data() {
return {
unions: [],
units: [],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
pageForm: {
unit: "",
year: "",
isAudit: false,
searchName: "sqr.username"
},
unitOptions: [],
formRules: {
auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
auditSign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'openReview') {
this.openReview(data)
} else if (type == 'revoke') {
this.revoke(data)
}
},
revoke(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() + "/revoke", {id: id});
this.$set(row, "delLoading", false)
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
}
});
},
openView(row) {
const {id} = row
this.$refs.info.getInfo(id)
this.$refs.guava.view()
},
openReview(row) {
const {id} = row
this.formData = {
id,
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']) {
this.$refs['form'].resetFields()
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
this.subDis = 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)
this.subDis = false
this.subLoading1 = false
this.subLoading2 = false
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
this.$refs.guava.index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
},
async created() {
this.pageData()
this.unions = await getUnions()
this.flushUnits()
}
})
</script>
<!--#
}
#-->