Browse Source

更友好的安装,新上一些卡片组件功能

tushan 5 months ago
parent
commit
7a6feddf40
100 changed files with 423 additions and 275 deletions
  1. BIN
      .DS_Store
  2. 3 0
      .gitignore
  3. 5 3
      app/AppService.php
  4. 0 2
      app/BaseController.php
  5. 1 0
      app/Request.php
  6. 0 26
      app/command/test.php
  7. 2 1
      app/command/upgrade.php
  8. 4 4
      app/common.php
  9. 14 7
      app/controller/Admin.php
  10. 60 34
      app/controller/Api.php
  11. 0 1
      app/controller/Card.php
  12. 21 17
      app/controller/Link.php
  13. 30 8
      app/controller/Note.php
  14. 0 3
      app/controller/apps/todo/Index.php
  15. BIN
      app/controller/apps/weather/ipLocation/IP2LOCATION-LITE-DB5.BIN
  16. 41 3
      app/model/FileModel.php
  17. 2 2
      composer.json
  18. 112 46
      composer.lock
  19. 2 2
      config/app.php
  20. 0 1
      config/database.php
  21. 2 2
      docker-compose.yaml
  22. 52 12
      extend/Mail.php
  23. 59 20
      extend/Upgrade2.php
  24. 13 0
      install.sql
  25. BIN
      public/.DS_Store
  26. 0 1
      public/dist/assets/add.c36dce54.1728219882564.svg
  27. 0 1
      public/dist/assets/add.c36dce54.1728957723508.svg
  28. 0 0
      public/dist/assets/addCard.29953edc.1728219882564.js
  29. 0 0
      public/dist/assets/addCard.4102e9ca.1728957723508.js
  30. 0 1
      public/dist/assets/addCard.930091b5.1728219882564.css
  31. 0 1
      public/dist/assets/addCard.fea5b983.1728957723508.css
  32. 0 0
      public/dist/assets/app.26a8dba7.1728219882564.css
  33. 0 0
      public/dist/assets/app.45abeddc.1728957723508.css
  34. 0 0
      public/dist/assets/app.5951bbb3.1728957723508.js
  35. 0 0
      public/dist/assets/app.b2f7eddc.1728219882564.js
  36. 0 1
      public/dist/assets/appSetting.3da2873a.1728219882564.js
  37. 0 1
      public/dist/assets/appSetting.c9135664.1728957723508.js
  38. 0 1
      public/dist/assets/apps.1b96d9dd.1728219882564.svg
  39. 0 1
      public/dist/assets/apps.1b96d9dd.1728957723508.svg
  40. 0 1
      public/dist/assets/arc.2af709d0.1728219882564.svg
  41. 0 1
      public/dist/assets/arc.2af709d0.1728957723508.svg
  42. 0 0
      public/dist/assets/auth.5b551228.1728219882564.svg
  43. 0 0
      public/dist/assets/auth.5b551228.1728957723508.svg
  44. 0 0
      public/dist/assets/background.a9ea02ab.1728219882564.js
  45. 0 0
      public/dist/assets/background.e8327b91.1728957723508.js
  46. 0 1
      public/dist/assets/background.vue_vue_type_style_index_0_lang.43deb346.1728219882564.css
  47. 0 1
      public/dist/assets/background.vue_vue_type_style_index_0_lang.43deb346.1728957723508.css
  48. BIN
      public/dist/assets/bg.28211af3.1728219882564.png
  49. BIN
      public/dist/assets/bg.28211af3.1728957723508.png
  50. BIN
      public/dist/assets/bg.6196bbf8.1728219882564.png
  51. BIN
      public/dist/assets/bg.6196bbf8.1728957723508.png
  52. 0 16
      public/dist/assets/bg.8554a3fc.1728219882564.svg
  53. 0 16
      public/dist/assets/bg.8554a3fc.1728957723508.svg
  54. 0 1
      public/dist/assets/bg2.0b9e8efc.1728219882564.svg
  55. 0 1
      public/dist/assets/bg2.0b9e8efc.1728957723508.svg
  56. 0 5
      public/dist/assets/browserExt.a12d7a87.1728219882564.svg
  57. 0 5
      public/dist/assets/browserExt.a12d7a87.1728957723508.svg
  58. 0 1
      public/dist/assets/class.0f9411b7.1728219882564.svg
  59. 0 1
      public/dist/assets/class.0f9411b7.1728957723508.svg
  60. 0 1
      public/dist/assets/close.b3c64907.1728219882564.svg
  61. 0 1
      public/dist/assets/close.b3c64907.1728957723508.svg
  62. 0 1
      public/dist/assets/custom.29b4c8c2.1728219882564.css
  63. 0 1
      public/dist/assets/custom.29b4c8c2.1728957723508.css
  64. 0 0
      public/dist/assets/custom.6390e41d.1728219882564.js
  65. 0 0
      public/dist/assets/custom.a32ea1a8.1728957723508.js
  66. 0 0
      public/dist/assets/defavatar.60e55c5e.1728219882564.svg
  67. 0 0
      public/dist/assets/defavatar.60e55c5e.1728957723508.svg
  68. 0 1
      public/dist/assets/defavatar.6cebf928.1728219882564.js
  69. 0 1
      public/dist/assets/defavatar.b7fde12c.1728957723508.js
  70. 0 1
      public/dist/assets/del.352f41d5.1728219882564.svg
  71. 0 1
      public/dist/assets/del.352f41d5.1728957723508.svg
  72. 0 0
      public/dist/assets/dialog.26004b99.1728219882564.js
  73. 0 0
      public/dist/assets/dialog.6641baf3.1728957723508.js
  74. 0 0
      public/dist/assets/dock.d373251c.1728219882564.svg
  75. 0 0
      public/dist/assets/dock.d373251c.1728957723508.svg
  76. 0 0
      public/dist/assets/edgeExt.fe0b5e1b.1728219882564.svg
  77. 0 0
      public/dist/assets/edgeExt.fe0b5e1b.1728957723508.svg
  78. 0 1
      public/dist/assets/edit.619ba3d7.1728219882564.svg
  79. 0 1
      public/dist/assets/edit.619ba3d7.1728957723508.svg
  80. 0 1
      public/dist/assets/el-input-upload.51ad76d8.1728219882564.js
  81. 0 1
      public/dist/assets/el-input-upload.97469103.1728957723508.js
  82. 0 1
      public/dist/assets/enter.c6dc40d7.1728219882564.svg
  83. 0 1
      public/dist/assets/enter.c6dc40d7.1728957723508.svg
  84. 0 0
      public/dist/assets/ext.481cf1ec.1728219882564.js
  85. 0 1
      public/dist/assets/ext.b6f5acc2.1728957723508.css
  86. 0 0
      public/dist/assets/ext.e1589697.1728957723508.js
  87. BIN
      public/dist/assets/favicon.d0d9e2c4.1728219882564.png
  88. BIN
      public/dist/assets/favicon.d0d9e2c4.1728957723508.png
  89. 0 1
      public/dist/assets/file.04a46a87.1728219882564.css
  90. 0 1
      public/dist/assets/file.04a46a87.1728957723508.css
  91. 0 0
      public/dist/assets/file.1631c627.1728219882564.js
  92. 0 1
      public/dist/assets/file.a6743b7c.1728219882564.svg
  93. 0 1
      public/dist/assets/file.a6743b7c.1728957723508.svg
  94. 0 0
      public/dist/assets/file.cc34dfd3.1728957723508.js
  95. 0 1
      public/dist/assets/folder.24bc26bf.1728219882564.svg
  96. 0 1
      public/dist/assets/folder.24bc26bf.1728957723508.svg
  97. 0 1
      public/dist/assets/googleExt.0daaae76.1728219882564.svg
  98. 0 1
      public/dist/assets/googleExt.0daaae76.1728957723508.svg
  99. BIN
      public/dist/assets/ico.84a6321a.1728219882564.png
  100. BIN
      public/dist/assets/ico.84a6321a.1728957723508.png

BIN
.DS_Store


+ 3 - 0
.gitignore

@@ -17,3 +17,6 @@ mtab.zip
 /public/dist/
 /public/static/exportsTabLink.json
 /vendor
+xy.pem
+/plugins/
+/public/browserExt.zip

+ 5 - 3
app/AppService.php

@@ -1,5 +1,6 @@
 <?php
 declare (strict_types=1);
+
 namespace app;
 
 use think\Service;
@@ -12,14 +13,15 @@ class AppService extends Service
     public function register()
     {
         // 服务注册
-        if (!file_exists(public_path() . 'installed.lock')) {//如果没有安装的就提示安装
-            header("Location:/install.php");
+        if (!file_exists(public_path() . '/installed.lock')) {//如果没有安装的就提示安装
+            //如果是/installApp开头的路径一律放行
+            header('Location:/install.php');
             exit();
         }
     }
 
     public function boot()
     {
-        // 服务启动
+
     }
 }

+ 0 - 2
app/BaseController.php

@@ -59,12 +59,10 @@ class BaseController
 
     public function __construct(App $app)
     {
-
         $this->app = $app;
         $this->request = $this->app->request;
         // 控制器初始化
         $this->initialize();
-
     }
 
     // 初始化

+ 1 - 0
app/Request.php

@@ -14,6 +14,7 @@ class Request extends \think\Request
         header('Access-Control-Allow-Origin:*');
         header('Access-Control-Allow-Methods:*');
         header('Access-Control-Allow-Headers:*');
+
         $this->encodeType();
         parent::__construct();
     }

+ 0 - 26
app/command/test.php

@@ -1,26 +0,0 @@
-<?php
-declare (strict_types=1);
-
-namespace app\command;
-
-use app\controller\Api;
-use think\console\Command;
-use think\console\Input;
-
-use think\console\Output;
-
-class test extends Command
-{
-    protected function configure()
-    {
-        // 指令配置
-        $this->setName('test')
-            ->setDescription('脚本测试');
-    }
-
-    protected function execute(Input $input, Output $output)
-    {
-        $res = new Api($this->app);
-        print_r($res->upload()->getData());
-    }
-}

+ 2 - 1
app/command/upgrade.php

@@ -1,5 +1,6 @@
 <?php
-declare (strict_types=1);
+
+declare(strict_types=1);
 
 namespace app\command;
 

+ 4 - 4
app/common.php

@@ -1,8 +1,8 @@
 <?php
 //程序版本号,请勿修改
-const app_version = '2.3.3';
+const app_version = '2.4.3';
 //程序内部更新版本代码,请勿修改
-const app_version_code = 235;
+const app_version_code = 243;
 // 应用公共文件
 function validateEmail($email): bool
 {
@@ -29,9 +29,9 @@ function renderToken($t = 'tab'): string
     return md5($s);
 }
 
-function joinPath($path1, $path2)
+function joinPath($path1, $path2='')
 {
-    return preg_replace("#//#", "/", $path1 . $path2);
+    return preg_replace("#/+/#", "/", $path1 . $path2);
 }
 
 function getRealIp(): string

+ 14 - 7
app/controller/Admin.php

