作者 潘浩文
1 个管道 的构建 通过 耗费 1 秒

后台设备模块开发

<?php
// +----------------------------------------------------------------------
// | bronet [ 以客户为中心 以奋斗者为本 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author:kane < chengjin005@163.com>
// +----------------------------------------------------------------------
namespace app\portal\controller;
use cmf\controller\AdminBaseController;
use think\Db;
/**
* Class AdminLightOrderController
* @package app\portal\controller
* @adminMenuRoot(
* 'name' =>'订单管理',
* 'action' =>'default',
* 'parent' =>'',
* 'display'=> true,
* 'order' => 30,
* 'icon' =>'th',
* 'remark' =>'订单管理'
* )
*/
class AdminLightOrderController extends AdminBaseController
{
/**
* 订单列表
* @adminMenu(
* 'name' => '订单列表',
* 'parent' => 'portal/AdminLightOrder/default',
* 'display'=> true,
* 'hasView'=> true,
* 'order' => 10000,
* 'icon' => '',
* 'remark' => '订单列表',
* 'param' => ''
* )
*/
public function index()
{
//接收搜索参数
$param = $this->request->param();
//添加搜索条件
$where=[];
$user_name = empty($param['user_name']) ? '' : $param['user_name'];
if (!empty($user_name)) {
$where['lo.user_name'] = ['like', "%$name%"];
}
$mobile=empty($param['mobile']) ? '' : $param['mobile'];
if (!empty($mobile)) {
$where['l.mobile'] = $mobile;
}
$temple=empty($param['temple']) ? '' : $param['address'];
if (!empty($temple)) {
$where['t.address'] = $temple;
}
$startTime = empty($param['start_time']) ? 0 : strtotime($param['start_time']);
$endTime = empty($param['end_time']) ? 0 : strtotime($param['end_time']);
if (!empty($startTime) && !empty($endTime)) {
$where['pay_time'] = [['>= time', $startTime], ['<= time', $endTime]];
} else {
if (!empty($startTime)) {
$where['pay_time'] = ['>= time', $startTime];
}
if (!empty($endTime)) {
$where['pay_time'] = ['<= time', $endTime];
}
}
//所有寺庙
$temples=Db::name('temple')->select();
$this->assign('temples',$temples);
//数据提取
$data = Db::name('light_order')
->alias('lo')
->join('light l','lo.light_id=l.id')
->join('users u','lo.users_id=u.id')
->join('temple t','l.temple_id=t.id')
->join('temple_area ta','l.area_id=ta.id')
->where($where)
->order('lo.create_time','desc')
->paginate('10');
//向地址传参
$data->appends($param);
$this->assign('page',$data->render());
$this->assign('start_time', isset($param['start_time']) ? $param['start_time'] : '');
$this->assign('end_time', isset($param['end_time']) ? $param['end_time'] : '');
$this->assign('mobile', isset($param['mobile']) ? $param['mobile'] : '');
$this->assign('temple', isset($param['temple']) ? $param['temple'] : '');
$this->assign('user_name', isset($param['user_name']) ? $param['user_name'] : '');
$this->assign('list', $data);
return $this->fetch();
}
public function index2(){
$id=$this->request->param('id');
$data = Db::name('light')
->alias('l')
->join('temple t','l.temple_id=t.id')
->join('temple_area ta','l.area_id=ta.id')
->where('l.temple_id',$id)
->field('l.*,t.address,t.name as tname,ta.name as taname,ta.light')
->order('l.create_time','desc')
->paginate('10');
$this->assign('page',$data->render());
$this->assign('list',$data);
return $this->fetch();
}
/**
* 编辑订单
* @adminMenu(
* 'name' => '编辑订单',
* 'parent' => 'index',
* 'display'=> false,
* 'hasView'=> true,
* 'order' => 10000,
* 'icon' => '',
* 'remark' => '编辑订单',
* 'param' => ''
* )
*/
public function edit()
{
$id = $this->request->param('id');
$data = Db::name('light')
->alias('l')
->join('temple t','t.id=l.temple_id')
->where('l.id', $id)
->field('l.*,t.name as tname,t.id as tid')
->find();
$temple=Db::name('temple')->select();
$this->assign('temple',$temple);
$area=Db::name('temple_area')->where('temple_id',$data['temple_id'])->select();
$this->assign('area',$area);
$this->assign('list', $data);
return $this->fetch();
}
/**
* 编辑订单提交
* @adminMenu(
* 'name' => '编辑订单提交',
* 'parent' => 'index',
* 'display'=> false,
* 'hasView'=> false,
* 'order' => 10000,
* 'icon' => '',
* 'remark' => '编辑订单提交',
* 'param' => ''
* )
*/
public function editPost()
{
$param = $this->request->param();
$param['create_time'] = time();
Db::name('light')->where('id', $param['id'])->update($param);
$this->success('编辑成功');
}
/**
* 删除订单
* @adminMenu(
* 'name' => '删除订单',
* 'parent' => 'index',
* 'display'=> false,
* 'hasView'=> false,
* 'order' => 10000,
* 'icon' => '',
* 'remark' => '删除订单',
* 'param' => ''
* )
*/
public function delete()
{
$id = $this->request->param('id');
$re=Db::name('light_order')
->alias('lo')
->join('light l','lo.light_id=l.id')
->where(['l.id'=>$id,'lo.end_time'=>['>',time()]])
->find();
if ($re){
$this->error('该设备有进行中的订单,不允许删除');
}
Db::name('light')->where('id', $id)->delete();
$this->success('删除成功');
}
}
... ...
<include file="public@header"/>
<style type="text/css">
.pic-list li {
margin-bottom: 5px;
}
</style>
</head>
<script type="text/html" id="photos-item-tpl">
<li id="saved-image{id}">
<input id="photo-{id}" type="hidden" name="photo_urls[]" value="{filepath}">
<input class="form-control" id="photo-{id}-name" type="text" name="photo_names[]" value="{name}"
style="width: 200px;" title="图片名称">
<img id="photo-{id}-preview" src="{url}" style="height:36px;width: 36px;"
onclick="imagePreviewDialog(this.src);">
<a href="javascript:uploadOneImage('图片上传','#photo-{id}');">替换</a>
<a href="javascript:(function(){$('#saved-image{id}').remove();})();">移除</a>
</li>
</script>
<body>
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li><a href="{:url('AdminLight/index')}">设备列表</a></li>
<li class="active"><a>添加设备</a></li>
</ul>
<form action="{:url('AdminLight/addPost')}" method="post" class="form-horizontal js-ajax-form margin-top-20">
<div class="row">
<div class="col-md-9">
<table class="table table-bordered">
<tr>
<th>设备ID<span class="form-required">*</span></th>
<td>
<input class="form-control" type="text" name="number"
id="number" required value="" placeholder="请输入设备ID"/>
</td>
</tr>
<tr>
<th>所属寺庙<span class="form-required">*</span></th>
<td>
<select name="temple_id" required id="temple">
<option value="">请选择所属寺庙</option>
<foreach name="temple" item="vo">
<option value="{$vo.id}">{$vo.name}</option>
</foreach>
</select>
</td>
</tr>
<tr>
<th>所属区域<span class="form-required">*</span></th>
<td>
<select name="area_id" required id="area">
<option value="">请选择所属区域</option>
</select>
</td>
</tr>
<tr>
<th>设备位置(行)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="row"
id="row" value="" placeholder="请输入设备位置(行)" required/>
</td>
</tr>
<tr>
<th>设备位置(列)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="column"
id="column" value="" placeholder="请输入设备位置(列)" required/>
</td>
</tr>
<tr>
<th>该位置价格(元)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="price"
id="price" value="" placeholder="请输入该位置价格" required/>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button>
<a class="btn btn-default" href="{:url('AdminLight/index')}">{:lang('BACK')}</a>
</div>
</div>
</div>
</div>
</form>
</div>
<script type="text/javascript" src="__STATIC__/js/admin.js"></script>
<script type="text/javascript">
//编辑器路径定义
var editorURL = GV.WEB_ROOT;
</script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript">
$(function () {
editorcontent = new baidu.editor.ui.Editor();
editorcontent.render('content');
try {
editorcontent.sync();
} catch (err) {
}
$('.btn-cancel-thumbnail').click(function () {
$('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png');
$('#thumbnail').val('');
});
});
function doSelectCategory() {
var selectedCategoriesId = $('#js-categories-id-input').val();
openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', {
area: ['700px', '400px'],
btn: ['确定', '取消'],
yes: function (index, layero) {
//do something
var iframeWin = window[layero.find('iframe')[0]['name']];
var selectedCategories = iframeWin.confirm();
if (selectedCategories.selectedCategoriesId.length == 0) {
layer.msg('请选择分类');
return;
}
$('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(','));
$('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' '));
//console.log(layer.getFrameIndex(index));
layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
}
$("#temple").change(function(){
var one_id=$(this).val();
$.ajax({
url:"{:url('AdminLight/next')}",
Type:"POST",
data:"id="+one_id,
dataType:"json",
success:function(data){
var option=$("<option></option>");
$(option).val("");
$(option).html("请选择所属区域");
$("#area").html(option);
if(data){
var two = JSON.parse(data);
for(var i in two){
var option=$("<option></option>");
$(option).val(two[i]['id']);
$(option).html(two[i]['name']);
$("#area").append(option);
}
}
}
});
});
</script>
</body>
</html>
... ...
<include file="public@header"/>
</head>
<script type="text/html" id="photos-item-tpl">
<li id="saved-image{id}">
<input id="photo-{id}" type="hidden" name="photo_urls[]" value="{filepath}">
<input class="form-control" id="photo-{id}-name" type="text" name="photo_names[]" value="{name}"
style="width: 200px;" title="图片名称">
<img id="photo-{id}-preview" src="{url}" style="height:36px;width: 36px;"
onclick="imagePreviewDialog(this.src);">
<a href="javascript:uploadOneImage('图片上传','#photo-{id}');">替换</a>
<a href="javascript:(function(){$('#saved-image{id}').remove();})();">移除</a>
</li>
</script>
<body>
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li><a href="{:url('AdminLight/index')}">设备列表</a></li>
<li><a href="{:url('AdminLight/add')}">添加设备</a></li>
<li class="active"><a>编辑设备</a></li>
</ul>
<form action="{:url('AdminLight/editPost')}" method="post" class="form-horizontal js-ajax-form margin-top-20">
<div class="row">
<div class="col-md-9">
<table class="table table-bordered">
<tr>
<th>设备ID<span class="form-required">*</span></th>
<td>
<input value="{$list.id}" name="id" hidden>
<input class="form-control" type="text" name="number"
id="number" required value="{$list.number}" placeholder="请输入设备ID"/>
</td>
</tr>
<tr>
<th>所属寺庙<span class="form-required">*</span></th>
<td>
<select name="temple_id" required id="temple">
<option value="">请选择所属寺庙</option>
<foreach name="temple" item="vo">
<option value="{$vo.id}" <eq name="list.temple_id" value="$vo.id">selected</eq>>{$vo.name}</option>
</foreach>
</select>
</td>
</tr>
<tr>
<th>所属区域<span class="form-required">*</span></th>
<td>
<select name="area_id" required id="area">
<option value="">请选择所属区域</option>
<foreach name="area" item="vo">
<option value="{$vo.id}" <eq name="list.area_id" value="$vo.id">selected</eq>>{$vo.name}</option>
</foreach>
</select>
</td>
</tr>
<tr>
<th>设备位置(行)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="row"
id="row" value="{$list.row}" placeholder="请输入设备位置(行)" required/>
</td>
</tr>
<tr>
<th>设备位置(列)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="column"
id="column" value="{$list.column}" placeholder="请输入设备位置(列)" required/>
</td>
</tr>
<tr>
<th>该位置价格(元)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="price"
id="price" value="{$list.price}" placeholder="请输入该位置价格" required/>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary js-ajax-submit">编辑</button>
<a class="btn btn-default" href="{:url('AdminLight/index')}">{:lang('BACK')}</a>
</div>
</div>
</div>
</div>
</form>
</div>
<script src="__STATIC__/js/admin.js"></script>
<script type="text/javascript">
//编辑器路径定义
var editorURL = GV.WEB_ROOT;
</script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript">
$(function () {
editorcontent = new baidu.editor.ui.Editor();
editorcontent.render('content');
try {
editorcontent.sync();
} catch (err) {
}
$('.btn-cancel-thumbnail').click(function () {
$('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png');
$('#thumbnail').val('');
});
$('#more-template-select').val("{$post.more.template|default=''}");
});
$("#temple").change(function(){
var one_id=$(this).val();
$.ajax({
url:"{:url('AdminLight/next')}",
Type:"POST",
data:"id="+one_id,
dataType:"json",
success:function(data){
var option=$("<option></option>");
$(option).val("");
$(option).html("请选择所属区域");
$("#area").html(option);
if(data){
var two = JSON.parse(data);
for(var i in two){
var option=$("<option></option>");
$(option).val(two[i]['id']);
$(option).html(two[i]['name']);
$("#area").append(option);
}
}
}
});
});
</script>
</body>
</html>
\ No newline at end of file
... ...
<include file="public@header"/>
</head>
<body>
<div class="wrap">
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">设备列表</a></li>
<li><a href="{:url('AdminLight/add')}">添加设备</a></li>
</ul>
<form class="well form-inline margin-top-20" method="post" action="{:url('AdminLight/index')}">
设别号:
<input class="form-control" type="text" name="keyword" style="width: 200px;" value="{:input('request.keyword')}"
placeholder="请输入设备编号">
设备状态:
<select class="form-control" name="status" style="width: 140px;">
<option value=''>全部</option>
<option value="0" <eq name="status" value="0">selected</eq>>未运行</option>
<option value="1" <eq name="status" value="1">selected</eq>>服务中</option>
<option value="2" <eq name="status" value="2">selected</eq>>关机</option>
<option value="3" <eq name="status" value="3">selected</eq>>故障</option>
<option value="4" <eq name="status" value="4">selected</eq>>欠费</option>
<option value="5" <eq name="status" value="5">selected</eq>>待绑定</option>
</select>
<input type="submit" class="btn btn-primary" value="搜索"/>
<a class="btn btn-danger" href="{:url('AdminLight/index')}">清空</a>
</form>
<form method="post" class="js-ajax-form margin-top-20">
<div class="table-actions">
<!--<button type="submit" class="btn btn-primary btn-sm js-ajax-submit">{:lang('SORT')}</button>-->
</div>
<table class="table table-hover table-bordered table-list">
<thead>
<tr>
<th width="50">ID</th>
<th>设备ID</th>
<th>设备位置</th>
<th>价格(元)</th>
<th>设备运行状态</th>
<th>地区</th>
<th>所属寺庙</th>
<th>所属区域</th>
<!--<th>该区域空位</th>-->
<th>操作</th>
</tr>
</thead>
<tbody>
<foreach name="list" item="vo">
<tr>
<td>{$vo.id}</td>
<td>{$vo.number}</td>
<td>{$vo.row}排{$vo.column}位</td>
<td>{$vo.price}</td>
<td>
<eq name="vo.status" value="0">未运行</eq>
<eq name="vo.status" value="1">服务中</eq>
<eq name="vo.status" value="2">关机</eq>
<eq name="vo.status" value="3">故障</eq>
<eq name="vo.status" value="4">欠费</eq>
<eq name="vo.status" value="5">待绑定</eq>
</td>
<td>{$vo.address}</td>
<td>{$vo.tname}</td>
<td>{$vo.taname}</td>
<td>
<a href="{:url('AdminLight/edit',array('id'=>$vo['id']))}">编辑</a>
<a class="js-ajax-delete" href="{:url('AdminLight/delete',array('id'=>$vo['id']))}">
{:lang('DELETE')}
</a>
</td>
</tr>
</foreach>
</tbody>
<tfoot>
<tr>
<th width="50">ID</th>
<th>设备ID</th>
<th>设备位置</th>
<th>价格(元)</th>
<th>设备运行状态</th>
<th>地区</th>
<th>所属寺庙</th>
<th>所属区域</th>
<!--<th>该区域空位</th>-->
<th>操作</th>
</tr>
</tfoot>
</table>
<div class="table-actions">
<!--<button type="submit" class="btn btn-primary btn-sm js-ajax-submit">{:lang('SORT')}</button>-->
</div>
</form>
<ul class="pagination">{$page|default=''}</ul>
</div>
<script src="__STATIC__/js/admin.js"></script>
</body>
</html>
\ No newline at end of file
... ...
<include file="public@header"/>
</head>
<body>
<div class="wrap">
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">设备列表</a></li>
<li><a href="{:url('AdminLight/add')}">添加设备</a></li>
</ul>
<form method="post" class="js-ajax-form margin-top-20">
<div class="table-actions">
<!--<button type="submit" class="btn btn-primary btn-sm js-ajax-submit">{:lang('SORT')}</button>-->
</div>
<table class="table table-hover table-bordered table-list">
<thead>
<tr>
<th width="50">ID</th>
<th>设备ID</th>
<th>设备位置</th>
<th>价格(元)</th>
<th>设备运行状态</th>
<th>地区</th>
<th>所属寺庙</th>
<th>所属区域</th>
<!--<th>该区域空位</th>-->
<th>操作</th>
</tr>
</thead>
<tbody>
<foreach name="list" item="vo">
<tr>
<td>{$vo.id}</td>
<td>{$vo.number}</td>
<td>{$vo.row}排{$vo.column}位</td>
<td>{$vo.price}</td>
<td>
<eq name="vo.status" value="0">未运行</eq>
<eq name="vo.status" value="1">服务中</eq>
<eq name="vo.status" value="2">关机</eq>
<eq name="vo.status" value="3">故障</eq>
<eq name="vo.status" value="4">欠费</eq>
<eq name="vo.status" value="5">待绑定</eq>
</td>
<td>{$vo.address}</td>
<td>{$vo.tname}</td>
<td>{$vo.taname}</td>
<td>
<a href="{:url('AdminLight/edit',array('id'=>$vo['id']))}">编辑</a>
<a class="js-ajax-delete" href="{:url('AdminLight/delete',array('id'=>$vo['id']))}">
{:lang('DELETE')}
</a>
</td>
</tr>
</foreach>
</tbody>
<tfoot>
<tr>
<th width="50">ID</th>
<th>设备ID</th>
<th>设备位置</th>
<th>价格(元)</th>
<th>设备运行状态</th>
<th>地区</th>
<th>所属寺庙</th>
<th>所属区域</th>
<!--<th>该区域空位</th>-->
<th>操作</th>
</tr>
</tfoot>
</table>
<div class="table-actions">
<!--<button type="submit" class="btn btn-primary btn-sm js-ajax-submit">{:lang('SORT')}</button>-->
</div>
</form>
<ul class="pagination">{$page|default=''}</ul>
</div>
<script src="__STATIC__/js/admin.js"></script>
</body>
</html>
\ No newline at end of file
... ...
... ... @@ -51,6 +51,20 @@
id="light" value="" placeholder="请输入供奉财神空位"/>
</td>
</tr>
<tr>
<th>区域(行)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="rows"
id="rows" value="" placeholder="区域(行)" required/>
</td>
</tr>
<tr>
<th>区域(列)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="columns"
id="columns" value="" placeholder="区域(列)" required/>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
... ...
... ... @@ -47,6 +47,20 @@
id="light" value="{$list.light}" placeholder="请输入供奉财神空位"/>
</td>
</tr>
<tr>
<th>区域(行)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="rows"
id="rows" value="{$list.rows}" placeholder="区域(行)" required/>
</td>
</tr>
<tr>
<th>区域(列)<span class="form-required">*</span></th>
<td>
<input class="form-control" type="number" name="columns"
id="columns" value="{$list.columns}" placeholder="区域(列)" required/>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
... ...