初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,208 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\jielong\shop\controller;
use app\shop\controller\BaseShop;
use addon\jielong\model\Jielong as JielongModel;
use addon\jielong\model\Poster;
class Jielong extends BaseShop
{
/*
* 接龙活动列表
*/
public function lists()
{
$model = new JielongModel();
$condition = [
[ 'is_delete', '=', 0 ],
[ 'site_id', '=', $this->site_id ]
];
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$status = input('status', '');//活动状态
if ($status !== '') {
$condition[] = [ 'status', '=', $status ];
}
//商品名称
$jielong_name = input('jielong_name', '');
if ($jielong_name) {
$condition[] = [ 'jielong_name', 'like', '%' . $jielong_name . '%' ];
}
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && !$end_time) {
$condition[] = [ 'end_time', '>=', date_to_time($start_time) ];
} elseif (!$start_time && $end_time) {
$condition[] = [ 'start_time', '<=', date_to_time($end_time) ];
} elseif ($start_time && $end_time) {
$start_timestamp = date_to_time($start_time);
$end_timestamp = date_to_time($end_time);
$sql = "start_time between {$start_timestamp} and {$end_timestamp}";
$sql .= " or end_time between {$start_timestamp} and {$end_timestamp}";
$sql .= " or (start_time <= {$start_timestamp} and end_time >= {$end_timestamp})";
$condition[] = [ '', 'exp', \think\facade\Db::raw($sql) ];
}
$list = $model->getJielongPageList($condition, $page, $page_size, 'create_time desc', $this->site_id);
return $list;
} else {
$status_list = $model->getJielongStatus()[ 'data' ] ?? [];
$this->assign('jielong_status', $status_list);
return $this->fetch("jielong/lists");
}
}
/**
* 添加接龙活动
*/
public function add()
{
if (request()->isJson()) {
$common_data = [
'site_id' => $this->site_id,
'jielong_name' => input('jielong_name', ''),//活动名称
'start_time' => strtotime(input('start_time', '')),//活动开始时间
'end_time' => strtotime(input('end_time', '')),//活动结束时间
'take_start_time' => strtotime(input('take_start_time', '')),//自提开始时间
'take_end_time' => strtotime(input('take_end_time', '')),//自提结束时间
'desc' => input('desc', ''),//活动说明
];
$goods = [
'goods_ids' => input('goods_ids', '')
];
$model = new JielongModel();
return $model->addJielong($common_data, $goods);
} else {
return $this->fetch("jielong/add");
}
}
/**
* 编辑活动
*/
public function edit()
{
$jielong_model = new JielongModel();
$jielong_id = input('jielong_id', '');
if (request()->isJson()) {
$common_data = [
'jielong_id' => $jielong_id,
'site_id' => $this->site_id,
'jielong_name' => input('jielong_name', ''),//活动名称
'start_time' => strtotime(input('start_time', '')),//活动开始时间
'end_time' => strtotime(input('end_time', '')),//活动结束时间
'desc' => input('desc', ''),//活动说明
'take_start_time' => strtotime(input('take_start_time', '')),//自提开始时间
'take_end_time' => strtotime(input('take_end_time', '')),//自提结束时间
];
$sku_list = input('sku_list', '');
$goods = input('goods_ids', []);
return $jielong_model->editJielong($common_data, $goods, $sku_list);
} else {
//获取接龙信息
$jielong_info = $jielong_model->getJielongDetail($jielong_id, $this->site_id);
$this->assign('jielong_info', $jielong_info[ 'data' ]);
return $this->fetch("jielong/edit");
}
}
/*
* 接龙详情
*/
public function detail()
{
$jielong_model = new JielongModel();
$jielong_id = input('jielong_id', '');
$jielong_info = $jielong_model->getJielongDetail($jielong_id, $this->site_id)[ 'data' ] ?? [];
$this->assign('info', $jielong_info);
return $this->fetch("jielong/detail");
}
/*
* 删除接龙活动
*/
public function delete()
{
$jielong_id = input('jielong_id', '');
$jielong_model = new JielongModel();
return $jielong_model->deleteJielong($jielong_id, $this->site_id);
}
/*
* 结束接龙活动
*/
public function finish()
{
$jielong_id = input('jielong_id', '');
$model = new JielongModel();
return $model->finishJielong($jielong_id, $this->site_id);
}
/**
* 接龙活动海报
*/
public function poster()
{
$qrcode_param[ 'jielong_id' ] = input('jielong_id', '');
$app_type = input('app_type', '');
$poster = new Poster();
$res = $poster->getSolitaireQrcode('/pages_promotion/jielong/jielong', $qrcode_param, 'jielong', $app_type, $this->site_id);
// $res = $poster->goodsShop('', '/promotionpages/jielong/jielong', $qrcode_param, 'jielong', $this->site_id);
return $res;
}
/*
* 删除接龙活动
*/
public function deleteAll()
{
if (request()->isJson()) {
$jielong_id = input('jielong_id', '');
$jielong_model = new JielongModel();
foreach ($jielong_id as $k => $v){
$res = $jielong_model->deleteJielong($v, $this->site_id);
}
return $res;
}
}
/*
* 结束接龙活动
*/
public function finishAll()
{
if (request()->isJson()) {
$jielong_id = input('jielong_id', '');
$model = new JielongModel();
foreach ($jielong_id as $k => $v){
$res = $model->finishJielong($v, $this->site_id);
}
return $res;
}
}
}

View File

