mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-05-20 13:59:16 +08:00
同步更新
This commit is contained in:
parent
ad28cd3629
commit
99e76768b9
@ -31,7 +31,7 @@ class Service extends Plugin
|
||||
* 定义插件名称
|
||||
* @var string
|
||||
*/
|
||||
protected $appName = '系统后台管理';
|
||||
protected $appName = '系统管理';
|
||||
|
||||
/**
|
||||
* 定义安装包名
|
||||
|
@ -56,7 +56,7 @@ class Config extends Controller
|
||||
{
|
||||
$this->title = '系统参数配置';
|
||||
$this->files = Storage::types();
|
||||
$this->plugins = Plugin::get('', true);
|
||||
$this->plugins = Plugin::get(null, true);
|
||||
$this->issuper = AdminService::isSuper();
|
||||
$this->systemid = ModuleService::getRunVar('uni');
|
||||
$this->framework = ModuleService::getLibrarys('topthink/framework');
|
||||
|
@ -188,13 +188,7 @@ define(['md5', 'notify'], function (SparkMD5, Notify, allowMime) {
|
||||
});
|
||||
} else if (parseInt(ret.code) === 200) {
|
||||
(file.xurl = ret.data.url), that.progress('100.00', file);
|
||||
that.done({
|
||||
code: 1,
|
||||
info: '{:lang("文件秒传成功!")}',
|
||||
data: {
|
||||
url: file.xurl,
|
||||
}
|
||||
}, file.index, file, done, '{:lang("文件秒传成功!")}');
|
||||
that.done({code: 1, url: file.xurl, info: file.xstats, data: {code:200,url: file.xurl}}, file.index, file, done, '{:lang("文件秒传成功!")}');
|
||||
} else {
|
||||
that.event('upload.error', {file: file}, file, ret.info || ret.error.message || '{:lang("文件上传出错!")}');
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="layui-card-body padding-left-40">
|
||||
|
||||
<div class="layui-form-item label-required-prev">
|
||||
<div class="help-label"><b>数据类型</b>DataType</div>
|
||||
<div class="help-label"><b>数据类型</b>Data Type</div>
|
||||
{if isset($vo.type)}
|
||||
<label><input readonly value="{$vo.type|default=''}" class="layui-input think-bg-gray"></label>
|
||||
{else}
|
||||
@ -35,9 +35,9 @@
|
||||
</div>
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="help-label"><b>数据编码</b>DataCode</span>
|
||||
<span class="help-label"><b>数据编码</b>Data Code</span>
|
||||
{if isset($vo.code)}
|
||||
<input readonly maxlength="100" class="layui-input think-bg-gray" name="code" value='{$vo.code|default=""}' required required-error="数据编码不能为空" placeholder="请输入数据编码">
|
||||
<input readonly maxlength="100" class="layui-input think-bg-gray" name="code" value='{$vo.code|default=""}' required placeholder="请输入数据编码">
|
||||
{else}
|
||||
<input maxlength="100" class="layui-input" name="code" value='{$vo.code|default=""}' required vali-name="数据编码" placeholder="请输入数据编码">
|
||||
{/if}
|
||||
@ -45,13 +45,13 @@
|
||||
</label>
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="help-label"><b>数据名称</b>DataName</span>
|
||||
<span class="help-label"><b>数据名称</b>Data Name</span>
|
||||
<input maxlength="500" class="layui-input" name="name" value='{$vo.name|default=""}' required vali-name="数据名称" placeholder="请输入数据名称">
|
||||
<span class="help-block">请输入当前数据名称,请尽量保持名称的唯一性,数据名称尽量不要出现重复 ~</span>
|
||||
</label>
|
||||
|
||||
<label class="layui-form-item relative block">
|
||||
<span class="help-label"><b>数据内容</b>DataContent</span>
|
||||
<span class="help-label"><b>数据内容</b>Data Content</span>
|
||||
<textarea name="content" class="layui-textarea" placeholder="请输入数据内容">{$vo.content|default=''}</textarea>
|
||||
</label>
|
||||
|
||||
|
@ -54,7 +54,7 @@
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="toolbar">
|
||||
<!--{if auth("remove")}-->
|
||||
<!--{if auth("edit")}-->
|
||||
<a class="layui-btn layui-btn-sm" data-modal="{:url('edit')}?id={{d.id}}" data-title="编辑文件信息">{:lang("编 辑")}</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("remove")}-->
|
||||
|
@ -24,10 +24,11 @@
|
||||
{/block}
|
||||
|
||||
{block name="content"}
|
||||
<div class="think-box-notify">
|
||||
<div class="think-box-notify" type="info">
|
||||
|
||||
<!--{if isset($super) and $super}-->
|
||||
<b>{:lang('服务状态')}:</b><b class="margin-right-5" data-queue-message><span class="color-desc">{:lang('检查中')}</span></b>
|
||||
<b data-tips-text="{:lang('点击可复制【服务启动指令】')}" class="layui-icon pointer margin-right-20" data-copy="{$command|default=''}"></b>
|
||||
<b data-tips-text="{:lang('点击可复制【服务启动指令】')}" class="layui-icon pointer margin-right-20" data-copy="{$command|default=''}"></b>
|
||||
<script>$('[data-queue-message]').load('{:sysuri("admin/api.queue/status")}');</script>
|
||||
<!--{/if}-->
|
||||
|
||||
@ -39,6 +40,7 @@
|
||||
])}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="think-box-shadow">
|
||||
{include file='queue/index_search'}
|
||||
<table id="QueueTable" data-line="2" data-url="{:request()->url()}" data-target-search="form.form-search"></table>
|
||||
|
@ -390,11 +390,17 @@ $(function () {
|
||||
};
|
||||
/*! 通过 URI 查询最佳菜单 NODE */
|
||||
this.queryNode = function (uri, node) {
|
||||
if (!/^m-/.test(node = node || location.href.replace(/.*spm=([\d\-m]+).*/ig, '$1'))) {
|
||||
let $menu = $('[data-menu-node][data-open*="' + uri.replace(/\.html$/ig, '') + '"]');
|
||||
return $menu.size() ? $menu.get(0).dataset.menuNode : '';
|
||||
// 如果该节点存在直接返回 Node 值
|
||||
if (/^m-/.test(node = node || location.href.replace(/.*spm=([\d\-m]+).*/ig, '$1'))) {
|
||||
if ($('[data-menu-node="' + node + '"]').size()) return node;
|
||||
}
|
||||
return node;
|
||||
let path = uri.replace(/\.html$/ig, '');
|
||||
// 尝试通过 URI 查询节点值
|
||||
let $menu = $('[data-menu-node][data-open*="' + path + '"]');
|
||||
if ($menu.size()) return $menu.get(0).dataset.menuNode;
|
||||
// 尝试通过 URL 查询节点值
|
||||
$menu = $('[data-menu-node][data-open~="#' + path + '"]');
|
||||
return $menu.size() ? $menu.get(0).dataset.menuNode : (/^m-/.test(node || '') ? node : '');
|
||||
};
|
||||
/*! 完整 URL 转 URI 地址 */
|
||||
this.parseUri = function (uri, elem, vars, temp, attrs) {
|
||||
@ -425,6 +431,7 @@ $(function () {
|
||||
layer.close(evt.idx);
|
||||
});
|
||||
});
|
||||
|
||||
/*! 监听窗口大小及HASH切换 */
|
||||
return $(window).on('resize', function () {
|
||||
(layui.data('AdminMenuType')['mini'] || $body.width() < 1000) ? layout.addClass(mclass) : layout.removeClass(mclass);
|
||||
@ -647,6 +654,7 @@ $(function () {
|
||||
|
||||
// 默认动态设置页数, 动态设置最大高度
|
||||
if (option.page === true) option.page = {curr: layui.sessionData('pages')[option.id] || 1};
|
||||
if (option.width === 'full') option.width = $table.parent().width();
|
||||
if (option.height === 'full') if ($table.parents('.iframe-pagination').size()) {
|
||||
$table.parents('.iframe-pagination').addClass('not-footer');
|
||||
option.height = $(window).height() - $table.removeClass('layui-hide').offset().top - 20;
|
||||
@ -664,9 +672,8 @@ $(function () {
|
||||
option.done = function (res, curr, count) {
|
||||
layui.sessionData('pages', {key: table.id, value: this.page.curr || 1});
|
||||
typeof option.success === 'function' && option.success.call(this, res, curr, count);
|
||||
$.form.reInit($table.next()).find('[data-load][data-time!="false"],[data-action][data-time!="false"],[data-queue],[data-iframe]').not('[data-table-id]').attr('data-table-id', table.id);
|
||||
$.form.reInit($table.next()).find('[data-open],[data-load][data-time!="false"],[data-action][data-time!="false"],[data-queue],[data-iframe]').not('[data-table-id]').attr('data-table-id', table.id);
|
||||
(option.loading = this.loading = true) && $table.data('next', this).next().find(cls.join(',')).animate({opacity: 1});
|
||||
|
||||
}, option.parseData = function (res) {
|
||||
if (typeof params.filter === 'function') {
|
||||
res.data = params.filter(res.data, res);
|
||||
@ -900,7 +907,12 @@ $(function () {
|
||||
|
||||
/*! 注册 data-open 事件行为 */
|
||||
$.base.onEvent('click', '[data-open]', function () {
|
||||
// 仅记录当前表格分页
|
||||
let page = 0, tbid = this.dataset.tableId || null;
|
||||
if (tbid) page = layui.sessionData('pages')[tbid] || 0;
|
||||
layui.sessionData('pages', null);
|
||||
if (page > 0) layui.sessionData('pages', {key: tbid, value: page})
|
||||
// 根据链接类型跳转页面
|
||||
if (this.dataset.open.match(/^https?:/)) {
|
||||
$.form.goto(this.dataset.open);
|
||||
} else {
|
||||
@ -920,6 +932,7 @@ $(function () {
|
||||
/*! 注册 data-modal 事件行为 */
|
||||
$.base.onEvent('click', '[data-modal]', function () {
|
||||
$.base.applyRuleValue(this, {open_type: 'modal'}, function (data, elem, dset) {
|
||||
let area = dset.area || [dset.width || '800px', dset.height || '580px'];
|
||||
let defer = $.form.modal(dset.modal, data, dset.title || this.innerText || '编辑', undefined, undefined, undefined, dset.area || dset.width || '800px', dset.offset || 'auto', dset.full !== undefined);
|
||||
defer.progress((type) => type === 'modal.close' && dset.closeRefresh && $.layTable.reload(dset.closeRefresh));
|
||||
});
|
||||
|
@ -13,6 +13,7 @@ CKEDITOR.editorConfig = function (config) {
|
||||
config.removePlugins = 'easyimage,cloudservices,exportpdf';
|
||||
config.removeButtons = 'Underline,Subscript,Superscript';
|
||||
config.removeDialogTabs = 'image:advanced;link:advanced';
|
||||
config.baseFloatZIndex = 19891019;
|
||||
// 内容过滤
|
||||
config.disallowedContent = 'script; *[on*]';
|
||||
config.allowedContent = {$1: {elements: CKEDITOR.dtd, attributes: true, styles: true, classes: true}};
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -23,6 +23,30 @@
|
||||
// .flex-center
|
||||
// .flex-between
|
||||
|
||||
@nums: 0, 5, 10, 15, 20, 25, 30;
|
||||
each({
|
||||
m: margin;
|
||||
p: padding;
|
||||
}, .(@tv,@tt) {
|
||||
.ta-@{tt} {
|
||||
each(@nums, .(@n) {
|
||||
&-@{n} {
|
||||
@{tv}: @n * 1px !important;
|
||||
}
|
||||
each({
|
||||
t: -top;
|
||||
l: -left;
|
||||
r: -right;
|
||||
b: -bottom;
|
||||
}, .(@d,@k) {
|
||||
&@{k}-@{n} {
|
||||
@{tv}@{d}: @n * 1px !important;
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
.flex {
|
||||
#flex();
|
||||
|
||||
@ -689,44 +713,18 @@ table[data-line='3'] + div tbody .layui-table-cell {
|
||||
}
|
||||
}
|
||||
|
||||
@think-elips: {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
line-height: 1.4em;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.think-elips {
|
||||
&-1 {
|
||||
@think-elips();
|
||||
line-clamp: 1;
|
||||
-webkit-line-clamp: 1;
|
||||
}
|
||||
|
||||
&-2 {
|
||||
@think-elips();
|
||||
line-clamp: 2;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
&-3 {
|
||||
@think-elips();
|
||||
line-clamp: 3;
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
|
||||
&-4 {
|
||||
@think-elips();
|
||||
line-clamp: 4;
|
||||
-webkit-line-clamp: 4;
|
||||
}
|
||||
|
||||
&-5 {
|
||||
@think-elips();
|
||||
line-clamp: 5;
|
||||
-webkit-line-clamp: 5;
|
||||
}
|
||||
each(range(5), {
|
||||
&-@{value} {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
line-height: 1.4em;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
line-clamp: @value;
|
||||
-webkit-line-clamp: @value;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
.think-box-shadow {
|
||||
@ -1424,92 +1422,57 @@ label.think-checkbox {
|
||||
}
|
||||
}
|
||||
|
||||
.full- {
|
||||
&width {
|
||||
.full {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
|
||||
&-width {
|
||||
width: 100% !important
|
||||
}
|
||||
|
||||
&height {
|
||||
&-height {
|
||||
height: 100% !important
|
||||
}
|
||||
}
|
||||
|
||||
.color- {
|
||||
&red {
|
||||
color: #e44 !important
|
||||
}
|
||||
@sizes: 10, 12, 14;
|
||||
|
||||
&blue {
|
||||
color: #29f !important
|
||||
}
|
||||
|
||||
&desc {
|
||||
color: #999 !important
|
||||
}
|
||||
|
||||
&text {
|
||||
color: #333 !important
|
||||
}
|
||||
|
||||
&green {
|
||||
color: #090 !important
|
||||
}
|
||||
@colors: {
|
||||
red: #e44;
|
||||
blue: #29f;
|
||||
desc: #999;
|
||||
text: #333;
|
||||
green: #090;
|
||||
}
|
||||
|
||||
.sub-span- {
|
||||
&red span {
|
||||
color: #e44
|
||||
}
|
||||
|
||||
&blue span {
|
||||
color: #29f
|
||||
}
|
||||
|
||||
&desc span {
|
||||
color: #999
|
||||
}
|
||||
|
||||
&text span {
|
||||
color: #333
|
||||
}
|
||||
|
||||
&green span {
|
||||
color: #090
|
||||
}
|
||||
.sub-span {
|
||||
each(@colors, {
|
||||
&-@{key} span {
|
||||
color: @value;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
.sub-strong- {
|
||||
&s10 b {
|
||||
font-size: 10px;
|
||||
}
|
||||
.color {
|
||||
each(@colors, {
|
||||
&-@{key} {
|
||||
color: @value !important;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
&s12 b {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
&s14 b {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
&red b {
|
||||
color: #ec494e
|
||||
}
|
||||
|
||||
&blue b {
|
||||
color: #2494f2
|
||||
}
|
||||
|
||||
&desc b {
|
||||
color: #999
|
||||
}
|
||||
|
||||
&text b {
|
||||
color: #333
|
||||
}
|
||||
|
||||
&green b {
|
||||
color: #090
|
||||
}
|
||||
.sub-strong {
|
||||
each(@colors, {
|
||||
&-@{key} b {
|
||||
color: @value;
|
||||
}
|
||||
})
|
||||
each(@sizes, {
|
||||
&-s@{value} b {
|
||||
font-size: @value *1px;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
.think-bg- {
|
||||
@ -1575,90 +1538,44 @@ label.think-checkbox {
|
||||
}
|
||||
}
|
||||
|
||||
.font- {
|
||||
&code {
|
||||
.font {
|
||||
&-code {
|
||||
font-family: 'Courier New', 'Lucida Console', 'Consolas', 'Helvetica Neue', 'Helvetica', 'PingFang SC', 'Tahoma', 'Arial', sans-serif
|
||||
}
|
||||
|
||||
&s10 {
|
||||
font-size: 10px !important
|
||||
}
|
||||
each({
|
||||
s10: 10px;
|
||||
s11: 11px;
|
||||
s12: 12px;
|
||||
s13: 13px;
|
||||
s14: 14px;
|
||||
s15: 15px;
|
||||
s16: 16px;
|
||||
s18: 18px;
|
||||
s20: 20px;
|
||||
s30: 30px;
|
||||
s40: 40px;
|
||||
}, {
|
||||
&-@{key} {
|
||||
font-size: @value !important
|
||||
}
|
||||
})
|
||||
|
||||
&s11 {
|
||||
font-size: 11px !important
|
||||
}
|
||||
|
||||
&s12 {
|
||||
font-size: 12px !important
|
||||
}
|
||||
|
||||
&s13 {
|
||||
font-size: 13px !important
|
||||
}
|
||||
|
||||
&s14 {
|
||||
font-size: 14px !important
|
||||
}
|
||||
|
||||
&s15 {
|
||||
font-size: 15px !important
|
||||
}
|
||||
|
||||
&s16 {
|
||||
font-size: 16px !important
|
||||
}
|
||||
|
||||
&s18 {
|
||||
font-size: 18px !important
|
||||
}
|
||||
|
||||
&s20 {
|
||||
font-size: 20px !important
|
||||
}
|
||||
|
||||
&s30 {
|
||||
font-size: 30px !important
|
||||
}
|
||||
|
||||
&s40 {
|
||||
font-size: 40px !important
|
||||
}
|
||||
|
||||
&w1 {
|
||||
font-weight: 100 !important;
|
||||
}
|
||||
|
||||
&w2 {
|
||||
font-weight: 200 !important;
|
||||
}
|
||||
|
||||
&w3 {
|
||||
font-weight: 300 !important;
|
||||
}
|
||||
|
||||
&w4 {
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
|
||||
&w5 {
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
|
||||
&w6 {
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
&w7 {
|
||||
font-weight: 700 !important;
|
||||
}
|
||||
|
||||
&w8 {
|
||||
font-weight: 800 !important;
|
||||
}
|
||||
|
||||
&w9 {
|
||||
font-weight: 900 !important;
|
||||
}
|
||||
each({
|
||||
w1: 100;
|
||||
w2: 200;
|
||||
w3: 300;
|
||||
w4: 400;
|
||||
w5: 500;
|
||||
w6: 600;
|
||||
w7: 700;
|
||||
w8: 800;
|
||||
w9: 900;
|
||||
}, {
|
||||
&-@{key} {
|
||||
font-weight: @value !important
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
.border {
|
||||
@ -1717,413 +1634,35 @@ label.think-checkbox {
|
||||
}
|
||||
}
|
||||
|
||||
.margin {
|
||||
&-0 {
|
||||
margin: 0 !important
|
||||
@nums: 0, 5, 10, 15, 20, 25, 30, 40;
|
||||
each({
|
||||
--margin: margin;
|
||||
--padding: padding;
|
||||
}, .(@v) {
|
||||
.@{v} {
|
||||
each(@nums, {
|
||||
&-@{value} {
|
||||
@{v}: @value*1px !important;
|
||||
}
|
||||
&-row-@{value} {
|
||||
@{v}-left: @value*1px !important;
|
||||
@{v}-right: @value*1px !important;
|
||||
}
|
||||
&-top-@{value} {
|
||||
@{v}-top: @value*1px !important;
|
||||
}
|
||||
&-left-@{value} {
|
||||
@{v}-left: @value*1px !important;
|
||||
}
|
||||
&-right-@{value} {
|
||||
@{v}-right: @value*1px !important;
|
||||
}
|
||||
&-bottom-@{value} {
|
||||
@{v}-bottom: @value*1px !important;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin: 40px !important
|
||||
}
|
||||
|
||||
&-row {
|
||||
&-0 {
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin-left: 5px !important;
|
||||
margin-right: 5px !important;
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin-left: 10px !important;
|
||||
margin-right: 10px !important;
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin-left: 15px !important;
|
||||
margin-right: 15px !important;
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin-left: 20px !important;
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin-left: 25px !important;
|
||||
margin-right: 25px !important;
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin-left: 30px !important;
|
||||
margin-right: 30px !important;
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin-left: 40px !important;
|
||||
margin-right: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
&-top {
|
||||
&-0 {
|
||||
margin-top: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin-top: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin-top: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin-top: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin-top: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin-top: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin-top: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin-top: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
&-left {
|
||||
&-0 {
|
||||
margin-left: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin-left: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin-left: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin-left: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin-left: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin-left: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin-left: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin-left: 40px !important
|
||||
}
|
||||
}
|
||||
|
||||
&-right {
|
||||
&-0 {
|
||||
margin-right: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin-right: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin-right: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin-right: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin-right: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin-right: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin-right: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin-right: 40px !important
|
||||
}
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
&-0 {
|
||||
margin-bottom: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
margin-bottom: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
margin-bottom: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
margin-bottom: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
margin-bottom: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
margin-bottom: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
margin-bottom: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
margin-bottom: 40px !important
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.padding {
|
||||
&-0 {
|
||||
padding: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding: 20px !important
|
||||
}
|
||||
|
||||
&-25 {
|
||||
padding: 25px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding: 40px !important
|
||||
}
|
||||
|
||||
&-row {
|
||||
&-0 {
|
||||
padding-left: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding-left: 5px !important;
|
||||
padding-right: 5px !important;
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding-left: 10px !important;
|
||||
padding-right: 10px !important;
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding-left: 15px !important;
|
||||
padding-right: 15px !important;
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding-left: 20px !important;
|
||||
padding-right: 20px !important;
|
||||
}
|
||||
|
||||
&-25 {
|
||||
padding-left: 25px !important;
|
||||
padding-right: 25px !important;
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding-left: 30px !important;
|
||||
padding-right: 30px !important;
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding-left: 40px !important;
|
||||
padding-right: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
&-top {
|
||||
&-0 {
|
||||
padding-top: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding-top: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding-top: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding-top: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding-top: 20px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding-top: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding-top: 40px !important
|
||||
}
|
||||
}
|
||||
|
||||
&-left {
|
||||
&-0 {
|
||||
padding-left: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding-left: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding-left: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding-left: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding-left: 20px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding-left: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding-left: 40px !important
|
||||
}
|
||||
}
|
||||
|
||||
&-right {
|
||||
&-0 {
|
||||
padding-right: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding-right: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding-right: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding-right: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding-right: 20px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding-right: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding-right: 40px !important
|
||||
}
|
||||
}
|
||||
|
||||
&-bottom {
|
||||
&-0 {
|
||||
padding-bottom: 0 !important
|
||||
}
|
||||
|
||||
&-5 {
|
||||
padding-bottom: 5px !important
|
||||
}
|
||||
|
||||
&-10 {
|
||||
padding-bottom: 10px !important
|
||||
}
|
||||
|
||||
&-15 {
|
||||
padding-bottom: 15px !important
|
||||
}
|
||||
|
||||
&-20 {
|
||||
padding-bottom: 20px !important
|
||||
}
|
||||
|
||||
&-30 {
|
||||
padding-bottom: 30px !important
|
||||
}
|
||||
|
||||
&-40 {
|
||||
padding-bottom: 40px !important
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@keyframes loading {
|
||||
17% {
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11
readme.md
11
readme.md
@ -10,7 +10,9 @@
|
||||
|
||||
**ThinkAdmin** 是一款遵循 **MIT** 协议免费开源的快速开发框架,基于最新版本 **ThinkPHP6** 的极简后台管理系统 ( 已兼容 **ThinkPHP8** ),在使用 **ThinkAdmin** 前请认真阅读[《免责声明》](https://doc.thinkadmin.top/disclaimer)并同意该声明。
|
||||
|
||||
当前 **ThinkAdmin** 的最新版本为[ **v6.1** ](https://gitee.com/zoujingli/ThinkAdmin/tree/v6.1),从这个版本开始正式进入插件时代,提供类似 **PaaS** 的组件升级更新服务,也可以本地化定制开发,基础组件及扩展插件统一使用 **Composer** 管理。**ThinkAdmin** 与传统 **ThinkPHP** 多应用模式无差别,用户可以自行开发自己的模块,此次升级可完美兼容 **ThinkAdmin v6.0** 应用,原 **ThinkAdmin v6.0** 只需安装 **ThinkPlugsAdmin** 组件即可升级到 **v6.1** 的插件模式。想要了解更多 **ThinkAdmin** 插件生态请阅读 [《ThinkAdmin 插件生态》](https://gitee.com/zoujingli/ThinkAdmin/blob/v6.1/plugin.md)
|
||||
当前 **ThinkAdmin** 的最新版本为[ **v6.1** ](https://gitee.com/zoujingli/ThinkAdmin/tree/v6.1),从这个版本开始正式进入插件时代,提供类似 **PaaS** 的组件升级更新服务,也可以本地化定制开发,基础组件及扩展插件统一使用 **Composer** 管理。**ThinkAdmin** 与传统 **ThinkPHP** 多应用模式无差别,用户可以自行开发自己的模块,此次升级可完美兼容 **ThinkAdmin v6.0** 应用,原 **ThinkAdmin v6.0** 只需安装 **ThinkPlugsAdmin** 组件即可升级到 **v6.1** 的插件模式。
|
||||
|
||||
[//]: # (想要了解更多 **ThinkAdmin** 插件生态请阅读 [《ThinkAdmin 插件生态》](https://doc.thinkadmin.top/guide/plugin.html))
|
||||
|
||||
**[查看 ThinkAdmin v6.1 详细介绍请切换至 v6.1 分支](https://gitee.com/zoujingli/ThinkAdmin/tree/v6.1)!!**
|
||||
|
||||
@ -20,7 +22,7 @@
|
||||
|
||||
使用 **ThinkAdmin** 需要掌握 **ThinkPHP**、**jQuery**、**LayUI**、**RequireJs** 等开发技能,后台 **UI** 界面基于最新版本的 **LayUI** 前端框架以及 **RequireJs** 组件加载方式,默认加载了所有 **LayUI** 的组件,框架中可以直接使用组件(独立页面需要注意 **js** 加载顺序哦),使用 **RequireJs** 加载插件,互联网上资源非常多,可自行下载进行二次扩展。目前后台大部分页面为单页程序,页面加载速度非常快速,也因此后台不再支持选项卡模式。
|
||||
|
||||
我们致力于快速开发的底层框架,让项目开发变得更容易。框架提供完善的基础组件以及对应的 **API** 支持,基于此框架可以快速开发各种 **WEB** 应用。任何一个系统都不能完全满足所有的业务场景,**ThinkAdmin** 免费提供基础底层的功能,这里包括系统权限管理,系统存储配置,微信授权管理,以及其他常用功能集成等…… 因此 **ThinkAdmin** 也被大家定性为外包二开基线系统。从 **v6.1** 开始我们提供会员尊享组件和定制业务插件服务。目前已经有许多公司及个人在使用 **ThinkAdmin**,通过数据聚合统计已有 **5** 万多在线运行的项目。
|
||||
我们致力于快速开发的底层框架,让项目开发变得更容易。框架提供完善的基础组件以及对应的 **API** 支持,基于此框架可以快速开发各种 **WEB** 应用。任何一个系统都不能完全满足所有的业务场景,**ThinkAdmin** 免费提供基础底层的功能,这里包括系统权限管理,系统存储配置,微信授权管理,以及其他常用功能集成等…… 因此 **ThinkAdmin** 也被大家定性为外包二开基线系统。目前已经有许多公司及个人在使用 **ThinkAdmin**,通过数据聚合统计已有 **5** 万多在线运行的项目。
|
||||
|
||||
#### 注意事项
|
||||
|
||||
@ -59,8 +61,9 @@ php think run --host 127.0.0.1
|
||||
|
||||
**2. 通过源码安装:**( 默认安装 admin、wechat 两个模块 )
|
||||
|
||||
如果需要安装演示系统的旧版本 **data** 模块代码,请跳转到
|
||||
https://gitee.com/zoujingli/think-plugs-data
|
||||
[//]: # (如果需要安装演示系统的旧版本 **data** 模块代码,请跳转到)
|
||||
|
||||
[//]: # (https://gitee.com/zoujingli/think-plugs-data)
|
||||
|
||||
```shell
|
||||
### 下载项目( 需要在英文目录下面执行 )
|
||||
|
Loading…
x
Reference in New Issue
Block a user