提交 888520a1 编写于 作者: ibizdev's avatar ibizdev

ibiz4j 发布系统代码 [ibiz-task,任务调度]

上级 fbf8ebfe
......@@ -25,6 +25,7 @@ import AppForm from './components/app-form/app-form.vue'
import APPAutocomplete from './components/app-autocomplete/app-autocomplete.vue'
import AppFormDruipart from './components/app-form-druipart/app-form-druipart.vue'
import DropdownList from './components/dropdown-list/dropdown-list.vue'
import DropdownListHidden from './components/dropdown-list-hidden/dropdown-list-hidden.vue'
import UploadFile from './components/upload-file/upload-file.vue'
import ContextMenuContainer from './components/context-menu-container/context-menu-container.vue'
import AppCheckboxList from './components/app-checkbox-list/app-checkbox-list.vue'
......@@ -45,6 +46,7 @@ import AppFormGroup2 from './components/app-form-group2/app-form-group2.vue'
import AppFormItem2 from './components/app-form-item2/app-form-item2.vue'
import CodeList from './components/codelist/codelist.vue'
import AppQuickMenus from './components/app-quick-menus/app-quick-menus.vue'
import AppIconMenus from './components/app-icon-menus/app-icon-menus.vue'
import AppCheckbox from './components/app-checkbox/app-checkbox.vue'
import AppColumnRender from './components/app-column-render/app-column-render.vue'
import AppPickerSelectView from './components/app-picker-select-view/app-picker-select-view.vue'
......@@ -150,6 +152,7 @@ export const AppComponents = {
v.component('app-autocomplete', APPAutocomplete);
v.component('app-form-druipart', AppFormDruipart);
v.component('dropdown-list', DropdownList);
v.component('dropdown-list-hidden', DropdownListHidden);
v.component('upload-file', UploadFile);
v.component('context-menu-container', ContextMenuContainer);
v.component('app-checkbox-list',AppCheckboxList);
......@@ -171,6 +174,7 @@ export const AppComponents = {
v.component('app-form-item2', AppFormItem2);
v.component('codelist', CodeList);
v.component('app-quick-menus', AppQuickMenus);
v.component('app-icon-menus', AppIconMenus);
v.component('app-checkbox',AppCheckbox);
v.component('app-column-render',AppColumnRender);
v.component('app-picker-select-view',AppPickerSelectView);
......
......@@ -482,7 +482,7 @@ export default class AppFormDRUIPart extends Vue {
* @public
* @memberof AppFormDRUIPart
*/
public viewdataschange(){
public viewdataschange($event:any){
console.log((this.$t('components.appFormDRUIPart.change1') as string));
}
......
.app-icon-menus{
display: flex;
flex-wrap: wrap;
.el-card{
margin: 6px 8px;
.el-card__body{
padding: 0;
width: 200px;
height: 122px;
margin: 0;
.menuIcon{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
border: 1px rgb(210,238,255) solid;
background-color: rgb(240,249,255);
border-radius: 3px;
cursor: pointer;
&:hover{
border-color: rgb(53,152,220) ;
}
span{
font-size: 40px;
color: rgb(55,155,222);
}
img{
width: 46px;
height: 46px;
// margin-top: 12px;
}
h4{
font-weight: 500;
font-size: 16px;
}
}
}
}
}
<template>
<div class="app-icon-menus">
<template v-for="(item,index) in menus">
<div :bordered="false" v-if="item.items && Array.isArray(item.items)" :key="index" :class="item.textcls">
<p @click="$emit('menuClick',item.name, [item.name])">
<span>{{$t('app.menus.' + ctrlName + '.' + item.name)}}</span>
<span class="line"></span>
</p>
<p style=" display: 'flex' ">
<app-icon-menus :menus="item.items" :ctrlName = "ctrlName" @menuClick="menuClick"></app-icon-menus>
</p>
</div>
<el-card
:key="index"
shadow="never"
:class="item.textcls"
v-else
>
<div @click="menuClick(item.name,[item.name])" class="menuIcon" >
<span v-if="isIcon(item.icon,item.iconcls)">
<i :class="item.icon" v-if="!Object.is(item.icon, '')" />
<i :class="item.iconcls" v-else-if="!Object.is(item.iconcls, '')" />
<i class="fa fa-cogs" v-else></i>
</span>
<span v-else>
<img :src="item.icon" v-if="!Object.is(item.icon, '')" />
<img :src="item.iconcls" v-else-if="!Object.is(item.iconcls, '')" />
<i class="fa fa-cogs" v-else></i>
</span>
<h4>{{$t('app.menus.' + ctrlName + '.' + item.name)}}</h4>
</div>
</el-card>
</template>
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
@Component({})
export default class AppQuickMenus extends Vue {
public isIcon( icon: string,iconcls: string) {
if (icon.indexOf("fa") == 0 || iconcls.indexOf("fa") == 0) {
return true;
}else {
return false;
}
}
public menuClick(index: any,indexs: any[]) {
this.$emit("menuClick",index,indexs);
}
/**
* 菜单数据
*
* @type {*}
* @memberof AppQuickMenus
*/
@Prop({ default: [] }) public menus!: any;
/**
* 部件名称
*
* @type {String}
* @memberof AppQuickMenus
*/
@Prop() public ctrlName!:String;
}
</script>
<style lang='less'>
@import "./app-icon-menus.less";
</style>
\ No newline at end of file
......@@ -10,13 +10,20 @@
</dropdown>
</template>
<script lang = 'ts'>
import { Component, Vue } from 'vue-property-decorator';
import { Component, Vue, Inject } from 'vue-property-decorator';
import { localList } from '@locale/local-list';
@Component({})
export default class AppLang extends Vue {
/**
* 注入刷新行为
*
* @memberof AppLang
*/
@Inject() reload: any;
/**
* 本地语言资源
*
......@@ -55,6 +62,7 @@ export default class AppLang extends Vue {
const local: any = this.localList.find((_local: any) => Object.is(_local.type, $evnet));
this.title = local.name;
localStorage.setItem('local', $evnet);
this.reload();
}
}
......
......@@ -312,9 +312,11 @@ export default class AppPicker extends Vue {
if (value) {
this.items.push({text: newVal, value: value});
}
if(newVal && value){
this.onSearch(newVal, null, false);
}
}
}
/**
* vue 生命周期
......
<template>
<template>
<div class="app-menus">
<template v-for="(item,index) in menus">
<card :bordered="false" dis-hover v-if="item.items && Array.isArray(item.items)" :key="index">
......@@ -12,7 +12,7 @@
<span class="line"></span>
</p>
<p style=" display: 'flex' ">
<app-quick-menus :menus="item.items" :ctrlName = "ctrlName"></app-quick-menus>
<app-quick-menus :menus="item.items" :ctrlName="ctrlName"></app-quick-menus>
</p>
</card>
<card
......@@ -43,12 +43,12 @@
</template>
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
@Component({})
export default class AppQuickMenus extends Vue {
/**
* 菜单数据
*
......
......@@ -349,7 +349,7 @@ export default class CodeList extends Vue {
max-height: 32px;
padding: 0px 3px;
> img{
max-height: 32px;
max-height: 24px;
width: auto;
margin-right: 6px;
border-radius: 50%;
......
......@@ -33,7 +33,7 @@
:file-list="uploadFileList"
:show-file-list="false"
:http-request="customUploadFile">
<el-button type="primary" size="small" icon="el-icon-upload">
<el-button type="primary" size="small" icon="el-icon-upload" :disabled="disabled">
{{$t('components.diskFileUpload.clickUpload')}}
</el-button>
</el-upload>
......
.dropdown-list-hidden-container{
.dropdown-list-hidden{
display: inline-block;
}
.tree-dropdown-list{
width: 100%;
.el-input__inner{
height: 32px !important;
line-height: 32px !important;
}
.el-input__icon{
line-height: 32px;
}
}
}
\ No newline at end of file
......@@ -9,7 +9,7 @@
:filterable="filterable"
@on-open-change="onClick"
:placeholder="placeholder?placeholder:$t('components.dropDownList.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :class="item.class" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
<i-option v-for="(item, index) in items" :key="index" :disabled="item.disabled" :class="item.class" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
<ibiz-select-tree v-if="hasChildren" class="tree-dropdown-list" :disabled="disabled" :NodesData="items" v-model="currentVal" :multiple="false"></ibiz-select-tree>
</div>
......@@ -61,6 +61,24 @@ export default class DropDownList extends Vue {
*/
@Model('change') readonly itemValue!: any;
/**
* 监控值变化,根据属性类型强制转换
*
* @memberof DropDownList
*/
@Watch('itemValue')
public valueWatch() {
try {
this.readyValue();
// 代码表集合中不存在改选项,重新准备集合
if (this.value && !this.items.find((item: any) => Object.is(this.value, item.value))) {
this.loadData();
}
} catch (error) {
console.log('下拉列表,值转换失败');
}
}
/**
* 代码表标识
*
......
......@@ -68,7 +68,7 @@ export default class TabPageExp extends Vue {
public getCaption(caption: any, info: any): any {
return info && !Object.is(info, "")
? `${this.$t(caption)} - ${info}`
? `${this.$t(caption)} - ${this.$t(info)}`
: this.$t(caption);
}
......
......@@ -101,7 +101,7 @@ export default class EditViewEngine extends ViewEngine {
* @memberof EditViewEngine
*/
public onFormLoad(arg: any): void {
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : this.view.$t('app.local.new');
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : 'app.local.new';
this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1');
......@@ -116,7 +116,7 @@ export default class EditViewEngine extends ViewEngine {
* @memberof EditViewEngine
*/
public onFormSave(arg: any): void {
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : this.view.$t('app.local.new');
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : 'app.local.new';
this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1');
......@@ -200,12 +200,12 @@ export default class EditViewEngine extends ViewEngine {
}
// 解决表格视图标题问题
if(this.view.$tabPageExp && this.view.viewDefaultUsage){
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfCaption), this.view.$t(viewdata.srfCaption), info);
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfCaption), viewdata.srfCaption, info);
}
if(this.view.$route){
this.view.$route.meta.info = info;
}
this.view.model.srfCaption = `${this.view.$t(viewdata.srfCaption)}-${viewdata.dataInfo}`;
this.view.model.srfCaption = `${this.view.$t(viewdata.srfCaption)}-${this.view.$t(viewdata.dataInfo)}`;
this.view.initNavDataWithRoute(null,isNew);
}
}
......
......@@ -16,7 +16,7 @@ const messages = {
// 自动根据浏览器系统语言设置语言
const navLang = localStorage.getItem('local') || navigator.language;
const localLang = (navLang === 'zh-CN' || (navLang === 'en-US' && messages.hasOwnProperty('en-US'))) ? navLang : false;
const localLang = (navLang === 'zh-CN' || (navLang === 'en-US' && messages.hasOwnProperty('en-US')) || (navLang === 'ti-US' && messages.hasOwnProperty('ti-US'))) ? navLang : false;
let lang: string = localLang || 'zh-CN';
vueApp.config.lang = lang
......
此差异已折叠。
import app_BO_CN_Base from './BO-CN-base';
function getLocaleResource(){
const app_BO_CN_OwnData = {};
const targetData = Object.assign(app_BO_CN_Base(), app_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import codelist_BO_CN_Base from './codelist_BO_CN_base';
function getLocaleResource(){
const codelist_BO_CN_OwnData = {};
const targetData = Object.assign(codelist_BO_CN_Base(), codelist_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
CodeListJobStatus: {
"0": commonLogic.appcommonhandle("ENABLED",null),
"1": commonLogic.appcommonhandle("DISABLED",null),
"empty": commonLogic.appcommonhandle("",null)
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import components_BO_CN_Base from './components_BO_CN_base';
function getLocaleResource(){
const components_BO_CN_OwnData = {};
const targetData = Object.assign(components_BO_CN_Base(), components_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import JobsInfo_BO_CN_Base from './jobs-info_BO_CN_base';
function getLocaleResource(){
const JobsInfo_BO_CN_OwnData = {};
const targetData = Object.assign(JobsInfo_BO_CN_Base(), JobsInfo_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
id: commonLogic.appcommonhandle("主键ID",null),
tenant_id: commonLogic.appcommonhandle("租户ID",null),
app: commonLogic.appcommonhandle("服务名",null),
cron: commonLogic.appcommonhandle("任务执行CRON",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
param: commonLogic.appcommonhandle("执行器任务参数",null),
timeout: commonLogic.appcommonhandle("任务执行超时时间(秒)",null),
fail_retry_count: commonLogic.appcommonhandle("失败重试次数",null),
last_time: commonLogic.appcommonhandle("上次调度时间",null),
next_time: commonLogic.appcommonhandle("下次调度时间",null),
author: commonLogic.appcommonhandle("所有者",null),
remark: commonLogic.appcommonhandle("备注",null),
status: commonLogic.appcommonhandle("状态",null),
update_time: commonLogic.appcommonhandle("更新时间",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
},
views: {
editview: {
caption: commonLogic.appcommonhandle("任务信息",null),
title: commonLogic.appcommonhandle("任务信息编辑视图",null),
},
gridview: {
caption: commonLogic.appcommonhandle("任务信息",null),
title: commonLogic.appcommonhandle("任务信息表格视图",null),
},
},
main_form: {
details: {
group1: commonLogic.appcommonhandle("任务信息基本信息",null),
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("主键ID",null),
srfmajortext: commonLogic.appcommonhandle("执行器任务HANDLER",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
app: commonLogic.appcommonhandle("服务名",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
cron: commonLogic.appcommonhandle("任务执行CRON",null),
param: commonLogic.appcommonhandle("执行器任务参数",null),
last_time: commonLogic.appcommonhandle("上次调度时间",null),
next_time: commonLogic.appcommonhandle("下次调度时间",null),
timeout: commonLogic.appcommonhandle("任务执行超时时间(秒)",null),
fail_retry_count: commonLogic.appcommonhandle("失败重试次数",null),
author: commonLogic.appcommonhandle("所有者",null),
remark: commonLogic.appcommonhandle("备注",null),
status: commonLogic.appcommonhandle("状态",null),
tenant_id: commonLogic.appcommonhandle("租户ID",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
update_time: commonLogic.appcommonhandle("更新时间",null),
id: commonLogic.appcommonhandle("主键ID",null),
},
uiactions: {
},
},
main_grid: {
columns: {
id: commonLogic.appcommonhandle("主键ID",null),
app: commonLogic.appcommonhandle("服务名",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
cron: commonLogic.appcommonhandle("任务执行CRON",null),
last_time: commonLogic.appcommonhandle("上次调度时间",null),
next_time: commonLogic.appcommonhandle("下次调度时间",null),
status: commonLogic.appcommonhandle("状态",null),
timeout: commonLogic.appcommonhandle("任务执行超时时间(秒)",null),
update_time: commonLogic.appcommonhandle("更新时间",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
n_app_like: commonLogic.appcommonhandle("服务名(文本包含(%))",null),
n_handler_like: commonLogic.appcommonhandle("执行器任务HANDLER(文本包含(%))",null),
n_status_eq: commonLogic.appcommonhandle("状态(等于(=))",null),
},
uiactions: {
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("保存",null),
tip: commonLogic.appcommonhandle("保存",null),
},
deuiaction1: {
caption: commonLogic.appcommonhandle("关闭",null),
tip: commonLogic.appcommonhandle("关闭",null),
},
},
gridviewtoolbar_toolbar: {
deuiaction1: {
caption: commonLogic.appcommonhandle("启动",null),
tip: commonLogic.appcommonhandle("启动",null),
},
deuiaction2: {
caption: commonLogic.appcommonhandle("停止",null),
tip: commonLogic.appcommonhandle("停止",null),
},
deuiaction3: {
caption: commonLogic.appcommonhandle("执行",null),
tip: commonLogic.appcommonhandle("执行",null),
},
deuiaction4: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
deuiaction5: {
caption: commonLogic.appcommonhandle("编辑",null),
tip: commonLogic.appcommonhandle("编辑",null),
},
deuiaction6: {
caption: commonLogic.appcommonhandle("删除",null),
tip: commonLogic.appcommonhandle("删除",null),
},
deuiaction7: {
caption: commonLogic.appcommonhandle("过滤",null),
tip: commonLogic.appcommonhandle("过滤",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import JobsLock_BO_CN_Base from './jobs-lock_BO_CN_base';
function getLocaleResource(){
const JobsLock_BO_CN_OwnData = {};
const targetData = Object.assign(JobsLock_BO_CN_Base(), JobsLock_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
id: commonLogic.appcommonhandle("主键ID",null),
name: commonLogic.appcommonhandle("名称",null),
owner: commonLogic.appcommonhandle("持有者",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import JobsLog_BO_CN_Base from './jobs-log_BO_CN_base';
function getLocaleResource(){
const JobsLog_BO_CN_OwnData = {};
const targetData = Object.assign(JobsLog_BO_CN_Base(), JobsLog_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
id: commonLogic.appcommonhandle("主键ID",null),
job_id: commonLogic.appcommonhandle("任务ID",null),
address: commonLogic.appcommonhandle("执行地址",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
param: commonLogic.appcommonhandle("执行器任务参数",null),
fail_retry_count: commonLogic.appcommonhandle("失败重试次数",null),
trigger_code: commonLogic.appcommonhandle("触发器调度返回码",null),
trigger_type: commonLogic.appcommonhandle("触发器调度类型",null),
trigger_msg: commonLogic.appcommonhandle("触发器调度信息",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
},
views: {
gridview: {
caption: commonLogic.appcommonhandle("任务调度日志",null),
title: commonLogic.appcommonhandle("任务调度日志表格视图",null),
},
editview: {
caption: commonLogic.appcommonhandle("任务调度日志",null),
title: commonLogic.appcommonhandle("任务调度日志编辑视图",null),
},
},
main_form: {
details: {
group1: commonLogic.appcommonhandle("任务调度日志基本信息",null),
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("主键ID",null),
srfmajortext: commonLogic.appcommonhandle("执行器任务HANDLER",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
job_id: commonLogic.appcommonhandle("任务ID",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
param: commonLogic.appcommonhandle("执行器任务参数",null),
fail_retry_count: commonLogic.appcommonhandle("失败重试次数",null),
trigger_code: commonLogic.appcommonhandle("触发器调度返回码",null),
trigger_type: commonLogic.appcommonhandle("触发器调度类型",null),
trigger_msg: commonLogic.appcommonhandle("触发器调度信息",null),
address: commonLogic.appcommonhandle("执行地址",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
id: commonLogic.appcommonhandle("主键ID",null),
},
uiactions: {
},
},
main_grid: {
columns: {
id: commonLogic.appcommonhandle("主键ID",null),
job_id: commonLogic.appcommonhandle("任务ID",null),
handler: commonLogic.appcommonhandle("执行器任务HANDLER",null),
address: commonLogic.appcommonhandle("执行地址",null),
trigger_code: commonLogic.appcommonhandle("触发器调度返回码",null),
trigger_type: commonLogic.appcommonhandle("触发器调度类型",null),
fail_retry_count: commonLogic.appcommonhandle("失败重试次数",null),
create_time: commonLogic.appcommonhandle("创建时间",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
n_job_id_eq: commonLogic.appcommonhandle("任务ID(等于(=))",null),
n_handler_like: commonLogic.appcommonhandle("执行器任务HANDLER(文本包含(%))",null),
n_trigger_code_eq: commonLogic.appcommonhandle("触发器调度返回码(等于(=))",null),
},
uiactions: {
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import JobsRegistry_BO_CN_Base from './jobs-registry_BO_CN_base';
function getLocaleResource(){
const JobsRegistry_BO_CN_OwnData = {};
const targetData = Object.assign(JobsRegistry_BO_CN_Base(), JobsRegistry_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
id: commonLogic.appcommonhandle("主键ID",null),
app: commonLogic.appcommonhandle("服务名",null),
address: commonLogic.appcommonhandle("执行地址",null),
status: commonLogic.appcommonhandle("状态",null),
update_time: commonLogic.appcommonhandle("更新时间",null),
},
views: {
gridview: {
caption: commonLogic.appcommonhandle("任务注册信息",null),
title: commonLogic.appcommonhandle("任务注册信息表格视图",null),
},
editview: {
caption: commonLogic.appcommonhandle("任务注册信息",null),
title: commonLogic.appcommonhandle("任务注册信息编辑视图",null),
},
},
main_form: {
details: {
group1: commonLogic.appcommonhandle("任务注册信息基本信息",null),
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("主键ID",null),
srfmajortext: commonLogic.appcommonhandle("服务名",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
app: commonLogic.appcommonhandle("服务名",null),
address: commonLogic.appcommonhandle("执行地址",null),
status: commonLogic.appcommonhandle("状态",null),
id: commonLogic.appcommonhandle("主键ID",null),
},
uiactions: {
},
},
main_grid: {
columns: {
id: commonLogic.appcommonhandle("主键ID",null),
app: commonLogic.appcommonhandle("服务名",null),
address: commonLogic.appcommonhandle("执行地址",null),
status: commonLogic.appcommonhandle("状态",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
n_app_like: commonLogic.appcommonhandle("服务名(文本包含(%))",null),
n_status_eq: commonLogic.appcommonhandle("状态(等于(=))",null),
},
uiactions: {
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("编辑",null),
tip: commonLogic.appcommonhandle("编辑",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("删除",null),
tip: commonLogic.appcommonhandle("删除",null),
},
deuiaction1: {
caption: commonLogic.appcommonhandle("过滤",null),
tip: commonLogic.appcommonhandle("过滤",null),
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("保存",null),
tip: commonLogic.appcommonhandle("保存",null),
},
deuiaction1: {
caption: commonLogic.appcommonhandle("关闭",null),
tip: commonLogic.appcommonhandle("关闭",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
// 用户自定义语言资源 藏文
function getLocaleResource(){
const data:any = {};
return data;
}
export default getLocaleResource;
\ No newline at end of file
export default {
el: {
colorpicker: {
confirm: 'གཏན་ཁེལ་',
clear: 'གཙང་སེལ་'
},
datepicker: {
now: 'སྐབས་དེར།',
today: 'དེ་རིང་',
cancel: 'མེད་པར་བཟོ་བ་',
clear: 'གཙང་སེལ་',
confirm: 'གཏན་ཁེལ་',
selectDate: 'བདམས་པའི་ཚེས་གྲངས།',
selectTime: 'བདམས་པའི་དུས་ཚོད།',
startDate: 'འགོ་འཛུགས་དུས་ཚོད།',
startTime: 'འགོ་རྩོམ་དུས་ཚོད།',
endDate: 'མཇུག་རྫོགས་ཚེས་གྲངས།',
endTime: 'མཇུག་རྫོགས་དུས་ཚོད།',
prevYear: 'ལོ་སྔོན་མ།',
nextYear: 'ལོ་རྗེས་མ།',
prevMonth: 'ཟླ་བ་གོང་མར་',
nextMonth: 'ཟླ་བ་རྗེས་མ་',
year: 'ལོ་',
month1: 'ཟླ་བ་དང་པོ།',
month2: 'ཟླ་བ་གཉིས་པ།',
month3: 'ཟླ་བ་གསུམ་པ།',
month4: 'ཟླ་བ་བཞི་པ།',
month5: 'ཟླ་བ་ལྔ་པ།',
month6: 'ཟླ་བ་དྲུག་པ།',
month7: 'ཟླ་བ་བདུན་པ།',
month8: 'ཟླ་བ་བརྒྱད་པ།',
month9: 'ཟླ་བ་དགུ་པ།',
month10: 'ཟླ་བ་བཅུ་པ།',
month11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
month12: 'ཟླ་བ་བཅུ་གཉིས་པ།',
weeks: {
sun: 'ཉི་མ།',
mon: 'གཅིག',
tue: 'གཉིས།',
wed: 'གསུམ།',
thu: 'བཞི།',
fri: 'ལྔ།',
sat: 'དྲུག'
},
months: {
jan: 'ཟླ་བ་དང་པོ།',
feb: 'ཟླ་བ་གཉིས་པ།',
mar: 'ཟླ་བ་གསུམ་པ།',
apr: 'ཟླ་བ་བཞི་པ།',
may: 'ཟླ་བ་ལྔ་པ།',
jun: 'ཟླ་བ་དྲུག་པ།',
jul: 'ཟླ་བ་བདུན་པ།',
aug: 'ཟླ་བ་བརྒྱད་པ།',
sep: 'ཟླ་བ་དགུ་པ།',
oct: 'ཟླ་བ་བཅུ་པ།',
nov: 'ཟླ་བ་བཅུ་གཅིག་པ།',
dec: 'ཟླ་བ་བཅུ་གཉིས་པ།'
}
},
select: {
loading: 'སྣོན་འཇུག་ཁྲོད་',
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
noData: 'གཞི་གྲངས་མེད་པ་',
placeholder: 'འདེམ་རོགས་།'
},
cascader: {
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
loading: 'སྣོན་འཇུག་ཁྲོད་',
placeholder: 'འདེམ་རོགས་།',
noData: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
},
pagination: {
goto: 'ཕེབས་པ།',
pagesize: 'ནར་མོ/ལྡེབ་ངོས།',
total: 'མཉམ་དུ། {total} ལྕུག་མ།',
pageClassifier: 'ཤོག་ངོས་'
},
messagebox: {
title: 'གསལ་འདེབས་',
confirm: 'གཏན་ཁེལ་',
cancel: 'མེད་པར་བཟོ་བ་',
error: 'གཞི་གྲངས་ནང་འདྲེན་བྱས་པ་དེ་ཁྲིམས་དང་མི་མཐུན་པ་ཞིག་རེད།!'
},
upload: {
deleteTip: 'deleteམཐེབ་ལྟར་སུབ་པ་ཆོག་།',
delete: 'སུབ་པ་',
preview: 'པར་རིས་ལ་ལྟ་བ་',
continue: 'མུ་མཐུད་དུ་ཡར་བསྐུར་།'
},
table: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་',
confirmFilter: 'འཚག་འདེམས་',
resetFilter: 'བསྐྱར་འཇོག',
clearFilter: 'ཚང་མ།',
sumText: 'བསྡོམས་འབོར་'
},
tree: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
},
transfer: {
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
noData: 'གཞི་གྲངས་མེད་པ་',
titles: ['རེའུ་མིག1', 'རེའུ་མིག2'],
filterPlaceholder: 'བཤེར་འཚོལ་ནང་དོན་ནང་འཇུག་རོགས་།',
noCheckedFormat: 'མཉམ་དུ། {total} ཚན།',
hasCheckedFormat: 'བདམས་ཟིན་པ་ {checked}/{total} ཚན།'
},
image: {
error: 'ཁུར་སྣོན་ཕམ་པ།'
},
pageHeader: {
title: 'ཕྱིར་ལོག'
},
popconfirm: {
confirmButtonText: 'གཏན་ཁེལ་',
cancelButtonText: 'མེད་པར་བཟོ་བ་'
}
}
};
\ No newline at end of file
export default {
i: {
locale: 'BO-CN',
select: {
placeholder: 'འདེམ་རོགས་།',
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
loading: 'སྣོན་འཇུག་ཁྲོད་'
},
table: {
noDataText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་',
noFilteredDataText: 'གནས་སྐབས་འཚག་འདེམས་མཇུག་འབྲས་མེད་།',
confirmFilter: 'འཚག་འདེམས་',
resetFilter: 'བསྐྱར་འཇོག',
clearFilter: 'ཚང་མ།',
sumText: 'བསྡོམས་འབོར་'
},
datepicker: {
selectDate: 'བདམས་པའི་ཚེས་གྲངས།',
selectTime: 'བདམས་པའི་དུས་ཚོད།',
startTime: 'འགོ་རྩོམ་དུས་ཚོད།',
endTime: 'མཇུག་རྫོགས་དུས་ཚོད།',
clear: 'གཙང་སེལ་',
ok: 'གཏན་ཁེལ་',
datePanelLabel: '[mmmm] [yyyy]',
month: 'ཟླ་བ།',
month1: 'ཟླ་བ་དང་པོ།',
month2: 'ཟླ་བ་གཉིས་པ།',
month3: 'ཟླ་བ་གསུམ་པ།',
month4: 'ཟླ་བ་བཞི་པ།',
month5: 'ཟླ་བ་ལྔ་པ།',
month6: 'ཟླ་བ་དྲུག་པ།',
month7: 'ཟླ་བ་བདུན་པ།',
month8: 'ཟླ་བ་བརྒྱད་པ།',
month9: 'ཟླ་བ་དགུ་པ།',
month10: 'ཟླ་བ་བཅུ་པ།',
month11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
month12: 'ཟླ་བ་བཅུ་གཉིས་པ།',
year: 'ལོ་',
weekStartDay: '0',
weeks: {
sun: 'ཉི་མ།',
mon: 'གཅིག',
tue: 'གཉིས།',
wed: 'གསུམ།',
thu: 'བཞི།',
fri: 'ལྔ།',
sat: 'དྲུག'
},
months: {
m1: 'ཟླ་བ་དང་པོ།',
m2: 'ཟླ་བ་གཉིས་པ།',
m3: 'ཟླ་བ་གསུམ་པ།',
m4: 'ཟླ་བ་བཞི་པ།',
m5: 'ཟླ་བ་ལྔ་པ།',
m6: 'ཟླ་བ་དྲུག་པ།',
m7: 'ཟླ་བ་བདུན་པ།',
m8: 'ཟླ་བ་བརྒྱད་པ།',
m9: 'ཟླ་བ་དགུ་པ།',
m10: 'ཟླ་བ་བཅུ་པ།',
m11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
m12: 'ཟླ་བ་བཅུ་གཉིས་པ།'
}
},
transfer: {
titles: {
source: 'ཁུངས་ཀྱི་རེའུ་མིག',
target: 'དམིགས་ཡུལ་རེའུ་མིག'
},
filterPlaceholder: 'བཤེར་འཚོལ་ནང་དོན་ནང་འཇུག་རོགས་།',
notFoundText: 'རེའུ་མིག་སྟོང་པ་རེད།'
},
modal: {
okText: 'གཏན་ཁེལ་',
cancelText: 'མེད་པར་བཟོ་བ་'
},
poptip: {
okText: 'གཏན་ཁེལ་',
cancelText: 'མེད་པར་བཟོ་བ་'
},
page: {
prev: 'ཤོག་ངོས་གོང་མ།',
next: 'ཤོག་ངོས་རྗེས་མ་',
total: 'མཉམ་དུ།',
item: 'ལྕུག་མ།',
items: 'ལྕུག་མ།',
prev5: 'མདུན་གྱི་ཤོག་ངོས་5།',
next5: 'རྒྱབ་ཏུ་ཤོག་ངོས་5།',
page: 'ནར་མོ/ལྡེབ་ངོས། ',
goto: 'མཆོང་།',
p: 'ཤོག་ངོས་'
},
rate: {
star: 'སྐར་མ་',
stars: 'སྐར་མ་'
},
time: {
before: 'མདུན།',
after: 'རྗེས་',
just: 'མ་ཐག་',
seconds: 'སྐར་ཆ་',
minutes: 'སྐར་མ་',
hours: 'ཆུ་ཚོད།',
days: 'གནམ་'
},
tree: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
}
}
};
\ No newline at end of file
......@@ -3,7 +3,7 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="jobsinfogridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<span class='caption-info' :title="$t(model.srfCaption)">{{$t(model.srfCaption)}}</span>
</div>
<div class='view-top-messages'>
</div>
......
......@@ -3,7 +3,7 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="jobsloggridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<span class='caption-info' :title="$t(model.srfCaption)">{{$t(model.srfCaption)}}</span>
</div>
<div class='view-top-messages'>
</div>
......
......@@ -3,7 +3,7 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="jobsregistrygridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<span class='caption-info' :title="$t(model.srfCaption)">{{$t(model.srfCaption)}}</span>
</div>
<div class='view-top-messages'>
</div>
......
......@@ -178,7 +178,7 @@ export default class JobsInfoServiceBase extends EntityService {
*/
public async ExecuteBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/jobsinfo/executebatch`,tempData,isloading);
return await Http.getInstance().post(`/jobsinfos/executebatch`,tempData,isloading);
}
/**
......
......@@ -110,6 +110,10 @@
font-size: 18px;
color: #1890ff;
flex-shrink: 0;
max-width: 50%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
> .toolbar-container{
margin-left: auto;
......
......@@ -10,5 +10,11 @@ declare module "view-design/dist/locale/zh-CN" {
declare module "element-ui/lib/locale/lang/zh-CN" {
}
declare module "view-design/dist/locale/BO-CN" {
}
declare module "element-ui/lib/locale/lang/BO-CN" {
}
declare module "tinymce/tinymce" {
}
\ No newline at end of file
......@@ -8,6 +8,7 @@
:collapse="isCollapse"
@select="select"
:default-active="defaultActive">
<template v-if="Object.is(mode,'horizontal')">
<template v-for="item0 in menus">
<template v-if="item0.items && Array.isArray(item0.items) && item0.items.length > 0">
......@@ -107,6 +108,7 @@
</template>
</template>
<app-menu-item v-else :isCollapse="isCollapse" :menus="menus" :ctrlName="'taskindexview'" :isFirst="true" :counterdata="counterdata" :popper-class="popperClass"></app-menu-item>
</el-menu>
</div>
</template>
......
......@@ -73,7 +73,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsInfoService from '@/service/jobs-info/jobs-info-service';
import JobsInfoEntityService from '@/service/jobs-info/jobs-info-service';
import DefaultService from './default-searchform-service';
import JobsInfoUIService from '@/uiservice/jobs-info/jobs-info-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -162,7 +162,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {JobsInfoService}
* @memberof DefaultBase
*/
public appEntityService: JobsInfoService = new JobsInfoService({ $store: this.$store });
public appEntityService: JobsInfoEntityService = new JobsInfoEntityService({ $store: this.$store });
......
......@@ -212,7 +212,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsInfoService from '@/service/jobs-info/jobs-info-service';
import JobsInfoEntityService from '@/service/jobs-info/jobs-info-service';
import MainService from './main-form-service';
import JobsInfoUIService from '@/uiservice/jobs-info/jobs-info-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -303,7 +303,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsInfoService}
* @memberof MainBase
*/
public appEntityService: JobsInfoService = new JobsInfoService({ $store: this.$store });
public appEntityService: JobsInfoEntityService = new JobsInfoEntityService({ $store: this.$store });
......@@ -556,6 +556,15 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public errorMessages: Array<any> = [];
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof MainBase
*/
public appStateEvent: Subscription | undefined;
/**
* 设置表单项错误提示信息
*
......@@ -1560,6 +1569,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -10,6 +10,7 @@
:cell-class-name="getCellClassName"
max-height="items.length > 0 ? 'calc(100%-50px)' : '100%'"
@row-click="rowClick($event)"
@cell-click="cellClick"
@select-all="selectAll($event)"
@select="select"
@row-class-name="onRowClassName($event)"
......@@ -180,7 +181,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsInfoService from '@/service/jobs-info/jobs-info-service';
import JobsInfoEntityService from '@/service/jobs-info/jobs-info-service';
import MainService from './main-grid-service';
import JobsInfoUIService from '@/uiservice/jobs-info/jobs-info-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -270,7 +271,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsInfoService}
* @memberof MainBase
*/
public appEntityService: JobsInfoService = new JobsInfoService({ $store: this.$store });
public appEntityService: JobsInfoEntityService = new JobsInfoEntityService({ $store: this.$store });
......@@ -1107,7 +1108,8 @@ export default class MainBase extends Vue implements ControlInterface {
this.selections = [];
resolve(response);
}).catch((response: any) => {
if (response && response.status === 401) {
if (response && response.status != 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.message});
return;
}
if (!response || !response.status || !response.data) {
......@@ -1794,6 +1796,17 @@ export default class MainBase extends Vue implements ControlInterface {
this.$emit('selectionchange', this.selections);
}
/**
* 单元格单击隐藏提示框
*
* @memberof MainBase
*/
public cellClick() {
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
if (el) {
el.style.display = 'none';
}
}
/**
* 行单击选中
......@@ -1928,6 +1941,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true);
this.cellClick();
$event.stopPropagation();
}
......
......@@ -66,7 +66,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsLogService from '@/service/jobs-log/jobs-log-service';
import JobsLogEntityService from '@/service/jobs-log/jobs-log-service';
import DefaultService from './default-searchform-service';
import JobsLogUIService from '@/uiservice/jobs-log/jobs-log-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -155,7 +155,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {JobsLogService}
* @memberof DefaultBase
*/
public appEntityService: JobsLogService = new JobsLogService({ $store: this.$store });
public appEntityService: JobsLogEntityService = new JobsLogEntityService({ $store: this.$store });
......
......@@ -132,7 +132,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsLogService from '@/service/jobs-log/jobs-log-service';
import JobsLogEntityService from '@/service/jobs-log/jobs-log-service';
import MainService from './main-form-service';
import JobsLogUIService from '@/uiservice/jobs-log/jobs-log-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -223,7 +223,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsLogService}
* @memberof MainBase
*/
public appEntityService: JobsLogService = new JobsLogService({ $store: this.$store });
public appEntityService: JobsLogEntityService = new JobsLogEntityService({ $store: this.$store });
......@@ -476,6 +476,15 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public errorMessages: Array<any> = [];
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof MainBase
*/
public appStateEvent: Subscription | undefined;
/**
* 设置表单项错误提示信息
*
......@@ -1380,6 +1389,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -10,6 +10,7 @@
:cell-class-name="getCellClassName"
max-height="items.length > 0 ? 'calc(100%-50px)' : '100%'"
@row-click="rowClick($event)"
@cell-click="cellClick"
@select-all="selectAll($event)"
@select="select"
@row-class-name="onRowClassName($event)"
......@@ -166,7 +167,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsLogService from '@/service/jobs-log/jobs-log-service';
import JobsLogEntityService from '@/service/jobs-log/jobs-log-service';
import MainService from './main-grid-service';
import JobsLogUIService from '@/uiservice/jobs-log/jobs-log-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -256,7 +257,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsLogService}
* @memberof MainBase
*/
public appEntityService: JobsLogService = new JobsLogService({ $store: this.$store });
public appEntityService: JobsLogEntityService = new JobsLogEntityService({ $store: this.$store });
......@@ -1084,7 +1085,8 @@ export default class MainBase extends Vue implements ControlInterface {
this.selections = [];
resolve(response);
}).catch((response: any) => {
if (response && response.status === 401) {
if (response && response.status != 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.message});
return;
}
if (!response || !response.status || !response.data) {
......@@ -1760,6 +1762,17 @@ export default class MainBase extends Vue implements ControlInterface {
this.$emit('selectionchange', this.selections);
}
/**
* 单元格单击隐藏提示框
*
* @memberof MainBase
*/
public cellClick() {
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
if (el) {
el.style.display = 'none';
}
}
/**
* 行单击选中
......@@ -1894,6 +1907,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true);
this.cellClick();
$event.stopPropagation();
}
......
......@@ -59,7 +59,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service';
import JobsRegistryEntityService from '@/service/jobs-registry/jobs-registry-service';
import DefaultService from './default-searchform-service';
import JobsRegistryUIService from '@/uiservice/jobs-registry/jobs-registry-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -148,7 +148,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {JobsRegistryService}
* @memberof DefaultBase
*/
public appEntityService: JobsRegistryService = new JobsRegistryService({ $store: this.$store });
public appEntityService: JobsRegistryEntityService = new JobsRegistryEntityService({ $store: this.$store });
......
......@@ -73,7 +73,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service';
import JobsRegistryEntityService from '@/service/jobs-registry/jobs-registry-service';
import MainService from './main-form-service';
import JobsRegistryUIService from '@/uiservice/jobs-registry/jobs-registry-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -164,7 +164,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsRegistryService}
* @memberof MainBase
*/
public appEntityService: JobsRegistryService = new JobsRegistryService({ $store: this.$store });
public appEntityService: JobsRegistryEntityService = new JobsRegistryEntityService({ $store: this.$store });
......@@ -417,6 +417,15 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public errorMessages: Array<any> = [];
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof MainBase
*/
public appStateEvent: Subscription | undefined;
/**
* 设置表单项错误提示信息
*
......@@ -1201,6 +1210,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -10,6 +10,7 @@
:cell-class-name="getCellClassName"
max-height="items.length > 0 ? 'calc(100%-50px)' : '100%'"
@row-click="rowClick($event)"
@cell-click="cellClick"
@select-all="selectAll($event)"
@select="select"
@row-class-name="onRowClassName($event)"
......@@ -120,7 +121,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import JobsRegistryService from '@/service/jobs-registry/jobs-registry-service';
import JobsRegistryEntityService from '@/service/jobs-registry/jobs-registry-service';
import MainService from './main-grid-service';
import JobsRegistryUIService from '@/uiservice/jobs-registry/jobs-registry-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -210,7 +211,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {JobsRegistryService}
* @memberof MainBase
*/
public appEntityService: JobsRegistryService = new JobsRegistryService({ $store: this.$store });
public appEntityService: JobsRegistryEntityService = new JobsRegistryEntityService({ $store: this.$store });
......@@ -1002,7 +1003,8 @@ export default class MainBase extends Vue implements ControlInterface {
this.selections = [];
resolve(response);
}).catch((response: any) => {
if (response && response.status === 401) {
if (response && response.status != 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.message});
return;
}
if (!response || !response.status || !response.data) {
......@@ -1674,6 +1676,17 @@ export default class MainBase extends Vue implements ControlInterface {
this.$emit('selectionchange', this.selections);
}
/**
* 单元格单击隐藏提示框
*
* @memberof MainBase
*/
public cellClick() {
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
if (el) {
el.style.display = 'none';
}
}
/**
* 行单击选中
......@@ -1808,6 +1821,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true);
this.cellClick();
$event.stopPropagation();
}
......
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ibztask-app-web
labels:
app: ibztask-app-web
spec:
replicas: 1
selector:
matchLabels:
app: ibztask-app-web
template:
metadata:
labels:
app: ibztask-app-web
spec:
imagePullSecrets:
- name: aly-shanghai
containers:
- name: ibztask-app-web
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibztask-app-web:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: data
mountPath: /app/file
volumes:
- name: data
persistentVolumeClaim:
claimName: demo-date-pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
name: ibztask-app-web
labels:
app: ibztask-app-web
spec:
type: NodePort
ports:
- name: http
port: 8080
targetPort: 8080
nodePort: 8080
protocol: TCP
selector:
app: ibztask-app-web
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.task.domain.JobsInfo;
import cn.ibizlab.core.task.filter.JobsInfoSearchContext;
......
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.task.domain.JobsLock;
import cn.ibizlab.core.task.filter.JobsLockSearchContext;
......
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.task.domain.JobsLog;
import cn.ibizlab.core.task.filter.JobsLogSearchContext;
......
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.task.domain.JobsRegistry;
import cn.ibizlab.core.task.filter.JobsRegistrySearchContext;
......
......@@ -254,9 +254,6 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i
public IJobsInfoService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -221,9 +221,6 @@ public class JobsLockServiceImpl extends ServiceImpl<JobsLockMapper, JobsLock> i
public IJobsLockService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -221,9 +221,6 @@ public class JobsLogServiceImpl extends ServiceImpl<JobsLogMapper, JobsLog> impl
public IJobsLogService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -221,9 +221,6 @@ public class JobsRegistryServiceImpl extends ServiceImpl<JobsRegistryMapper, Job
public IJobsRegistryService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -4,7 +4,7 @@
<!--输出实体[JOBS_INFO]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_info-1-1">
<changeSet author="a_A_5d9d78509" id="tab-jobs_info-4-1">
<createTable tableName="JOBS_INFO">
<column name="ID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_INFO_ID"/>
......
......@@ -16,7 +16,7 @@
"fieldname":"ID" ,
"codename":"Id",
"field_logic_name":"主键ID",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -30,7 +30,7 @@
"fieldname":"TENANT_ID" ,
"codename":"Tenant_id",
"field_logic_name":"租户ID",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -44,7 +44,7 @@
"fieldname":"APP" ,
"codename":"App",
"field_logic_name":"服务名",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -58,7 +58,7 @@
"fieldname":"CRON" ,
"codename":"Cron",
"field_logic_name":"任务执行CRON",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -72,7 +72,7 @@
"fieldname":"HANDLER" ,
"codename":"Handler",
"field_logic_name":"执行器任务HANDLER",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -86,7 +86,7 @@
"fieldname":"PARAM" ,
"codename":"Param",
"field_logic_name":"执行器任务参数",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -100,7 +100,7 @@
"fieldname":"TIMEOUT" ,
"codename":"Timeout",
"field_logic_name":"任务执行超时时间(秒)",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"INT",
"nullable":0,
"physical_field":1,
......@@ -113,7 +113,7 @@
"fieldname":"FAIL_RETRY_COUNT" ,
"codename":"Fail_retry_count",
"field_logic_name":"失败重试次数",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"INT",
"nullable":0,
"physical_field":1,
......@@ -126,7 +126,7 @@
"fieldname":"LAST_TIME" ,
"codename":"Last_time",
"field_logic_name":"上次调度时间",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"BIGINT",
"nullable":0,
"physical_field":1,
......@@ -139,7 +139,7 @@
"fieldname":"NEXT_TIME" ,
"codename":"Next_time",
"field_logic_name":"下次调度时间",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"BIGINT",
"nullable":0,
"physical_field":1,
......@@ -152,7 +152,7 @@
"fieldname":"AUTHOR" ,
"codename":"Author",
"field_logic_name":"所有者",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -166,7 +166,7 @@
"fieldname":"REMARK" ,
"codename":"Remark",
"field_logic_name":"备注",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -180,7 +180,7 @@
"fieldname":"STATUS" ,
"codename":"Status",
"field_logic_name":"状态",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"NSCODELIST",
"dict":"CodeListJobStatus",
"nullable":0,
......@@ -194,7 +194,7 @@
"fieldname":"UPDATE_TIME" ,
"codename":"Update_time",
"field_logic_name":"更新时间",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"DATETIME",
"nullable":1,
"physical_field":1,
......@@ -207,7 +207,7 @@
"fieldname":"CREATE_TIME" ,
"codename":"Create_time",
"field_logic_name":"创建时间",
"entity_name":"JobsInfo",
"entity_name":"JOBS_INFO",
"field_type":"DATETIME",
"nullable":0,
"physical_field":1,
......@@ -238,7 +238,7 @@
"fieldname":"ID" ,
"codename":"Id",
"field_logic_name":"主键ID",
"entity_name":"JobsLock",
"entity_name":"JOBS_LOCK",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -252,7 +252,7 @@
"fieldname":"NAME" ,
"codename":"Name",
"field_logic_name":"名称",
"entity_name":"JobsLock",
"entity_name":"JOBS_LOCK",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -266,7 +266,7 @@
"fieldname":"OWNER" ,
"codename":"Owner",
"field_logic_name":"持有者",
"entity_name":"JobsLock",
"entity_name":"JOBS_LOCK",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -280,7 +280,7 @@
"fieldname":"CREATE_TIME" ,
"codename":"Create_time",
"field_logic_name":"创建时间",
"entity_name":"JobsLock",
"entity_name":"JOBS_LOCK",
"field_type":"DATETIME",
"nullable":0,
"physical_field":1,
......@@ -310,7 +310,7 @@
"fieldname":"ID" ,
"codename":"Id",
"field_logic_name":"主键ID",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -324,7 +324,7 @@
"fieldname":"JOB_ID" ,
"codename":"Job_id",
"field_logic_name":"任务ID",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -338,7 +338,7 @@
"fieldname":"ADDRESS" ,
"codename":"Address",
"field_logic_name":"执行地址",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -352,7 +352,7 @@
"fieldname":"HANDLER" ,
"codename":"Handler",
"field_logic_name":"执行器任务HANDLER",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -366,7 +366,7 @@
"fieldname":"PARAM" ,
"codename":"Param",
"field_logic_name":"执行器任务参数",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -380,7 +380,7 @@
"fieldname":"FAIL_RETRY_COUNT" ,
"codename":"Fail_retry_count",
"field_logic_name":"失败重试次数",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"INT",
"nullable":0,
"physical_field":1,
......@@ -393,7 +393,7 @@
"fieldname":"TRIGGER_CODE" ,
"codename":"Trigger_code",
"field_logic_name":"触发器调度返回码",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"INT",
"nullable":0,
"physical_field":1,
......@@ -406,7 +406,7 @@
"fieldname":"TRIGGER_TYPE" ,
"codename":"Trigger_type",
"field_logic_name":"触发器调度类型",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -420,7 +420,7 @@
"fieldname":"TRIGGER_MSG" ,
"codename":"Trigger_msg",
"field_logic_name":"触发器调度信息",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"LONGTEXT",
"nullable":1,
"physical_field":1,
......@@ -434,7 +434,7 @@
"fieldname":"CREATE_TIME" ,
"codename":"Create_time",
"field_logic_name":"创建时间",
"entity_name":"JobsLog",
"entity_name":"JOBS_LOG",
"field_type":"DATETIME",
"nullable":0,
"physical_field":1,
......@@ -464,7 +464,7 @@
"fieldname":"ID" ,
"codename":"Id",
"field_logic_name":"主键ID",
"entity_name":"JobsRegistry",
"entity_name":"JOBS_REGISTRY",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -478,7 +478,7 @@
"fieldname":"APP" ,
"codename":"App",
"field_logic_name":"服务名",
"entity_name":"JobsRegistry",
"entity_name":"JOBS_REGISTRY",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -492,7 +492,7 @@
"fieldname":"ADDRESS" ,
"codename":"Address",
"field_logic_name":"执行地址",
"entity_name":"JobsRegistry",
"entity_name":"JOBS_REGISTRY",
"field_type":"TEXT",
"nullable":0,
"physical_field":1,
......@@ -506,7 +506,7 @@
"fieldname":"STATUS" ,
"codename":"Status",
"field_logic_name":"状态",
"entity_name":"JobsRegistry",
"entity_name":"JOBS_REGISTRY",
"field_type":"NSCODELIST",
"dict":"CodeListJobStatus",
"nullable":0,
......@@ -520,7 +520,7 @@
"fieldname":"UPDATE_TIME" ,
"codename":"Update_time",
"field_logic_name":"更新时间",
"entity_name":"JobsRegistry",
"entity_name":"JOBS_REGISTRY",
"field_type":"DATETIME",
"nullable":0,
"physical_field":1,
......
......@@ -85,7 +85,6 @@
<oracle.version>19.8.0.0</oracle.version>
<postgresql.version>42.2.6</postgresql.version>
</properties>
<dependencyManagement>
......
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ibztask-provider-api
labels:
app: ibztask-provider-api
spec:
replicas: 1
selector:
matchLabels:
app: ibztask-provider-api
template:
metadata:
labels:
app: ibztask-provider-api
spec:
imagePullSecrets:
- name: aly-shanghai
containers:
- name: ibztask-provider-api
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibztask-provider-api:latest
imagePullPolicy: Always
ports:
- containerPort: 8081
volumeMounts:
- name: data
mountPath: /app/file
volumes:
- name: data
persistentVolumeClaim:
claimName: demo-date-pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
name: ibztask-provider-api
labels:
app: ibztask-provider-api
spec:
type: NodePort
ports:
- name: http
port: 8081
targetPort: 8081
nodePort: 8081
protocol: TCP
selector:
app: ibztask-provider-api
......@@ -110,8 +110,9 @@ public class JobsInfoResource {
@ApiOperation(value = "获取任务信息草稿", tags = {"任务信息" }, notes = "获取任务信息草稿")
@RequestMapping(method = RequestMethod.GET, value = "/jobsinfos/getdraft")
public ResponseEntity<JobsInfoDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(jobsinfoMapping.toDto(jobsinfoService.getDraft(new JobsInfo())));
public ResponseEntity<JobsInfoDTO> getDraft(JobsInfoDTO dto) {
JobsInfo domain = jobsinfoMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(jobsinfoMapping.toDto(jobsinfoService.getDraft(domain)));
}
@ApiOperation(value = "检查任务信息", tags = {"任务信息" }, notes = "检查任务信息")
......@@ -132,19 +133,19 @@ public class JobsInfoResource {
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibztask-JobsInfo-Execute-all')")
@ApiOperation(value = "批量处理[执行]", tags = {"任务信息" }, notes = "批量处理[执行]")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/{jobsinfo_id}/executebatch")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/executebatch")
public ResponseEntity<Boolean> executeBatch(@RequestBody List<JobsInfoDTO> jobsinfodtos) {
return ResponseEntity.status(HttpStatus.OK).body(jobsinfoService.executeBatch(jobsinfoMapping.toDomain(jobsinfodtos)));
List<JobsInfo> domains = jobsinfoMapping.toDomain(jobsinfodtos);
boolean result = jobsinfoService.executeBatch(domains);
return ResponseEntity.status(HttpStatus.OK).body(result);
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibztask-JobsInfo-Save-all')")
@ApiOperation(value = "保存任务信息", tags = {"任务信息" }, notes = "保存任务信息")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/save")
public ResponseEntity<Boolean> save(@RequestBody JobsInfoDTO jobsinfodto) {
return ResponseEntity.status(HttpStatus.OK).body(jobsinfoService.save(jobsinfoMapping.toDomain(jobsinfodto)));
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibztask-JobsInfo-Save-all')")
@ApiOperation(value = "批量保存任务信息", tags = {"任务信息" }, notes = "批量保存任务信息")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/savebatch")
public ResponseEntity<Boolean> saveBatch(@RequestBody List<JobsInfoDTO> jobsinfodtos) {
......@@ -152,7 +153,6 @@ public class JobsInfoResource {
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibztask-JobsInfo-Start-all')")
@ApiOperation(value = "开始", tags = {"任务信息" }, notes = "开始")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/{jobsinfo_id}/start")
public ResponseEntity<JobsInfoDTO> start(@PathVariable("jobsinfo_id") String jobsinfo_id, @RequestBody JobsInfoDTO jobsinfodto) {
......@@ -163,7 +163,6 @@ public class JobsInfoResource {
return ResponseEntity.status(HttpStatus.OK).body(jobsinfodto);
}
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibztask-JobsInfo-Stop-all')")
@ApiOperation(value = "停止", tags = {"任务信息" }, notes = "停止")
@RequestMapping(method = RequestMethod.POST, value = "/jobsinfos/{jobsinfo_id}/stop")
public ResponseEntity<JobsInfoDTO> stop(@PathVariable("jobsinfo_id") String jobsinfo_id, @RequestBody JobsInfoDTO jobsinfodto) {
......@@ -197,5 +196,6 @@ public class JobsInfoResource {
}
}
......@@ -110,8 +110,9 @@ public class JobsLockResource {
@ApiOperation(value = "获取任务锁草稿", tags = {"任务锁" }, notes = "获取任务锁草稿")
@RequestMapping(method = RequestMethod.GET, value = "/jobslocks/getdraft")
public ResponseEntity<JobsLockDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(jobslockMapping.toDto(jobslockService.getDraft(new JobsLock())));
public ResponseEntity<JobsLockDTO> getDraft(JobsLockDTO dto) {
JobsLock domain = jobslockMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(jobslockMapping.toDto(jobslockService.getDraft(domain)));
}
@ApiOperation(value = "检查任务锁", tags = {"任务锁" }, notes = "检查任务锁")
......@@ -158,5 +159,6 @@ public class JobsLockResource {
}
}
......@@ -110,8 +110,9 @@ public class JobsLogResource {
@ApiOperation(value = "获取任务调度日志草稿", tags = {"任务调度日志" }, notes = "获取任务调度日志草稿")
@RequestMapping(method = RequestMethod.GET, value = "/jobslogs/getdraft")
public ResponseEntity<JobsLogDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(jobslogMapping.toDto(jobslogService.getDraft(new JobsLog())));
public ResponseEntity<JobsLogDTO> getDraft(JobsLogDTO dto) {
JobsLog domain = jobslogMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(jobslogMapping.toDto(jobslogService.getDraft(domain)));
}
@ApiOperation(value = "检查任务调度日志", tags = {"任务调度日志" }, notes = "检查任务调度日志")
......@@ -158,5 +159,6 @@ public class JobsLogResource {
}
}
......@@ -110,8 +110,9 @@ public class JobsRegistryResource {
@ApiOperation(value = "获取任务注册信息草稿", tags = {"任务注册信息" }, notes = "获取任务注册信息草稿")
@RequestMapping(method = RequestMethod.GET, value = "/jobsregistries/getdraft")
public ResponseEntity<JobsRegistryDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(jobsregistryMapping.toDto(jobsregistryService.getDraft(new JobsRegistry())));
public ResponseEntity<JobsRegistryDTO> getDraft(JobsRegistryDTO dto) {
JobsRegistry domain = jobsregistryMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(jobsregistryMapping.toDto(jobsregistryService.getDraft(domain)));
}
@ApiOperation(value = "检查任务注册信息", tags = {"任务注册信息" }, notes = "检查任务注册信息")
......@@ -158,5 +159,6 @@ public class JobsRegistryResource {
}
}
......@@ -124,6 +124,7 @@ public class RedisCacheConfig {
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_DELETE_TOPIC.getChannelTopic());
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_CLEAR_TOPIC.getChannelTopic());
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_DYNAMICMODEL_TOPIC.getChannelTopic());
return container;
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import java.util.Map;
import cn.ibizlab.util.cache.cache.LayeringCache;
import cn.ibizlab.util.enums.RedisChannelTopic;
......@@ -34,20 +35,25 @@ public class RedisMessageListener extends MessageListenerAdapter {
if(result instanceof Map){
map= (Map<String, Object>) result;
}
if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))|| (!map.containsKey("key"))){
if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))){
log.debug("解析缓存数据失败,无法获取指定值!");
return ;
}
log.debug("redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}", channelTopic.getChannelTopicStr(), result.toString());
String cacheName = (String) map.get("cacheName");
Object key = map.get("key");
Cache cache = cacheManager.getCache(cacheName);// 根据缓存名称获取多级缓存
if (cache != null && cache instanceof LayeringCache) { // 判断缓存是否是多级缓存
switch (channelTopic) {
case REDIS_CACHE_DELETE_TOPIC: // 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().evict(key);
((LayeringCache) cache).getSecondCache().evict(key);
log.debug("同步删除缓存{}数据,key:{},", cacheName, key.toString());
Object cacheKey = map.get("key");
if(!ObjectUtils.isEmpty(cacheKey)){
((LayeringCache) cache).getFirstCache().evict(cacheKey);
((LayeringCache) cache).getSecondCache().evict(cacheKey);
log.debug("同步删除缓存{}数据,key:{},", cacheName, cacheKey.toString());
}
else{
log.debug("同步删除缓存失败,{}缓存键值为空!",cacheName);
}
break;
case REDIS_CACHE_CLEAR_TOPIC:// 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().clear();
......
......@@ -2,6 +2,8 @@ package cn.ibizlab.util.client;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
public class IBZLiteFallback implements IBZLiteFeignClient {
......@@ -10,4 +12,5 @@ public class IBZLiteFallback implements IBZLiteFeignClient {
public Boolean syncSysModel(JSONObject system) {
return null;
}
}
......@@ -3,6 +3,8 @@ package cn.ibizlab.util.client;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@FeignClient(value = "${ibiz.ref.service.lite:ibzlite-api}",contextId = "lite",fallback = IBZLiteFallback.class)
public interface IBZLiteFeignClient
......@@ -14,4 +16,5 @@ public interface IBZLiteFeignClient
*/
@PostMapping("/lite/syncsysmodel")
Boolean syncSysModel(@RequestBody JSONObject system);
}
......@@ -6,7 +6,8 @@ import org.springframework.data.redis.listener.ChannelTopic;
*/
public enum RedisChannelTopic {
REDIS_CACHE_DELETE_TOPIC("redis:cache:delete:topic1", "删除redis缓存消息频道"),
REDIS_CACHE_CLEAR_TOPIC("redis:cache:clear:topic2", "清空redis缓存消息频道");
REDIS_CACHE_CLEAR_TOPIC("redis:cache:clear:topic2", "清空redis缓存消息频道"),
REDIS_CACHE_DYNAMICMODEL_TOPIC("redis:cache:dynamicmodel:topic3", "动态模型频道");
String channelTopic;
String label;
......
......@@ -293,7 +293,7 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
Map<String,String> permissionFiled=new HashMap<>();
String orgField="orgid"; //组织属性
String orgDeptField="orgsecid"; //部门属性
String orgDeptField="orgsectorid"; //部门属性
String createManField="createman"; //创建人属性
DEFieldCacheMap.getFieldMap(entityBase.getClass().getName());
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册