rabin 2 years ago
parent
commit
6d1beb18a1
2 changed files with 151 additions and 47 deletions
  1. 145 45
      src/Database.php
  2. 6 2
      src/Lib/Input.php

+ 145 - 45
src/Database.php

@@ -3825,6 +3825,79 @@ class Database
                     $table .= $table_body . $table_header;
                     $table .= '</table>';
                     $result .= $table;
+                } elseif (isset($param['update_type']) && $param['update_type'] == 3) {
+                    $table = '<style>.layui-table .layui-input, .layui-table .xm-select-parent{width:100%}</style>';
+                    $table .= '<table class="layui-table">';
+                    $table_header = '<thead><tr>';
+                    $table_body = '<tbody>';
+                    $table_body .= '<tr class="table_copy" style="display:none;">';
+                    foreach ($param['update'] as $hk => $hv) {
+                        if (isset($hv['col'])) {
+                            $hk = $hv['col'];
+                        }
+                        if ($this->id && $hk === 'id') {
+                            $hv['update'] = 'hidden';
+                        }
+                        if (isset($hv['update']) && $hv['update'] && (!isset($hv['tab']) || (isset($hv['tab']) && $hv['tab'] <= 0))) {
+                            $n = $hv['name'];
+                            unset($hv['name']);
+                            $s = '';
+                            $hv['ext'] = $param['name'] . '_c_-1_i_' . $hk;
+                            if ($hv['update'] == 'linkage') {
+                                $hv['update_width'] = '30%';
+                            }
+                            $this->update_html($hv, $hk, $hk, array(), $s, '', 'up');
+                            if ($hv['update'] == 'hidden') {
+                                $table_header .= '<td style="display:none;">'.$n.'</td>';
+                                $table_body .= '<td style="display:none;">'.$s.'</td>';
+                            } else {
+                                $table_header .= '<td>'.$n.'</td>';
+                                $table_body .= '<td>'.$s.'</td>';
+                            }
+                        }
+                    }
+                    $table_body .= '</tr>';
+
+                    if (isset($param['value']) && $param['value']) {
+                        if (!is_array($param['value'])) {
+                            $param['value'] = Dever::json_decode($param['value']);
+                        }
+                        foreach ($param['value'] as $bk => $bv) {
+                            $table_body .= '<tr>';
+                            foreach ($param['update'] as $hk => $hv) {
+                                if (isset($hv['col'])) {
+                                    $hk = $hv['col'];
+                                }
+                                if ($this->id && $hk === 'id') {
+                                    $hv['update'] = 'hidden';
+                                }
+                                if (isset($hv['update']) && $hv['update'] && (!isset($hv['tab']) || (isset($hv['tab']) && $hv['tab'] <= 0))) {
+                                    unset($hv['name']);
+                                    $s = '';
+                                    $hv['ext'] = $param['name'] . '_c_' . $bk . '_i_' . $hk;
+                                    if ($hv['update'] == 'linkage') {
+                                        $hv['update_width'] = '30%';
+                                    }
+                                    if ($hv['update'] != 'hidden') {
+                                        $hv['update_type'] = $hv['update'];
+                                        $hv['update'] = 'show';
+                                    }
+                                    $this->update_html($hv, $hk, $hk, $bv, $s);
+                                    if ($hv['update'] == 'hidden') {
+                                        $table_body .= '<td style="display:none;">'.$s.'</td>';
+                                    } else {
+                                        $table_body .= '<td>'.$s.'</td>';
+                                    }
+                                }
+                            }
+                            $table_body .= '</tr>';
+                        }
+                    }
+                    $table_body .= '</tbody>';
+                    $table_header .= '</tr></thead>';
+                    $table .= $table_body . $table_header;
+                    $table .= '</table>';
+                    $result .= $table;
                 } else {
                     if (isset($param['option'])) {
                         $delete = false;
@@ -4351,6 +4424,8 @@ class Database
             //print_r($input);
             //print_r($update_other);die;
             //print_r($config['struct']);die;
+
+            $this->checkSpec($config);
             # 增加复制的数量
             $copy_num = Dever::input('copy_num');
             if ($copy_num > 0) {
@@ -4448,6 +4523,10 @@ class Database
                     }
 
                     $this->spec($id, $config);
+
+                    if (isset($config['manage']['update_end'])) {
+                        Dever::load($config['manage']['update_end'], $id);
+                    }
                 }
             }
         }
@@ -4455,63 +4534,84 @@ class Database
         Dever::out('yes');
     }
 
