feat: 项目基础框架+配置+Kernel

This commit is contained in:
testadmin
2026-04-29 05:35:00 +08:00
parent 6ce7adcbfb
commit 9a6151fce3
5082 changed files with 437062 additions and 0 deletions
@@ -0,0 +1,166 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">广告标题</label>
<div class="layui-input-block">
<input type="text" name="title" autocomplete="off" placeholder="" class="layui-input" value="{{$res->title}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input type="text" name="describe" autocomplete="off" placeholder="" class="layui-input" value="{{$res->describe}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">广告位</label>
<div class="layui-input-block">
<select name="position_id" lay-filter="aihao">
<option value=""></option>
@foreach($position as $adsense)
<option value="{{$adsense['id']}}" @if($res['position_id'] == $adsense['id']) selected @endif>{{$adsense['name']}}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-block">
<input type="text" id="time1" name="start_time" autocomplete="off" class="layui-input" value="@if(!empty($res->start_time)){{$res->start_time}}@endif" placeholder="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-block">
<input type="text" id="time2" name="end_time" autocomplete="off" class="layui-input" value="@if(!empty($res->end_time)){{$res->end_time}}@endif" placeholder="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接</label>
<div class="layui-input-block">
<input type="text" name="url" autocomplete="off" placeholder="" class="layui-input" value="{{$res->url}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="sort" autocomplete="off" placeholder="" class="layui-input" value="{{$res->sort}}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">广告图片</label>
<div class="layui-input-block">
<button class="layui-btn" type="button" id="upload_test">选择图片</button>
<br>
<img src="@if(!empty($res->pic)){{$res->pic}}@endif" id="img_thumbnail" class="thumbnail" style="display: @if(!empty($res->pic)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 5px;">
<input type="hidden" name="pic" id="thumbnail" value="@if(!empty($res->pic)){{$res->pic}}@endif">
</div>
</div>
<input type="hidden" name="id" value="{{$res->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#upload_test' //绑定元素
,url: '{{URL("api/upload")}}' //上传接口
,done: function(res){
//上传完毕回调
if (res.type == "ok"){
$("#thumbnail").val(res.message)
$("#img_thumbnail").show()
$("#img_thumbnail").attr("src",res.message)
} else{
alert(res.message)
}
}
,error: function(){
//请求异常回调
}
});
});
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
var start={
elem:'#time1',
type:'date',
show:true,
closeStop:'#time1'
};
var end={
elem:'#time2',
type:'date',
show:true,
closeStop:'#time2'
};
lay('#time1').on('click',function(){
if($('#time2').val() != null && $('#time2').val() !=undefined &&$('#time2').val() !=''){
start.max = $('#time2').val();
}
laydate.render(start);
});
lay('#time2').on('click',function(){
if($('#time1').val() != null && $('#time1').val() !=undefined &&$('#time1').val() !=''){
end.min = $('#time1').val();
}
laydate.render(end);
});
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/ad/edit')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,138 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="position_manager">广告位管理</button>
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_ad">添加广告</button>
<!-- <div class="layui-inline">
<label class="layui-form-label">广告位置</label>
<div class="layui-input-inline">
<input type="text" name="position_id" placeholder="用户手机号或邮箱" autocomplete="off" class="layui-input" value="">
</div>
<button class="layui-btn btn-search" id="mobile_search" lay-submit lay-filter="mobile_search"> <i class="layui-icon">&#xe615;</i> </button>
</div> -->
<table id="userlist" lay-filter="userlist"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_show" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_show == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="FcardTpl">
<img src="@{{ d.pic }}" width="100" height="100">
</script>
@endsection
@section('scripts')
<script>
window.onload = function() {
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){ // enter 键
$('#mobile_search').click();
}
};
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
$('#add_ad').click(function(){layer_show('添加广告', '/admin/ad/edit');});
$('#position_manager').click(function(){layer_show('广告位管理', '/admin/ad/position_index');});
form.on('submit(mobile_search)',function(obj){
var position_id = $("input[name='position_id']").val();
tbRend("{{url('/admin/ad/list')}}?position_id="+position_id);
return false;
});
function tbRend(url) {
table.render({
elem: '#userlist'
, url: url
, page: true
,limit: 20
, cols: [[
{ field: 'id', title: 'ID', width: 100}
, {field:'title',title:'标题', width:150}
, {field:'describe',title:'描述', width:150}
, {field:'pic',title: '广告图片',width: 100,templet:'#FcardTpl'}
, {field:'url',title:'链接', width:150}
, {field:'start_time',title:'开始时间', width:150}
, {field:'end_time',title:'结束时间', width:150}
, {field:'position_name',title:'位置', width:100}
, {field:'sort',title:'排序', width:100}
,{field:'is_show', title:'是否显示', width:90, templet: '#switchTpl'}
, {fixed: 'right', title: '操作', width: 280, align: 'center', toolbar: '#barDemo'}
]]
});
}
tbRend("{{url('/admin/ad/list')}}");
//监听操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/ad/lock')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
layer.msg(res.message);
}
});
});
//监听工具条
table.on('tool(userlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "{{url('admin/ad/del')}}",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}else if (layEvent === 'edit'){ //编辑
layer_show('编辑广告','{{url('admin/ad/edit')}}?id='+data.id);
}
});
});
}
</script>
@endsection
@@ -0,0 +1,70 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="{{$res->name}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input type="text" name="describe" autocomplete="off" placeholder="" class="layui-input" value="{{$res->describe}}" >
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">是否显示</label>
<div class="layui-input-block">
<input type="radio" name="is_show" value="1" title="" @if($res->is_show ==1) checked @endif >
<input type="radio" name="is_show" value="0" title="" @if($res->is_show ==0) checked @endif>
</div>
</div> -->
<input type="hidden" name="id" value="{{$res['id']}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/ad/position_edit')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,116 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_position">添加广告位</button>
<table id="userlist" lay-filter="userlist"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_show" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_show == 1 ? 'checked' : '' }}>
</script>
@endsection
@section('scripts')
<script>
window.onload = function() {
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){ // enter 键
$('#mobile_search').click();
}
};
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
$('#add_position').click(function(){layer_show('添加广告位', '/admin/ad/position_edit');});
function tbRend(url) {
table.render({
elem: '#userlist'
, url: url
, page: true
,limit: 20
, cols: [[
{ field: 'id', title: 'ID', width: 100}
, {field:'name',title:'名称', width:150}
, {field:'describe',title:'描述', width:150}
, {field:'create_time',title:'添加时间', width:200}
,{field:'is_show', title:'是否显示', width:90, templet: '#switchTpl'}
, {fixed: 'right', title: '操作', width: 280, align: 'center', toolbar: '#barDemo'}
]]
});
}
tbRend("{{url('/admin/ad/position_list')}}");
//监听是否显示操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/ad/position_show')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
layer.msg(res.message);
}
});
});
//监听工具条
table.on('tool(userlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "{{url('admin/ad/position_del')}}",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}else if (layEvent === 'edit'){ //编辑
layer_show('编辑广告位','{{url('admin/ad/position_edit')}}?id='+data.id);
}
});
});
}
</script>
@endsection