941 lines
43 KiB
HTML
941 lines
43 KiB
HTML
<!--#
|
|
layout("/layouts/platform.html"){
|
|
#-->
|
|
<style>
|
|
.el-select {
|
|
width: 100%;
|
|
}
|
|
.text {
|
|
font-size: 14px;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.e-item {
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.el-divider--horizontal {
|
|
margin: 5px 0;
|
|
}
|
|
|
|
.v-tab .el-card__header {
|
|
padding: 10px 15px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.reserve_btn {
|
|
font-size: 15px;
|
|
float: right;
|
|
padding: 3px 0
|
|
}
|
|
|
|
.is-selected {
|
|
color: #1989FA;
|
|
}
|
|
.el-carousel__button {
|
|
background-color: #c0c4cc;
|
|
}
|
|
|
|
.el-carousel__container {
|
|
height: 260px;
|
|
}
|
|
|
|
.el-button--mini.is-circle {
|
|
padding: 5px;
|
|
font-size: 1px;
|
|
}
|
|
|
|
.slider {
|
|
position: relative;
|
|
}
|
|
.el-slider__marks-text {
|
|
margin-top: 10px !important;
|
|
}
|
|
|
|
.el-slider__stop {
|
|
z-index: 1001;
|
|
}
|
|
|
|
.el-slider__bar {
|
|
z-index: 1000;
|
|
}
|
|
|
|
.el-slider__marks-text {
|
|
min-width: 40px !important;
|
|
}
|
|
|
|
.el-slider__button-wrapper {
|
|
display: none !important;
|
|
}
|
|
.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;
|
|
}
|
|
|
|
.el-divider {
|
|
background-color: #ec524b !important;
|
|
}
|
|
|
|
.el-divider__text {
|
|
color: #ec524b !important;
|
|
}
|
|
|
|
.el-timeline-item__timestamp {
|
|
color: #ec524b;
|
|
}
|
|
|
|
.activeCard {
|
|
border: 1px solid #409EFF;
|
|
}
|
|
|
|
.el-table-container {
|
|
padding-top: 10px;
|
|
padding-left: 5px;
|
|
padding-right: 5px;
|
|
}
|
|
</style>
|
|
|
|
<div id="app" v-cloak>
|
|
<guava ref="guava">
|
|
<template>
|
|
<el-card shadow="never">
|
|
|
|
<div class="btn-group tool-button">
|
|
<div class="block">
|
|
<el-date-picker
|
|
v-model="pageForm.year"
|
|
type="year" @change="getEvaluateByYear()"
|
|
value-format="yyyy"
|
|
placeholder="年度">
|
|
</el-date-picker>
|
|
</div>
|
|
</div>
|
|
|
|
<!--<div class="btn-group tool-button">
|
|
<el-select placeholder="评优评先名称" v-model="pageForm.evaluateId" style="width: 100%;"
|
|
clearable="true" filterable="true">
|
|
<el-option v-for="item in evaluateOptions" :label="item.evaluateName"
|
|
:value="item.evaluateId"></el-option>
|
|
</el-select>
|
|
</div>-->
|
|
|
|
<div class="btn-group tool-button">
|
|
<el-radio-group v-model="pageForm.honorType" @change="(o) => {radioChange(o)}">
|
|
<el-radio-button v-for="v in honorTypeList" :label="v.id">{{v.name}}
|
|
</el-radio-button>
|
|
</el-radio-group>
|
|
</div>
|
|
|
|
<div class="btn-group tool-button">
|
|
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
|
|
</div>
|
|
|
|
<!--<div class="pull-right offscreen-right">
|
|
<el-button size="medium" type="primary" @click="applyEvaluate">申请评优评先</el-button>
|
|
</div>-->
|
|
|
|
</el-card>
|
|
|
|
<el-row class="el-table-container">
|
|
<el-carousel :interval="5000" arrow="always" style="margin: 10px auto">
|
|
<el-carousel-item v-for="index in Math.ceil(evaluateOptions.length/4)" v-if="evaluateOptions && evaluateOptions.length > 0" :key="index">
|
|
<el-row :gutter="20">
|
|
<el-col v-for="item in evaluateOptions.slice((index-1)*4,index*4)" :span="6">
|
|
<el-card :class="'box-card ' + (item.evaluateId === pageForm.evaluateId ? 'activeCard' : '')"
|
|
style="border-radius: 10px">
|
|
<div slot="header" class="clearfix" style="font-size: 16px;padding: 5px 0"
|
|
@click="clickEvaluate(item)">
|
|
<span>{{item.evaluateName}}</span>
|
|
<el-button @click.stop="applyEvaluate(item)" class="reserve_btn" type="text">
|
|
申请
|
|
</el-button>
|
|
</div>
|
|
|
|
<div @click="clickEvaluate(item)" style="display: flex; justify-content: space-between">
|
|
<div style="width: 79%">
|
|
<div class="text e-item">
|
|
<span style="color: gray">类  型:</span>
|
|
<span >{{item.honorTypeName + ' - ' + item.honorName}}</span>
|
|
</div>
|
|
<div class="text e-item">
|
|
<span style="color: gray">报名范围:</span>
|
|
{{item.groupName}}
|
|
</div>
|
|
<div class="text e-item">
|
|
<span style="color: gray">开始时间:</span>
|
|
{{moment(item.startTime).format('YYYY/MM/DD HH:mm')}}
|
|
</div>
|
|
<div class="text item">
|
|
<span style="color: gray">结束时间:</span>
|
|
{{moment(item.endTime).format('YYYY/MM/DD HH:mm')}}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<el-tag :type="getStatus(item).type" effect="dark" style="border-radius: 50%;float: right">
|
|
{{ getStatus(item).name }}
|
|
</el-tag>
|
|
</div>
|
|
</div>
|
|
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
</el-carousel-item>
|
|
<el-empty v-if="!evaluateOptions || evaluateOptions.length === 0" description="暂无数据"></el-empty>
|
|
</el-carousel>
|
|
</el-row>
|
|
|
|
<el-card class="mt10" shadow="never">
|
|
|
|
<template #vi-title>
|
|
<vi-title title="申请列表"></vi-title>
|
|
</template>
|
|
|
|
<el-table :data="tableData">
|
|
|
|
<el-table-column align="center" header-align="center" label="序号" type="index"
|
|
width="80px"></el-table-column>
|
|
|
|
<el-table-column
|
|
align="center"
|
|
header-align="center"
|
|
v-for="column in tableColumns"
|
|
:label="column.label"
|
|
:prop="column.prop" :sortable="column.sortable"
|
|
:sortable="column.sortable" show-overflow-tooltip>
|
|
</el-table-column>
|
|
|
|
<el-table-column align="center" header-align="center" label="申请时间" prop="applyTime"
|
|
show-overflow-tooltip></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="审核状态" prop="year"
|
|
show-overflow-tooltip>
|
|
<template slot-scope="{row}">
|
|
<span :style="'color: ' + row.stateColor">{{row.stateName}}</span>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
|
|
<template scope="{row}">
|
|
|
|
<el-dropdown @command="dropdownCommand">
|
|
<el-button plain 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:'edit',data:row}"
|
|
:disabled="row.stateId>1400">
|
|
编辑
|
|
</el-dropdown-item>
|
|
|
|
<!--#if(@shiro.hasRole('sysadmin')){#-->
|
|
<el-dropdown-item :command="{type:'delete',data:row}"
|
|
:loading="row.delLoading">
|
|
删除
|
|
</el-dropdown-item>
|
|
<!--#}else{#-->
|
|
<el-dropdown-item :command="{type:'delete',data:row}"
|
|
:disabled="row.stateId>1400"
|
|
:loading="row.delLoading">
|
|
删除
|
|
</el-dropdown-item>
|
|
<!--#}#-->
|
|
</el-dropdown-menu>
|
|
</el-dropdown>
|
|
</template>
|
|
</el-table-column>
|
|
|
|
</el-table>
|
|
|
|
<!--#include("/layouts/pagination.html"){}#-->
|
|
</el-card>
|
|
</template>
|
|
|
|
<template #edit>
|
|
|
|
<template #header>
|
|
<el-row type="flex" justify="space-between">
|
|
<h3>{{isEdit?'修改数据':'添加数据'}}</h3>
|
|
</el-row>
|
|
</template>
|
|
|
|
<el-form :model="formData" :rules="formRules" label-width="120px" ref="form">
|
|
|
|
<vi-title title="基础信息"></vi-title>
|
|
|
|
<template
|
|
v-if="formData.honorTypeId === undefined || formData.honorTypeId === HonorApi.honor_single_id">
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item prop="userId" label="申请人">
|
|
<el-select
|
|
style="width: 100%"
|
|
v-model="formData.userId"
|
|
filterable
|
|
remote
|
|
reserve-keyword
|
|
placeholder="请输入姓名或工号查找"
|
|
:remote-method="userRemoteMethod"
|
|
:loading="userLoading"
|
|
@change="userChange"
|
|
:disabled="isEdit">
|
|
<el-option
|
|
v-for="item in userOptions"
|
|
:key="item.id"
|
|
:label="item.username"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="性别" prop="userSex">
|
|
<el-radio-group v-model="formData.userSex" :disabled="isEdit">
|
|
<el-radio-button label="男"></el-radio-button>
|
|
<el-radio-button label="女"></el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
<!--<el-col :span="12">
|
|
<el-form-item prop="loginname" label="工号">
|
|
<el-input v-model="formData.loginname" placeholder="填写申请人自动填充"></el-input>
|
|
</el-form-item>
|
|
</el-col>-->
|
|
</el-row>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<!--<el-col :span="12">
|
|
<el-form-item label="民族" prop="nation">
|
|
<el-select style="width: 100%" filterable placeholder="填写申请人自动填充"
|
|
v-model="formData.nation">
|
|
<el-option v-for="nation in nationOptions" :key="nation" :value="nation"
|
|
:label="nation"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>-->
|
|
<el-col :span="12">
|
|
<el-form-item label="所属单位" prop="unitId">
|
|
<el-select v-model="formData.unitId" placeholder="填写申请人自动填充"
|
|
style="width: 100%;"
|
|
filterable="true"
|
|
:disabled="isEdit">
|
|
<el-option v-for="item in units"
|
|
:label="item.name"
|
|
:value="item.id"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="所属工会" prop="unionId">
|
|
<el-select v-model="formData.unionId" placeholder="填写申请人自动填充"
|
|
style="width: 100%;"
|
|
filterable="true"
|
|
:disabled="isEdit">
|
|
<el-option v-for="item in unions"
|
|
:label="item.unionname"
|
|
:value="item.id"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="生日" prop="birthday">
|
|
<el-date-picker
|
|
style="width: 100%"
|
|
v-model="formData.birthday"
|
|
type="date"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="政治面貌" prop="political">
|
|
<el-input v-model="formData.political" placeholder="填写申请人自动填充"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="在职状态" prop="userState">
|
|
<el-input v-model="formData.userState" placeholder="填写申请人自动填充"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="职称" prop="jobTitle">
|
|
<el-input v-model="formData.jobTitle" placeholder="填写申请人自动填充"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="加入工会时间" prop="joinTime">
|
|
<el-date-picker
|
|
style="width: 100%"
|
|
v-model="formData.joinTime"
|
|
type="date"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="请选择加入工会时间">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="担任工会职务" prop="position">
|
|
<el-input placeholder="请填写担任工会职务" v-model="formData.position"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
</template>
|
|
|
|
<template v-else>
|
|
|
|
<!--<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="获奖单位" prop="unitName">
|
|
<el-select placeholder="获奖单位" v-model="formData.unitName"
|
|
style="width: 100%;"
|
|
filterable
|
|
allow-create
|
|
:disabled="isEdit">
|
|
<el-option v-for="item in units"
|
|
:label="item.name"
|
|
:value="item.name"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="所属工会" prop="unionId">
|
|
<el-select placeholder="所属工会" v-model="formData.unionId"
|
|
style="width: 100%;"
|
|
filterable="true"
|
|
:disabled="isEdit">
|
|
<el-option v-for="item in unions"
|
|
:label="item.unionname"
|
|
:value="item.id"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>-->
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="申报分工会" prop="unionId">
|
|
<el-select placeholder="请选择申报分工会" v-model="formData.unionId"
|
|
style="width: 100%;"
|
|
@change="searchUnionInfo(formData.unionId)"
|
|
clearable="true"
|
|
disabled
|
|
filterable>
|
|
<el-option v-for="item in unions"
|
|
:label="item.unionname"
|
|
:value="item.id"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="工会主席" prop="unionLeader">
|
|
<el-input placeholder="请填写工会主席" v-model="formData.unionLeader"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
<!--<el-row type="flex" :gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="单位负责人" prop="unitLeader">
|
|
<el-input placeholder="请填写单位负责人" v-model="formData.unitLeader"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="单位人数" prop="unitPeopleNum">
|
|
<el-input-number v-model="formData.unitPeopleNum" :min="0"
|
|
:max="2000" style="width: 100%"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>-->
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<!--<el-col :span="12">
|
|
<el-form-item label="会员人数" prop="memberNum">
|
|
<el-input-number v-model="formData.memberNum" :min="0"
|
|
:max="2000" style="width: 100%"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="女职工人员" prop="unitFemalePeopleNum">
|
|
<el-input-number
|
|
v-model.number="formData.unitFemalePeopleNum" :min="0"
|
|
:max="2000" style="width: 100%"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>-->
|
|
<el-col :span="12">
|
|
<el-form-item label="会员人数" prop="memberNumber">
|
|
<el-input-number v-model="formData.memberNumber" :min="0"
|
|
placeholder="请填写会员人数"
|
|
:max="2000" style="width: 100%"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="工会小组数" prop="unionGroupNumber">
|
|
<el-input-number v-model="formData.unionGroupNumber" :min="0"
|
|
placeholder="请填写工会小组数"
|
|
:max="2000" style="width: 100%"></el-input-number>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
</template>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="曾受何种奖励" prop="award">
|
|
<el-input v-model="formData.award" type="textarea" rows="4"
|
|
placeholder="如有多种奖励,请用 / 隔开"></el-input>
|
|
<el-popover
|
|
v-model="popover"
|
|
placement="top-start"
|
|
width="800"
|
|
trigger="click">
|
|
<el-table :data="gridData" ref="multipleTable" @selection-change="handleSelectionChange"
|
|
row-key="id"
|
|
style="width: 100%; max-height: 400px; overflow-y: auto" size="mini">
|
|
<el-table-column
|
|
type="selection"
|
|
width="55">
|
|
</el-table-column>
|
|
<el-table-column v-if="formData.honorTypeId === HonorApi.honor_single_id" property="userName" label="姓名"></el-table-column>
|
|
<el-table-column property="prizeName" label="获奖名称"></el-table-column>
|
|
<el-table-column property="levelName" label="级别"></el-table-column>
|
|
<el-table-column property="grantDate" sortable label="授予时间"></el-table-column>
|
|
</el-table>
|
|
<div style="text-align: right; margin-top: 10px">
|
|
<el-button @click="multipleSelection = []; popover = false" size="mini">取消
|
|
</el-button>
|
|
<el-button @click="popoverOK" type="primary" size="mini">确定</el-button>
|
|
</div>
|
|
<el-button slot="reference" type="primary" size="mini">调用已录入荣誉</el-button>
|
|
</el-popover>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="主要事迹" prop="deeds">
|
|
<el-input v-model="formData.deeds" type="textarea" rows="4"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<vi-title title="获奖信息"></vi-title>
|
|
|
|
<el-row type="flex" :gutter="20">
|
|
<el-col :span="24">
|
|
<el-form-item label="附件" prop="files">
|
|
<file-upload :files.sync="formData.files">
|
|
<template #el-upload__tip>
|
|
<div class="el-upload__tip" slot="tip">
|
|
图片类请上传jpg/png/jpeg等格式,文档类请上传doc/docx/xls/xlsx/pdf等格式
|
|
</div>
|
|
</template>
|
|
</file-upload>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
</el-form>
|
|
|
|
<el-row class="m20 text-right">
|
|
<el-button type="primary" @click="saveForm">保存</el-button>
|
|
<el-button :disabled="isDisabled" type="primary" @click="doSubmit">提交</el-button>
|
|
</el-row>
|
|
|
|
</template>
|
|
|
|
<template #view>
|
|
<evaluate-info ref="info"></evaluate-info>
|
|
</template>
|
|
</guava>
|
|
|
|
<!--<el-dialog title="荣誉列表" :visible.sync="addDialogVisible">
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="addDialogVisible = false">取 消</el-button>
|
|
<el-button type="primary" @click="doAdd">确 定</el-button>
|
|
</span>
|
|
</el-dialog>-->
|
|
</div>
|
|
|
|
<script>
|
|
const vue = new Vue({
|
|
el: '#app',
|
|
mixins: [initTableMixins],
|
|
data() {
|
|
return {
|
|
popover: false,
|
|
multipleSelection: [],
|
|
honorTypeList: [],
|
|
evaluateList: [],
|
|
evaluateOptions: [],
|
|
gridData: [],
|
|
pageForm: {
|
|
year: new Date().getFullYear() + "",
|
|
honorType: '',
|
|
honorLevel: ''
|
|
},
|
|
tableData: [],
|
|
isEdit: false,
|
|
formData: {
|
|
unionLeader:'',
|
|
evaluateId: '',
|
|
award: '',
|
|
deeds: '',
|
|
joinTime: '',
|
|
unionId:'',
|
|
jobTitle:'',
|
|
},
|
|
userLoading: false,
|
|
userOptions: [],
|
|
nationOptions: nation,
|
|
units: [],
|
|
unions: [],
|
|
isDisabled: false,
|
|
formRules: {
|
|
userId: [{required: true, message: '请填写申请人', trigger: ['blur', 'change']}],
|
|
},
|
|
tableColumns: [{prop: 'username', label: '申请人姓名', sortable: true},
|
|
{prop: 'evaluateName', label: '评优评先名称', sortable: true},
|
|
{prop: 'loginname', label: '工号', sortable: true},
|
|
{prop: 'userSex', label: '性别', sortable: true},
|
|
{prop: 'unitName', label: '单位', sortable: true},
|
|
{prop: 'unionName', label: '工会', sortable: true},
|
|
{prop: 'joinTime', label: '加入工会时间', sortable: true},
|
|
{prop: 'position', label: '担任工会职务'},
|
|
]
|
|
}
|
|
},
|
|
components: {
|
|
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
|
'evaluate-info': httpVueLoader('/components/evaluate/evaluateInfo.vue'),
|
|
},
|
|
methods: {
|
|
getStatus(row) {
|
|
const now = new Date().getTime()
|
|
const hdkssj = moment(row.startTime.valueOf())
|
|
const hdjssj = moment(row.endTime.valueOf())
|
|
|
|
if (now < hdkssj) {
|
|
return {
|
|
type: 'info',
|
|
name: '活动未开始'
|
|
}
|
|
} else if (now > hdkssj && now < hdjssj) {
|
|
return {
|
|
type: 'success',
|
|
name: '活动进行中'
|
|
}
|
|
} else if (now > hdjssj) {
|
|
return {
|
|
type: 'danger',
|
|
name: '活动已截止'
|
|
}
|
|
}
|
|
},
|
|
clickEvaluate(item) {
|
|
this.pageForm.evaluateId = item.evaluateId
|
|
this.doSearch()
|
|
},
|
|
async saveForm() {
|
|
const valid = await this.$refs.form.validate()
|
|
if (!valid) return
|
|
|
|
this.formData.files = JSON.stringify(this.formData.files)
|
|
const resp = await $.post('/platform/evaluate/apply/saveForm', this.formData)
|
|
if(resp.code===0){
|
|
this.notifySuccess(resp.msg)
|
|
this.pageData()
|
|
this.$refs.guava.index()
|
|
}else{
|
|
this.$message.warning(resp.msg)
|
|
}
|
|
},
|
|
radioChange() {
|
|
if (this.pageForm.honorType === HonorApi.honor_single_id) {
|
|
this.tableColumns = [
|
|
{prop: 'username', label: '申请人姓名', sortable: true},
|
|
{prop: 'evaluateName', label: '评优评先名称', sortable: true},
|
|
{prop: 'loginname', label: '工号', sortable: true},
|
|
{prop: 'userSex', label: '性别', sortable: true},
|
|
{prop: 'unitName', label: '单位', sortable: true},
|
|
{prop: 'unionName', label: '工会', sortable: true},
|
|
{prop: 'joinTime', label: '加入工会时间', sortable: true},
|
|
{prop: 'position', label: '担任工会职务'},
|
|
]
|
|
} else {
|
|
this.tableColumns = [
|
|
{prop: 'evaluateName', label: '评优评先名称', sortable: true},
|
|
{prop: 'applyUnionName', label: '申报分工会', sortable: true},
|
|
{prop: 'unionLeader', label: '工会主席', sortable: true},
|
|
{prop: 'memberNumber', label: '会员人数', sortable: true},
|
|
{prop: 'unionGroupNumber', label: '工会小组数', sortable: true},
|
|
]
|
|
}
|
|
this.doSearch()
|
|
this.getEvaluateByYear()
|
|
},
|
|
async getEvaluateByYear() {
|
|
const {data} = await $.post('/platform/evaluate/apply/getEvaluateByYear', {year: this.pageForm.year, type: this.pageForm.honorType})
|
|
this.evaluateOptions = data
|
|
},
|
|
popoverOK() {
|
|
if (this.multipleSelection) {
|
|
let str = '';
|
|
this.multipleSelection.forEach(item => {
|
|
const time = item.grantDate ? moment(item.grantDate).format('YYYY') + '-' : ''
|
|
str += time + item.prizeName + '\n'
|
|
})
|
|
str = str.substring(0, str.length - 1)
|
|
this.formData.award = str
|
|
this.popover = false
|
|
}
|
|
},
|
|
handleSelectionChange(val) {
|
|
this.multipleSelection = val;
|
|
},
|
|
dropdownCommand(command) {
|
|
const {type, data} = command
|
|
if (type == 'view') {
|
|
this.openView(data)
|
|
} else if (type == 'edit') {
|
|
this.openEdit(data)
|
|
} else if (type == 'delete') {
|
|
this.doDelete(data)
|
|
}
|
|
},
|
|
openView(data) {
|
|
this.$refs.info.getInfo(data.id)
|
|
this.$refs.guava.view()
|
|
},
|
|
doDelete(row) {
|
|
this.$confirm('确定要删除吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
callback: async (a, b) => {
|
|
if ("confirm" == a) {//确认后再执行
|
|
this.$set(row, "delLoading", true)
|
|
const resp = await $.post('/platform/evaluate/apply/doDelete', {id: row.id})
|
|
this.$set(row, "delLoading", false)
|
|
if(resp.code===0){
|
|
this.pageData()
|
|
}else{
|
|
this.$message.warning(resp.msg)
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},
|
|
openEdit(data) {
|
|
this.isEdit = true
|
|
this.findData(data)
|
|
this.$refs.guava.edit()
|
|
},
|
|
async findData(data) {
|
|
this.formData = {}
|
|
this.formData = clone(data)
|
|
if (this.formData.userId && this.formData.userId !== '') {
|
|
const user = await queryUserById(this.formData.userId)
|
|
user[0].jobTitle = data.jobTitle
|
|
this.setFormData(user)
|
|
} else {
|
|
this.$set(this.formData, 'userName', this.formData.userName)
|
|
}
|
|
this.formData.userId=data.userId
|
|
this.$set(this.formData, "unionId", data.unionId)
|
|
this.$set(this.formData, "political", data.political)
|
|
this.$set(this.formData, "position", data.position)
|
|
this.$set(this.formData, "honorType", data && data.honorTypeId === HonorApi.honor_single_id ? '个人荣誉' : '集体荣誉')
|
|
if (data.files && data.files.length > 0) this.$set(this.formData, "files", JSON.parse(data.files))
|
|
},
|
|
async userChange() {
|
|
const user = await queryUserById(this.formData.userId)
|
|
this.setFormData(user)
|
|
},
|
|
setFormData(user) {
|
|
this.$set(this.formData, "userSex", user[0].sex)
|
|
this.$set(this.formData, "userName", user[0].username)
|
|
this.$set(this.formData, "loginname", user[0].loginname)
|
|
this.$set(this.formData, "unitId", user[0].unitid)
|
|
this.$set(this.formData, "unionId", user[0].unionid)
|
|
this.$set(this.formData, "birthday", user[0].birthday)
|
|
this.$set(this.formData, "jobTitle", user[0].jobTitle)
|
|
this.$set(this.formData, "position", user[0].position)
|
|
this.$set(this.formData, "unionName", user[0].unionname)
|
|
this.$set(this.formData, "unitName", user[0].unitname)
|
|
this.$set(this.formData, "userState", user[0].userState)
|
|
this.$set(this.formData, "political", user[0].political)
|
|
this.$set(this.formData, "nation", user[0].nation)
|
|
},
|
|
async userRemoteMethod(query) {
|
|
if (query) {
|
|
this.userLoading = true
|
|
this.userOptions = await searchUser(query)
|
|
this.userLoading = false
|
|
}
|
|
},
|
|
async applyEvaluate(item) {
|
|
this.isEdit = false
|
|
const now = new Date().getTime()
|
|
const hdkssj = moment(item.startTime.valueOf())
|
|
const hdjssj = moment(item.endTime.valueOf())
|
|
|
|
if (now < hdkssj) {
|
|
this.$notify.warning({title: '提示', message: '活动暂未开始!'});
|
|
return
|
|
} else if (now > hdjssj) {
|
|
this.$notify.warning({title: '提示', message: '活动已截止!'});
|
|
return
|
|
}
|
|
if(item.groupId) {
|
|
const isExist = await getScopeUser(item.groupId)
|
|
if (!isExist) {
|
|
this.$notify.warning({title: '提示', message: '您不在参加人员范围内!'});
|
|
return
|
|
}
|
|
}
|
|
|
|
if (item.honorTypeId === HonorApi.honor_single_id) {
|
|
const o = await this.verifyApply(item.id)
|
|
if(o === false) {
|
|
return
|
|
}
|
|
}
|
|
|
|
await this.evaluateChange(item.id)
|
|
|
|
this.$refs.guava.edit()
|
|
},
|
|
async evaluateChange(val) {
|
|
const evaluate = this.evaluateList.find(o => o.id === val)
|
|
this.formData.honorType = evaluate && evaluate.honorTypeId === HonorApi.honor_single_id ? '个人荣誉' : '集体荣誉'
|
|
this.formData.honorTypeId = evaluate.honorTypeId
|
|
this.formData.honorId = evaluate.honorId
|
|
this.formData.evaluateId = val
|
|
let type = ''
|
|
if (this.formData.honorType === '个人荣誉') {
|
|
type = 'single'
|
|
await this.userRemoteMethod("${@shiro.getPrincipalProperty('loginname')}")
|
|
this.$set(this.formData, "userId", this.userOptions[0].id)
|
|
await this.userChange()
|
|
} else if (this.formData.honorType === '集体荣誉') {
|
|
type = 'list'
|
|
await this.userRemoteMethod("${@shiro.getPrincipalProperty('loginname')}")
|
|
this.$set(this.formData, "userId", this.userOptions[0].id)
|
|
const user = await queryUserById(this.formData.userId)
|
|
this.$set(this.formData, "unitId", user[0].unitid)
|
|
this.$set(this.formData, "unionId", user[0].unionid)
|
|
await this.searchUnionInfo(this.formData.unionId)
|
|
this.isDisabled = false
|
|
}
|
|
const {data} = await $.post('/platform/evaluate/apply/getHonor', {type: type, userId: this.formData.userId})
|
|
this.gridData = data
|
|
},
|
|
async verifyApply(val) {
|
|
const res = await $.post('/platform/evaluate/apply/verifyApply', {evaluateId: val})
|
|
if(res.code === 0) {
|
|
this.isDisabled = false
|
|
return true
|
|
} else {
|
|
this.isDisabled = true
|
|
this.$notify.warning({title: '提示', message: res.msg});
|
|
return false
|
|
}
|
|
},
|
|
async doSubmit() {
|
|
|
|
const valid = await this.$refs.form.validate()
|
|
if (!valid) return
|
|
|
|
this.formData.files = JSON.stringify(this.formData.files)
|
|
const resp = await $.post('/platform/evaluate/apply/doSubmit', this.formData)
|
|
if(resp.code===0){
|
|
this.notifySuccess(resp.msg)
|
|
this.pageData()
|
|
this.$refs.guava.index()
|
|
}else{
|
|
this.$message.warning(resp.msg)
|
|
}
|
|
},
|
|
async initData() {
|
|
|
|
const {data} = await $.post('/platform/evaluate/getEvaluateList')
|
|
this.evaluateList = data
|
|
|
|
this.units = await getUnits(null)
|
|
this.unions = await getUnions(null)
|
|
|
|
await this.userRemoteMethod("${@shiro.getPrincipalProperty('loginname')}")
|
|
this.$set(this.formData, "userId", this.userOptions[0].id)
|
|
await this.userChange()
|
|
},
|
|
async pageData() {
|
|
const res = await $.post('/platform/evaluate/apply/pageData', this.pageForm)
|
|
if (res.code === 0) {
|
|
this.tableData = res.data.list;
|
|
this.pageForm.totalCount = res.data.totalCount;
|
|
}
|
|
},
|
|
async searchUnionInfo(id){
|
|
const resp = await $.get('/platform/projectfunding/declare/getUnionInfo',{id:id})
|
|
if (resp.code === 0){
|
|
this.formData.memberNumber = resp.data.memberNumber;
|
|
this.formData.unionLeader = resp.data.username;
|
|
}
|
|
const data = await unionGroupsByUnionId(id)
|
|
this.formData.unionGroupNumber = data.length
|
|
},
|
|
},
|
|
watch: {},
|
|
async created() {
|
|
this.honorTypeList = await HonorApi.getHonorType()
|
|
if (this.honorTypeList) {
|
|
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
|
|
}
|
|
await this.initData()
|
|
await this.getEvaluateByYear()
|
|
this.pageData()
|
|
}
|
|
})
|
|
</script>
|
|
<!--#
|
|
}
|
|
#-->
|