Browse Source

改动程序大量UI,完善卡片组件

tushan 1 year ago
parent
commit
ec267939bd
100 changed files with 730 additions and 37 deletions
  1. 2 0
      README.md
  2. 0 1
      app/AppService.php
  3. 50 0
      app/PluginsBase.php
  4. 0 3
      app/Request.php
  5. 28 3
      app/common.php
  6. 2 1
      app/controller/Admin.php
  7. 7 1
      app/controller/Api.php
  8. 29 0
      app/controller/Card.php
  9. 5 1
      app/controller/LinkStore.php
  10. 3 3
      app/controller/Setting.php
  11. 157 3
      app/controller/admin/Index.php
  12. 44 0
      app/model/CardModel.php
  13. 5 2
      app/model/SettingModel.php
  14. 36 0
      app/view/cardNotFound.html
  15. 1 1
      auto_install.json
  16. 2 1
      composer.json
  17. 8 6
      config/500.html
  18. 1 1
      config/trace.php
  19. 3 3
      docker/install.sh
  20. 3 4
      docker/start.sh
  21. 0 1
      extend/Mail.php
  22. 48 0
      extend/PluginStaticSystem.php
  23. 173 0
      extend/PluginsInstall.php
  24. 1 1
      extend/Upgrade2.php
  25. 19 0
      install.sql
  26. 1 0
      public/dist/assets/360.1705154127287.svg
  27. 1 0
      public/dist/assets/about.1705154127287.css
  28. 1 0
      public/dist/assets/about.1705154127287.js
  29. 1 0
      public/dist/assets/add.1705154127287.svg
  30. 1 0
      public/dist/assets/addCard.1705154127287.css
  31. 1 0
      public/dist/assets/addCard.1705154127287.js
  32. 1 0
      public/dist/assets/addicon.1705154127287.css
  33. 1 0
      public/dist/assets/addicon.1705154127287.js
  34. 0 0
      public/dist/assets/appSide.1705154127287.css
  35. 0 0
      public/dist/assets/appSide.1705154127287.js
  36. 1 0
      public/dist/assets/arc.1705154127287.svg
  37. 0 0
      public/dist/assets/auth.1705154127287.svg
  38. BIN
      public/dist/assets/avatar.1705154127287.png
  39. 1 0
      public/dist/assets/baidu.1705154127287.svg
  40. BIN
      public/dist/assets/baidudev.1705154127287.png
  41. BIN
      public/dist/assets/bilibiliico.1705154127287.png
  42. 1 0
      public/dist/assets/bing.1705154127287.svg
  43. 1 0
      public/dist/assets/class.1705154127287.svg
  44. 0 0
      public/dist/assets/clienthome.1705154127287.svg
  45. 1 0
      public/dist/assets/close.1705154127287.svg
  46. 1 0
      public/dist/assets/controller.1705154127287.css
  47. 0 0
      public/dist/assets/controller.1705154127287.js
  48. 1 0
      public/dist/assets/custom.1705154127287.css
  49. 0 0
      public/dist/assets/custom.1705154127287.js
  50. 1 0
      public/dist/assets/del.1705154127287.svg
  51. 1 0
      public/dist/assets/deskTopMouse.1705154127287.js
  52. 1 0
      public/dist/assets/edit.1705154127287.js
  53. 14 0
      public/dist/assets/edit.1705154127287.svg
  54. 1 0
      public/dist/assets/google.1705154127287.svg
  55. 1 0
      public/dist/assets/help.1705154127287.css
  56. 0 0
      public/dist/assets/help.1705154127287.js
  57. 0 0
      public/dist/assets/href.1705154127287.js
  58. 0 0
      public/dist/assets/iconGroup.1705154127287.css
  59. 0 0
      public/dist/assets/iconGroup.1705154127287.js
  60. 1 0
      public/dist/assets/iconGroupBox.1705154127287.css
  61. 0 0
      public/dist/assets/iconGroupBox.1705154127287.js
  62. 0 0
      public/dist/assets/index.1705154127287.css
  63. 0 0
      public/dist/assets/index.1705154127287.js
  64. 0 0
      public/dist/assets/index.17051541272872.css
  65. 7 0
      public/dist/assets/index.17051541272872.js
  66. 0 0
      public/dist/assets/index.17051541272873.css
  67. 0 0
      public/dist/assets/index.17051541272873.js
  68. 0 0
      public/dist/assets/index.17051541272874.css
  69. 14 0
      public/dist/assets/index.17051541272874.js
  70. 13 0
      public/dist/assets/jquery.1705154127287.js
  71. 0 0
      public/dist/assets/kong.1705154127287.svg
  72. 6 0
      public/dist/assets/lajitong.1705154127287.svg
  73. 1 0
      public/dist/assets/layout.1705154127287.css
  74. 1 0
      public/dist/assets/layout.1705154127287.js
  75. 1 0
      public/dist/assets/layout.1705154127287.svg
  76. 1 0
      public/dist/assets/linkstore.1705154127287.css
  77. 0 0
      public/dist/assets/linkstore.1705154127287.js
  78. 1 0
      public/dist/assets/mouseMenu.1705154127287.css
  79. 0 0
      public/dist/assets/mouseMenu.1705154127287.js
  80. 1 0
      public/dist/assets/onlineMall.1705154127287.css
  81. 0 0
      public/dist/assets/onlineMall.1705154127287.js
  82. 1 0
      public/dist/assets/open.1705154127287.svg
  83. 1 0
      public/dist/assets/openType.1705154127287.css
  84. 1 0
      public/dist/assets/openType.1705154127287.js
  85. 1 0
      public/dist/assets/reload.1705154127287.svg
  86. 9 0
      public/dist/assets/search.1705154127287.svg
  87. 1 0
      public/dist/assets/setting.1705154127287.css
  88. 0 0
      public/dist/assets/setting.1705154127287.js
  89. 1 0
      public/dist/assets/setting.1705154127287.svg
  90. 1 0
      public/dist/assets/sougou.1705154127287.svg
  91. 0 0
      public/dist/assets/theme.1705154127287.js
  92. 1 0
      public/dist/assets/user.1705154127287.css
  93. 0 0
      public/dist/assets/user.1705154127287.js
  94. 0 0
      public/dist/assets/user.17051541272872.js
  95. 3 0
      public/dist/assets/wapp.1705154127287.svg
  96. 1 0
      public/dist/assets/webApp.1705154127287.css
  97. 0 0
      public/dist/assets/webApp.1705154127287.js
  98. BIN
      public/dist/assets/weiboico.1705154127287.png
  99. BIN
      public/dist/assets/wiki.1705154127287.png
  100. 1 1
      public/dist/index.html

+ 2 - 0
README.md

@@ -80,3 +80,5 @@ location ~^/ {
 ### 交流QQ群:694155153
 ### 交流QQ群:694155153
 
 
 [![Security Status](https://www.murphysec.com/platform3/v31/badge/1721830089090732032.svg)](https://www.murphysec.com/console/report/1721830088713244672/1721830089090732032)
 [![Security Status](https://www.murphysec.com/platform3/v31/badge/1721830089090732032.svg)](https://www.murphysec.com/console/report/1721830088713244672/1721830089090732032)
+
+

+ 0 - 1
app/AppService.php

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

+ 50 - 0
app/PluginsBase.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace app;
+
+use app\model\CardModel;
+use think\App;
+use think\View;
+
+class PluginsBase
+{
+    public ?View $view = null;
+    public ?\think\Request $request = null;
+
+    function __construct(App $app)
+    {
+        $this->request = $app->request;
+        // 视图对象
+        $this->view = new View($app);
+        $this->_initialize();
+    }
+    function _initialize(){
+
+    }
+    function assign($key, $view)
+    {
+        $this->view->assign($key, $view);
+    }
+
+    function fetch($view, $opt = []): string
+    {
+        $view = plugins_path("view/" . $view);
+        return $this->view->fetch($view, $opt);
+    }
+
+    public function success($msg, $data = []): \think\response\Json
+    {
+        if (is_array($msg)) {
+            return json(['msg' => '', 'code' => 1, 'data' => $msg]);
+        }
+        return json(['msg' => $msg, 'code' => 1, 'data' => $data]);
+    }
+
+    public function error($msg, $data = []): \think\response\Json
+    {
+        if (is_array($msg)) {
+            return json(['msg' => '', 'code' => 0, 'data' => $msg]);
+        }
+        return json(['msg' => $msg, 'code' => 0, 'data' => $data]);
+    }
+}

+ 0 - 3
app/Request.php

@@ -9,8 +9,5 @@ class Request extends \think\Request
     function __construct()
     function __construct()
     {
     {
         parent::__construct();
         parent::__construct();
-        header('Access-Control-Allow-Origin:*');
-        header('Access-Control-Allow-Headers:*');
-        header('Access-Control-Allow-Methods:*');
     }
     }
 }
 }

+ 28 - 3
app/common.php

@@ -1,6 +1,5 @@
 <?php
 <?php
 // 应用公共文件
 // 应用公共文件
-$error_custom= '111';
 function validateEmail($email): bool
 function validateEmail($email): bool
 {
 {
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
@@ -31,11 +30,37 @@ function joinPath($path1, $path2)
     return preg_replace("#//#", "/", $path1 . $path2);
     return preg_replace("#//#", "/", $path1 . $path2);
 }
 }
 
 
-function getRealIp()
+function getRealIp(): string
 {
 {
     $ip1 = request()->header('x-forwarded-for', false);
     $ip1 = request()->header('x-forwarded-for', false);
     if ($ip1) {
     if ($ip1) {
-        return $ip1;
+        $arr = explode(",", $ip1);
+        if(count($arr)>0){
+            return trim($arr[0]);
+        }
     }
     }
     return request()->ip();
     return request()->ip();
+}
+
+function plugins_path($path=''): string
+{
+    if (mb_strlen($path) > 0) {
+        if (strpos($path, "/") == 0) {
+            return $_ENV['plugins_dir_name'] . $path;
+        }
+        return $_ENV['plugins_dir_name'] . '/' . $path;
+    }
+    return $_ENV['plugins_dir_name'] . "/";
+}
+
+function is_demo_mode($is_exit = false)
+{
+    if (env('demo_mode')) {
+        if ($is_exit) {
+            json(["msg" => "演示模式,部分功能受限,禁止更新或删除!", "code" => 0])->send();
+            exit();
+        }
+        return true;
+    }
+    return false;
 }
 }

+ 2 - 1
app/controller/Admin.php

@@ -23,6 +23,7 @@ class Admin extends BaseController
     function userUpdate(): \think\response\Json
     function userUpdate(): \think\response\Json
     {
     {
         $this->getAdmin();
         $this->getAdmin();
+        is_demo_mode(true);
         $id = $this->request->post('id');
         $id = $this->request->post('id');
         $user = UserModel::where('id', $id)->find();
         $user = UserModel::where('id', $id)->find();
         $data = $this->request->post();
         $data = $this->request->post();
@@ -36,6 +37,6 @@ class Admin extends BaseController
             unset($data['password']);
             unset($data['password']);
         }
         }
         $user->save($data);
         $user->save($data);
-        return $this->success('ok');
+        return $this->success('修改成功');
     }
     }
 }
 }

