first commit
This commit is contained in:
+216
@@ -0,0 +1,216 @@
|
||||
<!--#
|
||||
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="姓  名">
|
||||
<el-input disabled placeholder="请输入内容"
|
||||
v-model="formData.userName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="工  号">
|
||||
<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"){}#-->
|
||||
new Vue({
|
||||
el: '#app',
|
||||
store,
|
||||
dicts: ["AIDFUND_MEMBER_USER_TYPE"],
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
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>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+151
@@ -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>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
<!--#
|
||||
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"
|
||||
@change="doSearch"
|
||||
></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 v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%" @change="unionChange">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-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%" v-loading="tableLoading">
|
||||
<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 v-slot="{row}" v-if="column.prop=='changeType'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</template>
|
||||
<template v-slot="{row}" v-else-if="column.prop=='applyTime'">
|
||||
<template v-if="row.applyTime">
|
||||
{{$moment(row.applyTime).format('YYYY-MM-DD')}}
|
||||
</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 @click="onDelete(row)" :loading="formLoading" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<info ref="infoRef"></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: {
|
||||
unitId: '',
|
||||
unionId: '',
|
||||
year: this.$moment().format("YYYY"),
|
||||
},
|
||||
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: "变更时间"},
|
||||
],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'info': APPLY_INFO,
|
||||
},
|
||||
methods: {
|
||||
onView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onDelete(row) {
|
||||
this.$confirm("确定要删除【" + row.username + "】的变更记录吗?删除后将同步删除关联流程记录", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.formLoading = true
|
||||
this.$axios.post(loc() + "/delete", {id: row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.pageForm.unitId = null
|
||||
this.unitList = await this.$businessTool.listUnit(val)
|
||||
this.doSearch()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
<!--#
|
||||
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"
|
||||
@change="doSearch"
|
||||
></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%" @change="unionChange">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-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%" v-loading="tableLoading">
|
||||
<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"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
unionId: '',
|
||||
year: this.$moment().format("YYYY"),
|
||||
},
|
||||
unionList: [],
|
||||
tableColumns: [
|
||||
{prop: "unionName", label: "分工会"},
|
||||
{prop: "YEAR_BEGIN", label: "年初数量"},
|
||||
{prop: "AIDFUND_MEMBER_CHANGE_TYPE_EIGTH", label: "会员退休(不变号)"},
|
||||
{prop: "AIDFUND_MEMBER_CHANGE_TYPE_ONE", label: "新增会员"},
|
||||
{prop: "AIDFUND_MEMBER_CHANGE_TYPE_FOUR", label: "自愿退出"},
|
||||
{prop: "AIDFUND_MEMBER_CHANGE_TYPE_FIVE", label: "会员去世"},
|
||||
{prop: "currentAidFundMember", label: "当前数量"},
|
||||
]
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
|
||||
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
<!--#include("payRecord.js"){}#-->
|
||||
const AID_FUND_INFO = {
|
||||
template: /*language=HTML*/
|
||||
`
|
||||
<div>
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="用户信息" name="one">
|
||||
<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.aidFundMemberUserType}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="起扣时间">
|
||||
{{viewData.aidFundDeductTime}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所在单位">{{viewData.unitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在工会">{{viewData.unionName}}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="变更记录" name="two">
|
||||
<el-table :data="changeRecordTableData" ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column 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 v-slot="{row}" v-if="column.prop=='changeType'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</template>
|
||||
<template v-slot="{row}" v-else-if="column.prop=='applyTime'">
|
||||
<template v-if="row.applyTime">
|
||||
{{$moment(row.applyTime).format('YYYY-MM-DD')}}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="缴费记录" name="three">
|
||||
<pay_record ref="payRecord" :max-height="650"></pay_record>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
`,
|
||||
store,
|
||||
dicts: ["AIDFUND_MEMBER_USER_TYPE", "AIDFUND_MEMBER_CHANGE_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
changeRecordTableData: [],
|
||||
activeName:"one",
|
||||
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: "变更时间"},
|
||||
],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'pay_record': PAY_RECORD,
|
||||
},
|
||||
methods: {
|
||||
// 打开
|
||||
onOpen(row) {
|
||||
this.row = row
|
||||
this.info()
|
||||
this.findChangeRecordList()
|
||||
this.$refs.payRecord.getUserPayRecordList(row.id)
|
||||
},
|
||||
// 获取申请信息
|
||||
info() {
|
||||
this.$axios.post("/platform/medicalMutualAid/aidFund/manage/findOne", {userId: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取申请信息
|
||||
findChangeRecordList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/aidFund/manage/findChangeRecordList", {userId: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.changeRecordTableData = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
+97
@@ -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="基金会员类型">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
|
||||
:value="viewData.aidFundMemberUserType"></dict-tag>
|
||||
</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>
|
||||
|
||||
<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", "PROCESS_TASK_SUBMIT_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)
|
||||
}
|
||||
},
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
const PAY_RECORD = {
|
||||
template: /*language=HTML*/
|
||||
`
|
||||
<div>
|
||||
<el-table :data="payRecordList" row-key="id" style="width: 100%" :max-height="maxHeight" show-summary
|
||||
:summary-method="getSummaries">
|
||||
<el-table-column label="序号" type="index" width="80"></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>
|
||||
`,
|
||||
props: {
|
||||
maxHeight: {
|
||||
type: String,
|
||||
default: '300'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
payRecordList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '合计';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if ([1, 3].includes(index)) {
|
||||
sums[index] = '';
|
||||
} else {
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += ' 元';
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
},
|
||||
getUserPayRecordList(userId) {
|
||||
this.$axios.post('/platform/medicalMutualAid/aidFund/apply/getUserPayRecordList', {userId}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.payRecordList = resp.data
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
+451
@@ -0,0 +1,451 @@
|
||||
<!--#
|
||||
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-button @click="openBatchAudit"
|
||||
:disabled="pageForm.approval===true||pageForm.approval==='true'"
|
||||
size="small"
|
||||
type="primary">批量审核
|
||||
</el-button>
|
||||
<el-button @click="exportApplyRecord"
|
||||
icon="el-icon-download"
|
||||
size="small"
|
||||
type="primary">导出
|
||||
</el-button>
|
||||
<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
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<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'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</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>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="batchAuditVisible"
|
||||
title="批量审核"
|
||||
width="40%">
|
||||
<el-form :model="batchForm" :rules="batchFormRules" label-width="100px" ref="batchFormRef">
|
||||
<el-form-item label="审核状态" prop="submitType">
|
||||
<el-radio-group v-model="batchForm.submitType">
|
||||
<el-radio-button :label="2">拒绝</el-radio-button>
|
||||
<el-radio-button :label="1">通过</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核名单">
|
||||
<el-table :data="batchAuditTableData" row-key="id" style="width: 100%" max-height="300">
|
||||
<el-table-column label="姓名" prop="userName" min-width="100"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName" min-width="120"></el-table-column>
|
||||
<el-table-column label="单位" prop="unitName" min-width="140" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="入校时间" prop="arrivalAtSchoolDate" min-width="110"></el-table-column>
|
||||
<el-table-column label="缴费金额" prop="money" min-width="100"></el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<el-alert
|
||||
:closable="false"
|
||||
class="mb10"
|
||||
title="批量通过时,将按人员当前入校时间自动提交;缺少入校时间的记录会审核失败。"
|
||||
type="warning"
|
||||
v-if="batchForm.submitType===1">
|
||||
</el-alert>
|
||||
<el-form-item label="审批意见" prop="tf_opinion">
|
||||
<user-opinion-textarea v-model="batchForm.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="batchAuditVisible = false">取 消</el-button>
|
||||
<el-button @click="submitBatchAudit" type="primary">提 交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<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="100px" label-suffix=":">
|
||||
<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="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-button @click="$refs.guava.index()" size="small">取消</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: "money", label: "缴费金额"},
|
||||
{prop: "changeType", label: "变更类型"},
|
||||
{prop: "applyTime", label: "申请日期"},
|
||||
{prop: "curTaskName", label: "当前节点"},
|
||||
{prop: "instanceState", label: "流程状态"}
|
||||
],
|
||||
showApprovalForm: false,
|
||||
batchAuditVisible: false,
|
||||
batchAuditTableData: [],
|
||||
batchForm: {
|
||||
submitType: 1,
|
||||
tf_opinion: ""
|
||||
},
|
||||
batchFormRules: {
|
||||
submitType: [
|
||||
{required: true, message: "必填", trigger: ["change", "blur"]}
|
||||
],
|
||||
tf_opinion: [
|
||||
{required: true, message: "必填", trigger: ["change", "blur"]}
|
||||
]
|
||||
},
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
pickerOptions: {
|
||||
disabledDate(date) {
|
||||
return date.getTime() > new Date().getTime()
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'info': APPLY_INFO,
|
||||
},
|
||||
methods: {
|
||||
openBatchAudit() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (!selection || selection.length === 0) {
|
||||
this.$message.warning("请先勾选需要审核的记录")
|
||||
return
|
||||
}
|
||||
this.$set(this, "batchForm", {
|
||||
submitType: 1,
|
||||
tf_opinion: ""
|
||||
})
|
||||
this.$set(this, "batchAuditTableData", selection.map(row => {
|
||||
return {
|
||||
id: row.id,
|
||||
userName: row.userName,
|
||||
loginName: row.loginName,
|
||||
unitName: row.unitName,
|
||||
arrivalAtSchoolDate: row.arrivalAtSchoolDate,
|
||||
money: row.money
|
||||
}
|
||||
}))
|
||||
this.$set(this, "batchAuditVisible", true)
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.batchFormRef) {
|
||||
this.$refs.batchFormRef.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
submitBatchAudit() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (!selection || selection.length === 0) {
|
||||
this.$message.warning("请先勾选需要审核的记录")
|
||||
return
|
||||
}
|
||||
this.$refs.batchFormRef.validate((valid) => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
let message = "确定要审核这 " + selection.length + " 条记录吗?"
|
||||
const joinCount = selection.filter(row => row.changeType === "AIDFUND_MEMBER_CHANGE_TYPE_ONE").length
|
||||
if (this.batchForm.submitType === 1 && joinCount > 0) {
|
||||
message = "确定要批量通过这 " + selection.length + " 条记录吗?其中有 " + joinCount + " 条加入基金记录将按当前人员入校时间自动审核。"
|
||||
}
|
||||
this.$confirm(message, "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const ids = selection.map(row => row.id)
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: "正在批量审核...",
|
||||
spinner: "el-icon-loading",
|
||||
background: "rgba(0, 0, 0, 0.7)"
|
||||
})
|
||||
this.$axios.post("/platform/medicalMutualAid/aidFund/foundationAudit/batchExecuteTask", {
|
||||
ids: JSON.stringify(ids),
|
||||
data: JSON.stringify(this.batchForm)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
const result = res.data || {}
|
||||
const successCount = result.successCount || 0
|
||||
const failCount = result.failCount || 0
|
||||
const failMessages = result.failMessages || []
|
||||
if (failCount > 0) {
|
||||
let failText = failMessages.slice(0, 3).join(";")
|
||||
if (failMessages.length > 3) {
|
||||
failText = failText + ";其余记录请查看列表后重试"
|
||||
}
|
||||
this.$message.warning("批量审核完成:成功 " + successCount + " 条,失败 " + failCount + " 条。" + failText)
|
||||
} else {
|
||||
this.$message.success("批量审核完成:成功 " + successCount + " 条")
|
||||
}
|
||||
this.$set(this, "batchAuditVisible", false)
|
||||
this.doSearch()
|
||||
this.$refs.table.clearSelection()
|
||||
}
|
||||
}).finally(() => {
|
||||
loading.close()
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
exportApplyRecord() {
|
||||
this.$downLoad("/platform/medicalMutualAid/aidFund/foundationAudit/exportApplyRecord", this.pageForm)
|
||||
},
|
||||
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>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
<!--#
|
||||
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"
|
||||
:clearable="false"
|
||||
@change="doSearch"
|
||||
></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="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%" @change="unionChange">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="基金会员">
|
||||
<el-button @click="exportHistoryRecord"
|
||||
size="small"
|
||||
icon="el-icon-download"
|
||||
type="primary">导出名单
|
||||
</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<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 v-slot="{row}" v-if="column.prop=='aidFundMemberUserType'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
|
||||
:value="row.aidFundMemberUserType"></dict-tag>
|
||||
</template>
|
||||
<template v-slot="{row}" v-else-if="column.prop=='aidFundMemberJoinTime'">
|
||||
<template v-if="row.aidFundMemberJoinTime">
|
||||
{{$moment(row.aidFundMemberJoinTime).format("YYYY-MM-DD")}}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
|
||||
</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: {
|
||||
unitId: '',
|
||||
unionId: '',
|
||||
year: this.$moment().format("YYYY"),
|
||||
isPayed: null
|
||||
},
|
||||
tableColumns: [
|
||||
{prop: "year", label: "年度"},
|
||||
{prop: "loginname", label: "工号"},
|
||||
{prop: "username", label: "姓名"},
|
||||
{prop: "sex", label: "性别"},
|
||||
{prop: "aidFundMemberUserType", label: "基金会员类型"},
|
||||
{prop: "unitName", label: "所属单位"},
|
||||
{prop: "unionName", label: "所属工会"},
|
||||
{prop: "aidFundMemberJoinTime", label: "加入时间"},
|
||||
],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
exportHistoryRecord(){
|
||||
this.$downLoad('/platform/medicalMutualAid/aidFund/historyRecord/exportHistoryRecord', this.pageForm)
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.pageForm.unitId = null
|
||||
this.unitList = await this.$businessTool.listUnit(val)
|
||||
this.doSearch()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+498
@@ -0,0 +1,498 @@
|
||||
<!--#
|
||||
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-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%" @change="unionChange">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="基金会员">
|
||||
<el-tag :effect="pageForm.notPayedCurrentYear?'dark':'plain'"
|
||||
@click="pageForm.notPayedCurrentYear=!pageForm.notPayedCurrentYear;doSearch();"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.createPayList')" class="mr10">
|
||||
当年未缴费【基金会员】名单
|
||||
</el-tag>
|
||||
|
||||
<el-button @click="batchExit" size="small"
|
||||
type="danger" v-if="pageForm.notPayedCurrentYear"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.createPayList')">
|
||||
批量设置为退会
|
||||
</el-button>
|
||||
|
||||
<el-button @click="openBatchChangeType" size="small"
|
||||
type="primary"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.createPayList')">
|
||||
批量变更
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportMemberList" icon="el-icon-download" size="small" type="primary"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage')">
|
||||
导出会员名单
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportNewMember" icon="el-icon-download" size="small" type="primary"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.exportNewMember')" class="mr10">
|
||||
导出{{new
|
||||
Date().getFullYear()}}年新会员名单
|
||||
</el-button>
|
||||
<el-dropdown @command="dropdownCommand"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.createPayList')" class="mr10">
|
||||
<el-button size="small" type="primary">
|
||||
备份会员名单<i class="el-icon-arrow-down el-icon--right"></i>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{action:backupMember,value:year}"
|
||||
v-for="year in yearOptions"
|
||||
:key="year">
|
||||
{{year}}年
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-dropdown @command="dropdownCommand"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.createPayList')">
|
||||
<el-button size="small" type="primary"
|
||||
>
|
||||
生成缴费名单<i class="el-icon-arrow-down el-icon--right"></i>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{action:createPayList,value:year}"
|
||||
v-for="year in payYearOptions"
|
||||
:key="year">
|
||||
{{year}}年
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
|
||||
<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 v-slot="{row}" v-if="column.prop=='aidFundMemberUserType'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
|
||||
:value="row.aidFundMemberUserType"></dict-tag>
|
||||
</template>
|
||||
<template v-slot="{row}" v-if="column.prop=='aidFundMemberJoinTime'">
|
||||
<template v-if="row.aidFundMemberJoinTime">
|
||||
{{$moment(row.aidFundMemberJoinTime).format('YYYY-MM-DD')}}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" fixed="right" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button @click="onEditMemberType(row)" size="mini" type="primary">修改基金会员类型
|
||||
</el-button>
|
||||
<el-button @click="onEditChangeType(row)" size="mini" type="primary">变更
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<info ref="infoRef">
|
||||
</info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="aidFundMemberUserTypeVisible"
|
||||
title="修改基金会员"
|
||||
width="40%">
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-width="120px"
|
||||
ref="form">
|
||||
<el-form-item label="工号" prop="loginname">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.loginname">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="username">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.username">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="基金会员类型" prop="aidFundMemberUserType">
|
||||
<dict-select v-model="formData.aidFundMemberUserType" clearable code="AIDFUND_MEMBER_USER_TYPE"
|
||||
placeholder="请选择基金会员类型"
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="aidFundMemberUserTypeVisible = false">取 消</el-button>
|
||||
<el-button @click="doEditAidFundMemberUserType" type="primary">提 交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="batchChangeTypeVisible"
|
||||
title="会员批量变更"
|
||||
width="40%">
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-width="100px"
|
||||
ref="form">
|
||||
<el-form-item>
|
||||
<el-table :data="changeTableData" ref="changeTable" row-key="id" style="width: 100%" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="60px"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="rowTableDelete(row)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<el-form-item label="变更类型" prop="changeType">
|
||||
<dict-select v-model="formData.changeType" clearable code="AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
placeholder="请选择变更类型"
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="batchChangeTypeVisible = false">取 消</el-button>
|
||||
<el-button @click="doBatchChangeType" type="primary">提 交</el-button>
|
||||
</span>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="changeTypeVisible"
|
||||
title="会员变更"
|
||||
width="40%">
|
||||
<el-form :model="formData" :rules="formRules" label-width="100px"
|
||||
ref="form">
|
||||
<el-form-item label="工号" prop="loginname">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.loginname">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="username">
|
||||
<el-input
|
||||
disabled
|
||||
v-model="formData.username">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="变更类型" prop="changeType">
|
||||
<dict-select v-model="formData.changeType" clearable code="AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
placeholder="请选择变更类型"
|
||||
style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="changeTypeVisible = false">取 消</el-button>
|
||||
<el-button @click="doEditChangeType" type="primary">提 交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
|
||||
<!--#include("../common/aidFundInfo.js"){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
store,
|
||||
dicts: ["AIDFUND_MEMBER_USER_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
unitId: '',
|
||||
unionId: '',
|
||||
notPayedCurrentYear: 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,
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
payYearOptions: [],
|
||||
yearOptions: [],
|
||||
|
||||
aidFundMemberUserTypeVisible: false,
|
||||
changeTypeVisible: false,
|
||||
|
||||
formRules: {
|
||||
aidFundMemberUserType: [
|
||||
{required: true, message: '请选择基金会员类型', trigger: 'change'}
|
||||
],
|
||||
changeType: [
|
||||
{required: true, message: '请选择变更类型', trigger: 'change'}
|
||||
]
|
||||
},
|
||||
|
||||
batchChangeTypeVisible: false,
|
||||
changeTableData: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'info': AID_FUND_INFO,
|
||||
},
|
||||
methods: {
|
||||
doBatchChangeType() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (selection.length === 0) {
|
||||
this.$message.warning('请勾选需要变更的人员')
|
||||
return
|
||||
}
|
||||
this.$refs.form.validate(valid => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
|
||||
this.$confirm('确定要变更【' + selection.map(v => v.username) + '】吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
const ids = selection.map(v => v.id)
|
||||
this.$axios.post('/platform/medicalMutualAid/aidFund/manage/doBatchChangeType', {
|
||||
ids: JSON.stringify(ids),
|
||||
changeType: this.formData.changeType
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
this.$refs.table.clearSelection()
|
||||
this.batchChangeTypeVisible = false
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
},
|
||||
rowTableDelete(row) {
|
||||
this.$confirm('确定要删除【' + row.username + '】吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$refs.table.toggleRowSelection(row, false)
|
||||
})
|
||||
},
|
||||
openBatchChangeType() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (selection.length === 0) {
|
||||
this.$message.warning('请勾选需要变更的人员')
|
||||
return
|
||||
}
|
||||
this.changeTableData = selection
|
||||
this.batchChangeTypeVisible = true
|
||||
},
|
||||
onEditChangeType(row) {
|
||||
this.formData = clone(row)
|
||||
this.changeTypeVisible = true
|
||||
},
|
||||
doEditChangeType() {
|
||||
this.$confirm('确定要变更【' + this.formData.username + '】吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/doEditChangeType", {
|
||||
userId: this.formData.id,
|
||||
changeType: this.formData.changeType
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
this.changeTypeVisible = false
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
doEditAidFundMemberUserType() {
|
||||
this.$confirm('确定要修改【' + this.formData.username + '】的基金会员类型吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/doEditAidFundMemberUserType", {
|
||||
userId: this.formData.id,
|
||||
aidFundMemberUserType: this.formData.aidFundMemberUserType
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
this.$refs.table.clearSelection()
|
||||
this.aidFundMemberUserTypeVisible = false
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
onEditMemberType(row) {
|
||||
this.formData = clone(row)
|
||||
this.aidFundMemberUserTypeVisible = true
|
||||
},
|
||||
batchExit() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (selection.length === 0) {
|
||||
this.$message.warning('请勾选需要设置为退会的人员')
|
||||
return
|
||||
}
|
||||
const ids = selection.map(v => v.id)
|
||||
this.$confirm('请核实勾选人员的退会原因,您确定要将勾选的人员设置为未缴费吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/batchExit", {ids: JSON.stringify(ids)}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
this.$refs.table.clearSelection()
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
},
|
||||
backupMember(year) {
|
||||
this.$confirm('您确定要备份' + year + '年的数据吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.tableLoading = true
|
||||
this.$axios.post(loc() + "/backupMember", {year}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.tableLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
createPayList(year) {
|
||||
let msg = "请确认是否生成缴费名单?"
|
||||
if (year === new Date().getFullYear()) {
|
||||
msg = "您生成的" + year + "年度的缴费名单,将有可能覆盖已缴费人员的信息!请确认是否生成?"
|
||||
}
|
||||
this.$confirm(msg, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.tableLoading = true;
|
||||
this.$axios.post(loc() + "/createPayList", {year}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.tableLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
exportNewMember() {
|
||||
this.$downLoad(loc() + "/exportNewMember")
|
||||
},
|
||||
exportMemberList() {
|
||||
this.$downLoad(loc() + "/exportMemberList", this.pageForm)
|
||||
},
|
||||
getYearOptions() {
|
||||
let year = new Date().getFullYear();
|
||||
let arr = []
|
||||
for (let i = year; i >= year - 3; i--) {
|
||||
arr.push(i)
|
||||
}
|
||||
this.yearOptions = arr
|
||||
},
|
||||
getPayYearOptions() {
|
||||
let year = new Date().getFullYear() + 1;
|
||||
let arr = []
|
||||
for (let i = year; i >= year - 1; i--) {
|
||||
arr.push(i)
|
||||
}
|
||||
this.payYearOptions = arr
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.infoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.pageForm.unitId = null
|
||||
this.unitList = await this.$businessTool.listUnit(val)
|
||||
this.doSearch()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.getPayYearOptions()
|
||||
this.getYearOptions()
|
||||
this.pageData()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+263
@@ -0,0 +1,263 @@
|
||||
<!--#
|
||||
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"
|
||||
:clearable="false"
|
||||
@change="doSearch"
|
||||
></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="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||
style="width: 100%" @change="unionChange">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable
|
||||
style="width: 100%">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="基金会员">
|
||||
<el-radio-group @change="doSearch" size="small"
|
||||
v-model="pageForm.isPayed">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="1">已缴费</el-radio-button>
|
||||
<el-radio-button :label="0">未缴费</el-radio-button>
|
||||
</el-radio-group>
|
||||
|
||||
<el-button @click="openImport"
|
||||
size="small"
|
||||
icon="el-icon-upload2"
|
||||
type="primary">导入缴费记录
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportPayRecord"
|
||||
size="small"
|
||||
icon="el-icon-download"
|
||||
type="primary">导出名单
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportYearPayRecord"
|
||||
size="small"
|
||||
icon="el-icon-download"
|
||||
type="primary">导出会员缴费金额
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportAnnualPayMemberList"
|
||||
size="small"
|
||||
icon="el-icon-download"
|
||||
type="primary">导出年度缴费名单
|
||||
</el-button>
|
||||
|
||||
<el-button :disabled="tableData.length==0" :loading="tableLoading" @click="clearPayRecord"
|
||||
icon="el-icon-delete"
|
||||
size="small"
|
||||
type="danger">清空{{pageForm.year}}年缴费名单
|
||||
</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<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 v-slot="{row}" v-if="column.prop=='aidFundMemberUserType'">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
|
||||
:value="row.aidFundMemberUserType"></dict-tag>
|
||||
</template>
|
||||
<template v-slot="{row}" v-else-if="column.prop=='isPayed'">
|
||||
<template>
|
||||
<el-tag type="success" v-if="row.isPayed">已缴费</el-tag>
|
||||
<el-tag type="info" v-else>未缴费</el-tag>
|
||||
</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 @click="onPayed(row,1)" size="mini" type="primary" v-if="!row.isPayed">设置为已缴费
|
||||
</el-button>
|
||||
<el-button @click="onPayed(row,0)" size="mini" type="danger" v-if="row.isPayed">设置为未缴费
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<file-import
|
||||
ref="viewImport"
|
||||
temp_url="/platform/medicalMutualAid/aidFund/payRecord/downloadImportTemp"
|
||||
post_url="/platform/medicalMutualAid/aidFund/payRecord/doImport"
|
||||
@flush="pageData"
|
||||
></file-import>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<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", "AIDFUND_MEMBER_CHANGE_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
unitId: '',
|
||||
unionId: '',
|
||||
year: this.$moment().format("YYYY"),
|
||||
isPayed: null
|
||||
},
|
||||
tableColumns: [
|
||||
{prop: "year", label: "年度"},
|
||||
{prop: "loginname", label: "工号"},
|
||||
{prop: "username", label: "姓名"},
|
||||
{prop: "sex", label: "性别"},
|
||||
{prop: "aidFundMemberUserType", label: "基金会员类型"},
|
||||
{prop: "unitName", label: "所属单位"},
|
||||
{prop: "unionName", label: "所属工会"},
|
||||
{prop: "money", label: "缴费金额"},
|
||||
{prop: "isPayed", label: "是否缴费"},
|
||||
],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'info': AID_FUND_INFO,
|
||||
"file-import": httpVueLoader("/components/plugins/sysImport/index.vue"),
|
||||
},
|
||||
methods: {
|
||||
onView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.infoRef.onOpen({"id": row.userId})
|
||||
})
|
||||
},
|
||||
openImport() {
|
||||
this.$refs.guava.edit(() => {
|
||||
setTimeout(() => {
|
||||
this.$refs.viewImport.resetImportData()
|
||||
this.$refs.viewImport.importData.year = this.pageForm.year
|
||||
}, 500)
|
||||
})
|
||||
},
|
||||
exportYearPayRecord(){
|
||||
this.$downLoad('/platform/medicalMutualAid/aidFund/payRecord/exportYearPayRecord', this.pageForm)
|
||||
},
|
||||
exportAnnualPayMemberList() {
|
||||
this.$downLoad('/platform/medicalMutualAid/aidFund/payRecord/exportAnnualPayMemberList', this.pageForm)
|
||||
},
|
||||
exportPayRecord() {
|
||||
this.$downLoad('/platform/medicalMutualAid/aidFund/payRecord/exportPayRecord', this.pageForm)
|
||||
},
|
||||
clearPayRecord() {
|
||||
if (this.pageForm.year < (new Date().getFullYear()).toString()) {
|
||||
this.notifyWarning("历史数据不能删除!")
|
||||
return;
|
||||
}
|
||||
this.$confirm("确定将【" + this.pageForm.year + "】年基金会员的缴费名单清空吗?", '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.tableLoading = true
|
||||
this.$axios.post(loc() + "/clearPayRecord", {
|
||||
year: this.pageForm.year
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
this.tableLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
onPayed(row, isPayed) {
|
||||
this.$confirm("确定将【" + row.username + "】设置为" + (isPayed ? "已缴费" : "未缴费") + "吗?", '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.tableLoading = true
|
||||
this.$axios.post(loc() + "/onPayed", {id: row.id, isPayed: isPayed}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
this.tableLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.pageForm.unitId = null
|
||||
this.unitList = await this.$businessTool.listUnit(val)
|
||||
this.doSearch()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+204
@@ -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="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</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>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+230
@@ -0,0 +1,230 @@
|
||||
<!--#
|
||||
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>
|
||||
<el-button @click="notifyUnapprovedUnionChairman" :loading="formLoading" size="small" type="primary">
|
||||
一键通知未审核工会
|
||||
</el-button>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<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="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</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)
|
||||
})
|
||||
},
|
||||
notifyUnapprovedUnionChairman() {
|
||||
this.$confirm("确定要通知未审核的分工会吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.formLoading = true
|
||||
this.$axios.post(loc() + "/notifyUnapprovedUnionChairman", {
|
||||
year: this.pageForm.year,
|
||||
aidFundMemberUserType: this.pageForm.aidFundMemberUserType,
|
||||
changeType: this.pageForm.changeType
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
const loginNames = res.data || []
|
||||
this.$alert(loginNames.length ? loginNames.join("、") : "暂无需要发送通知的人员", "需要发送人的工号", {
|
||||
confirmButtonText: "确定"
|
||||
})
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
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>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+583
@@ -0,0 +1,583 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.cost .el-form-item {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<custom-card>
|
||||
<snaker-start slot="header" label="医疗补助申请" define_key="YLBB">
|
||||
<template slot="header-right-label">
|
||||
<el-link type="primary" @click="tipsDialog=true" class="mr10">查看补助标准</el-link>
|
||||
</template>
|
||||
</snaker-start>
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-suffix=":"
|
||||
ref="formRef" class="flow-task-form">
|
||||
<table-tool label="申请基础信息"></table-tool>
|
||||
<el-descriptions :column="3" border>
|
||||
<template>
|
||||
<el-descriptions-item label="申请人姓名"
|
||||
v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')|| $auth.hasRole('RETIREMENT_WORKPLACE')">
|
||||
<el-form-item prop="userId" label="申请人姓名">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
v-model="formData.userId"
|
||||
filterable
|
||||
:clearable="false"
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查询"
|
||||
:remote-method="createRemoteMethod"
|
||||
@change="userChange">
|
||||
<el-option
|
||||
v-for="item in userOptions"
|
||||
:key="item.id"
|
||||
:label="item.username+'('+item.loginname+')'"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请人姓名" v-else>{{formData.userName}}</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item label="性别">
|
||||
<el-form-item label="性别">
|
||||
<el-input readonly v-model="formData.sex"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="年龄">
|
||||
<el-form-item label="年龄">
|
||||
<el-input readonly v-model="formData.age"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="所在单位">
|
||||
<el-form-item label="所在单位">
|
||||
<el-input readonly v-model="formData.unitName"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="身份证号">
|
||||
<el-form-item label="身份证号" prop="idCard">
|
||||
<el-input clearable v-model="formData.idCard" placeholder="请输入身份证号"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="累计补助金额">
|
||||
<el-form-item label="累计补助金额" prop="medicalSubsidyMoney">
|
||||
<el-input readonly v-model="formData.medicalSubsidyMoney"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="申请次数">
|
||||
<el-form-item label="申请次数">
|
||||
<el-input readonly v-model="formData.applyNum"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="家庭住址" :span="2">
|
||||
<el-form-item label="家庭住址" prop="homeAddress">
|
||||
<el-input placeholder="请填写家庭住址" v-model="formData.homeAddress"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="联系电话">
|
||||
<el-form-item label="联系电话" prop="mobile">
|
||||
<el-input placeholder="请填写联系电话" v-model="formData.mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="上年总收入">
|
||||
<el-form-item label="上年总收入" prop="familyIncome">
|
||||
<el-input-number :min="0" placeholder="请填写上年总收入"
|
||||
v-model="formData.familyIncome"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="报销类型">
|
||||
<el-form-item label="报销类型" prop="subsidyType">
|
||||
<el-radio-group v-model="formData.subsidyType">
|
||||
<el-radio-button :label="i" v-for="i in subsidyTypeList" :key="i">
|
||||
{{i}}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="疾病种类" :span="3">
|
||||
<el-form-item label="疾病种类" prop="diseaseId">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="formData.diseaseId" filterable @change="diseaseIdChange">
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="备注" :span="3">
|
||||
<el-form-item label="备注" prop="note">
|
||||
<el-input clearable maxlength="100" placeholder="请输入具体病情说明,不要超过100字"
|
||||
rows="3" type="textarea" v-model="formData.note">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" :span="3">
|
||||
<el-form-item label="附件" prop="files">
|
||||
<file-upload :value.sync="formData.files"
|
||||
upload_mode="drag"
|
||||
:upload_number="50"
|
||||
:upload_size="1024 * 1024 * 20"
|
||||
upload_result_category="array"
|
||||
complete_result></file-upload>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<table-tool label="住院记录"></table-tool>
|
||||
<el-table :data="formData.costList" border show-summary class="cost">
|
||||
<el-table-column label="序号" type="index" width="50px" fixed></el-table-column>
|
||||
<el-table-column label="住院时间段" width="300">
|
||||
<template v-slot="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
label="住院时间段"
|
||||
:prop="'costList.'+$index+'.visitTime'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="选择住院时间段"
|
||||
type="daterange"
|
||||
v-model="row.visitTime"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="住院医院" width="200">
|
||||
<template v-slot="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
label="住院医院"
|
||||
:prop="'costList.'+$index+'.visitHospital'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="住院医院" v-model="row.visitHospital"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="住院医疗费总额(不含门诊)" width="180" prop="hospitalSumMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="住院医疗费总额(不含门诊)"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
v-model="row.hospitalSumMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实际报销金额" width="180" prop="reimbursementMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="实际报销金额"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
v-model="row.reimbursementMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)允许报销范围内个人承担部分金额"
|
||||
width="180" prop="singleBearMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number :min="0" placeholder="个人承担部分金额"
|
||||
controls-position="right" style="width: 100%"
|
||||
v-model="row.singleBearMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)自费部分金额" width="180" prop="personExpenseMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="自费部分金额"
|
||||
:min="0"
|
||||
controls-position="right"
|
||||
disabled style="width: 100%"
|
||||
v-model="row.personExpenseMoney = calcPersonExpenseMoney(row)"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="重病门诊自费金额" width="180" prop="outpatientServiceMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="门诊费"
|
||||
:min="0"
|
||||
:disabled="!formData.isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
v-model="row.outpatientServiceMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="非住院肾衰竭治疗、靶向药" width="180" prop="bxyMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="靶向药"
|
||||
:min="0"
|
||||
:disabled="!formData.isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
v-model="row.bxyMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100px" fixed="right">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<el-button type="primary" @click="formData.costList.push({
|
||||
hospitalSumMoney:0,
|
||||
reimbursementMoney:0,
|
||||
singleBearMoney:0,
|
||||
outpatientServiceMoney:0,
|
||||
bxyMoney:0,
|
||||
})" size="mini">增加
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
<template v-slot="scope">
|
||||
<el-button @click="formData.costList.splice(scope.$index,1)" icon="el-icon-delete" size="mini"
|
||||
type="danger">
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</el-form>
|
||||
|
||||
<template slot="footer">
|
||||
<el-button type="primary" plain @click="onSave" :loading="formLoading">保存</el-button>
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId" :loading="formLoading">提交</el-button>
|
||||
<el-button type="primary" @click="onFinishTask" v-else :loading="formLoading">提交</el-button>
|
||||
</template>
|
||||
</custom-card>
|
||||
|
||||
<el-dialog :visible.sync="tipsDialog" title="申请补助须知" top="50px" width="60%">
|
||||
<p>
|
||||
1.享受公费医疗的互助基金会员患本办法所列疾病,住院治疗期间发生的医疗费经校医院审核并报销后,个人承担费用(不含国家规定应该由个人支付的费用)年度累计超过
|
||||
5000 元者,可申请并获得补助。
|
||||
</p>
|
||||
|
||||
<p>
|
||||
2.参加社会医疗保险的互助基金会员患本办法所列疾病,住院治疗期间发生的医疗费经社会医疗保险机构报销后,并经校医院审核,个人承担费用(不含国家规定应该由个人支付的费用)年度累计超过
|
||||
5000 元者,可申请并获得补助。
|
||||
</p>
|
||||
<p>
|
||||
3.互助基金会员患不属于本办法所列重大疾病目录中费用支出较大的疾病,经住院治疗、且经公费医疗或社会医疗保险报销后,单次住院个人承担费用(不含国家规定应该由个人支付的费用)超过
|
||||
10000
|
||||
元(年度不累计)者,也可申请并获得补助。
|
||||
</p>
|
||||
|
||||
<ul class="list-group" style="max-height: 450px;overflow-y: scroll">
|
||||
<li class="list-group-item" v-for="i in diseaseList">{{i.diseaseName}}</li>
|
||||
</ul>
|
||||
|
||||
<el-row class="mt25" justify="center" type="flex">
|
||||
<el-button @click="tipsDialog=false" type="primary">我已知晓</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: '#app',
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tipsDialog: false,
|
||||
diseaseList: [],
|
||||
userOptions: [],
|
||||
subsidyTypeList: ['公费医疗', '社会保险'],
|
||||
formRules: {
|
||||
userId: [{required: true, message: '请选择用户', trigger: 'blur'}],
|
||||
homeAddress: [{required: true, message: '请填写家庭住址', trigger: 'blur'}],
|
||||
familyIncome: [{required: true, message: '请填写上年总收入', trigger: 'blur'}],
|
||||
subsidyType: [{required: true, message: '请选择报销类型', trigger: 'blur'}],
|
||||
diseaseId: [{required: true, message: '请选择疾病种类', trigger: 'blur'}],
|
||||
mobile: [{required: true, message: '请输入联系电话', trigger: 'blur'}],
|
||||
files: [{required: true, message: '请上传附件', trigger: 'blur'}],
|
||||
},
|
||||
formData: {
|
||||
costList: []
|
||||
},
|
||||
bizId: GetQueryString("bizId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
|
||||
medicalSetting: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getMedicalSetting() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/basicSetting/getSetting").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.medicalSetting = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取累计补助金额
|
||||
getMedicalSubsidyMoney(userId) {
|
||||
this.$axios.post(loc() + "/getMedicalSubsidyMoney", {userId}).then(res => {
|
||||
if (res.code === 0) {
|
||||
if (res.data.medicalSubsidyMoney !== null) {
|
||||
this.$set(this.formData, 'medicalSubsidyMoney', res.data.medicalSubsidyMoney + this.medicalSetting.loveMoney)
|
||||
} else {
|
||||
this.$set(this.formData, 'medicalSubsidyMoney', 0)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取补助申请次数
|
||||
getMedicalApplyNum(userId) {
|
||||
this.$axios.post(loc() + "/getMedicalApplyNum", {userId}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this.formData, 'applyNum', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
diseaseIdChange(val) {
|
||||
const disease = this.diseaseList.find(i => i.id === val)
|
||||
if (disease) {
|
||||
this.$set(this.formData, 'isMajorDiseases', disease.isMajorDiseases)
|
||||
} else {
|
||||
this.$set(this.formData, 'isMajorDiseases', false)
|
||||
}
|
||||
},
|
||||
// 计算每个表格中的自费部分金额
|
||||
calcPersonExpenseMoney(row) {
|
||||
// fix 2025-11-16 个人自费金额 计算需要减去靶向药
|
||||
// const mz = isNaN(row.outpatientServiceMoney) ? 0 : row.outpatientServiceMoney
|
||||
// const personExpenseMoney = (this.formData.majorDisease ? (mz + row.hospitalSumMoney) : row.hospitalSumMoney) - row.reimbursementMoney - row.singleBearMoney - row.bxyMoney
|
||||
//自费部分金额=住院医疗费总额(不含门诊)-实际报销金额-个人承担部分金额 zhf 2025-11-17
|
||||
const personExpenseMoney = row.hospitalSumMoney - row.reimbursementMoney - row.singleBearMoney
|
||||
return isNaN(personExpenseMoney) ? 0 : personExpenseMoney < 0 ? 0 : personExpenseMoney.toFixed(2)
|
||||
},
|
||||
async userChange(val) {
|
||||
const user = this.userOptions.find(u => u.id === val)
|
||||
this.$set(this.formData, 'sex', user.sex)
|
||||
if (user.birthday) {
|
||||
this.$set(this.formData, 'age', this.$moment().diff(user.birthday, 'years'))
|
||||
}
|
||||
this.$set(this.formData, 'unitName', user.unitName)
|
||||
this.$set(this.formData, 'idCard', user.idCard)
|
||||
this.$set(this.formData, 'homeAddress', user.homeAddress)
|
||||
this.$set(this.formData, 'mobile', user.mobile)
|
||||
this.$set(this.formData, 'userId', user.id)
|
||||
this.getMedicalSubsidyMoney(this.formData.userId)
|
||||
this.getMedicalApplyNum(this.formData.userId)
|
||||
this.getIsAfootMedicalApply(this.formData.userId, null)
|
||||
},
|
||||
onSave() {
|
||||
this.$confirm("保存后可在我的补助申请页面继续填写然后提交,是否保存?", '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.formLoading = true
|
||||
|
||||
//判断每个住院记录中是否有开始时间和结束时间
|
||||
this.formData.costList.forEach(cost => {
|
||||
if (cost.visitTime && cost.visitTime.length > 0) {
|
||||
cost.visitStartTime = cost.visitTime[0]
|
||||
cost.visitEndTime = cost.visitTime[1]
|
||||
}
|
||||
})
|
||||
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/save", {data: JSON.stringify(this.formData)}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("保存成功")
|
||||
commonUtil.pjaxPush("/platform/medicalMutualAid/medical/mine")
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
},
|
||||
onSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.formData.costList.length === 0) {
|
||||
this.$message.error("请添加住院记录!")
|
||||
return
|
||||
}
|
||||
if (!this.validateIsMajorDiseases()) {
|
||||
this.$alert('您的个人承担部分金额达不到补助标准,无法申请!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/submit", {
|
||||
data: JSON.stringify(this.formData)
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
commonUtil.pjaxPush("/platform/medicalMutualAid/medical/mine")
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
onFinishTask() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.formData.costList.length === 0) {
|
||||
this.$message.error("请添加住院记录!")
|
||||
return
|
||||
}
|
||||
if (!this.validateIsMajorDiseases()) {
|
||||
this.$alert('您的个人承担部分金额达不到补助标准,无法申请!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/submitAgain", {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
commonUtil.pjaxPush("/platform/medicalMutualAid/medical/mine")
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 判断个人承担部分金额有没有达到标准,true不能申请,false可以申请
|
||||
validateIsMajorDiseases() {
|
||||
let flag = true
|
||||
if (this.formData.isMajorDiseases) {
|
||||
const singleBearMoneyList = this.formData.costList.map(cost => cost.singleBearMoney)
|
||||
|
||||
const allSingleBearMoney = singleBearMoneyList.reduce((a, b) => {
|
||||
return parseFloat(a) + parseFloat(b)
|
||||
})
|
||||
if (this.formData.subsidyType === '公费医疗' && allSingleBearMoney < this.medicalSetting.publicYearInDiseaseMoney) {
|
||||
flag = false
|
||||
} else if (this.formData.subsidyType === '社会保险' && allSingleBearMoney < this.medicalSetting.socialYearInDiseaseMoney) {
|
||||
flag = false
|
||||
}
|
||||
|
||||
if (this.formData.applyNum === 1) {
|
||||
flag = true
|
||||
}
|
||||
} else {
|
||||
if (this.formData.costList.some(v => v.singleBearMoney < this.medicalSetting.ordinaryOnceNotInDiseaseMoney)) {
|
||||
flag = false
|
||||
}
|
||||
}
|
||||
return flag
|
||||
|
||||
},
|
||||
async createRemoteMethod(keyword) {
|
||||
try {
|
||||
const resp = await this.$axios.post(loc() + "/getSubsidyUser", {keyword})
|
||||
if (resp.code === 0) {
|
||||
this.userOptions = resp.data;
|
||||
}
|
||||
} catch (e) {
|
||||
this.$message.error(e.msg)
|
||||
}
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
async init() {
|
||||
this.getMedicalSetting()
|
||||
if (this.bizId) {
|
||||
this.getIsAfootMedicalApply(this.$store.state.user.id, this.bizId)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/mine/info", {id: this.bizId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
res.data.costList.forEach(cost => {
|
||||
if (cost.visitStartTime) {
|
||||
cost.visitTime = [cost.visitStartTime, cost.visitEndTime]
|
||||
}
|
||||
})
|
||||
this.createRemoteMethod(res.data.userId)
|
||||
this.formData = res.data
|
||||
this.diseaseIdChange(res.data.diseaseId)
|
||||
|
||||
}
|
||||
})
|
||||
} else {
|
||||
await this.createRemoteMethod(this.$store.state.user.id)
|
||||
this.$set(this.formData, 'sex', this.$store.state.user.sex)
|
||||
this.$set(this.formData, 'userName', this.$store.state.user.username)
|
||||
if (this.$store.state.user.birthday) {
|
||||
this.$set(this.formData, 'age', this.$moment().diff(this.$store.state.user.birthday, 'years'))
|
||||
}
|
||||
this.$set(this.formData, 'unitName', this.$store.state.user.unit.name)
|
||||
this.$set(this.formData, 'idCard', this.$store.state.user.idCard)
|
||||
this.$set(this.formData, 'homeAddress', this.$store.state.user.homeAddress)
|
||||
this.$set(this.formData, 'mobile', this.$store.state.user.mobile)
|
||||
this.$set(this.formData, 'userId', this.$store.state.user.id)
|
||||
this.getMedicalSubsidyMoney(this.formData.userId)
|
||||
this.getMedicalApplyNum(this.formData.userId)
|
||||
this.getIsAfootMedicalApply(this.$store.state.user.id, null)
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
// 查询是否有进行中的申请
|
||||
getIsAfootMedicalApply(userId, id) {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getIsAfootMedicalApply", {
|
||||
userId,
|
||||
id
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
|
||||
}
|
||||
}).catch(e => {
|
||||
this.formData = {}
|
||||
this.$alert(e.msg, '温馨提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
commonUtil.pjaxPush("/platform/medicalMutualAid/medical/mine")
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDiseaseList()
|
||||
this.init()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div style="max-width: 900px; margin: 0 auto;">
|
||||
<custom-card>
|
||||
|
||||
<el-form :model="formData" label-suffix=":" ref="formRef" label-width="250px">
|
||||
<el-form-item label="公费医疗年度补助标准(重疾)" prop="publicYearInDiseaseMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.publicYearInDiseaseMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="社保年度补助标准(重疾)" prop="socialYearInDiseaseMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.socialYearInDiseaseMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="单次补助标准(普疾)" prop="ordinaryOnceNotInDiseaseMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.ordinaryOnceNotInDiseaseMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="爱心互助基金补助标准" prop="loveMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.loveMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="补助比例" prop="subsidyRatio">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.subsidyRatio"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="每年补助限额(重疾)" prop="maxYearInDiseaseMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.maxYearInDiseaseMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="每年补助限额(普疾)" prop="maxYearNotInDiseaseMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.maxYearNotInDiseaseMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="共计补助限额" prop="previousYearMaxMoney">
|
||||
<el-input-number :max="500000" :min="0" style="width: 100%"
|
||||
v-model="formData.previousYearMaxMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="超过共计补助限额后每年限额" prop="beyondMaxQuotaMoney">
|
||||
<el-input-number :max="100000" :min="0" style="width: 100%"
|
||||
v-model="formData.beyondMaxQuotaMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="十年未申请首次补助比例增加" prop="tenYearNeverAddSubsidyRatio">
|
||||
<el-input-number :max="100" :min="0" style="width: 100%"
|
||||
v-model="formData.tenYearNeverAddSubsidyRatio"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="十五年未补助首次申请比例增加" prop="fifteenYearNeverAddSubsidyRatio">
|
||||
<el-input-number :max="100" :min="0" style="width: 100%"
|
||||
v-model="formData.fifteenYearNeverAddSubsidyRatio"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<template slot="footer">
|
||||
<el-button type="primary" @click="doSubmit">确定</el-button>
|
||||
</template>
|
||||
</custom-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
doSubmit() {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (valid) {
|
||||
this.$axios.post(loc() + "/doSubmit", this.formData).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("保存成功")
|
||||
this.initData()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
initData() {
|
||||
this.$axios.post(loc() + "/getSetting").then(res => {
|
||||
if (res.code === 0) {
|
||||
if (res.data == null) {
|
||||
this.formData = {
|
||||
publicYearInDiseaseMoney: 0,
|
||||
socialYearInDiseaseMoney: 0,
|
||||
ordinaryOnceNotInDiseaseMoney: 0,
|
||||
loveMoney: 0,
|
||||
subsidyRatio: 0,
|
||||
maxYearInDiseaseMoney: 0,
|
||||
maxYearNotInDiseaseMoney: 0,
|
||||
previousYearMaxMoney: 0,
|
||||
}
|
||||
} else {
|
||||
this.formData = res.data
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.initData()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+352
@@ -0,0 +1,352 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
#calcSubsidyTable .el-button--text i {
|
||||
font-size: 20px !important;
|
||||
}
|
||||
|
||||
#calcSubsidyTable .el-col .symbol {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
font-size: 30px;
|
||||
}
|
||||
</style>
|
||||
<div id="app">
|
||||
<custom-card>
|
||||
<div id="calcSubsidyTable" v-loading="formLoading">
|
||||
<div class="process-title">1.输入金额(元)</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-input placeholder="本年度收入累计总额" readonly v-model="inComeSum" style="width: 100%">
|
||||
<template slot="prepend">本年度收入累计总额</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<span class="symbol">=</span>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input readonly v-model.number="calcData.aidFundMoney">
|
||||
<template slot="prepend">年度缴费总额</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<span class="symbol">+</span>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input @blur="(e)=>{grantOrIntoChange('grants',e.target.value)}"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
v-model.number="calcData.schoolGrants">
|
||||
<template slot="prepend">学校拨款金额</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<span class="symbol">+</span>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input @blur="(e)=>{grantOrIntoChange('into',e.target.value)}"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
v-model.number="calcData.unionInto">
|
||||
<template slot="prepend">工会转入</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" class="mt20">
|
||||
<el-col :span="6">
|
||||
<el-input readonly v-model="applyLoveSum">
|
||||
<template slot="prepend">本年度申请费用总额</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<span class="symbol">=</span>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input readonly v-model="calcData.applySum">
|
||||
<template slot="prepend">申请金额合计</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<span class="symbol">+</span>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input readonly v-model="calcData.loveSubsidyMoney">
|
||||
<template slot="prepend">爱心补助合计</template>
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider></el-divider>
|
||||
<div class="process-title">2.预测收支占比</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-progress :percentage="payThanInCome" type="circle"
|
||||
style="display: flex;justify-content: center;"></el-progress>
|
||||
<div style="text-align: center;font-size: 17px;">
|
||||
预测总额(ps:预测补助金额+爱心补助金额)/本年度收入累计总额
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<div style="text-align: center;font-size: 17px;">
|
||||
<div>
|
||||
<span>本年度实际补助总金额:</span>
|
||||
<span>{{parseFloat(tableSummaries[tableSummaries.length-1]) + calcData.loveSubsidyMoney}}元
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>医疗补助合计:</span>
|
||||
<span>{{tableSummaries[tableSummaries.length-1]}}元
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>爱心补助合计:</span>
|
||||
<span>{{calcData.loveSubsidyMoney}}元
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>本年度结余:</span>
|
||||
<span>{{inComeSum - (parseFloat(tableSummaries[tableSummaries.length-1]) +
|
||||
calcData.loveSubsidyMoney)}}元
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>累计结余:</span>
|
||||
<span>{{inComeSum + calcData.balanceMoney -
|
||||
(parseFloat(tableSummaries[tableSummaries.length-2]) + calcData.loveSubsidyMoney)}}元
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-divider></el-divider>
|
||||
<div class="process-title">3.测算补助金额</div>
|
||||
<el-row :gutter="20">
|
||||
<el-col>
|
||||
<el-slider @change="getApplyData" show-input v-model="ratio"></el-slider>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table :data="applyListData" ref="table" row-key="id" style="width: 100%"
|
||||
:summary-method="getSummaries" show-summary>
|
||||
<el-table-column type="index" width="50px" label="序号"
|
||||
fixed="left"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:key="column.prop"
|
||||
:width="column.width"
|
||||
:fixed="column.fixed"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template v-if="column.prop==='isMajorDiseases'" v-slot="{row}">
|
||||
<span :class="[row.isMajorDiseases?'text-danger':'text-info']">
|
||||
<i class="fa fa-circle ml5"></i>
|
||||
{{row.isMajorDiseases?'是':'否'}}({{row.applyNum}})
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="'按'+ratio+'%补助金额'" fixed="right" min-width="150px"
|
||||
prop="forecastSubsidyMoney"
|
||||
show-overflow-tooltip sortable>
|
||||
<template slot-scope="{row}">
|
||||
<el-input oninput="value=value.replace(/[^\d]/g,'')"
|
||||
v-model="row.forecastSubsidyMoney"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="以往累计补助金额" prop="medicalSubsidyMoney" fixed="right" show-overflow-tooltip
|
||||
sortable
|
||||
width="110px">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<template slot="footer">
|
||||
<el-button type="primary" @click="doExport" :loading="formLoading">导出测算补助金额</el-button>
|
||||
<el-button type="primary" @click="doHandle" :loading="formLoading">按{{ratio+'%'}}比例分配</el-button>
|
||||
</template>
|
||||
</custom-card>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
calcData: {
|
||||
aidFundMoney: 0,
|
||||
schoolGrants: 0,
|
||||
balanceMoney: 0,
|
||||
unionInto: 0,
|
||||
applySum: 0,
|
||||
ratio: 0
|
||||
},
|
||||
ratio: 60,
|
||||
medicalSetting: {},
|
||||
applyListData: [],
|
||||
tableSummaries: [],
|
||||
tableColumns: [
|
||||
{prop: 'loginname', label: '工号', fixed: "left"},
|
||||
{prop: 'username', label: '姓名', fixed: "left"},
|
||||
{prop: 'unionName', label: '所属工会', width: "180"},
|
||||
{prop: 'unitName', label: '所属单位', width: "180"},
|
||||
{prop: 'diseaseName', label: '疾病种类', width: "180"},
|
||||
{prop: 'isMajorDiseases', label: '重大疾病(次数)', width: "100"},
|
||||
{prop: 'applyNum', label: '申请总次数'},
|
||||
{prop: 'applyTime', label: '申请时间', width: "180"},
|
||||
{prop: 'aidFundDeductTime', label: '起扣时间', width: "100"},
|
||||
{prop: 'yearsSinceDeduct', label: '缴费年数', width: "100"},
|
||||
{prop: 'hospitalSumMoney$', label: '住院医疗总额(不含门诊)', width: "120"},
|
||||
{prop: 'reimbursementMoney$', label: '实际报销总额', width: "120"},
|
||||
{prop: 'singleBearMoney$', label: '(住院医疗)允许报销范围内个人承担部分总额', width: "120"},
|
||||
{prop: 'personExpenseMoney$', label: '(住院医疗)自费部分总额', width: "120"},
|
||||
{prop: 'outpatientServiceMoney$', label: '重病门诊自费金额', width: "120"},
|
||||
{prop: 'bxyMoney$', label: '非住院肾衰竭治疗、靶向药金额', width: "120"},
|
||||
{prop: 'totalMoney', label: '合计金额', width: "120"},
|
||||
{prop: 'loveSubsidyMoney', label: '爱心补助', width: "120"},
|
||||
{prop: 'forecastSubsidyMoney', label: '当前补助金额', width: "120"},
|
||||
],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
//申请费用总额
|
||||
applyLoveSum() {
|
||||
const {applySum, loveSubsidyMoney} = this.calcData
|
||||
const applyLoveSum = applySum + loveSubsidyMoney
|
||||
return isNaN(applyLoveSum) ? 0 : applyLoveSum.toFixed(2)
|
||||
},
|
||||
inComeSum() {
|
||||
const {aidFundMoney, schoolGrants, balanceMoney, unionInto} = this.calcData
|
||||
return aidFundMoney + schoolGrants + unionInto
|
||||
},
|
||||
//预测支出/总收入
|
||||
payThanInCome() {
|
||||
const loveMoney = parseFloat(this.tableSummaries.slice(15, 16)[0])
|
||||
const bzMoney = parseFloat(this.tableSummaries.slice(-1)[0])
|
||||
|
||||
const num = parseFloat(bzMoney) + parseFloat(loveMoney);
|
||||
|
||||
const total = parseFloat(this.inComeSum);
|
||||
if (isNaN(num) || isNaN(total)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const progress = total <= 0 ? 0 : (Math.round(num / total * 10000) / 100.00)
|
||||
|
||||
return progress > 100 ? 100 : progress
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
async grantOrIntoChange(key, val) {
|
||||
if (val === '') {
|
||||
if (key === 'grants') {
|
||||
this.calcData.schoolGrants = 0
|
||||
} else if (key === 'into') {
|
||||
this.calcData.unionInto = 0
|
||||
}
|
||||
}
|
||||
const resp = await this.$axios.post(loc() + '/setGrantsOrUnionInto', {keys: key, value: val})
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param
|
||||
const sums = []
|
||||
columns.forEach((column, index) => {
|
||||
const sumColumn = ['hospitalSumMoney$', 'reimbursementMoney$', 'singleBearMoney$', 'personExpenseMoney$'
|
||||
, 'subsidyMoney', 'loveSubsidyMoney', 'outpatientServiceMoney$'
|
||||
, 'totalMoney', 'loveSubsidyMoney', 'forecastSubsidyMoney']
|
||||
if (sumColumn.includes(column.property)) {
|
||||
const values = data.map(i => Number(i[column.property]))
|
||||
if (values && values.length > 0) {
|
||||
const everyColumnSum = values.reduce((a, b) => a + b)
|
||||
sums[index] = isNaN(everyColumnSum) ? 0 : everyColumnSum.toFixed(2)
|
||||
}
|
||||
}
|
||||
})
|
||||
sums[0] = '合计'
|
||||
this.tableSummaries = sums
|
||||
return sums
|
||||
},
|
||||
doExport() {
|
||||
this.$downLoad("/platform/medicalMutualAid/medical/calculateMoney/doExport", {
|
||||
ratio: this.ratio})
|
||||
},
|
||||
doHandle() {
|
||||
this.$confirm('确定要按此比例来补助吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/calculateMoney/doHandle", {
|
||||
data: JSON.stringify(this.applyListData),
|
||||
ratio: this.ratio,
|
||||
aidFund: this.calcData.aidFundMoney,
|
||||
inComeSum: this.inComeSum,
|
||||
loveSubsidyMoney: this.calcData.loveSubsidyMoney
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
this.getData()
|
||||
this.getApplyData()
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
},
|
||||
async getMedicalSetting() {
|
||||
try {
|
||||
const res = await this.$axios.post("/platform/medicalMutualAid/medical/basicSetting/getSetting")
|
||||
if (res.code === 0) {
|
||||
this.medicalSetting = res.data
|
||||
}
|
||||
} catch (e) {
|
||||
this.$message.error(e.message)
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
getData() {
|
||||
this.formLoading = true
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/calculateMoney/getData").then(res => {
|
||||
if (res.code === 0) {
|
||||
if (res.data.ratio) {
|
||||
this.ratio = res.data.ratio
|
||||
} else {
|
||||
this.ratio = this.medicalSetting.subsidyRatio
|
||||
}
|
||||
this.calcData = res.data
|
||||
this.getApplyData()
|
||||
}
|
||||
}).finally(()=>{
|
||||
this.formLoading=false
|
||||
})
|
||||
},
|
||||
getApplyData() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/calculateMoney/getApplyData", {ratio: this.ratio}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.applyListData = res.data
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
await this.getMedicalSetting()
|
||||
this.getData()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
const MEDICAL_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 }}({{viewData.loginName}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ viewData.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">{{ viewData.age }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">{{ viewData.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="累计补助金额">{{ viewData.medicalSubsidyMoney }}</el-descriptions-item>
|
||||
<el-descriptions-item label="起扣时间">{{ viewData.aidFundDeductTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="疾病种类">{{ viewData.diseaseName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="重大疾病(次数)">
|
||||
<span :class="[viewData.isMajorDiseases?'text-danger':'text-info']">
|
||||
<i class="fa fa-circle ml5"></i>
|
||||
{{viewData.isMajorDiseases?'是':'否'}}({{viewData.applyNum}})
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item></el-descriptions-item>
|
||||
<el-descriptions-item label="备注" :span="3">
|
||||
<div style="white-space: pre-line">{{viewData.note}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="住院记录" :span="3">
|
||||
<el-table :data="viewData.costList" border show-summary>
|
||||
<el-table-column label="序号" type="index" width="50px" fixed></el-table-column>
|
||||
<el-table-column label="住院时间段" width="200">
|
||||
<template v-slot="{row}">
|
||||
{{row.visitStartTime}}至{{row.visitEndTime}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="住院医院" prop="visitHospital" width="250"></el-table-column>
|
||||
<el-table-column label="住院医疗费总额(不含门诊)" prop="hospitalSumMoney"></el-table-column>
|
||||
<el-table-column label="实际报销金额" prop="reimbursementMoney"></el-table-column>
|
||||
<el-table-column label="(住院医疗)允许报销范围内个人承担部分金额"
|
||||
prop="singleBearMoney"></el-table-column>
|
||||
<el-table-column label="(住院医疗)自费部分金额" prop="personExpenseMoney"></el-table-column>
|
||||
<el-table-column label="重病门诊自费金额" prop="outpatientServiceMoney"></el-table-column>
|
||||
<el-table-column label="非住院肾衰竭治疗、靶向药" prop="bxyMoney"></el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" :span="3">
|
||||
<file-preview :files="viewData.files" complete_result></file-preview>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="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>
|
||||
|
||||
<el-descriptions-item label="详细疾病名称"
|
||||
v-if="task.taskName==='39916c1e-857d-407d-86c1-678ccf3011bc'"
|
||||
:span="3">{{
|
||||
task.taskFormData.diseaseDetailName }}
|
||||
</el-descriptions-item>
|
||||
<template v-if="task.taskName==='cd560356-cc70-48b5-8d99-ff9bd3505869'">
|
||||
<el-descriptions-item label="预测补助金额" :span="3">
|
||||
{{
|
||||
task.taskFormData.tf_forecastSubsidyMoney }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="爱心基金(元)" :span="3">
|
||||
{{
|
||||
task.taskFormData.tf_loveSubsidyMoney }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode" :span="3">{{
|
||||
task.taskFormData.opinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
<slot></slot>
|
||||
<snaker-chart ref="snakerChartRef"></snaker-chart>
|
||||
|
||||
</div>
|
||||
`,
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
viewData: {},
|
||||
doneTasks: [],
|
||||
row: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(row) {
|
||||
this.row = row
|
||||
this.visible = true
|
||||
this.getInfo()
|
||||
this.getDoneTasks()
|
||||
},
|
||||
getInfo() {
|
||||
this.$axios.post('/platform/medicalMutualAid/medical/mine/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)
|
||||
}
|
||||
}
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
const MEDICAL_TABLE = {
|
||||
template: /*language=HTML*/
|
||||
`
|
||||
<div>
|
||||
<el-table :data="localTableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%"
|
||||
:summary-method="getSummaries" :show-summary="showSummary">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"
|
||||
fixed="left"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:key="column.prop"
|
||||
:width="column.width"
|
||||
:fixed="column.fixed"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template v-if="column.prop==='isMajorDiseases'" v-slot="{row}">
|
||||
<span :class="[row.isMajorDiseases?'text-danger':'text-info']">
|
||||
<i class="fa fa-circle ml5"></i>
|
||||
{{row.isMajorDiseases?'是':'否'}}({{row.applyNum}})
|
||||
</span>
|
||||
</template>
|
||||
<template v-slot="{ row }" v-else-if="column.prop === 'instanceState'">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
<template v-slot="{ row }" v-else-if="column.prop === 'curTaskName'">
|
||||
{{row.curTaskName?row.curTaskName:row.taskName}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<slot name="operation"></slot>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</div>
|
||||
`,
|
||||
props: {
|
||||
localTableData: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
showSummary: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
localPageForm:{
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'loginname', label: '工号', fixed: "left"},
|
||||
{prop: 'username', label: '姓名', fixed: "left"},
|
||||
{prop: 'unionName', label: '所属工会', width: "180"},
|
||||
{prop: 'unitName', label: '所属单位', width: "180"},
|
||||
{prop: 'diseaseName', label: '疾病种类', width: "180"},
|
||||
{prop: 'isMajorDiseases', label: '重大疾病(次数)', width: "100"},
|
||||
{prop: 'applyNum', label: '申请总次数'},
|
||||
{prop: 'applyTime', label: '申请时间', width: "180"},
|
||||
{prop: 'hospitalSumMoney$', label: '住院医疗总额(不含门诊)', width: "120"},
|
||||
{prop: 'reimbursementMoney$', label: '实际报销总额', width: "120"},
|
||||
{prop: 'singleBearMoney$', label: '(住院医疗)允许报销范围内个人承担部分总额', width: "120"},
|
||||
{prop: 'personExpenseMoney$', label: '(住院医疗)自费部分总额', width: "120"},
|
||||
{prop: 'outpatientServiceMoney$', label: '重病门诊自费金额', width: "120"},
|
||||
{prop: 'bxyMoney$', label: '非住院肾衰竭治疗、靶向药金额', width: "120"},
|
||||
{prop: 'totalMoney', label: '合计金额', width: "120"},
|
||||
{prop: 'curTaskName', label: '当前节点', width: "120"},
|
||||
{prop: 'instanceState', label: '流程状态'},
|
||||
],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param
|
||||
const sums = []
|
||||
columns.forEach((column, index) => {
|
||||
const sumColumn = ['hospitalSumMoney$', 'reimbursementMoney$', 'singleBearMoney$', 'personExpenseMoney$', 'subsidyMoney', 'loveSubsidyMoney', 'outpatientServiceMoney$', 'totalMoney']
|
||||
if (sumColumn.includes(column.property)) {
|
||||
const values = data.map(i => Number(i[column.property]))
|
||||
if (values && values.length > 0) {
|
||||
const everyColumnSum = values.reduce((a, b) => a + b)
|
||||
sums[index] = isNaN(everyColumnSum) ? 0 : everyColumnSum.toFixed(2)
|
||||
}
|
||||
}
|
||||
})
|
||||
sums[0] = '合计'
|
||||
return sums
|
||||
},
|
||||
|
||||
},
|
||||
created() {
|
||||
this.$emit('ready')
|
||||
},
|
||||
watch: {
|
||||
"localPageForm": {
|
||||
handler(val) {
|
||||
this.pageForm = {...this.pageForm, ...val}
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
}
|
||||
}
|
||||
+418
@@ -0,0 +1,418 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.medical-dashboard {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: 180px 1fr 1fr;
|
||||
gap: 20px;
|
||||
width: 100%;
|
||||
min-height: calc(100vh - 126px);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dashboard-card {
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: 1px solid #eef1f6;
|
||||
}
|
||||
|
||||
.dashboard-title {
|
||||
padding: 16px 20px 8px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
border-bottom: 1px solid #f0f2f5;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.overview-card {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.overview-label {
|
||||
font-size: 14px;
|
||||
color: #7a7f87;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.overview-value {
|
||||
font-size: 34px;
|
||||
font-weight: 700;
|
||||
color: #1f6f5f;
|
||||
line-height: 1.2;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.overview-sub {
|
||||
font-size: 13px;
|
||||
color: #949aa3;
|
||||
line-height: 1.6;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 2;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: 1 / -1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.chart-panel {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.table-panel {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
padding: 12px 16px 16px;
|
||||
}
|
||||
|
||||
.chart-box {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-height: 260px;
|
||||
}
|
||||
|
||||
.money-text {
|
||||
color: #cf6a32;
|
||||
}
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
.medical-dashboard {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: repeat(2, 180px) auto auto auto;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.medical-dashboard {
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: repeat(4, 160px) auto auto auto;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 1;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: span 1;
|
||||
}
|
||||
|
||||
.overview-value {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.chart-box {
|
||||
min-height: 220px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<div class="medical-dashboard">
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">基金会员总数</div>
|
||||
<div class="overview-value">{{ overview.fundMemberCount || 0 }}</div>
|
||||
<div class="overview-sub">
|
||||
本年度申请数:{{ overview.currentYearApplyCount || 0 }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">重疾 / 普疾申请数</div>
|
||||
<div class="overview-value">{{ overview.majorDiseaseApplyCount || 0 }} / {{ overview.commonDiseaseApplyCount || 0 }}</div>
|
||||
<div class="overview-sub">
|
||||
统计口径:流程已办结
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">补助金额合计</div>
|
||||
<div class="overview-value money-text">{{ formatMoney(overview.totalSubsidyMoney) }}</div>
|
||||
<div class="overview-sub">
|
||||
单位:元
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">爱心基金合计</div>
|
||||
<div class="overview-value money-text">{{ formatMoney(overview.totalLoveSubsidyMoney) }}</div>
|
||||
<div class="overview-sub">
|
||||
单位:元
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card wide-panel table-panel">
|
||||
<div class="dashboard-title">各工会医疗互助统计表</div>
|
||||
<div class="panel-body" v-loading="loading.unionStat">
|
||||
<el-table
|
||||
:data="unionTableData"
|
||||
:header-cell-style="{background:'#FAFAFA'}"
|
||||
height="100%"
|
||||
style="width: 100%">
|
||||
<el-table-column type="index" label="序号" width="70" align="center"></el-table-column>
|
||||
<el-table-column prop="unionName" label="工会名称" min-width="180" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="applyCount" label="申请数" width="100" align="center"></el-table-column>
|
||||
<el-table-column label="补助金额" min-width="140" align="right">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatMoney(row.subsidyMoney) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card wide-panel chart-panel">
|
||||
<div class="dashboard-title">在职状态分布</div>
|
||||
<div class="panel-body" v-loading="loading.userStateStat">
|
||||
<div id="userStateChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card full-panel chart-panel">
|
||||
<div class="dashboard-title">人员类型统计</div>
|
||||
<div class="panel-body" v-loading="loading.personTypeStat">
|
||||
<div id="personTypeChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card full-panel">
|
||||
<div class="dashboard-title">疾病类型统计</div>
|
||||
<div class="panel-body" v-loading="loading.diseaseTypeStat">
|
||||
<div id="diseaseTypeChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
const chartMap = {
|
||||
userStateChart: null,
|
||||
personTypeChart: null,
|
||||
diseaseTypeChart: null
|
||||
}
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data() {
|
||||
return {
|
||||
loading: {
|
||||
overview: false,
|
||||
unionStat: false,
|
||||
userStateStat: false,
|
||||
personTypeStat: false,
|
||||
diseaseTypeStat: false
|
||||
},
|
||||
overview: {
|
||||
fundMemberCount: 0,
|
||||
currentYearApplyCount: 0,
|
||||
majorDiseaseApplyCount: 0,
|
||||
commonDiseaseApplyCount: 0,
|
||||
totalSubsidyMoney: 0,
|
||||
totalLoveSubsidyMoney: 0
|
||||
},
|
||||
unionTableData: [],
|
||||
userStateData: [],
|
||||
personTypeData: [],
|
||||
diseaseTypeData: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatMoney(value) {
|
||||
if (value === null || value === undefined || value === "") {
|
||||
return "0.00"
|
||||
}
|
||||
const num = Number(value)
|
||||
if (isNaN(num)) {
|
||||
return "0.00"
|
||||
}
|
||||
return num.toFixed(2)
|
||||
},
|
||||
getOverview() {
|
||||
this.$set(this.loading, "overview", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/overview").then((res) => {
|
||||
this.$set(this.loading, "overview", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "overview", res.data || {})
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getUnionStat() {
|
||||
this.$set(this.loading, "unionStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/unionStat").then((res) => {
|
||||
this.$set(this.loading, "unionStat", false)
|
||||
if (res.code === 0) {
|
||||
const tableData = res.data && res.data.tableData ? res.data.tableData : []
|
||||
this.$set(this, "unionTableData", tableData)
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getUserStateStat() {
|
||||
this.$set(this.loading, "userStateStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/userStateStat").then((res) => {
|
||||
this.$set(this.loading, "userStateStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "userStateData", res.data || [])
|
||||
this.renderUserStateChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getPersonTypeStat() {
|
||||
this.$set(this.loading, "personTypeStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/personTypeStat").then((res) => {
|
||||
this.$set(this.loading, "personTypeStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "personTypeData", res.data || [])
|
||||
this.renderPersonTypeChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getDiseaseTypeStat() {
|
||||
this.$set(this.loading, "diseaseTypeStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/diseaseTypeStat").then((res) => {
|
||||
this.$set(this.loading, "diseaseTypeStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "diseaseTypeData", res.data || [])
|
||||
this.renderDiseaseTypeChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
renderUserStateChart() {
|
||||
if (chartMap.userStateChart) {
|
||||
chartMap.userStateChart.destroy()
|
||||
}
|
||||
chartMap.userStateChart = new G2Plot.Pie("userStateChart", {
|
||||
data: this.userStateData,
|
||||
angleField: "applyCount",
|
||||
colorField: "name",
|
||||
radius: 0.85,
|
||||
label: {
|
||||
type: "outer",
|
||||
content: "{name} {percentage}"
|
||||
},
|
||||
legend: {
|
||||
position: "bottom"
|
||||
},
|
||||
color: ["#1f6f5f", "#f59f45", "#5b8ff9", "#9270ca"]
|
||||
})
|
||||
chartMap.userStateChart.render()
|
||||
},
|
||||
renderPersonTypeChart() {
|
||||
if (chartMap.personTypeChart) {
|
||||
chartMap.personTypeChart.destroy()
|
||||
}
|
||||
chartMap.personTypeChart = new G2Plot.Column("personTypeChart", {
|
||||
data: this.personTypeData,
|
||||
autoFit: true,
|
||||
xField: "name",
|
||||
yField: "applyCount",
|
||||
color: "#4e8f81",
|
||||
columnStyle: {
|
||||
radius: [6, 6, 0, 0]
|
||||
},
|
||||
label: {
|
||||
position: "top",
|
||||
style: {
|
||||
fill: "#1f2d3d"
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
label: {
|
||||
autoHide: true,
|
||||
autoRotate: false
|
||||
}
|
||||
},
|
||||
meta: {
|
||||
name: {
|
||||
alias: "人员类型"
|
||||
},
|
||||
applyCount: {
|
||||
alias: "申请数"
|
||||
}
|
||||
}
|
||||
})
|
||||
chartMap.personTypeChart.render()
|
||||
},
|
||||
renderDiseaseTypeChart() {
|
||||
if (chartMap.diseaseTypeChart) {
|
||||
chartMap.diseaseTypeChart.destroy()
|
||||
}
|
||||
chartMap.diseaseTypeChart = new G2Plot.Bar("diseaseTypeChart", {
|
||||
data: this.diseaseTypeData,
|
||||
autoFit: true,
|
||||
xField: "applyCount",
|
||||
yField: "name",
|
||||
legend: false,
|
||||
color: "#cf6a32",
|
||||
barStyle: {
|
||||
radius: [0, 6, 6, 0]
|
||||
},
|
||||
label: {
|
||||
position: "right",
|
||||
style: {
|
||||
fill: "#1f2d3d"
|
||||
}
|
||||
},
|
||||
meta: {
|
||||
name: {
|
||||
alias: "疾病类型"
|
||||
},
|
||||
applyCount: {
|
||||
alias: "申请数"
|
||||
}
|
||||
}
|
||||
})
|
||||
chartMap.diseaseTypeChart.render()
|
||||
},
|
||||
initData() {
|
||||
this.getOverview()
|
||||
this.getUnionStat()
|
||||
this.getUserStateStat()
|
||||
this.getPersonTypeStat()
|
||||
this.getDiseaseTypeStat()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
<!--#
|
||||
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>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool label="疾病种类">
|
||||
<el-button @click="openAdd" size="small" type="primary">
|
||||
新增疾病种类
|
||||
</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<el-table-column label="编号" prop="diseaseCode"></el-table-column>
|
||||
<el-table-column label="疾病种类" prop="diseaseName"></el-table-column>
|
||||
<el-table-column label="是否重大疾病" prop="isMajorDiseases">
|
||||
<template v-slot="{row}">
|
||||
<el-tag v-if="row.isMajorDiseases" type="danger">是</el-tag>
|
||||
<el-tag v-else>否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
<el-dialog :visible.sync="dialogVisible" title="新增" width="50%">
|
||||
<el-form :model="formData" :rules="rules" label-width="120px" ref="form">
|
||||
<el-form-item label="疾病名称" prop="diseaseName">
|
||||
<el-input maxlength="50" v-model="formData.diseaseName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="编号" prop="diseaseCode">
|
||||
<el-input max="128" v-model.number="formData.diseaseCode"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否重大疾病" prop="isMajorDiseases">
|
||||
<el-radio-group v-model="formData.isMajorDiseases" size="small">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row justify="end" type="flex">
|
||||
<el-button @click="dialogVisible=false">取消</el-button>
|
||||
<el-button @click="doSubmit" class="ml10" type="primary">确定</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
diseaseName: [{required: true, message: '请输入疾病名称', trigger: ['change', 'blur']}],
|
||||
diseaseCode: [{required: true, message: '请输入疾病编号', trigger: ['change', 'blur']}]
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doDelete(id) {
|
||||
this.$confirm('您确定要删除吗, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/doDelete", {id: id}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
openEdit(row) {
|
||||
this.formData = clone(row)
|
||||
this.dialogVisible = true
|
||||
},
|
||||
doSubmit() {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
this.$axios.post(loc() + "/doSubmit", this.formData).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.dialogVisible = false
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openAdd() {
|
||||
this.formData = {isMajorDiseases: true}
|
||||
this.dialogVisible = true
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+360
@@ -0,0 +1,360 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" clearable filterable placeholder="请选择院级工会"
|
||||
@change="getUnitList()">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" clearable filterable placeholder="请选择单位">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请列表">
|
||||
<el-button type="primary" @click="doExport" size="small">导出</el-button>
|
||||
<el-radio-group v-model="pageForm.isMajorDiseases" size="small" @change="doSearch">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">重疾</el-radio-button>
|
||||
<el-radio-button :label="false">普通</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<medical-table ref="table" :local-table-data="tableData" v-loading="tableLoading"
|
||||
:local-page-form="pageForm" @ready="doSearch">
|
||||
<template slot="operation">
|
||||
<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="onAudit(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke||row.curTaskName==='结束'" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</medical-table>
|
||||
|
||||
</el-card>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<medical-info ref="medicalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="150px" label-suffix=":"
|
||||
>
|
||||
|
||||
<el-table :data="costList" border show-summary class="cost">
|
||||
<el-table-column label="序号" type="index" width="50px" fixed></el-table-column>
|
||||
<el-table-column label="住院时间段" width="200">
|
||||
<template v-slot="{row}">
|
||||
{{row.visitStartTime}}至{{row.visitEndTime}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="住院医院" prop="visitHospital" width="250"></el-table-column>
|
||||
<el-table-column label="住院医疗费总额(不含门诊)" width="180" prop="hospitalSumMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="住院医疗费总额(不含门诊)"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.hospitalSumMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实际报销金额" width="180" prop="reimbursementMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="实际报销金额"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.reimbursementMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)允许报销范围内个人承担部分金额"
|
||||
width="180" prop="singleBearMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number :min="0" placeholder="个人承担部分金额"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.singleBearMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)自费部分金额" width="180"
|
||||
prop="personExpenseMoney"></el-table-column>
|
||||
<el-table-column label="重病门诊自费金额" width="180" prop="outpatientServiceMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="门诊费"
|
||||
:min="0"
|
||||
:disabled="!formData.tf_isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.outpatientServiceMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="非住院肾衰竭治疗、靶向药" width="180" prop="bxyMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="靶向药"
|
||||
:min="0"
|
||||
:disabled="!formData.tf_isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.bxyMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="mt10">
|
||||
<el-form-item label="疾病种类" prop="tf_diseaseId"
|
||||
:rules="[{required:true,message:'请选择疾病种类',trigger:['change','blur']}]">
|
||||
<el-select placeholder="请选择疾病种类" style="width: 50%"
|
||||
v-model="formData.tf_diseaseId" filterable @change="diseaseIdChange">
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预测补助金额(元)" prop="tf_forecastSubsidyMoney">
|
||||
<span slot="label">
|
||||
预测补助金额(元)
|
||||
<el-tooltip class="item" effect="dark"
|
||||
content="计算公式:((住院医疗)允许报销范围内个人承担部分金额+(住院医疗)自费部分金额+重病门诊自费金额+非住院肾衰竭治疗、靶向药金额)* 补助比例"
|
||||
placement="top-start">
|
||||
<i class="el-icon-question"></i>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<el-input-number v-model="formData.tf_forecastSubsidyMoney"
|
||||
style="width: 50%"></el-input-number>
|
||||
<el-button @click="calcMedicalMoney(formData.id,formData.tf_diseaseId)" type="primary">
|
||||
重新计算金额
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="爱心基金(元)" prop="tf_loveSubsidyMoney">
|
||||
<el-input-number :max="medicalSetting.loveMoney" :min="0" style="width: 50%"
|
||||
v-model="formData.tf_loveSubsidyMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalTable.js'){}#-->
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
costList: [],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
diseaseList: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false,
|
||||
isMajorDiseases: null,
|
||||
year: new Date().getFullYear() + "",
|
||||
},
|
||||
medicalSetting: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-table": MEDICAL_TABLE,
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
methods: {
|
||||
doExport() {
|
||||
this.$downLoad("/platform/medicalMutualAid/medical/foundationAudit/doExport", this.pageForm)
|
||||
},
|
||||
// 修改表格里面的金额并修改数据库里的数据
|
||||
tableChangeMoney() {
|
||||
this.costList.forEach(cost => {
|
||||
const personExpenseMoney = cost.hospitalSumMoney - cost.reimbursementMoney - cost.singleBearMoney
|
||||
cost.personExpenseMoney = isNaN(personExpenseMoney) ? 0 : personExpenseMoney < 0 ? 0 : personExpenseMoney.toFixed(2)
|
||||
})
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/foundationAudit/updateCost", {
|
||||
data: JSON.stringify(this.costList)
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
// 重新计算预测补助金额
|
||||
calcMedicalMoney(id, diseaseId) {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/foundationAudit/calcMedicalMoney", {
|
||||
id, diseaseId
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this.formData, 'tf_loveSubsidyMoney', res.data.loveSubsidyMoney)
|
||||
this.$set(this.formData, 'tf_forecastSubsidyMoney', res.data.forecastSubsidyMoney)
|
||||
}
|
||||
})
|
||||
},
|
||||
diseaseIdChange(val) {
|
||||
const disease = this.diseaseList.find(i => i.id === val)
|
||||
this.$set(this.formData, "tf_diseaseName", disease.diseaseName)
|
||||
this.$set(this.formData, "tf_isMajorDiseases", disease.isMajorDiseases)
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
const disease = this.diseaseList.find(i => i.id === row.diseaseId)
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
tf_diseaseId: row.diseaseId,
|
||||
tf_oldDiseaseId: row.diseaseId,
|
||||
tf_oldDiseaseName: disease.diseaseName,
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.diseaseIdChange(row.diseaseId)
|
||||
this.calcMedicalMoney(row.id, row.diseaseId)
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.costList = this.$refs.medicalInfoRef.viewData.costList
|
||||
}, 500)
|
||||
},
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/foundationAudit/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: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
},
|
||||
getMedicalSetting() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/basicSetting/getSetting").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.medicalSetting = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.getMedicalSetting()
|
||||
this.getDiseaseList()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="我的申请">
|
||||
|
||||
</table-tool>
|
||||
<medical-table ref="table" :local-table-data="tableData"
|
||||
:show-summary='true' v-loading="tableLoading"
|
||||
:local-page-form="pageForm" @ready="doSearch">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)"
|
||||
size="mini" type="primary">编辑
|
||||
</el-button>
|
||||
<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="onDelete(row.id)"
|
||||
size="mini" type="danger">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</medical-table>
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<medical-info ref="medicalInfoRef"></medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalTable.js'){}#-->
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
diseaseList: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-table": MEDICAL_TABLE,
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
methods: {
|
||||
onView(row) {
|
||||
this.$refs.guava.view(()=>{
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onEdit(row) {
|
||||
commonUtil.pjaxPush('/platform/medicalMutualAid/medical/apply?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
|
||||
},
|
||||
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/medical/mine/delete", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getDiseaseList()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请列表">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<medical-table ref="table" :local-table-data="tableData" v-loading="tableLoading"
|
||||
:local-page-form="pageForm" @ready="doSearch">
|
||||
<template slot="operation">
|
||||
<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="onAudit(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</medical-table>
|
||||
|
||||
</el-card>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<medical-info ref="medicalInfoRef">
|
||||
<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="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalTable.js'){}#-->
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
diseaseList: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false,
|
||||
year: new Date().getFullYear() + "",
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-table": MEDICAL_TABLE,
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
methods: {
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
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: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getDiseaseList()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+231
@@ -0,0 +1,231 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" clearable filterable placeholder="请选择院级工会"
|
||||
@change="getUnitList()">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" clearable filterable placeholder="请选择单位">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请列表">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<medical-table ref="table" :local-table-data="tableData" v-loading="tableLoading"
|
||||
:local-page-form="pageForm" @ready="doSearch">
|
||||
<template slot="operation">
|
||||
<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="onAudit(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</medical-table>
|
||||
|
||||
</el-card>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<medical-info ref="medicalInfoRef">
|
||||
<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_diseaseId"
|
||||
:rules="[{required:true,message:'请选择疾病种类',trigger:['change','blur']}]">
|
||||
疾病种类:
|
||||
<el-select placeholder="请选择疾病种类"
|
||||
v-model="formData.tf_diseaseId" filterable @change="diseaseIdChange">
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细疾病名称" prop="tf_diseaseDetailName"
|
||||
:rules="[{required:true,message:'请填写详细疾病名称',trigger:['change','blur']}]">
|
||||
详细疾病名称:
|
||||
<el-input maxlength="100" v-model="formData.tf_diseaseDetailName"
|
||||
placeholder="请填写详细疾病名称"></el-input>
|
||||
</el-form-item>
|
||||
<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="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalTable.js'){}#-->
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
diseaseList: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false,
|
||||
year: new Date().getFullYear() + "",
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-table": MEDICAL_TABLE,
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
methods: {
|
||||
diseaseIdChange(val){
|
||||
const disease= this.diseaseList.find(i => i.id === val)
|
||||
this.$set(this.formData, "tf_diseaseName", disease.diseaseName)
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
const disease= this.diseaseList.find(i => i.id === row.diseaseId)
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
tf_diseaseId: row.diseaseId,
|
||||
tf_oldDiseaseId: row.diseaseId,
|
||||
tf_oldDiseaseName: disease.diseaseName,
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.diseaseIdChange(row.diseaseId)
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/schoolHospitalAudit/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: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.getDiseaseList()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+412
@@ -0,0 +1,412 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</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="所属工会">
|
||||
<el-select v-model="pageForm.unionId" clearable filterable placeholder="请选择院级工会"
|
||||
@change="getUnitList()">
|
||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select v-model="pageForm.unitId" clearable filterable placeholder="请选择单位">
|
||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请列表">
|
||||
<el-dropdown @command="doExport">
|
||||
<el-button type="primary" size="small">导出 <i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{val:true}" key="major">重疾</el-dropdown-item>
|
||||
<el-dropdown-item :command="{val:false}" key="normal">普通</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%"
|
||||
v-loading="tableLoading"
|
||||
:summary-method="getSummaries" :show-summary="showSummary">
|
||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"
|
||||
fixed="left"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:key="column.prop"
|
||||
:width="column.width"
|
||||
:fixed="column.fixed"
|
||||
:sortable="column.sortable"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template v-if="column.prop==='isMajorDiseases'" v-slot="{row}">
|
||||
<span :class="[row.isMajorDiseases?'text-danger':'text-info']">
|
||||
<i class="fa fa-circle ml5"></i>
|
||||
{{row.isMajorDiseases?'是':'否'}}({{row.applyNum}})
|
||||
</span>
|
||||
</template>
|
||||
<template v-slot="{ row }" v-else-if="column.prop === 'instanceState'">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
<template v-slot="{ row }" v-else-if="column.prop === 'curTaskName'">
|
||||
{{row.curTaskName?row.curTaskName:row.taskName}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onView(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>
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<medical-info ref="medicalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="150px" label-suffix=":"
|
||||
>
|
||||
|
||||
<el-table :data="costList" border show-summary class="cost">
|
||||
<el-table-column label="序号" type="index" width="50px" fixed></el-table-column>
|
||||
<el-table-column label="住院时间段" width="200">
|
||||
<template v-slot="{row}">
|
||||
{{row.visitStartTime}}至{{row.visitEndTime}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="住院医院" prop="visitHospital" width="250"></el-table-column>
|
||||
<el-table-column label="住院医疗费总额(不含门诊)" width="180" prop="hospitalSumMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="住院医疗费总额(不含门诊)"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.hospitalSumMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实际报销金额" width="180" prop="reimbursementMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="实际报销金额"
|
||||
:min="0"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.reimbursementMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)允许报销范围内个人承担部分金额"
|
||||
width="180" prop="singleBearMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number :min="0" placeholder="个人承担部分金额"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.singleBearMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="(住院医疗)自费部分金额" width="180"
|
||||
prop="personExpenseMoney"></el-table-column>
|
||||
<el-table-column label="重病门诊自费金额" width="180" prop="outpatientServiceMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="门诊费"
|
||||
:min="0"
|
||||
:disabled="!formData.tf_isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.outpatientServiceMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="非住院肾衰竭治疗、靶向药" width="180" prop="bxyMoney">
|
||||
<template v-slot="{row}">
|
||||
<el-input-number placeholder="靶向药"
|
||||
:min="0"
|
||||
:disabled="!formData.tf_isMajorDiseases"
|
||||
controls-position="right" style="width: 100%"
|
||||
@change="tableChangeMoney"
|
||||
v-model="row.bxyMoney"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="mt10">
|
||||
<el-form-item label="疾病种类" prop="tf_diseaseId"
|
||||
:rules="[{required:true,message:'请选择疾病种类',trigger:['change','blur']}]">
|
||||
<el-select placeholder="请选择疾病种类" style="width: 50%"
|
||||
v-model="formData.tf_diseaseId" filterable @change="diseaseIdChange">
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预测补助金额(元)" prop="tf_forecastSubsidyMoney">
|
||||
<span slot="label">
|
||||
预测补助金额(元)
|
||||
<el-tooltip class="item" effect="dark"
|
||||
content="计算公式:((住院医疗)允许报销范围内个人承担部分金额+(住院医疗)自费部分金额+重病门诊自费金额+非住院肾衰竭治疗、靶向药金额)* 补助比例"
|
||||
placement="top-start">
|
||||
<i class="el-icon-question"></i>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<el-input-number v-model="formData.tf_forecastSubsidyMoney"
|
||||
style="width: 50%"></el-input-number>
|
||||
<el-button @click="calcMoney(formData.id)" type="primary">重新计算金额</el-button>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="爱心基金(元)" prop="tf_loveSubsidyMoney">
|
||||
<el-input-number :max="medicalSetting.loveMoney" :min="0" style="width: 50%"
|
||||
v-model="formData.tf_loveSubsidyMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
props: {
|
||||
showSummary: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
localPageForm: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
tableColumns: [
|
||||
{prop: 'loginname', label: '工号', fixed: "left"},
|
||||
{prop: 'username', label: '姓名', fixed: "left"},
|
||||
{prop: 'unionName', label: '所属工会', width: "180"},
|
||||
{prop: 'unitName', label: '所属单位', width: "180"},
|
||||
{prop: 'diseaseName', label: '疾病种类', width: "180"},
|
||||
{prop: 'isMajorDiseases', label: '重大疾病(次数)', width: "100"},
|
||||
{prop: 'applyNum', label: '申请总次数'},
|
||||
{prop: 'applyTime', label: '申请时间', width: "180"},
|
||||
{prop: 'hospitalSumMoney$', label: '住院医疗总额(不含门诊)', width: "120"},
|
||||
{prop: 'reimbursementMoney$', label: '实际报销总额', width: "120"},
|
||||
{prop: 'singleBearMoney$', label: '(住院医疗)允许报销范围内个人承担部分总额', width: "120"},
|
||||
{prop: 'personExpenseMoney$', label: '(住院医疗)自费部分总额', width: "120"},
|
||||
{prop: 'outpatientServiceMoney$', label: '重病门诊自费金额', width: "120"},
|
||||
{prop: 'bxyMoney$', label: '非住院肾衰竭治疗、靶向药金额', width: "120"},
|
||||
{prop: 'totalMoney', label: '合计金额', width: "120"},
|
||||
{prop: 'instanceState', label: '流程状态'},
|
||||
{prop: 'subsidyMoney', label: '补助金额'},
|
||||
{prop: 'loveSubsidyMoney', label: '爱心补助金额'},
|
||||
],
|
||||
costList: [],
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
diseaseList: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false,
|
||||
year: new Date().getFullYear() + "",
|
||||
pageSize: 9999,
|
||||
isMajorDiseases: null
|
||||
},
|
||||
medicalSetting: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
watch: {
|
||||
"localPageForm": {
|
||||
handler(val) {
|
||||
this.pageForm = {...this.pageForm, ...val}
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
onDelete(id) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/mine/delete", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param
|
||||
const sums = []
|
||||
columns.forEach((column, index) => {
|
||||
const sumColumn = ['hospitalSumMoney$', 'reimbursementMoney$', 'singleBearMoney$', 'personExpenseMoney$', 'subsidyMoney', 'loveSubsidyMoney', 'outpatientServiceMoney$', 'totalMoney']
|
||||
if (sumColumn.includes(column.property)) {
|
||||
const values = data.map(i => Number(i[column.property]))
|
||||
if (values && values.length > 0) {
|
||||
const everyColumnSum = values.reduce((a, b) => a + b)
|
||||
sums[index] = isNaN(everyColumnSum) ? 0 : everyColumnSum.toFixed(2)
|
||||
}
|
||||
}
|
||||
})
|
||||
sums[0] = '合计'
|
||||
return sums
|
||||
},
|
||||
// 修改表格里面的金额并修改数据库里的数据
|
||||
tableChangeMoney() {
|
||||
this.costList.forEach(cost => {
|
||||
const personExpenseMoney = cost.hospitalSumMoney - cost.reimbursementMoney - cost.singleBearMoney
|
||||
cost.personExpenseMoney = isNaN(personExpenseMoney) ? 0 : personExpenseMoney < 0 ? 0 : personExpenseMoney.toFixed(2)
|
||||
})
|
||||
console.log(this.costList)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/foundationAudit/updateCost", {
|
||||
data: JSON.stringify(this.costList)
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
// 重新计算预测补助金额
|
||||
calcMoney() {
|
||||
},
|
||||
diseaseIdChange(val) {
|
||||
const disease = this.diseaseList.find(i => i.id === val)
|
||||
this.$set(this.formData, "tf_diseaseName", disease.diseaseName)
|
||||
this.$set(this.formData, "tf_isMajorDiseases", disease.isMajorDiseases)
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
const disease = this.diseaseList.find(i => i.id === row.diseaseId)
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
tf_diseaseId: row.diseaseId,
|
||||
tf_oldDiseaseId: row.diseaseId,
|
||||
tf_oldDiseaseName: disease.diseaseName,
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.diseaseIdChange(row.diseaseId)
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.costList = this.$refs.medicalInfoRef.viewData.costList
|
||||
}, 500)
|
||||
},
|
||||
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
},
|
||||
getMedicalSetting() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/basicSetting/getSetting").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.medicalSetting = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
doExport(command) {
|
||||
const params = {
|
||||
...this.pageForm,
|
||||
isMajorDiseases: command.val
|
||||
};
|
||||
this.$downLoad('/platform/medicalMutualAid/medical/statistics/doExport', params);
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.$emit('ready')
|
||||
this.getMedicalSetting()
|
||||
this.getDiseaseList()
|
||||
this.unionList = await this.$businessTool.listUnion()
|
||||
this.unitList = await this.$businessTool.listUnit()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="请选择年度"
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
></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="疾病种类">
|
||||
<el-select clearable placeholder="请选择疾病种类"
|
||||
v-model="pageForm.diseaseId" filterable>
|
||||
<el-option
|
||||
:key="i.id"
|
||||
:label="i.diseaseName"
|
||||
:value="i.id"
|
||||
v-for="i in diseaseList">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool label="申请列表">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<medical-table ref="table" :local-table-data="tableData" v-loading="tableLoading"
|
||||
:local-page-form="pageForm" @ready="doSearch">
|
||||
<template slot="operation">
|
||||
<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="onAudit(row)" size="mini" type="primary">
|
||||
审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</medical-table>
|
||||
|
||||
</el-card>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<medical-info ref="medicalInfoRef">
|
||||
<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="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</medical-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include('../common/medicalTable.js'){}#-->
|
||||
<!--#include('../common/medicalInfo.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
diseaseList: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false,
|
||||
year: new Date().getFullYear() + "",
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"medical-table": MEDICAL_TABLE,
|
||||
"medical-info": MEDICAL_INFO
|
||||
},
|
||||
methods: {
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
onAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.medicalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
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: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDiseaseList() {
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/apply/getDiseaseList").then(res => {
|
||||
if (res.code === 0) {
|
||||
this.diseaseList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.getDiseaseList()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user