更新数据测试模块

This commit is contained in:
Anyon 2021-01-08 13:06:13 +08:00
parent e9f169a1a5
commit c8734a7efb
28 changed files with 231 additions and 204 deletions

View File

@ -2,7 +2,6 @@
namespace app\data\controller;
use app\data\service\MessageService;
use think\admin\Controller;
/**
@ -26,23 +25,6 @@ class Config extends Controller
$this->__sysconf('wxapp');
}
/**
* 短信接口配置
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function message()
{
if ($this->request->isGet()) {
$this->title = '短信接口配置';
$this->result = MessageService::instance()->balance();
}
$this->__sysconf('message');
}
/**
* 关于我们描述
* @auth true

View File

@ -97,8 +97,9 @@ class NewsItem extends Controller
$data['code'] = CodeExtend::uniqidNumber(14, 'A');
}
if ($this->request->isGet()) {
$query = $this->app->db->name('DataNewsMark')->where(['deleted' => 0, 'status' => 1]);
$this->mark = $query->order('sort desc,id desc')->select()->toArray();
$map = ['deleted' => 0, 'status' => 1];
$query = $this->app->db->name('DataNewsMark')->where($map);
$this->marks = $query->order('sort desc,id desc')->select()->toArray();
$data['mark'] = str2arr($data['mark'] ?? '');
} else {
$data['mark'] = arr2str($data['mark'] ?? []);

View File

@ -20,7 +20,6 @@ class NewsMark extends Controller
/**
* 文章标签管理
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException

View File

@ -80,18 +80,15 @@ class Payment extends Controller
if ($this->request->isGet()) {
$this->payments = [];
foreach ($this->types as $k => $vo) {
[$allow, $group] = [[], ucfirst(strstr($k, '_', true))];
$allow = [];
foreach ($vo['bind'] as $api) if (isset(UserService::TYPES[$api])) {
$allow[$api] = UserService::TYPES[$api]['name'];
}
$vo['allow'] = join('、', $allow);
$this->payments[$group][$k] = $vo;
$this->payments[$k] = array_merge($vo, ['allow' => join('、', $allow)]);
}
$data['content'] = json_decode($data['content'] ?? '[]', true) ?: [];
} else {
if (empty($data['type'])) {
$this->error('请选择支付通道并配置支付参数!');
}
if (empty($data['type'])) $this->error('请选择支付通道并配置支付参数!');
$data['content'] = json_encode($this->request->post() ?: [], JSON_UNESCAPED_UNICODE);
}
}

View File

@ -20,7 +20,6 @@ class ShopGoodsMark extends Controller
/**
* 商品标签管理
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
@ -28,7 +27,9 @@ class ShopGoodsMark extends Controller
public function index()
{
$this->title = '商品标签管理';
$this->_query($this->table)->order('sort desc,id desc')->page();
$query = $this->_query($this->table);
$query->like('name')->dateBetween('create_at');
$query->equal('status')->order('sort desc,id desc')->page();
}
/**

View File

@ -2,6 +2,7 @@
namespace app\data\controller;
use app\data\service\MessageService;
use think\admin\Controller;
/**
@ -33,6 +34,27 @@ class UserMessage extends Controller
$query->dateBetween('create_at')->order('id desc')->page();
}
/**
* 短信接口配置
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function config()
{
if ($this->request->isGet()) {
$this->title = '短信接口配置';
$this->result = MessageService::instance()->balance();
$this->fetch();
} else {
$data = $this->request->post();
foreach ($data as $k => $v) sysconf($k, $v);
$this->success('配置保存成功!');
}
}
/**
* 删除短信记录
* @auth true

View File

@ -13,7 +13,8 @@ use think\Response;
* @package app\data\controller\api
* @example 域名请修改为自己的地址,放到网页代码合适位置
* <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
* <script src="https://v6.thinkadmin.top/data/api.wechat/jssdk?mode=1"></script>
* <script src="https://your.domain.com/data/api.wechat/oauth?mode=1"></script>
*
* 授权模式支持两种模块,参数 mode=0 时为静默授权mode=1 时为完整授权
* 注意:回跳地址默认从 Header 中的 http_referer 获取,也可以传 source 参数
*/
@ -32,45 +33,22 @@ class Wechat extends Controller
*/
private $field;
/**
* 粉丝OPNEID
* @var string
*/
private $openid;
/**
* 网页授权配置
* @var array
*/
private $config;
/**
* 微信粉丝数据
* @var array
*/
private $fansInfo;
/**
* 前端用户数据
* @var array
*/
private $userInfo;
/**
* 控制器初始化
* @return $this
*/
protected function initialize()
protected function initialize(): Wechat
{
if (empty(UserService::TYPES[$this->type]['auth'])) {
$this->error("接口类型[{$this->type}]没有定义规则");
} else {
$this->field = UserService::TYPES[$this->type]['auth'];
}
return $this;
}
/**
* 加载对应JSSDK数据
* @return \think\Response
* 获取 JSSDK 签名
* @throws \WeChat\Exceptions\InvalidResponseException
* @throws \WeChat\Exceptions\LocalCacheException
* @throws \think\Exception
@ -78,79 +56,39 @@ class Wechat extends Controller
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function jssdk(): Response
public function jssdk()
{
$wechat = WechatService::instance();
$source = $this->request->server('http_referer', $this->request->get('source', ''));
$url = input('source') ?: $this->request->server('http_referer');
$this->success('获取签名参数', WechatService::instance()->getWebJssdkSign($url));
}
/**
* 加载网页授权数据
* @return \think\Response
* @throws \think\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function oauth(): Response
{
[$script, $wechat] = [[], WechatService::instance()];
$source = input('source') ?: $this->request->server('http_referer');
$result = $wechat->getWebOauthInfo($source ?: $this->request->url(true), input('mode', 1), false);
if (empty($result['openid'])) {
$content = 'alert("Wechat WebOauth failed.")';
$script[] = 'alert("Wechat WebOauth failed.")';
} else {
$this->openid = $result['openid'];
$this->fansInfo = $result['fansinfo'] ?? [];
$this->config = $wechat->getWebJssdkSign($source);
// 用户注册并登录生成接口令牌
$data = $this->fansInfo;
$data = $result['fansinfo'] ?? [];
$data['openid2'] = $data['openid'];
$data['base_sex'] = ['未知', '男', '女'][$data['sex']] ?? '未知';
if (isset($data['headimgurl'])) $data['headimg'] = $data['headimgurl'];
$map = isset($data['unionid']) ? ['unionid' => $data['unionid']] : [$this->field => $this->openid];
$this->userInfo = UserService::instance()->set($map, array_merge($map, $data), $this->type, true);
$content = $this->_buildContent();
$map = isset($data['unionid']) ? ['unionid' => $data['unionid']] : [$this->field => $result['openid']];
$result['userinfo'] = UserService::instance()->set($map, array_merge($map, $data), $this->type, true);
$script[] = "window.WeChatOpenid='{$result['openid']}'";
$script[] = 'window.WeChatFansInfo=' . json_encode($result['fansinfo'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
$script[] = 'window.WeChatUserInfo=' . json_encode($result['userinfo'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
}
return Response::create($content)->contentType('application/x-javascript');
$script[] = '';
return Response::create(join(";\n", $script))->contentType('application/x-javascript');
}
/**
* 页面授权 jssdk 测试
* @return string
*/
public function jssdkTest(): string
{
$src = sysuri('data/api.wechat/jssdk', [], false, true) . '?mode=1';
return <<<EOL
<html lang="zh">
<header>
<title>页面授权测试</title>
<script src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script src="{$src}"></script>
</header>
<body>
<script>document.write(JSON.stringify(wx||{}));</script>
</body>
</html>
EOL;
}
/**
* 生成JOSN数据
* @param mixed $data
* @return false|string
*/
private function _jsonEncode($data)
{
return json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
}
/**
* 生成授权内容
* @return string
*/
private function _buildContent(): string
{
return <<<EOF
if (typeof wx === 'object') {
wx.openid="{$this->openid}";
wx.config({$this->_jsonEncode($this->config)});
wx.fansinfo={$this->_jsonEncode($this->fansInfo)};
wx.userinfo={$this->_jsonEncode($this->userInfo)};
wx.ready(function(){
wx.hideOptionMenu();
wx.hideAllNonBaseMenuItem();
});
}
EOF;
}
}

