自定义表单优化

This commit is contained in:
2020-03-25 10:40:32 +08:00
parent 92cfb07097
commit 801a127871
19 changed files with 60470 additions and 23 deletions

View File

@@ -15,4 +15,9 @@ namespace app\common\model;
class DiyForm extends BaseModel{
protected $attrDb = 'FormAttr';
protected $type = array(
'create_time' => 'integer',
'update_time' => 'integer',
);
}

View File

@@ -22,17 +22,40 @@ class Form extends Base{
'update_time' => 'integer',
);
public $addField = array(
array('name'=>'name','title'=>'标识','type'=>'text','help'=>''),
array('name'=>'title','title'=>'标题','type'=>'text','help'=>'')
);
public $addField = [
['name' => 'name', 'title' => '标识', 'type' => 'text', 'help' => ''],
['name' => 'title', 'title' => '标题', 'type' => 'text', 'help' => ''],
['name' => 'show_title', 'title' => '显示标题', 'type' => 'readonly', 'help' => ''],
['name' => 'logo', 'title' => '显示Logo', 'type' => 'images', 'help' => ''],
['name' => 'cover', 'title' => 'banner图片', 'type' => 'images', 'help' => ''],
['name' => 'content', 'title' => '内容', 'type' => 'editor', 'help' => ''],
['name' => 'sub_action', 'title' => '提交后操作', 'type' => 'select', 'option' => ['0' => '提示信息', '1' => '跳转连接'], 'help' => ''],
['name' => 'sub_content', 'title' => '提交后内容', 'type' => 'textarea', 'help' => ''],
['name' => 'sub_tips', 'title' => '提交后提示', 'type' => 'images', 'help' => ''],
['name' => 'relation', 'title' => '相关内容', 'type' => 'text', 'help' => '请用英文“,”隔开如1,2,3'],
['name' => 'relation_title', 'title' => '关联标题', 'type' => 'text', 'help' => ''],
['name' => 'form_title', 'title' => '表单标题', 'type' => 'text', 'help' => ''],
['name' => 'header_info', 'title' => '头部信息', 'type' => 'editor', 'help' => ''],
['name' => 'copyright', 'title' => '版权信息', 'type' => 'editor', 'help' => ''],
];
public $editField = array(
array('name'=>'id','title'=>'ID','type'=>'hidden','help'=>''),
array('name'=>'name','title'=>'标','type'=>'text','help'=>''),
array('name'=>'title','title'=>'标题','type'=>'text','help'=>''),
array('name' => 'list_grid', 'title'=>'列表定义', 'type' => 'textarea', 'help'=>'')
);
public $editField = [
['name' => 'id', 'title' => 'ID', 'type' => 'hidden', 'help' => ''],
['name' => 'title', 'title' => '标', 'type' => 'text', 'help' => ''],
['name' => 'show_title', 'title' => '显示标题', 'type' => 'text', 'help' => ''],
['name' => 'logo', 'title' => '显示Logo', 'type' => 'images', 'help' => ''],
['name' => 'cover', 'title' => 'banner图片', 'type' => 'images', 'help' => ''],
['name' => 'content', 'title' => '内容', 'type' => 'editor', 'help' => ''],
['name' => 'sub_action', 'title' => '提交后操作', 'type' => 'select', 'option' => ['0' => '提示信息', '1' => '跳转连接'], 'help' => ''],
['name' => 'sub_content', 'title' => '提交后内容', 'type' => 'textarea', 'help' => ''],
['name' => 'sub_tips', 'title' => '提交后提示', 'type' => 'images', 'help' => ''],
['name' => 'relation', 'title' => '相关内容', 'type' => 'text', 'help' => '请用英文“,”隔开如1,2,3'],
['name' => 'relation_title', 'title' => '关联标题', 'type' => 'text', 'help' => ''],
['name' => 'list_grid', 'title' => '列表定义', 'type' => 'textarea', 'help' => ''],
['name' => 'form_title', 'title' => '表单标题', 'type' => 'text', 'help' => ''],
['name' => 'header_info', 'title' => '头部信息', 'type' => 'editor', 'help' => ''],
['name' => 'copyright', 'title' => '版权信息', 'type' => 'editor', 'help' => ''],
];
protected static function init(){
self::beforeInsert(function($event){
@@ -82,6 +105,18 @@ class Form extends Base{
// });
}
public function getGridListAttr($value, $data){
$grid = [];
if ($data['list_grid']) {
$row = explode("\r\n", $data['list_grid']);
foreach ($row as $key => $value) {
$item = explode(":", $value);
$grid[] = ['field' => $item[0], 'title' => $item[1]];
}
}
return $grid;
}
public function getStatusTextAttr($value, $data) {
$status = array(
0 => '禁用',
@@ -90,4 +125,7 @@ class Form extends Base{
return $status[$data['status']];
}
public function attr(){
return $this->hasMany('FormAttr');
}
}

View File

@@ -57,6 +57,22 @@ class FormAttr extends Base{
return $type_text[0];
}
protected function getExtraListAttr($value, $data){
$extra = [];
if ($data['extra']) {
$e = explode("\r\n", $data['extra']);
foreach ($e as $key => $value) {
if (strrpos($value, ":")) {
list($k, $v) = explode(":", $value);
$extra[] = ['key'=> $k, 'label' =>$v];
}else{
$extra[] = ['key'=> $key, 'label' =>$value];
}
}
}
return $extra;
}
public function getFieldlist($map,$index='id'){
$list = array();
$row = $this->field('*,remark as help,type,extra as "option"')->where($map)->order('group_id asc, sort asc')->select();