mirror of
https://github.com/cjango/dcat-vue.git
synced 2025-12-06 22:40:03 +08:00
一些优化
This commit is contained in:
36
README.md
36
README.md
@@ -17,7 +17,7 @@
|
||||
composer require weiwait/dcat-vue
|
||||
```
|
||||
|
||||
### 通过选项卡使用
|
||||
### 文件系统-通过选项卡使用
|
||||
```php
|
||||
public function index(Content $content): Content
|
||||
{
|
||||
@@ -29,7 +29,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
### 通过一级菜单使用
|
||||
### 文件系统-通过一级菜单使用
|
||||
|
||||

|
||||
|
||||
@@ -37,11 +37,29 @@
|
||||
|
||||

|
||||
|
||||
### 直传表单组件
|
||||
### 已有表单组件
|
||||
```php
|
||||
// 默认替换了原有的组件
|
||||
$form->file('file');
|
||||
$form->mutipleFile('files');
|
||||
$form->vFile('file') // 关联文件系统配置-直传
|
||||
->accept('mime types');
|
||||
|
||||
$form->vMutipleFile('files') // 关联文件系统配置-直传
|
||||
->accept('mime types');
|
||||
|
||||
$form->vImage('image') // 关联文件系统配置-直传-裁剪
|
||||
->ratio(16 / 9) // 固定裁剪比例
|
||||
->large() // 放大裁剪框
|
||||
->resolution(1920, 1080) // 重置图片分辨率
|
||||
->jpeg(0.8) // 裁剪为jpeg格式, 参数为图片质量0-1
|
||||
->accept('mime types');
|
||||
|
||||
$form->vMultipleImage('images') // 关联文件系统配置-直传-裁剪
|
||||
->ratio(16 / 9) // 固定裁剪比例
|
||||
->large() // 放大裁剪框
|
||||
->resolution(1920, 1080) // 重置图片分辨率
|
||||
->jpeg(0.8) // 裁剪为jpeg格式, 参数为图片质量0-1
|
||||
->accept('mime types');
|
||||
|
||||
$form->vTags('tags');
|
||||
```
|
||||
|
||||
[comment]: <> (### Donate)
|
||||
@@ -49,7 +67,7 @@
|
||||
[comment]: <> ()
|
||||
|
||||
### Dcat-admin 扩展列表
|
||||
1. [单图裁剪](https://github.com/weiwait/dcat-cropper)
|
||||
1. [图片裁剪](https://github.com/weiwait/dcat-cropper)
|
||||
2. [区划级联+坐标拾取](https://github.com/weiwait/dcat-distpicker)
|
||||
3. [smtp快速便捷配置](https://github.com/weiwait/dcat-smtp)
|
||||
4. [sms channel 快速便捷配置](https://github.com/weiwait/dcat-easy-sms)
|
||||
3. [smtp 便捷配置](https://github.com/weiwait/dcat-smtp)
|
||||
4. [sms channel 便捷配置](https://github.com/weiwait/dcat-easy-sms)
|
||||
|
||||
@@ -1 +1 @@
|
||||
.file-list-wrap[data-v-91edc86c]{margin-top:2px!important}.custom-upload-dragger[data-v-91edc86c]{max-width:400px}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-wrap-box,.cropper-canvas,.cropper-drag-box,.cropper-crop-box,.cropper-modal{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-wrap-box,.cropper-canvas{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.3333333333%;left:0;top:33.3333333333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.3333333333%;top:0;width:33.3333333333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:before,.cropper-center:after{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width: 768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width: 992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width: 1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(../images/bg.png)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.n-modal-container{z-index:99999999!important}.modal-container[data-v-7a8a7584]{display:flex;flex-direction:column}.modal-container .cropper-container[data-v-7a8a7584]{width:480px;height:270px}.modal-container .cropper-container img[data-v-7a8a7584]{max-width:100%;display:block}.modal-container .large[data-v-7a8a7584]{width:960px!important;height:540px!important}.modal-container .cropper-controls[data-v-7a8a7584]{height:50px;display:flex;align-items:center}.modal-container .cropper-controls .controls-first[data-v-7a8a7584]{margin-left:12px}.file-list-wrap[data-v-4ff4f70c]{margin-top:2px!important}.preview[data-v-4ff4f70c]{width:138px;height:138px;border:1px solid #dae1e7;border-radius:10px;background-color:#f1f1f1;display:flex;justify-content:center;align-items:center}.preview img[data-v-4ff4f70c]{max-width:100%;max-height:100%;border-radius:4px;padding:1px}.preview[data-v-4ff4f70c]:hover{border:1px dashed #2dd3c4}.custom-upload-dragger[data-v-4ff4f70c]{width:138px;height:138px;display:flex;justify-content:center;align-items:center;border-radius:10px}.custom-upload-dragger .btn-plus[data-v-4ff4f70c]{font-size:88px;color:#b0b0b0}.add[data-v-31410b3c]{font-size:20px}
|
||||
.file-list-wrap[data-v-4e5a4d8e]{margin-top:2px!important}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-wrap-box,.cropper-canvas,.cropper-drag-box,.cropper-crop-box,.cropper-modal{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-wrap-box,.cropper-canvas{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.3333333333%;left:0;top:33.3333333333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.3333333333%;top:0;width:33.3333333333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:before,.cropper-center:after{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width: 768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width: 992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width: 1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(../images/bg.png)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.n-modal-container{z-index:99999999!important}.modal-container[data-v-7a8a7584]{display:flex;flex-direction:column}.modal-container .cropper-container[data-v-7a8a7584]{width:480px;height:270px}.modal-container .cropper-container img[data-v-7a8a7584]{max-width:100%;display:block}.modal-container .large[data-v-7a8a7584]{width:960px!important;height:540px!important}.modal-container .cropper-controls[data-v-7a8a7584]{height:50px;display:flex;align-items:center}.modal-container .cropper-controls .controls-first[data-v-7a8a7584]{margin-left:12px}.file-list-wrap[data-v-6e035fae]{margin-top:2px!important}.preview[data-v-6e035fae]{width:138px;height:138px;border:1px solid #dae1e7;border-radius:10px;background-color:#f1f1f1;display:flex;justify-content:center;align-items:center}.preview img[data-v-6e035fae]{max-width:100%;max-height:100%;border-radius:4px;padding:1px}.preview[data-v-6e035fae]:hover{border:1px dashed #2dd3c4}.custom-upload-dragger[data-v-6e035fae]{width:138px;height:138px;display:flex;justify-content:center;align-items:center;border-radius:10px}.custom-upload-dragger .btn-plus[data-v-6e035fae]{font-size:88px;color:#b0b0b0}.add[data-v-f1fb3bdc]{font-size:20px}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
@php($id = $column . random_int(123456, 987654))
|
||||
@php($id = join('_', (array)str_replace(['[', ']'], '', $name)) . '_' . Str::random(6))
|
||||
|
||||
<div class="{{$viewClass['form-group']}}" >
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" id="{{$column}}">
|
||||
<script type="module">
|
||||
import app from '/vendor/dcat-admin-extensions/weiwait/dcat-vue/js/index.js';
|
||||
const App = app()
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
@php($id = $column . random_int(123456, 987654))
|
||||
|
||||
<div class="{{$viewClass['form-group']}}" >
|
||||
|
||||
<label class="{{$viewClass['label']}} control-label pt-0">{!! $label !!}</label>
|
||||
|
||||
<div class="{{$viewClass['field']}}" id="{{ $id }}">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" id="{{$column}}">
|
||||
import app from '/vendor/dcat-admin-extensions/weiwait/dcat-vue/js/index.js';
|
||||
const App = app()
|
||||
|
||||
App.provide('provides', @json($provides, true))
|
||||
App.mount('#{{ $id }}')
|
||||
</script>
|
||||
@@ -1,17 +0,0 @@
|
||||
@php($id = $column . random_int(123456, 987654))
|
||||
|
||||
<div class="{{$viewClass['form-group']}}" >
|
||||
|
||||
<label class="{{$viewClass['label']}} control-label pt-0">{!! $label !!}</label>
|
||||
|
||||
<div class="{{$viewClass['field']}}" id="{{ $id }}">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" id="{{$column}}">
|
||||
import app from '/vendor/dcat-admin-extensions/weiwait/dcat-vue/js/index.js';
|
||||
const App = app()
|
||||
|
||||
App.provide('provides', @json($provides, true))
|
||||
App.mount('#{{ $id }}')
|
||||
</script>
|
||||
@@ -6,6 +6,7 @@ use Dcat\Admin\Extend\ServiceProvider;
|
||||
use Dcat\Admin\Admin;
|
||||
use Dcat\Admin\Form;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Weiwait\DcatVue\Field\DateRange;
|
||||
use Weiwait\DcatVue\Field\File;
|
||||
use Weiwait\DcatVue\Field\Image;
|
||||
use Weiwait\DcatVue\Field\MultipleFile;
|
||||
@@ -35,15 +36,14 @@ class DcatVueServiceProvider extends ServiceProvider
|
||||
$this->hackConfigs();
|
||||
|
||||
// Form::extend('vue', Vue::class);
|
||||
Form::extend('file', File::class);
|
||||
Form::extend('multipleFile', MultipleFile::class);
|
||||
Form::extend('image', Image::class);
|
||||
Form::extend('multipleImage', MultipleImage::class);
|
||||
Form::extend('tags', Tag::class);
|
||||
Form::extend('vFile', File::class);
|
||||
Form::extend('vMultipleFile', MultipleFile::class);
|
||||
Form::extend('vImage', Image::class);
|
||||
Form::extend('vMultipleImage', MultipleImage::class);
|
||||
Form::extend('vTags', Tag::class);
|
||||
// Form::extend('dateRange', DateRange::class);
|
||||
|
||||
Admin::asset()->css(Admin::asset()->getAlias('@weiwait.dcat-vue')['css']);
|
||||
|
||||
$this->publishable();
|
||||
}
|
||||
|
||||
public function settingForm()
|
||||
@@ -92,6 +92,8 @@ class DcatVueServiceProvider extends ServiceProvider
|
||||
]);
|
||||
|
||||
config()->set('filesystems.default', FilesystemConfig::get('disk', config('filesystems.default')));
|
||||
|
||||
config()->set('admin.auth.except', array_merge((array)config('admin.auth.except'), ['weiwait*']));
|
||||
});
|
||||
|
||||
Event::listen('admin:booted', function () {
|
||||
|
||||
73
src/Field/DateRange.php
Normal file
73
src/Field/DateRange.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace Weiwait\DcatVue\Field;
|
||||
|
||||
use Dcat\Admin\Form\Field;
|
||||
use Dcat\Admin\Support\Helper;
|
||||
|
||||
class DateRange extends Field\DateRange
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
|
||||
public function render()
|
||||
{
|
||||
/****************************** parent ************************************/
|
||||
|
||||
$this->options['locale'] = config('app.locale');
|
||||
|
||||
$this->addVariables(['options' => $this->options]);
|
||||
|
||||
/****************************** field ************************************/
|
||||
|
||||
if (!$this->shouldRender()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$this->setDefaultClass();
|
||||
|
||||
$this->callComposing();
|
||||
|
||||
$this->withScript();
|
||||
|
||||
/****************************** custom ************************************/
|
||||
|
||||
$this->withProvides();
|
||||
|
||||
$this->addVariables([
|
||||
'provides' => $this->variables(),
|
||||
]);
|
||||
|
||||
return view($this->view(), $this->variables());
|
||||
}
|
||||
|
||||
protected function formatAttributes()
|
||||
{
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
protected function withProvides()
|
||||
{
|
||||
$this->addVariables([
|
||||
'component' => 'DateRange',
|
||||
]);
|
||||
}
|
||||
|
||||
public function max(int $max): self
|
||||
{
|
||||
$this->addVariables(['max' => $max]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function disableDates(array $dates): self
|
||||
{
|
||||
$datesObj = [];
|
||||
foreach ($dates as $item) {
|
||||
$datesObj[] = ['start' => $item[0], 'end' => $item[1] ?? null];
|
||||
}
|
||||
|
||||
$this->addVariables(['disableDates' => $datesObj]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ use Weiwait\DcatVue\Models\WeiwaitUpload;
|
||||
|
||||
class File extends Field\File
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::file';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
protected string $disk;
|
||||
|
||||
protected function prepareInputValue($file)
|
||||
|
||||
@@ -8,7 +8,7 @@ use Weiwait\DcatVue\Models\WeiwaitUpload;
|
||||
|
||||
class Image extends Field\Image
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::file';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
protected string $disk;
|
||||
|
||||
protected function prepareInputValue($file)
|
||||
|
||||
@@ -7,7 +7,7 @@ use Weiwait\DcatVue\Models\WeiwaitUpload;
|
||||
|
||||
class MultipleFile extends Field\MultipleFile
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::file';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
protected string $disk;
|
||||
|
||||
protected function prepareInputValue($file): array
|
||||
|
||||
@@ -8,7 +8,7 @@ use Weiwait\DcatVue\Models\WeiwaitUpload;
|
||||
|
||||
class MultipleImage extends Field\MultipleImage
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::file';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
protected string $disk;
|
||||
|
||||
protected function prepareInputValue($file)
|
||||
|
||||
@@ -7,7 +7,7 @@ use Dcat\Admin\Support\Helper;
|
||||
|
||||
class Tag extends Field\Tags
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::tag';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
|
||||
public function render()
|
||||
{
|
||||
@@ -31,8 +31,6 @@ class Tag extends Field\Tags
|
||||
'keyAsValue' => $this->keyAsValue,
|
||||
]);
|
||||
|
||||
/****************************** end parent ************************************/
|
||||
|
||||
/****************************** field ************************************/
|
||||
|
||||
if (!$this->shouldRender()) {
|
||||
@@ -45,7 +43,7 @@ class Tag extends Field\Tags
|
||||
|
||||
$this->withScript();
|
||||
|
||||
/****************************** end field ************************************/
|
||||
/****************************** custom ************************************/
|
||||
|
||||
$this->withProvides();
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ use Dcat\Admin\Widgets\Checkbox as WidgetCheckbox;
|
||||
|
||||
class Vue extends Field\Checkbox
|
||||
{
|
||||
protected $view = 'weiwait.dcat-vue::index';
|
||||
protected $view = 'weiwait.dcat-vue::common';
|
||||
|
||||
protected array $watch = [];
|
||||
|
||||
|
||||
@@ -24,4 +24,10 @@ return [
|
||||
'1.2.0' => [
|
||||
'新增(覆盖)tags表单组件'
|
||||
],
|
||||
'2.0.0' => [
|
||||
'放弃使用覆盖原生组件的方式',
|
||||
'修复内嵌表单',
|
||||
'排除扩展路由权限',
|
||||
'一些优化',
|
||||
]
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user