Skip to content

Commit c8304fa

Browse files
committed
优化Grid表单搜索,默认不显示label
1 parent b5c9b3a commit c8304fa

File tree

12 files changed

+659
-9
lines changed

12 files changed

+659
-9
lines changed

public/0.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/1.js

Lines changed: 274 additions & 0 deletions
Large diffs are not rendered by default.

public/2.js

Lines changed: 119 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/3.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{
2+
3+
/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js&":
4+
/*!************************************************************************************************************************************************************************!*\
5+
!*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js& ***!
6+
\************************************************************************************************************************************************************************/
7+
/*! exports provided: default */
8+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
9+
10+
"use strict";
11+
__webpack_require__.r(__webpack_exports__);
12+
/* harmony import */ var _antv_g2plot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g2plot */ "./node_modules/@antv/g2plot/esm/index.js");
13+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
14+
15+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16+
17+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
18+
19+
//
20+
//
21+
//
22+
23+
/* harmony default export */ __webpack_exports__["default"] = ({
24+
props: {
25+
attrs: Object
26+
},
27+
data: function data() {
28+
return {
29+
antv: null
30+
};
31+
},
32+
mounted: function mounted() {
33+
this.antv = new _antv_g2plot__WEBPACK_IMPORTED_MODULE_0__["Area"](this.attrs.canvasId, _objectSpread({
34+
data: this.attrs.data
35+
}, this.attrs.config));
36+
this.antv.render();
37+
},
38+
updated: function updated() {
39+
this.antv.changeData(this.attrs.data);
40+
},
41+
destroyed: function destroyed() {//this.antv.destory();
42+
}
43+
});
44+
45+
/***/ }),
46+
47+
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be&":
48+
/*!****************************************************************************************************************************************************************************************************************!*\
49+
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be& ***!
50+
\****************************************************************************************************************************************************************************************************************/
51+
/*! exports provided: render, staticRenderFns */
52+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
53+
54+
"use strict";
55+
__webpack_require__.r(__webpack_exports__);
56+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
57+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
58+
var render = function() {
59+
var _vm = this
60+
var _h = _vm.$createElement
61+
var _c = _vm._self._c || _h
62+
return _c("div", { attrs: { id: _vm.attrs.canvasId } })
63+
}
64+
var staticRenderFns = []
65+
render._withStripped = true
66+
67+
68+
69+
/***/ }),
70+
71+
/***/ "./resources/js/components/antv/AntvArea.vue":
72+
/*!***************************************************!*\
73+
!*** ./resources/js/components/antv/AntvArea.vue ***!
74+
\***************************************************/
75+
/*! exports provided: default */
76+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
77+
78+
"use strict";
79+
__webpack_require__.r(__webpack_exports__);
80+
/* harmony import */ var _AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AntvArea.vue?vue&type=template&id=8f3a15be& */ "./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be&");
81+
/* harmony import */ var _AntvArea_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AntvArea.vue?vue&type=script&lang=js& */ "./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js&");
82+
/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
83+
84+
85+
86+
87+
88+
/* normalize component */
89+
90+
var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
91+
_AntvArea_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
92+
_AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__["render"],
93+
_AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
94+
false,
95+
null,
96+
null,
97+
null
98+
99+
)
100+
101+
/* hot reload */
102+
if (false) { var api; }
103+
component.options.__file = "resources/js/components/antv/AntvArea.vue"
104+
/* harmony default export */ __webpack_exports__["default"] = (component.exports);
105+
106+
/***/ }),
107+
108+
/***/ "./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js&":
109+
/*!****************************************************************************!*\
110+
!*** ./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js& ***!
111+
\****************************************************************************/
112+
/*! exports provided: default */
113+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
114+
115+
"use strict";
116+
__webpack_require__.r(__webpack_exports__);
117+
/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_AntvArea_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./AntvArea.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/antv/AntvArea.vue?vue&type=script&lang=js&");
118+
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_AntvArea_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
119+
120+
/***/ }),
121+
122+
/***/ "./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be&":
123+
/*!**********************************************************************************!*\
124+
!*** ./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be& ***!
125+
\**********************************************************************************/
126+
/*! exports provided: render, staticRenderFns */
127+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
128+
129+
"use strict";
130+
__webpack_require__.r(__webpack_exports__);
131+
/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./AntvArea.vue?vue&type=template&id=8f3a15be& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/antv/AntvArea.vue?vue&type=template&id=8f3a15be&");
132+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__["render"]; });
133+
134+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_AntvArea_vue_vue_type_template_id_8f3a15be___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
135+
136+
137+
138+
/***/ })
139+
140+
}]);

public/5.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/app.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/mix-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"/app.js": "/app.js?id=4244c8499863606a98c9",
2+
"/app.js": "/app.js?id=eb51d460047b5cee6b48",
33
"/manifest.js": "/manifest.js?id=8991394a854ee5cdffc3",
44
"/vendor.js": "/vendor.js?id=df0be4950fcb717193ba"
55
}

