# Conflicts:
#	src/main/java/com/budwk/app/zhgh/staffbenefit/medicalMutualAid/medical/param/MedicalPageForm.java
This commit is contained in:
2026-01-24 17:44:36 +08:00
14 changed files with 2210 additions and 998 deletions
@@ -9,11 +9,11 @@ layout("/layouts/platform.html"){
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
@@ -31,37 +31,33 @@ layout("/layouts/platform.html"){
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.foundTime).format('YYYY-MM-DD') }}</span>
<span>{{ row.foundTime ? $moment(row.foundTime).format('YYYY-MM-DD') : '无' }}</span>
</template>
</el-table-column>
<el-table-column label="年度" prop="applyTime" sortable show-overflow-tooltip>
<el-table-column label="年度" prop="applyYear" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.applyTime).format('YYYY') }}</span>
</template>
</el-table-column>
<el-table-column label="申请时间" prop="applyTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="300px">
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
<template v-slot="{ row }">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="300">
<template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
审核
</el-button>
<el-button
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
@click="openRevoke(row.processInstanceTaskId)"
size="mini"
type="danger"
>
撤回
</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>
</el-table>
@@ -69,21 +65,26 @@ layout("/layouts/platform.html"){
</el-card>
<template #public>
<evaluate-info ref="evaluateInfoRef"></evaluate-info>
<div v-if="showApprovalForm">
<div class="process-title">{{formData.processInstanceNodeName}}</div>
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button plain @click="$refs.guava.index()">取消</el-button>
<el-button type="danger" @click="doApproval('BACK')">退回</el-button>
<el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button>
<el-button type="primary" @click="doApproval('PASS')">同意</el-button>
</el-row>
</div>
<evaluate-info ref="evaluateInfoRef">
<div v-if="showApprovalForm">
<div class="process-title">
{{formData.taskName}}
</div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form">
<el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</evaluate-info>
</template>
</guava>
</div>
@@ -93,6 +94,7 @@ layout("/layouts/platform.html"){
new Vue({
el: "#app",
mixins: [initTableMixins],
dicts: ["PROCESS_INSTANCE_STATE"],
data() {
return {
pageForm: {
@@ -111,42 +113,47 @@ layout("/layouts/platform.html"){
methods: {
openView(row) {
this.$refs.guava.public(() => {
this.$refs.evaluateInfoRef.onOpen(row.id)
this.$refs.evaluateInfoRef.onOpen(row)
this.showApprovalForm = false
})
},
openApproval(row) {
onAudit(row) {
this.$refs.guava.public(() => {
this.$refs.evaluateInfoRef.onOpen(row.id)
this.formData = row.approvalParam
this.showApprovalForm = true
})
},
doApproval(approvalType) {
this.formData.bpmTaskApprovalType = approvalType
this.$refs.approvalFormRef.validate((valid) => {
if (valid) {
this.$axios
.post(loc() + "/approval", {
approval: JSON.stringify(this.formData)
})
.then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.showApprovalForm = true
this.$refs.evaluateInfoRef.onOpen(row)
})
},
openRevoke(taskId) {
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: "info"
}).then(() => {
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
File diff suppressed because it is too large Load Diff
@@ -2,9 +2,7 @@
layout("/layouts/platform.html"){
#-->
<style>
.left-span-label {
margin: 20px 0;
}
</style>
<div id="app" v-cloak>
@@ -13,11 +11,12 @@ layout("/layouts/platform.html"){
<search @search="doSearch">
<search-item label="年度">
<el-date-picker
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
placeholder="请选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
@@ -35,7 +34,7 @@ layout("/layouts/platform.html"){
<el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="年度" prop="year" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
@@ -45,21 +44,17 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="申请时间" prop="registerDate" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="300px">
<template slot-scope="{row}">
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
<template v-slot="{ row }">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="300">
<template v-slot="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
审核
</el-button>
<el-button
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
@click="openRevoke(row.processInstanceTaskId)"
size="mini"
type="danger"
>
撤回
</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>
</el-table>
@@ -67,21 +62,26 @@ layout("/layouts/platform.html"){
</el-card>
<template #public>
<examine-info ref="examineInfoRef"></examine-info>
<div v-if="showApprovalForm">
<div class="process-title">{{formData.processInstanceNodeName}}</div>
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button plain @click="$refs.guava.index()">取消</el-button>
<el-button type="danger" @click="doApproval('BACK')">退回</el-button>
<el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button>
<el-button type="primary" @click="doApproval('PASS')">同意</el-button>
</el-row>
</div>
<examine-info ref="examineInfoRef">
<div v-if="showApprovalForm">
<div class="process-title">
{{formData.taskName}}
</div>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=""
class="flow-task-form">
<el-form-item label="审批意见" prop="tf_opinion"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</examine-info>
</template>
</guava>
</div>
@@ -109,42 +109,47 @@ layout("/layouts/platform.html"){
methods: {
openView(row) {
this.$refs.guava.public(() => {
this.$refs.examineInfoRef.onOpen(row.id)
this.$refs.examineInfoRef.onOpen(row)
this.showApprovalForm = false
})
},
openApproval(row) {
onAudit(row) {
this.$refs.guava.public(() => {
this.$refs.examineInfoRef.onOpen(row.id)
this.formData = row.approvalParam
this.showApprovalForm = true
})
},
doApproval(approvalType) {
this.formData.bpmTaskApprovalType = approvalType
this.$refs.approvalFormRef.validate((valid) => {
if (valid) {
this.$axios
.post(loc() + "/approval", {
approval: JSON.stringify(this.formData)
})
.then((res) => {
if (res.code === 0) {
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
})
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
this.showApprovalForm = true
this.$refs.examineInfoRef.onOpen(row)
})
},
openRevoke(taskId) {
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: "info"
}).then(() => {
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
@@ -16,15 +16,15 @@ const EXAMINE_INFO_COMPONENT = {
<file-preview :files="viewData.summaryFiles" complete_result></file-preview>
</el-descriptions-item>
</el-descriptions>
<!-- <div class="process-title">协会成员变化情况</div>-->
<!-- <el-table :data="viewData.changeUserNum" max-height="300">-->
<!-- <el-table-column label="序号" type="index" width="50"></el-table-column>-->
<!-- <el-table-column label="教职工类别" prop="userState"></el-table-column>-->
<!-- <el-table-column label="年初人员" prop="yearFirstNum"></el-table-column>-->
<!-- <el-table-column label="年度增加" prop="yearAddNum"></el-table-column>-->
<!-- <el-table-column label="年度减少" prop="yearEditNum"></el-table-column>-->
<!-- <el-table-column label="年末人数" prop="thisYearNum"></el-table-column>-->
<!-- </el-table>-->
<div class="process-title">协会成员变化情况</div>
<el-table :data="viewData.changeUserNum" max-height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="教职工类别" prop="userState"></el-table-column>
<el-table-column label="年初人员" prop="yearFirstNum"></el-table-column>
<el-table-column label="年度增加" prop="yearAddNum"></el-table-column>
<el-table-column label="年度减少" prop="yearReduceNum"></el-table-column>
<el-table-column label="年末人数" prop="thisYearNum"></el-table-column>
</el-table>
<slot></slot>
<snaker-chart ref="snakerChartRef"></snaker-chart>
@@ -43,7 +43,7 @@ const EXAMINE_INFO_COMPONENT = {
<div class="process-title">下一年度活动计划</div>
<el-table :data="viewData.plans" max-height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="活动时间" prop="activityTime"></el-table-column>
<!--<el-table-column label="活动时间" prop="activityTime"></el-table-column>-->
<el-table-column label="活动主题/赛事名称" prop="activityName" show-overflow-tooltip></el-table-column>
<el-table-column label="活动/赛事主办单位" prop="activityUnit" show-overflow-tooltip></el-table-column>
<el-table-column label="活动地点" prop="activityAddress" show-overflow-tooltip></el-table-column>
@@ -56,23 +56,22 @@ const EXAMINE_INFO_COMPONENT = {
<el-table-column label="日期" prop="date"></el-table-column>
<el-table-column label="项目内容" prop="content"></el-table-column>
<el-table-column label="收入类型" prop="incomeType"></el-table-column>
<el-table-column label="金额(元)" prop="money"></el-table-column>
<!-- <el-table-column label="年初余额" prop="qcMoney"></el-table-column>-->
<!-- <el-table-column label="收入" prop="income"></el-table-column>-->
<!-- <el-table-column label="支出" prop="expend"></el-table-column>-->
<!-- <el-table-column label="年度结余" prop="qmMoney"></el-table-column>-->
<el-table-column label="年初余额" prop="qcMoney"></el-table-column>
<el-table-column label="收入" prop="income"></el-table-column>
<el-table-column label="支出" prop="expend"></el-table-column>
<el-table-column label="年度结余" prop="qmMoney"></el-table-column>
<el-table-column label="备注" prop="notes"></el-table-column>
</el-table>
<!-- <div class="process-title">统计</div>-->
<!-- <el-table v-if="viewData" :data="viewData.incomeCensus" max-height="300">-->
<!-- <el-table-column label="去年年度结余" prop="lasYearSurplus"></el-table-column>-->
<!-- <el-table-column label="会费收入" prop="income"></el-table-column>-->
<!-- <el-table-column label="校工会拨款" prop="allocate"></el-table-column>-->
<!-- <el-table-column label="社会赞助" prop="support"></el-table-column>-->
<!-- <el-table-column label="年度总支出" prop="totalExpend"></el-table-column>-->
<!-- <el-table-column label="年度结余" prop="surplus">-->
<!-- </el-table-column>-->
<!-- </el-table>-->
<div class="process-title">统计</div>
<el-table v-if="viewData" :data="viewData.incomeCensus" max-height="300">
<el-table-column label="去年年度结余" prop="lastYearSurplus"></el-table-column>
<el-table-column label="会费收入" prop="income"></el-table-column>
<el-table-column label="校工会拨款" prop="allocate"></el-table-column>
<el-table-column label="社会赞助" prop="support"></el-table-column>
<el-table-column label="年度总支出" prop="totalExpend"></el-table-column>
<el-table-column label="年度结余" prop="surplus">
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="4" label="协会成员">
<div class="process-title">协会成员</div>
@@ -145,7 +144,8 @@ const EXAMINE_INFO_COMPONENT = {
},
async getClubUserNum(clubId) {
const resp = await this.$axios.post("/platform/club/examine/apply/getClubUserNum", {
clubId: clubId
clubId: clubId,
year: this.row.year
})
this.$set(this.viewData, "changeUserNum", resp.data)
},
@@ -0,0 +1,411 @@
<!--#
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%"
: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="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
</el-row>
</div>
</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>
<!--#
}
#-->