@@ -173,10 +173,21 @@ class Admin extends BaseController
     function getUserLine(): \think\response\Json
     {
         $this->getAdmin();
-        $result = UserModel::whereMonth('create_time');
+        $today = new DateTime();
+        $firstDayOfMonth = new DateTime($today->format('Y-m-01'));
+        $lastDayOfMonth = new DateTime($today->format('Y-m-t'));
+        $formatDate = function ($date) {
+            return $date->format('Y-m-d');
+        };
+        $defaultDate = [
+            $formatDate($firstDayOfMonth),
+            $formatDate($lastDayOfMonth)
+        ];
+        $dateSelect = $this->request->post('dateSelect', $defaultDate);
+        $result = UserModel::whereBetweenTime('create_time', $dateSelect[0], $dateSelect[1]);  // 当前月
         $result = $result->field('DATE_FORMAT(create_time, "%Y-%m-%d") as time, count(id) as total');
         $result = $result->group('time')->select();
-        return $this->success('ok', $this->render($result));
+        return $this->success('ok', $this->render($result, $dateSelect[0], $dateSelect[1]));
     }
 
     function getHotTab(): \think\response\Json
@@ -186,7 +197,7 @@ class Admin extends BaseController
         return $this->success('ok', $list);
     }
 
-    private function render($arr): array
+    private function render($arr, $start, $end): array
     {
         $info = [];
         foreach ($arr as $key => $value) {
@@ -194,10 +205,6 @@ class Admin extends BaseController
         }
         $time = [];
         $total = [];
-        //当月的第一天
-        $start = date('Y-m-01', strtotime(date('Y-m-d')));
-        //当月的最后一天
-        $end = date('Y-m-d', strtotime(date('Y-m-01') . ' +1 month -1 day'));
         $start_date = new DateTime($start);
         $end_date = new DateTime($end);
         $interval = new DateInterval('P1D');

+ 60 - 34
app/controller/Api.php

@@ -120,7 +120,6 @@ class Api extends BaseController
             } catch (\Exception $e) {
                 return $this->error($e->getMessage());
             }
-
         }
         return $this->error('发送失败');
     }
@@ -241,7 +240,6 @@ class Api extends BaseController
             if ($icon) {
                 return $this->success(['src' => $icon, 'name' => $title]);
             }
-
         } catch (\Exception $e) {
             return $this->error('没有抓取到图标');
         }