resources/js/components/grid/Table.vue

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
:actions="attrs.batchActions"
1414
v-if="attrs.selection"
1515
/>
16-
<div class="search-view mr-10" v-if="attrs.quickSearch">
16+
<div
17+
class="search-view mr-10"
18+
v-if="attrs.quickSearch && attrs.filter.filters.length <= 0"
19+
>
1720
<el-input
1821
v-model="quickSearch"
1922
:placeholder="attrs.quickSearch.placeholder"
@@ -76,7 +79,17 @@
7679
v-if="attrs.filter.filters.length > 0"
7780
>
7881
<div class="filter-form">
79-
<el-form :inline="true" :model="filterFormData" v-if="filterFormData">
82+
<el-form :inline="true" :model="filterFormData" v-if="filterFormData">
83+
<el-form-item v-if="attrs.quickSearch">
84+
<el-input
85+
v-model="quickSearch"
86+
:placeholder="attrs.quickSearch.placeholder"
87+
:clearable="true"
88+
@clear="getData"
89+
@keyup.enter.native="getData"
90+
></el-input>
91+
</el-form-item>
92+
8093
<el-form-item
8194
v-for="(item, index) in attrs.filter.filters"
8295
:key="index"
@@ -305,6 +318,7 @@ export default {
305318
//表单还原
306319
onFilterReset() {
307320
this.filterFormData = this._.cloneDeep(this.attrs.filter.filterFormData);
321+
this.quickSearch = null;
308322
this.getData();
309323
},
310324
//获取数据

src/Controllers/LogController.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
namespace SmallRuralDog\Admin\Controllers;
55

66

7+
use Illuminate\Database\Eloquent\Model;
78
use SmallRuralDog\Admin\Auth\Database\OperationLog;
89

10+
use SmallRuralDog\Admin\Components\Attrs\SelectOption;
11+
use SmallRuralDog\Admin\Components\Form\Select;
912
use SmallRuralDog\Admin\Components\Grid\Avatar;
1013
use SmallRuralDog\Admin\Components\Grid\Tag;
1114
use SmallRuralDog\Admin\Form;
@@ -19,7 +22,6 @@ protected function grid()
1922
{
2023
$grid = new Grid(new OperationLog());
2124
$grid->perPage(20)
22-
->quickSearch()
2325
->selection()
2426
->defaultSort('id', 'desc')
2527
->stripe()
@@ -41,6 +43,18 @@ protected function grid()
4143
})->toolbars(function (Grid\Toolbars $toolbars) {
4244
$toolbars->hideCreateButton();
4345
});
46+
47+
$grid->filter(function (Grid\Filter $filter) {
48+
$filter->equal('user_id')->component(Select::make()->placeholder("请选择用户")->options(function () {
49+
$user_ids = OperationLog::query()->groupBy("user_id")->get(["user_id"])->pluck("user_id")->toArray();
50+
/**@var Model $userModel */
51+
$userModel = config('admin.database.users_model');
52+
return $userModel::query()->whereIn("id", $user_ids)->get()->map(function ($user) {
53+
return SelectOption::make($user->id, $user->name);
54+
})->all();
55+
}));
56+
});
57+
4458
return $grid;
4559
}
4660

src/Form.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Illuminate\Support\Arr;
1212
use SmallRuralDog\Admin\Components\Component;
1313
use SmallRuralDog\Admin\Components\Form\Upload;
14+
use SmallRuralDog\Admin\Form\FormActions;
1415
use SmallRuralDog\Admin\Form\FormAttrs;
1516
use SmallRuralDog\Admin\Form\FormItem;
1617
use SmallRuralDog\Admin\Form\HasHooks;
@@ -89,13 +90,16 @@ class Form extends Component
8990
private $top;
9091
private $bottom;
9192

93+
protected $actions;
94+
9295

9396
public function __construct($model = null)
9497
{
9598
$this->attrs = new FormAttrs();
9699
$this->model = $model;
97100
$this->dataUrl = admin_api_url(request()->path());
98101
$this->isGetData = request('get_data') == "true";
102+
$this->actions = new FormActions($this);
99103
}
100104

101105
/**
@@ -154,6 +158,17 @@ protected function items($items = [])
154158

155159
}
156160

161+
/**
162+
* 自定义表单动作
163+
* @param $closure
164+
* @return $this
165+
*/
166+
public function actions($closure)
167+
{
168+
call_user_func($closure, $this->actions);
169+
return $this;
170+
}
171+
157172
/**
158173
* 表单头部组件
159174
* @param $closure
@@ -781,7 +796,7 @@ public function jsonSerialize()
781796
'formRules' => $this->formRules,
782797
'ref' => $this->ref,
783798
'refData' => $this->refData,
784-
'formRefData'=>$this->FormRefDataBuild(),
799+
'formRefData' => $this->FormRefDataBuild(),
785800
'top' => $this->top,
786801
'bottom' => $this->bottom
787802
];

0 commit comments

Comments
 (0)