309 lines
14 KiB
PHP
309 lines
14 KiB
PHP
<form class="form-horizontal form-controller" method="post" action="{{url()}}" id="flow-field" name="flow_field">
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-3 control-label" for="model_id"><span style="color:red;">*</span> 模型名</div>
|
|
<div class="col-sm-9 control-text b-t">
|
|
<select class="form-control input-sm" name="model_id" id="model_id">
|
|
@foreach($models as $v)
|
|
<option value="{{$v['id']}}" @if($row['model_id'] == $v['id']) selected @endif>{{$v['name']}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="name">
|
|
<span style="color:red;">*</span>
|
|
字段别名
|
|
<a class="hinted" href="javascript:;" title="例如客户名称"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<input class="form-control input-sm" type="text" name="name" value="{{$row['name']}}" id="name" onblur="app.pinyin('name','field');" required="required" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="field"><span style="color:red;">*</span>
|
|
字段名
|
|
<a class="hinted" href="javascript:;" title="只能由英文字母、数字和下划线组成,并且仅能字母开头"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<input class="form-control input-sm" type="text" id="field" name="field" value="{{$row['field']}}" required="required" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="form_type"><span style="color:red;">*</span> 编辑类别</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" name="form_type" id="form_type" required="required">
|
|
<option value=""> - </option>
|
|
{{:$titles = Gdoo\Model\Services\FieldService::title()}}
|
|
@foreach($titles as $id => $title)
|
|
<option value="{{$id}}" @if($row['form_type'] == $id) selected @endif>{{$title}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="content" class="b-t">
|
|
@if($row['id'])
|
|
{{Gdoo\Model\Services\FieldService::{'form_'.$row['form_type']}($row['setting'], $row['model_id'])}}
|
|
@endif
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="data_format">格式数据</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" name="data_format">
|
|
<option value=""> - </option>
|
|
<option value="text" @if($row['data_format'] == 'text') selected @endif>文本</option>
|
|
<option value="number" @if($row['data_format'] == 'number') selected @endif>数字</option>
|
|
<option value="money" @if($row['data_format'] == 'money') selected @endif>金额</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
@verbatim
|
|
<div id="app">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="data_type">绑定数据</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" v-model="data_type" name="data_type" id="data_type" @change="changeDataType">
|
|
<option value=""> - </option>
|
|
<option v-for="item in dataType" :value="item.table">{{item.name}}</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-show="data_type">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="data_field">映射字段</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" v-model="data_field" name="data_field" id="data_field">
|
|
<option value=""> - </option>
|
|
<option v-for="item in dataField" :value="item.key">{{item.name}}({{item.field}})</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="data_link">关联字段</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" v-model="data_link" name="data_link" id="data_link">
|
|
<option value=""> - </option>
|
|
<option v-for="item in dataLink" :value="item.field">{{item.name}}({{item.field}})</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<!--
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="data_relation">关联关系</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" v-model="data_relation" name="data_relation" id="data_relation">
|
|
<option value=""> - </option>
|
|
<option v-for="item in dataRelation" :value="item.field">{{item.name}}({{item.field}})</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
-->
|
|
</div>
|
|
@endverbatim
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="type">
|
|
字段类型
|
|
<a class="hinted" href="javascript:;" title="注意修改类型可能导致数据丢失,如果不建立字段请留空"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" name="type" onchange="setlength(this.value)" id="type">
|
|
<option value="">-</option>
|
|
@foreach($templates as $type => $template)
|
|
<option value="{{$type}}" @if($row['type'] == $type) selected @endif>{{$type}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="length">
|
|
字段长度
|
|
<a class="hinted" href="javascript:;" title="注意长度值不能超界"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<input class="form-control input-sm" type="text" id="length" name="length" value="{{$row['length']}}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="length">不是NULL</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" name="not_null">
|
|
<option value="0" @if($row['not_null'] == '0') selected @endif>否</option>
|
|
<option value="1" @if($row['not_null'] == '1') selected @endif>是</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="length">字段默认值</label>
|
|
<div class="col-sm-9 control-text">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-btn">
|
|
<button class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown">
|
|
选择 <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu" id="default-menu">
|
|
<li><a href="javascript:;"> </a></li>
|
|
<li><a href="javascript:;">NULL</a></li>
|
|
<li><a href="javascript:;">Empty String</a></li>
|
|
</ul>
|
|
</div>
|
|
<input type="text" id="default" class="form-control input-sm" name="default" value="{{$row['default']}}" @if($row['default'] == 'NULL' || $row['default'] == 'Empty String') readonly="readonly" @endif />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="index">
|
|
字段索引
|
|
<a class="hinted" href="javascript:;" title="注意必须理解索引的概念"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<select class="form-control input-sm" name="index">
|
|
<option value=""> - </option>
|
|
<option value="INDEX" @if($row['index'] == 'INDEX') selected @endif>普通</option>
|
|
<option value="UNIQUE" @if($row['index'] == 'UNIQUE') selected @endif>唯一</option>
|
|
<option value="PRIMARY" @if($row['index'] == 'PRIMARY') selected @endif>主键</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="tips">
|
|
编辑提示
|
|
<a class="hinted" href="javascript:;" title="显示在字段别名下方作为表单输入提示"><i class="fa fa-question-circle"></i></a>
|
|
</label>
|
|
<div class="col-sm-9 control-text">
|
|
<input class="form-control input-sm" type="text" name="tips" value="{{$row['tips']}}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="is_index">列表显示</label>
|
|
<div class="col-sm-9 control-text">
|
|
<label class="radio-inline"><input type="radio" @if($row['is_index'] == '0') checked @endif value="0" name="is_index">否</label>
|
|
<label class="radio-inline"><input type="radio" @if($row['is_index'] == '1') checked @endif value="1" name="is_index">是</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="is_search">列表搜索</label>
|
|
<div class="col-sm-9 control-text">
|
|
<label class="radio-inline"><input type="radio" @if($row['is_search'] == '0') checked @endif value="0" name="is_search">否</label>
|
|
<label class="radio-inline"><input type="radio" @if($row['is_search'] == '1') checked @endif value="1" name="is_search">是</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="is_sort">字段菜单</label>
|
|
<div class="col-sm-9 control-text">
|
|
<label class="radio-inline"><input type="radio" @if($row['is_menu'] == '0') checked @endif value="0" name="is_menu">否</label>
|
|
<label class="radio-inline"><input type="radio" @if($row['is_menu'] == '1') checked @endif value="1" name="is_menu">是</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="is_sort">列表排序</label>
|
|
<div class="col-sm-9 control-text">
|
|
<label class="radio-inline"><input type="radio" @if($row['is_sort'] == '0') checked @endif value="0" name="is_sort">否</label>
|
|
<label class="radio-inline"><input type="radio" @if($row['is_sort'] == '1') checked @endif value="1" name="is_sort">是</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label" for="is_import">允许导入</label>
|
|
<div class="col-sm-9 control-text">
|
|
<label class="radio-inline"><input type="radio" @if($row['is_import'] == '0') checked @endif value="0" name="is_import">否</label>
|
|
<label class="radio-inline"><input type="radio" @if($row['is_import'] == '1') checked @endif value="1" name="is_import">是</label>
|
|
</div>
|
|
</div>
|
|
|
|
<input name="id" type="hidden" value="{{$row['id']}}">
|
|
<input name="parent_id" type="hidden" value="{{$parent_id}}">
|
|
|
|
</form>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
var types = JSON.parse('<?php echo json_encode($types, JSON_UNESCAPED_UNICODE); ?>') || {};
|
|
var fields = JSON.parse('<?php echo json_encode($fields, JSON_UNESCAPED_UNICODE); ?>') || {};
|
|
|
|
var model_id = '{{$row["model_id"]}}';
|
|
var data_link = '{{$row["data_link"]}}';
|
|
var data_type = '{{$row["data_type"]}}';
|
|
var data_field = '{{$row["data_field"]}}';
|
|
|
|
const vueData = {
|
|
data() {
|
|
return {
|
|
data_relation: '',
|
|
dataLink: fields,
|
|
dataField: [],
|
|
dataRelation: [
|
|
{field: 'one2one', name: '一对一'},
|
|
{field: 'one2many', name: '一对多'},
|
|
{field: 'many2many', name: '多对多'}
|
|
],
|
|
dataType: types,
|
|
data_link: data_link,
|
|
data_type: data_type,
|
|
data_field: data_field,
|
|
}
|
|
},mounted() {
|
|
this.changeDataType();
|
|
$('#form_type').off('change').on('change', function() {
|
|
var loading = showLoading();
|
|
$.get("{{url('type')}}?type=" + this.value + '&model_id=' + model_id, function(data) {
|
|
$("#content").html(data);
|
|
}).complete(function() {
|
|
layer.close(loading);
|
|
});
|
|
});
|
|
$('#default-menu').on('click', 'a', function() {
|
|
let value = $(this).text();
|
|
$('#default').val(value);
|
|
defaultReadonly(value);
|
|
});
|
|
},
|
|
methods: {
|
|
changeDataType: function() {
|
|
var me = this;
|
|
$.getJSON(url('model/field/getColumns'), {table: me.data_type}, function(res) {
|
|
me.dataField = res.data;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
Vue.createApp(vueData).mount('#app');
|
|
|
|
function setlength(value) {
|
|
var types = {{json_encode($templates)}};
|
|
if (value) {
|
|
var type = types[value];
|
|
$('#length').val(types[value]['length']);
|
|
$('#default').val(types[value]['default']);
|
|
defaultReadonly(types[value]['default']);
|
|
}
|
|
}
|
|
|
|
function defaultReadonly(value) {
|
|
if (value == 'NULL' || value == 'Empty String') {
|
|
$('#default').prop('readonly', true);
|
|
} else {
|
|
$('#default').prop('readonly', false);
|
|
}
|
|
}
|
|
|
|
ajaxSubmit('flow-field');
|
|
</script> |