Просмотр исходного кода

Merge branch 'v5.0.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v5.0.0dev

From-wh 2 лет назад
Родитель
Сommit
9a6aeb11a9

+ 8 - 3
crmeb/app/adminapi/controller/v1/setting/SystemCrud.php

@@ -238,8 +238,8 @@ class SystemCrud extends AuthController
         ]);
 
         $data = [];
-        foreach ($make as $item) {
-            if (in_array($item['path'], ['pages', 'router', 'api'])) {
+        foreach ($make as $key => $item) {
+            if (in_array($key, ['pages', 'router', 'api'])) {
                 $path = Make::adminTemplatePath() . $item['path'];
             } else {
                 $path = app()->getRootPath() . $item['path'];
@@ -559,9 +559,14 @@ class SystemCrud extends AuthController
         ];
         foreach ((array)$info->field['tableField'] as $item) {
             if (isset($item['is_table']) && $item['is_table']) {
+                if (in_array($item['from_type'], ['frameImageOne', 'frameImages'])) {
+                    $keyName = 'slot';
+                } else {
+                    $keyName = 'key';
+                }
                 $columns[] = [
                     'title' => $item['table_name'] ?: $item['comment'],
-                    'key' => $item['field'],
+                    $keyName => $item['field'],
                     'from_type' => $item['from_type'],
                 ];
             }

+ 6 - 1
crmeb/app/adminapi/controller/v1/system/SystemFile.php

@@ -69,7 +69,12 @@ class SystemFile extends AuthController
     //打开目录
     public function opendir()
     {
-        return app('json')->success($this->services->opendir());
+        [$dir, $fileDir, $superior] = $this->request->getMore([
+            ['dir', ''],
+            ['filedir', ''],
+            ['superior', ''],
+        ], true);
+        return app('json')->success($this->services->opendir($dir, $fileDir, $superior));
     }
 
     //文件备注

+ 3 - 1
crmeb/app/adminapi/route/setting.php

@@ -59,7 +59,9 @@ Route::group('setting', function () {
             ],
         ]);
         //未添加的权限规则列表
-        Route::get('ruleList', 'v1.setting.SystemMenus/ruleList')->option(['real_name' => '未添加的权限规则列表']);
+        Route::get('ruleList', 'v1.setting.SystemMenus/ruleList')->option(['real_name' => '权限规则列表']);
+        //权限规则分类
+        Route::get('rule_cate', 'v1.setting.SystemMenus/ruleCate')->option(['real_name' => '权限规则分类']);
         //修改显示
         Route::put('menus/show/:id', 'v1.setting.SystemMenus/show')->name('SystemMenusShow')->option(['real_name' => '修改权限规格显示状态']);
     })->option(['parent' => 'setting', 'cate_name' => '权限菜单']);

+ 2 - 0
crmeb/app/services/system/SystemCrudServices.php

@@ -855,11 +855,13 @@ class SystemCrudServices extends BaseServices
         $validate = app()->make(Validate::class);
         $validate->setFilePathName($filePath['validate'] ?? '')->setbasePath($basePath)->handle($tableName, [
             'field' => $options['fromField'],
+            'modelName' => $options['modelName'] ?? '',
         ]);
         //生成控制器
         $controller = app()->make(Controller::class);
         $controller->setFilePathName($filePath['controller'] ?? '')->setbasePath($basePath)->handle($tableName, [
             'usePath' => $service->getUsePath(),
+            'modelName' => $options['modelName'] ?? '',
             'validateName' => '\\' . str_replace('/', '\\', $validate->getUsePath()) . 'Validate::class',
             'field' => array_column($options['fromField'], 'field'),
         ]);

+ 30 - 16
crmeb/app/services/system/log/SystemFileServices.php

@@ -233,29 +233,25 @@ class SystemFileServices extends BaseServices
     }
 
     //打开目录
