提交 54a496cb 编写于 作者: ibizdev's avatar ibizdev

ibiz4j 发布系统代码

上级 5bbdf4fe
## v7.0.0-alpha.10 [2020-6-18]
### Bug修复
分页导航视图页面刷新bug
表单项更新,实体行为调用不到bug
关系界面子界面保存不触发父界面保存
表单样式调整
### 功能新增及优化
#### 模板
表格操作列只显示图标时显示tooltip
门户部件高度为0时自适应
面板和多数据部件数据流向
列表,数据视图保存功能
门户部件标题界面行为tooltip
新增面包屑、应用切换器组件
#### 基础文件
formitem样式调整,label适配位置
表格行编辑切换,app-picker不显示
文件上传下载参数格式处理
## v7.0.0-alpha.9 [2020-6-11] ## v7.0.0-alpha.9 [2020-6-11]
### Bug修复 ### Bug修复
......
...@@ -13,5 +13,12 @@ ...@@ -13,5 +13,12 @@
.no-redirect { .no-redirect {
color: #97a8be; color: #97a8be;
cursor: text; cursor: text;
.curselected{
color: #2196F3;
font-weight: bold;
}
.app-breadcrumb-selected{
cursor: pointer;
}
} }
} }
\ No newline at end of file
...@@ -2,7 +2,20 @@ ...@@ -2,7 +2,20 @@
<el-breadcrumb class="app-breadcrumb" separator="/"> <el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb"> <transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in breadcrumbs" :key="item.id"> <el-breadcrumb-item v-for="(item, index) in breadcrumbs" :key="item.id">
<span v-if="index === breadcrumbs.length-1" class="no-redirect">{{ item.title }}</span> <span v-if="index === breadcrumbs.length-1" class="no-redirect">{{ item.title }}
<span v-if="item.isselected === true">
<dropdown trigger='click' @on-click="selectNavData($event,item)">
<span class="app-breadcrumb-selected">
<i class="el-icon-caret-bottom"></i>
</span>
<dropdown-menu slot='list'>
<dropdown-item v-for="(dataitem) in getPreNavData(item)" :name="dataitem.srfkey" :key="dataitem.srfkey">
<span :class="{'curselected':isCurSelected(item,dataitem)}">{{dataitem.srfmajortext}}</span>
</dropdown-item>
</dropdown-menu>
</dropdown>
</span>
</span>
<a v-else @click.prevent="handleLink(item)">{{ item.title }}</a> <a v-else @click.prevent="handleLink(item)">{{ item.title }}</a>
</el-breadcrumb-item> </el-breadcrumb-item>
</transition-group> </transition-group>
...@@ -12,6 +25,7 @@ ...@@ -12,6 +25,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Vue, Watch, Prop } from 'vue-property-decorator' import { Component, Vue, Watch, Prop } from 'vue-property-decorator'
import { RouteRecord, Route } from 'vue-router' import { RouteRecord, Route } from 'vue-router'
import { Environment } from "@/environments/environment";
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import {Subscription } from 'rxjs'; import {Subscription } from 'rxjs';
...@@ -40,13 +54,6 @@ export default class Breadcrumb extends Vue { ...@@ -40,13 +54,6 @@ export default class Breadcrumb extends Vue {
*/ */
@Prop() public indexViewTag!: string; @Prop() public indexViewTag!: string;
/**
* 首页路径
*
* @memberof Breadcrumb
*/
@Prop() public indexViewPath!: string;
/** /**
* 导航服务事件 * 导航服务事件
* *
...@@ -63,8 +70,8 @@ export default class Breadcrumb extends Vue { ...@@ -63,8 +70,8 @@ export default class Breadcrumb extends Vue {
*/ */
created() { created() {
this.getBreadcrumb(); this.getBreadcrumb();
this.serviceStateEvent = this.navDataService.serviceState.subscribe(({ action, data }) => { this.serviceStateEvent = this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if (Object.is(action, 'refresh')) { if (Object.is(action, 'datarefresh')) {
this.getBreadcrumb(); this.getBreadcrumb();
} }
}); });
...@@ -80,6 +87,25 @@ export default class Breadcrumb extends Vue { ...@@ -80,6 +87,25 @@ export default class Breadcrumb extends Vue {
this.$forceUpdate(); this.$forceUpdate();
} }
/**
* 获取面包屑指定元素前一条数据
*
* @memberof Breadcrumb
*/
private getPreNavData(item:any){
let preNavData:any = this.navDataService.getPreNavDataById(item.id);
return preNavData.data;
}
/**
* 判断是否为当前选中项
*
* @memberof Breadcrumb
*/
private isCurSelected(item:any,singleItem:any){
return item.srfkey === singleItem.srfkey;
}
/** /**
* 面包屑点击行为 * 面包屑点击行为
* *
...@@ -88,9 +114,7 @@ export default class Breadcrumb extends Vue { ...@@ -88,9 +114,7 @@ export default class Breadcrumb extends Vue {
private handleLink(item: any) { private handleLink(item: any) {
// 首页 // 首页
if(Object.is(item.id,this.indexViewTag)){ if(Object.is(item.id,this.indexViewTag)){
if(this.$route.matched && this.$route.matched.length >0){ this.$router.push((window.sessionStorage.getItem(Environment.AppName))as string);
this.$router.push(`/${this.indexViewPath}`);
}
}else{ }else{
// 非首页 // 非首页
this.$router.push(item.path).catch(err => { this.$router.push(item.path).catch(err => {
...@@ -100,6 +124,17 @@ export default class Breadcrumb extends Vue { ...@@ -100,6 +124,17 @@ export default class Breadcrumb extends Vue {
this.navDataService.removeNavData(item.id); this.navDataService.removeNavData(item.id);
} }
/**
* 切换导航行为
*
* @memberof Breadcrumb
*/
private selectNavData($event:any,item:any){
let preNavData:any = this.getPreNavData(item);
let curSrfkey:any = $event;
this.navDataService.serviceState.next({action:'viewrefresh',name:item.id, data:curSrfkey});
}
/** /**
* 组件销毁 * 组件销毁
* *
......
.menu-drawer {
.ivu-drawer-left {
left: 201px !important;
}
.ivu-drawer {
top: 64px !important;
}
.ivu-drawer-body {
padding: 32px !important;
.menuItems {
display: flex;
flex-wrap: wrap;
> .item {
margin: 0px 10px;
width: calc(33.333% - 20px);
padding: 0px 15px;
font-size: 13px;
transition: all 0.3s;
display: flex;
justify-content: space-between;
height: 32px;
align-items: center;
.star {
display: flex;
height: 100%;
width: 30px;
font-size: 15px;
align-items: center;
justify-content: center;
.ivu-icon-ios-star-outline{
display: none;
}
}
}
> .item:hover {
background-color: #eaeaea;
cursor: pointer;
.ivu-icon-ios-star-outline{
display: inline;
}
}
}
}
}
.sider-drawer {
.ivu-drawer {
background-color: #ffffff !important;
}
.ivu-drawer-body {
padding: 0px !important;
}
.ivu-drawer {
top: 64px !important;
}
.context-menu-drag {
display: flex;
.flip-list-move {
transition: transform 0.3s;
}
.menu-list {
width: 100%;
height: 100%;
.menu-header {
cursor: pointer;
border-bottom: 1px solid rgb(222, 222, 222);
height: 48px;
line-height: 48px;
display: flex;
align-items: center;
.menuicon {
display: inline-block;
width: 50px;
font-size: 16px;
text-align: center;
font-size: 22px;
}
.content {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1 1 0%;
overflow: hidden;
font-size: 13px;
}
.forward {
margin: 0px 8px 0px 4px;
color: rgb(222, 222, 222);
font-size: 15px;
}
}
.list-group-item {
transition: background 1s;
-webkit-transition: background 1s;
.menuicon {
text-align: center;
}
.el-row {
height: 100%;
display: flex;
align-items: center;
padding: 0px 5px;
}
height: 40px;
cursor: pointer;
position: relative;
display: block;
margin-bottom: -1px;
transition: background-color 0.5s;
transition-timing-function: ease-in-out;
.handle {
cursor: move;
}
.bar {
display: flex;
.ivu-icon-ios-close {
cursor: pointer;
font-size: 25px;
}
}
}
.list-group-item:hover {
background-color: #f5f5f5;
.ivu-icon-ios-star-outline{
display: inline;
}
}
}
}
}
\ No newline at end of file
...@@ -247,7 +247,11 @@ export default class EditViewEngine extends ViewEngine { ...@@ -247,7 +247,11 @@ export default class EditViewEngine extends ViewEngine {
*/ */
public setTabCaption(info: string): void { public setTabCaption(info: string): void {
let viewdata: any = this.view.model; let viewdata: any = this.view.model;
if (viewdata && info && !Object.is(info, '') && (viewdata.srfTitle.indexOf("-") === -1)) { let index:number = viewdata.srfTitle.indexOf("-");
if (viewdata && info && !Object.is(info, '')) {
if(index !== -1){
viewdata.srfTitle = viewdata.srfTitle.substr(0,index);
}
if(this.view.$tabPageExp){ if(this.view.$tabPageExp){
this.view.$tabPageExp.setCurPageCaption(viewdata.srfTitle, viewdata.srfTitle, info); this.view.$tabPageExp.setCurPageCaption(viewdata.srfTitle, viewdata.srfTitle, info);
} }
......
...@@ -3,29 +3,26 @@ ...@@ -3,29 +3,26 @@
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsinfoeditview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsinfoeditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false"> <card class='view-card ' :disHover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> <div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<div slot="extra"> <i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
<div class='toolbar-container'> <i class='fa fa-save'></i>
<tooltip :transfer="true" :max-width="600"> <span class='caption'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.caption')}}</span>
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)"> </i-button>
<i class='fa fa-save'></i> <div slot='content'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
<span class='caption'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.caption')}}</span> </tooltip>
</i-button> <tooltip :transfer="true" :max-width="600">
<div slot='content'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)">
</tooltip> <i class='fa fa-sign-out'></i>
<tooltip :transfer="true" :max-width="600"> <span class='caption'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.deuiaction1.caption')}}</span>
<i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)"> </i-button>
<i class='fa fa-sign-out'></i> <div slot='content'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.deuiaction1.tip')}}</div>
<span class='caption'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.deuiaction1.caption')}}</span> </tooltip>
</i-button> </div>
<div slot='content'>{{$t('entities.jobsinfo.editviewtoolbar_toolbar.deuiaction1.tip')}}</div> </div>
</tooltip>
</div>
</div>
<div class="content-container"> <div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
...@@ -62,7 +59,7 @@ ...@@ -62,7 +59,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsInfoService from '@/service/jobs-info/jobs-info-service'; import JobsInfoService from '@/service/jobs-info/jobs-info-service';
import EditViewEngine from '@engine/view/edit-view-engine'; import EditViewEngine from '@engine/view/edit-view-engine';
...@@ -289,6 +286,15 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -289,6 +286,15 @@ export default class JobsInfoEditViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsInfoEditViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -311,7 +317,7 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -311,7 +317,7 @@ export default class JobsInfoEditViewBase extends Vue {
* @public * @public
* @memberof JobsInfoEditViewBase * @memberof JobsInfoEditViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -341,6 +347,9 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -341,6 +347,9 @@ export default class JobsInfoEditViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobsinfo':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -434,7 +443,7 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -434,7 +443,7 @@ export default class JobsInfoEditViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-info-edit-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-info-edit-view',srfkey:this.context.jobsinfo,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -454,10 +463,24 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -454,10 +463,24 @@ export default class JobsInfoEditViewBase extends Vue {
* @memberof JobsInfoEditViewBase * @memberof JobsInfoEditViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-info-edit-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
} }
...@@ -689,6 +712,9 @@ export default class JobsInfoEditViewBase extends Vue { ...@@ -689,6 +712,9 @@ export default class JobsInfoEditViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class='view-container degridview jobs-info-grid-view'> <div class='view-container degridview jobs-info-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsinfogridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsinfogridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false"> <card class='view-card ' :dis-hover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> </div>
<div class='content-container'> <div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsInfoService from '@/service/jobs-info/jobs-info-service'; import JobsInfoService from '@/service/jobs-info/jobs-info-service';
import GridViewEngine from '@engine/view/grid-view-engine'; import GridViewEngine from '@engine/view/grid-view-engine';
...@@ -366,6 +366,15 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -366,6 +366,15 @@ export default class JobsInfoGridViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsInfoGridViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -388,7 +397,7 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -388,7 +397,7 @@ export default class JobsInfoGridViewBase extends Vue {
* @public * @public
* @memberof JobsInfoGridViewBase * @memberof JobsInfoGridViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -418,6 +427,9 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -418,6 +427,9 @@ export default class JobsInfoGridViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobsinfo':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -511,7 +523,7 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -511,7 +523,7 @@ export default class JobsInfoGridViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-info-grid-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-info-grid-view',srfkey:this.context.jobsinfo,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -531,10 +543,24 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -531,10 +543,24 @@ export default class JobsInfoGridViewBase extends Vue {
* @memberof JobsInfoGridViewBase * @memberof JobsInfoGridViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-info-grid-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
...@@ -1130,6 +1156,9 @@ export default class JobsInfoGridViewBase extends Vue { ...@@ -1130,6 +1156,9 @@ export default class JobsInfoGridViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobslogeditview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobslogeditview"></app-studioaction>
<card class='view-card view-no-toolbar' :disHover="true" :bordered="false"> <card class='view-card view-no-toolbar' :disHover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> </div>
<div class="content-container"> <div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsLogService from '@/service/jobs-log/jobs-log-service'; import JobsLogService from '@/service/jobs-log/jobs-log-service';
import EditViewEngine from '@engine/view/edit-view-engine'; import EditViewEngine from '@engine/view/edit-view-engine';
...@@ -256,6 +256,15 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -256,6 +256,15 @@ export default class JobsLogEditViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsLogEditViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -278,7 +287,7 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -278,7 +287,7 @@ export default class JobsLogEditViewBase extends Vue {
* @public * @public
* @memberof JobsLogEditViewBase * @memberof JobsLogEditViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -308,6 +317,9 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -308,6 +317,9 @@ export default class JobsLogEditViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobslog':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -401,7 +413,7 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -401,7 +413,7 @@ export default class JobsLogEditViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-log-edit-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-log-edit-view',srfkey:this.context.jobslog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -421,10 +433,24 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -421,10 +433,24 @@ export default class JobsLogEditViewBase extends Vue {
* @memberof JobsLogEditViewBase * @memberof JobsLogEditViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-log-edit-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
} }
...@@ -539,6 +565,9 @@ export default class JobsLogEditViewBase extends Vue { ...@@ -539,6 +565,9 @@ export default class JobsLogEditViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class='view-container degridview jobs-log-grid-view'> <div class='view-container degridview jobs-log-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsloggridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsloggridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false"> <card class='view-card ' :dis-hover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> </div>
<div class='content-container'> <div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsLogService from '@/service/jobs-log/jobs-log-service'; import JobsLogService from '@/service/jobs-log/jobs-log-service';
import GridViewEngine from '@engine/view/grid-view-engine'; import GridViewEngine from '@engine/view/grid-view-engine';
...@@ -290,6 +290,15 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -290,6 +290,15 @@ export default class JobsLogGridViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsLogGridViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -312,7 +321,7 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -312,7 +321,7 @@ export default class JobsLogGridViewBase extends Vue {
* @public * @public
* @memberof JobsLogGridViewBase * @memberof JobsLogGridViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -342,6 +351,9 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -342,6 +351,9 @@ export default class JobsLogGridViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobslog':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -435,7 +447,7 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -435,7 +447,7 @@ export default class JobsLogGridViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-log-grid-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-log-grid-view',srfkey:this.context.jobslog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -455,10 +467,24 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -455,10 +467,24 @@ export default class JobsLogGridViewBase extends Vue {
* @memberof JobsLogGridViewBase * @memberof JobsLogGridViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-log-grid-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
...@@ -741,6 +767,9 @@ export default class JobsLogGridViewBase extends Vue { ...@@ -741,6 +767,9 @@ export default class JobsLogGridViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -3,29 +3,26 @@ ...@@ -3,29 +3,26 @@
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsregistryeditview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsregistryeditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false"> <card class='view-card ' :disHover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> <div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<div slot="extra"> <i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
<div class='toolbar-container'> <i class='fa fa-save'></i>
<tooltip :transfer="true" :max-width="600"> <span class='caption'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.caption')}}</span>
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)"> </i-button>
<i class='fa fa-save'></i> <div slot='content'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
<span class='caption'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.caption')}}</span> </tooltip>
</i-button> <tooltip :transfer="true" :max-width="600">
<div slot='content'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)">
</tooltip> <i class='fa fa-sign-out'></i>
<tooltip :transfer="true" :max-width="600"> <span class='caption'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.deuiaction1.caption')}}</span>
<i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)"> </i-button>
<i class='fa fa-sign-out'></i> <div slot='content'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.deuiaction1.tip')}}</div>
<span class='caption'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.deuiaction1.caption')}}</span> </tooltip>
</i-button> </div>
<div slot='content'>{{$t('entities.jobsregistry.editviewtoolbar_toolbar.deuiaction1.tip')}}</div> </div>
</tooltip>
</div>
</div>
<div class="content-container"> <div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
...@@ -62,7 +59,7 @@ ...@@ -62,7 +59,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service'; import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service';
import EditViewEngine from '@engine/view/edit-view-engine'; import EditViewEngine from '@engine/view/edit-view-engine';
...@@ -289,6 +286,15 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -289,6 +286,15 @@ export default class JobsRegistryEditViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsRegistryEditViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -311,7 +317,7 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -311,7 +317,7 @@ export default class JobsRegistryEditViewBase extends Vue {
* @public * @public
* @memberof JobsRegistryEditViewBase * @memberof JobsRegistryEditViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -341,6 +347,9 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -341,6 +347,9 @@ export default class JobsRegistryEditViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobsregistry':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -434,7 +443,7 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -434,7 +443,7 @@ export default class JobsRegistryEditViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-registry-edit-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-registry-edit-view',srfkey:this.context.jobsregistry,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -454,10 +463,24 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -454,10 +463,24 @@ export default class JobsRegistryEditViewBase extends Vue {
* @memberof JobsRegistryEditViewBase * @memberof JobsRegistryEditViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-registry-edit-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
} }
...@@ -689,6 +712,9 @@ export default class JobsRegistryEditViewBase extends Vue { ...@@ -689,6 +712,9 @@ export default class JobsRegistryEditViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class='view-container degridview jobs-registry-grid-view'> <div class='view-container degridview jobs-registry-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsregistrygridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="jobsregistrygridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false"> <card class='view-card ' :dis-hover="true" :bordered="false">
<p slot='title'> <div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span> <span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p> </div>
<div class='content-container'> <div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service'; import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service';
import GridViewEngine from '@engine/view/grid-view-engine'; import GridViewEngine from '@engine/view/grid-view-engine';
...@@ -338,6 +338,15 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -338,6 +338,15 @@ export default class JobsRegistryGridViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof JobsRegistryGridViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -360,7 +369,7 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -360,7 +369,7 @@ export default class JobsRegistryGridViewBase extends Vue {
* @public * @public
* @memberof JobsRegistryGridViewBase * @memberof JobsRegistryGridViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -390,6 +399,9 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -390,6 +399,9 @@ export default class JobsRegistryGridViewBase extends Vue {
}); });
}); });
this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams); this.$viewTool.formatRouteParams(tempValue,this.$route,this.context,this.viewparams);
if(inputvalue){
Object.assign(this.context,{'jobsregistry':inputvalue});
}
if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){ if(this.$store.getters.getAppData() && this.$store.getters.getAppData().context){
Object.assign(this.context,this.$store.getters.getAppData().context); Object.assign(this.context,this.$store.getters.getAppData().context);
} }
...@@ -483,7 +495,7 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -483,7 +495,7 @@ export default class JobsRegistryGridViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'jobs-registry-grid-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'jobs-registry-grid-view',srfkey:this.context.jobsregistry,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -503,10 +515,24 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -503,10 +515,24 @@ export default class JobsRegistryGridViewBase extends Vue {
* @memberof JobsRegistryGridViewBase * @memberof JobsRegistryGridViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'jobs-registry-grid-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
...@@ -1063,6 +1089,9 @@ export default class JobsRegistryGridViewBase extends Vue { ...@@ -1063,6 +1089,9 @@ export default class JobsRegistryGridViewBase extends Vue {
} }
}) })
} }
if (this.serviceStateEvent) {
this.serviceStateEvent.unsubscribe();
}
} }
} }
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<layout> <layout>
<sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange"> <sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange">
<div class="sider-top"> <div class="sider-top">
<div class="page-logo" @click="contextMenuDragVisiable=!contextMenuDragVisiable"> <div class="page-logo">
<img v-show="collapseChange" src="../../../assets/img/logo.png" height="16" /> <span class="menuicon" @click="contextMenuDragVisiable=!contextMenuDragVisiable"><Icon type="md-menu" /></span>
<span v-show="!collapseChange" style="display: block;text-align: center;font-weight: 300;font-size: 20px;">{{$t(model.srfCaption)}}</span> <span v-show="!collapseChange" style="display: block;text-align: center;font-weight: 300;font-size: 20px;">{{$t(model.srfCaption)}}</span>
</div> </div>
</div> </div>
...@@ -31,10 +31,10 @@ ...@@ -31,10 +31,10 @@
<layout> <layout>
<header class="index_header"> <header class="index_header">
<div class="header-left" > <div class="header-left" >
<div class="page-logo" v-if="Object.is(navModel,'route')"> <div class="page-logo">
<i v-show="!collapseChange" class="ivu-icon el-icon-s-fold" @click="handleClick"></i> <i v-show="!collapseChange" class="ivu-icon el-icon-s-fold" @click="handleClick"></i>
<i v-show="collapseChange" class="ivu-icon el-icon-s-unfold" @click="handleClick"></i> <i v-show="collapseChange" class="ivu-icon el-icon-s-unfold" @click="handleClick"></i>
<app-breadcrumb indexViewTag="task-index-view" indexViewPath="taskindexview"></app-breadcrumb> <app-breadcrumb v-if="Object.is(navModel,'route')" indexViewTag="task-index-view"></app-breadcrumb>
</div> </div>
</div> </div>
<div class="header-right" style="display: flex;align-items: center;justify-content: space-between;"> <div class="header-right" style="display: flex;align-items: center;justify-content: space-between;">
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { UIActionTool,Util } from '@/utils'; import { UIActionTool,Util } from '@/utils';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import { Subject } from 'rxjs'; import { Subject,Subscription } from 'rxjs';
...@@ -249,6 +249,15 @@ export default class TaskIndexViewBase extends Vue { ...@@ -249,6 +249,15 @@ export default class TaskIndexViewBase extends Vue {
*/ */
public navDataService = NavDataService.getInstance(this.$store); public navDataService = NavDataService.getInstance(this.$store);
/**
* 导航服务事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof TaskIndexViewBase
*/
public serviceStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -271,7 +280,7 @@ export default class TaskIndexViewBase extends Vue { ...@@ -271,7 +280,7 @@ export default class TaskIndexViewBase extends Vue {
* @public * @public
* @memberof TaskIndexViewBase * @memberof TaskIndexViewBase
*/ */
public parseViewParam(): void { public parseViewParam(inputvalue:any = null): void {
for(let key in this.context){ for(let key in this.context){
delete this.context[key]; delete this.context[key];
} }
...@@ -392,7 +401,7 @@ export default class TaskIndexViewBase extends Vue { ...@@ -392,7 +401,7 @@ export default class TaskIndexViewBase extends Vue {
*/ */
public initNavData(data:any = null){ public initNavData(data:any = null){
if(this.viewDefaultUsage){ if(this.viewDefaultUsage){
this.navDataService.addNavData({id:'task-index-view',title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'task-index-view',srfkey:null,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
...@@ -412,10 +421,24 @@ export default class TaskIndexViewBase extends Vue { ...@@ -412,10 +421,24 @@ export default class TaskIndexViewBase extends Vue {
* @memberof TaskIndexViewBase * @memberof TaskIndexViewBase
*/ */
public afterCreated(){ public afterCreated(){
const secondtag = this.$util.createUUID(); let _this:any = this;
this.$store.commit('viewaction/createdView', { viewtag: this.viewtag, secondtag: secondtag }); const secondtag = _this.$util.createUUID();
this.viewtag = secondtag; _this.$store.commit('viewaction/createdView', { viewtag: _this.viewtag, secondtag: secondtag });
this.parseViewParam(); _this.viewtag = secondtag;
_this.parseViewParam();
_this.serviceStateEvent = _this.navDataService.serviceState.subscribe(({ action,name, data }:{ action:string,name:any,data:any }) => {
if(!Object.is(name,'task-index-view')){
return;
}
if (Object.is(action, 'viewrefresh')) {
_this.$nextTick(()=>{
_this.parseViewParam(data);
if(_this.engine){
_this.engine.load();
}
});
}
});
} }
......
...@@ -76,7 +76,6 @@ ...@@ -76,7 +76,6 @@
} }
} }
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{ .ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{
padding: 4px;
margin-top: -2px; margin-top: -2px;
line-height: 58px; line-height: 58px;
text-align: center; text-align: center;
...@@ -84,11 +83,22 @@ ...@@ -84,11 +83,22 @@
cursor: pointer; cursor: pointer;
} }
.sider-top{ .sider-top{
padding: 0px;
margin-bottom: 1px; margin-bottom: 1px;
height:65px; height:65px;
box-shadow: 0 1px 2px 0 rgba(0,0,0,.15); box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);
> .page-logo{ > .page-logo{
display: flex;
align-items: center;
height: 100%;
>.menuicon{
display: block;
text-align: center; text-align: center;
font-weight: 300;
font-size: 28px;
width:64px;
height:100%;
}
} }
} }
} }
......
...@@ -42,6 +42,13 @@ export interface NavDataElement { ...@@ -42,6 +42,13 @@ export interface NavDataElement {
*/ */
path:string; path:string;
/**
* 元素主键
*
* @memberof NavDataElement
*/
srfkey:string|null;
} }
export interface ServiceState { export interface ServiceState {
...@@ -53,6 +60,13 @@ export interface ServiceState { ...@@ -53,6 +60,13 @@ export interface ServiceState {
*/ */
action: string; action: string;
/**
* 名称
*
* @memberof ServiceState
*/
name: any;
/** /**
* 数据 * 数据
* *
...@@ -170,7 +184,7 @@ export default class NavDataService { ...@@ -170,7 +184,7 @@ export default class NavDataService {
this.sessionStore.setItem('srfnavdata',JSON.stringify(this.navDataStack)); this.sessionStore.setItem('srfnavdata',JSON.stringify(this.navDataStack));
return curNavData; return curNavData;
} }
this.serviceState.next({action:'refresh', data:this.navDataStack}); this.serviceState.next({action:'datarefresh',name:null,data:this.navDataStack});
} }
/** /**
......
...@@ -909,4 +909,26 @@ export default class EntityService { ...@@ -909,4 +909,26 @@ export default class EntityService {
return Http.getInstance().post(`/${this.APPDENAME}/${data[this.APPDEKEY]}/testuserexistworklist`,requestData,isloading); return Http.getInstance().post(`/${this.APPDENAME}/${data[this.APPDEKEY]}/testuserexistworklist`,requestData,isloading);
} }
/**
* 获取所有应用数据
*
* @param context
* @param data
* @param isloading
*/
public async getAllApp(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().get(`uaa/access-center/app-switcher/default`,data,isloading);
}
/**
* 更新已选择的应用
*
* @param context
* @param data
* @param isloading
*/
public async updateChooseApp(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().put(`uaa/access-center/app-switcher/default`,data,isloading);
}
} }
\ No newline at end of file
...@@ -87,18 +87,29 @@ ...@@ -87,18 +87,29 @@
// display: flex; // display: flex;
// flex-direction: column; // flex-direction: column;
> .ivu-card-head{ > .ivu-card-head{
height: 50px; min-height: 42px;
border-color: rgb(221, 221, 221); border-color: rgb(221, 221, 221);
border-style: solid; border-style: solid;
border-width: 0px 0px 1px; border-width: 0px 0px 1px;
margin: 0px 0px 11px; margin: 0px 0px 11px;
padding: 6px 0px; padding: 6px 0px 2px;
> p{ > .header-container{
height: 50px; min-height: 42px;
display: flex;
flex-wrap: nowrap;
align-items: flex-start;
justify-content: space-between;
> .caption-info{ > .caption-info{
line-height: 50px; line-height: 42px;
font-size: 18px; font-size: 18px;
color: #1890ff; color: #1890ff;
flex-shrink: 0;
}
> .toolbar-container{
display: inline-block;
display: flex;
flex-wrap: wrap;
align-items: center;
} }
} }
} }
......
...@@ -11,7 +11,12 @@ ...@@ -11,7 +11,12 @@
background-color: #4276a4; background-color: #4276a4;
.sider-top { .sider-top {
color: hsla(0,0%,100%,.8); color: hsla(0,0%,100%,.8);
background: #2d5f8b; background-color: #4276a4;
>.page-logo{
>.menuicon:hover{
background-color: #2d5f8b;
}
}
} }
} }
} }
......
...@@ -11,6 +11,11 @@ ...@@ -11,6 +11,11 @@
.sider-top { .sider-top {
color: hsla(0,0%,100%,.8); color: hsla(0,0%,100%,.8);
background-color: #20222A; background-color: #20222A;
>.page-logo{
>.menuicon:hover{
background-color:#060708;
}
}
} }
} }
} }
......
...@@ -9,10 +9,13 @@ ...@@ -9,10 +9,13 @@
> .ivu-layout-sider { > .ivu-layout-sider {
background-color: #f6f6f6; background-color: #f6f6f6;
.sider-top { .sider-top {
background-color: #e8eaec; background-color: #f6f6f6;
.ivu-icon { >.page-logo{
color: #aaaaaa; >.menuicon:hover{
} background-color: #fff;
color:#000;
}
}
} }
} }
} }
......
...@@ -575,10 +575,8 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface { ...@@ -575,10 +575,8 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
*/ */
public click(item: any) { public click(item: any) {
if (item) { if (item) {
if(Object.is(this.navModel,"route")){ let navDataService = NavDataService.getInstance(this.$store);
let navDataService = NavDataService.getInstance(this.$store); navDataService.removeNavData(this.viewtag);
navDataService.removeNavData(this.viewtag);
}
switch (item.appfunctag) { switch (item.appfunctag) {
case '_4': case '_4':
this.click_4(item); this.click_4(item);
...@@ -611,7 +609,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface { ...@@ -611,7 +609,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
{ pathName: 'gridview', parameterName: 'gridview' }, { pathName: 'gridview', parameterName: 'gridview' },
]; ];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam); const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
this.$router.push(path); if(Object.is(this.$route.path,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
} }
/** /**
...@@ -629,7 +632,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface { ...@@ -629,7 +632,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
{ pathName: 'gridview', parameterName: 'gridview' }, { pathName: 'gridview', parameterName: 'gridview' },
]; ];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam); const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
this.$router.push(path); if(Object.is(this.$route.path,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
} }
/** /**
...@@ -647,7 +655,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface { ...@@ -647,7 +655,12 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
{ pathName: 'gridview', parameterName: 'gridview' }, { pathName: 'gridview', parameterName: 'gridview' },
]; ];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam); const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
this.$router.push(path); if(Object.is(this.$route.path,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
} }
/** /**
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<row > <row >
<i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobsinfo.main_form.details.group1')" :isShowCaption="true" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" > <app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobsinfo.main_form.details.group1')" :isShowCaption="false" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" >
<row> <row>
<i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobsinfo.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT"> <app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobsinfo.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT">
...@@ -617,7 +617,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -617,7 +617,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof Main * @memberof Main
*/ */
public detailsModel: any = { public detailsModel: any = {
group1: new FormGroupPanelModel({ caption: '任务信息基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: true, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobsinfo.main_form', extractMode: 'ITEM', details: [] } }) group1: new FormGroupPanelModel({ caption: '任务信息基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: false, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobsinfo.main_form', extractMode: 'ITEM', details: [] } })
, ,
formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this }) formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this })
, ,
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<row > <row >
<i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobslog.main_form.details.group1')" :isShowCaption="true" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" > <app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobslog.main_form.details.group1')" :isShowCaption="false" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" >
<row> <row>
<i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobslog.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT"> <app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobslog.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT">
...@@ -541,7 +541,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -541,7 +541,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof Main * @memberof Main
*/ */
public detailsModel: any = { public detailsModel: any = {
group1: new FormGroupPanelModel({ caption: '任务调度日志基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: true, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobslog.main_form', extractMode: 'ITEM', details: [] } }) group1: new FormGroupPanelModel({ caption: '任务调度日志基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: false, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobslog.main_form', extractMode: 'ITEM', details: [] } })
, ,
formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this }) formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this })
, ,
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<row > <row >
<i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.group1.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobsregistry.main_form.details.group1')" :isShowCaption="true" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" > <app-form-group layoutType="TABLE_24COL" titleStyle="" class='' :uiActionGroup="detailsModel.group1.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="$t('entities.jobsregistry.main_form.details.group1')" :isShowCaption="false" uiStyle="DEFAULT" :titleBarCloseMode="0" :isInfoGroupMode="false" >
<row> <row>
<i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.id.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobsregistry.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT"> <app-form-item name='id' :itemRules="this.rules.id" class='' :caption="$t('entities.jobsregistry.main_form.details.id')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.id.error" :isEmptyCaption="false" labelPos="LEFT">
...@@ -473,7 +473,7 @@ export default class MainBase extends Vue implements ControlInterface { ...@@ -473,7 +473,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof Main * @memberof Main
*/ */
public detailsModel: any = { public detailsModel: any = {
group1: new FormGroupPanelModel({ caption: '任务注册信息基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: true, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobsregistry.main_form', extractMode: 'ITEM', details: [] } }) group1: new FormGroupPanelModel({ caption: '任务注册信息基本信息', detailType: 'GROUPPANEL', name: 'group1', visible: true, isShowCaption: false, form: this, uiActionGroup: { caption: '', langbase: 'entities.jobsregistry.main_form', extractMode: 'ITEM', details: [] } })
, ,
formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this }) formpage1: new FormPageModel({ caption: '基本信息', detailType: 'FORMPAGE', name: 'formpage1', visible: true, isShowCaption: true, form: this })
, ,
......
...@@ -37,11 +37,6 @@ ...@@ -37,11 +37,6 @@
git clone -b master $para2 ibztask/ git clone -b master $para2 ibztask/
export NODE_OPTIONS=--max-old-space-size=4096 export NODE_OPTIONS=--max-old-space-size=4096
cd ibztask/ cd ibztask/
mvn clean package -Pweb
cd ibztask-app/ibztask-app-web
mvn -Pweb docker:build
mvn -Pweb docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibztask-app-web.yaml ibzlab-rt --with-registry-auth
</command> </command>
</hudson.tasks.Shell> </hudson.tasks.Shell>
</builders> </builders>
......
...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \ ...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \ sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibztask-app-web.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibztask-app-web.jar
EXPOSE 30005 EXPOSE 8080
ADD ibztask-app-web.jar /ibztask-app-web.jar ADD ibztask-app-web.jar /ibztask-app-web.jar
...@@ -3,22 +3,9 @@ services: ...@@ -3,22 +3,9 @@ services:
ibztask-app-web: ibztask-app-web:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibztask-app-web:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibztask-app-web:latest
ports: ports:
- "30005:30005" - "8080:8080"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
- SERVER_PORT=30005
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
- SPRING_REDIS_HOST=172.16.100.243
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
- SPRING_DATASOURCE_PASSWORD=@6dEfb3@
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
- SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
- SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
- NACOS=172.16.102.211:8848
deploy: deploy:
resources: resources:
limits: limits:
......
server: server:
port: 30005 port: 30005
#Log配置
logging:
level:
cn.ibizlab: info
#zuul网关路由设置 #zuul网关路由设置
zuul: zuul:
routes: routes:
......
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<property name="LOG_PATH" value="logs" />
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="LOG_PATTERN2" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_PATH}/ibztask-web.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="Console" />
<appender-ref ref="file" />
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<property name="LOG_PATH" value="logs" />
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="LOG_PATTERN2" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_PATH}/ibztask.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="Console" />
<appender-ref ref="file" />
</root>
</configuration>
...@@ -50,9 +50,9 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i ...@@ -50,9 +50,9 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i
@Override @Override
@Transactional @Transactional
public JobsInfo start(JobsInfo et) { public JobsInfo start(JobsInfo et) {
et.set("Id",null);
et.set("Status","1"); et.set("Status","1");
et.set("Last_time","0"); et.set("Last_time","0");
update(et);
return et; return et;
} }
@Override @Override
...@@ -158,10 +158,10 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i ...@@ -158,10 +158,10 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i
@Override @Override
@Transactional @Transactional
public JobsInfo stop(JobsInfo et) { public JobsInfo stop(JobsInfo et) {
et.set("Id",null); et.set("Next_time","0");
et.set("Last_time","0"); et.set("Last_time","0");
et.set("Status","0"); et.set("Status","0");
et.set("Next_time","0"); update(et);
return et; return et;
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<!--输出实体[JOBS_INFO]数据结构 --> <!--输出实体[JOBS_INFO]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_info-79-1"> <changeSet author="a_A_5d9d78509" id="tab-jobs_info-80-1">
<createTable tableName="JOBS_INFO"> <createTable tableName="JOBS_INFO">
<column name="ID" remarks="" type="BIGINT"> <column name="ID" remarks="" type="BIGINT">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_INFO_ID"/> <constraints primaryKey="true" primaryKeyName="PK_JOBS_INFO_ID"/>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<!--输出实体[JOBS_REGISTRY]数据结构 --> <!--输出实体[JOBS_REGISTRY]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_registry-30-2"> <changeSet author="a_A_5d9d78509" id="tab-jobs_registry-31-2">
<createTable tableName="JOBS_REGISTRY"> <createTable tableName="JOBS_REGISTRY">
<column name="ID" remarks="" type="BIGINT"> <column name="ID" remarks="" type="BIGINT">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_REGISTRY_ID"/> <constraints primaryKey="true" primaryKeyName="PK_JOBS_REGISTRY_ID"/>
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
<!--输出实体[JOBS_LOG]数据结构 --> <!--输出实体[JOBS_LOG]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_log-46-4"> <changeSet author="a_A_5d9d78509" id="tab-jobs_log-48-4">
<createTable tableName="JOBS_LOG"> <createTable tableName="JOBS_LOG">
<column name="ID" remarks="" type="BIGINT"> <column name="ID" remarks="" type="BIGINT">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_LOG_ID"/> <constraints primaryKey="true" primaryKeyName="PK_JOBS_LOG_ID"/>
......
server: server:
port: 40005 port: 40005
#Log配置
logging:
level:
cn.ibizlab: info
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<property name="LOG_PATH" value="logs" />
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="LOG_PATTERN2" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_PATH}/ibztask-api.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="Console" />
<appender-ref ref="file" />
</root>
</configuration>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册