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

zhouweidong 发布系统代码

上级 e699ac14
## v7.0.0-alpha.20 [2020-10-18]
### Bug修复
修复获取数据对象的主状态值统一转字符串处理逻辑
修复表单空输入异常问题
修复下拉数据数据加载异常问题
修复表单分页图标重复发布异常
修复数据选择增加外键值附加数据回填逻辑
修复表格行编辑可设置数据主键和清空仿真主键问题
修复代码表返回数据不合法抛出的异常
修复表单值规则部分逻辑
修复导航类视图修改右侧表单数据时,只能跳转第一条数据BUG
### 功能新增及优化
#### 模板
新增动态表单支持
新增视图消息支持
新增表单、面板、工具栏、数据看板直接内容项支持
新增日历项支持标识属性和文本属性
新增应用组件包支持
新增导航工具栏权限控制支持
新增图表绘制最终参数
新增门户部件界面行为组权限校验
新增表单、表格数据对象方式新建、更新默认值
新增导航视图搜索框提示可搜索字段名称
新增部件逻辑插件支持
新增工具栏、工具栏项插件支持
优化调整代码表服务基类位置
#### 基础文件
新增动态表单组件、直接内容项组件、视图消息组组件和视图消息组件
优化导航类部件工具栏状态逻辑
修复表单空输入异常问题
修复下拉数据数据加载异常
修复关系页第一次进入不加载问题
## v7.0.0-alpha.19 [2020-9-13] ## v7.0.0-alpha.19 [2020-9-13]
### Bug修复 ### Bug修复
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
"vue-property-decorator": "^8.3.0", "vue-property-decorator": "^8.3.0",
"vue-router": "^3.1.3", "vue-router": "^3.1.3",
"vuex": "^3.1.2", "vuex": "^3.1.2",
"xlsx": "^0.15.6" "xlsx": "^0.15.6"
}, },
"devDependencies": { "devDependencies": {
"@types/echarts": "^4.4.3", "@types/echarts": "^4.4.3",
......
import store from '@/store'; import store from '@/store';
import { Environment } from '@/environments/environment';
/** /**
* 实体权限服务 * 实体权限服务
* *
...@@ -115,7 +117,13 @@ export default class AuthService { ...@@ -115,7 +117,13 @@ export default class AuthService {
if(!this.$store.getters['authresource/getEnablePermissionValid']) { if(!this.$store.getters['authresource/getEnablePermissionValid']) {
return true; return true;
} }
return this.$store.getters['authresource/getAuthMenu'](item); if(Object.is(Environment.menuPermissionMode,"RT")){
return this.$store.getters['authresource/getAuthMenuWithRT'](item);
}else if(Object.is(Environment.menuPermissionMode,"RESOURCE")){
return this.$store.getters['authresource/getAuthMenuWithResource'](item);
}else{
return this.$store.getters['authresource/getAuthMenu'](item);
}
} }
/** /**
......
...@@ -149,10 +149,11 @@ export default class CodeListService { ...@@ -149,10 +149,11 @@ export default class CodeListService {
// 启用缓存 // 启用缓存
if(isEnableCache){ if(isEnableCache){
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{ const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
const callbackKey:string = `${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`;
promise.then((result:any) =>{ promise.then((result:any) =>{
if(result.length > 0){ if(result.length > 0){
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result}); CodeListService.codelistCached.set(callbackKey,{items:result});
CodeListService.codelistCache.delete(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`); CodeListService.codelistCache.delete(callbackKey);
return resolve(result); return resolve(result);
}else{ }else{
return resolve([]); return resolve([]);
...@@ -162,8 +163,9 @@ export default class CodeListService { ...@@ -162,8 +163,9 @@ export default class CodeListService {
}) })
} }
// 加载完成,从本地缓存获取 // 加载完成,从本地缓存获取
if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ const key:string = `${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`;
let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items; if(CodeListService.codelistCached.get(key)){
let items:any = CodeListService.codelistCached.get(key).items;
if(items.length >0){ if(items.length >0){
if(new Date().getTime() <= codelist.getExpirationTime()){ if(new Date().getTime() <= codelist.getExpirationTime()){
return resolve(items); return resolve(items);
...@@ -172,11 +174,11 @@ export default class CodeListService { ...@@ -172,11 +174,11 @@ export default class CodeListService {
} }
if (codelist) { if (codelist) {
// 加载中,UI又需要数据,解决连续加载同一代码表问题 // 加载中,UI又需要数据,解决连续加载同一代码表问题
if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(CodeListService.codelistCache.get(key)){
callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)); callback(context,data,tag,CodeListService.codelistCache.get(key));
}else{ }else{
let result:Promise<any> = codelist.getItems(context,data,isloading); let result:Promise<any> = codelist.getItems(context,data,isloading);
CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result); CodeListService.codelistCache.set(key,result);
codelist.setExpirationTime(new Date().getTime() + cacheTimeout); codelist.setExpirationTime(new Date().getTime() + cacheTimeout);
callback(context,data,tag,result); callback(context,data,tag,result);
} }
......
...@@ -66,7 +66,7 @@ export default class AppActionBar extends Vue { ...@@ -66,7 +66,7 @@ export default class AppActionBar extends Vue {
public created(){ public created(){
if (this.viewState) { if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, "app-actionbar")) { if (!Object.is(tag, "all-portlet")) {
return; return;
} }
if(Object.is(action,'loadmodel')){ if(Object.is(action,'loadmodel')){
...@@ -107,7 +107,7 @@ export default class AppActionBar extends Vue { ...@@ -107,7 +107,7 @@ export default class AppActionBar extends Vue {
const _item = ActionModel[key]; const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){ if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any; let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){ if(Object.is(_item['actiontarget'],"NONE") || Object.is(_item['actiontarget'],"")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']); dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{ }else{
if(data && Object.keys(data).length >0){ if(data && Object.keys(data).length >0){
......
...@@ -4,7 +4,11 @@ ...@@ -4,7 +4,11 @@
<app-alert <app-alert
:key="index" :key="index"
:tag="item.tag" :tag="item.tag"
:position="item.position"/> :context="context"
:viewparam="viewparam"
:position="item.position"
:infoGroup="infoGroup"
:viewname="viewname"/>
</template> </template>
</div> </div>
...@@ -32,6 +36,23 @@ export default class AppAlertGroup extends Vue { ...@@ -32,6 +36,23 @@ export default class AppAlertGroup extends Vue {
*/ */
@Prop() infoGroup: any; @Prop() infoGroup: any;
/**
* 应用上下文
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() viewparam: any;
/** /**
* 视图消息组显示位置 * 视图消息组显示位置
* *
...@@ -40,6 +61,14 @@ export default class AppAlertGroup extends Vue { ...@@ -40,6 +61,14 @@ export default class AppAlertGroup extends Vue {
*/ */
@Prop() position: any; @Prop() position: any;
/**
* 视图名称
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() viewname: any;
/** /**
* 当前位置视图消息集合 * 当前位置视图消息集合
* *
......
...@@ -43,6 +43,39 @@ export default class AppAlert extends Vue { ...@@ -43,6 +43,39 @@ export default class AppAlert extends Vue {
* @memberof AppAlert * @memberof AppAlert
*/ */
@Prop() position: any; @Prop() position: any;
/**
* 应用上下文
*
* @type {any}
* @memberof AppAlert
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {any}
* @memberof AppAlert
*/
@Prop() viewparam: any;
/**
* 视图消息组tag
*
* @type {any}
* @memberof AppAlert
*/
@Prop() infoGroup!: any;
/**
* 视图名称
*
* @type {any}
* @memberof AppAlert
*/
@Prop() viewname!: any;
/** /**
* 视图消息对象 * 视图消息对象
...@@ -79,7 +112,7 @@ export default class AppAlert extends Vue { ...@@ -79,7 +112,7 @@ export default class AppAlert extends Vue {
* @memberof AppAlert * @memberof AppAlert
*/ */
public async getData() { public async getData() {
let response: any = await this.viewMessageService.getViewMessageByTag(this.tag, null, null) let response: any = await this.viewMessageService.getViewMessageByTag(this.tag, this.context, this.viewparam);
if(response && response.length > 0) { if(response && response.length > 0) {
response.forEach((item: any) => { response.forEach((item: any) => {
let tempData: any = JSON.parse(JSON.stringify(item)); let tempData: any = JSON.parse(JSON.stringify(item));
...@@ -118,7 +151,8 @@ export default class AppAlert extends Vue { ...@@ -118,7 +151,8 @@ export default class AppAlert extends Vue {
data.showState = true; data.showState = true;
if(data.closeMode || data.closeMode == 0) { if(data.closeMode || data.closeMode == 0) {
if(data.closeMode == 1) { if(data.closeMode == 1) {
const id = this.$store.getters.getViewMessage(data.codename); const tag = this.viewname + '_' + this.infoGroup + '_' + data.codename;
const id = localStorage.getItem(tag);
if(id) { if(id) {
data.showState = false; data.showState = false;
flag = false; flag = false;
...@@ -182,14 +216,14 @@ export default class AppAlert extends Vue { ...@@ -182,14 +216,14 @@ export default class AppAlert extends Vue {
let tempArr: any[] = data.customClass.toString().split(','); let tempArr: any[] = data.customClass.toString().split(',');
if(tempArr && tempArr.length > 0) { if(tempArr && tempArr.length > 0) {
if(Object.is("1", tempArr[1])) { if(Object.is("1", tempArr[1])) {
const args = { tag: tempArr[0], id: data.customClass }; const tag = this.viewname + '_' + this.infoGroup + '_' + tempArr[0];
this.$store.commit('addViewMessage', args); localStorage.setItem(tag, data.customClass);
} }
} }
} }
if(data.closeMode && data.closeMode == 1) { if(data.closeMode && data.closeMode == 1) {
const args = {tag: data.codename, id: data.id}; const tag = this.viewname + '_' + this.infoGroup + '_' + data.codename;
this.$store.commit('addViewMessage', args); localStorage.setItem(tag,data.id);
} }
} }
......
<template> <template>
<el-breadcrumb class="app-breadcrumb" separator="/"> <el-breadcrumb class="app-breadcrumb" :separator="separator">
<transition-group name="breadcrumb"> <transition-group name="breadcrumb">
<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">
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
import { Component, Vue, Watch, Prop } from 'vue-property-decorator' import { Component, Vue, Watch, Prop } from 'vue-property-decorator'
import { RouteRecord, Route } from 'vue-router' import { RouteRecord, Route } from 'vue-router'
import { Environment } from "@/environments/environment"; import { Environment } from "@/environments/environment";
import { appConfig } from '@/config/appConfig';
import NavDataService from '@/service/app/navdata-service'; import NavDataService from '@/service/app/navdata-service';
import {Subscription } from 'rxjs'; import {Subscription } from 'rxjs';
...@@ -48,6 +49,13 @@ export default class Breadcrumb extends Vue { ...@@ -48,6 +49,13 @@ export default class Breadcrumb extends Vue {
*/ */
private breadcrumbs: Array<any> = []; private breadcrumbs: Array<any> = [];
/**
* 面包屑分隔符
*
* @memberof Breadcrumb
*/
private separator:string = appConfig.breadcrumbSeparator;
/** /**
* 导航服务 * 导航服务
* *
......
...@@ -165,7 +165,7 @@ export default class AppFormGroup extends Vue { ...@@ -165,7 +165,7 @@ export default class AppFormGroup extends Vue {
const _item = ActionModel[key]; const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){ if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any; let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){ if(Object.is(_item['actiontarget'],"NONE") || Object.is(_item['actiontarget'],"")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']); dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{ }else{
if(data && Object.keys(data).length >0){ if(data && Object.keys(data).length >0){
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</ul> </ul>
<!-- 预览 --> <!-- 预览 -->
<modal v-model="dialogVisible" footer-hide width="auto" class-name='app-image-preview-model'> <modal v-model="dialogVisible" footer-hide width="auto" class-name='app-image-preview-model'>
<el-image src="dialogImageUrl"> <el-image :src="dialogImageUrl">
<div slot='error' class='image-slot'> <div slot='error' class='image-slot'>
<img src="/assets/img/picture.png"> <img src="/assets/img/picture.png">
</div> </div>
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</el-upload> </el-upload>
<!-- 预览 --> <!-- 预览 -->
<modal v-model="dialogVisible" footer-hide class-name='app-image-upload-model'> <modal v-model="dialogVisible" footer-hide class-name='app-image-upload-model'>
<el-image src="dialogImageUrl"> <el-image :src="dialogImageUrl">
<div slot='error' class='image-slot'> <div slot='error' class='image-slot'>
<i class='el-icon-picture-outline'></i> <i class='el-icon-picture-outline'></i>
</div> </div>
......
...@@ -65,7 +65,7 @@ export default class AppPicker extends Vue { ...@@ -65,7 +65,7 @@ export default class AppPicker extends Vue {
* 视图上下文 * 视图上下文
* *
* @type {*} * @type {*}
* @memberof AppFormDRUIPart * @memberof AppPicker
*/ */
@Prop() public context!: any; @Prop() public context!: any;
...@@ -73,7 +73,7 @@ export default class AppPicker extends Vue { ...@@ -73,7 +73,7 @@ export default class AppPicker extends Vue {
* 视图参数 * 视图参数
* *
* @type {*} * @type {*}
* @memberof AppFormDRUIPart * @memberof AppPicker
*/ */
@Prop() public viewparams!: any; @Prop() public viewparams!: any;
...@@ -81,15 +81,23 @@ export default class AppPicker extends Vue { ...@@ -81,15 +81,23 @@ export default class AppPicker extends Vue {
* AC参数 * AC参数
* *
* @type {*} * @type {*}
* @memberof AppFormDRUIPart * @memberof AppPicker
*/ */
@Prop({default: () => {}}) public acParams?: any; @Prop({default: () => {}}) public acParams?: any;
/**
* 外键值附加数据
*
* @type {*}
* @memberof AppPicker
*/
@Prop() public pickUpData?: string;
/** /**
* 表单服务 * 表单服务
* *
* @type {*} * @type {*}
* @memberof AppFormDRUIPart * @memberof AppPicker
*/ */
@Prop() public service?: any; @Prop() public service?: any;
...@@ -97,7 +105,7 @@ export default class AppPicker extends Vue { ...@@ -97,7 +105,7 @@ export default class AppPicker extends Vue {
* 应用实体主信息属性名称 * 应用实体主信息属性名称
* *
* @type {string} * @type {string}
* @memberof AppAutocomplete * @memberof AppPicker
*/ */
@Prop({default: 'srfmajortext'}) public deMajorField!: string; @Prop({default: 'srfmajortext'}) public deMajorField!: string;
...@@ -105,7 +113,7 @@ export default class AppPicker extends Vue { ...@@ -105,7 +113,7 @@ export default class AppPicker extends Vue {
* 应用实体主键属性名称 * 应用实体主键属性名称
* *
* @type {string} * @type {string}
* @memberof AppAutocomplete * @memberof AppPicker
*/ */
@Prop({default: 'srfkey'}) public deKeyField!: string; @Prop({default: 'srfkey'}) public deKeyField!: string;
...@@ -240,7 +248,7 @@ export default class AppPicker extends Vue { ...@@ -240,7 +248,7 @@ export default class AppPicker extends Vue {
* 输入状态 * 输入状态
* *
* @type {boolean} * @type {boolean}
* @memberof AppAutocomplete * @memberof AppPicker
*/ */
public inputState: boolean = false; public inputState: boolean = false;
...@@ -397,6 +405,7 @@ export default class AppPicker extends Vue { ...@@ -397,6 +405,7 @@ export default class AppPicker extends Vue {
if (this.name) { if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: item[this.deMajorField] }); this.$emit('formitemvaluechange', { name: this.name, value: item[this.deMajorField] });
} }
this.fillPickUpData(item);
} }
/** /**
...@@ -430,6 +439,7 @@ export default class AppPicker extends Vue { ...@@ -430,6 +439,7 @@ export default class AppPicker extends Vue {
if (this.name) { if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: '' }); this.$emit('formitemvaluechange', { name: this.name, value: '' });
} }
this.fillPickUpData();
this.$forceUpdate(); this.$forceUpdate();
} }
...@@ -672,6 +682,7 @@ export default class AppPicker extends Vue { ...@@ -672,6 +682,7 @@ export default class AppPicker extends Vue {
if (this.name) { if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: item[this.deMajorField]?item[this.deMajorField]:item["srfmajortext"] }); this.$emit('formitemvaluechange', { name: this.name, value: item[this.deMajorField]?item[this.deMajorField]:item["srfmajortext"] });
} }
this.fillPickUpData(item);
} }
} }
...@@ -752,7 +763,7 @@ export default class AppPicker extends Vue { ...@@ -752,7 +763,7 @@ export default class AppPicker extends Vue {
/** /**
* 输入过程中 * 输入过程中
* *
* @memberof AppAutocomplete * @memberof AppPicker
*/ */
public onInput($event: any) { public onInput($event: any) {
if (Object.is($event, this.value)) { if (Object.is($event, this.value)) {
...@@ -783,6 +794,34 @@ export default class AppPicker extends Vue { ...@@ -783,6 +794,34 @@ export default class AppPicker extends Vue {
appPicker.blur(); appPicker.blur();
} }
} }
/**
* 填充外键值附加数据
*
* @param {item} 数据集
* @memberof AppPicker
*/
public fillPickUpData(item?:any){
if(this.pickUpData){
let pickUpDataArray:Array<any> = this.pickUpData.split(";")
if(pickUpDataArray && pickUpDataArray.length >0){
for(let i=0;i<pickUpDataArray.length;i++){
if(item){
this.$emit("formitemvaluechange", {
name: pickUpDataArray[i],
value: item[pickUpDataArray[i]],
});
}else{
this.$emit("formitemvaluechange", {
name: pickUpDataArray[i],
value: "",
});
}
}
}
}
}
} }
......
...@@ -20,10 +20,10 @@ export default class AvueCustomForm extends Vue { ...@@ -20,10 +20,10 @@ export default class AvueCustomForm extends Vue {
/** /**
* 编辑器参数传入组件配置 * 编辑器参数传入组件配置
* *
* @type {any} * @type {*}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
@Prop() public options?: any; public options: any;
/** /**
* 是否需要转换为string类型 * 是否需要转换为string类型
...@@ -47,7 +47,7 @@ export default class AvueCustomForm extends Vue { ...@@ -47,7 +47,7 @@ export default class AvueCustomForm extends Vue {
* @type {any} * @type {any}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
@Model('change') public value: any; @Model("change") public value: any;
/** /**
* 是否将表单数据通过组件配置带入组件中 * 是否将表单数据通过组件配置带入组件中
...@@ -57,13 +57,22 @@ export default class AvueCustomForm extends Vue { ...@@ -57,13 +57,22 @@ export default class AvueCustomForm extends Vue {
*/ */
@Prop() public isFormData?: boolean; @Prop() public isFormData?: boolean;
/**
* 是否为子表单
*
* @type {boolean}
* @memberof AvueCustomForm
*/
@Prop() public isSubForm?: boolean;
/** /**
* 表单数据 * 表单数据
* *
* @type {any} * @type {*}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
@Prop() public formData: any; @Prop()
public formData?: any;
/** /**
* 表单状态 * 表单状态
...@@ -81,10 +90,12 @@ export default class AvueCustomForm extends Vue { ...@@ -81,10 +90,12 @@ export default class AvueCustomForm extends Vue {
*/ */
get formVal() { get formVal() {
let obj: any = {}; let obj: any = {};
if (this.value) { if (this.value) {
if (this.isParseString) obj = JSON.parse(this.value); if (this.isParseString) obj = JSON.parse(this.value);
else obj = this.value; else obj = this.value;
} if (this.isSubForm && obj instanceof Array)
obj = this.loadSubFormData(obj);
}
return obj; return obj;
} }
...@@ -110,7 +121,7 @@ export default class AvueCustomForm extends Vue { ...@@ -110,7 +121,7 @@ export default class AvueCustomForm extends Vue {
/** /**
* 当前组件配置设置属性 * 当前组件配置设置属性
* *
* @type {any} * @type {*}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
public formOption: any = null; public formOption: any = null;
...@@ -118,7 +129,7 @@ export default class AvueCustomForm extends Vue { ...@@ -118,7 +129,7 @@ export default class AvueCustomForm extends Vue {
/** /**
* avue-form默认配置 * avue-form默认配置
* *
* @type {any} * @type {*}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
public defaultOptions: any = { public defaultOptions: any = {
...@@ -185,22 +196,26 @@ export default class AvueCustomForm extends Vue { ...@@ -185,22 +196,26 @@ export default class AvueCustomForm extends Vue {
* *
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
public load() { public async load() {
let that: any = this; let that: any = this;
if (!this.options && this.options == null) { if (!this.options && this.options == null) {
if (this.url && this.options == null) { if (this.url && this.options == null) {
const get: Promise<any> = this.$http.get(this.url); const get: Promise<any> = this.$http.get(this.url);
get.then((response: any) => { await get.then((response: any) => {
if (response && response.data) { if (response && response.data) {
that.formOption = response.data; let options: any = response.data;
if (this.isFormData) that.getFormData(); this.transitionDicUrlCondition(options);
that.formOption = options;
if (that.isFormData) that.getFormData();
} }
}); });
} else { } else {
this.transitionDicUrlCondition(this.defaultOptions);
this.formOption = this.defaultOptions; this.formOption = this.defaultOptions;
if (this.isFormData) that.getFormData(); if (this.isFormData) that.getFormData();
} }
} else { } else {
this.transitionDicUrlCondition(this.options);
this.formOption = this.options; this.formOption = this.options;
if (this.isFormData) that.getFormData(); if (this.isFormData) that.getFormData();
} }
...@@ -239,19 +254,78 @@ export default class AvueCustomForm extends Vue { ...@@ -239,19 +254,78 @@ export default class AvueCustomForm extends Vue {
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
public setValue(value: any) { public setValue(value: any) {
if (this.isSubForm) value = this.getSubFormData(value);
if (this.isParseString) this.$emit("change", JSON.stringify(value)); if (this.isParseString) this.$emit("change", JSON.stringify(value));
else this.$emit("change", value); else this.$emit("change", value);
} }
/**
* 提取第一个属性值
*
* @memberof AvueCustomForm
* @return {Array<any>}
*/
public getSubFormData(value: any): Array<any> {
let arr: Array<any> = [];
for (let val in value) {
arr = value[val];
break;
}
return arr;
}
/**
* 加载子表单值
*
* @memberof AvueCustomForm
* @return {*}
*/
public loadSubFormData(arr: Array<any>): any {
let value: any = {};
value[this.formOption.column[0].prop] = arr;
return value;
}
/**
* 配置的下拉列表转换符号支持动态配置
*
* @memberof AvueCustomForm
* @param {*}
*/
public transitionDicUrlCondition(options: any) {
let that: any = this;
let recursive: any = function (obj: any) {
if (obj.column && obj.column.length > 0) {
obj.column.forEach((col: any) => {
if (col.dicUrl && col.dicUrl.indexOf("$") > 0) {
let g = /\${[^+]+}/;
let dicGroup = col.dicUrl.match(g);
dicGroup.forEach((dic: any) => {
col.dicUrl = col.dicUrl.replace(
dic,
that.formData[dic.substring(2, dic.length - 1)]
);
});
}
if (col.children) recursive(col.children);
if (col.group) recursive(col.group);
});
}
if (obj.children) recursive(obj.children);
if (obj.group) recursive(obj.group);
};
recursive(options);
}
/** /**
* 销毁组件(vue生命周期) * 销毁组件(vue生命周期)
* *
* @type {Subject<any>} * @type {Subject<any>}
* @memberof AvueCustomForm * @memberof AvueCustomForm
*/ */
public destroy(){ public destroy() {
if(this.formStateEvent){ if (this.formStateEvent) {
this.formStateEvent.unsubscribe(); this.formStateEvent.unsubscribe();
} }
} }
} }
......
...@@ -35,5 +35,7 @@ export const appConfig = { ...@@ -35,5 +35,7 @@ export const appConfig = {
label: 'YouYuan', label: 'YouYuan',
value: 'YouYuan', value: 'YouYuan',
}, },
] ],
// 面包屑分隔符
breadcrumbSeparator:"/"
} }
\ No newline at end of file
...@@ -401,10 +401,10 @@ export default class MDViewEngine extends ViewEngine { ...@@ -401,10 +401,10 @@ export default class MDViewEngine extends ViewEngine {
if (this.view.viewparams && Object.keys(this.view.viewparams).length > 0) { if (this.view.viewparams && Object.keys(this.view.viewparams).length > 0) {
Object.assign(arg, this.view.viewparams); Object.assign(arg, this.view.viewparams);
} }
if (this.getSearchForm() && this.view.isExpandSearchForm) { if (this.getSearchForm()) {
Object.assign(arg, this.getSearchForm().getData()); Object.assign(arg, this.getSearchForm().getData());
} }
if (this.view && this.view.$refs.searchbar && this.view.isExpandSearchForm) { if (this.view && this.view.$refs.searchbar) {
Object.assign(arg, this.view.$refs.searchbar.getData()); Object.assign(arg, this.view.$refs.searchbar.getData());
} }
if (this.view && !this.view.isExpandSearchForm) { if (this.view && !this.view.isExpandSearchForm) {
......
...@@ -194,7 +194,7 @@ export default class ViewEngine { ...@@ -194,7 +194,7 @@ export default class ViewEngine {
const _item = _this.view.toolBarModels[key]; const _item = _this.view.toolBarModels[key];
if(_item && _item['dataaccaction'] && _this.view.appUIService){ if(_item && _item['dataaccaction'] && _this.view.appUIService){
let dataActionResult:any; let dataActionResult:any;
if (_item.uiaction && (Object.is(_item.uiaction.target, 'NONE'))){ if (_item.uiaction && (Object.is(_item.uiaction.target, "NONE") || Object.is(_item.uiaction.target, ""))){
dataActionResult = _this.view.appUIService.getResourceOPPrivs(_item['dataaccaction']); dataActionResult = _this.view.appUIService.getResourceOPPrivs(_item['dataaccaction']);
}else{ }else{
if(data && Object.keys(data).length >0){ if(data && Object.keys(data).length >0){
......
...@@ -78,7 +78,11 @@ export default class WizardViewEngine extends ViewEngine { ...@@ -78,7 +78,11 @@ export default class WizardViewEngine extends ViewEngine {
*/ */
public onfinish(args: any): void { public onfinish(args: any): void {
this.view.$emit('viewdataschange', [args]); this.view.$emit('viewdataschange', [args]);
this.view.$emit('close', null); if(!this.view.viewDefaultUsage){
this.view.$emit('close', null);
}else{
this.view.$tabPageExp.onClose(this.view.$route.fullPath);
}
} }
/** /**
......
...@@ -25,6 +25,8 @@ export const Environment = { ...@@ -25,6 +25,8 @@ export const Environment = {
devMode: true, devMode: true,
// 是否开启权限认证 // 是否开启权限认证
enablePermissionValid:false, enablePermissionValid:false,
// 菜单权限模式,可选值:RT(RT模式),RESOURCE(资源模式),MINIX(混合模式),默认MINIX
menuPermissionMode:"MINIX",
// 项目模板地址 // 项目模板地址
ProjectUrl: "http://demo.ibizlab.cn/ibizr7pfstdtempl/ibizvuer7", ProjectUrl: "http://demo.ibizlab.cn/ibizr7pfstdtempl/ibizvuer7",
// 打开目标工具,可选参数:sln、mos // 打开目标工具,可选参数:sln、mos
......
...@@ -201,7 +201,7 @@ export default class ViewMessageService { ...@@ -201,7 +201,7 @@ export default class ViewMessageService {
public async getViewMessageByTag(tag:string,context:any = {},viewparam:any = {}){ public async getViewMessageByTag(tag:string,context:any = {},viewparam:any = {}){
let messageService:any = await this.getService(tag); let messageService:any = await this.getService(tag);
if(messageService.dynamicMode && Object.is(messageService.dynamicMode,"STATIC")){ if(messageService.dynamicMode && Object.is(messageService.dynamicMode,"STATIC")){
return messageService.getStaticViewMessage(); return messageService.getStaticViewMessage(context,viewparam);
}else{ }else{
return messageService.getDynamicViewMessage(tag,messageService,context,viewparam); return messageService.getDynamicViewMessage(tag,messageService,context,viewparam);
} }
...@@ -209,10 +209,15 @@ export default class ViewMessageService { ...@@ -209,10 +209,15 @@ export default class ViewMessageService {
/** /**
* 转化消息模板标题和内容 * 转化消息模板标题和内容
*
* @target {*} target 返回目标数据
* @param {*} context 应用上下文
* @param {*} viewparam 视图参数
* @param {*} item 源数据
* *
* @memberof ViewMessageService * @memberof ViewMessageService
*/ */
public translateMessageTemp(target:any,item?:any){ public translateMessageTemp(target:any,context:any,viewparam:any,item?:any){
} }
...@@ -221,7 +226,7 @@ export default class ViewMessageService { ...@@ -221,7 +226,7 @@ export default class ViewMessageService {
* *
* @memberof ViewMessageService * @memberof ViewMessageService
*/ */
public getStaticViewMessage():Array<ViewMessage>{ public getStaticViewMessage(context:any,viewparam:any):Array<ViewMessage>{
let returnViewMessage:ViewMessage ={ let returnViewMessage:ViewMessage ={
id:this.id, id:this.id,
name:this.name, name:this.name,
...@@ -236,7 +241,7 @@ export default class ViewMessageService { ...@@ -236,7 +241,7 @@ export default class ViewMessageService {
dynamicMode:this.dynamicMode, dynamicMode:this.dynamicMode,
messageType:this.messageType messageType:this.messageType
}; };
this.translateMessageTemp(returnViewMessage); this.translateMessageTemp(returnViewMessage,context,viewparam);
return [returnViewMessage]; return [returnViewMessage];
} }
...@@ -259,10 +264,11 @@ export default class ViewMessageService { ...@@ -259,10 +264,11 @@ export default class ViewMessageService {
// 启用缓存 // 启用缓存
if(isEnableCache){ if(isEnableCache){
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{ const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
const callbackKey:string = `${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`;
promise.then((result:any) =>{ promise.then((result:any) =>{
if(result.length > 0){ if(result.length > 0){
ViewMessageService.messageCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result}); ViewMessageService.messageCached.set(callbackKey,{items:result});
ViewMessageService.messageCache.delete(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`); ViewMessageService.messageCache.delete(callbackKey);
return resolve(result); return resolve(result);
}else{ }else{
return resolve([]); return resolve([]);
...@@ -271,9 +277,10 @@ export default class ViewMessageService { ...@@ -271,9 +277,10 @@ export default class ViewMessageService {
return reject(result); return reject(result);
}) })
} }
const key:string = `${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`;
// 加载完成,从本地缓存获取 // 加载完成,从本地缓存获取
if(ViewMessageService.messageCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(ViewMessageService.messageCached.get(key)){
let items:any = ViewMessageService.messageCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items; let items:any = ViewMessageService.messageCached.get(key).items;
if(items.length >0){ if(items.length >0){
if(new Date().getTime() <= messageService.getExpirationTime()){ if(new Date().getTime() <= messageService.getExpirationTime()){
return resolve(items); return resolve(items);
...@@ -282,11 +289,11 @@ export default class ViewMessageService { ...@@ -282,11 +289,11 @@ export default class ViewMessageService {
} }
if (messageService) { if (messageService) {
// 加载中,UI又需要数据,解决连续加载同一代码表问题 // 加载中,UI又需要数据,解决连续加载同一代码表问题
if(ViewMessageService.messageCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(ViewMessageService.messageCache.get(key)){
callback(context,data,tag,ViewMessageService.messageCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)); callback(context,data,tag,ViewMessageService.messageCache.get(key));
}else{ }else{
let result:Promise<any> = messageService.getItems(context,data,isloading); let result:Promise<any> = messageService.getItems(context,data,isloading);
ViewMessageService.messageCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result); ViewMessageService.messageCache.set(key,result);
messageService.setExpirationTime(new Date().getTime() + cacheTimeout); messageService.setExpirationTime(new Date().getTime() + cacheTimeout);
callback(context,data,tag,result); callback(context,data,tag,result);
} }
......
...@@ -262,6 +262,23 @@ export default class OUIndexViewBase extends Vue { ...@@ -262,6 +262,23 @@ export default class OUIndexViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof OUIndexViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof OUIndexViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -470,6 +487,16 @@ export default class OUIndexViewBase extends Vue { ...@@ -470,6 +487,16 @@ export default class OUIndexViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
......
...@@ -13,14 +13,16 @@ ...@@ -13,14 +13,16 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)"> <i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem7.caption')}}</span> <span class='caption'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem7.caption')}}</span>
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem7.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem7.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)"> <i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)">
<i class='fa fa-copy'></i> <i class='fa fa-copy'></i>
<span class='caption'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem14.caption')}}</span> <span class='caption'>{{$t('entities.sysdepartment.editviewtoolbar_toolbar.tbitem14.caption')}}</span>
...@@ -30,9 +32,11 @@ ...@@ -30,9 +32,11 @@
</div> </div>
</div> </div>
<div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class="content-container">
<div class='view-body-messages'>
</div>
<view_form <view_form
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -55,9 +59,9 @@ ...@@ -55,9 +59,9 @@
@load="form_load($event)" @load="form_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_form> </view_form>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -233,6 +237,18 @@ export default class SysDepartmentEditViewBase extends Vue { ...@@ -233,6 +237,18 @@ export default class SysDepartmentEditViewBase extends Vue {
view_form: { name: 'form', type: 'FORM' }, view_form: { name: 'form', type: 'FORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDepartmentEditViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -264,13 +280,13 @@ export default class SysDepartmentEditViewBase extends Vue { ...@@ -264,13 +280,13 @@ export default class SysDepartmentEditViewBase extends Vue {
* @memberof SysDepartmentEditView * @memberof SysDepartmentEditView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } }, tbitem3: { name: 'tbitem3', actiontarget: 'NONE', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem7: { name: 'tbitem7', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } }, tbitem7: { name: 'tbitem7', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } },
tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem14: { name: 'tbitem14', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } }, tbitem14: { name: 'tbitem14', actiontarget: 'NONE', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } },
}; };
...@@ -320,6 +336,23 @@ export default class SysDepartmentEditViewBase extends Vue { ...@@ -320,6 +336,23 @@ export default class SysDepartmentEditViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentEditViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentEditViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -533,6 +566,16 @@ export default class SysDepartmentEditViewBase extends Vue { ...@@ -533,6 +566,16 @@ export default class SysDepartmentEditViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -977,6 +1020,9 @@ export default class SysDepartmentEditViewBase extends Vue { ...@@ -977,6 +1020,9 @@ export default class SysDepartmentEditViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class='view-container degridview sys-department-grid-view'> <div class='view-container degridview sys-department-grid-view'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentgridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentgridview"></app-studioaction>
<card class='view-card view-no-caption' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption' :dis-hover="true" :bordered="false">
<div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class='content-container'>
<div style='margin-bottom: 6px;'> <div style='margin-bottom: 6px;'>
<i-input v-show="!isExpandSearchForm" v-model="query" search enter-button @on-search="onSearch($event)" class='quick-search-input' style='max-width: 400px;' placeholder="部门名称" /> <i-input v-show="!isExpandSearchForm" v-model="query" search enter-button @on-search="onSearch($event)" class='quick-search-input' style='max-width: 400px;' placeholder="部门名称" />
<div class='pull-right'> <div class='pull-right'>
...@@ -16,7 +16,8 @@ ...@@ -16,7 +16,8 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem1_opennewcreateview.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem1_opennewcreateview.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)"> <i-button v-show="toolBarModels.deuiaction1.visabled" :disabled="toolBarModels.deuiaction1.disabled" class='' @click="toolbar_click({ tag: 'deuiaction1' }, $event)">
<i class='fa fa-file-text-o'></i> <i class='fa fa-file-text-o'></i>
<span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.deuiaction1.caption')}}</span> <span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.deuiaction1.caption')}}</span>
...@@ -37,18 +38,21 @@ ...@@ -37,18 +38,21 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem6.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem6.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem8.visabled" :disabled="toolBarModels.tbitem8.disabled" class='' @click="toolbar_click({ tag: 'tbitem8' }, $event)"> <i-button v-show="toolBarModels.tbitem8.visabled" :disabled="toolBarModels.tbitem8.disabled" class='' @click="toolbar_click({ tag: 'tbitem8' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem8.caption')}}</span> <span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem8.caption')}}</span>
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem8.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem8.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<app-export-excel :item="toolBarModels.tbitem13" :caption="$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem13.caption')" @exportexcel="toolbar_click({ tag: 'tbitem13' }, $event)"></app-export-excel> <app-export-excel :item="toolBarModels.tbitem13" :caption="$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem13.caption')" @exportexcel="toolbar_click({ tag: 'tbitem13' }, $event)"></app-export-excel>
<div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem13.tip')}}</div> <div slot='content'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem13.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem19.visabled" :disabled="toolBarModels.tbitem19.disabled" class='' @click="toolbar_click({ tag: 'tbitem19' }, $event)"> <i-button v-show="toolBarModels.tbitem19.visabled" :disabled="toolBarModels.tbitem19.disabled" class='' @click="toolbar_click({ tag: 'tbitem19' }, $event)">
<i class='fa fa-filter'></i> <i class='fa fa-filter'></i>
<span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem19.caption')}}</span> <span class='caption'>{{$t('entities.sysdepartment.gridviewtoolbar_toolbar.tbitem19.caption')}}</span>
...@@ -74,6 +78,8 @@ ...@@ -74,6 +78,8 @@
@load="searchform_load($event)" @load="searchform_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_searchform> </view_searchform>
<div class='view-body-messages'>
</div>
<view_grid <view_grid
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -101,9 +107,9 @@ ...@@ -101,9 +107,9 @@
@load="grid_load($event)" @load="grid_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_grid> </view_grid>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -283,6 +289,18 @@ export default class SysDepartmentGridViewBase extends Vue { ...@@ -283,6 +289,18 @@ export default class SysDepartmentGridViewBase extends Vue {
view_searchform: { name: 'searchform', type: 'SEARCHFORM' }, view_searchform: { name: 'searchform', type: 'SEARCHFORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDepartmentGridViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.grid) {
refs.grid.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -314,23 +332,23 @@ export default class SysDepartmentGridViewBase extends Vue { ...@@ -314,23 +332,23 @@ export default class SysDepartmentGridViewBase extends Vue {
* @memberof SysDepartmentGridView * @memberof SysDepartmentGridView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem1_opennewcreateview: { name: 'tbitem1_opennewcreateview', caption: '快速新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'OpenNewCreateView', target: 'NONE' } }, tbitem1_opennewcreateview: { name: 'tbitem1_opennewcreateview', actiontarget: 'NONE', caption: '快速新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'OpenNewCreateView', target: 'NONE' } },
tbitem2: { name: 'tbitem2', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem2: { name: 'tbitem2', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
deuiaction1: { name: 'deuiaction1', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'New', target: '' } }, deuiaction1: { name: 'deuiaction1', actiontarget: 'NONE', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'New', target: '' } },
tbitem4: { name: 'tbitem4', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } }, tbitem4: { name: 'tbitem4', actiontarget: 'NONE', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } },
tbitem6: { name: 'tbitem6', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } }, tbitem6: { name: 'tbitem6', actiontarget: 'NONE', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } },
tbitem7: { name: 'tbitem7', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem7: { name: 'tbitem7', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem8: { name: 'tbitem8', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } }, tbitem8: { name: 'tbitem8', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
tbitem9: { name: 'tbitem9', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem9: { name: 'tbitem9', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem13: { name: 'tbitem13', caption: '导出', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ExportExcel', target: '' }, MaxRowCount: 1000 }, tbitem13: { name: 'tbitem13', actiontarget: 'NONE', caption: '导出', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ExportExcel', target: '' }, MaxRowCount: 1000 },
tbitem10: { name: 'tbitem10', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem10: { name: 'tbitem10', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem19: { name: 'tbitem19', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } }, tbitem19: { name: 'tbitem19', actiontarget: 'NONE', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } },
}; };
...@@ -387,6 +405,23 @@ export default class SysDepartmentGridViewBase extends Vue { ...@@ -387,6 +405,23 @@ export default class SysDepartmentGridViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentGridViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentGridViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -600,6 +635,16 @@ export default class SysDepartmentGridViewBase extends Vue { ...@@ -600,6 +635,16 @@ export default class SysDepartmentGridViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
...@@ -1478,6 +1523,9 @@ export default class SysDepartmentGridViewBase extends Vue { ...@@ -1478,6 +1523,9 @@ export default class SysDepartmentGridViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<div class="view-container dempickupview sys-department-mpickup-view"> <div class="view-container dempickupview sys-department-mpickup-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentmpickupview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentmpickupview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false">
<div class='view-top-messages'>
</div>
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<div class='view-body-messages'>
</div>
<div class="translate-contant"> <div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}"> <div class="center" :style="{width : !isShowButton ? '100%' : ''}">
<view_pickupviewpanel <view_pickupviewpanel
...@@ -58,6 +62,8 @@ ...@@ -58,6 +62,8 @@
</row> </row>
</card> </card>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -312,6 +318,23 @@ export default class SysDepartmentMPickupViewBase extends Vue { ...@@ -312,6 +318,23 @@ export default class SysDepartmentMPickupViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentMPickupViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentMPickupViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -525,6 +548,16 @@ export default class SysDepartmentMPickupViewBase extends Vue { ...@@ -525,6 +548,16 @@ export default class SysDepartmentMPickupViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -658,6 +691,9 @@ export default class SysDepartmentMPickupViewBase extends Vue { ...@@ -658,6 +691,9 @@ export default class SysDepartmentMPickupViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 是否显示按钮 * 是否显示按钮
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
.pickup-view { .pickup-view {
>.translate-contant { >.translate-contant {
overflow: auto;
flex-grow: 1; flex-grow: 1;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
......
...@@ -213,6 +213,18 @@ export default class SysDepartmentOptionViewBase extends Vue { ...@@ -213,6 +213,18 @@ export default class SysDepartmentOptionViewBase extends Vue {
view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true }, view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDepartmentOptionViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -283,6 +295,23 @@ export default class SysDepartmentOptionViewBase extends Vue { ...@@ -283,6 +295,23 @@ export default class SysDepartmentOptionViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentOptionViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentOptionViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -496,6 +525,16 @@ export default class SysDepartmentOptionViewBase extends Vue { ...@@ -496,6 +525,16 @@ export default class SysDepartmentOptionViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -625,6 +664,9 @@ export default class SysDepartmentOptionViewBase extends Vue { ...@@ -625,6 +664,9 @@ export default class SysDepartmentOptionViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
<div class='view-container depickupgridview sys-department-pickup-grid-view'> <div class='view-container depickupgridview sys-department-pickup-grid-view'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentpickupgridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentpickupgridview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :bordered="false">
<div class='view-top-messages'>
</div>
<div class='content-container pickup-grid-view'> <div class='content-container pickup-grid-view'>
<view_searchform <view_searchform
:viewState="viewState" :viewState="viewState"
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
@load="searchform_load($event)" @load="searchform_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_searchform> </view_searchform>
<view_grid <div class='view-body-messages'> </div> <view_grid
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
:context="context" :context="context"
...@@ -41,6 +43,8 @@ ...@@ -41,6 +43,8 @@
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_grid> </view_grid>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -216,6 +220,18 @@ export default class SysDepartmentPickupGridViewBase extends Vue { ...@@ -216,6 +220,18 @@ export default class SysDepartmentPickupGridViewBase extends Vue {
view_searchform: { name: 'searchform', type: 'SEARCHFORM' }, view_searchform: { name: 'searchform', type: 'SEARCHFORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDepartmentPickupGridViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.grid) {
refs.grid.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -285,6 +301,23 @@ export default class SysDepartmentPickupGridViewBase extends Vue { ...@@ -285,6 +301,23 @@ export default class SysDepartmentPickupGridViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentPickupGridViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentPickupGridViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -498,6 +531,16 @@ export default class SysDepartmentPickupGridViewBase extends Vue { ...@@ -498,6 +531,16 @@ export default class SysDepartmentPickupGridViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -675,6 +718,9 @@ export default class SysDepartmentPickupGridViewBase extends Vue { ...@@ -675,6 +718,9 @@ export default class SysDepartmentPickupGridViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 选中数据字符串 * 选中数据字符串
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<div class="view-container depickupview sys-department-pickup-view"> <div class="view-container depickupview sys-department-pickup-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentpickupview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdepartmentpickupview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false">
<div class='view-top-messages'>
</div>
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<div class='view-body-messages'>
</div>
<view_pickupviewpanel <view_pickupviewpanel
:viewState="viewState" :viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))" :viewparams="JSON.parse(JSON.stringify(viewparams))"
...@@ -25,6 +29,8 @@ ...@@ -25,6 +29,8 @@
</row> </row>
</card> </card>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -278,6 +284,23 @@ export default class SysDepartmentPickupViewBase extends Vue { ...@@ -278,6 +284,23 @@ export default class SysDepartmentPickupViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentPickupViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentPickupViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -491,6 +514,16 @@ export default class SysDepartmentPickupViewBase extends Vue { ...@@ -491,6 +514,16 @@ export default class SysDepartmentPickupViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -623,6 +656,9 @@ export default class SysDepartmentPickupViewBase extends Vue { ...@@ -623,6 +656,9 @@ export default class SysDepartmentPickupViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 选中数据的字符串 * 选中数据的字符串
......
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
<span class='caption-info'>{{$t(model.srfCaption)}}</span> <span class='caption-info'>{{$t(model.srfCaption)}}</span>
</div> </div>
<div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class='content-container'>
<div class='view-body-messages'>
</div>
<view_treeexpbar <view_treeexpbar
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -23,9 +25,9 @@ ...@@ -23,9 +25,9 @@
@load="treeexpbar_load($event)" @load="treeexpbar_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_treeexpbar> </view_treeexpbar>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -268,6 +270,23 @@ export default class SysDepartmentTreeExpViewBase extends Vue { ...@@ -268,6 +270,23 @@ export default class SysDepartmentTreeExpViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDepartmentTreeExpViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDepartmentTreeExpViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -481,6 +500,16 @@ export default class SysDepartmentTreeExpViewBase extends Vue { ...@@ -481,6 +500,16 @@ export default class SysDepartmentTreeExpViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -651,6 +680,9 @@ export default class SysDepartmentTreeExpViewBase extends Vue { ...@@ -651,6 +680,9 @@ export default class SysDepartmentTreeExpViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -13,14 +13,16 @@ ...@@ -13,14 +13,16 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <div slot='content'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)"> <i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem7.caption')}}</span> <span class='caption'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem7.caption')}}</span>
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem7.tip')}}</div> <div slot='content'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem7.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)"> <i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)">
<i class='fa fa-copy'></i> <i class='fa fa-copy'></i>
<span class='caption'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem14.caption')}}</span> <span class='caption'>{{$t('entities.sysdeptmember.editviewtoolbar_toolbar.tbitem14.caption')}}</span>
...@@ -30,9 +32,11 @@ ...@@ -30,9 +32,11 @@
</div> </div>
</div> </div>
<div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class="content-container">
<div class='view-body-messages'>
</div>
<view_form <view_form
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -55,9 +59,9 @@ ...@@ -55,9 +59,9 @@
@load="form_load($event)" @load="form_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_form> </view_form>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -233,6 +237,18 @@ export default class SysDeptMemberEditViewBase extends Vue { ...@@ -233,6 +237,18 @@ export default class SysDeptMemberEditViewBase extends Vue {
view_form: { name: 'form', type: 'FORM' }, view_form: { name: 'form', type: 'FORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDeptMemberEditViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -264,13 +280,13 @@ export default class SysDeptMemberEditViewBase extends Vue { ...@@ -264,13 +280,13 @@ export default class SysDeptMemberEditViewBase extends Vue {
* @memberof SysDeptMemberEditView * @memberof SysDeptMemberEditView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } }, tbitem3: { name: 'tbitem3', actiontarget: 'NONE', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem7: { name: 'tbitem7', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } }, tbitem7: { name: 'tbitem7', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } },
tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem14: { name: 'tbitem14', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } }, tbitem14: { name: 'tbitem14', actiontarget: 'NONE', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } },
}; };
...@@ -320,6 +336,23 @@ export default class SysDeptMemberEditViewBase extends Vue { ...@@ -320,6 +336,23 @@ export default class SysDeptMemberEditViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDeptMemberEditViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDeptMemberEditViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -533,6 +566,16 @@ export default class SysDeptMemberEditViewBase extends Vue { ...@@ -533,6 +566,16 @@ export default class SysDeptMemberEditViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -977,6 +1020,9 @@ export default class SysDeptMemberEditViewBase extends Vue { ...@@ -977,6 +1020,9 @@ export default class SysDeptMemberEditViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<div class='view-container degridview sys-dept-member-grid-view'> <div class='view-container degridview sys-dept-member-grid-view'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdeptmembergridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysdeptmembergridview"></app-studioaction>
<card class='view-card view-no-caption' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption' :dis-hover="true" :bordered="false">
<div class='content-container'>
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class='content-container'>
<div style='margin-bottom: 6px;'> <div style='margin-bottom: 6px;'>
<div class='pull-right'> <div class='pull-right'>
<div class='toolbar-container'> <div class='toolbar-container'>
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysdeptmember.gridviewtoolbar_toolbar.deuiaction1.tip')}}</div> <div slot='content'>{{$t('entities.sysdeptmember.gridviewtoolbar_toolbar.deuiaction1.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem8.visabled" :disabled="toolBarModels.tbitem8.disabled" class='' @click="toolbar_click({ tag: 'tbitem8' }, $event)"> <i-button v-show="toolBarModels.tbitem8.visabled" :disabled="toolBarModels.tbitem8.disabled" class='' @click="toolbar_click({ tag: 'tbitem8' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysdeptmember.gridviewtoolbar_toolbar.tbitem8.caption')}}</span> <span class='caption'>{{$t('entities.sysdeptmember.gridviewtoolbar_toolbar.tbitem8.caption')}}</span>
...@@ -39,6 +40,8 @@ ...@@ -39,6 +40,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class='view-body-messages'>
</div>
<view_grid <view_grid
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -66,9 +69,9 @@ ...@@ -66,9 +69,9 @@
@load="grid_load($event)" @load="grid_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_grid> </view_grid>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -247,6 +250,18 @@ export default class SysDeptMemberGridViewBase extends Vue { ...@@ -247,6 +250,18 @@ export default class SysDeptMemberGridViewBase extends Vue {
view_grid: { name: 'grid', type: 'GRID' }, view_grid: { name: 'grid', type: 'GRID' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysDeptMemberGridViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.grid) {
refs.grid.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -278,14 +293,14 @@ export default class SysDeptMemberGridViewBase extends Vue { ...@@ -278,14 +293,14 @@ export default class SysDeptMemberGridViewBase extends Vue {
* @memberof SysDeptMemberGridView * @memberof SysDeptMemberGridView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem24: { name: 'tbitem24', caption: '行编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ToggleRowEdit', target: '' } }, tbitem24: { name: 'tbitem24', actiontarget: 'NONE', caption: '行编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ToggleRowEdit', target: '' } },
tbitem25: { name: 'tbitem25', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'NewRow', target: '' } }, tbitem25: { name: 'tbitem25', actiontarget: 'NONE', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'NewRow', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '保存行', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'SaveRow', target: '' } }, deuiaction1: { name: 'deuiaction1', actiontarget: 'NONE', caption: '保存行', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'SaveRow', target: '' } },
tbitem26: { name: 'tbitem26', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem26: { name: 'tbitem26', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem8: { name: 'tbitem8', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } }, tbitem8: { name: 'tbitem8', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
}; };
...@@ -341,6 +356,23 @@ export default class SysDeptMemberGridViewBase extends Vue { ...@@ -341,6 +356,23 @@ export default class SysDeptMemberGridViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysDeptMemberGridViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysDeptMemberGridViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -554,6 +586,16 @@ export default class SysDeptMemberGridViewBase extends Vue { ...@@ -554,6 +586,16 @@ export default class SysDeptMemberGridViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
...@@ -1098,6 +1140,9 @@ export default class SysDeptMemberGridViewBase extends Vue { ...@@ -1098,6 +1140,9 @@ export default class SysDeptMemberGridViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -13,14 +13,16 @@ ...@@ -13,14 +13,16 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <div slot='content'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)"> <i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem7.caption')}}</span> <span class='caption'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem7.caption')}}</span>
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem7.tip')}}</div> <div slot='content'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem7.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)"> <i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)">
<i class='fa fa-copy'></i> <i class='fa fa-copy'></i>
<span class='caption'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem14.caption')}}</span> <span class='caption'>{{$t('entities.sysemployee.editviewtoolbar_toolbar.tbitem14.caption')}}</span>
...@@ -30,9 +32,11 @@ ...@@ -30,9 +32,11 @@
</div> </div>
</div> </div>
<div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class="content-container">
<div class='view-body-messages'>
</div>
<view_form <view_form
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -55,9 +59,9 @@ ...@@ -55,9 +59,9 @@
@load="form_load($event)" @load="form_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_form> </view_form>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -233,6 +237,18 @@ export default class SysEmployeeEditViewBase extends Vue { ...@@ -233,6 +237,18 @@ export default class SysEmployeeEditViewBase extends Vue {
view_form: { name: 'form', type: 'FORM' }, view_form: { name: 'form', type: 'FORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysEmployeeEditViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -264,13 +280,13 @@ export default class SysEmployeeEditViewBase extends Vue { ...@@ -264,13 +280,13 @@ export default class SysEmployeeEditViewBase extends Vue {
* @memberof SysEmployeeEditView * @memberof SysEmployeeEditView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } }, tbitem3: { name: 'tbitem3', actiontarget: 'NONE', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem7: { name: 'tbitem7', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } }, tbitem7: { name: 'tbitem7', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } },
tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem14: { name: 'tbitem14', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } }, tbitem14: { name: 'tbitem14', actiontarget: 'NONE', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } },
}; };
...@@ -320,6 +336,23 @@ export default class SysEmployeeEditViewBase extends Vue { ...@@ -320,6 +336,23 @@ export default class SysEmployeeEditViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysEmployeeEditViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysEmployeeEditViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -533,6 +566,16 @@ export default class SysEmployeeEditViewBase extends Vue { ...@@ -533,6 +566,16 @@ export default class SysEmployeeEditViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -977,6 +1020,9 @@ export default class SysEmployeeEditViewBase extends Vue { ...@@ -977,6 +1020,9 @@ export default class SysEmployeeEditViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<div class="view-container dempickupview sys-employee-mpickup-view"> <div class="view-container dempickupview sys-employee-mpickup-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeempickupview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeempickupview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false">
<div class='view-top-messages'>
</div>
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<div class='view-body-messages'>
</div>
<div class="translate-contant"> <div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}"> <div class="center" :style="{width : !isShowButton ? '100%' : ''}">
<view_pickupviewpanel <view_pickupviewpanel
...@@ -58,6 +62,8 @@ ...@@ -58,6 +62,8 @@
</row> </row>
</card> </card>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -312,6 +318,23 @@ export default class SysEmployeeMPickupViewBase extends Vue { ...@@ -312,6 +318,23 @@ export default class SysEmployeeMPickupViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysEmployeeMPickupViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysEmployeeMPickupViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -525,6 +548,16 @@ export default class SysEmployeeMPickupViewBase extends Vue { ...@@ -525,6 +548,16 @@ export default class SysEmployeeMPickupViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -658,6 +691,9 @@ export default class SysEmployeeMPickupViewBase extends Vue { ...@@ -658,6 +691,9 @@ export default class SysEmployeeMPickupViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 是否显示按钮 * 是否显示按钮
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
.pickup-view { .pickup-view {
>.translate-contant { >.translate-contant {
overflow: auto;
flex-grow: 1; flex-grow: 1;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
......
...@@ -213,6 +213,18 @@ export default class SysEmployeeOptionViewBase extends Vue { ...@@ -213,6 +213,18 @@ export default class SysEmployeeOptionViewBase extends Vue {
view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true }, view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysEmployeeOptionViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -283,6 +295,23 @@ export default class SysEmployeeOptionViewBase extends Vue { ...@@ -283,6 +295,23 @@ export default class SysEmployeeOptionViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysEmployeeOptionViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysEmployeeOptionViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -496,6 +525,16 @@ export default class SysEmployeeOptionViewBase extends Vue { ...@@ -496,6 +525,16 @@ export default class SysEmployeeOptionViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -625,6 +664,9 @@ export default class SysEmployeeOptionViewBase extends Vue { ...@@ -625,6 +664,9 @@ export default class SysEmployeeOptionViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
<div class='view-container depickupgridview sys-employee-pickup-grid-view'> <div class='view-container depickupgridview sys-employee-pickup-grid-view'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeepickupgridview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeepickupgridview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :bordered="false">
<div class='view-top-messages'>
</div>
<div class='content-container pickup-grid-view'> <div class='content-container pickup-grid-view'>
<view_searchform <view_searchform
:viewState="viewState" :viewState="viewState"
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
@load="searchform_load($event)" @load="searchform_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_searchform> </view_searchform>
<view_grid <div class='view-body-messages'> </div> <view_grid
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
:context="context" :context="context"
...@@ -41,6 +43,8 @@ ...@@ -41,6 +43,8 @@
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_grid> </view_grid>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -216,6 +220,18 @@ export default class SysEmployeePickupGridViewBase extends Vue { ...@@ -216,6 +220,18 @@ export default class SysEmployeePickupGridViewBase extends Vue {
view_searchform: { name: 'searchform', type: 'SEARCHFORM' }, view_searchform: { name: 'searchform', type: 'SEARCHFORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysEmployeePickupGridViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.grid) {
refs.grid.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -285,6 +301,23 @@ export default class SysEmployeePickupGridViewBase extends Vue { ...@@ -285,6 +301,23 @@ export default class SysEmployeePickupGridViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysEmployeePickupGridViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysEmployeePickupGridViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -498,6 +531,16 @@ export default class SysEmployeePickupGridViewBase extends Vue { ...@@ -498,6 +531,16 @@ export default class SysEmployeePickupGridViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -675,6 +718,9 @@ export default class SysEmployeePickupGridViewBase extends Vue { ...@@ -675,6 +718,9 @@ export default class SysEmployeePickupGridViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 选中数据字符串 * 选中数据字符串
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<div class="view-container depickupview sys-employee-pickup-view"> <div class="view-container depickupview sys-employee-pickup-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeepickupview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="sysemployeepickupview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false">
<div class='view-top-messages'>
</div>
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<div class='view-body-messages'>
</div>
<view_pickupviewpanel <view_pickupviewpanel
:viewState="viewState" :viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))" :viewparams="JSON.parse(JSON.stringify(viewparams))"
...@@ -25,6 +29,8 @@ ...@@ -25,6 +29,8 @@
</row> </row>
</card> </card>
</div> </div>
<div class='view-bottom-messages'>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -278,6 +284,23 @@ export default class SysEmployeePickupViewBase extends Vue { ...@@ -278,6 +284,23 @@ export default class SysEmployeePickupViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysEmployeePickupViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysEmployeePickupViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -491,6 +514,16 @@ export default class SysEmployeePickupViewBase extends Vue { ...@@ -491,6 +514,16 @@ export default class SysEmployeePickupViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -623,6 +656,9 @@ export default class SysEmployeePickupViewBase extends Vue { ...@@ -623,6 +656,9 @@ export default class SysEmployeePickupViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
* 选中数据的字符串 * 选中数据的字符串
......
...@@ -13,14 +13,16 @@ ...@@ -13,14 +13,16 @@
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem3.tip')}}</div> <div slot='content'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem3.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)"> <i-button v-show="toolBarModels.tbitem7.visabled" :disabled="toolBarModels.tbitem7.disabled" class='' @click="toolbar_click({ tag: 'tbitem7' }, $event)">
<i class='fa fa-remove'></i> <i class='fa fa-remove'></i>
<span class='caption'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem7.caption')}}</span> <span class='caption'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem7.caption')}}</span>
</i-button> </i-button>
<div slot='content'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem7.tip')}}</div> <div slot='content'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem7.tip')}}</div>
</tooltip> </tooltip>
<span class='seperator'>|</span> <tooltip :transfer="true" :max-width="600"> <span class='seperator'>|</span>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)"> <i-button v-show="toolBarModels.tbitem14.visabled" :disabled="toolBarModels.tbitem14.disabled" class='' @click="toolbar_click({ tag: 'tbitem14' }, $event)">
<i class='fa fa-copy'></i> <i class='fa fa-copy'></i>
<span class='caption'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem14.caption')}}</span> <span class='caption'>{{$t('entities.sysorganization.editviewtoolbar_toolbar.tbitem14.caption')}}</span>
...@@ -30,9 +32,11 @@ ...@@ -30,9 +32,11 @@
</div> </div>
</div> </div>
<div class="content-container">
<div class='view-top-messages'> <div class='view-top-messages'>
</div> </div>
<div class="content-container">
<div class='view-body-messages'>
</div>
<view_form <view_form
:viewState="viewState" :viewState="viewState"
:viewparams="viewparams" :viewparams="viewparams"
...@@ -55,9 +59,9 @@ ...@@ -55,9 +59,9 @@
@load="form_load($event)" @load="form_load($event)"
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_form> </view_form>
</div>
<div class='view-bottom-messages'> <div class='view-bottom-messages'>
</div> </div>
</div>
</card> </card>
</div> </div>
</template> </template>
...@@ -233,6 +237,18 @@ export default class SysOrganizationEditViewBase extends Vue { ...@@ -233,6 +237,18 @@ export default class SysOrganizationEditViewBase extends Vue {
view_form: { name: 'form', type: 'FORM' }, view_form: { name: 'form', type: 'FORM' },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysOrganizationEditViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -264,13 +280,13 @@ export default class SysOrganizationEditViewBase extends Vue { ...@@ -264,13 +280,13 @@ export default class SysOrganizationEditViewBase extends Vue {
* @memberof SysOrganizationEditView * @memberof SysOrganizationEditView
*/ */
public toolBarModels: any = { public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } }, tbitem3: { name: 'tbitem3', actiontarget: 'NONE', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem6: { name: 'tbitem6', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem7: { name: 'tbitem7', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } }, tbitem7: { name: 'tbitem7', actiontarget: 'NONE', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'RemoveAndExit', target: 'SINGLEKEY' } },
tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, tbitem8: { name: 'tbitem8', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } },
tbitem14: { name: 'tbitem14', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } }, tbitem14: { name: 'tbitem14', actiontarget: 'NONE', caption: '拷贝', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY' } },
}; };
...@@ -320,6 +336,23 @@ export default class SysOrganizationEditViewBase extends Vue { ...@@ -320,6 +336,23 @@ export default class SysOrganizationEditViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysOrganizationEditViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysOrganizationEditViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -533,6 +566,16 @@ export default class SysOrganizationEditViewBase extends Vue { ...@@ -533,6 +566,16 @@ export default class SysOrganizationEditViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -977,6 +1020,9 @@ export default class SysOrganizationEditViewBase extends Vue { ...@@ -977,6 +1020,9 @@ export default class SysOrganizationEditViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
......
...@@ -213,6 +213,18 @@ export default class SysOrganizationOptionViewBase extends Vue { ...@@ -213,6 +213,18 @@ export default class SysOrganizationOptionViewBase extends Vue {
view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true }, view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true },
}; };
/**
* 视图刷新
*
* @param {*} args
* @memberof SysOrganizationOptionViewBase
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.form) {
refs.form.refresh();
}
}
/** /**
* 计数器刷新 * 计数器刷新
* *
...@@ -283,6 +295,23 @@ export default class SysOrganizationOptionViewBase extends Vue { ...@@ -283,6 +295,23 @@ export default class SysOrganizationOptionViewBase extends Vue {
*/ */
public serviceStateEvent: Subscription | undefined; public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof SysOrganizationOptionViewBase
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof SysOrganizationOptionViewBase
*/
public portletStateEvent: Subscription | undefined;
/** /**
* 应用上下文 * 应用上下文
* *
...@@ -496,6 +525,16 @@ export default class SysOrganizationOptionViewBase extends Vue { ...@@ -496,6 +525,16 @@ export default class SysOrganizationOptionViewBase extends Vue {
}); });
} }
}); });
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
} }
...@@ -625,6 +664,9 @@ export default class SysOrganizationOptionViewBase extends Vue { ...@@ -625,6 +664,9 @@ export default class SysOrganizationOptionViewBase extends Vue {
} }
}) })
} }
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
} }
/** /**
......
...@@ -47,12 +47,21 @@ export const getLocalData = (state: any) => () => { ...@@ -47,12 +47,21 @@ export const getLocalData = (state: any) => () => {
* @param state * @param state
*/ */
export const getAppData = (state: any) => () => { export const getAppData = (state: any) => () => {
if(!state.appdata){
state.appdata = {};
}
let result:any = JSON.parse(JSON.stringify(state.appdata)); let result:any = JSON.parse(JSON.stringify(state.appdata));
let copyContext:any = result.context?result.context:{};
if(state.localdata && Object.keys(state.localdata).length >0){ if(state.localdata && Object.keys(state.localdata).length >0){
let copyContext:any = result.context?result.context:{};
Object.assign(copyContext,state.localdata); Object.assign(copyContext,state.localdata);
result.context = copyContext; }else if(localStorage.getItem('localdata')){
try{
Object.assign(copyContext,JSON.parse(localStorage.getItem('localdata') as string));
}catch(error){
console.warn(error);
}
} }
result.context = copyContext;
return result; return result;
} }
......
...@@ -124,11 +124,14 @@ ...@@ -124,11 +124,14 @@
// flex-grow: 1; // flex-grow: 1;
height: calc(100% - 74px); height: calc(100% - 74px);
padding: 0px; padding: 0px;
display: flex;
flex-direction: column;
> .content-container { > .content-container {
height: 100%; height: 100%;
display: flex; display: flex;
margin: 0; margin: 0;
flex-direction: column; flex-direction: column;
overflow: auto;
} }
} }
} }
......
import { Store } from 'vuex'; import { Store } from 'vuex';
import AuthService from '@/authservice/auth-service';
/** /**
* 界面服务基类 * 界面服务基类
...@@ -63,6 +64,9 @@ export default class UIService { ...@@ -63,6 +64,9 @@ export default class UIService {
* @memberof UIService * @memberof UIService
*/ */
public getResourceOPPrivs(tag:any){ public getResourceOPPrivs(tag:any){
if(!this.authService) {
this.authService = new AuthService(this.getStore());
}
return this.authService.getResourcePermission(this.authService.sysOPPrivsMap.get(tag))?1:0; return this.authService.getResourcePermission(this.authService.sysOPPrivsMap.get(tag))?1:0;
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册