-    public function opendir()
+    public function opendir($dir, $fileDir, $superior)
     {
         $markList = app()->make(SystemFileInfoServices::class)->getColumn([], 'mark', 'full_path');
         $fileAll = array('dir' => [], 'file' => []);
         //根目录
-        $rootdir = $this->formatPath(app()->getRootPath());
-        //当前目录
-        $request_dir = app('request')->param('dir');
+        $rootDir = $this->formatPath(app()->getRootPath());
         //防止查看站点以外的目录
-        if (strpos($request_dir, $rootdir) === false) {
-            $request_dir = $rootdir;
+        if (strpos($dir, $rootDir) === false || $dir == '') {
+            $dir = $rootDir;
         }
         //判断是否是返回上级
-        if (app('request')->param('superior') && !empty($request_dir)) {
-            if (strpos(dirname($request_dir), $rootdir) !== false) {
-                $dir = dirname($request_dir);
+        if ($superior) {
+            if (strpos(dirname($dir), $rootDir) !== false) {
+                $dir = dirname($dir);
             } else {
-                $dir = $rootdir;
+                $dir = $rootDir;
             }
-
         } else {
-            $dir = !empty($request_dir) ? $request_dir : $rootdir;
-            $dir = rtrim($dir, DS) . DS . app('request')->param('filedir');
+            $dir = $dir . '/' . $fileDir;
         }
         $list = scandir($dir);
         foreach ($list as $key => $v) {
@@ -272,12 +268,12 @@ class SystemFileServices extends BaseServices
         $uname = php_uname('s');
         if (strstr($uname, 'Windows') !== false) {
             $dir = ltrim($dir, '\\');
-            $rootdir = str_replace('\\', '\\\\', $rootdir);
+            $rootDir = str_replace('\\', '\\\\', $rootDir);
         }
         $list = array_merge($fileAll['dir'], $fileAll['file']);
         $navList = [];
         foreach ($list as $key => $value) {
-            $list[$key]['real_path'] = str_replace($rootdir, '', $value['pathname']);
+            $list[$key]['real_path'] = str_replace($rootDir, '', $value['pathname']);
             $list[$key]['mtime'] = date('Y-m-d H:i:s', $value['mtime']);
 
             $navList[$key]['title'] = $value['filename'];
@@ -288,8 +284,26 @@ class SystemFileServices extends BaseServices
             $navList[$key]['pathname'] = $value['pathname'];
             $navList[$key]['contextmenu'] = true;
             $list[$key]['mark'] = $markList[str_replace(root_path(), '/', $value['pathname'])] ?? '';
+            $count = app()->make(SystemFileInfoServices::class)->count(['full_path' => $list[$key]['real_path']]);
+            if (!$count) app()->make(SystemFileInfoServices::class)->save([
+                'name' => $value['filename'],
+                'path' => str_replace('/' . $value['filename'], '', $list[$key]['real_path']),
+                'full_path' => $list[$key]['real_path'],
+                'type' => $value['type'],
+                'create_time' => date('Y-m-d H:i:s', $value['ctime']),
+                'update_time' => date('Y-m-d H:i:s', time()),
+            ]);
+        }
+        $routeList = [['key' => '根目录', 'route' => '']];
+        $pathArray = explode('/', str_replace($rootDir, '', $dir));
+        $str = '';
+        foreach ($pathArray as $item) {
+            if ($item) {
+                $str = $str . '/' . $item;
+                $routeList[] = ['key' => $item, 'route' => $rootDir . $str];
+            }
         }
-        return compact('dir', 'list', 'navList');
+        return compact('dir', 'list', 'navList', 'routeList');
     }
 
     //读取文件

+ 1 - 0
crmeb/crmeb/services/crud/Controller.php

@@ -90,6 +90,7 @@ class Controller extends Make
 
         [$className, $contentController] = $this->getStubContent($name, 'controller');
 
+        $this->value['modelName'] = $options['modelName'] ?? $name;
         $this->value['nameCamel'] = Str::studly($name);
         $this->value['name'] = $className;
         $this->value['path'] = $this->getfolderPath($path);

+ 1 - 0
crmeb/crmeb/services/crud/Model.php

@@ -56,6 +56,7 @@ class Model extends Make
             $this->value['use-php'] = "use think\model\concern\SoftDelete;\n";
             $this->value['content-php'] = $this->tab() . "use SoftDelete;\n";
         }
+        $this->value['modelName'] = $options['modelName'] ?? $name;
         return parent::handle($name, $options);
     }
 

+ 2 - 2
crmeb/crmeb/services/crud/Service.php

@@ -67,10 +67,10 @@ class Service extends Make
             foreach ($field as $item) {
                 switch ($item['type']) {
                     case 'frameImageOne':
-                        $from[] = $this->tab(2) . $this->getframeImageOnePhpContent($item['field'], $item['name'], $item['required'] ?? false) . ';';
+                        $from[] = $this->tab(2) . $this->getframeImageOnePhpContent($item['field'], $item['name']) . ';';
                         break;
                     case 'frameImages':
-                        $from[] = $this->tab(2) . $this->getframeImagesPhpContent($item['field'], $item['name'], $item['required'] ?? false) . ';';
+                        $from[] = $this->tab(2) . $this->getframeImagesPhpContent($item['field'], $item['name']) . ';';
                         break;
                     default:
                         $valueContent = "''";

+ 1 - 0
crmeb/crmeb/services/crud/Validate.php

@@ -51,6 +51,7 @@ class Validate extends Make
         [$rule, $message] = $this->getRuleContent($options['field']);
         $this->value['rule-php'] = $rule;
         $this->value['message-php'] = $message;
+        $this->value['modelName'] = $options['modelName'] ?? $name;
         return parent::handle($name, $options); // TODO: Change the autogenerated stub
     }
 

+ 1 - 0
crmeb/crmeb/services/crud/stubs/controller/crudController.stub

@@ -12,6 +12,7 @@
  */
 
 /**
+ * {%modelName%}
  * @author crud自动生成代码
  * @date {%time%}
  */

+ 1 - 0
crmeb/crmeb/services/crud/stubs/dao/crudDao.stub

@@ -12,6 +12,7 @@
  */
 
 /**
+ * {%modelName%}
  * @author crud自动生成代码
  * @date {%time%}
  */

+ 1 - 0
crmeb/crmeb/services/crud/stubs/model/crudModel.stub

@@ -12,6 +12,7 @@
  */
 
 /**
+ * {%modelName%}
  * @author crud自动生成代码
  * @date {%time%}
  */

+ 4 - 0
crmeb/crmeb/services/crud/stubs/model/getattr.stub

@@ -0,0 +1,4 @@
+    public function get{%field%}Attr($value)
+    {
+{%content-php%}
+    }

+ 1 - 1
crmeb/crmeb/services/crud/stubs/service/crudService.stub

@@ -12,6 +12,7 @@
  */
 
 /**
+ * {%modelName%}
  * @author crud自动生成代码
  * @date {%time%}
  */
@@ -23,7 +24,6 @@ use think\exception\ValidateException;
 {%use-php%}
 
 /**
- * {%modelName%}
  * Class CrudService
  * @date {%date%}
  * @package app\services\crud{%path%}

+ 1 - 0
crmeb/crmeb/services/crud/stubs/validate/crudValidate.stub

@@ -12,6 +12,7 @@
  */
 
 /**
+ * {%modelName%}
  * @author crud自动生成代码
  * @date {%time%}
  */

+ 38 - 0
template/admin/src/pages/crud/index.vue

@@ -85,6 +85,44 @@ export default {
           width: 100,
           align: 'center',
         });
+        res.data.columns.map(item=>{
+          if(item.from_type === 'frameImageOne'){
+            item.render = (h,params)=>{
+                return h('div',{
+                  class:'tabBox_img',
+                  directives:[{
+                    name:'viewer'
+                  }]
+                },[
+                  h('img',{
+                    directives:[{
+                      name:'lazy',
+                      value: params.row[item.slot]
+                    }],
+                  })
+                ])
+            }
+          } else if(item.from_type === 'frameImages'){
+            item.render = (h,params)=>{
+              let image = params.row[item.slot] || []
+              let imageH = [];
+              image.map(item=>{
+                imageH.push(h('img',{
+                  directives:[{
+                    name:'lazy',
+                    value: item
+                  }],
+                }));
+              })
+              return h('div',{
+                class:'tabBox_img',
+                directives:[{
+                  name:'viewer'
+                }]
+              },imageH)
+            }
+          }
+        })
         this.columns = res.data.columns;
         this.getList();
       });

