rabin 2 years ago
parent
commit
3fc10fb8bc

+ 2 - 83
assets/layadmin/html/project/database/update.html

@@ -66,89 +66,8 @@
     <input type="hidden" name="copy_num" id="copy_num" value="0"/>
     <iframe id="f1" name="f1" style="display:none;"></iframe>
 
-    <div class="layui-row layui-col-space15">
-      <div class="layui-col-md12">
-        <div class="layui-card">
-          <div class="layui-card-header" style="display:none;">响应式组合</div>
-          <div id="desc" class="layui-card-body"></div>
-          <div class="layui-card-body" id="content">
-            <form class="layui-form" action="" lay-filter="component-form-element">
-              <div class="layui-row layui-col-space10 layui-form-item">
-                <div class="layui-col-lg12">
-                  <label class="layui-form-label">员工姓名:</label>
-                  <div class="layui-input-block">
-                    <input type="text" name="fullname" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
-                  </div>
-                </div>
-                <div class="layui-col-lg12">
-                  <label class="layui-form-label">技术工种:</label>
-                  <div class="layui-input-block">
-                    <select name="type" lay-verify="required" lay-filter="aihao">
-                      <option value=""></option>
-                      <option value="0">前端工程师</option>
-                      <option value="1">Node.js工程师</option>
-                      <option value="2">PHP工程师</option>
-                      <option value="3">Java工程师</option>
-                      <option value="4">运维</option>
-                      <option value="4">视觉设计师</option>
-                    </select>
-                  </div>
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <label class="layui-form-label">兴趣爱好:</label>
-                <div class="layui-input-block">
-                  <input type="checkbox" name="interest[write]" title="写作">
-                  <input type="checkbox" name="interest[read]" title="阅读">
-                  <input type="checkbox" name="interest[code]" title="代码" checked>
-                  <input type="checkbox" name="interest[dreaming]" title="做梦">
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <label class="layui-form-label">是否婚姻:</label>
-                <div class="layui-input-block">
-                  <input type="checkbox" name="marriage" lay-skin="switch" lay-text="是|否">
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <label class="layui-form-label">所属职称:</label>
-                <div class="layui-input-block">
-                  <input type="radio" name="role" value="" title="经理">
-                  <input type="radio" name="role" value="" title="主管">
-                  <input type="radio" name="role" value="" title="码农" checked>
-                  <input type="radio" name="role" value="" title="端水">
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <label class="layui-form-label">其它信息:</label>
-                <div class="layui-input-block">
-                  <textarea name="other" placeholder="" class="layui-textarea"></textarea>
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <label class="layui-form-label"> </label>
-                <div class="layui-input-block">
-                  <input type="checkbox" name="agreement" title="同意" lay-skin="primary" checked>
-                </div>
-              </div>
-              <div class="layui-form-item">
-                <div class="layui-input-block">
-                  <button class="layui-btn" lay-submit lay-filter="component-form-element">立即提交</button>
-                  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
-                </div>
-              </div>
-            </form>
-          </div>
-          <div class="layui-card-body">
-            <div class="layui-form-item">
-                <div id="update_button">
-                  <button class="layui-btn" lay-submit lay-filter="component-form-element">立即提交</button>
-                  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
-                </div>
-              </div>
-            </div>
-        </div>
-      </div>
+    <div class="layui-row layui-col-space15" id="data_content">
+      
     </div>
     <div id="valid"></div>
     <div id="struct" style="display:none;"></div>

+ 101 - 0
database/module.php

