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

ibiz4j 发布系统代码

上级 b1d45ed0
......@@ -8,6 +8,7 @@
"id": "1",
"label": "是",
"text": "是",
"class":"",
"data":"",
"codename":"Item_1",
"value": "1",
......@@ -18,6 +19,7 @@
"id": "0",
"label": "否",
"text": "否",
"class":"",
"data":"",
"codename":"Item_0",
"value": "0",
......
{
"dictoptioneditview": {
"title": "字典项编辑视图",
"caption": "字典项",
"viewtype": "DEEDITVIEW",
"viewmodule": "dict",
"viewname": "DictOptionEditView",
"viewtag": "0986ae2314847b586b20edfbb40fc82b"
},
"dictoptiongridview": {
"title": "字典项表格视图",
"caption": "字典项",
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionGridView",
"viewtag": "56893daa82632caa84a6edeeb0acabaf"
},
"dictcatalogpickupgridview": {
"title": "字典选择表格视图",
"caption": "字典",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogPickupGridView",
"viewtag": "66f9c86e5a56857f977ef91461338255"
"viewtag": "22e202992971f634c00e022b2cae335e"
},
"dictoptiongrideditview": {
"title": "字典项表格视图",
......@@ -21,7 +21,7 @@
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionGridEditView",
"viewtag": "6aa3306d5c50039f771e4617a8a5cd64"
"viewtag": "44488f30cf90677019077ed9ad33628e"
},
"dictcataloggridview": {
"title": "字典表格视图",
......@@ -29,23 +29,23 @@
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogGridView",
"viewtag": "7395bd2cc14d34a67b772f13a50b2587"
"viewtag": "74a6ce3ddf610ce7fb201662c6d4b8da"
},
"dictoptioneditview": {
"title": "字典项编辑视图",
"caption": "字典",
"viewtype": "DEEDITVIEW",
"dictcatalogpickupgridview": {
"title": "字典选择表格视图",
"caption": "字典",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionEditView",
"viewtag": "8ad70084b5f98a26370b74da612d3f49"
"viewname": "DictCatalogPickupGridView",
"viewtag": "842cfc03d5e93435fc52d317a55cdfd4"
},
"appindexview": {
"title": "dictionary",
"caption": "ibizlab",
"viewtype": "APPINDEXVIEW",
"dictcatalogpickupview": {
"title": "字典数据选择视图",
"caption": "字典",
"viewtype": "DEPICKUPVIEW",
"viewmodule": "dict",
"viewname": "AppIndexView",
"viewtag": "D394F269-6F97-4ED7-AFE8-F4A2E09BA602"
"viewname": "DictCatalogPickupView",
"viewtag": "a9c82814d9bcd23dbf78c4c073759d7c"
},
"dictcatalogeditview": {
"title": "字典编辑视图",
......@@ -53,14 +53,14 @@
"viewtype": "DEEDITVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogEditView",
"viewtag": "e294ce8c6557ca26a032efa08eeb5508"
"viewtag": "aef11c4ae15f8255ee53623adf148f2a"
},
"dictcatalogpickupview": {
"title": "字典数据选择视图",
"caption": "字典",
"viewtype": "DEPICKUPVIEW",
"appindexview": {
"title": "dictionary",
"caption": "ibizlab",
"viewtype": "APPINDEXVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogPickupView",
"viewtag": "eb4772f75066d6c9eb26d8b01d4e16b7"
"viewname": "AppIndexView",
"viewtag": "d28e2613c581adb940ff8c3469365646"
}
}
window.Environment = {
// 应用基础路径
BaseUrl: '',
// 是否为开发模式
devMode: true,
// 是否为pc端应用
isAppMode:true,
// 是否开启权限认证
enablePermissionValid:false,
// 打开目标工具,可选参数:sln、mos
debugOpenMode:'mos',
// 配置平台地址
StudioUrl: "http://172.16.170.145/mos/",
// 中心标识
SlnId: "B4BF5C84-D020-4D9A-A986-8FA4FD72816C",
// 系统标识
SysId: "B428B5BE-EA90-4101-A493-BA7085D89F0A",
// 前端应用标识
AppId: "6e0b7357169ef4eba84e1347ed94bd84",
}
\ No newline at end of file
......@@ -12,6 +12,7 @@
<script lang="ts">
import { Vue, Component, Prop, Model, Emit,Inject, Watch } from "vue-property-decorator";
import { Subject,Subscription } from "rxjs";
import { Environment } from '@/environments/environment';
@Component({})
export default class AppActionBar extends Vue {
......@@ -99,37 +100,39 @@ export default class AppActionBar extends Vue {
* @memberof AppActionBar
*/
public calcActionItemAuthState(data:any,ActionModel:any,UIService:any){
for (const key in ActionModel) {
if (!ActionModel.hasOwnProperty(key)) {
return;
}
const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult = UIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_item.disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_item.visabled = false;
}else{
_item.visabled = true;
}
}
if(dataActionResult === 1){
_item.visabled = true;
_item.disabled = false;
}
}
if(Environment.enablePermissionValid){
for (const key in ActionModel) {
if (!ActionModel.hasOwnProperty(key)) {
return;
}
const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult = UIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_item.disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_item.visabled = false;
}else{
_item.visabled = true;
}
}
if(dataActionResult === 1){
_item.visabled = true;
_item.disabled = false;
}
}
}
}
}
......
......@@ -222,7 +222,12 @@ export default class AppEmbedPicker extends Vue {
if(Object.is(newFormData[this.refreshitems], oldDormData[this.refreshitems])) {
return;
}
this.setValue([{srfmajortext: null, srfkey: null}]);
if (this.valueItem) {
this.$emit('formitemvaluechange', { name: this.valueItem, value: null });
}
if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: null });
}
}
/**
......@@ -231,6 +236,7 @@ export default class AppEmbedPicker extends Vue {
* @memberof AppEmbedPicker
*/
public created() {
this.setViewParam();
if(this.formState) {
this.formStateEvent = this.formState.subscribe(({ tag, action, data }) => {
if (Object.is('load', action)) {
......
......@@ -108,6 +108,7 @@
<script lang="ts">
import { Vue, Component, Prop, Watch } from 'vue-property-decorator';
import { Environment } from '@/environments/environment';
@Component({})
export default class AppFormGroup extends Vue {
......@@ -157,36 +158,38 @@ export default class AppFormGroup extends Vue {
* @memberof AppFormGroup
*/
public calcActionItemAuthState(data:any,ActionModel:any,UIService:any){
for (const key in ActionModel) {
if (!ActionModel.hasOwnProperty(key)) {
return;
}
const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult = UIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
if(Environment.enablePermissionValid){
for (const key in ActionModel) {
if (!ActionModel.hasOwnProperty(key)) {
return;
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_item.disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_item.visabled = false;
const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){
let dataActionResult:any;
if(Object.is(_item['actiontarget'],"NONE")){
dataActionResult = UIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult = UIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_item.disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_item.visabled = false;
}else{
_item.visabled = true;
}
}
if(dataActionResult === 1){
_item.visabled = true;
_item.disabled = false;
}
}
if(dataActionResult === 1){
_item.visabled = true;
_item.disabled = false;
}
}
}
}
......
......@@ -19,10 +19,12 @@
padding-top: 2px;
padding-right: 2px;
color: #aaa;
cursor: pointer;
}
.Row {
height: 70px;
min-height: 70px;
height: auto;
border-bottom: 1px solid lightgray;
display: flex;
align-items: center;
......@@ -34,20 +36,24 @@
.column2 {
border: 0px red solid;
.process-definition-name {
font-size: 14px;
padding-top: 5px;
}
.description {
margin-top: 6px;
margin-bottom: 6px;
max-width: 95%;
}
.createtime {
padding-bottom: 5px;
}
.el-row {
display: flex;
.el-col {
flex-grow: 1;
div {
margin-bottom: 5px;
}
div:first-child {
font-weight: 500;
overflow: hidden;
......
......@@ -20,8 +20,8 @@
<el-row :draggable="false">
<el-col :span="16" :draggable="false">
<div class="process-definition-name" :draggable="false"><strong>{{myTask.processDefinitionName}}</strong></div>
<div :draggable="false">{{myTask.description}}</div>
<div :draggable="false">{{ formatDate(myTask.createTime, 'MM-DD hh:mm') }}</div>
<div class="description" :draggable="false">{{myTask.description}}</div>
<div class="createtime" :draggable="false">{{ formatDate(myTask.createTime, 'MM-DD hh:mm') }}</div>
</el-col>
<el-col :span="5" :draggable="false" style='display: flex; align-items: center'>
<el-tag :type="myTask.name.indexOf('驳回')!=-1?'danger':(myTask.name.indexOf('成功')!=-1?'success':(myTask.name.indexOf('取消')!=-1?'info':'-'))"
......@@ -54,8 +54,8 @@
<el-row :draggable="false">
<el-col :span="16" :draggable="false">
<div class="process-definition-name" :draggable="false"><strong>{{myMsg.processDefinitionName}}</strong></div>
<div :draggable="false">{{myMsg.description}}</div>
<div :draggable="false">{{ formatDate(myMsg.createTime, 'MM-DD hh:mm') }}</div>
<div class="description" :draggable="false">{{myMsg.description}}</div>
<div class="createtime" :draggable="false">{{ formatDate(myMsg.createTime, 'MM-DD hh:mm') }}</div>
</el-col>
<el-col :span="5" :draggable="false" style='display: flex; align-items: center'>
<el-tag :type="myMsg.name.indexOf('驳回')!=-1?'danger':(myMsg.name.indexOf('成功')!=-1?'success':(myMsg.name.indexOf('取消')!=-1?'info':'-'))"
......
......@@ -5,11 +5,21 @@
display: none;
}
.el-transfer{
max-height: 200px;
min-width: 100% !important;
display: flex;
justify-content: space-between;
.el-transfer-panel{
min-width: 25%;
.el-transfer-panel__body{
max-height: 160px;
.el-checkbox-group{
max-height: 160px;
.el-checkbox+.el-checkbox {
margin-left: 0px;
}
}
}
}
.el-transfer__buttons{
align-self: center;
......
......@@ -5,30 +5,35 @@
<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">
<div class="approval-content-item-left">
{{usertask.userTaskName}}
</div>
<div class="approval-content-item-right">
<div class="approval-content-item-wait" v-if="usertask.identitylinks.length >0">
{{$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">
<div class="approval-content-item-info-item approval-content-item-info-top">
{{`【${comment.type}】${comment.fullMessage}`}}
<template v-for="(usertask,index) in data.usertasks" >
<template v-if="usertask.identitylinks.length >0">
<div class="approval-content-item" :key="index">
<div class="approval-content-item-left">
{{usertask.userTaskName}}
</div>
<div class="approval-content-item-right">
<div class="approval-content-item-wait" v-if="usertask.identitylinks.length >0">
{{$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-item approval-content-item-info-bottom">
<span class="info-bottom-name">{{comment.authorName}}</span>
<span>{{comment.time}}</span>
<div class="approval-content-item-info" v-if="usertask.comments.length >0">
<div v-for="(comment,commentInx) in usertask.comments" :key="commentInx">
<div class="approval-content-item-info-item approval-content-item-info-top">
{{`【${comment.type}】${comment.fullMessage}`}}
</div>
<div class="approval-content-item-info-item approval-content-item-info-bottom">
<span class="info-bottom-name">{{comment.authorName}}</span>
<span>{{comment.time}}</span>
</div>
</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="$t('components.appWFApproval.placeholder')"></el-input>
</div>
</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="$t('components.appWFApproval.placeholder')"></el-input>
</div>
</div>
</div>
</template>
</template>
</div>
<div class="app-wf-approval-bottom">
<span v-if="data.endTime">{{data.endTime}}{{$t('components.appWFApproval.end')}}</span>
......
......@@ -8,7 +8,7 @@
:filterable="filterable"
@on-open-change="onClick"
: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" :class="item.class" :value="item.value">{{($t('userCustom.'+tag+'.'+item.value)!== ('userCustom.'+tag+'.'+item.value))?$t('userCustom.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
</template>
......
......@@ -12,7 +12,7 @@
:filterable="filterable"
@on-open-change="onClick"
: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" :class="item.class" :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>
......
......@@ -9,7 +9,7 @@
:filterable="filterable"
@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" :class="item.class" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
<ibiz-select-tree v-if="hasChildren" class="tree-dropdown-list" :disabled="disabled" :NodesData="items" v-model="currentVal" :multiple="false"></ibiz-select-tree>
</div>
......
import { Environment } from '@/environments/environment';
/**
*
*
......@@ -184,37 +186,39 @@ export default class ViewEngine {
* @memberof ViewEngine
*/
public calcToolbarItemAuthState(data:any){
const _this: any = this;
for (const key in _this.view.toolBarModels) {
if (!_this.view.toolBarModels.hasOwnProperty(key)) {
return;
}
const _item = _this.view.toolBarModels[key];
if(_item && _item['dataaccaction'] && _this.view.appUIService){
let dataActionResult:any;
if (_item.uiaction && (Object.is(_item.uiaction.target, 'NONE'))){
dataActionResult = _this.view.appUIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult= _this.view.appUIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
if(Environment.enablePermissionValid){
const _this: any = this;
for (const key in _this.view.toolBarModels) {
if (!_this.view.toolBarModels.hasOwnProperty(key)) {
return;
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_this.view.toolBarModels[key].disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_this.view.toolBarModels[key].visabled = false;
const _item = _this.view.toolBarModels[key];
if(_item && _item['dataaccaction'] && _this.view.appUIService){
let dataActionResult:any;
if (_item.uiaction && (Object.is(_item.uiaction.target, 'NONE'))){
dataActionResult = _this.view.appUIService.getResourceOPPrivs(_item['dataaccaction']);
}else{
if(data && Object.keys(data).length >0){
dataActionResult= _this.view.appUIService.getAllOPPrivs(data)[_item['dataaccaction']];
}
}
// 无权限:0;有权限:1
if(dataActionResult === 0){
// 禁用:1;隐藏:2;隐藏且默认隐藏:6
if(_item.noprivdisplaymode === 1){
_this.view.toolBarModels[key].disabled = true;
}
if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){
_this.view.toolBarModels[key].visabled = false;
}else{
_this.view.toolBarModels[key].visabled = true;
}
}
if(dataActionResult === 1){
_this.view.toolBarModels[key].visabled = true;
_this.view.toolBarModels[key].disabled = false;
}
}
if(dataActionResult === 1){
_this.view.toolBarModels[key].visabled = true;
_this.view.toolBarModels[key].disabled = false;
}
}
}
}
......
......@@ -25,8 +25,10 @@ export const Environment = {
enablePermissionValid:false,
// 项目模板地址
ProjectUrl: "http://demo.ibizlab.cn/ibizr7pfstdtempl/ibizvuer7",
// 打开目标工具,可选参数:sln、mos
debugOpenMode:'mos',
// 配置平台地址
StudioUrl: "http://172.16.170.145/slnstudio/",
StudioUrl: "http://172.16.170.145/mos/",
// 中心标识
SlnId: "B4BF5C84-D020-4D9A-A986-8FA4FD72816C",
// 系统标识
......@@ -34,9 +36,13 @@ export const Environment = {
// 前端应用标识
AppId: "6e0b7357169ef4eba84e1347ed94bd84",
// 项目发布文件地址
PublishProjectUrl: 'http://oauth2:ymrzrgzh97axsgq_TjR3@labcs.ibizee.cn/ibiz4jteam/ibzdict.git',
PublishProjectUrl: 'http://oauth2:cTux_e7Aoz1PrasP5dDq@demo.ibizlab.cn/ibiz4jteam/ibzdict.git',
// ibiz开放平台地址
ibizlabtUrl: 'https://www.ibizlab.cn',
// ibiz论坛地址
ibizbbstUrl: 'https://bbs.ibizlab.cn',
};
\ No newline at end of file
};
// 挂载外部配置文件
if ((window as any).Environment) {
Object.assign(Environment, (window as any).Environment);
}
\ No newline at end of file
......@@ -10,22 +10,22 @@ export default {
updatedate: "最后修改时间",
},
views: {
pickupgridview: {
caption: "字典",
title: "字典选择表格视图",
},
gridview: {
caption: "字典",
title: "字典表格视图",
},
editview: {
pickupgridview: {
caption: "字典",
title: "字典编辑视图",
title: "字典选择表格视图",
},
pickupview: {
caption: "字典",
title: "字典数据选择视图",
},
editview: {
caption: "字典",
title: "字典编辑视图",
},
},
main_form: {
details: {
......
......@@ -9,22 +9,22 @@ export default {
updatedate: "最后修改时间",
},
views: {
pickupgridview: {
caption: "字典",
title: "字典选择表格视图",
},
gridview: {
caption: "字典",
title: "字典表格视图",
},
editview: {
pickupgridview: {
caption: "字典",
title: "字典编辑视图",
title: "字典选择表格视图",
},
pickupview: {
caption: "字典",
title: "字典数据选择视图",
},
editview: {
caption: "字典",
title: "字典编辑视图",
},
},
main_form: {
details: {
......
......@@ -17,6 +17,10 @@ export default {
updatedate: "最后修改时间",
},
views: {
editview: {
caption: "字典项",
title: "字典项编辑视图",
},
gridview: {
caption: "字典项",
title: "字典项表格视图",
......@@ -25,10 +29,6 @@ export default {
caption: "字典项",
title: "字典项表格视图",
},
editview: {
caption: "字典项",
title: "字典项编辑视图",
},
},
main_form: {
details: {
......@@ -106,6 +106,16 @@ export default {
uiactions: {
},
},
editviewtoolbar_toolbar: {
tbitem1: {
caption: "Save And Close",
tip: "Save And Close Window",
},
tbitem2: {
caption: "关闭",
tip: "关闭",
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: "New",
......@@ -160,16 +170,6 @@ export default {
tip: "Filter",
},
},
editviewtoolbar_toolbar: {
tbitem1: {
caption: "Save And Close",
tip: "Save And Close Window",
},
tbitem2: {
caption: "关闭",
tip: "关闭",
},
},
grideditviewtoolbar_toolbar: {
tbitem3: {
caption: "New",
......
......@@ -16,6 +16,10 @@ export default {
updatedate: "最后修改时间",
},
views: {
editview: {
caption: "字典项",
title: "字典项编辑视图",
},
gridview: {
caption: "字典项",
title: "字典项表格视图",
......@@ -24,10 +28,6 @@ export default {
caption: "字典项",
title: "字典项表格视图",
},
editview: {
caption: "字典项",
title: "字典项编辑视图",
},
},
main_form: {
details: {
......@@ -105,6 +105,16 @@ export default {
uiactions: {
},
},
editviewtoolbar_toolbar: {
tbitem1: {
caption: "保存并关闭",
tip: "保存并关闭",
},
tbitem2: {
caption: "关闭",
tip: "关闭",
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: "新建",
......@@ -159,16 +169,6 @@ export default {
tip: "过滤",
},
},
editviewtoolbar_toolbar: {
tbitem1: {
caption: "保存并关闭",
tip: "保存并关闭",
},
tbitem2: {
caption: "关闭",
tip: "关闭",
},
},
grideditviewtoolbar_toolbar: {
tbitem3: {
caption: "新建",
......
......@@ -11,7 +11,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => {
name: 'appmenu',
items: [
{
id: '3F92DBA9-3532-49CD-A482-E9048A132684',
id: '801bacb689744f3de00c39b84618cbf5',
name: 'menuitem1',
text: '目录',
type: 'MENUITEM',
......@@ -29,7 +29,7 @@ mock.onGet('v7/app-index-viewappmenu').reply((config: any) => {
resourcetag: '',
},
{
id: '73B8AFA0-9EDB-4224-93B8-F8B7C4D01AE3',
id: 'edcf745c76c1c398b5e5511586f4e4c8',
name: 'menuitem2',
text: '栏目',
type: 'MENUITEM',
......
......@@ -16,6 +16,7 @@ mock.onGet('./assets/json/data-dictionary.json').reply((config: any) => {
id: "1",
label: "是",
text: "是",
"class":"",
"data":"",
"codename":"Item_1",
value: "1",
......@@ -26,6 +27,7 @@ mock.onGet('./assets/json/data-dictionary.json').reply((config: any) => {
id: "0",
label: "否",
text: "否",
"class":"",
"data":"",
"codename":"Item_0",
value: "0",
......
......@@ -7,21 +7,21 @@ import Mock from 'mockjs'
mock.onGet('./assets/json/view-config.json').reply((config: any) => {
let status = MockAdapter.mockStatus(config);
return [status,{
"dictoptiongridview": {
"dictoptioneditview": {
"title": "字典项编辑视图",
"caption": "字典项",
"viewtype": "DEEDITVIEW",
"viewmodule": "dict",
"viewname": "DictOptionEditView",
"viewtag": "0986ae2314847b586b20edfbb40fc82b"
},
"dictoptiongridview": {
"title": "字典项表格视图",
"caption": "字典项",
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionGridView",
"viewtag": "56893daa82632caa84a6edeeb0acabaf"
},
"dictcatalogpickupgridview": {
"title": "字典选择表格视图",
"caption": "字典",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogPickupGridView",
"viewtag": "66f9c86e5a56857f977ef91461338255"
"viewtag": "22e202992971f634c00e022b2cae335e"
},
"dictoptiongrideditview": {
"title": "字典项表格视图",
......@@ -29,7 +29,7 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionGridEditView",
"viewtag": "6aa3306d5c50039f771e4617a8a5cd64"
"viewtag": "44488f30cf90677019077ed9ad33628e"
},
"dictcataloggridview": {
"title": "字典表格视图",
......@@ -37,23 +37,23 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewtype": "DEGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogGridView",
"viewtag": "7395bd2cc14d34a67b772f13a50b2587"
"viewtag": "74a6ce3ddf610ce7fb201662c6d4b8da"
},
"dictoptioneditview": {
"title": "字典项编辑视图",
"caption": "字典",
"viewtype": "DEEDITVIEW",
"dictcatalogpickupgridview": {
"title": "字典选择表格视图",
"caption": "字典",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "dict",
"viewname": "DictOptionEditView",
"viewtag": "8ad70084b5f98a26370b74da612d3f49"
"viewname": "DictCatalogPickupGridView",
"viewtag": "842cfc03d5e93435fc52d317a55cdfd4"
},
"appindexview": {
"title": "dictionary",
"caption": "ibizlab",
"viewtype": "APPINDEXVIEW",
"dictcatalogpickupview": {
"title": "字典数据选择视图",
"caption": "字典",
"viewtype": "DEPICKUPVIEW",
"viewmodule": "dict",
"viewname": "AppIndexView",
"viewtag": "D394F269-6F97-4ED7-AFE8-F4A2E09BA602"
"viewname": "DictCatalogPickupView",
"viewtag": "a9c82814d9bcd23dbf78c4c073759d7c"
},
"dictcatalogeditview": {
"title": "字典编辑视图",
......@@ -61,15 +61,15 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewtype": "DEEDITVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogEditView",
"viewtag": "e294ce8c6557ca26a032efa08eeb5508"
"viewtag": "aef11c4ae15f8255ee53623adf148f2a"
},
"dictcatalogpickupview": {
"title": "字典数据选择视图",
"caption": "字典",
"viewtype": "DEPICKUPVIEW",
"appindexview": {
"title": "dictionary",
"caption": "ibizlab",
"viewtype": "APPINDEXVIEW",
"viewmodule": "dict",
"viewname": "DictCatalogPickupView",
"viewtag": "eb4772f75066d6c9eb26d8b01d4e16b7"
"viewname": "AppIndexView",
"viewtag": "d28e2613c581adb940ff8c3469365646"
}
}];
});
\ No newline at end of file
......@@ -11,7 +11,7 @@ export class FormButtonModel extends FormDetailModel {
constructor(opts: any = {}) {
super(opts);
this.disabled = opts.disabled;
this.$disabled = opts.disabled;
this.uiaction = opts.uiaction;
}
......@@ -21,7 +21,7 @@ export class FormButtonModel extends FormDetailModel {
* @type {boolean}
* @memberof FormButtonModel
*/
public disabled:boolean = false;
private $disabled:boolean = false;
/**
* 按钮对应的界面行为
......@@ -31,4 +31,26 @@ export class FormButtonModel extends FormDetailModel {
*/
public uiaction:any;
/**
* 是否启用
*
* @type {boolean}
* @memberof FormButtonModel
*/
public get disabled(): boolean {
return this.$disabled;
}
/**
* 设置是否启用
*
* @memberof FormButtonModel
*/
public set disabled(val: boolean) {
if(this.isPower) {
this.$disabled = val;
}
}
}
\ No newline at end of file
......@@ -6,6 +6,14 @@
*/
export class FormDetailModel {
/**
* 是否有权限
*
* @type {boolean}
* @memberof FormDetailModel
*/
public isPower: boolean = true;
/**
* 成员标题
*
......@@ -44,7 +52,7 @@ export class FormDetailModel {
* @type {boolean}
* @memberof FormDetailModel
*/
public visible: boolean = true;
public $visible: boolean = true;
/**
* 成员是否显示(旧)
......@@ -83,12 +91,33 @@ export class FormDetailModel {
this.detailType = !Object.is(opts.detailType, '') ? opts.detailType : '';
this.form = opts.form ? opts.form : {};
this.name = !Object.is(opts.name, '') ? opts.name : '';
this.visible = opts.visible ? true : false;
this.$visible = opts.visible ? true : false;
this.oldVisible = opts.visible ? true : false;
this.isShowCaption = opts.isShowCaption ? true : false;
this.isControlledContent = opts.isControlledContent ? true : false;
}
/**
* 设置成员是否隐藏
*
* @memberof FormDetailModel
*/
public set visible(val: boolean) {
if(this.isPower) {
this.$visible = val;
}
}
/**
* 获取成员是否隐藏
*
* @memberof FormDetailModel
*/
public get visible() {
return this.$visible;
}
/**
* 设置显示与隐藏
*
......@@ -96,7 +125,9 @@ export class FormDetailModel {
* @memberof FormDetailModel
*/
public setVisible(state: boolean): void {
this.visible = state;
if(this.isPower) {
this.visible = state;
}
}
/**
......
......@@ -130,7 +130,7 @@ export default class AppIndexViewBase extends Vue {
* @type {string}
* @memberof AppIndexViewBase
*/
public viewtag: string = 'D394F269-6F97-4ED7-AFE8-F4A2E09BA602';
public viewtag: string = 'd28e2613c581adb940ff8c3469365646';
/**
* 自定义视图导航上下文集合
......
export const PageComponents = {
install(Vue: any, opt: any) {
Vue.component('dict-option-edit-view', () => import('@pages/dict/dict-option-edit-view/dict-option-edit-view.vue'));
Vue.component('dict-option-grid-edit-view', () => import('@pages/dict/dict-option-grid-edit-view/dict-option-grid-edit-view.vue'));
Vue.component('dict-catalog-pickup-grid-view', () => import('@pages/dict/dict-catalog-pickup-grid-view/dict-catalog-pickup-grid-view.vue'));
Vue.component('dict-option-edit-view', () => import('@pages/dict/dict-option-edit-view/dict-option-edit-view.vue'));
Vue.component('dict-option-grid-view', () => import('@pages/dict/dict-option-grid-view/dict-option-grid-view.vue'));
Vue.component('dict-option-grid-edit-view', () => import('@pages/dict/dict-option-grid-edit-view/dict-option-grid-edit-view.vue'));
Vue.component('dict-catalog-grid-view', () => import('@pages/dict/dict-catalog-grid-view/dict-catalog-grid-view.vue'));
Vue.component('dict-catalog-pickup-view', () => import('@pages/dict/dict-catalog-pickup-view/dict-catalog-pickup-view.vue'));
Vue.component('dict-catalog-edit-view', () => import('@pages/dict/dict-catalog-edit-view/dict-catalog-edit-view.vue'));
Vue.component('dict-catalog-grid-view', () => import('@pages/dict/dict-catalog-grid-view/dict-catalog-grid-view.vue'));
}
};
\ No newline at end of file
......@@ -8,19 +8,19 @@
.dict-catalog-edit-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.dict-catalog-grid-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
......@@ -3,43 +3,43 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="dictcatalogpickupgridview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :bordered="false">
<div class='content-container pickup-grid-view'>
<view_searchform
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
v-show="isExpandSearchForm"
loaddraftAction="FilterGetDraft"
loadAction="FilterGet"
name="searchform"
ref='searchform'
@save="searchform_save($event)"
@search="searchform_search($event)"
@load="searchform_load($event)"
@closeview="closeView($event)">
</view_searchform>
<view_grid
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:isSingleSelect="isSingleSelect"
:selectedData="selectedData"
:showBusyIndicator="true"
updateAction=""
removeAction="Remove"
loaddraftAction=""
loadAction=""
createAction=""
fetchAction="FetchDefault"
name="grid"
ref='grid'
@selectionchange="grid_selectionchange($event)"
@beforeload="grid_beforeload($event)"
@rowdblclick="grid_rowdblclick($event)"
@load="grid_load($event)"
@closeview="closeView($event)">
</view_grid>
<view_searchform
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:showBusyIndicator="true"
v-show="isExpandSearchForm"
loaddraftAction="FilterGetDraft"
loadAction="FilterGet"
name="searchform"
ref='searchform'
@save="searchform_save($event)"
@search="searchform_search($event)"
@load="searchform_load($event)"
@closeview="closeView($event)">
</view_searchform>
<view_grid
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:isSingleSelect="isSingleSelect"
:selectedData="selectedData"
:showBusyIndicator="true"
updateAction=""
removeAction="Remove"
loaddraftAction=""
loadAction=""
createAction=""
fetchAction="FetchDefault"
name="grid"
ref='grid'
@selectionchange="grid_selectionchange($event)"
@beforeload="grid_beforeload($event)"
@rowdblclick="grid_rowdblclick($event)"
@load="grid_load($event)"
@closeview="closeView($event)">
</view_grid>
</div>
</card>
</div>
......@@ -140,7 +140,7 @@ export default class DictCatalogPickupGridViewBase extends Vue {
* @type {string}
* @memberof DictCatalogPickupGridViewBase
*/
public viewtag: string = '66f9c86e5a56857f977ef91461338255';
public viewtag: string = '842cfc03d5e93435fc52d317a55cdfd4';
/**
* 自定义视图导航上下文集合
......
......@@ -3,20 +3,20 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="dictcatalogpickupview"></app-studioaction>
<card class='view-card view-no-caption view-no-toolbar' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view">
<view_pickupviewpanel
:viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))"
:context="JSON.parse(JSON.stringify(context))"
:isSingleSelect="isSingleSelect"
:selectedData="selectedData"
:isShowButton="isShowButton"
name="pickupviewpanel"
ref='pickupviewpanel'
@selectionchange="pickupviewpanel_selectionchange($event)"
@activated="pickupviewpanel_activated($event)"
@load="pickupviewpanel_load($event)"
@closeview="closeView($event)">
</view_pickupviewpanel>
<view_pickupviewpanel
:viewState="viewState"
:viewparams="JSON.parse(JSON.stringify(viewparams))"
:context="JSON.parse(JSON.stringify(context))"
:isSingleSelect="isSingleSelect"
:selectedData="selectedData"
:isShowButton="isShowButton"
name="pickupviewpanel"
ref='pickupviewpanel'
@selectionchange="pickupviewpanel_selectionchange($event)"
@activated="pickupviewpanel_activated($event)"
@load="pickupviewpanel_load($event)"
@closeview="closeView($event)">
</view_pickupviewpanel>
<card v-if="isShowButton" :dis-hover="true" :bordered="false" class="footer">
<row :style="{ textAlign: 'right' }">
<i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button>
......@@ -125,7 +125,7 @@ export default class DictCatalogPickupViewBase extends Vue {
* @type {string}
* @memberof DictCatalogPickupViewBase
*/
public viewtag: string = 'eb4772f75066d6c9eb26d8b01d4e16b7';
public viewtag: string = 'a9c82814d9bcd23dbf78c4c073759d7c';
/**
* 自定义视图导航上下文集合
......
......@@ -5,51 +5,51 @@
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem1.visabled" :disabled="toolBarModels.tbitem1.disabled" class='' @click="toolbar_click({ tag: 'tbitem1' }, $event)">
<i class='sx-tb-saveandclose'></i>
<span class='caption'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem1.caption')}}</span>
</i-button>
<div slot='content'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem1.tip')}}</div>
</tooltip>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem2.visabled" :disabled="toolBarModels.tbitem2.disabled" class='' @click="toolbar_click({ tag: 'tbitem2' }, $event)">
<i class='fa fa-sign-out'></i>
<span class='caption'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem2.caption')}}</span>
</i-button>
<div slot='content'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem2.tip')}}</div>
</tooltip>
</div>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem1.visabled" :disabled="toolBarModels.tbitem1.disabled" class='' @click="toolbar_click({ tag: 'tbitem1' }, $event)">
<i class='sx-tb-saveandclose'></i>
<span class='caption'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem1.caption')}}</span>
</i-button>
<div slot='content'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem1.tip')}}</div>
</tooltip>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem2.visabled" :disabled="toolBarModels.tbitem2.disabled" class='' @click="toolbar_click({ tag: 'tbitem2' }, $event)">
<i class='fa fa-sign-out'></i>
<span class='caption'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem2.caption')}}</span>
</i-button>
<div slot='content'>{{$t('entities.dictoption.editviewtoolbar_toolbar.tbitem2.tip')}}</div>
</tooltip>
</div>
</div>
<div class="content-container">
<div class='view-top-messages'>
</div>
<view_form
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:autosave="false"
:viewtag="viewtag"
:showBusyIndicator="true"
updateAction="Update"
removeAction="Remove"
loaddraftAction="GetDraft"
loadAction="Get"
createAction="Create"
WFSubmitAction=""
WFStartAction=""
style=''
name="form"
ref='form'
@save="form_save($event)"
@remove="form_remove($event)"
@load="form_load($event)"
@closeview="closeView($event)">
</view_form>
<div class='view-bottom-messages'>
</div>
<div class='view-top-messages'>
</div>
<view_form
:viewState="viewState"
:viewparams="viewparams"
:context="context"
:autosave="false"
:viewtag="viewtag"
:showBusyIndicator="true"
updateAction="Update"
removeAction="Remove"
loaddraftAction="GetDraft"
loadAction="Get"
createAction="Create"
WFSubmitAction=""
WFStartAction=""
style=''
name="form"
ref='form'
@save="form_save($event)"
@remove="form_remove($event)"
@load="form_load($event)"
@closeview="closeView($event)">
</view_form>
<div class='view-bottom-messages'>
</div>
</div>
</card>
</div>
......@@ -150,7 +150,7 @@ export default class DictOptionEditViewBase extends Vue {
* @type {string}
* @memberof DictOptionEditViewBase
*/
public viewtag: string = '8ad70084b5f98a26370b74da612d3f49';
public viewtag: string = '0986ae2314847b586b20edfbb40fc82b';
/**
* 自定义视图导航上下文集合
......
......@@ -8,19 +8,19 @@
.dict-option-edit-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.dict-option-grid-edit-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.dict-option-grid-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
......@@ -4,85 +4,85 @@
export const viewstate: any = {
appviews: [
{
viewtag: '56893daa82632caa84a6edeeb0acabaf',
viewtag: '0986ae2314847b586b20edfbb40fc82b',
viewmodule: 'dict',
viewname: 'DictOptionGridView',
viewname: 'DictOptionEditView',
viewaction: '',
viewdatachange: false,
refviews: [
'8ad70084b5f98a26370b74da612d3f49',
'eb4772f75066d6c9eb26d8b01d4e16b7',
'a9c82814d9bcd23dbf78c4c073759d7c',
],
},
{
viewtag: '66f9c86e5a56857f977ef91461338255',
viewtag: '22e202992971f634c00e022b2cae335e',
viewmodule: 'dict',
viewname: 'DictCatalogPickupGridView',
viewname: 'DictOptionGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'0986ae2314847b586b20edfbb40fc82b',
'a9c82814d9bcd23dbf78c4c073759d7c',
],
},
{
viewtag: '6aa3306d5c50039f771e4617a8a5cd64',
viewtag: '44488f30cf90677019077ed9ad33628e',
viewmodule: 'dict',
viewname: 'DictOptionGridEditView',
viewaction: '',
viewdatachange: false,
refviews: [
'8ad70084b5f98a26370b74da612d3f49',
'eb4772f75066d6c9eb26d8b01d4e16b7',
'0986ae2314847b586b20edfbb40fc82b',
'a9c82814d9bcd23dbf78c4c073759d7c',
],
},
{
viewtag: '7395bd2cc14d34a67b772f13a50b2587',
viewtag: '74a6ce3ddf610ce7fb201662c6d4b8da',
viewmodule: 'dict',
viewname: 'DictCatalogGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'e294ce8c6557ca26a032efa08eeb5508',
'aef11c4ae15f8255ee53623adf148f2a',
],
},
{
viewtag: '8ad70084b5f98a26370b74da612d3f49',
viewtag: '842cfc03d5e93435fc52d317a55cdfd4',
viewmodule: 'dict',
viewname: 'DictOptionEditView',
viewname: 'DictCatalogPickupGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'eb4772f75066d6c9eb26d8b01d4e16b7',
],
},
{
viewtag: 'D394F269-6F97-4ED7-AFE8-F4A2E09BA602',
viewtag: 'a9c82814d9bcd23dbf78c4c073759d7c',
viewmodule: 'dict',
viewname: 'AppIndexView',
viewname: 'DictCatalogPickupView',
viewaction: '',
viewdatachange: false,
refviews: [
'56893daa82632caa84a6edeeb0acabaf',
'7395bd2cc14d34a67b772f13a50b2587',
'842cfc03d5e93435fc52d317a55cdfd4',
],
},
{
viewtag: 'e294ce8c6557ca26a032efa08eeb5508',
viewtag: 'aef11c4ae15f8255ee53623adf148f2a',
viewmodule: 'dict',
viewname: 'DictCatalogEditView',
viewaction: '',
viewdatachange: false,
refviews: [
'6aa3306d5c50039f771e4617a8a5cd64',
'44488f30cf90677019077ed9ad33628e',
],
},
{
viewtag: 'eb4772f75066d6c9eb26d8b01d4e16b7',
viewtag: 'd28e2613c581adb940ff8c3469365646',
viewmodule: 'dict',
viewname: 'DictCatalogPickupView',
viewname: 'AppIndexView',
viewaction: '',
viewdatachange: false,
refviews: [
'66f9c86e5a56857f977ef91461338255',
'22e202992971f634c00e022b2cae335e',
'74a6ce3ddf610ce7fb201662c6d4b8da',
],
},
],
......
......@@ -2,6 +2,7 @@
@import '../theme/blue.theme.less';
@import '../theme/dark-blue.theme.less';
@import '../theme/default.theme.less';
@import './app-code-list.less';
@import './var.css';
.ibiz-page-tag .tags-body .tags-container .ivu-tag.tag-is-active .ivu-tag-text {
......
......@@ -12,8 +12,6 @@
<strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- <link rel="stylesheet" href="<%= BASE_URL %>assets/styles/loader.css">
<div class="loader" id="app-loader"></div> -->
<!-- built files will be auto injected -->
<script src="./environments/environment.js"></script>
</body>
</html>
......@@ -89,10 +89,10 @@ export default class DictCatalogUIServiceBase extends UIService {
* @memberof DictCatalogUIServiceBase
*/
public initViewMap(){
this.allViewMap.set(':',{viewname:'pickupgridview',srfappde:'dictcatalogs'});
this.allViewMap.set('MDATAVIEW:',{viewname:'gridview',srfappde:'dictcatalogs'});
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'dictcatalogs'});
this.allViewMap.set(':',{viewname:'pickupgridview',srfappde:'dictcatalogs'});
this.allViewMap.set('PICKUPVIEW:',{viewname:'pickupview',srfappde:'dictcatalogs'});
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'dictcatalogs'});
}
/**
......
......@@ -89,9 +89,9 @@ export default class DictOptionUIServiceBase extends UIService {
* @memberof DictOptionUIServiceBase
*/
public initViewMap(){
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'dictoptions'});
this.allViewMap.set('MDATAVIEW:',{viewname:'gridview',srfappde:'dictoptions'});
this.allViewMap.set(':',{viewname:'grideditview',srfappde:'dictoptions'});
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'dictoptions'});
}
/**
......
......@@ -119,8 +119,12 @@ export class StudioActionUtil {
}, '*');
Vue.prototype.$message.warning('请在已打开的配置平台查看!');
} else {
console.log(`${Environment.StudioUrl}?ov=${JSON.stringify(params)}#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`);
this.studioWin = window.open(`${Environment.StudioUrl}?ov=${encodeURIComponent(JSON.stringify(params))}#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`, '_blank');
if(Environment.debugOpenMode === 'sln'){
console.log("打开sln未支持");
// this.studioWin = window.open(`${Environment.StudioUrl}?ov=${encodeURIComponent(JSON.stringify(params))}#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview/srfkey=${Environment.SysId}`, '_blank');
}else{
this.studioWin = window.open(`${Environment.StudioUrl}?ov=${encodeURIComponent(JSON.stringify(params))}#/common_mosindex/srfkeys=${Environment.SysId}`, '_blank');
}
}
}
}
......
......@@ -252,9 +252,10 @@ export class ViewTool {
* @memberof ViewTool
*/
public static calcActionItemAuthState(data:any,ActionModel:any,UIService:any){
let result: any[] = [];
for (const key in ActionModel) {
if (!ActionModel.hasOwnProperty(key)) {
return;
return result;
}
const _item = ActionModel[key];
if(_item && _item['dataaccaction'] && UIService){
......@@ -282,7 +283,9 @@ export class ViewTool {
_item.visabled = true;
_item.disabled = false;
}
result.push(dataActionResult);
}
}
return result;
}
}
\ No newline at end of file
......@@ -504,64 +504,64 @@ export default class AppIndexViewBase extends Vue implements ControlInterface {
navDataService.removeNavData(this.viewtag);
}
switch (item.appfunctag) {
case 'Auto1':
this.clickAuto1(item);
return;
case 'Auto2':
this.clickAuto2(item);
return;
case 'Auto1':
this.clickAuto1(item);
return;
default:
console.warn('未指定应用功能');
}
}
}
/**
* 目录
*
* @param {*} [item={}]
* @memberof AppIndexView
*/
public clickAuto1(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'dictcatalogs', parameterName: 'dictcatalog' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
}
/**
* 栏目
*
* @param {*} [item={}]
* @memberof AppIndexView
*/
public clickAuto2(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'dictoptions', parameterName: 'dictoption' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
}
/**
* 栏目
*
* @param {*} [item={}]
* @memberof AppIndexView
*/
public clickAuto2(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'dictoptions', parameterName: 'dictoption' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
}
/**
* 目录
*
* @param {*} [item={}]
* @memberof AppIndexView
*/
public clickAuto1(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'dictcatalogs', parameterName: 'dictcatalog' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
}
/**
* 数据加载
......
......@@ -15,7 +15,7 @@ export default class AppIndexViewModel {
*/
public items: any[] = [
{
id: '3F92DBA9-3532-49CD-A482-E9048A132684',
id: '801bacb689744f3de00c39b84618cbf5',
name: 'menuitem1',
text: '目录',
type: 'MENUITEM',
......@@ -34,7 +34,7 @@ export default class AppIndexViewModel {
authtag:'web-AppIndexView-menuitem1',
},
{
id: '73B8AFA0-9EDB-4224-93B8-F8B7C4D01AE3',
id: 'edcf745c76c1c398b5e5511586f4e4c8',
name: 'menuitem2',
text: '栏目',
type: 'MENUITEM',
......
......@@ -4,48 +4,48 @@
<row>
<i-col span="20" class="form-content">
<row>
<i-col v-show="detailsModel.n_ccode_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_ccode_like' :itemRules="this.rules.n_ccode_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_ccode_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_ccode_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_ccode_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_ccode_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_cname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cname_like' :itemRules="this.rules.n_cname_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_cname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cname_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_cgroup_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cgroup_like' :itemRules="this.rules.n_cgroup_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_cgroup_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cgroup_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cgroup_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cgroup_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_ccode_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_ccode_like' :itemRules="this.rules.n_ccode_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_ccode_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_ccode_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_ccode_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_ccode_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_cname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cname_like' :itemRules="this.rules.n_cname_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_cname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cname_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_cgroup_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cgroup_like' :itemRules="this.rules.n_cgroup_like" class='' :caption="$t('entities.dictcatalog.default_searchform.details.n_cgroup_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cgroup_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cgroup_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cgroup_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
</row>
</i-col>
<i-col span="4" class="search-button">
......@@ -697,7 +697,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public load(opt: any = {}): void {
if(!this.loadAction){
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: 'DictCatalogGridView' + (this.$t('app.searchForm.notConfig.loadAction') as string) });
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: 'DictCatalogPickupGridView' + (this.$t('app.searchForm.notConfig.loadAction') as string) });
return;
}
const arg: any = { ...opt };
......@@ -733,7 +733,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
*/
public loadDraft(opt: any = {},mode?:string): void {
if(!this.loaddraftAction){
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: 'DictCatalogGridView' + (this.$t('app.searchForm.notConfig.loaddraftAction') as string) });
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: 'DictCatalogPickupGridView' + (this.$t('app.searchForm.notConfig.loaddraftAction') as string) });
return;
}
const arg: any = { ...opt } ;
......
......@@ -114,6 +114,7 @@ import DictCatalogUIService from '@/uiservice/dict-catalog/dict-catalog-ui-servi
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
import schema from 'async-validator';
import { Environment } from '@/environments/environment';
@Component({
......@@ -960,6 +961,7 @@ export default class MainBase extends Vue implements ControlInterface {
Object.assign(this.context,{dictcatalog:data.dictcatalog})
}
this.setFormEnableCond(data);
this.computeButtonState(data);
this.fillForm(data,action);
this.oldData = {};
Object.assign(this.oldData, JSON.parse(JSON.stringify(this.data)));
......@@ -1133,16 +1135,20 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public computeButtonState(data:any){
let targetData:any = this.transformData(data);
if(this.detailsModel && Object.keys(this.detailsModel).length >0){
Object.keys(this.detailsModel).forEach((name:any) =>{
if(this.detailsModel[name] && this.detailsModel[name].uiaction && this.detailsModel[name].uiaction.dataaccaction && Object.is(this.detailsModel[name].detailType,"BUTTON")){
let tempUIAction:any = JSON.parse(JSON.stringify(this.detailsModel[name].uiaction));
ViewTool.calcActionItemAuthState(targetData,[tempUIAction],this.appUIService);
this.detailsModel[name].visible = tempUIAction.visabled;
this.detailsModel[name].disabled = tempUIAction.disabled;
}
})
if(Environment.enablePermissionValid){
let targetData:any = this.transformData(data);
if(this.detailsModel && Object.keys(this.detailsModel).length >0){
Object.keys(this.detailsModel).forEach((name:any) =>{
if(this.detailsModel[name] && this.detailsModel[name].uiaction && this.detailsModel[name].uiaction.dataaccaction && Object.is(this.detailsModel[name].detailType,"BUTTON")){
this.detailsModel[name].isPower = true;
let tempUIAction:any = JSON.parse(JSON.stringify(this.detailsModel[name].uiaction));
let result: any[] = ViewTool.calcActionItemAuthState(targetData,[tempUIAction],this.appUIService);
this.detailsModel[name].visible = tempUIAction.visabled;
this.detailsModel[name].disabled = tempUIAction.disabled;
this.detailsModel[name].isPower = result[0] === 1 ? true : false;
}
})
}
}
}
......@@ -1209,7 +1215,7 @@ export default class MainBase extends Vue implements ControlInterface {
this.refresh(data);
}
if (Object.is('panelaction', action)) {
this.panelAction(data.action,data.emitAction,data);
this.panelAction(data.action,data.emitAction,data.data);
}
});
}
......@@ -1320,7 +1326,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'load');
this.$emit('load', data);
this.computeButtonState(data);
this.$nextTick(() => {
this.formState.next({ type: 'load', data: data });
});
......@@ -1364,7 +1369,6 @@ export default class MainBase extends Vue implements ControlInterface {
this.onFormLoad(data,'loadDraft');
data.dictcatalog = null;
this.$emit('load', data);
this.computeButtonState(data);
this.$nextTick(() => {
this.formState.next({ type: 'load', data: data });
});
......@@ -1422,7 +1426,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'autoSave');
this.$emit('save', data);
this.computeButtonState(data);
AppCenterService.notifyMessage({name:"DictCatalog",action:'appRefresh',data:data});
this.$nextTick(() => {
this.formState.next({ type: 'save', data: data });
......@@ -1501,7 +1504,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
this.computeButtonState(data);
AppCenterService.notifyMessage({name:"DictCatalog",action:'appRefresh',data:data});
this.$nextTick(() => {
this.formState.next({ type: 'save', data: data });
......
......@@ -40,10 +40,14 @@
}
}
}
// 表单行间距
.app-form{
// 表单行间距
.app-form-item{
margin-bottom: 20px;
}
// 表单按钮margin
.app-form-button{
margin:0 6px;
}
}
// this is less
......@@ -4,48 +4,48 @@
<row>
<i-col span="20" class="form-content">
<row>
<i-col v-show="detailsModel.n_cname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cname_like' :itemRules="this.rules.n_cname_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_cname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cname_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_val_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_val_like' :itemRules="this.rules.n_val_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_val_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_val_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_val_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_val_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_label_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_label_like' :itemRules="this.rules.n_label_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_label_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_label_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_label_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_label_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_cname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_cname_like' :itemRules="this.rules.n_cname_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_cname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_cname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_cname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_cname_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_val_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_val_like' :itemRules="this.rules.n_val_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_val_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_val_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_val_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_val_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_label_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_label_like' :itemRules="this.rules.n_label_like" class='' :caption="$t('entities.dictoption.default_searchform.details.n_label_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_label_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box
v-model="data.n_label_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_label_like.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
</row>
</i-col>
<i-col span="4" class="search-button">
......
......@@ -205,6 +205,7 @@ import DictOptionUIService from '@/uiservice/dict-option/dict-option-ui-service'
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
import schema from 'async-validator';
import { Environment } from '@/environments/environment';
@Component({
......@@ -1224,6 +1225,7 @@ export default class MainBase extends Vue implements ControlInterface {
Object.assign(this.context,{dictoption:data.dictoption})
}
this.setFormEnableCond(data);
this.computeButtonState(data);
this.fillForm(data,action);
this.oldData = {};
Object.assign(this.oldData, JSON.parse(JSON.stringify(this.data)));
......@@ -1397,16 +1399,20 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public computeButtonState(data:any){
let targetData:any = this.transformData(data);
if(this.detailsModel && Object.keys(this.detailsModel).length >0){
Object.keys(this.detailsModel).forEach((name:any) =>{
if(this.detailsModel[name] && this.detailsModel[name].uiaction && this.detailsModel[name].uiaction.dataaccaction && Object.is(this.detailsModel[name].detailType,"BUTTON")){
let tempUIAction:any = JSON.parse(JSON.stringify(this.detailsModel[name].uiaction));
ViewTool.calcActionItemAuthState(targetData,[tempUIAction],this.appUIService);
this.detailsModel[name].visible = tempUIAction.visabled;
this.detailsModel[name].disabled = tempUIAction.disabled;
}
})
if(Environment.enablePermissionValid){
let targetData:any = this.transformData(data);
if(this.detailsModel && Object.keys(this.detailsModel).length >0){
Object.keys(this.detailsModel).forEach((name:any) =>{
if(this.detailsModel[name] && this.detailsModel[name].uiaction && this.detailsModel[name].uiaction.dataaccaction && Object.is(this.detailsModel[name].detailType,"BUTTON")){
this.detailsModel[name].isPower = true;
let tempUIAction:any = JSON.parse(JSON.stringify(this.detailsModel[name].uiaction));
let result: any[] = ViewTool.calcActionItemAuthState(targetData,[tempUIAction],this.appUIService);
this.detailsModel[name].visible = tempUIAction.visabled;
this.detailsModel[name].disabled = tempUIAction.disabled;
this.detailsModel[name].isPower = result[0] === 1 ? true : false;
}
})
}
}
}
......@@ -1473,7 +1479,7 @@ export default class MainBase extends Vue implements ControlInterface {
this.refresh(data);
}
if (Object.is('panelaction', action)) {
this.panelAction(data.action,data.emitAction,data);
this.panelAction(data.action,data.emitAction,data.data);
}
});
}
......@@ -1584,7 +1590,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'load');
this.$emit('load', data);
this.computeButtonState(data);
this.$nextTick(() => {
this.formState.next({ type: 'load', data: data });
});
......@@ -1628,7 +1633,6 @@ export default class MainBase extends Vue implements ControlInterface {
this.onFormLoad(data,'loadDraft');
data.dictoption = null;
this.$emit('load', data);
this.computeButtonState(data);
this.$nextTick(() => {
this.formState.next({ type: 'load', data: data });
});
......@@ -1686,7 +1690,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'autoSave');
this.$emit('save', data);
this.computeButtonState(data);
AppCenterService.notifyMessage({name:"DictOption",action:'appRefresh',data:data});
this.$nextTick(() => {
this.formState.next({ type: 'save', data: data });
......@@ -1765,7 +1768,6 @@ export default class MainBase extends Vue implements ControlInterface {
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
this.computeButtonState(data);
AppCenterService.notifyMessage({name:"DictOption",action:'appRefresh',data:data});
this.$nextTick(() => {
this.formState.next({ type: 'save', data: data });
......
......@@ -40,10 +40,14 @@
}
}
}
// 表单行间距
.app-form{
// 表单行间距
.app-form-item{
margin-bottom: 20px;
}
// 表单按钮margin
.app-form-button{
margin:0 6px;
}
}
// this is less
......@@ -21,9 +21,6 @@
</dependency>
</dependencies>
<properties>
<docker.image.prefix>registry.cn-shanghai.aliyuncs.com/ibizsys</docker.image.prefix>
</properties>
<profiles>
......@@ -98,23 +95,6 @@
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<serverId>ibiz-dev</serverId>
<imageName>${docker.image.prefix}/${project.artifactId}:latest</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>../../</directory>
<include>${project.artifactId}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
......
server:
port: 30004
port: 8080
#Log配置
logging:
level:
......@@ -39,6 +39,10 @@ zuul:
path: /dictionarys/**/Ibzou**
serviceId: ${ibiz.ref.service.ou:ibzou-api}
stripPrefix: false
ou:
path: /ibzdepartments/**
serviceId: ${ibiz.ref.service.ou:ibzou-api}
stripPrefix: false
uaadict:
path: /dictionarys/**/SysOperator
serviceId: ${ibiz.ref.service.uaa:ibzuaa-api}
......
......@@ -28,6 +28,10 @@ zuul:
path: /dictionarys/**/Ibzou**
serviceId: ${ibiz.ref.service.ou:ibzou-api}
stripPrefix: false
ou:
path: /ibzdepartments/**
serviceId: ${ibiz.ref.service.ou:ibzou-api}
stripPrefix: false
uaadict:
path: /dictionarys/**/SysOperator
serviceId: ${ibiz.ref.service.uaa:ibzuaa-api}
......
......@@ -11,6 +11,7 @@ import java.math.BigInteger;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.annotation.Async;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cache.annotation.CacheEvict;
......
......@@ -11,6 +11,7 @@ import java.math.BigInteger;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.scheduling.annotation.Async;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cache.annotation.CacheEvict;
......
......@@ -21,6 +21,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.util.ObjectUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.context.annotation.Lazy;
import cn.ibizlab.core.dict.domain.DictCatalog;
......
......@@ -21,6 +21,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.util.ObjectUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.context.annotation.Lazy;
import cn.ibizlab.core.dict.domain.DictOption;
......
<?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">
<!--输出实体[DICT_CATALOG]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-dict_catalog-69-1">
<createTable tableName="IBZDICTCATALOG">
<column name="CID" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_DICT_CATALOG_CID"/>
</column>
<column name="CCODE" remarks="" type="VARCHAR(100)">
</column>
<column name="CNAME" remarks="" type="VARCHAR(100)">
</column>
<column name="CGROUP" remarks="" type="VARCHAR(100)">
</column>
<column name="MEMO" remarks="" type="VARCHAR(255)">
</column>
<column name="ENABLE" remarks="" type="INT">
</column>
<column name="UPDATEDATE" remarks="" type="DATETIME">
</column>
</createTable>
</changeSet>
<!--输出实体[DICT_OPTION]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-dict_option-95-2">
<createTable tableName="IBZDICTOPTION">
<column name="VKEY" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_DICT_OPTION_VKEY"/>
</column>
<column name="CID" remarks="" type="VARCHAR(100)">
</column>
<column name="CNAME" remarks="" type="VARCHAR(100)">
</column>
<column name="VAL" remarks="" type="VARCHAR(40)">
</column>
<column name="LABEL" remarks="" type="VARCHAR(100)">
</column>
<column name="PVAL" remarks="" type="VARCHAR(40)">
</column>
<column name="VFILTER" remarks="" type="VARCHAR(500)">
</column>
<column name="CLS" remarks="" type="VARCHAR(500)">
</column>
<column name="ICONCLS" remarks="" type="VARCHAR(255)">
</column>
<column name="DISABLED" remarks="" type="INT">
</column>
<column name="EXPIRED" remarks="" type="INT">
</column>
<column name="SHOWORDER" remarks="" type="INT">
</column>
<column name="EXTENSION" remarks="" type="VARCHAR(1000)">
</column>
<column name="UPDATEDATE" remarks="" type="DATETIME">
</column>
</createTable>
</changeSet>
<!--输出实体[DICT_CATALOG]外键关系 -->
<!--输出实体[DICT_OPTION]外键关系 -->
<changeSet author="a_A_5d9d78509" id="fk-dict_option-95-3">
<addForeignKeyConstraint baseColumnNames="CID" baseTableName="IBZDICTOPTION" constraintName="DER1N_DICT_OPTION_DICT_CATALOG" deferrable="false" initiallyDeferred="false" onDelete="RESTRICT" onUpdate="RESTRICT" referencedColumnNames="CID" referencedTableName="IBZDICTCATALOG" validate="true"/>
</changeSet>
</databaseChangeLog>
!!!!模版产生代码错误:----
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_en_US" at line 28, column 24]
----
\ No newline at end of file
......@@ -86,8 +86,6 @@
<!-- 阿里seata分布式事务 -->
<alibaba-seata.version>1.3.0</alibaba-seata.version>
<oracle.version>11.2.0.3</oracle.version>
<postgresql.version>42.2.6</postgresql.version>
</properties>
......@@ -332,18 +330,6 @@
<version>${eureka-client.version}</version>
</dependency>
<!-- Oracle驱动包 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
<!-- PostgreSQL驱动包 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<!-- MySQL驱动包 -->
<dependency>
<groupId>mysql</groupId>
......
......@@ -21,9 +21,6 @@
</dependency>
</dependencies>
<properties>
<docker.image.prefix>registry.cn-shanghai.aliyuncs.com/ibizsys</docker.image.prefix>
</properties>
<profiles>
<profile>
......@@ -57,23 +54,6 @@
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<serverId>ibiz-dev</serverId>
<imageName>${docker.image.prefix}/${project.artifactId}:latest</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>../../</directory>
<include>${project.artifactId}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
......
......@@ -11,7 +11,6 @@ import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
......@@ -50,7 +49,6 @@ public class DictCatalogResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictCatalog-Create-all')")
@ApiOperation(value = "新建字典", tags = {"字典" }, notes = "新建字典")
@RequestMapping(method = RequestMethod.POST, value = "/dictcatalogs")
@Transactional
public ResponseEntity<DictCatalogDTO> create(@RequestBody DictCatalogDTO dictcatalogdto) {
DictCatalog domain = dictcatalogMapping.toDomain(dictcatalogdto);
dictcatalogService.create(domain);
......@@ -70,7 +68,6 @@ public class DictCatalogResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictCatalog-Update-all')")
@ApiOperation(value = "更新字典", tags = {"字典" }, notes = "更新字典")
@RequestMapping(method = RequestMethod.PUT, value = "/dictcatalogs/{dictcatalog_id}")
@Transactional
public ResponseEntity<DictCatalogDTO> update(@PathVariable("dictcatalog_id") String dictcatalog_id, @RequestBody DictCatalogDTO dictcatalogdto) {
DictCatalog domain = dictcatalogMapping.toDomain(dictcatalogdto);
domain .setId(dictcatalog_id);
......@@ -90,7 +87,6 @@ public class DictCatalogResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictCatalog-Remove-all')")
@ApiOperation(value = "删除字典", tags = {"字典" }, notes = "删除字典")
@RequestMapping(method = RequestMethod.DELETE, value = "/dictcatalogs/{dictcatalog_id}")
@Transactional
public ResponseEntity<Boolean> remove(@PathVariable("dictcatalog_id") String dictcatalog_id) {
return ResponseEntity.status(HttpStatus.OK).body(dictcatalogService.remove(dictcatalog_id));
}
......
......@@ -11,7 +11,6 @@ import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
......@@ -50,7 +49,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Create-all')")
@ApiOperation(value = "新建字典项", tags = {"字典项" }, notes = "新建字典项")
@RequestMapping(method = RequestMethod.POST, value = "/dictoptions")
@Transactional
public ResponseEntity<DictOptionDTO> create(@RequestBody DictOptionDTO dictoptiondto) {
DictOption domain = dictoptionMapping.toDomain(dictoptiondto);
dictoptionService.create(domain);
......@@ -70,7 +68,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Update-all')")
@ApiOperation(value = "更新字典项", tags = {"字典项" }, notes = "更新字典项")
@RequestMapping(method = RequestMethod.PUT, value = "/dictoptions/{dictoption_id}")
@Transactional
public ResponseEntity<DictOptionDTO> update(@PathVariable("dictoption_id") String dictoption_id, @RequestBody DictOptionDTO dictoptiondto) {
DictOption domain = dictoptionMapping.toDomain(dictoptiondto);
domain .setValueKey(dictoption_id);
......@@ -90,7 +87,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Remove-all')")
@ApiOperation(value = "删除字典项", tags = {"字典项" }, notes = "删除字典项")
@RequestMapping(method = RequestMethod.DELETE, value = "/dictoptions/{dictoption_id}")
@Transactional
public ResponseEntity<Boolean> remove(@PathVariable("dictoption_id") String dictoption_id) {
return ResponseEntity.status(HttpStatus.OK).body(dictoptionService.remove(dictoption_id));
}
......@@ -163,7 +159,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Create-all')")
@ApiOperation(value = "根据字典建立字典项", tags = {"字典项" }, notes = "根据字典建立字典项")
@RequestMapping(method = RequestMethod.POST, value = "/dictcatalogs/{dictcatalog_id}/dictoptions")
@Transactional
public ResponseEntity<DictOptionDTO> createByDictCatalog(@PathVariable("dictcatalog_id") String dictcatalog_id, @RequestBody DictOptionDTO dictoptiondto) {
DictOption domain = dictoptionMapping.toDomain(dictoptiondto);
domain.setCatalogId(dictcatalog_id);
......@@ -188,7 +183,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Update-all')")
@ApiOperation(value = "根据字典更新字典项", tags = {"字典项" }, notes = "根据字典更新字典项")
@RequestMapping(method = RequestMethod.PUT, value = "/dictcatalogs/{dictcatalog_id}/dictoptions/{dictoption_id}")
@Transactional
public ResponseEntity<DictOptionDTO> updateByDictCatalog(@PathVariable("dictcatalog_id") String dictcatalog_id, @PathVariable("dictoption_id") String dictoption_id, @RequestBody DictOptionDTO dictoptiondto) {
DictOption domain = dictoptionMapping.toDomain(dictoptiondto);
domain.setCatalogId(dictcatalog_id);
......@@ -213,7 +207,6 @@ public class DictOptionResource {
@PreAuthorize("hasAnyAuthority('ROLE_SUPERADMIN','ibzdict-DictOption-Remove-all')")
@ApiOperation(value = "根据字典删除字典项", tags = {"字典项" }, notes = "根据字典删除字典项")
@RequestMapping(method = RequestMethod.DELETE, value = "/dictcatalogs/{dictcatalog_id}/dictoptions/{dictoption_id}")
@Transactional
public ResponseEntity<Boolean> removeByDictCatalog(@PathVariable("dictcatalog_id") String dictcatalog_id, @PathVariable("dictoption_id") String dictoption_id) {
return ResponseEntity.status(HttpStatus.OK).body(dictoptionService.remove(dictoption_id));
}
......
......@@ -60,7 +60,7 @@ public class AuthorizationTokenFilter extends OncePerRequestFilter {
if (authTokenUtil.validateToken(authToken, userDetails)) {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
log.info("authorizated user '{}', setting security context", username);
// log.info("authorizated user '{}', setting security context", username);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
......
......@@ -3,7 +3,7 @@ spring:
cloud:
nacos:
discovery:
server-addr: 172.16.102.211:8848
server-addr: 127.0.0.1:8848
enabled: true
eureka:
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册