|
@@ -3535,7 +3535,7 @@ class Database
|
|
|
*
|
|
|
* @return string
|
|
|
*/
|
|
|
- public function update_html($param, $key, $index, $data, &$result, $prefix = '')
|
|
|
+ public function update_html($param, $key, $index, $data, &$result, $prefix = '', $ext = 'update')
|
|
|
{
|
|
|
if (isset($param['name']) && isset($param['update']) && $param['update'] != 'hidden' && $param['update'] != 'load') {
|
|
|
$result .= Html::pageLeft($param);
|
|
@@ -3544,7 +3544,7 @@ class Database
|
|
|
if ($param['update']) {
|
|
|
$order = true;
|
|
|
# 名称带前缀
|
|
|
- $param['name'] = 'update_' . $param['ext'];
|
|
|
+ $param['name'] = $ext . '_' . $param['ext'];
|
|
|
$param['index'] = $index;
|
|
|
|
|
|
//$param['value'] = '';
|
|
@@ -3592,9 +3592,9 @@ class Database
|
|
|
$m = 'select';
|
|
|
}
|
|
|
if ($data[$param['sync'][0]] > 0) {
|
|
|
- $load = Dever::load($temp[0] . '/' . $temp[1] . '-' . $m, array('option_' . $param['sync'][1] => $data[$param['sync'][0]], 'order' => array('id' => 'asc')));
|
|
|
+ $load = Dever::load($temp[0] . '/' . $temp[1] . '-' . $m, array('option_' . $param['sync'][1] => $data[$param['sync'][0]], 'orders' => array('id' => 'asc')));
|
|
|
} else {
|
|
|
- $load = Dever::load($temp[0] . '/' . $temp[1] . '-' . $m, array('option_' . $param['sync'][3] => $data[$param['sync'][2]], 'option_' . $param['sync'][4] => $data[$param['sync'][0]], 'order' => array('id' => 'asc')));
|
|
|
+ $load = Dever::load($temp[0] . '/' . $temp[1] . '-' . $m, array('option_' . $param['sync'][3] => $data[$param['sync'][2]], 'option_' . $param['sync'][4] => $data[$param['sync'][0]], 'orders' => array('id' => 'asc')));
|
|
|
}
|
|
|
if ($m == 'one') {
|
|
|
$param['value'] = isset($load[$temp[2]]) ? $load[$temp[2]] : $param['default'];
|
|
@@ -3636,121 +3636,180 @@ class Database
|
|
|
}
|
|
|
|
|
|
$delete = true;
|
|
|
- if (isset($param['option'])) {
|
|
|
- $delete = false;
|
|
|
- $result .= '<ul class="nav nav-tabs '.$c.'" style="height:100%;">{tab}</ul>';
|
|
|
-
|
|
|
- $order = array
|
|
|
- (
|
|
|
- 'col' => $key,
|
|
|
- 'name' => $param['desc'],
|
|
|
- 'default' => '1',
|
|
|
- 'desc' => $param['desc'],
|
|
|
- 'match' => 'is_string',
|
|
|
- 'update' => 'hidden',
|
|
|
- 'option' => $param['option']
|
|
|
- );
|
|
|
- array_unshift($method, $order);
|
|
|
+ if (isset($param['update_type']) && $param['update_type'] == 2) {
|
|
|
+ $table = '';
|
|
|
+ $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 ($this->id && $hk == 'id') {
|
|
|
+ $hv['update'] = 'hidden';
|
|
|
+ }
|
|
|
+ if (isset($hv['update']) && $hv['update']) {
|
|
|
+ $n = $hv['name'];
|
|
|
+ unset($hv['name']);
|
|
|
+ $s = '';
|
|
|
+ $hv['ext'] = $param['name'] . '_c_-1_i_' . $hk;
|
|
|
+ $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_header .= '<td>操作</td>';
|
|
|
+ $table_body .= '<td><a href="javascript:;" onclick="var self = $(this);var index = layer.confirm(\'确定进行此项操作吗?\', function(i, l){self.parent().parent().remove();layer.close(index);});" class="layui-btn layui-btn-xs">删除</a></td>';
|
|
|
+ $table_body .= '</tr>';
|
|
|
|
|
|
if (isset($param['value']) && $param['value']) {
|
|
|
- $value = Dever::array_decode($param['value']);
|
|
|
- $param['value'] = array();
|
|
|
- if (!$value) {
|
|
|
- foreach ($param['option'] as $k => $v) {
|
|
|
- if (isset($v['name'])) {
|
|
|
- $v = $v['name'];
|
|
|
+ foreach ($param['value'] as $bk => $bv) {
|
|
|
+ $table_body .= '<tr>';
|
|
|
+ foreach ($param['update'] as $hk => $hv) {
|
|
|
+ if ($this->id && $hk == 'id') {
|
|
|
+ $hv['update'] = 'hidden';
|
|
|
}
|
|
|
- $param['value'][$v][$key] = $k;
|
|
|
- }
|
|
|
- } else {
|
|
|
- foreach ($param['option'] as $k => $v) {
|
|
|
- if (isset($v['name'])) {
|
|
|
- $v = $v['name'];
|
|
|
- }
|
|
|
- foreach ($value[$k-1] as $k1 => $v1) {
|
|
|
- $param['value'][$v][$k1] = $v1;
|
|
|
+ if (isset($hv['update']) && $hv['update']) {
|
|
|
+ unset($hv['name']);
|
|
|
+ $s = '';
|
|
|
+ $hv['ext'] = $param['name'] . '_c_' . $bk . '_i_' . $hk;
|
|
|
+ $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>';
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- } else {
|
|
|
- $param['value'] = array();
|
|
|
- foreach ($param['option'] as $k => $v) {
|
|
|
- if (isset($v['name'])) {
|
|
|
- $v = $v['name'];
|
|
|
- }
|
|
|
- $param['value'][$v][$key] = $k;
|
|
|
+ $table_body .= '<td><a href="javascript:;" onclick="var self = $(this);var index = layer.confirm(\'确定进行此项操作吗?\', function(i, l){self.parent().parent().remove();layer.close(index);});" class="layui-btn layui-btn-xs">删除</a></td>';
|
|
|
+ $table_body .= '</tr>';
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ $table_body .= '</tbody>';
|
|
|
+ $table_header .= '</tr></thead>';
|
|
|
+ $table .= $table_body . $table_header;
|
|
|
+ $table .= '</table>';
|
|
|
+ $result .= $table;
|
|
|
} else {
|
|
|
- $result .= '<ul class="nav nav-tabs '.$c.'" style="height:100%;">{tab}<li style="margin:0px;padding:0 15px;"><a href="javascript:;" class="dever_form_add" toggle_key="' . $key . '">增加一条</a></li></ul>';
|
|
|
+ if (isset($param['option'])) {
|
|
|
+ $delete = false;
|
|
|
+ $result .= '<ul class="nav nav-tabs '.$c.'" style="height:100%;">{tab}</ul>';
|
|
|
|
|
|
- if ($order) {
|
|
|
$order = array
|
|
|
(
|
|
|
- 'col' => 'order',
|
|
|
- 'name' => '排序-按照数字正序排列',
|
|
|
+ 'col' => $key,
|
|
|
+ 'name' => $param['desc'],
|
|
|
'default' => '1',
|
|
|
- 'desc' => '排序',
|
|
|
+ 'desc' => $param['desc'],
|
|
|
'match' => 'is_string',
|
|
|
- 'update' => 'text',
|
|
|
+ 'update' => 'hidden',
|
|
|
+ 'option' => $param['option']
|
|
|
);
|
|
|
array_unshift($method, $order);
|
|
|
+
|
|
|
+ if (isset($param['value']) && $param['value']) {
|
|
|
+ $value = Dever::array_decode($param['value']);
|
|
|
+ $param['value'] = array();
|
|
|
+ if (!$value) {
|
|
|
+ foreach ($param['option'] as $k => $v) {
|
|
|
+ if (isset($v['name'])) {
|
|
|
+ $v = $v['name'];
|
|
|
+ }
|
|
|
+ $param['value'][$v][$key] = $k;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ foreach ($param['option'] as $k => $v) {
|
|
|
+ if (isset($v['name'])) {
|
|
|
+ $v = $v['name'];
|
|
|
+ }
|
|
|
+ foreach ($value[$k-1] as $k1 => $v1) {
|
|
|
+ $param['value'][$v][$k1] = $v1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $param['value'] = array();
|
|
|
+ foreach ($param['option'] as $k => $v) {
|
|
|
+ if (isset($v['name'])) {
|
|
|
+ $v = $v['name'];
|
|
|
+ }
|
|
|
+ $param['value'][$v][$key] = $k;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $result .= '<ul class="nav nav-tabs '.$c.'" style="height:100%;">{tab}<li style="margin:0px;padding:0 15px;"><a href="javascript:;" class="dever_form_add" toggle_key="' . $key . '">增加一条</a></li></ul>';
|
|
|
+
|
|
|
+ if ($order) {
|
|
|
+ $order = array
|
|
|
+ (
|
|
|
+ 'col' => 'order',
|
|
|
+ 'name' => '排序-按照数字正序排列',
|
|
|
+ 'default' => '1',
|
|
|
+ 'desc' => '排序',
|
|
|
+ 'match' => 'is_string',
|
|
|
+ 'update' => 'text',
|
|
|
+ );
|
|
|
+ array_unshift($method, $order);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- $tab = '';
|
|
|
+ $tab = '';
|
|
|
|
|
|
- $this->update_child(array(), $method, $key, $result, -1, $param, $delete);
|
|
|
+ $this->update_child(array(), $method, $key, $result, -1, $param, $delete);
|
|
|
|
|
|
- if (isset($param['value']) && $param['value']) {
|
|
|
+ if (isset($param['value']) && $param['value']) {
|
|
|
|
|
|
- if (!is_array($param['value'])) {
|
|
|
- $param['value'] = Dever::array_decode($param['value']);
|
|
|
- }
|
|
|
+ if (!is_array($param['value'])) {
|
|
|
+ $param['value'] = Dever::array_decode($param['value']);
|
|
|
+ }
|
|
|
|
|
|
- if (is_array($param['value'])) {
|
|
|
- $i = 0;
|
|
|
- foreach ($param['value'] as $k => $v) {
|
|
|
- $n = $k;
|
|
|
- if (is_string($k)) {
|
|
|
- $k = $i;
|
|
|
- }
|
|
|
- $this->update_child($v, $method, $key, $result, $k, $param, $delete);
|
|
|
+ if (is_array($param['value'])) {
|
|
|
+ $i = 0;
|
|
|
+ foreach ($param['value'] as $k => $v) {
|
|
|
+ $n = $k;
|
|
|
+ if (is_string($k)) {
|
|
|
+ $k = $i;
|
|
|
+ }
|
|
|
+ $this->update_child($v, $method, $key, $result, $k, $param, $delete);
|
|
|
|
|
|
- $active = '';
|
|
|
- if ($k == 0) {
|
|
|
- $active = 'active';
|
|
|
- }
|
|
|
- if (layadmin() && $active) {
|
|
|
- $active .= ' layui-this';
|
|
|
- }
|
|
|
- $k = $k + 1;
|
|
|
- if (!is_string($n)) {
|
|
|
- $n = '第' . $k . '条';
|
|
|
- }
|
|
|
- if (isset($param['option']) && count($param['option']) <= 1) {
|
|
|
+ $active = '';
|
|
|
+ if ($k == 0) {
|
|
|
+ $active = 'active';
|
|
|
+ }
|
|
|
+ if (layadmin() && $active) {
|
|
|
+ $active .= ' layui-this';
|
|
|
+ }
|
|
|
+ $k = $k + 1;
|
|
|
+ if (!is_string($n)) {
|
|
|
+ $n = '第' . $k . '条';
|
|
|
+ }
|
|
|
+ if (isset($param['option']) && count($param['option']) <= 1) {
|
|
|
|
|
|
- } else {
|
|
|
- $tab .= '<li class="' . $active . '" style="margin:0px;padding:0 15px;"><a href="javascript:;" id="tab-' . $key . '-child-' . $k . '" toggle_key="' . $key . '" toggle_id="' . $k . '" toggle_child=".dever_' . $key . '_child" toggle="#' . $key . '-child-' . $k . '" onclick="showToggle($(this))">'.$n.'</a></li>';
|
|
|
- $i++;
|
|
|
+ } else {
|
|
|
+ $tab .= '<li class="' . $active . '" style="margin:0px;padding:0 15px;"><a href="javascript:;" id="tab-' . $key . '-child-' . $k . '" toggle_key="' . $key . '" toggle_id="' . $k . '" toggle_child=".dever_' . $key . '_child" toggle="#' . $key . '-child-' . $k . '" onclick="showToggle($(this))">'.$n.'</a></li>';
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- $this->update_child(array(), $method, $key, $result, 0, $param, $delete);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ $this->update_child(array(), $method, $key, $result, 0, $param, $delete);
|
|
|
|
|
|
- $tab = '<li class="active layui-this" style="margin:0px;padding:0 15px;"><a href="javascript:;" id="tab-' . $key . '-child-1" toggle_key="' . $key . '" toggle_id="1" toggle_child=".dever_' . $param['col'] . '_child" toggle="#' . $key . '-child-1" onclick="showToggle($(this))">第1条</a></li>';
|
|
|
- }
|
|
|
+ $tab = '<li class="active layui-this" style="margin:0px;padding:0 15px;"><a href="javascript:;" id="tab-' . $key . '-child-1" toggle_key="' . $key . '" toggle_id="1" toggle_child=".dever_' . $param['col'] . '_child" toggle="#' . $key . '-child-1" onclick="showToggle($(this))">第1条</a></li>';
|
|
|
+ }
|
|
|
|
|
|
- if ($tab) {
|
|
|
- $result = str_replace('{tab}', $tab, $result);
|
|
|
- } else {
|
|
|
- $result = str_replace('<ul class="nav nav-tabs layui-tab-title" style="height:100%;">{tab}</ul>', '', $result);
|
|
|
+ if ($tab) {
|
|
|
+ $result = str_replace('{tab}', $tab, $result);
|
|
|
+ } else {
|
|
|
+ $result = str_replace('<ul class="nav nav-tabs layui-tab-title" style="height:100%;">{tab}</ul>', '', $result);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
} else {
|
|
@@ -4019,6 +4078,7 @@ class Database
|
|
|
$update_set[$i][$index][$num]['set_' . $temp[1]] = $v;
|
|
|
$update_add[$i][$index][$num]['add_' . $temp[1]] = $v;
|
|
|
$update_add[$i][$index][$num]['add_' . $m_col] = $s_value;
|
|
|
+ $update_deletes[$i][$index][$m_col] = $s_value;
|
|
|
$update_id[$i][$index][$num][$m_col] = $s_value;
|
|
|
if ($this->id && $temp[1] == 'id') {
|
|
|
$update_id[$i][$index][$num]['id'] = $v;
|
|
@@ -4183,6 +4243,12 @@ class Database
|
|
|
}
|
|
|
|
|
|
if (isset($update_add[$k]) && $update_add[$k]) {
|
|
|
+ if (isset($update_deletes[$k]) && $update_deletes[$k]) {
|
|
|
+ foreach ($update_deletes[$k] as $k1 => $v1) {
|
|
|
+ $v1['set_state'] = 2;
|
|
|
+ Dever::load($k1 . '-updates', $v1);
|
|
|
+ }
|
|
|
+ }
|
|
|
foreach ($update_add[$k] as $k1 => $v1) {
|
|
|
$col = $update_col[$k][$k1];
|
|
|
foreach ($v1 as $k2 => $v2) {
|
|
@@ -4207,6 +4273,7 @@ class Database
|
|
|
if ($check) {
|
|
|
unset($update_set[$k][$k1][$k2]['set_id']);
|
|
|
$update_set[$k][$k1][$k2]['where_id'] = $check['id'];
|
|
|
+ $update_set[$k][$k1][$k2]['set_state'] = 1;
|
|
|
Dever::load($k1 . '-update', $update_set[$k][$k1][$k2]);
|
|
|
} else {
|
|
|
Dever::load($k1 . '-insert', $v2);
|