rabin 1 year ago
parent
commit
e2f48ff9f2
2 changed files with 26 additions and 4 deletions
  1. 22 4
      api/Page/Update.php
  2. 4 0
      lib/Page.php

+ 22 - 4
api/Page/Update.php

@@ -34,7 +34,7 @@ class Update extends Page
                 $show[$v['key']] = array($k, $v['show']);
             }
             if (isset($v['default']) && is_string($v['default']) && strstr($v['default'], '{')) {
-                $default[$v['key']] = array($k, $v['default'], $v['key']);
+                $default[$v['key']] = array($k, $v['default']);
             }
             $data['field'][$v['key']] = $v['value'];
             if ($v['type'] == 'sku') {
@@ -81,6 +81,14 @@ class Update extends Page
                 $this->setInfo($v, $data, $remote, $show, $source, $default, 2);
                 $option[$k] = $data['option'];
             }
+            if (isset($data['reset'])) {
+                foreach ($data['reset'] as $k1 => $v1) {
+                    if (isset($data['option'][$k1])) {
+                        unset($data['option'][$k1]);
+                        $data['field'][$k1] = $v1;
+                    }
+                }
+            }
         } else {
             if ($remote) {
                 $info = array();
@@ -157,21 +165,29 @@ class Update extends Page
         if ($default) {
             foreach ($default as $k => $v) {
                 $data['update'][$v[0]]['value'] = $this->getShow($v[1], $info);
-                $data['field'][$v[2]] = $this->getShow($v[1], $info);
+                $data['field'][$k] = $this->getShow($v[1], $info);
             }
         }
     }
 
-    private function setUpdate(&$info, &$data, $result)
+    private function setUpdate(&$info, &$data, $result, $remote = array())
     {
         foreach ($data['update'] as $k => $v) {
             if (isset($result[$v['key']])) {
+                # 批量更新时,默认数据需要重置
+                if (!isset($data['reset'][$v['key']])) {
+                    $data['reset'][$v['key']] = $data['field'][$v['key']];
+                }
                 if (isset($result[$v['key']]['option'])) {
                     $data['option'][$v['key']] = $result[$v['key']]['option'];
                     unset($result[$v['key']]['option']);
                 }
                 if (empty($data['field'][$v['key']]) && isset($result[$v['key']]['value'])) {
-                    $data['field'][$v['key']] = $result[$v['key']]['value'];
+                    if (is_array($data['field'][$v['key']]) && !is_array($result[$v['key']]['value'])) {
+                        $data['field'][$v['key']] = explode(',', $result[$v['key']]['value']);
+                    } else {
+                        $data['field'][$v['key']] = $result[$v['key']]['value'];
+                    }
                 }
                 if (isset($result[$v['key']]['set']) && $info) {
                     $info = array_merge($info, $result[$v['key']]['set']);
@@ -445,6 +461,8 @@ class Update extends Page
                     foreach ($update as $k2 => $v2) {
                         if (isset($v1[$k2])) {
                             $this->doData($value, $k2, $v1[$k2]);
+                        } else {
+                            $value[$k2] = '';
                         }
                     }
                     if ($drag) {

+ 4 - 0
lib/Page.php

@@ -355,6 +355,10 @@ class Page extends Auth
                 }
             }
         }
+
+        if (isset($value['date_type']) && $value['date_type'] == 'datetimerange' && empty($value['default'])) {
+            $value['default'] = array(\Dever\Helper\Date::mktime(date('Y-m-d 00:00:00'))*1000, \Dever\Helper\Date::mktime(date('Y-m-d 23:59:59'))*1000);
+        }
     }
 
     private function setDisable(&$value, $disable)