硕顺crm后台
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

<?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;
}
}