@@ -341,26 +339,13 @@ class Api extends BaseController
             mkdir($remotePath, 0755, true);
         }
         try {
-            $response = $client->request('GET', $url, [
+            $client->request('GET', $url, [
                 'sink' => $downloadPath,
                 'headers' => [
                     'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
                 ]
             ]);
-            $realPath = joinPath(public_path(), $path . $name);
-            $hash = hash_file('md5', $realPath);
-            $check = FileModel::where('hash', $hash)->find();
-            if ($check) {
-                try {
-                    if (joinPath(public_path(), $check['path']) !== $realPath) {
-                        unlink($realPath);
-                    }
-                } catch (\Exception $e) {
-                }
-                return $check['path'];
-            }
-            FileModel::addFile($path . $name, $user['user_id'] ?? null);
-            return $path . $name;
+            return FileModel::addFile($path . $name, $user['user_id'] ?? null);
         } catch (RequestException $e) {
         }
         return false;
@@ -392,7 +377,8 @@ class Api extends BaseController
         if (empty($file)) {
             return $this->error('not File');
         }
-        $maxSize = (double)$this->systemSetting('upload_size', '2');
+        $calc = $this->request->header("Calc");
+        $maxSize = (float)$this->systemSetting('upload_size', '2');
         if ($file->getSize() > 1024 * 1024 * $maxSize) {
             $limit = $maxSize < 1 ? ($maxSize * 1000) . 'KB' : ($maxSize) . 'MB';
             return $this->error("文件最大$limit,请压缩后再试");
@@ -400,21 +386,10 @@ class Api extends BaseController
         if (in_array(strtolower($file->getOriginalExtension()), ['png', 'jpg', 'jpeg', 'webp', 'ico', 'svg'])) {
             // 验证文件并保存
             try {
-                $cdn = $this->systemSetting('assets_host', '/', true);
                 // 构建保存路径
                 $savePath = '/images/' . date('Y/m/d');
                 $hash = Str::random(32);
                 $fileName = $hash . '.' . $file->getOriginalExtension();
-                $hash = $file->hash('md5');
-                $check = FileModel::where('hash', $hash)->find();
-                if ($check) {
-                    try {
-                        unlink($file->getRealPath());
-                    } catch (\Exception $e) {
-                    }
-                    $dt = ['url' => joinPath($cdn, $check['path'])];
-                    return $this->success($dt);
-                }
                 $filePath = Filesystem::disk('images')->putFileAs($savePath, $file, $fileName);
                 $minPath = '';
                 if ($type == 'icon' || $type == 'avatar') {
@@ -426,10 +401,18 @@ class Api extends BaseController
                     $fp = joinPath(public_path(), $filePath);
                     $image = new \ImageBack($fp);
                     $image->resize(400, 0)->save(joinPath(public_path(), $minPath));
-                    FileModel::addFile($minPath, $user['user_id'] ?? null);
+                    $minPath = FileModel::addFile($minPath, $user['user_id'] ?? null);
+                }
+                //如果包含裁剪头就裁剪图片
+                if ($calc) {
+                    $w = (int)explode("x", $calc)[0];
+                    $h = (int)explode("x", $calc)[1];
+                    $fp = joinPath(public_path(), $filePath);
+                    $image = new \ImageBack($fp);
+                    $image->resize($w, $h)->save($fp);
                 }
-                FileModel::addFile($filePath, $user['user_id'] ?? null);
-                return $this->success(['url' => $cdn . $filePath, "minUrl" => joinPath($cdn, $minPath)]);
+                $filePath = FileModel::addFile($filePath, $user['user_id'] ?? null);
+                return $this->success(['url' => $filePath, "minUrl" => $minPath, 'filename' => $fileName]);
             } catch (\think\exception\ValidateException $e) {
                 return $this->error($e->getMessage());
                 // 验证失败,给出错误提示
@@ -457,8 +440,8 @@ class Api extends BaseController
             $fileName = $hash . '.' . $file->getOriginalExtension();
             $filePath = Filesystem::disk('images')->putFileAs($savePath, $file, $fileName);
             $cdn = $this->systemSetting('assets_host', '/', true);
-            FileModel::addFile($filePath, $user['user_id'] ?? null);
-            return $this->success(['url' => $cdn . $filePath]);
+            $path = FileModel::addFile($filePath, $user['user_id'] ?? null);
+            return $this->success(['url' => $cdn . $path]);
         } catch (\think\exception\ValidateException $e) {
             // 验证失败,给出错误提示
             // ...
@@ -476,4 +459,47 @@ class Api extends BaseController
         }
         return $this->error("not login");
     }
+
+    function cardImages(): \think\response\Json
+    {
+        $list = [];
+        $webPath = '/static/CardBackground/bg/';
+        $dirPath = public_path($webPath);
+        $dir = opendir($dirPath);
+        while (($file = readdir($dir)) !== false) {
+            if ($file != "." && $file != "..") {
+                if (is_file(joinPath($dirPath, $file))) {
+                    $list[] = [
+                        "thumbor" => joinPath($webPath, $file),
+                        "url" => joinPath($webPath, $file),
+                    ];
+                }
+            }
+        }
+        //针对文件的创建时间排序
+        usort($list, function ($a, $b) {
+            return filemtime(joinPath(public_path(), $b['thumbor'])) - filemtime(joinPath(public_path(), $a['thumbor']));
+        });
+        return $this->success($list);
+    }
+
+    function moveFile(): \think\response\Json
+    {
+        $this->getAdmin();
+        $old = $this->request->post("old");
+        $new = $this->request->post("new");
+        FileModel::moveFile($old, $new);
+        return $this->success("文件移动成功");
+    }
+
+    function delImages(): \think\response\Json
+    {
+        $this->getAdmin();
+        $url = $this->request->post('url');
+        $p = joinPath(public_path(), $url);
+        if (file_exists($p)) {
+            FileModel::delFile($url);
+        }
+        return $this->success("删除完毕");
+    }
 }

+ 0 - 1
app/controller/Card.php

@@ -4,7 +4,6 @@ namespace app\controller;
 
 use app\BaseController;
 use app\model\CardModel;
-use app\model\SettingModel;
 
 class Card extends BaseController
 {

+ 21 - 17
app/controller/Link.php

@@ -9,32 +9,36 @@ use app\model\LinkModel;
 use app\model\TabbarModel;
 use app\model\UserSearchEngineModel;
 use think\facade\Cache;
-use think\facade\Db;
 
 class Link extends BaseController
 {
     public function update(): \think\response\Json
     {
         $user = $this->getUser(true);
-        if ($user) {
-            $link = $this->request->post("link", []);
-            if ($link) {
-                $is = LinkModel::where("user_id", $user['user_id'])->find();
-                if ($is) {
-                    HistoryModel::create(['user_id' => $user['user_id'], 'link' => $is['link'], 'create_time' => date("Y-m-d H:i:s")]); //历史记录备份,用于用户误操作恢复用途
-                    $ids = HistoryModel::where("user_id", $user['user_id'])->order("id", 'desc')->limit(50)->select()->toArray();
-                    $ids = array_column($ids, "id");
-                    HistoryModel::where("user_id", $user['user_id'])->whereNotIn("id", $ids)->delete();
-                    $is->link = $link;
-                    $is->save();
-                } else {
-                    LinkModel::create(["user_id" => $user['user_id'], "link" => $link]);
+        $error = "";
+        try {
+            if ($user) {
+                $link = $this->request->post("link", []);
+                if (is_array($link)) {
+                    $is = LinkModel::where("user_id", $user['user_id'])->find();
+                    if ($is) {
+                        HistoryModel::create(['user_id' => $user['user_id'], 'link' => $is['link'], 'create_time' => date("Y-m-d H:i:s")]); //历史记录备份,用于用户误操作恢复用途
+                        $ids = HistoryModel::where("user_id", $user['user_id'])->order("id", 'desc')->limit(50)->select()->toArray();
+                        $ids = array_column($ids, "id");
+                        HistoryModel::where("user_id", $user['user_id'])->whereNotIn("id", $ids)->delete();
+                        $is->link = $link;
+                        $is->save();
+                    } else {
+                        LinkModel::create(["user_id" => $user['user_id'], "link" => $link]);
+                    }
+                    Cache::delete("Link.{$user['user_id']}");
+                    return $this->success('ok');
                 }
-                Cache::delete("Link.{$user['user_id']}");
-                return $this->success('ok');
             }
+        } catch (\Throwable $th) {
+            $error = $th->getMessage();
         }
-        return $this->error('保存失败');
+        return $this->error('保存失败'.$error);
     }
 
     public function get(): \think\response\Json

+ 30 - 8
app/controller/Note.php

@@ -5,7 +5,6 @@ namespace app\controller;
 
 
 use app\BaseController;
-use think\Exception;
 
 class Note extends BaseController
 {
@@ -13,26 +12,49 @@ class Note extends BaseController
     public function get(): \think\response\Json
     {
         $user = $this->getUser();
-        $sort = $this->request->get('sort', 'desc');
         $limit = $this->request->get('limit', 999999);
         if (!$user) {
             return $this->success('', []);
         }
-        $data = (new \app\model\NoteModel)->where("user_id", $user['user_id'])->field('user_id,id,title,create_time,update_time,weight')->order('id', $sort)->limit($limit)->select();
+        $data = (new \app\model\NoteModel)->where("user_id", $user['user_id'])->field('user_id,id,title,create_time,update_time,weight,sort')->order(['sort'=>'asc','create_time'=>'desc'])->limit($limit)->select();
         return $this->success('ok', $data);
     }
 
+    function sort(): \think\response\Json
+    {
+        $user = $this->getUser(true);
+        $ids = $this->request->post('ids', []);
+        $data = (new \app\model\NoteModel)->field("id,user_id,sort")->where("user_id", $user['user_id'])->whereIn('id', $ids)->select()->toArray();
+        //查询到和id做个比对重新设置sort入库,批量入库,
+        $data_map = [];
+        foreach ($data as $k => $v) {
+            $data_map[$v['id']] = $v;
+        }
+        $update_data = [];
+        foreach ($ids as $k => $v) {
+            if (isset($data_map[$v])) {
+                $update_data[] = [
+                    "id" => $v,
+                    "sort" => $k
+                ];
+            }
+        }
+        try {
+            (new \app\model\NoteModel)->saveAll($update_data);
+        } catch (\Exception $e) {
+            return $this->error('排序失败');
+        }
+        return $this->success('ok');
+
+    }
+
     //获取文本
     public function getText(): \think\Response
     {
         $user = $this->getUser(true);
         $id = $this->request->get('id');
         $data = (new \app\model\NoteModel)->where("user_id", $user['user_id'])->field("text,id")->where('id', $id)->find();
-        try {
-            return response($data['text']);
-        } catch (Exception $e) {
-            return response('');
-        }
+        return response($data['text']);
     }
 
     function setWeight(): \think\response\Json

+ 0 - 3
app/controller/apps/todo/Index.php

@@ -47,9 +47,6 @@ class Index extends PluginsBase
         $folder = $this->request->post("folder");
         $form = $this->request->post();
         if ($id) {
-            if (empty($form['expire_time'])) {
-                unset($form['expire_time']);
-            }
             if (isset($form['todo']) && mb_strlen($form['todo']) > 500) {
                 return $this->error("待办内容不能超过500字,请分割待办事项");
             }

BIN
app/controller/apps/weather/ipLocation/IP2LOCATION-LITE-DB5.BIN


+ 41 - 3
app/model/FileModel.php

@@ -17,22 +17,60 @@ class FileModel extends Model
     public static function addFile($file, $user_id = null)
     {
         $originPath = joinPath(public_path(), $file);
+        $hash = hash_file('md5', $originPath);
+        $find = self::where('hash', $hash)->find();
+        if ($find) {
+            if($find['path']!==$file){
+                unlink($originPath);
+            }
+            return joinPath($find['path']);
+        }
         if (file_exists($originPath)) {
+            clearstatcache(true, $originPath);
             $info = [];
             $info["path"] = $file;
             $info["user_id"] = $user_id;
             $info['create_time'] = date("Y-m-d H:i:s");
             $info['size'] = filesize($originPath);
-            $info['hash'] = hash_file("md5", $originPath);
+            $info['hash'] = $hash;
             $info["mime_type"] = mime_content_type($originPath);
             self::insert($info);
-            return $info;
+            return joinPath($info['path']);
         }
         return false;
     }
 
+    static function delFile($path): bool
+    {
+        $path = joinPath(public_path(), $path);
+        if (file_exists($path)) {
+            $hash = hash_file("md5", $path);
+            unlink($path);
+            $find = self::where("hash", $hash)->find();
+            if ($find) {
+                $find->delete();
+            }
+        }
+        return true;
+    }
+
+    static function moveFile($oldPath, $newPath): bool
+    {
+        $path = joinPath(public_path(), $oldPath);
+        $Path2 = joinPath(public_path(), $newPath);
+        if (file_exists($path)) {
+            $find = self::where("hash", hash_file('md5', $path))->find();
+            if ($find) {
+                rename($path, $Path2);
+                $find->path = joinPath('/', $newPath);
+                $find->save();
+            }
+        }
+        return true;
+    }
+
     function user(): \think\model\relation\HasOne
     {
         return $this->hasOne(UserModel::class, "id", "user_id")->field("id,nickname,mail");
     }
-}
+}

+ 2 - 2
composer.json

@@ -27,7 +27,6 @@
     "ext-json": "*",
     "guzzlehttp/guzzle": "^7.7",
     "ext-openssl": "*",
-    "nette/mail": "^3.1",
     "ext-fileinfo": "*",
     "topthink/think-filesystem": "^2.0",
     "ext-mysqli": "*",
@@ -39,7 +38,8 @@
     "ext-mbstring": "*",
     "ext-bcmath": "*",
     "ext-gd": "*",
-    "ext-libxml": "*"
+    "ext-libxml": "*",
+    "nette/mail": "^3.1"
   },
   "require-dev": {
     "symfony/var-dumper": "^4.2",

+ 112 - 46
composer.lock

@@ -4,26 +4,26 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "2b29e33b042d2949a346e8b8beb1987d",
+    "content-hash": "71f90a79c0274027a052c48b92c73bcd",
     "packages": [
         {
             "name": "guzzlehttp/guzzle",
-            "version": "7.8.2",
+            "version": "7.9.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "f4152d9eb85c445fe1f992001d1748e8bec070d2"
+                "reference": "d281ed313b989f213357e3be1a179f02196ac99b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4152d9eb85c445fe1f992001d1748e8bec070d2",
-                "reference": "f4152d9eb85c445fe1f992001d1748e8bec070d2",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
+                "reference": "d281ed313b989f213357e3be1a179f02196ac99b",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
-                "guzzlehttp/psr7": "^1.9.1 || ^2.6.3",
+                "guzzlehttp/psr7": "^2.7.0",
                 "php": "^7.2.5 || ^8.0",
                 "psr/http-client": "^1.0",
                 "symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -114,7 +114,7 @@
             ],
             "support": {
                 "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/7.8.2"
+                "source": "https://github.com/guzzle/guzzle/tree/7.9.2"
             },
             "funding": [
                 {
@@ -130,20 +130,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-18T11:12:18+00:00"
+            "time": "2024-07-24T11:22:20+00:00"
         },
         {
             "name": "guzzlehttp/promises",
-            "version": "2.0.3",
+            "version": "2.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/promises.git",
-                "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8"
+                "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8",
-                "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
+                "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
                 "shasum": ""
             },
             "require": {
@@ -197,7 +197,7 @@
             ],
             "support": {
                 "issues": "https://github.com/guzzle/promises/issues",
-                "source": "https://github.com/guzzle/promises/tree/2.0.3"
+                "source": "https://github.com/guzzle/promises/tree/2.0.4"
             },
             "funding": [
                 {
@@ -213,42 +213,48 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-07-18T10:29:17+00:00"
+            "time": "2024-10-17T10:06:22+00:00"
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.9.1",
+            "version": "2.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b"
+                "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b",
-                "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
+                "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.4.0",
-                "psr/http-message": "~1.0",
-                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-factory": "^1.0",
+                "psr/http-message": "^1.1 || ^2.0",
+                "ralouphie/getallheaders": "^3.0"
             },
             "provide": {
+                "psr/http-factory-implementation": "1.0",
                 "psr/http-message-implementation": "1.0"
             },
             "require-dev": {
-                "ext-zlib": "*",
-                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "http-interop/http-factory-tests": "0.9.0",
+                "phpunit/phpunit": "^8.5.39 || ^9.6.20"
             },
             "suggest": {
                 "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
             },
             "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
                     "GuzzleHttp\\Psr7\\": "src/"
                 }
@@ -287,6 +293,11 @@
                     "name": "Tobias Schultze",
                     "email": "webmaster@tubo-world.de",
                     "homepage": "https://github.com/Tobion"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://sagikazarmark.hu"
                 }
             ],
             "description": "PSR-7 message implementation that also provides common utility methods",
@@ -302,7 +313,7 @@
             ],
             "support": {
                 "issues": "https://github.com/guzzle/psr7/issues",
-                "source": "https://github.com/guzzle/psr7/tree/1.9.1"
+                "source": "https://github.com/guzzle/psr7/tree/2.7.0"
             },
             "funding": [
                 {
@@ -318,7 +329,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-04-17T16:00:37+00:00"
+            "time": "2024-07-18T11:15:46+00:00"
         },
         {
             "name": "league/flysystem",
@@ -408,16 +419,16 @@
         },
         {
             "name": "league/mime-type-detection",
-            "version": "1.15.0",
+            "version": "1.16.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/thephpleague/mime-type-detection.git",
-                "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
+                "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
-                "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+                "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
+                "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
                 "shasum": ""
             },
             "require": {
@@ -448,7 +459,7 @@
             "description": "Mime-type detection for Flysystem",
             "support": {
                 "issues": "https://github.com/thephpleague/mime-type-detection/issues",
-                "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+                "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
             },
             "funding": [
                 {
@@ -460,7 +471,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-28T23:22:08+00:00"
+            "time": "2024-09-21T08:32:55+00:00"
         },
         {
             "name": "nette/mail",
@@ -722,6 +733,61 @@
             },
             "time": "2023-09-23T14:17:50+00:00"
         },
+        {
+            "name": "psr/http-factory",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-factory.git",
+                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+            "keywords": [
+                "factory",
+                "http",
+                "message",
+                "psr",
+                "psr-17",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-factory"
+            },
+            "time": "2024-04-15T12:06:14+00:00"
+        },
         {
             "name": "psr/http-message",
             "version": "1.1",
@@ -1100,16 +1166,16 @@
         },
         {
             "name": "topthink/think-helper",
-            "version": "v3.1.8",
+            "version": "v3.1.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/top-think/think-helper.git",
-                "reference": "612eea76eec2a22f41b0e24be27f49454e4fd5f5"
+                "reference": "d554a0a62e4c7034abc7343ee866005c3f399ae2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/top-think/think-helper/zipball/612eea76eec2a22f41b0e24be27f49454e4fd5f5",
-                "reference": "612eea76eec2a22f41b0e24be27f49454e4fd5f5",
+                "url": "https://api.github.com/repos/top-think/think-helper/zipball/d554a0a62e4c7034abc7343ee866005c3f399ae2",
+                "reference": "d554a0a62e4c7034abc7343ee866005c3f399ae2",
                 "shasum": ""
             },
             "require": {
@@ -1140,22 +1206,22 @@
             "description": "The ThinkPHP6 Helper Package",
             "support": {
                 "issues": "https://github.com/top-think/think-helper/issues",
-                "source": "https://github.com/top-think/think-helper/tree/v3.1.8"
+                "source": "https://github.com/top-think/think-helper/tree/v3.1.9"
             },
-            "time": "2024-08-26T15:07:58+00:00"
+            "time": "2024-10-15T02:24:05+00:00"
         },
         {
             "name": "topthink/think-orm",
-            "version": "v2.0.61",
+            "version": "v2.0.62",
             "source": {
                 "type": "git",
                 "url": "https://github.com/top-think/think-orm.git",
-                "reference": "10528ebf4a5106b19c3bac9c6deae7a67ff49de6"
+                "reference": "e53bfea572a133039ad687077120de5521af617f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/top-think/think-orm/zipball/10528ebf4a5106b19c3bac9c6deae7a67ff49de6",
-                "reference": "10528ebf4a5106b19c3bac9c6deae7a67ff49de6",
+                "url": "https://api.github.com/repos/top-think/think-orm/zipball/e53bfea572a133039ad687077120de5521af617f",
+                "reference": "e53bfea572a133039ad687077120de5521af617f",
                 "shasum": ""
             },
             "require": {
@@ -1195,9 +1261,9 @@
             ],
             "support": {
                 "issues": "https://github.com/top-think/think-orm/issues",
-                "source": "https://github.com/top-think/think-orm/tree/v2.0.61"
+                "source": "https://github.com/top-think/think-orm/tree/v2.0.62"
             },
-            "time": "2023-04-20T14:27:51+00:00"
+            "time": "2024-09-22T06:17:47+00:00"
         },
         {
             "name": "topthink/think-template",

+ 2 - 2
config/app.php

@@ -21,11 +21,11 @@ return [
     // 禁止URL访问的应用列表(自动多应用模式有效)
     'deny_app_list' => [],
     // 异常页面的模板文件
-    'exception_tmpl' => env("app_debug", false) ? app()->getThinkPath() . 'tpl/think_exception.tpl' : config_path() . '500.html',
+    'exception_tmpl' => env("app_debug", true) ? app()->getThinkPath() . 'tpl/think_exception.tpl' : config_path() . '500.html',
     // 错误显示信息,非调试模式有效
     'error_message' => '页面错误!请稍后再试~',
     // 显示错误信息
-    'show_error_msg' => env("app_debug", false),
+    'show_error_msg' => env("app_debug", true),
     'http_exception_template' => [
         404 => public_path() . '404.html',
         401 => \think\facade\App::getAppPath() . '401.html',

+ 0 - 1
config/database.php

@@ -4,7 +4,6 @@
  * @Date: 2022-09-26 17:52:37
  * @LastEditTime: 2022-09-26 18:16:31
  */
-
 return [
     // 默认使用的数据库连接配置
     'default'         => env('database.driver', 'mysql'),

+ 2 - 2
docker-compose.yaml

@@ -2,9 +2,9 @@ version: '3'
 services:
   mTab:
     image: itushan/php74:1.3
-    container_name: mTabServer
+    container_name: mTabServers
     ports:
-      - "3300:80"
+      - "3321:80"
     volumes:
       - ./:/app
     environment:

+ 52 - 12
extend/Mail.php

@@ -9,10 +9,10 @@ class Mail
     public static function send($to = "", $text = ""): bool
     {
         $mail = new Message;
-        $send_mail = SettingModel::Config('smtp_email',false);
+        $send_mail = SettingModel::Config('smtp_email', false);
         $option = [
             'port' => SettingModel::Config('smtp_port'),
-            'host' => SettingModel::Config('smtp_host',false),
+            'host' => SettingModel::Config('smtp_host', false),
             'username' => SettingModel::Config('smtp_email'),
             'password' => SettingModel::Config('smtp_password'),
         ];
@@ -23,12 +23,32 @@ class Mail
             ->addTo($to)
             ->setSubject(SettingModel::Config('title', '') . '动态令牌')
             ->setHtmlBody($text);
-        if ((int)$option['port'] === 465) {
-            $option['secure'] = 'ssl';
+        $ssl = (int)SettingModel::Config('smtp_ssl', '0');
+        if (in_array($ssl, [1, 2, 3])) {
+            if ($ssl === 2) {
+                $option['secure'] = 'ssl';
+            }
+            if ($ssl === 3) {
+                $option['secure'] = 'tls';
+            }
+        } else {
+            if ((int)$option['port'] === 465) {
+                $option['secure'] = 'ssl';
+            }
+            if ((int)$option['port'] === 587) {
+                $option['secure'] = 'tls';
+            }
+        }
+        try {
+            $mailer = new SmtpMailer($option);
+            $mailer->send($mail);
+            return true;
+        } catch (\Exception $e) {
+            if ($e->getMessage() === 'Connection has been closed unexpectedly.') {
+                return true;
+            }
+            throw new \Exception($e->getMessage());
         }
-        $mailer = new SmtpMailer($option);
-        $mailer->send($mail);
-        return true;
     }
 
     public static function testMail($to, $config): bool
@@ -45,11 +65,31 @@ class Mail
             'username' => $config['smtp_email'],
             'password' => $config['smtp_password'],
         ];
-        if ((int)$option['port'] === 465) {
-            $option['secure'] = 'ssl';
+        $ssl = (int)($config['smtp_ssl'] ?? '0');
+        if (in_array($ssl, [1, 2, 3])) {
+            if ($ssl === 2) {
+                $option['secure'] = 'ssl';
+            }
+            if ($ssl === 3) {
+                $option['secure'] = 'tls';
+            }
+        } else {
+            if ((int)$option['port'] === 465) {
+                $option['secure'] = 'ssl';
+            }
+            if ((int)$option['port'] === 587) {
+                $option['secure'] = 'tls';
+            }
+        }
+        try {
+            $mailer = new SmtpMailer($option);
+            $mailer->send($mail);
+            return true;
+        } catch (\Exception $e) {
+            if ($e->getMessage() === 'Connection has been closed unexpectedly.') {
+                return true;
+            }
+            throw new \Exception($e->getMessage());
         }
-        $mailer = new SmtpMailer($option);
-        $mailer->send($mail);
-        return true;
     }
 }

+ 59 - 20
extend/Upgrade2.php

@@ -4,14 +4,14 @@ ini_set('memory_limit', '500M');
 
 class Upgrade2
 {
-    protected string $archiveFile = "";//升级文件地址
-    protected string $extractPath = "";//解压目录地址
-    protected string $root_path = "";//程序根目录
-    public string $update_download_url = "";//升级zip文件下载地址
-    public string $update_sql_url = "";//升级sql脚本文件地址
-    public string $update_script = "";//升级后执行的脚本地址
+    protected string $archiveFile = ""; //升级文件地址
+    protected string $extractPath = ""; //解压目录地址
+    protected string $root_path = ""; //程序根目录
+    public string $update_download_url = ""; //升级zip文件下载地址
+    public string $update_sql_url = ""; //升级sql脚本文件地址
+    public string $update_script = ""; //升级后执行的脚本地址
     protected bool $isLog = false;
-
+    protected array $noMove = [];
     //构造方法初始化一些数据
     function __construct($update_download_url = null, $update_sql_url = null, $update_script = null)
     {
@@ -68,8 +68,21 @@ class Upgrade2
                 abort(0, '升级资源包解压失败');
             }
             $this->log("正在更新程序...");
-            $this->deleteDirectory(public_path() . 'dist/');//删除旧的网站文件
+            $this->deleteDirectory(public_path() . 'dist/'); //删除旧的网站文件
+            $exclude = root_path() . 'exclude.txt';
+            if (file_exists($exclude)) {
+                try {
+                    $noMove = array_map('trim', file($exclude, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
+                    //逐行读取,并且去除前后多余空格
+                    foreach ($noMove as $item) {
+                        $this->noMove[] = joinPath(root_path(), $item);
+                    }
+                } catch (\Throwable $th) {
+                    $this->log($th->getMessage());
+                }
+            }
             //拷贝覆盖
+            $this->log("正在覆盖源文件");
             $this->copy();
             //删除下载的更新包
             $this->log("正在删除升级包...");
@@ -85,7 +98,9 @@ class Upgrade2
             $this->log("正在更新数据库...");
             $this->updateSql("{$this->root_path}install.sql");
         }
-        //退出
+        if (!file_exists(root_path() . "exclude.txt")) {
+            file_put_contents(root_path() . "exclude.txt", '#从程序根目录开始填写您的更新忽略的文件地址,每行一个,例如/exclude.txt');
+        }
         return true;
     }
 
@@ -126,7 +141,6 @@ class Upgrade2
             $bar = str_repeat('=', $completed) . str_repeat(' ', max($barLength - $completed, 0)); // 拼接进度条
             echo "\r[" . $bar . "] " . $progress . "%";
         } catch (Exception $e) {
-
         }
     }
 
@@ -148,14 +162,35 @@ class Upgrade2
     //解压
     private function unzip($archiveFile, $extractPath): bool
     {
-        $zip = new ZipArchive();
-        if ($zip->open($archiveFile) === TRUE) {
-            $zip->extractTo($extractPath, null);
-            $zip->close();
+        //        如果没有ZipArchive类则尝试使用shell_exec,调用自带的解压程序解压
+        if (class_exists("ZipArchive")) {
+            $zip = new ZipArchive();
+            if ($zip->open($archiveFile) === TRUE) {
+                $zip->extractTo($extractPath, null);
+                $zip->close();
+            } else {
+                return false;
+            }
+            return true;
+        }
+        $cmd = root_path('extend') . "unzip -f {$archiveFile} -d {$extractPath}";
+        if (function_exists("shell_exec")) {
+            $status = shell_exec($cmd);
+            if ($status === '解压成功!') {
+                return true;
+            }
         } else {
-            return false;
+            $this->log("shell_exec函数被禁用,无法执行解压命令,即将尝试exec");
         }
-        return true;
+        if (function_exists('exec')) {
+            $status = exec($cmd);
+            if ($status === '解压成功!') {
+                return true;
+            }
+        } else {
+            $this->log('exec函数被禁用,无法执行解压命令,请手动解压覆盖更新');
+        }
+        return false;
     }
 
     //升级的数据库
@@ -212,11 +247,16 @@ class Upgrade2
         $files = scandir($source);
         foreach ($files as $file) {
             if ($file !== '.' && $file !== '..') {
-                $src = $source . '/' . $file;
-                $dst = $dest . '/' . $file;
+                $src = joinPath($source, '/' . $file);
+                $dst =  joinPath($dest, '/' . $file);
+                // 检查目标路径是否在 noMove 中,并且是文件
                 if (is_dir($src)) {
                     $this->copyDir($src, $dst);
                 } else {
+                    if (in_array($dst, $this->noMove)) {
+                        $this->log('跳过=>' . $dst);
+                        continue; // 跳过复制
+                    }
                     copy($src, $dst);
                 }
             }
@@ -231,5 +271,4 @@ class Upgrade2
         //删除解压目录
         $this->deleteDirectory("{$this->extractPath}mtab");
     }
-
-}
+}

+ 13 - 0
install.sql

@@ -250,9 +250,14 @@ alter table note
 alter table note
     add weight int default 0 null;
 
+
+alter table note
+    add sort int default 0 null;
+
 create index note_user_id_index
     on note (user_id);
 
+
 #创建search_engine数据表
 
 create table if not exists search_engine
@@ -559,4 +564,12 @@ ON DUPLICATE KEY UPDATE name = VALUES(name), version = VALUES(version), tips = V
 
 INSERT INTO card (name, name_en, version, tips, src, url, `window`)
 VALUES ('待办事项', 'todo', 8, '快捷添加待办事项', '/plugins/todo/static/ico.png', '/plugins/todo/card', '/plugins/todo/window')
+ON DUPLICATE KEY UPDATE name = VALUES(name), version = VALUES(version), tips = VALUES(tips), src = VALUES(src), url = VALUES(url), `window` = VALUES(`window`);
+
+INSERT INTO card (name, name_en, version, tips, src, url, `window`)
+VALUES ('倒计时', 'countdown', 8, '个性化自定义事件的倒计时组件', '/plugins/countdown/static/ico.png', '/plugins/countdown/card', '/plugins/countdown/window')
+ON DUPLICATE KEY UPDATE name = VALUES(name), version = VALUES(version), tips = VALUES(tips), src = VALUES(src), url = VALUES(url), `window` = VALUES(`window`);
+
+INSERT INTO card (name, name_en, version, tips, src, url, `window`)
+VALUES ('纪念日', 'commemorate', 8, '个性化自定义事件的纪念日组件', '/plugins/commemorate/static/ico.png', '/plugins/commemorate/card', '/plugins/commemorate/window')
 ON DUPLICATE KEY UPDATE name = VALUES(name), version = VALUES(version), tips = VALUES(tips), src = VALUES(src), url = VALUES(url), `window` = VALUES(`window`);

BIN
public/.DS_Store


+ 0 - 1
public/dist/assets/add.c36dce54.1728219882564.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M25 40H7C5.34315 40 4 38.6569 4 37V11C4 9.34315 5.34315 8 7 8H41C42.6569 8 44 9.34315 44 11V24.9412" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M4 11C4 9.34315 5.34315 8 7 8H41C42.6569 8 44 9.34315 44 11V20H4V11Z" fill="none" stroke="#000" stroke-width="3"/><path d="M32 35H44" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M38 29V41" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 10 14)" fill="#000"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 16 14)" fill="#000"/></svg>

+ 0 - 1
public/dist/assets/add.c36dce54.1728957723508.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M25 40H7C5.34315 40 4 38.6569 4 37V11C4 9.34315 5.34315 8 7 8H41C42.6569 8 44 9.34315 44 11V24.9412" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M4 11C4 9.34315 5.34315 8 7 8H41C42.6569 8 44 9.34315 44 11V20H4V11Z" fill="none" stroke="#000" stroke-width="3"/><path d="M32 35H44" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M38 29V41" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 10 14)" fill="#000"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 16 14)" fill="#000"/></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/addCard.29953edc.1728219882564.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/addCard.4102e9ca.1728957723508.js


+ 0 - 1
public/dist/assets/addCard.930091b5.1728219882564.css

@@ -1 +0,0 @@
-.addCardBox[data-v-3713e690]{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(auto-fill,1fr);gap:15px}@media (max-width: 768px){.addCardBox[data-v-3713e690]{grid-template-columns:1fr}}.addCardBox>.cardItem[data-v-3713e690]{width:100%;height:100%;padding:15px;border-radius:10px;background-color:#dedee04d}.addCardBox>.cardItem>iframe[data-v-3713e690]{border-radius:12px;border:none;outline:none;width:100%;margin:auto;max-width:330px;height:150px}.addCardWindow[data-v-3713e690]{position:relative;width:100%;height:100%;overflow-y:scroll;padding-bottom:15px}.addCardWindow[data-v-3713e690]::-webkit-scrollbar{display:none}

+ 0 - 1
public/dist/assets/addCard.fea5b983.1728957723508.css

@@ -1 +0,0 @@
-.addCardBox[data-v-34e4a216]{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(auto-fill,1fr);gap:15px}@media (max-width: 768px){.addCardBox[data-v-34e4a216]{grid-template-columns:1fr}}.addCardBox>.cardItem[data-v-34e4a216]{width:100%;height:100%;padding:15px;border-radius:10px;background-color:#dedee04d}.addCardBox>.cardItem>iframe[data-v-34e4a216]{border-radius:12px;border:none;outline:none;width:100%;margin:auto;max-width:330px;height:150px}.addCardWindow[data-v-34e4a216]{position:relative;width:100%;height:100%;overflow-y:scroll;padding-bottom:15px}.addCardWindow[data-v-34e4a216]::-webkit-scrollbar{display:none}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/app.26a8dba7.1728219882564.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/app.45abeddc.1728957723508.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/app.5951bbb3.1728957723508.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/app.b2f7eddc.1728219882564.js


+ 0 - 1
public/dist/assets/appSetting.3da2873a.1728219882564.js

@@ -1 +0,0 @@
-import{aO as a,ao as s,b as t,h as e,a6 as o,k as n}from"./index.e57f2c47.1728219882564.js";import{a as r}from"./app.b2f7eddc.1728219882564.js";import"./sortable.esm.3c354c6c.1728219882564.js";import"./index.21f8c2f4.1728219882564.js";import"./wangEditor.e74748c5.1728219882564.js";const c={__name:"appSetting",setup(c){const p=a(),i=s(),{name:m=""}=i.params;r[m]&&Object.hasOwn(r[m],"setting")||p.back();const f=r[m];return(a,s)=>(t(),e(o(n(f).setting)))}};export{c as default};

+ 0 - 1
public/dist/assets/appSetting.c9135664.1728957723508.js

@@ -1 +0,0 @@
-import{aO as a,ao as s,b as t,h as e,a6 as o,k as b}from"./index.2b069cd0.1728957723508.js";import{a as n}from"./app.5951bbb3.1728957723508.js";import"./sortable.esm.be6d7286.1728957723508.js";import"./index.be48ffa7.1728957723508.js";import"./wangEditor.78bb1bc8.1728957723508.js";const r={__name:"appSetting",setup(r){const p=a(),i=s(),{name:m=""}=i.params;n[m]&&Object.hasOwn(n[m],"setting")||p.back();const c=n[m];return(a,s)=>(t(),e(o(b(c).setting)))}};export{r as default};

+ 0 - 1
public/dist/assets/apps.1b96d9dd.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1709550431098" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9318" width="128" height="128"><path d="M882.521 282.988l-354.987-204.861c-8.98-5.219-20.146-5.219-29.127 0l-354.987 204.861c-8.98 5.219-14.563 14.806-14.563 25.244v409.842c0 10.437 5.583 20.025 14.563 25.244l354.987 204.982c4.491 2.548 9.588 3.884 14.563 3.884s10.073-1.334 14.563-3.884l354.987-204.982c8.98-5.219 14.563-14.806 14.563-25.244v-409.842c0-10.437-5.583-20.025-14.563-25.244zM838.83 701.326l-325.859 188.112-325.859-188.112v-376.225l325.859-188.112 325.859 188.112v376.225z" fill="#ffffff" p-id="9319" stroke-width="3"></path><path d="M270.124 383.476c-8.010 13.957-3.277 31.797 10.681 39.807l202.676 116.994v231.439c0 16.142 12.986 29.127 29.127 29.127s29.127-12.986 29.127-29.127v-231.075l203.404-117.479c13.957-8.010 18.69-25.851 10.681-39.807s-25.851-18.69-39.807-10.681l-203.040 117.236-203.040-117.236c-13.957-8.010-31.676-3.155-39.807 10.801z" fill="#ffffff" p-id="9320" stroke-width="3"></path></svg>

+ 0 - 1
public/dist/assets/apps.1b96d9dd.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1709550431098" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9318" width="128" height="128"><path d="M882.521 282.988l-354.987-204.861c-8.98-5.219-20.146-5.219-29.127 0l-354.987 204.861c-8.98 5.219-14.563 14.806-14.563 25.244v409.842c0 10.437 5.583 20.025 14.563 25.244l354.987 204.982c4.491 2.548 9.588 3.884 14.563 3.884s10.073-1.334 14.563-3.884l354.987-204.982c8.98-5.219 14.563-14.806 14.563-25.244v-409.842c0-10.437-5.583-20.025-14.563-25.244zM838.83 701.326l-325.859 188.112-325.859-188.112v-376.225l325.859-188.112 325.859 188.112v376.225z" fill="#ffffff" p-id="9319" stroke-width="3"></path><path d="M270.124 383.476c-8.010 13.957-3.277 31.797 10.681 39.807l202.676 116.994v231.439c0 16.142 12.986 29.127 29.127 29.127s29.127-12.986 29.127-29.127v-231.075l203.404-117.479c13.957-8.010 18.69-25.851 10.681-39.807s-25.851-18.69-39.807-10.681l-203.040 117.236-203.040-117.236c-13.957-8.010-31.676-3.155-39.807 10.801z" fill="#ffffff" p-id="9320" stroke-width="3"></path></svg>

+ 0 - 1
public/dist/assets/arc.2af709d0.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1704989608955" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2460" width="128" height="128"><path d="M512 512m-442.7 0a442.7 442.7 0 1 0 885.4 0 442.7 442.7 0 1 0-885.4 0Z" fill="#9BBFFD" p-id="2461"></path><path d="M512 512m-263 0a263 263 0 1 0 526 0 263 263 0 1 0-526 0Z" fill="#377FFC" p-id="2462"></path></svg>

+ 0 - 1
public/dist/assets/arc.2af709d0.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1704989608955" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2460" width="128" height="128"><path d="M512 512m-442.7 0a442.7 442.7 0 1 0 885.4 0 442.7 442.7 0 1 0-885.4 0Z" fill="#9BBFFD" p-id="2461"></path><path d="M512 512m-263 0a263 263 0 1 0 526 0 263 263 0 1 0-526 0Z" fill="#377FFC" p-id="2462"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/auth.5b551228.1728219882564.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/auth.5b551228.1728957723508.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/background.a9ea02ab.1728219882564.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/background.e8327b91.1728957723508.js


+ 0 - 1
public/dist/assets/background.vue_vue_type_style_index_0_lang.43deb346.1728219882564.css

@@ -1 +0,0 @@
-#backgroundManager{position:relative;height:calc(100vh - 30px)}.leftScrollBackground::-webkit-scrollbar{display:none!important}.leftScrollBackground::-webkit-scrollbar-thumb{display:none!important}

+ 0 - 1
public/dist/assets/background.vue_vue_type_style_index_0_lang.43deb346.1728957723508.css

@@ -1 +0,0 @@
-#backgroundManager{position:relative;height:calc(100vh - 30px)}.leftScrollBackground::-webkit-scrollbar{display:none!important}.leftScrollBackground::-webkit-scrollbar-thumb{display:none!important}

BIN
public/dist/assets/bg.28211af3.1728219882564.png


BIN
public/dist/assets/bg.28211af3.1728957723508.png


BIN
public/dist/assets/bg.6196bbf8.1728219882564.png


BIN
public/dist/assets/bg.6196bbf8.1728957723508.png


File diff suppressed because it is too large
+ 0 - 16
public/dist/assets/bg.8554a3fc.1728219882564.svg


File diff suppressed because it is too large
+ 0 - 16
public/dist/assets/bg.8554a3fc.1728957723508.svg


+ 0 - 1
public/dist/assets/bg2.0b9e8efc.1728219882564.svg

@@ -1 +0,0 @@
-<svg data-v-772cd5af="" width="700px" height="226px" viewBox="0 0 700 226" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="app-bg" style="width: 100%; height: auto;"><title>画板</title><g id="画板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M1310.09105,191.626557 C1496.65509,191.626557 1770.14929,157.346326 1920,106.258614 L1920,226.585567 C1920,226.585567 57.7507064,226.769694 1.29607535,226.778064 L0,226.778064 C0.301412873,150.421181 0.452119309,112.242739 0.452119309,112.242739 C402.829314,254.28206 430.581953,106.258614 671.986104,106.258614 C913.390256,106.258614 1123.52701,191.626557 1310.09105,191.626557 Z" id="路径-1" fill-opacity="0.6" fill="#5d97c5"></path><path d="M0.0139194415,226.56425 C0.0139194415,207.632936 0.00602482649,190.017506 -0.00976440346,173.717958 C-0.00976440346,173.717958 64.0945019,127.498953 182.10043,132.182456 C300.106358,136.865959 566.945531,199.128662 690.656287,199.128662 C926.193135,199.128662 1181.88325,106.258614 1429.28183,106.258614 C1676.68041,106.258614 1762.21292,199.128662 1920,132.182456 C1920,132.182456 1920,163.707219 1920,226.756746 L1918.70393,226.756746 C1862.24971,226.748377 0.0139194415,226.56425 0.0139194415,226.56425 Z" id="路径-1" fill-opacity="0.6" fill="#5d97c5"></path><path d="M1463.25587,166.368856 C1551.98939,166.368856 1579.00033,142.163535 1682.98644,125.993122 C1786.97255,109.822709 1903.42761,144.008202 1920,142.125085 L1920,226.246611 C1920,226.246611 57.7382953,226.430738 1.31380552,226.439107 L0,226.439107 C0.875870348,212.023153 1.31380552,204.815176 1.31380552,204.815176 C1.31380552,204.815176 171.201223,92.2827368 319.815615,99.6364213 C498.755382,108.490655 535.30872,172.276704 680.584032,172.276704 C825.859343,172.276704 892.163947,69.0953634 1074.42656,72.7600803 C1256.68917,76.4247971 1374.52235,166.368856 1463.25587,166.368856 Z" id="路径-1" fill-opacity="0.3" fill="#5d97c5"></path></g></svg>

+ 0 - 1
public/dist/assets/bg2.0b9e8efc.1728957723508.svg

@@ -1 +0,0 @@
-<svg data-v-772cd5af="" width="700px" height="226px" viewBox="0 0 700 226" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="app-bg" style="width: 100%; height: auto;"><title>画板</title><g id="画板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M1310.09105,191.626557 C1496.65509,191.626557 1770.14929,157.346326 1920,106.258614 L1920,226.585567 C1920,226.585567 57.7507064,226.769694 1.29607535,226.778064 L0,226.778064 C0.301412873,150.421181 0.452119309,112.242739 0.452119309,112.242739 C402.829314,254.28206 430.581953,106.258614 671.986104,106.258614 C913.390256,106.258614 1123.52701,191.626557 1310.09105,191.626557 Z" id="路径-1" fill-opacity="0.6" fill="#5d97c5"></path><path d="M0.0139194415,226.56425 C0.0139194415,207.632936 0.00602482649,190.017506 -0.00976440346,173.717958 C-0.00976440346,173.717958 64.0945019,127.498953 182.10043,132.182456 C300.106358,136.865959 566.945531,199.128662 690.656287,199.128662 C926.193135,199.128662 1181.88325,106.258614 1429.28183,106.258614 C1676.68041,106.258614 1762.21292,199.128662 1920,132.182456 C1920,132.182456 1920,163.707219 1920,226.756746 L1918.70393,226.756746 C1862.24971,226.748377 0.0139194415,226.56425 0.0139194415,226.56425 Z" id="路径-1" fill-opacity="0.6" fill="#5d97c5"></path><path d="M1463.25587,166.368856 C1551.98939,166.368856 1579.00033,142.163535 1682.98644,125.993122 C1786.97255,109.822709 1903.42761,144.008202 1920,142.125085 L1920,226.246611 C1920,226.246611 57.7382953,226.430738 1.31380552,226.439107 L0,226.439107 C0.875870348,212.023153 1.31380552,204.815176 1.31380552,204.815176 C1.31380552,204.815176 171.201223,92.2827368 319.815615,99.6364213 C498.755382,108.490655 535.30872,172.276704 680.584032,172.276704 C825.859343,172.276704 892.163947,69.0953634 1074.42656,72.7600803 C1256.68917,76.4247971 1374.52235,166.368856 1463.25587,166.368856 Z" id="路径-1" fill-opacity="0.3" fill="#5d97c5"></path></g></svg>

+ 0 - 5
public/dist/assets/browserExt.a12d7a87.1728219882564.svg

@@ -1,5 +0,0 @@
-<svg t="1713619632797" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2518"
-     width="128" height="128">
-    <path d="M452.266667 0a131.982222 131.982222 0 0 1 124.302222 175.900444h183.296a87.836444 87.836444 0 0 1 87.836444 87.836445v183.352889a131.982222 131.982222 0 1 1 0 248.604444v183.352889A87.836444 87.836444 0 0 1 759.864889 967.111111H576.853333a131.982222 131.982222 0 1 0-248.775111 0H144.725333A87.836444 87.836444 0 0 1 56.888889 879.047111v-182.499555a131.697778 131.697778 0 1 0 0-248.604445V264.590222a87.836444 87.836444 0 0 1 87.836444-87.836444h183.296A131.811556 131.811556 0 0 1 452.494222 1.080889L452.323556 0z"
-          fill="#707070" p-id="2519"></path>
-</svg>

+ 0 - 5
public/dist/assets/browserExt.a12d7a87.1728957723508.svg

@@ -1,5 +0,0 @@
-<svg t="1713619632797" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2518"
-     width="128" height="128">
-    <path d="M452.266667 0a131.982222 131.982222 0 0 1 124.302222 175.900444h183.296a87.836444 87.836444 0 0 1 87.836444 87.836445v183.352889a131.982222 131.982222 0 1 1 0 248.604444v183.352889A87.836444 87.836444 0 0 1 759.864889 967.111111H576.853333a131.982222 131.982222 0 1 0-248.775111 0H144.725333A87.836444 87.836444 0 0 1 56.888889 879.047111v-182.499555a131.697778 131.697778 0 1 0 0-248.604445V264.590222a87.836444 87.836444 0 0 1 87.836444-87.836444h183.296A131.811556 131.811556 0 0 1 452.494222 1.080889L452.323556 0z"
-          fill="#707070" p-id="2519"></path>
-</svg>

+ 0 - 1
public/dist/assets/class.0f9411b7.1728219882564.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="6" y="28" width="36" height="14" rx="4" stroke="#000" stroke-width="3"/><path d="M20 7H10C7.79086 7 6 8.79086 6 11V17C6 19.2091 7.79086 21 10 21H20" stroke="#000" stroke-width="3" stroke-linecap="round"/><circle cx="34" cy="14" r="8" fill="none" stroke="#000" stroke-width="3"/><circle cx="34" cy="14" r="3" fill="#000"/></svg>

+ 0 - 1
public/dist/assets/class.0f9411b7.1728957723508.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="6" y="28" width="36" height="14" rx="4" stroke="#000" stroke-width="3"/><path d="M20 7H10C7.79086 7 6 8.79086 6 11V17C6 19.2091 7.79086 21 10 21H20" stroke="#000" stroke-width="3" stroke-linecap="round"/><circle cx="34" cy="14" r="8" fill="none" stroke="#000" stroke-width="3"/><circle cx="34" cy="14" r="3" fill="#000"/></svg>

+ 0 - 1
public/dist/assets/close.b3c64907.1728219882564.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14 14L34 34" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 34L34 14" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 0 - 1
public/dist/assets/close.b3c64907.1728957723508.svg

@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14 14L34 34" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 34L34 14" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 0 - 1
public/dist/assets/custom.29b4c8c2.1728219882564.css

@@ -1 +0,0 @@
-.customBox{height:100%}.customBox::-webkit-scrollbar{display:none}.iconsel{position:absolute;color:#fff;width:60px;height:60px;font-size:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--iconRadius);background-color:#0000001a}.colors-picker{width:30px;height:30px;background-color:#0ff;border-radius:4px}.bgColorPicker{display:flex;gap:15px;margin-right:15px;flex-wrap:wrap}.bgColorPicker>li{border:1px solid rgba(255,255,255,.47);width:32px;height:32px;border-radius:3px;display:flex;justify-content:center;align-items:center}.bgColorPicker>li>div{width:22px;height:22px;border-radius:2px;border:1px solid #8c939d}.touming{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANJJREFUWEftlz0OAWEQhp9NREejonIHFWdwBx3ncAAH4BouoFO5AI2KSqWiYgoKmdeur/lWMpNs8052Z/Jk/rYgsxWZ41O7BKbAwKGyA1aC1ljoe8Cer/ZJYCkSWANz8SVL2rNNJBAEUghYQXWdijoAR1FsTaGfgIvjuwPXl151DoyAiQg0E3of6Dg+C/5uz0ggCNSOQOyCIBAE7BzrOfO7AbTFzN8K/fa8orw2N/0cyygI/CWBoaj2hdDttGuJi+jnLij7wUn2V13HyQHKXsyewAONol4hxQbtygAAAABJRU5ErkJggg==) no-repeat center / cover}

+ 0 - 1
public/dist/assets/custom.29b4c8c2.1728957723508.css

@@ -1 +0,0 @@
-.customBox{height:100%}.customBox::-webkit-scrollbar{display:none}.iconsel{position:absolute;color:#fff;width:60px;height:60px;font-size:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--iconRadius);background-color:#0000001a}.colors-picker{width:30px;height:30px;background-color:#0ff;border-radius:4px}.bgColorPicker{display:flex;gap:15px;margin-right:15px;flex-wrap:wrap}.bgColorPicker>li{border:1px solid rgba(255,255,255,.47);width:32px;height:32px;border-radius:3px;display:flex;justify-content:center;align-items:center}.bgColorPicker>li>div{width:22px;height:22px;border-radius:2px;border:1px solid #8c939d}.touming{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANJJREFUWEftlz0OAWEQhp9NREejonIHFWdwBx3ncAAH4BouoFO5AI2KSqWiYgoKmdeur/lWMpNs8052Z/Jk/rYgsxWZ41O7BKbAwKGyA1aC1ljoe8Cer/ZJYCkSWANz8SVL2rNNJBAEUghYQXWdijoAR1FsTaGfgIvjuwPXl151DoyAiQg0E3of6Dg+C/5uz0ggCNSOQOyCIBAE7BzrOfO7AbTFzN8K/fa8orw2N/0cyygI/CWBoaj2hdDttGuJi+jnLij7wUn2V13HyQHKXsyewAONol4hxQbtygAAAABJRU5ErkJggg==) no-repeat center / cover}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/custom.6390e41d.1728219882564.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/custom.a32ea1a8.1728957723508.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/defavatar.60e55c5e.1728219882564.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/defavatar.60e55c5e.1728957723508.svg


+ 0 - 1
public/dist/assets/defavatar.6cebf928.1728219882564.js

@@ -1 +0,0 @@
-var a="/dist/assets/defavatar.60e55c5e.1728219882564.svg";export{a as _};

+ 0 - 1
public/dist/assets/defavatar.b7fde12c.1728957723508.js

@@ -1 +0,0 @@
-var a="/dist/assets/defavatar.60e55c5e.1728957723508.svg";export{a as _};

+ 0 - 1
public/dist/assets/del.352f41d5.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1708268706476" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="32597" width="128" height="128"><path d="M92.748283 203.507071h838.503434v44.140606H92.748283zM644.402424 115.238788v44.127677h44.127677V115.238788c0-24.384646-19.75596-44.127677-43.998384-44.127677h-265.050505a43.97899 43.97899 0 0 0-31.172525 12.916364 43.918222 43.918222 0 0 0-12.825859 31.211313v44.127677h44.127677V115.238788h264.791919z m0 0" fill="#000" p-id="32598"></path><path d="M203.073939 909.614545v-661.979798H158.946263V909.575758c0 24.410505 19.639596 44.179394 44.179394 44.179394h617.761616c24.410505 0 44.179394-19.639596 44.179394-44.179394V247.634747H820.926061v661.979798H203.073939z m0 0" fill="#000" p-id="32599"></path><path d="M313.412525 335.90303h44.127677V733.090909h-44.127677V335.90303z m176.523637 0h44.127676V733.090909H489.936162V335.90303z m176.523636 0h44.127677V733.090909h-44.127677V335.90303z m0 0" fill="#000" p-id="32600"></path></svg>

+ 0 - 1
public/dist/assets/del.352f41d5.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1708268706476" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="32597" width="128" height="128"><path d="M92.748283 203.507071h838.503434v44.140606H92.748283zM644.402424 115.238788v44.127677h44.127677V115.238788c0-24.384646-19.75596-44.127677-43.998384-44.127677h-265.050505a43.97899 43.97899 0 0 0-31.172525 12.916364 43.918222 43.918222 0 0 0-12.825859 31.211313v44.127677h44.127677V115.238788h264.791919z m0 0" fill="#000" p-id="32598"></path><path d="M203.073939 909.614545v-661.979798H158.946263V909.575758c0 24.410505 19.639596 44.179394 44.179394 44.179394h617.761616c24.410505 0 44.179394-19.639596 44.179394-44.179394V247.634747H820.926061v661.979798H203.073939z m0 0" fill="#000" p-id="32599"></path><path d="M313.412525 335.90303h44.127677V733.090909h-44.127677V335.90303z m176.523637 0h44.127676V733.090909H489.936162V335.90303z m176.523636 0h44.127677V733.090909h-44.127677V335.90303z m0 0" fill="#000" p-id="32600"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/dialog.26004b99.1728219882564.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/dialog.6641baf3.1728957723508.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/dock.d373251c.1728219882564.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/dock.d373251c.1728957723508.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/edgeExt.fe0b5e1b.1728219882564.svg


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/edgeExt.fe0b5e1b.1728957723508.svg


+ 0 - 1
public/dist/assets/edit.619ba3d7.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1708268429994" class="icon" viewBox="0 0 1034 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25262" width="128" height="128"><path d="M867.727088 1023.998849h-741.646209A125.568375 125.568375 0 0 1 0.001023 898.558344v-741.64621A125.568375 125.568375 0 0 1 125.441529 30.832279h370.823104a36.31509 36.31509 0 1 1 0 72.50231h-370.823104a52.938195 52.938195 0 0 0-52.938195 52.938195v742.28556a53.066065 53.066065 0 0 0 52.938195 52.938195h742.285559A53.066065 53.066065 0 0 0 920.665283 898.558344v-370.823105a36.31509 36.31509 0 0 1 72.50231 0v370.823105a125.568375 125.568375 0 0 1-125.440505 125.440505z" p-id="25263" fill="#000"></path><path d="M294.102106 761.353795a35.80361 35.80361 0 0 1-25.574007-10.868953 36.18722 36.18722 0 0 1 0-51.148014L972.580518 10.500943a36.18722 36.18722 0 1 1 51.148014 51.787365L319.676113 750.996322a35.93148 35.93148 0 0 1-25.574007 10.357473z" p-id="25264" fill="#000"></path></svg>

+ 0 - 1
public/dist/assets/edit.619ba3d7.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1708268429994" class="icon" viewBox="0 0 1034 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25262" width="128" height="128"><path d="M867.727088 1023.998849h-741.646209A125.568375 125.568375 0 0 1 0.001023 898.558344v-741.64621A125.568375 125.568375 0 0 1 125.441529 30.832279h370.823104a36.31509 36.31509 0 1 1 0 72.50231h-370.823104a52.938195 52.938195 0 0 0-52.938195 52.938195v742.28556a53.066065 53.066065 0 0 0 52.938195 52.938195h742.285559A53.066065 53.066065 0 0 0 920.665283 898.558344v-370.823105a36.31509 36.31509 0 0 1 72.50231 0v370.823105a125.568375 125.568375 0 0 1-125.440505 125.440505z" p-id="25263" fill="#000"></path><path d="M294.102106 761.353795a35.80361 35.80361 0 0 1-25.574007-10.868953 36.18722 36.18722 0 0 1 0-51.148014L972.580518 10.500943a36.18722 36.18722 0 1 1 51.148014 51.787365L319.676113 750.996322a35.93148 35.93148 0 0 1-25.574007 10.357473z" p-id="25264" fill="#000"></path></svg>

+ 0 - 1
public/dist/assets/el-input-upload.51ad76d8.1728219882564.js

@@ -1 +0,0 @@
-import{r as e,w as a,a as l,b as t,d as s,h as u,p,l as d,i,J as o,k as r,X as c,s as n}from"./index.e57f2c47.1728219882564.js";const m={style:{width:"100%",display:"flex","align-items":"center",gap:"10px"}},h={__name:"el-input-upload",props:{placeholder:{type:String,default:"请上传文件或输入网络文件地址"},modelValue:{type:String,default:""},accept:{type:String,default:"image/*"}},emits:["update:modelValue"],setup(h,{emit:g}){const v=g,f=h,y=e(f.modelValue),V=e=>{1===e.code&&v("update:modelValue",e.data.url)},x=e=>{v("update:modelValue",e)};return a((()=>f.modelValue),(e=>{e!==y.value&&(y.value=e)})),(e,a)=>{const g=l("el-image"),v=l("el-input"),f=l("el-button"),w=l("el-upload");return t(),s("div",m,[y.value?(t(),u(g,{key:0,src:y.value,style:{width:"32px",height:"32px","border-radius":"4px","flex-shrink":"0"},"preview-src-list":[y.value]},null,8,["src","preview-src-list"])):p("",!0),d(v,{onChange:x,modelValue:y.value,"onUpdate:modelValue":a[0]||(a[0]=e=>y.value=e),placeholder:h.placeholder},null,8,["modelValue","placeholder"]),d(w,{"show-file-list":!1,accept:h.accept,action:r(c)+r(n).state.site.upload,"on-success":V},{trigger:i((()=>[d(f,{type:"primary"},{default:i((()=>a[1]||(a[1]=[o("上传文件")]))),_:1})])),_:1},8,["accept","action"])])}}};export{h as _};

+ 0 - 1
public/dist/assets/el-input-upload.97469103.1728957723508.js

@@ -1 +0,0 @@
-import{r as e,w as a,a as l,b as t,d as s,h as u,p,l as d,i,J as o,k as r,X as c,s as n}from"./index.2b069cd0.1728957723508.js";const m={style:{width:"100%",display:"flex","align-items":"center",gap:"10px"}},h={__name:"el-input-upload",props:{placeholder:{type:String,default:"请上传文件或输入网络文件地址"},modelValue:{type:String,default:""},accept:{type:String,default:"image/*"}},emits:["update:modelValue"],setup(h,{emit:g}){const v=g,y=h,V=e(y.modelValue),f=e=>{1===e.code&&v("update:modelValue",e.data.url)},x=e=>{v("update:modelValue",e)};return a((()=>y.modelValue),(e=>{e!==V.value&&(V.value=e)})),(e,a)=>{const g=l("el-image"),v=l("el-input"),y=l("el-button"),w=l("el-upload");return t(),s("div",m,[V.value?(t(),u(g,{key:0,src:V.value,style:{width:"32px",height:"32px","border-radius":"4px","flex-shrink":"0"},"preview-src-list":[V.value]},null,8,["src","preview-src-list"])):p("",!0),d(v,{onChange:x,modelValue:V.value,"onUpdate:modelValue":a[0]||(a[0]=e=>V.value=e),placeholder:h.placeholder},null,8,["modelValue","placeholder"]),d(w,{"show-file-list":!1,accept:h.accept,action:r(c)+r(n).state.site.upload,"on-success":f},{trigger:i((()=>[d(y,{type:"primary"},{default:i((()=>a[1]||(a[1]=[o("上传文件")]))),_:1})])),_:1},8,["accept","action"])])}}};export{h as _};

+ 0 - 1
public/dist/assets/enter.c6dc40d7.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1720708994450" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1536" width="32" height="32"><path d="M911.104 657.066667H112.896a34.133333 34.133333 0 0 1 0-68.266667h764.074667V192.341333a34.133333 34.133333 0 0 1 68.266666 0V622.933333a34.133333 34.133333 0 0 1-34.133333 34.133334z" p-id="1537" fill="#bfbfbf"></path><path d="M321.962667 865.792a34.133333 34.133333 0 0 1-24.149334-9.984l-208.981333-209.066667a34.133333 34.133333 0 0 1 0-48.213333l208.981333-209.066667a34.133333 34.133333 0 1 1 48.298667 48.298667L161.194667 622.933333l184.917333 184.576a34.133333 34.133333 0 0 1-24.149333 58.282667z" p-id="1538" fill="#bfbfbf"></path></svg>

+ 0 - 1
public/dist/assets/enter.c6dc40d7.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1720708994450" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1536" width="32" height="32"><path d="M911.104 657.066667H112.896a34.133333 34.133333 0 0 1 0-68.266667h764.074667V192.341333a34.133333 34.133333 0 0 1 68.266666 0V622.933333a34.133333 34.133333 0 0 1-34.133333 34.133334z" p-id="1537" fill="#bfbfbf"></path><path d="M321.962667 865.792a34.133333 34.133333 0 0 1-24.149334-9.984l-208.981333-209.066667a34.133333 34.133333 0 0 1 0-48.213333l208.981333-209.066667a34.133333 34.133333 0 1 1 48.298667 48.298667L161.194667 622.933333l184.917333 184.576a34.133333 34.133333 0 0 1-24.149333 58.282667z" p-id="1538" fill="#bfbfbf"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/ext.481cf1ec.1728219882564.js


+ 0 - 1
public/dist/assets/ext.b6f5acc2.1728957723508.css

@@ -1 +0,0 @@
-.el-card{border-radius:8px!important}.avatar-uploader .avatar{width:100px;height:100px;display:block;border-radius:12px}.avatar-uploader .el-upload{border:1px dashed var(--el-border-color);border-radius:6px;cursor:pointer;position:relative;overflow:hidden;transition:var(--el-transition-duration-fast)}.avatar-uploader .el-upload:hover{border-color:var(--el-color-primary)}.el-icon.avatar-uploader-icon{font-size:28px;color:#8c939d;width:100px;height:100px;text-align:center}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/ext.e1589697.1728957723508.js


BIN
public/dist/assets/favicon.d0d9e2c4.1728219882564.png


BIN
public/dist/assets/favicon.d0d9e2c4.1728957723508.png


+ 0 - 1
public/dist/assets/file.04a46a87.1728219882564.css

@@ -1 +0,0 @@
-.searchEngineLogo[data-v-7ec737e8]{width:40px;height:40px;border-radius:12px;border:2px solid #eeeeee;padding:5px;margin:auto}

+ 0 - 1
public/dist/assets/file.04a46a87.1728957723508.css

@@ -1 +0,0 @@
-.searchEngineLogo[data-v-7ec737e8]{width:40px;height:40px;border-radius:12px;border:2px solid #eeeeee;padding:5px;margin:auto}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/file.1631c627.1728219882564.js


+ 0 - 1
public/dist/assets/file.a6743b7c.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1713883104115" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33090" width="128" height="128"><path d="M524.6976 795.8528c0-130.048 105.472-235.3152 235.3152-235.3152 32.1536 0 62.8736 6.5536 90.9312 18.2272V301.8752L588.1856 39.1168H115.9168c-22.528 0-40.96 18.432-40.96 40.96V917.504c0 22.528 18.432 40.96 40.96 40.96h474.112c-40.3456-42.3936-65.3312-99.5328-65.3312-162.6112z m-250.6752-405.504h377.6512c22.528 0 40.96 18.432 40.96 40.96s-18.432 40.96-40.96 40.96H274.0224c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96z m173.056 312.5248h-172.8512c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96h172.8512c22.528 0 40.96 18.432 40.96 40.96s-18.432 40.96-40.96 40.96z" fill="#409EFF" p-id="33091"></path><path d="M588.1856 39.1168l262.7584 262.7584h-204.3904c-32.3584 0-58.368-26.2144-58.368-58.368V39.1168z" fill="#7BC0FF" p-id="33092"></path><path d="M760.0128 606.8224c-104.448 0-189.0304 84.5824-189.0304 189.0304s84.5824 189.0304 189.0304 189.0304 189.0304-84.5824 189.0304-189.0304-84.5824-189.0304-189.0304-189.0304z m-40.96 91.3408c0-22.528 18.432-40.96 40.96-40.96s40.96 18.432 40.96 40.96v80.4864c0 22.528-18.432 40.96-40.96 40.96s-40.96-18.432-40.96-40.96v-80.4864z m40.96 236.3392c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96 40.96 18.432 40.96 40.96-18.432 40.96-40.96 40.96z" fill="#409EFF" p-id="33093"></path></svg>

+ 0 - 1
public/dist/assets/file.a6743b7c.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1713883104115" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33090" width="128" height="128"><path d="M524.6976 795.8528c0-130.048 105.472-235.3152 235.3152-235.3152 32.1536 0 62.8736 6.5536 90.9312 18.2272V301.8752L588.1856 39.1168H115.9168c-22.528 0-40.96 18.432-40.96 40.96V917.504c0 22.528 18.432 40.96 40.96 40.96h474.112c-40.3456-42.3936-65.3312-99.5328-65.3312-162.6112z m-250.6752-405.504h377.6512c22.528 0 40.96 18.432 40.96 40.96s-18.432 40.96-40.96 40.96H274.0224c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96z m173.056 312.5248h-172.8512c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96h172.8512c22.528 0 40.96 18.432 40.96 40.96s-18.432 40.96-40.96 40.96z" fill="#409EFF" p-id="33091"></path><path d="M588.1856 39.1168l262.7584 262.7584h-204.3904c-32.3584 0-58.368-26.2144-58.368-58.368V39.1168z" fill="#7BC0FF" p-id="33092"></path><path d="M760.0128 606.8224c-104.448 0-189.0304 84.5824-189.0304 189.0304s84.5824 189.0304 189.0304 189.0304 189.0304-84.5824 189.0304-189.0304-84.5824-189.0304-189.0304-189.0304z m-40.96 91.3408c0-22.528 18.432-40.96 40.96-40.96s40.96 18.432 40.96 40.96v80.4864c0 22.528-18.432 40.96-40.96 40.96s-40.96-18.432-40.96-40.96v-80.4864z m40.96 236.3392c-22.528 0-40.96-18.432-40.96-40.96s18.432-40.96 40.96-40.96 40.96 18.432 40.96 40.96-18.432 40.96-40.96 40.96z" fill="#409EFF" p-id="33093"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/file.cc34dfd3.1728957723508.js


+ 0 - 1
public/dist/assets/folder.24bc26bf.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1715084893839" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5706" width="32" height="32"><path d="M918.673 883H104.327C82.578 883 65 867.368 65 848.027V276.973C65 257.632 82.578 242 104.327 242h814.346C940.422 242 958 257.632 958 276.973v571.054C958 867.28 940.323 883 918.673 883z" fill="#FFE9B4" p-id="5707"></path><path d="M512 411H65V210.37C65 188.597 82.598 171 104.371 171h305.92c17.4 0 32.71 11.334 37.681 28.036L512 411z" fill="#FFB02C" p-id="5708"></path><path d="M918.673 883H104.327C82.578 883 65 865.42 65 843.668V335.332C65 313.58 82.578 296 104.327 296h814.346C940.422 296 958 313.58 958 335.332v508.336C958 865.32 940.323 883 918.673 883z" fill="#FFCA28" p-id="5709"></path></svg>

+ 0 - 1
public/dist/assets/folder.24bc26bf.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1715084893839" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5706" width="32" height="32"><path d="M918.673 883H104.327C82.578 883 65 867.368 65 848.027V276.973C65 257.632 82.578 242 104.327 242h814.346C940.422 242 958 257.632 958 276.973v571.054C958 867.28 940.323 883 918.673 883z" fill="#FFE9B4" p-id="5707"></path><path d="M512 411H65V210.37C65 188.597 82.598 171 104.371 171h305.92c17.4 0 32.71 11.334 37.681 28.036L512 411z" fill="#FFB02C" p-id="5708"></path><path d="M918.673 883H104.327C82.578 883 65 865.42 65 843.668V335.332C65 313.58 82.578 296 104.327 296h814.346C940.422 296 958 313.58 958 335.332v508.336C958 865.32 940.323 883 918.673 883z" fill="#FFCA28" p-id="5709"></path></svg>

+ 0 - 1
public/dist/assets/googleExt.0daaae76.1728219882564.svg

@@ -1 +0,0 @@
-<svg t="1715243241486" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3591" width="32" height="32"><path d="M510.8672 700.330667A184.32 184.32 0 0 1 326.845867 516.266667a184.32 184.32 0 0 1 184.064-184.106667 184.32 184.32 0 0 1 184.106666 184.106667 184.32 184.32 0 0 1-184.106666 184.064z" fill="#4285F4" p-id="3592"></path><path d="M588.4352 733.056a234.965333 234.965333 0 0 1-229.546667-39.509333 234.496 234.496 0 0 1-73.301333-106.88l-0.085333-0.256L82.621867 235.093333a507.392 507.392 0 0 0-72.789334 377.173334 507.562667 507.562667 0 0 0 216.746667 325.418666 507.477333 507.477333 0 0 0 194.432 78.506667l167.424-283.093333z" fill="#4AAE48" p-id="3593"></path><path d="M971.112533 286.165333a515.413333 515.413333 0 0 0-861.226666-96l171.349333 296.789334a230.101333 230.101333 0 0 1 225.024-200.789334H971.112533z" fill="#EA3939" p-id="3594"></path><path d="M508.861867 1024c128.426667 0 251.349333-48.170667 346.026666-135.594667a509.098667 509.098667 0 0 0 162.816-336.768 514.133333 514.133333 0 0 0-31.744-219.477333h-335.189333a234.922667 234.922667 0 0 1 89.173333 185.173333 235.904 235.904 0 0 1-50.432 144.256l-213.674666 361.386667c11.008 0.682667 22.101333 1.024 33.024 1.024z" fill="#FED14B" p-id="3595"></path></svg>

+ 0 - 1
public/dist/assets/googleExt.0daaae76.1728957723508.svg

@@ -1 +0,0 @@
-<svg t="1715243241486" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3591" width="32" height="32"><path d="M510.8672 700.330667A184.32 184.32 0 0 1 326.845867 516.266667a184.32 184.32 0 0 1 184.064-184.106667 184.32 184.32 0 0 1 184.106666 184.106667 184.32 184.32 0 0 1-184.106666 184.064z" fill="#4285F4" p-id="3592"></path><path d="M588.4352 733.056a234.965333 234.965333 0 0 1-229.546667-39.509333 234.496 234.496 0 0 1-73.301333-106.88l-0.085333-0.256L82.621867 235.093333a507.392 507.392 0 0 0-72.789334 377.173334 507.562667 507.562667 0 0 0 216.746667 325.418666 507.477333 507.477333 0 0 0 194.432 78.506667l167.424-283.093333z" fill="#4AAE48" p-id="3593"></path><path d="M971.112533 286.165333a515.413333 515.413333 0 0 0-861.226666-96l171.349333 296.789334a230.101333 230.101333 0 0 1 225.024-200.789334H971.112533z" fill="#EA3939" p-id="3594"></path><path d="M508.861867 1024c128.426667 0 251.349333-48.170667 346.026666-135.594667a509.098667 509.098667 0 0 0 162.816-336.768 514.133333 514.133333 0 0 0-31.744-219.477333h-335.189333a234.922667 234.922667 0 0 1 89.173333 185.173333 235.904 235.904 0 0 1-50.432 144.256l-213.674666 361.386667c11.008 0.682667 22.101333 1.024 33.024 1.024z" fill="#FED14B" p-id="3595"></path></svg>

BIN
public/dist/assets/ico.84a6321a.1728219882564.png


BIN
public/dist/assets/ico.84a6321a.1728957723508.png


Some files were not shown because too many files changed in this diff