> TplayPro已经做了部分数据的软删除及恢复,如果你想要扩展某类数据的软删除及恢复也很简单,因为系统已经为你打好了基础。
>
想要事项某类数据的软删除及恢复,首先要保证你的数据表里有一个用来表示软删除的字段,比如status,以及表示软删除的值,比如-1。
在你调用数据列表或者可用数据时要避开已经软删除的数据,比如status为-1的数据就不要调用了。
### 如何在系统回收站里出现已经软删除的数据?
1.找到并打开views/recycling/index.html文件,在tab里增加一项
~~~
<ul class="layui-tab-title">
<li class="layui-this">管理员</li>
<li>权限组</li>
<li>系统配置</li>
<li>权限节点</li>
<li>文章/商品</li>
</ul>
~~~
2.在tab的内容里增加一项
~~~
<div class="layui-tab-item tplay-btn">
<button class="layui-btn layui-btn-primary layui-btn-sm" data-type="content" data-events="restore_content">批量还原</button>
<button class="layui-btn layui-btn-primary layui-btn-sm" data-type="content" data-events="del_content">彻底删除</button>
<table id="tplay-admin-content" lay-filter="tplay-admin-content">
</table>
</div>
~~~
> 增加的table要有id和lay-filter
>
3.在js里增加表格的数据调用
~~~
table.render({
elem: '#tplay-admin-content'
,url: config.domain+'/admin/recycling/index'//系统内置的调用软删除数据的接口
,where: {model: 'content'}//传入模型名称
,page: true
,limit:15
,cols: [[
{type: 'checkbox', fixed: 'left'}
,{field: 'id', title: 'ID'}
,{field: 'title', title: '标题'}
,{field: 'update_time', title: '删除时间'}
]]
,skin: 'line'
});
~~~
4.在事件处理中加入
~~~
,restore_content: function(othis, type){
var thisTabs = tabs[type]
,checkStatus = table.checkStatus(thisTabs.id)
,data = checkStatus.data; //获得选中的数据
if(data.length === 0) return layer.msg('未选中行');
var array = [];
for (var i = 0; i < data.length; i++) {
array.push(data[i].id);
}
layer.confirm('还原选中的数据吗?', function(){
tplay.ajax({
url:config.domain+"/admin/recycling/restore",//系统内置的还原软删除数据的接口
type:'post',
data:{id:array,model:'content'},//传入要恢复的数据的主键和模型
success:function(res){
layer.msg(res.msg);
if(res.code == 1){
table.reload(thisTabs.id); //刷新表格
}
}
})
});
}
,del_content: function(othis, type){
var thisTabs = tabs[type]
,checkStatus = table.checkStatus(thisTabs.id)
,data = checkStatus.data; //获得选中的数据
if(data.length === 0) return layer.msg('未选中行');
var array = [];
for (var i = 0; i < data.length; i++) {
array.push(data[i].id);
}
layer.confirm('彻底删除选中的数据吗?', function(){
tplay.ajax({
url:config.domain+"/admin/recycling/del",//系统内置的软删除的数据彻底删除的接口
type:'post',
data:{id:array,model:'content'},//传入模型和主键
success:function(res){
layer.msg(res.msg);
if(res.code == 1){
table.reload(thisTabs.id); //刷新表格
}
}
})
});
}
~~~
5.在js代码的组后找到以下代码,并加入你刚添加的表格
~~~
//区分各选项卡中的表格
var tabs = {
admin: {
text: '管理员'
,id: 'tplay-admin-all'
},
group: {
text: '权限组'
,id: 'tplay-admin-group'
},
system: {
text: '系统配置'
,id: 'tplay-admin-system'
},
rule: {
text: '权限节点'
,id: 'tplay-admin-rule'
},
content: {
text: '文章/商品'
,id: 'tplay-admin-content'
}
};
~~~
> 如果仍有疑问,可以直接查阅后端接口代码。