You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.0 KiB
83 lines
2.0 KiB
<?php
|
|
|
|
namespace addons\qingdong\model;
|
|
|
|
use think\Exception;
|
|
use think\Model;
|
|
use think\Session;
|
|
|
|
/**
|
|
* 配置模型
|
|
*/
|
|
class Field extends Model
|
|
{
|
|
// 表名,不含前缀
|
|
protected $name = 'qingdong_field';
|
|
// 自动写入时间戳字段
|
|
protected $autoWriteTimestamp = false;
|
|
// 定义时间戳字段名
|
|
protected $createTime = false;
|
|
protected $updateTime = false;
|
|
|
|
|
|
//获取字段
|
|
public static function getField($name,$type=null)
|
|
{
|
|
$where = [];
|
|
if($type){
|
|
$where['type'] = $type;
|
|
}
|
|
$data=self::where($where)->where(['name' => $name])->value('data');
|
|
if(empty($data)){
|
|
return [];
|
|
}
|
|
return json_decode($data,true);
|
|
}
|
|
|
|
|
|
//修改字段
|
|
public function fields()
|
|
{
|
|
return $this->hasOne(self::class, 'type', 'type')->field('type,data');
|
|
}
|
|
|
|
//设置form 表单选项
|
|
public function setFormField($type, $data)
|
|
{
|
|
$insertAll = [];
|
|
foreach ($data as $v) {
|
|
if ($v['component'] == 'select') {
|
|
$insertAll[] = [
|
|
'type' => $type,
|
|
'name' => $v['config']['label'],
|
|
'data' => json_encode($this->getDataFields($v['config']['content']), JSON_UNESCAPED_UNICODE)
|
|
];
|
|
}
|
|
}
|
|
$model = new self;
|
|
|
|
$model->where(['type' => $type])->delete();
|
|
if(empty($insertAll)){
|
|
return true;
|
|
}
|
|
if ($model->insertAll($insertAll) == false) {
|
|
throw new Exception('新增表单失败');
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//循环获取data里面的字段
|
|
private function getDataFields($data, $fields = [])
|
|
{
|
|
foreach ($data as $v) {
|
|
$fields[] = $v['label'];
|
|
if (isset($v['children']) && $v['children']) {
|
|
$fields = self::getDataFields($data['children'], $fields);
|
|
}
|
|
}
|
|
|
|
return $fields;
|
|
}
|
|
|
|
|
|
}
|
|
|