优化tableData组件,修复动态字段,增加group重复验证

This commit is contained in:
2022-09-23 10:43:04 +08:00
parent a1df6a4b53
commit 409fe09573
4 changed files with 14 additions and 7 deletions

View File

@@ -24,14 +24,16 @@ trait Curd
if (input('selectFields')) { if (input('selectFields')) {
return $this->selectList(); return $this->selectList();
} }
list($page, $limit, $where) = $this->buildTableParames(); list($page, $limit, $where, $excludes, $request_options, $group) = $this->buildTableParames();
$count = $this->model $count = $this->model
->where($where) ->where($where)
->group($group)
->count(); ->count();
$list = $this->model $list = $this->model
->where($where) ->where($where)
->page($page, $limit) ->page($page, $limit)
->order($this->sort) ->order($this->sort)
->group($group)
->select(); ->select();
$data = [ $data = [
'code' => 0, 'code' => 0,

View File

@@ -209,6 +209,7 @@ class AdminController extends BaseController
$get = $this->request->get('', null, null); $get = $this->request->get('', null, null);
$page = isset($get['page']) && !empty($get['page']) ? $get['page'] : 1; $page = isset($get['page']) && !empty($get['page']) ? $get['page'] : 1;
$limit = isset($get['limit']) && !empty($get['limit']) ? $get['limit'] : 15; $limit = isset($get['limit']) && !empty($get['limit']) ? $get['limit'] : 15;
$group = isset($get['group']) && !empty($get['group']) ? $get['group'] : null;
$filters = isset($get['filter']) && !empty($get['filter']) ? $get['filter'] : '{}'; $filters = isset($get['filter']) && !empty($get['filter']) ? $get['filter'] : '{}';
$ops = isset($get['op']) && !empty($get['op']) ? $get['op'] : '{}'; $ops = isset($get['op']) && !empty($get['op']) ? $get['op'] : '{}';
// json转数组 // json转数组
@@ -277,7 +278,7 @@ class AdminController extends BaseController
$where[] = [$key, $op, "%{$val}"]; $where[] = [$key, $op, "%{$val}"];
} }
} }
return [$page, $limit, $where, $excludes, $request_options]; return [$page, $limit, $where, $excludes, $request_options, $group];
} }
/** /**

View File

@@ -4,7 +4,7 @@
<div class="placeholder" v-if="listSelected.length == 0">{{setting.placeholder}}</div> <div class="placeholder" v-if="listSelected.length == 0">{{setting.placeholder}}</div>
<div class="layui-btn layui-btn-xs layui-btn-normal" v-for="(itemSelect,indexSelect) in listSelected"> <div class="layui-btn layui-btn-xs layui-btn-normal" v-for="(itemSelect,indexSelect) in listSelected">
<span>{{itemSelect[setting.fieldName]}}</span> <span>{{itemSelect[setting.fieldName]}}</span>
<i class="layui-icon layui-icon-close" @click.stop="removeItem(itemSelect,indexSelect)"></i> <i class="layui-icon layui-icon-close" @click.stop="removeItem(itemSelect,indexSelect)" v-if="setting.readonly != 1"></i>
</div> </div>
</div> </div>

View File

@@ -46,7 +46,6 @@ define(['jquery', 'vue'], function ($, Vue) {
var options = $.extend(defaultOption, data); var options = $.extend(defaultOption, data);
var valueField = options.valueField; var valueField = options.valueField;
if (options.index.indexOf('?') > -1) { if (options.index.indexOf('?') > -1) {
@@ -84,8 +83,9 @@ define(['jquery', 'vue'], function ($, Vue) {
$.get(options.index, { $.get(options.index, {
page: 1, page: 1,
limit: valueLength, limit: valueLength,
filter: JSON.stringify({ id: this.value }), filter: JSON.stringify({ [options.valueField]: this.value }),
op: JSON.stringify({ id: 'in' }) op: JSON.stringify({ [options.valueField]: 'in' }),
group: options.valueField
}, (result) => { }, (result) => {
loading.hide() loading.hide()
this.listSelected = result.data; this.listSelected = result.data;
@@ -101,8 +101,12 @@ define(['jquery', 'vue'], function ($, Vue) {
methods: { methods: {
openSelectPage() { openSelectPage() {
var selectedIds = this.listSelected.map(item => item.id);
if(options.readonly == 1){
return false;
}
var selectedIds = this.listSelected.map(item => item.id);
var index = layer.open({ var index = layer.open({
title: '选择数据', title: '选择数据',