|
@@ -4,22 +4,28 @@ use Manage\Lib\Page;
|
|
# 更新页
|
|
# 更新页
|
|
class Update extends Page
|
|
class Update extends Page
|
|
{
|
|
{
|
|
- public function __construct($load = '', $id = false)
|
|
|
|
|
|
+ public function __construct($load = '', $input = true)
|
|
{
|
|
{
|
|
- parent::__construct('update', $load, $id);
|
|
|
|
|
|
+ parent::__construct('update', $load, $input);
|
|
}
|
|
}
|
|
public function get(&$value = array(), &$option = array())
|
|
public function get(&$value = array(), &$option = array())
|
|
{
|
|
{
|
|
$func = $this->checkFunc();
|
|
$func = $this->checkFunc();
|
|
- $remote = $show = $spec = array();
|
|
|
|
|
|
+ $remote = $show = $spec = $source = array();
|
|
$data['update'] = $data['field'] = $data['option'] = array();
|
|
$data['update'] = $data['field'] = $data['option'] = array();
|
|
$this->setting('field', $data['update'], true, 'text');
|
|
$this->setting('field', $data['update'], true, 'text');
|
|
foreach ($data['update'] as $k => $v) {
|
|
foreach ($data['update'] as $k => $v) {
|
|
- if ($v['type'] == 'tree' || $v['type'] == 'upload') {
|
|
|
|
|
|
+ if ($v['type'] == 'tree' || $v['type'] == 'upload' || $v['type'] == 'cascader' || $v['type'] == 'checkbox' || isset($v['multiple'])) {
|
|
$v['value'] = array();
|
|
$v['value'] = array();
|
|
}
|
|
}
|
|
|
|
+ if (isset($v['source'])) {
|
|
|
|
+ $source[$v['key']] = $v['source'];
|
|
|
|
+ }
|
|
if (isset($v['remote'])) {
|
|
if (isset($v['remote'])) {
|
|
$remote[$v['key']] = array($k, $v['remote'], $v['key']);
|
|
$remote[$v['key']] = array($k, $v['remote'], $v['key']);
|
|
|
|
+ if (isset($v['remote_default']) && !$v['remote_default']) {
|
|
|
|
+ unset($remote[$v['key']][2]);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (isset($v['spec_data'])) {
|
|
if (isset($v['spec_data'])) {
|
|
$spec[$v['key']] = array($k, $v['spec_data'], $v['key'] . '_spec');
|
|
$spec[$v['key']] = array($k, $v['spec_data'], $v['key'] . '_spec');
|
|
@@ -57,7 +63,7 @@ class Update extends Page
|
|
}
|
|
}
|
|
if ($this->info) {
|
|
if ($this->info) {
|
|
$info = $this->info;
|
|
$info = $this->info;
|
|
- $this->setInfo($info, $data, $remote, $show);
|
|
|
|
|
|
+ $this->setInfo($info, $data, $remote, $show, $source);
|
|
if ($spec) {
|
|
if ($spec) {
|
|
foreach ($spec as $k => $v) {
|
|
foreach ($spec as $k => $v) {
|
|
$data['update'][$spec[$k][0]]['remote'] = Dever::url($spec[$k][1]);
|
|
$data['update'][$spec[$k][0]]['remote'] = Dever::url($spec[$k][1]);
|
|
@@ -69,7 +75,7 @@ class Update extends Page
|
|
}
|
|
}
|
|
} elseif ($value) {
|
|
} elseif ($value) {
|
|
foreach ($value as $k => &$v) {
|
|
foreach ($value as $k => &$v) {
|
|
- $this->setInfo($v, $data, $remote, $show, 2);
|
|
|
|
|
|
+ $this->setInfo($v, $data, $remote, $show, $source, 2);
|
|
$option[$k] = $data['option'];
|
|
$option[$k] = $data['option'];
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
@@ -95,16 +101,25 @@ class Update extends Page
|
|
$data['desc'] = $this->config['desc'] ?? '';
|
|
$data['desc'] = $this->config['desc'] ?? '';
|
|
$data['drag'] = $this->config['drag'] ?? false;
|
|
$data['drag'] = $this->config['drag'] ?? false;
|
|
$this->layout($data);
|
|
$this->layout($data);
|
|
|
|
+ $this->control($data);
|
|
$this->tab($data, 'step');
|
|
$this->tab($data, 'step');
|
|
if (!$data['step']) {
|
|
if (!$data['step']) {
|
|
$this->tab($data);
|
|
$this->tab($data);
|
|
}
|
|
}
|
|
- $this->control($data);
|
|
|
|
return $data;
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
|
|
- private function setInfo(&$info, &$data, $remote, $show, $type = 1)
|
|
|
|
|
|
+ private function setInfo(&$info, &$data, $remote, $show, $source, $type = 1)
|
|
{
|
|
{
|
|
|
|
+ if ($source) {
|
|
|
|
+ foreach ($source as $k => $v) {
|
|
|
|
+ $t = array();
|
|
|
|
+ foreach ($v as $v1) {
|
|
|
|
+ $t[] = $info[$v1] ?? '';
|
|
|
|
+ }
|
|
|
|
+ $info[$k] = implode(',', $t);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
foreach ($info as $k => $v) {
|
|
foreach ($info as $k => $v) {
|
|
if (isset($data['field'][$k])) {
|
|
if (isset($data['field'][$k])) {
|
|
if (is_array($data['field'][$k])) {
|
|
if (is_array($data['field'][$k])) {
|
|
@@ -113,10 +128,14 @@ class Update extends Page
|
|
} else {
|
|
} else {
|
|
$v = array();
|
|
$v = array();
|
|
}
|
|
}
|
|
|
|
+ $info[$k] = $v;
|
|
}
|
|
}
|
|
if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['update'])) {
|
|
if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['update'])) {
|
|
$v = $this->config['field'][$k]['update'];
|
|
$v = $this->config['field'][$k]['update'];
|
|
}
|
|
}
|
|
|
|
+ if (strstr($k, 'date')) {
|
|
|
|
+ $v = date('Y-m-d H:i:s', $v);
|
|
|
|
+ }
|
|
if ($type == 1) {
|
|
if ($type == 1) {
|
|
$data['field'][$k] = $v;
|
|
$data['field'][$k] = $v;
|
|
}
|
|
}
|
|
@@ -189,7 +208,7 @@ class Update extends Page
|
|
|
|
|
|
private function tab(&$data, $type = 'tab')
|
|
private function tab(&$data, $type = 'tab')
|
|
{
|
|
{
|
|
- $field = Dever::input('field');
|
|
|
|
|
|
+ $field = $this->input('field', '');
|
|
$data[$type] = array();
|
|
$data[$type] = array();
|
|
if (empty($data['layout']) && !$field && isset($this->config[$type])) {
|
|
if (empty($data['layout']) && !$field && isset($this->config[$type])) {
|
|
foreach ($this->config[$type] as $k => $v) {
|
|
foreach ($this->config[$type] as $k => $v) {
|
|
@@ -218,7 +237,7 @@ class Update extends Page
|
|
|
|
|
|
private function layout(&$data)
|
|
private function layout(&$data)
|
|
{
|
|
{
|
|
- $field = Dever::input('field');
|
|
|
|
|
|
+ $field = $this->input('field', '');
|
|
$data['layout'] = array();
|
|
$data['layout'] = array();
|
|
if (!$field && isset($this->config['layout'])) {
|
|
if (!$field && isset($this->config['layout'])) {
|
|
foreach ($this->config['layout'] as $k => $v) {
|
|
foreach ($this->config['layout'] as $k => $v) {
|
|
@@ -287,31 +306,33 @@ class Update extends Page
|
|
unset($data[$v['key']]);
|
|
unset($data[$v['key']]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (!$data) {
|
|
|
|
|
|
+ if (!$data && !$other && !$sku) {
|
|
Dever::error('无效数据');
|
|
Dever::error('无效数据');
|
|
}
|
|
}
|
|
- $this->exists($id, $data);
|
|
|
|
- $this->start($id, $data);
|
|
|
|
- if ($id) {
|
|
|
|
- $info = $this->db->find($id);
|
|
|
|
- if ($info) {
|
|
|
|
- $state = $this->db->update($info['id'], $data);
|
|
|
|
- if ($state) {
|
|
|
|
- $id = $info['id'];
|
|
|
|
|
|
+ if ($data) {
|
|
|
|
+ $this->exists($id, $data);
|
|
|
|
+ $this->start($id, $data);
|
|
|
|
+ if ($id) {
|
|
|
|
+ $info = $this->db->find($id);
|
|
|
|
+ if ($info) {
|
|
|
|
+ $state = $this->db->update($info['id'], $data);
|
|
|
|
+ if ($state) {
|
|
|
|
+ $id = $info['id'];
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ $data['id'] = $id;
|
|
|
|
+ $id = $this->db->insert($data);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- $data['id'] = $id;
|
|
|
|
$id = $this->db->insert($data);
|
|
$id = $this->db->insert($data);
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- $id = $this->db->insert($data);
|
|
|
|
}
|
|
}
|
|
if (!$id) {
|
|
if (!$id) {
|
|
Dever::error('操作失败');
|
|
Dever::error('操作失败');
|
|
}
|
|
}
|
|
- $this->end($id, $data);
|
|
|
|
$this->other($id, $data, $other);
|
|
$this->other($id, $data, $other);
|
|
$this->sku($id, $data, $sku);
|
|
$this->sku($id, $data, $sku);
|
|
|
|
+ $this->end($id, $data);
|
|
return '操作成功';
|
|
return '操作成功';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -414,7 +435,7 @@ class Update extends Page
|
|
}
|
|
}
|
|
foreach ($update as $k2 => $v2) {
|
|
foreach ($update as $k2 => $v2) {
|
|
if (isset($v1[$k2])) {
|
|
if (isset($v1[$k2])) {
|
|
- $value[$k2] = $v1[$k2];
|
|
|
|
|
|
+ $this->doData($value, $k2, $v1[$k2]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ($drag) {
|
|
if ($drag) {
|
|
@@ -474,7 +495,7 @@ class Update extends Page
|
|
} else {
|
|
} else {
|
|
$v2['id'] = Dever::db($spec_value_table)->insert($spec_value_data);
|
|
$v2['id'] = Dever::db($spec_value_table)->insert($spec_value_data);
|
|
}
|
|
}
|
|
- $spec_value[$spec_data['name']][$spec_value_data['value']] = array($v1['id'] . '_' . $v2['id'], $spec_data['sort']);
|
|
|
|
|
|
+ $spec_value[$v1['key']][$spec_value_data['value']] = array($v2['id'], $spec_data['sort']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|