提交 9085f3a4 编写于 作者: ibizdev's avatar ibizdev

ibiz4j 部署微服务应用

上级 2459f6d5
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
"@vue/cli-service": "^4.1.0", "@vue/cli-service": "^4.1.0",
"@vue/test-utils": "1.0.0-beta.29", "@vue/test-utils": "1.0.0-beta.29",
"axios-mock-adapter": "^1.17.0", "axios-mock-adapter": "^1.17.0",
"compression-webpack-plugin": "^4.0.0",
"less": "^3.0.4", "less": "^3.0.4",
"less-loader": "^5.0.0", "less-loader": "^5.0.0",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
......
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
"viewtag": "8ad70084b5f98a26370b74da612d3f49" "viewtag": "8ad70084b5f98a26370b74da612d3f49"
}, },
"appindexview": { "appindexview": {
"title": "ibizlab-dict", "title": "dictionary",
"caption": "ibizlab-dict", "caption": "ibizlab",
"viewtype": "APPINDEXVIEW", "viewtype": "APPINDEXVIEW",
"viewmodule": "dict", "viewmodule": "dict",
"viewname": "AppIndexView", "viewname": "AppIndexView",
......
...@@ -68,10 +68,7 @@ import AppUploadFileInfo from './components/app-upload-file-info/app-upload-file ...@@ -68,10 +68,7 @@ import AppUploadFileInfo from './components/app-upload-file-info/app-upload-file
import ContextMenu from './components/context-menu/context-menu' import ContextMenu from './components/context-menu/context-menu'
import AppColumnFormat from './components/app-column-format/app-column-format.vue' import AppColumnFormat from './components/app-column-format/app-column-format.vue'
import AppQuickGroup from './components/app-quick-group/app-quick-group.vue' import AppQuickGroup from './components/app-quick-group/app-quick-group.vue'
import AppOrgSelect from './components/app-org-select/app-org-select.vue' import AppGroupPicker from './components/app-group-picker/app-group-picker.vue'
import AppDepartmentSelect from './components/app-department-select/app-department-select.vue'
import IBizGroupSelect from './components/ibiz-group-select/ibiz-group-select.vue'
import IBizGroupPicker from './components/ibiz-group-picker/ibiz-group-picker.vue'
import AppWFApproval from './components/app-wf-approval/app-wf-approval.vue' import AppWFApproval from './components/app-wf-approval/app-wf-approval.vue'
import Breadcrumb from './components/app-breadcrumb/app-breadcrumb.vue' import Breadcrumb from './components/app-breadcrumb/app-breadcrumb.vue'
import AppTransfer from './components/app-transfer/app-transfer.vue' import AppTransfer from './components/app-transfer/app-transfer.vue'
...@@ -156,10 +153,10 @@ export const AppComponents = { ...@@ -156,10 +153,10 @@ export const AppComponents = {
v.component('context-menu',ContextMenu); v.component('context-menu',ContextMenu);
v.component('app-column-format',AppColumnFormat); v.component('app-column-format',AppColumnFormat);
v.component('app-quick-group',AppQuickGroup); v.component('app-quick-group',AppQuickGroup);
v.component('app-org-select',AppOrgSelect); v.component('app-org-select',() => import('./components/app-org-select/app-org-select.vue'));
v.component('app-department-select',AppDepartmentSelect); v.component('app-department-select',() => import('./components/app-department-select/app-department-select.vue'));
v.component('ibiz-group-select',IBizGroupSelect); v.component('app-group-select',() => import('./components/app-group-select/app-group-select.vue'));
v.component('ibiz-group-picker',IBizGroupPicker); v.component('app-group-picker',() => import('./components/app-group-picker/app-group-picker.vue'));
v.component('app-wf-approval',AppWFApproval); v.component('app-wf-approval',AppWFApproval);
v.component('app-breadcrumb',Breadcrumb); v.component('app-breadcrumb',Breadcrumb);
v.component('app-transfer',AppTransfer); v.component('app-transfer',AppTransfer);
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<template v-if="Object.is(this.navModel,'route')"> <template v-if="Object.is(this.navModel,'route')">
<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 v-if="index === breadcrumbs.length-1" class="no-redirect">{{ item.title }}
<span v-if="item.isselected === true"> <span v-if="isShowSelected(item)">
<dropdown trigger='click' @on-click="selectNavData($event,item)"> <dropdown trigger='click' @on-click="selectNavData($event,item)">
<span class="app-breadcrumb-selected"> <span class="app-breadcrumb-selected">
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
...@@ -195,6 +195,15 @@ export default class Breadcrumb extends Vue { ...@@ -195,6 +195,15 @@ export default class Breadcrumb extends Vue {
} }
} }
/**
* 是否显示下拉列表
*
* @memberof Breadcrumb
*/
public isShowSelected(item:any){
return item.isselected && !this.$util.isEmpty(item.srfkey);
}
} }
</script> </script>
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
<script lang="ts"> <script lang="ts">
import { Vue, Component, Watch, Prop, Model } from 'vue-property-decorator'; import { Vue, Component, Watch, Prop, Model } from 'vue-property-decorator';
import 'ibiz-vue-lib/lib/ibiz-vue-lib.css';
import {IBizSelectTree} from 'ibiz-vue-lib';
@Component({ @Component({
}) })
export default class AppDepartmentSelect extends Vue { export default class AppDepartmentSelect extends Vue {
......
<template>
<div class="ibiz-group-picker">
<div class="ibiz-group-container">
<div v-if="showTree" class="ibiz-group-tree">
<ibiz-select-tree :NodesData="treeItems" v-model="treeSelectVal" :treeOnly="true" :defaultChecked="true" @select="treeSelect"></ibiz-select-tree>
</div>
<div class="ibiz-group-content">
<ibiz-group-card :data="cardItems" text="label" value="id" groupName="group" :multiple="multiple" :defaultSelect="cardSelctVal" @select="groupSelect"></ibiz-group-card>
</div>
</div>
<div class="ibiz-group-footer">
<el-button size="small" type="primary" @click="onOK">确认</el-button>
<el-button size="small" @click="onCancel">取消</el-button>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch } from 'vue-property-decorator';
import { Subject } from 'rxjs';
import { Http } from '../../utils';
import 'ibiz-vue-lib/lib/ibiz-vue-lib.css';
import {IBizSelectTree} from 'ibiz-vue-lib';
import {IBizGroupCard} from 'ibiz-vue-lib';
@Component({})
export default class IBizGroupPicker extends Vue {
/**
* 视图上下文参数
*
* @type {*}
* @memberof IBizGroupPicker
*/
@Prop() viewdata: any;
/**
* 视图参数
*
* @type {*}
* @memberof IBizGroupPicker
*/
@Prop() viewparam: any;
/**
* 多选
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected multiple: boolean = false;
/**
* 加载树url
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected treeurl:any;
/**
* 加载人员url
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected url:any;
/**
* 树数据集
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected treeItems: any[] = [];
/**
* 分组表数据集
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected cardItems: any[] = [];
/**
* 视图上下文参数对象
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected viewData: any;
/**
* 视图参数对象
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected viewParam: any;
/**
* 树选中值
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected treeSelectVal: string = '';
/**
* 分组表选中集合
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected cardSelctVal: any = [];
/**
* 数据选中集合
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected selects: any[] = [];
/**
* 是否显示树
*
* @type {*}
* @memberof IBizGroupPicker
*/
get showTree() {
if(this.viewParam) {
return this.viewParam.showtree;
}
}
/**
* 生命周期
*
* @type {*}
* @memberof IBizGroupPicker
*/
public created() {
if(!this.viewdata || !this.viewparam) {
return;
}
this.viewData = JSON.parse(this.viewdata);
this.viewParam = JSON.parse(this.viewparam);
this.multiple = this.viewParam.multiple;
this.treeurl = this.viewParam.treeurl;
this.url = this.viewParam.url;
if (this.viewParam.selects) {
this.viewParam.selects.forEach((select: any) => {
this.selects.push(select);
this.cardSelctVal.push(select.id)
})
}
this.load();
}
/**
* 加载数据
*
* @type {*}
* @memberof IBizGroupPicker
*/
public load() {
if(this.showTree) {
this.loadTree();
} else {
this.loadGroupData(this.viewParam.filtervalue);
}
}
/**
* 加载树数据
*
* @type {*}
* @memberof IBizGroupPicker
*/
public loadTree() {
let orgid = this.viewParam.filtervalue;
let tempTreeUrl:string = this.treeurl.replace('${orgid}',orgid);
let get = Http.getInstance().get(tempTreeUrl, true);
get.then((response: any) => {
if(response.status === 200) {
this.treeItems = response.data;
}
}).catch((error: any) => {
console.log(error)
})
}
/**
* 加载分组表数据
*
* @type {*}
* @memberof IBizGroupPicker
*/
public loadGroupData(key: string) {
let tempUrl = this.url.replace('${selected-orgid}',key);
let get = Http.getInstance().get(tempUrl, true);
get.then((response: any) => {
if(response.status === 200) {
this.cardItems = response.data;
}
}).catch((error: any) => {
console.log(error)
})
}
/**
* 树选中
*
* @type {*}
* @memberof IBizGroupPicker
*/
public treeSelect(event: any) {
if(!event || JSON.parse(event).length == 0) {
return;
}
const items: any = JSON.parse(event);
this.loadGroupData(items[0].id);
}
/**
* 分组表选中
*
* @type {*}
* @memberof IBizGroupPicker
*/
public groupSelect(event: any) {
if (!event || !event.select) {
return;
}
if(!this.multiple) {
this.selects = [];
}
if(event.rselect) {
let index: number = this.selects.findIndex((item: any) => Object.is(event.rselect, item.id));
if(index >= 0) {
this.selects.splice(index, 1);
}
} else {
event.select.forEach((key: string) => {
let index: number = this.selects.findIndex((item: any) => Object.is(key, item.id));
if(index >= 0) {
return;
}
let item: any = this.cardItems.find((item: any) => Object.is(key, item.id));
if (item) {
this.selects.push(item);
}
});
}
}
/**
* 确认
*
* @type {*}
* @memberof IBizGroupPicker
*/
public onOK() {
this.$emit('close', this.selects);
}
/**
* 取消
*
* @type {*}
* @memberof IBizGroupPicker
*/
public onCancel() {
this.$emit('close');
}
}
</script>
<style lang="less">
.ibiz-group-picker{
width: 100%;
height: 100%;
.ibiz-group-container {
display: flex;
height: calc(100% - 65px);
.ibiz-group-tree {
min-width: 200px;
border-right: 1px solid #ddd;
padding: 0 34px 0 10px;
overflow: auto;
height: 100%;
}
.ibiz-group-content {
flex-grow: 1;
padding: 0 10px;
overflow: auto;
height: 100%;
}
}
.ibiz-group-footer {
padding: 16px;
text-align: right;
border-top: 1px solid #ddd;
}
}
</style>
\ No newline at end of file
<template>
<div class="ibiz-group-select">
<div class="ibiz-group-content">
<span v-if="!multiple">
{{ selectName }}
</span>
<template v-else v-for="(select, index) of selects">
<div :key="index" class="ibiz-group-item">
{{ select.label }}
<i v-if="!disabled" class="el-icon-close" @click="remove(select)"></i>
</div>
</template>
</div>
<div v-if="!disabled" class="ibiz-group-open">
<i v-if="!disabled && !multiple && selects.length > 0" class="el-icon-close" @click="remove(selects[0])"></i>
<i class="el-icon-search" @click="openView"></i>
</div>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Watch } from 'vue-property-decorator';
import { Subject } from 'rxjs';
@Component({})
export default class IBizGroupSelect extends Vue {
/**
* 名称标识
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() name!: string;
/**
* 树加载地址
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() treeurl?:boolean;
/**
* 数据接口地址
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() url!: string;
/**
* 多选
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop({default: false}) multiple?: boolean;
/**
* 数据对象
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() data: any;
/**
* 过滤属性标识
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() filter?: string;
/**
* 是否启用
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() disabled?: boolean;
/**
* 值
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() value: any;
/**
* 上下文参数
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() context: any;
/**
* 关联属性
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() valueitem: any;
/**
* 填充属性
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Prop() fillmap: any;
/**
* 选中项集合
*
* @type {*}
* @memberof IBizGroupSelect
*/
protected selects: any[] = [];
/**
* 值变化
*
* @type {*}
* @memberof IBizGroupSelect
*/
@Watch('value')
onValueChange(newVal: any) {
this.selects = [];
if (newVal) {
let item: any = {};
item.label = newVal.split(',');
if(this.valueitem) {
item.id = this.data[this.valueitem] ? this.data[this.valueitem].split(',') : [];
}
if(this.fillmap) {
for(let key in this.fillmap) {
item[this.fillmap[key]] = this.data[key] ? this.data[key].split(',') : [];
}
}
item.label.forEach((val: string, index: number) => {
let _item: any = {};
for(let key in item) {
_item[key] = item[key][index] ? item[key][index] : null;
}
this.selects.push(_item)
})
}
}
/**
* 单选时选中名称
*
* @type {*}
* @memberof IBizGroupSelect
*/
get selectName() {
if(this.selects.length > 0) {
return this.selects[0].label;
}
}
/**
* 打开选择视图
*
* @type {*}
* @memberof IBizGroupSelect
*/
public openView() {
const view: any = {
viewname: 'ibiz-group-picker',
title: '分组选择'
};
const context: any = JSON.parse(JSON.stringify(this.context));
let filtervalue:string = "";
if(this.filter){
if(this.data[this.filter]){
filtervalue = this.data[this.filter];
}else if(context[this.filter]){
filtervalue = context[this.filter];
}else{
filtervalue = context.srforgid;
}
}else{
filtervalue = context.srforgid;
}
const param: any = {};
Object.assign(param, {
showtree: this.treeurl?true:false,
url:this.url,
treeurl:this.treeurl,
filtervalue: filtervalue,
multiple: this.multiple,
selects: this.selects
});
let container: Subject<any> = this.$appmodal.openModal(view, context, param);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
}
this.openViewClose(result);
});
}
/**
* 选择视图关闭
*
* @type {*}
* @memberof IBizGroupSelect
*/
public openViewClose(result: any) {
this.selects = [];
if (result.datas && result.datas.length > 0) {
this.selects = result.datas
}
this.setValue()
}
/**
* 数据删除
*
* @type {*}
* @memberof IBizGroupSelect
*/
public remove(item: any) {
this.selects.splice(this.selects.indexOf(item), 1);
this.setValue()
}
/**
* 设置值
*
* @type {*}
* @memberof IBizGroupSelect
*/
public setValue() {
let item: any = {};
item[this.name] = null;
if(this.valueitem) {
item[this.valueitem] = null;
}
if(this.fillmap) {
for(let key in this.fillmap) {
item[key] = null;
}
}
if(this.multiple) {
this.selects.forEach((select: any) => {
item[this.name] = item[this.name] ? `${item[this.name]},${select.label}` : select.label;
if(this.valueitem) {
item[this.valueitem] = item[this.valueitem] ? `${item[this.valueitem]},${select.id}` : select.id;
}
if(this.fillmap) {
for(let key in this.fillmap) {
item[key] = item[key] ? `${item[key]},${select[this.fillmap[key]]}` : select[this.fillmap[key]];
}
}
});
} else {
item = this.selects.length > 0 ? this.selects[0] : {};
item[this.name] = this.selects.length > 0 ? this.selects[0].label : null;
if(this.valueitem) {
item[this.valueitem] = this.selects.length > 0 ? this.selects[0].id : null;
}
if(this.fillmap) {
for(let key in this.fillmap) {
item[key] = this.selects.length > 0 ? this.selects[0][this.fillmap[key]] : null;
}
}
}
for(let key in item) {
this.$emit('formitemvaluechange', { name: key, value: item[key] });
}
}
}
</script>
<style lang="less">
.ibiz-group-select {
width: 100%;
display: flex;
border: 1px solid #DCDFE6;
min-height: 32px;
border-radius: 4px;
.ibiz-group-content {
flex-grow: 1;
padding: 0 16px;
.ibiz-group-item {
display: inline-block;
border: 1px solid #bbb;
line-height: 24px;
border-radius: 5px;
margin-right: 5px;
padding: 0 5px;
}
}
.ibiz-group-open {
display: flex;
text-align: center;
align-items: center;
padding: 0 5px;
}
}
.ibiz-group-select:hover {
border-color: #108cee;
}
</style>
\ No newline at end of file
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<script lang = 'ts'> <script lang = 'ts'>
import { Vue, Component, Prop, Watch } from "vue-property-decorator"; import { Vue, Component, Prop, Watch } from "vue-property-decorator";
import { Http } from '@/utils'; import { Http } from '@/utils';
import 'ibiz-vue-lib/lib/ibiz-vue-lib.css';
import {IBizSelectTree} from 'ibiz-vue-lib';
@Component({}) @Component({})
export default class AppOrgSelect extends Vue { export default class AppOrgSelect extends Vue {
......
...@@ -6,3 +6,6 @@ ...@@ -6,3 +6,6 @@
padding: 0 5px; padding: 0 5px;
} }
} }
.user-dropdownMenu{
margin-top: 9px;
}
\ No newline at end of file
<template> <template>
<div class='app-header-user'> <div class='app-header-user'>
<dropdown @on-click="userSelect" :transfer="true"> <dropdown transfer-class-name="user-dropdownMenu" @on-click="userSelect" :transfer="true">
<div class='user'> <div class='user'>
<span>{{user.name ? user.name : $t('components.appUser.name')}}</span> <span>{{user.name ? user.name : $t('components.appUser.name')}}</span>
&nbsp;&nbsp;<avatar :src="user.avatar" /> &nbsp;&nbsp;<avatar :src="user.avatar" />
</div> </div>
<dropdown-menu class='menu' slot='list' style='font-size: 15px !important;'> <dropdown-menu class='menu' slot='list' style='font-size: 15px !important;'>
<dropdown-item name='logout' style='font-size: 15px !important;'> <dropdown-item name='logout' style='font-size: 15px !important;'>
<span><i aria-hidden='true' class='fa fa-cogs' style='margin-right: 8px;'></i></span> <span><i aria-hidden='true' class='ivu-icon ivu-icon-md-power' style='margin-right: 8px;'></i></span>
<span>{{$t('components.appUser.logout')}}</span> <span>{{$t('components.appUser.logout')}}</span>
</dropdown-item> </dropdown-item>
</dropdown-menu> </dropdown-menu>
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<Drawer class-name="sider-drawer" placement="left" :closable="false" :mask="false" width="200" v-model="leftDrawerVisiable"> <Drawer class-name="sider-drawer" placement="left" :closable="false" :mask="false" width="200" v-model="leftDrawerVisiable">
<div class="context-menu-drag"> <div class="context-menu-drag">
<div class="menu-list"> <div class="menu-list">
<div class="menu-header" @mouseover="showMenuDrawer" @click="rightDrawerVisiable=!rightDrawerVisiable"> <div class="menu-header" @click="rightDrawerVisiable=!rightDrawerVisiable">
<div class="menuicon"> <div class="menuicon">
<Icon type="md-apps" /> <Icon type="md-apps" />
</div> </div>
<div class="content"> <div class="content">
<span>服务</span> <span>全部应用</span>
</div> </div>
<div class="forward"> <div class="forward">
<Icon type="ios-arrow-forward" /> <Icon type="ios-arrow-forward" />
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<div style="padding:8px 0px;" class="col-6"> <div style="padding:8px 0px;" class="col-6">
<draggable class="list-group" tag="ul" v-model="selectlist" v-bind="dragOptionsVal" @start="drag=true" @end="drag=false" :animation="250" handle=".handle" ghost-class="ghost"> <draggable class="list-group" tag="ul" v-model="selectlist" v-bind="dragOptionsVal" @start="drag=true" @end="drag=false" :animation="250" handle=".handle" ghost-class="ghost">
<transition-group type="transition" :name="!drag ? 'flip-list' : null"> <transition-group type="transition" :name="!drag ? 'flip-list' : null">
<li class="list-group-item" v-for="(item,index) in selectlist" :key="item.id"> <li @click="skipTo(item)" class="list-group-item" v-for="(item,index) in selectlist" :key="item.id">
<el-row> <el-row>
<el-col class="menuicon" :span="4"> <el-col class="menuicon" :span="4">
<span> <span>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<el-col :span="6"> <el-col :span="6">
<div class="bar"> <div class="bar">
<div> <div>
<Icon type="ios-close" @click="removeAt(index)" /> <Icon type="ios-close" @click.stop="removeAt(index)" />
</div> </div>
<div> <div>
<Icon type="ios-move handle" /> <Icon type="ios-move handle" />
...@@ -45,12 +45,12 @@ ...@@ -45,12 +45,12 @@
</div> </div>
<Drawer class-name="menu-drawer" width="60" :closable="true" :mask="false" placement="left" v-model="rightDrawerVisiable"> <Drawer class-name="menu-drawer" width="60" :closable="true" :mask="false" placement="left" v-model="rightDrawerVisiable">
<div class="menuItems"> <div class="menuItems">
<div class="item" v-for="(item) in list" :key="item.id"> <div @click="skipTo(item)" class="item" v-for="(item) in list" :key="item.id">
<span class="title">{{item.label}}</span> <span class="title">{{item.label}}</span>
<span v-if="isStar(item.id)" class="star" @click="outStar(item)"> <span v-if="isStar(item.id)" class="star" @click.stop="outStar(item)">
<Icon type="ios-star" /> <Icon type="ios-star" />
</span> </span>
<span v-else class="star" @click="onStar(item)"> <span v-else class="star" @click.stop="onStar(item)">
<Icon type="ios-star-outline" /> <Icon type="ios-star-outline" />
</span> </span>
</div> </div>
...@@ -73,6 +73,8 @@ import { Vue,Component,Provide,Watch,Prop,Model } from "vue-property-decorator"; ...@@ -73,6 +73,8 @@ import { Vue,Component,Provide,Watch,Prop,Model } from "vue-property-decorator";
}) })
export default class ContextMenuDrag extends Vue { export default class ContextMenuDrag extends Vue {
public panelShow: boolean = true;
/** /**
* 抽屉菜单状态 * 抽屉菜单状态
* *
...@@ -206,6 +208,23 @@ export default class ContextMenuDrag extends Vue { ...@@ -206,6 +208,23 @@ export default class ContextMenuDrag extends Vue {
return istar; return istar;
} }
/**
* 跳转到应用
*
* @returns
* @memberof ContextMenuDrag
*/
public skipTo(item: any){
if(item.addr){
let params: any = {};
params.model = this.selectlist;
const put: Promise<any> = this.entityService.updateChooseApp(null,params);
window.location.href = item.addr;
}else{
this.$message.info("未找到该应用");
}
}
/** /**
* 加入列表 * 加入列表
* *
......
...@@ -103,7 +103,7 @@ export default class EditViewEngine extends ViewEngine { ...@@ -103,7 +103,7 @@ export default class EditViewEngine extends ViewEngine {
public onFormLoad(arg: any): void { 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) : this.view.$t('app.local.new');
this.setTabCaption(this.view.model.dataInfo); this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1'); const newdata: boolean = !Object.is(arg.srfuf, '1');
this.calcToolbarItemState(newdata); this.calcToolbarItemState(newdata);
} }
...@@ -117,7 +117,7 @@ export default class EditViewEngine extends ViewEngine { ...@@ -117,7 +117,7 @@ export default class EditViewEngine extends ViewEngine {
public onFormSave(arg: any): void { 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) : this.view.$t('app.local.new');
this.setTabCaption(this.view.model.dataInfo); this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1'); const newdata: boolean = !Object.is(arg.srfuf, '1');
this.calcToolbarItemState(newdata); this.calcToolbarItemState(newdata);
this.view.$emit('save',arg); this.view.$emit('save',arg);
...@@ -245,7 +245,7 @@ export default class EditViewEngine extends ViewEngine { ...@@ -245,7 +245,7 @@ export default class EditViewEngine extends ViewEngine {
* *
* @memberof EditViewEngine * @memberof EditViewEngine
*/ */
public setTabCaption(info: string): void { public setTabCaption(info: string,isNew:boolean): void {
let viewdata: any = this.view.model; let viewdata: any = this.view.model;
let index:number = viewdata.srfTitle.indexOf("-"); let index:number = viewdata.srfTitle.indexOf("-");
if (viewdata && info && !Object.is(info, '')) { if (viewdata && info && !Object.is(info, '')) {
...@@ -259,7 +259,7 @@ export default class EditViewEngine extends ViewEngine { ...@@ -259,7 +259,7 @@ export default class EditViewEngine extends ViewEngine {
this.view.$route.meta.info = info; this.view.$route.meta.info = info;
} }
this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)}-${viewdata.dataInfo}`; this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)}-${viewdata.dataInfo}`;
this.view.initNavDataWithRoute(); this.view.initNavDataWithRoute(null,isNew);
} }
} }
......
...@@ -49,8 +49,8 @@ export default { ...@@ -49,8 +49,8 @@ export default {
// 非实体视图 // 非实体视图
views: { views: {
appindexview: { appindexview: {
caption: "ibizlab-dict", caption: "ibizlab",
title: "ibizlab-dict", title: "dictionary",
}, },
}, },
utilview:{ utilview:{
......
...@@ -49,8 +49,8 @@ export default { ...@@ -49,8 +49,8 @@ export default {
// 非实体视图 // 非实体视图
views: { views: {
appindexview: { appindexview: {
caption: "ibizlab-dict", caption: "ibizlab",
title: "ibizlab-dict", title: "dictionary",
}, },
}, },
utilview:{ utilview:{
......
...@@ -25,7 +25,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => { ...@@ -25,7 +25,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => {
iconcls: 'fa fa-folder-open-o', iconcls: 'fa fa-folder-open-o',
icon: '', icon: '',
textcls: '', textcls: '',
appfunctag: '_2', appfunctag: 'Auto1',
resourcetag: '', resourcetag: '',
}, },
{ {
...@@ -43,7 +43,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => { ...@@ -43,7 +43,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => {
iconcls: 'fa fa-stack-exchange', iconcls: 'fa fa-stack-exchange',
icon: '', icon: '',
textcls: '', textcls: '',
appfunctag: '_3', appfunctag: 'Auto2',
resourcetag: '', resourcetag: '',
}, },
], ],
......
...@@ -48,8 +48,8 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => { ...@@ -48,8 +48,8 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewtag": "8ad70084b5f98a26370b74da612d3f49" "viewtag": "8ad70084b5f98a26370b74da612d3f49"
}, },
"appindexview": { "appindexview": {
"title": "ibizlab-dict", "title": "dictionary",
"caption": "ibizlab-dict", "caption": "ibizlab",
"viewtype": "APPINDEXVIEW", "viewtype": "APPINDEXVIEW",
"viewmodule": "dict", "viewmodule": "dict",
"viewname": "AppIndexView", "viewname": "AppIndexView",
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme> <app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div> </div>
</header> </header>
<content :class="{'index_content':true,'index_tab_content':Object.is(navModel,'tab')?true:false,'index_route_content':Object.is(navModel,'route')?true:false}" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }"> <content :class="{'index_content':true,'index_tab_content':Object.is(navModel,'tab')?true:false,'index_route_content':Object.is(navModel,'route')?true:false}" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }" @click="contextMenuDragVisiable=false">
<tab-page-exp v-if="Object.is(navModel,'tab')"></tab-page-exp> <tab-page-exp v-if="Object.is(navModel,'tab')"></tab-page-exp>
<app-keep-alive :routerList="getRouterList"> <app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view> <router-view :key="getRouterViewKey"></router-view>
...@@ -408,9 +408,9 @@ export default class AppIndexViewBase extends Vue { ...@@ -408,9 +408,9 @@ export default class AppIndexViewBase extends Vue {
* *
* @memberof AppIndexViewBase * @memberof AppIndexViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'app-index-view',tag:this.viewtag,srfkey:null,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'app-index-view',tag:this.viewtag,srfkey:isNew ? null : null,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -4,14 +4,12 @@ import VueRouter from 'vue-router'; ...@@ -4,14 +4,12 @@ import VueRouter from 'vue-router';
import App from '@/App.vue'; import App from '@/App.vue';
import ElementUi from 'element-ui'; import ElementUi from 'element-ui';
import ViewUI from 'view-design'; import ViewUI from 'view-design';
import ibizLab from 'ibiz-vue-lib';
import { Interceptors } from '@/utils'; import { Interceptors } from '@/utils';
import {Print} from '@/utils/print'; import {Print} from '@/utils/print';
import i18n from '@/locale' import i18n from '@/locale'
import 'element-ui/lib/theme-chalk/index.css'; import 'element-ui/lib/theme-chalk/index.css';
import 'view-design/dist/styles/iview.css'; import 'view-design/dist/styles/iview.css';
import 'ibiz-vue-lib/lib/ibiz-vue-lib.css';
import '@/styles/default.less'; import '@/styles/default.less';
...@@ -33,7 +31,6 @@ Vue.config.errorHandler = function (err: any, vm: any, info: any) { ...@@ -33,7 +31,6 @@ Vue.config.errorHandler = function (err: any, vm: any, info: any) {
} }
Vue.config.productionTip = false; Vue.config.productionTip = false;
Vue.use(Print); Vue.use(Print);
Vue.use(ibizLab);
Vue.use(Vuex); Vue.use(Vuex);
Vue.use(VueRouter);; Vue.use(VueRouter);;
Vue.use(ElementUi, { Vue.use(ElementUi, {
......
...@@ -544,9 +544,9 @@ export default class DictCatalogEditViewBase extends Vue { ...@@ -544,9 +544,9 @@ export default class DictCatalogEditViewBase extends Vue {
* *
* @memberof DictCatalogEditViewBase * @memberof DictCatalogEditViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-catalog-edit-view',tag:this.viewtag,srfkey:this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-catalog-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -569,9 +569,9 @@ export default class DictCatalogGridViewBase extends Vue { ...@@ -569,9 +569,9 @@ export default class DictCatalogGridViewBase extends Vue {
* *
* @memberof DictCatalogGridViewBase * @memberof DictCatalogGridViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-catalog-grid-view',tag:this.viewtag,srfkey:this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-catalog-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -434,9 +434,9 @@ export default class DictCatalogPickupGridViewBase extends Vue { ...@@ -434,9 +434,9 @@ export default class DictCatalogPickupGridViewBase extends Vue {
* *
* @memberof DictCatalogPickupGridViewBase * @memberof DictCatalogPickupGridViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-catalog-pickup-grid-view',tag:this.viewtag,srfkey:this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-catalog-pickup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -427,9 +427,9 @@ export default class DictCatalogPickupViewBase extends Vue { ...@@ -427,9 +427,9 @@ export default class DictCatalogPickupViewBase extends Vue {
* *
* @memberof DictCatalogPickupViewBase * @memberof DictCatalogPickupViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-catalog-pickup-view',tag:this.viewtag,srfkey:this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-catalog-pickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictcatalog,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -458,9 +458,9 @@ export default class DictOptionEditViewBase extends Vue { ...@@ -458,9 +458,9 @@ export default class DictOptionEditViewBase extends Vue {
* *
* @memberof DictOptionEditViewBase * @memberof DictOptionEditViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-option-edit-view',tag:this.viewtag,srfkey:this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-option-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -556,9 +556,9 @@ export default class DictOptionGridEditViewBase extends Vue { ...@@ -556,9 +556,9 @@ export default class DictOptionGridEditViewBase extends Vue {
* *
* @memberof DictOptionGridEditViewBase * @memberof DictOptionGridEditViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-option-grid-edit-view',tag:this.viewtag,srfkey:this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-option-grid-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -556,9 +556,9 @@ export default class DictOptionGridViewBase extends Vue { ...@@ -556,9 +556,9 @@ export default class DictOptionGridViewBase extends Vue {
* *
* @memberof DictOptionGridViewBase * @memberof DictOptionGridViewBase
*/ */
public initNavDataWithRoute(data:any = null){ public initNavDataWithRoute(data:any = null, isNew:boolean = false){
if(this.viewDefaultUsage && Object.is(this.navModel,"route")){ if(this.viewDefaultUsage && Object.is(this.navModel,"route")){
this.navDataService.addNavData({id:'dict-option-grid-view',tag:this.viewtag,srfkey:this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath}); this.navDataService.addNavData({id:'dict-option-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.dictoption,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
} }
} }
......
...@@ -167,7 +167,6 @@ export default class DictCatalogServiceBase extends EntityService { ...@@ -167,7 +167,6 @@ export default class DictCatalogServiceBase extends EntityService {
let res:any = await Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}`,isloading); let res:any = await Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}`,isloading);
this.tempStorage.setItem(context.srfsessionkey+'_dictoptions',JSON.stringify(res.data.dictoptions)); this.tempStorage.setItem(context.srfsessionkey+'_dictoptions',JSON.stringify(res.data.dictoptions));
return res; return res;
} }
/** /**
...@@ -197,7 +196,6 @@ export default class DictCatalogServiceBase extends EntityService { ...@@ -197,7 +196,6 @@ export default class DictCatalogServiceBase extends EntityService {
*/ */
public async Remove(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async Remove(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().delete(`/dictcatalogs/${context.dictcatalog}`,isloading); return Http.getInstance().delete(`/dictcatalogs/${context.dictcatalog}`,isloading);
} }
/** /**
......
...@@ -65,7 +65,10 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -65,7 +65,10 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async Update(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async Update(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && context.dictoption){ if(context.dictcatalog && context.dictoption){
return Http.getInstance().put(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,data,isloading); let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().put(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,data,isloading);
return res;
} }
let masterData:any = {}; let masterData:any = {};
Object.assign(data,masterData); Object.assign(data,masterData);
...@@ -87,7 +90,6 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -87,7 +90,6 @@ export default class DictOptionServiceBase extends EntityService {
return Http.getInstance().delete(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,isloading); return Http.getInstance().delete(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,isloading);
} }
return Http.getInstance().delete(`/dictoptions/${context.dictoption}`,isloading); return Http.getInstance().delete(`/dictoptions/${context.dictoption}`,isloading);
} }
/** /**
...@@ -101,7 +103,10 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -101,7 +103,10 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async CheckKey(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async CheckKey(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && context.dictoption){ if(context.dictcatalog && context.dictoption){
return Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}/checkkey`,data,isloading); let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}/checkkey`,data,isloading);
return res;
} }
return Http.getInstance().post(`/dictoptions/${context.dictoption}/checkkey`,data,isloading); return Http.getInstance().post(`/dictoptions/${context.dictoption}/checkkey`,data,isloading);
} }
...@@ -117,7 +122,9 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -117,7 +122,9 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async GetDraft(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async GetDraft(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && true){ if(context.dictcatalog && true){
return Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}/dictoptions/getdraft`,isloading); let res:any = await Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}/dictoptions/getdraft`,isloading);
res.data.dictoption = data.dictoption;
return res;
} }
let res:any = await Http.getInstance().get(`/dictoptions/getdraft`,isloading); let res:any = await Http.getInstance().get(`/dictoptions/getdraft`,isloading);
res.data.dictoption = data.dictoption; res.data.dictoption = data.dictoption;
...@@ -135,11 +142,11 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -135,11 +142,11 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async Get(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async Get(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && context.dictoption){ if(context.dictcatalog && context.dictoption){
return Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,isloading); let res:any = await Http.getInstance().get(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}`,isloading);
return res;
} }
let res:any = await Http.getInstance().get(`/dictoptions/${context.dictoption}`,isloading); let res:any = await Http.getInstance().get(`/dictoptions/${context.dictoption}`,isloading);
return res; return res;
} }
/** /**
...@@ -153,13 +160,17 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -153,13 +160,17 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async Create(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async Create(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && true){ if(context.dictcatalog && true){
let masterData:any = {};
Object.assign(data,masterData);
if(!data.srffrontuf || data.srffrontuf !== "1"){ if(!data.srffrontuf || data.srffrontuf !== "1"){
data[this.APPDEKEY] = null; data[this.APPDEKEY] = null;
} }
if(data.srffrontuf){ if(data.srffrontuf){
delete data.srffrontuf; delete data.srffrontuf;
} }
return Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions`,data,isloading); let tempContext:any = JSON.parse(JSON.stringify(context));
let res:any = await Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions`,data,isloading);
return res;
} }
let masterData:any = {}; let masterData:any = {};
Object.assign(data,masterData); Object.assign(data,masterData);
...@@ -185,7 +196,10 @@ export default class DictOptionServiceBase extends EntityService { ...@@ -185,7 +196,10 @@ export default class DictOptionServiceBase extends EntityService {
*/ */
public async Save(context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public async Save(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dictcatalog && context.dictoption){ if(context.dictcatalog && context.dictoption){
return Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}/save`,data,isloading); let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().post(`/dictcatalogs/${context.dictcatalog}/dictoptions/${context.dictoption}/save`,data,isloading);
return res;
} }
let masterData:any = {}; let masterData:any = {};
Object.assign(data,masterData); Object.assign(data,masterData);
......
...@@ -107,7 +107,6 @@ ...@@ -107,7 +107,6 @@
} }
> .toolbar-container{ > .toolbar-container{
margin-left: auto; margin-left: auto;
display: inline-block;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
......
...@@ -502,11 +502,11 @@ export default class AppIndexViewBase extends Vue implements ControlInterface { ...@@ -502,11 +502,11 @@ export default class AppIndexViewBase extends Vue implements ControlInterface {
navDataService.removeNavData(this.viewtag); navDataService.removeNavData(this.viewtag);
} }
switch (item.appfunctag) { switch (item.appfunctag) {
case '_2': case 'Auto1':
this.click_2(item); this.clickAuto1(item);
return; return;
case '_3': case 'Auto2':
this.click_3(item); this.clickAuto2(item);
return; return;
default: default:
console.warn('未指定应用功能'); console.warn('未指定应用功能');
...@@ -521,7 +521,7 @@ export default class AppIndexViewBase extends Vue implements ControlInterface { ...@@ -521,7 +521,7 @@ export default class AppIndexViewBase extends Vue implements ControlInterface {
* @param {*} [item={}] * @param {*} [item={}]
* @memberof AppIndexView * @memberof AppIndexView
*/ */
public click_2(item: any = {}) { public clickAuto1(item: any = {}) {
const viewparam: any = {}; const viewparam: any = {};
Object.assign(viewparam, {}); Object.assign(viewparam, {});
const deResParameters: any[] = []; const deResParameters: any[] = [];
...@@ -544,7 +544,7 @@ export default class AppIndexViewBase extends Vue implements ControlInterface { ...@@ -544,7 +544,7 @@ export default class AppIndexViewBase extends Vue implements ControlInterface {
* @param {*} [item={}] * @param {*} [item={}]
* @memberof AppIndexView * @memberof AppIndexView
*/ */
public click_3(item: any = {}) { public clickAuto2(item: any = {}) {
const viewparam: any = {}; const viewparam: any = {};
Object.assign(viewparam, {}); Object.assign(viewparam, {});
const deResParameters: any[] = []; const deResParameters: any[] = [];
......
...@@ -29,7 +29,7 @@ export default class AppIndexViewModel { ...@@ -29,7 +29,7 @@ export default class AppIndexViewModel {
iconcls: 'fa fa-folder-open-o', iconcls: 'fa fa-folder-open-o',
icon: '', icon: '',
textcls: '', textcls: '',
appfunctag: '_2', appfunctag: 'Auto1',
resourcetag: '', resourcetag: '',
authtag:'web-AppIndexView-menuitem1', authtag:'web-AppIndexView-menuitem1',
}, },
...@@ -48,7 +48,7 @@ export default class AppIndexViewModel { ...@@ -48,7 +48,7 @@ export default class AppIndexViewModel {
iconcls: 'fa fa-stack-exchange', iconcls: 'fa fa-stack-exchange',
icon: '', icon: '',
textcls: '', textcls: '',
appfunctag: '_3', appfunctag: 'Auto2',
resourcetag: '', resourcetag: '',
authtag:'web-AppIndexView-menuitem2', authtag:'web-AppIndexView-menuitem2',
}, },
......
const path = require('path'); const path = require('path');
const os = require('os'); const os = require('os');
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir)
} }
...@@ -33,7 +32,7 @@ module.exports = { ...@@ -33,7 +32,7 @@ module.exports = {
filename: 'index.html', filename: 'index.html',
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'ibizlab-dict', title: 'dictionary',
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
// chunks: ['chunk-vendors', 'chunk-common', 'index'] // chunks: ['chunk-vendors', 'chunk-common', 'index']
...@@ -47,7 +46,7 @@ module.exports = { ...@@ -47,7 +46,7 @@ module.exports = {
filename: 'appindexview.html', filename: 'appindexview.html',
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'ibizlab-dict', title: 'dictionary',
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
// chunks: ['chunk-vendors', 'chunk-common', 'index'] // chunks: ['chunk-vendors', 'chunk-common', 'index']
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
git clone -b master $para2 ibzdict/ git clone -b master $para2 ibzdict/
export NODE_OPTIONS=--max-old-space-size=4096 export NODE_OPTIONS=--max-old-space-size=4096
cd ibzdict/ cd ibzdict/
mvn clean package -Papi mvn clean package -Pweb
cd ibzdict-provider/ibzdict-provider-api cd ibzdict-app/ibzdict-app-web
mvn -Papi docker:build mvn -Pweb docker:build
mvn -Papi docker:push mvn -Pweb docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibzdict-provider-api.yaml ibzlab-rt --with-registry-auth docker -H $para1 stack deploy --compose-file=src/main/docker/ibzdict-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 /ibzdict-app-web.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzdict-app-web.jar
EXPOSE 8080 EXPOSE 30004
ADD ibzdict-app-web.jar /ibzdict-app-web.jar ADD ibzdict-app-web.jar /ibzdict-app-web.jar
...@@ -3,9 +3,22 @@ services: ...@@ -3,9 +3,22 @@ services:
ibzdict-app-web: ibzdict-app-web:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzdict-app-web:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzdict-app-web:latest
ports: ports:
- "8080:8080" - "30004:30004"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
- SERVER_PORT=30004
- 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:
......
...@@ -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 /ibzdict-provider-api.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzdict-provider-api.jar
EXPOSE 40004 EXPOSE 8081
ADD ibzdict-provider-api.jar /ibzdict-provider-api.jar ADD ibzdict-provider-api.jar /ibzdict-provider-api.jar
...@@ -3,22 +3,9 @@ services: ...@@ -3,22 +3,9 @@ services:
ibzdict-provider-api: ibzdict-provider-api:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzdict-provider-api:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzdict-provider-api:latest
ports: ports:
- "40004:40004" - "8081:8081"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
- SERVER_PORT=40004
- 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:
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册