moshaorui 4 months ago
parent
commit
116f055576

+ 4 - 1
.env.dev

@@ -70,4 +70,7 @@ OSS_ACCESS_KEY_ID=LTAI5tCYd6zdBrSN9W9hZRUd
 OSS_ACCESS_KEY_SECRET=q0pp2qlDXdxi490qMDbDuWBd7SPMNn
 OSS_BUCKET=mietubl-dev
 OSS_ENDPOINT=oss-cn-hongkong.aliyuncs.com
-
+#内网上传,上线时开
+#OSS_INTERNAL=oss-cn-hongkong-internal.aliyuncs.com
+#加速域名,上线时开
+#OSS_DOMAIN=mietubl-dev.oss-accelerate.aliyuncs.com

+ 89 - 0
app/Admin/Actions/Grid/InitAppearance.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Admin\Actions\Grid;
+
+use App\Admin\Forms\InquiryAssignment as InquiryAssignmentForm;
+use App\Admin\Repositories\DistAdminDistributor;
+use App\Admin\Repositories\DistAppearance;
+use Dcat\Admin\Grid\BatchAction;
+use Dcat\Admin\Widgets\Modal;
+use Illuminate\Http\Request;
+
+
+class InitAppearance extends BatchAction
+{
+    /**
+     * @return string
+     */
+	protected $title = '';
+
+    public function __construct()
+    {
+        $this->title = admin_trans_label('init_appearance');
+
+    }
+
+    /**
+     *  确认弹窗,如果不需要则返回空即可
+     *
+     * @return array|string|void
+     */
+    public function confirm()
+    {
+
+        // 只显示标题
+//        return '您确定要发送新的提醒消息吗?';
+
+        // 显示标题和内容
+        return ['The data will be restored to its original version. Do you want to continue?', ''];
+    }
+
+
+    /**
+     * 处理请求
+     * 如果你的类中包含了此方法,则点击按钮后会自动向后端发起ajax请求,并且会通过此方法处理请求逻辑
+     *
+     * @param Request $request
+     */
+    public function handle(Request $request)
+    {
+        $keys = $request->input('_key');
+        if (is_array($keys) && count($keys) > 0) {
+            if (count($keys) > 1) {
+                return $this->response()->error('Only one row at a time')->refresh();
+            }
+            $baseDistId = config('dictionary.base_dist_id');
+            if ($baseDistId == $keys[0]) {
+                return $this->response()->error('The base distribution cannot be initialized')->refresh();
+            }
+            //初始化
+            $row = DistAdminDistributor::getOneById($keys[0]);
+            if ($row) {
+                DistAppearance::initTheme($row->appearance_id, $row->id);
+                return $this->response()->success('Success')->refresh();
+            }
+            return $this->response()->error('Data does not exist')->refresh();
+        } else {
+            return $this->response()->error('No data selected!')->refresh();
+        }
+    }
+
+    /**
+     * 设置动作发起请求前的回调函数,返回false可以中断请求.
+     *
+     * @return string
+     */
+    public function getModalScript(){
+        $warning = __('No data selected!');
+        return <<<JS
+            var key = {$this->getSelectedKeysScript()}
+            $('#inquiryIds').val(key);
+        JS;
+    }
+
+    public function getSelectedKeysScript()
+    {
+        return "Dcat.grid.selected('{$this->parent->getName()}')";
+    }
+
+}

+ 24 - 5
app/Admin/Controllers/DistAdminDistributorController.php

@@ -2,8 +2,10 @@
 
 namespace App\Admin\Controllers;
 
+use App\Admin\Actions\Grid\InitAppearance;
 use App\Admin\Repositories\DistAdminDistributor;
 use App\Admin\Repositories\DistAppearance;
+use App\Libraries\CommonHelper;
 use App\Models\DistProductCategory;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
@@ -36,6 +38,9 @@ class DistAdminDistributorController extends AdminController
     {
 
         return Grid::make(DistAdminDistributor::with(['appearance']), function (Grid $grid) {
+            //指定视图,去掉删除按钮
+            $grid->view('admin.grid.table');
+
             $grid->column('id')->sortable();
             $grid->column('company_name');
             $grid->column('site_name');
@@ -70,7 +75,12 @@ class DistAdminDistributorController extends AdminController
             $grid->enableDialogCreate();
             $grid->disableEditButton();
             $grid->disableDeleteButton();
-            $grid->disableBatchDelete();
+            //$grid->disableBatchDelete();
+            //批量操作
+            $grid->batchActions(function (Grid\Tools\BatchActions $batch) {
+                $batch->disableDelete();
+                $batch->add(new InitAppearance());
+            });
         });
     }
 
