Browse Source

预览/个人中心-流程消息

master
xuhuajiao 11 months ago
parent
commit
5f72c7fa1b
  1. 12
      src/api/system/flowable.js
  2. 10
      src/assets/iconfonts/light/iconfont.css
  3. 2
      src/assets/iconfonts/light/iconfont.js
  4. 7
      src/assets/iconfonts/light/iconfont.json
  5. BIN
      src/assets/iconfonts/light/iconfont.ttf
  6. BIN
      src/assets/iconfonts/light/iconfont.woff
  7. BIN
      src/assets/iconfonts/light/iconfont.woff2
  8. 3
      src/store/modules/api.js
  9. 1
      src/store/modules/user.js
  10. 6
      src/views/archivesManage/managementLibrary/module/uploadFile/index.vue
  11. 2
      src/views/collectReorganizi/collectionLibrary/module/archivesInfo/index.vue
  12. 14
      src/views/collectReorganizi/collectionLibrary/module/uploadFile/index.vue
  13. 92
      src/views/preview/index.vue
  14. 57
      src/views/system/user/processCenter/index.vue

12
src/api/system/flowable.js

@ -88,4 +88,14 @@ export function FetchUserTaskAllByDeployId(params) {
params
})
}
export default { FetchInitFlowAll, FetchFlowList, FetchDeloy, FetchSuspendActivate, FetchAllByKey, FetchLeadingOutModelXml, FetchFindFolwImgByModelId, FetchTaskByProcinstId, FetchUserTaskAllByDeployId }
// 个人中心-流程中心
export function FetchMyFlow(params) {
return request({
url: 'api/flowable/myFlow',
method: 'get',
params
})
}
export default { FetchInitFlowAll, FetchFlowList, FetchDeloy, FetchSuspendActivate, FetchAllByKey, FetchLeadingOutModelXml, FetchFindFolwImgByModelId, FetchTaskByProcinstId, FetchUserTaskAllByDeployId, FetchMyFlow }