View File

@ -117,15 +117,16 @@ class Center extends Auth
{
$data = $this->_vali(['from.require' => '邀请人不能为空']);
if ($data['from'] == $this->uuid) {
$this->error('邀请人不能是自己', UserService::instance()->total($this->uuid));
$this->error('邀请人不能是自己', UserService::instance()->total($this->uuid));
}
$from = $this->app->db->name($this->table)->where(['id' => $data['from']])->find();
if (empty($from)) $this->error('邀请人状态异常', UserService::instance()->get($this->type, $this->uuid));
if ($this->user['from'] > 0) $this->error('您已经绑定了邀请人', UserService::instance()->total($this->uuid));
if ($this->user['from'] > 0) $this->error('已绑定了邀请人', UserService::instance()->total($this->uuid));
$data['path'] = rtrim($from['path'] ?: '-', '-') . '-' . $from['id'] . '-';
if ($this->app->db->name($this->table)->where(['id' => $this->uuid])->update($data) !== false) {
$this->success('绑定邀请人成功', UserService::instance()->total($this->uuid));
$this->success('绑定邀请人成功', UserService::instance()->total($this->uuid));
} else {
$this->error('绑定邀请人失败', UserService::instance()->total($this->uuid));
$this->error('绑定邀请人失败', UserService::instance()->total($this->uuid));
}
}

