TreeSelectControl()->source($apiUrl) ->name($name)->label($label ?? __('admin.parent')) ->showIcon(false) ->labelField($labelField) ->valueField($valueField); } /** * 排序字段 */ public function sortControl($name = 'sort', $label = null) { return amisMake()->NumberControl() ->name($name)->label($label ?? __('admin.components.order')) ->displayMode('enhance') ->value(0) ->min(0); } /** * 2位小数输入框 */ public function decimalControl($name = 'decimal', $label = null) { return amisMake()->NumberControl() ->name($name)->label($label ?? __('admin.components.decimal')) ->kilobitSeparator(true) ->percision(2) ->step(0.01) ->value(0.00) ->min(0); } /** * 富文本编辑器 */ public function fuEditorControl($name = 'content', $label = null, $height = 530) { return WangEditor::make() ->name($name)->label($label ?? __('admin.components.content')) ->height($height) ->excludeKeys(['group-video']); } /** * 开关 */ public function enableControl($name = 'is_enable', $label = null, $mode = 'horizontal') { return amisMake()->SwitchControl() ->name($name)->label($label ?? __('admin.components.status')) ->mode($mode) ->onText(__('admin.components.status_map.enabled'))->offText(__('admin.components.status_map.disabled')); } /** * 图片上传 */ public function imageControl($name, $label) { return amis()->ImageControl($name, $label) ->joinValues(false) ->autoUpload(true)->maxSize('5*1024*1024'); //不能大于5M } /** * 图片上传,带裁剪 */ public function cropImageControl($name, $label, $aspectRatio = null) { $cropImage = amis()->ImageControl($name, $label)->joinValues(false); // if($aspectRatio){ $cropImage->crop([ 'aspectRatio' => $aspectRatio ?? 1, ]); // } $cropImage->autoUpload(true); return $cropImage; } /** * 普通文件上传 */ public function fileControl($name, $label, $accept = '.txt', $multiple = false) { return amis()->FileControl($name, $label ?? __('admin.components.files')) ->multiple($multiple) ->joinValues(false) ->useChunk(false) ->maxSize(20 * 1024 * 1024) ->accept($accept); } public function chunkFileControl($name, $label, $accept = '*', $multiple = false) { return amis()->FileControl($name, $label ?? __('admin.components.files')) ->multiple($multiple) ->joinValues(false) ->useChunk(true) ->accept($accept) ->startChunkApi(admin_url('start_chunk_upload_file')) ->chunkApi(admin_url('save_chunk_upload_file')) ->finishChunkApi(admin_url('finish_chunk_upload_file')); } /** * 标签选择 */ public function keywordsTagControl($name = 'tags', $label = null, $pKey = null) { return amisMake()->TagControl() ->name($name)->label($label ?? __('admin.components.tag')) ->maxTagLength(0) ->options(Keyword::where('parent_key', $pKey)->pluck('name', 'id')->toArray()); } public function keywordsTag($label = null, $color = null) { if ($color) { $tag = amisMake()->Tag()->label($label ?? __('admin.components.tag')) ->displayMode('rounded')->style([ 'color' => '#fff', 'backgroundColor' => $color, 'borderColor' => $color, ]); } else { $tag = amisMake()->Tag()->label($label ?? __('admin.components.tag')) ->displayMode('rounded')->color('inactive'); } return $tag; } /** * 生成统计图config * 折线图或者柱状图 */ public function chartLineBarConfig($title, array $x, array $y) { $yAxisData = []; $seriesData = []; $color = []; if (! isset($y[0])) { $_y = $y; $y = [0 => $_y]; } $i = 0; $tips = '{b0}'; foreach ($y as $item) { //调色盘 $color[] = $item['color']; //tips $tips .= '
{a'.$i.'}: {c'.$i.'}'.($item['unit'] ?? ''); //纵坐标 $yAxisData[] = [ 'name' => ($item['unit'] ?? ''), 'type' => 'value', 'axisTick' => true, 'alignTicks' => true, 'axisLine' => [ 'show' => true, 'lineStyle' => [ 'color' => $item['color'] ?? '', ], ], 'axisLabel' => [ 'formatter' => '{value} ', ], ]; //数据 $_series = [ 'name' => $item['name'] ?? '', 'data' => $item['data'] ?? [], 'type' => $item['type'] ?? 'line', 'yAxisIndex' => $i, ]; switch ($item['type']) { case 'line': $_series = array_merge($_series, [ 'smooth' => true, 'symbol' => 'none', 'lineStyle' => [ 'color' => $item['color'] ?? '', ], 'areaStyle' => [ 'color' => $item['color'] ?? '', ], ]); break; case 'bar': $_series = array_merge($_series, [ ]); break; } $seriesData[] = $_series; $i++; } return [ 'color' => $color, 'title' => [ 'text' => $title, ], 'tooltip' => [//提示 'trigger' => 'axis', //坐标轴触发 'axisPointer' => [ 'type' => 'cross', ], // 'formatter' => $tips ], 'grid' => [ 'left' => '8%', 'right' => '8%', ], 'xAxis' => [ 'type' => 'category', 'data' => $x, ], 'yAxis' => $yAxisData, 'series' => $seriesData, ]; } /** * 散点图 */ public function chartScatterConfig($title, array $x, array $y, ?array $yData = null) { $yAxisData = []; $seriesData = []; $color = []; if ($yData) { $yAxisData = [ 'type' => 'category', // 'splitLine'=>[ // 'show'=>true, // 'lineStyle'=>[ // 'type'=>'dashed' // ] // ], 'axisTick' => [ 'alignWithLabel' => true, ], 'data' => $yData, ]; } $seriesData = $y; return [ 'color' => $color, 'title' => [ 'text' => $title, ], 'tooltip' => [//提示 'trigger' => 'axis', //坐标轴触发 'axisPointer' => [ 'type' => 'cross', ], ], 'xAxis' => [ 'type' => 'category', 'data' => $x, ], 'yAxis' => $yAxisData, 'series' => $seriesData, ]; } /** * 生成饼状图config * -todo */ public function chartPieConfig() { } }