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

ibiz4j 发布系统代码

上级 b00fa7b6
...@@ -28,9 +28,16 @@ export default class SDFileAuthServiceBase extends AuthService { ...@@ -28,9 +28,16 @@ export default class SDFileAuthServiceBase extends AuthService {
*/ */
public getOPPrivs(mainSateOPPrivs:any):any{ public getOPPrivs(mainSateOPPrivs:any):any{
let curDefaultOPPrivs:any = this.getSysOPPrivs(); let curDefaultOPPrivs:any = this.getSysOPPrivs();
let copyDefaultOPPrivs:any = JSON.parse(JSON.stringify(curDefaultOPPrivs));
if(mainSateOPPrivs){ if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs); Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
} }
// 统一资源优先
Object.keys(curDefaultOPPrivs).forEach((name:string) => {
if(this.sysOPPrivsMap.get(name) && copyDefaultOPPrivs[name] === 0){
curDefaultOPPrivs[name] = copyDefaultOPPrivs[name];
}
});
return curDefaultOPPrivs; return curDefaultOPPrivs;
} }
......
...@@ -20,7 +20,7 @@ export default class SysOperator { ...@@ -20,7 +20,7 @@ export default class SysOperator {
* @type any * @type any
* @memberof SysOperator * @memberof SysOperator
*/ */
public expirationTime:any; public static expirationTime:any;
/** /**
* 预定义类型 * 预定义类型
...@@ -48,6 +48,26 @@ export default class SysOperator { ...@@ -48,6 +48,26 @@ export default class SysOperator {
codelistid:"SysOperator" codelistid:"SysOperator"
}; };
/**
* 获取过期时间
*
* @type any
* @memberof SysOperator
*/
public getExpirationTime(){
return SysOperator.expirationTime;
}
/**
* 设置过期时间
*
* @type any
* @memberof SysOperator
*/
public setExpirationTime(value:any){
SysOperator.expirationTime = value;
}
/** /**
* 自定义参数集合 * 自定义参数集合
* *
......
...@@ -101,7 +101,7 @@ export default class AppEmbedPicker extends Vue { ...@@ -101,7 +101,7 @@ export default class AppEmbedPicker extends Vue {
* @type {string} * @type {string}
* @memberof AppEmbedPicker * @memberof AppEmbedPicker
*/ */
@Prop() public valueItem?: string; @Prop() public valueItem!: string;
/** /**
* 关联视图名称 * 关联视图名称
...@@ -176,17 +176,28 @@ export default class AppEmbedPicker extends Vue { ...@@ -176,17 +176,28 @@ export default class AppEmbedPicker extends Vue {
if (!this.data) { if (!this.data) {
return; return;
} }
let formData:any = JSON.parse(this.data);
let arg: any = {}; let arg: any = {};
// 合并视图上下文参数和视图参数 // 合并视图上下文参数和视图参数
arg.param = JSON.parse(JSON.stringify(this.viewparams)); arg.param = JSON.parse(JSON.stringify(this.viewparams));
arg.context = JSON.parse(JSON.stringify(this.context)); arg.context = JSON.parse(JSON.stringify(this.context));
if(formData[this.name] && formData[this.valueItem]){
let selectItems:Array<any> = [];
let tempvalue: Array<any> = formData[this.valueItem].split(',');
let temptext: Array<any> = formData[this.name].split(',');
tempvalue.forEach((srfkey: any, index: number)=>{
selectItems.push({ srfmajortext : temptext[index], srfkey: srfkey });
});
arg.param.selectedData = selectItems;
this.$forceUpdate();
}
// 附加参数处理 // 附加参数处理
if (this.localContext && Object.keys(this.localContext).length >0) { if (this.localContext && Object.keys(this.localContext).length >0) {
let _context = this.$util.computedNavData(this.data,arg.context,arg.param,this.localContext); let _context = this.$util.computedNavData(formData,arg.context,arg.param,this.localContext);
Object.assign(arg.context,_context); Object.assign(arg.context,_context);
} }
if (this.localParam && Object.keys(this.localParam).length >0) { if (this.localParam && Object.keys(this.localParam).length >0) {
let _param = this.$util.computedNavData(this.data,arg.param,arg.param,this.localParam); let _param = this.$util.computedNavData(formData,arg.context,arg.param,this.localParam);
Object.assign(arg.param,_param); Object.assign(arg.param,_param);
} }
this.viewdata = JSON.stringify(arg.context); this.viewdata = JSON.stringify(arg.context);
...@@ -257,12 +268,10 @@ export default class AppEmbedPicker extends Vue { ...@@ -257,12 +268,10 @@ export default class AppEmbedPicker extends Vue {
srfkey = srfkey.substring(0,srfkey.length-1); srfkey = srfkey.substring(0,srfkey.length-1);
srfmajortext = srfmajortext.substring(0,srfmajortext.length-1); srfmajortext = srfmajortext.substring(0,srfmajortext.length-1);
if (this.valueItem) { if (this.valueItem) {
let value = srfkey; this.$emit('formitemvaluechange', { name: this.valueItem, value: srfkey });
this.$emit('formitemvaluechange', { name: this.valueItem, value: value });
} }
if (this.name) { if (this.name) {
let value = srfmajortext; this.$emit('formitemvaluechange', { name: this.name, value: srfmajortext });
this.$emit('formitemvaluechange', { name: this.name, value: value });
} }
} }
} }
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
class='dropdown-list-dynamic' class='dropdown-list-dynamic'
:transfer="true" :transfer="true"
v-model="currentVal" v-model="currentVal"
:disabled="disabled === true ? true : false" :disabled="disabled"
:clearable="true" :clearable="true"
:filterable="filterable === true ? true : false" :filterable="filterable"
@on-open-change="onClick" @on-open-change="onClick"
:placeholder="$t('components.dropDownListDynamic.placeholder')"> :placeholder="$t('components.dropDownListDynamic.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('userCustom.'+tag+'.'+item.value)!== ('userCustom.'+tag+'.'+item.value))?$t('userCustom.'+tag+'.'+item.value) : item.text}}</i-option> <i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('userCustom.'+tag+'.'+item.value)!== ('userCustom.'+tag+'.'+item.value))?$t('userCustom.'+tag+'.'+item.value) : item.text}}</i-option>
...@@ -114,7 +114,7 @@ export default class DropDownListDynamic extends Vue { ...@@ -114,7 +114,7 @@ export default class DropDownListDynamic extends Vue {
* @type {boolean} * @type {boolean}
* @memberof DropDownListDynamic * @memberof DropDownListDynamic
*/ */
@Prop() public filterable?: boolean; public filterable: boolean = true;
/** /**
* 下拉选提示内容 * 下拉选提示内容
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
:transfer="true" :transfer="true"
transfer-class-name="dropdown-list-mpicker-transfer" transfer-class-name="dropdown-list-mpicker-transfer"
v-model="currentVal" v-model="currentVal"
:disabled="disabled === true ? true : false" :disabled="disabled"
:clearable="true" :clearable="true"
:filterable="filterable === true ? true : false" :filterable="filterable"
@on-open-change="onClick" @on-open-change="onClick"
:placeholder="$t('components.dropDownListMpicker.placeholder')"> :placeholder="$t('components.dropDownListMpicker.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value.toString()" :label="item.text"> <i-option v-for="(item, index) in items" :key="index" :value="item.value.toString()" :label="item.text">
...@@ -88,7 +88,7 @@ export default class DropDownListMpicker extends Vue { ...@@ -88,7 +88,7 @@ export default class DropDownListMpicker extends Vue {
* @type {boolean} * @type {boolean}
* @memberof DropDownListMpicker * @memberof DropDownListMpicker
*/ */
@Prop() public filterable?: boolean; public filterable: boolean = true;
/** /**
* 下拉选提示内容 * 下拉选提示内容
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
class='dropdown-list' class='dropdown-list'
:transfer="true" :transfer="true"
v-model="currentVal" v-model="currentVal"
:disabled="disabled === true ? true : false" :disabled="disabled"
:clearable="true" :clearable="true"
:filterable="filterable === true ? true : false" :filterable="filterable"
@on-open-change="onClick" @on-open-change="onClick"
:placeholder="$t('components.dropDownList.placeholder')"> :placeholder="$t('components.dropDownList.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option> <i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
...@@ -141,7 +141,7 @@ export default class DropDownList extends Vue { ...@@ -141,7 +141,7 @@ export default class DropDownList extends Vue {
* @type {boolean} * @type {boolean}
* @memberof DropDownList * @memberof DropDownList
*/ */
@Prop() public filterable?: boolean; public filterable: boolean = true;
/** /**
* 下拉选提示内容 * 下拉选提示内容
......
...@@ -148,49 +148,36 @@ export default class CodeListService { ...@@ -148,49 +148,36 @@ export default class CodeListService {
let cacheTimeout:any = codelist.cacheTimeout; let cacheTimeout:any = codelist.cacheTimeout;
// 启用缓存 // 启用缓存
if(isEnableCache){ if(isEnableCache){
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
promise.then((result:any) =>{
if(result.length > 0){
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
CodeListService.codelistCache.delete(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`);
return resolve(result);
}else{
return resolve([]);
}
}).catch((result:any) =>{
return reject(result);
})
}
// 加载完成,从本地缓存获取 // 加载完成,从本地缓存获取
if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items; let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items;
if(items.length >0){ if(items.length >0){
if(cacheTimeout !== -1){ if(new Date().getTime() <= codelist.getExpirationTime()){
if(new Date().getTime() > codelist.expirationTime){ return resolve(items);
codelist.getItems(context,data,isloading).then((result:any) =>{
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
codelist.expirationTime = new Date().getTime() + cacheTimeout;
resolve(result);
}).catch((error:any) =>{
Promise.reject([]);
})
}else{
return resolve(items);
}
}else{
return resolve(items);
} }
} }
} }
if (codelist) { if (codelist) {
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
promise.then((result:any) =>{
if(result.length > 0){
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
return resolve(result);
}else{
return resolve([]);
}
}).catch((result:any) =>{
return reject(result);
})
}
// 加载中,UI又需要数据,解决连续加载同一代码表问题 // 加载中,UI又需要数据,解决连续加载同一代码表问题
if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)); callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`));
}else{ }else{
let result:Promise<any> = codelist.getItems(context,data,isloading); let result:Promise<any> = codelist.getItems(context,data,isloading);
CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result); CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result);
if(cacheTimeout !== -1){ codelist.setExpirationTime(new Date().getTime() + cacheTimeout);
codelist.expirationTime = new Date().getTime() + cacheTimeout;
}
callback(context,data,tag,result); callback(context,data,tag,result);
} }
} }
......
...@@ -4,5 +4,5 @@ Tip: If the failing expression is known to be legally refer to something that's ...@@ -4,5 +4,5 @@ Tip: If the failing expression is known to be legally refer to something that's
---- ----
FTL stack trace ("~" means nesting-related): FTL stack trace ("~" means nesting-related):
- Failed at: ${ctrl.getPSAppDataEntity().getMajorP... [in template "TEMPLCODE_zh_CN" at line 977, column 39] - Failed at: ${ctrl.getPSAppDataEntity().getMajorP... [in template "TEMPLCODE_zh_CN" at line 1100, column 39]
---- ----
\ No newline at end of file
version: "3.2"
services:
ibzdisk-mysql:
image: mysql:5.7.20
volumes:
- $PWD/../../../../volumes/mysql/:/var/lib/mysql/
networks:
- agent_network
environment:
- TZ=Asia/Shanghai
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=a_A_5d9d78509
ports:
- 3306:3306
command: mysqld --lower_case_table_names=1 --skip-ssl --character_set_server=utf8 --explicit_defaults_for_timestamp
networks:
agent_network:
attachable: true
...@@ -36,5 +36,9 @@ zuul: ...@@ -36,5 +36,9 @@ zuul:
path: /dictionarys/** path: /dictionarys/**
serviceId: ${ibiz.ref.service.dict:ibzdict-api} serviceId: ${ibiz.ref.service.dict:ibzdict-api}
stripPrefix: false stripPrefix: false
disk:
path: /net-disk/**
serviceId: ${ibiz.ref.service.disk:disk-api}
stripPrefix: false
sensitive-headers: sensitive-headers:
- Cookie,Set-Cookie,Authorization - Cookie,Set-Cookie,Authorization
server: server:
port: 8081 port: 40006
#Log配置 #Log配置
logging: logging:
level: level:
......
...@@ -67,6 +67,33 @@ public class SearchContextBase implements ISearchContext{ ...@@ -67,6 +67,33 @@ public class SearchContextBase implements ISearchContext{
* 工作流流程标识 * 工作流流程标识
*/ */
public String processDefinitionKey; public String processDefinitionKey;
/**
* 获取工作流步骤标识
*/
public String getUserTaskId() {
if(StringUtils.isEmpty(userTaskId)){
Object taskId=params.get("usertaskid");
return StringUtils.isEmpty(taskId)?null:String.valueOf(taskId);
}else{
return userTaskId;
}
}
/**
* 获取工作流流程标识
* @return
*/
public String getProcessDefinitionKey() {
if(StringUtils.isEmpty(processDefinitionKey)){
Object processKey=params.get("processdefinitionkey");
return StringUtils.isEmpty(processKey)?null:String.valueOf(processKey);
}
else{
return processDefinitionKey;
}
}
/** /**
* 获取分页参数 * 获取分页参数
* @return * @return
......
...@@ -3,7 +3,7 @@ spring: ...@@ -3,7 +3,7 @@ spring:
cloud: cloud:
nacos: nacos:
discovery: discovery:
server-addr: 127.0.0.1:8848 server-addr: 172.16.102.211:8848
enabled: true enabled: true
eureka: eureka:
......
...@@ -7,7 +7,7 @@ spring: ...@@ -7,7 +7,7 @@ spring:
caffeine: caffeine:
spec: initialCapacity=5,maximumSize=500,expireAfterWrite=3600s spec: initialCapacity=5,maximumSize=500,expireAfterWrite=3600s
redis: redis:
host: 127.0.0.1 host: 172.16.100.243
port: 6379 port: 6379
password: password:
database: 0 database: 0
...@@ -22,9 +22,9 @@ spring: ...@@ -22,9 +22,9 @@ spring:
max-file-size: 100MB max-file-size: 100MB
max-request-size: 100MB max-request-size: 100MB
datasource: datasource:
username: root username: a_A_5d9d78509
password: 'root' password: '@6dEfb3@'
url: jdbc:mysql://127.0.0.1:3306/ibzdisk?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true url: jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true
driver-class-name: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver
filters: stat,wall,log4j2 filters: stat,wall,log4j2
#配置初始化大小/最小/最大 #配置初始化大小/最小/最大
...@@ -45,7 +45,7 @@ spring: ...@@ -45,7 +45,7 @@ spring:
pool-prepared-statements: false pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20 max-pool-prepared-statement-per-connection-size: 20
isSyncDBSchema: false isSyncDBSchema: false
defaultSchema: root defaultSchema: a_A_5d9d78509
conf: classpath:liquibase/master.xml conf: classpath:liquibase/master.xml
#Mybatis-plus配置 #Mybatis-plus配置
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册