@@ -0,0 +1,152 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
* =========================================================
*/
namespace addon\jielong\shop\controller;
use addon\jielong\model\JielongOrder;
use addon\jielong\model\JielongOrderCommon;
use app\shop\controller\BaseShop;
use app\model\order\OrderCommon as OrderCommonModel;
use think\facade\Config;
/**
* 接龙订单
*/
class Order extends BaseShop
{
/*
* 订单列表
*/
public function lists()
{
$jielong_id = input('jielong_id', 0);
$jielong_order_model = new JielongOrder();
$condition = [
[ 'pjo.site_id', '=', $this->site_id ],
];
if ($jielong_id > 0) {
$condition[] = [ 'jielong_id', '=', $jielong_id ];
}
if (request()->isJson()) {
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
//搜索类型(订单号,收货人姓名,收货人手机号码)
$order_label = input('order_label', 'order_no');
$search = input('search', '');
if ($search) {
$condition[] = [ 'pjo.' . $order_label, 'like', '%' . $search . '%' ];
}
//订单状态
$order_status = input('order_status', '');
if ($order_status !== '') {
$condition[] = [ 'o.order_status', '=', $order_status ];
}
//订单来源
$order_from = input("order_from", '');
if ($order_from) {
$condition[] = [ "pjo.order_from", "=", $order_from ];
}
//支付方式
$pay_type = input("pay_type", '');
if ($pay_type) {
$condition[] = [ "pjo.pay_type", "=", $pay_type ];
}
//创建时间
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && $end_time) {
$condition[] = [ 'pjo.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
} elseif (!$start_time && $end_time) {
$condition[] = [ 'pjo.create_time', '<=', date_to_time($end_time) ];
} elseif ($start_time && !$end_time) {
$condition[] = [ 'pjo.create_time', '>=', date_to_time($start_time) ];
}
$list = $jielong_order_model->getJielongOrderPageList($condition, $page, $page_size, 'id desc');
return $list;
} else {
//搜索方式
$order_label_list = array (
"order_no" => "订单号",
"name" => "收货人姓名",
"mobile" => "收货人手机号",
);
$this->assign('order_label_list', $order_label_list);
//订单状态
$order_model = new JielongOrderCommon();
$order_status_list = $order_model->order_status;
$this->assign("order_status_list", $order_status_list);
//订单来源 (支持端口)
$order_from = Config::get("app_type");
$this->assign('order_from_list', $order_from);
$order_common_model = new OrderCommonModel();
//付款方式
$pay_type = $order_common_model->getPayType();
$this->assign("pay_type_list", $pay_type);
$this->assign('jielong_id', $jielong_id);
return $this->fetch("order/lists");
}
}
/**
* 订单详情
* @return mixed
*/
public function detail()
{
$jielong_order_model = new JielongOrder();
$id = input('id', '');
$condition = [
[ 'site_id', '=', $this->site_id ],
[ 'id', '=', $id ]
];
$info = $jielong_order_model->getJielongOrderInfo($condition);
$this->assign('order_detail', $info[ 'data' ]);
return $this->fetch("order/detail");
}
/**
* 删除订单
*/
public function deleteOrder()
{
if (request()->isJson()) {
$id = input('order_id');
$order_common_model = new JielongOrderCommon();
$condition = [
[ 'id', '=', $id ],
[ 'site_id', '=', $this->site_id ]
];
$res = $order_common_model->deleteOrder($condition);
return $res;
}
}
}

View File