View File

@ -2,9 +2,6 @@
{block name="content"}
<div class="think-box-shadow">
<p class=" margin-bottom-15">
演示接口文档:<a target="_blank" href="http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE">http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE</a>
</p>
<form onsubmit="return false;" data-auto="true" action="{$request->url()}" method="post" class='layui-form layui-card' autocomplete="off">
<div class="layui-card-body padding-30">
<textarea class="layui-hide" name="content">{$data.content|default=''}</textarea>

View File

@ -7,7 +7,7 @@
<span class="color-green font-w7 label-required-prev">文章标签</span>
<span class="color-desc margin-left-5">Mark Name</span>
<div class="markbox layui-textarea">
{foreach $mark as $tag}{if isset($vo.mark) && is_array($vo.mark) && in_array($tag.name, $vo.mark)}
{foreach $marks as $tag}{if isset($vo.mark) && is_array($vo.mark) && in_array($tag.name, $vo.mark)}
<label class="think-checkbox notselect"><input checked type="checkbox" name="mark[]" value="{$tag.name}" lay-ignore> {$tag.name}</label>
{else}
<label class="think-checkbox notselect"><input type="checkbox" name="mark[]" value="{$tag.name}" lay-ignore> {$tag.name}</label>

View File

@ -1,8 +1,12 @@
{extend name="../../admin/view/main"}
{block name="button"}
<!--{if auth("news_mark/index")}-->
<button data-iframe='{:url("news_mark/index")}' data-width="900px" data-title="标签管理" class='layui-btn layui-btn-sm layui-btn-primary'>标签管理</button>
<!--{/if}-->
<!--{if auth("add")}-->
<button data-open='{:url("add")}' data-title="添加文章内容" class='layui-btn layui-btn-sm layui-btn-primary'>添加文章</button>
<button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加文章</button>
<!--{/if}-->
<!--{if auth("remove")}-->
@ -12,9 +16,6 @@
{block name='content'}
<div class="think-box-shadow table-block">
<p class=" margin-bottom-15">
演示接口文档:<a target="_blank" href="http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE">http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE</a>
</p>
{include file='news_item/index_search'}
<table class="layui-table margin-top-10" lay-skin="line">
{notempty name='list'}

