Преглед на файлове

新版工作链bug修复 客户端显示缩小放大关闭按钮

dev-remain
kim131 преди 4 години
родител
ревизия
57161888f5
променени са 7 файла, в които са добавени 194 реда и са изтрити 131 реда
  1. +1
    -0
      public/static/css/main.css
  2. +6
    -1
      src/App.vue
  3. +1
    -1
      src/components/app-header/app-header.vue
  4. +2
    -2
      src/services/system.js
  5. +140
    -102
      src/views/main_web/workspace/components/workLine.vue
  6. +40
    -21
      src/views/main_web/workspace/workspace.new.vue
  7. +4
    -4
      src/views/platform_center/index.vue

+ 1
- 0
public/static/css/main.css Целия файл

@@ -7794,6 +7794,7 @@ li.secondMenu ul li:hover {
} */
.worklink{
width: 100%;
width: calc(100vw - 64px);
height: calc(100vh - 114px);
display: flex;
align-items: center;


+ 6
- 1
src/App.vue Целия файл

@@ -31,7 +31,9 @@
<router-view
ref="mainpage"
class="mt-40"
:class="{'mt-60': setMarginTop,'workspace-bigbody': $route.path.indexOf('/workspace') >=0}"
:class="{'mt-60': setMarginTop,
'workspace-bigbody': $route.path.indexOf('/workspace') >=0,
'mt-64': $route.name == 'newproject' || $route.name == 'projdetail'}"
id="bigbody"
></router-view>
</div>
@@ -182,5 +184,8 @@ jmnode {
.mt-60 {
margin: 60px 0 0 0;
}
.mt-64 {
margin: 64px 0 0 0;
}

</style>

+ 1
- 1
src/components/app-header/app-header.vue Целия файл

@@ -5,7 +5,7 @@
<div class="dot"></div>
<div class="state" :class="{'white-color': theme === 'white', black: theme === 'black'}">在线</div>
</div>
<div class="top-right hide-state">
<div class="top-right">
<div class="min" @click.stop="shrinkBrowserWindow">
<img src="/static/img/窗口缩小.svg" alt="" class="min-icon"/>
</div>


+ 2
- 2
src/services/system.js Целия файл

@@ -148,8 +148,8 @@ const system = {
/**
* 通知系统进入当前的工作空间
*/
entryProject: safeCall((projName, userId, fileChangeHandler, initHandler, errorHandler = identity) => {
requestBySocket(io('init'), [userId, projName].join('|'))
entryProject: safeCall((projName, accountName, fileChangeHandler, initHandler, errorHandler = identity) => {
requestBySocket(io('init'), [accountName, projName].join('|'))
.then(response => initHandler(response.data));
const watchSocket = io('subscriptionFileChange');
watchSocket.on('open', () => {


+ 140
- 102
src/views/main_web/workspace/components/workLine.vue Целия файл

@@ -2,7 +2,7 @@


<template>
<div v-if="listUserFolders.length > 0">
<div>
<!-- <div
:class="
isShowRightManager == true
@@ -68,7 +68,7 @@
</div>
</div>
</div> -->
<div class="backwork pt-10" v-show="isShowworklink" v-if="false">
<!-- <div class="backwork pt-10" v-show="isShowworklink" v-if="false">
<div class="warpbianju">
<div class="fl">
<button
@@ -80,17 +80,17 @@
</button>
</div>
</div>
</div>
</div> -->
<!-- 我的文件面板 -->
<section
:class="'yiyun_warpBar bg_color_company ' + workheight"
>
<div :class="' worklinkHeight'" v-show="isShowworklink">
<div class="worklinkHeight" v-show="isShowworklink">
<div class="yiyun-rows overflowinit">
<!-- 我的文件title -->
<div class="yiyun_file_box">
<div class="yiyun_Headtitle_center" style="overflow: hidden">
<div class="yiyun-col-12 worktitlebox overflowinit">
<div class="yiyun-col-12 worktitlebox overflowinit adjust-btn-pos">
<button type="button" class="yiyuntitle myFolderName">
<!-- <button type="button" class="yiyuntitle myFolderName" @click="hideWorklinkPage()"> -->
我的工作链
@@ -177,90 +177,94 @@
</div>
</div>
<div class="clear"></div>
<div class="">
<div class="yiyun-rows overflowinit">
<!-- 我的文件title -->
<div>
<div class="workline-wrap">
<div class="use-flex2 worktitlebox overflowinit use-relative" ref="allFolderWrapEl">
<!-- <div class="worklinkBtngroup use-flex2">
<template v-for="(currFolder, index) in listUserFolders">
<button
<div class="use-flex">
<!-- <div class="has-prev-node" v-if="nowFolderIndex !== 0"></div> -->
<div class="" >
<div class="yiyun-rows overflowinit">
<!-- 我的文件title -->
<div>
<div class="workline-wrap">
<div class="use-flex2 worktitlebox overflowinit use-relative" ref="allFolderWrapEl">
<!-- <div class="worklinkBtngroup use-flex2">
<template v-for="(currFolder, index) in listUserFolders">
<button
type="button"
v-if="
index < nowFolderIndex &&
currFolder.folderName != nowFolderName &&
!isShowworklink
"
:key="index"
@click="nowFolderClick(index)"
class="yiyuntitle sectitle"
>
{{ currFolder.folderName }}
</button>
</template>
</div> -->
<!-- <i
class="icon iconfont icon_small-icon_small_shouqi workbtn anniuweizhi rota180 drakbg"
v-show="
!isShowworklink &&
listUserFolders.length > 1 &&
nowFolderIndex != 0
"
@click="previousFolder"
></i> -->
<!-- <div class="nowfolder-wrap yiyuntitle nowFolderName curbtn" v-show="!isShowworklink" ref="nowFolderEl">
<div
type="button"
v-if="
index < nowFolderIndex &&
currFolder.folderName != nowFolderName &&
!isShowworklink
"
:key="index"
@click="nowFolderClick(index)"
class="yiyuntitle sectitle"
>
{{ currFolder.folderName }}
</button>
</template>
</div> -->
<!-- <i
class="icon iconfont icon_small-icon_small_shouqi workbtn anniuweizhi rota180 drakbg"
v-show="
!isShowworklink &&
listUserFolders.length > 1 &&
nowFolderIndex != 0
"
@click="previousFolder"
></i> -->
<!-- <div class="nowfolder-wrap yiyuntitle nowFolderName curbtn" v-show="!isShowworklink" ref="nowFolderEl">
<div
type="button"
>
{{ nowFolderName }}
</div>
{{ nowFolderName }}
</div>
</div> -->
</div> -->
<div class="has-prev-node"></div>
<div class="worklinkBtngroup use-flex2 set-transition" :style="setTranslate">
<template v-for="(currFolder, index) in listUserFolders">
<button ref="nowFolderEl"
type="button"
v-if="
!isShowworklink
"
:class="{'nowfolder-wrap yiyuntitle nowFolderName': index == nowFolderIndex,
'yiyuntitle sectitle': index !== nowFolderIndex,
'hide-folder': Math.abs(index - nowFolderIndex) > 2}"
:key="index"
@click="nowFolderClick(index)"
>
<div :class="{'now-folder-text': index === nowFolderIndex, 'other-folder-text': index !== nowFolderIndex }"
class="use-ellipsis">{{ currFolder.folderName }}</div>
<div class="jump-icon-wrap">
<img v-if="index == nowFolderIndex" @click.stop="showWorklinkPage"
class="jump-icon"
src="/static/img/下拉箭头.svg"/>
</div>
<div class="worklinkBtngroup use-flex2 set-transition" :style="setTranslate" :class="{'height-0': isHideWorkFolders}">
<template v-for="(currFolder, index) in listUserFolders">
<button ref="nowFolderEl"
type="button"
v-if="
!isShowworklink
"
:class="{'nowfolder-wrap yiyuntitle nowFolderName': index == nowFolderIndex,
'yiyuntitle sectitle': index !== nowFolderIndex,
'hide-folder': Math.abs(index - nowFolderIndex) > 2}"
:key="index"
@click="nowFolderClick(index)"
>
<div :class="{'now-folder-text': index === nowFolderIndex, 'other-folder-text': index !== nowFolderIndex }"
class="use-ellipsis">{{ currFolder.folderName }}</div>
<div class="jump-icon-wrap">
<img v-if="index == nowFolderIndex" @click.stop="showWorklinkPage"
class="jump-icon"
src="/static/img/下拉箭头.svg"/>
</div>
</button>
</template>
</div>
<!-- <i
class="icon font_family icon-icon_shezhi-jihuo rota90 workbtn workderct"
v-show="!isShowworklink"
@click="showWorklinkPage()"
></i> -->
<!-- <i class="icon font_family icon-icon_shezhi-jihuo rota90 workbtn workderct" v-show="!isShowworklink"
@click="showWorklinkPage()"></i>-->
</div>
<div class="yiyun-col-4">
<!-- <div class="mt-10">
<button type="button" class="yiyuntitle sectitle fr" @click="showAllAppManagement" v-show="nowFolderName != '公共文件夹'" v-show="!isShowworklink">
工作设置
</button>
</template>
</div>-->
</div>
<div class="has-next-node"></div>
<!-- <i
class="icon font_family icon-icon_shezhi-jihuo rota90 workbtn workderct"
v-show="!isShowworklink"
@click="showWorklinkPage()"
></i> -->
<!-- <i class="icon font_family icon-icon_shezhi-jihuo rota90 workbtn workderct" v-show="!isShowworklink"
@click="showWorklinkPage()"></i>-->
</div>
<div class="yiyun-col-4">
<!-- <div class="mt-10">
<button type="button" class="yiyuntitle sectitle fr" @click="showAllAppManagement" v-show="nowFolderName != '公共文件夹'" v-show="!isShowworklink">
工作设置
</button>
</div>-->
</div>
</div>
</div>
</div>
<!-- <div class="has-next-node" v-if="nowFolderIndex !== 0 && nowFolderIndex !== totalNodeNum -1"></div> -->
</div>
<div class="clear"></div>
</section>
@@ -277,13 +281,21 @@ export default {
nowFolderIndex: Number,
nowFolderName: String,
isShowlink: Boolean,
isHideWorkFolders: {//额外控制是否不显示工作节点
type: Boolean,
defualt: false
},
isCalcuteExchangeNode: {
type: Boolean,
default: true,
}
},
data() {
return {
acceptIdList:[],//接收方
sendIdList:[],//发送方
isShowRightManager: false,
isShowworklink: false,
isShowworklink: false,//是否显示工作链图表
workheight: "", //工作链高度
projId:sessionStorage.projId,
groupLength:5,
@@ -314,6 +326,14 @@ export default {
this.isShowworklink = false;
this.workheight = "workheightinit";
},
/**
* 查看工作链页面
*/
showWorklinkPage() {
this.$emit("showWorklinkPage", true);
this.isShowworklink = true;
this.workheight = "workheight";
},
/**
* 工作链中新申请
*/
@@ -344,14 +364,7 @@ export default {
showAllAppManagement() {
this.$emit("showAllAppManagement", true);
},
/**
* 查看工作链页面
*/
showWorklinkPage() {
this.$emit("showWorklinkPage", true);
this.isShowworklink = true;
this.workheight = "workheight";
},

/**
* 工作链页面点击
*/
@@ -391,7 +404,7 @@ export default {
var len=this.listUserFolders.length;
/**获取嵌套节点与其父节点 */
const data2=await this.$fetchApi('template/queryTemplateNodeByTemplateId',{templateId:templateId});
var nodeLists=data2.Data.children;
var nodeLists = data2.Data ? data2.Data.children : [];
var nestNodeIdLists=[];
var parentNodeId;
this.getNestItem(nodeLists,nestNodeIdLists,parentNodeId);
@@ -403,9 +416,19 @@ export default {
this.listUserFolders.forEach(item=>{
Res.Data.forEach(item2=>{
if(item.nodeId==item2.PermCode&&item2.Permission==1&&item.nodeId!=item2.SysCode){
item.listsShareFrom[1].push(temp[item2.SysCode]);
// const isExists1 = item.listsShareFrom[1].find(i => i.nodeId == item2.SysCode);

// console.log('isExists1', isExists1)
// if(!isExists1) {
item.listsShareFrom[1].push(temp[item2.SysCode]);
// }
}else if(item.nodeId==item2.SysCode&&item2.Permission==1&&item.nodeId!=item2.PermCode){
item.listsShareFrom[0].push(temp[item2.PermCode]);
// const isExists2 = item.listsShareFrom[0].find(i => i.nodeId == item2.PermCode);
// console.log('isExists2', isExists2)
// if(!isExists2) {
item.listsShareFrom[0].push(temp[item2.PermCode]);
// }
}
}
)
@@ -446,6 +469,10 @@ export default {
return {
transform: `translate(${-this.moveX}px, 0)`
}
},
// 总共的工作节点数目 即listUserFolders的长度
totalNodeNum() {
return this.listUserFolders ? this.listUserFolders.length : 0;
}
},
watch: {
@@ -465,8 +492,10 @@ export default {
this.hideWorklinkPage();
}
},
listUserFolders() {
this.getFileExchange();
totalNodeNum() {
if(this.isCalcuteExchangeNode) {
this.getFileExchange();
}
},
nowFolderShareNodesLen() {
this.$emit('finishGetExchangeNodes');
@@ -519,13 +548,13 @@ export default {
.workline-wrap {
background-color: #F0F0F0;
}
// .has-next-node, .has-prev-node {
// width: 16px;
// height: 16px;
// border-radius: 4px;
// background-color: rgba(250, 250, 250, 1);
// margin: 0 8px;
// }
.has-next-node, .has-prev-node {
width: 16px;
height: 16px;
border-radius: 4px;
background-color: rgba(250, 250, 250, 1);
margin: 0 8px;
}
// 最多显示7个字符 多余的用省略号表示
.now-folder-text {
max-width: 157px;
@@ -541,6 +570,15 @@ export default {
}

.hide-folder {
visibility: hidden;
display: none;
}

.adjust-btn-pos {
text-align: left;
padding: 0 31px;
}

.height-0 {
height: 0;
}
</style>

+ 40
- 21
src/views/main_web/workspace/workspace.new.vue Целия файл

@@ -8,20 +8,6 @@
class="app-header-style workspace-header"
v-if="!showWorkline"
>
<!-- <template #center>
<WorkLine class="center-test"
:isShowlink="showWorkline"
:listUserFolders="nodeFolders"
:nowFolderIndex="nowFolderIndex"
:nowFolderName="nowFolderName"
@goFolderAndBack="goFolderAndBack"
@previousFolder="previousFolder"
@showWorklinkPage="showWorklinkPage"
@nowFolderClick="nowFolderClick"
@hideWorklinkPage="hideWorklinkPage"
@finishGetExchangeNodes="finishGetExchangeNodes"
/>
</template> -->
<template #center>
<!-- 工作链 -->
<WorkLine class="my-workline"
@@ -113,10 +99,28 @@
:showUserCenter="true"
backBtnTitle="回到协作空间"
:onBackBtnClick="hideWorklinkPage"
:isWorkspaceTopBar="true"
v-if="showWorkline"
>
</app-header>
<div class="listfilewarp mt-0">
<!-- 这里主要是用到该组件的工作链图表 -->
<WorkLine class="my-workline hack-work-line" ref="hackworkline"
:class="{
'height-0': !showWorkline}"
:isHideWorkFolders="true"
:isShowlink="showWorkline"
:listUserFolders="nodeFolders"
:isCalcuteExchangeNode="false"
:nowFolderIndex="nowFolderIndex"
:nowFolderName="nowFolderName"
@goFolderAndBack="goFolderAndBack"
@previousFolder="previousFolder"
@showWorklinkPage="showWorklinkPage"
@nowFolderClick="nowFolderClick"
@hideWorklinkPage="hideWorklinkPage"
@finishGetExchangeNodes="finishGetExchangeNodes"
/>
<div class="layout_content2" v-show="!showWorkline" v-loading="loading">
<section
id="workspace"
@@ -143,7 +147,7 @@
</el-breadcrumb>
</span>
</div>
<!-- 工作列表主体 -->
<div
class="yiyun_row scollbarBox nobianju py-x-22"
@@ -340,7 +344,7 @@
@onRightMenuActive="oneFileRightBtnClick"
@onDownloadAll="downloadFolder"
:activeRightMenuId="tempRightFileId"
@dblclick.native="intoSubFolder(folder, 1), isShowStartNodeFolders = !isShowStartNodeFolders"
@dblclick.native="intoSubFolder(folder, 1), isShowStartNodeFolders = false"
@commitFolder="commitFolder"
/>
</div>
@@ -500,7 +504,7 @@ import { firstCharToLowerCase, firstCharToUpperCase, notify } from '@/utils/tool
import FileItem from './components/file-item';
import FolderItem from './components/folder-item';
import { FileWorkStatus, getFileStoreKey, injectionFileLocalStatus, LoadingEnum, VirtualFolder, analyzeRelativePath, imgExtensionList, RecExtensionList, VideoExtensionList, office, filePreviewList } from './helper';
import { propertyOf, uniqBy, throttle, flatten, debounce } from 'lodash';
import { propertyOf, uniqBy, throttle, flatten, debounce, cloneDeep } from 'lodash';
import { fetchApi } from '@/utils/request';
const $ = window.jQuery;
const Velocity = window.Velocity;
@@ -638,9 +642,11 @@ export default {
searchCoopFileList: [],//搜索得到的协作文件列表

isAllFileLoaded: false,//当前工作节点下的文件状态是否都加载完毕
hackWorkLine: null,
};
},
mounted: function () {
this.hackWorkLine = this.$refs.hackworkline;
window.addEventListener("scroll", this.onscroll, true);
window.addEventListener("resize", this.listenBottomHeight, true);
if(this.isClient) {
@@ -651,7 +657,7 @@ export default {
this.fetchNodeFolders();

this.socketIns = system.entryProject(
sessionStorage.projName, sessionStorage.userId,
sessionStorage.projName, sessionStorage.accountName,
this.onSocketFileChangeDetected.bind(this),
(localWorkspacePrefix) => { this.localWorkspacePrefix = localWorkspacePrefix;},
errorEvent => {
@@ -1141,6 +1147,11 @@ export default {
*/
showWorklinkPage: function () {
// this.$emit("isShowOutWorkSpace", true);
if(this.hackWorkLine) {
// this.hackWorkLine.showWorklinkPage();
this.hackWorkLine.isShowworklink = true;
this.hackWorkLine.workheight = "workheight";
}
this.showWorkline = true;
// this.workheight = "workheight";
},
@@ -1149,6 +1160,10 @@ export default {
* @return:
*/
hideWorklinkPage: function () {
if(this.hackWorkLine) {
this.hackWorkLineisShowworklink = false;
this.hackWorkLine.workheight = "workheightinit";
}
this.showWorkline = false;
// this.workheight = " workheightinit";
},
@@ -1220,6 +1235,7 @@ export default {
const folderList = workList.filter(folder => folder.nodeId !== folder.templateId && folder.folderName !== '公共文件夹');

this.nodeFolders = folderList;
this.copyNodeFolders = cloneDeep(folderList);
this.folderMap = folderList.reduce((h, f) => (h[f.id] = f, h), {});
if(!folderList.length) return;
const paramsFolderId = this.$route.params.folderId;
@@ -1323,7 +1339,7 @@ export default {
? this.currentNodeFolder
: this.breadcrumbFolderList[breadFolderIdx];
this.currentFolder = targetFolder;
this.fetchFolderFiles();
// this.fetchFolderFiles();
// 重置面包屑导航数组
this.breadcrumbFolderList = this.breadcrumbFolderList.slice(0, breadFolderIdx + 1);
} else if(flag == 1) {
@@ -1994,13 +2010,16 @@ export default {

.adjust-workline-pos-client {
position: relative;
top: -16px;
top: -12px;
}
.adjust-workline-pos-web {
position: relative;
top: -10px;
top: -2.5px;
}
.ml-4-mt-20 {
margin: 20px 0 0 4px;
}
.height-0 {
height: 0;
}
</style>

+ 4
- 4
src/views/platform_center/index.vue Целия файл

@@ -120,10 +120,10 @@ export default {
return;
}
// 如果是客户端的话 要判断一下当前的窗口是否是最大化状态
// if(system.isClient) {
// const isMaxWindowNow = await system.isMaxWindowNow();
// this.$cookie.set('isMaxWindowNow', isMaxWindowNow);
// }
if(system.isClient) {
const isMaxWindowNow = await system.isMaxWindowNow();
this.$cookie.set('isMaxWindowNow', isMaxWindowNow);
}

}
this.$store.setCurrentPlatform(platformInfo);


Зареждане…
Отказ
Запис