Skip to content

Commit

Permalink
系统设置支持自定义参数
Browse files Browse the repository at this point in the history
  • Loading branch information
yafoo committed Aug 19, 2022
1 parent ff8f498 commit dd1cefa
Show file tree
Hide file tree
Showing 3 changed files with 152 additions and 7 deletions.
50 changes: 50 additions & 0 deletions admin/controller/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,56 @@ class Site extends Base
}
}

async form() {
const id = this.ctx.query.id;

let data = {};
if(id) {
data = await this.$model.site.get({kname: id});
}

this.$assign('id', id);
this.$assign('data', data);
this.$assign('uname', this.user.uname);
await this.$fetch();
}

async save() {
if(this.ctx.method != 'POST') {
return this.$error('非法请求!');
}

const data = this.ctx.request.body;
const id = data.id;
delete data.id;
data.group = 'self';

// 判断是否已存在
if(!id || data.kname != id) {
const res = await this.$model.site.get({kname: data.kname});
if(res) {
return this.$error('参数' + data.kname + '已存在!');
}
}
const result = await this.$model.site.save(data, id ? {kname: id} : undefined);

if(result) {
this.$success(id ? '保存成功!' : '新增成功!', 'index');
} else {
this.$error(id ? '保存失败!' : '新增失败!');
}
}

async delete() {
const id = this.ctx.query.id;
const result = await this.$model.site.del({kname: id, group: 'self'});
if(result) {
this.$success('删除成功!', 'index');
} else {
this.$error('删除失败!');
}
}

async clear(msg = '') {
try {
await this.$middleware.cache.clear(); // 不建议这样调用中间件
Expand Down
67 changes: 67 additions & 0 deletions admin/view/site_form.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{{extend './layout.htm'}}

{{block 'css'}}
<style>
.layui-form-label {width: 90px;}
.layui-input-block {margin-left: 120px;}
</style>
{{/block}}

{{block 'main'}}
<form method="post" action="{{url('save')}}" class="layui-form">
<input type="hidden" name="id" value="{{data.kname}}">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">参数名字</label>
<div class="layui-input-block">
<input type="text" name="intro" required lay-verType="tips" class="layui-input" value="{{data.intro}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数key</label>
<div class="layui-input-block">
<input type="text" name="kname" required lay-verType="tips" class="layui-input" value="{{data.kname}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数值</label>
<div class="layui-input-block">
<input type="text" name="value" class="layui-input" value="{{data.value}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">参数类型</label>
<div class="layui-input-block">
<input type="radio" name="type" required lay-verType="tips" value="input" title="单行文本" {{data.type == 'input' || !data.kname ? 'checked' : ''}}>
<input type="radio" name="type" required lay-verType="tips" value="textarea" title="多行文本" {{data.type == 'textarea' ? 'checked' : ''}}>
<input type="radio" name="type" required lay-verType="tips" value="radio" title="单选框" {{data.type == 'radio' ? 'checked' : ''}}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文本框提示语</label>
<div class="layui-input-block">
<input type="text" name="tips" class="layui-input" value="{{data.tips}}" placeholder="仅参数类型为文本时有效">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单选框列表项</label>
<div class="layui-input-block">
<input type="text" name="options" class="layui-input" value="{{data.options}}" placeholder="示例:项目1|value1||项目2|value2">
</div>
</div>
</div>

<div style="text-align: center;">
<button class="layui-btn" lay-submit>提交</button>
</div>
</form>
{{/block}}

{{block 'js'}}
<script>
layui.use(['form', 'element'], function(){
var form = layui.form;
var element = layui.element;
});
</script>
{{/block}}
42 changes: 35 additions & 7 deletions admin/view/site_index.htm
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{{extend './layout.htm'}}

{{block 'css'}}
<link href="https://cdn.bootcss.com/highlight.js/9.15.10/styles/default.min.css" rel="stylesheet">
<style>
.layui-tab-content{padding: 10px 0 0;}
.layui-form-label{width: 90px;}
.layui-input-block{margin-left: 120px;}
.layui-tab-content {padding: 10px 0 0;}
.layui-form-label {width: 90px;}
.layui-input-block {margin-left: 120px;}
.tab-item-self .layui-input-block {margin-right: 150px;}
.tab-item-self .form-action {float: right; padding: 4px 15px;}
</style>
{{/block}}

Expand All @@ -16,7 +17,7 @@
<li class="layui-this">站点设置</li>
<li>图片上传</li>
<li>其他</li>
<li style="display: none;">自定义</li>
<li>自定义</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
Expand Down Expand Up @@ -76,11 +77,12 @@
{{/if}}
{{/each}}
</div>
<div class="layui-tab-item">
<div class="layui-tab-item tab-item-self">
{{each list item}}
{{if item.group == 'self'}}
<div class="layui-form-item">
<label class="layui-form-label">{{item.intro}}</label>
<div class="form-action"><a class="layui-btn layui-btn-sm" href="{{url('form', {id: item.kname})}}">编辑</a><a href="{{url('delete', {id: item.kname})}}" class="layui-btn layui-btn-danger layui-btn-sm btn-del">删除</a></div>
<div class="layui-input-block">
{{if item.type == 'input'}}
<input type="text" name="{{item.kname}}" lay-verType="tips" class="layui-input" value="{{item.value}}" placeholder="{{item.tips}}">
Expand All @@ -98,7 +100,7 @@
</div>
</div>
<div style="text-align: center;">
<button class="layui-btn" lay-submit>提交</button>
<button class="layui-btn" lay-submit>提交</button><a class="layui-btn btn-add layui-hide" href="{{url('form')}}">新增</a>
</div>
</form>
{{/block}}
Expand All @@ -108,6 +110,32 @@
layui.use(['form', 'element'], function(){
var form = layui.form
,element = layui.element;

$('a.btn-del').each(function() {
var url = $(this).attr('href');
$(this).attr('href', 'javascript:;').click(function() {
layer.confirm("确定删除吗?", function(index) {
layer.close(index);
$.get(url, function(re) {
if(re.state) {
layer.msg(re.msg, function() {
history.go(0);
});
}else{
layer.msg(re.msg);
}
});
});
});
});

element.on('tab(demo)', function(e) {
if(e.index == 3) {
$('.btn-add').removeClass('layui-hide');
} else {
$('.btn-add').addClass('layui-hide');
}
});
});
</script>
{{/block}}

0 comments on commit dd1cefa

Please sign in to comment.