sasp-admin 0.2.63 → 0.2.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +38 -31
- package/package.json +1 -1
- package/router.js +5 -1
- package/src/assets/font/iconfont.css +1902 -1846
- package/src/assets/font/iconfont.eot +0 -0
- package/src/assets/font/iconfont.js +1 -1
- package/src/assets/font/iconfont.svg +959 -825
- package/src/assets/font/iconfont.ttf +0 -0
- package/src/assets/font/iconfont.woff +0 -0
- package/src/assets/js/api/apiAdmin.js +10 -0
- package/src/assets/js/global/dataGlobal.js +7 -3
- package/src/assets/js/global/userGlobal.js +9 -3
- package/src/components/complexViewRendering.vue +214 -198
- package/src/components/ifmLink.vue +20 -3
- package/src/components/public/data/plDataSelect.vue +8 -6
- package/src/components/public/org/sysOrgPosUserSelect.vue +56 -17
- package/src/components/public/upload/images/ofd.png +0 -0
- package/src/components/public/upload/plImage.vue +3 -1
- package/src/components/public/upload/plUpload.vue +167 -40
- package/src/components/public/upload/preview/OfdPreview.vue +223 -0
- package/src/components/public/upload/preview/officeViewer.vue +116 -0
- package/src/components/public/upload/preview/pdfPreview.vue +91 -0
- package/src/{views → components/public/upload}/preview/pdfViewer.vue +1 -1
- package/src/views/VueMenuView.vue +11 -13
- package/src/views/data/dataManage.vue +51 -5
- package/src/views/event/eventManager/vueEventDiy.vue +4 -6
- package/src/views/log/loginlog/logManageDevOrSup.vue +8 -5
- package/src/views/log/loginlog/logManageEnt.vue +96 -55
- package/src/views/log/loginlog/logManageGov.vue +8 -5
- package/src/views/menu/component/menuManageComponent.vue +3 -5
- package/src/views/menuRouter/menuView.vue +226 -117
- package/src/views/menuRouter/urlMenuRouter.vue +13 -16
- package/src/views/org/entOrgTree.vue +1 -3
- package/src/views/org/js/sysOrgUserDetailMixins.js +646 -0
- package/src/views/org/sysEntOrgUserDetail.vue +10 -632
- package/src/views/org/sysOrgDimension.vue +4 -8
- package/src/views/org/sysOrgPosUserDetail.vue +4 -619
- package/src/views/org/sysOrgTree.vue +2 -4
- package/src/views/param/sysParam.vue +2 -0
- package/src/views/resources/resRouter/resView.vue +9 -11
- package/src/views/resources/tabs/comp/pageResRegister.vue +3 -5
- package/src/views/resources/tabs/dataResources.vue +3 -1
- package/src/views/resources/tabs/pageResources.vue +3 -1
- package/src/views/role/authRole/component/allocateSetting.vue +2 -589
- package/src/views/role/authRole/component/authSetting.vue +2 -597
- package/src/views/role/authRole/component/js/authMixins.js +622 -0
- package/src/views/role/commonRole/commonRole.vue +122 -3
- package/src/views/role/commonRole/compoment/commonSetting.vue +4 -6
- package/src/views/role/commonRole/compoment/commonSettingAdjust.vue +2 -89
- package/src/views/role/commonRole/compoment/commonSettingNew.vue +13 -97
- package/src/views/role/commonRole/compoment/js/commonSettingMixins.js +90 -0
- package/src/views/role/commonRole/compoment/roleMenuPower.vue +17 -2
- package/src/views/role/commonRole/compoment/roleMenuSetting.vue +12 -5
- package/src/views/sms/sendSms.vue +1 -1
- package/src/views/threeinone/init/safeInitRegion.vue +2 -4
- package/src/views/threeinone/safeManager.vue +1 -0
- package/src/views/threeinone/safeOrgSpv.vue +360 -337
- package/src/views/threeinone/safeSpvEconView.vue +37 -17
- package/src/views/uploadManage/uploadManage.vue +133 -0
- package/src/views/user/empowerUser/empowerUserListViewMenuTree.vue +6 -2
- package/src/views/user/stationUserManage.vue +3 -5
- package/src/views/user/userManage.vue +99 -3
- package/src/views/user/userMangement.vue +4 -6
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
<!--外部超链接-->
|
|
2
2
|
<template>
|
|
3
|
-
<div
|
|
3
|
+
<div v-if="davpUrl" ref="wujiedavpRef" style="width: 100%;height: 100%">
|
|
4
|
+
<wujie-davp-view :url="davpUrl" degrade>
|
|
5
|
+
|
|
6
|
+
</wujie-davp-view>
|
|
7
|
+
</div>
|
|
8
|
+
<div id="ifmLinkContrainer" v-else>
|
|
4
9
|
<div style="position: absolute;top:0;bottom:0;left:0;right:0;box-sizing: border-box;"
|
|
5
10
|
v-loading="loading"
|
|
6
11
|
element-loading-text="正在加载,请稍后..."
|
|
@@ -25,16 +30,28 @@
|
|
|
25
30
|
url : this.linkUrl ? this.linkUrl : '',
|
|
26
31
|
loading: true,
|
|
27
32
|
showIframe: false,
|
|
33
|
+
davpUrl:""
|
|
28
34
|
}
|
|
29
35
|
},
|
|
30
36
|
watch: {
|
|
31
37
|
linkUrl() {
|
|
32
38
|
this.url = this.linkUrl ? this.linkUrl : '';
|
|
39
|
+
this.loadWujieDavpUrl();
|
|
33
40
|
},
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
},
|
|
42
|
+
created() {
|
|
43
|
+
this.loadWujieDavpUrl();
|
|
36
44
|
},
|
|
37
45
|
methods: {
|
|
46
|
+
loadWujieDavpUrl(){
|
|
47
|
+
if(this.url && (this.url.indexOf('/dashbarodPreview') > -1 || this.url.indexOf('/reportPreview') > -1)){
|
|
48
|
+
if (this.url.indexOf('/dashbarodPreview') > -1) {
|
|
49
|
+
this.davpUrl = this.url.substring(this.url.indexOf('dashbarodPreview'));
|
|
50
|
+
} else {
|
|
51
|
+
this.davpUrl = this.url.substring(this.url.indexOf('reportPreview'));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
38
55
|
onLoad() {
|
|
39
56
|
this.loading = false;
|
|
40
57
|
this.showIframe = true;
|
|
@@ -832,14 +832,16 @@
|
|
|
832
832
|
*/
|
|
833
833
|
changeData(label,val){
|
|
834
834
|
this.dataValue = val;
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
835
|
+
const value = this.saveType == "text" ? label : val;
|
|
836
|
+
this.$emit('input', value);
|
|
837
|
+
this.$emit('change', value);
|
|
838
|
+
this.change && this.change(value, label);
|
|
839
|
+
if(this.changeField){
|
|
840
|
+
this.changeField(this.field, value);
|
|
841
|
+
}
|
|
842
|
+
if(this.formData && this.backfillField){
|
|
840
843
|
this.$set(this.formData, this.backfillField, label);
|
|
841
844
|
}
|
|
842
|
-
|
|
843
845
|
},
|
|
844
846
|
/**
|
|
845
847
|
* 远程连接树数据回调
|
|
@@ -48,6 +48,13 @@
|
|
|
48
48
|
<el-form-item label="用户名称">
|
|
49
49
|
<el-input v-model="crud.searchForm.userNamePinYin" placeholder="中文、拼音全拼、简拼"></el-input>
|
|
50
50
|
</el-form-item>
|
|
51
|
+
<el-form-item label="查看已选择用户">
|
|
52
|
+
<el-radio-group v-model="crud.searchForm.showCheckedUser" :disabled="checkedUser.length === 0"
|
|
53
|
+
style="margin-right: 10px">
|
|
54
|
+
<el-radio label="1">是</el-radio>
|
|
55
|
+
<el-radio label="0">否</el-radio>
|
|
56
|
+
</el-radio-group>
|
|
57
|
+
</el-form-item>
|
|
51
58
|
<el-form-item>
|
|
52
59
|
<el-button type="primary" icon="el-icon-search" @click="doSearch()">查询</el-button>
|
|
53
60
|
<el-button icon="el-icon-close" @click="resetSearch()">清空</el-button>
|
|
@@ -61,9 +68,10 @@
|
|
|
61
68
|
@selection-change="selectChange" style="width: 100%;height: 100%" @row-click="rowClick">
|
|
62
69
|
<el-table-column type="selection" width="40" align="center"></el-table-column>
|
|
63
70
|
<el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
|
|
64
|
-
<el-table-column prop="userName" label="用户名称" align="center"></el-table-column>
|
|
65
|
-
<el-table-column prop="
|
|
66
|
-
<el-table-column prop="
|
|
71
|
+
<el-table-column prop="userName" label="用户名称" align="center" min-width="60"></el-table-column>
|
|
72
|
+
<el-table-column prop="userAccount" label="用户账号" align="center" min-width="60"></el-table-column>
|
|
73
|
+
<el-table-column prop="orgName" label="所属组织" :formatter="formatterOrgName" align="center" min-width="200"></el-table-column>
|
|
74
|
+
<el-table-column prop="posName" label="所属岗位" align="center" min-width="100"></el-table-column>
|
|
67
75
|
</el-table>
|
|
68
76
|
</el-main>
|
|
69
77
|
<el-footer style="height: 40px">
|
|
@@ -145,6 +153,7 @@
|
|
|
145
153
|
orgDims:{type:String,default:""}, // 逗号分隔的维度字符串,也就是roleType
|
|
146
154
|
orgTreeIds:{type:String,default:""}, // 过滤组织的条件
|
|
147
155
|
defaultChooseIds:{type:String,default:""}, // 已选择的人员信息
|
|
156
|
+
parentChooseDataIds:{type:String,default:""}, // 已选择的父级级联ID
|
|
148
157
|
defaultOrgIds:{type:String,default:""},
|
|
149
158
|
defaultPosIds:{type:String,default:""},
|
|
150
159
|
defaultUserIds:{type:String,default:""},
|
|
@@ -170,9 +179,9 @@
|
|
|
170
179
|
vue: this,
|
|
171
180
|
entityName: "sysOrgPosUser",
|
|
172
181
|
searchUrl: this.api.sysOrgPosUser.findPageParam,
|
|
173
|
-
noClearSearchColumns:["orgTreeId","posTreeId","noneUserId","authUserType",
|
|
182
|
+
noClearSearchColumns:["orgTreeId","posTreeId","noneUserId","authUserType","showCheckedUser",
|
|
174
183
|
"created","empowerId","commonUserType","filterUserSource","userLinkIdPam",'filterLoginUser','tenantId'],
|
|
175
|
-
searchForm:{"orgTreeId":"$$$$$","tenantId":this.tenantId}, // 初始化时虽然不会产生数据因为nosearch,但是输入跳转会触发搜索,当前没条件就会生成所有数据,加上这个不查数据,树节点点击时清空它了
|
|
184
|
+
searchForm:{"orgTreeId":"$$$$$","tenantId":this.tenantId,showCheckedUser:"0"}, // 初始化时虽然不会产生数据因为nosearch,但是输入跳转会触发搜索,当前没条件就会生成所有数据,加上这个不查数据,树节点点击时清空它了
|
|
176
185
|
initNoSearch:true,
|
|
177
186
|
}),
|
|
178
187
|
defaultProps:{children: 'children', label: 'name'}, // 树组件的配置信息
|
|
@@ -368,6 +377,7 @@
|
|
|
368
377
|
vm.initChooseInfo(); // 初始化已选择的内容
|
|
369
378
|
});
|
|
370
379
|
}else{
|
|
380
|
+
vm.chooseCascadeParentDataIds = vm.parentChooseDataIds || "";
|
|
371
381
|
vm.initChooseInfo();
|
|
372
382
|
}
|
|
373
383
|
},
|
|
@@ -502,22 +512,20 @@
|
|
|
502
512
|
let vm = this;
|
|
503
513
|
vm.posArr.forEach(elem =>{ //先比较额外数据岗位
|
|
504
514
|
if(vm.openLowLevelCheckbox){
|
|
505
|
-
if(vm.
|
|
506
|
-
|
|
507
|
-
|
|
515
|
+
if(vm.expandOrignArr.join(",").indexOf(elem.id)!=-1){
|
|
516
|
+
//设置一级节点为可选中状态
|
|
517
|
+
vm.$set(elem,'disabled',false);
|
|
518
|
+
}else {
|
|
519
|
+
if(vm.chooseCascadeDataIds.indexOf(elem["id"])!= -1 ){
|
|
520
|
+
//则设置其子节点也
|
|
521
|
+
vm.$set(elem,'disabled',true);
|
|
522
|
+
}else{
|
|
508
523
|
vm.$set(elem,'disabled',false);
|
|
509
|
-
}else {
|
|
510
|
-
if(vm.chooseCascadeDataIds.indexOf(elem["id"])!= -1 ){
|
|
511
|
-
//则设置其子节点也
|
|
512
|
-
vm.$set(elem,'disabled',true);
|
|
513
|
-
}else{
|
|
514
|
-
vm.$set(elem,'disabled',false);
|
|
515
|
-
}
|
|
516
524
|
}
|
|
525
|
+
}
|
|
517
526
|
|
|
518
|
-
|
|
527
|
+
vm.$set(vm.isChecked, elem.id, (vm.chooseCascadeParentDataIds.indexOf(elem.id)!= -1)); //设置默认选中状态
|
|
519
528
|
|
|
520
|
-
}
|
|
521
529
|
}
|
|
522
530
|
});
|
|
523
531
|
data.forEach(function (elem) {
|
|
@@ -779,6 +787,11 @@
|
|
|
779
787
|
</el-tooltip>
|
|
780
788
|
</span>
|
|
781
789
|
);
|
|
790
|
+
if(vm.isChecked[data.id]){
|
|
791
|
+
this.$nextTick(() => {
|
|
792
|
+
vm.dChange(data,true);
|
|
793
|
+
})
|
|
794
|
+
}
|
|
782
795
|
}
|
|
783
796
|
return MyComempte;
|
|
784
797
|
},
|
|
@@ -938,6 +951,13 @@
|
|
|
938
951
|
return item["id"] != id;
|
|
939
952
|
});
|
|
940
953
|
vm.$refs.orgSelectTree.setTreeCheckedKeys(id,false,false);
|
|
954
|
+
let temple = vm.$refs.orgSelectTree;
|
|
955
|
+
if(vm.isChecked[id]){
|
|
956
|
+
vm.isChecked[id] = false;
|
|
957
|
+
let nodesMap = temple.getAllNode(); // 节点集合
|
|
958
|
+
let currentData = nodesMap[id].data;
|
|
959
|
+
this.dChange(currentData,false);
|
|
960
|
+
}
|
|
941
961
|
}
|
|
942
962
|
},
|
|
943
963
|
removePos(id){
|
|
@@ -987,6 +1007,8 @@
|
|
|
987
1007
|
let crud = vm.crud;
|
|
988
1008
|
let objData = {};
|
|
989
1009
|
let searchForm = crud.searchForm;
|
|
1010
|
+
vm.crud.searchForm["checkedUserIds"] = "";
|
|
1011
|
+
vm.crud.searchForm["showCheckedUser"] = "0";
|
|
990
1012
|
crud.noClearSearchColumns && crud.noClearSearchColumns.forEach(function (key) {
|
|
991
1013
|
objData[key] = searchForm[key];
|
|
992
1014
|
});
|
|
@@ -999,6 +1021,15 @@
|
|
|
999
1021
|
if(vm.tenantId){
|
|
1000
1022
|
vm.crud.searchForm["tenantId"] = vm.tenantId;
|
|
1001
1023
|
}
|
|
1024
|
+
if(this.crud.searchForm.showCheckedUser === "1"){
|
|
1025
|
+
let checkedUserIds = [];
|
|
1026
|
+
(vm.checkedUser || []).forEach(item => {
|
|
1027
|
+
checkedUserIds.push(item["userId"]);
|
|
1028
|
+
})
|
|
1029
|
+
vm.crud.searchForm["checkedUserIds"] = checkedUserIds.join(",");
|
|
1030
|
+
}else{
|
|
1031
|
+
vm.crud.searchForm["checkedUserIds"] = "";
|
|
1032
|
+
}
|
|
1002
1033
|
vm.crud.search(vm.checkSelectedMsg);
|
|
1003
1034
|
},
|
|
1004
1035
|
rowClick(row){ // table行点击事件
|
|
@@ -1186,6 +1217,14 @@
|
|
|
1186
1217
|
}
|
|
1187
1218
|
})
|
|
1188
1219
|
|
|
1220
|
+
},
|
|
1221
|
+
|
|
1222
|
+
formatterOrgName(row, column, cellValue){
|
|
1223
|
+
if(row["orgParentTreeName"]){
|
|
1224
|
+
return row["orgParentTreeName"] + "->" + row["orgName"];
|
|
1225
|
+
}else{
|
|
1226
|
+
return row["orgName"];
|
|
1227
|
+
}
|
|
1189
1228
|
}
|
|
1190
1229
|
|
|
1191
1230
|
}
|
|
Binary file
|
|
@@ -33,7 +33,9 @@
|
|
|
33
33
|
},
|
|
34
34
|
async getImgInfo(vm){
|
|
35
35
|
const res = await vm.axios.post(vm.api.baseUploadUrl+'viewFile', {fkId: vm.fkid});
|
|
36
|
-
if(!res || !res.data || res.data.constructor !== Array || res.data.length <= 0)
|
|
36
|
+
if(!res || !res.data || res.data.constructor !== Array || res.data.length <= 0) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
37
39
|
return res.data;
|
|
38
40
|
}
|
|
39
41
|
};
|
|
@@ -30,6 +30,12 @@
|
|
|
30
30
|
<div class="pl-file-list-item-text">
|
|
31
31
|
{{ file.name }}
|
|
32
32
|
</div>
|
|
33
|
+
<div class="pl-file-list-bottom item-text-other" style="margin-top: -8px;" v-if="file.fileName2">
|
|
34
|
+
<div class="file-list-bottom-box">
|
|
35
|
+
<span class="date-badge" v-if="file.isThisYearFile">{{ file.isThisYearFile ? 'new' : '' }}</span>
|
|
36
|
+
<div class="file-list-bottom-cont">{{ file.fileName2 }}</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
33
39
|
<div class="pl-file-list-item-btn pos-abs-full">
|
|
34
40
|
<div class="top-btn" @click.stop="tempRemove(file)" v-if="!isDisabled && !isView">
|
|
35
41
|
<i class="el-icon-close btn-close" title="删除"></i>
|
|
@@ -52,6 +58,9 @@
|
|
|
52
58
|
</div>
|
|
53
59
|
</div>
|
|
54
60
|
</div>
|
|
61
|
+
<div style='width: 135px'></div>
|
|
62
|
+
<div style='width: 135px'></div>
|
|
63
|
+
<div style='width: 135px'></div>
|
|
55
64
|
</div>
|
|
56
65
|
|
|
57
66
|
<el-dialog class="pl-upload-temp-dialog" :visible.sync="tempDialogVisible"
|
|
@@ -74,7 +83,9 @@
|
|
|
74
83
|
title="水印选择" append-to-body
|
|
75
84
|
:visible.sync="waterdialogVisible"
|
|
76
85
|
width="300px">
|
|
77
|
-
<el-select v-model="checkWaterMarkText" placeholder="请选择"
|
|
86
|
+
<el-select v-model="checkWaterMarkText" placeholder="请选择"
|
|
87
|
+
:allow-create="waterMakeConfig.isDiyWater==true" :filterable="waterMakeConfig.isDiyWater==true"
|
|
88
|
+
>
|
|
78
89
|
<el-option
|
|
79
90
|
v-for="item in (waterMakeConfig.waterArr||[])"
|
|
80
91
|
:key="item"
|
|
@@ -87,6 +98,21 @@
|
|
|
87
98
|
<el-button type="primary" @click="downLoadWaterMarkFile">确 定</el-button>
|
|
88
99
|
</span>
|
|
89
100
|
</el-dialog>
|
|
101
|
+
<!-- <el-dialog-->
|
|
102
|
+
<!-- title="附件预览" append-to-body top="0"-->
|
|
103
|
+
<!-- :visible.sync="ofddialogVisible" custom-class="pl-upload-preview-dialog"-->
|
|
104
|
+
<!-- width="100%" height="100%">-->
|
|
105
|
+
<!-- <ofd-preview :file-url="filePreview.fileUrl" :title="filePreview.fileTitle" v-if="ofddialogVisible"></ofd-preview>-->
|
|
106
|
+
<!-- </el-dialog>-->
|
|
107
|
+
<el-dialog
|
|
108
|
+
title="附件预览" append-to-body top="0" ref="docxRef" @close="closeDocxDialog()"
|
|
109
|
+
:visible.sync="docxDialogVisible" custom-class="pl-upload-web-preview-dialog"
|
|
110
|
+
width="100%" height="100%">
|
|
111
|
+
<ofd-preview :file-url="filePreview.fileUrl" :title="filePreview.fileTitle" v-if="ofddialogVisible"></ofd-preview>
|
|
112
|
+
<div style="position: absolute;top: -40px;right: -40px;width: 80px;height: 80px;border-radius: 0 0 0 40px;z-index: 9999;background-color: rgba(0, 0, 0, 70%);cursor: pointer;line-height: 80px;overflow: hidden" @click="closeDocxDialog()">
|
|
113
|
+
<i class="el-icon-close" style="position: absolute;bottom: 13px;left: 13px;font-size: 20px;color: #7f7e7e"></i>
|
|
114
|
+
</div>
|
|
115
|
+
</el-dialog>
|
|
90
116
|
</div>
|
|
91
117
|
</template>
|
|
92
118
|
|
|
@@ -99,8 +125,7 @@
|
|
|
99
125
|
import APlayer from 'aplayer';
|
|
100
126
|
import 'aplayer/dist/APlayer.min.css';
|
|
101
127
|
import uploadImg from "./uploadImg";
|
|
102
|
-
import
|
|
103
|
-
|
|
128
|
+
import OfdPreview from "./preview/OfdPreview.vue";
|
|
104
129
|
Vue.use(Viewer, {
|
|
105
130
|
defaultOptions: {
|
|
106
131
|
zIndex: 9999
|
|
@@ -110,6 +135,7 @@
|
|
|
110
135
|
export default {
|
|
111
136
|
name: "pl-upload",
|
|
112
137
|
components: {
|
|
138
|
+
OfdPreview,
|
|
113
139
|
'd-player': VueDPlayer,
|
|
114
140
|
},
|
|
115
141
|
props: {
|
|
@@ -148,7 +174,7 @@
|
|
|
148
174
|
},
|
|
149
175
|
ifTempRemove: {
|
|
150
176
|
type: Boolean,
|
|
151
|
-
default:
|
|
177
|
+
default: true
|
|
152
178
|
},
|
|
153
179
|
tempRemoveFile: {
|
|
154
180
|
type: Array,
|
|
@@ -196,7 +222,8 @@
|
|
|
196
222
|
pdf: ["pdf"],
|
|
197
223
|
txt: ["txt"],
|
|
198
224
|
project: ["mpp"],
|
|
199
|
-
visio: ["vsdx", "vsd"]
|
|
225
|
+
visio: ["vsdx", "vsd"],
|
|
226
|
+
ofd:["ofd"]
|
|
200
227
|
},
|
|
201
228
|
loading: false,
|
|
202
229
|
objExtensionToImgType: {},
|
|
@@ -219,14 +246,22 @@
|
|
|
219
246
|
type: "success",
|
|
220
247
|
disableFileArr: [], // 不可以上传的文件类型
|
|
221
248
|
hasWater: false,
|
|
249
|
+
ofddialogVisible:false,
|
|
250
|
+
docxDialogVisible:false,
|
|
251
|
+
filePreview:{
|
|
252
|
+
fileUrl:"",
|
|
253
|
+
fileTitle:"",
|
|
254
|
+
},
|
|
222
255
|
waterdialogVisible:false,
|
|
223
256
|
checkWaterMarkText:"",
|
|
224
257
|
downloadWaterMake:{
|
|
225
258
|
waterMakeText: "我是水印",
|
|
226
259
|
fileName:"水印下载",
|
|
227
260
|
fileType:"png",
|
|
228
|
-
fileUrl:""
|
|
229
|
-
|
|
261
|
+
fileUrl:"",
|
|
262
|
+
waterMakeType:"true"
|
|
263
|
+
},
|
|
264
|
+
docxLoading:'',
|
|
230
265
|
}
|
|
231
266
|
},
|
|
232
267
|
|
|
@@ -249,6 +284,10 @@
|
|
|
249
284
|
},
|
|
250
285
|
|
|
251
286
|
methods: {
|
|
287
|
+
closeDocxDialog(){
|
|
288
|
+
this.ofddialogVisible = false;
|
|
289
|
+
this.docxDialogVisible = false;
|
|
290
|
+
},
|
|
252
291
|
/*
|
|
253
292
|
** 初始化配置
|
|
254
293
|
*/
|
|
@@ -318,18 +357,19 @@
|
|
|
318
357
|
return;
|
|
319
358
|
}
|
|
320
359
|
file.downloadUrl = vm.api.baseUploadUrl + "downloadFile?id=" + file.id;
|
|
360
|
+
file.viewUrl = vm.api.baseUploadUrl + "previewFile?id=" + file.id;
|
|
321
361
|
// file.downloadUrl = file.downloadUrl.replace("uploadController/downloadFile?id", "wepUploadAction!downloadFile?fjid");
|
|
322
362
|
// 获取小写文件扩展名
|
|
323
363
|
let extension = (file.extension || "").toLowerCase();
|
|
324
364
|
if (extension === "jpg" || extension === "jpeg" || extension === "png") {
|
|
325
|
-
file.url = file.
|
|
365
|
+
file.url = file.viewUrl;
|
|
326
366
|
file.isPreview = true;
|
|
327
367
|
} else if (vm.objExtensionToImgType[extension]) {
|
|
328
368
|
file.url = uploadImg[vm.objExtensionToImgType[extension] + ".png"];
|
|
329
369
|
const dtype = vm.objExtensionToImgType[extension].toLowerCase();
|
|
330
370
|
if (dtype === 'word' || dtype === 'excel' ||
|
|
331
371
|
dtype === 'powerpoint' || dtype === 'pdf' ||
|
|
332
|
-
dtype === 'video'
|
|
372
|
+
dtype === 'video'||dtype === 'ofd'
|
|
333
373
|
) {
|
|
334
374
|
file.isPreview = true;
|
|
335
375
|
} else if (dtype === 'sound') {
|
|
@@ -354,7 +394,8 @@
|
|
|
354
394
|
let waterMake = {
|
|
355
395
|
waterMakeText: vm.waterMakeConfig.defaultWaterMake,
|
|
356
396
|
fileName:file.name,
|
|
357
|
-
fileType:extension
|
|
397
|
+
fileType:extension,
|
|
398
|
+
repeat:vm.waterMakeConfig.waterMakeType
|
|
358
399
|
}
|
|
359
400
|
vm.base64AddWaterMaker(imgResult, waterMake,"view").then((res) => {
|
|
360
401
|
// 这里可以把添加水印后的文件传给后端,我这里只是举例并没有做
|
|
@@ -423,11 +464,13 @@
|
|
|
423
464
|
|
|
424
465
|
// 保留this指向 后面会用到的
|
|
425
466
|
let vm = this;
|
|
467
|
+
console.log(waterMakeConfig);
|
|
426
468
|
return new Promise((resolve, reject) => {
|
|
427
|
-
let waterMaketext = waterMakeConfig.waterMakeText || "
|
|
428
|
-
//
|
|
429
|
-
let repeat = waterMakeConfig.repeat
|
|
430
|
-
let
|
|
469
|
+
let waterMaketext = waterMakeConfig.waterMakeText || "中通服和信科技有限公司";
|
|
470
|
+
//let waterMaketext = "中国申信安徽公司法院云平台云计算安全评估能力补齐项目"
|
|
471
|
+
let repeat = waterMakeConfig.repeat=="false"?false:true;
|
|
472
|
+
//let repeat = true;
|
|
473
|
+
let fontSize = 50;
|
|
431
474
|
const canvas = document.createElement('canvas');
|
|
432
475
|
const ctx = canvas.getContext('2d');
|
|
433
476
|
const img = new Image();
|
|
@@ -444,26 +487,29 @@
|
|
|
444
487
|
// 以左上角为坐标原点 进行绘制图像
|
|
445
488
|
ctx.drawImage(img, 0, 0, img.width, img.height);
|
|
446
489
|
ctx.save();
|
|
447
|
-
|
|
448
|
-
let
|
|
449
|
-
|
|
450
|
-
strWidth = ctx.measureText(waterMaketext).width + 40;
|
|
490
|
+
let strWidth = 100;
|
|
491
|
+
let strHeight = 1000;
|
|
492
|
+
strWidth = ctx.measureText(waterMaketext).width + 600;
|
|
451
493
|
strHeight = strHeight + 30;
|
|
452
|
-
ctx.fillStyle = "rgba(
|
|
453
|
-
ctx.rotate(-0.5); // 水印初始偏转角度
|
|
494
|
+
ctx.fillStyle = "rgba(5,5,5,0.3)";//设置文字颜色及透明度
|
|
454
495
|
if (repeat) {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
496
|
+
ctx.translate(-(img.width/3),0);
|
|
497
|
+
ctx.rotate(-Math.PI/5); // 水印初始偏转角度
|
|
498
|
+
let repeatfontsize = ((img.width/2)/waterMaketext.length);
|
|
499
|
+
ctx.font = repeatfontsize + 'px 宋体';
|
|
500
|
+
for (let i = 0; i < img.width; i += (waterMaketext.length*repeatfontsize+80)) {
|
|
501
|
+
for (let j = 0; j < img.height * 2; j += (repeatfontsize+100)) {
|
|
460
502
|
ctx.fillText(waterMaketext, i, j);
|
|
461
503
|
ctx.save();
|
|
462
504
|
}
|
|
463
505
|
}
|
|
464
506
|
} else {
|
|
465
|
-
|
|
466
|
-
ctx.
|
|
507
|
+
let norepeatfontsize = ((img.width*2/3)/waterMaketext.length);
|
|
508
|
+
ctx.translate(((img.width/2)-(waterMaketext.length*2/5*(norepeatfontsize))),((img.height*4/5)));
|
|
509
|
+
ctx.rotate(-Math.PI/5);
|
|
510
|
+
ctx.font = norepeatfontsize + 'px 宋体';
|
|
511
|
+
// ctx.fillText(waterMaketext, (img.width/2)-(waterMaketext.length*(norepeatfontsize)/2), (img.height/2)); //在图片上添加字体
|
|
512
|
+
ctx.fillText(waterMaketext, 0, 0); //在图片上添加字体
|
|
467
513
|
ctx.save();
|
|
468
514
|
}
|
|
469
515
|
if(type=="view"){
|
|
@@ -506,7 +552,7 @@
|
|
|
506
552
|
let formData = new FormData();
|
|
507
553
|
formData.append("file", item.file);
|
|
508
554
|
formData.append("fkId", vm.fileFkId);
|
|
509
|
-
formData.append("extraPath",
|
|
555
|
+
formData.append("extraPath", "");
|
|
510
556
|
//创建axios实例
|
|
511
557
|
vm.axios.defaults.headers = null;
|
|
512
558
|
const axiosInstance = vm.axios.create({
|
|
@@ -672,27 +718,49 @@
|
|
|
672
718
|
this.previewImg(file, index);
|
|
673
719
|
} else {
|
|
674
720
|
const dtype = this.objExtensionToImgType[type].toLowerCase();
|
|
675
|
-
if (dtype === '
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
721
|
+
if (dtype === 'pdf' || dtype === 'powerpoint'|| (dtype === 'word' && window.isLocal)) {
|
|
722
|
+
const routeData = this.$router.resolve({
|
|
723
|
+
path: '/pdfpreview',
|
|
724
|
+
query: {fjid: file.id}
|
|
725
|
+
});
|
|
726
|
+
window.open(routeData.href, '_blank');
|
|
727
|
+
} else if (dtype === 'video') {
|
|
679
728
|
this.previewAudiovisual(type, file);
|
|
680
729
|
} else if (dtype === 'sound') {
|
|
681
730
|
this.previewPlaySound(type, file);
|
|
731
|
+
}else if(dtype === "ofd"){
|
|
732
|
+
this.filePreview.fileUrl = file.viewUrl;
|
|
733
|
+
this.filePreview.fileTitle = file.name;
|
|
734
|
+
this.ofddialogVisible = true;
|
|
735
|
+
this.docxDialogVisible = true;
|
|
736
|
+
} else if(dtype === 'excel' || (dtype === 'word' && !window.isLocal)){
|
|
737
|
+
this.previewOffice(dtype, file.id);
|
|
682
738
|
}
|
|
683
739
|
}
|
|
684
740
|
},
|
|
741
|
+
previewOffice(type,fjid){
|
|
742
|
+
const routeData = this.$router.resolve({
|
|
743
|
+
path: '/officeViewer',
|
|
744
|
+
query: {fjType: type, fjid: fjid}
|
|
745
|
+
});
|
|
746
|
+
window.open(routeData.href, '_blank');
|
|
747
|
+
},
|
|
685
748
|
/*
|
|
686
749
|
** 预览图片
|
|
687
750
|
*/
|
|
688
751
|
previewImg(file, index) {
|
|
689
752
|
const viewer = this.$el.querySelector('#viewer-selection').$viewer;
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
753
|
+
let delNum = 0;
|
|
754
|
+
viewer.images = viewer.images.filter((data,num) => {
|
|
755
|
+
if (data.currentSrc.indexOf("static/images/upload") == -1&&data.currentSrc.indexOf("static/img/") == -1) {
|
|
756
|
+
return data;
|
|
757
|
+
}else{
|
|
758
|
+
if(num<index){
|
|
759
|
+
delNum++;
|
|
760
|
+
}
|
|
693
761
|
}
|
|
694
762
|
});
|
|
695
|
-
viewer.index = index;
|
|
763
|
+
viewer.index = index-delNum;
|
|
696
764
|
viewer.options.hide = () => {
|
|
697
765
|
// 不延时关闭的话会影响原dialog隐藏显示
|
|
698
766
|
setTimeout(() => {
|
|
@@ -724,6 +792,8 @@
|
|
|
724
792
|
case 'pdf':
|
|
725
793
|
fjType = 'pdf';
|
|
726
794
|
break;
|
|
795
|
+
default:
|
|
796
|
+
break;
|
|
727
797
|
}
|
|
728
798
|
const routeData = this.$router.resolve({
|
|
729
799
|
path: '/pdfViewer',
|
|
@@ -808,7 +878,8 @@
|
|
|
808
878
|
let waterMake = {
|
|
809
879
|
waterMakeText: this.checkWaterMarkText||this.downloadWaterMake.waterMakeText,
|
|
810
880
|
fileName:this.downloadWaterMake.fileName,
|
|
811
|
-
fileType:this.downloadWaterMake.fileType
|
|
881
|
+
fileType:this.downloadWaterMake.fileType,
|
|
882
|
+
repeat:this.downloadWaterMake.repeat
|
|
812
883
|
}
|
|
813
884
|
this.base64AddWaterMaker(imgResult, waterMake,"download").then((res) => {
|
|
814
885
|
// 这里可以把添加水印后的文件传给后端,我这里只是举例并没有做
|
|
@@ -816,7 +887,8 @@
|
|
|
816
887
|
waterMakeText: this.waterMakeConfig.defaultWaterMake,
|
|
817
888
|
fileName:"",
|
|
818
889
|
fileType:"png",
|
|
819
|
-
fileUrl:""
|
|
890
|
+
fileUrl:"",
|
|
891
|
+
repeat:this.downloadWaterMake.repeat
|
|
820
892
|
}
|
|
821
893
|
this.waterdialogVisible = false;
|
|
822
894
|
});
|
|
@@ -841,7 +913,8 @@
|
|
|
841
913
|
waterMakeText: this.waterMakeConfig.defaultWaterMake,
|
|
842
914
|
fileName:fileName,
|
|
843
915
|
fileType:type,
|
|
844
|
-
fileUrl:url
|
|
916
|
+
fileUrl:url,
|
|
917
|
+
repeat:this.waterMakeConfig.waterMakeType
|
|
845
918
|
}
|
|
846
919
|
//获取系统参数
|
|
847
920
|
if (this.downInstructions) {
|
|
@@ -1013,6 +1086,36 @@
|
|
|
1013
1086
|
white-space: nowrap;
|
|
1014
1087
|
overflow: hidden;
|
|
1015
1088
|
}
|
|
1089
|
+
|
|
1090
|
+
.pl-file-list-bottom {
|
|
1091
|
+
color: #666666;
|
|
1092
|
+
text-align: center;
|
|
1093
|
+
margin: 0 4px;
|
|
1094
|
+
|
|
1095
|
+
.file-list-bottom-box {
|
|
1096
|
+
height: 24px;
|
|
1097
|
+
display: flex;
|
|
1098
|
+
align-items: center;
|
|
1099
|
+
justify-content: center;
|
|
1100
|
+
|
|
1101
|
+
.date-badge {
|
|
1102
|
+
display: inline-block;
|
|
1103
|
+
color: #fff;
|
|
1104
|
+
//position: absolute;
|
|
1105
|
+
//left: -37px;
|
|
1106
|
+
//top: 2px;
|
|
1107
|
+
background-color: rgba(250,0,0,.8);
|
|
1108
|
+
border-radius: 10px;
|
|
1109
|
+
font-size: 12px;
|
|
1110
|
+
height: 16px;
|
|
1111
|
+
line-height: 16px;
|
|
1112
|
+
padding: 0 6px;
|
|
1113
|
+
text-align: center;
|
|
1114
|
+
white-space: nowrap;
|
|
1115
|
+
border: 1px solid #fff;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1016
1119
|
}
|
|
1017
1120
|
}
|
|
1018
1121
|
|
|
@@ -1117,8 +1220,32 @@
|
|
|
1117
1220
|
}
|
|
1118
1221
|
</style>
|
|
1119
1222
|
|
|
1120
|
-
<style>
|
|
1223
|
+
<style lang="scss">
|
|
1121
1224
|
.pl-upload-container .el-upload, .pl-upload-container .el-upload-dragger {
|
|
1122
1225
|
width: 100%;
|
|
1123
1226
|
}
|
|
1227
|
+
.pl-upload-preview-dialog .el-dialog__body{
|
|
1228
|
+
bottom: 0!important;
|
|
1229
|
+
}
|
|
1230
|
+
.pl-upload-web-preview-dialog {
|
|
1231
|
+
background: rgba(0, 0, 0, 0.5)!important;
|
|
1232
|
+
.el-dialog__body{
|
|
1233
|
+
top: 0!important;
|
|
1234
|
+
bottom: 0!important;
|
|
1235
|
+
padding: 0;
|
|
1236
|
+
overflow: hidden!important;
|
|
1237
|
+
//overflow-y: auto;
|
|
1238
|
+
|
|
1239
|
+
.modal-box{
|
|
1240
|
+
height: calc(100% - 60px)!important;
|
|
1241
|
+
margin-top: 30px;
|
|
1242
|
+
.background-shadow{
|
|
1243
|
+
background: transparent!important;
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
.pl-upload-web-preview-dialog .el-dialog__header{
|
|
1249
|
+
display: none;
|
|
1250
|
+
}
|
|
1124
1251
|
</style>
|