View File

@ -4,7 +4,7 @@
<span class="color-green font-w7">标签名称</span>
<span class="color-desc margin-left-5">Mark Name</span>
<input class="layui-input" required placeholder="请输入标签名称" name="name" value="{$vo.name|default=''}"/>
<span class="help-block"><b>必填,</b>请填写分类名称(如:系统管理)建议字符不要太长一般4-6个汉字</span>
<span class="help-block"><b>必填,</b>请填写标签名称建议字符不要太长一般4-6个汉字</span>
</label>
<div class="layui-form-item relative block">

View File

@ -1,20 +1,7 @@
{extend name="../../admin/view/main"}
{block name="button"}
<!--{if auth("add")}-->
<button data-modal='{:url("add")}' data-title="添加标签" class='layui-btn layui-btn-sm layui-btn-primary'>添加标签</button>
<!--{/if}-->
<!--{if auth("remove")}-->
<button data-action='{:url("remove")}' data-rule="id#{key}" data-confirm="确定要删除这些标签吗?" class='layui-btn layui-btn-sm layui-btn-primary'>删除标签</button>
<!--{/if}-->
{/block}
{extend name="../../admin/view/full"}
{block name='content'}
<div class="think-box-shadow table-block">
<p class=" margin-bottom-15">
演示接口文档:<a target="_blank" href="http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE">http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE</a>
</p>
<div class="iframe-pagination">
{include file='news_mark/index_search'}
<table class="layui-table margin-top-10" lay-skin="line">
{notempty name='list'}
@ -47,7 +34,7 @@
<td class="text-left nowrap">{$vo.create_at|format_datetime}</td>
<td class='text-left nowrap'>
{if auth("edit")}
<a data-dbclick class="layui-btn layui-btn-sm" data-title="编辑标签" data-modal="{:url('edit')}?id={$vo.id}"> </a>
<a data-dbclick class="layui-btn layui-btn-sm" data-width="500px" data-title="编辑标签" data-modal="{:url('edit')}?id={$vo.id}"> </a>
{/if}
{if auth("state") and $vo.status eq 1}
<a class="layui-btn layui-btn-sm layui-btn-warm" data-action="{:url('state')}" data-value="id#{$vo.id};status#0"> </a>
@ -64,5 +51,10 @@
</tbody>
</table>
{empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
<div class="absolute" style="bottom:5px;right:10px">
<!--{if auth("add")}-->
<button type="button" data-width="500px" data-modal='{:url("add")}' data-title="添加标签" class='layui-btn layui-btn-sm'>添加标签</button>
<!--{/if}-->
</div>
</div>
{/block}

View File

@ -12,7 +12,8 @@
<label class="layui-form-label">使用状态</label>
<div class="layui-input-inline">
<select class="layui-select" name="status">
{foreach [''=>'-- 全部 --','0'=>'已禁用的记录','1'=>'已激活的记录'] as $k=>$v}
<option value=''>-- 全部 --</option>
{foreach ['已禁用的记录','已激活的记录'] as $k=>$v}
{if $k.'' eq input('status')}
<option selected value="{$k}">{$v}</option>
{else}

View File

@ -15,18 +15,12 @@
<span class="color-green font-w7 label-required-prev">支付方式</span>
<span class="color-desc margin-left-5">Payment Channel</span>
<label class="block full-width">
{empty name='vo.type'}{php}$vo['type'] = 'wechat_xcx';{/php}{/empty}
<select name="type" class="layui-select" lay-search lay-filter="payment-type">
<option value="">-- 请选择 --</option>
{foreach $payments as $kk => $vv}
<optgroup label="{$kk}">
{foreach $vv as $k => $v}{if $vo.type eq $k}
<option selected value="{$k}">{$v.name} ( {$v.allow} )</option>
{else}
<option value="{$k}">{$v.name} ( {$v.allow} )</option>
{/if}{/foreach}
</optgroup>
{/foreach}
{foreach $payments as $k=>$v}{if isset($vo.type) and $vo.type eq $k}
<option selected value="{$k}">{$v.name} ( {$v.allow} )</option>
{else}
<option value="{$k}">{$v.name} ( {$v.allow} )</option>
{/if}{/foreach}
</select>
</label>
</div>
@ -60,8 +54,10 @@
{block name='script'}
<script>
(function () {
layui.form.render();
apply({value: '{$vo.type}'});
apply({value: $('select[name=type]').val()});
layui.form.on('select(payment-type)', apply);
function apply(data) {
@ -75,6 +71,7 @@
$('[data-payment-type]').addClass('layui-hide');
}
}
})();
</script>
{/block}

