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

lab_qyk 发布系统代码

上级 096ce82b
## v7.0.0-alpha.8 [2020-6-4]
### Bug修复
修复树右键菜单事件传值bug
修复树节点图标样式
修复viewdata和viewparams解析不同步
修复界面行为多主键分隔符由";"改为","
修复多层导航失效
数据选择,自动填充编辑器参数处理,动态代码表编辑器参数
修复富文本国际化bug
修复坐标轴的自定义参数
修复分页面板配置导航参数
修复实体处理逻辑
修复应用级context对象特性丢失的问题
修复新建逻辑
修复动态代码表传递上下文、参数逻辑
### 功能新增及优化
#### 模板
树选择双击
列表快速分组和快速搜索表单
数据视图快速分组和快速搜索表单
日历图例、日历快速分组和批处理工具栏
实体国际化路径调整
面板界面行为支持
列表,数据视图下拉加载
增加图表名称代码表识别、雷达图支持
uaa菜单权限
增加数据看板动态模型数据存库
应用样式调整
#### 基础文件
人员选择标准控件样式调整
应用样式调整
## v7.0.0-alpha.7 [2020-5-28] ## v7.0.0-alpha.7 [2020-5-28]
### Bug修复 ### Bug修复
...@@ -219,6 +281,4 @@ ...@@ -219,6 +281,4 @@
## v7.0.0-alpha.1 [2020-4-29] ## v7.0.0-alpha.1 [2020-4-29]
初始化文件 初始化文件
\ No newline at end of file
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
"element-ui": "^2.13.0", "element-ui": "^2.13.0",
"file-saver": "^2.0.2", "file-saver": "^2.0.2",
"font-awesome": "^4.7.0", "font-awesome": "^4.7.0",
"ibiz-gantt-elastic": "^1.0.15", "ibiz-gantt-elastic": "^1.0.16",
"ibiz-vue-lib": "^0.1.10", "ibiz-vue-lib": "^0.1.10",
"interactjs": "^1.9.4", "interactjs": "^1.9.4",
"moment": "^2.24.0", "moment": "^2.24.0",
......
...@@ -76,6 +76,7 @@ import AppDepartmentSelect from './components/app-department-select/app-departme ...@@ -76,6 +76,7 @@ import AppDepartmentSelect from './components/app-department-select/app-departme
import IBizGroupSelect from './components/ibiz-group-select/ibiz-group-select.vue' import IBizGroupSelect from './components/ibiz-group-select/ibiz-group-select.vue'
import IBizGroupPicker from './components/ibiz-group-picker/ibiz-group-picker.vue' import IBizGroupPicker from './components/ibiz-group-picker/ibiz-group-picker.vue'
import AppWFApproval from './components/app-wf-approval/app-wf-approval.vue' import AppWFApproval from './components/app-wf-approval/app-wf-approval.vue'
import Breadcrumb from './components/app-breadcrumb/app-breadcrumb.vue';
// 全局挂载UI实体服务注册中心 // 全局挂载UI实体服务注册中心
window['uiServiceRegister'] = uiServiceRegister; window['uiServiceRegister'] = uiServiceRegister;
...@@ -161,5 +162,6 @@ export const AppComponents = { ...@@ -161,5 +162,6 @@ export const AppComponents = {
v.component('ibiz-group-select',IBizGroupSelect); v.component('ibiz-group-select',IBizGroupSelect);
v.component('ibiz-group-picker',IBizGroupPicker); v.component('ibiz-group-picker',IBizGroupPicker);
v.component('app-wf-approval',AppWFApproval); v.component('app-wf-approval',AppWFApproval);
v.component('app-breadcrumb',Breadcrumb);
}, },
}; };
\ No newline at end of file
...@@ -173,29 +173,22 @@ export default class AppAutocomplete extends Vue { ...@@ -173,29 +173,22 @@ export default class AppAutocomplete extends Vue {
* @param callback * @param callback
*/ */
public onSearch(query: any, callback: any): void { public onSearch(query: any, callback: any): void {
// 公共参数处理
let data: any = {};
const bcancel: boolean = this.handlePublicParams(data);
if (!bcancel) {
return;
}
// 参数处理
let _context = data.context;
let _param = data.param;
// 处理搜索参数 // 处理搜索参数
query = !query ? '' : query; query = !query ? '' : query;
if (!this.inputState && Object.is(query, this.value)) { if (!this.inputState && Object.is(query, this.value)) {
query = ''; query = '';
} }
this.inputState = false; this.inputState = false;
// 合并视图上下文参数和视图参数 Object.assign(_param, { query: query });
let param: any = JSON.parse(JSON.stringify(this.viewparams));
let context: any = JSON.parse(JSON.stringify(this.context));
Object.assign(param, { query: query });
// 附加参数处理
if (this.itemParam.context) {
let _context = this.$util.formatData(this.data,this.itemParam.context);
Object.assign(context,_context);
}
if (this.itemParam.param) {
let _param = this.$util.formatData(this.data,this.itemParam.param);
Object.assign(param,_param);
}
if (this.itemParam.parentdata) {
let _parentdata = this.$util.formatData(this.data,this.itemParam.parentdata);
Object.assign(param,_parentdata);
}
// 错误信息国际化 // 错误信息国际化
let error: string = (this.$t('components.appAutocomplete.error') as any); let error: string = (this.$t('components.appAutocomplete.error') as any);
let miss: string = (this.$t('components.appAutocomplete.miss') as any); let miss: string = (this.$t('components.appAutocomplete.miss') as any);
...@@ -208,7 +201,7 @@ export default class AppAutocomplete extends Vue { ...@@ -208,7 +201,7 @@ export default class AppAutocomplete extends Vue {
} else if(!this.acParams.interfaceName) { } else if(!this.acParams.interfaceName) {
this.$Notice.error({ title: error, desc: miss+'interfaceName' }); this.$Notice.error({ title: error, desc: miss+'interfaceName' });
} else { } else {
this.service.getItems(this.acParams.serviceName,this.acParams.interfaceName, context, param).then((response: any) => { this.service.getItems(this.acParams.serviceName,this.acParams.interfaceName, _context, _param).then((response: any) => {
if (!response) { if (!response) {
this.$Notice.error({ title: error, desc: requestException }); this.$Notice.error({ title: error, desc: requestException });
} else { } else {
...@@ -274,6 +267,34 @@ export default class AppAutocomplete extends Vue { ...@@ -274,6 +267,34 @@ export default class AppAutocomplete extends Vue {
this.$forceUpdate(); this.$forceUpdate();
} }
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppAutocomplete
*/
public handlePublicParams(arg: any): boolean {
if (!this.data) {
this.$Notice.error({ title: (this.$t('components.appPicker.error') as any), desc: (this.$t('components.appPicker.formdataException') as any) });
return false;
}
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
return true;
}
} }
</script> </script>
......
.el-breadcrumb__inner,
.el-breadcrumb__inner a {
font-weight: 400 !important;
}
.app-breadcrumb.el-breadcrumb {
display: inline-block;
font-size: 14px;
line-height: 50px;
margin-left: 8px;
.no-redirect {
color: #97a8be;
cursor: text;
}
}
\ No newline at end of file
<template>
<el-breadcrumb
class="app-breadcrumb"
separator="/"
>
<transition-group name="breadcrumb">
<el-breadcrumb-item
v-for="(item, index) in breadcrumbs"
:key="item.path"
>
<span
v-if="item.redirect === 'noredirect' || index === breadcrumbs.length-1"
class="no-redirect"
>{{ $t(item.meta.caption) }}</span>
<a
v-else
@click.prevent="handleLink(item)"
>{{ $t(item.meta.caption) }}</a>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
</template>
<script lang="ts">
import { compile } from 'path-to-regexp'
import { Component, Vue, Watch, Prop } from 'vue-property-decorator'
import { RouteRecord, Route } from 'vue-router'
@Component({
name: 'Breadcrumb'
})
export default class extends Vue {
private breadcrumbs: RouteRecord[] = []
@Prop() public defPSAppView?: any;
@Watch('$route')
private onRouteChange(route: Route) {
// if you go to the redirect page, do not update the breadcrumbs
if (route.path.startsWith('/redirect/')) {
return
}
this.getBreadcrumb()
}
created() {
this.getBreadcrumb()
}
private getBreadcrumb() {
let matched = this.$route.matched.filter((item) => item.meta && item.meta.caption)
const first = matched[0]
if (!this.isDashboard(first)) {
matched = [{ path: "/index/:index?", meta: {
caption: 'app.views.index.caption',
viewType: 'APPINDEX',
parameters: [
{ pathName: 'index', parameterName: 'index' },
],
requireAuth: true, } } as RouteRecord].concat(matched)
}
this.breadcrumbs = matched.filter((item) => {
return item.meta && item.meta.caption && item.meta.breadcrumb !== false
})
}
private isDashboard(route: RouteRecord) {
const name = route && route.meta.parameters[0].pathName;
if (!name) {
return false
}
return name.trim().toLocaleLowerCase() === 'index'.toLocaleLowerCase()
}
private pathCompile(item: any) {
const { params, path, query } = item;
return { params, path, query };
}
private handleLink(item: any) {
this.$router.push(this.pathCompile(item)).catch(err => {
console.warn(err);
});
}
}
</script>
<style lang='less'>
@import "./app-breadcrumb.less";
</style>
\ No newline at end of file
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { Component, Vue, Prop, Model } from 'vue-property-decorator'; import { Component, Vue, Prop, Model, Watch } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service"; import CodeListService from "@service/app/codelist-service";
@Component({ @Component({
...@@ -53,6 +53,38 @@ export default class AppCheckBox extends Vue { ...@@ -53,6 +53,38 @@ export default class AppCheckBox extends Vue {
*/ */
@Prop() disabled?: boolean; @Prop() disabled?: boolean;
/**
* 传入表单数据
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public data?: any;
/**
* 传入额外参数
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof AppAutocomplete
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppFormDRUIPart
*/
@Prop() public viewparams!: any;
/** /**
* 获取启用禁用状态 * 获取启用禁用状态
* *
...@@ -166,6 +198,28 @@ export default class AppCheckBox extends Vue { ...@@ -166,6 +198,28 @@ export default class AppCheckBox extends Vue {
*/ */
public items: any[] = []; public items: any[] = [];
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof DropDownList
*/
public handlePublicParams(arg: any) {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
}
/** /**
* vue 生命周期 * vue 生命周期
* *
...@@ -181,7 +235,13 @@ export default class AppCheckBox extends Vue { ...@@ -181,7 +235,13 @@ export default class AppCheckBox extends Vue {
console.log(`----${this.tag}----$t('components.appCheckBox.notExist')`); console.log(`----${this.tag}----$t('components.appCheckBox.notExist')`);
} }
} else if (Object.is(this.codelistType,"DYNAMIC")) { } else if (Object.is(this.codelistType,"DYNAMIC")) {
this.codeListService.getItems(this.tag).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----$t('components.appCheckBox.notExist')`); console.log(`----${this.tag}----$t('components.appCheckBox.notExist')`);
...@@ -190,6 +250,29 @@ export default class AppCheckBox extends Vue { ...@@ -190,6 +250,29 @@ export default class AppCheckBox extends Vue {
} }
} }
/**
* 监听表单数据变化
*
* @memberof AppOrgSelect
*/
@Watch('data',{immediate:true,deep:true})
onDataChange(newVal: any, oldVal: any) {
if(newVal){
if(this.tag && this.codelistType == 'DYNAMIC'){
// 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`);
})
}
}
}
} }
</script> </script>
......
...@@ -279,8 +279,8 @@ export default class AppColumnLink extends Vue { ...@@ -279,8 +279,8 @@ export default class AppColumnLink extends Vue {
return false; return false;
} }
// 合并表单参数 // 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams)); arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = JSON.parse(JSON.stringify(this.context)); arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
return true; return true;
} }
......
...@@ -170,15 +170,15 @@ export default class AppEmbedPicker extends Vue { ...@@ -170,15 +170,15 @@ export default class AppEmbedPicker extends Vue {
let context: any = JSON.parse(JSON.stringify(this.context)); let context: any = JSON.parse(JSON.stringify(this.context));
// 附加参数处理 // 附加参数处理
if (this.itemParam.context) { if (this.itemParam.context) {
let _context = this.$util.formatData(activeData,this.itemParam.context); let _context = this.$util.formatData(activeData,context,this.itemParam.context);
Object.assign(context,_context); Object.assign(context,_context);
} }
if (this.itemParam.param) { if (this.itemParam.param) {
let _param = this.$util.formatData(activeData,this.itemParam.param); let _param = this.$util.formatData(activeData,param,this.itemParam.param);
Object.assign(param,_param); Object.assign(param,_param);
} }
if (this.itemParam.parentdata) { if (this.itemParam.parentdata) {
let _parentdata = this.$util.formatData(activeData,this.itemParam.parentdata); let _parentdata = this.$util.formatData(activeData,param,this.itemParam.parentdata);
Object.assign(param,_parentdata); Object.assign(param,_parentdata);
} }
this.viewdata = JSON.stringify(context); this.viewdata = JSON.stringify(context);
......
...@@ -44,6 +44,14 @@ export default class AppMpicker extends Vue { ...@@ -44,6 +44,14 @@ export default class AppMpicker extends Vue {
*/ */
@Prop() curvalue?: any; @Prop() curvalue?: any;
/**
* 表单项参数
*
* @type {any}
* @memberof AppPicker
*/
@Prop() public itemParam: any;
/** /**
* 表单项名称 * 表单项名称
*/ */
...@@ -147,9 +155,18 @@ export default class AppMpicker extends Vue { ...@@ -147,9 +155,18 @@ export default class AppMpicker extends Vue {
* @memberof AppMpicker * @memberof AppMpicker
*/ */
public onSearch(query: any) { public onSearch(query: any) {
let param: any = { query: query }; // 公共参数处理
let data: any = {};
const bcancel: boolean = this.handlePublicParams(data);
if (!bcancel) {
return;
}
// 参数处理
let _context = data.context;
let _param = data.param;
Object.assign(_param ,{ query: query });
if (this.activeData) { if (this.activeData) {
Object.assign(param, { srfreferdata: this.activeData }); Object.assign(_param, { srfreferdata: this.activeData });
} }
// 错误信息国际化 // 错误信息国际化
let error: string = (this.$t('components.appMpicker.error') as any); let error: string = (this.$t('components.appMpicker.error') as any);
...@@ -162,7 +179,7 @@ export default class AppMpicker extends Vue { ...@@ -162,7 +179,7 @@ export default class AppMpicker extends Vue {
} else if(!this.acParams.interfaceName) { } else if(!this.acParams.interfaceName) {
this.$Notice.error({ title: error, desc: miss+'interfaceName' }); this.$Notice.error({ title: error, desc: miss+'interfaceName' });
} else { } else {
this.service.getItems(this.acParams.serviceName,this.acParams.interfaceName, param).then((response: any) => { this.service.getItems(this.acParams.serviceName,this.acParams.interfaceName, _context, _param).then((response: any) => {
if (!response) { if (!response) {
this.$Notice.error({ title: error, desc: requestException }); this.$Notice.error({ title: error, desc: requestException });
} else { } else {
...@@ -216,6 +233,33 @@ export default class AppMpicker extends Vue { ...@@ -216,6 +233,33 @@ export default class AppMpicker extends Vue {
} }
} }
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppMpicker
*/
public handlePublicParams(arg: any): boolean {
if (!this.activeData) {
this.$Notice.error({ title: (this.$t('components.appPicker.error') as any), desc: (this.$t('components.appPicker.formdataException') as any) });
return false;
}
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.activeData,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.activeData,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
return true;
}
/** /**
* 打开视图 * 打开视图
* *
...@@ -229,8 +273,15 @@ export default class AppMpicker extends Vue { ...@@ -229,8 +273,15 @@ export default class AppMpicker extends Vue {
if (this.pickupView && Object.keys(this.pickupView).length > 0) { if (this.pickupView && Object.keys(this.pickupView).length > 0) {
// 参数处理 // 参数处理
const view = { ...this.pickupView }; const view = { ...this.pickupView };
let _viewparams = JSON.parse(JSON.stringify(this.viewparams)); // 公共参数处理
let _context = JSON.parse(JSON.stringify(this.context)); let data: any = {};
const bcancel: boolean = this.handlePublicParams(data);
if (!bcancel) {
return;
}
// 参数处理
let _context = data.context;
let _viewparams = data.param;
let _selectItems = JSON.parse(JSON.stringify(this.selectItems)); let _selectItems = JSON.parse(JSON.stringify(this.selectItems));
if(!Object.is(this.deKeyField,"srfkey")){ if(!Object.is(this.deKeyField,"srfkey")){
_selectItems.forEach((item:any, index:number)=>{ _selectItems.forEach((item:any, index:number)=>{
......
...@@ -22,6 +22,14 @@ ...@@ -22,6 +22,14 @@
.ivu-select-dropdown{ .ivu-select-dropdown{
max-height: 200px; max-height: 200px;
overflow: scroll; overflow: scroll;
margin: 0;
padding: 0;
.ivu-dropdown-menu{
.view-container{
margin: 0;
padding: 0;
}
}
.tree-contant{ .tree-contant{
overflow:inherit; overflow:inherit;
} }
......
...@@ -255,21 +255,17 @@ export default class AppPickerSelectView extends Vue { ...@@ -255,21 +255,17 @@ export default class AppPickerSelectView extends Vue {
return false; return false;
} }
// 合并表单参数 // 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams)); arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = JSON.parse(JSON.stringify(this.context)); arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理 // 附加参数处理
if (this.itemParam.context) { if (this.itemParam.context) {
let _context = this.$util.formatData(this.data,this.itemParam.context); let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context); Object.assign(arg.context,_context);
} }
if (this.itemParam.param) { if (this.itemParam.param) {
let _param = this.$util.formatData(this.data,this.itemParam.param); let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param); Object.assign(arg.param,_param);
} }
if (this.itemParam.parentdata) {
let _parentdata = this.$util.formatData(this.data,this.itemParam.parentdata);
Object.assign(arg.param,_parentdata);
}
return true; return true;
} }
......
...@@ -410,9 +410,9 @@ export default class AppPicker extends Vue { ...@@ -410,9 +410,9 @@ export default class AppPicker extends Vue {
// 判断打开方式 // 判断打开方式
if (view.placement && !Object.is(view.placement, '')) { if (view.placement && !Object.is(view.placement, '')) {
if (Object.is(view.placement, 'POPOVER')) { if (Object.is(view.placement, 'POPOVER')) {
this.openPopOver($event, view, _context, data); this.openPopOver($event, view, _context, _param);
} else { } else {
this.openDrawer(view, _context, data); this.openDrawer(view, _context, _param);
} }
} else { } else {
this.openPopupModal(view, _context, _param); this.openPopupModal(view, _context, _param);
...@@ -647,21 +647,17 @@ export default class AppPicker extends Vue { ...@@ -647,21 +647,17 @@ export default class AppPicker extends Vue {
return false; return false;
} }
// 合并表单参数 // 合并表单参数
arg.param = JSON.parse(JSON.stringify(this.viewparams)); arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = JSON.parse(JSON.stringify(this.context)); arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理 // 附加参数处理
if (this.itemParam.context) { if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.data,this.itemParam.context); let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context); Object.assign(arg.context,_context);
} }
if (this.itemParam.param) { if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.data,this.itemParam.param); let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param); Object.assign(arg.param,_param);
} }
if (this.itemParam.parentdata) {
let _parentdata = this.$util.formatData(this.data,this.itemParam.parentdata);
Object.assign(arg.param,_parentdata);
}
return true; return true;
} }
...@@ -691,9 +687,9 @@ export default class AppPicker extends Vue { ...@@ -691,9 +687,9 @@ export default class AppPicker extends Vue {
// 判断打开方式 // 判断打开方式
if (view.placement && !Object.is(view.placement, '')) { if (view.placement && !Object.is(view.placement, '')) {
if (Object.is(view.placement, 'POPOVER')) { if (Object.is(view.placement, 'POPOVER')) {
this.openPopOver($event, view, _context, data); this.openPopOver($event, view, _context, _param);
} else { } else {
this.openDrawer(view, _context, data); this.openDrawer(view, _context, _param);
} }
} else { } else {
this.openPopupModal(view, _context, _param); this.openPopupModal(view, _context, _param);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</radio-group> </radio-group>
</template> </template>
<script lang = 'ts'> <script lang = 'ts'>
import { Component, Vue, Prop, Model } from 'vue-property-decorator'; import { Component, Vue, Prop, Model,Watch } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service"; import CodeListService from "@service/app/codelist-service";
@Component({}) @Component({})
...@@ -61,6 +61,39 @@ export default class AppRadioGroup extends Vue { ...@@ -61,6 +61,39 @@ export default class AppRadioGroup extends Vue {
*/ */
@Prop() public codelistType?: string; @Prop() public codelistType?: string;
/**
* 传入表单数据
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public data?: any;
/**
* 监听表单数据变化
*
* @memberof AppOrgSelect
*/
@Watch('data',{immediate:true,deep:true})
onDataChange(newVal: any, oldVal: any) {
if(newVal){
if(this.tag && this.codelistType == 'DYNAMIC'){
// 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
console.log("app-radio-group")
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`);
})
}
}
}
/** /**
* 是否禁用 * 是否禁用
* *
...@@ -69,6 +102,30 @@ export default class AppRadioGroup extends Vue { ...@@ -69,6 +102,30 @@ export default class AppRadioGroup extends Vue {
*/ */
@Prop() public disabled?: boolean; @Prop() public disabled?: boolean;
/**
* 传入额外参数
*
* @type {*}
* @memberof DropDownList
*/
@Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof AppAutocomplete
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppFormDRUIPart
*/
@Prop() public viewparams!: any;
/** /**
* 属性名称 * 属性名称
* *
...@@ -99,6 +156,28 @@ export default class AppRadioGroup extends Vue { ...@@ -99,6 +156,28 @@ export default class AppRadioGroup extends Vue {
*/ */
public items: any[] = []; public items: any[] = [];
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof DropDownList
*/
public handlePublicParams(arg: any) {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
}
/** /**
* vue 生命周期 * vue 生命周期
* *
...@@ -108,9 +187,15 @@ export default class AppRadioGroup extends Vue { ...@@ -108,9 +187,15 @@ export default class AppRadioGroup extends Vue {
if(this.tag && this.codelistType == 'STATIC'){ if(this.tag && this.codelistType == 'STATIC'){
this.items = this.$store.getters.getCodeListItems(this.tag); this.items = this.$store.getters.getCodeListItems(this.tag);
}else if(this.tag && this.codelistType == 'DYNAMIC'){ }else if(this.tag && this.codelistType == 'DYNAMIC'){
this.codeListService.getItems(this.tag).then((data:any)=>{ // 公共参数处理
this.items = data; let data: any = {};
}).catch((data:any)=>{ this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`); console.log(`----${this.tag}----代码表不存在!`);
}) })
} }
......
...@@ -104,7 +104,7 @@ export default class AppRichTextEditor extends Vue { ...@@ -104,7 +104,7 @@ export default class AppRichTextEditor extends Vue {
* @type {*} * @type {*}
* @memberof AppRichTextEditor * @memberof AppRichTextEditor
*/ */
public langu: any = localStorage.getItem('local') ? localStorage.getItem('local') : 'zh_CN' ; public langu: any = localStorage.getItem('local') ? localStorage.getItem('local') : 'zh-CN' ;
/** /**
* 语言映射文件 * 语言映射文件
......
<template> <template>
<codelist v-if="tag" :tag="tag" :value="value" :codelistType="codelistType" :renderMode="renderMode" :valueSeparator="valueSeparator" :textSeparator="textSeparator"></codelist> <codelist v-if="tag" :tag="tag" :value="value" :codelistType="codelistType" :renderMode="renderMode" :valueSeparator="valueSeparator" :textSeparator="textSeparator" :data="data" :itemParam="itemParam" :context="context" :viewparams="viewparams"></codelist>
<app-upload-file-info v-else-if="Object.is(this.editorType,'PICTURE') || Object.is(this.editorType,'PICTURE_ONE') || Object.is(this.editorType,'FILEUPLOADER')" :value="value" :name="name"></app-upload-file-info> <app-upload-file-info v-else-if="Object.is(this.editorType,'PICTURE') || Object.is(this.editorType,'PICTURE_ONE') || Object.is(this.editorType,'FILEUPLOADER')" :value="value" :name="name"></app-upload-file-info>
<span class="app-span" v-else >{{text}}</span> <span class="app-span" v-else >{{text}}</span>
</template> </template>
<script lang="ts"> <script lang="ts">
import { Vue, Component, Prop, Watch, Model } from 'vue-property-decorator'; import { Vue, Component, Prop, Watch, Model } from 'vue-property-decorator';
import CodeListService from "@service/app/codelist-service";
@Component({}) @Component({})
export default class AppSpan extends Vue { export default class AppSpan extends Vue {
...@@ -64,6 +63,38 @@ export default class AppSpan extends Vue { ...@@ -64,6 +63,38 @@ export default class AppSpan extends Vue {
*/ */
@Prop({default:','}) public valueSeparator?: string; @Prop({default:','}) public valueSeparator?: string;
/**
* 传入表单数据
*
* @type {*}
* @memberof AppSpan
*/
@Prop() public data?: any;
/**
* 传入额外参数
*
* @type {*}
* @memberof AppSpan
*/
@Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof AppSpan
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppSpan
*/
@Prop() public viewparams!: any;
/** /**
* 监控表单属性 data 值 * 监控表单属性 data 值
* *
......
...@@ -220,15 +220,15 @@ export default class AppTreePicker extends Vue { ...@@ -220,15 +220,15 @@ export default class AppTreePicker extends Vue {
let context: any = JSON.parse(JSON.stringify(this.context)); let context: any = JSON.parse(JSON.stringify(this.context));
// 附加参数处理 // 附加参数处理
if (this.itemParam.context) { if (this.itemParam.context) {
let _context = this.$util.formatData(activeData,this.itemParam.context); let _context = this.$util.formatData(activeData,context,this.itemParam.context);
Object.assign(context,_context); Object.assign(context,_context);
} }
if (this.itemParam.param) { if (this.itemParam.param) {
let _param = this.$util.formatData(activeData,this.itemParam.param); let _param = this.$util.formatData(activeData,param,this.itemParam.param);
Object.assign(param,_param); Object.assign(param,_param);
} }
if (this.itemParam.parentdata) { if (this.itemParam.parentdata) {
let _parentdata = this.$util.formatData(activeData,this.itemParam.parentdata); let _parentdata = this.$util.formatData(activeData,param,this.itemParam.parentdata);
Object.assign(param,_parentdata); Object.assign(param,_parentdata);
} }
this.viewdata = JSON.stringify(context); this.viewdata = JSON.stringify(context);
......
...@@ -37,14 +37,14 @@ export default class CodeList extends Vue { ...@@ -37,14 +37,14 @@ export default class CodeList extends Vue {
* 代码表类型 * 代码表类型
* *
* @type {string} * @type {string}
* @memberof AppCheckBox * @memberof CodeList
*/ */
@Prop() public codelistType?: string; @Prop() public codelistType?: string;
/** /**
* 当前值 * 当前值
* @type {any} * @type {any}
* @memberof SelectPicker * @memberof CodeList
* *
*/ */
@Prop() public value?: string; @Prop() public value?: string;
...@@ -52,24 +52,56 @@ export default class CodeList extends Vue { ...@@ -52,24 +52,56 @@ export default class CodeList extends Vue {
/** /**
* 获取或模式 * 获取或模式
* @type {boolean} * @type {boolean}
* @memberof SelectPicker * @memberof CodeList
*/ */
@Prop({default:"STR"}) public renderMode?: string; @Prop({default:"STR"}) public renderMode?: string;
/** /**
* 文本分隔符 * 文本分隔符
* @type {boolean} * @type {boolean}
* @memberof SelectPicker * @memberof CodeList
*/ */
@Prop({default:'、'}) public textSeparator?: string; @Prop({default:'、'}) public textSeparator?: string;
/** /**
* 值分隔符 * 值分隔符
* @type {boolean} * @type {boolean}
* @memberof SelectPicker * @memberof CodeList
*/ */
@Prop({default:','}) public valueSeparator?: string; @Prop({default:','}) public valueSeparator?: string;
/**
* 传入表单数据
*
* @type {*}
* @memberof CodeList
*/
@Prop() public data?: any;
/**
* 传入额外参数
*
* @type {*}
* @memberof CodeList
*/
@Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof CodeList
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof CodeList
*/
@Prop() public viewparams!: any;
/** /**
* 是否为空 * 是否为空
* *
...@@ -101,7 +133,7 @@ export default class CodeList extends Vue { ...@@ -101,7 +133,7 @@ export default class CodeList extends Vue {
*/ */
public isUseLangres:boolean = false; public isUseLangres:boolean = false;
/** /**
* 数据值变化 * 数据值变化
* *
* @param {*} newval * @param {*} newval
...@@ -112,7 +144,18 @@ export default class CodeList extends Vue { ...@@ -112,7 +144,18 @@ export default class CodeList extends Vue {
@Watch('value') @Watch('value')
public onValueChange(newVal: any, oldVal: any) { public onValueChange(newVal: any, oldVal: any) {
this.dataHandle(); this.dataHandle();
}
/**
* 监听表单数据变化
*
* @memberof CodeList
*/
@Watch('data',{immediate:true,deep:true})
onDataChange(newVal: any, oldVal: any) {
if(newVal){
this.dataHandle();
}
} }
/** /**
...@@ -131,7 +174,13 @@ export default class CodeList extends Vue { ...@@ -131,7 +174,13 @@ export default class CodeList extends Vue {
this.ifEmpty = false; this.ifEmpty = false;
// 动态代码表处理 // 动态代码表处理
if (Object.is(this.codelistType, "DYNAMIC")) { if (Object.is(this.codelistType, "DYNAMIC")) {
this.codeListService.getItems(this.tag).then((res: any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
let items = res; let items = res;
_this.setItems(items, _this); _this.setItems(items, _this);
}).catch((error: any) => { }).catch((error: any) => {
...@@ -209,6 +258,28 @@ export default class CodeList extends Vue { ...@@ -209,6 +258,28 @@ export default class CodeList extends Vue {
} }
} }
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof CodeList
*/
public handlePublicParams(arg: any) {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam && this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam && this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
}
} }
</script> </script>
......
...@@ -81,7 +81,7 @@ export default class DropDownListDynamic extends Vue { ...@@ -81,7 +81,7 @@ export default class DropDownListDynamic extends Vue {
@Watch('data',{ deep: true }) @Watch('data',{ deep: true })
onDataChange(newVal: any, val: any){ onDataChange(newVal: any, val: any){
if(newVal){ if(newVal){
this.handleOtherParam();
} }
} }
...@@ -145,26 +145,40 @@ export default class DropDownListDynamic extends Vue { ...@@ -145,26 +145,40 @@ export default class DropDownListDynamic extends Vue {
public items: any[] = []; public items: any[] = [];
/** /**
* 处理额外参数 * 视图上下文
*/ *
public handleOtherParam(){ * @type {*}
if(this.itemParam){ * @memberof AppAutocomplete
this.queryParam = {}; */
this.otherParam = this.itemParam.parentdata; @Prop() public context!: any;
if(this.otherParam && Object.keys(this.otherParam).length >0){
Object.keys(this.otherParam).forEach((item:any) =>{ /**
let value: string | null = this.otherParam[item]; * 视图参数
if (value && value.startsWith('%') && value.endsWith('%')) { *
const key = value.substring(1, value.length - 1); * @type {*}
if (this.data && this.data.hasOwnProperty(key)) { * @memberof AppFormDRUIPart
value = (this.data[key] !== null && this.data[key] !== undefined) ? this.data[key] : null; */
} else { @Prop() public viewparams!: any;
value = null;
} /**
} * 公共参数处理
Object.assign(this.queryParam,{[item]:value}); *
}) * @param {*} arg
} * @returns
* @memberof DropDownListDynamic
*/
public handlePublicParams(arg: any) {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
} }
} }
...@@ -182,7 +196,13 @@ export default class DropDownListDynamic extends Vue { ...@@ -182,7 +196,13 @@ export default class DropDownListDynamic extends Vue {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
} }
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ }else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
...@@ -199,7 +219,13 @@ export default class DropDownListDynamic extends Vue { ...@@ -199,7 +219,13 @@ export default class DropDownListDynamic extends Vue {
public onClick($event:any){ public onClick($event:any){
if($event){ if($event){
if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
......
...@@ -84,6 +84,38 @@ export default class DropDownListMpicker extends Vue { ...@@ -84,6 +84,38 @@ export default class DropDownListMpicker extends Vue {
*/ */
@Prop() public placeholder?: string; @Prop() public placeholder?: string;
/**
* 传入额外参数
*
* @type {*}
* @memberof DropDownListMpicker
*/
@Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof DropDownListMpicker
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof DropDownListMpicker
*/
@Prop() public viewparams!: any;
/**
* 传入表单数据
*
* @type {*}
* @memberof DropDownListMpicker
*/
@Prop() public data?: any;
/** /**
* 计算属性(当前值) * 计算属性(当前值)
* @type {any} * @type {any}
...@@ -113,6 +145,28 @@ export default class DropDownListMpicker extends Vue { ...@@ -113,6 +145,28 @@ export default class DropDownListMpicker extends Vue {
*/ */
public items: any[] = []; public items: any[] = [];
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof DropDownList
*/
public handlePublicParams(arg: any) {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.itemParam.context) {
let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
Object.assign(arg.context,_context);
}
if (this.itemParam.param) {
let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(arg.param,_param);
}
}
/** /**
* vue 生命周期 * vue 生命周期
* *
...@@ -127,7 +181,13 @@ export default class DropDownListMpicker extends Vue { ...@@ -127,7 +181,13 @@ export default class DropDownListMpicker extends Vue {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
} }
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ }else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
...@@ -143,7 +203,13 @@ export default class DropDownListMpicker extends Vue { ...@@ -143,7 +203,13 @@ export default class DropDownListMpicker extends Vue {
*/ */
public onClick($event:any){ public onClick($event:any){
if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
......
...@@ -81,7 +81,7 @@ export default class DropDownList extends Vue { ...@@ -81,7 +81,7 @@ export default class DropDownList extends Vue {
@Watch('data',{ deep: true }) @Watch('data',{ deep: true })
onDataChange(newVal: any, val: any){ onDataChange(newVal: any, val: any){
if(newVal){ if(newVal){
this.handleOtherParam();
} }
} }
...@@ -93,6 +93,22 @@ export default class DropDownList extends Vue { ...@@ -93,6 +93,22 @@ export default class DropDownList extends Vue {
*/ */
@Prop() public itemParam?: any; @Prop() public itemParam?: any;
/**
* 视图上下文
*
* @type {*}
* @memberof AppAutocomplete
*/
@Prop() public context!: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppFormDRUIPart
*/
@Prop() public viewparams!: any;
/** /**
* 是否禁用 * 是否禁用
* @type {any} * @type {any}
...@@ -145,26 +161,24 @@ export default class DropDownList extends Vue { ...@@ -145,26 +161,24 @@ export default class DropDownList extends Vue {
public items: any[] = []; public items: any[] = [];
/** /**
* 处理额外参数 * 公共参数处理
*/ *
public handleOtherParam(){ * @param {*} arg
if(this.itemParam){ * @returns
this.queryParam = {}; * @memberof DropDownList
this.otherParam = this.itemParam.parentdata; */
if(this.otherParam && Object.keys(this.otherParam).length >0){ public handlePublicParams(arg: any) {
Object.keys(this.otherParam).forEach((item:any) =>{ // 合并表单参数
let value: string | null = this.otherParam[item]; arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
if (value && value.startsWith('%') && value.endsWith('%')) { arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
const key = value.substring(1, value.length - 1); // 附加参数处理
if (this.data && this.data.hasOwnProperty(key)) { if (this.itemParam && this.itemParam.context) {
value = (this.data[key] !== null && this.data[key] !== undefined) ? this.data[key] : null; let _context = this.$util.formatData(this.data,arg.context,this.itemParam.context);
} else { Object.assign(arg.context,_context);
value = null; }
} if (this.itemParam && this.itemParam.param) {
} let _param = this.$util.formatData(this.data,arg.param,this.itemParam.param);
Object.assign(this.queryParam,{[item]:value}); Object.assign(arg.param,_param);
})
}
} }
} }
...@@ -182,7 +196,13 @@ export default class DropDownList extends Vue { ...@@ -182,7 +196,13 @@ export default class DropDownList extends Vue {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
} }
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ }else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
...@@ -199,7 +219,13 @@ export default class DropDownList extends Vue { ...@@ -199,7 +219,13 @@ export default class DropDownList extends Vue {
public onClick($event:any){ public onClick($event:any){
if($event){ if($event){
if(this.tag && Object.is(this.codelistType,"DYNAMIC")){ if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
this.codeListService.getItems(this.tag,{},this.queryParam).then((res:any) => { // 公共参数处理
let data: any = {};
this.handlePublicParams(data);
// 参数处理
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res; this.items = res;
}).catch((error:any) => { }).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`); console.log(`----${this.tag}----代码表不存在`);
......
// .ibiz-page-tag {
// position: relative;
// box-sizing: border-box;
// // width: calc(100% + 30px);
// height: 38px;
// padding: 0 60px 0 30px;
// background: #f6f6f6;
// .tags-body {
// position: relative;
// width: 100%;
// height: 100%;
// overflow: hidden;
// .tags-container {
// position: absolute;
// overflow: visible;
// white-space: nowrap;
// transition: left .3s ease;
// .ivu-tag {
// margin: 0;
// height: 38px;
// line-height: 38px;
// border: 0;
// border-radius: 0;
// border-right: 1px solid #ddd;
// font-size: 14px;
// .text-icon {
// height: 16px;
// margin-bottom: -3px;
// }
// .ivu-icon-ios-close {
// visibility: hidden;
// }
// .tag-text {
// display: table-cell;
// .ivu-tooltip {
// display: block;
// .ivu-tooltip-rel {
// display: block;
// max-width: 200px;
// overflow: hidden;
// text-overflow: ellipsis;
// }
// }
// }
// }
// .ivu-tag.tag-is-active {
// background: #fff;
// }
// .ivu-tag:hover,.ivu-tag.tag-is-active {
// .ivu-icon-ios-close {
// visibility: initial;
// }
// }
// }
// }
// .move-btn {
// font-size: 18px;
// width: 30px;
// height: 38px;
// line-height: 38px;
// border-left: 1px solid #ddd;
// border-right: 1px solid #ddd;
// text-align: center;
// cursor: pointer;
// }
// .move-btn:hover {
// background: #efefef;
// }
// .move-left, .move-right, .ivu-dropdown{
// position: absolute;
// top: 0;
// }
// .move-left {
// left: 0;
// }
// .move-right {
// right: 30px;
// }
// .ivu-dropdown {
// right: 0;
// }
// }
// .tags-transition-move {
// transition: transform .3s;
// }
// .tags-transition-enter,.tags-transition-leave-to{
// opacity: 0;
// }
.ibiz-page-tag { .ibiz-page-tag {
position: relative; .el-tabs{
box-sizing: border-box; .el-tabs__nav{
// width: calc(100% + 30px); padding:0px 10px;
height: 38px; border:none;
padding: 0 60px 0 30px; }
background: #f6f6f6; .el-tabs__item{
.tags-body { color:#ccc;
position: relative; border:none;
width: 100%; }
height: 100%; .el-tabs__item:hover{
overflow: hidden; color:#409eff;
.tags-container { }
position: absolute; .is-active{
overflow: visible; color:#409eff;
white-space: nowrap; border-bottom:2px solid #409eff !important;
transition: left .3s ease; }
.ivu-tag { .el-tabs__nav-scroll{
margin: 0; background-color: white;
height: 38px; }
line-height: 38px; .el-tabs__header{
border: 0; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);
border-radius: 0; margin:0 0 1 0;
border-right: 1px solid #ddd;
font-size: 14px;
.text-icon {
height: 16px;
margin-bottom: -3px;
}
.ivu-icon-ios-close {
visibility: hidden;
}
.tag-text {
display: table-cell;
.ivu-tooltip {
display: block;
.ivu-tooltip-rel {
display: block;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
.ivu-tag.tag-is-active {
background: #fff;
}
.ivu-tag:hover,.ivu-tag.tag-is-active {
.ivu-icon-ios-close {
visibility: initial;
}
}
} }
} }
.move-btn {
font-size: 18px;
width: 30px;
height: 38px;
line-height: 38px;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
text-align: center;
cursor: pointer;
}
.move-btn:hover {
background: #efefef;
}
.move-left, .move-right, .ivu-dropdown{
position: absolute;
top: 0;
}
.move-left {
left: 0;
}
.move-right {
right: 30px;
}
.ivu-dropdown {
right: 0;
}
}
.tags-transition-move {
transition: transform .3s;
}
.tags-transition-enter,.tags-transition-leave-to{
opacity: 0;
} }
\ No newline at end of file
...@@ -122,6 +122,14 @@ export class ChartSeries { ...@@ -122,6 +122,14 @@ export class ChartSeries {
*/ */
public seriesLayoutBy:string = "column"; public seriesLayoutBy:string = "column";
/**
* 序列代码表
*
* @type {*}
* @memberof ChartSeries
*/
public seriesCodeList:any;
/** /**
* Creates an instance of ChartSeries. * Creates an instance of ChartSeries.
* ChartSeries 实例 * ChartSeries 实例
...@@ -144,6 +152,7 @@ export class ChartSeries { ...@@ -144,6 +152,7 @@ export class ChartSeries {
this.dataSetFields = opts.dataSetFields ? opts.dataSetFields:[]; this.dataSetFields = opts.dataSetFields ? opts.dataSetFields:[];
this.seriesMap = opts.seriesMap ? opts.seriesMap:null; this.seriesMap = opts.seriesMap ? opts.seriesMap:null;
this.seriesIndex = opts.seriesIndex? opts.seriesIndex:0; this.seriesIndex = opts.seriesIndex? opts.seriesIndex:0;
this.seriesCodeList = opts.seriesCodeList?opts.seriesCodeList:null;
} }
/** /**
...@@ -285,4 +294,14 @@ export class ChartSeries { ...@@ -285,4 +294,14 @@ export class ChartSeries {
public setSeriesIndex(state: number): void { public setSeriesIndex(state: number): void {
this.seriesIndex = state; this.seriesIndex = state;
} }
/**
* 设置序列代码表
*
* @param {any} state
* @memberof ChartSeries
*/
public setSeriesCodeList(state: any): void {
this.seriesCodeList = state;
}
} }
\ No newline at end of file
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
.wfgroup-pickup-grid-view{ .wfgroup-pickup-grid-view{
width:100%; display: block;
} }
\ No newline at end of file
...@@ -2,25 +2,13 @@ ...@@ -2,25 +2,13 @@
<div class="index_view wfindex-view"> <div class="index_view wfindex-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfindexview"></app-studioaction> <app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfindexview"></app-studioaction>
<layout :class="themeClasses" :style="themeStyle"> <layout :class="themeClasses" :style="themeStyle">
<header class="index_header">
<div class="header-left" >
<div class="page-logo">
<img src="../../../assets/img/logo.png" height="32" />
<span style="display: inline-block;margin-left: 10px;font-size: 22px;">{{$t(model.srfCaption)}}</span>
</div>
</div>
<div class="header-right" style="display: flex;align-items: center;justify-content: space-between;">
<app-header-menus />
<app-lang style='font-size: 15px;padding: 0 10px;'></app-lang>
<app-orgsector></app-orgsector>
<app-user></app-user>
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div>
</header>
<layout> <layout>
<sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange"> <sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange">
<div class="sider-top"> <div class="sider-top">
<i class="ivu-icon ivu-icon-md-menu" @click="handleClick"></i> <div class="page-logo">
<img v-show="collapseChange" src="../../../assets/img/logo.png" height="16" />
<span v-show="!collapseChange" style="display: block;text-align: center;font-weight: 300;font-size: 20px;">{{$t(model.srfCaption)}}</span>
</div>
</div> </div>
<view_appmenu <view_appmenu
:viewState="viewState" :viewState="viewState"
...@@ -37,12 +25,30 @@ ...@@ -37,12 +25,30 @@
@closeview="closeView($event)"> @closeview="closeView($event)">
</view_appmenu> </view_appmenu>
</sider> </sider>
<content class="index_content" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }"> <layout>
<tab-page-exp></tab-page-exp> <header class="index_header">
<app-keep-alive :routerList="getRouterList"> <div class="header-left" >
<router-view :key="getRouterViewKey"></router-view> <div class="page-logo">
</app-keep-alive> <i v-show="!collapseChange" class="ivu-icon el-icon-s-fold" @click="handleClick"></i>
</content> <i v-show="collapseChange" class="ivu-icon el-icon-s-unfold" @click="handleClick"></i>
<app-breadcrumb :defPSAppView="defPSAppView"></app-breadcrumb>
</div>
</div>
<div class="header-right" style="display: flex;align-items: center;justify-content: space-between;">
<app-header-menus />
<app-lang style='font-size: 15px;padding: 0 10px;'></app-lang>
<app-orgsector></app-orgsector>
<app-user></app-user>
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div>
</header>
<content class="index_content" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }">
<tab-page-exp></tab-page-exp>
<app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view>
</app-keep-alive>
</content>
</layout>
</layout> </layout>
</layout> </layout>
</div> </div>
......
...@@ -5,12 +5,16 @@ ...@@ -5,12 +5,16 @@
.index_view{ .index_view{
margin-bottom: 1px;
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 0; padding: 0;
margin: 0; margin: 0;
overflow: hidden;
color:#303133;
background-color: #fff;
.index_header{ .index_header{
height:50px; height:65px;
padding:0 20px; padding:0 20px;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -20,6 +24,29 @@ ...@@ -20,6 +24,29 @@
align-items: center; align-items: center;
} }
.header-left{ .header-left{
i{
color:#b4bcc8;
}
i:hover{
color:#1890ff;
}
> .app-breadcrumb{
> span .el-breadcrumb__item .el-breadcrumb__inner{
a{
color:#606d80 !important;
cursor: pointer !important;
}
a:last-child:hover{
color:#1890ff !important;
}
}
}
.ivu-icon{
font-size: 20px;
padding: 4px;
margin-top: -2px;
cursor: pointer;
}
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
...@@ -35,7 +62,7 @@ ...@@ -35,7 +62,7 @@
} }
} }
.index_content{ .index_content{
background-color:#fff; background-color:#F0F2F5;
height:calc(100vh - 50px); height:calc(100vh - 50px);
overflow-x: hidden; overflow-x: hidden;
overflow-y: hidden; overflow-y: hidden;
...@@ -46,16 +73,21 @@ ...@@ -46,16 +73,21 @@
} }
} }
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{ .ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{
line-height: 58px;
text-align: right;
padding-right: 18px;
}
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top .ivu-icon{
font-size: 20px;
padding: 4px; padding: 4px;
margin-top: -2px; margin-top: -2px;
line-height: 58px;
text-align: center;
font-size: 20px;
cursor: pointer; cursor: pointer;
} }
.sider-top{
margin-bottom: 1px;
height:65px;
box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);
> .page-logo{
text-align: center;
}
}
} }
/*** BRGIN:滚动条样式 ***/ /*** BRGIN:滚动条样式 ***/
......
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
.wfuser-pickup-grid-view{ .wfuser-pickup-grid-view{
width:100%; display: block;
} }
\ No newline at end of file
...@@ -40,6 +40,14 @@ export default class CodeListService { ...@@ -40,6 +40,14 @@ export default class CodeListService {
*/ */
public static codelistCache:Map<string,any> = new Map(); public static codelistCache:Map<string,any> = new Map();
/**
* 动态代码表缓存(已完成)
*
* @type {Map<string,any>}
* @memberof CodeListService
*/
public static codelistCached:Map<string,any> = new Map();
/** /**
* 获取动态代码表 * 获取动态代码表
...@@ -51,31 +59,22 @@ export default class CodeListService { ...@@ -51,31 +59,22 @@ export default class CodeListService {
*/ */
public getItems(tag: string,context:any = {}, data?: any, isloading?: boolean,): Promise<any[]> { public getItems(tag: string,context:any = {}, data?: any, isloading?: boolean,): Promise<any[]> {
let _this: any = this; let _this: any = this;
if(context && context.srfsessionid){
delete context.srfsessionid;
}
let isEnableCache:boolean = _this[tag].isEnableCache; let isEnableCache:boolean = _this[tag].isEnableCache;
let cacheTimeout:any = _this[tag].cacheTimeout; let cacheTimeout:any = _this[tag].cacheTimeout;
return new Promise((resolve:any,reject:any) =>{ return new Promise((resolve:any,reject:any) =>{
// 如有查询参数传递过来,需直接加载,不能使用缓存
if(data && Object.keys(data).length >0){
if (_this[tag]) {
_this[tag].getItems(context,JSON.parse(JSON.stringify(data)),isloading).then((result:any) =>{
resolve(result);
}).catch((error:any) =>{
Promise.reject([]);
})
}else{
return Promise.reject([]);
}
}else{
// 启用缓存 // 启用缓存
if(isEnableCache){ if(isEnableCache){
// 加载完成,从store获取 // 加载完成,从本地缓存获取
if(this.$store && _this.$store.getters){ if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
let items:any = _this.$store.getters.getCodeListItems(tag); let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`);
if(items.length >0){ if(items.length >0){
if(cacheTimeout !== -1){ if(cacheTimeout !== -1){
if(new Date().getTime() > _this[tag].expirationTime){ if(new Date().getTime() > _this[tag].expirationTime){
_this[tag].getItems(context,data,isloading).then((result:any) =>{ _this[tag].getItems(context,data,isloading).then((result:any) =>{
_this.$store.commit('updateCodeList',{srfkey:tag,items:result}); CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
_this[tag].expirationTime = new Date().getTime() + cacheTimeout; _this[tag].expirationTime = new Date().getTime() + cacheTimeout;
resolve(result); resolve(result);
}).catch((error:any) =>{ }).catch((error:any) =>{
...@@ -90,10 +89,11 @@ export default class CodeListService { ...@@ -90,10 +89,11 @@ export default class CodeListService {
} }
} }
if (_this[tag]) { if (_this[tag]) {
const callback:Function = (tag:string,promise:Promise<any>) =>{ const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
promise.then((result:any) =>{ promise.then((result:any) =>{
console.log()
if(result.length > 0){ if(result.length > 0){
_this.$store.commit('updateCodeList',{srfkey:tag,items:result}); CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
return resolve(result); return resolve(result);
}else{ }else{
return resolve([]); return resolve([]);
...@@ -103,15 +103,15 @@ export default class CodeListService { ...@@ -103,15 +103,15 @@ export default class CodeListService {
}) })
} }
// 加载中,UI又需要数据,解决连续加载同一代码表问题 // 加载中,UI又需要数据,解决连续加载同一代码表问题
if(CodeListService.codelistCache.get(tag)){ if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
callback(tag,CodeListService.codelistCache.get(tag)); callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`));
}else{ }else{
let result:Promise<any> = _this[tag].getItems(context,data,isloading); let result:Promise<any> = _this[tag].getItems(context,data,isloading);
CodeListService.codelistCache.set(tag,result); CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result);
if(cacheTimeout !== -1){ if(cacheTimeout !== -1){
_this[tag].expirationTime = new Date().getTime() + cacheTimeout; _this[tag].expirationTime = new Date().getTime() + cacheTimeout;
} }
callback(tag,result); callback(context,data,tag,result);
} }
} }
}else{ }else{
...@@ -125,7 +125,6 @@ export default class CodeListService { ...@@ -125,7 +125,6 @@ export default class CodeListService {
return Promise.reject([]); return Promise.reject([]);
} }
} }
}
}) })
} }
} }
\ No newline at end of file
...@@ -63,10 +63,11 @@ ...@@ -63,10 +63,11 @@
} }
.view-container { .view-container {
height: calc(100% - 38px); height: calc(100% - 65px);
// height: 100%; padding: 0 12px;
// display: flex; margin: 0px 12px;
padding: 0 15px; background: white;
box-shadow: 0 2px 4px 0 rgba(0,0,0,.12), 0 0 6px 0 rgba(0,0,0,.04);
// flex-direction: column; // flex-direction: column;
> .view-card { > .view-card {
height: 100%; height: 100%;
...@@ -110,11 +111,16 @@ ...@@ -110,11 +111,16 @@
.viewcontainer2 { .viewcontainer2 {
height: 100%; height: 100%;
width: 100%; width: 100%;
padding: 0px 12px !important;
margin: 0px !important;
-webkit-box-shadow: none !important;
} }
.viewcontainer3 { .viewcontainer3 {
height: 100%; height: 100%;
width: 100%; width: 100%;
padding: 0px; padding: 0px 12px !important;
margin: 0px !important;
-webkit-box-shadow: none !important;
} }
...@@ -207,7 +213,7 @@ ...@@ -207,7 +213,7 @@
} }
} }
.view-container.degridview, .view-container.degridview9, .view-container.dewfgridview, .view-container.delistview, .view-container.delistview9, .view-container.dedataview, .view-container.dedataview9, .view-container.decalendarview, .view-container.decalendarview9{ .view-container.degridview, .view-container.degridview9, .view-container.dewfgridview, .view-container.delistview, .view-container.delistview9, .view-container.dedataview, .view-container.dedataview9{
>.view-card.view-no-caption{ >.view-card.view-no-caption{
>.ivu-card-body{ >.ivu-card-body{
height: 100%; height: 100%;
......
/*** BRGIN:默认蓝色主题 ***/ /*** BRGIN:默认蓝色主题 ***/
.app_theme_blue { .app_theme_blue {
> header { > .ivu-layout-has-sider > .ivu-layout > header{
background-color: #2d5f8b;
color: #6ba1d1;
.app-theme-icon { .app-theme-icon {
color: #6ba1d1; color: #6ba1d1;
} }
.page-logo { /* .el-menu.el-menu--horizontal {
color: #fff;
}
.header-right {
> div:hover {
background: #3774aa;
}
}
.el-menu.el-menu--horizontal {
> .el-menu-item, > .el-submenu > .el-submenu__title { > .el-menu-item, > .el-submenu > .el-submenu__title {
background: #2d5f8b; background: #2d5f8b;
color: #6ba1d1; color: #6ba1d1;
...@@ -36,40 +26,41 @@ ...@@ -36,40 +26,41 @@
color: #f1f1f1; color: #f1f1f1;
} }
} }
} } */
} }
> .ivu-layout { > .ivu-layout {
> .ivu-layout-sider { > .ivu-layout-sider {
background-color: #4276a4; background-color: #4276a4;
.sider-top { .sider-top {
.ivu-icon { color: hsla(0,0%,100%,.8);
background: #2d5f8b; background: #2d5f8b;
color: #6ba1d1;
}
}
.app-menu {
> .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title {
border-left: 4px solid #d64635;
}
}
} }
}
} }
> .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu { > .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu {
background: #4276a4; background: #4276a4;
.el-menu-item:hover, .el-menu-item.is-active { .el-menu-item:hover, .el-menu-item:hover {
background: #3c6c95 !important; background: #3c6c95 !important;
color: #f1f1f1 !important; color: #f1f1f1 !important;
i { i {
color: #f1f1f1; color: #f1f1f1;
} }
} }
.el-submenu_title:hover{
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
.el-menu-item.is-active{
border-left: 4px solid #d64635;
background: #3c6c95 !important;
}
.el-submenu.is-opened, .el-submenu:hover, .el-submenu.is-active { .el-submenu.is-opened, .el-submenu:hover, .el-submenu.is-active {
> .el-submenu__title { > .el-submenu__title {
background: #3c6c95 !important; background: #4276a4;
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
} }
} }
.el-submenu__title, .el-menu-item { .el-submenu__title, .el-menu-item {
...@@ -78,9 +69,16 @@ ...@@ -78,9 +69,16 @@
color: #c9dff5; color: #c9dff5;
} }
} }
.el-submenu__title:hover{
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
.el-menu-item { .el-menu-item {
border-top: 1px solid #4276a4; border-top: 1px solid #4276a4;
background: #4276a4; background: #4276a4;
border-left: 4px solid transparent;
} }
.el-submenu { .el-submenu {
border-top: 1px solid #4276a4; border-top: 1px solid #4276a4;
...@@ -97,5 +95,11 @@ ...@@ -97,5 +95,11 @@
.ivu-menu-submenu-title{ .ivu-menu-submenu-title{
color: #f5f5f5; color: #f5f5f5;
} }
.sider-top{
color:#fff;
}
div.ivu-divider{
background-color: #c9dff5;
}
} }
/*** END:默认蓝色主题 ***/ /*** END:默认蓝色主题 ***/
\ No newline at end of file
/*** BRGIN:默认Dark Blue主题 ***/ /*** BRGIN:默认Dark Blue主题 ***/
.app_theme_darkblue { .app_theme_darkblue {
> header { > .ivu-layout-has-sider > .ivu-layout > header{
background-color: #2b3643; .app-theme-icon {
color: #606d80; color: #606d80;
.app-theme-icon { }/*
color: #606d80; .el-menu.el-menu--horizontal {
} > .el-menu-item, > .el-submenu > .el-submenu__title {
.page-logo { background: #20222A;
color: #fff; color: #606d80;
} i {
.header-right { color: #606d80;
> div:hover { }
background: #3b4a5c; }
} > .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title {
} background-color: #20222A;
.el-menu.el-menu--horizontal { color: #f1f1f1;
> .el-menu-item, > .el-submenu > .el-submenu__title { i {
background: #2b3643; color: #f1f1f1;
color: #606d80; }
i { }
color: #606d80; > .el-menu-item:hover, > .el-submenu:hover > .el-submenu__title {
} background-color: #3e4b5c;
} color: #f1f1f1 !important;
> .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title { i {
background-color: #364150; color: #f1f1f1;
color: #f1f1f1; }
i { }
color: #f1f1f1; } */
} }
} > .ivu-layout {
> .el-menu-item:hover, > .el-submenu:hover > .el-submenu__title { > .ivu-layout-sider {
background-color: #3e4b5c; background-color: #20222A;
color: #f1f1f1 !important; .sider-top {
i { color: hsla(0,0%,100%,.8);
color: #f1f1f1; background-color: #20222A;
} }
} }
} }
> .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu {
background: #20222A;
.el-menu-item:hover, .el-menu-item:hover {
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
.el-submenu__title:hover{
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
.el-menu-item.is-active{
border-left: 4px solid #409EFF;
background: #060708 !important;
color:white;
}
.el-submenu.is-opened, .el-submenu:hover, .el-submenu.is-active {
> .el-submenu__title {
background: #20222A;
}
}
.el-submenu__title, .el-menu-item {
color: #b4bcc8;
i {
color: #b4bcc8;
}
}
.el-menu-item {
border-top: 1px solid #20222A;
background: #20222A;
border-left: 4px solid transparent;
}
.el-submenu {
border-top: 1px solid #20222A;
background: #20222A;
> .el-menu {
border-top: 1px solid #20222A;
background: #20222A;
}
}
}
.ivu-menu-light{
background: #20222A;
}
.ivu-menu-submenu-title{
color: #fff;
}
.sider-top{
color:#fff;
}
div.ivu-divider{
background-color: #b4bcc8;
}
} }
> .ivu-layout { /*** END:默认Dark Blue主题 ***/
> .ivu-layout-sider { \ No newline at end of file
background-color: #364150;
.sider-top {
.ivu-icon {
background: #2b3643;
color: #606d80;
}
}
.app-menu {
> .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title {
border-left: 4px solid #1caf9a;
}
}
}
}
> .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu {
background: #364150;
.el-menu-item:hover, .el-menu-item.is-active {
background: #3e4b5c !important;
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
.el-submenu.is-opened, .el-submenu:hover, .el-submenu.is-active {
> .el-submenu__title {
background: #3e4b5c !important;
color: #f1f1f1 !important;
i {
color: #f1f1f1;
}
}
}
.el-submenu__title, .el-menu-item {
color: #b4bcc8;
i {
color: #b4bcc8;
}
}
.el-menu-item {
border-top: 1px solid #364150;
background: #364150;
}
.el-submenu {
border-top: 1px solid #364150;
background: #364150;
> .el-menu {
border-top: 1px solid #364150;
background: #364150;
}
}
}
.ivu-menu-light{
background: #364150;
}
.ivu-menu-submenu-title{
color: #fff;
}
}
/*** END:默认Dark Blue主题 ***/
\ No newline at end of file
/*** BRGIN:默认亮色主题 ***/ /*** BRGIN:默认亮色主题 ***/
.app-default-theme { .app-default-theme {
> header { > .ivu-layout-has-sider > .ivu-layout > header {
background-color: #e8eaec; .app-theme-icon {
color: #aaaaaa; color: #aaaaaa;
.app-theme-icon { }
color: #aaaaaa; /* .el-menu.el-menu--horizontal {
} > .el-menu-item, > .el-submenu > .el-submenu__title {
.page-logo { background: #e1e1e1;
color: #535c70; color: #aaaaaa;
} i {
.header-right { color: #aaaaaa;
> div:hover { }
background: #d4d4d4; }
} > .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title {
} background-color: #f6f6f6;
.el-menu.el-menu--horizontal { color: #666666;
> .el-menu-item, > .el-submenu > .el-submenu__title { i {
background: #e1e1e1; color: #666666;
color: #aaaaaa; }
i { }
color: #aaaaaa; > .el-menu-item:hover, > .el-submenu:hover > .el-submenu__title {
} background-color: #e9e9e9;
} color: #666666 !important;
> .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title { i {
background-color: #f6f6f6; color: #666666;
color: #666666; }
i { }
color: #666666; } */
} }
} > .ivu-layout {
> .el-menu-item:hover, > .el-submenu:hover > .el-submenu__title { > .ivu-layout-sider {
background-color: #e9e9e9; background-color: #f6f6f6;
color: #666666 !important; .sider-top {
i { background-color: #e8eaec;
color: #666666; .ivu-icon {
} color: #aaaaaa;
} }
} }
} }
> .ivu-layout { }
> .ivu-layout-sider { > .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu {
background-color: #f6f6f6; background: #f6f6f6;
.sider-top { .el-menu-item:hover, .el-menu-item:hover,.el-menu-item.is-active {
.ivu-icon { background: #fff !important;
background: #f6f6f6; color: #1890ff !important;
color: #aaaaaa; i {
} color: #1890ff;
} }
.app-menu { }
> .el-menu-item.is-active, > .el-submenu.is-active > .el-submenu__title { .el-submenu__title:hover{
border-left: 4px solid #1890ff; color: #1890ff !important;
} i {
} color: #1890ff;
} }
} }
> .el-menu , > .ivu-layout > .ivu-layout-sider .app-app-menu > .app-menu { .el-menu-item.is-active{
background: #f6f6f6; border-left: 4px solid #1890ff;
.el-menu-item:hover, .el-menu-item.is-active {
background: #fff !important; background: #fff !important;
color: #1890ff !important; }
i { .el-submenu.is-opened, .el-submenu:hover{
color: #1890ff; > .el-submenu__title {
} background: #f6f6f6;
} }
.el-submenu.is-opened, .el-submenu:hover, .el-submenu.is-active { }
> .el-submenu__title { .el-submenu__title, .el-menu-item {
background: #fff !important; color: #666666;
color: #1890ff !important; i {
i { color: #666666;
color: #1890ff; }
} }
} .el-menu-item {
} border-top: 1px solid #f6f6f6;
.el-submenu__title, .el-menu-item { background: #f6f6f6;
color: #666666; border-left: 4px solid transparent;
i { }
color: #666666; .el-submenu {
} border-top: 1px solid #f6f6f6;
} background: #f6f6f6;
.el-menu-item { > .el-menu {
border-top: 1px solid #f6f6f6; border-top: 1px solid #f6f6f6;
background: #f6f6f6; background: #f6f6f6;
} }
.el-submenu { }
border-top: 1px solid #f6f6f6; }
background: #f6f6f6; .ivu-menu-light{
> .el-menu { background: #f6f6f6;
border-top: 1px solid #f6f6f6; }
background: #f6f6f6; .ivu-menu-submenu-title{
} color: #000;
} }
} .sider-top{
.ivu-menu-light{ color:#000;
background: #f6f6f6; }
} div.ivu-divider{
.ivu-menu-submenu-title{ background-color: #b3b3b3;
color: #000; }
} }
} /*** END:默认亮色主题 ***/
/*** END:默认亮色主题 ***/ \ No newline at end of file
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
padding: 0; padding: 0;
height: calc(100% - 52px); height: calc(100% - 52px);
.view-container{ .view-container{
padding: 15px; padding: 12px;
} }
} }
} }
......
...@@ -117,16 +117,18 @@ export declare interface Util { ...@@ -117,16 +117,18 @@ export declare interface Util {
* @memberof Util * @memberof Util
*/ */
srfFilePath2(name: string): string; srfFilePath2(name: string): string;
/** /**
* 附加参数格式化 * 附加参数格式化
* *
* @static * @static
* @param {any} arg 表单数据 * @param {any} arg 表单数据
* @param {any} parent 外层context或viewparams
* @param {any} params 附加参数 * @param {any} params 附加参数
* @returns {any} * @returns {any}
* @memberof Util * @memberof Util
*/ */
formatData(arg: any, params: any): any formatData(arg: any,parent:any, params: any): any ;
/** /**
* 日期格式化 * 日期格式化
......
...@@ -293,11 +293,12 @@ export class Util { ...@@ -293,11 +293,12 @@ export class Util {
* *
* @static * @static
* @param {any} arg 表单数据 * @param {any} arg 表单数据
* @param {any} parent 外层context或viewparams
* @param {any} params 附加参数 * @param {any} params 附加参数
* @returns {any} * @returns {any}
* @memberof Util * @memberof Util
*/ */
public static formatData(arg: any, params: any): any { public static formatData(arg: any,parent:any, params: any): any {
let _data: any = {}; let _data: any = {};
Object.keys(params).forEach((name: string) => { Object.keys(params).forEach((name: string) => {
if (!name) { if (!name) {
...@@ -307,7 +308,13 @@ export class Util { ...@@ -307,7 +308,13 @@ export class Util {
if (value && value.startsWith('%') && value.endsWith('%')) { if (value && value.startsWith('%') && value.endsWith('%')) {
const key = value.substring(1, value.length - 1); const key = value.substring(1, value.length - 1);
if (arg && arg.hasOwnProperty(key)) { if (arg && arg.hasOwnProperty(key)) {
value = (arg[key] !== null && arg[key] !== undefined) ? arg[key] : null; if(arg[key] !== null && arg[key] !== undefined){
value = arg[key];
}else if(parent[key] !== null && parent[key] !== undefined){
value = parent[key];
}else{
value = null;
}
} else { } else {
value = null; value = null;
} }
......
...@@ -21,28 +21,32 @@ ...@@ -21,28 +21,32 @@
} }
} }
.el-submenu__title i, .el-menu-item i { .el-submenu__title i, .el-menu-item i {
font-size: 16px; font-size: 12px;
width: 16px; width: 18px;
}
.el-submenu__title .app-menu-icon,.el-submenu__title .app-menu-icon{
width:20px;
font-size: 14px;
} }
.el-submenu__title .text { .el-submenu__title .text {
font-size: 16px; font-size: 16px;
} }
.el-menu-item, .el-submenu__title { .el-menu-item, .el-submenu__title {
height: 36px; height: 50px;
font-size: 16px; font-size: 14px;
line-height: 32px; line-height: 50px;
} }
.el-menu-item, .el-submenu, .el-menu { .el-menu-item, .el-submenu, .el-menu {
border-top: 1px solid #fff; border-top: 1px solid #fff;
} }
> .el-menu-item, > .el-submenu > .el-submenu__title { > .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px; height: 56px;
line-height: 36px; line-height: 56px;
border-left: 4px solid transparent;
padding-left: 16px !important; padding-left: 16px !important;
} }
.app-menu-icon { .app-menu-icon {
margin-right: 4px; margin: 4px;
text-align: center;
} }
> .el-submenu { > .el-submenu {
> .el-menu { > .el-menu {
...@@ -70,8 +74,8 @@ ...@@ -70,8 +74,8 @@
} }
} }
.ivu-divider-horizontal { .ivu-divider-horizontal {
width: calc(100% - 32px); width: 100%;
min-width: calc(100% - 32px); min-width: 100%;
margin: 4px auto; margin: 4px auto;
margin-bottom: 1px; margin-bottom: 1px;
} }
...@@ -99,8 +103,8 @@ ...@@ -99,8 +103,8 @@
} }
} }
.ivu-divider-horizontal { .ivu-divider-horizontal {
width: calc(100% - 12px); width: 100%;
min-width: calc(100% - 12px); min-width: 100%;
margin: 4px auto; margin: 4px auto;
margin-bottom: 1px; margin-bottom: 1px;
} }
......
...@@ -32,7 +32,18 @@ ...@@ -32,7 +32,18 @@
</i-col> </i-col>
<i-col v-show="detailsModel.modelenable.visible" :style="{}" :lg="{ span: 24, offset: 0 }"> <i-col v-show="detailsModel.modelenable.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='modelenable' :itemRules="this.rules.modelenable" class='' :caption="$t('entities.wfprocessdefinition.main_form.details.modelenable')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.modelenable.error" :isEmptyCaption="false" labelPos="LEFT"> <app-form-item name='modelenable' :itemRules="this.rules.modelenable" class='' :caption="$t('entities.wfprocessdefinition.main_form.details.modelenable')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.modelenable.error" :isEmptyCaption="false" labelPos="LEFT">
<dropdown-list v-model="data.modelenable" :data="data" :itemParam="{}" :disabled="detailsModel.modelenable.disabled" style="width:100px;width: 100px;" tag='YesNo' codelistType='STATIC' placeholder='请选择...'></dropdown-list> <dropdown-list
v-model="data.modelenable"
:data="data"
:context="context"
:viewparams="viewparams"
:itemParam="{}"
:disabled="detailsModel.modelenable.disabled"
style="width:100px;width: 100px;"
tag='YesNo'
codelistType='STATIC'
placeholder='请选择...'>
</dropdown-list>
</app-form-item> </app-form-item>
</i-col> </i-col>
......
...@@ -5238,10 +5238,10 @@ human-signals@^1.1.1: ...@@ -5238,10 +5238,10 @@ human-signals@^1.1.1:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
ibiz-gantt-elastic@^1.0.15: ibiz-gantt-elastic@^1.0.16:
version "1.0.15" version "1.0.16"
resolved "https://registry.yarnpkg.com/ibiz-gantt-elastic/-/ibiz-gantt-elastic-1.0.15.tgz#e57736254aaf5baea28225bce2d29d8bd8adcc2d" resolved "https://registry.npm.taobao.org/ibiz-gantt-elastic/download/ibiz-gantt-elastic-1.0.16.tgz#e2de7e8d4bdb3c292cfbc97c4f970c8ecfe6c43b"
integrity sha512-V3uLoN3BN32BagpV1kLm4nFSs4neJ/Cnykd7OIyLv11rjqTWFAENHBpZekioPFF4k2iCyAdRr5smzZbGJdSQxg== integrity sha1-4t5+jUvbPCks+8l8T5cMjs/mxDs=
dependencies: dependencies:
dayjs "^1.8.16" dayjs "^1.8.16"
resize-observer-polyfill "^1.5.1" resize-observer-polyfill "^1.5.1"
...@@ -5249,10 +5249,10 @@ ibiz-gantt-elastic@^1.0.15: ...@@ -5249,10 +5249,10 @@ ibiz-gantt-elastic@^1.0.15:
vue-slider-component "^3.0.40" vue-slider-component "^3.0.40"
vue-switches "^2.0.1" vue-switches "^2.0.1"
ibiz-vue-lib@^0.1.9: ibiz-vue-lib@^0.1.10:
version "0.1.9" version "0.1.10"
resolved "https://registry.yarnpkg.com/ibiz-vue-lib/-/ibiz-vue-lib-0.1.9.tgz#d7088deb5577af3095887ca897c1710bae174682" resolved "https://registry.npm.taobao.org/ibiz-vue-lib/download/ibiz-vue-lib-0.1.10.tgz#660f6f7fb73b5c63e3daa0921faf13c0cdc96de5"
integrity sha512-CotV3xIB04+QUUeMlfsVj5BseVPQ+IHyKdwU+MXGh+2e91Nt7N/z/LElakhAiGkSpaaKoMdlKCOdhD0qqJ3wNQ== integrity sha1-Zg9vf7c7XGPj2qCSH68TwM3JbeU=
dependencies: dependencies:
axios "^0.19.2" axios "^0.19.2"
core-js "^3.6.4" core-js "^3.6.4"
......
...@@ -162,6 +162,7 @@ public class WFGroupServiceImpl extends ServiceImpl<WFGroupMapper, WFGroup> impl ...@@ -162,6 +162,7 @@ public class WFGroupServiceImpl extends ServiceImpl<WFGroupMapper, WFGroup> impl
@Override @Override
public List<JSONObject> select(String sql, Map param){ public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param); return this.baseMapper.selectBySQL(sql,param);
......
...@@ -243,6 +243,7 @@ public class WFMemberServiceImpl extends ServiceImpl<WFMemberMapper, WFMember> i ...@@ -243,6 +243,7 @@ public class WFMemberServiceImpl extends ServiceImpl<WFMemberMapper, WFMember> i
} }
} }
@Override @Override
public List<JSONObject> select(String sql, Map param){ public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param); return this.baseMapper.selectBySQL(sql,param);
......
...@@ -155,6 +155,7 @@ public class WFProcessDefinitionServiceImpl extends ServiceImpl<WFProcessDefinit ...@@ -155,6 +155,7 @@ public class WFProcessDefinitionServiceImpl extends ServiceImpl<WFProcessDefinit
@Override @Override
public List<JSONObject> select(String sql, Map param){ public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param); return this.baseMapper.selectBySQL(sql,param);
......
...@@ -155,6 +155,7 @@ public class WFSystemServiceImpl extends ServiceImpl<WFSystemMapper, WFSystem> i ...@@ -155,6 +155,7 @@ public class WFSystemServiceImpl extends ServiceImpl<WFSystemMapper, WFSystem> i
@Override @Override
public List<JSONObject> select(String sql, Map param){ public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param); return this.baseMapper.selectBySQL(sql,param);
......
...@@ -158,6 +158,7 @@ public class WFUserServiceImpl extends ServiceImpl<WFUserMapper, WFUser> impleme ...@@ -158,6 +158,7 @@ public class WFUserServiceImpl extends ServiceImpl<WFUserMapper, WFUser> impleme
@Override @Override
public List<JSONObject> select(String sql, Map param){ public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param); return this.baseMapper.selectBySQL(sql,param);
......
<?xml version="1.1" encoding="UTF-8" standalone="no"?> !!!!模版产生代码错误:----
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${dbinst.getUserName()} [in template "CODETEMPL_zh_CN" at line 28, column 24]
<!--输出实体[WF_PSSYSTEM]数据结构 --> ----
\ No newline at end of file
<!--输出实体[WF_GROUP]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-wf_group-24-2">
<createTable tableName="IBZWFGROUP">
<column name="GROUPID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_WF_GROUP_GROUPID"/>
</column>
<column name="GROUPNAME" remarks="" type="VARCHAR(100)">
</column>
<column name="GROUPSCOPE" remarks="" type="VARCHAR(100)">
</column>
</createTable>
</changeSet>
<!--输出实体[WF_DEFINITION]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-wf_definition-51-3">
<createTable tableName="IBZWFDEFINITION">
<column name="DEFINITIONKEY" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_WF_DEFINITION_DEFINITIONKEY"/>
</column>
<column name="DEFINITIONNAME" remarks="" type="VARCHAR(100)">
</column>
<column name="MODELVERSION" remarks="" type="INT">
</column>
<column name="MODELENABLE" remarks="" type="INT">
</column>
<column name="PSSYSTEMID" remarks="" type="VARCHAR(100)">
</column>
<column name="TASKDEFINITIONKEY" remarks="" type="VARCHAR(100)">
</column>
<column name="MD5CHECK" remarks="" type="VARCHAR(100)">
</column>
<column name="BPMNFILE" remarks="" type="VARCHAR(1000)">
</column>
<column name="DEPLOYKEY" remarks="" type="VARCHAR(100)">
</column>
</createTable>
</changeSet>
<!--输出实体[WF_GROUP_MEMBER]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-wf_group_member-40-4">
<createTable tableName="IBZWFMEMBER">
<column name="MEMBERID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_WF_GROUP_MEMBER_MEMBERID"/>
</column>
<column name="MEMBERNAME" remarks="" type="VARCHAR(100)">
</column>
<column name="GROUPID" remarks="" type="VARCHAR(100)">
</column>
<column name="USERID" remarks="" type="VARCHAR(100)">
</column>
</createTable>
</changeSet>
<!--输出实体[WF_PSSYSTEM]外键关系 -->
<!--输出实体[WF_GROUP]外键关系 -->
<!--输出实体[WF_DEFINITION]外键关系 -->
<!--输出实体[WF_GROUP_MEMBER]外键关系 -->
<changeSet author="a_A_5d9d78509" id="fk-wf_group_member-40-5">
<addForeignKeyConstraint baseColumnNames="GROUPID" baseTableName="IBZWFMEMBER" constraintName="DER1N_WF_GROUP_MEMBER_WF_GROUP" deferrable="false" initiallyDeferred="false" onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="GROUPID" referencedTableName="IBZWFGROUP" validate="true"/>
</changeSet>
</databaseChangeLog>
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
<![CDATA[ SELECT t1.`GROUPID`, t1.`GROUPNAME`, t1.`GROUPSCOPE` FROM `IBZWFGROUP` t1 <![CDATA[ SELECT t1.`GROUPID`, t1.`GROUPNAME`, t1.`GROUPSCOPE` FROM `IBZWFGROUP` t1
]]> ]]>
</sql> </sql>
<!--数据查询[Default]-->
<sql id="Default" databaseId="oracle">
<![CDATA[ SELECT t1.GROUPID, t1.GROUPNAME, t1.GROUPSCOPE FROM IBZWFGROUP t1
]]>
</sql>
</mapper> </mapper>
...@@ -47,6 +47,10 @@ ...@@ -47,6 +47,10 @@
<![CDATA[ SELECT t1.`GROUPID`, t11.`GROUPNAME`, t1.`MEMBERID`, t1.`MEMBERNAME`, t21.`PERSONNAME`, t1.`USERID` FROM `IBZWFMEMBER` t1 LEFT JOIN IBZWFGROUP t11 ON t1.GROUPID = t11.GROUPID LEFT JOIN IBZUSER t21 ON t1.USERID = t21.USERID <![CDATA[ SELECT t1.`GROUPID`, t11.`GROUPNAME`, t1.`MEMBERID`, t1.`MEMBERNAME`, t21.`PERSONNAME`, t1.`USERID` FROM `IBZWFMEMBER` t1 LEFT JOIN IBZWFGROUP t11 ON t1.GROUPID = t11.GROUPID LEFT JOIN IBZUSER t21 ON t1.USERID = t21.USERID
]]> ]]>
</sql> </sql>
<!--数据查询[Default]-->
<sql id="Default" databaseId="oracle">
<![CDATA[ SELECT t1.GROUPID, t11.GROUPNAME, t1.MEMBERID, t1.MEMBERNAME, t21.PERSONNAME, t1.USERID FROM IBZWFMEMBER t1 LEFT JOIN IBZWFGROUP t11 ON t1.GROUPID = t11.GROUPID LEFT JOIN IBZUSER t21 ON t1.USERID = t21.USERID
]]>
</sql>
</mapper> </mapper>
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
<select id="selectById" resultMap="WFProcessDefinitionResultMap" databaseId="mysql"> <select id="selectById" resultMap="WFProcessDefinitionResultMap" databaseId="mysql">
<![CDATA[select t1.* from (SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1 ) t1 where definitionkey=#{id}]]> <![CDATA[select t1.* from (SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1 ) t1 where definitionkey=#{id}]]>
</select> </select>
<select id="selectById" resultMap="WFProcessDefinitionResultMap" databaseId="oracle">
<![CDATA[select t1.* from (SELECT t1.BPMNFILE, t1.DEFINITIONKEY, t1.DEFINITIONNAME, t1.DEPLOYKEY, t1.MD5CHECK, t1.MODELENABLE, t1.MODELVERSION, t1.PSSYSTEMID, t1.TASKDEFINITIONKEY FROM IBZWFDEFINITION t1 ) t1 where definitionkey=#{id}]]>
</select>
<!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 --> <!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 -->
<resultMap id="WFProcessDefinitionResultMap" type="cn.ibizlab.core.workflow.domain.WFProcessDefinition" autoMapping="true"> <resultMap id="WFProcessDefinitionResultMap" type="cn.ibizlab.core.workflow.domain.WFProcessDefinition" autoMapping="true">
...@@ -31,12 +34,20 @@ ...@@ -31,12 +34,20 @@
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1 <![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1
]]> ]]>
</sql> </sql>
<!--数据查询[Default]-->
<sql id="Default" databaseId="oracle">
<![CDATA[ SELECT t1.BPMNFILE, t1.DEFINITIONKEY, t1.DEFINITIONNAME, t1.DEPLOYKEY, t1.MD5CHECK, t1.MODELENABLE, t1.MODELVERSION, t1.PSSYSTEMID, t1.TASKDEFINITIONKEY FROM IBZWFDEFINITION t1
]]>
</sql>
<!--数据查询[View]--> <!--数据查询[View]-->
<sql id="View" databaseId="mysql"> <sql id="View" databaseId="mysql">
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1 <![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1
]]> ]]>
</sql> </sql>
<!--数据查询[View]-->
<sql id="View" databaseId="oracle">
<![CDATA[ SELECT t1.BPMNFILE, t1.DEFINITIONKEY, t1.DEFINITIONNAME, t1.DEPLOYKEY, t1.MD5CHECK, t1.MODELENABLE, t1.MODELVERSION, t1.PSSYSTEMID, t1.TASKDEFINITIONKEY FROM IBZWFDEFINITION t1
]]>
</sql>
</mapper> </mapper>
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
<select id="selectById" resultMap="WFSystemResultMap" databaseId="mysql"> <select id="selectById" resultMap="WFSystemResultMap" databaseId="mysql">
<![CDATA[select t1.* from (SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1 ) t1 where pssystemid=#{id}]]> <![CDATA[select t1.* from (SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1 ) t1 where pssystemid=#{id}]]>
</select> </select>
<select id="selectById" resultMap="WFSystemResultMap" databaseId="oracle">
<![CDATA[select t1.* from (SELECT t1.PSSYSTEMID, t1.PSSYSTEMNAME FROM IBZPSSYSTEM t1 ) t1 where pssystemid=#{id}]]>
</select>
<!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 --> <!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 -->
<resultMap id="WFSystemResultMap" type="cn.ibizlab.core.workflow.domain.WFSystem" autoMapping="true"> <resultMap id="WFSystemResultMap" type="cn.ibizlab.core.workflow.domain.WFSystem" autoMapping="true">
...@@ -30,12 +33,20 @@ ...@@ -30,12 +33,20 @@
<![CDATA[ SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1 <![CDATA[ SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1
]]> ]]>
</sql> </sql>
<!--数据查询[Default]-->
<sql id="Default" databaseId="oracle">
<![CDATA[ SELECT t1.PSSYSTEMID, t1.PSSYSTEMNAME FROM IBZPSSYSTEM t1
]]>
</sql>
<!--数据查询[View]--> <!--数据查询[View]-->
<sql id="View" databaseId="mysql"> <sql id="View" databaseId="mysql">
<![CDATA[ SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1 <![CDATA[ SELECT t1.`PSSYSTEMID`, t1.`PSSYSTEMNAME` FROM `IBZPSSYSTEM` t1
]]> ]]>
</sql> </sql>
<!--数据查询[View]-->
<sql id="View" databaseId="oracle">
<![CDATA[ SELECT t1.PSSYSTEMID, t1.PSSYSTEMNAME FROM IBZPSSYSTEM t1
]]>
</sql>
</mapper> </mapper>
...@@ -29,6 +29,10 @@ ...@@ -29,6 +29,10 @@
<![CDATA[ SELECT t1.`PERSONNAME`, t1.`USERID`, t1.`USERNAME` FROM `IBZUSER` t1 <![CDATA[ SELECT t1.`PERSONNAME`, t1.`USERID`, t1.`USERNAME` FROM `IBZUSER` t1
]]> ]]>
</sql> </sql>
<!--数据查询[Default]-->
<sql id="Default" databaseId="oracle">
<![CDATA[ SELECT t1.PERSONNAME, t1.USERID, t1.USERNAME FROM IBZUSER t1
]]>
</sql>
</mapper> </mapper>
...@@ -48,6 +48,10 @@ public enum DEPredefinedFieldType { ...@@ -48,6 +48,10 @@ public enum DEPredefinedFieldType {
* 逻辑有效 * 逻辑有效
*/ */
LOGICVALID, LOGICVALID,
/**
* 排序
*/
ORDERVALUE,
/** /**
* 不处理 * 不处理
*/ */
......
...@@ -20,23 +20,28 @@ import org.springframework.util.StringUtils; ...@@ -20,23 +20,28 @@ import org.springframework.util.StringUtils;
@Service @Service
public class IBZConfigService extends ServiceImpl<IBZConfigMapper, IBZConfig> implements IService<IBZConfig> { public class IBZConfigService extends ServiceImpl<IBZConfigMapper, IBZConfig> implements IService<IBZConfig> {
@Value("${ibiz.systemid:ibzwf}") @Value("${ibiz.systemid:ibzwf}")
private String systemId; private String systemId;
@Cacheable( value="ibzou_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2") @Value("${ibiz.admin.userid:0100}")
private String adminuserid;
@Cacheable( value="ibzrt_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2")
public JSONObject getConfig(String cfgType,String targetType,String userId) public JSONObject getConfig(String cfgType,String targetType,String userId)
{ {
if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType)) if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType))
throw new BadRequestAlertException("获取配置失败,参数缺失","IBZConfig",cfgType); throw new BadRequestAlertException("获取配置失败,参数缺失","IBZConfig",cfgType);
IBZConfig config=this.getOne(Wrappers.query(IBZConfig.builder().systemId(systemId).cfgType(cfgType).targetType(targetType).userId(userId).build()),false); IBZConfig config=this.getOne(Wrappers.query(IBZConfig.builder().systemId(systemId).cfgType(cfgType).targetType(targetType).userId(userId).build()),false);
if(config==null) if(config==null) {
return new JSONObject(); config=this.getOne(Wrappers.query(IBZConfig.builder().systemId(systemId).cfgType(cfgType).targetType(targetType).userId(adminuserid).build()),false);
else if(config==null) {
return JSON.parseObject(config.getCfg()); return new JSONObject();
}
}
return JSON.parseObject(config.getCfg());
} }
@CacheEvict( value="ibzou_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2") @CacheEvict( value="ibzrt_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2")
public boolean saveConfig(String cfgType,String targetType,String userId,JSONObject config) public boolean saveConfig(String cfgType,String targetType,String userId,JSONObject config)
{ {
if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType)) if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType))
...@@ -47,7 +52,7 @@ public class IBZConfigService extends ServiceImpl<IBZConfigMapper, IBZConfig> im ...@@ -47,7 +52,7 @@ public class IBZConfigService extends ServiceImpl<IBZConfigMapper, IBZConfig> im
return this.saveOrUpdate(IBZConfig.builder().systemId(systemId).cfgType(cfgType).targetType(targetType).userId(userId).cfg(cfg).updateDate(DataObject.getNow()).build()); return this.saveOrUpdate(IBZConfig.builder().systemId(systemId).cfgType(cfgType).targetType(targetType).userId(userId).cfg(cfg).updateDate(DataObject.getNow()).build());
} }
@CacheEvict( value="ibzou_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2") @CacheEvict( value="ibzrt_configs",key = "'cfgid:'+#p0+'||'+#p1+'||'+#p2")
public void resetConfig(String cfgType,String targetType,String userId) public void resetConfig(String cfgType,String targetType,String userId)
{ {
if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType)) if(StringUtils.isEmpty(userId)||StringUtils.isEmpty(cfgType)||StringUtils.isEmpty(targetType))
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册