@@ -0,0 +1,324 @@
<style>
.layui-form-item .layui-input-inline.end-time{float: none;}
.layui-table-body{max-height: 330px !important;}
.goods-title{display: flex;align-items: center;}
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
.goods-title .goods-name{flex: 1;line-height: 1.6;}
.form-wrap {position: relative;}
.goods_num {padding-left: 20px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>接龙名称:</label>
<div class="layui-input-block">
<input type="text" name="jielong_name" lay-verify="required" autocomplete="off" class="layui-input len-long" maxlength="40">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="end_time" name="end_time" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>自提时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="take_start_time" name="take_start_time" lay-verify="required|take_stime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="take_end_time" name="take_end_time" lay-verify="required|take_etime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
<div class="layui-input-inline">
<textarea name="desc" class="layui-textarea len-long" lay-verify="required" maxlength="150"></textarea>
</div>
</div>
<div class="layui-form-item goods_list">
<label class="layui-form-label">活动商品:</label>
<div class="layui-input-block">
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
<button class="layui-btn" onclick="addGoods()">选择商品</button>
<span class="goods_num">已选商品(<span id="goods_num" class="text-color">0</span></span>
</div>
</div>
<input type="hidden" name="sku_ids">
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">提交</button>
<button class="layui-btn layui-btn-primary" onclick="backJielongList()">返回</button>
</div>
</div>
<script>
var goodsId = {}, selectedGoodsId = [], sku_list = [],
form,laydate,repeat_flag,currentDate,minDate;
layui.use(['form', 'laydate'], function() {
form = layui.form;
laydate = layui.laydate;
repeat_flag = false;
currentDate = new Date();
minDate = "";
currentDate.setDate(currentDate.getDate() + 30);
form.render();
renderTable(sku_list); // 初始化表格
form.render('select');
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
value: new Date(),
done: function(value) {
minDate = value;
}
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
value: new Date(currentDate)
});
//提货开始时间
laydate.render({
elem: '#take_start_time', //指定元素
type: 'date',
value: new Date(),
done: function(value) {
minDate = value;
}
});
//提货结束时间
laydate.render({
elem: '#take_end_time', //指定元素
type: 'date',
value: new Date(currentDate)
});
/**
* 表单验证
*/
form.verify({
etime: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
take_stime: function(value) {
var now_time = (new Date()).getTime();
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
if (take_start_time < start_time) {
return '自提开始时间不能小于活动开始时间!';
}
},
take_etime: function(value) {
var now_time = (new Date()).getTime();
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
var take_end_time = (new Date(value+' 23:59:59')).getTime();
console.log(take_end_time)
if (now_time > take_end_time) {
return '自提结束时间不能小于当前时间!'
}
if (take_start_time > take_end_time) {
return '自提结束时间不能小于开始时间!';
}
var end_time = (new Date($("#end_time").val())).getTime();
if (take_end_time < end_time) {
return '自提结束时间不能小于活动结束时间!';
}
},
});
/**
* 监听提交
*/
form.on('submit(save)', function(data){
var field = data.field;
if (!Object.keys(goodsId).length) {
layer.msg("请选择活动商品!", {icon: 5, anim: 6});
return;
}
if(field.take_start_time){
field.take_start_time = field.take_start_time+' 00:00:00';
}
if(field.take_end_time){
field.take_end_time = field.take_end_time+' 23:59:59';
}
field.goods_ids = selectedGoodsId;
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("jielong://shop/jielong/add"),
data: field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title: '操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function(index, layero) {
location.hash = ns.hash("jielong://shop/jielong/lists");
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
// 表格渲染
function renderTable(sku_list) {
//展示已知数据
table = new Table({
elem: '#selected_goods_list',
page: false,
limit: Number.MAX_VALUE,
cols: [
[{
title: '商品信息',
width: '50%',
unresize: 'false',
templet: function(data) {
var html = '';
html += `
<div class="goods-title">
<div class="goods-img">
<img layer-src src="${data.goods_image ? ns.img(data.goods_image).split(',')[0] : ''}" alt="">
</div>
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" title="${data.goods_name}">${data.goods_name}</p>
</div>
`;
return html;
}
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
width: '18%',
templet: function(data) {
return '<p class="line-hiding" title="'+ data.price +'">¥<span>' + data.price +'</span></p>';
}
}, {
title: '商品库存',
unresize: 'false',
width: '13%',
templet: function(data) {
return '<p class="line-hiding" title="'+ data.goods_stock +'"><span>' + data.goods_stock +'</span></p>';
}
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
],
data: sku_list
});
}
/**
* 添加商品
*/
function addGoods(){
goodsSelect(function (data) {
sku_list = [];
goodsId = {};
for (var key in data) {
var item = data[key];
sku_list.push(item);
goodsId['goods_'+ item.goods_id] = {};
goodsId['goods_'+ item.goods_id].sku_id = {};
goodsId['goods_'+ item.goods_id].spu_id = item.goods_id;
}
renderTable(sku_list);
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
$("#goods_num").html(spuId.length);
selectedGoodsId = spuId.toString();
}, selectedGoodsId,{is_virtual: 0,sale_channel:'all,online'});
}
function delRow(obj,id) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].goods_id == parseInt(id)){
sku_list.splice(i,1);
}
}
delete goodsId['goods_'+id];
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
$("#goods_num").html(spuId.length);
selectedGoodsId = spuId.toString();
$(obj).parents("tr").remove();
}
function backJielongList() {
location.hash = ns.hash("jielong://shop/jielong/lists");
}
</script>
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" onclick="delRow(this,{{d.goods_id}})">删除</a>
</div>
</script>

View File

@@ -0,0 +1,99 @@
<link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
<div class="layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">基本信息</span>
</div>
<div class="layui-card-body">
<div class="promotion-view">
<div class="promotion-view-item">
<label>活动名称:</label>
<span>{$info.jielong_name}</span>
</div>
<div class="promotion-view-item">
<label>活动状态:</label>
<span>{$info.status_name}</span>
</div>
<div class="promotion-view-item">
<label>开始时间:</label>
<span>{:date('Y-m-d H:i:s',$info.start_time)}</span>
</div>
<div class="promotion-view-item">
<label>结束时间:</label>
<span>{:date('Y-m-d H:i:s',$info.end_time)}</span>
</div>
<div class="promotion-view-item">
<label>自提开始时间:</label>
<span>{if empty($info.take_start_time)} -- {else} {:date('Y-m-d',$info.take_start_time)} {/if}</span>
</div>
<div class="promotion-view-item">
<label>自提结束时间:</label>
<span>{if empty($info.take_end_time)} -- {else} {:date('Y-m-d',$info.take_end_time)} {/if}</span>
</div>
<div class="promotion-view-item">
<label>添加时间:</label>
<span>{:date('Y-m-d H:i:s',$info.create_time)}</span>
</div>
</div>
<div class="promotion-view">
<div class="promotion-view-item-line">
<label class="promotion-view-item-custom-label">活动说明:</label>
<div class="promotion-view-item-custom-box">{$info.desc}</div>
</div>
</div>
</div>
</div>
<div class="layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">活动商品</span>
</div>
<div class="layui-card-body">
<div class='promotion-view-list'>
<table id="promotion_list"></table>
</div>
</div>
</div>
<script type='text/html' id="promotion_list_item_box_html">
<div class="promotion-list-item-title">
<div class="promotion-list-item-title-icon">
<img src="{{ ns.img(d.goods_image) }}" alt="">
</div>
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.goods_name }}</p>
</div>
</script>
<script>
var promotion_list = {:json_encode($info.sku_list, JSON_UNESCAPED_UNICODE)};
layui.use('table', function() {
new Table({
elem: '#promotion_list',
cols: [
[{
field: 'sku_name',
title: '商品名称',
width: '30%',
unresize: 'false',
templet: '#promotion_list_item_box_html'
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
templet: function(data) {
return '¥' + data.price;
}
}, {
field: 'stock',
title: '商品库存',
unresize: 'false',
templet: function(data) {
return data.goods_stock;
}
}]
],
data: promotion_list
});
});
</script>