View File

@ -12,9 +12,6 @@
{block name='content'}
<div class="think-box-shadow">
<p class=" margin-bottom-15">
演示接口文档:<a target="_blank" href="http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE">http://www.docway.net/project/1WkI0ZyQ7M1/share/1Wld0z7b1zE</a>
</p>
{include file='payment/index_search'}
<table class="layui-table margin-top-10" lay-skin="line">
{notempty name='list'}

View File

@ -4,6 +4,7 @@
{include file='shop_goods/formstyle'}
<form onsubmit="return false;" id="GoodsForm" data-auto="true" method="post" class='layui-form layui-card table-block' autocomplete="off">
<div class="layui-card-body padding-40 padding-bottom-20">
{notempty name='marks'}
<div class="layui-form-item relative block">
<span class="color-green font-w7 label-required-prev">商品标签</span>
<span class="color-desc margin-left-5">Mark Name</span>
@ -15,6 +16,9 @@
{/if}{/foreach}
</div>
</div>
{/notempty}
{notempty name='cates'}
<label class="layui-form-item block relative">
<span class="color-green font-w7 label-required-prev">所属分类</span>
<span class="color-desc margin-left-5">Category Name</span>
@ -26,11 +30,14 @@
{/if}{/foreach}
</select>
</label>
{/notempty}
<label class="layui-form-item block relative">
<span class="color-green font-w7">商品名称</span>
<span class="color-desc margin-left-5">Goods Name</span>
<input name="name" required class="layui-input" placeholder="请输入商品名称" value="{$vo.name|default=''}">
</label>
<label class="layui-form-item block relative">
<span class="color-green font-w7 label-required-prev">邮费模板</span>
<span class="color-desc margin-left-5">Truck Template</span>
@ -43,6 +50,7 @@
{/if}{/foreach}
</select>
</label>
<div class="layui-form-item">
<span class="color-green font-w7 label-required-prev">商品图片及轮播展示图片</span>
<table class="layui-table">
@ -64,6 +72,7 @@
</thead>
</table>
</div>
<div class="layui-form-item">
<span class="color-green font-w7 label-required-prev">商品规格及商品SKU绑定<span class="color-red font-s12">(规格填写后不允许再次修改)</span></span>
<div ng-repeat="x in specs track by $index" style="display:none" class="margin-bottom-10" ng-class="{true:'layui-show'}[mode==='add'&&specs.length>0]">
@ -98,7 +107,7 @@
<th width="10%" class="text-center nowrap">销售价格 <a ng-click="batchSet('selling',2)" data-tips-text="批量设置" class="layui-icon">&#xe63c;</a></th>
<th width="10%" class="text-center nowrap">虚拟销量 <a ng-click="batchSet('virtual',0)" data-tips-text="批量设置" class="layui-icon">&#xe63c;</a></th>
<th width="10%" class="text-center nowrap">快递计件 <a ng-click="batchSet('express',0)" data-tips-text="批量设置" class="layui-icon">&#xe63c;</a></th>
<th width="8%" class="text-center nowrap">销售状态</th>
<th width="08%" class="text-center nowrap">销售状态</th>
</tr>
</thead>
<tbody>
@ -141,17 +150,21 @@
<textarea class="layui-textarea" name="data_items">{{items}}</textarea>
</label>
</div>
<label class="layui-form-item block">
<span class="font-w7 color-green">商品简介描述</span>
<textarea class="layui-textarea" placeholder="请输入商品简介描述" name="remark">{$vo.remark|default=''|raw}</textarea>
</label>
<div class="layui-form-item block">
<span class="label-required-prev font-w7 color-green">商品富文本详情</span>
<textarea name="content">{$vo.content|default=''|raw}</textarea>
</div>
<div class="hr-line-dashed margin-top-40"></div>
{notempty name='vo.code'}<input type="hidden" name="code" value="{$vo.code}">{/notempty}
<div class="layui-form-item text-center">
{notempty name='vo.code'}<input type="hidden" name="code" value="{$vo.code}">{/notempty}
<button class="layui-btn layui-btn-danger" ng-click="pageBack()" type="button">取消编辑</button>
<button class="layui-btn" type="submit">保存商品</button>
</div>