-    private function spec($id, $config)
+    private function checkSpec($config)
     {
-        if (isset($config['manage']['sku'])) {
-            $spec_table = $config['manage']['sku']['spec'];
-            $sku_table = $config['manage']['sku']['sku'];
-        }
-        if (!isset($sku_table)) {
-            $sku_table = 'info_sku';
+        $spec_type = Dever::input('update_spec_type');
+        if ($spec_type == 1) {
+            $sku = Dever::input('skus');
+            if (!isset($sku[-1])) {
+                Dever::alert('规格设置不能为空');
+            }
+            if (!$sku[-1]['code']) {
+                Dever::alert('规格设置不能为空');
+            }
+        } elseif ($spec_type == 2) {
+            $spec = Dever::input('spec');
+            if (!$spec) {
+                Dever::alert('规格设置不能为空');
+            }
         }
-        $sku_table = $this->project . '/' . $sku_table;
+    }
 
+    private function spec($id, $config)
+    {
         $spec_type = Dever::input('update_spec_type');
-        if ($spec_type == 2) {
-            $spec = Dever::input('spec');
-            $sku = Dever::input('skus');
-            if ($spec && $sku) {
-                if (!isset($spec_table)) {
-                    $spec_table = 'info_spec';
-                }
-                $spec_table = $this->project . '/' . $spec_table;
-                $spec_value_table = $spec_table . '_value';
-                $spec = Dever::json_decode($spec);
-                if ($spec) {
-                    $sku_id = array();
-                    Dever::db($spec_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
-                    Dever::db($spec_value_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
-                    foreach ($spec as $k1 => $v1) {
-                        $order = $k1 + 1;
-                        if (is_numeric($v1['id'])) {
-                            $spec_id = Dever::db($spec_table)->update(array('where_id' => $v1['id'], 'set_state' => 1, 'set_reorder' => $order));
-                        } else {
-                            $spec_id = Dever::db($spec_table)->insert(array('name' => $v1['title'], 'info_id' => $id, 'reorder' => $order));
-                        }
-                        foreach ($v1['child'] as $k2 => $v2) {
-                            $v2['checked'] = $v2['checked'] ? 1 : 2;
-                            if (is_numeric($v2['id'])) {
-                                Dever::db($spec_value_table)->update(array('where_id' => $v2['id'], 'set_state' => 1, 'set_is_checked' => $v2['checked']));
+        if ($spec_type) {
+            if (isset($config['manage']['sku'])) {
+                $spec_table = $config['manage']['sku']['spec'];
+                $sku_table = $config['manage']['sku']['sku'];
+            }
+            if (!isset($sku_table)) {
+                $sku_table = 'info_sku';
+            }
+            $sku_table = $this->project . '/' . $sku_table;
+            if ($spec_type == 2) {
+                $spec = Dever::input('spec');
+                $sku = Dever::input('skus');
+                if ($spec && $sku) {
+                    if (!isset($spec_table)) {
+                        $spec_table = 'info_spec';
+                    }
+                    $spec_table = $this->project . '/' . $spec_table;
+                    $spec_value_table = $spec_table . '_value';
+                    $spec = Dever::json_decode($spec);
+                    if ($spec) {
+                        $sku_id = array();
+                        Dever::db($spec_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
+                        Dever::db($spec_value_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
+                        foreach ($spec as $k1 => $v1) {
+                            $order = $k1 + 1;
+                            if (is_numeric($v1['id'])) {
+                                $spec_id = Dever::db($spec_table)->update(array('where_id' => $v1['id'], 'set_state' => 1, 'set_reorder' => $order));
                             } else {
-                                $sku_id[$v2['id']] = Dever::db($spec_value_table)->insert(array('value' => $v2['title'], 'is_checked' => $v2['checked'], 'info_id' => $id, 'spec_id' => $spec_id));
+                                $spec_id = Dever::db($spec_table)->insert(array('name' => $v1['title'], 'info_id' => $id, 'reorder' => $order));
+                            }
+                            foreach ($v1['child'] as $k2 => $v2) {
+                                $v2['checked'] = $v2['checked'] ? 1 : 2;
+                                if (is_numeric($v2['id'])) {
+                                    Dever::db($spec_value_table)->update(array('where_id' => $v2['id'], 'set_state' => 1, 'set_is_checked' => $v2['checked']));
+                                } else {
+                                    $sku_id[$v2['id']] = Dever::db($spec_value_table)->insert(array('value' => $v2['title'], 'is_checked' => $v2['checked'], 'info_id' => $id, 'spec_id' => $spec_id));
+                                }
                             }
                         }
-                    }
-                    Dever::db($spec_table)->delete(array('info_id' => $id, 'state' => 2));
-                    Dever::db($spec_value_table)->delete(array('info_id' => $id, 'state' => 2));
+                        Dever::db($spec_table)->delete(array('info_id' => $id, 'state' => 2));
+                        Dever::db($spec_value_table)->delete(array('info_id' => $id, 'state' => 2));
 
-                    $this->sku($id, $sku_table, $sku, $sku_id);
+                        $this->sku($id, $sku_table, $sku, $sku_id);
+                    }
                 }
-            }
-        } else {
-            $sku = Dever::input('skus');
-            if ($sku) {
-                $this->sku($id, $sku_table, $sku);
+            } else {
+                $sku = Dever::input('skus');
+                if ($sku) {
+                    $this->sku($id, $sku_table, $sku);
 
-                //Dever::db($spec_table)->delete(array('info_id' => $id));
-                //Dever::db($spec_value_table)->delete(array('info_id' => $id));
+                    //Dever::db($spec_table)->delete(array('info_id' => $id));
+                    //Dever::db($spec_value_table)->delete(array('info_id' => $id));
+                }
             }
         }
+        
     }
 
     private function sku($id, $sku_table, $sku, $sku_id = false)

+ 6 - 2
src/Lib/Input.php

@@ -1519,7 +1519,7 @@ class Input
             $time = time();
         }
         if ($time) {
-            if (strlen($time) >= 10) {
+            if (strlen($time) >= 10 && !strstr($time, '-')) {
                 $value = date($parse, $time);
             } else {
                 $value = $time;
@@ -1670,9 +1670,13 @@ class Input
                     break;
                 }
             }
-        } elseif ((isset($param['update']) && $param['update'] == 'image') || (isset($param['type']) && $param['type'] == 'image')) {
+        } elseif ((isset($param['update']) && $param['update'] == 'image') || (isset($param['update_type']) && $param['update_type'] == 'image')) {
             $value = '<a href="'.$value.'" target="_blank"><img src="' . $value . '" width="150" /></a>';
         }
+
+        if (isset($param['update_type']) && $param['update_type'] == 'date') {
+            $value = date('Y-m-d H:i', $value);
+        }
         return '<div id="' . $param['name'] . '">' . $value . '</div>';
     }
 }