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

lab_gzf 部署微服务应用

上级 68226418
......@@ -301,7 +301,7 @@ export default class AppRichTextEditor extends Vue {
@Watch('value', { immediate: true, deep: true })
oncurrentContent(newval: any, val: any) {
const content: any = this.editor ? this.editor.getContent() : undefined;
const url = this.downloadUrl.substring(3);
const url = this.downloadUrl.indexOf('../') === 0 ? this.downloadUrl.substring(3) : this.downloadUrl;
if(newval) {
newval = newval.replace(/\{(\d+)\.(bmp|jpg|jpeg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp)\}/g, `${url}/$1`);
}
......@@ -364,7 +364,7 @@ export default class AppRichTextEditor extends Vue {
richtexteditor.editor = editor;
editor.on('blur', () => {
let content = editor.getContent();
const url = richtexteditor.downloadUrl.substring(3);
const url = richtexteditor.downloadUrl.indexOf('../') === 0 ? richtexteditor.downloadUrl.substring(3) : richtexteditor.downloadUrl;
let newContent: string = "";
const imgsrc = richtexteditor.imgsrc;
if(imgsrc && imgsrc.length > 0){
......
......@@ -245,6 +245,7 @@ export default {
back: "Back",
next: "Next",
complete: "Complete",
preactionmessage:"The calculation of the previous behavior is not configured"
},
viewLayoutPanel: {
appLogoutView: {
......
......@@ -244,6 +244,7 @@ export default {
back: "上一步",
next: "下一步",
complete: "完成",
preactionmessage:"未配置计算上一步行为"
},
viewLayoutPanel: {
appLogoutView: {
......
......@@ -2,6 +2,7 @@ import { Vue } from 'vue-property-decorator';
import { FooterItemsService } from '@/studio-core/service/FooterItemsService';
import { AppService } from '@/studio-core/service/app-service/AppService';
import AppMenusModel from '@/widgets/app/app-index-view-appmenu/app-index-view-appmenu-model';
import { Environment } from '@/environments/environment';
/**
* 应用首页基类
......@@ -170,6 +171,10 @@ export class AppIndexViewBase extends Vue {
* @memberof AppIndexViewBase
*/
protected created() {
this.left_exp = this.handleMenusResource(this.left_exp);
this.bottom_exp = this.handleMenusResource(this.bottom_exp);
this.top_menus = this.handleMenusResource(this.top_menus);
this.user_menus = this.handleMenusResource(this.user_menus);
const secondtag = this.$util.createUUID();
this.$store.commit("viewaction/createdView", {
viewtag: this.viewtag,
......@@ -229,6 +234,61 @@ export class AppIndexViewBase extends Vue {
}
}
/**
* 通过统一资源标识计算菜单
*
* @param {*} data
* @memberof AppIndexViewBase
*/
public handleMenusResource(inputMenus: Array<any>) {
if (Environment.enablePermissionValid) {
this.computedEffectiveMenus(inputMenus);
this.computeParentMenus(inputMenus);
}
return inputMenus;
}
/**
* 计算父项菜单项是否隐藏
*
* @param {*} inputMenus
* @memberof AppIndexViewBase
*/
public computeParentMenus(inputMenus: Array<any>) {
if (inputMenus && inputMenus.length > 0) {
inputMenus.forEach((item: any) => {
if (item.hidden && item.items && item.items.length > 0) {
item.items.map((singleItem: any) => {
if (!singleItem.hidden) {
item.hidden = false;
}
if (singleItem.items && singleItem.items.length > 0) {
this.computeParentMenus(singleItem.items);
}
})
}
})
}
}
/**
* 计算有效菜单项
*
* @param {*} inputMenus
* @memberof AppIndexViewBase
*/
public computedEffectiveMenus(inputMenus: Array<any>) {
inputMenus.forEach((_item: any) => {
if (!this.$store.getters['authresource/getAuthMenu'](_item)) {
_item.hidden = true;
if (_item.items && _item.items.length > 0) {
this.computedEffectiveMenus(_item.items);
}
}
})
}
/**
* 绘制内容
*/
......
......@@ -66,6 +66,7 @@ export const PageComponents = {
Vue.component('eamasset-type-pickup-view', () => import('@pages/asset/eamasset-type-pickup-view/eamasset-type-pickup-view.vue'));
Vue.component('eamproductpickup-view', () => import('@pages/asset/eamproductpickup-view/eamproductpickup-view.vue'));
Vue.component('eamapply-type-edit-view', () => import('@pages/apply/eamapply-type-edit-view/eamapply-type-edit-view.vue'));
Vue.component('eamlocation-state-grid-view', () => import('@pages/location/eamlocation-state-grid-view/eamlocation-state-grid-view.vue'));
Vue.component('eamasset-child-grid-view', () => import('@pages/asset/eamasset-child-grid-view/eamasset-child-grid-view.vue'));
Vue.component('eamspare-parts-group-dashboard-view', () => import('@pages/asset/eamspare-parts-group-dashboard-view/eamspare-parts-group-dashboard-view.vue'));
Vue.component('eamlocation-edit-view', () => import('@pages/location/eamlocation-edit-view/eamlocation-edit-view.vue'));
......@@ -105,7 +106,6 @@ export const PageComponents = {
Vue.component('eamasset-state-model-pickup-view', () => import('@pages/asset/eamasset-state-model-pickup-view/eamasset-state-model-pickup-view.vue'));
Vue.component('eamasset-pickup-grid-view', () => import('@pages/asset/eamasset-pickup-grid-view/eamasset-pickup-grid-view.vue'));
Vue.component('eamlocation-state-model-line-edit-view', () => import('@pages/location/eamlocation-state-model-line-edit-view/eamlocation-state-model-line-edit-view.vue'));
Vue.component('eamlocation-state-list-exp-view', () => import('@pages/location/eamlocation-state-list-exp-view/eamlocation-state-list-exp-view.vue'));
Vue.component('woorigin-pickup-view', () => import('@pages/work-order/woorigin-pickup-view/woorigin-pickup-view.vue'));
Vue.component('eamlocation-type-edit-view', () => import('@pages/location/eamlocation-type-edit-view/eamlocation-type-edit-view.vue'));
Vue.component('eamspare-parts-group-info-main-view', () => import('@pages/asset/eamspare-parts-group-info-main-view/eamspare-parts-group-info-main-view.vue'));
......
......@@ -2096,6 +2096,20 @@ const router = new Router({
},
component: () => import('@pages/apply/eamapply-type-edit-view/eamapply-type-edit-view.vue'),
},
{
path: 'eamlocationstates/:eamlocationstate?/gridview/:gridview?',
meta: {
caption: 'entities.eamlocationstate.views.gridview.title',
info:'',
parameters: [
{ pathName: 'appindexview', parameterName: 'appindexview' },
{ pathName: 'eamlocationstates', parameterName: 'eamlocationstate' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
requireAuth: true,
},
component: () => import('@pages/location/eamlocation-state-grid-view/eamlocation-state-grid-view.vue'),
},
{
path: 'eamlocations/:eamlocation?/eamassets/:eamasset?/childgridview/:childgridview?',
meta: {
......@@ -3471,20 +3485,6 @@ const router = new Router({
},
component: () => import('@pages/location/eamlocation-state-model-line-edit-view/eamlocation-state-model-line-edit-view.vue'),
},
{
path: 'eamlocationstates/:eamlocationstate?/listexpview/:listexpview?',
meta: {
caption: 'entities.eamlocationstate.views.listexpview.title',
info:'',
parameters: [
{ pathName: 'appindexview', parameterName: 'appindexview' },
{ pathName: 'eamlocationstates', parameterName: 'eamlocationstate' },
{ pathName: 'listexpview', parameterName: 'listexpview' },
],
requireAuth: true,
},
component: () => import('@pages/location/eamlocation-state-list-exp-view/eamlocation-state-list-exp-view.vue'),
},
{
path: 'woorigins/:woorigin?/pickupview/:pickupview?',
meta: {
......
<studio-view-style2 viewName="eamlocationstategridview" viewTitle="功能位置状态信息" class='degridview eamlocation-state-grid-view'>
<template slot='title'>
<span class='caption-info'>{{viewCaption}}</span>
</template>
<i-input slot="quickSearch" v-show="!isExpandSearchForm" v-model="query" placeholder="功能位置状态名称" search @on-search="onSearch($event)"/>
<template slot="toolbar">
<view-toolbar mode="STYLE2" :model="toolBarModels" @item-click="toolbar_click.apply(_self, arguments)"/> </template>
<template slot="searchForm">
<view_searchform
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
v-show="isExpandSearchForm"
loaddraftAction="FilterGetDraft"
loadAction="FilterGet"
name="searchform"
ref='searchform'
@save="searchform_save($event)"
@search="searchform_search($event)"
@load="searchform_load($event)"
@closeview="closeView($event)">
</view_searchform>
</template>
<view_grid
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:isSingleSelect="isGridSingleSelect"
:showBusyIndicator="true"
:isOpenEdit="false"
:gridRowActiveMode="gridRowActiveMode"
@save="onSave.apply(_self, arguments)"
updateAction=""
removeAction="Remove"
loaddraftAction=""
loadAction=""
createAction=""
fetchAction="FetchDefault"
:newdata="newdata.bind(_self)"
:opendata="opendata.bind(_self)"
name="grid"
ref='grid'
@selectionchange="grid_selectionchange($event)"
@beforeload="grid_beforeload($event)"
@rowdblclick="grid_rowdblclick($event)"
@remove="grid_remove($event)"
@load="grid_load($event)"
@closeview="closeView($event)">
</view_grid>
</studio-view-style2>
\ No newline at end of file
<template src="./eamlocation-state-grid-view.html"/>
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/studio-core';
import { EAMLocationStateGridViewBase } from './eamlocation-state-grid-view-base';
import view_grid from '@widgets/eamlocation-state/main-grid/main-grid.vue';
import view_searchform from '@widgets/eamlocation-state/default-searchform/default-searchform.vue';
/**
* 功能位置状态信息视图
*
* @export
* @class EAMLocationStateGridView
* @extends {EAMLocationStateGridViewBase}
*/
@Component({
components: {
view_grid,
view_searchform,
}
})
@VueLifeCycleProcessing()
export default class EAMLocationStateGridView extends EAMLocationStateGridViewBase { }
</script>
......@@ -744,16 +744,6 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: 'a3d6a9a21765dd59afa2d3d20a99096c',
viewmodule: 'Location',
viewname: 'EAMLocationStateListExpView',
viewaction: '',
viewdatachange: false,
refviews: [
'0b6fa9e6ebc1f6d1afaf3c19585840b0',
],
},
{
viewtag: 'a82c591e524f7289432a30a5ccfa8908',
viewmodule: 'Location',
......@@ -1031,7 +1021,7 @@ export const viewstate: any = {
refviews: [
'b97ed65fd88f536ebb13419938b19e2d',
'9930ab7fa32bcb829b706489a25ca808',
'a3d6a9a21765dd59afa2d3d20a99096c',
'f7c04762f2a3e3026c909e6191a0998f',
'075e8b706da4cd2328cf2239fd6f4d06',
'5c77b6ea410878aa7297d299eb755563',
'ca66d81a69c0f084e3f7cf1e99ae9d28',
......@@ -1225,6 +1215,16 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: 'f7c04762f2a3e3026c909e6191a0998f',
viewmodule: 'Location',
viewname: 'EAMLocationStateGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'0b6fa9e6ebc1f6d1afaf3c19585840b0',
],
},
{
viewtag: 'fc2bbe178f6e4ee12ebeb45875b7f87c',
viewmodule: 'Asset',
......
......@@ -139,6 +139,9 @@ export class AppHeaderMenus extends Vue {
* @memberof AppHeaderMenus
*/
protected renderMenuItem(item: any): any {
if(item.hidden) {
return;
}
return <menuItem title={item.tooltip} name={item.name}>
<menu-icon item={item} />
{item.text}
......@@ -154,6 +157,9 @@ export class AppHeaderMenus extends Vue {
* @memberof AppHeaderMenus
*/
protected renderSubMenu(item: any): any {
if(item.hidden) {
return;
}
return <submenu name={item.name}>
<template slot="title">
<menu-icon item={item} />
......
......@@ -120,7 +120,7 @@ export class AppContentBottomExp extends Vue {
return <div class="app-content-bottom-exp">
<tabs size="small" animated={false} value={this.activeIndex.toString()} on-on-click={(name: string) => this.activeTab(name)}>
{this.menus.map((item: any, i: number) => {
if (!Object.is(item.appfuncyype, 'APPVIEW')) {
if (!Object.is(item.appfuncyype, 'APPVIEW') || item.hidden) {
return;
}
return <tabPane label={(h: any) => this.renderTitle(h, item)} name={i.toString()}>
......
......@@ -108,6 +108,9 @@ export class AppContentLeftExp extends Vue {
return <div class="app-content-left-exp">
<div class="exp-actions">
{this.menus.map((item: any, index: number) => {
if(item.hidden) {
return;
}
return <div title={item.tooltip} on-click={() => this.itemClick(item, index)} class={{ 'action-item': true, 'active': this.activeIndex === index }}>
<div class="active-item-indicator" />
<menu-icon item={item} />
......@@ -116,7 +119,7 @@ export class AppContentLeftExp extends Vue {
</div>
<div class="exp-content">
{this.menus.map((item: any, index: number) => {
if (!Object.is(item.appfuncyype, 'APPVIEW') || !item.isActivated) {
if (!Object.is(item.appfuncyype, 'APPVIEW') || !item.isActivated || item.hidden) {
return;
}
return <div v-show={this.activeIndex === index} key={index} class="exp-item">
......
......@@ -140,6 +140,9 @@ export class UserInfo extends Vue {
* @memberof UserInfo
*/
protected renderMenuItem(item: any): any {
if(item.hidden) {
return;
}
return <dropdownItem name={item.name} title={item.tooltip}>
<menu-icon item={item} />
{item.text}
......@@ -155,6 +158,9 @@ export class UserInfo extends Vue {
* @memberof UserInfo
*/
protected renderMenuGroup(item: any): any {
if(item.hidden) {
return;
}
return <dropdown class="user-menu-child" placement="left-start">
<dropdownItem name={item.name} title={item.tooltip}>
<icon type="ios-arrow-back"></icon>
......
......@@ -110,6 +110,9 @@ export class EditFormControlBase extends FormControlBase {
if (Object.is('removeandexit', action)) {
this.removeAndExit(data);
}
if (Object.is('panelaction', action)) {
this.panelAction(data.action,data.emitAction,data);
}
});
}
this.dataChang
......@@ -610,6 +613,50 @@ export class EditFormControlBase extends FormControlBase {
*/
public resetFormData({ name, newVal, oldVal }: { name: string, newVal: any, oldVal: any }): void { }
/**
* 面板行为
*
* @param {string} [action] 调用的实体行为
* @param {string} [emitAction] 抛出行为
* @param {*} [data={}] 传入数据
* @param {boolean} [showloading] 是否显示加载状态
*
* @memberof EditFormControlBase
*/
public panelAction(action:string,emitAction:string,data:any ={},showloading?:boolean):void{
if (!action || (action && Object.is(action, ''))) {
return;
}
const arg: any = { ...data };
const formdata = this.getValues();
Object.assign(arg, formdata);
Object.assign(arg,this.viewparams);
const post: Promise<any> = this.service.frontLogic(action,JSON.parse(JSON.stringify(this.context)),arg, showloading);
post.then((response: any) => {
if (!response.status || response.status !== 200) {
if (response.data) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message });
}
return;
}
const data = response.data;
this.onFormLoad(data,emitAction);
this.$emit(emitAction, data);
this.$nextTick(() => {
this.formState.next({ type: emitAction, data: data });
});
}).catch((response: any) => {
if (response && response.status && response.data) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message });
return;
}
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
return;
}
});
}
/**
* 保存并退出
*
......
......@@ -1292,4 +1292,44 @@ div::-webkit-scrollbar-thumb {
color: var(--form-editor-font-color);
}
}
// 工作流动态导航表格视图
.dewfdynaexpgridview{
.el-tree {
padding-right: 10px;
}
.el-tree-node__content {
height: 40px;
border-left: solid transparent;
}
.el-tree-node__label {
font-size: 15px;
font-family: "Microsoft YaHei";
}
.el-tree-node:nth-child(1) {
margin-top: 0px;
}
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
background-color: #f0f7ff;
border-color: #1890ff6e;
}
.ivu-split-horizontal {
.ivu-split-pane >div {
height: 100%;
overflow-y: auto;
.content-container {
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 0;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
}
}
}
@import './user.less';
\ No newline at end of file
......@@ -166,7 +166,7 @@ export default class EAMApplyUIServiceBase extends UIService {
xData.refresh(args);
}
if (this.EAMApply_OpenInfo_MainView && this.EAMApply_OpenInfo_MainView instanceof Function) {
this.EAMApply_OpenInfo_MainView(result.datas[0],context,params, $event, xData,actionContext);
this.EAMApply_OpenInfo_MainView(result.datas,context,params, $event, xData,actionContext);
}
return result.datas;
});
......
......@@ -349,7 +349,7 @@ export default class EAMAssetUIServiceBase extends UIService {
}
const _this: any = actionContext;
if (this.EAMAsset_OpenInfo_MainView && this.EAMAsset_OpenInfo_MainView instanceof Function) {
this.EAMAsset_OpenInfo_MainView(result.datas[0],context,params, $event, xData,actionContext);
this.EAMAsset_OpenInfo_MainView(result.datas,context,params, $event, xData,actionContext);
}
return result.datas;
});
......
......@@ -281,7 +281,7 @@ export default class EAMLocationUIServiceBase extends UIService {
xData.refresh(args);
}
if (this.EAMLocation_OpenInfo_MainView && this.EAMLocation_OpenInfo_MainView instanceof Function) {
this.EAMLocation_OpenInfo_MainView(result.datas[0],context,params, $event, xData,actionContext);
this.EAMLocation_OpenInfo_MainView(result.datas,context,params, $event, xData,actionContext);
}
return result.datas;
});
......
......@@ -236,7 +236,7 @@ export default class EAMPlanUIServiceBase extends UIService {
xData.refresh(args);
}
if (this.EAMPlan_OpenInfo_MainView && this.EAMPlan_OpenInfo_MainView instanceof Function) {
this.EAMPlan_OpenInfo_MainView(result.datas[0],context,params, $event, xData,actionContext);
this.EAMPlan_OpenInfo_MainView(result.datas,context,params, $event, xData,actionContext);
}
return result.datas;
});
......
......@@ -240,7 +240,7 @@ export default class EAMWorkOrderUIServiceBase extends UIService {
xData.refresh(args);
}
if (this.EAMWorkOrder_OpenInfo_MainView && this.EAMWorkOrder_OpenInfo_MainView instanceof Function) {
this.EAMWorkOrder_OpenInfo_MainView(result.datas[0],context,params, $event, xData,actionContext);
this.EAMWorkOrder_OpenInfo_MainView(result.datas,context,params, $event, xData,actionContext);
}
return result.datas;
});
......
......@@ -5,11 +5,20 @@ import { Vue } from 'vue-property-decorator';
*/
export class AppIndexViewBase extends Vue {
/**
* 获取应用上下文
*
* @memberof AppIndexViewBase
*/
get context(): any {
return this.$appService.contextStore.appContext || {};
}
/**
* 菜单点击
*
* @param {*} item 菜单数据
* @memberof AppIndexView
* @memberof AppIndexViewBase
*/
public click(item: any) {
if (item) {
......@@ -324,7 +333,7 @@ export class AppIndexViewBase extends Vue {
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'eamlocationstates', parameterName: 'eamlocationstate' },
{ pathName: 'listexpview', parameterName: 'listexpview' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
......@@ -454,7 +463,7 @@ export class AppIndexViewBase extends Vue {
* 绘制内容
*
* @private
* @memberof AppIndexView
* @memberof AppIndexViewBase
*/
public render(): any {
return <span style="display: none;"/>
......
......@@ -214,7 +214,7 @@ export default class AppIndexViewModel {
textcls: '',
appfunctag: '_10',
appfuncyype: 'APPVIEW',
viewname: 'eamlocation-state-list-exp-view',
viewname: 'eamlocation-state-grid-view',
resourcetag: '',
}
,
......@@ -685,12 +685,12 @@ export default class AppIndexViewModel {
appfunctag: '_10',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'eamlocationstatelistexpview',
codename: 'eamlocationstategridview',
deResParameters: [],
routepath: '/appindexview/:appindexview?/eamlocationstates/:eamlocationstate?/listexpview/:listexpview?',
routepath: '/appindexview/:appindexview?/eamlocationstates/:eamlocationstate?/gridview/:gridview?',
parameters: [
{ pathName: 'eamlocationstates', parameterName: 'eamlocationstate' },
{ pathName: 'listexpview', parameterName: 'listexpview' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
},
{
......
......@@ -358,7 +358,7 @@
<!--输出实体[EAMLOCATIONSTATE]数据结构 -->
<changeSet author="a_LAB01_e85d8801c" id="tab-eamlocationstate-46-15">
<changeSet author="a_LAB01_e85d8801c" id="tab-eamlocationstate-47-15">
<createTable tableName="EAMLOCATIONSTATE">
<column name="CREATEDATE" remarks="" type="DATETIME">
</column>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册