1 Star 0 Fork 0

chenlong-sd / tpBaseFrame

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

SC后台框架

说明

  • php >= 8.1
  • mysql >= 5.7 推荐 8.0
  • 依赖 thinkphp8.0~
  • 依赖 element-ui2.2~
  • 依赖 layui2.9~

安装

  • 复制 .example.env 到 .env
  • 配置数据库信息
  • 拉取核心文件sc库到根目录
  • 然后运行 composer install 安装 vendor
  • 运行命令 php think run 后访问 http://127.0.0.1:8000 (或使用nginx/apache等web服务器启动均可,然后访问对应的地址) 会自动判断数据库,然后点击初始化

页面

  • 分两种模式解析
    • .php 结尾的文件以thinkphp的模板解析
    • .sc.php 结尾的文件以本框架定义的类定义及解析

.sc.php文件示例

<?php

\Sc\Util\HtmlStructure\Html\Html::create('demo1');

return "hello world!";
<?php

\Sc\Util\HtmlStructure\Html\Html::create('demo2');

return \Sc\Util\HtmlElement\El::double('div')->append('hello world!');

列表页

示例

  • 使用开发辅助插件创建文件时已经自动生成好下面的格式
  • 可查看系统已有的文件了解更多使用方式
<?php

use App\Admin\Controller\Base\RouteController;
use App\Common\Enums\Base\RouteEnumType;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Html\Html;
use Sc\Util\HtmlStructure\Html\Js\JsCode;
use Sc\Util\HtmlStructure\Table;

Html::create('页面名称');

$table = Table::create(TP::route()->to([RouteController::class, 'listsData'])->url(), 'route');

$table->addColumns(
    Table\Column::selection(),
    Table\Column::normal('标题', 'title'),
);

$component = include __DIR__ . '/edit.sc.php';

$table->setRowEvent('@primary.Edit.编辑',
    Table\EventHandler::window('编辑路由')->setConfig(['width' => '500px'])->setContent($component)
);

$table->setHeaderEvent("@danger.delete.删除",
    Table\EventHandler::post(
        url: TP::route()->to([RouteController::class, 'destroy']),
        data: ['ids' => '@selection.map(v => v.id)'],
        successHandler: JsCode::create("this.\$message.success('删除成功')")->then("this.routeGetData()")
    )->confirmMessage('确认删除选中数据吗?')
        ->addLoading()
);

return $table->render();

创建表格

// 数据地址格式
Sc\Util\HtmlStructure\Table::create('http://127.0.0.1/admin/index/index', 'table_id');
// 直接给数据
Sc\Util\HtmlStructure\Table::create([
    ['id' => 1, 'title' => 'data1'],
    ['id' => 2, 'title' => 'data2'],
], 'table_id1');

可用方法

方法名 描述
addColumns 添加展示列,Column
setRowEvent 设置行事件
setRowGroupEvent 设置一组行事件(下拉菜单形式)
setHeaderEvent 设置头部事件(左)
setPagination 设置是否开启分页,默认开启
setHeaderRightEvent 设置头部事件(右)
setAttr 设置属性
setId 设置ID,同创建时的第二个参数
addStatusToggleButtons 添加状态切换搜索的按钮组
setMaxHeight 设置表格最大高度
setDraw 设置行可拖动
enableTrash 启用回收站
render 渲染表格

列设置 Column

 Table\Column::selection();
 Table\Column::normal('标题', 'title');
列类型
类型 描述
index 序号列
normal 常规列
selection 多选框列
expand 可展开列,限ElementUI
event 事件列
列方法
方法名 描述
setAttr 设置元素属性
enableSort 开启排序
fixed 设置固定位置
addSearch 添加到搜索项
setFormat 设置自定义展示模板,设置展示类型的时候,后面的会顶掉前面的设置
showSwitch 设置行展示开关
showTag 设置展示标签
showImage 设置展示图片
notShow 设置不显示,php层面
align 设置对齐

事件 setHeaderEvent setRowEvent setRowGroupEvent


