Quellcode durchsuchen

commit

dev-remain
revive vor 4 Jahren
Ursprung
Commit
1378bcfb81
10 geänderte Dateien mit 340 neuen und 69 gelöschten Zeilen
  1. +3
    -0
      public/static/css/main.css
  2. +4
    -0
      src/components/app-header/app-header.vue
  3. +2
    -2
      src/views/components_web/projDetail/projDetail.vue
  4. +180
    -64
      src/views/components_web/project/nestTemp.vue
  5. +1
    -1
      src/views/components_web/project/newProj.vue
  6. +7
    -0
      src/views/main_web/recycle.vue
  7. +112
    -0
      src/views/main_web/workspace/components/recyclefile.vue
  8. +13
    -0
      src/views/main_web/workspace/service.js
  9. +9
    -0
      src/views/manage_system/template/matrix.vue
  10. +9
    -2
      vue.config.js

+ 3
- 0
public/static/css/main.css Datei anzeigen

@@ -8940,6 +8940,7 @@ h5.dulilabel{
.proj-detail .right-part .part-wrap::-webkit-scrollbar,
.proj-detail .proj-desc-wrap::-webkit-scrollbar,
.proj-detail .summary-wrap::-webkit-scrollbar,
.template_improve .summary-wrap::-webkit-scrollbar,
.template_nest .template_select_content::-webkit-scrollbar,
.template_improve .template_improve_content::-webkit-scrollbar,
.new-proj .template_select_content::-webkit-scrollbar {
@@ -8954,6 +8955,7 @@ h5.dulilabel{
.right-part .part-wrap::-webkit-scrollbar-thumb,
.proj-detail .proj-desc-wrap::-webkit-scrollbar-thumb,
.proj-detail .summary-wrap::-webkit-scrollbar-thumb,
.template_improve .summary-wrap::-webkit-scrollbar-thumb,
.template_nest .template_select_content::-webkit-scrollbar-thumb,
.template_improve .template_improve_content::-webkit-scrollbar-thumb,
.new-proj .template_select_content::-webkit-scrollbar-thumb {
@@ -8973,6 +8975,7 @@ h5.dulilabel{
.right-part .part-wrap::-webkit-scrollbar-thumb:window-inactive,
.proj-detail .proj-desc-wrap::-webkit-scrollbar-thumb:window-inactive,
.proj-detail .summary-wrap::-webkit-scrollbar-thumb:window-inactive,
.template_improve .summary-wrap::-webkit-scrollbar-thumb:window-inactive,
.new-proj .template_select_content::-webkit-scrollbar-thumb:window-inactive {
background-color: #adadad;
}


+ 4
- 0
src/components/app-header/app-header.vue Datei anzeigen

@@ -112,6 +112,10 @@ export default {
left: 50%;
transform: translateX(-50%);
font-size: $font-level-6;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
@include setOnelineHeight($app-header-height);
}
}


+ 2
- 2
src/views/components_web/projDetail/projDetail.vue Datei anzeigen

@@ -144,7 +144,7 @@
<div class="template-summary" v-if="isShowTemplateSummary">
<app-header class="set-header-position header-wrap"
:class="{'header-bottom-shadow': isTemplateDescScroll }"
backBtnTitle="返回" theme="basis"
backBtnTitle="返回" theme=""
:onBackBtnClick="returnToDistWorkClick"
:title="nowProject.TempName" :showUserCenter="false" :showBackBtn="true"
>
@@ -1383,7 +1383,7 @@ import NestTemp from '../project/nestTemp.vue';
}

.right-part {
min-width: 300px;
min-width: 400px;
box-sizing: border-box;
border-top-left-radius: 8px;
border-top-right-radius: 8px;


+ 180
- 64
src/views/components_web/project/nestTemp.vue Datei anzeigen

@@ -2,16 +2,20 @@
<div>
<!-- 选择嵌套模板 -->
<div class="template_nest" v-if="isTemNest">
<AppHeader class="set_position header-wrap"
theme="white"
<AppHeader class="set-header-position header-wrap"
theme="basis"
showBackBtn
backBtnTitle="取消"
:onBackBtnClick="enterDistWork"
:title="`为“${title}”添加新模板`"
:class="{'header-bottom-shadow': isNestTempScroll}"
>
<div type="primary" class="slot_btn" slot="right" @click="enterNestTempImprove()">选定模板</div>
<div slot="right" class="edit-template-btn"
@click.stop="enterNestTempImprove()">
选定模板
</div>
</AppHeader>
<div class="template_select_content">
<div class="template_select_content" ref="nestTemplateDesc">
<div class="template_connect">
<div class="template_info_title">
<span>已建立交换关系的模板</span>
@@ -19,38 +23,41 @@
<div class="template_info" v-for="(item,index) in NestTemplateList" :key="item.Id" @click="isChecked(index,item)">
<div class="check_box" :class="{checked:checkedIndex == index}"><i class="el-icon-check"></i></div>
<span class="template_info_name">{{item.TemplateName}}</span>
</div>
</div>
</div>
</div>
</div>
<!-- 完善嵌套模板信息 -->
<div class="template_improve" v-if="isNestTemImprove" >
<AppHeader class="set_position header-wrap"
theme="white"
<AppHeader class="set-header-position header-wrap"
theme="basis"
showBackBtn
backBtnTitle="选择模板"
:onBackBtnClick="enterSelectNestTemp"
title="完善模板信息"
:class="{'header-bottom-shadow': isTempImproveScroll}"
>
<div type="primary" class="slot_btn" slot="right" @click="addNestTemplate()">创建</div>
</AppHeader>
<div class="template_improve_content" >
<div class="template_improve_info">
<div class="template_title">模板名称:</div>
<div class="template_title_info">{{selectTemplate.TemplateName}}</div>
</div>
<div class="template_improve_info">
<div class="template_title">创建时间:</div>
<div class="template_title_info">{{createDate}}</div>
</div>
<div class="template_improve_info template_improve_infoInput" v-for="prop in checkNewProjData.CustomProps" :key="prop.Id">
<div class="template_title">{{(prop.PropertyName ? prop.PropertyName : '自定义字段') +':'}}</div>
<div class="template_title_info">
<input type="text" class="input_projname" placeholder="点击输入" v-model="prop.PropValue">
</div>
</div>
</div>
<div slot="right" class="edit-template-btn"
@click.stop="addNestTemplate()">
创建
</div>
</AppHeader>
<div class="summary-wrap" ref="tempImproveDesc">
<div class="item">
<div class="item-title">模板名称</div>
<div class="item-value">{{selectTemplate.TemplateName}}</div>
</div>
<div class="item">
<div class="item-title">创建时间</div>
<div class="item-value">{{createDate}}</div>
</div>
<div class="item" v-for="prop in checkNewProjData.CustomProps" :key="prop.Id">
<div class="item-title adjust-title-position" >{{(prop.PropertyName ? prop.PropertyName : '自定义字段') +':'}}</div>
<div class="item-value">
<input v-model="prop.PropValue" type="text" class="prop-value-input"/>
</div>
</div>
</div>
</div>
</div>
</template>
@@ -76,7 +83,11 @@ export default {
title:this.nestNodeFolder.folderName,
NestTemplateList:[],
isTemNest: false,
isNestTemImprove:false,
isNestTemImprove:false,
isNestTempScroll: false,//嵌套模板选择是否滚动
nestTemplateDescEl: null,
isTempImproveScroll: false,
tempImproveDescEl: null,
selectTemplate:{},//选择的嵌套模板
checkedIndex:0,
checkNewProjData: {
@@ -95,6 +106,22 @@ export default {
}

},
mounted(){
this.nestTemplateDescEl = this.$refs.nestTemplateDesc;
if(this.nestTemplateDescEl) {
this.nestTemplateDescEl.addEventListener('scroll', this.watchNestTempScroll);
}

this.tempImproveDescEl = this.$refs.tempImproveDesc;
if(this.tempImproveDescEl){
this.nestTemplateDescEl.addEventListener('scroll',this.watchTempImproveScroll);
}

},
beforeDestroy(){
this.nestTemplateDescEl && this.nestTemplateDescEl.removeEventListener('scroll', this.watchNestTempScroll);
this.tempImproveDescEl && this.tempImproveDescEl.removeEventListener('scroll',this.watchTempImproveScroll)
},
methods:{
/**
* 进入嵌套模板信息字段填写
@@ -122,7 +149,8 @@ export default {
this.checkNewProjData.CustomProps = [...temp];
})
this.checkNewProjData = {...this.checkNewProjData};
})
})
//debugger;
},
/**
* 返回到人员分配
@@ -140,7 +168,7 @@ export default {
showClose: false,
type: "error",
}).then(async() => {
const res = await templateService.queryTemplateNodeByTemplateId(this.selectTemplate.TempalteId);
const res = await templateService.queryTemplateNodeByTemplateId(this.selectTemplate.TemplateId);
const node = res.Data;
let params ={
ProjId: this.nestNodeFolder.projId,
@@ -176,6 +204,15 @@ export default {
this.checkedIndex=0;
}
},

//嵌套模板页面滚动
watchNestTempScroll(){
this.isNestTempScroll = this.nestTemplateDescEl.scrollTop > 0;
},
//嵌套模板字段信息填充
watchTempImproveScroll(){
this.isTempImproveScroll = this.tempImproveDescEl.scrollTop > 0;
}
},
watch:{
isTemNestInProp:{
@@ -187,6 +224,16 @@ export default {
},
immediate: true
},
isNestTempScroll(val){
if(val){
setTimeout(()=>{
this.nestTemplateDescEl = this.$refs.nestTemplateDesc;
if(this.nestTemplateDescEl){
this.nestTemplateDescEl.addEventListener('scroll',this.watchNestTempScroll);
}
},50)
}
}
}
}
</script>
@@ -207,24 +254,17 @@ export default {
text-align: center;
font-family: PingFangSC-Regular;
}
.input_projname{
width: 424px;
height: 44px;
border-radius: 4px;
background-color: rgba(233, 233, 235, 1);
border: 0.5px solid rgba(174, 174, 174, 1);
font-size: 16px;
padding-left:16px;
}

.set_position{
position: relative;
border-top-right-radius: 8px;
border-top-left-radius: 8px;
box-shadow: none;
}
.template_nest,.template_improve{
height:calc(100vh - 50px);
}
// .template_improve{
// height:calc(100vh - 50px);
// min-width: 400px;
// }
.template_info_title{
width: 100%;
line-height: 44px;
@@ -234,7 +274,7 @@ export default {
border-bottom: 1px solid #DEDEDF;
}
.template_select_content{
height:calc(100% - 50px);
height:calc(100vh - 100px);
overflow-y:scroll;
.template_info{
width: 100%;
@@ -278,29 +318,105 @@ export default {
.template_info:hover{
background-color: rgba(50, 50, 60, 0.15);
}
.template_improve_content{
height:calc(100% - 50px);
overflow-y:scroll;
padding: 0 8px;
box-sizing: border-box;
.template_improve_info{
line-height: 48px;
width: 100%;
color: rgba(0, 0, 0, 0.56);
.template_title{
width: 142px;
display: inline-block;
text-align: right;
// .template_improve_content{
// height:calc(100% - 50px);
// overflow-y:scroll;
// padding: 0 8px;
// box-sizing: border-box;
// .template_improve_info{
// line-height: 48px;
// width: 100%;
// color: rgba(0, 0, 0, 0.56);
// .template_title{
// //width: 142px;
// width: 30%;
// display: inline-block;
// text-align: right;
}
.template_title_info{
display: inline-block;
margin-left: 8px;
color: rgba(50, 50, 60, 100);
}
// }
// .template_title_info{
// display: inline-block;
// margin-left: 8px;
// color: rgba(50, 50, 60, 100);
// }
// }
// .template_improve_infoInput{
// line-height: 64px;
// }
// .input_projname{
// width: 120%;
// height: 44px;
// border-radius: 4px;
// background-color: rgba(233, 233, 235, 1);
// border: 0.5px solid rgba(174, 174, 174, 1);
// font-size: 16px;
// padding-left:16px;
// }
// }
.edit-template-btn, .to-distwork-btn{
position: relative;
left: 24px;
cursor: pointer;
padding: 0 16px;
height: 32px;
line-height: 32px;
margin: 9px 0;
border-radius: 8px;
background-color: rgba(120, 80, 255, 1);
color: rgba(245, 245, 247, 100);
font-size: 14px;
text-align: center;
font-family: PingFangSC-Regular;
}
.template_improve{
.summary-wrap {
height: calc(100vh - 100px - 16px);
overflow: scroll;
padding: 0 24px;
margin: 16px 0 0 0;
background-color: #fcfcfc;

/* 编辑状态下的模板自定义字段输入框 */
.prop-value-input {
width: 80%;
height: 44px;
border-radius: 4px;
color: rgba(0, 0, 0, 0.56);
background-color: rgba(233, 233, 235, 1);
border: 0.5px solid rgba(174, 174, 174, 1);
font-size: 16px;
padding-left:16px;
}
}
.template_improve_infoInput{
line-height: 64px;
}
.item {
display: flex;
width: 100%;
margin: 14px 0;
font-size: 14px;
font-family: PingFangSC-Regular;
color: #32323C;
.item-title {
color: #62492f;
width: 24%;
text-align: right;
}
.item-value {
margin: 0 0 0 12px;
&:not(.cover-img-wrap) {
flex: 1;
}
}
}
}
.set-header-position {
position: relative !important;
color: #32323c !important;
z-index: 99;
}
.adjust-title-position {
position: relative;
top: 11px;
}
</style>

+ 1
- 1
src/views/components_web/project/newProj.vue Datei anzeigen

@@ -3,7 +3,7 @@
<AppHeader
theme="basis"
showBackBtn
backBtnTitle="完成项目编辑"
backBtnTitle="取消项目创建"
>
</AppHeader>
<div class="proj_manage">


+ 7
- 0
src/views/main_web/recycle.vue Datei anzeigen

@@ -195,6 +195,13 @@ export default {
this.listFiles();
},
methods: {
/**
* 获取回收站里的文件
*/
async getListFiles(){
//const res = await fetchApi('')
},
/**
* 获取当前工作下文件
*/


+ 112
- 0
src/views/main_web/workspace/components/recyclefile.vue Datei anzeigen

@@ -0,0 +1,112 @@
<template>
<div>
<div class="yiyun_wenjian_list loding-mask-parent">
<div>
<!-- 非图片文件图标 -->
<div
v-if="!oneOf(file.extension, imgExtensionList) && !oneOf(file.extension, VideoExtensionList)"
class="defultImage-mid toumin"
:class="`${file.extension}-mid ${!oneOf(file.extension,filePreviewList) ? '':''} ` "
/>

<!-- 图片文件图标 -->
<div
v-else-if="oneOf(file.extension, imgExtensionList)"
class="defultImage-mid img_bg-mid toumin"
>
<div class="file_Im gbox-mid">
<img v-lazy="file.alias" alt class="file_Img" />
</div>
</div>
<!-- 视频文件图标 -->
<div
v-else
class="defultImage-mid video-mid toumin"
>
</div>
<!-- 右键菜单 -->
<div class="contextmenu" v-show="isFileRightMenuVisible"
:style="{ top: fileRightMenuTop + 'px', left: fileRightMenuLeft + 'px'}"
>
<ul class="rightMenu fileRightMenu">
<li>下载</li>
<li>放回原处</li>
<li>彻底删除</li>
</ul>
</div>

<!-- 右上设置按钮 -->
<!-- 下拉列表 -->
<!-- <div class="top_optionBar" v-show="false">
<el-dropdown>
<span class="el-dropdown-link">
<i
class="icon iconfont icon_small-icon_small_wenjianshezhi settingIcon"
/>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
@click.native="fileClick(file)"
v-if="
isClient &&
fileInLocal
"
>
<span>打开</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> -->
<!-- 文件名 -->
<strong
class="yiyunwenjian_name"
:title="file.archName + '.' + file.extension"
>{{ file.archName }}<span v-show="!oneOf(file.extension, RecExtensionList)">.{{file.extension}}</span></strong>

<span
class="yiyunwenjian_infodesc"
>{{ file.createUserName }} 创建</span>
</div>
</div>
</div>
</template>

<script>
const imgExtensionList = ["jpg", "png", "bmp", "gif", "jpeg"];
const RecExtensionList = ["jpg", "png", "bmp", "gif", "jpeg", "txt",
"zip", "ae", "ai", "idml","indd","mp3","pr",
"ps","sketch","xmind","skp","rvt","rar","nwc",
"max","dxf","dwg","svfzip","map","supermap","pdf",
"ppt","pptx","excel","xlsx","xls","doc","docx",
"word","folder","folder1","folder2"
];
const VideoExtensionList = ["avi", "mov", "wav","mp4"];
const office =["doc","docx","ppt","pptx","xls","xlsx"];
const filePreviewList = ["jpg", "png", "bmp", "gif", "jpeg",
"doc","docx","ppt","pptx","xls","xlsx",
"avi", "mov", "wav","mp4","txt","pdf",
"dwg"
];
const oneOf = (target, list) => list.indexOf(target) !== -1
export default {
data(){
return{
imgExtensionList,
RecExtensionList,
VideoExtensionList,
office,
filePreviewList,
}
},
methods:{
oneOf,
async getFilesList(){
}
}
}
</script>

<style lang="scss" scoped>

</style>

+ 13
- 0
src/views/main_web/workspace/service.js Datei anzeigen

@@ -12,6 +12,19 @@ export async function fetchWorkFlow(projectId, userId) {
});
return list;
}
/**
* 查询删除的文件
*/
export async function queryFilesFromRecycleBin() {
const res = await fetchApi('file/queryFilesFromRecycleBin');
wrapErrorHint(res);
if (res.Code !== 0) return null;
const fileList = (res.Data || []).map(file => {
const lower = firstCharToLowerCase (file);
return lower;
});
return fileList;
}

/**
* 查询文件夹下边的文件(包含子文件夹以及协同文件)


+ 9
- 0
src/views/manage_system/template/matrix.vue Datei anzeigen

@@ -321,7 +321,9 @@ export default {
*/
async matrixRightNodeClick() {
const targetUnit = this.targetUnit;
//debugger;
const cloneUnit = Object.assign({}, targetUnit);
//debugger;
cloneUnit.Permission = cloneUnit.Permission === 1 ? 0 : 1;
const res = await services.fileExchange(cloneUnit);
if (res.Code !== 0) return;
@@ -358,6 +360,7 @@ export default {
// PermCode为资源接受方
const key = `${unit.SysCode}->${unit.PermCode}`;
unit.Editable = unit.TemplateId !== subTemplateId;
//unit.Editable = true;

h[key] = unit;
return h;
@@ -387,10 +390,13 @@ export default {
*/
MatrixLookInfoMenu(event, nodeSend, nodeReceive) {
this.loading = true;
// debugger;
this.closeMenu();
this.MatrixLookInfoMenuVisible = true; // 显示模态窗口,跳出自定义菜单栏
const unitMap = this.unitMap;
// debugger;
const key = `${nodeSend.id}->${nodeReceive.id}`;
// debugger;
const targetUnit = unitMap[key];
// this.mousueCheckChangeColor(permNodeIndex, "green");
// PermissionItem.listNodePerm.forEach((realPermItem) => {
@@ -401,6 +407,7 @@ export default {
// permNodeItem = realPermItem;
// }
// });
//debugger;
if (targetUnit.Permission == 1) {
this.btnMatrixLookInfo = "btnMatrixLookInfo";
} else {
@@ -415,9 +422,11 @@ export default {
this.loading = false;
},
canEditUnit(nodeSend, nodeReceive) {
//debugger;
const unitMap = this.unitMap;
const key = `${nodeSend.id}->${nodeReceive.id}`;
const targetUnit = unitMap[key] || { Editable: true };
//debugger;
return targetUnit.Editable;
},
/**


+ 9
- 2
vue.config.js Datei anzeigen

@@ -34,11 +34,18 @@ module.exports = {
// // target: 'http://www.lockingos.org:8089',
// target:'http://192.168.8.114:8092',

// changeOrigin: true,
// changeOricgin: true,
// secure: false,
// },
// '/api/cms': {
// // target: 'http://www.lockingos.org:8089',
// target:'http://192.168.8.114:8082',

// changeOrigin: true,
// secure: false,
// },
'/api': {
target: 'http://www.lockingos.org:9002',
target: 'http://www.lockingos.org:9003',
//target: 'http://192.168.8.114:8082',
changeOrigin: true,
secure: false,


Laden…
Abbrechen
Speichern