+ 7 - 1
app/controller/Api.php

@@ -3,6 +3,7 @@
 namespace app\controller;
 namespace app\controller;
 
 
 use app\BaseController;
 use app\BaseController;
+use app\model\ConfigModel;
 use app\model\LinkModel;
 use app\model\LinkModel;
 use app\model\SettingModel;
 use app\model\SettingModel;
 use GuzzleHttp\Client;
 use GuzzleHttp\Client;
@@ -16,9 +17,14 @@ class Api extends BaseController
 {
 {
     public function site(): \think\response\Json
     public function site(): \think\response\Json
     {
     {
+        $auth = false;
+        if ($this->Setting('authCode', env('authCode', false), true)) {
+            $auth = true;
+        }
         return $this->success("ok", [
         return $this->success("ok", [
             'email' => $this->Setting('email', ''),
             'email' => $this->Setting('email', ''),
-            "recordNumber" => $this->Setting("recordNumber", '')
+            "recordNumber" => $this->Setting("recordNumber", ''),
+            "auth" => $auth
         ]);
         ]);
     }
     }
 
 

+ 29 - 0
app/controller/Card.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace app\controller;
+
+use app\BaseController;
+use app\model\CardModel;
+use app\model\SettingModel;
+
+class Card extends BaseController
+{
+    function index(): \think\response\Json
+    {
+        $apps = CardModel::where('status', 1)->select();
+        return $this->success('ok', $apps);
+    }
+
+    function install_num(): \think\response\Json
+    {
+        $id = $this->request->post('id', 0);
+        if ($id) {
+            $find = CardModel::where("id", $id)->find();
+            if ($find) {
+                $find->install_num += 1;
+                $find->save();
+            }
+        }
+        return $this->success('ok');
+    }
+}

+ 5 - 1
app/controller/LinkStore.php

@@ -9,6 +9,7 @@ use think\facade\Db;
 
 
 class LinkStore extends BaseController
 class LinkStore extends BaseController
 {
 {
+
     public function list(): \think\response\Json
     public function list(): \think\response\Json
     {
     {
         $limit = $this->request->post('limit', 15);
         $limit = $this->request->post('limit', 15);
@@ -53,6 +54,7 @@ class LinkStore extends BaseController
 
 
     private function update(): \think\response\Json
     private function update(): \think\response\Json
     {
     {
+        is_demo_mode(true);
         $data = $this->request->post("form");
         $data = $this->request->post("form");
         $info = LinkStoreModel::where("id", $data['id'])->update($data);
         $info = LinkStoreModel::where("id", $data['id'])->update($data);
         return $this->success('修改成功', $info);
         return $this->success('修改成功', $info);
@@ -61,6 +63,7 @@ class LinkStore extends BaseController
     public function add(): \think\response\Json
     public function add(): \think\response\Json
     {
     {
         $admin = $this->getAdmin();
         $admin = $this->getAdmin();
+        is_demo_mode(true);
         $data = $this->request->post('form');
         $data = $this->request->post('form');
         if ($data) {
         if ($data) {
             if (isset($data['id']) && $data['id']) { //更新
             if (isset($data['id']) && $data['id']) { //更新
@@ -77,7 +80,6 @@ class LinkStore extends BaseController
     public function getIcon(): \think\response\Json
     public function getIcon(): \think\response\Json
     {
     {
         $url = $this->request->post('url', false);
         $url = $this->request->post('url', false);
-
         if ($url) {
         if ($url) {
             if (mb_substr($url, 0, 4) == 'tab:') {
             if (mb_substr($url, 0, 4) == 'tab:') {
             } else {
             } else {
@@ -108,6 +110,7 @@ class LinkStore extends BaseController
 
 
     function createFolder(): \think\response\Json
     function createFolder(): \think\response\Json
     {
     {
+        is_demo_mode(true);
         $type = $this->request->post('type', false);
         $type = $this->request->post('type', false);
         $this->getAdmin();
         $this->getAdmin();
         if ($type === 'edit') {
         if ($type === 'edit') {
@@ -138,6 +141,7 @@ class LinkStore extends BaseController
 
 
     public function del(): \think\response\Json
     public function del(): \think\response\Json
     {
     {
+        is_demo_mode(true);
         $this->getAdmin();
         $this->getAdmin();
         $ids = $this->request->post('ids', []);
         $ids = $this->request->post('ids', []);
         LinkStoreModel::where("id", 'in', $ids)->delete();
         LinkStoreModel::where("id", 'in', $ids)->delete();

+ 3 - 3
app/controller/Setting.php

@@ -14,6 +14,7 @@ class Setting extends BaseController
     function saveSetting(): \think\response\Json
     function saveSetting(): \think\response\Json
     {
     {
         $this->getAdmin();
         $this->getAdmin();
+        is_demo_mode(true);
         $list = $this->request->post('form');
         $list = $this->request->post('form');
         $tmp = [];
         $tmp = [];
         foreach ($list as $key => $value) {
         foreach ($list as $key => $value) {
@@ -23,9 +24,8 @@ class Setting extends BaseController
             ];
             ];
         }
         }
         Db::table('setting')->replace()->insertAll($tmp);
         Db::table('setting')->replace()->insertAll($tmp);
-        $config = array_column($tmp, 'value', 'keys');
-        Cache::set('webConfig', $config, 300);
-        return $this->success('ok');
+        Cache::delete('webConfig');
+        return $this->success('保存成功');
     }
     }
 
 
     function getSetting(): \think\response\Json
     function getSetting(): \think\response\Json

+ 157 - 3
app/controller/admin/Index.php

@@ -3,6 +3,7 @@
 namespace app\controller\admin;
 namespace app\controller\admin;
 
 
 use app\BaseController;
 use app\BaseController;
+use app\model\CardModel;
 use app\model\LinkStoreModel;
 use app\model\LinkStoreModel;
 use app\model\SettingModel;
 use app\model\SettingModel;
 use app\model\UserModel;
 use app\model\UserModel;
@@ -16,7 +17,7 @@ use think\facade\Db;
 
 
 class Index extends BaseController
 class Index extends BaseController
 {
 {
-    public string $authService = "http://auth.mtab.cc";
+    public string $authService = "https://auth.mtab.cc";
     public string $authCode = '';
     public string $authCode = '';
 
 
     function setSubscription(): \think\response\Json
     function setSubscription(): \think\response\Json
@@ -36,7 +37,7 @@ class Index extends BaseController
             $authCode = env('authCode', '');
             $authCode = env('authCode', '');
         }
         }
         $this->authCode = $authCode;
         $this->authCode = $authCode;
-        $this->authService = $this->Setting('authServer', 'http://auth.mtab.cc', true);
+        $this->authService = $this->Setting('authServer', 'https://auth.mtab.cc', true);
     }
     }
 
 
     function updateApp(): \think\response\Json
     function updateApp(): \think\response\Json
@@ -150,7 +151,7 @@ class Index extends BaseController
         $linkNum = LinkStoreModel::count("id");
         $linkNum = LinkStoreModel::count("id");
         $redisNum = 0;
         $redisNum = 0;
         $fileNum = Cache::get("fileNum");
         $fileNum = Cache::get("fileNum");
-        if(!$fileNum){
+        if (!$fileNum) {
             if (is_dir(public_path() . 'images')) {
             if (is_dir(public_path() . 'images')) {
                 $fileNum = $this->countFilesInDirectory(public_path() . 'images');
                 $fileNum = $this->countFilesInDirectory(public_path() . 'images');
                 Cache::set('fileNum', $fileNum, 300);
                 Cache::set('fileNum', $fileNum, 300);
@@ -208,4 +209,157 @@ class Index extends BaseController
         }
         }
         return ['time' => $time, 'total' => $total, 'sum' => array_sum($total)];
         return ['time' => $time, 'total' => $total, 'sum' => array_sum($total)];
     }
     }
+
+    function cardList(): \think\response\Json
+    {
+        $this->getAdmin();
+        $this->initAuth();
+        $result = \Axios::http()->post($this->authService . '/card', [
+            'timeout' => 15,
+            'form_params' => [
+                'authorization_code' => $this->authCode
+            ]
+        ]);
+        try {
+            $json = $result->getBody()->getContents();
+            $json = json_decode($json, true);
+            if ($json['code'] === 1) {
+                return $this->success('ok', $json['data']);
+            }
+        } catch (\Exception $e) {
+        }
+        return $this->error('远程卡片获取失败');
+    }
+
+    //获取本地应用
+    function localCard(): \think\response\Json
+    {
+        $this->getAdmin();
+        $apps = CardModel::select();
+        return $this->success('ok', $apps);
+    }
+
+    function stopCard(): \think\response\Json
+    {
+        $name_en = $this->request->post('name_en', '');
+        CardModel::where('name_en', $name_en)->update(['status' => 0]);
+        Cache::delete('cardList');
+        return $this->success('设置成功');
+    }
+
+    function startCard(): \think\response\Json
+    {
+        $name_en = $this->request->post('name_en', '');
+        CardModel::where('name_en', $name_en)->update(['status' => 1]);
+        Cache::delete('cardList');
+        return $this->success('设置成功');
+    }
+
+    function installCard(): \think\response\Json
+    {
+        $this->initAuth();
+        $name_en = $this->request->post("name_en", '');
+        $version = 0;
+        $type = $this->request->post('type', 'install');
+        if (mb_strlen($name_en) > 0) {
+            $card = CardModel::where('name_en', $name_en)->find();
+            if ($card) {
+                if ($type == 'install') {
+                    return $this->error('您已安装当前卡片组件');
+                }
+                if ($type == 'update') {
+                    $version = $card['version'];
+                }
+            }
+            $result = \Axios::http()->post($this->authService . '/installCard', [
+                'timeout' => 15,
+                'form_params' => [
+                    'authorization_code' => $this->authCode,
+                    'name_en' => $name_en,
+                    'version' => $version
+                ]
+            ]);
+            try {
+                $json = $result->getBody()->getContents();
+                $json = json_decode($json, true, JSON_UNESCAPED_UNICODE);
+                if ($json['code'] == 0) {
+                    return $this->error($json['msg']);
+                }
+                return $this->installCardTask($json['data']);
+            } catch (\Exception $e) {
+            }
+
+        }
+        return $this->error("没有需要安装的卡片插件!");
+    }
+
+    function uninstallCard(): \think\response\Json
+    {
+        $name_en = $this->request->post("name_en");
+        if ($name_en) {
+            $this->deleteDirectory(root_path() . 'plugins/' . $name_en);
+            CardModel::where('name_en', $name_en)->delete();
+            Cache::delete('cardList');
+        }
+        return $this->success('卸载完毕!');
+    }
+
+    function deleteDirectory($dir)
+    {
+        if (!is_dir($dir)) {
+            return;
+        }
+        $files = scandir($dir);
+        foreach ($files as $file) {
+            if ($file != '.' && $file != '..') {
+                if (is_dir("$dir/$file")) {
+                    $this->deleteDirectory("$dir/$file");
+                } else {
+                    unlink("$dir/$file");
+                }
+            }
+        }
+        rmdir($dir);
+    }
+
+    protected function readCardInfo($name_en)
+    {
+        $file = root_path() . 'plugins/' . $name_en . '/info.json';
+        $info = file_get_contents($file);
+        try {
+            return json_decode($info, true);
+        } catch (\Exception $e) {
+        }
+        return false;
+    }
+
+    function installCardTask($info): \think\response\Json
+    {
+        if ($info['download']) {
+            $task = new \PluginsInstall($info);
+            $state = $task->run();
+            if ($state === true) {
+                $config = $this->readCardInfo($info['name_en']);
+                $data = [
+                    'name' => $config['name'],
+                    'name_en' => $config['name_en'],
+                    'version' => $config['version'],
+                    'tips' => $config['tips'],
+                    'src' => $config['src'],
+                    'url' => $config['url'],
+                    'window' => $config['window'],
+                ];
+                $find = CardModel::where('name_en', $info['name_en'])->find();
+                if ($find) {
+                    $find->force()->save($data);
+                } else {
+                    CardModel::create($data);
+                }
+                Cache::delete('cardList');
+                return $this->success("安装成功");
+            }
+            return $this->error($state);
+        }
+        return $this->error('新版本没有提供下载地址!');
+    }
 }
 }

+ 44 - 0
app/model/CardModel.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace app\model;
+
+use think\Model;
+
+class CardModel extends Model
+{
+    protected $name = "card";
+    protected $pk = "id";
+    static array $stopCard = [];
+
+    public static function cardStatus($name_en = ''): bool
+    {
+        $config = self::$stopCard;
+        if (count($config) == 0) {
+            $config = self::cache('cardList', 60 * 60)->select()->toArray();
+            self::$stopCard = $config;
+        }
+        foreach ($config as $item) {
+            if ($item['name_en'] == $name_en) {
+                if ($item['status'] === 1) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    public static function cardInfo($name_en = '')
+    {
+        $config = self::$stopCard;
+        if (count($config) == 0) {
+            $config = self::cache('cardList', 60 * 60)->select()->toArray();
+            self::$stopCard = $config;
+        }
+        foreach ($config as $item) {
+            if ($item['name_en'] == $name_en) {
+                return $item;
+            }
+        }
+        return false;
+    }
+}

+ 5 - 2
app/model/SettingModel.php

@@ -14,17 +14,20 @@ class SettingModel extends Model
 {
 {
     protected $name = "setting";
     protected $name = "setting";
     protected $pk = "keys";
     protected $pk = "keys";
-    static $CacheConfig = false;
+    static array $CacheConfig = [];
+
+ 
 
 
     public static function Config($key = false, $default = '##')
     public static function Config($key = false, $default = '##')
     {
     {
         $config = self::$CacheConfig;
         $config = self::$CacheConfig;
-        if (!$config) {
+        if (count($config) == 0) {
             $config = Cache::get('webConfig');
             $config = Cache::get('webConfig');
             if (!$config) {
             if (!$config) {
                 $config = self::select()->toArray();
                 $config = self::select()->toArray();
                 $config = array_column($config, 'value', 'keys');
                 $config = array_column($config, 'value', 'keys');
                 Cache::set('webConfig', $config, 300);
                 Cache::set('webConfig', $config, 300);
+                self::$CacheConfig = $config;
             }
             }
         }
         }
         if ($key) {
         if ($key) {

+ 36 - 0
app/view/cardNotFound.html

@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>卡片不存在</title>
+    <style>
+        * {
+            margin: 0;
+            padding: 0;
+        }
+
+        .card {
+            width: 100vw;
+            height: 100vh;
+            background: #07182E;
+            position: relative;
+            display: flex;
+            place-content: center;
+            place-items: center;
+            overflow: hidden;
+            border-radius: 8px;
+        }
+
+        .card h2 {
+            z-index: 1;
+            color: white;
+            font-size:14vw;
+        }
+    </style>
+</head>
+<body style="background:  #07182E">
+<div class="card">
+    <h2>卡片不存在</h2>
+</div>
+</body>
+</html>

+ 1 - 1
auto_install.json

@@ -1,5 +1,5 @@
 {
 {
-  "php_ext": "fileinfo",
+  "php_ext": "redis,fileinfo",
   "chmod": [
   "chmod": [
     {
     {
       "mode": 755,
       "mode": 755,

+ 2 - 1
composer.json

@@ -44,7 +44,8 @@
   },
   },
   "autoload": {
   "autoload": {
     "psr-4": {
     "psr-4": {
-      "app\\": "app"
+      "app\\": "app",
+      "plugins\\": "plugins"
     },
     },
     "psr-0": {
     "psr-0": {
       "": "extend/"
       "": "extend/"

File diff suppressed because it is too large
+ 8 - 6
config/500.html


+ 1 - 1
config/trace.php

@@ -4,7 +4,7 @@
 // +----------------------------------------------------------------------
 // +----------------------------------------------------------------------
 return [
 return [
     // 内置Html和Console两种方式 支持扩展
     // 内置Html和Console两种方式 支持扩展
-    'type'    => 'Html',
+    'type'    => 'Console',
     // 读取的日志通道名
     // 读取的日志通道名
     'channel' => '',
     'channel' => '',
 ];
 ];

+ 3 - 3
docker/install.sh

@@ -23,16 +23,16 @@ mv /php.ini /etc/php7/php.ini
 mv /nginx.conf /etc/nginx/nginx.conf
 mv /nginx.conf /etc/nginx/nginx.conf
 
 
 # 检查是否存在 .git 目录
 # 检查是否存在 .git 目录
-if [ -d "/www/.git" ]; then
+if [ -d "/www/.git" ];then
     rm -rf "/www/.git"
     rm -rf "/www/.git"
 fi
 fi
 
 
 # 检查是否存在 .ide 目录
 # 检查是否存在 .ide 目录
-if [ -d "/www/.idea" ]; then
+if [ -d "/www/.idea" ];then
     rm -rf "/www/.idea"
     rm -rf "/www/.idea"
 fi
 fi
 
 
-if [ -d "/www/vendor/bin/" ]; then
+if [ -d "/www/vendor/bin/" ];then
     rm -rf "/www/vendor/bin/"
     rm -rf "/www/vendor/bin/"
 fi
 fi
 
 

+ 3 - 4
docker/start.sh

@@ -10,17 +10,16 @@ lock_file="/move.lock"
 source_dir="/www/"
 source_dir="/www/"
 destination_dir="/app"
 destination_dir="/app"
 
 
-chmod -R 777 "$source_dir"
-
-if [ ! -e "$destination_dir" ]; then
+if [ ! -e "$destination_dir" ];then
     mkdir "$destination_dir"
     mkdir "$destination_dir"
 fi
 fi
 
 
 chmod -R 777 "$destination_dir"
 chmod -R 777 "$destination_dir"
 
 
 # 检查是否存在锁文件
 # 检查是否存在锁文件
-if [ ! -e "$lock_file" ]; then
+if [ ! -e "$lock_file" ];then
     # 如果锁文件不存在,执行移动操作
     # 如果锁文件不存在,执行移动操作
+    chmod -R 777 "$source_dir"
     rsync -aL "$source_dir/" "$destination_dir"
     rsync -aL "$source_dir/" "$destination_dir"
     chmod -R 777 "$destination_dir"
     chmod -R 777 "$destination_dir"
     # 创建锁文件
     # 创建锁文件

+ 0 - 1
extend/Mail.php

@@ -24,7 +24,6 @@ class Mail
         try {
         try {
             $mailer->send($mail);
             $mailer->send($mail);
         } catch (\Throwable $th) {
         } catch (\Throwable $th) {
-            //throw $th;
             return false;
             return false;
         }
         }
         return true;
         return true;

+ 48 - 0
extend/PluginStaticSystem.php

@@ -0,0 +1,48 @@
+<?php
+
+class PluginStaticSystem
+{
+    function index($dir, $file)
+    {
+        $file = preg_replace("#\.\.#", "", $file);
+        $file = plugins_path("static/" . $file);
+        if (file_exists($file)) {
+            return download($file)->force(false)->mimeType($this->mimeType($file))->header(['Cache-Control' => 'max-age=68400']);
+        }
+        return response('', 404);
+    }
+
+    function mimeType($ext): string
+    {
+        $ext = pathinfo($ext);
+        if ($ext['extension']) {
+            $ext = $ext["extension"];
+            $type = array(
+                'css' => 'text/css',
+                'js' => 'text/javascript',
+                'woff' => 'font/woff',
+                'ttf' => 'font/truetype',
+                'ico' => 'image/x-icon',
+                'jpg' => 'image/jpeg',
+                'png' => 'image/png',
+                'webp' => 'image/webp',
+                'gif' => 'image/gif',
+                'svg' => 'image/svg+xml',
+                'json'=> 'application/json',
+                'pdf' => 'application/pdf',
+                'doc' => 'application/msword',
+                'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+                'xls' => 'application/vnd.ms-excel',
+                'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                'zip' => 'application/zip',
+                'rar' => 'application/x-rar-compressed',
+                'txt' => 'text/plain',
+                'html' => 'text/html',
+            );
+            if (isset($type[$ext])) {
+                return $type[$ext];
+            }
+        }
+        return '';
+    }
+}

+ 173 - 0
extend/PluginsInstall.php

@@ -0,0 +1,173 @@
+<?php
+
+ini_set('max_execution_time', 0);
+ini_set('memory_limit', '500M');
+
+class PluginsInstall
+{
+    protected string $archiveFile = '';//升级文件地址
+    protected string $extractPath = '';//解压目录地址
+    protected string $root_path = '';//程序根目录
+    public string $download = '';//升级zip文件下载地址
+    protected string $directory = '';//插件目录名称
+    protected string $update_sql = '';//升级sql文件地址
+
+    //构造方法初始化一些数据
+    function __construct($info)
+    {
+        $this->archiveFile = runtime_path() . $info['name_en'] . '.zip';
+        $this->extractPath = runtime_path();
+        $this->root_path = root_path() . 'plugins/';
+        $this->download = $info['download'];
+        $this->directory = $info['name_en'];
+        if (isset($info['update_sql']) && $info['update_sql']) {
+            $this->update_sql = $info['update_sql'];
+        }
+    }
+
+    //运行入口
+    function run()
+    {
+        return $this->startUpgrade();
+    }
+
+    //新的进程启动升级
+    private function startUpgrade()
+    {
+        //如果有程序代码的更新资源则更新程序代码
+        if (strlen($this->download) > 1) {
+            //如果有遗留的解压资源则删除
+            $this->deleteDirectory("{$this->extractPath}{$this->directory}");
+            //如果存在旧的升级包则删除
+            $this->delZip();
+            //下载远程更新包
+            if (!$this->fileDownload()) {
+                return '资源下载失败';
+            }
+            //解压升级包
+            if (!$this->unzip($this->archiveFile, $this->extractPath)) {
+                $this->delZip();
+                return '升级资源包解压失败';
+            }
+            //拷贝覆盖
+            $this->copy();
+            //删除下载的更新包
+            $this->delZip();
+            //更新完后的一些操作
+            if (mb_strlen($this->update_sql) > 0) {
+                $this->updateSql();
+            }
+        }
+        //退出
+        return true;
+    }
+
+    private function fileDownload(): bool
+    {
+        try {
+            $f = fopen($this->download, 'r');
+            $w = fopen($this->archiveFile, 'wb+');
+            do {
+                $a = fread($f, 1024);
+                fwrite($w, $a);
+            } while ($a);
+            fclose($w);
+            fclose($f);
+        } catch (ErrorException $e) {
+            return false;
+        }
+        return true;
+    }
+
+    //删除升级包
+    function delZip()
+    {
+        if (file_exists($this->archiveFile)) {
+            unlink($this->archiveFile);
+        }
+    }
+
+    //解压
+    private function unzip($archiveFile, $extractPath): bool
+    {
+        $zip = new ZipArchive();
+        if ($zip->open($archiveFile) === TRUE) {
+            $zip->extractTo($extractPath, null);
+            $zip->close();
+        } else {
+            return false;
+        }
+        return true;
+    }
+
+    //升级的数据库
+    function updateSql()
+    {
+        $f = fopen($this->update_sql, 'r');
+        $sql = '';
+        do {
+            $sqlTmp = fread($f, 1024);
+            $sql = $sql . $sqlTmp;
+        } while ($sqlTmp);
+        fclose($f);
+        // 解析SQL文件内容并执行
+        $sql_statements = explode(';', trim($sql));
+        foreach ($sql_statements as $sql_statement) {
+            if (!empty($sql_statement)) {
+                try {
+                    \think\facade\Db::query($sql_statement);
+                } catch (Exception $e) {
+
+                }
+            }
+        }
+    }
+
+    //递归删除目录
+    function deleteDirectory($dir)
+    {
+        if (!is_dir($dir)) {
+            return;
+        }
+        $files = scandir($dir);
+        foreach ($files as $file) {
+            if ($file != '.' && $file != '..') {
+                if (is_dir("$dir/$file")) {
+                    $this->deleteDirectory("$dir/$file");
+                } else {
+                    unlink("$dir/$file");
+                }
+            }
+        }
+        rmdir($dir);
+    }
+
+    // 递归复制目录及其内容
+    function copyDir($source, $dest)
+    {
+        if (!is_dir($dest)) {
+            mkdir($dest, 0777, true);
+        }
+        $files = scandir($source);
+        foreach ($files as $file) {
+            if ($file !== '.' && $file !== '..') {
+                $src = $source . '/' . $file;
+                $dst = $dest . '/' . $file;
+                if (is_dir($src)) {
+                    $this->copyDir($src, $dst);
+                } else {
+                    copy($src, $dst);
+                }
+            }
+        }
+    }
+
+    //覆盖原来的程序
+    private function copy()
+    {
+        //移动覆盖
+        $this->copyDir("{$this->extractPath}{$this->directory}/", "{$this->root_path}{$this->directory}");
+        //删除解压目录
+        $this->deleteDirectory("{$this->extractPath}{$this->directory}");
+    }
+}

+ 1 - 1
extend/Upgrade2.php

@@ -1,6 +1,6 @@
 <?php
 <?php
 ini_set('max_execution_time', 0);
 ini_set('max_execution_time', 0);
-
+ini_set('memory_limit', '500M');
 class Upgrade2
 class Upgrade2
 {
 {
     protected string $archiveFile = "";//升级文件地址
     protected string $archiveFile = "";//升级文件地址

+ 19 - 0
install.sql

@@ -112,6 +112,25 @@ create table user
         unique (mail)
         unique (mail)
 );
 );
 
 
+create table card
+(
+    id          int auto_increment
+        primary key,
+    name        varchar(200)  null,
+    name_en     varchar(200)  null,
+    status      int default 0 null,
+    version     int default 0 null,
+    tips        varchar(255)  null comment '说明',
+    create_time datetime      null comment '添加时间',
+    src         text          null comment 'logo',
+    url         varchar(255)  null comment '卡片地址',
+    `window`    varchar(255)  null comment '窗口地址',
+    update_time datetime      null,
+    install_num int default 0 null
+)
+    comment '卡片数据表';
+
+
 
 
 INSERT INTO linkstore (name, src, url, type, size, create_time, hot, tips, domain, app, install_num) VALUES ('Bilibili', '/static/bilibili.png', 'https://bilibili.com', 'icon', '1x1', '2022-11-07 21:51:42', 0, 'Bilibili弹幕视频网站Acg网站', 'bilibili.com,www.bilibili.com', 0, 0);
 INSERT INTO linkstore (name, src, url, type, size, create_time, hot, tips, domain, app, install_num) VALUES ('Bilibili', '/static/bilibili.png', 'https://bilibili.com', 'icon', '1x1', '2022-11-07 21:51:42', 0, 'Bilibili弹幕视频网站Acg网站', 'bilibili.com,www.bilibili.com', 0, 0);
 INSERT INTO linkstore (name, src, url, type, size, create_time, hot, tips, domain, app, install_num) VALUES ('蓝易云', '/static/tsy.png', 'https://www.tsyvps.com/aff/IRYIGFMX', 'icon', '1x1', '2022-11-07 22:02:41', 0, '蓝易云-持证高性价比服务器', 'www.tsyvps.com,tsyvps.com', 0, 0);
 INSERT INTO linkstore (name, src, url, type, size, create_time, hot, tips, domain, app, install_num) VALUES ('蓝易云', '/static/tsy.png', 'https://www.tsyvps.com/aff/IRYIGFMX', 'icon', '1x1', '2022-11-07 22:02:41', 0, '蓝易云-持证高性价比服务器', 'www.tsyvps.com,tsyvps.com', 0, 0);

+ 1 - 0
public/dist/assets/360.1705154127287.svg

@@ -0,0 +1 @@
+<svg t="1650420515904" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6781" width="200" height="200"><path d="M457.8816 954.2656C214.016 954.2656 15.616 755.8656 15.616 512S214.016 69.7344 457.8816 69.7344s442.2656 198.4 442.2656 442.2656-198.41024 442.2656-442.2656 442.2656z m0-742.25664c-165.41696 0-299.99104 134.57408-299.99104 299.99104S292.4544 811.99104 457.8816 811.99104 757.87264 677.41696 757.87264 512 623.29856 212.00896 457.8816 212.00896z" fill="#2CAC57" p-id="6782"></path><path d="M937.24672 849.11104m-71.13728 0a71.13728 71.13728 0 1 0 142.27456 0 71.13728 71.13728 0 1 0-142.27456 0Z" fill="#F4B122" p-id="6783"></path><path d="M457.8816 954.2656c-175.33952 0-334.2848-103.71072-404.9408-264.21248l-1.95584-4.5056c-15.4112-36.13696 1.39264-77.9264 37.51936-93.3376 36.12672-15.4112 77.9264 1.3824 93.3376 37.51936l1.29024 2.9696c47.95392 108.93312 155.79136 179.29216 274.7392 179.29216 117.5552 0 224.88064-69.21216 273.41824-176.32256 0.65536-1.44384 1.31072-2.9184 1.9456-4.39296 15.60576-36.05504 57.47712-52.6336 93.53216-37.02784 36.05504 15.60576 52.6336 57.47712 37.02784 93.53216-0.95232 2.21184-1.93536 4.4032-2.92864 6.59456-71.53664 157.88032-229.72416 259.8912-402.98496 259.8912z" fill="#F4B122" p-id="6784"></path></svg>

+ 1 - 0
public/dist/assets/about.1705154127287.css

@@ -0,0 +1 @@
+.about>div{border-radius:8px;background-color:#fff;padding:15px;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:text;-moz-user-select:text;user-select:text}.about>div:hover{color:#6495ed}.about>div>span{font-size:13px}

+ 1 - 0
public/dist/assets/about.1705154127287.js

@@ -0,0 +1 @@
+import{r as a,V as e,c as l,d as s,e as t,t as u,m as r}from"./index.1705154127287.js";const m={class:"about"},c={key:0,class:"labelItem"},n=t("span",null,"联系邮箱",-1),o={class:"ml-4 text-yellow-500"},d={key:1,class:"labelItem mt-3"},i=t("span",null,"备案号",-1),b={class:"ml-4 text-blue-500"},p={__name:"about",setup(p){const v=a({email:"",recordNumber:"",qq:""});return e({url:"/api/site"}).then((a=>{1===a.code&&(v.value=a.data)})),(a,e)=>(l(),s("div",m,[v.value.email?(l(),s("div",c,[n,t("span",o,u(v.value.email),1)])):r("",!0),v.value.recordNumber?(l(),s("div",d,[i,t("span",b,u(v.value.recordNumber),1)])):r("",!0)]))}};export{p as default};

+ 1 - 0
public/dist/assets/add.1705154127287.svg

@@ -0,0 +1 @@
+<?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="#9013fe" stroke-width="4" 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="#9013fe" stroke-width="4"/><path d="M32 35H44" stroke="#9013fe" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M38 29V41" stroke="#9013fe" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 10 14)" fill="#9013fe"/><circle r="2" transform="matrix(-1.31134e-07 -1 -1 1.31134e-07 16 14)" fill="#9013fe"/></svg>

+ 1 - 0
public/dist/assets/addCard.1705154127287.css

@@ -0,0 +1 @@
+.addCardBox[data-v-59c03c0f]{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(auto-fill,1fr);gap:15px}.addCardBox>.cardItem[data-v-59c03c0f]{width:100%;height:100%;padding:15px;border-radius:10px;background-color:#44444b1a}.addCardBox>.cardItem>iframe[data-v-59c03c0f]{border-radius:12px;border:none;outline:none;width:100%;height:180px}

+ 1 - 0
public/dist/assets/addCard.1705154127287.js

@@ -0,0 +1 @@
+import{_ as a,u as e,r as t,V as s,b as n,c as l,d as i,g as r,m as c,e as d,F as o,f as u,h as m,t as p,$ as f,j as x,aa as _,k as v,T as y,ac as g,a8 as k,D as h,E as b}from"./index.1705154127287.js";const w={class:"addCardBox mt-2"},j={class:"cardItem"},C={class:"text-center text-base text-black"},z={class:"text-center text-gray-700 text-sm",style:{height:"40px",display:"flex","align-items":"center","justify-content":"center"}},I=["src"],B={class:"mt-4 flex justify-between"},D=(a=>(h("data-v-59c03c0f"),a=a(),b(),a))((()=>d("span",{class:"iconfont icon-redu text-red-500 text-lg"},null,-1)));var E=a({__name:"addCard",setup(a){const h=e(),b=t([]);s({url:"/card/index"}).then((a=>{1===a.code&&(b.value=a.data)}));return(a,e)=>{const t=n("el-empty"),E=n("el-button");return l(),i(o,null,[0===b.value.length?(l(),r(t,{key:0,description:"目前还没有卡片应用哟!"})):c("",!0),d("div",w,[(l(!0),i(o,null,u(b.value,((a,e)=>(l(),r(y,{key:e},{default:m((()=>[d("div",j,[d("h3",C,p(a.name),1),d("div",z,[d("span",null,p(a.tips),1)]),d("iframe",{src:a.url,class:"mt-2"},null,8,I),d("div",B,[d("div",null,[D,f(" "+p(x(_)(a.install_num)),1)]),v(E,{onClick:e=>(async a=>{let e={sort:99999,id:g(),name:a.name,name_en:a.name_en,size:"2x4",src:a.src,url:a.url,window:a.window,type:"component",component:"plugins",app:1,tips:a.tips,version:a.version,origin_id:a.id};if(h.state.link.find((e=>{const{name_en:t=!1}=e;if(t&&t===a.name_en)return!0})))return k.error("您已添加过了!请勿重复添加相同卡片!"),!1;h.state.link.push(e),h.commit("updateLink"),await s({url:"/card/install_num",method:"post",data:{id:a.id}})})(a),size:"small",round:"",style:{"background-color":"rgba(243,243,243,0.45)"}},{default:m((()=>[f("添加 ")])),_:2},1032,["onClick"])])])])),_:2},1024)))),128))])],64)}}},[["__scopeId","data-v-59c03c0f"]]);export{E as default};

+ 1 - 0
public/dist/assets/addicon.1705154127287.css

@@ -0,0 +1 @@
+.selectCom{background-color:#7c94b0a6!important;color:#fff!important}.addiconframe{height:100%;width:100%}.addiconframe>.left{width:145px;height:calc(100% + 28px);transform:translateY(-28px)}.addiconframe>.left .titleTop{height:80px;color:#000}.addiconframe>.left>.add-body>.add-type{cursor:pointer;display:flex;align-items:center;border-radius:5px;padding:8px 10px;font-size:15px;width:100%;color:#000;transition:all .3s}.addiconframe>.left>.add-body>.add-type>.iconfont{font-size:18px}.addiconframe>.left>.add-body>.add-type>span:not(.iconfont){margin-left:5px}.addiconframe>.right{width:calc(100% - 145px);padding:0 15px}

+ 1 - 0
public/dist/assets/addicon.1705154127287.js

@@ -0,0 +1 @@
+import{B as a,C as s,P as l,r as n,c as t,d,e,n as i,j as c,N as o,m as p,g as r,ad as u}from"./index.1705154127287.js";const _={class:"addiconframe flex"},v={class:"left"},m=e("div",{class:"titleTop flex pl-5 items-center"},[e("span",{class:"text-2xl w-full"},[e("span",{class:"ml-2"},"添加图标")])],-1),f={class:"add-body space-y-3 pl-3 pr-3"},y=[e("span",{class:"iconfont icon-tag"},null,-1),e("span",null,"在线标签库",-1)],C=[e("span",{class:"iconfont icon-zidingyi"},null,-1),e("span",null,"自定义标签",-1)],j=[e("span",{class:"iconfont icon-kapian"},null,-1),e("span",null,"卡片组件库",-1)],x={class:"right"},E={__name:"addicon",props:{data:{type:Object}},setup(E){var k;const g=E,O=a((()=>s((()=>import("./addCard.1705154127287.js")),["assets/addCard.1705154127287.js","assets/addCard.1705154127287.css","assets/index.1705154127287.js","assets/index.17051541272874.css"]))),P=a((()=>s((()=>import("./custom.1705154127287.js")),["assets/custom.1705154127287.js","assets/custom.1705154127287.css","assets/index.1705154127287.js","assets/index.17051541272874.css","assets/appSide.1705154127287.js","assets/appSide.1705154127287.css"]))),T=a((()=>s((()=>import("./onlineMall.1705154127287.js")),["assets/onlineMall.1705154127287.js","assets/onlineMall.1705154127287.css","assets/index.1705154127287.js","assets/index.17051541272874.css","assets/href.1705154127287.js"]))),A=l(T),D=n({}),I=a=>{A.value=a};return(null==(k=g.data)?void 0:k.id)&&(D.value=g.data,I(P)),(a,s)=>{var l;return t(),d("div",_,[e("div",v,[m,e("div",f,[e("div",{class:i(["add-type",{selectCom:c(A)===c(T)}]),onClick:s[0]||(s[0]=a=>I(c(T)))},y,2),e("div",{class:i(["add-type",{selectCom:c(A)===c(P)}]),onClick:s[1]||(s[1]=a=>I(c(P)))},C,2),(null==(l=c(o).state.site)?void 0:l.auth)?(t(),d("div",{key:0,class:i(["add-type",{selectCom:c(A)===c(O)}]),onClick:s[2]||(s[2]=a=>I(c(O)))},j,2)):p("",!0)])]),e("div",x,[(t(),r(u(c(A)),{data:D.value},null,8,["data"]))])])}}};export{E as default};

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/appSide.1705154127287.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/appSide.1705154127287.js


+ 1 - 0
public/dist/assets/arc.1705154127287.svg

@@ -0,0 +1 @@
+<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.1705154127287.svg


BIN
public/dist/assets/avatar.1705154127287.png


+ 1 - 0
public/dist/assets/baidu.1705154127287.svg

@@ -0,0 +1 @@
+<svg t="1650420067930" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3368" width="200" height="200"><path d="M184.682 538.759c111.177-23.874 96.03-156.737 92.702-185.776-5.445-44.768-58.102-123.02-129.606-116.831-89.98 8.074-103.126 138.052-103.126 138.052-12.17 60.08 29.132 188.452 140.03 164.555zM302.746 769.86c-3.257 9.331-10.517 33.228-4.234 54.03 12.402 46.677 52.912 48.77 52.912 48.77h58.218v-142.31h-62.336c-28.016 8.354-41.535 30.157-44.56 39.51z m88.281-453.898c61.406 0 111.037-70.667 111.037-158.04C502.064 70.643 452.433 0 391.027 0c-61.312 0-111.06 70.643-111.06 157.923 0 87.373 49.77 158.04 111.06 158.04z m264.47 10.447c82.068 10.657 134.84-76.925 145.335-143.31 10.703-66.292-42.256-143.288-100.357-156.527-58.218-13.356-130.909 79.904-137.54 140.704-7.912 74.32 10.633 148.593 92.562 159.133z m201.086 390.213s-126.976-98.24-201.11-204.414C555 355.66 412.272 419.37 364.525 498.993 316.987 578.594 242.9 628.947 232.382 642.28c-10.68 13.124-153.385 90.166-121.694 230.87 31.669 140.612 142.939 137.936 142.939 137.936s81.998 8.074 177.12-13.217c95.168-21.104 177.096 5.26 177.096 5.26s222.284 74.435 283.108-68.852c60.754-143.334-34.368-217.654-34.368-217.654zM476.26 929.88H331.739c-62.406-12.449-87.257-55.03-90.398-62.29-3.072-7.376-20.802-41.604-11.425-99.845 26.968-87.257 103.87-93.516 103.87-93.516h76.926v-94.563l65.524 1V929.88z m269.146-1h-166.3c-64.453-16.614-67.455-62.407-67.455-62.407v-183.89l67.455-1.094v165.276c4.119 17.637 26.015 20.825 26.015 20.825h68.525V682.581h71.76v246.297z m235.408-490.99c0-31.76-26.387-127.394-124.23-127.394-98.008 0-111.108 90.258-111.108 154.06 0 60.894 5.142 145.894 126.883 143.195 121.788-2.7 108.455-137.936 108.455-169.86z m0 0" fill="#3245DF" p-id="3369"></path></svg>

BIN
public/dist/assets/baidudev.1705154127287.png


BIN
public/dist/assets/bilibiliico.1705154127287.png


+ 1 - 0
public/dist/assets/bing.1705154127287.svg

@@ -0,0 +1 @@
+<svg t="1650420543193" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8343" width="200" height="200"><path d="M340.5824 70.109867L102.536533 0.682667v851.217066L340.650667 643.345067V70.109867zM102.536533 851.7632l238.045867 171.6224 580.881067-340.923733V411.784533L102.536533 851.831467z" fill="#409EFF" p-id="8344"></path><path d="M409.463467 255.3856l113.732266 238.933333 138.8544 56.866134 259.413334-139.400534-506.0608-156.330666z" fill="#409EFF" p-id="8345"></path></svg>

+ 1 - 0
public/dist/assets/class.1705154127287.svg

@@ -0,0 +1 @@
+<?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="#ff0000" stroke-width="4"/><path d="M20 7H10C7.79086 7 6 8.79086 6 11V17C6 19.2091 7.79086 21 10 21H20" stroke="#ff0000" stroke-width="4" stroke-linecap="round"/><circle cx="34" cy="14" r="8" fill="none" stroke="#ff0000" stroke-width="4"/><circle cx="34" cy="14" r="3" fill="#ff0000"/></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/clienthome.1705154127287.svg


+ 1 - 0
public/dist/assets/close.1705154127287.svg

@@ -0,0 +1 @@
+<?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>

+ 1 - 0
public/dist/assets/controller.1705154127287.css

@@ -0,0 +1 @@
+.control-menu-item{display:flex;align-items:center;margin:5px 10px;padding:8px 10px;border-radius:6px;transition:all .3s;cursor:pointer}.control-menu-item:hover{background-color:#f3f4f6}.control-menu-item>.icons{padding:4px;border-radius:6px;display:block;font-size:17px}@media (max-width: 480px){.control-menu-item>.icons{font-size:20px;font-weight:700}}.control-menu-item>.names{margin-left:3px;font-size:12px}.closeController{position:absolute;width:100%;bottom:30px;display:flex;align-items:center}.closeController>svg{margin-left:20px;width:25px;height:25px;cursor:pointer}.selectControl{background-color:#ebf3fd!important;color:#0095ff!important}.controller{z-index:201;min-width:360px;border-bottom-left-radius:50px;background-color:#fff;transform:translateZ(0)}.controller>.el-drawer__body{padding:0!important;height:100%}.controller .control-model{display:flex;height:100%}.controller .control-model .control-menu{min-width:72px;max-width:140px;height:100%}.controller .control-model .control-setting{flex:1;height:100%}.controller .control-model .control-setting .control-setting-top{width:100%;height:100px}.controller .control-model .control-setting .control-box{border-radius:10px 0 0;background-color:#f7f7f7;width:100%;height:calc(100% - 100px);padding:10px}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/controller.1705154127287.js


+ 1 - 0
public/dist/assets/custom.1705154127287.css

@@ -0,0 +1 @@
+.customBox{width:100%}.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:#00000059}.colors-picker{width:30px;height:30px;background-color:#0ff;border-radius:4px}.input_div>.el-input__wrapper,.input_div>.el-textarea__inner{background-color:#e1e1e157;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.el-input__count,.el-input__count-inner{background-color:transparent!important}

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


+ 1 - 0
public/dist/assets/del.1705154127287.svg

@@ -0,0 +1 @@
+<?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 fill-rule="evenodd" clip-rule="evenodd" d="M8 15H40L37 44H11L8 15Z" fill="#2F88FF" stroke="#333" stroke-width="4" stroke-linejoin="round"/><path d="M20.002 25.0024V35.0026" stroke="#FFF" stroke-width="4" stroke-linecap="round"/><path d="M28.0024 24.9995V34.9972" stroke="#FFF" stroke-width="4" stroke-linecap="round"/><path d="M12 14.9999L28.3242 3L36 15" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 1 - 0
public/dist/assets/deskTopMouse.1705154127287.js

@@ -0,0 +1 @@
+import{u as s,r as e,ab as o,p as t,o as n,c as l,d as a,e as i,l as u,x as m,m as p,ac as d}from"./index.1705154127287.js";import{_ as c}from"./edit.1705154127287.js";import{b as r}from"./href.1705154127287.js";const v=["onClick"],k=[i("img",{src:"/dist/assets/add.1705154127287.svg"},null,-1),i("span",null,"添加图标",-1)],g=["onClick"],C=[i("img",{src:"/dist/assets/class.1705154127287.svg"},null,-1),i("span",null,"创建分类",-1)],f=["onClick"],x=[i("img",{src:c},null,-1),i("span",null,"批量编辑",-1)],h=["onClick"],w=[i("img",{src:"/dist/assets/reload.1705154127287.svg"},null,-1),i("span",null,"刷新页面",-1)],I=["onClick"],M=[i("img",{src:"/dist/assets/setting.1705154127287.svg"},null,-1),i("span",null,"设置",-1)],b={__name:"deskTopMouse",setup(c){const b=s(),j=e(!1),y=o({top:"0px",left:"0px"}),L=()=>{r("tab://setting"),j.value=!1},T=()=>{let s={id:d(),size:"2x2",component:"iconGroup",name:"创建分组",type:"component",url:"iconGroup",children:[]};b.state.link.push(s),b.commit("updateLink"),j.value=!1},_=()=>{b.state.editStatus=!0,j.value=!1},E=()=>{r("tab://addicon"),j.value=!1},G=()=>{t.emit("reload"),j.value=!1},z=s=>{y.top=s.top+"px",y.left=s.left+"px",j.value=!0},S=s=>{j.value&&(j.value=!1)};return window.addEventListener("mousedown",S),t.on("deskTopMouse",z),n((()=>{window.removeEventListener("mousedown",S),t.off("deskTopMouse",z)})),(s,e)=>j.value?(l(),a("div",{key:0,class:"mouseMenu",style:m(y),onMousedown:e[0]||(e[0]=u((()=>{}),["stop"])),onContextmenu:e[1]||(e[1]=u((()=>{}),["prevent"]))},[i("div",{onClick:u(E,["stop"]),class:"mouseItem mhover"},k,8,v),i("div",{onClick:u(T,["stop"]),class:"mouseItem mhover"},C,8,g),i("div",{onClick:u(_,["stop"]),class:"mouseItem mhover"},x,8,f),i("div",{onClick:u(G,["stop"]),class:"mouseItem mhover"},w,8,h),i("div",{onClick:u(L,["stop"]),class:"mouseItem mhover"},M,8,I)],36)):p("",!0)}};export{b as default};

+ 1 - 0
public/dist/assets/edit.1705154127287.js

@@ -0,0 +1 @@
+var s="/dist/assets/edit.1705154127287.svg";export{s as _};

+ 14 - 0
public/dist/assets/edit.1705154127287.svg

@@ -0,0 +1,14 @@
+<?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="M20.0708 9.58588L15.8282 5.34324C15.0472 4.56219 13.7808 4.56219 12.9998 5.34324L7.34292 11.0001C6.56188 11.7811 6.56188 13.0475 7.34292 13.8285L11.5856 18.0712"
+    stroke="#fe13d8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
+  <path
+    d="M28.9287 37.4143L33.1714 41.6569C33.9524 42.438 35.2187 42.438 35.9998 41.6569L41.6566 36.0001C42.4377 35.219 42.4377 33.9527 41.6566 33.1717L37.414 28.929"
+    stroke="#fe13d8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
+  <rect x="34.6064" y="4.9082" width="12" height="42" rx="2" transform="rotate(45 34.6064 4.9082)" fill="none"
+    stroke="#fe13d8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
+  <circle cx="24" cy="24" r="2" fill="#fe13d8" />
+  <circle cx="20" cy="28" r="2" fill="#fe13d8" />
+  <circle cx="28" cy="20" r="2" fill="#fe13d8" />
+</svg>

+ 1 - 0
public/dist/assets/google.1705154127287.svg

@@ -0,0 +1 @@
+<svg t="1650419987680" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2562" width="200" height="200"><path d="M214.101333 512c0-32.512 5.546667-63.701333 15.36-92.928L57.173333 290.218667A491.861333 491.861333 0 0 0 4.693333 512c0 79.701333 18.858667 154.88 52.394667 221.610667l172.202667-129.066667A290.56 290.56 0 0 1 214.101333 512" fill="#FBBC05" p-id="2563"></path><path d="M516.693333 216.192c72.106667 0 137.258667 25.002667 188.458667 65.962667L854.101333 136.533333C763.349333 59.178667 646.997333 11.392 516.693333 11.392c-202.325333 0-376.234667 113.28-459.52 278.826667l172.373334 128.853333c39.68-118.016 152.832-202.88 287.146666-202.88" fill="#EA4335" p-id="2564"></path><path d="M516.693333 807.808c-134.357333 0-247.509333-84.864-287.232-202.88l-172.288 128.853333c83.242667 165.546667 257.152 278.826667 459.52 278.826667 124.842667 0 244.053333-43.392 333.568-124.757333l-163.584-123.818667c-46.122667 28.458667-104.234667 43.776-170.026666 43.776" fill="#34A853" p-id="2565"></path><path d="M1005.397333 512c0-29.568-4.693333-61.44-11.648-91.008H516.650667V614.4h274.602666c-13.696 65.962667-51.072 116.650667-104.533333 149.632l163.541333 123.818667c93.994667-85.418667 155.136-212.650667 155.136-375.850667" fill="#4285F4" p-id="2566"></path></svg>

+ 1 - 0
public/dist/assets/help.1705154127287.css

@@ -0,0 +1 @@
+.help-card[data-v-5cbcc894]{width:100%;height:100%;border-radius:10px;overflow:scroll}.help-card[data-v-5cbcc894]::-webkit-scrollbar{display:none}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/help.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/href.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/iconGroup.1705154127287.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/iconGroup.1705154127287.js


+ 1 - 0
public/dist/assets/iconGroupBox.1705154127287.css

@@ -0,0 +1 @@
+.model{position:relative;width:calc(((var(--iconWidth) + 26px) * 4) + 60px);height:calc(4 * (var(--iconWidth) + 35px) + 60px);display:flex;align-items:center;justify-content:center;transform:translateY(-30px)!important}#iconGroupBox{position:fixed;width:100vw;height:100vh;z-index:10;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:all .5s;background-color:#3d3d3da1;display:flex;flex-direction:column;align-items:center;justify-content:center}#iconGroupBox .groupName{margin-bottom:30px;transform:translateY(-30px)}#iconGroupBox .groupName>.el-input{width:200px;height:35px;background-color:transparent}#iconGroupBox .groupName>.el-input>.el-input__wrapper{border-radius:10px;background-color:#8b8b8b53;border:3px solid rgba(255,255,255,.53);box-shadow:none!important}#iconGroupBox .groupName>.el-input>.el-input__wrapper>.el-input__inner{text-align:center;color:#fff}#iconGroupBox .iconGroupItem{overflow-y:scroll;transition:all .3s;transform:translateZ(0);width:-moz-max-content;width:max-content;height:calc(4 * (var(--iconWidth) + 40px));border-radius:var(--iconRadius);display:grid;padding:20px;background-color:#ffffff7d;grid-template-columns:repeat(4,var(--iconWidth));grid-column-gap:26px;grid-row-gap:5px;grid-auto-flow:dense;grid-template-rows:repeat(auto-fit,calc(var(--iconWidth) + 35px))}#iconGroupBox .iconGroupItem::-webkit-scrollbar{display:none}.groupBox-enter-active,.groupBox-leave-active{transition:opacity .5s ease}.groupBox-enter-from,.groupBox-leave-to{opacity:0}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/iconGroupBox.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.1705154127287.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.17051541272872.css


File diff suppressed because it is too large
+ 7 - 0
public/dist/assets/index.17051541272872.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.17051541272873.css


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.17051541272873.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/index.17051541272874.css


File diff suppressed because it is too large
+ 14 - 0
public/dist/assets/index.17051541272874.js


File diff suppressed because it is too large
+ 13 - 0
public/dist/assets/jquery.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/kong.1705154127287.svg


+ 6 - 0
public/dist/assets/lajitong.1705154127287.svg

@@ -0,0 +1,6 @@
+<svg t="1696515581824" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
+     p-id="15507" width="128" height="128">
+    <path d="M186.402712 269.676475h651.194576a34.711864 34.711864 0 0 1 34.486237 38.634305l-76.817356 676.881356a34.711864 34.711864 0 0 1-34.486237 30.789423H263.220068a34.711864 34.711864 0 0 1-34.486237-30.789423l-76.817356-676.881356a34.711864 34.711864 0 0 1 34.486237-38.634305zM754.983051 121.491525h173.559322a34.711864 34.711864 0 0 1 34.711864 34.711865v17.355932a34.711864 34.711864 0 0 1-34.711864 34.711864H95.457627a34.711864 34.711864 0 0 1-34.711864-34.711864V156.20339a34.711864 34.711864 0 0 1 34.711864-34.711865h173.559322V34.711864a34.711864 34.711864 0 0 1 34.711865-34.711864h416.542372a34.711864 34.711864 0 0 1 34.711865 34.711864v86.779661z m-86.779661 0V86.779661a17.355932 17.355932 0 0 0-17.355932-17.355932H373.152542a17.355932 17.355932 0 0 0-17.355932 17.355932v34.711864h312.40678z"
+          fill="#fff" p-id="15508" data-spm-anchor-id="a313x.search_index.0.i5.a03d3a81KVu5ly"
+          class="selected"></path>
+</svg>

+ 1 - 0
public/dist/assets/layout.1705154127287.css

@@ -0,0 +1 @@
+.manager-menu{position:fixed;height:calc(100vh - 30px);width:145px;left:15px;top:15px;border-radius:12px;overflow:hidden}.manager-menu>ul{border-right:none!important}.Manager{background-color:#eee}.manager-view{margin-left:160px;width:calc(100% - 160px);min-height:100vh;background-color:#eee;padding:15px}.el-menu-item{min-width:100%!important}.clientHome{width:60px;height:60px}

+ 1 - 0
public/dist/assets/layout.1705154127287.js

@@ -0,0 +1 @@
+import{B as e,a1 as a,b as t,c as l,d as n,k as s,j as u,e as r,h as d,C as i,a2 as m,$ as o,a3 as f,a4 as _,a5 as c,a6 as g}from"./index.1705154127287.js";const x={class:"Manager"},p={class:"manager-menu"},v=r("a",{target:"_blank",href:"/"},[r("div",{class:"flex mb-2 hover:text-blue-400 justify-center flex-col items-center"},[r("img",{class:"clientHome mt-4",src:"/dist/assets/clienthome.1705154127287.svg",alt:""}),r("div",{class:"mt-2 text-sm"},"客户端")])],-1),h={class:"manager-view"},b={__name:"layout",setup(b){const k=e((()=>i((()=>import("./appSide.1705154127287.js").then((function(e){return e.a}))),["assets/appSide.1705154127287.js","assets/appSide.1705154127287.css","assets/index.1705154127287.js","assets/index.17051541272874.css"]))),j=(e,a)=>{},w=(e,a)=>{},A=a().path;return(e,a)=>{const i=t("el-icon"),b=t("el-menu-item"),y=t("router-link"),C=t("el-menu"),E=t("router-view");return l(),n("div",x,[s(u(k)),r("div",p,[s(C,{"default-active":u(A),class:"el-menu-vertical-demo h-full",onOpen:j,onClose:w},{default:d((()=>[v,s(y,{to:"/manager/index"},{default:d((()=>[s(b,{index:"/manager/index"},{default:d((()=>[s(i,null,{default:d((()=>[s(u(m))])),_:1}),o(" 数据管理 ")])),_:1})])),_:1}),s(y,{to:"/manager/user"},{default:d((()=>[s(b,{index:"/manager/user"},{default:d((()=>[s(i,null,{default:d((()=>[s(u(f))])),_:1}),o(" 用户列表 ")])),_:1})])),_:1}),s(y,{to:"/manager/linkstore"},{default:d((()=>[s(b,{index:"/manager/linkstore"},{default:d((()=>[s(i,null,{default:d((()=>[s(u(_))])),_:1}),o(" 标签商城 ")])),_:1})])),_:1}),s(y,{to:"/manager/webApp"},{default:d((()=>[s(b,{index:"/manager/webApp"},{default:d((()=>[s(i,null,{default:d((()=>[s(u(c))])),_:1}),o(" 卡片组件 ")])),_:1})])),_:1}),s(y,{to:"/manager/setting"},{default:d((()=>[s(b,{index:"/manager/setting"},{default:d((()=>[s(i,null,{default:d((()=>[s(u(g))])),_:1}),o(" 系统设置 ")])),_:1})])),_:1})])),_:1},8,["default-active"])]),r("div",h,[s(E)])])}}};export{b as default};

+ 1 - 0
public/dist/assets/layout.1705154127287.svg

@@ -0,0 +1 @@
+<?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="M23 20L23 6L6 6L6 20L23 20Z" fill="none" stroke="#0d8fec" stroke-width="4" stroke-linejoin="round"/><path d="M42 42V28L25 28L25 42H42Z" fill="none" stroke="#0d8fec" stroke-width="4" stroke-linejoin="round"/><path d="M31 6V20H42V6H31Z" fill="none" stroke="#0d8fec" stroke-width="4" stroke-linejoin="round"/><path d="M6 28L6 42H17V28H6Z" fill="none" stroke="#0d8fec" stroke-width="4" stroke-linejoin="round"/></svg>

+ 1 - 0
public/dist/assets/linkstore.1705154127287.css

@@ -0,0 +1 @@
+.logoiconRadius{height:55px;width:55px;border-radius:12px;border:2px solid #eeeeee}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/linkstore.1705154127287.js


+ 1 - 0
public/dist/assets/mouseMenu.1705154127287.css

@@ -0,0 +1 @@
+.layoutSet{padding:0 10px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;grid-gap:10px;margin-bottom:10px}.layoutSet>div{cursor:pointer;width:100%;height:25px;line-height:25px;padding:0 10px;font-size:13px;border-radius:30px;background-color:#ffffffa4}.layoutSet>div:hover{background-color:#fff}.mouseMenu{position:fixed;width:120px;z-index:999;background-color:transparent;border-radius:3px 10px 10px;padding:10px 0}.mouseMenu:before{content:"";position:absolute;width:100%;height:100%;top:0;border-radius:3px 10px 10px;left:0;background:rgba(243,243,243,.7);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(40px);z-index:-1}.mouseMenu .mhover:hover{background-color:#fff}.mouseMenu .mouseItem{padding:0 10px;display:flex;align-items:center;min-height:35px;cursor:pointer}.mouseMenu .mouseItem>img{width:15px;height:15px}.mouseMenu .mouseItem>span{margin-left:5px;font-size:13px}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/mouseMenu.1705154127287.js


+ 1 - 0
public/dist/assets/onlineMall.1705154127287.css

@@ -0,0 +1 @@
+.onlinemall{position:relative;width:100%;height:100%}.iconSearch{height:40px}.iconSearch>.el-input__wrapper{border-radius:30px}.iconSearch>.el-input__wrapper>input{font-size:14px;text-indent:10px!important}.linkscroll{position:relative;overflow-y:auto;width:100%;height:calc(100% - 110px)}.linkscroll::-webkit-scrollbar{display:none}.linklist{grid-gap:10px}.linklist>div{height:100px;border-radius:8px;background-color:#44444b1a;padding:10px}.linklist>div>.links{display:flex}.linklist>div>.links>.linklogo{flex-shrink:0;border-radius:var(--iconRadius);width:50px;height:50px;display:block}.linklist>div>.links>.linkTips{margin-left:10px;display:flex;color:#0d0c22;flex-direction:column}.linklist>div>.links>.linkTips>div{text-overflow:ellipsis;height:32px;overflow:hidden}.linkarea{width:100%;height:40px;display:flex;align-items:center;overflow-y:scroll;color:#0d0c22}.linkarea>div{cursor:pointer;flex-shrink:0;padding:3px 10px;font-size:12px;border-radius:20px;display:flex;background-color:#44444b1a}.iconSearch>.is-focus{box-shadow:0 0 0 1px #04a3ff!important}.iconSearch>.el-input__wrapper{background-color:#44444b1a;box-shadow:0 0 0 1px transparent}.iconSearch>.el-input__wrapper>input::-moz-placeholder{color:#505050}.iconSearch>.el-input__wrapper>input::placeholder{color:#505050}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/onlineMall.1705154127287.js


+ 1 - 0
public/dist/assets/open.1705154127287.svg

@@ -0,0 +1 @@
+<?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="M21 43C16.2742 41.2327 12.3325 35.1851 10.3597 31.6428C9.50794 30.1134 9.95664 28.2347 11.3236 27.1411C12.8473 25.9222 15.0438 26.0438 16.4236 27.4236L18 29V17.5C18 16.1193 19.1193 15 20.5 15C21.8807 15 23 16.1193 23 17.5V23.5C23 22.1193 24.1193 21 25.5 21C26.8807 21 28 22.1193 28 23.5V25.5C28 24.1193 29.1193 23 30.5 23C31.8807 23 33 24.1193 33 25.5V27.5C33 26.1193 34.1193 25 35.5 25C36.8807 25 38 26.1193 38 27.5V35.368C38 36.4383 37.7354 37.496 37.1185 38.3707C36.0949 39.8219 34.255 42.0336 32 43C28.5 44.5 25.3701 44.6343 21 43Z" fill="#2F88FF" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M12 9L15 12" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M19 4L20 10" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M27 8L25 11" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 1 - 0
public/dist/assets/openType.1705154127287.css

@@ -0,0 +1 @@
+.openType>div{border-radius:6px;background-color:#fff;padding:10px;display:flex;align-items:center;justify-content:space-between}.openType>div>span{font-size:13px}

+ 1 - 0
public/dist/assets/openType.1705154127287.js

@@ -0,0 +1 @@
+import{u as e,b as l,c as n,d as a,e as o,k as s,j as p}from"./index.1705154127287.js";const u={class:"openType space-y-2"},t=o("span",null,"搜索新页面打开",-1),c=o("span",null,"标签新页面打开",-1),d=o("span",null,"进入程序自动聚焦搜索",-1),m=o("span",null,"搜索词联想功能",-1),i=o("span",null,"图标快捷搜索展示",-1),g={__name:"openType",setup(g){const f=e(),V=()=>{f.commit("updateConfig")};return(e,g)=>{const r=l("el-switch");return n(),a("div",u,[o("div",null,[t,s(r,{onChange:V,modelValue:p(f).state.config.openType.searchOpen,"onUpdate:modelValue":g[0]||(g[0]=e=>p(f).state.config.openType.searchOpen=e),class:"ml-2"},null,8,["modelValue"])]),o("div",null,[c,s(r,{onChange:V,modelValue:p(f).state.config.openType.linkOpen,"onUpdate:modelValue":g[1]||(g[1]=e=>p(f).state.config.openType.linkOpen=e),class:"ml-2"},null,8,["modelValue"])]),o("div",null,[d,s(r,{onChange:V,modelValue:p(f).state.config.openType.autofocus,"onUpdate:modelValue":g[2]||(g[2]=e=>p(f).state.config.openType.autofocus=e),class:"ml-2"},null,8,["modelValue"])]),o("div",null,[m,s(r,{onChange:V,modelValue:p(f).state.config.openType.searchRecommend,"onUpdate:modelValue":g[3]||(g[3]=e=>p(f).state.config.openType.searchRecommend=e),class:"ml-2"},null,8,["modelValue"])]),o("div",null,[i,s(r,{onChange:V,modelValue:p(f).state.config.openType.searchLink,"onUpdate:modelValue":g[4]||(g[4]=e=>p(f).state.config.openType.searchLink=e),class:"ml-2"},null,8,["modelValue"])])])}}};export{g as default};

+ 1 - 0
public/dist/assets/reload.1705154127287.svg

@@ -0,0 +1 @@
+<?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="M42 8V24" stroke="#ff4800" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 24L6 40" stroke="#ff4800" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M42 24C42 14.0589 33.9411 6 24 6C18.9145 6 14.3216 8.10896 11.0481 11.5M6 24C6 33.9411 14.0589 42 24 42C28.8556 42 33.2622 40.0774 36.5 36.9519" stroke="#ff4800" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 9 - 0
public/dist/assets/search.1705154127287.svg

@@ -0,0 +1,9 @@
+<svg width="22" height="22" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+          <path
+            d="M21 38C30.3888 38 38 30.3888 38 21C38 11.6112 30.3888 4 21 4C11.6112 4 4 11.6112 4 21C4 30.3888 11.6112 38 21 38Z"
+            fill="none" stroke="#747474" stroke-width="4" stroke-linejoin="round" />
+          <path d="M26.657 14.3431C25.2093 12.8954 23.2093 12 21.0001 12C18.791 12 16.791 12.8954 15.3433 14.3431"
+            stroke="#747474" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
+          <path d="M33.2216 33.2217L41.7069 41.707" stroke="#747474" stroke-width="4" stroke-linecap="round"
+            stroke-linejoin="round" />
+        </svg>

+ 1 - 0
public/dist/assets/setting.1705154127287.css

@@ -0,0 +1 @@
+.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/setting.1705154127287.js


+ 1 - 0
public/dist/assets/setting.1705154127287.svg

@@ -0,0 +1 @@
+<?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="M24 4L18 10H10V18L4 24L10 30V38H18L24 44L30 38H38V30L44 24L38 18V10H30L24 4Z" fill="none" stroke="#5105ff" stroke-width="4" stroke-linejoin="round"/><path d="M24 30C27.3137 30 30 27.3137 30 24C30 20.6863 27.3137 18 24 18C20.6863 18 18 20.6863 18 24C18 27.3137 20.6863 30 24 30Z" fill="none" stroke="#5105ff" stroke-width="4" stroke-linejoin="round"/></svg>

+ 1 - 0
public/dist/assets/sougou.1705154127287.svg

@@ -0,0 +1 @@
+<svg t="1650420413766" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5090" width="200" height="200"><path d="M510.050302 1009.113308a504.54878 504.54878 0 1 1 504.470793-504.54878 505.094696 505.094696 0 0 1-504.471793 504.471792z m0-980.001071a475.452291 475.452291 0 1 0 475.374303 475.452291A475.998206 475.998206 0 0 0 510.050302 29.112237z" fill="#3EA1FC" p-id="5091"></path><path d="M694.301738 913.165183c184.643375-88.538274 273.804552-237.141236 267.408544-445.965863-22.232553-344.556584-438.944951-482.863142-532.943378-268.65635-44.308131 196.187585 223.567341 174.423959 329.188966 320.45332 94.388367 133.079369 73.170656 264.443004-63.653132 394.168893z" fill="#3EA1FC" p-id="5092"></path><path d="M321.663508 96.588776C137.020133 185.12605 47.858955 333.807 54.254964 542.553638 76.487517 887.111222 493.199915 1025.41678 587.198342 811.209989c44.386119-196.187585-223.489353-174.422959-329.03299-320.374333-94.388367-133.314332-73.326632-264.755955 63.498156-394.24688z" fill="#3EA1FC" p-id="5093"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/theme.1705154127287.js


+ 1 - 0
public/dist/assets/user.1705154127287.css

@@ -0,0 +1 @@
+.user-control [userBox]{border-radius:10px;background-color:#fff;padding:10px;display:flex;flex-direction:column;align-items:center}.user-control [userBox]>div{width:100%;display:flex;flex-direction:column;align-items:center;font-size:13px}.user-control [userBox]>div>.iconfont{font-size:30px}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/user.1705154127287.js


File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/user.17051541272872.js


+ 3 - 0
public/dist/assets/wapp.1705154127287.svg

@@ -0,0 +1,3 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1686753105122" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1718"
+     width="48" height="48"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m256.717 460.186a151.962 151.962 0 0 1-87.347 65.74 83.251 83.251 0 0 1-24.474 4.096 29.082 29.082 0 0 1 0-58.163 15.667 15.667 0 0 0 6.451-1.229 91.443 91.443 0 0 0 55.91-40.96 75.264 75.264 0 0 0 11.06-39.628c0-45.978-42.496-83.866-94.31-83.866a105.267 105.267 0 0 0-51.2 13.414 81.92 81.92 0 0 0-43.725 70.452v244.224a138.445 138.445 0 0 1-72.704 120.422 159.642 159.642 0 0 1-79.77 20.48c-84.378 0-153.6-63.488-153.6-142.029a136.192 136.192 0 0 1 19.763-69.837 151.962 151.962 0 0 1 87.347-65.74 85.914 85.914 0 0 1 24.474-4.096 29.082 29.082 0 1 1 0 58.163 15.667 15.667 0 0 0-6.451 1.229 95.949 95.949 0 0 0-55.91 40.96 75.264 75.264 0 0 0-11.06 39.628c0 45.978 42.496 83.866 94.925 83.866a105.267 105.267 0 0 0 51.2-13.414 81.92 81.92 0 0 0 43.622-70.452V390.35a138.752 138.752 0 0 1 72.807-120.525 151.245 151.245 0 0 1 79.155-21.504c84.378 0 153.6 63.488 153.6 142.029a136.192 136.192 0 0 1-19.763 69.837z" fill="#FF7E05" p-id="1719" data-spm-anchor-id="a313x.7781069.0.i0" class=""></path></svg>

+ 1 - 0
public/dist/assets/webApp.1705154127287.css

@@ -0,0 +1 @@
+.manager-webApp{min-height:calc(100vh - 30px)}.webappItem{min-height:calc(100vh - 123px)}.card-box{display:grid;grid-template-columns:repeat(4,minmax(300px,450px));grid-template-rows:repeat(auto-fill,max-content);gap:20px}@media (max-width: 1700px){.card-box{grid-template-columns:repeat(3,minmax(300px,500px))}}@media (max-width: 1300px){.card-box{grid-template-columns:repeat(2,minmax(300px,600px))}}.card-box .card-box-item{box-shadow:0 0 5px #e7e7e7;border-radius:10px;padding:20px;height:100%}.card-box .card-box-item .card-box-item-logo{width:60px;height:60px;border-radius:12px;box-shadow:0 0 5px #f5f5f5}.card-swipe{width:100%;display:flex;height:-moz-max-content;height:max-content;justify-content:center;background:#fff;padding:15px 0;border-radius:10px}.card-swipe .card-swipe-item{width:-moz-max-content;width:max-content;overflow:hidden;border:3px solid #ffffff;box-shadow:0 0 5px #d2d1d1;border-radius:50px}.card-swipe .card-swipe-item>button{padding:5px 20px;height:40px;width:100px;background:#fff;font-size:14px;border-radius:50px;transition:all .2s}.selSwipe{background:#04a3ff!important;color:#fff}

File diff suppressed because it is too large
+ 0 - 0
public/dist/assets/webApp.1705154127287.js


BIN
public/dist/assets/weiboico.1705154127287.png


BIN
public/dist/assets/wiki.1705154127287.png


+ 1 - 1
public/dist/index.html

@@ -1 +1 @@
-<!doctype html><html lang="zh"><head><meta charset="UTF-8"/><link href="/favicon" rel="icon"/><meta name="version" content="{$version}"><meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>{$title}</title>{$customHead|raw}<meta content="{$keywords}" name="keywords"/><meta content="{$description}" name="description"/><script type="module" crossorigin src="/dist/assets/index.1702580971041.js"></script><link rel="stylesheet" href="/dist/assets/index.17025809710415.css"></head><body><div id="app"></div></body></html>
+<!doctype html><html lang="zh"><head><meta charset="UTF-8"/><link href="/favicon" rel="icon"/><meta name="version" content="{$version}"><meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>{$title}</title>{$customHead|raw}<meta content="{$keywords}" name="keywords"/><meta content="{$description}" name="description"/><script type="module" crossorigin src="/dist/assets/index.1705154127287.js"></script><link rel="stylesheet" href="/dist/assets/index.17051541272874.css"></head><body><div id="app"></div></body></html>

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