提交 699461e8 编写于 作者: ibizdev's avatar ibizdev

labadmin 发布系统代码

上级 cc2a28fb
[
{
"srfkey": "YesNo",
"emptytext": "未定义",
"codelisttype":"static",
"items": [
{
"id": "1",
"label": "是",
"text": "是",
"data":"",
"codename":"Item_1",
"value": "1",
"disabled": false
}
, {
"id": "0",
"label": "否",
"text": "否",
"data":"",
"codename":"Item_0",
"value": "0",
"disabled": false
}
]
},
{
"srfkey": "CLAuthCode",
"emptytext": "未定义",
"codelisttype":"static",
......
......@@ -23,6 +23,14 @@
"viewname": "SYS_USER_ROLERedirectView",
"viewtag": "12f53853382743f095a6af867669d8c1"
},
"sysappeditview": {
"title": "应用编辑视图",
"caption": "应用",
"viewtype": "DEEDITVIEW",
"viewmodule": "uaa",
"viewname": "SysAppEditView",
"viewtag": "137b8f036994965b8926455611848134"
},
"sys_rolepickupgridview": {
"title": "角色选择表格视图",
"caption": "系统角色",
......@@ -231,6 +239,14 @@
"viewname": "SYS_PERMISSIONMPickupView",
"viewtag": "b8a97c1797a1b91fbb37f8c2d14b1fb6"
},
"sysappgridview": {
"title": "应用表格视图",
"caption": "应用",
"viewtype": "DEGRIDVIEW",
"viewmodule": "uaa",
"viewname": "SysAppGridView",
"viewtag": "bb58e4db8024f089e1d808f0ede81302"
},
"sys_permissionredirectview": {
"title": "权限表数据重定向视图",
"caption": "权限/资源",
......
......@@ -12,6 +12,11 @@
position: absolute;
background: #FFF;
// border: 1px solid #e3e3e3;
.tree-right-menu{
.ivu-select-dropdown{
overflow: auto;
}
}
.ivu-divider{
width: 100%;
}
......
// .ibiz-page-tag {
// position: relative;
// box-sizing: border-box;
// // width: calc(100% + 30px);
// height: 38px;
// padding: 0 60px 0 30px;
// background: #f6f6f6;
// .tags-body {
// position: relative;
// width: 100%;
// height: 100%;
// overflow: hidden;
// .tags-container {
// position: absolute;
// overflow: visible;
// white-space: nowrap;
// transition: left .3s ease;
// .ivu-tag {
// margin: 0;
// height: 38px;
// line-height: 38px;
// border: 0;
// border-radius: 0;
// border-right: 1px solid #ddd;
// font-size: 14px;
// .text-icon {
// height: 16px;
// margin-bottom: -3px;
// }
// .ivu-icon-ios-close {
// visibility: hidden;
// }
// .tag-text {
// display: table-cell;
// .ivu-tooltip {
// display: block;
// .ivu-tooltip-rel {
// display: block;
// max-width: 200px;
// overflow: hidden;
// text-overflow: ellipsis;
// }
// }
// }
// }
// .ivu-tag.tag-is-active {
// background: #fff;
// }
// .ivu-tag:hover,.ivu-tag.tag-is-active {
// .ivu-icon-ios-close {
// visibility: initial;
// }
// }
// }
// }
// .move-btn {
// font-size: 18px;
// width: 30px;
// height: 38px;
// line-height: 38px;
// border-left: 1px solid #ddd;
// border-right: 1px solid #ddd;
// text-align: center;
// cursor: pointer;
// }
// .move-btn:hover {
// background: #efefef;
// }
// .move-left, .move-right, .ivu-dropdown{
// position: absolute;
// top: 0;
// }
// .move-left {
// left: 0;
// }
// .move-right {
// right: 30px;
// }
// .ivu-dropdown {
// right: 0;
// }
// }
// .tags-transition-move {
// transition: transform .3s;
// }
// .tags-transition-enter,.tags-transition-leave-to{
// opacity: 0;
// }
.ibiz-page-tag {
.el-tabs{
.el-tabs__nav{
padding:0px 10px;
border:none;
}
.el-tabs__item{
color:#ccc;
border:none;
}
.el-tabs__item:hover{
color:#409eff;
}
.is-active{
color:#409eff;
border-bottom:2px solid #409eff !important;
}
.el-tabs__nav-scroll{
background-color: white;
}
position: relative;
.left{
.el-tabs__header{
box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);
margin:0 0 1 0;
padding-right:120px;
}
}
.right{
position: absolute;
right:0px;
top:0px;
width:120px;
margin:5px 0px;
display: flex;
justify-content: center;
}
>.tag-tabs{
background-color: #F0F0F0 !important;
.el-tabs{
.el-tabs__nav{
padding:0px 10px;
border:none;
}
.el-tabs__active-bar{
background-color: transparent !important;
}
.el-tabs__item{
height: 32px;
line-height: 32px;
border: 1px solid #e8eaec!important;
color: #515a6e!important;
background: #fff!important;
padding: 0 12px;
display: inline-block;
margin: 4px 4px 4px 0;
border-radius: 3px;
font-size: 12px;
vertical-align: middle;
opacity: 1;
overflow: hidden;
.ivu-tag-dot-inner{
display: inline-block;
width: 12px;
height: 12px;
margin-right: 8px;
border-radius: 50%;
background: #e8eaec;
position: relative;
top: 1px;
}
}
.el-tabs__item:hover{
color:#409eff;
}
.is-active{
color:#409eff;
.ivu-tag-dot-inner{
background-color:#409eff !important;
}
border-bottom:2px solid transparent !important;
}
.el-tabs__header{
margin:0 0 1 0;
}
}
}
}
\ No newline at end of file
<template>
<div class="ibiz-page-tag">
<el-tabs
type="card"
@tab-click="changePage"
v-model="editableTabsValue"
closable
@tab-remove="onClose"
>
<el-tab-pane
v-for="(meta, index) of $store.state.pageMetas"
:label="getCaption(meta.caption, meta.info)"
:name="index+''"
:key="index+''"
></el-tab-pane>
</el-tabs>
<div class="tag-tabs left">
<el-tabs
type="card"
@tab-click="changePage"
v-model="editableTabsValue"
closable
@tab-remove="onClose"
>
<el-tab-pane
v-for="(meta, index) of $store.state.pageMetas"
:name="index+''"
:key="index+''"
>
<span slot="label"><span class="ivu-tag-dot-inner"></span>{{ getCaption(meta.caption, meta.info) }}</span>
</el-tab-pane>
</el-tabs>
</div>
<div v-show="$store.state.pageMetas.length > 0" class="right">
<el-dropdown @command="handlerClose">
<el-button size="mini" type="primary">
更多<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="item" v-for="(item,index) in actions" :key="index">{{ $t(item.text) }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</template>
......@@ -23,6 +37,7 @@ import { Environment } from "../../environments/environment";
@Component({})
export default class TabPageExp extends Vue {
@Provide()
public styleLeft: number = 0;
......@@ -32,7 +47,14 @@ export default class TabPageExp extends Vue {
{ text: "app.tabpage.closeother", value: "closeOther" }
];
public editableTabsValue: any = "";
/**
* 关闭tab页方法
*/
public handlerClose(item: any){
this.doTagAction(item.value);
}
public editableTabsValue: any = ""; //tabs页绑定值
@Watch("$route")
public onRouteChange(newVal: any) {
......
......@@ -248,7 +248,8 @@ export default class EditViewEngine extends ViewEngine {
public setTabCaption(info: string): void {
let viewdata: any = this.view.model;
if (viewdata && info && !Object.is(info, '') && this.view.$tabPageExp && (viewdata.srfTitle.indexOf(" - ") === -1)) {
this.view.$tabPageExp.setCurPageCaption(viewdata.srfCaption, viewdata.srfTitle, info);
this.view.$tabPageExp.setCurPageCaption(viewdata.srfTitle, viewdata.srfTitle, info);
this.view.$route.meta.info = info;
this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)} - ${viewdata.dataInfo}`;
}
}
......
import sysauthlog_en_US from '@locale/lanres/entities/sys-auth-log/sys-auth-log_en_US';
import sysapp_en_US from '@locale/lanres/entities/sys-app/sys-app_en_US';
import sysrolepermission_en_US from '@locale/lanres/entities/sys-role-permission/sys-role-permission_en_US';
import syspermission_en_US from '@locale/lanres/entities/sys-permission/sys-permission_en_US';
import sysuserrole_en_US from '@locale/lanres/entities/sys-user-role/sys-user-role_en_US';
......@@ -67,11 +68,13 @@ export default {
menuitem3: '用户',
menuitem6: '角色',
menuitem1: '认证日志',
menuitem2: '接入应用',
},
},
},
entities: {
sysauthlog: sysauthlog_en_US,
sysapp: sysapp_en_US,
sysrolepermission: sysrolepermission_en_US,
syspermission: syspermission_en_US,
sysuserrole: sysuserrole_en_US,
......
import sysauthlog_zh_CN from '@locale/lanres/entities/sys-auth-log/sys-auth-log_zh_CN';
import sysapp_zh_CN from '@locale/lanres/entities/sys-app/sys-app_zh_CN';
import sysrolepermission_zh_CN from '@locale/lanres/entities/sys-role-permission/sys-role-permission_zh_CN';
import syspermission_zh_CN from '@locale/lanres/entities/sys-permission/sys-permission_zh_CN';
import sysuserrole_zh_CN from '@locale/lanres/entities/sys-user-role/sys-user-role_zh_CN';
......@@ -67,11 +68,13 @@ export default {
menuitem3: '用户',
menuitem6: '角色',
menuitem1: '认证日志',
menuitem2: '接入应用',
},
},
},
entities: {
sysauthlog: sysauthlog_zh_CN,
sysapp: sysapp_zh_CN,
sysrolepermission: sysrolepermission_zh_CN,
syspermission: syspermission_zh_CN,
sysuserrole: sysuserrole_zh_CN,
......
export default {
YesNo: {
'1': '是',
'0': '否',
empty: '',
},
CLAuthCode: {
'200': '成功',
'400': '用户不存在',
......
export default {
YesNo: {
'1': '是',
'0': '否',
empty: '',
},
CLAuthCode: {
'200': '成功',
'400': '用户不存在',
......
export default {
fields: {
id: '应用标识',
label: '应用名',
systemid: '系统标识',
fullname: '全称',
type: '类型',
addr: '地址',
icon: '图标',
visabled: '可见',
},
views: {
editview: {
caption: "应用",
title: '应用',
},
gridview: {
caption: "应用",
title: '应用',
},
},
main_form: {
details: {
group1: "应用基本信息",
formpage1: "基本信息",
srforikey: "",
srfkey: "应用标识",
srfmajortext: "应用名",
srftempmode: "",
srfuf: "",
srfdeid: "",
srfsourcekey: "",
pssystemid: "系统标识",
appid: "应用标识",
appname: "应用名",
apptype: "类型",
fullname: "全称",
icon: "图标",
visabled: "可见",
addr: "地址",
},
uiactions: {
},
},
main_grid: {
columns: {
pssystemid: "系统标识",
appid: "应用标识",
appname: "应用名",
apptype: "类型",
fullname: "全称",
icon: "图标",
addr: "地址",
visabled: "可见",
},
uiactions: {
},
},
default_searchform: {
details: {
formpage1: "常规条件",
n_pssystemid_eq: "系统标识(等于(=))",
n_appname_like: "应用名(文本包含(%))",
},
uiactions: {
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: "New",
tip: "New",
},
tbitem4: {
caption: "Edit",
tip: "Edit {0}",
},
tbitem6: {
caption: "Copy",
tip: "Copy {0}",
},
tbitem7: {
caption: "-",
tip: "",
},
tbitem24: {
caption: "行编辑",
tip: "行编辑",
},
tbitem25: {
caption: "新建行",
tip: "新建行",
},
tbitem26: {
caption: "-",
tip: "",
},
tbitem8: {
caption: "Remove",
tip: "Remove {0}",
},
tbitem9: {
caption: "-",
tip: "",
},
tbitem13: {
caption: "Export",
tip: "Export {0} Data To Excel",
},
tbitem10: {
caption: "-",
tip: "",
},
tbitem19: {
caption: "Filter",
tip: "Filter",
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: "Save",
tip: "Save",
},
tbitem5: {
caption: "Save And Close",
tip: "Save And Close Window",
},
tbitem6: {
caption: "-",
tip: "",
},
tbitem12: {
caption: "New",
tip: "New",
},
tbitem13: {
caption: "-",
tip: "",
},
tbitem14: {
caption: "Copy",
tip: "Copy {0}",
},
},
};
\ No newline at end of file
export default {
fields: {
id: '应用标识',
label: '应用名',
systemid: '系统标识',
fullname: '全称',
type: '类型',
addr: '地址',
icon: '图标',
visabled: '可见',
},
views: {
editview: {
caption: '应用',
title: '应用',
},
gridview: {
caption: '应用',
title: '应用',
},
},
main_form: {
details: {
group1: '应用基本信息',
formpage1: '基本信息',
srforikey: '',
srfkey: '应用标识',
srfmajortext: '应用名',
srftempmode: '',
srfuf: '',
srfdeid: '',
srfsourcekey: '',
pssystemid: '系统标识',
appid: '应用标识',
appname: '应用名',
apptype: '类型',
fullname: '全称',
icon: '图标',
visabled: '可见',
addr: '地址',
},
uiactions: {
},
},
main_grid: {
columns: {
pssystemid: '系统标识',
appid: '应用标识',
appname: '应用名',
apptype: '类型',
fullname: '全称',
icon: '图标',
addr: '地址',
visabled: '可见',
},
uiactions: {
},
},
default_searchform: {
details: {
formpage1: '常规条件',
n_pssystemid_eq: '系统标识(等于(=))',
n_appname_like: '应用名(文本包含(%))',
},
uiactions: {
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: '新建',
tip: '新建',
},
tbitem4: {
caption: '编辑',
tip: '编辑',
},
tbitem6: {
caption: '拷贝',
tip: '拷贝',
},
tbitem7: {
caption: '-',
tip: '',
},
tbitem24: {
caption: '行编辑',
tip: '行编辑',
},
tbitem25: {
caption: '新建行',
tip: '新建行',
},
tbitem26: {
caption: '-',
tip: '',
},
tbitem8: {
caption: '删除',
tip: '删除',
},
tbitem9: {
caption: '-',
tip: '',
},
tbitem13: {
caption: '导出',
tip: '导出',
},
tbitem10: {
caption: '-',
tip: '',
},
tbitem19: {
caption: '过滤',
tip: '过滤',
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: '保存',
tip: '保存',
},
tbitem5: {
caption: '保存并关闭',
tip: '保存并关闭',
},
tbitem6: {
caption: '-',
tip: '',
},
tbitem12: {
caption: '新建',
tip: '新建',
},
tbitem13: {
caption: '-',
tip: '',
},
tbitem14: {
caption: '拷贝',
tip: '拷贝',
},
},
};
\ No newline at end of file
......@@ -63,6 +63,24 @@ mock.onGet('v7/mainappmenu').reply((config: any) => {
textcls: '',
appfunctag: 'Auto6',
resourcetag: '',
},
{
id: '1CDA0214-F2CF-44CD-ACD1-2DE168FF5C0F',
name: 'menuitem2',
text: '接入应用',
type: 'MENUITEM',
counterid: '',
tooltip: '接入应用',
expanded: false,
separator: false,
hidden: false,
hidesidebar: false,
opendefault: false,
iconcls: 'fa fa-buysellads',
icon: '',
textcls: '',
appfunctag: '_2',
resourcetag: '',
},
],
}];
......
......@@ -8,6 +8,33 @@ mock.onGet('./assets/json/data-dictionary.json').reply((config: any) => {
let status = MockAdapter.mockStatus(config);
return [status, [
{
srfkey: 'YesNo',
emptytext: '未定义',
"codelisttype":"static",
items: [
{
id: '1',
label: '是',
text: '是',
"data":"",
"codename":"Item_1",
value: '1',
disabled: false,
},
{
id: '0',
label: '否',
text: '否',
"data":"",
"codename":"Item_0",
value: '0',
disabled: false,
},
]
},
{
srfkey: 'CLAuthCode',
emptytext: '未定义',
"codelisttype":"static",
......
此差异已折叠。
......@@ -8,6 +8,7 @@ import './upload/upload';
// 实体级接口对象
import './entity/sys-auth-logs/sys-auth-logs';
import './entity/sys-apps/sys-apps';
import './entity/sys-role-permissions/sys-role-permissions';
import './entity/sys-permissions/sys-permissions';
import './entity/sys-user-roles/sys-user-roles';
......
......@@ -31,6 +31,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "SYS_USER_ROLERedirectView",
"viewtag": "12f53853382743f095a6af867669d8c1"
},
"sysappeditview": {
"title": "应用编辑视图",
"caption": "应用",
"viewtype": "DEEDITVIEW",
"viewmodule": "uaa",
"viewname": "SysAppEditView",
"viewtag": "137b8f036994965b8926455611848134"
},
"sys_rolepickupgridview": {
"title": "角色选择表格视图",
"caption": "系统角色",
......@@ -239,6 +247,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "SYS_PERMISSIONMPickupView",
"viewtag": "b8a97c1797a1b91fbb37f8c2d14b1fb6"
},
"sysappgridview": {
"title": "应用表格视图",
"caption": "应用",
"viewtype": "DEGRIDVIEW",
"viewmodule": "uaa",
"viewname": "SysAppGridView",
"viewtag": "bb58e4db8024f089e1d808f0ede81302"
},
"sys_permissionredirectview": {
"title": "权限表数据重定向视图",
"caption": "权限/资源",
......
export const PageComponents = {
install(Vue: any, opt: any) {
Vue.component('sys-rolepickup-view', () => import('@pages/uaa/sys-rolepickup-view/sys-rolepickup-view.vue'));
Vue.component('sys-role-permissioncustom-view', () => import('@pages/uaa/sys-role-permissioncustom-view/sys-role-permissioncustom-view.vue'));
Vue.component('sys-app-grid-view', () => import('@pages/uaa/sys-app-grid-view/sys-app-grid-view.vue'));
Vue.component('sys-rolepickup-view', () => import('@pages/uaa/sys-rolepickup-view/sys-rolepickup-view.vue'));
Vue.component('sys-app-edit-view', () => import('@pages/uaa/sys-app-edit-view/sys-app-edit-view.vue'));
Vue.component('sys-usermpickup-view', () => import('@pages/uaa/sys-usermpickup-view/sys-usermpickup-view.vue'));
Vue.component('sys-role-permissioncustom-view', () => import('@pages/uaa/sys-role-permissioncustom-view/sys-role-permissioncustom-view.vue'));
Vue.component('sys-userpickup-grid-view', () => import('@pages/uaa/sys-userpickup-grid-view/sys-userpickup-grid-view.vue'));
Vue.component('sys-roleedit-view', () => import('@pages/uaa/sys-roleedit-view/sys-roleedit-view.vue'));
Vue.component('sys-user-roleedit-view', () => import('@pages/uaa/sys-user-roleedit-view/sys-user-roleedit-view.vue'));
......
.view-card {
>.ivu-card-extra {
top: 5px;
right: 0px;
}
}
.sys-app-edit-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import SysAppEditViewBase from './sys-app-edit-view-base.vue';
import view_form from '@widgets/sys-app/main-form/main-form.vue';
@Component({
components: {
view_form,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class SysAppEditView extends SysAppEditViewBase {
}
</script>
\ No newline at end of file
.sys-app-grid-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import SysAppGridViewBase from './sys-app-grid-view-base.vue';
import view_grid from '@widgets/sys-app/main-grid/main-grid.vue';
import view_searchform from '@widgets/sys-app/default-searchform/default-searchform.vue';
@Component({
components: {
view_grid,
view_searchform,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class SysAppGridView extends SysAppGridViewBase {
}
</script>
\ No newline at end of file
......@@ -40,6 +40,7 @@ export class EntityServiceRegister {
*/
protected init(): void {
this.allEntityService.set('sysauthlog', () => import('@/service/sys-auth-log/sys-auth-log-service'));
this.allEntityService.set('sysapp', () => import('@/service/sys-app/sys-app-service'));
this.allEntityService.set('sysrolepermission', () => import('@/service/sys-role-permission/sys-role-permission-service'));
this.allEntityService.set('syspermission', () => import('@/service/sys-permission/sys-permission-service'));
this.allEntityService.set('sysuserrole', () => import('@/service/sys-user-role/sys-user-role-service'));
......
import { Http,Util } from '@/utils';
import EntityService from '../entity-service';
/**
* 应用服务对象基类
*
* @export
* @class SysAppServiceBase
* @extends {EntityServie}
*/
export default class SysAppServiceBase extends EntityService {
/**
* Creates an instance of SysAppServiceBase.
*
* @param {*} [opts={}]
* @memberof SysAppServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 初始化基础数据
*
* @memberof SysAppServiceBase
*/
public initBasicData(){
this.APPLYDEKEY ='sysapp';
this.APPDEKEY = 'id';
this.APPDENAME = 'sysapps';
this.APPDETEXT = 'label';
this.APPNAME = 'web';
this.SYSTEMNAME = 'ibzuaa';
}
// 实体接口
/**
* Select接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Select(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().get(`/sysapps/${context.sysapp}/select`,isloading);
}
/**
* Remove接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Remove(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().delete(`/sysapps/${context.sysapp}`,isloading);
}
/**
* Get接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Get(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/sysapps/${context.sysapp}`,isloading);
return res;
}
/**
* Save接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Save(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().post(`/sysapps/${context.sysapp}/save`,data,isloading);
return res;
}
/**
* GetDraft接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async GetDraft(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/sysapps/getdraft`,isloading);
res.data.sysapp = data.sysapp;
return res;
}
/**
* CheckKey接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async CheckKey(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
return Http.getInstance().post(`/sysapps/${context.sysapp}/checkkey`,data,isloading);
}
/**
* Update接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Update(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().put(`/sysapps/${context.sysapp}`,data,isloading);
return res;
}
/**
* Create接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async Create(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
if(!data.srffrontuf || data.srffrontuf !== "1"){
data[this.APPDEKEY] = null;
}
if(data.srffrontuf){
delete data.srffrontuf;
}
let tempContext:any = JSON.parse(JSON.stringify(context));
let res:any = await Http.getInstance().post(`/sysapps`,data,isloading);
return res;
}
/**
* FetchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof SysAppServiceBase
*/
public async FetchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return Http.getInstance().get(`/sysapps/fetchdefault`,tempData,isloading);
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import SysAppServiceBase from './sys-app-service-base';
/**
* 应用服务对象
*
* @export
* @class SysAppService
* @extends {SysAppServiceBase}
*/
export default class SysAppService extends SysAppServiceBase {
/**
* Creates an instance of SysAppService.
*
* @param {*} [opts={}]
* @memberof SysAppService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -20,6 +20,7 @@ export const viewstate: any = {
viewdatachange: false,
refviews: [
'9e9a67908b3c85516085fe19e3dd4113',
'bb58e4db8024f089e1d808f0ede81302',
'0134ebf9391cb5f988839332c1352cd9',
'cb64b5009e70f225a91046314f40977a',
],
......@@ -34,6 +35,15 @@ export const viewstate: any = {
'1ee68b6d5d4c5c9413f6874e0ccabc43',
],
},
{
viewtag: '137b8f036994965b8926455611848134',
viewmodule: 'uaa',
viewname: 'SysAppEditView',
viewaction: '',
viewdatachange: false,
refviews: [
],
},
{
viewtag: '1a3413067ee48ab30691eab9f345f517',
viewmodule: 'uaa',
......@@ -295,6 +305,16 @@ export const viewstate: any = {
'9c0b351150648f7661be53c10eaabd67',
],
},
{
viewtag: 'bb58e4db8024f089e1d808f0ede81302',
viewmodule: 'uaa',
viewname: 'SysAppGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'137b8f036994965b8926455611848134',
],
},
{
viewtag: 'c1c2bc63580de24bac60af103a3fcc0f',
viewmodule: 'uaa',
......
......@@ -237,6 +237,12 @@
}
}
// 清除看板里视图的阴影
.dashboard .portlet .view-container{
-webkit-box-shadow: none ;
box-shadow: none;
}
/*** END:多数据视图属性布局 ***/
// 看板视图,卡片模式
......
import { Environment } from '@/environments/environment';
import { UIActionTool,Util } from '@/utils';
import UIService from '../ui-service';
import { Subject } from 'rxjs';
import SysAppService from '@/service/sys-app/sys-app-service';
/**
* 应用UI服务对象基类
*
* @export
* @class SysAppUIServiceBase
*/
export default class SysAppUIServiceBase extends UIService {
/**
* 是否支持工作流
*
* @memberof SysAppUIServiceBase
*/
public isEnableWorkflow:boolean = false;
/**
* 当前UI服务对应的数据服务对象
*
* @memberof SysAppUIServiceBase
*/
public dataService:SysAppService = new SysAppService();
/**
* 所有关联视图
*
* @memberof SysAppUIServiceBase
*/
public allViewMap: Map<string, Object> = new Map();
/**
* 状态值
*
* @memberof SysAppUIServiceBase
*/
public stateValue: number = 0;
/**
* 状态属性
*
* @memberof SysAppUIServiceBase
*/
public stateField: string = "";
/**
* 主状态属性集合
*
* @memberof SysAppUIServiceBase
*/
public mainStateFields:Array<any> = [];
/**
* 主状态集合Map
*
* @memberof SysAppUIServiceBase
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* Creates an instance of SysAppUIServiceBase.
*
* @param {*} [opts={}]
* @memberof SysAppUIServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.initViewMap();
this.initDeMainStateMap();
}
/**
* 初始化视图Map
*
* @memberof SysAppUIServiceBase
*/
public initViewMap(){
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'sysapps'});
this.allViewMap.set('MDATAVIEW:',{viewname:'gridview',srfappde:'sysapps'});
}
/**
* 初始化主状态集合
*
* @memberof SysAppUIServiceBase
*/
public initDeMainStateMap(){
}
/**
* 获取指定数据的重定向页面
*
* @param srfkey 数据主键
* @param isEnableWorkflow 重定向视图是否需要处理流程中的数据
* @memberof SysAppUIServiceBase
*/
public async getRDAppView(srfkey:string,isEnableWorkflow:boolean){
this.isEnableWorkflow = isEnableWorkflow;
// 进行数据查询
let result:any = await this.dataService.Get({sysapp:srfkey});
const curData:any = result.data;
//判断当前数据模式,默认为true,todo
const iRealDEModel:boolean = true;
let bDataInWF:boolean = false;
let bWFMode:any = false;
// 计算数据模式
if (this.isEnableWorkflow) {
bDataInWF = await this.dataService.testDataInWF({stateValue:this.stateValue,stateField:this.stateField},curData);
if (bDataInWF) {
bDataInWF = true;
bWFMode = await this.dataService.testUserExistWorklist(null,curData);
}
}
let strPDTViewParam:string = await this.getDESDDEViewPDTParam(curData, bDataInWF, bWFMode);
//若不是当前数据模式,处理strPDTViewParam,todo
//查找视图
//返回视图
return this.allViewMap.get(strPDTViewParam);
}
/**
* 获取实际的数据类型
*
* @memberof SysAppUIServiceBase
*/
public getRealDEType(entity:any){
}
/**
* 获取实体单数据实体视图预定义参数
*
* @param curData 当前数据
* @param bDataInWF 是否有数据在工作流中
* @param bWFMode 是否工作流模式
* @memberof SysAppUIServiceBase
*/
public async getDESDDEViewPDTParam(curData:any, bDataInWF:boolean, bWFMode:boolean){
let strPDTParam:string = '';
if (bDataInWF) {
// 判断数据是否在流程中
}
//多表单,todo
const isEnableMultiForm:boolean = false;
const multiFormDEField:string|null =null;
if (isEnableMultiForm && multiFormDEField) {
const objFormValue:string = curData[multiFormDEField];
if(!Environment.isAppMode){
return 'MOBEDITVIEW'+objFormValue;
}
return 'EDITVIEW'+objFormValue;
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
/**
* 获取数据对象的主状态标识
*
* @param curData 当前数据
* @memberof SysAppUIServiceBase
*/
public async getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
if(!(singleMainField in curData)){
console.error(`当前数据对象不包含属性singleMainField,可能会发生错误`);
}
})
let strTag:String = "";
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
for (let j = 0; j <= 1; j++) {
let strTag2:string = (curData[this.mainStateFields[1]])?`${strTag}__${(j == 0) ? curData[this.mainStateFields[1]] : ""}`:strTag;
if (this.mainStateFields.length >= 3) {
for (let k = 0; k <= 1; k++) {
let strTag3:string = (curData[this.mainStateFields[2]])?`${strTag2}__${(k == 0) ? curData[this.mainStateFields[2]] : ""}`:strTag2;
// 判断是否存在
return this.allDeMainStateMap.get(strTag3);
}
}else{
return this.allDeMainStateMap.get(strTag2);
}
}
}else{
return this.allDeMainStateMap.get(strTag);
}
}
return null;
}
}
\ No newline at end of file
import SysAppUIServiceBase from './sys-app-ui-service-base';
/**
* 应用UI服务对象
*
* @export
* @class SysAppUIService
*/
export default class SysAppUIService extends SysAppUIServiceBase {
/**
* Creates an instance of SysAppUIService.
*
* @param {*} [opts={}]
* @memberof SysAppUIService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -40,6 +40,7 @@ export class UIServiceRegister {
*/
protected init(): void {
this.allUIService.set('sysauthlog', () => import('@/uiservice/sys-auth-log/sys-auth-log-ui-service'));
this.allUIService.set('sysapp', () => import('@/uiservice/sys-app/sys-app-ui-service'));
this.allUIService.set('sysrolepermission', () => import('@/uiservice/sys-role-permission/sys-role-permission-ui-service'));
this.allUIService.set('syspermission', () => import('@/uiservice/sys-permission/sys-permission-ui-service'));
this.allUIService.set('sysuserrole', () => import('@/uiservice/sys-user-role/sys-user-role-ui-service'));
......
......@@ -565,6 +565,9 @@ export default class MainBase extends Vue implements ControlInterface {
case 'Auto5':
this.clickAuto5(item);
return;
case '_2':
this.click_2(item);
return;
case 'Auto6':
this.clickAuto6(item);
return;
......@@ -611,6 +614,24 @@ export default class MainBase extends Vue implements ControlInterface {
this.$router.push(path);
}
/**
* 接入应用
*
* @param {*} [item={}]
* @memberof Main
*/
public click_2(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'sysapps', parameterName: 'sysapp' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
this.$router.push(path);
}
/**
* 认证日志
*
......
......@@ -70,6 +70,25 @@ export default class MainModel {
appfunctag: 'Auto6',
resourcetag: '',
authtag:'web-Main-menuitem1',
},
{
id: '1CDA0214-F2CF-44CD-ACD1-2DE168FF5C0F',
name: 'menuitem2',
text: '接入应用',
type: 'MENUITEM',
counterid: '',
tooltip: '接入应用',
expanded: false,
separator: false,
hidden: false,
hidesidebar: false,
opendefault: false,
iconcls: 'fa fa-buysellads',
icon: '',
textcls: '',
appfunctag: '_2',
resourcetag: '',
authtag:'web-Main-menuitem2',
},
];
......@@ -105,6 +124,18 @@ export default class MainModel {
{ pathName: 'gridview', parameterName: 'gridview' },
],
},
{
appfunctag: '_2',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'sysappgridview',
deResParameters: [],
routepath: '/index/:index?/sysapps/:sysapp?/gridview/:gridview?',
parameters: [
{ pathName: 'sysapps', parameterName: 'sysapp' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
},
{
appfunctag: 'Auto6',
appfuncyype: 'APPVIEW',
......
/**
* Default 部件模型
*
* @export
* @class DefaultModel
*/
export default class DefaultModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof DefaultModel
*/
public getDataItems(): any[] {
return [
{
name: 'srfwfmemo',
prop: 'srfwfmemo',
dataType: 'TEXT',
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
{
name: 'n_pssystemid_eq',
prop: 'systemid',
dataType: 'PICKUP',
},
{
name: 'n_appname_like',
prop: 'label',
dataType: 'TEXT',
},
]
}
}
\ No newline at end of file
.ivu-tabs-no-animation>.ivu-tabs-content{
padding: 0 16px;
}
.ivu-card-head{
padding: 14px 0;
}
.app-search-form {
padding: 8px 14px 0;
.ivu-form-item{
margin-bottom: 8px;
}
.search_reset {
margin-right: 12px;
margin-bottom: 8px;
}
.search-button{
text-align: right;
}
}
.app-search-form-flex {
height: 100%;
> .ivu-row {
height: 100%;
> .ivu-tabs {
height: 100%;
display: flex;
flex-direction: column;
> .ivu-tabs-content {
flex-grow: 1;
overflow: auto;
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
}
}
.app-tabpanel-flex {
height: 100%;
> .ivu-tabs-content {
height: calc(100% - 52px);
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import DefaultBase from './default-searchform-base.vue';
@Component({
components: {
}
})
export default class Default extends DefaultBase {
}
</script>
\ No newline at end of file
/**
* Main 部件模型
*
* @export
* @class MainModel
*/
export default class MainModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof MainModel
*/
public getDataItems(): any[] {
return [
{
name: 'srfwfmemo',
prop: 'srfwfmemo',
dataType: 'TEXT',
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
{
name: 'srforikey',
},
{
name: 'srfkey',
prop: 'id',
dataType: 'TEXT',
},
{
name: 'srfmajortext',
prop: 'label',
dataType: 'TEXT',
},
{
name: 'srftempmode',
},
{
name: 'srfuf',
},
{
name: 'srfdeid',
},
{
name: 'srfsourcekey',
},
{
name: 'pssystemid',
prop: 'systemid',
dataType: 'PICKUP',
},
{
name: 'appid',
prop: 'id',
dataType: 'TEXT',
},
{
name: 'appname',
prop: 'label',
dataType: 'TEXT',
},
{
name: 'apptype',
prop: 'type',
dataType: 'TEXT',
},
{
name: 'fullname',
prop: 'fullname',
dataType: 'TEXT',
},
{
name: 'icon',
prop: 'icon',
dataType: 'TEXT',
},
{
name: 'visabled',
prop: 'visabled',
dataType: 'YESNO',
},
{
name: 'addr',
prop: 'addr',
dataType: 'TEXT',
},
{
name: 'sysapp',
prop: 'id',
dataType: 'FONTKEY',
},
]
}
}
\ No newline at end of file
.ivu-tabs-no-animation>.ivu-tabs-content{
padding: 0 16px;
}
.ivu-card-head{
padding: 14px 0;
}
.app-form {
overflow: auto;
> .ivu-row {
> .ivu-tabs {
height: 100%;
display: flex;
flex-direction: column;
> .ivu-tabs-content {
flex-grow: 1;
overflow: auto;
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
}
}
.app-tabpanel-flex {
height: 100%;
> .ivu-tabs-content {
height: calc(100% - 52px);
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
.app-form {
>.ivu-row:nth-child(2) {
>.ivu-col:nth-child(1) {
>.ivu-row.app-form-group.app-group-hiddden-caption:nth-child(1) {
margin-top: 12px;
}
}
}
}
// 表单行间距
.app-form{
.app-form-item{
margin-bottom: 20px;
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import MainBase from './main-form-base.vue';
@Component({
components: {
}
})
export default class Main extends MainBase {
}
</script>
\ No newline at end of file
此差异已折叠。
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import MainBase from './main-grid-base.vue';
@Component({
components: {
}
})
export default class Main extends MainBase {
}
</script>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册