提交 70df4040 编写于 作者: ModStart's avatar ModStart

develop

上级 7c094795
......@@ -2,7 +2,6 @@
@section('pageTitle'){{modstart_config('siteName').' - '.modstart_config('siteSlogan')}}@endsection
{!! \ModStart\ModStart::js('asset/common/scrollAnimate.js') !!}
@section('bodyContent')
......
@extends($_viewFrame)
@section('pageTitleMain')搜索{{$keywords}}@endsection
@section('pageKeywords')搜索{{$keywords}}@endsection
@section('pageDescription')搜索{{$keywords}}@endsection
{!! \ModStart\ModStart::js('asset/vendor/jqueryMark.js') !!}
{!! \ModStart\ModStart::style('[data-markjs]{color:red !important;background:transparent;}') !!}
{!! \ModStart\ModStart::script("$('.ub-list-items .title').mark(".json_encode($keywords).",{});") !!}
@section('bodyContent')
<div class="ub-search-block">
<div class="title">
搜索
</div>
<div class="form">
<form action="{{modstart_web_url('search')}}" method="get">
<div class="box">
<input type="text" name="keywords" value="{{$keywords or ''}}" class="form form-lg" placeholder="输入关键词搜索" />
<button type="submit" class="btn btn-lg"><i class="iconfont icon-search"></i> 搜索</button>
</div>
</form>
</div>
</div>
<div class="ub-container margin-top">
<div class="ub-search-result tw-rounded-lg">
搜索 <span class="keyword">{{$keywords}}</span> 共找到 <span class="count">{{$total}}</span> 条记录
</div>
</div>
<div class="ub-container margin-top">
<div class="ub-panel">
<div class="head">
<div class="title">
搜索结果
</div>
</div>
<div class="body">
@if(empty($records))
<div class="ub-empty tw-my-20">
<div class="icon">
<div class="iconfont icon-empty-box"></div>
</div>
<div class="text">暂无记录</div>
</div>
@else
<div class="ub-list-items" style="padding:0.5rem;">
@foreach($records as $record)
<div class="item-d">
<a class="title" target="_blank" href="{{$record['_url']}}">{{$record['title']}}</a>
<div class="attr">
<i class="iconfont icon-time"></i>
{{$record['_day']}}
</div>
<div class="summary">
{{$record['summary']}}
</div>
</div>
@endforeach
</div>
<div class="ub-page">
{!! $pageHtml !!}
</div>
@endif
</div>
</div>
</div>
@endsection
<?php
namespace Module\Cms\Web\Controller;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Util\PageHtmlUtil;
use ModStart\Module\ModuleBaseController;
use Module\Cms\Util\CmsContentUtil;
class SearchController extends ModuleBaseController
{
public function index()
{
// $data = parent::setup($id);
// $view = $this->getView($data, 'listTemplate');
// $cat = $data['cat'];
$input = InputPackage::buildFromInput();
$page = $input->getPage();
$pageSize = $input->getPageSize('pageSize');
$keywords = $input->getTrimString('keywords');
$option = [];
if (!empty($keywords)) {
$option['whereOperate'] = [
[
'title', 'like', "%$keywords%"
]
];
}
$paginateData = CmsContentUtil::paginate($page, $pageSize, $option);
$viewData = [];
$viewData['keywords'] = $keywords;
$viewData['records'] = $paginateData['records'];
$viewData['total'] = $paginateData['total'];
$viewData['pageHtml'] = PageHtmlUtil::render($paginateData['total'], $pageSize, $page, '?page={page}');
return $this->view('cms.search.index', $viewData);
}
}
\ No newline at end of file
......@@ -14,6 +14,8 @@ $router->group([
$router->match(['get', 'post'], 'a/{alias_url}', 'DetailController@index');
$router->match(['get', 'post'], 'c/{id}', 'ListController@index');
$router->match(['get', 'post'], 'search', 'SearchController@index');
foreach (CmsCatUtil::allSafely() as $item) {
if (empty($item['url']) || empty($item['_model']['mode'])) {
continue;
......
......@@ -8,7 +8,6 @@ use Illuminate\Routing\Controller;
use ModStart\Admin\Layout\AdminPage;
use ModStart\Admin\Widget\DashboardItemA;
use ModStart\Core\Dao\ModelUtil;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Util\ColorUtil;
use ModStart\Core\Util\TimeUtil;
use ModStart\Layout\Row;
......@@ -20,18 +19,32 @@ class MemberDashboardController extends Controller
public function index(AdminPage $page)
{
$page->pageTitle('用户统计');
$page->row(function (Row $row) {
$row->column(6, DashboardItemA::makeIconNumberTitle(
$report = [];
$report['yesterdayCount'] = ModelUtil::model('member_user')
->where('created_at', '>=', TimeUtil::yesterdayStart())
->where('created_at', '<=', TimeUtil::yesterdayEnd())
->count();
$w = date('w');
if ($w == 0) {
$w = 7;
}
$lastWeek = time() - TimeUtil::PERIOD_DAY * 7 - TimeUtil::PERIOD_DAY * ($w - 1);
$report['lastWeekCount'] = ModelUtil::model('member_user')
->where('created_at', '>=', date('Y-m-d 00:00:00', $lastWeek))
->where('created_at', '<=', date('Y-m-d 23:59:59', $lastWeek + TimeUtil::PERIOD_DAY * 7))
->count();
$page->row(function (Row $row) use ($report) {
$row->column(4, DashboardItemA::makeIconNumberTitle(
'iconfont icon-user', ModelUtil::count('member_user'), '用户总数',
modstart_admin_url('member'), ColorUtil::randomColor()
));
$row->column(6, DashboardItemA::makeIconNumberTitle(
'iconfont icon-user',
ModelUtil::model('member_user')
->where('created_at', '>=', TimeUtil::yesterdayStart())
->where('created_at', '<=', TimeUtil::yesterdayEnd())
->count(),
'昨日增长',
$row->column(4, DashboardItemA::makeIconNumberTitle(
'iconfont icon-user', $report['yesterdayCount'], '昨日增长',
modstart_admin_url('member'), ColorUtil::randomColor()
));
$row->column(4, DashboardItemA::makeIconNumberTitle(
'iconfont icon-user', $report['lastWeekCount'], '上周增长',
modstart_admin_url('member'), ColorUtil::randomColor()
));
});
......
- 新增:用户系统上周增长报表
---
- 新增:IDManager新增清除随机Key功能
......@@ -70,4 +70,10 @@ abstract class AbstractDbCacheIDManager extends AbstractIDManager
return $this->idsPaginate($ids, $page, $pageSize);
}
public function forgetRandom($cacheKey = 'all')
{
Cache::forget($this->name() . '_Random_' . $cacheKey);
}
}
\ No newline at end of file
......@@ -20,4 +20,6 @@ abstract class AbstractIDManager
abstract public function paginateRandom($page, $pageSize, $cacheKey = 'all', $cacheMinutes = 60);
abstract public function forgetRandom($cacheKey = 'all');
}
\ No newline at end of file
{
"name": "Vendor",
"title": "通用功能包",
"version": "2.2.0",
"version": "2.3.0",
"author": "官方",
"description": "提供基础功能",
"modstartVersion": ">=1.9.0",
......
@font-face{font-family:iconfont;src:url(iconfont.woff2?t=1632474203013) format('woff2'),url(iconfont.woff?t=1632474203013) format('woff'),url(iconfont.ttf?t=1632474203013) format('truetype')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-list:before{content:"\e602"}.icon-eye:before{content:"\e60d"}.icon-comment:before{content:"\e6ad"}.icon-weibo:before{content:"\e61c"}.icon-wechat:before{content:"\e62f"}.icon-qq:before{content:"\e603"}.icon-list-alt:before{content:"\e601"}.icon-transport:before{content:"\e64f"}.icon-pay:before{content:"\e683"}.icon-check-alt:before{content:"\e632"}.icon-cart:before{content:"\e737"}.icon-category:before{content:"\e650"}.icon-user-o:before{content:"\e68c"}.icon-home:before{content:"\e9bb"}.icon-confirm:before{content:"\e666"}.icon-address:before{content:"\e684"}.icon-password:before{content:"\e60e"}.icon-log-out:before{content:"\e70f"}.icon-email:before{content:"\e604"}.icon-phone:before{content:"\e600"}.icon-image:before{content:"\e605"}.icon-zoom-out:before{content:"\e76e"}.icon-zoom-in:before{content:"\e638"}.icon-plus:before{content:"\e616"}.icon-close-o:before{content:"\e634"}.icon-checked:before{content:"\e61f"}.icon-trash:before{content:"\e67e"}.icon-angle-left:before{content:"\e6c2"}.icon-angle-up:before{content:"\e630"}.icon-angle-right:before{content:"\e609"}.icon-angle-down:before{content:"\e9f0"}.icon-time:before{content:"\e61e"}.icon-tag:before{content:"\e667"}.icon-filter:before{content:"\e727"}.icon-close:before{content:"\e60f"}.icon-flag:before{content:"\e66b"}.icon-qr-code:before{content:"\e608"}.icon-sign:before{content:"\e644"}.icon-description:before{content:"\e619"}.icon-credit:before{content:"\e6c3"}.icon-card:before{content:"\e626"}.icon-pc:before{content:"\e60a"}.icon-scan:before{content:"\e68e"}.icon-sad:before{content:"\e606"}.icon-users:before{content:"\e62e"}.icon-share:before{content:"\e60c"}.icon-gift:before{content:"\e607"}.icon-music:before{content:"\e61a"}.icon-chart:before{content:"\e622"}.icon-cog:before{content:"\e610"}.icon-search:before{content:"\e612"}.icon-copy:before{content:"\e620"}.icon-star:before{content:"\e613"}.icon-cny:before{content:"\e7f7"}.icon-question:before{content:"\e631"}.icon-select:before{content:"\e61b"}.icon-select-check:before{content:"\e7be"}.icon-down:before{content:"\e651"}.icon-up:before{content:"\e64b"}.icon-warning:before{content:"\e633"}.icon-refresh:before{content:"\e6d4"}.icon-download:before{content:"\e62c"}.icon-play:before{content:"\e636"}.icon-loading:before{content:"\e63f"}.icon-tel:before{content:"\e62d"}.icon-shield-check:before{content:"\e640"}.icon-individual:before{content:"\e61d"}.icon-corp:before{content:"\e611"}.icon-vip-alt:before{content:"\e614"}.icon-gift-alt:before{content:"\e691"}.icon-thumb-down:before{content:"\ec2b"}.icon-thumb-up:before{content:"\ec42"}.icon-magic-wand:before{content:"\e662"}.icon-lock:before{content:"\e653"}.icon-user:before{content:"\e615"}.icon-link-alt:before{content:"\e66a"}.icon-tools:before{content:"\e639"}.icon-empty-box:before{content:"\e716"}.icon-save:before{content:"\e7e6"}.icon-bell:before{content:"\e62b"}.icon-code-alt:before{content:"\e621"}.icon-book:before{content:"\e617"}.icon-pause:before{content:"\e6a3"}.icon-edit:before{content:"\e618"}.icon-add-col-after:before{content:"\e624"}.icon-add-col-before:before{content:"\e625"}.icon-add-row-after:before{content:"\e627"}.icon-bold:before{content:"\e628"}.icon-add-row-before:before{content:"\e629"}.icon-italic:before{content:"\e62a"}.icon-delete-col:before{content:"\e635"}.icon-combine-cells:before{content:"\e637"}.icon-paragraph:before{content:"\e63a"}.icon-quote:before{content:"\e63b"}.icon-ol:before{content:"\e63c"}.icon-delete-row:before{content:"\e63d"}.icon-underline:before{content:"\e63e"}.icon-images:before{content:"\e641"}.icon-delete-table:before{content:"\e642"}.icon-ul:before{content:"\e643"}.icon-redo:before{content:"\e645"}.icon-table:before{content:"\e646"}.icon-undo:before{content:"\e647"}.icon-link:before{content:"\e648"}.icon-hr:before{content:"\e649"}.icon-strike:before{content:"\e64a"}.icon-code:before{content:"\e64c"}.icon-merge-cells:before{content:"\e901"}.icon-move:before{content:"\e6bc"}.icon-bottom:before{content:"\e623"}.icon-top:before{content:"\e64d"}.icon-details:before{content:"\e752"}.icon-customer:before{content:"\e699"}.icon-clues:before{content:"\e697"}.icon-folder:before{content:"\e64e"}.icon-user-transfer:before{content:"\e696"}.icon-file:before{content:"\e652"}.icon-robot:before{content:"\e74b"}.icon-markdown:before{content:"\e8d4"}.icon-fly:before{content:"\e655"}.icon-mind-map:before{content:"\e664"}.icon-profile:before{content:"\e6db"}.icon-smile:before{content:"\e654"}.icon-ellipsis:before{content:"\e84a"}.icon-left:before{content:"\e60b"}.icon-right:before{content:"\e656"}.icon-upload:before{content:"\e657"}.icon-check:before{content:"\e658"}.icon-folder-add:before{content:"\e659"}.icon-folder-upload:before{content:"\e80b"}.icon-call:before{content:"\e65a"}.icon-vip:before{content:"\e65b"}.icon-language:before{content:"\e693"}.icon-desktop:before{content:"\e8e2"}.icon-direction-down:before{content:"\e66c"}.icon-direction-right:before{content:"\e66d"}.icon-direction-up:before{content:"\e66e"}.icon-direction-left:before{content:"\e66f"}.icon-heart:before{content:"\e660"}.icon-heart-alt:before{content:"\f2b2"}.icon-male:before{content:"\e776"}.icon-female:before{content:"\e678"}
\ No newline at end of file
@font-face{font-family:iconfont;src:url(iconfont.woff2?t=1640308417974) format('woff2'),url(iconfont.woff?t=1640308417974) format('woff'),url(iconfont.ttf?t=1640308417974) format('truetype')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-dot-sm:before{content:"\e65c"}.icon-dot:before{content:"\e65d"}.icon-list:before{content:"\e602"}.icon-eye:before{content:"\e60d"}.icon-comment:before{content:"\e6ad"}.icon-weibo:before{content:"\e61c"}.icon-wechat:before{content:"\e62f"}.icon-qq:before{content:"\e603"}.icon-list-alt:before{content:"\e601"}.icon-transport:before{content:"\e64f"}.icon-pay:before{content:"\e683"}.icon-check-alt:before{content:"\e632"}.icon-cart:before{content:"\e737"}.icon-category:before{content:"\e650"}.icon-user-o:before{content:"\e68c"}.icon-home:before{content:"\e9bb"}.icon-confirm:before{content:"\e666"}.icon-address:before{content:"\e684"}.icon-password:before{content:"\e60e"}.icon-log-out:before{content:"\e70f"}.icon-email:before{content:"\e604"}.icon-phone:before{content:"\e600"}.icon-image:before{content:"\e605"}.icon-zoom-out:before{content:"\e76e"}.icon-zoom-in:before{content:"\e638"}.icon-plus:before{content:"\e616"}.icon-close-o:before{content:"\e634"}.icon-checked:before{content:"\e61f"}.icon-trash:before{content:"\e67e"}.icon-angle-left:before{content:"\e6c2"}.icon-angle-up:before{content:"\e630"}.icon-angle-right:before{content:"\e609"}.icon-angle-down:before{content:"\e9f0"}.icon-time:before{content:"\e61e"}.icon-tag:before{content:"\e667"}.icon-filter:before{content:"\e727"}.icon-close:before{content:"\e60f"}.icon-flag:before{content:"\e66b"}.icon-qr-code:before{content:"\e608"}.icon-sign:before{content:"\e644"}.icon-description:before{content:"\e619"}.icon-credit:before{content:"\e6c3"}.icon-card:before{content:"\e626"}.icon-pc:before{content:"\e60a"}.icon-scan:before{content:"\e68e"}.icon-sad:before{content:"\e606"}.icon-users:before{content:"\e62e"}.icon-share:before{content:"\e60c"}.icon-gift:before{content:"\e607"}.icon-music:before{content:"\e61a"}.icon-chart:before{content:"\e622"}.icon-cog:before{content:"\e610"}.icon-search:before{content:"\e612"}.icon-copy:before{content:"\e620"}.icon-star:before{content:"\e613"}.icon-cny:before{content:"\e7f7"}.icon-question:before{content:"\e631"}.icon-select:before{content:"\e61b"}.icon-select-check:before{content:"\e7be"}.icon-down:before{content:"\e651"}.icon-up:before{content:"\e64b"}.icon-warning:before{content:"\e633"}.icon-refresh:before{content:"\e6d4"}.icon-download:before{content:"\e62c"}.icon-play:before{content:"\e636"}.icon-loading:before{content:"\e63f"}.icon-tel:before{content:"\e62d"}.icon-shield-check:before{content:"\e640"}.icon-individual:before{content:"\e61d"}.icon-corp:before{content:"\e611"}.icon-vip-alt:before{content:"\e614"}.icon-gift-alt:before{content:"\e691"}.icon-thumb-down:before{content:"\ec2b"}.icon-thumb-up:before{content:"\ec42"}.icon-magic-wand:before{content:"\e662"}.icon-lock:before{content:"\e653"}.icon-user:before{content:"\e615"}.icon-link-alt:before{content:"\e66a"}.icon-tools:before{content:"\e639"}.icon-empty-box:before{content:"\e716"}.icon-save:before{content:"\e7e6"}.icon-bell:before{content:"\e62b"}.icon-code-alt:before{content:"\e621"}.icon-book:before{content:"\e617"}.icon-pause:before{content:"\e6a3"}.icon-edit:before{content:"\e618"}.icon-add-col-after:before{content:"\e624"}.icon-add-col-before:before{content:"\e625"}.icon-add-row-after:before{content:"\e627"}.icon-bold:before{content:"\e628"}.icon-add-row-before:before{content:"\e629"}.icon-italic:before{content:"\e62a"}.icon-delete-col:before{content:"\e635"}.icon-combine-cells:before{content:"\e637"}.icon-paragraph:before{content:"\e63a"}.icon-quote:before{content:"\e63b"}.icon-ol:before{content:"\e63c"}.icon-delete-row:before{content:"\e63d"}.icon-underline:before{content:"\e63e"}.icon-images:before{content:"\e641"}.icon-delete-table:before{content:"\e642"}.icon-ul:before{content:"\e643"}.icon-redo:before{content:"\e645"}.icon-table:before{content:"\e646"}.icon-undo:before{content:"\e647"}.icon-link:before{content:"\e648"}.icon-hr:before{content:"\e649"}.icon-strike:before{content:"\e64a"}.icon-code:before{content:"\e64c"}.icon-merge-cells:before{content:"\e901"}.icon-move:before{content:"\e6bc"}.icon-bottom:before{content:"\e623"}.icon-top:before{content:"\e64d"}.icon-details:before{content:"\e752"}.icon-customer:before{content:"\e699"}.icon-clues:before{content:"\e697"}.icon-folder:before{content:"\e64e"}.icon-user-transfer:before{content:"\e696"}.icon-file:before{content:"\e652"}.icon-robot:before{content:"\e74b"}.icon-markdown:before{content:"\e8d4"}.icon-fly:before{content:"\e655"}.icon-mind-map:before{content:"\e664"}.icon-profile:before{content:"\e6db"}.icon-smile:before{content:"\e654"}.icon-ellipsis:before{content:"\e84a"}.icon-left:before{content:"\e60b"}.icon-right:before{content:"\e656"}.icon-upload:before{content:"\e657"}.icon-check:before{content:"\e658"}.icon-folder-add:before{content:"\e659"}.icon-folder-upload:before{content:"\e80b"}.icon-call:before{content:"\e65a"}.icon-vip:before{content:"\e65b"}.icon-language:before{content:"\e693"}.icon-desktop:before{content:"\e8e2"}.icon-direction-down:before{content:"\e66c"}.icon-direction-right:before{content:"\e66d"}.icon-direction-up:before{content:"\e66e"}.icon-direction-left:before{content:"\e66f"}.icon-heart:before{content:"\e660"}.icon-heart-alt:before{content:"\f2b2"}.icon-male:before{content:"\e776"}.icon-female:before{content:"\e678"}
\ No newline at end of file
......@@ -5,6 +5,20 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "380331",
"name": "dot",
"font_class": "dot-sm",
"unicode": "e65c",
"unicode_decimal": 58972
},
{
"icon_id": "1003028",
"name": "dot_1",
"font_class": "dot",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "885533",
"name": "list",
......
......@@ -25,6 +25,14 @@
</div>
<div class="nav-mask" onclick="$(this).closest('.ub-header-b').removeClass('show')"></div>
<div class="nav">
<div class="search">
<div class="box">
<form action="{{modstart_web_url('search')}}" method="get">
<input type="text" name="keywords" placeholder="搜索内容"/>
<button type="submit"><i class="iconfont icon-search"></i></button>
</form>
</div>
</div>
@foreach(\Module\Nav\Util\NavUtil::listByPositionWithCache('head') as $nav)
<a class="{{modstart_baseurl_active($nav['link'])}}" href="{{$nav['link']}}" {{\Module\Nav\Type\NavOpenType::getBlankAttributeFromValue(empty($nav['openType'])?null:$nav['openType'])}}>{{$nav['name']}}</a>
@endforeach
......
@font-face{font-family:iconfont;src:url(iconfont.woff2?t=1632474203013) format('woff2'),url(iconfont.woff?t=1632474203013) format('woff'),url(iconfont.ttf?t=1632474203013) format('truetype')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-list:before{content:"\e602"}.icon-eye:before{content:"\e60d"}.icon-comment:before{content:"\e6ad"}.icon-weibo:before{content:"\e61c"}.icon-wechat:before{content:"\e62f"}.icon-qq:before{content:"\e603"}.icon-list-alt:before{content:"\e601"}.icon-transport:before{content:"\e64f"}.icon-pay:before{content:"\e683"}.icon-check-alt:before{content:"\e632"}.icon-cart:before{content:"\e737"}.icon-category:before{content:"\e650"}.icon-user-o:before{content:"\e68c"}.icon-home:before{content:"\e9bb"}.icon-confirm:before{content:"\e666"}.icon-address:before{content:"\e684"}.icon-password:before{content:"\e60e"}.icon-log-out:before{content:"\e70f"}.icon-email:before{content:"\e604"}.icon-phone:before{content:"\e600"}.icon-image:before{content:"\e605"}.icon-zoom-out:before{content:"\e76e"}.icon-zoom-in:before{content:"\e638"}.icon-plus:before{content:"\e616"}.icon-close-o:before{content:"\e634"}.icon-checked:before{content:"\e61f"}.icon-trash:before{content:"\e67e"}.icon-angle-left:before{content:"\e6c2"}.icon-angle-up:before{content:"\e630"}.icon-angle-right:before{content:"\e609"}.icon-angle-down:before{content:"\e9f0"}.icon-time:before{content:"\e61e"}.icon-tag:before{content:"\e667"}.icon-filter:before{content:"\e727"}.icon-close:before{content:"\e60f"}.icon-flag:before{content:"\e66b"}.icon-qr-code:before{content:"\e608"}.icon-sign:before{content:"\e644"}.icon-description:before{content:"\e619"}.icon-credit:before{content:"\e6c3"}.icon-card:before{content:"\e626"}.icon-pc:before{content:"\e60a"}.icon-scan:before{content:"\e68e"}.icon-sad:before{content:"\e606"}.icon-users:before{content:"\e62e"}.icon-share:before{content:"\e60c"}.icon-gift:before{content:"\e607"}.icon-music:before{content:"\e61a"}.icon-chart:before{content:"\e622"}.icon-cog:before{content:"\e610"}.icon-search:before{content:"\e612"}.icon-copy:before{content:"\e620"}.icon-star:before{content:"\e613"}.icon-cny:before{content:"\e7f7"}.icon-question:before{content:"\e631"}.icon-select:before{content:"\e61b"}.icon-select-check:before{content:"\e7be"}.icon-down:before{content:"\e651"}.icon-up:before{content:"\e64b"}.icon-warning:before{content:"\e633"}.icon-refresh:before{content:"\e6d4"}.icon-download:before{content:"\e62c"}.icon-play:before{content:"\e636"}.icon-loading:before{content:"\e63f"}.icon-tel:before{content:"\e62d"}.icon-shield-check:before{content:"\e640"}.icon-individual:before{content:"\e61d"}.icon-corp:before{content:"\e611"}.icon-vip-alt:before{content:"\e614"}.icon-gift-alt:before{content:"\e691"}.icon-thumb-down:before{content:"\ec2b"}.icon-thumb-up:before{content:"\ec42"}.icon-magic-wand:before{content:"\e662"}.icon-lock:before{content:"\e653"}.icon-user:before{content:"\e615"}.icon-link-alt:before{content:"\e66a"}.icon-tools:before{content:"\e639"}.icon-empty-box:before{content:"\e716"}.icon-save:before{content:"\e7e6"}.icon-bell:before{content:"\e62b"}.icon-code-alt:before{content:"\e621"}.icon-book:before{content:"\e617"}.icon-pause:before{content:"\e6a3"}.icon-edit:before{content:"\e618"}.icon-add-col-after:before{content:"\e624"}.icon-add-col-before:before{content:"\e625"}.icon-add-row-after:before{content:"\e627"}.icon-bold:before{content:"\e628"}.icon-add-row-before:before{content:"\e629"}.icon-italic:before{content:"\e62a"}.icon-delete-col:before{content:"\e635"}.icon-combine-cells:before{content:"\e637"}.icon-paragraph:before{content:"\e63a"}.icon-quote:before{content:"\e63b"}.icon-ol:before{content:"\e63c"}.icon-delete-row:before{content:"\e63d"}.icon-underline:before{content:"\e63e"}.icon-images:before{content:"\e641"}.icon-delete-table:before{content:"\e642"}.icon-ul:before{content:"\e643"}.icon-redo:before{content:"\e645"}.icon-table:before{content:"\e646"}.icon-undo:before{content:"\e647"}.icon-link:before{content:"\e648"}.icon-hr:before{content:"\e649"}.icon-strike:before{content:"\e64a"}.icon-code:before{content:"\e64c"}.icon-merge-cells:before{content:"\e901"}.icon-move:before{content:"\e6bc"}.icon-bottom:before{content:"\e623"}.icon-top:before{content:"\e64d"}.icon-details:before{content:"\e752"}.icon-customer:before{content:"\e699"}.icon-clues:before{content:"\e697"}.icon-folder:before{content:"\e64e"}.icon-user-transfer:before{content:"\e696"}.icon-file:before{content:"\e652"}.icon-robot:before{content:"\e74b"}.icon-markdown:before{content:"\e8d4"}.icon-fly:before{content:"\e655"}.icon-mind-map:before{content:"\e664"}.icon-profile:before{content:"\e6db"}.icon-smile:before{content:"\e654"}.icon-ellipsis:before{content:"\e84a"}.icon-left:before{content:"\e60b"}.icon-right:before{content:"\e656"}.icon-upload:before{content:"\e657"}.icon-check:before{content:"\e658"}.icon-folder-add:before{content:"\e659"}.icon-folder-upload:before{content:"\e80b"}.icon-call:before{content:"\e65a"}.icon-vip:before{content:"\e65b"}.icon-language:before{content:"\e693"}.icon-desktop:before{content:"\e8e2"}.icon-direction-down:before{content:"\e66c"}.icon-direction-right:before{content:"\e66d"}.icon-direction-up:before{content:"\e66e"}.icon-direction-left:before{content:"\e66f"}.icon-heart:before{content:"\e660"}.icon-heart-alt:before{content:"\f2b2"}.icon-male:before{content:"\e776"}.icon-female:before{content:"\e678"}
\ No newline at end of file
@font-face{font-family:iconfont;src:url(iconfont.woff2?t=1640308417974) format('woff2'),url(iconfont.woff?t=1640308417974) format('woff'),url(iconfont.ttf?t=1640308417974) format('truetype')}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-dot-sm:before{content:"\e65c"}.icon-dot:before{content:"\e65d"}.icon-list:before{content:"\e602"}.icon-eye:before{content:"\e60d"}.icon-comment:before{content:"\e6ad"}.icon-weibo:before{content:"\e61c"}.icon-wechat:before{content:"\e62f"}.icon-qq:before{content:"\e603"}.icon-list-alt:before{content:"\e601"}.icon-transport:before{content:"\e64f"}.icon-pay:before{content:"\e683"}.icon-check-alt:before{content:"\e632"}.icon-cart:before{content:"\e737"}.icon-category:before{content:"\e650"}.icon-user-o:before{content:"\e68c"}.icon-home:before{content:"\e9bb"}.icon-confirm:before{content:"\e666"}.icon-address:before{content:"\e684"}.icon-password:before{content:"\e60e"}.icon-log-out:before{content:"\e70f"}.icon-email:before{content:"\e604"}.icon-phone:before{content:"\e600"}.icon-image:before{content:"\e605"}.icon-zoom-out:before{content:"\e76e"}.icon-zoom-in:before{content:"\e638"}.icon-plus:before{content:"\e616"}.icon-close-o:before{content:"\e634"}.icon-checked:before{content:"\e61f"}.icon-trash:before{content:"\e67e"}.icon-angle-left:before{content:"\e6c2"}.icon-angle-up:before{content:"\e630"}.icon-angle-right:before{content:"\e609"}.icon-angle-down:before{content:"\e9f0"}.icon-time:before{content:"\e61e"}.icon-tag:before{content:"\e667"}.icon-filter:before{content:"\e727"}.icon-close:before{content:"\e60f"}.icon-flag:before{content:"\e66b"}.icon-qr-code:before{content:"\e608"}.icon-sign:before{content:"\e644"}.icon-description:before{content:"\e619"}.icon-credit:before{content:"\e6c3"}.icon-card:before{content:"\e626"}.icon-pc:before{content:"\e60a"}.icon-scan:before{content:"\e68e"}.icon-sad:before{content:"\e606"}.icon-users:before{content:"\e62e"}.icon-share:before{content:"\e60c"}.icon-gift:before{content:"\e607"}.icon-music:before{content:"\e61a"}.icon-chart:before{content:"\e622"}.icon-cog:before{content:"\e610"}.icon-search:before{content:"\e612"}.icon-copy:before{content:"\e620"}.icon-star:before{content:"\e613"}.icon-cny:before{content:"\e7f7"}.icon-question:before{content:"\e631"}.icon-select:before{content:"\e61b"}.icon-select-check:before{content:"\e7be"}.icon-down:before{content:"\e651"}.icon-up:before{content:"\e64b"}.icon-warning:before{content:"\e633"}.icon-refresh:before{content:"\e6d4"}.icon-download:before{content:"\e62c"}.icon-play:before{content:"\e636"}.icon-loading:before{content:"\e63f"}.icon-tel:before{content:"\e62d"}.icon-shield-check:before{content:"\e640"}.icon-individual:before{content:"\e61d"}.icon-corp:before{content:"\e611"}.icon-vip-alt:before{content:"\e614"}.icon-gift-alt:before{content:"\e691"}.icon-thumb-down:before{content:"\ec2b"}.icon-thumb-up:before{content:"\ec42"}.icon-magic-wand:before{content:"\e662"}.icon-lock:before{content:"\e653"}.icon-user:before{content:"\e615"}.icon-link-alt:before{content:"\e66a"}.icon-tools:before{content:"\e639"}.icon-empty-box:before{content:"\e716"}.icon-save:before{content:"\e7e6"}.icon-bell:before{content:"\e62b"}.icon-code-alt:before{content:"\e621"}.icon-book:before{content:"\e617"}.icon-pause:before{content:"\e6a3"}.icon-edit:before{content:"\e618"}.icon-add-col-after:before{content:"\e624"}.icon-add-col-before:before{content:"\e625"}.icon-add-row-after:before{content:"\e627"}.icon-bold:before{content:"\e628"}.icon-add-row-before:before{content:"\e629"}.icon-italic:before{content:"\e62a"}.icon-delete-col:before{content:"\e635"}.icon-combine-cells:before{content:"\e637"}.icon-paragraph:before{content:"\e63a"}.icon-quote:before{content:"\e63b"}.icon-ol:before{content:"\e63c"}.icon-delete-row:before{content:"\e63d"}.icon-underline:before{content:"\e63e"}.icon-images:before{content:"\e641"}.icon-delete-table:before{content:"\e642"}.icon-ul:before{content:"\e643"}.icon-redo:before{content:"\e645"}.icon-table:before{content:"\e646"}.icon-undo:before{content:"\e647"}.icon-link:before{content:"\e648"}.icon-hr:before{content:"\e649"}.icon-strike:before{content:"\e64a"}.icon-code:before{content:"\e64c"}.icon-merge-cells:before{content:"\e901"}.icon-move:before{content:"\e6bc"}.icon-bottom:before{content:"\e623"}.icon-top:before{content:"\e64d"}.icon-details:before{content:"\e752"}.icon-customer:before{content:"\e699"}.icon-clues:before{content:"\e697"}.icon-folder:before{content:"\e64e"}.icon-user-transfer:before{content:"\e696"}.icon-file:before{content:"\e652"}.icon-robot:before{content:"\e74b"}.icon-markdown:before{content:"\e8d4"}.icon-fly:before{content:"\e655"}.icon-mind-map:before{content:"\e664"}.icon-profile:before{content:"\e6db"}.icon-smile:before{content:"\e654"}.icon-ellipsis:before{content:"\e84a"}.icon-left:before{content:"\e60b"}.icon-right:before{content:"\e656"}.icon-upload:before{content:"\e657"}.icon-check:before{content:"\e658"}.icon-folder-add:before{content:"\e659"}.icon-folder-upload:before{content:"\e80b"}.icon-call:before{content:"\e65a"}.icon-vip:before{content:"\e65b"}.icon-language:before{content:"\e693"}.icon-desktop:before{content:"\e8e2"}.icon-direction-down:before{content:"\e66c"}.icon-direction-right:before{content:"\e66d"}.icon-direction-up:before{content:"\e66e"}.icon-direction-left:before{content:"\e66f"}.icon-heart:before{content:"\e660"}.icon-heart-alt:before{content:"\f2b2"}.icon-male:before{content:"\e776"}.icon-female:before{content:"\e678"}
\ No newline at end of file
......@@ -5,6 +5,20 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "380331",
"name": "dot",
"font_class": "dot-sm",
"unicode": "e65c",
"unicode_decimal": 58972
},
{
"icon_id": "1003028",
"name": "dot_1",
"font_class": "dot",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "885533",
"name": "list",
......
......@@ -467,3 +467,6 @@ input:-webkit-autofill {
box-shadow: -1px 0 0 0 var(--color-primary);
}
.el-avatar{
vertical-align: middle;
}
......@@ -121,7 +121,15 @@ const defaultSuccessCallback = function (res) {
}
const defaultErrorCatcher = function (err, failCB) {
failCB({code: -1, msg: '请求失败(1):' + err})
const errString = err.toString()
const res = {code: -1, msg: '请求失败(1):' + err}
if (errString.includes('failed with status code 404')) {
res.msg = '请求失败:地址不存在'
}
const ret = failCB(res)
if (undefined === ret) {
defaultFailCallback(res)
}
console.error('api -> ', err)
}
......
@font-face {
font-family: "iconfont"; /* Project id 2778046 */
src: url('iconfont.woff2?t=1632474203013') format('woff2'),
url('iconfont.woff?t=1632474203013') format('woff'),
url('iconfont.ttf?t=1632474203013') format('truetype');
src: url('iconfont.woff2?t=1640308417974') format('woff2'),
url('iconfont.woff?t=1640308417974') format('woff'),
url('iconfont.ttf?t=1640308417974') format('truetype');
}
.iconfont {
......@@ -13,6 +13,14 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-dot-sm:before {
content: "\e65c";
}
.icon-dot:before {
content: "\e65d";
}
.icon-list:before {
content: "\e602";
}
......
......@@ -5,6 +5,20 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "380331",
"name": "dot",
"font_class": "dot-sm",
"unicode": "e65c",
"unicode_decimal": 58972
},
{
"icon_id": "1003028",
"name": "dot_1",
"font_class": "dot",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "885533",
"name": "list",
......
......@@ -6,6 +6,7 @@ namespace ModStart\Core\View;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Util\AgentUtil;
use Module\Vendor\Provider\SiteTemplate\SiteTemplateProvider;
......@@ -103,6 +104,7 @@ trait ResponsiveViewTrait
}
// print_r([$view, $useView, $useFrameView]); exit();
View::share('_viewFrame', $useFrameView);
BizException::throwsIfEmpty('View Not Exists : ' . $view, $useView);
return [$useView, $useFrameView];
}
......
......@@ -62,6 +62,7 @@ use ModStart\Support\Concern\HasFluentAttribute;
* @method AbstractField|mixed isLayoutField($vlaue = null)
* @method AbstractField|mixed isCustomField($vlaue = null)
* @method AbstractField|mixed gridFixed($vlaue = null)
* @method AbstractField|mixed gridEditable($vlaue = null)
*
* >>>>>> 数据流转换流程 >>>>>>
*
......@@ -161,6 +162,7 @@ class AbstractField implements Renderable
'isLayoutField',
'isCustomField',
'gridFixed',
'gridEditable',
];
/**
* 字段渲染模式,默认为 add,请查看 @see FieldRenderMode
......@@ -209,6 +211,10 @@ class AbstractField implements Renderable
* @var null|left|right
*/
private $gridFixed = null;
/**
* @var bool 行内编辑
*/
private $gridEditable = false;
public static function getAssets()
{
......
......@@ -557,17 +557,35 @@ class Form implements Renderable
ResultException::throwsIfFail($this->hookCall($this->hookSubmitted));
$this->dataEditing = [];
$this->removeReservedFields();
foreach ($this->editableFields() as $field) {
if ($field->isLayoutField() || $field->isCustomField()) {
continue;
$action = isset($this->dataSubmitted['_action']) ? $this->dataSubmitted['_action'] : null;
if ('itemCellEdit' == $action) {
$column = isset($this->dataSubmitted['column']) ? $this->dataSubmitted['column'] : null;
$value = isset($this->dataSubmitted['value']) ? $this->dataSubmitted['value'] : null;
if ($column) {
foreach ($this->editableFields() as $field) {
if ($field->isLayoutField() || $field->isCustomField()) {
continue;
}
if ($field->column() == $column) {
$this->dataEditing[$field->column()] = $value;
break;
}
}
}
$value = isset($this->dataSubmitted[$field->column()]) ? $this->dataSubmitted[$field->column()] : null;
$value = $field->prepareInput($value, $this->dataSubmitted);
$value = $field->serializeValue($value, $field);
if ($field->hookValueSerialize()) {
$value = call_user_func($field->hookValueSerialize(), $value, $field);
BizException::throwsIfEmpty('Data Error', $this->dataEditing);
} else {
foreach ($this->editableFields() as $field) {
if ($field->isLayoutField() || $field->isCustomField()) {
continue;
}
$value = isset($this->dataSubmitted[$field->column()]) ? $this->dataSubmitted[$field->column()] : null;
$value = $field->prepareInput($value, $this->dataSubmitted);
$value = $field->serializeValue($value, $field);
if ($field->hookValueSerialize()) {
$value = call_user_func($field->hookValueSerialize(), $value, $field);
}
$this->dataEditing[$field->column()] = $value;
}
$this->dataEditing[$field->column()] = $value;
}
$this->repository()->edit($this);
if (!empty($this->dataSubmitted['_redirect'])) {
......
......@@ -8,16 +8,17 @@ namespace ModStart\Widget;
* Class Label
* @package ModStart\Widget
*
* @method static string muted($text, $url, $disabled = false)
* @method static string warning($text, $url, $disabled = false)
* @method static string danger($text, $url, $disabled = false)
* @method static string success($text, $url, $disabled = false)
* @method static ButtonLink muted($text, $url, $disabled = false)
* @method static ButtonLink primary($text, $url, $disabled = false)
* @method static ButtonLink warning($text, $url, $disabled = false)
* @method static ButtonLink danger($text, $url, $disabled = false)
* @method static ButtonLink success($text, $url, $disabled = false)
*
* @method void text($text)
* @method void type($type)
* @method void url($url)
* @method void disabled($boolean)
* @method void blank($boolean)
* @method ButtonLink text($text)
* @method ButtonLink type($type)
* @method ButtonLink url($url)
* @method ButtonLink disabled($boolean)
* @method ButtonLink blank($boolean)
*
* @since 2.1.0
*/
......
@if(!empty($value))
<span class="ub-text-success">{{$options[1]}}</span>
@if($gridEditable)
<div>
<input type="checkbox" value="1" name="{{$name}}_{{$_index}}" lay-skin="switch"
lay-filter="{{$name}}_{{$_index}}"
lay-text="{!! join('|',array_values($options)) !!}" @if(!empty($value)) checked @endif />
</div>
<script>
layui.use('form', function () {
var form = layui.form;
form.on('switch({{$name}}_{{$_index}})', function (data) {
var index = parseInt($(data.elem).closest('tr').attr('data-index'));
$(data.elem).closest('[data-grid]').trigger('grid-item-cell-change', {
ele: data.elem,
index: index,
column: '{{$column}}',
value: data.elem.checked?1:0
});
});
});
</script>
@else
<span class="ub-text-muted">{{$options[0]}}</span>
@if(!empty($value))
<span class="ub-text-success">{{$options[1]}}</span>
@else
<span class="ub-text-muted">{{$options[0]}}</span>
@endif
@endif
\ No newline at end of file
<div id="{{$id}}" data-basic-lister class="ub-lister-table-container">
<div id="{{$id}}" data-grid data-basic-lister class="ub-lister-table-container">
<div class="toolbox-container">
@if($canAdd)
@if($addBlankPage)
......@@ -225,6 +225,23 @@
}
});
});
$grid.on('grid-item-cell-change', function (e, data) {
var post = {
_id: getId(data.ele),
_action: 'itemCellEdit',
column: data.column,
value: data.value
};
window.api.dialog.loadingOn();
window.api.base.post(lister.realtime.url.edit, post, function (res) {
window.api.dialog.loadingOff();
window.api.base.defaultFormCallback(res, {
success: function (res) {
}
});
lister.refresh();
});
});
@endif
@if($canDelete)
$lister.find('[data-table]').on('click', '[data-delete]', function () {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册