View File

@ -1,6 +1,10 @@
{extend name="../../admin/view/main"}
{block name="button"}
<!--{if auth("shop_goods_mark/index")}-->
<button data-iframe='{:url("shop_goods_mark/index")}' data-width="900px" data-title="标签管理" class='layui-btn layui-btn-sm layui-btn-primary'>标签管理</button>
<!--{/if}-->
<!--{if auth("add")}-->
<button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加商品</button>
<!--{/if}-->
@ -37,8 +41,8 @@
<th class='list-table-sort-td'>
<button type="button" data-reload class="layui-btn layui-btn-xs"> </button>
</th>
<th class='text-left nowrap'>商品名称</th>
<th class='text-left nowrap'>商品标签</th>
<th class='text-left nowrap'>商品信息</th>
<th></th>
<th></th>
<th></th>
</tr>
@ -69,18 +73,22 @@
</td>
<td class='nowrap'>
销售状态:{eq name='vo.status' value='0'}<span class="layui-badge">已下架</span>{else}<span class="layui-badge layui-bg-green">销售中</span>{/eq}<br>
<!--{notempty name='clist'}-->
所属分类:{$vo.cate.name|default='-'}<br>
<!--{/notempty}-->
</td>
<td class='nowrap sub-span-blue'>
<div class="margin-bottom-5">剩余库存 <span>{$vo.stock_total-$vo.stock_sales}</span> ( 已销售 <span>{$vo.stock_sales}</span> )</div>
{if auth('copy')}
<!--{if auth('copy')}-->
<a class="layui-btn layui-btn-xs layui-btn-normal" data-open='{:url("copy")}?code={$vo.code}'> </a>
{/if}
<!--{/if}-->
<!--{if auth("edit")}-->
<a class="layui-btn layui-btn-xs" data-open='{:url("edit")}?code={$vo.code}'> </a>
<!--{else}-->
<a data-tips-text="您没有编辑商品的权限哦!" class="layui-btn layui-btn-xs layui-btn-primary layui-disabled"> </a>
<!--{/if}-->
{if isset($type) and $type eq 'index'}
{if isset($vo.status) and $vo.status eq 1}
<!--{if auth("state")}-->

View File

@ -7,12 +7,15 @@
<input name="code" value="{:input('code','')}" placeholder="请输入商品编号" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">商品名称</label>
<label class="layui-input-inline">
<input name="name" value="{:input('name','')}" placeholder="请输入商品名称" class="layui-input">
</label>
</div>
{notempty name='marks'}
<div class="layui-form-item layui-inline">
<label class="layui-form-label">商品标签</label>
<label class="layui-input-inline">
@ -26,6 +29,9 @@
</select>
</label>
</div>
{/notempty}
{notempty name='clist'}
<div class="layui-form-item layui-inline">
<label class="layui-form-label">商品分类</label>
<label class="layui-input-inline">
@ -39,11 +45,14 @@
</select>
</label>
</div>
{/notempty}
<div class="layui-form-item layui-inline">
<label class="layui-form-label">销售状态</label>
<label class="layui-input-inline">
<select class="layui-select" name="status">
{foreach [''=>'- 全部状态 -','1'=>'销售中商品','0'=>'已下架商品'] as $k=>$v}
<option value=''>-- 全部状态 --</option>
{foreach ['已下架的商品','销售中的商品'] as $k=>$v}
{if input('status','-') eq $k.''}
<option selected value="{$k}">{$v}</option>
{else}

