orderBy('sort','asc')->select('*')->get()->toArray(); // self::$header_detail = Header_ext::where('type',$type_detail)->pluck('value','key')->toArray(); return [true,$list]; } public function getHeaderSettings($data){ if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!']; $type = 1; if(! $this->isEmpty($data,'type')) $type = $data['type']; $header = config("header.{$data['menu_id']}")[$type] ?? []; return [true,$header]; } public function edit($data){ list($status,$msg) = $this->headerRule($data,false); if(!$status) return [$status,$msg]; return [true,'保存成功!']; } public function add($data){ list($status,$msg) = $this->headerRule($data); if(!$status) return [$status,$msg]; DB::beginTransaction(); try{ Header_ext::where('menu_id',$data['menu_id']) ->where('type',$data['type']) ->where('del_time',0) ->update(['del_time'=>time()]); Header_ext_sub::where('menu_id',$data['menu_id']) ->where('type',$data['type']) ->where('del_time',0) ->update(['del_time'=>time()]); $insert = []; foreach ($data['data'] as $value){ $insert[] = [ 'key' => $value['key'] ?? '', 'value' => $value['value'], 'type' => $value['type'], 'menu_id' => $value['menu_id'], 'position' => $value['position'], 'x_axis' => $value['x'], 'y_axis' => $value['y'], ]; }Header_ext::insert($insert); Header_ext_sub::insert([ 'type' => $data['type'], 'menu_id' => $data['menu_id'], 'merge_cells' => json_encode($data['mergeCells']), 'max_length' => $data['maxLength'], ]); DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getMessage()]; } return [true,'保存成功!']; } public function del($data){ if($this->isEmpty($data,'id')) return [false,'ID不能为空!']; return [true,'删除成功']; } public function detail($data){ if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!']; if($this->isEmpty($data,'type')) return [false,'TYPE不能为空!']; $result = Header_ext::where('del_time',0) ->select('key','value','position','x_axis as x','y_axis as y') ->where('menu_id',$data['menu_id']) ->where('type',$data['type']) ->get()->toArray(); $result_sub = Header_ext_sub::where('del_time',0) ->select('merge_cells','max_length') ->where('menu_id',$data['menu_id']) ->where('type',$data['type']) ->get()->toArray(); $return['data'] = $result; $return['mergeCells'] = ! empty($result_sub[0]['merge_cells']) ? json_decode($result_sub[0]['merge_cells'],true) : []; $return['maxLength'] = $result_sub[0]['max_length'] ?? 1; return [true,$return]; } public function headerRule(&$data,$is_add = true){ if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!']; if($this->isEmpty($data,'data')) return [false,'数据不能为空!']; foreach ($data['data'] as $key => $value){ if (strpos($value['position'], ',') !== false) { $tmp = explode(',',$value['position']); $str_col = $str_ros = ''; foreach ($tmp as $v){ $tmp_v = explode(':',$v); if($tmp_v[0] != $tmp_v[1]) { // 截取头部 $head = explode(':', $tmp[0])[0]; // 截取尾部 $tail = explode(':', end($tmp))[1]; $str_ros = $head . ":" . $tail; continue; }else{ $str_col .= $tmp_v[0] . ':'; } } $str_col = rtrim($str_col,':'); if($str_col) $data['data'][$key]['position'] = $str_col; if($str_ros) $data['data'][$key]['position'] = $str_ros; } } return [true,'']; } }