Files
2026-09-08 19:49:21 +08:00

413 lines
18 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-input-number input {
text-align: left !important;
}
.el-input-number__decrease, .el-input-number__increase {
display: none;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">&emsp;&emsp;度:</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年"
style="width: 100%"
type="year" v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">&emsp13;&emsp13;人:</div>
<div class="search-item-option">
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend" style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="rei.userName"></el-option>
<el-option label="工号" value="rei.loginName"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select @change="flushUnits" @clear="flushUnits" clearable="true"
filterable="true"
placeholder="所属工会" style="width: 100%;"
v-model="pageForm.unionId">
<el-option :label="item.unionname" :value="item.id"
v-for="item in unions"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">所属单位:</div>
<div class="search-item-option">
<el-select clearable="true" filterable="true" placeholder="所属单位"
style="width: 100%;"
v-model="pageForm.unitId">
<el-option :label="item.name" :value="item.id"
v-for="item in units"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">报销项目:</div>
<div class="search-item-option">
<el-select clearable style="width: 100%" v-model="pageForm.reiItemId">
<el-option value="ww" label="慰问"></el-option>
<el-option value="fyhd" label="活动"></el-option>
<el-option value="fyjj" label="建家"></el-option>
<el-option value="fyrc" label="日常"></el-option>
<el-option value="zflw" label="劳务"></el-option>
<el-option value="zfzj" label="专家"></el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="报销列表">
<template #func>
<div class="pull-right offscreen-right mt5">
<el-radio-group @change="doSearch" size="medium" v-model="pageForm.isAudit">
<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>
</div>
</template>
</table-tool>
<el-row class="el-table-container">
<el-table :data="tableData" @sort-change="pageOrder" row-key="id"
style="width: 100%"
v-loading="tabLoading">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号"
type="index"
width="80px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns">
<template scope="{row}" v-if="column.prop==='stateId'">
<span :style="'color:'+row.stateColor">{{row.stateName}}</span>
</template>
<template scope="{row}" v-else-if="column.prop==='unitName'">
{{isDisPlayCode?''+row.unitcode+'':null}}{{row.unitName}}
</template>
<template scope="{row}" v-else-if="column.prop==='unionname'">
{{isDisPlayCode?''+row.unioncode+'':null}}{{row.unionname}}
</template>
<template scope="{row}" v-else-if="column.prop=='reimbursementItemSort'">
{{row.reimbursementItemSort==='fy'?'费用报销':'支付报销'}}
</template>
<template scope="{row}" v-else-if="column.prop=='description'">
<span>{{row.activity_name!=null?'活动名称:'+row.activity_name:'被慰问人:'+row.be_username}}</span>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作"
width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button :loading="row.loading" size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item :command="{type:'doRecall',data:row}"
:disabled="row.State<=3043">
撤回
</el-dropdown-item>
<el-dropdown-item :command="{type:'Review',data:row}"
:disabled="row.State!=3043">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<reimbursement-new ref="rei_info2" handle label="审核">
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4"
maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button type="danger" @click="doReview(1)">
</el-button>
<el-button type="warning" @click="doReview(2)">退回
</el-button>
<el-button type="success" @click="doReview(3)">
</el-button>
</div>
</template>
</reimbursement-new>
</template>
<template #view>
<!--<activity-bx-info ref="act_info" v-show="reimbursementItemId!=4"></activity-bx-info>
<info ref="info" v-show="reimbursementItemId==4"></info>-->
<reimbursement-new ref="rei_info"></reimbursement-new>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
ReimbursementIsSign: false,
reimbursementItemId: "",
unions: [],
units: [],
tabLoading: false,
userOptions: [],
formData: {},
tableData: [],
typeOptions: [],
pageForm: {
searchName: "rei.userName",
isAudit: false,
year: new Date().getFullYear() + ""
},
formRules: {
/* auditOpinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],
opinion: [{required: true, message: '必填', trigger: ['blur', 'change']}],*/
},
tableColumns: [
{prop: 'loginName', label: '经办人工号'},
{prop: 'userName', label: '经办人'},
{prop: 'unionName', label: '所在工会'},
{prop: 'unitName', label: '所在单位', sortable: true},
{prop: 'mobile', label: '联系方式'},
{prop: 'reimbursementItemSort', label: '报销类别', sortable: true},
{prop: 'reimbursementItemName', label: '报销项目', sortable: true},
{prop: 'applyTime', label: '申请时间', sortable: true},
{prop: 'stateId', label: '申请状态'},
{prop: 'description', label: '备注'},
],
subDis: false,
subLoading1: false,
subLoading2: false,
subLoading3: false,
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
'info': httpVueLoader('/components/condolence/Info.vue'),
'activity-bx-info': httpVueLoader('/components/activityBx/ActivityBxInfo.vue'),
'reimbursement-new': httpVueLoader('/components/reimbursement/reimbursementNew.vue?v=4.0.0'),
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'doRecall') {
this.doRecall(data)
} else if (type == 'Review') {
this.openReview(data)
}
},
async doRecall(row) {
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
});
if ("confirm" === confirm) {
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doRecall", {
id: row.id
});
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
loading.close()
}
},
async doReview(flag) {
const confirm = await this.$confirm('您确定要审核吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
});
if ("confirm" === confirm) {//确认后再执行
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doSubmit", {
id: this.formData.id,
flag: flag,
auditOpinion: this.formData.auditOpinion
});
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
this.$refs.guava.index()
} else {
this.notifyWarning(resp.msg)
}
loading.close()
}
},
openReview(row) {
this.formData = {
id: row.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD')
}
this.$refs.rei_info2.getInfo(row.id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
openView(row) {
this.$refs.rei_info.getInfo(row.id)
this.$refs.guava.view()
},
async getTypeOptions() {
const {code, data} = await $.get("/platform/condolence/type/getAll")
if (code == 0) {
this.typeOptions = data
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
this.units = await getUnits(this.pageForm.unionId)
},
async pageData() {
let form = clone(this.pageForm)
if (form.isAudit === null) {
delete form.isAudit
}
const resp = await $.post(loc() + "/pageData", form)
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message.error(resp.msg);
}
},
},
async created() {
this.getTypeOptions()
if ("${@shiro.hasAnyRoles('sysadmin','A06','xghkj')}" === 'true') {
this.unions = await getUnionList(null)
} else {
this.unions = await getUnionList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
this.pageForm.unionId = this.unions[0].id
}
this.flushUnits()
this.pageData();
const aa = await getDictState("ReimbursementIsSign")
this.ReimbursementIsSign = aa.disabled
}
})
</script>
<!--#
}
#-->