This commit is contained in:
FangfangZhao 2018-11-21 18:07:54 +08:00
parent 266c24b3d0
commit b116f7d8e6
10 changed files with 101 additions and 93 deletions

View file

@ -170,7 +170,26 @@ public class EasyMeta implements BaseMeta {
* @return
*/
public boolean isBuiltin() {
return isBuiltin(baseMeta);
if (this.getMetaId() == null) {
return true;
}
if (isField()) {
DisplayType dt = getDisplayType();
if (dt == DisplayType.ID || BUILTIN_FIELD.contains(getName())) {
return true;
} else if (dt == DisplayType.REFERENCE) {
Field field = (Field) this.baseMeta;
// 明细引用
if (field.getOwnEntity().getMasterEntity() != null
&& field.getOwnEntity().getMasterEntity().equals(field.getReferenceEntities()[0] )) {
return true;
}
}
} else {
return BUILTIN_ENTITY.contains(getName());
}
return false;
}
/**
@ -303,22 +322,6 @@ public class EasyMeta implements BaseMeta {
return meta.getDescription();
}
/**
* @param meta
* @return
*/
public static boolean isBuiltin(BaseMeta meta) {
String metaName = meta.getName();
if (meta instanceof Entity) {
return BUILTIN_ENTITY.contains(metaName);
}
if (((Field) meta).getType() == FieldType.PRIMARY) {
return true;
}
return BUILTIN_FIELD.contains(metaName);
}
/**
* @return [Name, Label, Icon]
*/

View file

@ -65,7 +65,7 @@ public class MetadataSorter {
List<Entity> list = new ArrayList<>();
for (Entity entity : entities) {
int ec = entity.getEntityCode();
if (EasyMeta.isBuiltin(entity) || (!containsBizz && isBizzFilter(ec))) {
if (EasyMeta.valueOf(ec).isBuiltin() || (!containsBizz && isBizzFilter(ec))) {
} else {
list.add(entity);
}

View file

@ -65,19 +65,21 @@ public class MetaEntityControll extends BaseControll {
@RequestMapping("entity/{entity}/base")
public ModelAndView pageEntityBase(@PathVariable String entity, HttpServletRequest request) throws IOException {
ModelAndView mv = createModelAndView("/admin/entity/entity-edit.jsp");
setEntityBase(mv, entity);
EasyMeta entityMeta = setEntityBase(mv, entity);
Entity entity2 = (Entity) entityMeta.getBaseMeta();
Entity entityMeta = MetadataHelper.getEntity(entity);
if (entityMeta.getMasterEntity() != null) {
mv.getModel().put("masterEntity", entityMeta.getMasterEntity().getName());
mv.getModel().put("masterEntityLabel", EasyMeta.getLabel(entityMeta.getMasterEntity()));
mv.getModel().put("nameField", entity2.getNameField().getName());
if (entity2.getMasterEntity() != null) {
mv.getModel().put("masterEntity", entity2.getMasterEntity().getName());
mv.getModel().put("masterEntityLabel", EasyMeta.getLabel(entity2.getMasterEntity()));
}
return mv;
}
@RequestMapping("entity/{entity}/danger")
@RequestMapping("entity/{entity}/advanced")
public ModelAndView pageEntityDanger(@PathVariable String entity, HttpServletRequest request) throws IOException {
ModelAndView mv = createModelAndView("/admin/entity/entity-danger.jsp");
ModelAndView mv = createModelAndView("/admin/entity/entity-advanced.jsp");
setEntityBase(mv, entity);
return mv;
}
@ -161,14 +163,12 @@ public class MetaEntityControll extends BaseControll {
* @return
*/
protected static EasyMeta setEntityBase(ModelAndView mv, String entity) {
Entity e = MetadataHelper.getEntity(entity);
EasyMeta entityMeta = new EasyMeta(e);
EasyMeta entityMeta = EasyMeta.valueOf(entity);
mv.getModel().put("entityMetaId", entityMeta.getMetaId());
mv.getModel().put("entityName", entityMeta.getName());
mv.getModel().put("entityLabel", entityMeta.getLabel());
mv.getModel().put("icon", entityMeta.getIcon());
mv.getModel().put("comments", entityMeta.getComments());
mv.getModel().put("nameField", e.getNameField().getName());
return entityMeta;
}
}

View file

@ -104,7 +104,7 @@ public class MetaFieldControll extends BaseControll {
Field fieldMeta = ((Entity) easyMeta.getBaseMeta()).getField(field);
EasyMeta fieldEasyMeta = new EasyMeta(fieldMeta);
mv.getModel().put("fieldMetaId", fieldEasyMeta.isBuiltin() ? null : fieldEasyMeta.getMetaId());
mv.getModel().put("fieldMetaId", fieldEasyMeta.getMetaId());
mv.getModel().put("fieldName", fieldEasyMeta.getName());
mv.getModel().put("fieldLabel", fieldEasyMeta.getLabel());
mv.getModel().put("fieldComments", fieldEasyMeta.getComments());
@ -121,6 +121,7 @@ public class MetaFieldControll extends BaseControll {
} else {
mv.getModel().put("fieldExtConfig", fieldEasyMeta.getFieldExtConfig());
}
mv.getModel().put("isBuiltin", fieldEasyMeta.isBuiltin());
return mv;
}

View file

@ -34,7 +34,7 @@ a#entityIcon:hover{opacity:0.8}
<li><a href="base">基本信息</a></li>
<li><a href="fields">管理字段</a></li>
<li><a href="form-design">设计布局</a></li>
<li class="active"><a href="danger">高级配置</a></li>
<li class="active"><a href="advanced">高级配置</a></li>
</ul>
</div>
</div>
@ -54,7 +54,7 @@ a#entityIcon:hover{opacity:0.8}
</label>
</div>
<div>
<button type="button" class="btn btn-danger J_drop-confirm" disabled="disabled" data-loading-text="删除中">确认删除</button>
<button type="button" class="btn btn-danger J_drop-confirm" disabled="disabled" data-loading-text="删除中"><i class="zmdi zmdi-delete icon"></i> 确认删除</button>
<div class="alert alert-warning alert-icon hide col-sm-6">
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
<div class="message">系统内建实体,不允许删除</div>

View file

@ -34,7 +34,7 @@ a#entityIcon:hover{opacity:0.8}
<li class="active"><a href="base">基本信息</a></li>
<li><a href="fields">管理字段</a></li>
<li><a href="form-design">设计布局</a></li>
<li><a href="danger">高级配置</a></li>
<li><a href="advanced">高级配置</a></li>
</ul>
</div>
</div>
@ -87,8 +87,10 @@ a#entityIcon:hover{opacity:0.8}
</div>
<div class="form-group row footer">
<div class="col-lg-5 col-sm-10 offset-sm-2">
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
<div class="alert alert-warning alert-icon hide">
<div class="J_action hide">
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
</div>
<div class="alert alert-warning alert-icon mb-0 hide">
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
<div class="message">系统内建实体,不允许修改</div>
</div>
@ -102,16 +104,14 @@ a#entityIcon:hover{opacity:0.8}
</div>
<%@ include file="/_include/Foot.jsp"%>
<script type="text/babel">
clickIcon = function(icon){
let clickIcon = function(icon){
$('#entityIcon').attr('value', icon).find('i').attr('class', 'icon zmdi zmdi-' + icon)
rb.modalHide()
};
}
$(document).ready(function(){
const metaId = '${entityMetaId}'
if (!!!metaId){
$('.J_save').next().removeClass('hide')
$('.J_save').remove()
}
if (!!!metaId) $('.footer .alert').removeClass('hide')
else $('.footer .J_action').removeClass('hide')
if (!!'${masterEntity}') $('.J_masterEntity').removeClass('hide')
let _btn = $('.J_save').click(function(){

View file

@ -38,7 +38,7 @@
<li><a href="../base">基本信息</a></li>
<li class="active"><a href="../fields">管理字段</a></li>
<li><a href="../form-design">设计布局</a></li>
<li><a href="../danger">高级配置</a></li>
<li><a href="../advanced">高级配置</a></li>
</ul>
</div>
</div>
@ -145,8 +145,11 @@
</div>
<div class="form-group row footer">
<div class="col-lg-5 col-sm-10 offset-sm-2">
<button class="btn btn-primary J_save" type="button" data-loading-text="请稍后">保存</button>
<div class="alert alert-warning alert-icon hide">
<div class="J_action hide">
<button class="btn btn-primary btn-space J_save" type="button" data-loading-text="请稍后">保存</button>
<button class="btn btn-danger bordered btn-space J_del" type="button" data-loading-text="请稍后"><i class="zmdi zmdi-delete icon"></i> 删除</button>
</div>
<div class="alert alert-warning alert-icon hide mb-0">
<div class="icon"><span class="zmdi zmdi-alert-triangle"></span></div>
<div class="message">系统内建字段,不允许修改</div>
</div>
@ -165,73 +168,67 @@
<div class="dd3-action"><a href="javascript:;" class="J_default" title="设为默认">[默认]</a></div>
</li>
</script>
<%@ include file="/_include/Foot.jsp"%>
<script src="${baseUrl}/assets/lib/widget/bootstrap-slider.min.js"></script>
<script type="text/babel">
$(document).ready(function(){
const metaId = '${fieldMetaId}';
let dt = '${fieldType}';
if (dt.indexOf('(') > -1) dt = dt.match('\\((.+?)\\)')[1];
const extConfigOld = JSON.parse('${fieldExtConfig}' || '{}');
const metaId = '${fieldMetaId}'
let dt = '${fieldType}'
if (dt.indexOf('(') > -1) dt = dt.match('\\((.+?)\\)')[1]
const extConfigOld = JSON.parse('${fieldExtConfig}' || '{}')
const btn = $('.J_save').click(function(){
if (!!!metaId) return;
if (!!!metaId) return
let label = $val('#fieldLabel'),
comments = $val('#comments'),
nullable = $val('#fieldNullable'),
updatable = $val('#fieldUpdatable');
let _data = { fieldLabel:label, comments:comments, nullable:nullable, updatable:updatable };
updatable = $val('#fieldUpdatable')
let _data = { fieldLabel:label, comments:comments, nullable:nullable, updatable:updatable }
_data = $cleanMap(_data)
let extConfig = {};
let extConfig = {}
$('.J_for-' + dt + ' .form-control').each(function(){
let k = $(this).attr('id');
let v = $val(this);
if (extConfigOld[k] != v) extConfig[k] = v;
});
let k = $(this).attr('id')
let v = $val(this)
if (extConfigOld[k] != v) extConfig[k] = v
})
if (Object.keys(extConfig).length > 0){
_data['extConfig'] = JSON.stringify(extConfig);
_data['extConfig'] = JSON.stringify(extConfig)
}
_data = $cleanMap(_data)
if (Object.keys(_data).length == 0){
location.href = '../fields';
return;
location.href = '../fields'
return
}
_data.metadata = { entity:'MetaField', id:metaId||null };
_data = JSON.stringify(_data);
console.log(_data);
btn.button('loading');
_data.metadata = { entity:'MetaField', id:metaId||null }
_data = JSON.stringify(_data)
btn.button('loading')
$.post(rb.baseUrl + '/admin/entity/field-update', _data, function(res){
if (res.error_code == 0) location.href = '../fields';
if (res.error_code == 0) location.href = '../fields'
else rb.notice(res.error_msg, 'danger')
});
});
if (!!!metaId){
btn.next().removeClass('hide');
btn.remove();
}
})
})
$('#fieldNullable').attr('checked', $('#fieldNullable').data('o') == true)
$('#fieldUpdatable').attr('checked', $('#fieldUpdatable').data('o') == true)
$('.J_for-' + dt).removeClass('hide');
$('.J_for-' + dt).removeClass('hide')
let uploadNumber = [1, 5];
let uploadNumber = [1, 5]
for (let k in extConfigOld) {
if (k == 'uploadNumber'){
uploadNumber = extConfigOld[k].split(',');
uploadNumber[0] = ~~uploadNumber[0];
uploadNumber[1] = ~~uploadNumber[1];
uploadNumber = extConfigOld[k].split(',')
uploadNumber[0] = ~~uploadNumber[0]
uploadNumber[1] = ~~uploadNumber[1]
$('.J_minmax b').eq(0).text(uploadNumber[0])
$('.J_minmax b').eq(1).text(uploadNumber[1])
} else $('#' + k).val(extConfigOld[k]);
} else $('#' + k).val(extConfigOld[k])
}
$('input.bslider').slider({ value:uploadNumber }).on('change', function(e){
let v = e.value.newValue;
let v = e.value.newValue
$('.J_minmax b').eq(0).text(v[0])
$('.J_minmax b').eq(1).text(v[1])
})
@ -239,26 +236,33 @@ $(document).ready(function(){
if (dt == 'PICKLIST'){
$.get(rb.baseUrl + '/admin/field/picklist-gets?entity=${entityName}&field=${fieldName}&isAll=false', function(res){
if (res.data.length == 0){
$('#picklist-items li').text('请添加选项'); return;
$('#picklist-items li').text('请添加选项'); return
}
$('#picklist-items').empty();
$('#picklist-items').empty()
$(res.data).each(function(){
picklistItemRender(this)
});
})
if (res.data.length > 5) $('#picklist-items').parent().removeClass('autoh')
});
})
picklistModal = null;
picklistModal = null
$('.J_picklist-edit').click(function(){
if (picklistModal) picklistModal.show()
else picklistModal = rb.modal(rb.baseUrl + '/admin/page/entity/picklist-config?entity=${entityName}&field=${fieldName}', '配置列表选项')
})
}
});
if ('${isBuiltin}' == 'true') $('.footer .alert').removeClass('hide')
else $('.footer .J_action').removeClass('hide')
$('.J_del').click(function(){
rb.notice('暂不支持删除')
})
})
const picklistItemRender = function(data){
let item = $('<li class="dd-item" data-key="' + data.id + '"><div class="dd-handle">' + data.text + '</div></li>').appendTo('#picklist-items')
if (data['default'] == true) item.addClass('default').attr('title', '默认项')
};
}
</script>
</body>
</html>