10
src/assets/iconfonts/light/iconfont.css

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 3966148 */
src: url('iconfont.woff2?t=1707093192160') format('woff2'),
url('iconfont.woff?t=1707093192160') format('woff'),
url('iconfont.ttf?t=1707093192160') format('truetype');
src: url('iconfont.woff2?t=1710738984247') format('woff2'),
url('iconfont.woff?t=1710738984247') format('woff'),
url('iconfont.ttf?t=1710738984247') format('truetype');
}
.iconfont {
@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-attachment:before {
content: "\e6a9";
}
.icon-zhuti:before {
content: "\e686";
}

2
src/assets/iconfonts/light/iconfont.js
File diff suppressed because it is too large
View File

7
src/assets/iconfonts/light/iconfont.json

@ -5,6 +5,13 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "265327",
"name": "附件",
"font_class": "attachment",
"unicode": "e6a9",
"unicode_decimal": 59049
},
{
"icon_id": "1263393",
"name": "主题",

BIN
src/assets/iconfonts/light/iconfont.ttf

BIN
src/assets/iconfonts/light/iconfont.woff

BIN
src/assets/iconfonts/light/iconfont.woff2

3
src/store/modules/api.js

@ -1,5 +1,6 @@
// 适配 Nginx 反向代理
const baseUrl = process.env.VUE_APP_BASE_API === '/' ? window.g.ApiUrl : process.env.VUE_APP_BASE_API
// const baseUrl = process.env.VUE_APP_BASE_API === '/' ? '' : process.env.VUE_APP_BASE_API
const baseUrl = process.env.NODE_ENV === 'production' ? window.g.ApiUrl : process.env.VUE_APP_BASE_API
const api = {
state: {
// 部署包上传

1
src/store/modules/user.js

@ -31,7 +31,6 @@ const user = {
const rememberMe = userInfo.rememberMe
return new Promise((resolve, reject) => {
login(userInfo.username, userInfo.password, userInfo.code, userInfo.uuid).then(res => {
console.log(res.message)
if (res.code !== 500) {
setToken(res.token, rememberMe)
commit('SET_TOKEN', res.token)

6
src/views/archivesManage/managementLibrary/module/uploadFile/index.vue

@ -51,11 +51,13 @@
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建时间" min-width="130" align="center" />
<el-table-column v-if="authUtilize.look || authUtilize.download || authUtilize.print" label="操作" min-width="80" align="center">
<!-- v-if="authUtilize.look || authUtilize.download || authUtilize.print" -->
<el-table-column label="操作" min-width="80" align="center">
<template slot-scope="scope">
<div class="handle-btn">
<el-button v-if="authUtilize.look" class="iconfont icon-sulan" @click="toPreview" />
<el-button v-if="authUtilize.download" class="iconfont icon-xiazai" @click="downloadFile(scope.row)" />
<!-- v-if="authUtilize.download" -->
<el-button class="iconfont icon-xiazai" @click="downloadFile(scope.row)" />
<el-button v-if="authUtilize.print" class="iconfont icon-dayin" />
</div>
</template>

2
src/views/collectReorganizi/collectionLibrary/module/archivesInfo/index.vue

@ -154,6 +154,8 @@ export default {
}
this.$nextTick(() => {
if (this.$refs.uploadFile) {
console.log(this.archivesDetailsData)
this.$refs.uploadFile.parentInfo = this.archivesDetailsData
this.$refs.uploadFile.tableData = []
this.$refs.uploadFile.getFileList()
}

14
src/views/collectReorganizi/collectionLibrary/module/uploadFile/index.vue

@ -167,7 +167,8 @@ export default {
filePath: '', // - path
px: '', // -
nowDate: '', //
previewSrc: '' // src
previewSrc: '', // src
parentInfo: null
}
},
computed: {
@ -178,6 +179,9 @@ export default {
watch: {
arcId: function(newValue, oldValue) {
}
},
mounted() {
},
methods: {
getFileSize(fileSize) {
@ -262,6 +266,7 @@ export default {
},
// list
getFileList() {
console.log('parentInfo', this.parentInfo)
const params = {
'categoryId': this.selectedCategory.id,
'archivesId': this.arcId,
@ -273,8 +278,13 @@ export default {
})
},
toPreview() {
const routeData = this.$router.resolve({ path: '/preview' })
const routeData = this.$router.resolve({
path: '/preview',
query: {
'archiveNo': this.parentInfo.find(item => item.fieldName === 'archive_no').context
}})
window.open(routeData.href, '_blank')
localStorage.setItem('fileTables', JSON.stringify(this.tableData))
},
//
downloadFile(row) {

92
src/views/preview/index.vue

@ -1,6 +1,11 @@
<template>
<div class="box">
<div class="top-container">
<div class="preview-wrapper">
<!-- border-bottom: 1px solid #edeff3; -->
<div class="collect-header" style="justify-content: flex-start; border-top: none; ">
<h4 class="is-file" style="flex:none; width: 120px;">原文</h4>
<span style="font-size: 12px; flex: 1; line-height: 42px;">所属文件{{ parentArchiveNo }}</span>
</div>
<!-- <div class="top-container">
<div class="top-left">
<input
class="file-select"
@ -18,21 +23,32 @@
<el-button v-print="printObj">vue-print打印</el-button>
<el-button type="primary" @click="toImg">转图片打印</el-button>
</div>
</div>
</div> -->
<div class="main-content">
<div class="content-list">原文列表</div>
<div class="content-list">
<h4 class="arc-title">原文列表</h4>
<ul v-if="allFileTables.length!==0" class="file-list">
<li v-for="(item,index) in allFileTables" :key="index">
<span>{{ item.file_name }}</span>
<i class="iconfont icon-attachment" />
</li>
</ul>
<el-empty v-else :image-size="100" />
</div>
<div v-loading="loading" class="content-right">
<!-- <div v-show="loading" class="well loading">
正在加载中请耐心等待...
</div> -->
<div id="printArea" ref="output" class="well-box" />
<div class="water-mask" />
<!-- <vue-office-docx src="http://192.168.99.67:11100/downloadFile/category/AE8B188F0C0314F9BE31B8/82FBCAE96CBC9F50809838/bc3e5591-d600-4121-a977-83d9e06696cb.docx" style="height: 100%; margin: 0; padding: 0" /> -->
</div>
</div>
</div>
</template>
<script>
// http://192.168.99.67:11100/downloadFile/category/0E02F5F5244F99BAD237ED/7139F9C7A268FDA705C7B7/4704A9AF804943CA71A4A4/96A2FA10D76B60DEF43066.png
import { getExtend, readBuffer, render } from '@/components/util'
import { parse } from 'qs'
// import { timeFormate } from '@/utils/index'
@ -40,9 +56,12 @@ import { watermark } from '@/utils/waterMark'
import html2canvas from 'html2canvas' // html2Canvasprint-js
import printJS from 'print-js'
// import VueOfficeDocx from '@vue-office/docx'
export default {
name: 'Preview',
components: {
// VueOfficeDocx
},
props: {
msg: {
@ -84,7 +103,9 @@ export default {
extarCss: ''
},
watermarkInfo: null,
timer: null
timer: null,
parentArchiveNo: null,
allFileTables: []
}
},
created() {
@ -102,6 +123,14 @@ export default {
})
}
},
mounted() {
if (this.$route.query.archiveNo) {
this.parentArchiveNo = this.$route.query.archiveNo
}
if (localStorage.getItem('fileTables')) {
this.allFileTables = JSON.parse(localStorage.getItem('fileTables'))
}
},
methods: {
toImg() { //
html2canvas(this.$refs.output, {
@ -125,7 +154,6 @@ export default {
try {
clearTimeout(this.timer)
const [file] = e.target.files
const fileReader = new FileReader()
fileReader.readAsArrayBuffer(file)
console.log('fileReader', fileReader)
@ -133,7 +161,6 @@ export default {
this.src = fileReader.result
console.log('fileReader22', fileReader.result)
}
const arrayBuffer = await readBuffer(file)
this.last = await this.displayResult(arrayBuffer, file)
@ -245,6 +272,13 @@ export default {
}
</style>
<style lang="scss" scoped>
.preview-wrapper{
background-color: #f6f8fc;
.collect-header{
background-color: #fff;
border-bottom: 1px solid #edeff3;
}
}
.top-container{
display: flex;
justify-content: space-between;
@ -278,18 +312,48 @@ export default {
display: flex;
justify-content: space-between;
width: calc(100%);
height: calc(100vh - 51px);
border-top: 1px solid #ccc;
height: calc(100vh - 75px);
background-color: #fff;
.content-list{
width: 300px;
padding: 10px;
.arc-title{
height: 48px;
line-height: 48px;
text-align: center;
font-size: 16px;
color: #0c0e1e;
background-color: #f3f5f8;
}
.file-list{
height: calc(100% - 48px);
padding: 10px 0;
font-size: 14px;
overflow: hidden;
overflow-y: scroll;
li{
display: flex;
justify-content: space-between;
padding: 0 10px 0 20px;
line-height: 34px;
cursor:default;
& span{
display: block;
margin-right: 4px;
}
&:hover{
background-color: #e8f2ff;
color: #0c0e1e;
}
}
}
}
.content-right{
position: relative;
flex: 1;
height: calc(100vh - 52px);
background: #f2f2f2;
border: 1px solid #ccc;
height: calc(100vh - 75px);
background-color: #f6f8fc;
border: 1px solid #edeff3;
border-top: none;
overflow: hidden;
overflow-y: auto;

57
src/views/system/user/processCenter/index.vue

@ -14,11 +14,11 @@
<div class="process-right">
<div class="head-container" style="display: flex; justify-content: space-between;">
<div>
<el-input v-model="query.keyword" clearable size="small" placeholder="输入关键字搜索" prefix-icon="el-icon-search" class="filter-item" style="width: 225px;" />
<date-range-picker v-model="query.createTime" class="date-item" />
<el-button icon="el-icon-search" size="mini" class="user-search-btn" @click="getTableData">搜索</el-button>
<el-input v-model="title" clearable size="small" placeholder="输入关键字搜索" prefix-icon="el-icon-search" class="filter-item" style="width: 225px;" @keyup.enter.native="crud.toQuery" />
<date-range-picker v-model="blurryTime" class="date-item" />
<el-button icon="el-icon-search" size="mini" class="user-search-btn" @click="crud.toQuery">搜索</el-button>
</div>
<el-select v-model="value" placeholder="请选择" style="width: 97px;">
<el-select v-model="status" placeholder="请选择" style="width: 97px;" @change="crud.toQuery">
<el-option
v-for="item in options"
:key="item.value"
@ -29,8 +29,8 @@
</div>
<el-table
ref="table"
v-loading="isLoading"
:data="tableData"
v-loading="crud.loading"
:data="crud.data"
:row-class-name="cell"
height="500px"
@row-click="clickRowHandler"
@ -76,7 +76,6 @@
<script>
import DateRangePicker from '@/components/DateRangePicker'
import { getUserNotice } from '@/api/system/logs'
import CRUD, { presenter, header, crud } from '@crud/crud'
import detail from './module/detail.vue'
export default {
@ -85,8 +84,8 @@ export default {
mixins: [presenter(), crud(), header()],
cruds() {
return CRUD({
url: 'api/users/notice',
sort: ['createTime,desc'],
url: 'api/flowable/myFlow',
sort: [],
optShow: {}
})
},
@ -94,10 +93,8 @@ export default {
return {
tableData: [],
selections: [],
query: {
createTime: [],
keyword: null
},
blurryTime: null,
title: null,
page: {
total: 0,
size: 10,
@ -114,7 +111,7 @@ export default {
value: '选项3',
label: '全部'
}],
value: '',
status: '',
listIndex: 0
}
},
@ -122,6 +119,17 @@ export default {
this.getTableData()
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.crud.query.title = this.title
this.crud.query.status = this.status
if (this.blurryTime) {
this.crud.query.startTime = this.blurryTime[0]
this.crud.query.endTime = this.blurryTime[1]
} else {
this.crud.query.startTime = null
this.crud.query.endTime = null
}
},
handleClick(index) {
this.listIndex = index
},
@ -130,16 +138,17 @@ export default {
},
getTableData() {
this.isLoading = true
getUserNotice(this.getParams()).then(res => {
this.page.total = res.totalElements
const table = res.content
table.forEach(item => {
item.pushUserName = item.noticeUsers[0].pushUserName
item.isRead = item.noticeUsers[0].isRead
})
this.tableData = table
this.isLoading = false
})
this.crud.toQuery()
// getUserNotice(this.getParams()).then(res => {
// this.page.total = res.totalElements
// const table = res.content
// table.forEach(item => {
// item.pushUserName = item.noticeUsers[0].pushUserName
// item.isRead = item.noticeUsers[0].isRead
// })
// this.tableData = table
// this.isLoading = false
// })
},
getParams() {
const params = {

Loading…
Cancel
Save