@@ -88,6 +98,11 @@ class DistAdminDistributorController extends AdminController
             $show->field('company_name');
             $show->field('company_address');
             $show->field('site_name');
+            $show->field('logo')->as(function ($image) {
+                // 开始生成 HTML
+                $dataImages = [$image];
+                return CommonHelper::displayImage($dataImages,100);
+            })->unescape();
             $show->field('domain_type',admin_trans_label('domain'))->as(function ($domainType) {
                 $title = "";
                 if ($domainType == 0) {
@@ -116,6 +131,7 @@ class DistAdminDistributorController extends AdminController
             $show->field('seo_description');
             // 按钮
             $show->disableDeleteButton();
+
         });
     }
 
@@ -130,7 +146,13 @@ class DistAdminDistributorController extends AdminController
             $form->text('company_name')->width(9,3)->required();
             $form->text('company_address',)->width(9,3);
             $form->text('site_name')->width(9,3)->required();
-
+            $form->image("logo")
+                ->autoUpload()
+                ->uniqueName()
+                ->accept(config('distributor.upload.oss_image.accept'))
+                ->maxSize(config('distributor.upload.oss_image.max_size'))
+                ->dir(config("distributor.upload.directory.image").'/logo')
+                ->width(9,3);
             $form->radio('domain_type')
                 ->width(9,3)
                 ->when(0, function (Form $form) {
@@ -142,8 +164,6 @@ class DistAdminDistributorController extends AdminController
                 ->default(0)
                 ->options([0=>'second-level domain',1=>'custom domain'])
                 ->required();
-
-
             $form->select('appearance_id',admin_trans_field('appearance'))->width(9,3)->options(DistAppearance::selectOptions())->required();
             $form->text('country')->width(9,3)->required();
             $form->text('contact_number')->width(9,3);
@@ -160,7 +180,6 @@ class DistAdminDistributorController extends AdminController
             $form->text('seo_keywords')->width(9,3);
             $form->textarea('seo_description')->width(9,3);
 
-
             //保存前回调
             $form->saving(function (Form $form) {
                 if (!$form->isCreating()) {

+ 9 - 0
app/Admin/Controllers/DistAppearanceTemplateController.php

@@ -2,6 +2,8 @@
 
 namespace App\Admin\Controllers;
 
+use App\Admin\Repositories\DistAdminDistributor;
+use App\Admin\Repositories\DistAppearance;
 use App\Admin\Repositories\DistAppearanceTemplate;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
@@ -46,6 +48,10 @@ class DistAppearanceTemplateController extends AdminController
                 $appearanceId = $request->get('appearance_id');
                 $distId = $request->get('dist_id');
                 return DistAppearanceTemplate::publish($appearanceId,$distId);
+            } else if ($request->get('act') == 'get_appearance_id') {
+                $distId = $request->get('dist_id');
+                $row = DistAdminDistributor::getOneById($distId);
+                return $row ? $row->appearance_id : '';
             }
         }
         $leftForm = new AceLeft();
@@ -60,6 +66,8 @@ class DistAppearanceTemplateController extends AdminController
     private function showTree($appearanceId, $distId) {
         $appearanceId = empty($appearanceId) ? 0 : $appearanceId;
         $distId = empty($distId) ? 0 : $distId;
+        $appearanceRow = DistAppearance::getOneById($appearanceId);
+
         $tree = DistAppearanceTemplate::getTemplateTree($appearanceId, $distId);
         $html = '<ul class="list-group list-group-flush">';
         foreach ($tree as $key => $value) {
@@ -73,6 +81,7 @@ class DistAppearanceTemplateController extends AdminController
                 //文件夹
                 $file_name = '<span class="custom-blue-bold">'. $file_name.'</span>';
             }
+            $file_name .= " ({$appearanceId} - {$distId})";
             $html .= '<li class="list-group-item has-submenu">';
             $html .= '<i class="fa '.$fa.'"></i> '. $file_name;
             $html .= $this->treeBuilder($value);

+ 2 - 5
app/Admin/Forms/AceLeft.php

@@ -14,19 +14,16 @@ class AceLeft extends Form
     {
         //主题选择
         $this->select('appearance_id','Select Appearance')
-            ->options(DistAppearance::selectOptions())
+            ->options(DistAppearance::selectOptions(true))
             ->width(12,12)
             ->setLabelClass('d-flex');
         //供应商选择
-        $baseDistId = config('dictionary.base_dist_id');
         $this->selectTable('dist_id', 'Select Distributor')
             ->width(12,12)
             ->setLabelClass('d-flex')
             ->title('Select Distributor')
             ->placeholder('Select Distributor')
-            ->from(DistDistributorTable::make())
-            ->model(DistAdminDistributor::class, 'id', 'company_name')
-            ->default($baseDistId);
+            ->from(DistDistributorTable::make());
         $this->disableSubmitButton();
         $this->disableResetButton();
     }

+ 7 - 5
app/Admin/Renderable/DistDistributorTable.php

@@ -1,7 +1,8 @@
 <?php
 namespace App\Admin\Renderable;
 
-use App\Models\DistAdminDistributor;
+
+use App\Admin\Repositories\DistAdminDistributor;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Grid\LazyRenderable;
 
@@ -10,9 +11,10 @@ class DistDistributorTable extends LazyRenderable
     public function grid(): Grid
     {
 
-        return Grid::make(new DistAdminDistributor(), function (Grid $grid) {
+        return Grid::make(DistAdminDistributor::with(['appearance']), function (Grid $grid) {
             $grid->column('id');
-            $grid->column('company_name', 'Company Name');
+            $grid->column('company_name', 'Company Name')->width('35%');
+            $grid->column('appearance.title' ,admin_trans_field('appearance'));
             $grid->column('country', 'Country');
             $grid->column('site_name', 'Site Name');
             $grid->column('domain_type',admin_trans_label('domain'))->display(function ($domainType) {
@@ -33,14 +35,14 @@ class DistDistributorTable extends LazyRenderable
             // 如果表格数据中带有 “name”、“title”或“username”字段,则可以不用设置
             $grid->rowSelector()->titleColumn('company_name');
 
-            $grid->quickSearch(['id', 'company_name', 'level_domain']);
+            $grid->quickSearch(['company_name']);
 
             $grid->paginate(10);
             $grid->disableActions();
 
             $grid->filter(function (Grid\Filter $filter) {
                 $filter->like('company_name')->width(4);
-                $filter->like('level_domain', 'Level Domain')->width(4);
+                $filter->like('site_name')->width(4);
             });
             $grid->model()->where('enabled', 1);
         });

+ 7 - 0
app/Admin/Repositories/DistAdminDistributor.php

@@ -20,6 +20,13 @@ class DistAdminDistributor extends EloquentRepository
      */
     protected $eloquentClass = Model::class;
 
+    /*
+     * 获取一个标签
+     */
+    public static function getOneById($id)
+    {
+        return Model::where('id', $id)->first();
+    }
 
     /*
      * 始始化分销商

+ 14 - 2
app/Admin/Repositories/DistAppearance.php

@@ -15,12 +15,24 @@ class DistAppearance extends EloquentRepository
      */
     protected $eloquentClass = Model::class;
 
-    public static function selectOptions()
+    /*
+     * 获取一个标签
+     */
+    public static function getOneById($id)
+    {
+        return Model::where('id', $id)->first();
+    }
+
+    public static function selectOptions($valueShowId = false)
     {
         $data = Model::where('enabled', 1)->get();
         $options = [];
         foreach ($data as $item) {
-            $options[$item->id] = $item->title;
+            if ($valueShowId) {
+                $options[$item->id] = $item->id.' - '.$item->title;
+            } else {
+                $options[$item->id] = $item->title;
+            }
         }
         return $options;
     }

+ 1 - 1
app/Distributor/Controllers/SettingsController.php

@@ -51,7 +51,7 @@ HTML
                 ->uniqueName()
                 ->accept(config('distributor.upload.oss_image.accept'))
                 ->maxSize(config('distributor.upload.oss_image.max_size'))
-                ->dir(config("distributor.upload.directory.image").'/logo/'.date("Ymd"))
+                ->dir(config("distributor.upload.directory.image").'/logo')
                 ->url('/dist-settings/upload')
                 ->default($distInfo->logo);
             $form->text('site_name')->value($distInfo->site_name)->required();

+ 5 - 2
app/Libraries/CommonHelper.php

@@ -23,7 +23,7 @@ class CommonHelper
             $thumbnailImages = array_map(function ($imageUrl) use ($boxSize) {
                 $imageUrl= CommonHelper::ossUrl($imageUrl);
 
-                return $imageUrl . "?x-oss-process=image/resize,m_lfit,h_{$boxSize}";
+                return $imageUrl . "?x-oss-process=image/resize,m_pad,h_{$boxSize},w_{$boxSize},color_ffffff";
             }, $images);
 
             // 生成点击查看大图的链接
@@ -36,7 +36,7 @@ class CommonHelper
             $html = '';
             foreach ($thumbnailImages as $index => $thumbnailUrl) {
                 $largeUrl = $largeImages[$index];
-                $html .= "<a href='$largeUrl' target='_blank'><img src='$thumbnailUrl' style='height:{$boxSize}px; margin-right:5px;'></a>";
+                $html .= "<a href='$largeUrl' target='_blank'><img src='$thumbnailUrl' style='height:{$boxSize}px; margin-right:5px; border: 1px solid #ececf1;'></a>";
             }
 
             return $html;
@@ -60,6 +60,9 @@ class CommonHelper
      */
     public static function ossUrl($image)
     {
+        if (env('OSS_DOMAIN')) {
+            return "http://".env('OSS_DOMAIN').'/'.$image;
+        }
         return "http://".env('OSS_BUCKET').'.'.env('OSS_ENDPOINT').'/'.$image;
     }
 

+ 1 - 0
lang/zh_CN/global.php

@@ -143,6 +143,7 @@ return [
         'product_category'      => '产品分类',
         'pages_tag'             => '文章标签',
         'unique_page'          => '独立页面',
+        'init_appearance'         => '初始化主题',
     ],
     'options' => [
         //

+ 38 - 0
resources/appearance/OceanWP/index.txt

@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Ace Editor Example</title>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js" type="text/javascript"></script>
+    <style>
+        #editor {
+            height: 600px; /* 设置编辑器的高度 */
+            width: 800px; /* 设置编辑器的宽度 */
+            border: 1px solid #ddd; /* 可选边框样式 */
+        }
+    </style>
+</head>
+old 123655522
+<body>磊2111
+    <h1>Ace Editor Example</h1>
+    <div id="editor">console.log("Hello, World!");</div> <!-- 初始化内容 -->
+
+    <script>
+        // 创建 Ace 编辑器实例
+        var editor = ace.edit("editor");
+
+        // 设置语言
+        editor.getSession().setMode("ace/mode/javascript");
+        // 设置主题
+    editor.setTheme("ace/theme/tomorrow");
+    editor.setAutoScrollEditorIntoView(true);
+
+
+        // 其他配置
+        editor.setOptions({
+            showPrintMargin: true // 不显示打印边距
+        });
+    </script>
+</body>
+</html>11

+ 25 - 2
resources/views/admin/pages-custom/ace.blade.php

@@ -221,8 +221,31 @@
             });
             //请空编辑器内容
             editor.setValue('');
-            //显示代码树
-            postData();
+            dist_id = $(this).val();
+
+            //在分销商名字前加上分销商id
+            setTimeout(function() {
+                $("div[name='dist_id'] .option").text(dist_id+" - " + $("div[name='dist_id'] .option").text());
+            }, 100); // 延迟2000毫秒(即2秒)
+
+
+            //改变appearance_id
+            $.ajax({
+                url: '/prime-control/dist-template/ace',
+                type: 'POST',
+                data: {
+                    act:'get_appearance_id',
+                    dist_id: dist_id,
+                },
+                success: function(response) {
+                    // 更改选中的值
+                    var $select = $('select[name="appearance_id"]');
+                    $select.select2('val', response);
+                    //显示代码树
+                   // postData();
+                }
+            });
+
         });
         // 模版编辑保存
         $("#save-btn").click(function() {