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.
160 lines
5.5 KiB
160 lines
5.5 KiB
<?php
|
|
|
|
namespace addons\qingdong\model;
|
|
|
|
use think\Model;
|
|
use traits\model\SoftDelete;
|
|
|
|
/**
|
|
* 表单字段
|
|
*/
|
|
class FormField extends Model {
|
|
use SoftDelete;
|
|
|
|
const LEADS_TYPE = 'leads';
|
|
const CUSTOMER_TYPE = 'customer';
|
|
|
|
const CONTACTS_TYPE = 'contacts';
|
|
const CONTRACT_TYPE = 'contract';
|
|
const RECEIVABLES_TYPE = 'examine';
|
|
const BUSINESS_TYPE = 'business';
|
|
// 表名,不含前缀
|
|
protected $name = 'qingdong_form_field';
|
|
// 自动写入时间戳字段
|
|
protected $autoWriteTimestamp = 'int';
|
|
// 定义时间戳字段名
|
|
protected $createTime = 'createtime';
|
|
protected $updateTime = 'updatetime';
|
|
protected $deleteTime = 'deletetime';
|
|
|
|
public function getUpdatetimeAttr($value){
|
|
return date('Y-m-d H:i',$value);
|
|
}
|
|
|
|
/**
|
|
* 获取表单字段
|
|
*/
|
|
public static function getFields($type){
|
|
$fields=self::where(['types'=>$type,'field'=>['like',"main_%"],'list_show'=>1,'info_type'=>'main'])->select();
|
|
$js=[];
|
|
foreach ($fields as $v){
|
|
$d=[
|
|
'field' => $v['field'],
|
|
'title' => $v['name'],
|
|
'operate' => 'like',
|
|
'autocomplete' => false,
|
|
];
|
|
if($v['form_type'] == 'Cascader'){
|
|
$d['extend']='data-toggle="city-picker"';
|
|
}else if($v['form_type'] == 'uploadImage'){//图片
|
|
continue;
|
|
}else if($v['form_type'] == 'uploadFile'){//文件
|
|
continue;
|
|
}else if($v['form_type'] == 'DatePicker' ){//日期
|
|
$d['operate']='RANGE';
|
|
$d['addclass']='datetimerange';
|
|
$d['formatter']='Table.api.formatter.datetime';
|
|
$d['extend']='data-locale="{format:\"YYYY-MM-DD\"}"';
|
|
}else if($v['form_type'] == 'TimePicker' ){//时间
|
|
$d['operate']='RANGE';
|
|
$d['addclass']='datetimerange';
|
|
$d['formatter']='Table.api.formatter.datetime';
|
|
}else if($v['form_type'] == 'textarea'){//文本
|
|
$d['operate']=false;
|
|
}else if(in_array($v['form_type'],['select','checkbox','radio'])){//文件
|
|
$d['searchList']=json_encode(explode('|',$v['setting']),JSON_UNESCAPED_UNICODE);
|
|
}else if(in_array($v['form_type'],['Rate'])){//文件
|
|
$d['searchList']=json_encode([1=>1,2=>2,3=>3,4=>4,5=>5],JSON_UNESCAPED_UNICODE);
|
|
}
|
|
|
|
$js[] = $d;
|
|
}
|
|
return json_encode($js,JSON_UNESCAPED_UNICODE);
|
|
}
|
|
|
|
/**
|
|
* 验证表单字段
|
|
*/
|
|
public static function checkFields($types,$params,$id=null)
|
|
{
|
|
switch ($types){
|
|
case 'leads'://线索
|
|
$model=new Leads();
|
|
break;
|
|
case 'customer'://客户
|
|
$model=new Customer();
|
|
break;
|
|
case 'contract'://合同
|
|
$model=new Contract();
|
|
break;
|
|
case 'contacts'://联系人
|
|
$model=new Contacts();
|
|
break;
|
|
case 'receivabels'://回款
|
|
$model=new Receivables();
|
|
break;
|
|
|
|
}
|
|
$fields=self::where(['types'=>$types,'info_type'=>'main'])->select();
|
|
foreach ($fields as $v){
|
|
//必填
|
|
if($v['is_null'] == 1){
|
|
if (!isset($params[$v['field']]) || empty($params[$v['field']])) {
|
|
return $v['name'] . '不能为空!';
|
|
}
|
|
}
|
|
//唯一
|
|
if($v['is_unique'] == 1){
|
|
if (!isset($params[$v['field']]) || empty($params[$v['field']])) {
|
|
continue;
|
|
}
|
|
$where=[];
|
|
if(!empty($id)){
|
|
$where['id']=['neq',$id];
|
|
}
|
|
if(is_array($params[$v['field']])){
|
|
$params[$v['field']]=implode(',',$params[$v['field']]);
|
|
}
|
|
$where[$v['field']]=$params[$v['field']];
|
|
if($model->where($where)->where('cid','=',CID)->count() > 0){
|
|
return $v['name'] ."【{$params[$v['field']]}】". '已存在!';
|
|
}
|
|
}
|
|
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 获取搜索条件
|
|
*/
|
|
public static function updateWhereField($types,$params){
|
|
$fields=self::where(['types'=>$types,'info_type'=>'main'])->select();
|
|
$where=[];
|
|
foreach ($fields as $v){
|
|
if(!isset($params[$v['field']]) || $params[$v['field']] === ''){
|
|
continue;
|
|
}
|
|
if($v['form_type'] == 'uploadImage'){//图片
|
|
continue;
|
|
}else if($v['form_type'] == 'uploadFile'){//文件
|
|
continue;
|
|
}else if($v['form_type'] == 'DatePicker' ){//日期
|
|
$times=explode(',',$params[$v['field']]);
|
|
$where[$v['field']]=['between',$times ];
|
|
}else if($v['form_type'] == 'TimePicker' ){//时间
|
|
$times=explode(',',$params[$v['field']]);
|
|
$where[$v['field']]=['between',$times ];
|
|
}else if($v['form_type'] == 'textarea'){//文本
|
|
continue;
|
|
}else if(in_array($v['form_type'],['select','checkbox','radio'])){//
|
|
$where[$v['field']]=$params[$v['field']];
|
|
}else if(in_array($v['form_type'],['Rate'])){//星级
|
|
$where[$v['field']]=$params[$v['field']];
|
|
}else{
|
|
$where[$v['field']]=['like',"%{$params[$v['field']]}%" ];
|
|
}
|
|
}
|
|
return $where;
|
|
}
|
|
}
|
|
|