View File

@@ -0,0 +1,347 @@
<style>
.layui-form-item .layui-input-inline.end-time{float: none;}
.layui-table-body{max-height: 330px !important;}
.goods-title{display: flex;align-items: center;}
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
.goods-title .goods-name{flex: 1;line-height: 1.6;}
.form-wrap {position: relative;}
.goods-empty {width: 100%;display: flex;justify-content: center;align-items: center;}
.goods_num {padding-left: 20px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>接龙名称:</label>
<div class="layui-input-block">
<input type="text" name="jielong_name" lay-verify="required" value="{$jielong_info.jielong_name}" autocomplete="off" class="layui-input len-long" maxlength="40">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="start_time" name="start_time" value="{:date('Y-m-d H:i:s', $jielong_info.start_time)}" lay-verify="required" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="end_time" name="end_time" value="{:date('Y-m-d H:i:s', $jielong_info.end_time)}" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>自提时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="take_start_time" name="take_start_time" value="{:date('Y-m-d', $jielong_info.take_start_time)}" lay-verify="required|take_stime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="take_end_time" name="take_end_time" value="{:date('Y-m-d', $jielong_info.take_end_time)}" lay-verify="required|take_etime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
<div class="layui-input-inline">
<textarea name="desc" class="layui-textarea len-long" lay-verify="required" maxlength="150">{$jielong_info.desc}</textarea>
</div>
</div>
<div class="layui-form-item goods_list">
<label class="layui-form-label">活动商品:</label>
<div class="layui-input-block" id="goods">
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
<button class="layui-btn" onclick="addGoods()">添加商品</button> <span class="goods_num">已选商品(<span id="goods_num" class="text-color">{$jielong_info.sku_list_count}</span></span>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backJielongList()">返回</button>
</div>
<input type="hidden" name="jielong_id" value="{$jielong_info.jielong_id}" />
</div>
<script>
var goodsId = {},sku_list = [],status,selectedGoodsId = [];
sku_list = {:json_encode($jielong_info.sku_list, JSON_UNESCAPED_UNICODE)};
status = {:json_encode($jielong_info.status, JSON_UNESCAPED_UNICODE)};
sku_list.forEach(function (item,index) {
item.is_delete = item.goods_stock ? 1 : 2;
});
layui.use(['form', 'laydate'], function() {
var form = layui.form,
laydate = layui.laydate,
repeat_flag = false;
form.render();
renderTable(sku_list); // 初始化表格
if (status == 0) {
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime'
});
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
}else if (status == 1){
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
}
//提货开始时间
laydate.render({
elem: '#take_start_time', //指定元素
type: 'date',
});
//提货结束时间
laydate.render({
elem: '#take_end_time', //指定元素
type: 'date',
});
/**
* 表单验证
*/
form.verify({
etime: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
take_stime: function(value) {
var now_time = (new Date()).getTime();
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
if (take_start_time < start_time) {
return '自提开始时间不能小于活动开始时间!';
}
},
take_etime: function(value) {
var now_time = (new Date()).getTime();
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
var take_end_time = (new Date(value+' 23:59:59')).getTime();
if (now_time > take_end_time) {
return '自提结束时间不能小于当前时间!'
}
if (take_start_time > take_end_time) {
return '自提结束时间不能小于开始时间!';
}
var end_time = (new Date($("#end_time").val())).getTime();
if (take_end_time < end_time) {
return '自提结束时间不能小于活动结束时间!';
}
},
});
/**
* 监听提交
*/
form.on('submit(save)', function(data){
var field = data.field;
var skuLisArr = [];
var goods_ids = [];
sku_list.forEach(function(item,index) {
var sku_detail = {};
sku_detail.goods_id = item.goods_id;
sku_detail.is_delete = item.is_delete || 1;
skuLisArr.push(sku_detail);
if (item.is_delete == 2) return false;
goods_ids.push(item.goods_id);
});
if (goods_ids.length == 0) {
layer.msg("请保留至少一件参与活动商品!", {icon: 5, anim: 6});
return;
}
if(field.take_start_time){
field.take_start_time = field.take_start_time+' 00:00:00';
}
if(field.take_end_time){
field.take_end_time = field.take_end_time+' 23:59:59';
}
field.sku_list = skuLisArr;
field.goods_ids = goods_ids.toString();
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("jielong://shop/jielong/edit"),
data: field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续编辑'],
yes: function(index, layero) {
location.hash = ns.hash("jielong://shop/jielong/lists");
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
//删除商品
function delRow(obj,id) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].goods_id == parseInt(id)){
sku_list.splice(i,1);
}
}
delete goodsId['goods_'+id];
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
selectedGoodsId = spuId.toString();
$(obj).parents("tr").remove();
$("#goods_num").html(sku_list.length);
if (sku_list.length == 0) {
var html = '<tr>'+
'<td colspan="4">'+
'<div class="goods-empty">无数据</div>'+
'</td>'+
'</tr>';
$("#goods tbody").html(html);
}
}
//添加商品
function addGoods(){
selectedGoodsId = [];
$("#goods table").find(".goods-title").each(function () {
var id = $(this).data("goods_id");
selectedGoodsId.push(id);
});
goodsSelect(function (data) {
sku_list = [];
goodsId = {};
for (var key in data) {
var item = data[key];
sku_list.push(item);
goodsId['goods_'+ item.goods_id] = {};
goodsId['goods_'+ item.goods_id].sku_id = {};
goodsId['goods_'+ item.goods_id].spu_id = item.goods_id;
}
renderTable(sku_list);
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
$("#goods_num").html(spuId.length);
selectedGoodsId = spuId.toString();
}, selectedGoodsId,{is_virtual: 0,sale_channel:'all,online'});
sku_list.splice(0,sku_list.length);
}
// 表格渲染
function renderTable(sku_list) {
//展示已知数据
table = new Table({
elem: '#selected_goods_list',
page: false,
limit: Number.MAX_VALUE,
cols: [
[{
title: '商品信息',
width: '50%',
unresize: 'false',
templet: function(data) {
var html = '';
html += `
<div class="goods-title" data-goods_id="${data.goods_id}">
<div class="goods-img">
<img layer-src src="${data.goods_image ? ns.img(data.goods_image).split(',')[0] : ''}" alt="">
</div>
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" title="${data.goods_name}">${data.goods_name}</p>
</div>
`;
return html;
}
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
width: '20%',
templet: function(data) {
return '<p class="line-hiding" title="'+ data.price +'">¥<span>' + data.price +'</span></p>';
}
}, {
title: '商品库存',
unresize: 'false',
width: '20%',
templet: function(data) {
return '<p class="line-hiding" style="margin:0 10px 0 30px;" title="'+ data.goods_stock +'"><span>' + data.goods_stock +'</span></p>';
}
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
],
data: sku_list
});
}
function backJielongList() {
location.hash = ns.hash("jielong://shop/jielong/lists");
}
</script>
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" onclick="delRow(this,{{d.goods_id}})">删除商品</a>
</div>
</script>

View File

@@ -0,0 +1,384 @@
<style>
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
</style>
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加活动</button>
</div>
<!-- 搜索框 -->
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">活动名称:</label>
<div class="layui-input-inline">
<input type="text" name="jielong_name" placeholder="请输入活动名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">活动时间:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="form-row">
<button type="button" class="layui-btn" lay-filter="search" lay-submit>筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<div class="layui-tab table-tab" lay-filter="jielong_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="">全部</li>
{foreach $jielong_status as $k=>$v}
<li data-status="{$k}">{$v}</li>
{/foreach}
</ul>
<div class="layui-tab-content">
<!-- 列表 -->
<table id="jielong_list" lay-filter="jielong_list"></table>
</div>
</div>
<!-- 时间 -->
<script id="time" type="text/html">
<div class="layui-elip">开始{{ns.time_to_date(d.start_time)}}</div>
<div class="layui-elip">结束{{ns.time_to_date(d.end_time)}}</div>
</script>
<!-- 批量操作 -->
<script type="text/html" id="toolbarAction">
<button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
<button class="layui-btn layui-btn-primary" lay-event="close">批量关闭</button>
</script>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn text-color" lay-event="extension">推广</a>
<a class="layui-btn" lay-event="detail">详情</a>
<a class="layui-btn" lay-event="launch">订单列表</a>
{{# if(d.status == 0){ }}
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="del">删除</a>
{{# }else if(d.status == 1){ }}
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="close">关闭</a>
{{# }else{ }}
<a class="layui-btn" lay-event="del">删除</a>
{{# } }}
</div>
</script>
<!-- 推广 -->
{include file="app/shop/view/component/promote_show.html"}
<script>
var laytpl,form;
$(function () {
layui.use(['form', 'element', 'laytpl', 'laydate'], function () {
laytpl = layui.laytpl;
form = layui.form;
var table,
element = layui.element,
laydate = layui.laydate,
repeat_flag = false; //防重复标识
form.render();
element.on('tab(jielong_tab)', function () {
table.reload({
page: {
curr: 1
},
where: {
'status': this.getAttribute('data-status')
}
});
});
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime'
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
table = new Table({
elem: '#jielong_list',
url: ns.url("jielong://shop/jielong/lists"),
cols: [
[{
type: 'checkbox',
width: '3%',
},{
title: '活动名称',
unresize: 'false',
field: 'jielong_name',
}, {
field: 'goods_num',
title: '商品数',
width: '10%',
unresize: 'false'
}, {
field: 'order_num',
title: '订单数',
width: '10%',
unresize: 'false'
}, {
title: '活动时间',
unresize: 'false',
width: '20%',
templet: '#time'
}, {
field: 'status_name',
title: '状态',
unresize: 'false',
width: '10%'
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align : 'right'
}]
],
toolbar: '#toolbarAction'
});
/**
* 搜索功能
*/
form.on('submit(search)', function (data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
//监听Tab切换
element.on('tab(status)', function (data) {
var status = $(this).attr("data-status");
table.reload({
page: {
curr: 1
},
where: {
'status': status
}
});
});
// 监听工具栏操作
table.toolbar(function (obj) {
var data = obj.data;
if(data.length <= 0) return;
var jielongIdAll = [];
for (var i in data){
jielongIdAll.push(data[i].jielong_id);
}
switch (obj.event) {
case 'delete':
deleteJielongAll(jielongIdAll)
break;
case 'close':
closeJielongAll(jielongIdAll)
break;
}
})
function deleteJielongAll(data){
layer.confirm('确定要删除接龙活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("jielong://shop/jielong/deleteAll"),
data: {
jielong_id: data
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
table.reload({
page: {
curr: 1
},
});
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
function closeJielongAll(data){
layer.confirm('确定要关闭接龙活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("jielong://shop/jielong/finishAll"),
data: {
jielong_id: data
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
table.reload();
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
/**
* 监听工具栏操作
*/
table.tool(function (obj) {
var data = obj.data;
switch (obj.event) {
case 'detail': //详情
location.hash = ns.hash("jielong://shop/jielong/detail", {"jielong_id": data.jielong_id});
break;
case 'edit': //编辑
location.hash = ns.hash("jielong://shop/jielong/edit", {"jielong_id": data.jielong_id});
break;
case 'del': //删除
deleteJielong(data.jielong_id);
break;
case 'close': //结束
closeJielong(data.jielong_id);
break;
case 'launch': //订单
location.hash = ns.hash("jielong://shop/order/lists", {"jielong_id": data.jielong_id});
break;
case 'extension': //推广
extensionJielong(data.jielong_id);
break;
}
});
/**
* 删除
*/
function deleteJielong(jielong_id) {
layer.confirm('确定要删除该接龙活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("jielong://shop/jielong/delete"),
data: {
jielong_id: jielong_id
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload({
page: {
curr: 1
},
});
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
// 结束
function closeJielong(jielong_id) {
layer.confirm('确定要关闭该接龙活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("jielong://shop/jielong/finish"),
data: {
jielong_id: jielong_id
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
function extensionJielong(jielong_id){
new PromoteShow({
url:ns.url("jielong://shop/jielong/poster"),
param:{jielong_id:jielong_id},
})
}
});
});
function add() {
location.hash = ns.hash("jielong://shop/jielong/add");
}
function binding() {
location.hash = ns.hash("weapp://shop/weapp/setting");
}
//下载图片
function download(url) {
location.href = ns.url("shop/upload/download", {request_mode: 'download',img_url : encodeURIComponent(url), type : 1});
}
</script>

View File

@@ -0,0 +1,180 @@
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
<link rel="stylesheet" href="SHOP_CSS/package.css"/>
<div class="order-detail">
<div class="layui-row layui-col-space1 order-detail-info" >
<div class="layui-col-md4 order-detail-left" >
<div class="layui-card">
<div class="layui-card-header nav-title">订单信息</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">订单编号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$order_detail['order_no']}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">订单类型:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$order_detail['order_type_name']}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">订单来源:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail.order_from_name}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">买家:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux"><a class="text-color" target="_blank" href='{:href_url("shop/member/editmember?member_id=".$order_detail["member_id"])}'>{$order_detail.name}</a></div>
</div>
</div>
</div>
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">支付方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['pay_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">配送方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['delivery_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收货人:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['mobile']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收货地址:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['full_address']}-{$order_detail['address']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">买家留言:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
{if $order_detail['buyer_message'] == ""}
<p>-</p>
{else/}
<p>{$order_detail['buyer_message']}</p>
{/if}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md8 order-detail-operation">
<div class="layui-card">
<div class="layui-card-header">订单状态:{$order_detail.order_status_name}</div>
<div class="layui-card-body">
<p class="order-detail-tips"></p>
{if $order_detail['order_status'] == -1}
<a class="layui-btn" href="javascript:orderAction('deleteOrder', '{$order_detail.id}')">删除订单</a>
{/if}
<br>
<i class="layui-icon layui-icon-about"></i>
</div>
</div>
</div>
<div class="order-detail-dl">
<dl>
<dt>提醒:</dt>
<dd>交易成功后,平台将把货款结算至你的店铺账户余额,你可申请提现;</dd>
<dd>请及时关注你发出的包裹状态,确保能配送至买家手中;</dd>
<dd>如果买家表示未收到货或者货物有问题,请及时联系买家积极处理,友好协商;</dd>
</dl>
</div>
</div>
</div>
<div style="height: 15px;"></div>
<div class="order-detail-table">
<table class="layui-table" lay-filter="parse-table-order-product" lay-skin="line" lay-size="lg">
<thead>
<tr>
<th lay-data="{field:'product_name', width:200}">商品</th>
<th lay-data="{field:'sale_num'}">数量</th>
<th lay-data="{field:'price'}">单价</th>
<th lay-data="{field:'total_money'}">总价</th>
</tr>
</thead>
<tbody>
{foreach $order_detail.order_goods_list as $v}
<tr>
<td>{$v.sku_name}</td>
<td>{$v.num}</td>
<td>{$v.price}</td>
<td>{$v.goods_money}</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="layui-row order-detail-total">
<div class="layui-col-md9">&nbsp;</div>
<div class="layui-col-md3 order-money-box" >
<div>商品总额:¥{$order_detail["goods_money"]}</div>
<div>店铺优惠券:¥{$order_detail["coupon_money"]}</div>
<div>配送费用:¥{$order_detail["delivery_money"]}</div>
<div>订单共{$order_detail["num"]}件商品,总计:<span>¥{$order_detail["order_money"]}</span></div>
</div>
</div>
</div>
{include file="order/order_common_action" /}

View File

@@ -0,0 +1,352 @@
<style>
#order_page{height: 60px;}
.topList{margin-top:16px;width:100%;background:#f1f1f1;height:46px;border-radius:2px;display: flex;align-items: center;}
.topList-content{box-sizing: border-box; text-align: left;line-height: 46px;height: 46px;padding:0 10px;color:#666;font-weight: bold;}
.topList-content:nth-child(1){text-align: left;}
.layui-laypage-default{float:right}
.shop{width:30%;}
.moneyNum{width:8%;text-align: right !important;}
.realMoney{width:10%;text-align: center !important;}
.information{width:22%}
.state{width:15%}
.operation{width:15%}
.bottomList{width:100%;}
.bottomList-content{margin:16px 0;border:1px solid #f1f1f1;border-radius:4px;min-height:120px;}
.bottomList-top{display: flex;align-items: center; width: 100%;background:#f1f1f1;height:40px;line-height: 40px;padding:0 15px;box-sizing: border-box;}
.bottomList-top-text{margin-right:30px;text-align: left;color: #333;font-size:14px;}
.bottomList-content-bottom{width:100%;min-height:80px;display: flex;align-items: center;}
.bottomList-content-bottom:after{overflow: hidden;content: "";height: 0;display: block;clear: both;}
.bottomList-content-bottom-shop{width:30%;min-height:80px;}
.ListContentShop{display: flex;align-items: center;height: 80px; width: 100%;}
.ListContentShop>img{width: 60px;height: 60px;}
.ListContentShopText{float: left;margin-left:10px;width:76%;font-size:14px;color:#666; display: -webkit-box;-webkit-line-clamp:2;overflow: hidden;text-overflow: ellipsis;-webkit-box-orient: vertical;}
.borerBottom{border-bottom:1px solid #f1f1f1;padding:10px;box-sizing: border-box;}
.borerBottom:last-child{border-bottom:none;}
.bottomList-content-bottom-moneyNum{width:8%;border-right: 1px solid #f1f1f1;}
.ListContentMoneyNum{width:100%;height:81px;display: flex;flex-direction: column;justify-content: space-between;}
.ListContentMoneyNum>p{text-align: right;font-size:14px;color:#666;}
.bottomList-content-bottom-consignee{box-sizing: border-box; border-right:1px solid #f1f1f1; width: 22%;height:80px;padding-left:10px;display: flex;flex-direction: column;justify-content:center;}
.consignee-center{min-height:80px;display: flex;flex-direction: column;justify-content: space-around;}
.consignee-center>p{color:#666;font-size:14px;}
.bottomList-content-bottom-state{padding-left:10px;border-right: 1px solid #f1f1f1;width:15%;display: flex;flex-direction: column;justify-content: center;box-sizing: border-box;}
.bottomList-content-bottom-state>p{color:#666;font-size:14px;}
.bottomList-content-bottom-operation{width:15%;padding-left:10px;box-sizing: border-box;display: flex;align-items: center;justify-content: flex-end;}
.look{font-size:14px;cursor:pointer;margin-right:10px;}
.bottomList-content-bottom-realMoney{width: 10%;box-sizing: border-box;border-right: 1px solid #f1f1f1;color:#666;display: flex;align-items: center;justify-content: center;}
.image-content{width: 100%;height:250px;display: flex;align-items: center;justify-content: center;}
.image-content>div>li{font-size:35px;color: #c2c2c2;text-align: center;}
.image-content>div>p{font-size:14px;text-align: center; color: #c2c2c2;}
.display-imageNone{display: none !important;}
.address{height: 0;width: 1px; border: none; overflow: hidden;}
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .screen{margin-top: 15px;}
</style>
<div class="layui-collapse tips-wrap">
<div class="layui-colla-item">
<h2 class="layui-colla-title">操作提示</h2>
<ul class="layui-colla-content layui-show">
<li>社群接龙展示商品相关信息</li>
</ul>
</div>
</div>
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">搜索方式:</label>
<div class="layui-input-inline">
<select name="order_label" >
{foreach $order_label_list as $k => $label_val}
<option value="{$k}">{$label_val}</option>
{/foreach}
</select>
</div>
<div class="layui-input-inline">
<input type="text" name="search" autocomplete="off" class="layui-input" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单来源:</label>
<div class="layui-input-inline">
<select name="order_from">
<option value="">全部</option>
{foreach $order_from_list as $order_from_k => $order_from_v}
<option value="{$order_from_k}">{$order_from_v['name']}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">付款方式:</label>
<div class="layui-input-inline">
<select name="pay_type" >
<option value="">全部</option>
{foreach pay_type_list as $pay_type_k => $pay_type_v}
<option value="{$pay_type_k}">{$pay_type_v}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">下单时间:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
<button type="reset" class="layui-btn layui-btn-primary" onclick="interface()">重置</button>
</div>
</form>
</div>
</div>
{include file="order/order_common_action" /}
<div class="layui-tab table-tab" lay-filter="jielong_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="" name="">全部</li>
<!-- {foreach $order_status_list as $status_val}
<li data-status="{$status_val.status}" name="{$status_val.status}">{$status_val.name}</li>
{/foreach} -->
<li name="0">待支付</li>
<li name="1">待发货</li>
<li name="3">已发货</li>
<li name="4">已收货</li>
<li name="10">已完成</li>
<li name="-1">已关闭</li>
<li name="20">已退款</li>
</ul>
<div class="topList">
<div class="topList-content shop">商品</div>
<div class="topList-content moneyNum">单价/数量</div>
<div class="topList-content realMoney">实付金额</div>
<div class="topList-content information">收货人信息</div>
<div class="topList-content state">交易状态</div>
<div class="topList-content operation" style="text-align: right;">操作</div>
</div>
<div id="bottomList" class="bottomList"></div>
<div id="order_page"></div>
<div id="image-contents" class="image-content">
<div>
<li class="layui-icon layui-icon-tabs"></li>
<p>暂无数据</p>
</div>
</div>
</div>
<script type="text/html" id="goodsList">
{{# for(var index in d){ }}
<div class="bottomList-content">
<div class="bottomList-top">
<p class="bottomList-top-text">
<span>订单号:</span>
<span class="bottomListTopNumber">{{d[index].order_no}}</span>
</p>
{{# if(d[index].pay_time){ }}
<p class="bottomList-top-text">
<span>下单时间:</span>
<span class="bottomListTopTime">{{ns.time_to_date(d[index].pay_time)}}</span>
</p>
{{# } }}
</div>
<div class="bottomList-content-bottom">
<div class="bottomList-content-bottom-shop">
{{# for(var i in d[index].order_goods_list){ }}
<div class="ListContentShop borerBottom">
<img class="ListContentShopImage" src="{{ns.img(d[index].order_goods_list[i].sku_image)}}">
<p class="ListContentShopText">{{d[index].order_goods_list[i].sku_name}}</p>
</div>
{{# }}}
</div>
<div class="bottomList-content-bottom-moneyNum">
{{# for(var i in d[index].order_goods_list){ }}
<div class="ListContentMoneyNum borerBottom">
<p class="ListContentMoneyMoney">{{d[index].order_goods_list[i].price}}</p>
<p class="ListContentNum">{{d[index].order_goods_list[i].num}}</p>
</div>
{{# }}}
</div>
<div class="bottomList-content-bottom-realMoney">{{d[index].order_money}}</div>
<div class="height bottomList-content-bottom-consignee">
<div class="consignee-center">
<p class="listBottomConsignee-name">{{d[index].name}}</p>
<p class="listBottomConsignee-ipone">{{d[index].mobile}}</p>
<p class="listBottomConsignee-dizhi">{{d[index].full_address}}<input type="text" class="address" id="address" value="{{d[index].full_address}}"><a href="javascript:ns.copy('address');" class="iconfont iconfuzhi" style="margin-top: 4px"></a></p>
</div>
</div>
<div class="bottomList-content-bottom-state">
<p class="listBottomState">{{d[index].order_status_name}}</p>
</div>
<div class="bottomList-content-bottom-operation">
<a class="look text-color" onclick="see({{d[index].relate_order_id}})" style="text-align: right;">查看订单详情</a>
{{# if (d[index].order_status == -1){ }}
<a class="look text-color" href="javascript:orderAction('deleteOrder', '{{d[index].id}}')">删除订单</a>
{{# } }}
</div>
</div>
</div>
{{# } }}
</script>
<script>
var end_time,order_from,order_label,pay_type,search,start_time,switchs,page,page_size;
layui.use(['form', 'element','laydate','laytpl','laypage'], function() {
form = layui.form;
laytpl = layui.laytpl;
laydate = layui.laydate;
element = layui.element;
repeat_flag = false; //防重复标识
laypage = layui.laypage;
form.render();
//渲染时间
laydate.render({
elem: '#start_time',
type: 'datetime'
});
laydate.render({
elem: '#end_time',
type: 'datetime'
});
/**
* 搜索功能
*/
form.on('submit(search)', function (data) {
end_time = data.field.end_time,
order_from = data.field.order_from,
// order_label=data.field.order_label,
pay_type = data.field.pay_type,
search = data.field.search,
start_time = data.field.start_time;
orderList();
return false
});
element.on('tab(jielong_tab)', function (data) {
switchs = $(this).attr('name');
orderList();
})
});
function orderList(data){
var url = ns.url("jielong://shop/order/lists");
$.ajax({
type : 'get',
dataType: 'json',
url :url,
data:{
end_time:end_time,
order_from:order_from,
order_label:order_label,
pay_type:pay_type,
search:search,
start_time:start_time,
order_status:switchs,
page:page,
page_size:page_size,
jielong_id:{$jielong_id}
},
success : function(res){
let list = res.data.list;
if(list==''){
$("#order_page").css('display','none');
$("#image-contents").removeClass("display-imageNone");
}else{
$("#order_page").css('display','block');
$("#image-contents").addClass("display-imageNone");
}
laytpl($('#goodsList').html()).render(list,function(html){
$('#bottomList').html(html)
});
if(!data){
new Page({
elem: 'order_page',
count: res.data.count,
curr: 1,
limit:10,
callback: function(obj, first) {
let data={
pages:obj.curr,
page_sizes:obj.limit
};
page=obj.curr,
page_size=obj.limit;
if(!first){
orderList(data);
}
}
})
}
list.forEach((item,index)=>{
let height=$(".bottomList-content-bottom").eq(index).height();
$(".bottomList-content-bottom-consignee").eq(index).css('height',height);
$(".bottomList-content-bottom-state").eq(index).css('height',height);
$(".bottomList-content-bottom-realMoney").eq(index).css('height',height);
})
},
});
}
orderList();
// 查看
function see(id){
window.open(ns.href("/shop/order/detail", {"order_id": id}));
}
/**
* 七天时间
*/
function datePick(date_num,event_obj){
$(".date-picker-btn").removeClass("selected");
$(event_obj).addClass('selected');
// alert(new Date().format("yyyy-MM-dd hh:mm"));
var now_date = new Date();
Date.prototype.Format = function (fmt,date_num) { //author: meizz
this.setDate(this.getDate()-date_num);
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};
// var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
$("input[name=start_time]").val(before_time,0);
$("input[name=end_time]").val(now_time,date_num-1);
}
</script>

View File

@@ -0,0 +1,42 @@
<script type="text/javascript">
var laytpl;
var form;
//渲染模板引擎
layui.use(['laytpl','form'], function(){
laytpl = layui.laytpl;
form = layui.form;
form.render();
});
/**
* 订单操作
* @param fun
* @param order_id
*/
function orderAction(fun, order_id){
eval(fun+"("+order_id+")");
}
/**
* 删除订单
* @param order_id
*/
function deleteOrder(order_id){
layer.confirm('确定要删除该订单吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("jielong://shop/order/deleteOrder"),
data: {order_id : order_id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("jielong://shop/order/lists");
}
}
});
}, function () {
layer.close();
});
}
</script>