View File

@ -2,13 +2,12 @@
{block name="content"}
<div class="iframe-pagination">
{include file='shop_goods/index_search'}
{include file='shop_goods/select_search'}
<table class="layui-table margin-top-10" lay-skin="line">
{notempty name='list'}
<thead>
<tr>
<th>商品信息</th>
<th>分类标签</th>
<th>商品状态</th>
<th></th>
</tr>
@ -26,10 +25,6 @@
商品名称:{$vo.name|default='--'}<br>
</div>
</td>
<td class='nowrap'>
所属分类:{$vo.cate.name|default=''}<br>
{notempty name='vo.mark'}{foreach $vo.mark as $mark}<span class="margin-right-5 layui-badge layui-bg-cyan">{$mark}</span>{/foreach}{/notempty}
</td>
<td class='nowrap sub-span-blue'>
销售状态:{if $vo.status eq 0}<b class="color-red">已下架</b>{else}<b class="color-green">销售中</b>{/if}<br>
剩余库存 <span>{$vo.stock_total-$vo.stock_sales}</span> ( 已销售 <span>{$vo.stock_sales}</span> )<br>

View File

@ -0,0 +1,36 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">商品编号</label>
<label class="layui-input-inline">
<input name="code" value="{:input('code','')}" placeholder="请输入商品编号" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">商品名称</label>
<label class="layui-input-inline">
<input name="name" value="{:input('name','')}" placeholder="请输入商品名称" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">销售状态</label>
<label class="layui-input-inline">
<select class="layui-select" name="status">
<option value=''>-- 全部状态 --</option>
{foreach ['已下架的商品','销售中的商品'] as $k=>$v}
{if input('status','-') eq $k.''}
<option selected value="{$k}">{$v}</option>
{else}
<option value="{$k}">{$v}</option>
{/if}{/foreach}
</select>
</label>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
</fieldset>

View File

