Compare commits

...
10 Commits
Author SHA1 Message Date
lixuetao 4e6483c7cc 咨询项目添加 2023-12-18 09:45:44 +08:00
lixuetao f7d26dae07 添加回车搜索 2023-12-13 21:45:12 +08:00
lixuetao f536ef45a9 修复上传文件的限制bug 2023-12-13 21:07:46 +08:00
lixuetao 1382f69759 加入全屏查看的按钮 2023-12-13 21:03:53 +08:00
lixuetao 6e9eaa8b7d 有预览按钮的改为申请下载按钮 2023-12-13 20:08:55 +08:00
lixuetao 840df7766e 处理一些bug 2023-12-13 20:02:49 +08:00
李雪涛 60d6de42d0 Merge branch 'gray_branch' into 'master'
Gray branch

See merge request faw-report-library/faw-report-library-web!7
2023-10-28 02:23:56 +00:00
lixuetao 4449a9d973 添加默哀日灰度样式 2023-10-28 10:22:04 +08:00
lixuetao 26c43aecd7 添加默哀日灰度样式 2023-10-27 15:00:13 +08:00
zer0Black 38ba27776a 用户选择弹框检索条件去掉角色,加上姓名 2023-06-29 17:39:24 +08:00
12 changed files with 422 additions and 63 deletions
+42 -30
View File
@@ -6,11 +6,14 @@
</template>
<script>
import { loading } from './utils/request'
import { basMessage } from '@/utils/Enum/enum'
export default {
name: 'ReportManager',
data () {
return {}
return {
basMessage,
}
},
methods: {
getQueryVariable (r, variable) {
@@ -30,6 +33,27 @@ export default {
closeLoading () {
loading.close()
this.$store.commit('saveIsLoading', false)
},
// 判断是否要把页面置灰
getGray () {
let that = this
this.$api.setting.getOneSetting(that.basMessage['gray'].value).then(res=>{
if (res.ok) {
let obj=res.data;
if(!obj || !obj.configValue){
obj = {
configValue : '0'
}
}
if (obj.configValue === '1') {
document.querySelector('body').classList.add('setGray')
} else {
document.querySelector('body').classList.remove('setGray')
}
} else {
this.$message.error(res.respMsg)
}
})
}
},
created () {
@@ -41,35 +65,14 @@ export default {
action: 'aplus.setMetaInfo',
arguments: ['Info ', true]
});
const _that = this
// var path = window.location.search
// var ticket = this.getQueryVariable(path, 'ticket')
// var loginType = this.getQueryVariable(path, 'loginType')
// if (loginType == 1) {
// window.open('http://10.12.1.78:9090/cas/login?service=http://192.168.144.22:9966/home', '_self');
// } else {
// // if (ticket) {
// // var params = {
// // service: 'http://localhost:8080/home',
// // ticket: ticket
// // }
// // this.$api.login.loginByTicket(params).then(res => {
// // if (res.respCode !== '0') {
// // // this.verifyCode();
// // return this.$message.error(res.data.message);
// // }
// // this.$message.success('登录成功');
// // _that.$store.commit('saveUserInfo', res.data);
// // _that.$router.push('/home');
// // }).catch(_ => {
// // // this.verifyCode();
// // this.$router.push('/');
// // })
// //
// // } else {
// // this.$router.push('/');
// // }
// }
},
mounted() {
debugger
this.$bus.$on('getGray', () => {
this.getGray()
})
// @msg: 刷新后重定向
this.getGray();
}
}
</script>
@@ -544,4 +547,13 @@ export default {
.ql-font-sans-serif {
font-family: "sans-serif";
}
.setGray{
filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
}
</style>
+13 -12
View File
@@ -326,23 +326,24 @@
@keyup.enter.native="handleSearch">
<el-row :gutter="24">
<!-- <el-col :xl="8" :lg="8">-->
<!-- <el-form-item label="角色名" class="search-item">-->
<!-- &lt;!&ndash; <el-input :placeholder="'根据角色名查询'" class="search-item" v-model="searchForm.roleName"/>&ndash;&gt;-->
<!-- <el-select v-model="searchForm.roleName" class="icon-auth" placeholder="请选择角色名">-->
<!-- <el-option label="全部" value=""></el-option>-->
<!-- <template v-for="item in roleList">-->
<!-- <el-option :label="item.rname" :value="item.rname" :key="item.rid"></el-option>-->
<!-- </template>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :xl="8" :lg="8">
<el-form-item label="角色名" class="search-item">
<!-- <el-input :placeholder="'根据角色名查询'" class="search-item" v-model="searchForm.roleName"/>-->
<el-select v-model="searchForm.roleName" class="icon-auth" placeholder="请选择角色名">
<el-option label="全部" value=""></el-option>
<template v-for="item in roleList">
<el-option :label="item.rname" :value="item.rname" :key="item.rid"></el-option>
</template>
</el-select>
<el-form-item label="名" class="search-item">
<el-input :placeholder="'请输入姓名'" v-model="searchForm.uname"/>
</el-form-item>
</el-col>
<el-col :xl="8" :lg="8">
<el-form-item label="用户名" class="search-item">
<!-- <el-input-->
<!-- v-model="searchForm.uname"-->
<!-- placeholder="根据姓名查询"-->
<!-- clearable></el-input>-->
<el-input :placeholder="'请输入用户名'" v-model="searchForm.account"/>
</el-form-item>
</el-col>
+7 -1
View File
@@ -33,7 +33,13 @@ const routes = [
}
}
]
}
},
// 全屏报告
{
path: '/report/fullscreen',
name: 'fullscreen',
component: () => import('../../views/Report/ReportFullscreenView.vue')
},
]
export default routes
+2 -1
View File
@@ -12,7 +12,8 @@ export const PERMISSION = [
// {name:"水印前缀" ,value: "WATERMARK_PREFIX"}
// ])
export const basMessage = new Esenum({
mark: {name: "水印前缀", value: "WATERMARK_PREFIX",index:0}
mark: {name: "水印前缀", value: "WATERMARK_PREFIX",index:0},
gray: {name: "黑白模式", value: "SET_GRAY",index:1}
})
+9 -3
View File
@@ -55,8 +55,11 @@
<!-- </div>-->
<div class="report-download">
<span>报告详情</span>
<el-button v-if="row.downPower==1" @click="downloadRow(file)"
:disabled="showText && !isExcel" size="mini" class="checkBtn">报告下载</el-button>
<div>
<el-button @click="fullscreenView(file)" size="mini" class="checkBtn">全屏查看</el-button>
<el-button v-if="row.downPower==1" @click="downloadRow(file)"
:disabled="showText && !isExcel" size="mini" class="checkBtn">报告下载</el-button>
</div>
</div>
<div class="preview-box" v-watermark="{ text: watermarkText }">
<div class="preview-list scroll-myself" >
@@ -278,6 +281,10 @@ export default {
}
},
// 跳转到新页签单独查看pdf
fullscreenView(){
window.open('/report/fullscreen?id='+this.$route.query.id+'&reportId='+ this.row.id)
},
// 下载
downloadRow(row) {
// this.$confirm('此操作将下载所选数据文件, 是否继续?', '提示', {
@@ -302,7 +309,6 @@ export default {
this.$api.report.getReportDetail(this.reportId).then(res => {
this.row = res.data
this.isAdmin = this.$store.getters.userInfo.usid==this.row.createUserId
// 需要给分数/2
this.handleFile(this.row.fileList[0])
})
},
+298
View File
@@ -0,0 +1,298 @@
<template>
<div class="content-height report-detail">
<div class="preview-box" v-watermark="{ text: watermarkText }">
<div class="preview-list scroll-myself" >
<div class="fileName" v-for="item in row.fileList" :title="item.fileName" @click="handleFile(item)"
:class="{'bgColor':file.fileId==item.fileId}">{{item.fileName}}</div>
</div>
<el-empty class="preview-content" description="excel不可预览" v-if="showText"></el-empty>
<div class="preview-content" v-html="content" v-else></div>
</div>
</div>
</template>
<script>
export default {
name: 'ReportDetail',
data() {
return {
showText:false,
file:{},
report: {},
watermarkText: '', // 水印
content: '',
row: {},
reportId: ''
}
},
methods: {
// 预览
previewRow(fileId,reportId) {
// this.watermarkText = `${this.$store.state.userInfo.usname} ${formatDate(+new Date(), 'yyyy年MM月dd日 hh:mm:ss')}`
// this.row = JSON.parse(this.$route.query.row)
this.$api.report.reportGetReportHtmlId({fileId: fileId,reportId:reportId}).then(({data}) => {
this.content = data.content
})
},
handleFile(row){
this.file=row
let lastName=row.fileName.split('.')
let list=['xls','xlsx','XLS','XLSX']
if(list.indexOf(lastName[lastName.length-1])>-1){
this.showText=true
}else{
this.showText=false
this.previewRow(this.file.fileId,this.row.id)
}
},
// 跳转到新页签单独查看pdf
fullscreenView(row){
},
// 获取详情
getReportDetail() {
this.$api.report.getReportDetail(this.reportId).then(res => {
this.row = res.data
this.handleFile(this.row.fileList[0])
})
},
},
mounted() {
this.reportId = this.$route.query.reportId
this.getReportDetail()
}
}
</script>
<style lang="scss" scoped>
.report-detail {
overflow: hidden;
.title {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
border-bottom: 1px solid #EBEEF5;
height: 42px;
line-height: 42px;
margin: 0 18px 0 22px;
text-align: center;
span {
font-size: 16px;
font-weight: 600;
color: #262626;
}
}
.desc {
padding: 11px 26px 6px 48px;
.desc-item {
display: flex;
justify-content: flex-start;
align-items: flex-start;
margin-bottom: 12px;
label {
display: inline-block;
height: 19px;
line-height: 19px;
font-size: 14px;
font-weight: 400;
color: #595959;
width: 85px;
margin-right: 9px;
}
div, p {
flex: 1;
font-size: 14px;
font-weight: 400;
color: #434343;
word-break: break-all;
}
p {
line-height: 20px;
text-align: justify;
}
}
}
.report-download {
height: 40px;
background: #F2F6FC;
border: 1px solid #EBEEF5;
margin: 10px 14px 0 13px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 7px 0 9px;
span {
font-size: 16px;
font-weight: 500;
color: #262626;
}
}
.preview-box {
// 定位使水印不溢出元素
display: flex;
position: relative;
// 居中
//max-height: 800px;
width: calc(100% - 13px - 14px);
margin-left: 13px;
//min-height: 500px;
.preview-list{
width: 200px;
margin-top: 10px;
//padding-right: 5px;
max-height: 700px;
overflow: auto;
.fileName{
width: 100%;
height: 30px;
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
white-space: nowrap;
cursor: pointer;
color: #434343;
padding: 0px 10px;
line-height: 28px;
}
}
.preview-content {
//margin: 0 14px 0 13px;
border-left: 2px solid #ccc;
//max-height: 700px;
height: calc(100vh);
padding-bottom: 11px;
overflow: auto;
width: calc(100% - 200px);
img {
max-width: 100% !important;
}
table {
margin: 0 auto;
}
}
}
.report-jug {
display: flex;
justify-content: space-between;
padding: 10px;
.report-jug-left {
display: flex;
&>div{
margin-right: 10px;
}
::v-deep .el-rate__item{
vertical-align: inherit;
}
}
}
.juggle_box {
padding: 10px;
.all_juggle {
margin-top: 20px;
display: flex;
width: 100%;
border: 1px solid #e6f6fe;
min-height: 150px;
.juggle_left {
width: 15%;
text-align: center;
border-right: 1px solid #e6f6fe;
color: #434343;
.nameCir {
background-color: pink;
width: 60px;
height: 60px;
border-radius: 50%;
text-align: center;
line-height: 60px;
color: #fff;
font-size: 18px;
margin: 20px calc(50% - 30px);
}
}
.juggle_right {
position: relative;
width: 85%;
padding: 10px 10px 40px;
.content {
width: 100%;
color: #434343;
margin-bottom: 5px;
word-break: break-all;
}
.bottom {
position: absolute;
display: flex;
justify-content: space-between;
width: calc(100% - 40px);
bottom: 10px;
left: 20px;
height: 35px;
color: #434343;
.time {
line-height: 35px;
color: #858585;
}
.delbtn {
//vertical-align: center;
}
}
}
}
.fabiaoBtn {
margin-left: 20px;
height: 100%;
}
}
.isBackground {
background-color: pink;
}
}
.pointclick {
cursor: pointer;
}
.showLimit ::v-deep .el-textarea .el-input__count{
width: 98%;
}
.bgColor{
background-color: #F2F6FC;
}
.checkBtn {
padding: 5px 20px !important;
background-color:#1890FF;
color: #fff;
}
.el-button.is-disabled, .el-button.is-disabled:hover, .el-button.is-disabled:focus{
background-color: #82bffc;
color: #fff;
}
</style>
+5 -5
View File
@@ -8,13 +8,13 @@
<el-col :span="6">
<div class="tag-item">
<label class="tag-title">全文检索:</label>
<el-input v-model="q.keyContent" placeholder="请输入搜索词"></el-input>
<el-input @keyup.enter.native="search" v-model="q.keyContent" placeholder="请输入搜索词"></el-input>
</div>
</el-col>
<el-col :span="6">
<div class="tag-item">
<label class="tag-title">报告年份</label>
<el-select v-model="q.year" multiple collapse-tags placeholder="请选择报告年份">
<el-select @change="search" v-model="q.year" multiple collapse-tags placeholder="请选择报告年份">
<template v-for="item in yearList">
<el-option :label="item" :value="item" :key="item"></el-option>
</template>
@@ -24,7 +24,7 @@
<el-col :span="6">
<div class="tag-item">
<label class="tag-title">报告名称:</label>
<el-input v-model="q.name" placeholder="请输入报告名称"></el-input>
<el-input @keyup.enter.native="search" v-model="q.name" placeholder="请输入报告名称"></el-input>
</div>
</el-col>
@@ -127,8 +127,8 @@
<!-- <el-button type="text" v-if="!row.collect" @click="collectReport(row,'n')">取消收藏</el-button>-->
<el-button type="text" v-if="row.power == 1 ||row.power == 2" @click="goReportDetail(row)">预览</el-button>
<el-button type="text" v-if="row.power == 3 || row.power == 2 " @click="downloadRow(row)">下载</el-button>
<el-button type="text" v-if="row.power !== 2 && !isAdmin" @click="permissionApp(row)">申请权限</el-button>
<el-button type="text" v-if="row.power === 1 && !isAdmin" @click="permissionApp(row)">申请下载</el-button>
<el-button type="text" v-else-if="row.power !== 2 && !isAdmin" @click="permissionApp(row)">申请权限</el-button>
</template>
</vxe-column>
+30 -7
View File
@@ -12,6 +12,23 @@
<el-button type="primary" @click="save('mark',0)">保存</el-button>
</el-col>
</el-row>
<el-row class="inputForm" >
<el-col :span="6">
<div class="tag-item">
<label class="tag-title">黑白模式:</label>
<el-switch
v-model="formData.grayValue"
active-value="1"
inactive-value="0"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</div>
</el-col>
<el-col :span="2" align="right" class="tag-btns">
<el-button type="primary" @click="save('gray',1)">保存</el-button>
</el-col>
</el-row>
</div>
</template>
@@ -23,10 +40,11 @@ export default {
return {
basMessage,
formData:{
markValue:''
markValue:'',
grayValue:''
},
row0:{}
row0:{},
row1:{}
}
},
created() {
@@ -38,10 +56,14 @@ export default {
this.$api.setting.getAllSetting().then(res=>{
if(res.data.length>0){
res.data.forEach( item=>{
switch (item.configKey){
case this.basMessage['mark'].value :
this.formData.markValue=item.configValue
this['row'+this.basMessage['mark'].index] = item
if (item.configKey == this.basMessage['mark'].value){
this.formData.markValue=item.configValue
this['row'+this.basMessage['mark'].index] = item
}
if (item.configKey == this.basMessage['gray'].value){
this.formData.grayValue=item.configValue
this['row'+this.basMessage['gray'].index] = item
}
})
}else{
@@ -57,6 +79,7 @@ export default {
}
this.$api.setting.saveMarket(param).then(res=>{
this.$message.success(res.data)
this.$bus.$emit('getGray')
})
},
}
@@ -78,6 +78,15 @@
</el-col>
</el-row>
<el-row>
<el-col :span="10" :offset="1">
<el-form-item label="咨询项目:" prop="mainContent">
<el-input :disabled="formControl" v-model="form.consultingProject" placeholder="咨询项目"
maxlength="1000"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22" :offset="1">
<el-form-item label="内容摘要:" prop="mainContent">
@@ -118,7 +127,7 @@
<el-dialog title="上传文件" :visible.sync="dialogFile" width="40%" :close-on-click-modal="false"
:close-on-press-escape="false" modal-append-to-body append-to-body>
<el-upload :disabled="formControl" action="/library/api/report/uploadFile" :show-file-list="false"
:before-upload="beforeUploadFile" accept=".xls,.xlsx,.XLS,.XLSX,.pdf,.PDF,.ppt,.PPT"
:before-upload="beforeUploadFile" accept=".xls,.xlsx,.XLS,.XLSX,.pdf,.PDF,.ppt,.PPT,pptx,.PPTX,.doc,.docx,DOC,.DOCX"
:file-list="fileList" multiple :on-success="onSuccess"
:on-preview="handlePreview"
:class="{'disable':formControl}">
+2 -2
View File
@@ -271,8 +271,8 @@ export default {
privacyLevel:'',
tags:'',
mainContent:'',
fileId:[],
fileName:[],
fileId:'',
fileName:'',
fileList:[]
}
this.applicationForm = {
@@ -141,6 +141,9 @@ export default {
submitJson:''
}
let temp=JSON.parse(this.check.submitJson)
if (temp == null){
temp = {}
}
temp.flag = this.flag
temp.approvalOpinion=this.approveForm.approvalOpinion
obj.submitJson =JSON.stringify(temp)
@@ -17,7 +17,7 @@
return {
modelId : '',
name: '',
actUrl: 'http://10.0.10.173:7060/modeler.html?modelId='
actUrl: 'http://localhost:7060/modeler.html?modelId='
}
},
created() {