This commit is contained in:
2026-09-09 16:16:22 +08:00
parent ebffbab428
commit ba3a985c40
3749 changed files with 29 additions and 608551 deletions
@@ -1,630 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</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"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.honorLevel" placeholder="请选择级别" style="width: 100%"
@change="doSearch"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-radio-group v-model="pageForm.honorType" @change="doSearch">
<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="applyHonor">申请荣誉</el-button>
</div>
</el-card>
<honor-apply-table :loading="tableLoading" :page="pageForm" :data="tableData"
ref="hat"
@order="pageOrder">
<template #vi-title>
<vi-title title="申请列表"></vi-title>
</template>
<template #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.honorType=='101'&&row.stateId>1500)||(row.honorType=='102'&&row.stateId>1600)">
编辑
</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.honorType=='101'&&row.stateId>1500)||(row.honorType=='102'&&row.stateId>1600)"
:loading="row.delLoading">
删除
</el-dropdown-item>
<!--#}#-->
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</honor-apply-table>
</template>
<template #edit>
<template #header>
<el-row type="flex" justify="space-between">
<h3>{{isEdit?'修改数据':'添加数据'}}</h3>
</el-row>
</template>
<el-form :model="formData" label-width="120px" ref="form">
<el-row type="flex" :gutter="20">
<el-col :span="24">
<el-form-item label="荣誉类型" prop="honorType">
<el-select v-model="formData.honorType" @change="honorTypeChange" :disabled="isEdit">
<el-option v-for="o in honorTypeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-collapse v-model="collapse">
<el-collapse-item title="" name="basic">
<template slot="title">
<div class="text-primary" style="width: 100%">
基础信息
</div>
</template>
<template v-if="formData.honorType===HonorApi.honor_single_id">
<el-row type="flex" :gutter="20">
<el-col :span="24" prop="userId">
<el-form-item prop="userId" label="获奖人员">
<el-select
style="width: 100%"
v-model="formData.userId"
filterable
clearable
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+''+item.loginname+''"
: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="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 label="在职状态" prop="jobStatus">
<el-input v-model="formData.jobStatus"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="担任工会职务" prop="post">
<el-input v-model="formData.post"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称" prop="title">
<el-input v-model="formData.title"></el-input>
</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"></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 placeholder="民族" style="width: 100%" filterable
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="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-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="所属单位" prop="unitId">
<el-select placeholder="所属单位" v-model="formData.unitId" clearable
style="width: 100%;"
clearable="true"
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 placeholder="所属工会" v-model="formData.unionId" clearable
style="width: 100%;"
clearable="true"
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>
</template>
<template v-else>
<el-row type="flex">
<el-col :span="12">
<!--<el-form-item label="获奖单位" prop="unitName">
<el-select placeholder="获奖单位" v-model="formData.unitName"
style="width: 100%;"
clearable="true"
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-form-item label="申报院级工会" prop="unionId">
<el-select placeholder="请选择申报院级工会" v-model="formData.unionId"
style="width: 100%;"
clearable="true"
filterable
@change="unionSelectChange"
: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-col :span="12">
<!--<el-form-item label="所属工会" prop="unionId">
<el-select placeholder="所属工会" v-model="formData.unionId"
style="width: 100%;"
clearable="true"
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-form-item label="工会主席" prop="unionLeader">
<el-input v-model="formData.unionLeader"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex">
<!--<el-col :span="8">
<el-form-item label="单位负责人" prop="unitLeader">
<el-input v-model="formData.unitLeader"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<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-col :span="8">
<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"
: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"
: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"></el-input>
</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>
</el-collapse-item>
<el-collapse-item title="获奖信息" name="prize">
<template slot="title">
<div class="text-primary" style="width: 100%">
获奖信息
</div>
</template>
<template>
<!-- <el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="奖项" prop="prize">
<el-select v-model="formData.prize">
<el-option v-for="o in honorPrizeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="奖项说明" prop="prizeDesc">
<el-input v-model="formData.prizeDesc" maxlength="100"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="级别">
<el-select v-model="formData.honorLevel" placeholder="">
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
-->
</el-row>
<el-col :span="24">
<el-form-item label="附件" prop="files">
<file-upload card :files.sync="formData.files" :max-size="50 * 1024 * 1024"></file-upload>
</el-form-item>
</el-col>
</template>
</el-collapse-item>
</el-collapse>
</el-form>
<el-row class="m20 text-right">
<el-button type="primary" @click="doSubmit">提交</el-button>
</el-row>
</template>
<template #view>
<honor-info ref="info"></honor-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
units: [],
unions: [],
nationOptions: nation,
honorTypeList: [],
honorLevelList: [],
honorAwardList: [],
honorPrizeList: [],
collapse: ['basic', 'prize'],
userLoading: false,
userOptions: [],
isEdit: false,
pageForm: {
year: new Date().getFullYear() + "",
honorType: '',
honorLevel: ''
},
firstInPage: true,
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'honor-apply-table': httpVueLoader('/components/honor/honorApplyTable.vue'),
'honor-info': httpVueLoader('/components/honor/honorInfo.vue'),
},
methods: {
unionSelectChange(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(loc() + '/doDelete', {id: row.id})
if (resp.code === 0) {
this.pageData()
this.notifySuccess(resp.msg)
}else{
this.notifyError(resp.msg)
}
this.$set(row, "delLoading", false)
}
}
});
},
openEdit(data) {
this.isEdit = true
this.findData(data)
this.$refs.guava.edit()
},
applyHonor() {
this.initData()
this.isEdit = false
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
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, "unitId", user[0].unitid)
this.$set(this.formData, "unionId", user[0].unionid)
this.$set(this.formData, "birthday", user[0].birthday)
this.$set(this.formData, "title", user[0].jobTitle)
//this.$set(this.formData, "post", user[0].position)
this.$set(this.formData, "unionName", user[0].unionname)
this.$set(this.formData, "unitName", user[0].unitname)
this.$set(this.formData, "jobStatus", user[0].userState)
this.$set(this.formData, "political", user[0].political)
},
async userRemoteMethod(query) {
if (query) {
this.userLoading = true
const arr = await searchUser(query)
this.userOptions = arr
this.userLoading = false
}
},
async initData() {
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
this.$set(this.pageForm,"honorType",this.honorTypeList[0].id)
this.formData = {
honorType: this.honorTypeList[0].id
}
this.honorPrizeList = await HonorApi.getHonorPrize(this.formData.honorType)
}
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorAwardList = await HonorApi.getHonorAwardType()
this.units = await getUnits(null)
this.unions = await getUnions(null)
if (this.formData.honorType === HonorApi.honor_single_id) {
await this.userRemoteMethod("${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.formData, "userId", this.userOptions[0].id)
await this.userChange()
}
},
async honorTypeChange(val) {
this.$set(this.formData, "prize", null)
this.honorPrizeList = await HonorApi.getHonorPrize(val)
if (this.formData.honorType === HonorApi.honor_single_id) {
await this.userRemoteMethod("${@shiro.getPrincipalProperty('loginname')}")
this.$set(this.formData, "userId", this.userOptions[0].id)
await this.userChange()
} else {
}
},
async doSubmit() {
this.formData.files = JSON.stringify(this.formData.files)
const resp = await $.post(loc() + '/doSubmit', this.formData)
if(resp.code===0){
this.$notify.success({title: '成功', message: resp.msg});
this.pageData()
this.$refs.guava.index()
}else{
this.$notify.error({title: '失败', message: resp.msg});
}
},
async findData(data) {
this.formData = {}
const data1 = clone(data)
this.honorPrizeList = await HonorApi.getHonorPrize(data.honorType)
this.formData = data1
if (this.formData.userId && this.formData.userId !== '') {
const user = await queryUserById(this.formData.userId)
this.setFormData(user)
} else {
this.$set(this.formData, 'userName', this.formData.userName)
}
this.$set(this.formData, "prize", data.prize)
this.$set(this.formData, "honorLevel", data.honorLevel)
this.$set(this.formData, "political", data.political)
this.$set(this.formData, "post", data.post)
this.$set(this.formData, "title", data.title)
this.$set(this.formData, "unionId", data1.unionId)
this.$set(this.formData, "unionLeader", data1.unionLeader)
if (data.files && data.files.length > 0) this.$set(this.formData, "files", JSON.parse(data.files))
}
},
watch: {
"formData.prize"(newVal) {
if (this.firstInPage === false && newVal) {
this.$set(this.formData, "honorLevel", this.honorPrizeList.find(v => v.id === newVal).level)
this.firstInPage = false
}
},
"formData.unitName"(newVal) {
const isExist = this.units.some(v => v.name == newVal)
if(this.formData.honorType === HonorApi.honor_single_id) {
if (isExist) {
const unionId = this.units.find(v => v.name == newVal).unionid
this.$set(this.formData, "unionId", unionId ? unionId : "")
} else {
this.$set(this.formData, "unionId", "")
}
}
},
"formData.unionId"(newVal) {
if(this.formData.honorType === HonorApi.honor_list_id) {
if(this.firstInPage === false) {
const un = this.unions.find(o => o.id === newVal)
this.formData.unionLeader = un ? un.leadername : ''
this.formData.unionName = un ? un.unionname : ''
} else {
this.firstInPage = false
}
}
}
},
async created() {
await this.initData()
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,279 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</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
style="width: 100px"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.honorLevel" placeholder="请选择级别" style="width: 200px"
@change="doSearch"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.honorType=='101'">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="us.loginname"></el-option>
<el-option label="姓名" value="us.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-radio-group v-model="pageForm.honorType" @change="doSearch">
<el-radio-button v-for="v in honorTypeList" :label="v.id">{{v.name}}{{v.num}}
</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 mt5">
<el-radio-group v-model="pageForm.isAudit" @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>
</div>
</el-card>
<honor-apply-table :loading="tableLoading" :page="pageForm" :data="tableData"
ref="hat"
@order="pageOrder">
<template #vi-title>
<vi-title title="申请列表"></vi-title>
</template>
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="{row}">
<el-button size="mini" @click="openView(row)">
查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" :disabled="row.stateId>1700">
审核
</el-button>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</honor-apply-table>
</template>
<template #edit>
<honor-info ref="info2" :handle="true" label="院级党组织审核" :panes="[4]">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" 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 @click="doReview(false)">
</el-button>
<el-button type="primary" @click="doReview(true)">
</el-button>
</div>
</template>
</honor-info>
</template>
<template #view>
<honor-info ref="info"></honor-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
units: [],
unions: [],
honorLevelList: [],
honorTypeList: [],
pageForm: {
year: new Date().getFullYear() + "",
isAudit: false,
searchName: 'us.username',
honorType: '',
honorLevel: ''
}
}
},
components: {
'honor-apply-table': httpVueLoader('/components/honor/honorApplyTable.vue'),
'honor-info': httpVueLoader('/components/honor/honorInfo.vue'),
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.pageData()
this.getHonorNum()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
}else{
this.notifyError(resp.msg)
}
}
})
},
openView(data) {
this.$refs.info.getInfo(data.id)
this.$refs.guava.view()
},
openEdit(data) {
this.formData = {
id: data.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(data.id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
async getHonorNum() {
const honorNum = await HonorApi.getHonorNum(1700)
this.honorTypeList.map(v => {
if (v.code === "H1100") {
v.num = honorNum.gr
} else {
v.num = honorNum.jt
}
})
this.$forceUpdate();
}
},
async created() {
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
await this.getHonorNum()
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
}
this.unions = await getUnions(null)
this.flushUnits()
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,282 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</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
style="width: 100px"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.honorLevel" placeholder="请选择级别" style="width: 200px"
@change="doSearch"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.honorType=='101'">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="us.loginname"></el-option>
<el-option label="姓名" value="us.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-radio-group v-model="pageForm.honorType" @change="doSearch">
<el-radio-button v-for="v in honorTypeList" :label="v.id">{{v.name}}{{v.num}}
</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 mt5">
<el-radio-group v-model="pageForm.isAudit" @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>
</div>
</el-card>
<honor-apply-table :loading="tableLoading" :page="pageForm" :data="tableData"
ref="hat"
@order="pageOrder">
<template #vi-title>
<vi-title title="申请列表"></vi-title>
</template>
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="{row}">
<el-button size="mini" @click="openView(row)">
查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" :disabled="row.stateId>1800">
审核
</el-button>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</honor-apply-table>
</template>
<template #edit>
<honor-info ref="info2" :handle="true" label="校工会审核" :panes="[5]">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" 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 @click="doReview(false)">
</el-button>
<el-button type="primary" @click="doReview(true)">
</el-button>
</div>
</template>
</honor-info>
</template>
<template #view>
<honor-info ref="info"></honor-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
units: [],
unions: [],
honorLevelList: [],
honorTypeList: [],
pageForm: {
year: new Date().getFullYear() + "",
isAudit: false,
searchName: 'us.username',
honorType: '',
honorLevel: ''
}
}
},
components: {
'honor-apply-table': httpVueLoader('/components/honor/honorApplyTable.vue'),
'honor-info': httpVueLoader('/components/honor/honorInfo.vue'),
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.pageData()
this.getHonorNum()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
}else{
this.notifyError(resp.msg)
}
}
})
},
openView(data) {
this.$refs.info.getInfo(data.id)
this.$refs.guava.view()
},
openEdit(data) {
this.formData = {
id: data.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(data.id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
async getHonorNum() {
const honorNum = await HonorApi.getHonorNum(1800)
this.honorTypeList.map(v => {
if (v.code === "H1100") {
v.num = honorNum.gr
} else {
v.num = honorNum.jt
}
})
this.$forceUpdate();
}
},
async created() {
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
await this.getHonorNum()
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
}
this.unions = await getUnions(null)
this.flushUnits()
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,280 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</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
style="width: 100px"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.honorLevel" placeholder="请选择级别" style="width: 100%"
@change="doSearch"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.honorType=='101'">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="us.loginname"></el-option>
<el-option label="姓名" value="us.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
@change="flushUnits" @clear="flushUnits"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
filterable="true">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button">
<el-radio-group v-model="pageForm.honorType" @change="doSearch">
<el-radio-button v-for="v in honorTypeList" :label="v.id">{{v.name}}{{v.num}}
</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 mt5">
<el-radio-group v-model="pageForm.isAudit" @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>
</div>
</el-card>
<honor-apply-table :loading="tableLoading" :page="pageForm" :data="tableData"
ref="hat"
@order="pageOrder">
<template #vi-title>
<vi-title title="申请列表"></vi-title>
</template>
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="{row}">
<el-button size="mini" @click="openView(row)">
查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" :disabled="row.stateId>1600">
审核
</el-button>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</honor-apply-table>
</template>
<template #edit>
<honor-info ref="info2" :handle="true" label="院级工会审核" :panes="[3]">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" 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 @click="doReview(false)">
</el-button>
<el-button type="primary" @click="doReview(true)">
</el-button>
</div>
</template>
</honor-info>
</template>
<template #view>
<honor-info ref="info"></honor-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
units: [],
unions: [],
honorLevelList: [],
honorTypeList: [],
pageForm: {
year: new Date().getFullYear() + "",
isAudit: false,
searchName: 'us.username',
honorType: '',
honorLevel: ''
}
}
},
components: {
'honor-apply-table': httpVueLoader('/components/honor/honorApplyTable.vue'),
'honor-info': httpVueLoader('/components/honor/honorInfo.vue'),
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.pageData()
this.getHonorNum()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
}else{
this.notifyError(resp.msg)
}
}
})
},
openView(data) {
this.$refs.info.getInfo(data.id)
this.$refs.guava.view()
},
openEdit(data) {
this.formData = {
id: data.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(data.id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
},
async getHonorNum() {
const honorNum = await HonorApi.getHonorNum(1600)
this.honorTypeList.map(v => {
if (v.code === "H1100") {
v.num = honorNum.gr
} else {
v.num = honorNum.jt
}
})
this.$forceUpdate();
}
},
async created() {
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
await this.getHonorNum()
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
}
this.unions = await getUnions(null)
this.flushUnits()
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,235 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</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"
value-format="yyyy"
placeholder="年度">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select v-model="pageForm.honorLevel" placeholder="请选择级别" style="width: 200px"
@change="doSearch"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</div>
<div class="btn-group tool-button" v-if="pageForm.honorType=='101'">
<div>
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword" clearable>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 100px;">
<el-option label="工号" value="us.loginname"></el-option>
<el-option label="姓名" value="us.username"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="btn-group tool-button">
<el-radio-group v-model="pageForm.honorType" @change="doSearch">
<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 mt5">
<el-radio-group v-model="pageForm.isAudit" @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>
</div>
</el-card>
<honor-apply-table :loading="tableLoading" :page="pageForm" :data="tableData"
ref="hat"
@order="pageOrder">
<template #vi-title>
<vi-title title="申请列表"></vi-title>
</template>
<template #column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="{row}">
<el-button size="mini" @click="openView(row)">
查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" :disabled="row.stateId!=1500">
审核
</el-button>
</template>
</el-table-column>
</template>
<template #pagination>
<!--#include("/layouts/pagination.html"){}#-->
</template>
</honor-apply-table>
</template>
<template #edit>
<honor-info ref="info2" :handle="true" label="单位审核" :panes="[2]">
<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="time" label="审核时间">
<el-input v-model="formData.auditTime" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="opinion" 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 @click="doReview(false)">
</el-button>
<el-button type="primary" @click="doReview(true)">
</el-button>
</div>
</template>
</honor-info>
</template>
<template #view>
<honor-info ref="info"></honor-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
units: [],
unions: [],
honorLevelList: [],
honorTypeList: [],
pageForm: {
year: new Date().getFullYear() + "",
isAudit: false,
searchName: 'us.username',
honorType: '',
honorLevel: ''
}
}
},
components: {
'honor-apply-table': httpVueLoader('/components/honor/honorApplyTable.vue'),
'honor-info': httpVueLoader('/components/honor/honorInfo.vue'),
},
methods: {
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data)
} else if (type == 'edit') {
this.openEdit(data)
}
},
async doReview(flag) {
this.$refs["form"].validate(async (valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code===0){
this.pageData()
this.notifySuccess(resp.msg)
this.$refs.guava.index()
}else{
this.notifyError(resp.msg)
}
}
})
},
openView(data) {
this.$refs.info.getInfo(data.id)
this.$refs.guava.view()
},
openEdit(data) {
this.formData = {
id: data.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.info2.getInfo(data.id)
this.$refs.guava.edit()
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
},
},
async created() {
this.honorLevelList = await HonorApi.getHonorLevel()
const honorTypeList = await HonorApi.getHonorType()
if (honorTypeList) {
this.honorTypeList = honorTypeList.filter(v => v.code === "H1100")
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
}
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,289 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div id="app" v-cloak>
<tree-layout>
<template #tree>
<div style="padding: 20px;">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText">
</el-input>
</div>
<el-tree ref="tree"
:data="treeData"
node-key="id"
:props="defaultProps"
:default-expanded-keys="defaultExpandedKeys"
:expand-on-click-node="false"
accordion
highlight-current
@node-click="nodeClick"
:filter-node-method="filterNode">
<div class="custom-tree-node" slot-scope="{ node, data }">
<div v-if="node.level==1" style="font-size: 16px;" class="v-node"><i
class="el-icon-s-home"></i>&nbsp;
{{ data.name }}
</div>
<div v-if="node.level==2"
style="font-size: 15px" :title="data.name" class="v-node">
<i class="el-icon-star-on" v-if="chooseNode.name==data.name"></i>
<i class="el-icon-star-off" v-else></i>
&nbsp; {{ data.name }}
</div>
<div v-if="node.level>=3"
style="font-size: 14px" :title="data.name" class="v-node">
<i class="fa fa-dot-circle-o" v-if="chooseNode.name==data.name"></i>
<i class="fa fa-circle-o" v-else></i>
&nbsp; {{ data.name }}
</div>
</div>
</el-tree>
</template>
<template>
<el-card class="text-right" shadow="never">
<el-button size="medium" type="primary"
@click="openAddBasicType">
新建基础类型
<i class="el-icon-plus"></i>
</el-button>
</el-card>
<el-card shadow="never" class="mt10">
<el-table :data="tableData" ref="table" :height="tableHeight">
<el-table-column label="序号" type="index" sortable></el-table-column>
<el-table-column prop="name" align="center" label="名称"></el-table-column>
<el-table-column prop="code" align="center" label="代码"></el-table-column>
<el-table-column prop="level" align="center" label="等级"
sortable
v-if="honor_type_id.includes(chooseNode.id)">
<template slot-scope="{row}">
{{row.level?honorLevelList.find(v=>v.id === row.level).name:''}}
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="200px">
<template scope="{row}">
<el-button type="primary" size="mini" @click="openEditType(row)">
编辑
</el-button>
<el-button size="mini" @click="doDelete(row)" type="danger"
v-if="!HonorApi.disabledIds.includes(row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
</tree-layout>
<el-dialog :visible.sync="basicTypeDialogVisible" width="40%" title="基础类型" :close-on-click-modal="false">
<el-form :model="formData" ref="basicForm" :rules="rules" label-width="80">
<el-row gutter="30">
<el-form-item label="上级名称" prop="parentName" v-if="submitType==='add'">
<el-input maxlength="100" disabled v-model="formData.parentName"
type="text"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input maxlength="100" placeholder="请输入基础类型名称" v-model="formData.name"
type="text"></el-input>
</el-form-item>
<el-form-item label="代码" prop="code">
<el-input maxlength="100" placeholder="请输入基础类型名称" v-model="formData.code"
type="text"></el-input>
</el-form-item>
<el-form-item label="荣誉等级" prop="level"
v-if="honor_type_id.includes(chooseNode.id)">
<el-radio-group v-model="formData.level">
<el-radio-button v-for="o in honorLevelList" :key="o.id"
:label="o.id">{{o.name}}
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-row>
</el-form>
<div class="el-dialog__footer">
<el-button type="primary" @click="doSubmit">提交
</el-button>
</div>
</el-dialog>
</div>
<script>
const honor_type_id = ['6b9e26a9467f49ae88fbd3951377e0f8', '8a8b455b964a41f2bbf18a4896cbd83e']
const honor_level_id = '3c1058afc91b4e69be46c585b1a48191'
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
honor_type_id: ['6b9e26a9467f49ae88fbd3951377e0f8', '8a8b455b964a41f2bbf18a4896cbd83e'],
honor_level_id: "3c1058afc91b4e69be46c585b1a48191",
defaultExpandedKeys: ['1'],
basicTypeDialogVisible: false,
filterText: '',
treeData: [],
defaultProps: {
children: 'child',
label: 'name',
},
chooseNode: {},
formData: {},
rules: {
name: [{required: true, message: '必填', trigger: ['change', 'blur']}],
code: [{required: true, message: '必填', trigger: ['change', 'blur']}]
},
submitType: 'add',
tableData: [],
honorLevelList: [],
tableHeight: null
}
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
components: {
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue')
},
methods: {
filterNode(value, data, node) {
if (!value) return true;
return data.name.indexOf(value) !== -1
},
openEditType(row) {
this.formData = {
id: row.id,
name: row.name,
code: row.code,
level: row.level
}
this.basicTypeDialogVisible = true
this.submitType = 'edit'
},
doDelete({id}) {
this.$confirm('确定要删除该机构吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a) => {
if ("confirm" === a) {
const resp = await $.post(loc() + "/doDelete", {id: id})
if(resp.code===0){
this.$notify.success({title: '成功', message: resp.msg});
this.getTree(false)
}else{
this.$notify.error({title: '失败', message: resp.msg});
}
}
}
});
},
async getTree(changeNode = false) {
const res = await $.get('/platform/honor/basic/settings/getTree')
if (res.code === 0) {
this.treeData = res.data
if (changeNode) {
this.chooseNode = res.data[0]
}
await this.getData()
} else {
this.$notify.error({message: res.msg, title: '失败'})
}
},
openAddBasicType() {
this.basicTypeDialogVisible = true
this.formData = {
parentId: this.chooseNode.id,
parentName: this.chooseNode.name,
name: '',
code: '',
level: honor_type_id.includes(this.chooseNode.id) ? this.honorLevelList[0].id : null
}
this.submitType = 'add'
},
doSubmit() {
this.$refs["basicForm"].validate(async (valid) => {
if (valid) {
const res_data = await $.post('/platform/honor/basic/settings/doSubmit', this.formData)
if (res_data.code === 0) {
this.$message.success('操作成功')
this.basicTypeDialogVisible = false
await this.getTree(false)
} else {
this.$message.warning('操作失败')
}
}
})
},
nodeClick(data) {
this.chooseNode = data
this.getData()
},
async getData() {
const res_data = await $.get('/platform/honor/basic/settings/getData', {parentId: this.chooseNode.id})
this.tableData = res_data.data
},
async getHonorLevelData() {
const res_data = await $.get('/platform/honor/basic/settings/getData', {parentId: honor_level_id})
this.honorLevelList = res_data.data
}
},
async mounted() {
await this.getTree(true)
await this.getHonorLevelData()
this.$nextTick(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
window.onresize = () => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
}
})
}
})
</script>
<!--#
}
#-->
@@ -1,190 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never" style="height: 100%">
<template #header>
<h3>数据导入</h3>
<el-row type="flex" justify="end" class="">
<el-select v-model="lx" class="mr10"
placeholder="请选择导入类型">
<el-option
v-for="item in lxOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button @click="doRead" icon="el-icon-upload2" type="primary">导入</el-button>
<el-button @click="doTemplate" icon="el-icon-download" type="primary">下载模板</el-button>
</el-row>
</template>
<el-upload
name="file"
ref="upload"
:limit="1"
action="/platform/honor/batchHonor/readExcel"
:on-success="onSuccess"
:on-remove="onRemove"
:on-progress="onProgress"
:before-upload="beforeUpload"
drag
:file-list="fileList" style="width: 100%;text-align: center">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</el-upload>
<el-table :data="tableData" :height="tableHeight" ref="table">
<el-table-column type="index" width="50" label="序号" fixed></el-table-column>
<template v-if="lx==1">
<el-table-column property="userName" label="姓名" width="100px"
align="center"></el-table-column>
<el-table-column property="userSex" label="性别" width="100px"
align="center"></el-table-column>
<el-table-column property="birthday" label="生日" width="100px" align="center" show-overflow-tooltip
></el-table-column>
<el-table-column property="political" label="政治面貌" align="center" show-overflow-tooltip
></el-table-column>
<el-table-column property="post" label="担任工会职务" align="center" show-overflow-tooltip
></el-table-column>
<el-table-column property="joinTime" label="加入工会时间" align="center" show-overflow-tooltip
></el-table-column>
<el-table-column property="jobStatus" label="在职状态" width="100px" align="center"
></el-table-column>
<el-table-column property="prize" label="奖项" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="grantUnit" align="center" label="授予单位" width="200px"
show-overflow-tooltip></el-table-column>
<el-table-column property="grantDate" align="center" label="授予时间" width="100px"
show-overflow-tooltip></el-table-column>
<el-table-column property="awardMaterialsExcel" align="center" label="获奖材料"
show-overflow-tooltip></el-table-column>
</template>
<div v-if="lx==2">
<el-table-column property="applyUnionName" label="申报院级工会" width="200px" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="unionLeader" label="工会主席" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="memberNumber" label="会员人数" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="unionGroupNumber" label="工会小组数" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="prize" label="奖项" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="grantUnit" align="center" label="授予单位" width="200px"
show-overflow-tooltip></el-table-column>
<el-table-column property="grantDate" align="center" label="授予时间"
show-overflow-tooltip></el-table-column>
<el-table-column property="gameName" label="参加比赛名称" width="200px" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column property="awardMaterialsExcel" align="center" label="获奖材料"
show-overflow-tooltip></el-table-column>
</div>
</el-table>
</el-card>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
lx: 1,
lxOptions: [{
value: 1,
label: '个人荣誉'
}, {
value: 2,
label: '集体荣誉',
}],
fileList: [],
tableData: [],
file: {},
tableHeight: null,
loading: null
}
},
methods: {
async doTemplate() {
if (this.lx == "") {
this.$notify.warning({title: '警告', message: "请选择下载模板类型"});
return
}
window.open(loc() + "/doTemplate?lx=" + this.lx)
},
async doRead() {
if (![1, 2].includes(this.lx)) {
this.$notify.warning({title: '警告', message: "请选择导入类型"});
return
}
if (this.tableData == [] || this.tableData.length === 0) {
this.$notify.warning({title: '警告', message: "请上传数据"});
return
}
const loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
const resp = await $.post(loc() + "/doRead", {data: JSON.stringify(this.tableData), lx: this.lx})
if(resp.code===0){
this.tableData = []
this.fileList = []
this.lx = 1
this.$notify.success({title: '成功', message: resp.msg});
}else{
this.$notify.error({title: '失败', message: resp.msg});
}
loading.close()
},
beforeUpload() {
},
onRemove() {
this.tableData = []
},
onProgress(event) {
this.loading = this.$loading({
lock: true,
text: '正在提交...',
spinner: 'el-icon-loading',
background: COVER_LAYER_COLOR
});
},
onSuccess(resp, file, fileList) {
if (resp.code == 0) {
this.tableData = resp.data
} else {
this.$notify.error({title: '失败', message: resp.msg});
this.fileList = []
}
this.loading.close()
}
},
mounted() {
},
created() {
this.$nextTick(() => {
setTimeout(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
window.onresize = () => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
}
}, 100)
})
}
})
</script>
<!--#
}
#-->
@@ -1,218 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<el-date-picker
v-model="startYear"
value-format="yyyy"
type="year"
placeholder="开始年份">
</el-date-picker>
<span></span>
<el-date-picker
v-model="endYear"
value-format="yyyy"
type="year"
placeholder="结束年份">
</el-date-picker>
<el-button icon="el-icon-search" type="primary" @click="doFilter"></el-button>
</el-card>
<el-card class="mt10" shadow="never">
<template #header>
<el-row type="flex">
<el-col :span="12">
<vi-title title="年度获奖趋势"></vi-title>
</el-col>
</el-row>
</template>
<div id="honor_type_box"></div>
</el-card>
<el-row :gutter="20" class="mt10" type="flex">
<el-col :span="12">
<el-card shadow="never">
<template #header>
<vi-title title="个人荣誉奖项"></vi-title>
</template>
<div id="single_honor_type_box"></div>
</el-card>
</el-col>
<el-col :span="12">
<el-card shadow="never">
<template #header>
<vi-title title="个人荣誉奖项级别"></vi-title>
</template>
<div id="single_honor_level_box"></div>
</el-card>
</el-col>
</el-row>
</guava>
</div>
<script>
let linePlot = null
let singleHonorTypePlot = null
let singleLevelTypePlot = null
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
startYear: null,
endYear: null,
honorTypeList: [],
singleHonorList: [],
singleLevelList: []
}
},
methods: {
async getHonorTypeByYear() {
const resp_data = await $.get('/platform/honor/board/getHonorTypeByYear')
if(resp_data.code===0){
this.honorTypeList = resp_data.data
}
},
renderHonorTypeByYear(data) {
console.log(data)
// data = [{
// name: "集体荣誉",
// num: 4,
// year: 2022
// },{
// name: "个人荣誉",
// num:10,
// year: 2022
// }]
if (linePlot) {
linePlot.changeData(data)
} else {
linePlot = new G2Plot.Line('honor_type_box', {
data,
xField: 'year',
yField: 'num',
seriesField: 'name',
legend: {
position: 'top',
},
smooth: true,
});
linePlot.render()
}
},
async getSingleHonorByYear() {
const resp_data = await $.get('/platform/honor/board/getSingleHonorByYear')
if(resp_data.code===0){
this.singleHonorList = resp_data.data
}
},
renderSingleHonorByYear(data) {
if (singleHonorTypePlot) {
singleHonorTypePlot.changeData(data)
} else {
singleHonorTypePlot = new G2Plot.Pie('single_honor_type_box', {
appendPadding: 10,
data,
angleField: 'num',
colorField: 'name',
radius: 0.9,
label: {
type: 'inner',
offset: '-30%',
content: ({percent}) => (percent * 100).toFixed(0) + "%",
style: {
fontSize: 14,
textAlign: 'center',
},
},
interactions: [{type: 'element-active'}],
})
singleHonorTypePlot.render()
}
},
async getSingleLevelByYear() {
const resp_data = await $.get('/platform/honor/board/getSingleLevelByYear')
if(resp_data.code===0){
this.singleLevelList = resp_data.data
}
},
renderSingleLevelByYear(data) {
if (singleLevelTypePlot) {
singleLevelTypePlot.changeData(data)
} else {
singleLevelTypePlot = new G2Plot.Column('single_honor_level_box', {
data,
xField: 'name',
yField: 'num',
position: 'middle',
columnStyle: {
radius: [20, 20, 0, 0],
},
})
singleLevelTypePlot.render()
}
},
doFilter() {
if (this.startYear == null) {
this.notifyWarning('请输入开始年份')
return
}
if (this.endYear == null) {
this.notifyWarning('请输入结束年份')
return
}
if (parseInt(this.startYear) > parseInt(moment().format('YYYY'))) {
this.notifyWarning('开始年份不能大于当前年份')
return
}
if (parseInt(this.endYear) > parseInt(moment().format('YYYY'))) {
this.notifyWarning('结束年份不能大于当前年份')
return
}
if (parseInt(this.startYear) > parseInt(this.endYear)) {
this.notifyWarning('开始年份不能大于结束年份')
return
}
const startYear = parseInt(this.startYear)
const endYear = parseInt(this.endYear)
const htl = this.honorTypeList.filter(v => {
return startYear <= v.year && v.year <= endYear
})
console.log(htl)
this.renderHonorTypeByYear(htl)
const shl = this.singleHonorList.filter(v => {
return startYear <= v.year && v.year <= endYear
})
this.renderSingleHonorByYear(shl)
const sll = this.singleLevelList.filter(v => {
return startYear <= v.year && v.year <= endYear
})
this.renderSingleLevelByYear(sll)
}
},
async created() {
this.startYear = (parseInt(moment().format('YYYY')) - 10).toString()
this.endYear = moment().format('YYYY')
await this.getHonorTypeByYear()
await this.getSingleHonorByYear()
await this.getSingleLevelByYear()
this.doFilter()
}
})
</script>
<!--#
}
#-->
@@ -1,75 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度"
@change="honorLevelData">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
filterable="true" @change="honorLevelData">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData">
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column property="unionname" label="工会" sortable align="center"></el-table-column>
<el-table-column property="nationalLevelNum" label="国家级" sortable align="center"></el-table-column>
<el-table-column property="provincialNum" label="省部级" sortable align="center"></el-table-column>
<el-table-column property="schoolLevelNum" label="校内级" sortable align="center"></el-table-column>
</el-table>
</el-card>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
unions: [],
tableData: []
}
},
methods: {
honorLevelData() {
sublime.showLoadingbar();
this.tableLoading = true
$.post("/platform/honor/Summary/honorLevelData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
this.tableData = data.data;
} else {
this.$message.error(data.msg);
}
}, "json");
},
},
async created() {
this.unions = await getUnions()
this.honorLevelData()
}
})
</script>
<!--#
}
#-->
@@ -1,405 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select, .el-date-editor {
width: 100% !important;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<el-row type="flex" :gutter="20">
<el-col :span="6">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="授予年度">
</el-date-picker>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.honorType"
placeholder="请选择荣誉类型"
@change="honorTypeChange">
<el-option v-for="o in honorTypeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.prize"
filterable
placeholder="请选择荣誉奖项"
clearable>
<el-option v-for="o in honorPrizeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.honorLevel"
placeholder="请选择荣誉级别"
clearable>
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-col>
</el-row>
<el-row type="flex" class="mt15" :gutter="20">
<el-col :span="6">
<el-input v-model="pageForm.userName">
<template slot="prepend">姓名</template>
</el-input>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.unionName"
placeholder="请选择获奖工会"
@change="doSearch"
clearable>
<el-option v-for="o in unionList"
:key="o.id"
:label="o.unionname"
:value="o.unionname"
></el-option>
</el-select>
<!-- <el-input v-model="pageForm.unionName">-->
<!-- <template slot="prepend">获奖工会</template>-->
<!-- </el-input>-->
</el-col>
<el-col :span="6">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
<el-button type="primary" icon="el-icon-search" @click="doExport">导出</el-button>
</el-col>
</el-row>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title title="荣誉列表"></vi-title>
<el-table :data="tableData">
<el-table-column label="序号" type="index" header-align="center" align="center"
width="50"></el-table-column>
<template v-if="pageForm.honorType===HonorApi.honor_single_id">
<el-table-column prop="userName" label="姓名" header-align="center" align="center"
sortable></el-table-column>
<el-table-column prop="loginName" label="工号" header-align="center" align="center"
sortable></el-table-column>
<el-table-column prop="unionName" label="所属工会" header-align="center" align="center"
sortable></el-table-column>
<el-table-column prop="unitName" label="所属单位" header-align="center" align="center"
sortable></el-table-column>
</template>
<template v-if="pageForm.honorType===HonorApi.honor_list_id">
<el-table-column prop="applyUnionName" label="申报院级工会" header-align="center" align="center"
sortable></el-table-column>
<el-table-column prop="gameName" label="参加比赛名称" header-align="center" align="center"
show-overflow-tooltip></el-table-column>
</template>
<el-table-column prop="prizeName" label="奖项" header-align="center" align="center"
sortable></el-table-column>
<!--<el-table-column prop="prizeDesc" label="奖项说明" header-align="center" align="center"></el-table-column>-->
<el-table-column prop="typeName" label="荣誉类型" header-align="center" align="center"></el-table-column>
<el-table-column prop="levelName" label="级别" header-align="center" align="center"
sortable></el-table-column>
<el-table-column prop="grantUnit" label="授予单位" header-align="center" align="center"
show-overflow-tooltip></el-table-column>
<el-table-column prop="grantDate" label="授予时间" header-align="center" align="center"
sortable></el-table-column>
<!--<el-table-column prop="archiveStatus" label="存档情况" header-align="center"
align="center"></el-table-column>-->
<el-table-column prop="awardMaterialsExcel" label="获奖材料" header-align="center"
align="center"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="100px">
<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',row}">
查看
</el-dropdown-item>
<!--#if(@shiro.hasRole('sysadmin')){#-->
<el-dropdown-item :command="{type:'edit',row}">
编辑
</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',row}">
删除
</el-dropdown-item>
<!--#}#-->
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<el-form label-suffix="" label-position="left" style="padding: 20px 0">
<vi-title title="基础信息"></vi-title>
<el-row gutter="20" v-if="viewData.honorType===HonorApi.honor_single_id">
<el-col :span="6">
<el-form-item label="获奖姓名">
{{ viewData.userName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请人性别">
{{ viewData.userSex }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="在职状态">
{{ viewData.jobStatus }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属单位">
{{ viewData.unitName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属工会">
{{ viewData.unionName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="担任工会职务">
{{ viewData.post }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="职称">
{{ viewData.title }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="生日">
{{ viewData.birthday }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="政治面貌">
{{ viewData.political }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="加入工会时间">
{{ viewData.joinTime }}
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20" v-else>
<el-col :span="6">
<el-form-item label="申报院级工会">
{{ viewData.applyUnionName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工会主席">
{{ viewData.unionLeader }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="会员人数">
{{ viewData.memberNumber }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工会小组数">
{{ viewData.unionGroupNumber }}
</el-form-item>
</el-col>
<!--<el-col :span="6">
<el-form-item label="单位负责人">
{{ viewData.unitLeader }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位人数">
{{ viewData.unitPeopleNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位女职工人数">
{{ viewData.unitFemalePeopleNum }}
</el-form-item>
</el-col>-->
</el-row>
<vi-title title="获奖信息"></vi-title>
<el-row gutter="20">
<el-col :span="6">
<el-form-item label="奖项">
{{ viewData.prizeName }}
</el-form-item>
</el-col>
<!--<el-col :span="6">
<el-form-item label="奖项说明">
{{ viewData.prizeDesc }}
</el-form-item>
</el-col>-->
<el-col :span="6">
<el-form-item label="级别">
{{ viewData.levelName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="授予单位">
{{ viewData.grantUnit }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="授予时间">
{{ viewData.grantDate }}
</el-form-item>
</el-col>
<!--<el-col :span="6">
<el-form-item label="存档情况">
{{ viewData.archiveStatus }}
</el-form-item>
</el-col>-->
<el-col :span="6">
<el-form-item label="获奖材料">
{{ viewData.awardMaterialsExcel }}
</el-form-item>
</el-col>
</el-row>
<vi-title title="附件"></vi-title>
<el-row gutter="20">
<el-col :span="24">
<el-form-item prop="user_name" label="附&emsp;&emsp;件">
<file-upload v-if="viewData.files&&viewData.files.length"
:files="viewData.files"
:view="true"></file-upload>
<span v-else>暂无</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: "#app",
mixins: [initTableMixins],
data() {
return {
viewData: {},
pageForm: {
year: "",
honorType: "",
prize: "",
honorLevel: "",
userName: "",
unitName: ""
},
honorTypeList: [],
honorLevelList: [],
honorAwardList: [],
honorPrizeList: [],
unionList:[],
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
},
methods: {
dropdownCommand(command) {
const {type, row} = command
if (type === 'edit') {
this.openEdit(row)
} else if (type === 'delete') {
this.doDelete(row)
} else if (type === 'view') {
this.openView(row)
}
},
openView(row) {
if(row.files) {
row.files = JSON.parse(row.files)
}
this.viewData = row
this.$refs.guava.view()
},
doExport() {
const {year, honorType, prize, honorLevel, userName, unitName} = this.pageForm
window.location.href = "/platform/honor/manage/doExport?year="
+ year + "&honorType=" + honorType
+ "&prize=" + prize
+ "&honorLevel=" + honorLevel
+ "&userName" + userName
+ "&unitName" + unitName
},
openEdit(row) {
window.location.href = "/platform/honor/registration?id=" + row.id
},
async doDelete(row) {
const {id} = row
const confirm = await this.$confirm('确定要删除该记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if ("confirm" === confirm) {
this.$set(row, "loading", true)
const resp = await $.post(loc() + "/doDelete", {id: id});
if (resp.code === 0) {
this.$notify.success({title: '成功', message: resp.msg});
this.doSearch()
} else {
this.$notify.error({title: '失败', message: resp.msg});
}
}
},
async initData() {
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
this.$set(this.pageForm, "honorType", this.honorTypeList[0].id)
this.honorPrizeList = await HonorApi.getHonorPrize(this.pageForm.honorType)
}
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorAwardList = await HonorApi.getHonorAwardType()
this.unionList = await getUnions();
}
,
async honorTypeChange(val) {
this.honorPrizeList = await HonorApi.getHonorPrize(val)
this.doSearch()
}
,
},
async created() {
await this.initData()
await this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -1,470 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.el-select {
width: 100%;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<template #header>
<h3 style="color: #1867b0">{{isEdit?'修改登记':'荣誉登记'}}</h3>
</template>
<el-form :model="formData" label-width="120px">
<el-row type="flex" :gutter="20">
<el-col :span="24">
<el-form-item label="荣誉类型" prop="honorType">
<el-select v-model="formData.honorType" @change="honorTypeChange">
<el-option v-for="o in honorTypeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-collapse v-model="collapse">
<el-collapse-item title="" name="basic">
<template slot="title">
<div class="text-primary" style="width: 100%">
基础信息
</div>
</template>
<template v-if="formData.honorType===HonorApi.honor_single_id">
<el-row type="flex" :gutter="20">
<el-col :span="12" prop="userId">
<el-form-item label="姓名" v-if="isEdit" prop="userName">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
<el-form-item v-else prop="userId" label="姓名">
<el-select
style="width: 100%"
v-model="formData.userId"
filterable
clearable
remote
reserve-keyword
placeholder="请输入姓名或工号查找"
:remote-method="userRemoteMethod"
:loading="userLoading"
@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-col>
<el-col :span="12">
<el-form-item label="性别" prop="userSex">
<el-radio-group v-model="formData.userSex">
<el-radio-button label="男"></el-radio-button>
<el-radio-button label="女"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="所属单位" prop="unitId">
<el-select placeholder="所属单位" v-model="formData.unitId" clearable
style="width: 100%;"
clearable="true"
filterable="true">
<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 placeholder="所属工会" v-model="formData.unionId" clearable
style="width: 100%;"
clearable="true"
filterable="true">
<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"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="在职状态" prop="jobStatus">
<el-input v-model="formData.jobStatus"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职称" prop="title">
<el-input v-model="formData.title"></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="post">
<el-input v-model="formData.post"></el-input>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-else>
<el-row type="flex">
<el-col :span="12">
<el-form-item label="申报院级工会" prop="unionId">
<el-select placeholder="请选择申报院级工会" v-model="formData.unionId"
style="width: 100%;"
disabled
clearable="true"
filterable
@change="searchUnionInfo(formData.unionId)">
<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 v-model="formData.unionLeader"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex">
<!--<el-col :span="8">
<el-form-item label="单位负责人" prop="unitLeader">
<el-input v-model="formData.unitLeader"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<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-col :span="8">
<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"
: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"
:max="2000" style="width: 100%"></el-input-number>
</el-form-item>
</el-col>
</el-row>
</template>
</el-collapse-item>
<el-collapse-item title="获奖信息" name="prize">
<template slot="title">
<div class="text-primary" style="width: 100%">
获奖信息
</div>
</template>
<template>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="奖项" prop="prize">
<el-select v-model="formData.prize">
<el-option v-for="o in honorPrizeList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="获奖材料" prop="awardMaterials">
<el-select v-model="formData.awardMaterials" multiple>
<el-option v-for="o in honorAwardList"
:key="o.id"
:label="o.name"
:value="o.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<!--<el-col :span="12">
<el-form-item label="奖项说明" prop="prizeDesc">
<el-input v-model="formData.prizeDesc" maxlength="100"></el-input>
</el-form-item>
</el-col>-->
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12">
<el-form-item label="授予单位" prop="grantUnit">
<el-input v-model="formData.grantUnit"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="授予时间">
<el-date-picker
style="width: 100%"
v-model="formData.grantDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12" v-if="formData.honorType==HonorApi.honor_list_id">
<el-form-item label="参加比赛名称" prop="gameName">
<el-input v-model="formData.gameName" maxlength="100"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="级别">
<el-select v-model="formData.honorLevel" placeholder="">
<el-option v-for="o in honorLevelList"
:key="o.id"
:label="o.name"
:value="o.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="archiveStatus">
<el-input v-model="formData.archiveStatus"></el-input>
</el-form-item>
</el-col>-->
</el-row>
<el-col :span="24">
<el-form-item label="附件" prop="files">
<file-upload card :files.sync="formData.files" :max-size="50 * 1024 * 1024"></file-upload>
</el-form-item>
</el-col>
</template>
</el-collapse-item>
</el-collapse>
</el-form>
<el-row class="m20 text-right">
<el-button v-if="GetQueryString('id') !== ''" @click="doBack">返回</el-button>
<el-button type="primary" @click="doSubmit">提交</el-button>
</el-row>
</el-card>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
data() {
return {
units: [],
unions: [],
honorTypeList: [],
honorLevelList: [],
honorAwardList: [],
honorPrizeList: [],
collapse: ['basic', 'prize'],
formData: {},
userLoading: false,
userOptions: [],
isEdit: GetQueryString("id") && GetQueryString("id") !== '',
firstInPage: true,
}
},
components: {
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
},
methods: {
doBack() {
if (GetQueryString("id") !== '') {
sublime.jumpPagePjax('/platform/honor/manage')
}
},
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, "unitId", user[0].unitid)
this.$set(this.formData, "unionId", user[0].unionid)
this.$set(this.formData, "birthday", user[0].birthday)
this.$set(this.formData, "title", user[0].jobTitle)
//this.$set(this.formData, "post", user[0].position)
this.$set(this.formData, "unionName", user[0].unionname)
this.$set(this.formData, "unitName", user[0].unitname)
this.$set(this.formData, "jobStatus", user[0].userState)
this.$set(this.formData, "political", user[0].political)
},
async userRemoteMethod(query) {
if (query) {
this.userLoading = true
const arr = await searchUser(query)
this.userOptions = arr
this.userLoading = false
}
},
async initData() {
this.honorTypeList = await HonorApi.getHonorType()
if (this.honorTypeList) {
this.formData = {
honorType: this.honorTypeList[0].id
}
this.honorPrizeList = await HonorApi.getHonorPrize(this.formData.honorType)
}
this.honorLevelList = await HonorApi.getHonorLevel()
this.honorAwardList = await HonorApi.getHonorAwardType()
this.units = await getUnits(null)
this.unions = await getUnions(null)
this.$set(this.formData, 'unionId', "${@shiro.getPrincipalProperty('union').getId()}")
await this.searchUnionInfo(this.formData.unionId)
},
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
},
async honorTypeChange(val) {
this.$set(this.formData, "prize", null)
this.honorPrizeList = await HonorApi.getHonorPrize(val)
},
async doSubmit() {
this.formData.awardMaterials = JSON.stringify(this.formData.awardMaterials)
this.formData.files = JSON.stringify(this.formData.files)
const resp = await $.post(loc() + '/doSubmit', this.formData)
if (resp.code === 0) {
this.$notify({
title: '成功',
message: resp.msg,
type: 'success',
duration: 500,
onClose: () => {
sublime.jumpPagePjax('/platform/honor/manage')
}
});
}
},
async findData(id) {
const resp = await $.post(loc() + '/findData', {id: id})
const data1 = clone(resp.data.data)
this.honorPrizeList = await HonorApi.getHonorPrize(resp.data.data.honorType)
this.formData = resp.data.data
if (this.formData.userId && this.formData.userId !== '') {
const user = await queryUserById(this.formData.userId)
this.setFormData(user)
} else {
this.$set(this.formData, 'userName', this.formData.userName)
}
this.$set(this.formData, "prize", data1.prize)
this.$set(this.formData, "honorLevel", data1.honorLevel)
this.$set(this.formData, "political", data1.political)
this.$set(this.formData, "post", data1.post)
this.$set(this.formData, "title", data1.title)
this.$set(this.formData, "unionId", data1.unionId)
this.$set(this.formData, "unionLeader", data1.unionLeader)
}
},
watch: {
"formData.prize"(newVal) {
if (this.firstInPage === false && newVal) {
this.$set(this.formData, "honorLevel", this.honorPrizeList.find(v => v.id === newVal).level)
this.firstInPage = false
}
},
"formData.unitName"(newVal) {
const isExist = this.units.some(v => v.name == newVal)
if(this.formData.honorType === HonorApi.honor_single_id) {
if (isExist) {
const unionId = this.units.find(v => v.name == newVal).unionid
this.$set(this.formData, "unionId", unionId ? unionId : "")
} else {
this.$set(this.formData, "unionId", "")
}
}
},
"formData.unionId"(newVal) {
if(this.formData.honorType === HonorApi.honor_list_id) {
if(this.firstInPage === false) {
const un = this.unions.find(o => o.id === newVal)
this.formData.unionLeader = un ? un.leadername : ''
this.formData.unionName = un ? un.unionname : ''
} else {
this.firstInPage = false
}
}
}
},
async created() {
await this.initData()
if (GetQueryString("id") !== '') {
await this.findData(GetQueryString("id"))
}
}
})
</script>
<!--#
}
#-->
@@ -1,73 +0,0 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div class="btn-group tool-button">
<div class="block">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="年度"
@change="pageData">
</el-date-picker>
</div>
</div>
<div class="btn-group tool-button">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true"
filterable="true" @change="pageData">
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<el-table :data="tableData">
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column property="unionname" label="分工会" sortable align="center"></el-table-column>
<el-table-column property="personalHonorNum" label="个人荣誉" sortable align="center"></el-table-column>
<el-table-column property="collectiveHonorNum" label="集体荣誉" sortable align="center"></el-table-column>
</el-table>
</el-card>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
unions: [],
tableData: []
}
},
methods: {
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
$.post("/platform/honor/Summary/unionData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
this.tableData = data.data;
} else {
this.$message.error(data.msg);
}
}, "json");
},
},
async created() {
this.unions = await getUnions()
this.pageData()
}
})
</script>
<!--#
}
#-->