View file

@ -29,7 +29,7 @@
<li><a href="base">基本信息</a></li>
<li class="active"><a href="fields">管理字段</a></li>
<li><a href="form-design">设计布局</a></li>
<li><a href="danger">高级配置</a></li>
<li><a href="advanced">高级配置</a></li>
</ul>
</div>
</div>
@ -64,7 +64,7 @@
<th width="16%" data-field="fieldName">内部标识</th>
<th width="16%" data-field="displayType">类型</th>
<th data-field="comments">备注</th>
<th width="100"></th>
<th width="50"></th>
</tr>
</thead>
<tbody></tbody>
@ -131,11 +131,7 @@ const render_list = function(q){
$('<td><div class="text-muted">' + item.fieldName + '</div></td>').appendTo(tr)
$('<td>' + item.displayType + '</td>').appendTo(tr)
$('<td><div>' + (item.comments || '') + '</div></td>').appendTo(tr)
let acts = $('<td class="actions"><a class="icon J_edit" href="field/' + item.fieldName + '"><i class="zmdi zmdi-settings"></i></a><a class="icon J_del"><i class="zmdi zmdi-delete"></i></a></td>').appendTo(tr)
acts.find('.J_del').click(function(){
if (item.builtin == true){ rb.notice('系统内建字段,不允许删除'); return }
rb.notice('字段暂不支持删除')
})
$('<td class="actions"><a class="icon J_edit" href="field/' + item.fieldName + '"><i class="zmdi zmdi-settings"></i></a></td>').appendTo(tr)
size++
});

View file

@ -30,7 +30,7 @@
<li><a href="base">基本信息</a></li>
<li><a href="fields">管理字段</a></li>
<li class="active"><a href="form-design">设计布局</a></li>
<li><a href="danger">高级配置</a></li>
<li><a href="advanced">高级配置</a></li>
</ul>
</div>
</div>

View file

@ -767,7 +767,11 @@ i.split.ui-draggable-dragging {
background-color: #fff;
color: #4c8bf5;
}
.btn-primary.bordered:hover {
.btn-danger.bordered {
background-color: #fff;
color: #ea4335;
}
.btn-primary.bordered:hover, .btn-danger.bordered:hover {
box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
}
.dept-tree {