Files
UNION_HUTB/target/classes/views/platform/wmhd/sbxxyl.html
T
2026-09-09 09:14:28 +08:00

599 lines
24 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css">
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<style>
.el-col > .el-cascader, .el-col > .el-select, .el-col > .el-date-editor {
width: 100% !important;
}
.filedialog .el-dialog__header i {
font-size: 30px;
}
.filedialog .el-dialog__body {
padding: 20px 0 0 0;
}
.video-js {
width: 100%;
height: 450px;
outline: none;
}
.vjs-tech, .video-js button {
outline: none;
}
#app .el-table th.gutter {
display: table-cell !important
}
.filedialog .el-dialog {
min-height: 500px;
}
.video-js .vjs-big-play-button { /* 中间大的播放按钮 */
font-size: 2.5em;
line-height: 2.3em;
height: 2.5em;
width: 2.5em;
-webkit-border-radius: 2.5em;
-moz-border-radius: 2.5em;
border-radius: 2.5em;
background-color: rgba(115, 133, 159, .5);
border-width: 0.12em;
margin-top: -1.25em;
margin-left: -1.75em;
}
.video-js.vjs-paused .vjs-big-play-button { /* 视频暂停时显示播放按钮 */
display: block;
}
.video-js.vjs-error .vjs-big-play-button { /* 视频加载出错时隐藏播放按钮 */
display: none;
}
.vjs-loading-spinner { /* 加载圆圈 */
font-size: 2.5em;
width: 2em;
height: 2em;
border-radius: 1em;
margin-top: -1em;
margin-left: -1.5em;
}
.el-image {
margin-right: 10px;
}
.el-divider__text {
color: #abc5df;
}
.el-divider {
background-color: #e5edf6;
}
.view-myvideo-tab {
width: 100px;
height: 100px;
background-color: #C0C4CC;
text-align: center;
cursor: pointer;
}
.video-toggle-i:hover .el-icon-video-camera-solid {
display: none;
}
.video-toggle-i:hover .el-icon-video-play {
display: inline-block;
}
.view-myvideo-tab .el-icon-video-camera-solid, .view-myvideo-tab .el-icon-video-play, .view-myvideo-tab .el-icon-document {
color: #000000;
line-height: 80px;
font-size: 40px;
}
.view-myvideo-tab .el-icon-download {
width: 100px;
}
.el-icon-video-play {
display: none;
}
.ckdialogclass .el-dialog__body {
padding-top: 10px;
}
.el-icon-download {
color: white;
}
.file-down-span {
background: black;
opacity: 0.5;
z-index: 1000;
width: 100px;
text-align: center;
/*position: absolute;*/
position: relative;
bottom: -100px;
cursor: pointer;
}
.file-down-span:hover {
opacity: 0.9;
}
.ckdialogclass .el-icon-circle-close {
color: white;
}
.el-image-viewer__wrapper {
z-index: 99999 !important;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<el-row type="flex" :gutter="20">
<el-col :span="22">
<el-row type="flex" :gutter="20">
<el-col :span="6">
<!-- <el-cascader placeholder="请选择活动主题"-->
<!-- v-model="pageForm.hdids" :options="hdxxlist" @change="hdchange"-->
<!-- clearable></el-cascader>-->
<el-date-picker v-model="pageForm.year"
placeholder="年度"
type="year"
@change="yearChange"
value-format="yyyy"></el-date-picker>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.hdid" @change="hdchange" clearable
placeholder="请选择活动主题">
<el-option v-for="i in hdxxlist"
:key="i.value"
:label="i.label"
:value="i.value"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.hdlb" placeholder="请选择活动类别" clearable
@change="hdlbchange">
<el-option v-for="o in hdlblist" :label="o.lname"
:value="o.lid"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select v-model="pageForm.zplb" placeholder="请选择作品类型" clearable>
<el-option v-for="o in hdzplblist" :label="o.zname"
:value="o.zid"></el-option>
</el-select>
</el-col>
</el-row>
<el-row type="flex" :gutter="20" class="mt20">
<el-col :span="6">
<el-input placeholder="请输入内容" v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch"
clearable>
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 120px;"
clearable>
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工资号" value="u.loginname"></el-option>
</el-select>
</el-input>
</el-col>
<el-col :span="6" v-if="hasSuperAdminOrXghRole">
<el-select placeholder="所属工会" v-model="pageForm.union"
clearable="true"
filterable="true" @change="unionChange">
<el-option v-for="item in unions" :label="item.unionname"
:value="item.id"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select placeholder="所属单位" v-model="pageForm.unit"
style="width: 200px;"
clearable="true"
filterable="true">
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-col>
<el-col :span="6">
<el-select placeholder="审核状态" v-model="pageForm.stateId"
style="width: 200px;"
clearable
filterable>
<el-option v-for="item in auditStateList"
:label="item.stateName"
:value="item.stateId"></el-option>
</el-select>
</el-col>
</el-row>
</el-col>
<el-col :span="2">
<div class="">
<el-button type="primary" icon="el-icon-search"
@click="doSearch"></el-button>
</div>
</el-col>
</el-row>
</el-card>
<el-card shadow="never" class="mt20">
<vi-title2 title="作品列表">
<template #func>
<el-button size="small" @click="exportExcel" type="primary">
<i class="el-icon-tickets"></i>
导出Excel
</el-button>
<el-button size="small" @click="exportWork" type="primary">
<i class="el-icon-tickets"></i>
导出作品
</el-button>
</template>
</vi-title2>
<el-table :data="tableData" @sort-change="pageOrder">
<el-table-column label="序号" type="index" header-align="center" align="center"
width="50">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<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"></el-table-column>
<el-table-column prop="dwname" label="单位" header-align="center" align="center"
sortable
show-overflow-tooltip></el-table-column>
<el-table-column prop="ghname" label="分工会" header-align="center" align="center"
sortable
show-overflow-tooltip></el-table-column>
<el-table-column prop="hdname" label="活动主题" header-align="center"
align="center"></el-table-column>
<el-table-column prop="hdlbname" label="活动类别" header-align="center"
align="center"
sortable></el-table-column>
<el-table-column prop="zplbname" label="作品类别" header-align="center"
align="center"
sortable></el-table-column>
<el-table-column prop="hdsbsj" label="上传时间" header-align="center"
align="center">
</el-table-column>
<el-table-column align="center" prop="auditState" header-align="center"
label="审核状态" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.statename}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="200">
<template slot-scope="scope">
<el-button @click="viewInfo(scope)" size="mini" type="primary">查看
</el-button>
<el-button @click="doDelete(scope.row.id)" size="mini" type="danger">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<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, jumper"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #view>
<info ref="info" @playvideo="playvideo"></info>
</template>
</guava>
<el-dialog :visible.sync="fileDialogVisible" class="filedialog" @close="filedialogClose"
:close-on-click-modal="false">
<div id="videoContainer"></div>
</el-dialog>
</div>
<script>
window.vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data: function () {
return {
units: [],
unions: [],
hasSuperAdminOrXghRole: "${@shiro.hasAnyRoles('sysadmin','A06','H10')}" === 'true' ? true : false,
audio: {
name: '东西(Cover:林俊呈)',
artist: '纳豆',
url: 'https://cdn.moefe.org/music/mp3/thing.mp3',
cover: 'https://p1.music.126.net/5zs7IvmLv7KahY3BFzUmrg==/109951163635241613.jpg?param=300y300', // prettier-ignore
lrc: 'https://cdn.moefe.org/music/lrc/thing.lrc',
},
tableData: [],
pageForm: {
year: new Date().getFullYear() + '',
searchName: "u.username",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
hdid: '',
hdlb: '',
zplb: '',
stateId: '',
unit: '',
union: '',
},
hdxxlist: [],
videoSrc: '',
viewDialogVisible: false,
fileDialogVisible: false,
imgSrc: '',
fileList: [],
viewData: {},
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
doctype: ['doc', 'docx'],
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
prevImgList: [],
img2List: [],
videoList: [],
docList: [],
audioList: [],
ckusername: '',//当前查看的人的姓名 下载的时候一起传过去,
hdlblist: [],
hdzplblist: [],
yearActivityList: [],
auditStateList: [],
}
},
watch: {
'pageForm.hdid'(val) {
this.$set(this.pageForm, "hdlb", '')
this.$set(this.pageForm, "zplb", '')
},
'pageForm.hdlb'(val) {
this.$set(this.pageForm, "zplb", '')
}
},
components: {
'info': httpVueLoader('/components/hd/hdwmInfo.vue'),
},
methods: {
yearChange(val) {
let activityList = []
if (val === null) {
this.yearActivityList.map(v => {
activityList = activityList.concat(v.children)
})
} else {
let enen = this.yearActivityList.filter(v => v.value == val)
enen.map(v => {
activityList = activityList.concat(v.children)
})
}
this.hdxxlist = activityList
this.$set(this.pageForm, "hdid", '')
this.$set(this.pageForm, "hdlb", '')
this.$set(this.pageForm, "zplb", '')
},
async unionChange() {
this.$set(this.pageForm, "unit", '')
this.units = await getUnits(this.pageForm.union)
},
hdchange(v) {
this.$set(this.pageForm, 'hdlb', '');
this.$set(this.pageForm, 'zplb', '');
$.post('/platform/hd/childhd/zpxx/gethdlblist', {id: v}).then(data => {
if (data.code == 0) {
this.hdlblist = data.data;
}
});
},
hdlbchange(id) {
this.$set(this.pageForm, 'zplb', '');
$.post('/platform/hd/childhd/zpxx/gethdzplblist', {id: id}).then(data => {
if (data.code == 0) {
this.hdzplblist = data.data;
}
});
},
async pageData() {
var self = this;
sublime.showLoadingbar();
$.post(base + '/platform/hd/wmhd/pageData', self.pageForm, function (data) {
sublime.closeLoadingbar();
if (data.code == 0) {
self.tableData = data.data.list;
self.pageForm.totalCount = data.data.totalCount;
}
});
},
pageSizeChange: function (val) {
this.pageForm.pageSize = val;
this.pageData();
},
pageNumberChange: function (val) {
this.pageForm.pageNumber = val;
this.pageData();
},
async viewInfo(scope) {
this.$refs.info.getInfo(scope.row.id)
this.$refs.guava.view()
},
playvideo: function (fjurl) {
var self = this;
self.fileDialogVisible = true;
self.$nextTick(function () {
var vc = document.getElementById('videoContainer');
var newVideo = document.createElement("div");//创建一个标签
newVideo.innerHTML = '<video id="my-video" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto"></video>';
vc.appendChild(newVideo);
var option = {autoplay: false, language: 'zh-CN'};
var myPlayer = videojs('my-video', option, function onPlayerReady() {
var myPlayer = this;
myPlayer.src({src: fjurl, type: "video/mp4"}); /*videojs.log("播放器已经准备好了!");*/
//this.play();
});
})
},
filedialogClose: function () {
//关闭的时候需要销毁video 但是随之dom元素也会被删除!!!!
videojs('my-video').dispose();
},
viewdialogClose: function () {
//停止播放音频
var audio = document.getElementById('amusic');
if (audio != null) {
document.getElementById('amusic').pause();
}
},
exportWork() {
let {hdid, hdlb, zplb, union, unit, stateId} = this.pageForm;
if (hdid === '') {
this.$message.warning('请先选择活动主题');
return;
}
let hdarr = this.hdxxlist.filter(o => {
return o.value == hdid;
});
let hdname = hdarr[0].label;
window.open('/platform/hd/wmhd/exportWork?hdid=' + hdid +
'&hdname=' + hdname +
"&hdlb=" + hdlb +
"&zplb=" + zplb +
"&union=" + union +
"&unit=" + unit +
"&stateId=" + stateId);
},
exportExcel: function () {
let {hdid, hdlb, zplb, union, unit, stateId} = this.pageForm;
if (hdid === '') {
this.$message.warning('请先选择活动主题');
return;
}
let hdarr = this.hdxxlist.filter(o => {
return o.value == hdid;
});
let hdname = hdarr[0].label;
window.open('/platform/hd/wmhd/exportExcel?hdid=' + hdid +
'&hdname=' + hdname +
"&hdlb=" + hdlb +
"&zplb=" + zplb +
"&union=" + union +
"&unit=" + unit +
"&stateId=" + stateId);
},
doSearch: function () {
this.pageForm.pageNumber = 1;
this.pageData();
},
downLoad: function (item) {
window.open('/platform/hd/wmhd/download?filepath=' + item.fjurl + '&filename=' + item.fjname + "&username=" + this.ckusername);
//window.location.href='/platform/hd/wmhd/download?filepath='+item.fjurl+'&filename='+item.fjname+"&username="+this.ckusername;
},
YlDoc: function (item) {
var self = this;
window.open('/platform/hd/wmhd/YlDoc?fjurl=' + item.fjurl);
},
async initHdxxlist() {
// await $.post(base + '/platform/hd/wmhd/initHdxxlist').then(data => {
// if (data.code == 0) {
// this.hdxxlist = data.data;
// this.pageForm.hdids = [new Date().getFullYear(), this.hdxxlist.find(v => v.value == new Date().getFullYear() + "").children[0].value]
// this.pageForm.hdid = this.hdxxlist.find(v => v.value == new Date().getFullYear() + "").children[0].value
// }
// });
await $.post(base + '/platform/hd/wmhd/initHdxxlist').then(data => {
if (data.code == 0) {
this.yearActivityList = data.data
let activityList = []
data.data.map(v => {
activityList = activityList.concat(v.children)
})
this.hdxxlist = activityList
}
});
},
async doDelete(id) {
const confirm = await this.$confirm('确定要删除吗, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm) {
const resp = await $.post(loc() + '/doDelete', {id: id})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
} else {
this.notifyError(resp.msg)
}
}
},
async getAuditStateByModule() {
const {data} = await $.post(loc() + '/getAuditStateByModule')
this.auditStateList = data
}
},
async created() {
await this.initHdxxlist();
if (this.hdxxlist && this.hdxxlist.length > 0) {
this.pageForm.hdid = this.hdxxlist[0].value
this.hdchange(this.pageForm.hdid)
}
await this.pageData();
this.unions = await getUnions(null)
this.units = await getUnits(null)
await this.getAuditStateByModule()
}
})
</script>
<!--#
}
#-->