|
@@ -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)
|