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

ibiz4j 发布系统代码

上级 7de1af30
......@@ -8,6 +8,7 @@ import { AppPopover } from './utils/app-popover/app-popover';
import { AppModal } from './utils/app-modal/app-modal';
import { AppDrawer } from './utils/app-drawer/app-drawer';
import { uiServiceRegister } from '@/uiservice/ui-service-register';
import { authServiceRegister } from '@/authservice/auth-service-register';
import { utilServiceRegister } from '@/utilservice/util-service-register';
import { entityServiceRegister } from '@/service/entity-service-register';
import { counterServiceRegister } from '@/counter/counter-service-register';
......@@ -79,6 +80,8 @@ import AppGroupSelect from './components/app-group-select/app-group-select.vue'
import UpdatePwd from './components/app-update-password/app-update-password.vue'
// 全局挂载UI实体服务注册中心
window['uiServiceRegister'] = uiServiceRegister;
// 全局挂载实体权限服务注册中心
window['authServiceRegister'] = authServiceRegister;
// 全局挂载功能服务注册中心
window['utilServiceRegister'] = utilServiceRegister;
// 全局挂载数据服务注册中心
......
/**
* 实体权限服务注册中心
*
* @export
* @class AuthServiceRegister
*/
export class AuthServiceRegister {
/**
* 所有实体权限服务Map
*
* @protected
* @type {*}
* @memberof AuthServiceRegister
*/
protected allAuthService: Map<string, () => Promise<any>> = new Map();
/**
* 已加载实体权限服务Map缓存
*
* @protected
* @type {Map<string, any>}
* @memberof AuthServiceRegister
*/
protected serviceCache: Map<string, any> = new Map();
/**
* Creates an instance of AuthServiceRegister.
* @memberof AuthServiceRegister
*/
constructor() {
this.init();
}
/**
* 初始化
*
* @protected
* @memberof AuthServiceRegister
*/
protected init(): void {
this.allAuthService.set('jobsinfo', () => import('@/authservice/jobs-info/jobs-info-auth-service'));
this.allAuthService.set('jobslog', () => import('@/authservice/jobs-log/jobs-log-auth-service'));
this.allAuthService.set('jobslock', () => import('@/authservice/jobs-lock/jobs-lock-auth-service'));
this.allAuthService.set('jobsregistry', () => import('@/authservice/jobs-registry/jobs-registry-auth-service'));
}
/**
* 加载实体权限服务
*
* @protected
* @param {string} serviceName
* @returns {Promise<any>}
* @memberof AuthServiceRegister
*/
protected async loadService(serviceName: string): Promise<any> {
const service = this.allAuthService.get(serviceName);
if (service) {
return service();
}
}
/**
* 获取应用实体权限服务
*
* @param {string} name
* @returns {Promise<any>}
* @memberof AuthServiceRegister
*/
public async getService(name: string): Promise<any> {
if (this.serviceCache.has(name)) {
return this.serviceCache.get(name);
}
const authService: any = await this.loadService(name);
if (authService && authService.default) {
const instance: any = new authService.default();
this.serviceCache.set(name, instance);
return instance;
}
}
}
export const authServiceRegister: AuthServiceRegister = new AuthServiceRegister();
\ No newline at end of file
import { Store } from 'vuex';
/**
* 实体权限服务
*
* @export
* @class AuthService
*/
export default class AuthService {
/**
* Vue 状态管理器
*
* @public
* @type {(any | null)}
* @memberof AuthService
*/
public $store: Store<any> | null = null;
/**
* 默认操作符
*
* @public
* @type {(any)}
* @memberof AuthService
*/
public defaultOPPrivs: any = { UPDATE: 1, CREATE: 1, READ: 1, DELETE: 1 };
/**
* Creates an instance of AuthService.
*
* @param {*} [opts={}]
* @memberof AuthService
*/
constructor(opts: any = {}) {
this.$store = opts.$store;
}
/**
* 获取状态管理器
*
* @returns {(any | null)}
* @memberof AuthService
*/
public getStore(): Store<any> | null {
return this.$store;
}
/**
* 获取实体权限服务
*
* @param {string} name 实体名称
* @returns {Promise<any>}
* @memberof AuthService
*/
public getService(name: string): Promise<any> {
return (window as any)['authServiceRegister'].getService(name);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {string} name 实体名称
* @returns {any}
* @memberof AuthService
*/
public getOPPrivs(data: any): any {
return null;
}
/**
* 根据菜单项获取菜单权限
*
* @param {*} item 菜单标识
* @returns {boolean}
* @memberof AuthService
*/
public getMenusPermission(item: any): boolean {
return true;
}
/**
* 根据统一资源标识获取统一资源权限
*
* @param {*} tag 统一资源标识
* @returns {boolean}
* @memberof AuthService
*/
public getResourcePermission(tag: any): boolean {
return true;
}
}
\ No newline at end of file
import AuthService from '../auth-service';
import JobsInfoUIService from '@/uiservice/jobs-info/jobs-info-ui-service';
/**
* 任务信息权限服务对象基类
*
* @export
* @class JobsInfoAuthServiceBase
* @extends {AuthService}
*/
export default class JobsInfoAuthServiceBase extends AuthService {
/**
* 所依赖UI服务
*
* @memberof JobsInfoAuthServiceBase
*/
public jobsinfoUIService:any;
/**
* Creates an instance of JobsInfoAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof JobsInfoAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.jobsinfoUIService = new JobsInfoUIService(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} data 传入数据
* @returns {any}
* @memberof JobsInfoAuthServiceBase
*/
public getOPPrivs(data:any):any{
let mainSateOPPrivs:any = this.jobsinfoUIService.getDEMainStateOPPrivs(data);
let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import JobsInfoAuthServiceBase from './jobs-info-auth-service-base';
/**
* 任务信息权限服务对象
*
* @export
* @class JobsInfoAuthService
* @extends {JobsInfoAuthServiceBase}
*/
export default class JobsInfoAuthService extends JobsInfoAuthServiceBase {
/**
* Creates an instance of JobsInfoAuthService.
*
* @param {*} [opts={}]
* @memberof JobsInfoAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import AuthService from '../auth-service';
import JobsLockUIService from '@/uiservice/jobs-lock/jobs-lock-ui-service';
/**
* 任务锁权限服务对象基类
*
* @export
* @class JobsLockAuthServiceBase
* @extends {AuthService}
*/
export default class JobsLockAuthServiceBase extends AuthService {
/**
* 所依赖UI服务
*
* @memberof JobsLockAuthServiceBase
*/
public jobslockUIService:any;
/**
* Creates an instance of JobsLockAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof JobsLockAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.jobslockUIService = new JobsLockUIService(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} data 传入数据
* @returns {any}
* @memberof JobsLockAuthServiceBase
*/
public getOPPrivs(data:any):any{
let mainSateOPPrivs:any = this.jobslockUIService.getDEMainStateOPPrivs(data);
let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import JobsLockAuthServiceBase from './jobs-lock-auth-service-base';
/**
* 任务锁权限服务对象
*
* @export
* @class JobsLockAuthService
* @extends {JobsLockAuthServiceBase}
*/
export default class JobsLockAuthService extends JobsLockAuthServiceBase {
/**
* Creates an instance of JobsLockAuthService.
*
* @param {*} [opts={}]
* @memberof JobsLockAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import AuthService from '../auth-service';
import JobsLogUIService from '@/uiservice/jobs-log/jobs-log-ui-service';
/**
* 任务调度日志权限服务对象基类
*
* @export
* @class JobsLogAuthServiceBase
* @extends {AuthService}
*/
export default class JobsLogAuthServiceBase extends AuthService {
/**
* 所依赖UI服务
*
* @memberof JobsLogAuthServiceBase
*/
public jobslogUIService:any;
/**
* Creates an instance of JobsLogAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof JobsLogAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.jobslogUIService = new JobsLogUIService(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} data 传入数据
* @returns {any}
* @memberof JobsLogAuthServiceBase
*/
public getOPPrivs(data:any):any{
let mainSateOPPrivs:any = this.jobslogUIService.getDEMainStateOPPrivs(data);
let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import JobsLogAuthServiceBase from './jobs-log-auth-service-base';
/**
* 任务调度日志权限服务对象
*
* @export
* @class JobsLogAuthService
* @extends {JobsLogAuthServiceBase}
*/
export default class JobsLogAuthService extends JobsLogAuthServiceBase {
/**
* Creates an instance of JobsLogAuthService.
*
* @param {*} [opts={}]
* @memberof JobsLogAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import AuthService from '../auth-service';
import JobsRegistryUIService from '@/uiservice/jobs-registry/jobs-registry-ui-service';
/**
* 任务注册信息权限服务对象基类
*
* @export
* @class JobsRegistryAuthServiceBase
* @extends {AuthService}
*/
export default class JobsRegistryAuthServiceBase extends AuthService {
/**
* 所依赖UI服务
*
* @memberof JobsRegistryAuthServiceBase
*/
public jobsregistryUIService:any;
/**
* Creates an instance of JobsRegistryAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof JobsRegistryAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.jobsregistryUIService = new JobsRegistryUIService(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} data 传入数据
* @returns {any}
* @memberof JobsRegistryAuthServiceBase
*/
public getOPPrivs(data:any):any{
let mainSateOPPrivs:any = this.jobsregistryUIService.getDEMainStateOPPrivs(data);
let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import JobsRegistryAuthServiceBase from './jobs-registry-auth-service-base';
/**
* 任务注册信息权限服务对象
*
* @export
* @class JobsRegistryAuthService
* @extends {JobsRegistryAuthServiceBase}
*/
export default class JobsRegistryAuthService extends JobsRegistryAuthServiceBase {
/**
* Creates an instance of JobsRegistryAuthService.
*
* @param {*} [opts={}]
* @memberof JobsRegistryAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -66,7 +66,7 @@ export default class AppAddressSelection extends Vue {
axios.get("../../assets/json/city_code.json").then((response: any) => {
this.format(response.data);
}).catch((response: any) => {
console.log("城市数据加载失败");
console.log((this.$t('components.appAddressSelection.loadDataFail') as string));
});
......
......@@ -276,7 +276,7 @@ export default class AppCheckBox extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
})
}
}
......
......@@ -191,7 +191,7 @@ export default class AppColumnLink extends Vue {
private openRedirectView($event: any, view: any, data: any): void {
this.$http.get(view.url, data).then((response: any) => {
if (!response || response.status !== 200) {
this.$Notice.error({ title: '错误', desc: '请求异常' });
this.$Notice.error({ title: (this.$t('app.commonWords.error') as string), desc: (this.$t('app.commonWords.reqException') as string) });
}
if (response.status === 401) {
return;
......@@ -243,7 +243,7 @@ export default class AppColumnLink extends Vue {
}
}).catch((response: any) => {
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常!' });
this.$Notice.error({ title: (this.$t('app.commonWords.error') as string), desc: (this.$t('app.commonWords.reqException') as string) });
return;
}
if (response.status === 401) {
......
......@@ -443,13 +443,13 @@ export default class AppDataUploadView extends Vue {
if (codelist) {
resolve([...JSON.parse(JSON.stringify(codelist.items))]);
} else {
console.log(`----${codeListObject.tag}----代码表不存在`);
console.log(`----${codeListObject.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
}
}else if(codeListObject.tag && Object.is(codeListObject.type,"DYNAMIC")){
this.codeListService.getItems(codeListObject.tag).then((res:any) => {
resolve(res);
}).catch((error:any) => {
console.log(`----${codeListObject.tag}----代码表不存在`);
console.log(`----${codeListObject.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
})
......
......@@ -131,7 +131,7 @@ export default class AppDepartmentSelect extends Vue {
this.$store.commit('addDepData', { srfkey: this.filter, orgData: response.data });
}).catch((response: any) => {
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常!' });
this.$Notice.error({ title: (this.$t('app.commonWords.error') as string), desc: (this.$t('app.commonWords.sysException') as string) });
return;
}
});
......
......@@ -107,18 +107,18 @@ export default class AppExportExcel extends Vue {
this.visible = false;
} else if (Object.is(type, 'custom')) {
if (!this.startPage || !this.endPage) {
this.$Notice.warning({ title: '警告', desc: '请输入起始页' });
this.$Notice.warning({ title: (this.$t('app.commonWords.warning') as string), desc: (this.$t('components.appExportExcel.desc') as string) });
return;
}
const startPage: any = Number.parseInt(this.startPage, 10);
const endPage: any = Number.parseInt(this.endPage, 10);
if (Number.isNaN(startPage) || Number.isNaN(endPage)) {
this.$Notice.warning({ title: '警告', desc: '请输入有效的起始页' });
this.$Notice.warning({ title: (this.$t('app.commonWords.warning') as string), desc: (this.$t('components.appExportExcel.desc1') as string) });
return;
}
if (startPage < 1 || endPage < 1 || startPage > endPage) {
this.$Notice.warning({ title: '警告', desc: '请输入有效的起始页' });
this.$Notice.warning({ title: (this.$t('app.commonWords.warning') as string), desc: (this.$t('components.appExportExcel.desc1') as string) });
return;
}
this.startPage = null;
......
......@@ -136,7 +136,8 @@ export default class AppFileUpload extends Vue {
if (this.ignorefieldvaluechange) {
return;
}
this.setFiles(newval)
this.getParams();
this.setFiles(newval);
this.dataProcess();
}
......@@ -288,6 +289,7 @@ export default class AppFileUpload extends Vue {
this.formStateEvent = this.formState.subscribe(($event: any) => {
// 表单加载完成
if (Object.is($event.type, 'load')) {
this.getParams();
this.setFiles(this.value);
this.dataProcess();
}
......@@ -303,27 +305,36 @@ export default class AppFileUpload extends Vue {
*/
public mounted() {
this.appData = this.$store.getters.getAppData();
this.getParams();
this.setFiles(this.value);
this.dataProcess();
}
let uploadparams: any = {};
let exportparams: any = {};
/**
*获取上传,导出参数
*
*@memberof AppFileUpload
*/
public getParams(){
let uploadparams: any = JSON.parse(JSON.stringify(this.uploadparams));
let exportparams: any = JSON.parse(JSON.stringify(this.exportparams));
let upload_params: Array<string> = [];
let export_params: Array<string> = [];
let custom_arr: Array<string> = [];
let param:any = this.viewparams;
let context:any = this.context;
let _data:any = JSON.parse(this.data);
if (this.uploadparams && !Object.is(this.uploadparams, '')) {
uploadparams = this.uploadparams;
upload_params = this.$util.computedNavData(_data,param,context,uploadparams);
}
if (this.exportparams && !Object.is(this.exportparams, '')) {
exportparams = this.exportparams;
export_params = this.$util.computedNavData(_data,param,context,exportparams);
}
this.upload_params = [];
this.export_params = [];
for (const item in upload_params) {
this.upload_params.push({
......@@ -335,9 +346,6 @@ export default class AppFileUpload extends Vue {
[item]:export_params[item]
})
}
this.setFiles(this.value);
this.dataProcess();
}
/**
......
......@@ -386,7 +386,7 @@ export default class AppFormDRUIPart extends Vue {
* @memberof AppFormDRUIPart
*/
public mditemsload(){
console.log('多数据视图加载完成,触发后续表单项更新');
console.log((this.$t('components.appFormDRUIPart.viewLoadComp') as string));
}
/**
......@@ -397,7 +397,7 @@ export default class AppFormDRUIPart extends Vue {
*/
public drdatasaved($event:any){
this.$emit('drdatasaved',$event);
console.log(this.viewname+'关系数据保存完成');
console.log(this.viewname+(this.$t('components.appFormDRUIPart.save') as string));
}
/**
......@@ -407,7 +407,7 @@ export default class AppFormDRUIPart extends Vue {
* @memberof AppFormDRUIPart
*/
public drdatachange(){
console.log('DEMEDITVIEW9 关系数据值变化');
console.log('DEMEDITVIEW9 '+(this.$t('components.appFormDRUIPart.change') as string));
}
/**
......@@ -417,7 +417,7 @@ export default class AppFormDRUIPart extends Vue {
* @memberof AppFormDRUIPart
*/
public viewdataschange(){
console.log('视图数据变化');
console.log((this.$t('components.appFormDRUIPart.change1') as string));
}
/**
......@@ -427,7 +427,7 @@ export default class AppFormDRUIPart extends Vue {
* @memberof AppFormDRUIPart
*/
public viewload(){
console.log('视图加载完成');
console.log((this.$t('components.appFormDRUIPart.loadComp') as string));
}
}
</script>
......
......@@ -9,8 +9,8 @@
</div>
</div>
<div class="ibiz-group-footer">
<el-button size="small" type="primary" @click="onOK">确认</el-button>
<el-button size="small" @click="onCancel">取消</el-button>
<el-button size="small" type="primary" @click="onOK">{{$t('app.commonWords.ok')}}</el-button>
<el-button size="small" @click="onCancel">{{$t('app.commonWords.cancel')}}</el-button>
</div>
</div>
</template>
......
......@@ -171,7 +171,7 @@ export default class AppGroupSelect extends Vue {
public openView() {
const view: any = {
viewname: 'app-group-picker',
title: '分组选择'
title: (this.$t('components.appGroupSelect.groupSelect') as string)
};
const context: any = JSON.parse(JSON.stringify(this.context));
let filtervalue:string = "";
......
......@@ -135,6 +135,7 @@ export default class AppImageUpload extends Vue {
if (this.ignorefieldvaluechange) {
return;
}
this.getParams();
this.setFiles(newval)
this.dataProcess();
}
......@@ -294,6 +295,7 @@ export default class AppImageUpload extends Vue {
this.formStateEvent = this.formState.subscribe(($event: any) => {
// 表单加载完成
if (Object.is($event.type, 'load')) {
this.getParams();
this.setFiles(this.value);
this.dataProcess();
}
......@@ -308,26 +310,37 @@ export default class AppImageUpload extends Vue {
*/
public mounted() {
this.appData = this.$store.getters.getAppData();
this.getParams();
this.setFiles(this.value);
this.dataProcess();
}
let uploadparams: any = {};
let exportparams: any = {};
/**
*获取上传,导出参数
*
*@memberof AppImageUpload
*/
public getParams(){
let uploadparams: any = JSON.parse(JSON.stringify(this.uploadparams));
let exportparams: any = JSON.parse(JSON.stringify(this.exportparams));
let upload_params: Array<string> = [];
let export_params: Array<string> = [];
let custom_arr: Array<string> = [];
let param:any = this.viewparams;
let context:any = this.context;
let _data:any = JSON.parse(this.data);
if (this.uploadparams && !Object.is(this.uploadparams, '')) {
uploadparams = this.uploadparams;
upload_params = this.$util.computedNavData(_data,param,context,uploadparams);
upload_params = this.$util.computedNavData(_data,param,context,uploadparams);
}
if (this.exportparams && !Object.is(this.exportparams, '')) {
exportparams = this.exportparams;
export_params = this.$util.computedNavData(_data,param,context,exportparams);
}
this.upload_params = [];
this.export_params = [];
for (const item in upload_params) {
this.upload_params.push({
[item]:upload_params[item]
......@@ -338,9 +351,6 @@ export default class AppImageUpload extends Vue {
[item]:export_params[item]
})
}
this.setFiles(this.value);
this.dataProcess();
}
/**
......@@ -397,7 +407,7 @@ export default class AppImageUpload extends Vue {
* @memberof AppImageUpload
*/
public onError(error: any, file: any, fileList: any) {
this.$Notice.error({ title: '上传失败' });
this.$Notice.error({ title: (this.$t('components.appImageUpload.uploadFail') as string) });
}
/**
......
......@@ -183,7 +183,7 @@ export default class AppOrgSelect extends Vue {
}
Http.getInstance().get(requestUrl).then((res:any) =>{
if(!res.status && res.status !== 200){
console.error("加载数据失败");
console.error((this.$t('components.appOrgSelect.loadFail') as string));
return;
}
this.NodesData = res.data;
......
......@@ -242,7 +242,7 @@ export default class AppPicker extends Vue {
* @param {*} oldVal
* @memberof AppPicker
*/
@Watch('value',{immediate: true})
@Watch('value')
public onValueChange(newVal: any, oldVal: any) {
this.curvalue = newVal;
if (Object.is(this.editortype, 'dropdown') && this.valueitem) {
......
......@@ -88,7 +88,7 @@ export default class AppRadioGroup extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
})
}
}
......@@ -204,7 +204,7 @@ export default class AppRadioGroup extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any)=>{
console.log(`----${this.tag}----代码表不存在!`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
})
}
}
......
......@@ -313,5 +313,4 @@ export default class AppRichTextEditor extends Vue {
}
</script>
<style lang="less">
@import './app-rich-text-editor.less';
</style>
\ No newline at end of file
......@@ -15,7 +15,7 @@
v-model="dataRight"
:data="dataLeft"
@change="dataChange"
:titles="['未选择', '已选择']"/>
:titles="titles"/>
</Select>
</template>
......@@ -123,6 +123,13 @@ export default class AppTransfer extends Vue {
*/
@Model("change") public itemValue!: any;
/**
* 左右侧标题
* @type{Array<string>}
* @memberof AppTransfer
*/
public titles?: Array<string>;
/**
* 左侧框数据
*
......@@ -153,6 +160,7 @@ export default class AppTransfer extends Vue {
*/
public created() {
this.dataHandle();
this.titles= [(this.$t('components.appTransfer.title1') as string),(this.$t('components.appTransfer.title2') as string)];
}
/**
......@@ -167,7 +175,7 @@ export default class AppTransfer extends Vue {
this.dataLeft = [...JSON.parse(JSON.stringify(codelist.items))];
this.initData()
} else {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
}
} else if (this.tag && Object.is(this.codelistType, "DYNAMIC")) {
// 处理公共参数
......@@ -183,7 +191,7 @@ export default class AppTransfer extends Vue {
this.initData()
})
.catch((error: any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......
......@@ -2,24 +2,24 @@
<div class="update-password">
<div class="password-item">
<label for>
原密码:
{{$t('components.appUpdatePassword.oldPwd')}}
<Input type="password" v-model="oldPwd" @on-blur="oldPwdVaild"/>
</label>
</div>
<div class="password-item">
<label for>
新密码:
{{$t('components.appUpdatePassword.newPwd')}}
<Input type="password" v-model="newPwd" @on-blur="newPwdVaild"/>
</label>
</div>
<div class="password-item">
<label for>
确认密码:
{{$t('components.appUpdatePassword.confirmPwd')}}
<Input type="password" v-model="confirmPwd" :disabled="!this.newPwd" @on-blur="confirmVaild" />
</label>
</div>
<div class="password-item password-btn">
<Button type="primary" long :disabled="!oldPwd || !newPwd || !confirmPwd || disUpdate" @click="updatePwd">确认修改</Button>
<Button type="primary" long :disabled="!oldPwd || !newPwd || !confirmPwd || disUpdate" @click="updatePwd">{{$t('components.appUpdatePassword.sure')}}</Button>
</div>
</div>
</template>
......@@ -73,7 +73,7 @@ export default class AppUpdatePassword extends Vue {
public oldPwdVaild(){
if(!this.oldPwd){
this.$Notice.error({
title:'原密码不能为空!',
title: (this.$t('components.appUpdatePassword.oldPwdErr') as string),
duration: 3
});
}
......@@ -88,7 +88,7 @@ export default class AppUpdatePassword extends Vue {
public newPwdVaild(){
if(!this.newPwd){
this.$Notice.error({
title:'新密码不能为空!',
title: (this.$t('components.appUpdatePassword.newPwdErr') as string),
duration: 3
});
}
......@@ -104,7 +104,7 @@ export default class AppUpdatePassword extends Vue {
if (this.newPwd && this.confirmPwd) {
if (this.confirmPwd !== this.newPwd) {
this.$Notice.error({
title:'两次输入密码不一致!',
title: (this.$t('components.appUpdatePassword.confirmPwdErr') as string),
duration: 3
});
}else{
......@@ -136,7 +136,7 @@ export default class AppUpdatePassword extends Vue {
}
}).catch((error: any) =>{
this.$Notice.error({
title:'系统异常',
title: (this.$t('app.codeNotExist.sysException') as string),
duration: 3
});
console.error(error);
......
......@@ -51,7 +51,7 @@ export default class AppUser extends Vue {
}
});
}else if (Object.is(data, 'updatepwd')) {
let container: Subject<any> = this.$appmodal.openModal({ viewname: 'app-update-password', title: "修改密码", width: 500, height: 400, }, {}, {});
let container: Subject<any> = this.$appmodal.openModal({ viewname: 'app-update-password', title: (this.$t('components.appUser.changepwd') as string), width: 500, height: 400, }, {}, {});
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
......
......@@ -2,7 +2,7 @@
<div class='app-wf-approval'>
<div class="app-wf-approval-header">
<span class="approval-header-left">{{data.startTime}}</span>
<span>{{data.startUserName}}提交</span>
<span>{{data.startUserName}}{{$t('components.appWFApproval.commit')}}</span>
</div>
<div class="app-wf-approval-content" v-if="data.usertasks && data.usertasks.length >0">
<div class="approval-content-item" v-for="(usertask,index) in data.usertasks" :key="index">
......@@ -11,7 +11,7 @@
</div>
<div class="approval-content-item-right">
<div class="approval-content-item-wait" v-if="usertask.identitylinks.length >0">
等待<span v-for="(identitylink,inx) in usertask.identitylinks" :key="inx">{{identitylink.displayname}}<span v-if="inx >0"></span></span>处理
{{$t('components.appWFApproval.wait')}}<span v-for="(identitylink,inx) in usertask.identitylinks" :key="inx">{{identitylink.displayname}}<span v-if="inx >0"></span></span>{{$t('components.appWFApproval.handle')}}
</div>
<div class="approval-content-item-info" v-if="usertask.comments.length >0">
<div v-for="(comment,commentInx) in usertask.comments" :key="commentInx">
......@@ -25,13 +25,13 @@
</div>
</div>
<div class="approval-content-item-memo" v-if="usertask.userTaskId === viewparams.userTaskId">
<el-input type="textarea" v-model="initmemo" :rows="2" @blur="handleBlur" placeholder="请输入内容"></el-input>
<el-input type="textarea" v-model="initmemo" :rows="2" @blur="handleBlur" :placeholder="$t('components.appWFApproval.placeholder')"></el-input>
</div>
</div>
</div>
</div>
<div class="app-wf-approval-bottom">
<span v-if="data.endTime">{{data.endTime}}结束</span>
<span v-if="data.endTime">{{data.endTime}}{{$t('components.appWFApproval.end')}}</span>
</div>
</div>
</template>
......
......@@ -192,7 +192,7 @@ export default class CodeList extends Vue {
let items = res;
_this.setItems(items, _this);
}).catch((error: any) => {
console.log(`----${_this.tag}----代码表不存在`);
console.log(`----${_this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
// 静态处理
} else if(Object.is(this.codelistType, "STATIC")){
......
......@@ -7,7 +7,7 @@
<Icon type="md-apps" />
</div>
<div class="content">
<span>全部应用</span>
<span>{{$t('components.contextMenuDrag.allApp')}}</span>
</div>
<div class="forward">
<Icon type="ios-arrow-forward" />
......@@ -221,7 +221,7 @@ export default class ContextMenuDrag extends Vue {
const put: Promise<any> = this.entityService.updateChooseApp(null,params);
window.location.href = item.addr;
}else{
this.$message.info("未找到该应用");
this.$message.info((this.$t('components.contextMenuDrag.noFind') as string));
}
}
......
......@@ -201,7 +201,7 @@ export default class DropDownListDynamic extends Vue {
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
} else {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
// 公共参数处理
......@@ -213,7 +213,7 @@ export default class DropDownListDynamic extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......@@ -236,7 +236,7 @@ export default class DropDownListDynamic extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......
......@@ -3,14 +3,15 @@
class='dropdown-list-mpicker'
multiple
:transfer="true"
transfer-class-name="dropdown-list-mpicker-transfer"
v-model="currentVal"
:disabled="disabled === true ? true : false"
:clearable="true"
:filterable="filterable === true ? true : false"
@on-open-change="onClick"
:placeholder="$t('components.dropDownListMpicker.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value" :label="item.text">
<Checkbox :value = "(currentVal.indexOf(item.value))==-1?false:true">
<i-option v-for="(item, index) in items" :key="index" :value="item.value.toString()" :label="item.text">
<Checkbox :value = "(currentVal.indexOf(item.value.toString()))==-1?false:true">
{{Object.is(codelistType,'STATIC') ? $t('codelist.'+tag+'.'+item.value) : item.text}}
</Checkbox>
</i-option>
......@@ -186,7 +187,7 @@ export default class DropDownListMpicker extends Vue {
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
} else {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
// 公共参数处理
......@@ -198,7 +199,7 @@ export default class DropDownListMpicker extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......@@ -220,7 +221,7 @@ export default class DropDownListMpicker extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......
......@@ -8,7 +8,7 @@
:filterable="filterable === true ? true : false"
@on-open-change="onClick"
: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.toString()">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
</template>
......@@ -157,7 +157,7 @@ export default class DropDownList extends Vue {
* @memberof DropDownList
*/
get currentVal() {
return this.itemValue;
return this.itemValue ? this.itemValue.toString() : undefined;
}
/**
......@@ -201,7 +201,7 @@ export default class DropDownList extends Vue {
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
} else {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
// 公共参数处理
......@@ -213,7 +213,7 @@ export default class DropDownList extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......@@ -236,7 +236,7 @@ export default class DropDownList extends Vue {
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
}).catch((error:any) => {
console.log(`----${this.tag}----代码表不存在`);
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
});
}
}
......
<template>
<el-select size="small" class="filter-mode" placeholder="条件逻辑" v-model="curVal" @change="onChange">
<el-select size="small" class="filter-mode" :placeholder="$t('components.filterMode.placeholder')" v-model="curVal" @change="onChange">
<el-option
v-for="mode in filterMode"
:key="mode.value"
......
......@@ -7,15 +7,15 @@
<el-option v-for="mode in relationModes" :key="mode.value" :label="getLabel(mode)" :value="mode.value"></el-option>
</el-select>
<div class="filter-tree-action">
<i-button title="添加条件" @click="onAddItem(data)"><i class="fa fa-plus" aria-hidden="true"></i> 添加条件</i-button>
<i-button title="添加组" @click="onAddGroup(data)"><i class="fa fa-plus" aria-hidden="true"></i> 添加组</i-button>
<i-button :title="$t('components.filterTree.title1')" @click="onAddItem(data)"><i class="fa fa-plus" aria-hidden="true"></i> {{$t('components.filterTree.title1')}}</i-button>
<i-button :title="$t('components.filterTree.title2')" @click="onAddGroup(data)"><i class="fa fa-plus" aria-hidden="true"></i> {{$t('components.filterTree.title2')}}</i-button>
<icon v-if="!data.isroot" type="md-close" @click="onRemoveItem(node, data)"/>
</div>
</div>
</template>
<template v-else>
<div class="filter-tree-item">
<el-select size="small" class="filter-item-field" v-model="data.field" clearable placeholder="属性" @change="onFieldChange(data)">
<el-select size="small" class="filter-item-field" v-model="data.field" clearable :placeholder="$t('components.filterTree.placeholder')" @change="onFieldChange(data)">
<el-option
v-for="item in fields"
:key="item.prop"
......
......@@ -5,6 +5,9 @@
top: 0;
right: 20px;
}
.ivu-input-number{
width: 100%;
}
.ivu-input-number-input{
text-align: right;
}
......
<template>
<div class="input-unit">
<InputNumber v-if="type === 'number'"
:id="numberId"
:placeholder="placeholder"
:size="size"
:precision="precision"
v-model="CurrentVal"
:disabled="disabled ? true : false"
:formatter="formatter"
:parser="parser"
></InputNumber>
<i-input v-else
:placeholder="placeholder"
......@@ -27,6 +30,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators";
@Component({})
export default class InputBox extends Vue {
/**
* 双向绑定值
* @type {any}
......@@ -40,11 +44,12 @@ export default class InputBox extends Vue {
* @memberof InputBox
*/
public mounted(){
this.addEvent();
if(this.textareaId){
let textarea :any= document.getElementById(this.textareaId);
if(textarea){
textarea.style=this.textareaStyle;
}
let textarea :any= document.getElementById(this.textareaId);
if(textarea){
textarea.style=this.textareaStyle;
}
}
}
......@@ -114,6 +119,11 @@ export default class InputBox extends Vue {
*/
@Prop() public autoSize?: any;
/**
* 数值框numberId
*/
public numberId :string= this.$util.createUUID();
/**
* 当前值
*
......@@ -158,6 +168,49 @@ export default class InputBox extends Vue {
}
return $event;
}
/**
* 给数值框中的箭头按钮添加事件
*
* @memberof InputBox
*/
public addEvent(){
if(Object.is(this.type, "number")){
let inputNumber :any = document.getElementById(this.numberId);
let handlerWrap :any = inputNumber.firstElementChild;
handlerWrap.onmouseover=()=>{
inputNumber.style.paddingRight="15px";
inputNumber.style.transition="all 0.2s linear";
}
handlerWrap.onmouseout=()=>{
inputNumber.style.paddingRight="0px";
}
}
}
/**
* 指定输入框展示值的格式
*/
public formatter(value:any){
if(this.precision===0) return this.CurrentVal;
if(value.indexOf('.')!==-1){
let arr:Array<any> = value.split('.');
if(arr[1]==='00'){
return arr[0];
}
if(parseInt(arr[1])%10===0){
return arr[0]+'.'+parseInt(arr[1])/10;
}
}
return value;
}
/**
* 指定从 formatter 里转换回数字的方式
*/
public parser(value:any){
return value;
}
}
</script>
......
......@@ -14,7 +14,7 @@
size='large'
prefix='ios-contact'
v-model.trim="form.loginname"
placeholder="用户名"
:placeholder="$t('components.login.placeholder1')"
@keyup.enter.native="handleSubmit">
</i-input>
</form-item>
......@@ -24,7 +24,7 @@
prefix='ios-key'
v-model.trim="form.password"
type='password'
placeholder="密码"
:placeholder="$t('components.login.placeholder2')"
@keyup.enter.native="handleSubmit">
</i-input>
</form-item>
......@@ -32,18 +32,18 @@
<i-button
@click="handleSubmit"
type='primary'
class="login_btn">登录
class="login_btn">{{$t('components.login.name')}}
</i-button>
<i-button
@click="goReset"
type='success'
class="login_reset">重置
class="login_reset">{{$t('components.login.reset')}}
</i-button>
</form-item>
<form-item>
<div style="text-align: center">
<span class="form_tipinfo">其他登录方式</span>
<span class="form_tipinfo">{{$t('components.login.other')}}</span>
</div>
<div style="text-align: center">
<div class="sign-btn" @click="tencentHandleClick('tencent')">
......@@ -195,13 +195,13 @@ export default class Login extends Vue {
if (data && data.message) {
this.loginTip = data.message;
this.$Message.error({
content: "登录失败," + data.message,
content: (this.$t('components.login.loginfailed') as string)+' ' + data.message,
duration: 5,
closable: true
});
} else {
this.$Message.error({
content: "登录失败",
content: (this.$t('components.login.loginfailed') as string),
duration: 5,
closable: true
});
......@@ -259,7 +259,7 @@ export default class Login extends Vue {
* @param thirdpart
*/
public tencentHandleClick(thirdpart: any) {
this.$Message.warning("qq授权登录暂未支持")
this.$Message.warning((this.$t('components.login.warning1') as string))
}
/**
......@@ -267,7 +267,7 @@ export default class Login extends Vue {
* @param thirddpart
*/
public wechatHandleClick(thirddpart: any) {
this.$Message.warning("微信授权登录暂未支持")
this.$Message.warning((this.$t('components.login.warning2') as string))
}
}
......
......@@ -21,7 +21,7 @@
<div v-show="$store.state.pageMetas.length > 0" class="right">
<el-dropdown @command="handlerClose">
<el-button size="mini" type="primary">
更多<i class="el-icon-arrow-down el-icon--right"></i>
{{$t('components.tabPageExp.more')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="item" v-for="(item,index) in actions" :key="index">{{ $t(item.text) }}</el-dropdown-item>
......
......@@ -20,8 +20,8 @@
:on-exceeded-size="exceededsize"
:on-progress="progress">
<div class="upload-text">
<p>将图片拖到这里替换</p>
<p><span class="text-style">本地上传</span><span class="text-style">从素材库选择</span></p>
<p>{{$t('components.uploadFile.imgMsg')}}</p>
<p><span class="text-style">{{$t('components.uploadFile.localUpload')}}</span>{{$t('components.uploadFile.or')}}<span class="text-style">{{$t('components.uploadFile.imgMsg1')}}</span></p>
</div>
</upload>
</div>
......
import { UIServiceRegister } from '@/uiservice/ui-service-register';
import { AuthServiceRegister } from '@/authservice/auth-service-register';
import { UtilServiceRegister } from '@/utilservice/util-service-register';
import { EntityServiceRegister } from '@/service/entity-service-register';
import { CounterServiceRegister } from '@/counter/counter-service-register';
......@@ -6,8 +7,9 @@ import { CounterServiceRegister } from '@/counter/counter-service-register';
declare global {
interface Window {
uiServiceRegister: UIServiceRegister,
utilServiceRegister:UtilServiceRegister,
entityServiceRegister:EntityServiceRegister,
counterServiceRegister:CounterServiceRegister
authServiceRegister: AuthServiceRegister,
utilServiceRegister: UtilServiceRegister,
entityServiceRegister: EntityServiceRegister,
counterServiceRegister: CounterServiceRegister
}
}
\ No newline at end of file
......@@ -13,9 +13,22 @@ export default {
success: "Success",
ok: "OK",
cancel: "Cancel",
codeNotExist: 'Code list does not exist',
reqException: "Request exception",
sysException: "System abnormality",
warning: "Warning",
wrong: "Error",
rulesException: "Abnormal value check rule",
saveSuccess: "Saved successfully",
saveFailed: "Save failed",
deleteSuccess: "Successfully deleted!",
deleteError: "Failed to delete",
delDataFail: "Failed to delete data",
noData: "No data",
},
local:{
new: "New"
new: "New",
add: "Add",
},
gridpage: {
choicecolumns: "Choice columns",
......@@ -23,6 +36,50 @@ export default {
show: "Show",
records: "records",
totle: "totle",
noData: "No data",
valueVail: "Value cannot be empty",
notConfig: {
fetchAction: "The view table fetchaction parameter is not configured",
removeAction: "The view table removeaction parameter is not configured",
createAction: "The view table createaction parameter is not configured",
updateAction: "The view table updateaction parameter is not configured",
loaddraftAction: "The view table loadtrafaction parameter is not configured",
},
data: "Data",
delDataFail: "Failed to delete data",
delSuccess: "Delete successfully!",
confirmDel: "Are you sure you want to delete",
notRecoverable: "delete will not be recoverable?",
notBatch: "Batch addition not implemented",
grid: "Grid",
exportFail: "Data export failed",
sum: "Total",
formitemFailed: "Form item update failed",
},
list: {
notConfig: {
fetchAction: "View list fetchAction parameter is not configured",
removeAction: "View table removeAction parameter is not configured",
createAction: "View list createAction parameter is not configured",
updateAction: "View list updateAction parameter is not configured",
},
confirmDel: "Are you sure you want to delete",
notRecoverable: "delete will not be recoverable?",
},
listExpBar: {
title: "List navigation bar",
},
wfExpBar: {
title: "Process navigation bar",
},
calendarExpBar:{
title: "Calendar navigation bar",
},
treeExpBar: {
title: "Tree view navigation bar",
},
portlet: {
noExtensions: "No extensions",
},
tabpage: {
sureclosetip: {
......@@ -47,6 +104,8 @@ export default {
list: "list",
dateSelectModalTitle: "select the time you wanted",
gotoDate: "goto",
from: "From",
to: "To",
},
// 非实体视图
views: {
......@@ -67,6 +126,63 @@ export default {
menuitem2: "日志",
},
},
formpage:{
error: "Error",
desc1: "Operation failed, failed to find current form item",
desc2: "Can't continue",
notconfig: {
loadaction: "View form loadAction parameter is not configured",
loaddraftaction: "View form loaddraftAction parameter is not configured",
actionname: "View form actionName parameter is not configured",
removeaction: "View form removeAction parameter is not configured",
},
saveerror: "Error saving data",
savecontent: "The data is inconsistent. The background data may have been modified. Do you want to reload the data?",
valuecheckex: "Value rule check exception",
savesuccess: "Saved successfully!",
deletesuccess: "Successfully deleted!",
workflow: {
starterror: "Workflow started successfully",
startsuccess: "Workflow failed to start",
submiterror: "Workflow submission failed",
submitsuccess: "Workflow submitted successfully",
},
updateerror: "Form item update failed",
},
gridBar: {
title: "Table navigation bar",
},
multiEditView: {
notConfig: {
fetchAction: "View multi-edit view panel fetchAction parameter is not configured",
loaddraftAction: "View multi-edit view panel loaddraftAction parameter is not configured",
},
},
dataViewExpBar: {
title: "Card view navigation bar",
},
kanban: {
notConfig: {
fetchAction: "View list fetchAction parameter is not configured",
removeAction: "View table removeAction parameter is not configured",
},
delete1: "Confirm to delete ",
delete2: "the delete operation will be unrecoverable!",
},
dashBoard: {
handleClick: {
title: "Panel design",
},
},
dataView: {
sum: "total",
data: "data",
},
chart: {
undefined: "Undefined",
quarter: "Quarter",
year: "Year",
},
},
entities: {
jobsinfo: jobsinfo_en_US,
......
......@@ -13,9 +13,22 @@ export default {
success: "成功",
ok: "确认",
cancel: "取消",
codeNotExist: "代码表不存在",
reqException: "请求异常",
sysException: "系统异常",
warning: "警告",
wrong: "错误",
rulesException: "值规则校验异常",
saveSuccess: "保存成功",
saveFailed: "保存失败",
deleteSuccess: "删除成功!",
deleteError: "删除失败!",
delDataFail: "删除数据失败",
noData: "暂无数据",
},
local:{
new: "新建"
new: "新建",
add: "增加",
},
gridpage: {
choicecolumns: "选择列",
......@@ -23,6 +36,50 @@ export default {
show: "显示",
records: "条",
totle: "共",
noData: "无数据",
valueVail: "值不能为空",
notConfig: {
fetchAction: "视图表格fetchAction参数未配置",
removeAction: "视图表格removeAction参数未配置",
createAction: "视图表格createAction参数未配置",
updateAction: "视图表格updateAction参数未配置",
loaddraftAction: "视图表格loaddraftAction参数未配置",
},
data: "数据",
delDataFail: "删除数据失败",
delSuccess: "删除成功!",
confirmDel: "确认要删除",
notRecoverable: "删除操作将不可恢复?",
notBatch: "批量添加未实现",
grid: "表",
exportFail: "数据导出失败",
sum: "合计",
formitemFailed: "表单项更新失败",
},
list: {
notConfig: {
fetchAction: "视图列表fetchAction参数未配置",
removeAction: "视图表格removeAction参数未配置",
createAction: "视图列表createAction参数未配置",
updateAction: "视图列表updateAction参数未配置",
},
confirmDel: "确认要删除",
notRecoverable: "删除操作将不可恢复?",
},
listExpBar: {
title: "列表导航栏",
},
wfExpBar: {
title: "流程导航栏",
},
calendarExpBar:{
title: "日历导航栏",
},
treeExpBar: {
title: "树视图导航栏",
},
portlet: {
noExtensions: "无扩展插件",
},
tabpage: {
sureclosetip: {
......@@ -47,6 +104,8 @@ export default {
list: "列",
dateSelectModalTitle: "选择要跳转的时间",
gotoDate: "跳转",
from: "从",
to: "至",
},
// 非实体视图
views: {
......@@ -67,6 +126,62 @@ export default {
menuitem2: "日志",
},
},
formpage:{
desc1: "操作失败,未能找到当前表单项",
desc2: "无法继续操作",
notconfig: {
loadaction: "视图表单loadAction参数未配置",
loaddraftaction: "视图表单loaddraftAction参数未配置",
actionname: "视图表单'+actionName+'参数未配置",
removeaction: "视图表单removeAction参数未配置",
},
saveerror: "保存数据发生错误",
savecontent: "数据不一致,可能后台数据已经被修改,是否要重新加载数据?",
valuecheckex: "值规则校验异常",
savesuccess: "保存成功!",
deletesuccess: "删除成功!",
workflow: {
starterror: "工作流启动失败",
startsuccess: "工作流启动成功",
submiterror: "工作流提交失败",
submitsuccess: "工作流提交成功",
},
updateerror: "表单项更新失败",
},
gridBar: {
title: "表格导航栏",
},
multiEditView: {
notConfig: {
fetchAction: "视图多编辑视图面板fetchAction参数未配置",
loaddraftAction: "视图多编辑视图面板loaddraftAction参数未配置",
},
},
dataViewExpBar: {
title: "卡片视图导航栏",
},
kanban: {
notConfig: {
fetchAction: "视图列表fetchAction参数未配置",
removeAction: "视图表格removeAction参数未配置",
},
delete1: "确认要删除 ",
delete2: "删除操作将不可恢复?",
},
dashBoard: {
handleClick: {
title: "面板设计",
},
},
dataView: {
sum: "共",
data: "条数据",
},
chart: {
undefined: "未定义",
quarter: "季度",
year: "年",
},
},
entities: {
jobsinfo: jobsinfo_zh_CN,
......
......@@ -55,6 +55,8 @@ export default {
max: 'At Most',
row: 'Lines',
currentPage: 'Current Page',
desc:'Please enter the start page',
desc1:'Please enter a valid start page',
},
appFileUpload: {
preview: 'preview',
......@@ -64,6 +66,11 @@ export default {
},
appFormDRUIPart: {
blockUITipInfo: 'Please save the major data first',
viewLoadComp:'After the multi data view is loaded, the subsequent form item update will be triggered',
save:'Relationship data save complete',
change:'Relationship data value change',
change1:'View data changes',
loadComp:'View loading complete',
},
appHeaderMenus: {
ibizlab:{
......@@ -130,19 +137,25 @@ export default {
endPlaceholder: 'End Dat4e',
},
dropDownList: {
placeholder: 'please select...'
placeholder: 'please select...',
},
dropDownListDynamic: {
placeholder: 'please select...'
placeholder: 'please select...',
},
dropDownListMpicker: {
placeholder: 'please select...'
placeholder: 'please select...',
},
login: {
error: 'Error',
caption: 'Welcome to login',
placeholder1:'User name',
placeholder2:'Password',
name: 'Login',
reset:'Reset',
other:'Other login methods',
tip: 'Enter username and password',
warning1:'QQ authorization login not supported',
warning2:'Wechat authorized login not supported',
loginname: {
placeholder: 'Username',
message: 'The username cannot be empty',
......@@ -174,4 +187,65 @@ export default {
hide: 'hide',
showMore: 'show more',
},
appUpdatePassword: {
oldPwd: 'Original password',
newPwd: 'New password',
confirmPwd: 'Confirm password',
sure: 'Confirm modification',
oldPwdErr: 'The original password cannot be empty!',
newPwdErr: 'New password cannot be empty!',
confirmPwdErr: 'The two input passwords are inconsistent!',
},
appAddressSelection: {
loadDataFail: 'City data loading failed'
},
appGroupSelect:{
groupSelect:'Group selection',
},
appImageUpload:{
uploadFail:'Upload failed'
},
appOrgSelect:{
loadFail:'Failed to load data'
},
appTransfer:{
title1:'Not selected',
title2:'Selected',
},
appWFApproval:{
commit:'Commit',
wait:'Waiting',
handle:'Handle',
placeholder:'Please enter the content',
end:'End'
},
contextMenuDrag:{
allApp:'All applications',
noFind:'The app was not found'
},
filterMode:{
placeholder:'Conditional logic',
},
filterTree:{
title1:'Add condition',
title2:'Add group',
placeholder:'Attribute',
},
iBizGroupPicker:{
ok:'Ok',
cancel:'Cancel',
},
iBizGroupSelect:{
groupSelect:'Group selection'
},
tabPageExp:{
more:'More',
},
uploadFile:{
imgMsg:'Drag the picture here to replace it',
localUpload:'Local upload',
or:'Or',
imgMsg1:'Select from stock'
}
};
\ No newline at end of file
......@@ -25,7 +25,7 @@ export default {
appColumnLink: {
error: '错误',
valueItemException:"值项异常",
rowDataException:"表格行数据异常"
rowDataException:"表格行数据异常",
},
appColumnRender: {
select: '请选择...',
......@@ -55,6 +55,8 @@ export default {
max: '最大',
row: '行',
currentPage: '当前页',
desc:'请输入起始页',
desc1:'请输入有效的起始页',
},
appFileUpload: {
preview: '查看',
......@@ -65,6 +67,11 @@ export default {
},
appFormDRUIPart: {
blockUITipInfo: '请先保存主数据',
viewLoadComp:'多数据视图加载完成,触发后续表单项更新',
save:'关系数据保存完成',
change:'关系数据值变化',
change1:'视图数据变化',
loadComp:'视图加载完成',
},
appHeaderMenus: {
ibizlab:{
......@@ -131,19 +138,25 @@ export default {
endPlaceholder: '结束日期',
},
dropDownList: {
placeholder: '请选择...'
placeholder: '请选择...',
},
dropDownListDynamic: {
placeholder: '请选择...'
placeholder: '请选择...',
},
dropDownListMpicker: {
placeholder: '请选择...'
placeholder: '请选择...',
},
login: {
error: '错误',
caption: '欢迎登录',
placeholder1:'用户名',
placeholder2:'密码',
name: '登录',
reset:'重置',
other:'其他登录方式',
tip: '输入用户名和密码',
warning1:'qq授权登录暂未支持',
warning2:'微信授权登录暂未支持',
loginname: {
placeholder: '请输入用户名',
message: '用户名不能为空',
......@@ -175,4 +188,64 @@ export default {
hide: '隐藏字段',
showMore: '显示更多字段',
},
appUpdatePassword: {
oldPwd: '原密码',
newPwd: '新密码',
confirmPwd: '确认密码',
sure: '确认修改',
oldPwdErr: '原密码不能为空!',
newPwdErr: '新密码不能为空!',
confirmPwdErr: '两次输入密码不一致!',
},
appAddressSelection: {
loadDataFail: '城市数据加载失败'
},
appGroupSelect:{
groupSelect:'分组选择',
},
appImageUpload:{
uploadFail:'上传失败'
},
appOrgSelect:{
loadFail:'加载数据失败'
},
appTransfer:{
title1:'未选择',
title2:'已选择',
},
appWFApproval:{
commit:'提交',
wait:'等待',
handle:'处理',
placeholder:'请输入内容',
end:'结束'
},
contextMenuDrag:{
allApp:'全部应用',
noFind:'未找到该应用'
},
filterMode:{
placeholder:'条件逻辑',
},
filterTree:{
title1:'添加条件',
title2:'添加组',
placeholder:'属性',
},
iBizGroupPicker:{
ok:'确认',
cancel:'取消',
},
iBizGroupSelect:{
groupSelect:'分组选择'
},
tabPageExp:{
more:'更多',
},
uploadFile:{
imgMsg:'将图片拖到这里替换',
localUpload:'本地上传',
or:'或',
imgMsg1:'从素材库选择'
}
};
\ No newline at end of file
......@@ -252,9 +252,9 @@ export default class JobsInfoEditViewBase extends Vue {
* @memberof JobsInfoEditView
*/
public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '关闭', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Exit', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '关闭', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Exit', target: '' } },
};
......
......@@ -315,19 +315,19 @@ export default class JobsInfoGridViewBase extends Vue {
* @memberof JobsInfoGridView
*/
public toolBarModels: any = {
deuiaction1: { name: 'deuiaction1', caption: '启动', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Start', target: 'SINGLEKEY' } },
deuiaction1: { name: 'deuiaction1', caption: '启动', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Start', target: 'SINGLEKEY' } },
deuiaction2: { name: 'deuiaction2', caption: '停止', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Stop', target: 'SINGLEKEY' } },
deuiaction2: { name: 'deuiaction2', caption: '停止', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Stop', target: 'SINGLEKEY' } },
deuiaction3: { name: 'deuiaction3', caption: '执行', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Execute', target: 'SINGLEKEY' } },
deuiaction3: { name: 'deuiaction3', caption: '执行', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Execute', target: 'SINGLEKEY' } },
deuiaction4: { name: 'deuiaction4', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'New', target: '' } },
deuiaction4: { name: 'deuiaction4', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'New', target: '' } },
deuiaction5: { name: 'deuiaction5', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } },
deuiaction5: { name: 'deuiaction5', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } },
deuiaction6: { name: 'deuiaction6', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
deuiaction6: { name: 'deuiaction6', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
deuiaction7: { name: 'deuiaction7', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } },
deuiaction7: { name: 'deuiaction7', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } },
};
......
......@@ -252,9 +252,9 @@ export default class JobsRegistryEditViewBase extends Vue {
* @memberof JobsRegistryEditView
*/
public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
tbitem3: { name: 'tbitem3', caption: '保存', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Save', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '关闭', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Exit', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '关闭', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Exit', target: '' } },
};
......
......@@ -293,13 +293,13 @@ export default class JobsRegistryGridViewBase extends Vue {
* @memberof JobsRegistryGridView
*/
public toolBarModels: any = {
tbitem3: { name: 'tbitem3', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'New', target: '' } },
tbitem3: { name: 'tbitem3', caption: '新建', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'New', target: '' } },
tbitem4: { name: 'tbitem4', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } },
tbitem4: { name: 'tbitem4', caption: '编辑', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY' } },
tbitem8: { name: 'tbitem8', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
tbitem8: { name: 'tbitem8', caption: '删除', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY' } },
deuiaction1: { name: 'deuiaction1', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true, dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } },
deuiaction1: { name: 'deuiaction1', caption: '过滤', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:'2',dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '' } },
};
......
......@@ -2,8 +2,8 @@
<div class="index_view task-index-view">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="taskindexview"></app-studioaction>
<layout :class="themeClasses" :style="themeStyle">
<layout>
<sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange">
<layout id="movebox">
<sider class="index_sider" :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange" id= "left_move">
<div class="sider-top">
<div class="page-logo">
<span class="menuicon" v-if="isEnableAppSwitch" @click="contextMenuDragVisiable=!contextMenuDragVisiable"><Icon type="md-menu" /></span>
......@@ -29,7 +29,8 @@
</view_appmenu>
<context-menu-drag v-if="isEnableAppSwitch" :contextMenuDragVisiable="contextMenuDragVisiable"></context-menu-drag>
</sider>
<layout>
<div v-show="!collapseChange" id="move_axis"></div>
<layout id="right_move">
<header class="index_header">
<div class="header-left" >
<div class="page-logo">
......@@ -46,7 +47,7 @@
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div>
</header>
<content :class="{'index_content':true,'index_tab_content':Object.is(navModel,'tab')?true:false,'index_route_content':Object.is(navModel,'route')?true:false}" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }" @click="contextMenuDragVisiable=false">
<content :class="{'index_content':true,'index_tab_content':Object.is(navModel,'tab')?true:false,'index_route_content':Object.is(navModel,'route')?true:false}" @click="contextMenuDragVisiable=false">
<tab-page-exp v-if="Object.is(navModel,'tab')"></tab-page-exp>
<app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view>
......@@ -495,6 +496,7 @@ export default class TaskIndexViewBase extends Vue {
this.viewState.next({ tag: 'appmenu', action: 'load', data: {} });
this.$viewTool.setIndexParameters([{ pathName: 'taskindexview', parameterName: 'taskindexview' }]);
this.$viewTool.setIndexViewParam(this.context);
this.mouse_move();
}
......@@ -686,6 +688,41 @@ export default class TaskIndexViewBase extends Vue {
return this.$route.fullPath;
}
/**
* 鼠标拖动事件
*
* @param {*} val
* @returns {*}
* @memberof TaskIndexViewBase
*/
public mouse_move(){
let move_axis:any = document.getElementById("move_axis");
let left_move :any= document.getElementById("left_move");
let right_move :any= document.getElementById("right_move");
let movebox :any= document.getElementById("movebox");
move_axis.onmousedown = (e:any) =>{
let startX = e.clientX;
move_axis.left = move_axis.offsetLeft;
document.onmousemove = (e:any) =>{
let endX = e.clientX;
let moveLen = move_axis.left + (endX - startX);
let maxT = movebox.clientWidth - move_axis.offsetWidth;
if (moveLen < 150) moveLen = 150;
if (moveLen > maxT - 150) moveLen = maxT - 150;
move_axis.style.left = moveLen;
left_move.style.width = moveLen + "px";
right_move.style.width = (movebox.clientWidth - moveLen - 5) + "px";
}
document.onmouseup = (evt) =>{
document.onmousemove = null;
document.onmouseup = null;
move_axis.releaseCapture && move_axis.releaseCapture();
}
move_axis.setCapture && move_axis.setCapture();
return false;
}
}
}
</script>
......
......@@ -104,6 +104,18 @@
}
}
#move_axis{
width: 5px;
height: 100%;
cursor: w-resize;
float: left;
}
.index_sider{
flex: none!important;
max-width: none !important;
transition: none 0s ease 0s;
}
/*** BRGIN:滚动条样式 ***/
::-webkit-scrollbar {
background: transparent;
......
......@@ -61,6 +61,13 @@ export default class JobsInfoUIServiceBase extends UIService {
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof JobsInfoUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of JobsInfoUIServiceBase.
*
......@@ -71,6 +78,7 @@ export default class JobsInfoUIServiceBase extends UIService {
super(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
......@@ -91,6 +99,14 @@ export default class JobsInfoUIServiceBase extends UIService {
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof JobsInfoUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 启动
*
......@@ -353,12 +369,12 @@ export default class JobsInfoUIServiceBase extends UIService {
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
......@@ -369,7 +385,7 @@ export default class JobsInfoUIServiceBase extends UIService {
* @param curData 当前数据
* @memberof JobsInfoUIServiceBase
*/
public async getDEMainStateTag(curData:any){
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
......@@ -377,8 +393,6 @@ export default class JobsInfoUIServiceBase extends UIService {
console.error(`当前数据对象不包含属性singleMainField,可能会发生错误`);
}
})
let strTag:String = "";
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
......@@ -401,4 +415,18 @@ export default class JobsInfoUIServiceBase extends UIService {
return null;
}
/**
* 获取数据对象的操作标识
*
* @param curData 当前数据
* @memberof JobsInfoUIServiceBase
*/
public getDEMainStateOPPrivs(curData:any){
if(this.getDEMainStateTag(curData)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(curData) as string));
}else{
return null;
}
}
}
\ No newline at end of file
......@@ -61,6 +61,13 @@ export default class JobsLockUIServiceBase extends UIService {
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof JobsLockUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of JobsLockUIServiceBase.
*
......@@ -71,6 +78,7 @@ export default class JobsLockUIServiceBase extends UIService {
super(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
......@@ -89,6 +97,14 @@ export default class JobsLockUIServiceBase extends UIService {
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof JobsLockUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
......@@ -159,12 +175,12 @@ export default class JobsLockUIServiceBase extends UIService {
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
......@@ -175,7 +191,7 @@ export default class JobsLockUIServiceBase extends UIService {
* @param curData 当前数据
* @memberof JobsLockUIServiceBase
*/
public async getDEMainStateTag(curData:any){
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
......@@ -183,8 +199,6 @@ export default class JobsLockUIServiceBase extends UIService {
console.error(`当前数据对象不包含属性singleMainField,可能会发生错误`);
}
})
let strTag:String = "";
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
......@@ -207,4 +221,18 @@ export default class JobsLockUIServiceBase extends UIService {
return null;
}
/**
* 获取数据对象的操作标识
*
* @param curData 当前数据
* @memberof JobsLockUIServiceBase
*/
public getDEMainStateOPPrivs(curData:any){
if(this.getDEMainStateTag(curData)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(curData) as string));
}else{
return null;
}
}
}
\ No newline at end of file
......@@ -61,6 +61,13 @@ export default class JobsLogUIServiceBase extends UIService {
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof JobsLogUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of JobsLogUIServiceBase.
*
......@@ -71,6 +78,7 @@ export default class JobsLogUIServiceBase extends UIService {
super(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
......@@ -91,6 +99,14 @@ export default class JobsLogUIServiceBase extends UIService {
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof JobsLogUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
......@@ -161,12 +177,12 @@ export default class JobsLogUIServiceBase extends UIService {
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
......@@ -177,7 +193,7 @@ export default class JobsLogUIServiceBase extends UIService {
* @param curData 当前数据
* @memberof JobsLogUIServiceBase
*/
public async getDEMainStateTag(curData:any){
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
......@@ -185,8 +201,6 @@ export default class JobsLogUIServiceBase extends UIService {
console.error(`当前数据对象不包含属性singleMainField,可能会发生错误`);
}
})
let strTag:String = "";
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
......@@ -209,4 +223,18 @@ export default class JobsLogUIServiceBase extends UIService {
return null;
}
/**
* 获取数据对象的操作标识
*
* @param curData 当前数据
* @memberof JobsLogUIServiceBase
*/
public getDEMainStateOPPrivs(curData:any){
if(this.getDEMainStateTag(curData)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(curData) as string));
}else{
return null;
}
}
}
\ No newline at end of file
......@@ -61,6 +61,13 @@ export default class JobsRegistryUIServiceBase extends UIService {
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof JobsRegistryUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of JobsRegistryUIServiceBase.
*
......@@ -71,6 +78,7 @@ export default class JobsRegistryUIServiceBase extends UIService {
super(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
......@@ -91,6 +99,14 @@ export default class JobsRegistryUIServiceBase extends UIService {
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof JobsRegistryUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
......@@ -161,12 +177,12 @@ export default class JobsRegistryUIServiceBase extends UIService {
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ await this.getDEMainStateTag(curData)}`;
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
......@@ -177,7 +193,7 @@ export default class JobsRegistryUIServiceBase extends UIService {
* @param curData 当前数据
* @memberof JobsRegistryUIServiceBase
*/
public async getDEMainStateTag(curData:any){
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
......@@ -185,8 +201,6 @@ export default class JobsRegistryUIServiceBase extends UIService {
console.error(`当前数据对象不包含属性singleMainField,可能会发生错误`);
}
})
let strTag:String = "";
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
......@@ -209,4 +223,18 @@ export default class JobsRegistryUIServiceBase extends UIService {
return null;
}
/**
* 获取数据对象的操作标识
*
* @param curData 当前数据
* @memberof JobsRegistryUIServiceBase
*/
public getDEMainStateOPPrivs(curData:any){
if(this.getDEMainStateTag(curData)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(curData) as string));
}else{
return null;
}
}
}
\ No newline at end of file
......@@ -693,6 +693,7 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
public handleMenusResource(inputMenus:Array<any>){
if(Environment.enablePermissionValid){
this.computedEffectiveMenus(inputMenus);
this.computeParentMenus(inputMenus);
}
this.dataProcess(inputMenus);
this.menus = inputMenus;
......@@ -702,7 +703,7 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
/**
* 计算有效菜单项
*
* @param {*} data
* @param {*} inputMenus
* @memberof TaskIndexViewBase
*/
public computedEffectiveMenus(inputMenus:Array<any>){
......@@ -716,6 +717,29 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
})
}
/**
* 计算父项菜单项是否隐藏
*
* @param {*} inputMenus
* @memberof TaskIndexViewBase
*/
public computeParentMenus(inputMenus:Array<any>){
if(inputMenus && inputMenus.length >0){
inputMenus.forEach((item:any) =>{
if(item.hidden && item.items && item.items.length >0){
item.items.map((singleItem:any) =>{
if(!singleItem.hidden){
item.hidden = false;
}
if(singleItem.items && singleItem.items.length >0){
this.computeParentMenus(singleItem.items);
}
})
}
})
}
}
/**
* 数据处理
*
......
......@@ -181,7 +181,7 @@ export default class ControlService {
let dataItems: any[] = model.getDataItems();
dataItems.forEach(dataitem => {
let val = data.hasOwnProperty(dataitem.prop) ? data[dataitem.prop] : null;
if (!val) {
if (val === null) {
val = data.hasOwnProperty(dataitem.name) ? data[dataitem.name] : null;
}
if((isCreate === undefined || isCreate === null ) && Object.is(dataitem.dataType, 'GUID') && Object.is(dataitem.name, 'srfkey') && (val && !Object.is(val, ''))){
......
......@@ -41,26 +41,8 @@
</changeSet>
<!--输出实体[JOBS_REGISTRY]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_registry-37-2">
<createTable tableName="JOBS_REGISTRY">
<column name="ID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_REGISTRY_ID"/>
</column>
<column name="APP" remarks="" type="VARCHAR(100)">
</column>
<column name="ADDRESS" remarks="" type="VARCHAR(255)">
</column>
<column name="STATUS" remarks="" type="INT">
</column>
<column name="UPDATE_TIME" remarks="" type="DATETIME">
</column>
</createTable>
</changeSet>
<!--输出实体[JOBS_LOCK]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_lock-20-3">
<changeSet author="a_A_5d9d78509" id="tab-jobs_lock-20-2">
<createTable tableName="JOBS_LOCK">
<column name="ID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_LOCK_ID"/>
......@@ -76,7 +58,7 @@
<!--输出实体[JOBS_LOG]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_log-59-4">
<changeSet author="a_A_5d9d78509" id="tab-jobs_log-59-3">
<createTable tableName="JOBS_LOG">
<column name="ID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_LOG_ID"/>
......@@ -102,9 +84,27 @@
</createTable>
</changeSet>
<!--输出实体[JOBS_REGISTRY]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-jobs_registry-37-4">
<createTable tableName="JOBS_REGISTRY">
<column name="ID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_JOBS_REGISTRY_ID"/>
</column>
<column name="APP" remarks="" type="VARCHAR(100)">
</column>
<column name="ADDRESS" remarks="" type="VARCHAR(255)">
</column>
<column name="STATUS" remarks="" type="INT">
</column>
<column name="UPDATE_TIME" remarks="" type="DATETIME">
</column>
</createTable>
</changeSet>
<!--输出实体[JOBS_INFO]外键关系 -->
<!--输出实体[JOBS_REGISTRY]外键关系 -->
<!--输出实体[JOBS_LOCK]外键关系 -->
<!--输出实体[JOBS_LOG]外键关系 -->
<!--输出实体[JOBS_REGISTRY]外键关系 -->
</databaseChangeLog>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册