@ -3,19 +3,22 @@
<label class="layui-form-item relative block">
<span class="color-green font-w7">标签名称</span>
<span class="color-desc margin-left-5">Mark Name</span>
<input class="layui-input" required placeholder="请输入标签名称" name="name" value="{$vo.name|default=''}">
<span class="help-block"><b>必填,</b>请填写分类名称(如:系统管理)建议字符不要太长一般4-6个汉字</span>
<input class="layui-input" required placeholder="请输入标签名称" name="name" value="{$vo.name|default=''}"/>
<span class="help-block"><b>必填,</b>请填写标签名称建议字符不要太长一般4-6个汉字</span>
</label>
<div class="layui-form-item relative block">
<span class="color-green font-w7">标签描述</span>
<span class="color-desc margin-left-5">Mark Remark</span>
<label class="relative block">
<textarea class="layui-textarea" placeholder="请输入标签描述" name="remark">{$vo.remark|default=''}</textarea>
<textarea class="layui-textarea" placeholder="请输入文档描述" name="desc">{$vo.desc|default=''}</textarea>
</label>
</div>
</div>
<div class="hr-line-dashed"></div>
{notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
<div class="layui-form-item text-center">
<button class="layui-btn" type='submit'>保存数据</button>
<button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button>

View File

@ -1,16 +1,8 @@
{extend name="../../admin/view/main"}
{block name="button"}
<!--{if auth("add")}-->
<button data-modal='{:url("add")}' data-title="添加标签" class='layui-btn layui-btn-sm layui-btn-primary'>添加标签</button>
<!--{/if}-->
<!--{if auth("remove")}-->
<button data-action='{:url("remove")}' data-rule="id#{key}" data-confirm="确定要删除这些标签吗?" class='layui-btn layui-btn-sm layui-btn-primary'>删除标签</button>
<!--{/if}-->
{/block}
{extend name="../../admin/view/full"}
{block name='content'}
<div class="think-box-shadow">
<div class="iframe-pagination">
{include file='shop_goods_mark/index_search'}
<table class="layui-table margin-top-10" lay-skin="line">
{notempty name='list'}
<thead>
@ -43,7 +35,7 @@
<td class='text-left nowrap'>
<!--{if auth("edit")}-->
<a data-dbclick class="layui-btn layui-btn-sm" data-title="编辑标签" data-modal="{:url('edit')}?id={$vo.id}"> </a>
<a data-dbclick class="layui-btn layui-btn-sm" data-width="500px" data-title="编辑标签" data-modal="{:url('edit')}?id={$vo.id}"> </a>
<!--{/if}-->
<!--{if auth("state") and $vo.status eq 1}-->
@ -64,5 +56,11 @@
</tbody>
</table>
{empty name='list'}<span class="notdata">没有记录哦</span>{else}{$pagehtml|raw|default=''}{/empty}
<div class="absolute" style="bottom:5px;right:10px">
<!--{if auth("add")}-->
<button type="button" data-width="500px" data-modal='{:url("add")}' data-title="添加标签" class='layui-btn layui-btn-sm'>添加标签</button>
<!--{/if}-->
</div>
</div>
{/block}

View File

@ -0,0 +1,39 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">标签名称</label>
<label class="layui-input-inline">
<input name="name" value="{:input('name','')}" placeholder="请输入标签名称" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">使用状态</label>
<div class="layui-input-inline">
<select class="layui-select" name="status">
<option value=''>-- 全部 --</option>
{foreach ['已禁用的记录','已激活的记录'] as $k=>$v}
{if $k.'' eq input('status')}
<option selected value="{$k}">{$v}</option>
{else}
<option value="{$k}">{$v}</option>
{/if}{/foreach}
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">创建时间</label>
<label class="layui-input-inline">
<input data-date-range name="create_at" value="{:input('create_at','')}" placeholder="请选择创建时间" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
</fieldset>
<script>window.form.render()</script>

View File

@ -14,9 +14,7 @@
<thead>
<tr>
<th class='list-table-check-td think-checkbox'>
<label>
<input data-auto-none data-check-target='.list-check-box' type='checkbox'>
</label>
<label><input data-auto-none data-check-target='.list-check-box' type='checkbox'></label>
</th>
<th class='text-left nowrap'>目标手机</th>
<th class='text-left nowrap'>短信内容</th>
@ -30,9 +28,7 @@
{foreach $list as $key=>$vo}
<tr>
<td class='list-table-check-td think-checkbox'>
<label>
<input class="list-check-box" value='{$vo.id}' type='checkbox'>
</label>
<label><input class="list-check-box" value='{$vo.id}' type='checkbox'></label>
</td>
<td>{$vo.phone|default=''}</td>
<td>{$vo.content|default=''}</td>

View File

@ -1,18 +1,20 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:request()->url()}" onsubmit="return false" method="get" autocomplete="off">
<form class="layui-form layui-form-pane form-search" action="{$request->url()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">目标手机</label>
<label class="layui-input-inline">
<input name="phone" value="{:input('phone')}" placeholder="请输入目标手机" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">短信内容</label>
<label class="layui-input-inline">
<input name="content" value="{:input('content')}" placeholder="请输入短信内容" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">发送状态</label>
<div class="layui-input-inline">
@ -27,12 +29,14 @@
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">发送时间</label>
<div class="layui-input-inline">
<input data-date-range name="create_at" value="{:input('create_at','')}" placeholder="请选择发送时间" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>

2
vendor/services.php vendored
View File

@ -1,5 +1,5 @@
<?php
// This file is automatically generated at:2021-01-04 11:04:38
// This file is automatically generated at:2021-01-08 13:03:11
declare (strict_types = 1);
return array (
0 => 'think\\admin\\Library',