first commit

This commit is contained in:
2026-09-09 09:14:28 +08:00
commit 5343198112
5199 changed files with 1052895 additions and 0 deletions
@@ -0,0 +1,728 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
input[type="file"] {
display: none
}
.w-e-text-container {
height: 250px !important;
}
.v-box .el-card__header {
padding: 5px 15px;
}
.el-select-dropdown {
z-index: 99999999 !important;
}
.el-loading-mask {
z-index: 99999999 !important;
}
.el-picker-panel {
z-index: 99999999 !important;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
.el-textarea__inner {
width: 600px;
text-align: center;
}
</style>
<div id="app" v-cloak>
<el-row class="transition-row">
<!--主table-->
<transition name="el-zoom-in-center">
<div v-show="showGh==true" class="transition-item">
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<el-date-picker
v-model="ghPageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="ghPageForm.hdid" filterable clearable placeholder="请选择活动"
@change="pageData">
<el-option
v-for="item in lxyHd"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入工会名称" clearable v-model="ghPageForm.searchKeyword"
@keyup.enter.native="doSearch"></el-input>
</div>
<div class="btn-group tool-button mt5">
<el-button type="primary" icon="el-icon-search" @click="doSearchGh"></el-button>
</div>
<div class="pull-right offscreen-right mt5">
<el-radio-group v-model="ghPageForm.isAudit" @change="doSearchGh">
<el-radio-button :label="1">全部</el-radio-button>
<el-radio-button :label="2">已审核</el-radio-button>
<el-radio-button :label="3">未审核</el-radio-button>
</el-radio-group>
<el-button type="primary" @click="yjTg">一键通过</el-button>
</div>
</el-row>
<el-row class="el-table-container">
<el-table :data="ghTableData" style="width: 100%" row-key="ghid"
@sort-change="pageOrder" ref="multipleTableGh"
v-loading="tabLoading" @selection-change="handleSelectionChangeGh">
<el-table-column
:reserve-selection="true"
type="selection"
width="55">
</el-table-column>
<el-table-column label="活动名称" prop="name" header-align="center"
align="center">
<template scope="scope">
<el-link type="primary" @click="lxy_app.openView(scope.row.id)">
{{scope.row.name}}
</el-link>
</template>
</el-table-column>
<el-table-column label="分工会" prop="unionname" header-align="center"
align="center" show-overflow-tooltip>
<template scope="scope">
<span>({{scope.row.unioncode}}){{scope.row.unionname}}</span>
</template>
</el-table-column>
<el-table-column label="活动场地" prop="hdcd" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column label="联系人及联系方式" prop="fglyname" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<!-- <el-table-column label="活动时间" prop="hdsj" header-align="center" sortable width="200px"
align="center">
<template scope="scope">
{{scope.row.hdkssj}} 至 {{scope.row.hdjssj}}
</template>
</el-table-column>
<el-table-column label="报名截止时间" prop="bmsj" header-align="center" sortable width="270px"
align="center">
<template scope="scope">
{{scope.row.bmkssj}} 至 {{scope.row.bmjzsj}}
</template>
</el-table-column>-->
<el-table-column label="分配名额" prop="number" header-align="center"
align="center">
<template scope="scope">
<span style="color: tomato">{{scope.row.number}}</span>
</template>
</el-table-column>
<el-table-column label="审核状态" prop="dsh" header-align="center" show-overflow-tooltip
align="center">
<template scope="scope">
<el-tag type="info" v-if="scope.row.dsh>0">未审核</el-tag>
<el-tag type="success" v-else>已审核</el-tag>
</template>
</el-table-column>
<el-table-column label="报名人员" prop="username" header-align="center" show-overflow-tooltip
align="center"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="120px">
<template scope="scope">
<el-button size="mini" type="primary" @click="openSh(scope.row)" plain>查看人员</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row class="el-pagination-container">
<el-pagination
@size-change="ghPageSizeChange"
@current-change="ghPageNumberChange"
:current-page="ghPageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="ghPageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="ghPageForm.totalCount">
</el-pagination>
</el-row>
</div>
</transition>
<!--审核部分-->
<transition name="el-zoom-in-center">
<div v-show="showGh==false" class="transition-item">
<el-row class="header navbar bg-white shadow">
<div class="btn-group tool-button mt5">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="showGh=true" style="font-size: 18px">返回
</el-button>
</div>
</div>
<div class="pull-right offscreen-right mt5">
<el-button type="success" @click="sh(5)" plain>批量审核</el-button>
<!--<el-button type="danger" @click="sh(4)" plain>不通过</el-button>-->
</div>
</el-row>
<el-row class="el-table-container">
<el-table :data="bmTableData" tooltip-effect="dark" row-key="id" ref="multipleTableRy"
style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column :reserve-selection="true" type="selection" width="55" :selectable='checkboxT'
disabled></el-table-column>
<el-table-column label="工号" prop="loginname" header-align="center"
align="center"></el-table-column>
<el-table-column label="姓名" prop="username" header-align="center"
align="center"></el-table-column>
<el-table-column label="性别" prop="sex" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="年龄" prop="age" header-align="center" sortable
align="center"></el-table-column>
<el-table-column label="联系电话" prop="mobile" header-align="center"
align="center"></el-table-column>
<el-table-column label="报名状态" prop="bmzt" header-align="center" align="center">
<template scope="scope">
<span style="color: #E6A23C" v-if="scope.row.bmzt==1">待分工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==2">分工会审核未通过</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==3">待校工会审核</span>
<span style="color: #F56C6C" v-if="scope.row.bmzt==4">校工会审核未通过</span>
<span style="color: #67C23A" v-if="scope.row.bmzt==5">报名成功</span>
<span style="color: #E6A23C" v-if="scope.row.bmzt==6">待填写个人资料</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:'Review',data:row}" :disabled="row.bmzt==5">
审核
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row class="el-pagination-container">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</div>
</transition>
<el-dialog top="3%" :visible.sync="viewDialogSh" custom-class="ViewDialogClass"
:close-on-click-modal="false" width="60%">
<el-form label-position="right" style="padding: 20px 0" label-width="120px">
<vi-title title="个人信息"></vi-title>
<el-row gutter="20">
<el-col :span="8">
<el-form-item label="工号:">
{{ viewData.loginname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名:">
{{ viewData.username }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="职务:">
{{ viewData.zw }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="人事编制:">
{{ viewData.rsbz }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别:">
{{ viewData.sex }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="年龄:">
{{ viewData.age }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所在单位:">
{{ viewData.unitname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="手机号:">
{{ viewData.mobile }}
</el-form-item>
</el-col>
</el-row>
<vi-title title="曾获荣誉"></vi-title>
<el-table :data="viewData.chry" size="mini" style="width: 100%" show-header="false">
<el-table-column prop="hdsj" label="获得时间" align="center" header-align="center"
width="250px">
<template slot-scope="{row}">
<el-date-picker v-model="row.hdsj" type="date" readonly
format="yyyy-MM-dd"></el-date-picker>
</template>
</el-table-column>
<el-table-column prop="shry" label="曾获荣誉" align="center" header-align="center">
<template slot-scope="{row}">
<el-input v-model="row.shry" readonly></el-input>
</template>
</el-table-column>
<el-table-column label="附件" align="center" header-align="center" width="120px">
<template slot-scope="{row}">
<div class="file-down-span" @click="dd3s.download(row.ryfj,row.ryfj)">
<i class="el-icon-download"></i>
</div>
<el-image fit="cover" v-if="dd3s.isPic(row.ryfj)"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
:src="'${AppFileDomain!}'+row.ryfj"
@click="dd3s.showpic(row.ryfj)">
</el-image>
<el-image v-else
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
src="***">
<div slot="error" class="image-slot"
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical">{{row.ryfj}}</span>
</div>
</el-image>
</template>
</el-table-column>
</el-table>
<template v-if="viewData.files&&viewData.files.length">
<vi-title title="身份证复印件"></vi-title>
<div style="text-align: left;">
<div v-for="item in viewData.files"
style="display: inline-block;width: 100px;margin-right:10px">
<div class="file-down-span" @click="dd3s.download(item.filepath,item.filename)">
<i class="el-icon-download"></i>
</div>
<el-image fit="cover" v-if="dd3s.isPic(item.filepath)"
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
:src="'${AppFileDomain!}'+item.filepath"
@click="dd3s.showpic(item.filepath)">
</el-image>
<el-image v-else
style="width: 100px;height: 100px;box-shadow: 0 0 5px rgb(200,200,200)"
src="***">
<div slot="error" class="image-slot"
style="width: 100%;height: 100%; display:flex;align-items: center;text-align: center">
<span style="font-size: 12px;color: rgb(180,180,180);width: 100%;text-align: center;overflow: hidden;padding: 0 10px;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical">{{item.filename}}</span>
</div>
</el-image>
</div>
</div>
</template>
</el-form>
<span slot="footer" class="dialog-footer" v-if="this.viewData.num==2">
<el-button type="danger" @click="grsh(4)" plain>不通过</el-button>
<el-button type="success" @click="grsh(5)" plain>通 过</el-button>
</span>
</el-dialog>
</el-row>
</div>
<script>
const vue = new Vue({
el: '#app',
data() {
return {
tabKey: new Date().getTime(),
viewData: [],
lxyHd: [],
unions: [],
userOptions: [],
multipleSelection: [],
multipleSelectionGh: [],
viewDialogSh: false,
loading: false,
tabLoading: false,
userLoading: false,
showGh: true,
formData: {},
tableData: [],
bmTableData: [],
ghTableData: [],
pageForm: {
searchName: "name",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
ghid: '',
hdid: ''
},
ghPageForm: {
isAudit: 1,
year: new Date().getFullYear() + "",
searchName: "un.unionname",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: "",
hdid: ""
},
}
},
methods: {
//查看审核人员
openSh(row) {
this.pageForm.pageNumber = 1
this.pageForm.hdid = row.hdid
this.pageForm.ghid = row.ghid
this.showGh = false
//已通过的不可勾选
this.$nextTick(() => {
this.toggleSelection()
})
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
},
refresh(ghid, hdid) {
const param = {ghId: ghid, hdId: hdid, ...this.pageForm}
$.post(base + '/platform/zgfw/lxy/xghsh/findBm', param).then(res => {
if (res.code === 0) {
this.bmTableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
// $.post(base + "/platform/zgfw/lxy/xghsh/findBm", param, (data) => {
// sublime.closeLoadingbar();
// this.tabLoading = false
// if (data.code == 0) {
// this.bmTableData = data.data;
// } else {
// this.$message({
// message: data.msg,
// type: 'error'
// });
// }
// }, "json");
},
checkboxT(row) {
if ([4, 5].includes(row.bmzt)) {
return false;
} else {
return true;
}
},
dropdownCommand(command) {
const {type, data} = command
if (type == 'view') {
this.openView(data, 1)
} else if (type == 'Review') {
this.openView(data, 2)
}
},
async getLxyBmInfo(id) {
const {data} = await $.get(base + "/platform/zgfw/lxy/fghsh/getBmInfo", {id})
return data
},
async openView(row, num) {
this.viewData = await this.getLxyBmInfo(row.id)
this.viewData.num = num
this.pageForm.hdid = row.hdid
this.pageForm.uid = row.uid
this.viewData.unitname = row.unitname
this.viewDialogSh = true
},
yjTg() {
if (this.multipleSelectionGh.length == 0) {
this.$message({
message: '请选择工会!',
type: 'warning'
});
return
}
//从勾选的工会里面筛选出待审核数等于0的工会
const dshSelection = this.multipleSelectionGh.filter(v => v.dsh === 0)
console.log(dshSelection)
if (dshSelection.length > 0) {
dshSelection.map(v => v.unionname)
this.$message.warning(dshSelection.map(v => v.unionname) + '的待审核人员数量为0')
return
}
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
let arr = []
this.multipleSelectionGh.map(v => {
if(v.dsh>0){
arr.push({ghid: v.ghid, hdid: v.hdid})
}
})
$.post(base + "/platform/zgfw/lxy/xghsh/yjSh", {maps: JSON.stringify(arr)}, (data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.toggleSelectionGh()
this.openShGh({id: this.ghPageForm.hdid});
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
},
sh(zt) {
if (this.multipleSelection.length == 0) {
this.$message({
message: '请选择人员!',
type: 'warning'
});
return
}
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
let arr = []
this.multipleSelection.map(v => {
arr.push(v.uid)
})
$.post(base + "/platform/zgfw/lxy/xghsh/sh", {
hdid: this.pageForm.hdid,
ghid: this.pageForm.ghid,
bmzt: zt,
users: JSON.stringify(arr)
}, (data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.viewDialogSh = false
this.pageData()
this.toggleSelection()
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
},
grsh(zt) {
const loading = this.$loading({
lock: true,
text: '数据提交中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
$.post(base + "/platform/zgfw/lxy/xghsh/grsh", {
hdid: this.pageForm.hdid,
ghid: this.pageForm.ghid,
userid: this.viewData.userid,
bmzt: zt,
}, (data) => {
loading.close()
if (data.code == 0) {
this.$message({
message: '提交成功',
type: 'success'
});
this.viewDialogSh = false
this.pageData()
this.toggleSelection()
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
},
toggleSelection(rows) {
console.log(rows)
if (rows) {
rows.forEach(row => {
this.$refs.multipleTableRy.toggleRowSelection(row);
});
} else {
this.$refs.multipleTableRy.clearSelection();
}
},
toggleSelectionGh(rows) {
if (rows) {
rows.forEach(row => {
this.$refs.multipleTableGh.toggleRowSelection(row);
});
} else {
this.$refs.multipleTableGh.clearSelection();
}
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleSelectionChangeGh(val) {
this.multipleSelectionGh = val;
},
async userRemoteMethod(query) {
if (query) {
this.userLoading = true
const arr = await searchUser(query)
this.userOptions = this.userOptions.filter(v => {
return v.id == this.formData.hdfzr
}).concat(arr.filter(v => {
return v.id != this.formData.hdfzr
}));
this.userLoading = false
}
},
doSearch() {
this.tabKey = new Date().getTime()
this.pageForm.pageNumber = 1
this.pageData()
},
doSearchGh() {
this.tabKey = new Date().getTime()
this.ghPageForm.pageNumber = 1
this.openShGh({id: this.ghPageForm.hdid});
},
pageOrder(column) {//按字段排序
this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderBy = column.order;
this.pageData();
},
pageNumberChange(val) {//页码更新操作
this.pageForm.pageNumber = val;
//this.pageData();
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
},
pageSizeChange(val) {//分页大小更新操作
this.pageForm.pageSize = val;
this.refresh(this.pageForm.ghid, this.pageForm.hdid)
},
ghPageOrder(column) {//按字段排序
this.ghPageForm.pageOrderName = column.prop;
this.ghPageForm.pageOrderBy = column.order;
this.openShGh({id: this.ghPageForm.hdid});
},
ghPageNumberChange(val) {//页码更新操作
this.ghPageForm.pageNumber = val;
this.openShGh({id: this.ghPageForm.hdid});
},
ghPageSizeChange(val) {//分页大小更新操作
this.ghPageForm.pageSize = val;
this.openShGh({id: this.ghPageForm.hdid});
},
openShGh(row) {
this.ghPageForm.hdid = row.id
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.ghPageForm, (data) => {
sublime.closeLoadingbar();
this.tabLoading = false
if (data.code == 0) {
this.ghTableData = data.data.list;
this.ghPageForm.totalCount = data.data.totalCount;
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
},
pageData() {
sublime.showLoadingbar();
this.tabLoading = true
$.post(base + "/platform/zgfw/lxy/xghsh/pageData", this.ghPageForm, (data) => {
sublime.closeLoadingbar();
this.tabLoading = false
if (data.code == 0) {
this.ghTableData = data.data.list;
this.ghPageForm.totalCount = data.data.totalCount;
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
}, "json");
},
},
async created() {
this.unions = await getUnions()
this.lxyHd = await getNowLxyHd()
this.ghPageForm.hdid = this.lxyHd[0].id
this.pageData();
}
})
</script>
<!--#layout("/platform/zgfw/lxy/dialogView.html"){}#-->
<!--#
}
#-->