Files
UNION_NSI/target/classes/views/platform/welfare/member/escalation.html
T
2026-09-08 19:49:21 +08:00

496 lines
19 KiB
HTML
Raw 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>
.flexible-gifts {
display: flex;
flex-direction: column
}
.flexible-gifts-item {
display: flex;
}
.flexible-gifts-item:not(:first-of-type) {
margin-top: 15px;
}
.flexible-gifts-item-input {
width: calc(100% - 144px);
}
.flexible-gifts-item-radio {
width: 100px;
text-align: center;
}
.flexible-gifts-item-delete {
width: 44px;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.el-transfer-panel {
text-align: left;
width: calc(50% - 91px);
height: 53vh;
}
.el-transfer-panel__list.is-filterable {
height: calc(50vh - 110px);
}
.transfer {
display: flex;
height: 100%;
width: 100%;
align-items: center;
padding: 0 10px;
}
.transfer .el-checkbox {
display: inline-block !important;
margin: 0 10px !important;
}
</style>
<div id="app" class="platform" v-cloak>
<guava ref="guava" padding="0 20%">
<template>
<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
v-model="pageForm.year"
type="year"
style="width: 100%"
value-format="yyyy"
placeholder="请选择">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">项目名称:</div>
<div class="search-item-option">
<el-input placeholder="请输入内容" clearable v-model="pageForm.name"
@keyup.enter.native="doSearch" style="width:100%"></el-input>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="福利项目" :app="this">
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder" :size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table-column type="expand">
<template scope="{row}">
<vi-title title="详细信息"></vi-title>
<el-form label-width="120px" label-suffix="">
<el-row gutter="20">
<el-col span="8">
<el-form-item label="项目名称">
{{ row.name }}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="发放节日">
{{ row.festival }}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="发放地点">
{{ row.provideAddress }}
</el-form-item>
<!-- <el-form-item label="弹性福利" v-if="row.flexible">
<el-row v-for="item,i in row.flexibleGifts">
{{i+1}}. {{item.name}} <span v-if="item.isDefault"
class="text-primary">(默认)</span>
</el-row>
</el-form-item>-->
<el-row gutter="20">
<el-col span="8">
<el-form-item label="发放形式">
{{welfareProvideMode.find(v=>v.code==row.provideMode).description}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="签收形式">
{{welfareSignMode.find(v=>v.code==row.signMode).description}}
</el-form-item>
</el-col>
<!-- <el-col span="8">-->
<!-- <el-form-item label="通知推送">-->
<!-- {{welfareNoticePushMode.find(v=>v.code==row.noticePushMode).description}}-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row>
</el-form>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
<template v-if="column.prop=='provideTimeStart'" scope="{row}">
<i class="el-icon-time"></i>&ensp;{{row.provideTimeStart}} <span
v-if="row.provideTimeEnd">- {{row.provideTimeEnd}}</span>
</template>
<template v-if="column.prop=='gift'" scope="{row}">
<span v-if="row.flexible">福利套餐</span>
<span v-else>{{row.gift}}</span>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini" :loading="submitLoading">
<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:'open',data:row}"
:disabled="![null,7000,7020].includes(row.stateId)">
上报
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #edit>
<el-card shadow="never">
<el-transfer
ref="transfer"
:titles="['可报人员名单', '当前选择']"
filterable
:props="{key: 'id',label: 'names'}"
:filter-method="filterMethod"
v-model="rightData"
:data="leftData">
<template #left-footer>
<div></div>
</template>
</el-transfer>
</el-card>
<el-card shadow="never" class="mt10">
<el-table :data="escalationTableData" max-height="500px">
<el-table-column
type="index" label="序号" header-align="center"
align="center"
width="100">
</el-table-column>
<el-table-column prop="username" header-align="center" align="center"
label="姓名"></el-table-column>
<el-table-column prop="loginname" header-align="center" align="center"
label="教工号"></el-table-column>
<el-table-column prop="unitname" header-align="center" align="center" sortable
label="单位"></el-table-column>
<el-table-column header-align="center" align="center" sortable
label="操作">
<template scope="{$index,row}">
<el-button type="danger" size="mini" @click="rightData.splice($index,1)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-row class="mt10 text-right">
<el-button @click="doSave" v-loading="submitLoading" type="primary" class="mt10">
保存
</el-button>
<el-button @click="doAdd" v-loading="submitLoading" type="primary" class="mt10">
提交
</el-button>
</el-row>
</template>
<template #view>
<welfare-user-escalation ref="welfareUserEscalation"></welfare-user-escalation>
</template>
</guava>
</div>
<script>
<!--#include("/platform/welfare/include/common.js"){}#-->
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
judgmentAuthority,
fields: [
{
label: '性别',
value: 'sex',
type: "select",
options: [{label: '男', value: '男'}, {label: '女', value: '女'}]
},
{label: '出生日期', value: 'birthday', type: "date"},
],
welfareProvideMode: [],
welfareSignMode: [],
welfareNoticePushMode: [],
pageForm: {
year: moment().format('YYYY')
},
tableColumns: [
// {prop: 'year', label: '年度'},
{prop: 'name', label: '项目名称'},
// {prop: 'gift', label: '福利礼品'},
// {prop: 'provideTimeStart', label: '发放时间'},
{prop: 'userCount', label: '当前上报'},
{prop: 'stateName', label: '审核状态'},
],
formRules: {
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
festival: [{required: true, message: '必选', trigger: ['blur', 'change']}],
provideTime: [{required: true, message: '必选', trigger: ['blur', 'change']}],
choiceTime: [{required: true, message: '必选', trigger: ['blur', 'change']}],
provideAddress: [{required: true, message: '必选', trigger: ['blur', 'change']}],
provideMode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
signMode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
noticePushMode: [{required: true, message: '必选', trigger: ['blur', 'change']}],
gift: [{required: true, message: '必填', trigger: ['blur', 'change']}],
multiSelectNum: [{required: true, message: '必填', trigger: ['blur', 'change']}],
// flexible: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
welfare,
welfareUnitMode,
exportWelfareListDialog: false,
selPersonType: [],
welfare_id: null,
welfarePersonTypeList: [],
leftData: [],
rightData: [],
}
},
computed: {
escalationTableData() {
return this.leftData.filter(v => this.rightData.includes(v.id))
}
},
components: {
'welfare-user-escalation': httpVueLoader('/components/welfare/welfareUserEscalation.vue?v=1.0.0'),
},
methods: {
async openAdd() {
this.$refs.guava.edit()
const {data} = await $.get(loc() + '/selfUnionUsers')
this.leftData = data
const {data: rightData} = await $.get(loc() + '/getReportedUser', {
projectId: this.welfare_id
})
this.leftData = data
this.rightData = rightData
},
doSave() {
this.$confirm('保存后可继续修改,您确定要保存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const {code, msg} = await $.post(loc() + '/doSave', {
userIds: JSON.stringify(this.rightData),
projectId: this.welfare_id
})
if (code === 0) {
this.pageData()
this.notifySuccess(msg)
this.$refs.guava.index()
} else {
this.notifyWarning(msg)
}
})
},
doAdd() {
this.$confirm('提交后不可修改,您确定要提交吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const {code, msg} = await $.post(loc() + '/doAdd', {
userIds: JSON.stringify(this.rightData),
projectId: this.welfare_id
})
if (code === 0) {
this.pageData()
this.notifySuccess(msg)
this.$refs.guava.index()
} else {
this.notifyWarning(msg)
}
})
},
filterMethod(query, item) {
return item.username.indexOf(query) > -1;
},
exportWelfareList,
doDelete(id) {
},
dropdownCommand(command) {
const {type, data} = command
this.welfare_id = data.id
if (type === 'open') {
this.openAdd()
} else if (type === 'view') {
this.openView()
}
// if (type == 'view') {
// this.openView(data.id)
// } else if (type == 'edit') {
// this.openEdit(data)
// } else if (type == 'delete') {
// this.doDelete(data.id)
// } else if (type == 'createList') {
// this.createList(data)
// } else if (type == 'createList2') {
// this.createList2(data)
// } else if (type == 'export') {
// this.exportWelfareListDialog = true
// // this.exportWelfareList(data.id)
// }
},
async openEdit(row) {
},
openView() {
this.$refs.guava.view()
this.$refs.welfareUserEscalation.findOne(this.welfare_id)
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
$.post(loc() + "/pageData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
data.data.list.forEach(v => {
v.flexibleGifts = JSON.parse(v.flexibleGifts || "[]")
})
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
},
async created() {
this.pageData();
this.welfareProvideMode = await getEnumOptions("WelfareProvideMode")
this.welfareSignMode = await getEnumOptions("WelfareSignMode")
this.welfareNoticePushMode = await getEnumOptions("WelfareNoticePushMode")
this.welfarePersonTypeList = await getPersonTypeListGroupByWelfare()
this.welfarePersonTypeList.map(v => {
this.selPersonType.push(v.personType)
})
const personType = await getDictOptions("UserType")
const userState = await getDictOptions("userState")
this.fields = this.fields.concat([{
label: '人员类型',
value: 'personType',
type: "select",
options: personType.map(v => {
return {label: v.name, value: v.code}
})
}, {
label: '在职状态',
value: 'userState',
type: "select",
options: userState.map(v => {
return {label: v.name, value: v.code}
})
}])
}
})
</script>
<!--#
}
#-->