Merge branch 'main' of https://dd3skj.picp.vip/zhaoxinyu/zhgh_hhu
This commit is contained in:
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 64 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 21 KiB |
@@ -48,8 +48,8 @@ const getDbt = async (jdhId) => {
|
||||
* 获取院级工会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnions = async (delegationId) => {
|
||||
const {data} = await $.get("/platform/vi/common/unions", {delegationId})
|
||||
const getUnions = async (delegationId = null, isPermission = false) => {
|
||||
const {data} = await $.get("/platform/vi/common/unions", {delegationId, isPermission})
|
||||
return data
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,10 @@ const FILE_PREVIEW_ADDRESS = '/file_server/preview'
|
||||
const FILE_DOWNLOAD_ADDRESS = '/file_server/download'
|
||||
const FILE_STREAM_PREVIEW_ADDRESS = '/file_server/fileStreamPreview'
|
||||
|
||||
const CREATE_PREVIEW_URL = (val) => {
|
||||
return FILE_STREAM_PREVIEW_ADDRESS + "?id=" + val
|
||||
}
|
||||
|
||||
|
||||
const preview = async (filename, id) => {
|
||||
const suffix = filename.substring(filename.lastIndexOf('.') + 1)
|
||||
@@ -1955,4 +1959,4 @@ const loc = () => {
|
||||
|
||||
const clone = (obj) => {
|
||||
return JSON.parse(JSON.stringify(obj))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,48 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时间">
|
||||
{{ viewData.activity_time }}
|
||||
<el-form-item label="联系方式">
|
||||
{{ viewData.mobile }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动主体类型">
|
||||
{{
|
||||
viewData.activity_type === 40002 ? "分工会活动" : viewData.activity_type === 40003 ?
|
||||
"协会(社团)活动" :
|
||||
"校工会活动"
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动名称">
|
||||
{{ viewData.activity_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动项目类型">
|
||||
{{ viewData.absName }}({{ viewData.projectTypeCode }})
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申报(承办)单位">
|
||||
{{ viewData.fundsUnitName }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动计划时间">
|
||||
{{ viewData.startPlannedDate }}-{{ viewData.endPlannedDate }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动地址">
|
||||
{{ viewData.venue }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -31,28 +71,22 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销金额">
|
||||
{{ viewData.activity_money }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报销卡号">
|
||||
{{ viewData.activity_card_number }}
|
||||
<el-form-item label="申报金额">
|
||||
{{ viewData.funds_money }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动地点">
|
||||
{{ viewData.venue }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备  注">
|
||||
<el-form-item label="活动方案">
|
||||
<div style="word-break: break-all" v-html="viewData.activity_content"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动安排">
|
||||
<div style="word-break: break-all" v-html="viewData.activity_arrange"></div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
@@ -66,84 +100,74 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="物品名称" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="物品价格" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
|
||||
type="text"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="预算费用" align="center"
|
||||
header-align="center"></el-table-column>
|
||||
<!-- <el-table-column prop="actualPrice" label="实际费用" align="center"
|
||||
header-align="center"></el-table-column>-->
|
||||
</el-table>
|
||||
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.us_s"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.us_s"
|
||||
fit="contain"></el-image>
|
||||
<el-form-item label="成果附件">
|
||||
<file-upload v-if="viewData.resultsFiles&&viewData.resultsFiles.length"
|
||||
:files="viewData.resultsFiles"
|
||||
:view="true" style="height: 300px"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附  件">
|
||||
<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-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附  件">
|
||||
<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>
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="附件" name="100">
|
||||
<el-form label-position="top">
|
||||
<!– <el-form-item label="活动资料" v-if="viewData.activity_id">
|
||||
<span v-if="!Object.keys(viewData.activity_files).length">暂无</span>
|
||||
<div class="block">
|
||||
<el-timeline>
|
||||
<el-timeline-item v-for="(v,k) in viewData.activity_files" :timestamp="k" placement="top"
|
||||
icon="el-icon-more"
|
||||
type="primary">
|
||||
<el-card v-for="file in v" style="margin-bottom: 20px;position: relative">
|
||||
<!-- <el-tab-pane label="附件" name="100">
|
||||
<el-form label-position="top">
|
||||
<!– <el-form-item label="活动资料" v-if="viewData.activity_id">
|
||||
<span v-if="!Object.keys(viewData.activity_files).length">暂无</span>
|
||||
<div class="block">
|
||||
<el-timeline>
|
||||
<el-timeline-item v-for="(v,k) in viewData.activity_files" :timestamp="k" placement="top"
|
||||
icon="el-icon-more"
|
||||
type="primary">
|
||||
<el-card v-for="file in v" style="margin-bottom: 20px;position: relative">
|
||||
|
||||
<div style="display: flex;flex-direction:row;">
|
||||
<h4>{{ file.name }} </h4>
|
||||
<h4><span style="font-size: 14px;color: rgb(200,200,200)">{{ file.type }}</span></h4>
|
||||
</div>
|
||||
<div style="display: flex;flex-direction:row;">
|
||||
<h4>{{ file.name }} </h4>
|
||||
<h4><span style="font-size: 14px;color: rgb(200,200,200)">{{ file.type }}</span></h4>
|
||||
</div>
|
||||
|
||||
<div style="margin: 20px 0">
|
||||
<file-upload :files="file.files"
|
||||
:view="true"></file-upload>
|
||||
</div>
|
||||
<div style="margin: 20px 0">
|
||||
<file-upload :files="file.files"
|
||||
:view="true"></file-upload>
|
||||
</div>
|
||||
|
||||
<div style="text-align: right" class="text-primary">{{ file.user_name }}</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</div>
|
||||
</el-form-item>–>
|
||||
<div style="text-align: right" class="text-primary">{{ file.user_name }}</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</div>
|
||||
</el-form-item>–>
|
||||
|
||||
<el-form-item label="附  件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="附  件">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>-->
|
||||
</el-form>
|
||||
</el-tab-pane>-->
|
||||
<el-tab-pane label="院级工会主席审核信息" name="2" v-if="hasPane(2)&&viewData.division_chairman_name">
|
||||
<el-form label-width="130px" style="padding: 20px 0">
|
||||
|
||||
@@ -196,7 +220,10 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.accounting_idea ? viewData.accounting_idea : '暂无' }}</div>
|
||||
<div class="textarea-div">{{
|
||||
viewData.accounting_idea ? viewData.accounting_idea : '暂无'
|
||||
}}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.a_s"
|
||||
@@ -226,7 +253,9 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.confirm_trade_idea ? viewData.confirm_trade_idea : '暂无' }}</div>
|
||||
<div class="textarea-div">
|
||||
{{ viewData.confirm_trade_idea ? viewData.confirm_trade_idea : '暂无' }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ct_s"
|
||||
@@ -256,7 +285,9 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.union_chairman_idea ? viewData.union_chairman_idea : '暂无' }}</div>
|
||||
<div class="textarea-div">
|
||||
{{ viewData.union_chairman_idea ? viewData.union_chairman_idea : '暂无' }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.ucc_s"
|
||||
@@ -286,7 +317,9 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见:">
|
||||
<div class="textarea-div">{{ viewData.union_chairman_idea ? viewData.union_chairman_idea : '暂无' }}</div>
|
||||
<div class="textarea-div">
|
||||
{{ viewData.union_chairman_idea ? viewData.union_chairman_idea : '暂无' }}
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字:">
|
||||
<el-image v-if="viewData.uc_s"
|
||||
@@ -345,11 +378,10 @@ module.exports = {
|
||||
const {data, code, msg} = await $.get("/platform/jf/activity_bx/reimbursement/findOne", {id})
|
||||
this.loading = false
|
||||
if (data) {
|
||||
this.viewData.files = []
|
||||
console.log(data)
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.viewData = data
|
||||
this.viewData.files = JSON.parse(data.files)
|
||||
this.viewData.resultsFiles = JSON.parse(data.resultsFiles)
|
||||
this.viewData.goods = data.goods
|
||||
|
||||
} else {
|
||||
@@ -374,4 +406,4 @@ module.exports = {
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,481 @@
|
||||
<template>
|
||||
|
||||
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="申请信息" name="1">
|
||||
<table style="width: 100%">
|
||||
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">姓名</td>
|
||||
<td class="tpb">{{ viewData.username }}</td>
|
||||
<td class="tpa">工号</td>
|
||||
<td class="tpb">{{ viewData.loginname }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">单位</td>
|
||||
<td class="tpb">{{ viewData.dwname }}</td>
|
||||
<td class="tpa">工会</td>
|
||||
<td class="tpb">{{ viewData.ghname }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">活动类别</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.hdlbname }}</span>
|
||||
</td>
|
||||
<template v-if="viewData.zplbname">
|
||||
<td class="tpa">类别</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.zplbname }}</span>
|
||||
</td>
|
||||
</template>
|
||||
<template v-else>
|
||||
<td class="tpa">健步走步数</td>
|
||||
<td class="tpb">
|
||||
<span>{{ viewData.step_count }}</span>
|
||||
</td>
|
||||
</template>
|
||||
</tr>
|
||||
<!-- <tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">作品主题</td>
|
||||
<td class="tpb" colspan="3">{{viewData.hdsbzpzt}}</td>
|
||||
</tr>-->
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">标题</td>
|
||||
<td class="tpb" colspan="3">{{ viewData.zpmc }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);">
|
||||
<td class="tpa">创作说明</td>
|
||||
<td class="tpb" colspan="3">{{ viewData.hdsbzpms }}</td>
|
||||
</tr>
|
||||
<tr style="border: 1px solid rgb(220,220,220);" v-if="viewData.isUploadPhoto||viewData.isUploadOther">
|
||||
<td class="tpa">作品信息</td>
|
||||
<td class="tpb" colspan="3">
|
||||
<el-row v-if="viewData.isUploadPhoto">
|
||||
<el-divider>照片 <i class="el-icon-picture-outline"></i></el-divider>
|
||||
<file-upload view :files="img2List"></file-upload>
|
||||
</el-row>
|
||||
<!-- <div v-if="viewData.isUploadOther">
|
||||
<el-row>
|
||||
<el-divider>视频 <i class="el-icon-video-camera"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="videoList.length>0">
|
||||
<div v-for="item in videoList">
|
||||
<el-tooltip class="item" effect="dark" placement="right-start">
|
||||
<div slot="content">{{ item.fjname }}</div>
|
||||
<div class="view-myvideo-tab">
|
||||
<div class="video-toggle-i"
|
||||
@click="playVideo1(APP_DOMAIN + '/file_server/fileStreamPreview?id=' + item.id)">
|
||||
<i class="el-icon-video-camera-solid"></i>
|
||||
<i class="el-icon-video-play"></i>
|
||||
</div>
|
||||
|
||||
<span class="file-down-span"
|
||||
style="bottom: 0;height: 20px;display: inline-block;"
|
||||
@click="APP_DOMAIN+'/file_server/download?filepath=' + item.filepath + '&filename=' + item.filename">
|
||||
<i class="el-icon-download"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有视频。
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-divider>音频 <i class="el-icon-video-camera"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="audioList.length>0">
|
||||
<div v-for="item in audioList">
|
||||
<audio id="amusic" preload="auto" controls style="width: 100%;outline: none;">
|
||||
<!– <source :src="'${AppFileDomain!}'+item.filepath"/>–>
|
||||
<source :src="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + item.id"/>
|
||||
</audio>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有音频。
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-divider>文档 <i class="el-icon-document-copy"></i></el-divider>
|
||||
<div style="text-align: left;" v-if="docList.length>0">
|
||||
<!– <div v-for="item in docList">
|
||||
<el-tooltip class="item" effect="dark" placement="right-start">
|
||||
<div slot="content">{{ item.fjname }}</div>
|
||||
<div class="view-myvideo-tab" style="background-color: #f6f6f6">
|
||||
<div class="video-toggle-i" @click="dd3s.preview(item.filepath,item.id)">
|
||||
<i class="el-icon-document"></i>
|
||||
</div>
|
||||
|
||||
<span class="file-down-span"
|
||||
style="bottom: 0;height: 20px;display: inline-block;"
|
||||
@click="APP_DOMAIN+'/file_server/download?filepath=' + item.filepath + '&filename=' + item.filename">
|
||||
<i class="el-icon-download"></i>
|
||||
</span>
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>–>
|
||||
<file-upload v-if="docList&&docList.length"
|
||||
:files="docList"
|
||||
:view="true"></file-upload>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
|
||||
没有文档。
|
||||
</div>
|
||||
</el-row>
|
||||
</div>-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="分工会审核信息" name="2" v-if="viewData.union">
|
||||
<el-form label-width="130px" label-suffix=":" style="padding: 20px 0">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.union.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.union.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见">
|
||||
<div class="textarea-div">{{ viewData.union.auditOpinion ? viewData.union.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.union.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.union.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" name="3" v-if="viewData.school">
|
||||
<el-form label-width="130px" label-suffix=":" style="padding: 20px 0">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
{{ viewData.school.username }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
{{ viewData.school.auditTime }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="审核意见">
|
||||
<div class="textarea-div">{{ viewData.school.auditOpinion ? viewData.school.auditOpinion : '暂无' }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="签  字">
|
||||
<el-image v-if="viewData.school.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.school.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: "1",
|
||||
viewData: {},
|
||||
loading: true,
|
||||
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
|
||||
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
|
||||
doctype: ['doc', 'docx', 'xlsx', 'xls', 'txt'],
|
||||
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
|
||||
prevImgList: [],
|
||||
img2List: [],
|
||||
videoList: [],
|
||||
docList: [],
|
||||
audioList: [],
|
||||
imgShow: false,
|
||||
fileDialogVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async getInfo(id) {
|
||||
|
||||
this.img2List = [];
|
||||
this.prevImgList = [];
|
||||
this.videoList = [];
|
||||
this.audioList = [];
|
||||
this.docList = [];
|
||||
$.post(base + '/platform/hd/wmhd/findOneById', {id: id}).then(data => {
|
||||
if (data.code == 0) {
|
||||
data.data.forEach(val => {
|
||||
val.fjname = val.filename
|
||||
val.fjurl = val.filepath
|
||||
val.url = '${AppFileDomain!}' + val.filepath
|
||||
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
|
||||
if (this.videotype.indexOf(filetype) > -1) {
|
||||
this.videoList.push(val);
|
||||
} else if (this.imgtype.indexOf(filetype) > -1) {
|
||||
this.prevImgList.push('${AppFileDomain!}' + val.filepath)
|
||||
this.img2List.push(val);
|
||||
} else if (this.doctype.indexOf(filetype) > -1) {
|
||||
this.docList.push(val);
|
||||
} else if (this.audiotype.indexOf(filetype) > -1) {
|
||||
this.audioList.push(val);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
const {data} = await $.post("/platform/hd/wmhd/findxxById", {id: id})
|
||||
this.viewData = data
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
this.loading = false
|
||||
},
|
||||
playVideo1(fjurl) {
|
||||
this.$emit("playvideo", fjurl)
|
||||
},
|
||||
filedialogClose() {
|
||||
//关闭的时候需要销毁video 但是随之dom元素也会被删除!!!!
|
||||
this.imgShow = false;
|
||||
this.videoShow = false;
|
||||
videojs('my-video').dispose();
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style>
|
||||
|
||||
.tpa {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
width: 12%;
|
||||
color: #a0a9b4;
|
||||
background-color: rgb(250, 250, 250);
|
||||
border: 1px solid rgb(220, 220, 220);
|
||||
}
|
||||
|
||||
.tpb {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: #4f576b;
|
||||
width: 15%;
|
||||
border: 1px solid rgb(220, 220, 220);
|
||||
}
|
||||
|
||||
input[type=file] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.filedialog .el-dialog__header i {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.filedialog .el-dialog__body {
|
||||
padding: 20px 0 0 0;
|
||||
}
|
||||
|
||||
/*video{
|
||||
width: 100%!important;
|
||||
height: 500px!important;
|
||||
outline:none;
|
||||
}*/
|
||||
.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;
|
||||
}
|
||||
|
||||
.form-item-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.form-item-container .el-form-item {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.el-upload--picture-card {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
line-height: 98px;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.el-loading-mask.is-fullscreen .el-loading-spinner {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/11/10/11:07
|
||||
*/
|
||||
<template>
|
||||
<div class="el-descriptions">
|
||||
<div class="el-descriptions__body">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.el-descriptions table {
|
||||
table-layout: auto;
|
||||
}
|
||||
|
||||
.el-descriptions__body table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.el-descriptions :not(.is-bordered) th, td {
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
|
||||
.el-descriptions .is-bordered th, td {
|
||||
border: 1px solid #ebeef5;
|
||||
padding: 12px 10px;
|
||||
}
|
||||
|
||||
.el-descriptions__body table th, td {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
text-align: left;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.el-descriptions__body table th {
|
||||
font-weight: 400;
|
||||
color: #909399;
|
||||
background: #fafafa;
|
||||
border: 1px solid #ebeef5;
|
||||
padding: 12px 10px;
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
.el-descriptions__body table td .el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.el-descriptions__body table td .is-required .el-form-item__error {
|
||||
background: #303133;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
z-index: 2000;
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
min-width: 10px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.el-descriptions .el-date-editor.el-input, .el-date-editor.el-input__inner {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,242 @@
|
||||
<template>
|
||||
<div class="component-upload-image">
|
||||
<el-upload
|
||||
:style="{'--box-width': width + 'px', '--box-height': height + 'px'}"
|
||||
multiple
|
||||
:action="FILE_UPLOAD_ADDRESS"
|
||||
list-type="picture-card"
|
||||
:on-success="handleUploadSuccess"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
ref="imageUpload"
|
||||
:on-remove="handleDelete"
|
||||
:file-list="fileList"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:class="{hidePic: this.fileList.length >= this.limit}"
|
||||
>
|
||||
<i class="el-icon-plus"></i>
|
||||
</el-upload>
|
||||
|
||||
<!-- 上传提示 -->
|
||||
<div class="el-upload__tip" slot="tip" v-if="showTip">
|
||||
请上传
|
||||
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b></template>
|
||||
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
|
||||
的文件
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "ImageUpload",
|
||||
props: {
|
||||
value: [String, Array],
|
||||
// 图片数量限制
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 5,
|
||||
},
|
||||
// 大小限制(MB)
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 5,
|
||||
},
|
||||
// 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: {
|
||||
type: Array,
|
||||
default: () => ["png", "jpg", "jpeg"],
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 100
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 100
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogImageUrl: "",
|
||||
dialogVisible: false,
|
||||
hideUpload: false,
|
||||
fileList: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
immediate: true,
|
||||
deep: true,
|
||||
handler(val) {
|
||||
if (val) {
|
||||
let fff = []
|
||||
fff = Array.isArray(val) ? [...val] : [val]
|
||||
this.fileList = fff.map(v => {
|
||||
return {
|
||||
name: v,
|
||||
url: CREATE_PREVIEW_URL(v)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.fileType || this.fileSize);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 上传前loading加载
|
||||
handleBeforeUpload(file) {
|
||||
let isImg = false;
|
||||
if (this.fileType.length) {
|
||||
let fileExtension = "";
|
||||
if (file.name.lastIndexOf(".") > -1) {
|
||||
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
|
||||
}
|
||||
isImg = this.fileType.some(type => {
|
||||
if (file.type.indexOf(type) > -1) return true;
|
||||
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
|
||||
return false;
|
||||
});
|
||||
} else {
|
||||
isImg = file.type.indexOf("image") > -1;
|
||||
}
|
||||
|
||||
if (!isImg) {
|
||||
this.$message.error(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`);
|
||||
return false;
|
||||
}
|
||||
if (this.fileSize) {
|
||||
const isLt = file.size / 1024 / 1024 < this.fileSize;
|
||||
if (!isLt) {
|
||||
this.$message.error(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
// 文件个数超出
|
||||
handleExceed() {
|
||||
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res, file) {
|
||||
if (res.code === 0) {
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", res.data.filepath)
|
||||
} else {
|
||||
if (this.value && Array.isArray(this.value)) {
|
||||
const v = [...this.value, res.data.filepath]
|
||||
this.$emit("input", v)
|
||||
} else {
|
||||
this.$emit("input", [res.data.filepath])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
this.$refs.imageUpload.handleRemove(file);
|
||||
}
|
||||
},
|
||||
// 删除图片
|
||||
async handleDelete(file) {
|
||||
const resp = await $.post(FILE_DELETE_ADDRESS, {id: file.name})
|
||||
const findex = this.fileList.map(f => f.name).indexOf(file.name);
|
||||
if (findex > -1) {
|
||||
this.fileList.splice(findex, 1)
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", this.fileList.map(v => v.name).join('、'))
|
||||
} else {
|
||||
this.$emit("input", this.fileList.map(v => v.name))
|
||||
}
|
||||
}
|
||||
/*if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
const findex = this.fileList.map(f => f.name).indexOf(file.name);
|
||||
if (findex > -1) {
|
||||
this.fileList.splice(findex, 1)
|
||||
if (this.limit === 1) {
|
||||
this.$emit("input", this.fileList.map(v => v.name).join('、'))
|
||||
} else {
|
||||
this.$emit("input", this.fileList.map(v => v.name))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
}*/
|
||||
|
||||
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError() {
|
||||
this.$message.error("上传图片失败,请重试");
|
||||
},
|
||||
// 预览
|
||||
handlePictureCardPreview(file) {
|
||||
if (file.url) {
|
||||
let image = new Image();
|
||||
image.src = file.url
|
||||
let viewer = new Viewer(image);
|
||||
viewer.show();
|
||||
} else {
|
||||
viewImage(file.response.data.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.component-upload-image .el-upload--picture-card {
|
||||
width: var(--box-width, '100px') !important;
|
||||
height: var(--box-height, '100px') !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.el-upload--picture-card i {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.el-upload-list--picture-card .el-upload-list__item {
|
||||
width: var(--box-width, '100px');
|
||||
height: var(--box-height, '100px');
|
||||
}
|
||||
|
||||
.hidePic .el-upload--picture-card {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.el-list-enter-active,
|
||||
.el-list-leave-active {
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
.el-list-enter, .el-list-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.component-upload-image {
|
||||
height: inherit;
|
||||
}
|
||||
|
||||
.component-upload-image > div:nth-child(1) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.el-upload__tip {
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,229 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2024/1/24/16:40
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<div ref="editorDom"></div>
|
||||
<input type="file" style="display: none;">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script src="/assets/platform/plugins/jquery/jquery-1.11.1.min.js"></script>
|
||||
<script>
|
||||
|
||||
const {$, BtnMenu, DropListMenu, PanelMenu, DropList, Panel, Tooltip} = wangEditor
|
||||
|
||||
class AlertMenu extends BtnMenu {
|
||||
constructor(editor) {
|
||||
const $elem = wangEditor.$(
|
||||
`<div class="w-e-menu" data-title="上传word">
|
||||
word
|
||||
</div>`
|
||||
)
|
||||
super($elem, editor)
|
||||
}
|
||||
|
||||
clickHandler() {
|
||||
const _this = this
|
||||
const inputFileElement = document.querySelector('#' + this.editor.textElemId).parentElement.parentElement.nextElementSibling
|
||||
inputFileElement.click()
|
||||
inputFileElement.addEventListener('change', function () {
|
||||
const file = this.files[0];
|
||||
const fileName = file.name
|
||||
|
||||
if (!fileName.toLowerCase().endsWith('.doc') && !fileName.toLowerCase().endsWith('.docx')) {
|
||||
alert('请上传doc或者docx的文件')
|
||||
_this.clearInputFile()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
const formData = new FormData()
|
||||
formData.append('file', file, file.name)
|
||||
axios.post('/file_server/word2Html', formData, {}).then(response => {
|
||||
console.log(response.data)
|
||||
if (response.data.code === 0) {
|
||||
_this.editor.txt.html(response.data.data)
|
||||
} else {
|
||||
alert(response.data.msg + ',上传word失败,请联系管理员!')
|
||||
_this.clearInputFile()
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(error)
|
||||
_this.clearInputFile()
|
||||
alert('上传word失败,请联系管理员!')
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
clearInputFile() {
|
||||
const obj = document.getElementById('fileInput');
|
||||
obj.outerHTML = obj.outerHTML
|
||||
}
|
||||
|
||||
tryChangeActive() {
|
||||
this.active()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wangEditor.registerMenu('alertMenuKey', AlertMenu)
|
||||
module.exports = {
|
||||
name: "textEditor",
|
||||
props: {
|
||||
// 定义值属性,用于接收父组件传递的值
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 300
|
||||
},
|
||||
menus: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return [
|
||||
'head',//标题
|
||||
'bold',//加粗
|
||||
'fontSize',//字号
|
||||
'fontName',//字体
|
||||
'italic',//斜体
|
||||
'underline',//下划线
|
||||
'strikeThrough',//删除线
|
||||
'indent',//缩进
|
||||
'lineHeight',//行高
|
||||
'foreColor',//文字颜色
|
||||
'backColor',//背景颜色
|
||||
//'link',//链接
|
||||
'list',//序列
|
||||
'todo',//待办
|
||||
'justify',//对齐
|
||||
'quote',//引用
|
||||
// 'emoticon',//表情
|
||||
'image',
|
||||
//'video',
|
||||
'table',
|
||||
//'code',
|
||||
'splitLine',//分割线
|
||||
'undo',
|
||||
'redo',
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
editor: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initEditor()
|
||||
},
|
||||
|
||||
watch: {
|
||||
value: {
|
||||
handler: function (newValue) {
|
||||
this.$nextTick(() => {
|
||||
this.editor.txt.html(newValue);
|
||||
// this.editor.config.focus = true
|
||||
})
|
||||
// const _this = this
|
||||
// const waitUntilEditorNotNull = () => {
|
||||
// if (_this.editor != null) {
|
||||
// _this.editor.txt.html(newValue);
|
||||
// } else {
|
||||
// setTimeout(waitUntilEditorNotNull, 100); // 每隔100毫秒检查一次
|
||||
// }
|
||||
// }
|
||||
// waitUntilEditorNotNull();
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
initEditor() {
|
||||
let _this = this
|
||||
this.editor = new wangEditor(this.$refs.editorDom)
|
||||
|
||||
// this.editor.config.focus = false // 取消光标自动定位
|
||||
|
||||
//内容change回调
|
||||
this.editor.config.onchange = function (newHtml) {
|
||||
let content = _this.editor.txt.html()
|
||||
let text = _this.editor.txt.text()
|
||||
// 对于一键格式化后的内容,空内容可能会出现<p></br></p>标签,此处进行判断
|
||||
// if (_this.isEmptyEditor()) {
|
||||
// content = ''
|
||||
// }
|
||||
_this.$emit('input', content)
|
||||
_this.$emit('catchData', content, text)
|
||||
}
|
||||
|
||||
//配置图片上传
|
||||
this.editor.config.customUploadImg = function (resultFiles, insertImgFn) {
|
||||
// resultFiles 是 input 中选中的文件列表
|
||||
// insertImgFn 是获取图片 url 后,插入到编辑器的方法
|
||||
|
||||
Promise.all(_this.uploadFiles(resultFiles)).then(res => {
|
||||
res.forEach(v => {
|
||||
if (v.code === 0) {
|
||||
insertImgFn(CREATE_PREVIEW_URL(v.data.filepath))
|
||||
} else {
|
||||
ELEMENT.message.warning('图片上传失败')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
//粘贴过滤
|
||||
this.editor.config.pasteFilterStyle = false
|
||||
//高度
|
||||
this.editor.config.height = this.height
|
||||
//菜单
|
||||
this.editor.config.menus = this.menus
|
||||
this.editor.create()
|
||||
},
|
||||
isEmptyEditor() {
|
||||
const children = this.editor.$textElem.children()
|
||||
for (let i = 0; i < children.elems.length; i++) {
|
||||
const node = children.elems[i]
|
||||
if (node && node.nodeType === Node.TEXT_NODE && node.textContent.trim().length !== '') {
|
||||
return false
|
||||
}
|
||||
if (node && node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === 'p' && node.innerText.trim() !== '') {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
},
|
||||
uploadFiles(resultFiles) {
|
||||
return resultFiles.map(async file => {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file, file.name)
|
||||
formData.append("folderPath", "/wangEditorImg/")
|
||||
return jQuery.ajax({
|
||||
url: '/file_server/uploadFile',
|
||||
type: 'post',
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<el-tabs v-model="activeName" tab-position="top">
|
||||
<el-tab-pane label="基本信息" name="1">
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>填报人</th>
|
||||
<td>{{ viewData.username }}</td>
|
||||
|
||||
<th>填报工号</th>
|
||||
<td>{{ viewData.loginName }}</td>
|
||||
|
||||
<th>联系方式</th>
|
||||
<td>{{ viewData.mobile }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>填报单位</th>
|
||||
<td>{{ viewData.unionName }}</td>
|
||||
<th>填报时间</th>
|
||||
<td colspan="3">{{ moment(viewData.applyDate).format('YYYY年MM月DD日') }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>基本情况简介</th>
|
||||
<td colspan="5">
|
||||
<div class="text-left" v-html="viewData.basicInformation"></div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>建设方案</th>
|
||||
<td colspan="5">
|
||||
<div class="text-left" v-html="viewData.constructionPlan"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="基层党组织审核信息" v-if="organizationAudit" name="2">
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>{{ organizationAudit.username }}--{{ organizationAudit.loginname }}</td>
|
||||
<th>审核时间</th>
|
||||
<td>{{ organizationAudit.auditTime }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>审核意见</th>
|
||||
<td colspan="3">{{ organizationAudit.auditOpinion }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>签字</th>
|
||||
<td colspan="3">
|
||||
<div>
|
||||
<el-image :src="organizationAudit.auditSign" style="width: 200px;height:auto"
|
||||
v-if="organizationAudit.auditSign"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" v-if="schoolAudit" name="3">
|
||||
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>{{ schoolAudit.username }}--{{ schoolAudit.loginname }}</td>
|
||||
<th>审核时间</th>
|
||||
<td>{{ schoolAudit.auditTime }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>审核意见</th>
|
||||
<td colspan="3">{{ schoolAudit.auditOpinion }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>签字</th>
|
||||
<td colspan="3">
|
||||
<div>
|
||||
<el-image :src="schoolAudit.auditSign" style="width: 200px;height:auto"
|
||||
v-if="schoolAudit.auditSign"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</template>
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
activeName: {
|
||||
type: String,
|
||||
default: '1'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: '1',
|
||||
viewData: {},
|
||||
organizationAudit: {},
|
||||
schoolAudit: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openView(id) {
|
||||
const resp = await $.get('/platform/wakeshome/declaration/apply/getInfoById', {id: id})
|
||||
if (resp.code === 0) {
|
||||
this.viewData = resp.data
|
||||
this.organizationAudit = resp.data.organizationAudit
|
||||
this.schoolAudit = resp.data.schoolAudit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<el-tabs v-model="activeName" tab-position="top">
|
||||
<el-tab-pane label="基本信息" name="1">
|
||||
|
||||
<border-table>
|
||||
<vi-title title="职工之家申请信息"></vi-title>
|
||||
<table>
|
||||
<tr>
|
||||
<th>填报人</th>
|
||||
<td>{{ viewData.username }}</td>
|
||||
|
||||
<th>联系方式</th>
|
||||
<td>{{ viewData.mobile }}</td>
|
||||
|
||||
<th>填报人</th>
|
||||
<td>{{ viewData.applyTime }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>填报单位</th>
|
||||
<td colspan="5">{{ viewData.unionName }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<vi-title style="margin-top: 25px" title="职工之家详细信息"></vi-title>
|
||||
<table>
|
||||
<tr>
|
||||
<th>单位位置</th>
|
||||
<td>{{ viewData.position }}</td>
|
||||
|
||||
<th>单位面积</th>
|
||||
<td>{{ viewData.area }}</td>
|
||||
|
||||
<th>创办时间</th>
|
||||
<td>{{ viewData.foundTime }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>单位信息</th>
|
||||
<td colspan="5">{{ viewData.details }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
|
||||
<vi-title style="margin-top: 25px" title="职工之家荣誉信息"></vi-title>
|
||||
<el-table :data="viewData.awardInfo" style="width: 100%">
|
||||
<el-table-column prop="awardTime" label="获奖日期"></el-table-column>
|
||||
<el-table-column prop="awardUnit" label="获奖单位"></el-table-column>
|
||||
<el-table-column prop="awardName" label="奖项名称"></el-table-column>
|
||||
<el-table-column prop="awardPic" label="获奖图片">
|
||||
<template scope="{row,$index}">
|
||||
<div v-if="row.awardPic != null && row.awardPic !== ''">
|
||||
<image-upload :view="true" :limit="1" v-model="row.awardPic"></image-upload>
|
||||
</div>
|
||||
<div v-else>暂无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<vi-title style="margin-top: 25px" title="职工之家材料上传"></vi-title>
|
||||
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>图片</th>
|
||||
<td colspan="6">
|
||||
<file-upload v-if="viewData.picFiles && viewData.picFiles.length > 0"
|
||||
:files="viewData.picFiles"
|
||||
:view="true"></file-upload>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>附件</th>
|
||||
<td colspan="6">
|
||||
<file-upload v-if="viewData.files && viewData.files.length > 0"
|
||||
:files="viewData.files"
|
||||
:view="true"></file-upload>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="校工会审核信息" v-if="schoolAudit" name="2">
|
||||
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>审核人</th>
|
||||
<td>{{ schoolAudit.username }}--{{ schoolAudit.loginname }}</td>
|
||||
<th>审核时间</th>
|
||||
<td>{{ schoolAudit.auditTime }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>审核意见</th>
|
||||
<td colspan="3">{{ schoolAudit.auditOpinion }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>签字</th>
|
||||
<td colspan="3">
|
||||
<div>
|
||||
<el-image :src="schoolAudit.auditSign" style="width: 200px;height:auto"
|
||||
v-if="schoolAudit.auditSign"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<slot name="handle"></slot>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
activeName: {
|
||||
type: String,
|
||||
default: '1'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: '1',
|
||||
viewData: {},
|
||||
schoolAudit: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openView(id) {
|
||||
const resp = await $.get('/platform/wakeshome/info/mine/getInfoById', {id: id})
|
||||
if (resp.code === 0) {
|
||||
this.viewData = resp.data
|
||||
this.schoolAudit = resp.data.schoolAudit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-upload__tip {
|
||||
display: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<el-form label-width="120px">
|
||||
<template v-if="viewInfo.zbxx.assessmentMode === 2">
|
||||
<vi-title title="评议对象选择"></vi-title>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" v-if="viewInfo.zbxx.assessmentMode===2">
|
||||
<el-form-item prop="evaluatedPersonName" label="被测评人姓名">
|
||||
{{viewInfo.commentPeo.evaluatedPersonName}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="viewInfo.zbxx.assessmentMode===2">
|
||||
<el-form-item prop="evaluatedPersonName" label="现任职务">
|
||||
{{viewInfo.commentPeo.evaluatedPersonName}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="evaluatedPersonName" label="测评结果">
|
||||
{{viewInfo.commentPeo.reviewResult}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-if="viewInfo.zbxx.assessmentMode===2">
|
||||
<el-form-item prop="presidentOpinions" label="意见建议">
|
||||
{{viewInfo.commentPeo.presidentOpinions}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<vi-title2 title="评议内容"></vi-title2>
|
||||
<el-form-item label="" label-width="0" v-for="(nr,idx) in viewInfo.zbxx.nrs" :key="nr.id">
|
||||
<el-row type="flex" align="middle" justify="space-between">
|
||||
<el-input v-model="nr.content" readonly maxlength="30" style="width: 50%">
|
||||
<template slot="prepend"><span>{{ idx + 1 }}</span></template>
|
||||
</el-input>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: 20px">
|
||||
<el-table :data="nr.bzs" style="width: 100%" border :show-summary = "viewInfo.zbxx.scoringMode !== 2 ? 'always' : false">
|
||||
<el-table-column align="center" header-align="center" label="序号"
|
||||
type="index"
|
||||
width="100px">
|
||||
<template scope="{$index,row}">
|
||||
{{ row.contentNumber = $index + 1 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="主要评比内容" disabled prop="inspection" header-align="center" align="center"></el-table-column>
|
||||
<template v-if="viewInfo.zbxx.scoringMode === 1">
|
||||
<el-table-column label="标准分" prop="score" header-align="center" align="center" width="250px"></el-table-column>
|
||||
<el-table-column label="评议分" prop="resultScore" header-align="center" align="center" width="250px"></el-table-column>
|
||||
</template>
|
||||
<template v-if="viewInfo.zbxx.scoringMode === 2">
|
||||
<el-table-column label="满意度" prop="resultScore" header-align="center" align="center" width="350px">
|
||||
<template slot-scope="{row}">
|
||||
<el-radio-group v-model="row.resultScore" size="small">
|
||||
<el-radio disabled label="满意">满意</el-radio>
|
||||
<el-radio disabled label="基本满意">基本满意</el-radio>
|
||||
<el-radio disabled label="不满意">不满意</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<div v-if="viewInfo.zbxx.scoringMode===1">
|
||||
<el-divider content-position="left">备注</el-divider>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-input type="textarea" :rows="2" maxlength="300" show-word-limit readonly
|
||||
v-model="nr.bzs[0].options" placeholder="请输入备注"></el-input>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<template v-if="viewInfo.zbxx.scoringMode === 2">
|
||||
<vi-title title="备注填写"></vi-title>
|
||||
<el-input type="textarea" :rows="2" maxlength="300" show-word-limit disabled
|
||||
v-model="viewInfo.commentPeo.presidentOpinions" placeholder="请输入备注"></el-input>
|
||||
</template>
|
||||
|
||||
<template v-if="viewInfo.zbxx.scoringMode === 1 && viewInfo.zbxx.reviewMode === 1">
|
||||
<vi-title title="职工评家总结"></vi-title>
|
||||
<file-upload :files.sync="viewInfo.commentPeo.files" view></file-upload>
|
||||
</template>
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
id: {type: String, default: ''}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
viewInfo:{
|
||||
commentPeo: {},
|
||||
zbxx: []
|
||||
}
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
async findOne(peoId){
|
||||
const resp = await $.get('/platform/wakeshome/review/statistics/getBzById',{peoId:peoId})
|
||||
if (resp.code === 0) {
|
||||
this.viewInfo = resp.data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.el-divider {
|
||||
background-color: #1867b0;
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
color: #1867b0;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,508 @@
|
||||
<template>
|
||||
<el-form class="el_form" :model="data" ref="addForm" :rules="formRules" label-width="120px">
|
||||
<vi-title title="指标信息"></vi-title>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="annual" label="年  度" class="is-required">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
:disabled="is_view"
|
||||
:picker-options="pickerOptions"
|
||||
v-model="data.annual"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年度">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="assessment" label="评测名称" class="is-required">
|
||||
<el-input maxlength="30" :disabled="is_view" v-model="data.assessment"
|
||||
placeholder="请填写评测名称"
|
||||
type="text">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="assessment" label="">
|
||||
<el-checkbox v-model="data.isEvaluationIndex" :disabled="is_view">是否采用以往评议指标</el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="zbId" label="以往评议指标" v-if="data.isEvaluationIndex">
|
||||
<el-select v-model="data.zbId" placeholder="请选择" filterable clearable
|
||||
style="width: 100%" @change="getByZbData">
|
||||
<el-option
|
||||
v-for="item in zbList"
|
||||
:key="item.id"
|
||||
:label="item.annual+item.assessment"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="assessmentMode" label="评议选项" class="is-required">
|
||||
<el-radio-group v-model="data.assessmentMode" :disabled="is_view">
|
||||
<el-radio-button :label="1">工会评议</el-radio-button>
|
||||
<el-radio-button :label="2">主席/副主席评议</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="reviewMode" label="评议模式" class="is-required">
|
||||
<el-radio-group v-model="data.reviewMode" :disabled="is_view">
|
||||
<el-tooltip content="由校工会/分工会管理员自我测评"
|
||||
placement="top">
|
||||
<el-radio-button :label="1">自我评议</el-radio-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="由教职工对选择的工会/主席进行评议"
|
||||
placement="top">
|
||||
<el-radio-button :label="2">教工评议</el-radio-button>
|
||||
</el-tooltip>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="scoringMode" label="打分模式" class="is-required">
|
||||
<el-radio-group v-model="data.scoringMode" :disabled="is_view">
|
||||
<el-radio-button :label="1">评分模式</el-radio-button>
|
||||
<el-radio-button :label="2">满意度模式</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="8" v-if="data.assessmentMode">
|
||||
<el-form-item prop="scoringMode" label="评议范围" class="is-required">
|
||||
<el-radio-group v-model="data.commentTarget" :disabled="is_view">
|
||||
<el-tooltip :content="schoolContent" placement="top">
|
||||
<el-radio-button :disabled="!(A06 || sysadmin)" :label="1">校工会</el-radio-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip :content="allUnionContent" placement="top">
|
||||
<el-radio-button :disabled="!(A06 || sysadmin)" :label="2">全部分工会</el-radio-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip :content="selectUnionContent" placement="top">
|
||||
<el-radio-button :label="3">自选分工会</el-radio-button>
|
||||
</el-tooltip>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<template v-if="data.commentTarget && data.reviewMode == 2 && data.commentTarget == 1">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="activityGroupId" label="可评议人员" class="is-required">
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<div style="width: 99%">
|
||||
<el-select clearable filterable placeholder="请选择可评议人员"
|
||||
style="width: 99%" v-model="data.activityGroupId" :disabled="is_view">
|
||||
<el-option :key="item.groupId"
|
||||
:label="item.groupName"
|
||||
:value="item.groupId"
|
||||
v-for="item in activityGroupList"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
<el-button
|
||||
@click="$refs.drawerUserScope.userScopeDialog = true"
|
||||
:disabled="is_view"
|
||||
type="primary">设置
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
<template v-if="data.commentTarget && data.commentTarget == 3">
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="unionIds" label="自选分工会" class="is-required">
|
||||
<el-select v-model="data.unionIds" style="width: 100%"
|
||||
:disabled="is_view"
|
||||
multiple clearable filterable
|
||||
placeholder="请选择分工会">
|
||||
<el-option
|
||||
v-for="item in reviewUnions"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item prop="applyTime" label="评议时间" class="is-required">
|
||||
<el-date-picker
|
||||
end-placeholder="结束时间"
|
||||
range-separator="-"
|
||||
start-placeholder="开始时间"
|
||||
style="width: 100%"
|
||||
:disabled="is_view"
|
||||
type="datetimerange"
|
||||
v-model="data.applyTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<vi-title2 title="测评内容"></vi-title2>
|
||||
|
||||
<el-form-item label="" label-width="0" v-for="(nr,idx) in data.nrs">
|
||||
|
||||
<el-row type="flex" align="middle" justify="space-between">
|
||||
<el-input v-model="nr.content" :disabled="is_view" maxlength="30" style="width: 50%"
|
||||
placeholder="请填写测评内容">
|
||||
<template slot="prepend"><span>
|
||||
{{ nr.contentNumber = idx + 1 }}</span></template>
|
||||
</el-input>
|
||||
<el-button v-if="!is_view" size="medium" :disabled="data.nrs.length<=1" type="danger"
|
||||
@click="data.nrs.splice(idx,1)"
|
||||
icon="el-icon-delete"></el-button>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: 20px">
|
||||
<el-table :data="nr.bzs" style="width: 100%" border show-summary
|
||||
:summary-method="getSummaries" size="small">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index"
|
||||
width="100px">
|
||||
<template scope="{$index,row}">
|
||||
{{ row.contentNumber = $index + 1 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="测评标准" prop="inspection" header-align="center" align="center">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.inspection" placeholder="请填写测评标准"></el-input>
|
||||
<span v-else>{{ row.inspection }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="单项分" prop="single_score" header-align="center" align="center" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.single_score" placeholder="请填写单项分"></el-input>
|
||||
<span v-else>{{ row.single_score }}</span>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
|
||||
<el-table-column label="标准分" prop="score" header-align="center" align="center"
|
||||
width="100px" v-if="data.scoringMode===1">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model.number="row.score" maxlength="4"
|
||||
placeholder="请填写标准分"></el-input>
|
||||
<span v-else>{{ row.score }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="能否超过标准分" prop="beyond_highestscore" header-align="center" align="center" width="120px">
|
||||
<template scope="{row}">
|
||||
<el-switch
|
||||
v-if="!is_view"
|
||||
v-model="row.beyond_highestscore"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
<el-switch
|
||||
v-else
|
||||
disabled
|
||||
v-model="row.beyond_highestscore">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
|
||||
<el-table-column label="是否填写意见" prop="isEvidence" header-align="center" align="center"
|
||||
width="120px" v-if="data.scoringMode===1">
|
||||
<template scope="{row}">
|
||||
<el-switch
|
||||
:disabled="is_view"
|
||||
v-model="row.isEvidence"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!--
|
||||
<el-table-column label="关联模块" prop="associatedmodule" header-align="center" align="center" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.associatedmodule" maxlength="10" placeholder="请填写关联模块"></el-input>
|
||||
<span v-else>{{ row.associatedmodule }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="关联标识" prop="bz_relation_id" header-align="center" align="center" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-input v-if="!is_view" v-model="row.bz_relation_id" maxlength="20" placeholder="请填写关联标识,该标识唯一"></el-input>
|
||||
<span v-else>{{ row.bz_relation_id }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
-->
|
||||
|
||||
<!-- <el-table-column label="能否删除" prop="canDelete" header-align="center" align="center" width="100px">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-if="!is_view"-->
|
||||
<!-- :disabled="row.canDelete==false"-->
|
||||
<!-- v-model="row.canDelete"-->
|
||||
<!-- active-color="#13ce66"-->
|
||||
<!-- inactive-color="#ff4949">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- <el-switch-->
|
||||
<!-- v-else-->
|
||||
<!-- :disabled="!row.canDelete && row.id"-->
|
||||
<!-- v-model="row.canDelete">-->
|
||||
<!-- </el-switch>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
<el-table-column v-if="!is_view" label="操作" header-align="center" align="center"
|
||||
width="200px">
|
||||
<template scope="{row,$index}">
|
||||
<el-button size="mini" :disabled="nr.bzs.length<=1 || (!row.canDelete && row.id)"
|
||||
type="danger" icon="el-icon-delete"
|
||||
@click="nr.bzs.splice($index,1)"></el-button>
|
||||
<el-button size="mini"
|
||||
type="primary" icon="el-icon-plus"
|
||||
@click="nr.bzs.splice($index+1,0,{inspection:null,score:null,isEvidence:true})"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="mt10 mb10" style="border-top: 1px dashed rgb(229, 225, 225)"></el-row>
|
||||
</el-form-item>
|
||||
|
||||
<el-row type="flex" justify="center">
|
||||
<el-button v-if="!is_view"
|
||||
type="primary"
|
||||
@click="data.nrs.push({bzs:[{inspection:null,score:null,isEvidence:true}]})">
|
||||
添加测评内容
|
||||
</el-button>
|
||||
</el-row>
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
<drawer-user-scope
|
||||
@group_change="getActivityGroup"
|
||||
ref="drawerUserScope"
|
||||
:group_id.sync="data.activityGroupId"
|
||||
></drawer-user-scope>
|
||||
</div>
|
||||
|
||||
</el-form>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
const METHOD_NAME = "change"
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
is_view: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {
|
||||
nrs: [{
|
||||
bzs: [{}]
|
||||
}],
|
||||
unionIds: []
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.$emit(METHOD_NAME, val)
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activityGroupList: [],
|
||||
isEvaluationIndex: false,
|
||||
zbList: [],
|
||||
formRules: {
|
||||
xxx: [{required: true, message: '请填写年度', trigger: ['blur', 'change']}],
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return (
|
||||
time.getFullYear() > new Date().getFullYear()
|
||||
);
|
||||
}
|
||||
},
|
||||
relationData: [
|
||||
{moduleName: '提案系统模块', id: 'proposal'},
|
||||
{moduleName: '二级教代会', id: 'secteameet'},
|
||||
{moduleName: '慰问/补助', id: 'ConandDif'},
|
||||
],
|
||||
roleDataReview: {},
|
||||
reviewUnions: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
|
||||
},
|
||||
methods: {
|
||||
async getActivityGroup() {
|
||||
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = data
|
||||
},
|
||||
async getByZbData() {
|
||||
const {
|
||||
code,
|
||||
data,
|
||||
msg
|
||||
} = await $.get('/platform/wakeshome/review/viewZb/edit', {id: this.data.zbId})
|
||||
if (data) {
|
||||
this.$set(this.data, "nrs", data.nrs)
|
||||
} else {
|
||||
this.$set(this.data, "nrs", [{bzs: [{}]}])
|
||||
}
|
||||
},
|
||||
async getZbList() {
|
||||
const res = await $.get("/platform/wakeshome/review/Xjkhzb/getZbList")
|
||||
this.zbList = res.data
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0 && this.data.scoringMode === 1) {
|
||||
sums[index] = '小计';
|
||||
return;
|
||||
} else if ([1, 3, 4].includes(index) && this.data.scoringMode === 1) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
} else if ([1, 2, 3].includes(index) && this.data.scoringMode === 2) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += ' 分';
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
},
|
||||
async getRolesAndUnion() {
|
||||
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
|
||||
this.roleDataReview = data
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.getRolesAndUnion()
|
||||
await this.getActivityGroup()
|
||||
await this.getZbList()
|
||||
if (!this.data || !Object.keys(this.data).length) {
|
||||
this.data = {
|
||||
nrs: [{
|
||||
bzs: [{inspection: null, score: null, isEvidence: true}]
|
||||
}],
|
||||
}
|
||||
}
|
||||
|
||||
if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
|
||||
this.reviewUnions = await getUnionList(this.unionId)
|
||||
this.$set(this.data, "unionIds", this.reviewUnions[0].id)
|
||||
} else {
|
||||
this.reviewUnions = await getUnions(null)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
H10() {
|
||||
return this.roleDataReview.is_H10
|
||||
},
|
||||
A06() {
|
||||
return this.roleDataReview.is_A06
|
||||
},
|
||||
H04() {
|
||||
return this.roleDataReview.is_H04
|
||||
},
|
||||
H02() {
|
||||
return this.roleDataReview.is_H02
|
||||
},
|
||||
sysadmin() {
|
||||
return this.roleDataReview.is_sysadmin
|
||||
},
|
||||
unionId() {
|
||||
return this.roleDataReview.unionid
|
||||
},
|
||||
schoolContent() {
|
||||
if (this.data.reviewMode == 1) {
|
||||
return '勾选后,仅校工会管理员可参加测评'
|
||||
} else if (this.data.reviewMode == 2) {
|
||||
return '勾选后,全校所有人员可评议校工会,也可根据右侧选框【可评议人员】指定评议人员范围'
|
||||
} else {
|
||||
return '请选择评议模式'
|
||||
}
|
||||
},
|
||||
allUnionContent() {
|
||||
if (this.data.reviewMode == 1) {
|
||||
return '勾选后,仅各工会管理员可对本分工会进行自我评议'
|
||||
} else if (this.data.reviewMode == 2) {
|
||||
return '勾选后,所有分工会人员对本分工会进行评议,不可跨工会评议'
|
||||
} else {
|
||||
return '请选择评议模式'
|
||||
}
|
||||
},
|
||||
selectUnionContent() {
|
||||
if (this.data.reviewMode == 1) {
|
||||
return '勾选后,仅右侧选择的分工会管理员可对本分工会进行自我评议'
|
||||
} else if (this.data.reviewMode == 2) {
|
||||
return '勾选后,可根据右侧选框【自选分工会】指定分工会评议范围'
|
||||
} else {
|
||||
return '请选择评议模式'
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.fixedBox {
|
||||
position: fixed;
|
||||
top: 200px;
|
||||
right: 10px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.el_form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.el-input-group__prepend {
|
||||
background-color: #1867b0;
|
||||
color: white;
|
||||
}
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user