@@ -0,0 +1,101 @@
+<?php
+
+return array
+(
+    # 表名
+    'name' => 'module',
+    # 显示给用户看的名称
+    'lang' => '模块管理',
+    'desc' => '模块功能可视化管理功能开发中,暂时支持手动新增',
+    'order' => -100,
+    'menu' => false,
+    'check' => 'key',
+    'end' => array
+    (
+    	'update' => 'manage/module.create',
+        'insert' => 'manage/module.create',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-32',
+            'name'      => '模块名称',
+            'default'   => '',
+            'desc'      => '模块名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'path'      => array
+        (
+            'type'      => 'varchar-32',
+            'name'      => '模块根目录-填写模块所属根目录,为空则当前模块建立在根目录',
+            'default'   => '',
+            'desc'      => '模块目录',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'domain'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '域名-填写当前模块域名,如不填写则取当前管理组件的根域名',
+            'default'   => '',
+            'desc'      => '模块目录',
+            'match'     => 'option',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+        
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '录入时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+    
+    'manage' => array
+    (
+        # 增加批量更新功能,根据哪个字段批量更新
+        //'update_mul' => 'name',
+    ),
+    
+    # request 请求接口定义
+    'request' => array
+    (
+        
+    ),
+);

+ 177 - 29
src/Database.php

@@ -2886,10 +2886,6 @@ class Database
     {
         $config = $this->config();
 
-        $result = array();
-
-        $prefix = 'update';
-
         $data = array();
 
         if ($this->id) {
@@ -2899,23 +2895,155 @@ class Database
             }
 
             $data = $this->load('one', $this->id);
+        } else {
+            # 新增权限
+            if (Dever::load('manage/auth.oper', 4) == false) {
+                Dever::alert('你没有权限');
+            }
+        }
+        $data = $this->getAdminInfo($data);
+        $col = Dever::input('col');
+
+        $result = $this->update_struct($config, $col, $data);
+
+        //print_r($result);die;
+
+        return $result;
+    }
+
+    public function update_content()
+    {
+        $config = $this->config();
 
-            if ($data) {
-                //$prefix = 'set';
+        $data = array();
+
+        if ($this->id) {
+            # 新增权限
+            if (Dever::load('manage/auth.oper', 3) == false) {
+                Dever::alert('你没有权限');
             }
+            $data = $this->load('one', $this->id);
         } else {
             # 新增权限
             if (Dever::load('manage/auth.oper', 4) == false) {
-                //Dever::alert('你没有权限');
+                Dever::alert('你没有权限');
             }
         }
-
-        //print_r($config['manage']['update']);die;
         $data = $this->getAdminInfo($data);
         $col = Dever::input('col');
 
+        Dever::setInput('ajax', 1);
+
+        $result = '<div class="layui-col-md12"><div class="layui-card" {style}><div class="layui-card-body">';
+        if (isset($config['manage']['lang']) && Dever::config('base')->lang_set) {
+            $result .= '<div class="layui-tab layui-tab-card"><ul class="layui-tab-title">';
+            $tab = '<div class="layui-tab-content">';
+            $i = 0;
+            if ($col) {
+                $col = explode(',', $col);
+                $config['manage']['lang'] = explode(',', $config['manage']['lang']);
+                $config['manage']['lang'] = array_intersect($config['manage']['lang'], $col);
+                $config['manage']['lang'] = implode(',', $config['manage']['lang']);
+                $col = implode(',', $col);
+            }
+            foreach (Dever::config('base')->lang_set as $k => $v) {
+                if ($i == 0) {
+                    $prefix = '';
+                } else {
+                    $prefix = $k;
+                    $col = $config['manage']['lang'];
+                    //$prefix = 'l-l' . $k . 'l-l';
+                    //$data = $this->load('one', $this->id, $this->table . '__' . $k);
+                }
+                if (isset($config['manage']['tab'])) {
+                    $content = '';
+                    $j = 0;
+                    foreach ($config['manage']['tab'] as $k1 => $v1) {
+                        $html = $this->update_struct($config, $col, $data, $k1, $prefix);
+                        if ($html) {
+                            $content .= '<div class="layui-colla-item"><h2 class="layui-colla-title">'.$v1.'</h2><div class="layui-colla-content layui-show">' . $html . '</div></div>';
+                            $j++;
+                        }
+                    }
+                    if ($content) {
+                        $class_0 = $class_1 = '';
+                        if ($i == 0) {
+                            $class_0 = 'layui-this';
+                            $class_1 = 'layui-show';
+                        }
+                        $result .= '<li class="'.$class_0.'">'.$v.'</li>';
+                        $tab .= '<div class="layui-tab-item '.$class_1.'"><div class="layui-collapse" lay-filter="component-panel">'.$content.'</div></div>';
+                        $i++;
+                    }
+                } else {
+                    $content = $this->update_struct($config, $col, $data, -1, $prefix);
+                    if ($content) {
+                        $class_0 = $class_1 = '';
+                        if ($i == 0) {
+                            $class_0 = 'layui-this';
+                            $class_1 = 'layui-show';
+                        }
+                        $result .= '<li class="'.$class_0.'">'.$v.'</li>';
+                        $tab .= '<div class="layui-tab-item '.$class_1.'">'.$content.'</div>';
+                        $i++;
+                    }
+                }
+            }
+            $tab .= '</div>';
+            $result .= '</ul>' . $tab . '</div>';
+        } elseif (isset($config['manage']['tab'])) {
+            $result .= '<div class="layui-tab layui-tab-card"><ul class="layui-tab-title">';
+            $tab = '<div class="layui-tab-content">';
+            $i = 0;
+            foreach ($config['manage']['tab'] as $k => $v) {
+                $content = $this->update_struct($config, $col, $data, $k);
+                if ($content) {
+                    $class_0 = $class_1 = '';
+                    if ($i == 0) {
+                        $class_0 = 'layui-this';
+                        $class_1 = 'layui-show';
+                    }
+                    $result .= '<li class="'.$class_0.'">'.$v.'</li>';
+                    $tab .= '<div class="layui-tab-item '.$class_1.'">'.$content.'</div>';
+                    $i++;
+                }
+            }
+            $tab .= '</div>';
+            $result .= '</ul>' . $tab . '</div>';
+        } else {
+            $result .= $this->update_struct($config, $col, $data);
+        }
+
+        if (isset($this->card) && $this->card) {
+            $result = str_replace('{style}', 'style="display:none"', $result);
+        }
+
+        $button = '<div class="layui-card-body"><div class="layui-form-item">' . $this->update_button() . '</div></div>';
+
+        $result .= '</div>'.$button.'</div></div>';
+
+        //print_r($result);die;
+
+        return $result;
+    }
+
+    private function update_struct($config, $col, $data, $tab = -1, $prefix = '')
+    {
+        $result = array();
         foreach ($config['struct'] as $k => $v) {
-            if (isset($v['update']) && $v['update']) {
+            $state = false;
+            if ($tab == 0) {
+                if (!isset($v['tab']) || (isset($v['tab']) && $v['tab'] == $tab)) {
+                    $state = true;
+                }
+            } elseif ($tab > 0) {
+                if (isset($v['tab']) && $v['tab'] == $tab) {
+                    $state = true;
+                }
+            } else {
+                $state = true;
+            }
+            if (isset($v['update']) && $v['update'] && $state) {
                 if ($col && !strstr(',' . $col . ',', ',' . $k . ',')) {
                     continue;
                 }
@@ -2926,6 +3054,10 @@ class Database
                         continue;
                     }
                 }
+                $index = $k;
+                if ($prefix) {
+                    $k = $prefix . '_' . $k;
+                }
                 # 处理show模式下的class
                 $class = $this->update_class($k, $v, '', $data);
 
@@ -2958,8 +3090,6 @@ class Database
             return implode('', $result);
         }
 
-        //print_r($result);die;
-
         return $result;
     }
 
@@ -3046,7 +3176,7 @@ class Database
      *
      * @return string
      */
-    public function create_update_html($key, $value, $data = array())
+    public function create_update_html($key, $value, $data = array(), $index = false)
     {
         $result = '';
 
@@ -3071,7 +3201,10 @@ class Database
             $value['update'] = 'hidden';
         }
 
-        $this->update_html($value, $key, $key, $data, $result);
+        if (!$index) {
+            $index = $key;
+        }
+        $this->update_html($value, $key, $index, $data, $result);
 
         return $result;
     }
@@ -3366,7 +3499,7 @@ class Database
             $prefix = 'add';
         }
         if ($method && $input) {
-            $update = $order = array();
+            $update = $order = $update_other = array();
             $i = 0;
             $c = array();
             foreach ($input as $k => $v) {
@@ -3424,7 +3557,11 @@ class Database
                             $update[$i]['where_id'] = $v;
                         }
                     } else {
-                        if (strpos($k, '-')) {
+                        if (strpos($k, 'l-l')) {
+                            $temp = explode('l-l', $k);
+                            $k = str_replace('_', '', $temp[2]);
+                            $update_other[$i][$temp[1]][$k] = $v;
+                        } elseif (strpos($k, '-')) {
                             $k = str_replace('update_', '', $k);
                             if (isset($config['struct'][$k]) && isset($config['struct'][$k]['sync'])) {
                                 $s_col = $config['struct'][$k]['sync'][0];
@@ -3438,13 +3575,13 @@ class Database
                                 $temp = explode('-', $k);
                                 $index = $temp[0] . '/' . $temp[1];
 
-                                $update_other_set[$index]['set_' . $temp[2]] = $v;
-                                //$update_other_set[$index]['set_' . $m_col] = $s_value;
+                                $update_set[$index]['set_' . $temp[2]] = $v;
+                                //$update_set[$index]['set_' . $m_col] = $s_value;
 
-                                $update_other_add[$index]['add_' . $temp[2]] = $v;
-                                $update_other_add[$index]['add_' . $m_col] = $s_value;
+                                $update_add[$index]['add_' . $temp[2]] = $v;
+                                $update_add[$index]['add_' . $m_col] = $s_value;
 
-                                $update_other_id[$index]['option_' . $m_col] = $s_value;
+                                $update_id[$index]['option_' . $m_col] = $s_value;
                             }
                         } else {
                             if (is_array($v)) {
@@ -3474,9 +3611,9 @@ class Database
                 }
             }
 
-            //print_r($update_other_set);die;
+            //print_r($update_set);die;
             //print_r($input);
-            //print_r($update_other);die;
+            //print_r($update_other);
             //print_r($config['struct']);die;
             # 增加复制的数量
             $copy_num = Dever::input('copy_num');
@@ -3513,21 +3650,29 @@ class Database
                 if ($id) {
                     $struct = $this->struct_data($config['struct'], $v, $old);
                     Log::add($this->project, $this->table, $this->menu_id, '', $method, $struct, $id ? $id : $this->id);
+
+                    if ($update_other && isset($update_other[$k])) {
+                        foreach ($update_other[$k] as $k1 => $v1) {
+                            $v1['id'] = $id;
+                            $this->load($method, $v1, $this->table . '__' . $k1);
+                        }
+                    }
                 }
 
-                if (isset($update_other_id) && $update_other_id) {
-                    foreach ($update_other_set as $k => $v) {
-                        $check = Dever::load($k . '-one', $update_other_id[$k]);
+                if (isset($update_id) && $update_id) {
+                    foreach ($update_set as $k => $v) {
+                        $check = Dever::load($k . '-one', $update_id[$k]);
                         //print_r($check);die;
                         if ($check) {
                             $v['where_id'] = $check['id'];
                             Dever::load($k . '-update', $v);
                         } else {
-                            Dever::load($k . '-insert', $update_other_add[$k]);
+                            Dever::load($k . '-insert', $update_add[$k]);
                         }
                     }
                 }
             }
+
         }
 
         Dever::out('yes');
@@ -4098,9 +4243,12 @@ class Database
      *
      * @return mixed
      */
-    private function load($method = 'one', $param = array())
+    private function load($method = 'one', $param = array(), $table = false)
     {
-        return Dever::load($this->project . '/' . $this->table . '-' . $method, $param);
+        if (!$table) {
+            $table = $this->table;
+        }
+        return Dever::load($this->project . '/' . $table . '-' . $method, $param);
     }
 
     /**

+ 28 - 0
src/Module.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace Manage\Src;
+
+use Dever;
+
+class Module
+{
+    public function create($id, $name, $data)
+    {
+        $name = Dever::param('name', $data);
+        $path = Dever::param('path', $data);
+        $domain = Dever::param('domain', $data);
+        if ($name) {
+        	if (!$domain) {
+        		$url = Dever::config('host')->host . DEVER_PROJECT . '/' . $path . '/' . $name . '/';
+        	} else {
+        		$url = $domain;
+        		if (strstr($url, 'www')) {
+        			$url = str_replace('www', $name, $url);
+        		}
+        	}
+
+        	Dever::curl($url);
+        	Dever::load('manage/menu.update');
+        }
+    }
+}

+ 6 - 5
template/layadmin/project/database/update.php

@@ -25,8 +25,9 @@ $view
 
 //->fetch('.dever_update_add', 'manage/database.info#updateMul', 'none')
 
-# 渲染数据
-->loop('#content','manage/database.update')
+# 渲染数据 不再使用单一的card
+//->loop('#content','manage/database.update')
+->fetch('#data_content','manage/database.update_content')
 
 # 数据结构
 ->fetch('#struct', '/database.info#struct')
@@ -38,16 +39,16 @@ $view
 ->fetch('#struct@save','manage/database.save')
 
 # 配置按钮
-->fetch('#update_button','manage/database.update_button')   
+//->fetch('#update_button','manage/database.update_button')   
 
 # 配置重复提交
 ->fetch('#update_button@submit','<{Dever::submit()}>')
 #banner
 ->call('manage/project/database/list:banner') 
 
-->fetch(array('.layui-card@style', 0), '/database.layui_card', 'none')
+//->fetch(array('.layui-card@style', 0), '/database.layui_card', 'none')
 
-->fetch('.layui-col-md12@class', '/database.card')
+//->fetch('.layui-col-md12@class', '/database.card')
 
 
 # display