This commit is contained in:
2026-01-19 09:01:00 +08:00
parent fdc1f203a4
commit c5ec2137e2
28 changed files with 2651 additions and 23 deletions
+2 -2
View File
@@ -21,7 +21,7 @@ jetty:
#结合ftp使用,或用nginx代理ftp路径
#staticPath: /Users/wizzer/temp/files
#开发模式静态资源
staticPathLocal: D:/project/zhgh_cug_v4/src/main/resources/static
staticPathLocal: E:/projects/zhgh_cug_v4/src/main/resources/static
security:
tokenName: saToken
@@ -87,7 +87,7 @@ xsssql:
beetl:
RESOURCE:
#本地路径,开发时设置本地路径,便于调试
rootLocal: D:/project/zhgh_cug_v4/src/main/resources/views/
rootLocal: E:/projects/zhgh_cug_v4/src/main/resources/views/
root: views/
DELIMITER_STATEMENT_START: "<!--#"
DELIMITER_STATEMENT_END: "#-->"
@@ -0,0 +1,218 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<div style="max-width: 900px; margin: 0 auto;">
<custom-card>
<snaker-start slot="header" label="基金会员申请" define_key="JJHY"></snaker-start>
<el-card shadow="never">
<el-form :model="formData" :rules="formRules" label-suffix=""
label-width="120px"
ref="formRef">
<el-form-item label="姓&emsp;&emsp;名">
<el-input disabled placeholder="请输入内容"
v-model="formData.userName"></el-input>
</el-form-item>
<el-form-item label="工&emsp;&emsp;号">
<el-input disabled placeholder="请输入内容"
v-model="formData.loginName"></el-input>
</el-form-item>
<el-form-item label="申请时间" prop="applyTime">
<el-date-picker disabled
placeholder="选择日期"
style="width: 100%"
type="date"
v-model="formData.applyTime"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="联系方式" prop="mobile">
<el-input placeholder="请输入联系方式"
v-model="formData.mobile"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idCard">
<el-input maxlength="18" placeholder="请输入身份证号"
v-model="formData.idCard"></el-input>
</el-form-item>
<el-form-item label="入校时间" prop="arrivalAtSchoolDate">
<el-input placeholder="请输入入校时间" v-model="formData.arrivalAtSchoolDate"
disabled></el-input>
</el-form-item>
<el-form-item label="基金会员类型" prop="aidFundMemberUserType">
<el-radio-group v-model="formData.aidFundMemberUserType">
<el-radio-button :label="item.code" v-for="item in dict.type.AIDFUND_MEMBER_USER_TYPE"
:key="item.code">
{{item.name}}
</el-radio-button>
</el-radio-group>
</el-form-item>
<el-alert :closable="false" type="error">
温馨提醒:入校时间关联会费缴纳金额,请确认是否正确,若有疑问请联系校工会!另外,务必按您的实际情况选择基金会员类型!
</el-alert>
<el-form-item label="" prop="isRead">
<div style="display: flex">
<el-checkbox v-model="formData.isRead" @change="isReadChange">
</el-checkbox>
<div style="cursor: pointer;" @click="isReadClick" class="ml5">
<div style="color: #1e88e5">
中国地质大学(武汉)教职工重大疾病互助基金管理办法
</div>
</div>
</div>
</el-form-item>
</el-form>
</el-card>
<template slot="footer">
<el-button type="primary" @click="openSubmit" :disabled="applyInfo.disabled">
<span>{{applyInfo.label}}</span>
</el-button>
</template>
<el-dialog :close-on-click-modal="false" title="温馨提醒" :visible.sync="dialogVisible"
width="40%">
<pay_record ref="payRecord"></pay_record>
<el-alert :closable="false" class="mt10" type="warning" v-if="!$store.state.user.aidFundMember">
本次入会,您需要缴费会费{{payMoney}}元,请详知。
</el-alert>
<el-row class="mt10" justify="end" type="flex">
<el-button @click="dialogVisible=false">取消</el-button>
<el-button @click="onSubmit" type="primary">提交</el-button>
</el-row>
</el-dialog>
</custom-card>
</div>
</div>
<script nonce="${cspNonce!}">
<!--#include("../common/payRecord.js"){}#-->
const vue = new Vue({
el: '#app',
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE"],
mixins: [initTableMixins],
data() {
return {
bizId: GetQueryString("bizId"),
taskId: GetQueryString("taskId"),
formRules: {
mobile: [{required: true, message: "必填", trigger: ["blur", "change"]}],
idCard: [{required: true, message: "必填", trigger: ["blur", "change"]}],
aidFundMemberUserType: [{required: true, message: "必填", trigger: ["blur", "change"]}],
arrivalAtSchoolDate: [{required: true, message: "必填", trigger: ["blur", "change"]}],
},
aidFundMemberUserTypeOptions: [],
isReadChangeType: true,
applyInfo: {
disabled: true,
label: '申请加入'
},
dialogVisible: false,
payMoney: 0,
payRecordsDialogTitle: "",
payRecordList: []
}
},
components: {
'pay_record': PAY_RECORD,
},
methods: {
getPayMoney() {
this.$axios.post('/platform/medicalMutualAid/aidFund/apply/getPayMoney', {arrivalAtSchoolDate: this.formData.arrivalAtSchoolDate}).then(resp => {
if (resp.code === 0) {
this.payMoney = resp.data
}
})
},
isReadClick() {
this.isReadChangeType = false
this.$set(this.formData, 'isRead', true)
this.$commonUtil.previewFile({
suffix: "pdf",
downloadPath: "/platform/sys/file/download?id=orpgde84uggjmpflbob83tadan",
name: "中国地质大学(武汉)教职工重大疾病互助基金管理办法.pdf",
id: "orpgde84uggjmpflbob83tadan"
})
},
isReadChange() {
if (this.isReadChangeType) {
this.$set(this.formData, 'isRead', false)
this.$alert('请阅读《教职工重大疾病互助基金管理办法》的通知文件', '温馨提醒', {
confirmButtonText: '确定',
})
return
}
},
openSubmit() {
this.$refs.formRef.validate((valid) => {
if (valid) {
if (!this.formData.isRead) {
this.$alert('请阅读《教职工重大疾病互助基金管理办法》的通知', '温馨提醒', {
confirmButtonText: '确定',
})
return
}
this.getPayMoney()
this.dialogVisible = true
this.$nextTick(() => {
this.$refs.payRecord.getUserPayRecordList()
})
}
})
},
onSubmit() {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/platform/medicalMutualAid/aidFund/apply/submit", {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.dialogVisible = false
commonUtil.pjaxPush("/platform/medicalMutualAid/aidFund/applyMine")
}
})
})
},
canApply() {
this.$axios.post('/platform/medicalMutualAid/aidFund/apply/canApply').then(resp => {
if (resp.code === 0) {
this.applyInfo = resp.data
}
})
},
initData() {
this.canApply()
this.$set(this.formData, "userName", this.$store.state.user.username)
this.$set(this.formData, "loginName", this.$store.state.user.loginname)
this.$set(this.formData, "mobile", this.$store.state.user.mobile)
this.$set(this.formData, "idCard", this.$store.state.user.idCard)
this.$set(this.formData, "aidFundMemberUserType", this.$store.state.user.aidFundMemberUserType)
if (this.$store.state.user.arrivalAtSchoolDate) {
this.$set(this.formData, "arrivalAtSchoolDate", this.$moment(this.$store.state.user.arrivalAtSchoolDate).format("YYYY-MM-DD"))
}
this.$set(this.formData, "applyTime", this.$moment(new Date()).format("YYYY-MM-DD"))
}
},
created() {
this.initData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,151 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="申请记录">
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" header-align="center" label="序号"
type="index" width="60px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='instanceState'">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='aidFundMemberUserType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
:value="row.aidFundMemberUserType"></dict-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='changeType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
:value="row.changeType"></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="{row}">
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回
</el-button>
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onFinishTask(row)"
size="mini" type="primary">
提交
</el-button>
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)"
size="mini" type="danger">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</el-card>
</guava>
</div>
<script nonce="${cspNonce!}">
new Vue({
el: "#app",
mixins: [initTableMixins],
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
data() {
return {
pageForm: {
year: this.$moment().format("YYYY")
},
tableColumns: [
{prop: "loginName", label: "工号", sortable: true},
{prop: "userName", label: "姓名", sortable: true},
{prop: "sex", label: "性别", sortable: true},
{prop: "arrivalAtSchoolDate", label: "入校时间"},
{prop: "mobile", label: "电话"},
{prop: "unitName", label: "所属单位"},
{prop: "unionName", label: "所属工会"},
{prop: "aidFundMemberUserType", label: "基金会员类型"},
{prop: "changeType", label: "变更类型"},
{prop: "applyTime", label: "申请日期"},
{prop: "taskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
],
}
},
methods: {
onFinishTask(row){
this.$confirm("您确定要重新提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/platform/medicalMutualAid/aidFund/applyMine/submitAgain", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
onDelete(id) {
this.$confirm("您确定要取消申请吗?取消后将不能撤回", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/platform/medicalMutualAid/aidFund/applyMine/delete", {id}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,6 @@
const AID_FUND_INFO = {
template: /*language=HTML*/
`
`
}
@@ -0,0 +1,97 @@
const APPLY_INFO = {
template: /*language=HTML*/ `
<div>
<div class="process-title">申请信息
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="申报人">{{viewData.username}}</el-descriptions-item>
<el-descriptions-item label="工号">{{viewData.loginname}}</el-descriptions-item>
<el-descriptions-item label="联系方式">{{viewData.mobile}}</el-descriptions-item>
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
<el-descriptions-item label="入校时间">{{$moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD')}}</el-descriptions-item>
<el-descriptions-item label="所在单位">{{viewData.unitName}}</el-descriptions-item>
<el-descriptions-item label="所在工会">{{viewData.unionName}}</el-descriptions-item>
</el-descriptions>
<template v-for="task in doneTasks">
<div class="task-panel mt10">
<div class="process-title">{{ task.displayName }}</div>
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
v-if="task.ext.isFirstTaskNode">
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
}}({{task.ext.initiatorAccount}})
</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
<el-descriptions-item label="办理结果">
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
:value="task.ext.submitType"></dict-tag>
</el-descriptions-item>
</el-descriptions>
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName
}}({{task.taskFormData.loginName}})
</el-descriptions-item>
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
<el-descriptions-item label="办理结果">
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
:value="task.ext.submitType"></dict-tag>
</el-descriptions-item>
<template v-if="task.taskFormData.tf_money">
<el-descriptions-item label="审批金额">{{ '¥' + task.taskFormData.tf_money }}
</el-descriptions-item>
</template>
<el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{
task.taskFormData.opinion }}
</el-descriptions-item>
</el-descriptions>
</div>
</template>
<slot></slot>
<snaker-chart ref="snakerChartRef"></snaker-chart>
</div>
`,
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
data() {
return {
viewData: {},
doneTasks: [],
row: null,
}
},
methods: {
// 打开
onOpen(row) {
this.row = row
this.info()
this.getDoneTasks()
},
// 获取申请信息
info() {
this.$axios.post("/platform/medicalMutualAid/aidFund/apply/info", {id: this.row.id}).then((res) => {
if (res.code === 0) {
this.viewData = res.data
}
})
},
// 获取已办任务审批记录
getDoneTasks() {
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
if (res.code === 0) {
this.doneTasks = res.data
}
})
},
// 查看流程图
openChart() {
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
}
},
}
@@ -0,0 +1,40 @@
const PAY_RECORD = {
template: /*language=HTML*/
`
<div>
<el-table :data="payRecordList" row-key="id" style="width: 100%"max-height="300">
<el-table-column label="序号"
type="index"></el-table-column>
<el-table-column label="缴费年份" prop="year"></el-table-column>
<el-table-column label="缴费金额" prop="money">
<template scope="{row:{money}}">
<el-tag>{{ money }}</el-tag>
</template>
</el-table-column>
<el-table-column label="是否扣款"prop="isPayed">
<template scope="{row:{isPayed}}">
<el-tag v-if="isPayed" type="success">已扣款</el-tag>
<el-tag v-else-if="!isPayed" type="info">未扣款</el-tag>
</template>
</el-table-column>
</el-table>
</div>
`,
data() {
return {
payRecordList: [],
}
},
methods: {
getUserPayRecordList() {
this.$axios.post('/platform/medicalMutualAid/aidFund/apply/getUserPayRecordList').then(resp => {
if (resp.code === 0) {
this.payRecordList = resp.data
}
})
},
}
}
@@ -0,0 +1,314 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
</el-input>
</search-item>
<search-item label="会员类型">
<dict-select v-model="pageForm.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
style="width: 100%"></dict-select>
</search-item>
<search-item label="变更类型">
<dict-select v-model="pageForm.changeType" code="AIDFUND_MEMBER_CHANGE_TYPE"
style="width: 100%"></dict-select>
</search-item>
<search-item label="所属工会">
<el-select @change="unionChange" clearable filterable style="width: 100%"
placeholder="请选择所属工会" v-model="pageForm.unionId">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in unionOptions">
</el-option>
</el-select>
</search-item>
<search-item label="所属单位">
<el-select @change="doSearch" clearable filterable style="width: 100%"
placeholder="请选择所属单位" v-model="pageForm.unitId">
<el-option
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in unitOptions">
</el-option>
</el-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="申请记录">
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.approval">
<el-radio-button label="true">已审核</el-radio-button>
<el-radio-button label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" header-align="center" label="序号"
type="index" width="60px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:key="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='instanceState'">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='aidFundMemberUserType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
:value="row.aidFundMemberUserType"></dict-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='changeType'">
<template v-if="row.changeType==='AIDFUND_MEMBER_CHANGE_TYPE_ONE'">
<el-tag type="success">
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
:value="row.changeType"></dict-tag>
</el-tag>
</template>
<template v-else>
<el-tag type="danger">
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
:value="row.changeType"></dict-tag>
</el-tag>
</template>
</template>
<template scope="{row}" v-else-if="column.prop=='money'">
<template v-if="row.changeType==='AIDFUND_MEMBER_CHANGE_TYPE_ONE'">
<el-tag>{{row.money}}</el-tag>
</template>
<template v-else></template>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
</el-button>
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<info ref="infoRef">
<div v-if="showApprovalForm">
<div class="process-title">
{{formData.taskName}}
</div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form">
<el-form-item label="审核状态" prop="submitType"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
审核状态:
<el-radio-group v-model="formData.submitType">
<el-radio-button :label="2">拒绝</el-radio-button>
<el-radio-button :label="1">通过</el-radio-button>
</el-radio-group>
</el-form-item>
<el-row :gutter="20"
v-if="formData.submitType===1
&&formData.changeType==='AIDFUND_MEMBER_CHANGE_TYPE_ONE'">
<el-col :span="12">
<el-form-item label="入校时间" prop="arrivalAtSchoolDate"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
入校时间:
<el-date-picker
:picker-options="pickerOptions"
@change="getPayMoney"
placeholder="选择日期"
type="date"
v-model="formData.arrivalAtSchoolDate"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="缴纳费用" prop="money">
缴纳费用:
<el-input readonly v-model="formData.money"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(formData.submitType)" size="small" type="primary">提交
</el-button>
<!--<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>-->
</el-row>
</div>
</info>
</template>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include("../common/applyInfo.js"){}#-->
new Vue({
el: "#app",
mixins: [initTableMixins],
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
data() {
return {
pageForm: {
year: this.$moment().format("YYYY"),
approval: false
},
tableColumns: [
{prop: "loginName", label: "工号"},
{prop: "userName", label: "姓名"},
{prop: "sex", label: "性别"},
{prop: "arrivalAtSchoolDate", label: "入校时间"},
{prop: "unitName", label: "所属单位"},
{prop: "unionName", label: "所属工会"},
{prop: "aidFundMemberUserType", label: "基金会员类型"},
{prop: "changeType", label: "变更类型"},
{prop: "applyTime", label: "申请日期"},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
],
showApprovalForm: false,
unionOptions: [],
unitOptions: [],
pickerOptions: {
disabledDate(date) {
return date.getTime() > new Date().getTime()
}
},
}
},
components: {
'info': APPLY_INFO,
},
methods: {
getPayMoney() {
this.$axios.post('/platform/medicalMutualAid/aidFund/foundationAudit/getPayMoney', {
arrivalAtSchoolDate: this.formData.arrivalAtSchoolDate,
userId: this.formData.userId
}).then(resp => {
if (resp.code === 0) {
this.$set(this.formData, 'money', resp.data)
}
})
},
onView(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = false
this.$refs.infoRef.onOpen(row)
})
},
openAudit(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = true
this.formData = {
id: row.id,
processTaskId: row.taskId,
taskName: row.curTaskName,
arrivalAtSchoolDate: row.arrivalAtSchoolDate,
userId: row.userId,
applyTime: row.applyTime,
changeType: row.changeType
}
this.$refs.infoRef.onOpen(row)
this.getPayMoney()
})
},
handleTaskAction(val) {
this.$refs.formRef.validate((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/platform/medicalMutualAid/aidFund/foundationAudit/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
}), id: this.formData.id
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
})
}
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
async unionChange(val) {
this.pageForm.unitId = null
this.unitOptions = await this.$businessTool.listUnit(val)
this.doSearch()
},
},
async created() {
this.pageData()
this.unitOptions = await this.$businessTool.listUnit()
this.unionOptions = await this.$businessTool.listUnion()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,161 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
</el-input>
</search-item>
<search-item label="会员类型">
<dict-select v-model="pageForm.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
style="width: 100%"></dict-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="基金会员">
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" header-align="center" label="序号"
type="index" width="60px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='aidFundMemberUserType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
:value="row.aidFundMemberUserType"></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
</el-button>
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<info ref="infoRef">
</info>
</template>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include("../common/aidFundInfo.js"){}#-->
new Vue({
el: "#app",
mixins: [initTableMixins],
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE"],
data() {
return {
pageForm: {
year: this.$moment().format("YYYY"),
approval: false
},
tableColumns: [
{prop: "loginName", label: "工号"},
{prop: "userName", label: "姓名"},
{prop: "sex", label: "性别"},
{prop: "arrivalAtSchoolDate", label: "入校时间"},
{prop: "unitName", label: "所属单位"},
{prop: "unionName", label: "所属工会"},
{prop: "aidFundMemberUserType", label: "基金会员类型"},
{prop: "aidFundMemberJoinTime", label: "加入时间"},
],
showApprovalForm: false
}
},
components: {
'info': AID_FUND_INFO,
},
methods: {
onView(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = false
this.$refs.infoRef.onOpen(row)
})
},
openAudit(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = true
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.$refs.infoRef.onOpen(row)
})
},
handleTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,204 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
</el-input>
</search-item>
<search-item label="会员类型">
<dict-select v-model="pageForm.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
style="width: 100%"></dict-select>
</search-item>
<search-item label="变更类型">
<dict-select v-model="pageForm.changeType" code="AIDFUND_MEMBER_CHANGE_TYPE"
style="width: 100%"></dict-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="申请记录">
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.approval">
<el-radio-button label="true">已审核</el-radio-button>
<el-radio-button label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" header-align="center" label="序号"
type="index" width="60px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='instanceState'">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='aidFundMemberUserType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
:value="row.aidFundMemberUserType"></dict-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='changeType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
:value="row.changeType"></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
</el-button>
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<info ref="infoRef">
<div v-if="showApprovalForm">
<div class="process-title">
{{formData.taskName}}
</div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form">
<el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</info>
</template>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include("../common/applyInfo.js"){}#-->
new Vue({
el: "#app",
mixins: [initTableMixins],
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
data() {
return {
pageForm: {
year: this.$moment().format("YYYY"),
approval: false
},
tableColumns: [
{prop: "loginName", label: "工号"},
{prop: "userName", label: "姓名"},
{prop: "sex", label: "性别"},
{prop: "arrivalAtSchoolDate", label: "入校时间"},
{prop: "unitName", label: "所属单位"},
{prop: "unionName", label: "所属工会"},
{prop: "aidFundMemberUserType", label: "基金会员类型"},
{prop: "changeType", label: "变更类型"},
{prop: "applyTime", label: "申请日期"},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
],
showApprovalForm: false
}
},
components: {
'info': APPLY_INFO,
},
methods: {
onView(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = false
this.$refs.infoRef.onOpen(row)
})
},
openAudit(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = true
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.$refs.infoRef.onOpen(row)
})
},
handleTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,204 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
</el-input>
</search-item>
<search-item label="会员类型">
<dict-select v-model="pageForm.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
style="width: 100%"></dict-select>
</search-item>
<search-item label="变更类型">
<dict-select v-model="pageForm.changeType" code="AIDFUND_MEMBER_CHANGE_TYPE"
style="width: 100%"></dict-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="申请记录">
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.approval">
<el-radio-button label="true">已审核</el-radio-button>
<el-radio-button label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" header-align="center" label="序号"
type="index" width="60px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='instanceState'">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='aidFundMemberUserType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
:value="row.aidFundMemberUserType"></dict-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='changeType'">
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
:value="row.changeType"></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
</el-button>
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="onRevoke(row)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<info ref="infoRef">
<div v-if="showApprovalForm">
<div class="process-title">
{{formData.taskName}}
</div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form">
<el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</info>
</template>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include("../common/applyInfo.js"){}#-->
new Vue({
el: "#app",
mixins: [initTableMixins],
store,
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
data() {
return {
pageForm: {
year: this.$moment().format("YYYY"),
approval: false
},
tableColumns: [
{prop: "loginName", label: "工号"},
{prop: "userName", label: "姓名"},
{prop: "sex", label: "性别"},
{prop: "arrivalAtSchoolDate", label: "入校时间"},
{prop: "unitName", label: "所属单位"},
{prop: "unionName", label: "所属工会"},
{prop: "aidFundMemberUserType", label: "基金会员类型"},
{prop: "changeType", label: "变更类型"},
{prop: "applyTime", label: "申请日期"},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
],
showApprovalForm: false
}
},
components: {
'info': APPLY_INFO,
},
methods: {
onView(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = false
this.$refs.infoRef.onOpen(row)
})
},
openAudit(row) {
this.$refs.guava.edit(() => {
this.showApprovalForm = true
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.$refs.infoRef.onOpen(row)
})
},
handleTaskAction(val) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify({
...this.formData,
submitType: val
})
}).then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
})
},
onRevoke(row) {
this.$confirm("您确定要撤回吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
}
})
})
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -156,12 +156,12 @@ layout("/layouts/platform.html"){
computed: {
welfareOptions() {
if (this.pageForm.projectId) {
return this.projectOptions.find((item) => item.id === this.pageForm.projectId).options
return this.projectOptions.find((item) => item.id === this.pageForm.projectId)?.options
}
return []
},
provideMode() {
return this.projectOptions.find((item) => item.id === this.pageForm.projectId).provideMode
return this.projectOptions.find((item) => item.id === this.pageForm.projectId)?.provideMode
}
},
methods: {