Merge remote-tracking branch 'origin/main'

This commit is contained in:
2024-09-01 10:17:23 +08:00
49 changed files with 2913 additions and 1128 deletions
+10 -3
View File
@@ -9,15 +9,15 @@
/>
<van-number-keyboard safe-area-inset-bottom/>
<title></title>
<link rel="stylesheet" href="https://cdn.staticfile.org/vant/2.12.5/index.min.css"/>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/index.min.css"/>
<link rel="stylesheet" href="${base!}/assets/mobile/css/theme.css">
<link rel="stylesheet" href="${base!}/assets/mobile/css/main.css">
<script src="${base!}/assets/platform/plugins/vue/vue.min.js"></script>
<script src="https://cdn.staticfile.org/vant/2.12.5/vant.min.js"></script>
<script src="${base!}/assets/platform/plugins/vant/vant.min.js"></script>
<script src="${base!}/assets/platform/plugins/vue-loader/httpVueLoader.js"></script>
<script src="${base!}/assets/mobile/js/basic.js"></script>
<script src="${base!}/assets/mobile/js/basic.js?v=0.0.1"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery-1.11.1.min.js"></script>
@@ -48,6 +48,13 @@
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=6ab3452804ba35050880b5e047436853&plugin=AMap.PolyEditor,AMap.Geolocation"></script>
<script src="https://cdn-go.cn/cdn/vod-js-sdk-v6/latest/vod-js-sdk-v6.js"></script>
<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/tcplayer.min.css" rel="stylesheet"/>
<!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.vx.x.x.min.js 之前引入 hls.min.x.xx.xm.js。-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/libs/hls.min.0.13.2m.js"></script>
<!--播放器脚本文件-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/tcplayer.v4.3.0.min.js"></script>
</head>
<body>
@@ -19,12 +19,12 @@ layout("/mobile/platform.html"){
</style>
<script src="https://cdn-go.cn/cdn/vod-js-sdk-v6/latest/vod-js-sdk-v6.js"></script>
<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/tcplayer.min.css" rel="stylesheet"/>
<!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.vx.x.x.min.js 之前引入 hls.min.x.xx.xm.js。-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/libs/hls.min.0.13.2m.js"></script>
<!--播放器脚本文件-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/tcplayer.v4.3.0.min.js"></script>
<!--<script src="/assets/platform/plugins/vod/vod-js-sdk-v6.js"></script>-->
<!--<link href="/assets/platform/plugins/vod/tcplayer.min.css"/>-->
<!--<script src="/assets/platform/plugins/vod/hls.min.0.13.2m.js"></script>-->
<!--<script src="/assets/platform/plugins/vod/tcplayer.v4.3.0.min.js"></script>-->
<style>
#app {
@@ -33,6 +33,7 @@ layout("/mobile/platform.html"){
.video-container {
height: 300px;
position: relative;
}
#player-container-id {
@@ -75,7 +76,7 @@ layout("/mobile/platform.html"){
word-break: break-all;
}
.myWatchRecord{
.myWatchRecord {
font-size: 14px;
}
@@ -92,19 +93,66 @@ layout("/mobile/platform.html"){
></van-nav-bar>
<div class="video-container">
<video v-if="isPlay" id="player-container-id" preload="auto" playsinline
<video id="player-container-id" preload="auto"
autoplay
playsinline
webkit-playsinline>
</video>
<van-image
v-else
style="width: 100%;height: 100%"
:src="FILE_DOMAIN+'/fileStreamPreview?id='+albumInfo.cover"
></van-image>
<!-- <div v-if="!isPlay" style=" height: 100%;-->
<!-- background: #000;-->
<!-- position: absolute;-->
<!-- top: 0;-->
<!-- left: 0;-->
<!-- right: 0;-->
<!-- bottom: 0;">-->
<!-- <van-image-->
<!-- style="width: 90%;-->
<!-- height: 100%;-->
<!-- z-index: 999;"-->
<!-- fit="contain"-->
<!-- :src="FILE_DOMAIN+'/fileStreamPreview?id='+albumInfo.cover"-->
<!-- ></van-image>-->
<!-- <div class="tcp-skin">-->
<!-- <div class="vjs-big-play-button">-->
<!-- <div class="vjs-button-icon">-->
<!-- <svg height="100%" width="100%" viewBox="0 0 484 348">-->
<!-- <path class="draw-fill" transform="translate(4 4)"-->
<!-- d="M383,124C350-42,122.3-40.5,90.6,123.5c-110.4,18.5-131,185,.6,216.5H381.6C519.7,310.7,494.1,137.8,383,124Z"></path>-->
<!-- <path transform="translate(4 4)"-->
<!-- d="M200.4,110.2c-9.4-5.8-19.6,2.7-19.4,11.7V256.2c0,8,10.4,16.7,19.4,10.8,2.2-1.4,111.8-65.9,114-67.3,7.4-4,10.1-15.8,0-22.2Z"-->
<!-- style="fill:#fff ;"></path>-->
<!-- </svg>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<van-tabs v-model="tabIndex" sticky>
<!-- <van-tab title="目录">-->
<!-- <div style="height: 5px;background-color: #f6f7f9"></div>-->
<!-- <van-cell-group class="video-list">-->
<!-- <van-cell v-for="(o,i) in videoList" :key="o.id" @click="playVideo(o)">-->
<!-- <template #title>-->
<!-- <van-tag plain type="primary" style="margin-right: 10px">视频</van-tag>-->
<!-- <span style="margin-right: 10px">-->
<!-- {{i+1}}.-->
<!-- </span>-->
<!-- <span>-->
<!-- {{o.title}}-->
<!-- </span>-->
<!-- </template>-->
<!-- <template #label>-->
<!-- &lt;!&ndash; {{getWatchStatus(o)}}&ndash;&gt;-->
<!-- </template>-->
<!-- <template>-->
<!-- </template>-->
<!-- </van-cell>-->
<!-- </van-cell-group>-->
<!-- </van-tab>-->
<van-tab title="介绍">
<div style="height: 5px;background-color: #f6f7f9"></div>
@@ -124,33 +172,10 @@ layout("/mobile/platform.html"){
</van-cell>
</van-tab>
<van-tab title="目录">
<div style="height: 5px;background-color: #f6f7f9"></div>
<van-cell-group class="video-list">
<van-cell v-for="(o,i) in videoList" :key="o.id" @click="playVideo(o)">
<template #title>
<van-tag plain type="primary" style="margin-right: 10px">视频</van-tag>
<span style="margin-right: 10px">
{{i+1}}.
</span>
<span>
{{o.title}}
</span>
</template>
<template #label>
<!-- {{getWatchStatus(o)}}-->
</template>
<template>
</template>
</van-cell>
</van-cell-group>
</van-tab>
<van-tab title="学习记录">
<div style="height: 5px;background-color: #f6f7f9"></div>
<van-cell-group class="video-list">
<van-cell v-for="(o,i) in videoList" :key="o.id" @click="playVideo(o)">
<van-cell v-for="(o,i) in videoList" :key="o.id">
<template #title>
<van-tag plain type="primary" style="margin-right: 10px">视频</van-tag>
<span style="margin-right: 10px">
@@ -161,19 +186,21 @@ layout("/mobile/platform.html"){
</span>
</template>
<template #label>
<div v-if="o.everyDayMaxWatchNum && o.everyDayMaxWatchNum>0" style="padding: 10px 0;color: #0a84ff;white-space: normal">
<div v-if="o.everyDayMaxWatchNum && o.everyDayMaxWatchNum>0"
style="padding: 10px 0;color: #0a84ff;white-space: normal">
本视频在活动结束时每天最多只会统计
<span style="color: #0a84ff;font-weight: bold">{{o.everyDayMaxWatchNum}}</span>
次完整观看记录,您可以无限制的观看。
</div>
<div v-for="(v,k) in Object.groupBy(watchRecordList,v=>v.watchTime)" :key="k" class="myWatchRecord">
<div v-for="(v,index) in groupBy(watchRecordList,v=>v.watchTime)" :key="index"
class="myWatchRecord">
<div style="display: flex;justify-content: space-between">
<div>
{{moment(k).format('YYYY年MM月DD日')}}
{{moment(v.key).format('YYYY年MM月DD日')}}
</div>
<div style="color: #000000;">
观看次数
<span style="font-weight: bold">{{v.length}}</span>
<span style="font-weight: bold">{{v.items && v.items.filter(v=>v.finish).length}}</span>
</div>
</div>
</div>
@@ -184,9 +211,9 @@ layout("/mobile/platform.html"){
</van-tab>
</van-tabs>
<div class="bottom-wrap" v-show="isPlay">
<van-button type="info" block @click="endLearn">上传学习记录</van-button>
</div>
<!-- <div class="bottom-wrap" v-show="isPlay">-->
<!-- <van-button type="info" block @click="endLearn">上传学习记录</van-button>-->
<!-- </div>-->
</div>
@@ -213,6 +240,8 @@ layout("/mobile/platform.html"){
player: null,
vvv: []
}
},
@@ -221,8 +250,8 @@ layout("/mobile/platform.html"){
methods: {
async getVideoInfo() {
const {data} = await $.get('/mobile/trainEducation/getVideoList', {albumId: this.albumId})
this.vvv = data
this.videoList = data
},
async getAlbumInfo() {
const {data} = await $.get('/mobile/trainEducation/getAlbumInfo', {id: this.albumId})
@@ -364,7 +393,7 @@ layout("/mobile/platform.html"){
if (resp.code === 0) {
this.$modal.msgSuccess('上传成功')
} else {
this.$modal.msgError('上传成功')
this.$modal.msgError('上传失败')
}
}).catch(err => {
console.log(err)
@@ -373,14 +402,19 @@ layout("/mobile/platform.html"){
}
},
created() {
async created() {
// this.watchPage()
const id = this.GetQueryString("id")
const id = GetQueryString("id")
if (id) {
this.albumId = id
this.getAlbumInfo()
this.getVideoInfo()
this.getMyWatchRecord()
await this.getAlbumInfo()
await this.getVideoInfo()
await this.getMyWatchRecord()
if (this.videoList && this.videoList.length > 0) {
this.playVideo(this.videoList[0])
} else {
this.$toast('暂无视频学习')
}
}
}
})
@@ -140,6 +140,14 @@ layout("/mobile/platform.html"){
this.pageData()
},
async toCommentator(o){
const start = new Date(o.startTime);
const end = new Date(o.endTime);
const now = new Date();
// 检查当前时间是否在 startTime 和 endTime 之间
return now >= start && now <= end;
//自评模式
if (o.reviewMode == 1 && !o.canJoin) {
vant.Dialog.alert({
@@ -158,7 +166,7 @@ layout("/mobile/platform.html"){
confirmButtonColor: '#1867b0'
})
return
}
}``
const resp = await $.get('/mobile/wakeshome/review/appraisal/isAssess',{id:o.id})
if (resp.data > 0){
@@ -265,12 +265,12 @@ layout("/layouts/platform.html"){
<el-table-column align="center" header-align="center" label="上传时间" prop="hdsbsj"
show-overflow-tooltip>
</el-table-column>
<el-table-column align="center" header-align="center" label="申请状态"
<!--<el-table-column align="center" header-align="center" label="申请状态"
prop="auditState" sortable>
<template scope="scope">
<span :style="'color:'+scope.row.statecolor">{{scope.row.statename}}</span>
</template>
</el-table-column>
</el-table-column>-->
<!-- <el-table-column align="center" header-align="center" label="总点赞数"
prop="dz_znum" sortable>
<template scope="scope">
@@ -721,9 +721,9 @@ layout("/layouts/platform.html"){
// this.getActivitybxAgenda();
this.getDifficultAgenda();
this.getCondolenceAgenda();
this.getTaAgenda();
// this.getTaAgenda();
this.getRxdjAgenda();
this.getMemberAgenda();
// this.getMemberAgenda();
this.getSyrAgenda();
this.getOfferAdviceAgenda()
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -46,8 +46,16 @@ layout("/layouts/platform.html"){
:prop="column.prop"
:sortable="column.sortable"
>
<template v-if="column.prop==='sumDuration'" scope="{row}">
{{(row.sumDuration / 60 / 60).toFixed(2) + 'h'}}
<!-- <template v-if="column.prop==='sumDuration'" scope="{row}">-->
<!-- {{(row.sumDuration / 60 / 60).toFixed(2) + 'h'}}-->
<!-- </template>-->
<template v-if="column.prop==='isQualified'" scope="{row}">
<span v-if="row.watchCount>=row.qualifiedNum" class="text-success">
是
</span>
<span v-else class="text-danger">
否
</span>
</template>
</el-table-column>
<!-- <el-table-column align="center" header-align="center" label="操作" width="200">-->
@@ -110,7 +118,8 @@ layout("/layouts/platform.html"){
{prop: 'unitname', label: '单位'},
{prop: 'unionname', label: '分工会'},
// {prop: 'studyDuration', label: '观看总时长'},
{prop: 'watchCount', label: '学习总次数'}
{prop: 'watchCount', label: '学习总次数'},
{prop: 'isQualified', label: '是否达标'},
],
viewTableColumns: [
{prop: 'username', label: '姓名'},
@@ -118,7 +127,7 @@ layout("/layouts/platform.html"){
{prop: 'unitname', label: '单位'},
{prop: 'unionname', label: '分工会'},
// {prop: 'studyDuration', label: '观看总时长'},
{prop: 'watchCount', label: '学习总次数'}
{prop: 'watchCount', label: '学习总次数'},
],
viewPageForm: {
pageNumber: 1,
@@ -140,6 +140,10 @@ layout("/layouts/platform.html"){
<el-input-number :min="1" :max="100" v-model="formData.everyDayMaxWatchNum"></el-input-number>
</el-form-item>
<el-form-item label="合格/达标次数" prop="qualifiedNum">
<el-input-number :min="1" :max="1000" v-model="formData.qualifiedNum"></el-input-number>
</el-form-item>
<el-form-item label="是否启用" prop="disabled">
<el-switch
v-model="formData.disabled"
@@ -187,7 +187,7 @@ layout("/layouts/platform.html"){
</span>
</el-dialog>
<el-dialog title="资料阅览" :visible.sync="viewDialogVisible">
<el-dialog title="资料阅览" :visible.sync="viewDialogVisible" :modal-append-to-body="false">
<el-descriptions class="margin-top" title="" :column="2" border>
<el-descriptions-item span="2">
<template slot="label">资料名称</template>
@@ -68,6 +68,10 @@ layout("/layouts/platform.html"){
<el-form-item class="is-required" label="基层工会简况"
prop="basicInformation">
<text-editor v-model="formData.basicInformation"></text-editor>
<div style="text-align: right">
<span style="color: #0a84ff">当前字数:{{ formData.basicInformation ? (dd3s.html2txt(formData.basicInformation).length) : 0 }}</span>
<span>{{ ';最多500字' }}</span>
</div>
<!-- <el-input type="textarea" v-model="formData.basicInformation" maxlength="500" show-word-limit :rows="10"></el-input>-->
</el-form-item>
</el-col>
@@ -193,11 +193,11 @@ layout("/layouts/platform.html"){
<el-col :lg="24" :sm="24">
<el-form-item required label="附件上传" prop="files">
<file-upload :files.sync="formData.files" card :max="10"
:type="['doc','docx','xls','xlsx','pdf','ppt','mp4', 'jpg', 'png', 'jpeg']">
:type="['doc','docx','xls','xlsx','pdf','ppt', 'jpg', 'png', 'jpeg']">
<template #el-upload__tip>
</template>
</file-upload>
<div class="el-upload__tip">可上传照片、视频、文档等资料,视频只能上传MP4格式</div>
<div class="el-upload__tip">可上传照片、文档等资料</div>
</el-form-item>
</el-col>
</el-row>
@@ -248,7 +248,7 @@ layout("/layouts/platform.html"){
if (resp.code === 0) {
this.notifySuccess(resp.msg)
setTimeout(() => {
sublime.jumpPagePjax('/platform/wakeshome/declaration/mine')
sublime.jumpPagePjax('/platform/wakeshome/info/mine')
}, 500)
} else {
this.notifyWarning(resp.msg)
@@ -270,7 +270,7 @@ layout("/layouts/platform.html"){
if (resp.code === 0) {
this.notifySuccess(resp.msg)
setTimeout(() => {
sublime.jumpPagePjax('/platform/wakeshome/declaration/mine')
sublime.jumpPagePjax('/platform/wakeshome/info/mine')
}, 500)
} else {
this.notifyWarning(resp.msg)
@@ -296,7 +296,7 @@ layout("/layouts/platform.html"){
this.$set(this.formData, 'applyTime', moment().format('YYYY-MM-DD'))
this.$set(this.formData, 'unionName', "${@shiro.getPrincipalProperty('union').getUnionname()}")
} else {
const resp = await $.get('/platform/wakeshome/declaration/mine/getInfoById',{id:this.id})
const resp = await $.get('/platform/wakeshome/info/mine/getInfoById',{id:this.id})
if (resp.code === 0){
this.formData = {...resp.data}
}
@@ -70,7 +70,7 @@ layout("/layouts/platform.html"){
</el-button>
<el-button @click="openEdit(row)"
size="mini" type="primary"
v-if="[8100].includes(row.state) || !row.state">编辑
v-if="[8100,8125].includes(row.state) || !row.state">编辑
</el-button>
<el-button @click="doDelete(row)"
size="mini" type="danger"
@@ -143,7 +143,7 @@ layout("/layouts/platform.html"){
},
openEdit(row) {
sublime.jumpPagePjax('/platform/wakeshome/declaration/apply?id=' + row.id)
sublime.jumpPagePjax('/platform/wakeshome/info/apply?id=' + row.id)
},
async flushUnits() {
this.$set(this.pageForm, "unitId", null)
@@ -70,7 +70,7 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="150px">
<template scope="{row}">
<el-button @click="openView(row)" v-if="![8120].includes(row.state) && row.state" size="mini" type="primary">查看</el-button>
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button @click="openAudit(row)" v-if="[8120].includes(row.state) || !row.state" size="mini" type="primary">审核</el-button>
<el-button @click="doRollBack(row.id)" v-if="[8125,8130].includes(row.state) || !row.state" size="mini" type="danger">撤回</el-button>
</template>
@@ -164,7 +164,7 @@ layout("/layouts/platform.html"){
align="center">
<template scope="{row}">
<el-input v-model="row.inspection"
readonly></el-input>
readonly type="textarea" rows="2"></el-input>
</template>
</el-table-column>
@@ -396,12 +396,15 @@ layout("/layouts/platform.html"){
if (!this.formData.reviewResult) {
await this.createdReviewResult()
}
this.formData.bzList = JSON.stringify(this.formData.bzList)
const resp = await $.post('/mobile/wakeshome/review/appraisal/doSubmit',this.formData)
if (resp.code === 0) {
this.$message.success('提交成功')
this.$refs.guava.index()
this.formData = {}
this.pageData()
} else {
this.$message.warning(resp.msg)
}
})
@@ -437,8 +440,6 @@ layout("/layouts/platform.html"){
this.formData.evaluatedPersonName = user.username
this.formData.evaluatedPersonType = user.evaluatedPersonType
}
this.formData.bzList = JSON.stringify(this.formData.bzList)
},
},
async created() {
@@ -88,7 +88,6 @@ layout("/layouts/platform.html"){
</template>
<template #view>
<union-comment-zb :data="viewData" :is_view="true"></union-comment-zb>
</template>
</guava>
@@ -81,8 +81,12 @@ layout("/layouts/platform.html"){
width="240px" fixed="right">
<template scope="{row}">
<el-button size="mini" @click="openView(row)">查看</el-button>
<el-tooltip :content="canDownload ? ('导出【'+ row.unionName +'】管理员自我评议的评议结果') : ('导出【'+ row.unionName +'】下所有评议结果的压缩包') " placement="top">
<el-button v-if="canDownload" size="mini" type="primary" @click="doDownLoad(row,canDownload)">导出</el-button>
<el-tooltip
:content="canDownload ? ('导出【'+ row.unionName +'】管理员自我评议的评议结果') : ('导出【'+ row.unionName +'】下所有评议结果的压缩包') "
placement="top">
<el-button v-if="canDownload" size="mini" type="primary"
@click="doDownLoad(row,canDownload)">导出
</el-button>
</el-tooltip>
<el-button size="mini" type="primary" @click="downloadFilesByUnion(row)">导出附件</el-button>
</template>
@@ -155,9 +159,10 @@ layout("/layouts/platform.html"){
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="240px" fixed="right">
<template scope="{row}">
<el-button plain size="mini" @click="openUserView(row)">查看</el-button>
<el-button plain size="mini" type="primary" @click="downloadByPeoId(row)">导出</el-button>
<el-button plain size="mini" type="primary" @click="downloadFilesByPeoId(row)">导出附件</el-button>
<el-button size="mini" @click="openUserView(row)">查看</el-button>
<el-button size="mini" type="primary" @click="downloadByPeoId(row)">导出</el-button>
<el-button size="mini" type="primary" @click="downloadFilesByPeoId(row)">导出附件
</el-button>
</template>
</el-table-column>
</el-table>
@@ -237,7 +242,7 @@ layout("/layouts/platform.html"){
'wakes-home-review': httpVueLoader('/components/wakeshome/review/ReviewResult.vue?v=' + moment(new Date()).unix()),
},
methods: {
doDownLoad(row,flag){
doDownLoad(row, flag) {
if (flag) {
// 为true,自我评议
window.open(loc() + '/doDownLoadSingleByUnionId?zbId=' + this.pageForm.zbId + '&unionId=' + row.id)
@@ -246,15 +251,37 @@ layout("/layouts/platform.html"){
window.open(loc() + '/doDownLoadZipByUnionId?zbId=' + this.pageForm.zbId + '&unionId=' + row.id)
}
},
downloadFilesByUnion(row){
downloadFilesByUnion(row) {
const result = this.validateHasFiles({unionId: row.id, zbId: this.pageForm.zbId})
if (!result) {
return
}
window.open(loc() + '/exportFilesByUnionId?zbId=' + this.pageForm.zbId + '&unionId=' + row.id)
},
downloadByPeoId(row){
downloadByPeoId(row) {
window.open(loc() + '/exportByPeoId?peoId=' + row.id)
},
downloadFilesByPeoId(){
downloadFilesByPeoId(row) {
const result = this.validateHasFiles({peoId: row.id})
if (!result) {
return
}
window.open(loc() + '/exportFilesByPeoId?peoId=' + row.id)
},
validateHasFiles(data) {
$.post('/platform/wakeshome/review/statistics/validateHasFiles', {
peoId: data.peoId ? data.peoId : '',
zbId: data.zbId ? data.zbId : '',
unionId: data.unionId ? data.unionId : ''
}).then(res => {
if (res.code === 0) {
return true
} else {
this.$message.warning("未上传附件,无法导出")
return false
}
})
},
async getReviewResultNum(row) {
const res = await $.post(loc() + "/getReviewResultNum", {
zbId: this.userPageForm.zbId,
@@ -318,8 +345,8 @@ layout("/layouts/platform.html"){
},
computed: {
canDownload() {
const data = this.zbList.find(v=> v.id === this.pageForm.zbId)
return data.commentTarget===3 && data.unionIds && data.unionIds.length > 0
const data = this.zbList.find(v => v.id === this.pageForm.zbId)
return data.commentTarget === 3 && data.unionIds && data.unionIds.length > 0
}
},
async created() {