提交 24931140 编写于 作者: KK's avatar KK

update 编辑器 导航上下文、导航参数

上级 2f519bf9
......@@ -79,6 +79,39 @@
*/
@Prop() public type!: string;
/**
* 导航参数
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateParam?: any;
/**
* 导航上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateContext?: any;
/**
* 应用上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected context?: any;
/**
* 是否缓存
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: true }) protected isCache?: boolean;
public created() {
if (this.tag && this.type) {
if (Object.is(this.type, "dynamic")) {
......@@ -91,7 +124,12 @@
this.options = [];
});
} else {
this.options = this.$store.getters.getCodeListItems(this.tag);
// 处理导航参数、上下文参数
let _context: any = {};
let _queryParam: any = {};
Object.assign(_context,this.context,this.navigateContext);
Object.assign(_queryParam,this.navigateParam);
this.options = this.$store.getters.getCodeListItems(this.tag ,this.isCache, { ..._context }, _queryParam);
}
}
}
......
......@@ -20,250 +20,270 @@ import { Subject, Subscription } from "rxjs";
@Component({})
export default class AppMobMpicker extends Vue {
/**
* 表单数据
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public data!: any;
/**
* 表单数据
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public data!: any;
/**
* 是否启用
*
* @type {boolean}
* @memberof AppMobMpicker
*/
@Prop() public disabled?: boolean;
/**
* 是否启用
*
* @type {boolean}
* @memberof AppMobMpicker
*/
@Prop() public disabled?: boolean;
/**
* 值
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public value?: any;
/**
* 值
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public value?: any;
/**
* 源数组
* @type {any[]}
* @memberof AppMobMpicker
*/
public items: any[] = [];
/**
* 源数组
* @type {any[]}
* @memberof AppMobMpicker
*/
public items: any[] = [];
/**
* 属性项名称
*
* @type {string}
* @memberof AppMobMpicker
*/
@Prop() public name!: string;
/**
* 属性项名称
*
* @type {string}
* @memberof AppMobMpicker
*/
@Prop() public name!: string;
/**
* 视图上下文
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public context!: any;
/**
* 视图上下文
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public viewparams!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public viewparams!: any;
/**
* 视图参数(如:视图name,title,width,height)
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public pickupView?: any;
/**
* 视图参数(如:视图name,title,width,height)
*
* @type {*}
* @memberof AppMobMpicker
*/
@Prop() public pickupView?: any;
/**
* 导航参数
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateParam?: any;
/**
* 值
*
* @type {*}
* @memberof AppMobMpicker
*/
get curValue() {
if (this.value) {
return JSON.parse(this.value);
}
return [];
}
/**
* 导航上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateContext?: any;
/**
* 删除
*
* @type {*}
* @memberof AppMobMpicker
*/
public remove(index: number) {
let datas: any[] = JSON.parse(this.value);
datas.splice(index, 1);
if (this.name) {
this.$emit("formitemvaluechange", {
name: this.name,
value: datas.length > 0 ? JSON.stringify(datas) : null
});
/**
* 值
*
* @type {*}
* @memberof AppMobMpicker
*/
get curValue() {
if (this.value) {
return JSON.parse(this.value);
}
return [];
}
}
/**
* 打开视图
*/
public openView($event: any): void {
if (this.disabled) {
return;
}
// 公共参数处理
let data: any = {};
const bcancel: boolean = this.handlePublicParams(data);
if (!bcancel) {
return;
/**
* 删除
*
* @type {*}
* @memberof AppMobMpicker
*/
public remove(index: number) {
let datas: any[] = JSON.parse(this.value);
datas.splice(index, 1);
if (this.name) {
this.$emit("formitemvaluechange", {
name: this.name,
value: datas.length > 0 ? JSON.stringify(datas) : null
});
}
}
// 参数处理
const view = { ...this.pickupView };
let _context = data.context;
let _param = data.param;
// 判断打开方式
if (view.placement && !Object.is(view.placement, "")) {
if (Object.is(view.placement, "POPOVER")) {
this.openPopOver($event, view, _context, data);
/**
* 打开视图
*/
public openView($event: any): void {
if (this.disabled) {
return;
}
// 公共参数处理
let data: any = {};
const bcancel: boolean = this.handlePublicParams(data);
if (!bcancel) {
return;
}
// 参数处理
const view = { ...this.pickupView };
let _context = data.context;
let _param = data.param;
// 判断打开方式
if (view.placement && !Object.is(view.placement, "")) {
if (Object.is(view.placement, "POPOVER")) {
this.openPopOver($event, view, _context, data);
} else {
this.openDrawer(view, _context, data);
}
} else {
this.openDrawer(view, _context, data);
this.openPopupModal(view, _context, _param);
}
} else {
this.openPopupModal(view, _context, _param);
}
}
/**
* 模态模式打开视图
*
* @private
* @param {*} view
* @param {*} data
* @memberof AppMobMpicker
*/
private async openPopupModal(view: any, context: any, param: any): Promise<any> {
const result: any = await this.$appmodal.openModal(view, context, param);
if (result || Object.is(result.ret, 'OK')) {
this.openViewClose(result);
}
}
/**
* 模态模式打开视图
* 气泡卡片模式打开
*
* @private
* @param {*} $event
* @param {*} view
* @param {*} data
* @memberof AppMobMpicker
*/
private async openPopupModal(view: any, context: any, param: any): Promise<any> {
const result: any = await this.$appmodal.openModal(view, context, param);
if (result || Object.is(result.ret, 'OK')) {
this.openViewClose(result);
}
private openPopOver($event: any, view: any, context: any, param: any): void {
// let container: Subject<any> = this.$apppopover.openPop($event, view, context, param);
// container.subscribe((result: any) => {
// if (!result || !Object.is(result.ret, 'OK')) {
// return;
// }
// this.openViewClose(result);
// });
}
/**
* 气泡卡片模式打开
*
* @private
* @param {*} $event
* @param {*} view
* @param {*} data
* @memberof AppMobMpicker
*/
private openPopOver($event: any, view: any, context: any, param: any): void {
// let container: Subject<any> = this.$apppopover.openPop($event, view, context, param);
// container.subscribe((result: any) => {
// if (!result || !Object.is(result.ret, 'OK')) {
// return;
// }
// this.openViewClose(result);
// });
}
/**
* 抽屉模式打开视图
*
* @private
* @param {*} view
* @param {*} data
* @memberof AppMobMpicker
*/
private async openDrawer(view: any, context: any, param: any): Promise<any> {
let container: Subject<any> = await this.$appdrawer.openDrawer(
view,
context,
param
);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, "OK")) {
return;
}
this.openViewClose(result);
});
}
/**
* 独立里面弹出
*
* @private
* @param {string} url
* @memberof AppMobMpicker
*/
private openPopupApp(url: string): void {
window.open(url, "_blank");
}
/**
* 抽屉模式打开视图
*
* @private
* @param {*} view
* @param {*} data
* @memberof AppMobMpicker
*/
private async openDrawer(view: any, context: any, param: any): Promise<any> {
let container: Subject<any> = await this.$appdrawer.openDrawer(
view,
context,
param
);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, "OK")) {
return;
}
this.openViewClose(result);
});
}
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppMobMpicker
*/
public handlePublicParams(arg: any): boolean {
// if (!this.itemParam) {
// return true;
// }
// if (!this.data) {
// this.$notify({ type: "danger", message: "表单数据异常!" });
// return false;
// }
// 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams));
arg.context = JSON.parse(JSON.stringify(this.context));
// 附加参数处理
// if (this.itemParam.context) {
// let _context = this.$util.formatData(this.data,this.itemParam.context);
// Object.assign(arg.context, {});
// }
// if (this.itemParam.param) {
// let _param = this.$util.formatData(this.data,this.itemParam.param);
// Object.assign(arg.param, {});
// }
// if (this.itemParam.parentdata) {
// let _parentdata = this.$util.formatData(this.data,this.itemParam.parentdata);
// Object.assign(arg.param, {});
// }
return true;
}
/**
* 独立里面弹出
*
* @private
* @param {string} url
* @memberof AppMobMpicker
*/
private openPopupApp(url: string): void {
window.open(url, "_blank");
}
/**
* 打开页面关闭
*
* @param {*} result
* @memberof AppMobMpicker
*/
public openViewClose(result: any) {
let datas: any = [];
if (result.datas && Array.isArray(result.datas)) {
result.datas.forEach((data: any) => {
datas.push({ text: data.srfmajortext, value: data.srfkey });
});
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppMobMpicker
*/
public handlePublicParams(arg: any): boolean {
// if (!this.itemParam) {
// return true;
// }
// if (!this.data) {
// this.$notify({ type: "danger", message: "表单数据异常!" });
// return false;
// }
// 合并表单参数
let _context: any = {};
let _params: any = {};
Object.assign(_context,this.context,this.navigateContext);
Object.assign(_params,this.viewparams,this.navigateParam);
arg.param = _params;
arg.context = _context;
// 附加参数处理
// if (this.itemParam.context) {
// let _context = this.$util.formatData(this.data,this.itemParam.context);
// Object.assign(arg.context, {});
// }
// if (this.itemParam.param) {
// let _param = this.$util.formatData(this.data,this.itemParam.param);
// Object.assign(arg.param, {});
// }
// if (this.itemParam.parentdata) {
// let _parentdata = this.$util.formatData(this.data,this.itemParam.parentdata);
// Object.assign(arg.param, {});
// }
return true;
}
if (this.name) {
this.$emit("formitemvaluechange", {
name: this.name,
value: datas.length > 0 ? JSON.stringify(datas) : null
});
/**
* 打开页面关闭
*
* @param {*} result
* @memberof AppMobMpicker
*/
public openViewClose(result: any) {
let datas: any = [];
if (result.datas && Array.isArray(result.datas)) {
result.datas.forEach((data: any) => {
datas.push({ text: data.srfmajortext, value: data.srfkey });
});
}
if (this.name) {
this.$emit("formitemvaluechange", {
name: this.name,
value: datas.length > 0 ? JSON.stringify(datas) : null
});
}
}
}
}
</script>
......
......@@ -168,6 +168,22 @@ export default class AppPicker extends Vue {
*/
@Model('change') public value?: any;
/**
* 导航参数
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateParam?: any;
/**
* 导航上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateContext?: any;
/**
* 当前值
*
......@@ -686,8 +702,12 @@ export default class AppPicker extends Vue {
return false;
}
// 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams));
arg.context = JSON.parse(JSON.stringify(this.context));
let _context: any = {};
let _params: any = {};
Object.assign(_context,this.context,this.navigateContext);
Object.assign(_params,this.viewparams,this.navigateParam);
arg.param = JSON.parse(JSON.stringify(_params));
arg.context = JSON.parse(JSON.stringify(_context));
// 附加参数处理
if (this.itemParam.context) {
// let _context = this.$util.formatData(this.data,this.itemParam.context);
......
......@@ -144,6 +144,22 @@ export default class AppSelectDropDown extends Vue {
*/
@Model('change') public value?: any;
/**
* 导航参数
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateParam?: any;
/**
* 导航上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateContext?: any;
/**
* 当前值
*
......@@ -632,8 +648,12 @@ export default class AppSelectDropDown extends Vue {
return false;
}
// 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams));
arg.context = JSON.parse(JSON.stringify(this.context));
let _context: any = {};
let _params: any = {};
Object.assign(_context,this.context,this.navigateContext);
Object.assign(_params,this.viewparams,this.navigateParam);
arg.param = JSON.parse(JSON.stringify(_params));
arg.context = JSON.parse(JSON.stringify(_context));
// 附加参数处理
if (this.itemParam.context) {
......
......@@ -118,6 +118,22 @@ export default class AppSelect extends Vue {
*/
@Prop({ default: {} }) protected context?: any;
/**
* 导航参数
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateParam?: any;
/**
* 导航上下文
*
* @type {*}
* @memberof AppSelect
*/
@Prop({ default: {} }) protected navigateContext?: any;
/**
* 是否缓存
*
......@@ -174,7 +190,12 @@ export default class AppSelect extends Vue {
if (!this.isCached) {
Loading.show(this.$t('app.loadding'));
}
let response: any = await this.codeListService.getItems(this.tag, this.isCache, { ...this.context }, this.queryParam);
// 处理导航参数、上下文参数
let _context: any = {};
let _queryParam: any = {};
Object.assign(_context,this.context,this.navigateContext);
Object.assign(_queryParam,this.queryParam,this.navigateParam);
let response: any = await this.codeListService.getItems(this.tag, this.isCache, { ..._context }, _queryParam);
if (!this.isCached) {
Loading.hidden();
}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册