use App\Admin\Controller\Base\RouteController;
use App\Common\Enums\Base\RouteEnumType;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Html\Html;
use Sc\Util\HtmlStructure\Html\Js\JsCode;
use Sc\Util\HtmlStructure\Table;

// 行事件
// 第一个元素为事件dom元素,可使用 '@primary.Edit.编辑' 格式
// 第一个元素为事件dom元素,可使用 ['@primary.Edit.编辑', ['v-if' => 'a == 1']] 同时设置dom属性格式
// 第一个元素为事件dom元素,可使用 El::double('el-button')->append('事件dom') 自定义格式
// 第二个元素为处理事件的js代码,或返回js代码的回调函数
$table->setRowEvent('@primary.Edit.编辑',
    // ===== 类型 ====
    // window 打开窗口
    // redirect 跳转页面
    // get、post 发起异步请求
    // layer layer弹窗
    // injectSearchRedirectDownload  加页面搜索条件跳转

    // 行事件需要带行参数的时候,如果是跳转页面,如下,@id 则是该行的id参数
    Table\EventHandler::window('编辑')->setConfig(['width' => '1000px'])->setUrl('url', ['id' => '@id']);
    // 行事件需要带行参数的时候,如果是异步请求或表单,如下,@row.id 则是该行的id参数
    Table\EventHandler::post('url', ['id' => '@row.id']);
    Table\EventHandler::window('请假')->setRowData([
        'activity_id' => "@row.id"
    ])->setContent(
        Form::create('ask')->addFormItems(
            FormItem::hidden('activity_id'),
            FormItem::textarea('content', '内容'),
            FormItem::submit()->successClose('current')->submitUrl('url')
        )->render()
    );
    
    // 头部公共事件需要获取选择的数据时,@selection 则是已选择的数据,实际变量为 selection ,@是标记这是一个js变量不是字符串
    // 也可以用 Gramar::mark("selection") 标记
    Table\EventHandler::post(
        url: TP::route()->to([ActivityController::class, 'destroy']),
        data: ['ids' => '@selection.map(v => v.id)'],
        successHandler: JsCode::create("this.\$message.success('删除成功')")->then("this.activityGetData()")
    )->confirmMessage('确认删除选中数据吗?')
        ->addLoading()
);

// 设置一组行事件
$table->setRowGroupEvent('@primary.一组', function() {
    // 在回调内设置的事件为组事件,在对应的下拉菜单打开
    $table->setRowEvent('@primary.Edit.编辑',
        Table\EventHandler::window('编辑路由')->setConfig(['width' => '500px'])->setContent($component)
    );
});

表单页

示例

<?php

use App\Admin\Controller\Base\RoleController;
use App\Common\Util\TP;
use Sc\Util\HtmlStructure\Form;
use Sc\Util\HtmlStructure\Form\FormItem;
use Sc\Util\HtmlStructure\Html\Html;


Html::create('添加管理员角色');

$form = Form::create('roleFormupdate')->config('label-width', '80px');

$form->addFormItems(
    FormItem::hidden('id', 'ID'),
    FormItem::text('name', '角色'),
    FormItem::textarea('describe', '描述'),
    FormItem::submit()->successClose('current')->submitUrl(
        TP::route()->to([RoleController::class, 'store'])->url(),
        TP::route()->to([RoleController::class, 'update'])->url(),
    )->success('VueApp.roleGetData()')
);

return $form->render();
ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。 ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 Apache Licence是著名的非盈利开源组织Apache采用的协议。 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 允许代码修改,再作为开源或商业软件发布。需要满足 的条件: 1. 需要给代码的用户一份Apache Licence ; 2. 如果你修改了代码,需要在被修改的文件中说明; 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 带有原来代码中的协议,商标,专利声明和其他原来作者规 定需要包含的说明; 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 件中需要带有本协议内容。你可以在Notice中增加自己的 许可,但不可以表现为对Apache Licence构成更改。 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

基于TP8和elementUI2的后台框架 展开 收起
PHP 等 3 种语言
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/chenlong_sd/tpBaseFrame.git
git@gitee.com:chenlong_sd/tpBaseFrame.git
chenlong_sd
tpBaseFrame
tpBaseFrame
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891