+ 16 - 14
template/admin/src/pages/system/maintain/systemFile/opendir.vue

@@ -207,12 +207,13 @@ export default {
           slot: 'filename',
           minWidth: 150,
           back: '返回上级',
+          sortable: true
         },
-        {
-          title: '文件/文件夹路径',
-          key: 'real_path',
-          minWidth: 150,
-        },
+        // {
+        //   title: '文件/文件夹路径',
+        //   key: 'real_path',
+        //   minWidth: 150,
+        // },
         {
           title: '文件/文件夹大小',
           key: 'size',
@@ -222,6 +223,7 @@ export default {
           title: '更新时间',
           key: 'mtime',
           minWidth: 150,
+          sortable: true,
         },
         {
           title: '备注',
@@ -231,7 +233,7 @@ export default {
         {
           title: '操作',
           slot: 'action',
-          minWidth: 150,
+          width: 100,
         },
       ],
       formItem: {
@@ -346,7 +348,7 @@ export default {
     open(row) {
       // this.rows = row;
       this.formItem = {
-        dir: row.path ? row.path + '/' : row.path,
+        dir: row.path,
         superior: 0,
         filedir: row.filename,
         fileToken: this.fileToken,
@@ -356,19 +358,19 @@ export default {
     jumpRoute(item) {
       console.log
       let data = {
-        path: item.route ? item.route : '',
-        filename: item.route ? item.key : '',
+        path: item.route,
+        filename: '',
       };
       this.open(data);
     },
     refreshRoute() {
       let data = {
-        dir: this.routeList[this.routeList.length - 1].route,
-        filename: this.routeList[this.routeList.length - 1].key,
+        path: this.routeList[this.routeList.length - 1].route,
+        filename: '',
       };
       this.open(data);
     },
-    // 编辑
+    // 编辑ß
     edit(row) {
       this.navItem = row;
       this.spinShow = true;
@@ -943,7 +945,7 @@ export default {
   min-width: 800px;
   max-width: max-content;
   border: 1px solid #cfcfcf;
-  background: #f3f3f3;
+  background: #f6f6f6;
   .refresh{
     background: #fff;
     border-left: 1px solid #cfcfcf;
@@ -958,7 +960,7 @@ export default {
     cursor: pointer;
   }
   .refresh:hover,.back:hover{
-    background: #20a53a;
+    background: #2D8cF0;
     border-color: #38983b;
     color: #fff;
   }