mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-28 21:31:37 +08:00
后台模板改成继承模式
This commit is contained in:
parent
f589c5011a
commit
7b39e6d224
@ -1,75 +1,89 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>操作记录</cite></a>
|
<a><cite>操作记录</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.audit.search'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>搜索记录
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.audit.search'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>搜索记录
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>用户编号</th>
|
|
||||||
<th>用户名称</th>
|
|
||||||
<th>用户IP</th>
|
|
||||||
<th>请求路由</th>
|
|
||||||
<th>请求路径</th>
|
|
||||||
<th>请求时间</th>
|
|
||||||
<th>请求内容</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.user_id }}</td>
|
<th>用户编号</th>
|
||||||
<td>{{ item.user_name }}</td>
|
<th>用户名称</th>
|
||||||
<td><a class="kg-ip2region" href="javascript:" title="查看位置" data-ip="{{ item.user_ip }}">{{ item.user_ip }}</a></td>
|
<th>用户IP</th>
|
||||||
<td>{{ item.req_route }}</td>
|
<th>请求路由</th>
|
||||||
<td>{{ item.req_path }}</td>
|
<th>请求路径</th>
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
<th>请求时间</th>
|
||||||
<td align="center">
|
<th>请求内容</th>
|
||||||
<button class="kg-view layui-btn layui-btn-sm" data-url="{{ url({'for':'admin.audit.show','id':item.id}) }}">浏览</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.user_id }}</td>
|
||||||
|
<td>{{ item.user_name }}</td>
|
||||||
|
<td><a class="kg-ip2region" href="javascript:" title="查看位置" data-ip="{{ item.user_ip }}">{{ item.user_ip }}</a></td>
|
||||||
|
<td>{{ item.req_route }}</td>
|
||||||
|
<td>{{ item.req_path }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td align="center">
|
||||||
|
<button class="kg-view layui-btn layui-btn-sm" data-url="{{ url({'for':'admin.audit.show','id':item.id}) }}">浏览</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
{{ partial('partials/ip2region') }}
|
|
||||||
|
|
||||||
<script>
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
{% block include_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
{{ js_include('admin/js/ip2region.js') }}
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('.kg-view').on('click', function () {
|
{% endblock %}
|
||||||
var url = $(this).data('url');
|
|
||||||
layer.open({
|
{% block inline_js %}
|
||||||
type: 2,
|
|
||||||
title: '请求内容',
|
<script>
|
||||||
resize: false,
|
|
||||||
area: ['640px', '360px'],
|
layui.use(['jquery', 'layer'], function () {
|
||||||
content: [url]
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
$('.kg-view').on('click', function () {
|
||||||
|
var url = $(this).data('url');
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '请求内容',
|
||||||
|
resize: false,
|
||||||
|
area: ['640px', '360px'],
|
||||||
|
content: [url]
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,72 +1,73 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.audit.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索记录</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.audit.list'}) }}">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索记录</legend>
|
||||||
<input class="layui-input" type="text" name="user_id" placeholder="用户编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="user_id" placeholder="用户编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户名称</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">用户名称</label>
|
<input class="layui-input" type="text" name="user_name" placeholder="用户名称精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="user_name" placeholder="用户名称精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">请求路由</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">请求路由</label>
|
<input class="layui-input" type="text" name="req_route" placeholder="请求路由精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="req_route" placeholder="请求路由精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">请求路径</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">请求路径</label>
|
<input class="layui-input" type="text" name="req_path" placeholder="请求路径精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="req_path" placeholder="请求路径精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">请求时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-inline">
|
||||||
<label class="layui-form-label">请求时间</label>
|
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
||||||
<div class="layui-input-inline">
|
</div>
|
||||||
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
<div class="layui-form-mid"> -</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid"> -</div>
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-inline">
|
<label class="layui-form-label"></label>
|
||||||
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
{% block inline_js %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
layui.use(['laydate'], function () {
|
layui.use(['laydate'], function () {
|
||||||
|
|
||||||
var laydate = layui.laydate;
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
lay('.time-range').each(function () {
|
lay('.time-range').each(function () {
|
||||||
laydate.render({
|
laydate.render({
|
||||||
elem: this,
|
elem: this,
|
||||||
type: 'datetime',
|
type: 'datetime',
|
||||||
trigger: 'click'
|
trigger: 'click'
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,12 +1,22 @@
|
|||||||
<pre class="layui-code" id="kg-code"></pre>
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<script>
|
{% block content %}
|
||||||
|
|
||||||
layui.use(['jquery'], function () {
|
<pre class="layui-code" id="kg-code"></pre>
|
||||||
var $ = layui.jquery;
|
|
||||||
var obj = JSON.parse('{{ audit.req_data }}');
|
|
||||||
var str = JSON.stringify(obj, undefined, 2);
|
|
||||||
$('#kg-code').html(str);
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery'], function () {
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var obj = JSON.parse('{{ audit.req_data }}');
|
||||||
|
var str = JSON.stringify(obj, undefined, 2);
|
||||||
|
$('#kg-code').html(str);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,52 +1,51 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.category.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加分类</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
{% if parent_id > 0 %}
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.category.create'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>添加分类</legend>
|
||||||
|
</fieldset>
|
||||||
|
{% if parent_id > 0 %}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">父级</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="parent_id" lay-verify="required">
|
||||||
|
<option value="">选择父类</option>
|
||||||
|
{% for category in top_categories %}
|
||||||
|
<option value="{{ category.id }}" {% if category.id == parent_id %}selected{% endif %}>{{ category.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">父级</label>
|
<label class="layui-form-label">名称</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="parent_id" lay-verify="required">
|
<input class="layui-input" type="text" name="name" lay-verify="required">
|
||||||
<option value="">选择父类</option>
|
|
||||||
{% for category in top_categories %}
|
|
||||||
<option value="{{ category.id }}" {% if category.id == parent_id %}selected{% endif %}>{{ category.name }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">名称</label>
|
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="name" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input type="radio" name="published" value="1" title="是" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="radio" name="published" value="1" title="是" checked="checked">
|
<input type="hidden" name="parent_id" value="{{ parent_id }}">
|
||||||
<input type="radio" name="published" value="0" title="否">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
<input type="hidden" name="parent_id" value="{{ parent_id }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
@ -1,37 +1,37 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.category.update','id':category.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑分类</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.category.update','id':category.id}) }}">
|
||||||
<label class="layui-form-label">名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑分类</legend>
|
||||||
<input class="layui-input" type="text" name="name" value="{{ category.name }}" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" value="{{ category.name }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input class="layui-input" type="text" name="priority" value="{{ category.priority }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ category.priority }}" lay-verify="number">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if category.published == 0 %}checked{% endif %}>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if category.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,5 +1,9 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
{% if parent.id > 0 %}
|
{% if parent.id > 0 %}
|
||||||
<a class="kg-back" href="{{ url({'for':'admin.category.list'}) }}">
|
<a class="kg-back" href="{{ url({'for':'admin.category.list'}) }}">
|
||||||
@ -9,65 +13,67 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<a><cite>分类管理</cite></a>
|
<a><cite>分类管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.category.add'},{'parent_id':parent.id}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加分类
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.category.add'},{'parent_id':parent.id}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加分类
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>层级</th>
|
|
||||||
<th>节点数</th>
|
|
||||||
<th>课程数</th>
|
|
||||||
<th>排序</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in categories %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
{% if item.level < 2 %}
|
<th>名称</th>
|
||||||
<td><a href="{{ url({'for':'admin.category.list'}) }}?parent_id={{ item.id }}">{{ item.name }}</a></td>
|
<th>层级</th>
|
||||||
{% else %}
|
<th>节点数</th>
|
||||||
<td>{{ item.name }}</td>
|
<th>课程数</th>
|
||||||
{% endif %}
|
<th>排序</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td>
|
<th>发布</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td>
|
<th>操作</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
|
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.category.update','id':item.id}) }}"></td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.category.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.category.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
{% if item.deleted == 0 %}
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.category.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
{% else %}
|
|
||||||
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.category.restore','id':item.id}) }}">还原</a></li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in categories %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
{% if item.level < 2 %}
|
||||||
|
<td><a href="{{ url({'for':'admin.category.list'}) }}?parent_id={{ item.id }}">{{ item.name }}</a></td>
|
||||||
|
{% else %}
|
||||||
|
<td>{{ item.name }}</td>
|
||||||
|
{% endif %}
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.category.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.category.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.category.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
{% if item.deleted == 0 %}
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.category.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.category.restore','id':item.id}) }}">还原</a></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,30 +1,31 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加章节</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加章节</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="summary"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<input type="hidden" name="course_id" value="{{ course.id }}">
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
<input type="hidden" name="course_id" value="{{ course.id }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,50 +1,49 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加课时</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
|
||||||
<label class="layui-form-label">章节</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加课时</legend>
|
||||||
<select name="parent_id" lay-verify="required">
|
</fieldset>
|
||||||
<option value="">选择章节</option>
|
<div class="layui-form-item">
|
||||||
{% for chapter in chapters %}
|
<label class="layui-form-label">章节</label>
|
||||||
<option value="{{ chapter.id }}" {% if parent_id == chapter.id %}selected{% endif %}>{{ chapter.title }}</option>
|
<div class="layui-input-block">
|
||||||
{% endfor %}
|
<select name="parent_id" lay-verify="required">
|
||||||
</select>
|
<option value="">选择章节</option>
|
||||||
|
{% for chapter in chapters %}
|
||||||
|
<option value="{{ chapter.id }}" {% if parent_id == chapter.id %}selected{% endif %}>{{ chapter.title }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">标题</label>
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="summary"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">免费</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">免费</label>
|
<input type="radio" name="free" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="free" value="0" title="否" checked="checked">
|
||||||
<input type="radio" name="free" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="free" value="0" title="否" checked="checked">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<input type="hidden" name="course_id" value="{{ course.id }}">
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
<input type="hidden" name="course_id" value="{{ course.id }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,36 +1,36 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑章节</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑章节</legend>
|
||||||
<input class="layui-input" type="text" name="title" value="{{ chapter.title }}" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" value="{{ chapter.title }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input class="layui-input" type="text" name="priority" value="{{ chapter.priority }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ chapter.priority }}" lay-verify="number">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,37 +1,91 @@
|
|||||||
{%- macro content_title(model) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if model == 'vod' %}
|
|
||||||
点播信息
|
|
||||||
{% elseif model == 'live' %}
|
|
||||||
直播信息
|
|
||||||
{% elseif model == 'read' %}
|
|
||||||
文章信息
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑课时</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-tab layui-tab-brief">
|
{%- macro content_title(model) %}
|
||||||
|
{% if model == 'vod' %}
|
||||||
|
点播信息
|
||||||
|
{% elseif model == 'live' %}
|
||||||
|
直播信息
|
||||||
|
{% elseif model == 'read' %}
|
||||||
|
文章信息
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<li class="layui-this">基本信息</li>
|
<legend>编辑课时</legend>
|
||||||
<li>{{ content_title(course.model) }}</li>
|
</fieldset>
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab layui-tab-brief">
|
||||||
<div class="layui-tab-item layui-show">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
{{ partial('chapter/edit_lesson_basic') }}
|
<li class="layui-this">基本信息</li>
|
||||||
</div>
|
<li>{{ content_title(course.model) }}</li>
|
||||||
<div class="layui-tab-item">
|
</ul>
|
||||||
{% if course.model == 'vod' %}
|
<div class="layui-tab-content">
|
||||||
{{ partial('chapter/edit_lesson_vod') }}
|
<div class="layui-tab-item layui-show">
|
||||||
{% elseif course.model == 'live' %}
|
{{ partial('chapter/edit_lesson_basic') }}
|
||||||
{{ partial('chapter/edit_lesson_live') }}
|
</div>
|
||||||
{% elseif course.model == 'read' %}
|
<div class="layui-tab-item">
|
||||||
{{ partial('chapter/edit_lesson_read') }}
|
{% if course.model == 'vod' %}
|
||||||
{% endif %}
|
{{ partial('chapter/edit_lesson_vod') }}
|
||||||
|
{% elseif course.model == 'live' %}
|
||||||
|
{{ partial('chapter/edit_lesson_live') }}
|
||||||
|
{% elseif course.model == 'read' %}
|
||||||
|
{{ partial('chapter/edit_lesson_read') }}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block link_css %}
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vditor/dist/index.css"/>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js" defer></script>
|
||||||
|
|
||||||
|
{{ js_include('admin/js/vditor.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'layer', 'laydate'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: 'input[name=start_time]',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: 'input[name=end_time]',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#show-push-test').on('click', function () {
|
||||||
|
var streamName = $('input[name=stream_name]').val();
|
||||||
|
var url = '/admin/test/live/push?stream=' + streamName;
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '推流测试',
|
||||||
|
area: ['680px', '450px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,26 +1,22 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">标题</label>
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="title" value="{{ chapter.title }}" lay-verify="required">
|
<input class="layui-input" type="text" name="title" value="{{ chapter.title }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">简介</label>
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
|
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">排序</label>
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ chapter.priority }}" lay-verify="number">
|
<input class="layui-input" type="text" name="priority" value="{{ chapter.priority }}" lay-verify="number">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">免费</label>
|
<label class="layui-form-label">免费</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -28,7 +24,6 @@
|
|||||||
<input type="radio" name="free" value="0" title="否" {% if chapter.free == 0 %}checked="checked"{% endif %}>
|
<input type="radio" name="free" value="0" title="否" {% if chapter.free == 0 %}checked="checked"{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -36,5 +31,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
@ -1,89 +1,91 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% block content %}
|
||||||
<label class="layui-form-label">开始时间</label>
|
|
||||||
<div class="layui-input-block">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
||||||
{% if live.start_time > 0 %}
|
<div class="layui-form-item">
|
||||||
<input class="layui-input" type="text" name="start_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',live.start_time) }}" {% if live.start_time < time() %}readonly="true"{% endif %} lay-verify="required">
|
<label class="layui-form-label">开始时间</label>
|
||||||
{% else %}
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="start_time" autocomplete="off" lay-verify="required">
|
{% if live.start_time > 0 %}
|
||||||
{% endif %}
|
<input class="layui-input" type="text" name="start_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',live.start_time) }}" {% if live.start_time < time() %}readonly{% endif %} lay-verify="required">
|
||||||
|
{% else %}
|
||||||
|
<input class="layui-input" type="text" name="start_time" autocomplete="off" lay-verify="required">
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">结束时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">结束时间</label>
|
{% if live.end_time > 0 %}
|
||||||
<div class="layui-input-block">
|
<input class="layui-input" type="text" name="end_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',live.end_time) }}" {% if live.end_time < time() %}readonly{% endif %} lay-verify="required">
|
||||||
{% if live.end_time > 0 %}
|
{% else %}
|
||||||
<input class="layui-input" type="text" name="end_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',live.end_time) }}" {% if live.end_time < time() %}readonly="true"{% endif %} lay-verify="required">
|
<input class="layui-input" type="text" name="end_time" autocomplete="off" lay-verify="required">
|
||||||
{% else %}
|
{% endif %}
|
||||||
<input class="layui-input" type="text" name="end_time" autocomplete="off" lay-verify="required">
|
</div>
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<form class="layui-form kg-form">
|
<legend>推流测试</legend>
|
||||||
|
</fieldset>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<div class="layui-form-item">
|
||||||
<legend>推流测试</legend>
|
<label class="layui-form-label">Stream Name</label>
|
||||||
</fieldset>
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="stream_name" value="chapter_{{ chapter.id }}" readonly="readonly">
|
||||||
<div class="layui-form-item">
|
</div>
|
||||||
<label class="layui-form-label">Stream Name</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="stream_name" value="chapter_{{ chapter.id }}" readonly="readonly">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button type="button" class="layui-btn" id="show-push-test">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button type="button" class="layui-btn" id="show-push-test">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['jquery', 'layer', 'laydate'], function () {
|
<script>
|
||||||
|
|
||||||
var $ = layui.jquery;
|
layui.use(['jquery', 'layer', 'laydate'], function () {
|
||||||
var layer = layui.layer;
|
|
||||||
var laydate = layui.laydate;
|
|
||||||
|
|
||||||
laydate.render({
|
var $ = layui.jquery;
|
||||||
elem: 'input[name=start_time]',
|
var layer = layui.layer;
|
||||||
type: 'datetime'
|
var laydate = layui.laydate;
|
||||||
});
|
|
||||||
|
|
||||||
laydate.render({
|
laydate.render({
|
||||||
elem: 'input[name=end_time]',
|
elem: 'input[name=start_time]',
|
||||||
type: 'datetime'
|
type: 'datetime'
|
||||||
});
|
|
||||||
|
|
||||||
$('#show-push-test').on('click', function () {
|
|
||||||
var streamName = $('input[name=stream_name]').val();
|
|
||||||
var url = '/admin/test/live/push?stream=' + streamName;
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '推流测试',
|
|
||||||
area: ['680px', '450px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: 'input[name=end_time]',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#show-push-test').on('click', function () {
|
||||||
|
var streamName = $('input[name=stream_name]').val();
|
||||||
|
var url = '/admin/test/live/push?stream=' + streamName;
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '推流测试',
|
||||||
|
area: ['680px', '450px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,70 +1,14 @@
|
|||||||
<div id="editor"></div>
|
<div id="vditor"></div>
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<textarea class="layui-hide" name="content">{{ read.content }}</textarea>
|
<textarea id="vditor-textarea" class="layui-hide" name="content">{{ read.content }}</textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="hidden" name="chapter_id" value="{{ chapter.id }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vditor/dist/index.css"/>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js" defer></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
layui.use(['jquery'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var $content = $('textarea[name=content]');
|
|
||||||
var vditor = new Vditor('editor', {
|
|
||||||
minHeight: 420,
|
|
||||||
outline: true,
|
|
||||||
tab: " ",
|
|
||||||
resize: {
|
|
||||||
enable: true
|
|
||||||
},
|
|
||||||
cache: {
|
|
||||||
enable: false
|
|
||||||
},
|
|
||||||
preview: {
|
|
||||||
markdown: {
|
|
||||||
chinesePunct: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
counter: {
|
|
||||||
enable: true,
|
|
||||||
max: 60000
|
|
||||||
},
|
|
||||||
upload: {
|
|
||||||
url: '/admin/upload/img/editor',
|
|
||||||
max: 10 * 1024 * 1024,
|
|
||||||
accept: 'image/*',
|
|
||||||
headers: {
|
|
||||||
'X-Csrf-Token': $('meta[name="csrf-token"]').attr('content'),
|
|
||||||
'X-Requested-With': 'XMLHttpRequest'
|
|
||||||
},
|
|
||||||
success: function (editor, responseText) {
|
|
||||||
console.log(editor, responseText);
|
|
||||||
var json = JSON.parse(responseText);
|
|
||||||
var img = '';
|
|
||||||
vditor.insertValue(img);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
value: $content.val()
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.kg-submit').on('click', function () {
|
|
||||||
$content.val(vditor.getValue());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,17 +0,0 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<textarea name="content" class="layui-hide" id="kg-layedit">{{ read.content }}</textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
|
@ -1,74 +1,81 @@
|
|||||||
{% if play_urls %}
|
{% extends 'templates/main.volt' %}
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>视频信息</legend>
|
{% block content %}
|
||||||
</fieldset>
|
|
||||||
<table class="kg-table layui-table">
|
{% if play_urls %}
|
||||||
<tr>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<th>格式</th>
|
<legend>视频信息</legend>
|
||||||
<th>时长</th>
|
</fieldset>
|
||||||
<th>分辨率</th>
|
<table class="kg-table layui-table">
|
||||||
<th>码率</th>
|
|
||||||
<th>大小</th>
|
|
||||||
<th width="16%">操作</th>
|
|
||||||
</tr>
|
|
||||||
{% for item in play_urls %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.format }}</td>
|
<th>格式</th>
|
||||||
<td>{{ item.duration|duration }}</td>
|
<th>时长</th>
|
||||||
<td>{{ item.width }} x {{ item.height }}</td>
|
<th>分辨率</th>
|
||||||
<td>{{ item.rate }}kbps</td>
|
<th>码率</th>
|
||||||
<td>{{ item.size }}M</td>
|
<th>大小</th>
|
||||||
<td>
|
<th width="16%">操作</th>
|
||||||
<span class="layui-btn layui-btn-sm kg-preview" chapter-id="{{ chapter.id }}" play-url="{{ item.url|url_encode }}">预览</span>
|
|
||||||
<span class="layui-btn layui-btn-sm kg-copy" data-clipboard-text="{{ item.url }}">复制</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% for item in play_urls %}
|
||||||
</table>
|
<tr>
|
||||||
<br>
|
<td>{{ item.format }}</td>
|
||||||
{% endif %}
|
<td>{{ item.duration|duration }}</td>
|
||||||
|
<td>{{ item.width }} x {{ item.height }}</td>
|
||||||
|
<td>{{ item.rate }}kbps</td>
|
||||||
|
<td>{{ item.size }}M</td>
|
||||||
|
<td>
|
||||||
|
<span class="layui-btn layui-btn-sm kg-preview" chapter-id="{{ chapter.id }}" play-url="{{ item.url|url_encode }}">预览</span>
|
||||||
|
<span class="layui-btn layui-btn-sm kg-copy" data-clipboard-text="{{ item.url }}">复制</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>上传视频</legend>
|
<legend>上传视频</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<form class="layui-form kg-form" id="vod-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
<form class="layui-form kg-form" id="vod-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
|
||||||
|
<div class="layui-form-item" id="upload-block">
|
||||||
<div class="layui-form-item" id="upload-block">
|
<label class="layui-form-label">视频文件</label>
|
||||||
<label class="layui-form-label">视频文件</label>
|
<div class="layui-input-block">
|
||||||
<div class="layui-input-block">
|
<span class="layui-btn" id="upload-btn">选择视频</span>
|
||||||
<span class="layui-btn" id="upload-btn">选择视频</span>
|
<input class="layui-hide" type="file" name="file" accept="video/*,audio/*">
|
||||||
<input class="layui-hide" type="file" name="file" accept="video/*,audio/*">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item layui-hide" id="upload-progress-block">
|
|
||||||
<label class="layui-form-label">上传进度</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<div class="layui-progress layui-progress-big" lay-showpercent="yes" lay-filter="upload-progress" style="top:10px;">
|
|
||||||
<div class="layui-progress-bar" lay-percent="0%"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item layui-hide" id="upload-progress-block">
|
||||||
|
<label class="layui-form-label">上传进度</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">文件编号</label>
|
<div class="layui-progress layui-progress-big" lay-showpercent="yes" lay-filter="upload-progress" style="top:10px;">
|
||||||
<div class="layui-input-block">
|
<div class="layui-progress-bar" lay-percent="0%"></div>
|
||||||
<input class="layui-input" type="text" name="file_id" value="{{ vod.file_id }}" readonly="readonly" lay-verify="required">
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">文件编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<input class="layui-input" type="text" name="file_id" value="{{ vod.file_id }}" readonly="readonly" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
<input type="hidden" name="chapter_id" value="{{ chapter.id }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
<input type="hidden" name="chapter_id" value="{{ chapter.id }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/media_uploader') }}
|
{% block include_js %}
|
||||||
{{ partial('partials/media_preview') }}
|
|
||||||
{{ partial('partials/clipboard_tips') }}
|
{{ js_include('lib/vod-js-sdk-v6.min.js') }}
|
||||||
|
{{ js_include('lib/clipboard.min.js') }}
|
||||||
|
{{ js_include('admin/js/media.upload.js') }}
|
||||||
|
{{ js_include('admin/js/media.preview.js') }}
|
||||||
|
{{ js_include('admin/js/copy.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,5 +1,9 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a class="kg-back" href="{{ url({'for':'admin.course.chapters','id':course.id}) }}">
|
<a class="kg-back" href="{{ url({'for':'admin.course.chapters','id':course.id}) }}">
|
||||||
<i class="layui-icon layui-icon-return"></i> 返回
|
<i class="layui-icon layui-icon-return"></i> 返回
|
||||||
@ -8,53 +12,59 @@
|
|||||||
<a><cite>{{ chapter.title }}</cite></a>
|
<a><cite>{{ chapter.title }}</cite></a>
|
||||||
<a><cite>课时管理</cite></a>
|
<a><cite>课时管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'chapter'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加章
|
||||||
|
</a>
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'parent_id':chapter.id,'type':'lesson'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加课
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'chapter'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加章
|
|
||||||
</a>
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'parent_id':chapter.id,'type':'lesson'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加课
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if course.model == 'vod' %}
|
{% if course.model == 'vod' %}
|
||||||
{{ partial('chapter/lessons_vod') }}
|
{{ partial('chapter/lessons_vod') }}
|
||||||
{% elseif course.model == 'live' %}
|
{% elseif course.model == 'live' %}
|
||||||
{{ partial('chapter/lessons_live') }}
|
{{ partial('chapter/lessons_live') }}
|
||||||
{% elseif course.model == 'read' %}
|
{% elseif course.model == 'read' %}
|
||||||
{{ partial('chapter/lessons_read') }}
|
{{ partial('chapter/lessons_read') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<script>
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'layer', 'form'], function () {
|
{% block inline_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
<script>
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
form.on('switch(free)', function (data) {
|
layui.use(['jquery', 'layer', 'form'], function () {
|
||||||
var checked = $(this).is(':checked');
|
|
||||||
var free = checked ? 1 : 0;
|
var $ = layui.jquery;
|
||||||
var url = $(this).data('url');
|
var layer = layui.layer;
|
||||||
$.ajax({
|
var form = layui.form;
|
||||||
type: 'POST',
|
|
||||||
url: url,
|
form.on('switch(free)', function (data) {
|
||||||
data: {free: free},
|
var checked = $(this).is(':checked');
|
||||||
success: function (res) {
|
var free = checked ? 1 : 0;
|
||||||
layer.msg(res.msg, {icon: 1});
|
var url = $(this).data('url');
|
||||||
},
|
$.ajax({
|
||||||
error: function (xhr) {
|
type: 'POST',
|
||||||
var json = JSON.parse(xhr.responseText);
|
url: url,
|
||||||
layer.msg(json.msg, {icon: 2});
|
data: {free: free},
|
||||||
data.elem.checked = !checked;
|
success: function (res) {
|
||||||
form.render();
|
layer.msg(res.msg, {icon: 1});
|
||||||
}
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
var json = JSON.parse(xhr.responseText);
|
||||||
|
layer.msg(json.msg, {icon: 2});
|
||||||
|
data.elem.checked = !checked;
|
||||||
|
form.render();
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,55 +1,61 @@
|
|||||||
{%- macro live_time_info(attrs) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if attrs['start_time'] > 0 %}
|
|
||||||
<p>开始:{{ date('Y-m-d H:i',attrs['start_time']) }}</p>
|
|
||||||
<p>结束:{{ date('Y-m-d H:i',attrs['end_time']) }}</p>
|
|
||||||
{% else %}
|
|
||||||
N/A
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
{% block content %}
|
||||||
<colgroup>
|
|
||||||
<col>
|
{%- macro live_time_info(attrs) %}
|
||||||
<col>
|
{% if attrs['start_time'] > 0 %}
|
||||||
<col>
|
<p>开始:{{ date('Y-m-d H:i',attrs['start_time']) }}</p>
|
||||||
<col>
|
<p>结束:{{ date('Y-m-d H:i',attrs['end_time']) }}</p>
|
||||||
<col>
|
{% else %}
|
||||||
<col>
|
N/A
|
||||||
<col width="12%">
|
{% endif %}
|
||||||
</colgroup>
|
{%- endmacro %}
|
||||||
<thead>
|
|
||||||
<tr>
|
<table class="layui-table kg-table layui-form">
|
||||||
<th>编号</th>
|
<colgroup>
|
||||||
<th>名称</th>
|
<col>
|
||||||
<th>直播时间</th>
|
<col>
|
||||||
<th>排序</th>
|
<col>
|
||||||
<th>免费</th>
|
<col>
|
||||||
<th>发布</th>
|
<col>
|
||||||
<th>操作</th>
|
<col>
|
||||||
</tr>
|
<col width="12%">
|
||||||
</thead>
|
</colgroup>
|
||||||
<tbody>
|
<thead>
|
||||||
{% for item in lessons %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>
|
<th>名称</th>
|
||||||
<span>{{ item.title }}</span>
|
<th>直播时间</th>
|
||||||
<span class="layui-badge layui-bg-green">课</span>
|
<th>排序</th>
|
||||||
</td>
|
<th>免费</th>
|
||||||
<td>{{ live_time_info(item.attrs) }}</td>
|
<th>发布</th>
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
<th>操作</th>
|
||||||
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in lessons %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>
|
||||||
|
<span>{{ item.title }}</span>
|
||||||
|
<span class="layui-badge layui-bg-green">课</span>
|
||||||
|
</td>
|
||||||
|
<td>{{ live_time_info(item.attrs) }}</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,46 +1,52 @@
|
|||||||
<table class="kg-table layui-table layui-form">
|
{% extends 'templates/main.volt' %}
|
||||||
<colgroup>
|
|
||||||
<col>
|
{% block content %}
|
||||||
<col>
|
|
||||||
<col>
|
<table class="layui-table kg-table layui-form">
|
||||||
<col>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col>
|
||||||
</colgroup>
|
<col>
|
||||||
<thead>
|
<col>
|
||||||
<tr>
|
<col>
|
||||||
<th>编号</th>
|
<col width="12%">
|
||||||
<th>名称</th>
|
</colgroup>
|
||||||
<th>字数</th>
|
<thead>
|
||||||
<th>排序</th>
|
|
||||||
<th>免费</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in lessons %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>
|
<th>名称</th>
|
||||||
<span><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">{{ item.title }}</a></span>
|
<th>字数</th>
|
||||||
<span class="layui-badge layui-bg-green">课</span>
|
<th>排序</th>
|
||||||
</td>
|
<th>免费</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.attrs['word_count'] }}</span></td>
|
<th>发布</th>
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
<th>操作</th>
|
||||||
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in lessons %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>
|
||||||
|
<span><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">{{ item.title }}</a></span>
|
||||||
|
<span class="layui-badge layui-bg-green">课</span>
|
||||||
|
</td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.attrs['word_count'] }}</span></td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,63 +1,69 @@
|
|||||||
{%- macro file_status(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'pending' %}
|
|
||||||
<span class="layui-badge layui-bg-gray">待上传</span>
|
|
||||||
{% elseif value == 'uploaded' %}
|
|
||||||
<span class="layui-badge layui-bg-black">已上传</span>
|
|
||||||
{% elseif value == 'translating' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">转码中</span>
|
|
||||||
{% elseif value == 'translated' %}
|
|
||||||
<span class="layui-badge layui-bg-green">已转码</span>
|
|
||||||
{% elseif value == 'failed' %}
|
|
||||||
<span class="layui-badge layui-bg-red">已失败</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
{% block content %}
|
||||||
<colgroup>
|
|
||||||
<col>
|
{%- macro file_status(value) %}
|
||||||
<col>
|
{% if value == 'pending' %}
|
||||||
<col>
|
<span class="layui-badge layui-bg-gray">待上传</span>
|
||||||
<col>
|
{% elseif value == 'uploaded' %}
|
||||||
<col>
|
<span class="layui-badge layui-bg-black">已上传</span>
|
||||||
<col>
|
{% elseif value == 'translating' %}
|
||||||
<col>
|
<span class="layui-badge layui-bg-blue">转码中</span>
|
||||||
<col width="10%">
|
{% elseif value == 'translated' %}
|
||||||
</colgroup>
|
<span class="layui-badge layui-bg-green">已转码</span>
|
||||||
<thead>
|
{% elseif value == 'failed' %}
|
||||||
<tr>
|
<span class="layui-badge layui-bg-red">已失败</span>
|
||||||
<th>编号</th>
|
{% endif %}
|
||||||
<th>名称</th>
|
{%- endmacro %}
|
||||||
<th>视频状态</th>
|
|
||||||
<th>视频时长</th>
|
<table class="layui-table kg-table layui-form">
|
||||||
<th>排序</th>
|
<colgroup>
|
||||||
<th>免费</th>
|
<col>
|
||||||
<th>发布</th>
|
<col>
|
||||||
<th>操作</th>
|
<col>
|
||||||
</tr>
|
<col>
|
||||||
</thead>
|
<col>
|
||||||
<tbody>
|
<col>
|
||||||
{% for item in lessons %}
|
<col>
|
||||||
|
<col width="10%">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>
|
<th>名称</th>
|
||||||
<span><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">{{ item.title }}</a></span>
|
<th>视频状态</th>
|
||||||
<span class="layui-badge layui-bg-green">课</span>
|
<th>视频时长</th>
|
||||||
</td>
|
<th>排序</th>
|
||||||
<td>{{ file_status(item.attrs['file_status']) }}</td>
|
<th>免费</th>
|
||||||
<td>{{ item.attrs['duration']|duration }}</td>
|
<th>发布</th>
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
<th>操作</th>
|
||||||
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in lessons %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>
|
||||||
|
<span><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">{{ item.title }}</a></span>
|
||||||
|
<span class="layui-badge layui-bg-green">课</span>
|
||||||
|
</td>
|
||||||
|
<td>{{ file_status(item.attrs['file_status']) }}</td>
|
||||||
|
<td>{{ item.attrs['duration']|duration }}</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.free == 1 %}checked{% endif %}></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,63 +1,67 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加课程</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.create'}) }}">
|
||||||
<label class="layui-form-label">类型</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加课程</legend>
|
||||||
<input type="radio" name="model" value="vod" title="点播" lay-filter="model" checked="checked">
|
</fieldset>
|
||||||
<input type="radio" name="model" value="live" title="直播" lay-filter="model">
|
<div class="layui-form-item">
|
||||||
<input type="radio" name="model" value="read" title="图文" lay-filter="model">
|
<label class="layui-form-label">类型</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="model" value="vod" title="点播" lay-filter="model" checked="checked">
|
||||||
|
<input type="radio" name="model" value="live" title="直播" lay-filter="model">
|
||||||
|
<input type="radio" name="model" value="read" title="图文" lay-filter="model">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<div class="layui-form-mid layui-word-aux" id="model-tips"></div>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux" id="model-tips"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item" style="margin:25px 0px 35px 0px;">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-form-item" style="margin:25px 0px 35px 0px;">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">标题</label>
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button id="kg-submit" class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button id="kg-submit" class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
<script>
|
||||||
|
|
||||||
var $ = layui.jquery;
|
layui.use(['jquery', 'form'], function () {
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
var modelTips = {
|
var $ = layui.jquery;
|
||||||
vod: '通过音视频呈现课程内容,内容可视化,有图像有声音,适合大部分场景',
|
var form = layui.form;
|
||||||
live: '通过直播呈现课程内容,交互性强,适合需要交互反馈、情绪表达的场景',
|
|
||||||
read: '通过图文呈现课程内容,简单直接,适合撰写文档、书籍、教程的场景'
|
|
||||||
};
|
|
||||||
|
|
||||||
var modelTipsBlock = $('#model-tips');
|
var modelTips = {
|
||||||
|
vod: '通过音视频呈现课程内容,内容可视化,有图像有声音,适合大部分场景',
|
||||||
|
live: '通过直播呈现课程内容,交互性强,适合需要交互反馈、情绪表达的场景',
|
||||||
|
read: '通过图文呈现课程内容,简单直接,适合撰写文档、书籍、教程的场景'
|
||||||
|
};
|
||||||
|
|
||||||
|
var modelTipsBlock = $('#model-tips');
|
||||||
|
|
||||||
|
form.on('radio(model)', function (data) {
|
||||||
|
modelTipsBlock.html(modelTips[data.value]);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelTipsBlock.html(modelTips.vod);
|
||||||
|
|
||||||
form.on('radio(model)', function (data) {
|
|
||||||
modelTipsBlock.html(modelTips[data.value]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
modelTipsBlock.html(modelTips.vod);
|
</script>
|
||||||
|
|
||||||
});
|
{% endblock %}
|
||||||
|
|
||||||
</script>
|
|
||||||
|
@ -1,58 +1,64 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a class="kg-back" href="{{ url({'for':'admin.course.list'}) }}"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
<a class="kg-back" href="{{ url({'for':'admin.course.list'}) }}"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
||||||
<a><cite>{{ course.title }}</cite></a>
|
<a><cite>{{ course.title }}</cite></a>
|
||||||
<a><cite>章节管理</cite></a>
|
<a><cite>章节管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'chapter'}) }}"><i class="layui-icon layui-icon-add-1"></i>添加章</a>
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'lesson'}) }}"><i class="layui-icon layui-icon-add-1"></i>添加课</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'chapter'}) }}"><i class="layui-icon layui-icon-add-1"></i>添加章</a>
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.chapter.add'},{'course_id':course.id,'type':'lesson'}) }}"><i class="layui-icon layui-icon-add-1"></i>添加课</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="kg-table layui-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>课时数</th>
|
|
||||||
<th>排序</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in chapters %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>
|
<th>名称</th>
|
||||||
<span><a href="{{ url({'for':'admin.chapter.lessons','id':item.id}) }}">{{ item.title }}</a></span>
|
<th>课时数</th>
|
||||||
<span class="layui-badge layui-bg-green">章</span>
|
<th>排序</th>
|
||||||
</td>
|
<th>操作</th>
|
||||||
<td>
|
|
||||||
<a href="{{ url({'for':'admin.chapter.lessons','id':item.id}) }}">
|
|
||||||
<span class="layui-badge layui-bg-green">{{ item.lesson_count }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in chapters %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>
|
||||||
|
<span><a href="{{ url({'for':'admin.chapter.lessons','id':item.id}) }}">{{ item.title }}</a></span>
|
||||||
|
<span class="layui-badge layui-bg-green">章</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ url({'for':'admin.chapter.lessons','id':item.id}) }}">
|
||||||
|
<span class="layui-badge layui-bg-green">{{ item.lesson_count }}</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" value="{{ item.priority }}" data-url="{{ url({'for':'admin.chapter.update','id':item.id}) }}"></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.chapter.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.chapter.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,29 +1,110 @@
|
|||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% extends 'templates/main.volt' %}
|
||||||
<legend>编辑课程</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-tab layui-tab-brief">
|
{% block content %}
|
||||||
|
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<li class="layui-this">基本信息</li>
|
<legend>编辑课程</legend>
|
||||||
<li>课程介绍</li>
|
</fieldset>
|
||||||
<li>营销设置</li>
|
|
||||||
<li>相关课程</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div class="layui-tab-content">
|
<div class="layui-tab layui-tab-brief">
|
||||||
<div class="layui-tab-item layui-show">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
{{ partial('course/edit_basic') }}
|
<li class="layui-this">基本信息</li>
|
||||||
</div>
|
<li>课程介绍</li>
|
||||||
<div class="layui-tab-item">
|
<li>营销设置</li>
|
||||||
{{ partial('course/edit_desc') }}
|
<li>相关课程</li>
|
||||||
</div>
|
</ul>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-content">
|
||||||
{{ partial('course/edit_sale') }}
|
<div class="layui-tab-item layui-show">
|
||||||
</div>
|
{{ partial('course/edit_basic') }}
|
||||||
<div class="layui-tab-item">
|
</div>
|
||||||
{{ partial('course/edit_related') }}
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('course/edit_desc') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('course/edit_sale') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('course/edit_related') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('lib/xm-select.js') }}
|
||||||
|
{{ js_include('admin/js/xm-course.js') }}
|
||||||
|
{{ js_include('admin/js/cover.upload.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
xmSelect.render({
|
||||||
|
el: '#xm-category-ids',
|
||||||
|
name: 'xm_category_ids',
|
||||||
|
max: 5,
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
data: {{ xm_categories|json_encode }}
|
||||||
|
});
|
||||||
|
|
||||||
|
xmSelect.render({
|
||||||
|
el: '#xm-teacher-ids',
|
||||||
|
name: 'xm_teacher_ids',
|
||||||
|
paging: true,
|
||||||
|
max: 5,
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
data: {{ xm_teachers|json_encode }}
|
||||||
|
});
|
||||||
|
|
||||||
|
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/all');
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'form', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var form = layui.form;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
form.on('radio(price_mode)', function (data) {
|
||||||
|
var priceBlock = $('#price-block');
|
||||||
|
if (data.value === 'free') {
|
||||||
|
priceBlock.hide();
|
||||||
|
} else {
|
||||||
|
priceBlock.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.kg-submit').on('click', function () {
|
||||||
|
|
||||||
|
var xm_category_ids = $('input[name=xm_category_ids]');
|
||||||
|
var xm_teacher_ids = $('input[name=xm_teacher_ids]');
|
||||||
|
|
||||||
|
if (xm_category_ids.val() === '') {
|
||||||
|
layer.msg('请选择分类', {icon: 2});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xm_teacher_ids.val() === '') {
|
||||||
|
layer.msg('请选择讲师', {icon: 2});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,12 +1,10 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">标题</label>
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="title" value="{{ course.title }}" lay-verify="required">
|
<input class="layui-input" type="text" name="title" value="{{ course.title }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">封面</label>
|
<label class="layui-form-label">封面</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
@ -17,21 +15,18 @@
|
|||||||
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
|
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">分类</label>
|
<label class="layui-form-label">分类</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<div id="xm-category-ids"></div>
|
<div id="xm-category-ids"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">讲师</label>
|
<label class="layui-form-label">讲师</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<div id="xm-teacher-ids"></div>
|
<div id="xm-teacher-ids"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">难度</label>
|
<label class="layui-form-label">难度</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -41,7 +36,6 @@
|
|||||||
<input type="radio" name="level" value="senior" title="高级" {% if course.level == 'senior' %}checked{% endif %}>
|
<input type="radio" name="level" value="senior" title="高级" {% if course.level == 'senior' %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -49,59 +43,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{ partial('partials/cover_uploader') }}
|
|
||||||
|
|
||||||
{{ js_include('lib/xm-select.js') }}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
xmSelect.render({
|
|
||||||
el: '#xm-category-ids',
|
|
||||||
name: 'xm_category_ids',
|
|
||||||
max: 5,
|
|
||||||
prop: {
|
|
||||||
name: 'name',
|
|
||||||
value: 'id'
|
|
||||||
},
|
|
||||||
data: {{ xm_categories|json_encode }}
|
|
||||||
});
|
|
||||||
|
|
||||||
xmSelect.render({
|
|
||||||
el: '#xm-teacher-ids',
|
|
||||||
name: 'xm_teacher_ids',
|
|
||||||
paging: true,
|
|
||||||
max: 5,
|
|
||||||
prop: {
|
|
||||||
name: 'name',
|
|
||||||
value: 'id'
|
|
||||||
},
|
|
||||||
data: {{ xm_teachers|json_encode }}
|
|
||||||
});
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('.kg-submit').on('click', function () {
|
|
||||||
|
|
||||||
var xm_category_ids = $('input[name=xm_category_ids]');
|
|
||||||
var xm_teacher_ids = $('input[name=xm_teacher_ids]');
|
|
||||||
|
|
||||||
if (xm_category_ids.val() === '') {
|
|
||||||
layer.msg('请选择分类', {icon: 2});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (xm_teacher_ids.val() === '') {
|
|
||||||
layer.msg('请选择讲师', {icon: 2});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
@ -1,34 +1,33 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% block content %}
|
||||||
<label class="layui-form-label">详情</label>
|
|
||||||
<div class="layui-input-block">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
||||||
<textarea name="details" class="layui-hide" id="kg-layedit">{{ course.details }}</textarea>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">详情</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea name="details" class="layui-hide" id="kg-layedit">{{ course.details }}</textarea>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea name="summary" class="layui-textarea">{{ course.summary }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="summary" class="layui-textarea">{{ course.summary }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">关键字</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">关键字</label>
|
<input class="layui-input" type="text" name="keywords" value="{{ course.keywords }}" placeholder="多个关键字逗号分隔">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="keywords" value="{{ course.keywords }}" placeholder="多个关键字逗号分隔">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
|
@ -1,12 +1,10 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">相关课程</label>
|
<label class="layui-form-label">相关课程</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<div id="xm-course-ids"></div>
|
<div id="xm-course-ids"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -14,11 +12,5 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{ js_include('admin/js/xm-course.js') }}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/all');
|
|
||||||
</script>
|
|
||||||
|
@ -1,21 +1,19 @@
|
|||||||
{% set free = course.market_price == 0 %}
|
{% set free = course.market_price == 0 %}
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">模式</label>
|
<label class="layui-form-label">模式</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="radio" name="price_mode" value="free" title="免费" lay-filter="price-mode" {% if free %}checked="checked"{% endif %}>
|
<input type="radio" name="price_mode" value="free" title="免费" lay-filter="price_mode" {% if free %}checked="checked"{% endif %}>
|
||||||
<input type="radio" name="price_mode" value="charge" title="收费" lay-filter="price-mode" {% if not free %}checked="checked"{% endif %}>
|
<input type="radio" name="price_mode" value="charge" title="收费" lay-filter="price_mode" {% if not free %}checked="checked"{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="price-block" {% if free %}style="display:none;"{% endif %}>
|
<div id="price-block" {% if free %}style="display:none;"{% endif %}>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">市场价格</label>
|
<label class="layui-form-label">市场价格</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input class="layui-input" type="text" name="market_price" value="{{ course.market_price }}" lay-filter="number">
|
<input class="layui-input" type="text" name="market_price" value="{{ course.market_price }}" lay-verify="number">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">元</div>
|
<div class="layui-form-mid layui-word-aux">元</div>
|
||||||
</div>
|
</div>
|
||||||
@ -24,7 +22,7 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">会员价格</label>
|
<label class="layui-form-label">会员价格</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input class="layui-input" type="text" name="vip_price" value="{{ course.vip_price }}" lay-filter="number">
|
<input class="layui-input" type="text" name="vip_price" value="{{ course.vip_price }}" lay-verify="number">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">元</div>
|
<div class="layui-form-mid layui-word-aux">元</div>
|
||||||
</div>
|
</div>
|
||||||
@ -46,7 +44,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -54,25 +51,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
form.on('radio(price-mode)', function (data) {
|
|
||||||
var priceBlock = $('#price-block');
|
|
||||||
if (data.value === 'free') {
|
|
||||||
priceBlock.hide();
|
|
||||||
} else {
|
|
||||||
priceBlock.show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,118 +1,124 @@
|
|||||||
{%- macro model_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'vod' %}
|
|
||||||
<span class="layui-badge layui-bg-green">点播</span>
|
|
||||||
{% elseif value == 'live' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">直播</span>
|
|
||||||
{% elseif value == 'read' %}
|
|
||||||
<span class="layui-badge layui-bg-black">图文</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
{%- macro level_info(value) %}
|
{% block content %}
|
||||||
难度:<span class="layui-badge layui-bg-gray">
|
|
||||||
{% if value == 'entry' %}
|
|
||||||
入门
|
|
||||||
{% elseif value == 'junior' %}
|
|
||||||
初级
|
|
||||||
{% elseif value == 'medium' %}
|
|
||||||
中级
|
|
||||||
{% elseif value == 'senior' %}
|
|
||||||
高级
|
|
||||||
{% endif %}
|
|
||||||
</span>
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
{%- macro category_info(category) %}
|
{%- macro model_info(value) %}
|
||||||
{% if category %}
|
{% if value == 'vod' %}
|
||||||
分类:<a class="layui-badge layui-bg-gray" href="{{ url({'for':'admin.course.list'},{'category_id':category.id}) }}">{{ category.name }}</a>
|
<span class="layui-badge layui-bg-green">点播</span>
|
||||||
{% endif %}
|
{% elseif value == 'live' %}
|
||||||
{%- endmacro %}
|
<span class="layui-badge layui-bg-blue">直播</span>
|
||||||
|
{% elseif value == 'read' %}
|
||||||
|
<span class="layui-badge layui-bg-black">图文</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
{%- macro teacher_info(teacher) %}
|
{%- macro level_info(value) %}
|
||||||
{% if teacher %}
|
难度:<span class="layui-badge layui-bg-gray">
|
||||||
讲师:<a class="layui-badge layui-bg-gray" href="{{ url({'for':'admin.course.list'},{'teacher_id':teacher.id}) }}">{{ teacher.name }}</a>
|
{% if value == 'entry' %}
|
||||||
{% endif %}
|
入门
|
||||||
{%- endmacro %}
|
{% elseif value == 'junior' %}
|
||||||
|
初级
|
||||||
|
{% elseif value == 'medium' %}
|
||||||
|
中级
|
||||||
|
{% elseif value == 'senior' %}
|
||||||
|
高级
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
<div class="kg-nav">
|
{%- macro category_info(category) %}
|
||||||
<div class="kg-nav-left">
|
{% if category %}
|
||||||
|
分类:<a class="layui-badge layui-bg-gray" href="{{ url({'for':'admin.course.list'},{'category_id':category.id}) }}">{{ category.name }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro teacher_info(teacher) %}
|
||||||
|
{% if teacher %}
|
||||||
|
讲师:<a class="layui-badge layui-bg-gray" href="{{ url({'for':'admin.course.list'},{'teacher_id':teacher.id}) }}">{{ teacher.name }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>课程管理</cite></a>
|
<a><cite>课程管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.course.search'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-search"></i>搜索课程
|
||||||
|
</a>
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.course.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加课程
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.course.search'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-search"></i>搜索课程
|
|
||||||
</a>
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.course.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加课程
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col width="50%">
|
<col width="50%">
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>课程</th>
|
|
||||||
<th>课时数</th>
|
|
||||||
<th>用户数</th>
|
|
||||||
<th>价格</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>课程</th>
|
||||||
<p>标题:<a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">{{ item.title }}</a> {{ model_info(item.model) }}</p>
|
<th>课时数</th>
|
||||||
<p>{{ category_info(item.category) }} {{ teacher_info(item.teacher) }} {{ level_info(item.level) }}</p>
|
<th>用户数</th>
|
||||||
</td>
|
<th>价格</th>
|
||||||
<td>
|
<th>发布</th>
|
||||||
<a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">
|
<th>操作</th>
|
||||||
<span class="layui-badge layui-bg-green">{{ item.lesson_count }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a href="{{ url({'for':'admin.student.list'},{'course_id':item.id}) }}">
|
|
||||||
<span class="layui-badge layui-bg-green">{{ item.user_count }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>市场:{{ '¥%0.2f'|format(item.market_price) }}</p>
|
|
||||||
<p>会员:{{ '¥%0.2f'|format(item.vip_price) }}</p>
|
|
||||||
</td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.course.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.course.edit','id':item.id}) }}">编辑课程</a></li>
|
|
||||||
{% if item.deleted == 0 %}
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.course.delete','id':item.id}) }}">删除课程</a></li>
|
|
||||||
{% else %}
|
|
||||||
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.course.restore','id':item.id}) }}">还原课程</a></li>
|
|
||||||
{% endif %}
|
|
||||||
<hr>
|
|
||||||
<li><a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">章节管理</a></li>
|
|
||||||
<li><a href="{{ url({'for':'admin.student.list'},{'course_id':item.id}) }}">学员管理</a></li>
|
|
||||||
<hr>
|
|
||||||
<li><a href="{{ url({'for':'admin.consult.list'}) }}?course_id={{ item.id }}">咨询管理</a></li>
|
|
||||||
<li><a href="{{ url({'for':'admin.review.list'}) }}?course_id={{ item.id }}">评价管理</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p>标题:<a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">{{ item.title }}</a> {{ model_info(item.model) }}</p>
|
||||||
|
<p>{{ category_info(item.category) }} {{ teacher_info(item.teacher) }} {{ level_info(item.level) }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">
|
||||||
|
<span class="layui-badge layui-bg-green">{{ item.lesson_count }}</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ url({'for':'admin.student.list'},{'course_id':item.id}) }}">
|
||||||
|
<span class="layui-badge layui-bg-green">{{ item.user_count }}</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>市场:{{ '¥%0.2f'|format(item.market_price) }}</p>
|
||||||
|
<p>会员:{{ '¥%0.2f'|format(item.vip_price) }}</p>
|
||||||
|
</td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.course.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.course.edit','id':item.id}) }}">编辑课程</a></li>
|
||||||
|
{% if item.deleted == 0 %}
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.course.delete','id':item.id}) }}">删除课程</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.course.restore','id':item.id}) }}">还原课程</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<hr>
|
||||||
|
<li><a href="{{ url({'for':'admin.course.chapters','id':item.id}) }}">章节管理</a></li>
|
||||||
|
<li><a href="{{ url({'for':'admin.student.list'},{'course_id':item.id}) }}">学员管理</a></li>
|
||||||
|
<hr>
|
||||||
|
<li><a href="{{ url({'for':'admin.consult.list'}) }}?course_id={{ item.id }}">咨询管理</a></li>
|
||||||
|
<li><a href="{{ url({'for':'admin.review.list'}) }}?course_id={{ item.id }}">评价管理</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,114 +1,116 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.course.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索课程</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.course.list'}) }}">
|
||||||
<label class="layui-form-label">编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索课程</legend>
|
||||||
<input class="layui-input" type="text" name="id" placeholder="编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="id" placeholder="编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">标题</label>
|
<input class="layui-input" type="text" name="title" placeholder="标题模糊匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="title" placeholder="标题模糊匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">分类</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">分类</label>
|
<div id="xm-category-ids"></div>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<div id="xm-category-ids"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">讲师</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">讲师</label>
|
<div id="xm-teacher-ids"></div>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<div id="xm-teacher-ids"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">模型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">模型</label>
|
<input type="radio" name="model" value="vod" title="点播">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="model" value="live" title="直播">
|
||||||
<input type="radio" name="model" value="vod" title="点播">
|
<input type="radio" name="model" value="read" title="图文">
|
||||||
<input type="radio" name="model" value="live" title="直播">
|
</div>
|
||||||
<input type="radio" name="model" value="read" title="图文">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">难度</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">难度</label>
|
<input type="radio" name="level" value="entry" title="入门">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="level" value="junior" title="初级">
|
||||||
<input type="radio" name="level" value="entry" title="入门">
|
<input type="radio" name="level" value="medium" title="中级">
|
||||||
<input type="radio" name="level" value="junior" title="初级">
|
<input type="radio" name="level" value="senior" title="高级">
|
||||||
<input type="radio" name="level" value="medium" title="中级">
|
</div>
|
||||||
<input type="radio" name="level" value="senior" title="高级">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">免费</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">免费</label>
|
<input type="radio" name="free" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="free" value="0" title="否">
|
||||||
<input type="radio" name="free" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="free" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">删除</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">删除</label>
|
<input type="radio" name="deleted" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="deleted" value="0" title="否">
|
||||||
<input type="radio" name="deleted" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="deleted" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{% block include_js %}
|
||||||
|
|
||||||
<script>
|
{{ js_include('lib/xm-select.js') }}
|
||||||
|
|
||||||
xmSelect.render({
|
{% endblock %}
|
||||||
el: '#xm-category-ids',
|
|
||||||
name: 'xm_category_ids',
|
|
||||||
max: 5,
|
|
||||||
prop: {
|
|
||||||
name: 'name',
|
|
||||||
value: 'id'
|
|
||||||
},
|
|
||||||
data: {{ xm_categories|json_encode }}
|
|
||||||
});
|
|
||||||
|
|
||||||
xmSelect.render({
|
{% block inline_js %}
|
||||||
el: '#xm-teacher-ids',
|
|
||||||
name: 'xm_teacher_ids',
|
|
||||||
max: 5,
|
|
||||||
prop: {
|
|
||||||
name: 'name',
|
|
||||||
value: 'id'
|
|
||||||
},
|
|
||||||
data: {{ xm_teachers|json_encode }}
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
<script>
|
||||||
|
|
||||||
|
xmSelect.render({
|
||||||
|
el: '#xm-category-ids',
|
||||||
|
name: 'xm_category_ids',
|
||||||
|
max: 5,
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
data: {{ xm_categories|json_encode }}
|
||||||
|
});
|
||||||
|
|
||||||
|
xmSelect.render({
|
||||||
|
el: '#xm-teacher-ids',
|
||||||
|
name: 'xm_teacher_ids',
|
||||||
|
max: 5,
|
||||||
|
prop: {
|
||||||
|
name: 'name',
|
||||||
|
value: 'id'
|
||||||
|
},
|
||||||
|
data: {{ xm_teachers|json_encode }}
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,37 +1,37 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加群组</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.create'}) }}">
|
||||||
<label class="layui-form-label">名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加群组</legend>
|
||||||
<input class="layui-input" type="text" name="name" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="about"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="about"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">类型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">类型</label>
|
<input type="radio" name="type" value="course" title="课程" disabled="disabled">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="type" value="chat" title="聊天" checked="checked">
|
||||||
<input type="radio" name="type" value="course" title="课程" disabled="disabled">
|
</div>
|
||||||
<input type="radio" name="type" value="chat" title="聊天" checked="checked">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,57 +1,59 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.update','id':group.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑群组</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.update','id':group.id}) }}">
|
||||||
<label class="layui-form-label">头像</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-inline" style="width: 110px;">
|
<legend>编辑群组</legend>
|
||||||
<img id="img-avatar" class="kg-avatar" src="{{ group.avatar }}">
|
</fieldset>
|
||||||
<input type="hidden" name="avatar" value="{{ group.avatar }}">
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">头像</label>
|
||||||
|
<div class="layui-input-inline" style="width: 110px;">
|
||||||
|
<img id="img-avatar" class="kg-avatar" src="{{ group.avatar }}">
|
||||||
|
<input type="hidden" name="avatar" value="{{ group.avatar }}">
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline" style="padding-top:35px;">
|
||||||
|
<button id="change-avatar" class="layui-btn layui-btn-sm" type="button">更换</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline" style="padding-top:35px;">
|
<div class="layui-form-item">
|
||||||
<button id="change-avatar" class="layui-btn layui-btn-sm" type="button">更换</button>
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" value="{{ group.name }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">名称</label>
|
<textarea class="layui-textarea" name="about">{{ group.about }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="name" value="{{ group.name }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">群主编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<input class="layui-input" type="text" name="owner_id" value="{{ group.owner_id }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="about">{{ group.about }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">群主编号</label>
|
<input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked{% endif %}>
|
||||||
<input class="layui-input" type="text" name="owner_id" value="{{ group.owner_id }}" lay-verify="number">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
{% block include_js %}
|
||||||
|
|
||||||
{{ partial('partials/avatar_uploader') }}
|
{{ js_include('admin/js/avatar.upload.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,71 +1,77 @@
|
|||||||
{%- macro type_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'course' %}
|
|
||||||
<span class="layui-badge layui-bg-green">课</span>
|
|
||||||
{% elseif value == 'chat' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">聊</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
{%- macro owner_info(owner) %}
|
{% block content %}
|
||||||
{% if owner %}
|
|
||||||
{{ owner.name }}({{ owner.id }})
|
|
||||||
{% else %}
|
|
||||||
未设置
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<div class="kg-nav">
|
{%- macro type_info(value) %}
|
||||||
<div class="kg-nav-left">
|
{% if value == 'course' %}
|
||||||
|
<span class="layui-badge layui-bg-green">课</span>
|
||||||
|
{% elseif value == 'chat' %}
|
||||||
|
<span class="layui-badge layui-bg-blue">聊</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro owner_info(owner) %}
|
||||||
|
{% if owner %}
|
||||||
|
{{ owner.name }}({{ owner.id }})
|
||||||
|
{% else %}
|
||||||
|
未设置
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>群组管理</cite></a>
|
<a><cite>群组管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.group.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加群组
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.group.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加群组
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="kg-table layui-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>群主</th>
|
|
||||||
<th>成员</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>{{ item.name }} {{ type_info(item.type) }}</td>
|
<th>名称</th>
|
||||||
<td>{{ owner_info(item.owner) }}</td>
|
<th>群主</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.user_count }}</span></td>
|
<th>成员</th>
|
||||||
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ url({'for':'admin.group.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
<th>发布</th>
|
||||||
<td align="center">
|
<th>操作</th>
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.group.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.group.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>{{ item.name }} {{ type_info(item.type) }}</td>
|
||||||
|
<td>{{ owner_info(item.owner) }}</td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.user_count }}</span></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ url({'for':'admin.group.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.group.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.group.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,67 +1,63 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.group.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索群组</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.group.list'}) }}">
|
||||||
<label class="layui-form-label">群组编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索群组</legend>
|
||||||
<input class="layui-input" type="text" name="id" placeholder="群组编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">群组编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="id" placeholder="群组编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">群组名称</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">群组名称</label>
|
<input class="layui-input" type="text" name="name" placeholder="群组名称模糊匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="name" placeholder="群组名称模糊匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">群主编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">群主编号</label>
|
<input class="layui-input" type="text" name="user_id" placeholder="群主编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="user_id" placeholder="群主编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">课程编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">课程编号</label>
|
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">类型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">类型</label>
|
<input type="radio" name="type" value="course" title="课程">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="type" value="chat" title="聊天">
|
||||||
<input type="radio" name="type" value="course" title="课程">
|
</div>
|
||||||
<input type="radio" name="type" value="chat" title="聊天">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">删除</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">删除</label>
|
<input type="radio" name="deleted" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="deleted" value="0" title="否">
|
||||||
<input type="radio" name="deleted" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="deleted" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,46 +1,43 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加帮助</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加帮助</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">内容</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">内容</label>
|
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是" checked="checked">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
|
@ -1,47 +1,44 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.update','id':help.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑帮助</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.update','id':help.id}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑帮助</legend>
|
||||||
<input type="text" name="title" value="{{ help.title }}" class="layui-input" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="title" value="{{ help.title }}" class="layui-input" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">内容</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">内容</label>
|
<textarea name="content" class="layui-hide" id="kg-layedit">{{ help.content }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="content" class="layui-hide" id="kg-layedit">{{ help.content }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input class="layui-input" type="text" name="priority" value="{{ help.priority }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ help.priority }}" lay-verify="number">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if help.published == 0 %}checked{% endif %}>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if help.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
|
||||||
|
|
||||||
|
@ -1,57 +1,63 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>帮助管理</cite></a>
|
<a><cite>帮助管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.help.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加帮助
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.help.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加帮助
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="kg-table layui-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>标题</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th>更新时间</th>
|
|
||||||
<th>排序</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in helps %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>{{ item.title }}</td>
|
<th>标题</th>
|
||||||
<td>{{ date('Y-m-d H:i',item.create_time) }}</td>
|
<th>创建时间</th>
|
||||||
<td>{{ date('Y-m-d H:i',item.update_time) }}</td>
|
<th>更新时间</th>
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.help.update','id':item.id}) }}"></td>
|
<th>排序</th>
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.help.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}>
|
<th>发布</th>
|
||||||
</td>
|
<th>操作</th>
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.page.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.page.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in helps %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>{{ item.title }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i',item.create_time) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i',item.update_time) }}</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.help.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.help.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.page.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.page.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,6 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html lang="zh-CN-Hans">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
@ -11,11 +10,8 @@
|
|||||||
{{ js_include('lib/layui/layui.js') }}
|
{{ js_include('lib/layui/layui.js') }}
|
||||||
{{ js_include('admin/js/index.js') }}
|
{{ js_include('admin/js/index.js') }}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="layui-layout-body">
|
<body class="layui-layout-body">
|
||||||
|
|
||||||
<div class="layui-layout layui-layout-admin">
|
<div class="layui-layout layui-layout-admin">
|
||||||
|
|
||||||
<div class="layui-header">
|
<div class="layui-header">
|
||||||
<div class="layui-logo">COURSE ADMIN</div>
|
<div class="layui-logo">COURSE ADMIN</div>
|
||||||
<div class="kg-side-menu-bar">
|
<div class="kg-side-menu-bar">
|
||||||
@ -42,7 +38,6 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-side layui-bg-black">
|
<div class="layui-side layui-bg-black">
|
||||||
<div class="layui-side-scroll">
|
<div class="layui-side-scroll">
|
||||||
{% for key,level in left_menus %}
|
{% for key,level in left_menus %}
|
||||||
@ -61,16 +56,12 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-body">
|
<div class="layui-body">
|
||||||
<iframe name="content" style="width:100%;height:100%;border:0;" src="{{ url({'for':'admin.main'}) }}"></iframe>
|
<iframe name="content" style="width:100%;height:100%;border:0;" src="{{ url({'for':'admin.main'}) }}"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-footer">
|
<div class="layui-footer">
|
||||||
© 2020 <a href="http://koogua.com"><b>koogua.com</b></a> all rights reserved
|
© 2020 <a href="http://koogua.com"><b>koogua.com</b></a> all rights reserved
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -0,0 +1,5 @@
|
|||||||
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,75 +1,71 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.nav.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加导航</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
{% if parent_id > 0 %}
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.nav.create'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>添加导航</legend>
|
||||||
|
</fieldset>
|
||||||
|
{% if parent_id > 0 %}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">父级</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<select name="parent_id" lay-verify="required">
|
||||||
|
<option value="">选择父类</option>
|
||||||
|
{% for nav in top_navs %}
|
||||||
|
<option value="{{ nav.id }}" {% if nav.id == parent_id %}selected{% endif %}>{{ nav.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">父级</label>
|
<label class="layui-form-label">名称</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<select name="parent_id" lay-verify="required">
|
<input class="layui-input" type="text" name="name" lay-verify="required">
|
||||||
<option value="">选择父类</option>
|
|
||||||
{% for nav in top_navs %}
|
|
||||||
<option value="{{ nav.id }}" {% if nav.id == parent_id %}selected{% endif %}>{{ nav.name }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">地址</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">名称</label>
|
<input class="layui-input" type="text" name="url" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="name" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">地址</label>
|
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="url" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">位置</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input type="radio" name="position" value="top" title="顶部" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="position" value="bottom" title="底部">
|
||||||
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">目标</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">位置</label>
|
<input type="radio" name="target" value="_blank" title="新窗口" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="target" value="_self" title="原窗口">
|
||||||
<input type="radio" name="position" value="top" title="顶部" checked="checked">
|
</div>
|
||||||
<input type="radio" name="position" value="bottom" title="底部">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">目标</label>
|
<input type="radio" name="published" value="1" title="是" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="target" value="_blank" title="新窗口" checked="checked">
|
</div>
|
||||||
<input type="radio" name="target" value="_self" title="原窗口">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input type="radio" name="published" value="1" title="是" checked="checked">
|
<input type="hidden" name="parent_id" value="{{ parent_id }}">
|
||||||
<input type="radio" name="published" value="0" title="否">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
<input type="hidden" name="parent_id" value="{{ parent_id }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
@ -1,60 +1,57 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.nav.update','id':nav.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑导航</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.nav.update','id':nav.id}) }}">
|
||||||
<label class="layui-form-label">名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑导航</legend>
|
||||||
<input class="layui-input" type="text" name="name" value="{{ nav.name }}" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" value="{{ nav.name }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">地址</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">地址</label>
|
<input class="layui-input" type="text" name="url" value="{{ nav.url }}" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="url" value="{{ nav.url }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<input class="layui-input" type="text" name="priority" value="{{ nav.priority }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ nav.priority }}" lay-verify="number">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">位置</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">位置</label>
|
<input type="radio" name="position" value="top" title="顶部" {% if nav.position == 'top' %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="position" value="bottom" title="底部" {% if nav.position == 'bottom' %}checked{% endif %}>
|
||||||
<input type="radio" name="position" value="top" title="顶部" {% if nav.position == 'top' %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="position" value="bottom" title="底部" {% if nav.position == 'bottom' %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">目标</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">目标</label>
|
<input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="target" value="_self" title="原窗口" {% if nav.target == '_self' %}checked{% endif %}>
|
||||||
<input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="target" value="_self" title="原窗口" {% if nav.target == '_self' %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if nav.published == 0 %}checked{% endif %}>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if nav.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,21 +1,25 @@
|
|||||||
{%- macro position_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'top' %}
|
|
||||||
<span class="layui-badge layui-bg-green">顶部</span>
|
|
||||||
{% elseif value == 'bottom' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">底部</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
{%- macro target_info(value) %}
|
{% block content %}
|
||||||
{% if value == '_blank' %}
|
|
||||||
<span class="layui-badge layui-bg-green">新窗口</span>
|
|
||||||
{% elseif value == '_self' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">原窗口</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<div class="kg-nav">
|
{%- macro position_info(value) %}
|
||||||
<div class="kg-nav-left">
|
{% if value == 'top' %}
|
||||||
|
<span class="layui-badge layui-bg-green">顶部</span>
|
||||||
|
{% elseif value == 'bottom' %}
|
||||||
|
<span class="layui-badge layui-bg-blue">底部</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro target_info(value) %}
|
||||||
|
{% if value == '_blank' %}
|
||||||
|
<span class="layui-badge layui-bg-green">新窗口</span>
|
||||||
|
{% elseif value == '_self' %}
|
||||||
|
<span class="layui-badge layui-bg-blue">原窗口</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
{% if parent.id > 0 %}
|
{% if parent.id > 0 %}
|
||||||
<a class="kg-back" href="{{ url({'for':'admin.nav.list'}) }}">
|
<a class="kg-back" href="{{ url({'for':'admin.nav.list'}) }}">
|
||||||
@ -25,68 +29,70 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<a><cite>导航管理</cite></a>
|
<a><cite>导航管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.nav.add'},{'parent_id':parent.id}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加导航
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.nav.add'},{'parent_id':parent.id}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加导航
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>层级</th>
|
|
||||||
<th>节点数</th>
|
|
||||||
<th>位置</th>
|
|
||||||
<th>目标</th>
|
|
||||||
<th>排序</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in navs %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
{% if item.position == 'top' and item.level < 2 %}
|
<th>名称</th>
|
||||||
<td><a href="{{ url({'for':'admin.nav.list'},{'parent_id':item.id}) }}">{{ item.name }}</a></td>
|
<th>层级</th>
|
||||||
{% else %}
|
<th>节点数</th>
|
||||||
<td>{{ item.name }}</td>
|
<th>位置</th>
|
||||||
{% endif %}
|
<th>目标</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td>
|
<th>排序</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td>
|
<th>发布</th>
|
||||||
<td>{{ position_info(item.position) }}</td>
|
<th>操作</th>
|
||||||
<td>{{ target_info(item.target) }}</td>
|
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.nav.update','id':item.id}) }}"></td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.nav.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.nav.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
{% if item.deleted == 0 %}
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.nav.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
{% else %}
|
|
||||||
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.nav.restore','id':item.id}) }}">还原</a></li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in navs %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
{% if item.position == 'top' and item.level < 2 %}
|
||||||
|
<td><a href="{{ url({'for':'admin.nav.list'},{'parent_id':item.id}) }}">{{ item.name }}</a></td>
|
||||||
|
{% else %}
|
||||||
|
<td>{{ item.name }}</td>
|
||||||
|
{% endif %}
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td>
|
||||||
|
<td>{{ position_info(item.position) }}</td>
|
||||||
|
<td>{{ target_info(item.target) }}</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.nav.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.nav.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.nav.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
{% if item.deleted == 0 %}
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.nav.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.nav.restore','id':item.id}) }}">还原</a></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,57 +1,63 @@
|
|||||||
{{ partial('order/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<div class="kg-nav">
|
{% block content %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{{ partial('order/macro') }}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>订单管理</cite></a>
|
<a><cite>订单管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.order.search'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-search"></i>搜索订单
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.order.search'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-search"></i>搜索订单
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
<table class="layui-table kg-table">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>商品信息</th>
|
|
||||||
<th>买家信息</th>
|
|
||||||
<th>订单金额</th>
|
|
||||||
<th>订单状态</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>商品信息</th>
|
||||||
<p>商品:{{ item.subject }} {{ item_type(item.item_type) }}</p>
|
<th>买家信息</th>
|
||||||
<p>单号:{{ item.sn }}</p>
|
<th>订单金额</th>
|
||||||
</td>
|
<th>订单状态</th>
|
||||||
<td>
|
<th>创建时间</th>
|
||||||
<p>昵称:{{ item.owner.name }}</p>
|
<th>操作</th>
|
||||||
<p>编号:{{ item.owner.id }}</p>
|
|
||||||
</td>
|
|
||||||
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
|
||||||
<td>{{ order_status(item.status) }}</td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
|
||||||
<td align="center">
|
|
||||||
<a class="layui-btn layui-btn-sm layui-bg-green" href="{{ url({'for':'admin.order.show','id':item.id}) }}">详情</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p>商品:{{ item.subject }} {{ item_type(item.item_type) }}</p>
|
||||||
|
<p>单号:{{ item.sn }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>昵称:{{ item.owner.name }}</p>
|
||||||
|
<p>编号:{{ item.owner.id }}</p>
|
||||||
|
</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
||||||
|
<td>{{ order_status(item.status) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td align="center">
|
||||||
|
<a class="layui-btn layui-btn-sm layui-bg-green" href="{{ url({'for':'admin.order.show','id':item.id}) }}">详情</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,79 +1,81 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.order.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索订单</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.order.list'}) }}">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索订单</legend>
|
||||||
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">订单编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">订单编号</label>
|
<input class="layui-input" type="text" name="sn" placeholder="订单编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="sn" placeholder="订单编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">订单类型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">订单类型</label>
|
<input type="radio" name="item_type" value="course" title="课程">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="item_type" value="package" title="套餐">
|
||||||
<input type="radio" name="item_type" value="course" title="课程">
|
<input type="radio" name="item_type" value="reward" title="赞赏">
|
||||||
<input type="radio" name="item_type" value="package" title="套餐">
|
<input type="radio" name="item_type" value="vip" title="会员">
|
||||||
<input type="radio" name="item_type" value="reward" title="赞赏">
|
<input type="radio" name="item_type" value="test" title="测试">
|
||||||
<input type="radio" name="item_type" value="vip" title="会员">
|
</div>
|
||||||
<input type="radio" name="item_type" value="test" title="测试">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">订单状态</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">订单状态</label>
|
<input type="radio" name="status" value="pending" title="待支付">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="status" value="finished" title="已完成">
|
||||||
<input type="radio" name="status" value="pending" title="待支付">
|
<input type="radio" name="status" value="closed" title="已关闭">
|
||||||
<input type="radio" name="status" value="finished" title="已完成">
|
<input type="radio" name="status" value="refunded" title="已退款">
|
||||||
<input type="radio" name="status" value="closed" title="已关闭">
|
</div>
|
||||||
<input type="radio" name="status" value="refunded" title="已退款">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">创建时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-inline">
|
||||||
<label class="layui-form-label">创建时间</label>
|
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
||||||
<div class="layui-input-inline">
|
</div>
|
||||||
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
<div class="layui-form-mid"> -</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid"> - </div>
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-inline">
|
<label class="layui-form-label"></label>
|
||||||
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
{% block inline_js %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
layui.use(['form', 'laydate'], function () {
|
layui.use(['form', 'laydate'], function () {
|
||||||
|
|
||||||
var laydate = layui.laydate;
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
lay('.time-range').each(function () {
|
lay('.time-range').each(function () {
|
||||||
laydate.render({
|
laydate.render({
|
||||||
elem: this,
|
elem: this,
|
||||||
type: 'datetime',
|
type: 'datetime',
|
||||||
trigger: 'click'
|
trigger: 'click'
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,73 +1,82 @@
|
|||||||
{{ partial('order/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
{{ partial('trade/macro') }}
|
|
||||||
{{ partial('refund/macro') }}
|
|
||||||
|
|
||||||
{{ partial('order/order_info') }}
|
{% block content %}
|
||||||
|
|
||||||
<br>
|
{{ partial('order/macro') }}
|
||||||
|
{{ partial('trade/macro') }}
|
||||||
|
{{ partial('refund/macro') }}
|
||||||
|
{{ partial('order/order_info') }}
|
||||||
|
|
||||||
<div class="kg-text-center">
|
|
||||||
<button class="kg-back layui-btn layui-bg-gray">返回上页</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if refunds.count() > 0 %}
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>退款信息</legend>
|
|
||||||
</fieldset>
|
|
||||||
<table class="kg-table layui-table">
|
|
||||||
<tr>
|
|
||||||
<th>退款序号</th>
|
|
||||||
<th>退款金额</th>
|
|
||||||
<th>退款原因</th>
|
|
||||||
<th>退款状态</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
{% for item in refunds %}
|
|
||||||
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':item.id}) %}
|
|
||||||
{% set refund_show_url = url({'for':'admin.refund.show','id':item.id}) %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ item.sn }}</td>
|
|
||||||
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
|
||||||
<td><a href="javascript:" title="{{ item.apply_note }}">{{ substr(item.apply_note,0,15) }}</td>
|
|
||||||
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ refund_sh_url }}">{{ refund_status(item.status) }}</a></td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
|
||||||
<td><a class="layui-btn layui-btn-sm" href="{{ refund_show_url }}">详情</a></td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
<br>
|
<br>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if trades.count() > 0 %}
|
<div class="kg-text-center">
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
|
||||||
<legend>交易信息</legend>
|
</div>
|
||||||
</fieldset>
|
|
||||||
<table class="kg-table layui-table">
|
{% if refunds.count() > 0 %}
|
||||||
<tr>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<th>交易序号</th>
|
<legend>退款信息</legend>
|
||||||
<th>交易金额</th>
|
</fieldset>
|
||||||
<th>交易平台</th>
|
<table class="layui-table kg-table">
|
||||||
<th>交易状态</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
{% for item in trades %}
|
|
||||||
{% set trade_sh_url = url({'for':'admin.trade.status_history','id':item.id}) %}
|
|
||||||
{% set trade_show_url = url({'for':'admin.trade.show','id':item.id}) %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.sn }}</td>
|
<th>退款序号</th>
|
||||||
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
<th>退款金额</th>
|
||||||
<td>{{ channel_type(item.channel) }}</td>
|
<th>退款原因</th>
|
||||||
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ trade_sh_url }}">{{ trade_status(item.status) }}</a></td>
|
<th>退款状态</th>
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
<th>创建时间</th>
|
||||||
<td><a class="layui-btn layui-btn-sm" href="{{ trade_show_url }}">详情</a></td>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% for item in refunds %}
|
||||||
</table>
|
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':item.id}) %}
|
||||||
<br>
|
{% set refund_show_url = url({'for':'admin.refund.show','id':item.id}) %}
|
||||||
{% endif %}
|
<tr>
|
||||||
|
<td>{{ item.sn }}</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
||||||
|
<td><a href="javascript:" title="{{ item.apply_note }}">{{ substr(item.apply_note,0,15) }}</td>
|
||||||
|
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ refund_sh_url }}">{{ refund_status(item.status) }}</a></td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td><a class="layui-btn layui-btn-sm" href="{{ refund_show_url }}">详情</a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ partial('order/user_info') }}
|
{% if trades.count() > 0 %}
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>交易信息</legend>
|
||||||
|
</fieldset>
|
||||||
|
<table class="layui-table kg-table">
|
||||||
|
<tr>
|
||||||
|
<th>交易序号</th>
|
||||||
|
<th>交易金额</th>
|
||||||
|
<th>交易平台</th>
|
||||||
|
<th>交易状态</th>
|
||||||
|
<th>创建时间</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
{% for item in trades %}
|
||||||
|
{% set trade_sh_url = url({'for':'admin.trade.status_history','id':item.id}) %}
|
||||||
|
{% set trade_show_url = url({'for':'admin.trade.show','id':item.id}) %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.sn }}</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
||||||
|
<td>{{ channel_type(item.channel) }}</td>
|
||||||
|
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ trade_sh_url }}">{{ trade_status(item.status) }}</a></td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td><a class="layui-btn layui-btn-sm" href="{{ trade_show_url }}">详情</a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ js_include('admin/js/status-history.js') }}
|
{{ partial('order/user_info') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('admin/js/status-history.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,14 +1,20 @@
|
|||||||
{{ partial('order/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
{% block content %}
|
||||||
<tr>
|
|
||||||
<td>状态</td>
|
{{ partial('order/macro') }}
|
||||||
<td>时间</td>
|
|
||||||
</tr>
|
<table class="layui-table kg-table">
|
||||||
{% for item in status_history %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ order_status(item.status) }}</td>
|
<td>状态</td>
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
<td>时间</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% for item in status_history %}
|
||||||
</table>
|
<tr>
|
||||||
|
<td>{{ order_status(item.status) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,29 +1,30 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加套餐</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加套餐</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="summary"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,91 +1,97 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.update','id':package.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑套餐</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.update','id':package.id}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑套餐</legend>
|
||||||
<input class="layui-input" type="text" name="title" value="{{ package.title }}" lay-verify="required">
|
</fieldset>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
</div>
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
<div class="layui-form-item">
|
<input class="layui-input" type="text" name="title" value="{{ package.title }}" lay-verify="required">
|
||||||
<label class="layui-form-label">简介</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<textarea class="layui-textarea" name="summary">{{ package.summary }}</textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">相关课程</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<div id="xm-course-ids"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label">市场价格</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="market_price" value="{{ package.market_price }}" lay-filter="number">
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-mid layui-word-aux">元</div>
|
|
||||||
<div class="layui-form-mid">
|
|
||||||
<a class="kg-guiding" href="javascript:" package-id="{{ package.id }}">(价格参考)</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<div class="layui-inline">
|
<textarea class="layui-textarea" name="summary">{{ package.summary }}</textarea>
|
||||||
<label class="layui-form-label">会员价格</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="vip_price" value="{{ package.vip_price }}" lay-filter="number">
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-mid layui-word-aux">元</div>
|
|
||||||
<div class="layui-form-mid">
|
|
||||||
<a class="kg-guiding" href="javascript:" package-id="{{ package.id }}">(价格参考)</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">相关课程</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<div id="xm-course-ids"></div>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">市场价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="market_price" value="{{ package.market_price }}" lay-verify="number">
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid layui-word-aux">元</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<a class="kg-guiding" href="javascript:" package-id="{{ package.id }}">(价格参考)</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">会员价格</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="vip_price" value="{{ package.vip_price }}" lay-verify="number">
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid layui-word-aux">元</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
<a class="kg-guiding" href="javascript:" package-id="{{ package.id }}">(价格参考)</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{% block include_js %}
|
||||||
{{ js_include('admin/js/xm-course.js') }}
|
|
||||||
|
|
||||||
<script>
|
{{ js_include('lib/xm-select.js') }}
|
||||||
|
{{ js_include('admin/js/xm-course.js') }}
|
||||||
|
|
||||||
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/paid');
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
{% block inline_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
<script>
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('.kg-guiding').on('click', function () {
|
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/paid');
|
||||||
var xmCourseIds = $('input[name=xm_course_ids]').val();
|
|
||||||
var url = '/admin/package/guiding?xm_course_ids='+xmCourseIds;
|
layui.use(['jquery', 'layer'], function () {
|
||||||
layer.open({
|
|
||||||
id: 'xm-course',
|
var $ = layui.jquery;
|
||||||
type: 2,
|
var layer = layui.layer;
|
||||||
title: '价格参考',
|
|
||||||
resize: false,
|
$('.kg-guiding').on('click', function () {
|
||||||
area: ['720px', '400px'],
|
var xmCourseIds = $('input[name=xm_course_ids]').val();
|
||||||
content: [url]
|
var url = '/admin/package/guiding?xm_course_ids=' + xmCourseIds;
|
||||||
|
layer.open({
|
||||||
|
id: 'xm-course',
|
||||||
|
type: 2,
|
||||||
|
title: '价格参考',
|
||||||
|
resize: false,
|
||||||
|
area: ['720px', '400px'],
|
||||||
|
content: [url]
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,40 +1,47 @@
|
|||||||
{{ partial('course/expiry_macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
{% block content %}
|
||||||
<colgroup>
|
|
||||||
<col>
|
{{ partial('course/expiry_macro') }}
|
||||||
<col>
|
|
||||||
<col>
|
<table class="layui-table kg-table">
|
||||||
<col>
|
<colgroup>
|
||||||
</colgroup>
|
<col>
|
||||||
<thead>
|
<col>
|
||||||
<tr>
|
<col>
|
||||||
<th>标题</th>
|
<col>
|
||||||
<th>课时数</th>
|
</colgroup>
|
||||||
<th>有效期</th>
|
<thead>
|
||||||
<th>价格</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in courses %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.title }}</td>
|
<th>标题</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.lesson_count }}</span></td>
|
<th>课时数</th>
|
||||||
<td>{{ study_expiry_info(item.study_expiry) }}</td>
|
<th>有效期</th>
|
||||||
<td>
|
<th>价格</th>
|
||||||
<p>市场价:{{ '¥%0.2f'|format(item.market_price) }}</p>
|
|
||||||
<p>会员价:{{ '¥%0.2f'|format(item.vip_price) }}</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in courses %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.title }}</td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.lesson_count }}</span></td>
|
||||||
|
<td>{{ study_expiry_info(item.study_expiry) }}</td>
|
||||||
|
<td>
|
||||||
|
<p>市场价:{{ '¥%0.2f'|format(item.market_price) }}</p>
|
||||||
|
<p>会员价:{{ '¥%0.2f'|format(item.vip_price) }}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<div class="kg-price-guiding">
|
<div class="kg-price-guiding">
|
||||||
建议市场价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.market_price }}</span>
|
建议市场价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.market_price }}</span>
|
||||||
|
|
||||||
建议会员价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.vip_price }}</span>
|
建议会员价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.vip_price }}</span>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,58 +1,64 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
<span c.lass="layui-breadcrumb">
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>套餐管理</cite></a>
|
<a><cite>套餐管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.package.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加套餐
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.package.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加套餐
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>标题</th>
|
|
||||||
<th>课程数</th>
|
|
||||||
<th>市场价</th>
|
|
||||||
<th>会员价</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td><a href="{{ url({'for':'admin.package.edit','id':item.id}) }}">{{ item.title }}</a></td>
|
<th>标题</th>
|
||||||
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
|
<th>课程数</th>
|
||||||
<td>{{ '¥%0.2f'|format(item.market_price) }}</td>
|
<th>市场价</th>
|
||||||
<td>{{ '¥%0.2f'|format(item.vip_price) }}</td>
|
<th>会员价</th>
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.package.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
<th>发布</th>
|
||||||
<td align="center">
|
<th>操作</th>
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.package.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.package.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td><a href="{{ url({'for':'admin.package.edit','id':item.id}) }}">{{ item.title }}</a></td>
|
||||||
|
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.market_price) }}</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.vip_price) }}</td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.package.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.package.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.package.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,45 +1,44 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.package.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索套餐</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.package.list'}) }}">
|
||||||
<label class="layui-form-label">编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索套餐</legend>
|
||||||
<input class="layui-input" type="text" name="id" placeholder="编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="id" placeholder="编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">标题</label>
|
<input class="layui-input" type="text" name="title" placeholder="标题模糊匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="title" placeholder="标题模糊匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">删除</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">删除</label>
|
<input type="radio" name="deleted" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="deleted" value="0" title="否">
|
||||||
<input type="radio" name="deleted" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="deleted" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,39 +1,37 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加单页</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加单页</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">内容</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">内容</label>
|
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是" checked="checked">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
{% endblock %}
|
@ -1,40 +1,37 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.update','id':page.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑单页</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.update','id':page.id}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑单页</legend>
|
||||||
<input type="text" name="title" value="{{ page.title }}" class="layui-input" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="text" name="title" value="{{ page.title }}" class="layui-input" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">内容</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">内容</label>
|
<textarea name="content" class="layui-hide" id="kg-layedit">{{ page.content }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="content" class="layui-hide" id="kg-layedit">{{ page.content }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if page.published == 0 %}checked{% endif %}>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if page.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
{{ partial('partials/layedit') }}
|
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,56 +1,62 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>单页管理</cite></a>
|
<a><cite>单页管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.page.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加单页
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.page.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加单页
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>标题</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th>更新时间</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>{{ item.title }}</td>
|
<th>标题</th>
|
||||||
<td>{{ date('Y-m-d H:i',item.create_time) }}</td>
|
<th>创建时间</th>
|
||||||
<td>{{ date('Y-m-d H:i',item.update_time) }}</td>
|
<th>更新时间</th>
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.page.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}>
|
<th>发布</th>
|
||||||
</td>
|
<th>操作</th>
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.page.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.page.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>{{ item.title }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i',item.create_time) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i',item.update_time) }}</td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.page.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.page.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.page.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,49 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer', 'upload'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var upload = layui.upload;
|
|
||||||
|
|
||||||
upload.render({
|
|
||||||
elem: '#change-avatar',
|
|
||||||
url: '/admin/upload/img/avatar',
|
|
||||||
accept: 'images',
|
|
||||||
acceptMime: 'image/*',
|
|
||||||
size: 512,
|
|
||||||
auto: false,
|
|
||||||
before: function () {
|
|
||||||
layer.load();
|
|
||||||
},
|
|
||||||
choose: function (obj) {
|
|
||||||
var flag = true;
|
|
||||||
obj.preview(function (index, file, result) {
|
|
||||||
console.log(file);
|
|
||||||
var img = new Image();
|
|
||||||
img.src = result;
|
|
||||||
img.onload = function () {
|
|
||||||
if (img.width < 1000 && img.height < 1000) {
|
|
||||||
obj.upload(index, file);
|
|
||||||
} else {
|
|
||||||
flag = false;
|
|
||||||
layer.msg("图片尺寸必须小于 1000 * 1000");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return flag;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
done: function (res, index, upload) {
|
|
||||||
$('#img-avatar').attr('src', res.data.src);
|
|
||||||
$('input[name=avatar]').val(res.data.src);
|
|
||||||
layer.closeAll('loading');
|
|
||||||
},
|
|
||||||
error: function (index, upload) {
|
|
||||||
layer.msg('上传文件失败', {icon: 2});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,16 +0,0 @@
|
|||||||
{{ js_include('lib/clipboard.min.js') }}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['layer'], function () {
|
|
||||||
|
|
||||||
var layer = layui.layer;
|
|
||||||
var clipboard = new ClipboardJS('.kg-copy');
|
|
||||||
|
|
||||||
clipboard.on('success', function (e) {
|
|
||||||
layer.msg('内容已经复制到剪贴板');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,29 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer', 'upload'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var upload = layui.upload;
|
|
||||||
|
|
||||||
upload.render({
|
|
||||||
elem: '#change-cover',
|
|
||||||
url: '/admin/upload/img/cover',
|
|
||||||
accept: 'images',
|
|
||||||
acceptMime: 'image/*',
|
|
||||||
before: function () {
|
|
||||||
layer.load();
|
|
||||||
},
|
|
||||||
done: function (res, index, upload) {
|
|
||||||
$('#img-cover').attr('src', res.data.src);
|
|
||||||
$('input[name=cover]').val(res.data.src);
|
|
||||||
layer.closeAll('loading');
|
|
||||||
},
|
|
||||||
error: function (index, upload) {
|
|
||||||
layer.msg('上传文件失败', {icon: 2});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,22 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('.kg-ip2region').on('click', function () {
|
|
||||||
var ip = $(this).data('ip');
|
|
||||||
var url = '/admin/ip2region?ip=' + ip;
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '地理位置',
|
|
||||||
resize: false,
|
|
||||||
area: ['640px', '180px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,19 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layedit'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layedit = layui.layedit;
|
|
||||||
|
|
||||||
layedit.set({
|
|
||||||
uploadImage: {url: '/admin/upload/img/content'}
|
|
||||||
});
|
|
||||||
|
|
||||||
var index = layedit.build('kg-layedit');
|
|
||||||
|
|
||||||
$('.kg-submit').on('click', function () {
|
|
||||||
layedit.sync(index);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,24 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('.kg-preview').on('click', function () {
|
|
||||||
var chapterId = $(this).attr('chapter-id');
|
|
||||||
var playUrl = $(this).attr('play-url');
|
|
||||||
var frameUrl = '/admin/vod/player?chapter_id=' + chapterId + '&play_url=' + playUrl;
|
|
||||||
layer.open({
|
|
||||||
id: 'player',
|
|
||||||
type: 2,
|
|
||||||
title: '媒体播放器',
|
|
||||||
resize: false,
|
|
||||||
area: ['720px', '445px'],
|
|
||||||
content: [frameUrl, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,64 +0,0 @@
|
|||||||
{{ js_include('lib/vod-js-sdk-v6.min.js') }}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'element'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var element = layui.element;
|
|
||||||
|
|
||||||
var getSignature = function () {
|
|
||||||
var result = '';
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: '/admin/vod/upload/sign',
|
|
||||||
async: false,
|
|
||||||
success: function (res) {
|
|
||||||
result = res.sign;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
$('#upload-btn').on('click', function () {
|
|
||||||
$('input[name=file]').trigger('click');
|
|
||||||
});
|
|
||||||
|
|
||||||
$('input[name=file]').on('change', function (e) {
|
|
||||||
|
|
||||||
var tcVod = new TcVod.default({
|
|
||||||
getSignature: getSignature
|
|
||||||
});
|
|
||||||
|
|
||||||
var uploader = tcVod.upload({
|
|
||||||
mediaFile: this.files[0]
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#upload-block').addClass('layui-hide');
|
|
||||||
$('#upload-progress-block').removeClass('layui-hide');
|
|
||||||
|
|
||||||
uploader.on('media_progress', function (info) {
|
|
||||||
if (!isNaN(info.percent)) {
|
|
||||||
var percent = Math.ceil(100 * info.percent);
|
|
||||||
element.progress('upload-progress', percent + '%');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
uploader.on('media_upload', function (info) {
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
uploader.done().then(function (result) {
|
|
||||||
$('input[name=file_id]').val(result.fileId);
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: $('#vod-form').attr('action'),
|
|
||||||
data: {file_id: result.fileId}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,14 +1,20 @@
|
|||||||
<table class="kg-table layui-table">
|
{% extends 'templates/main.volt' %}
|
||||||
<tr>
|
|
||||||
<th>国家</th>
|
{% block content %}
|
||||||
<th>省份</th>
|
|
||||||
<th>城市</th>
|
<table class="kg-table layui-table">
|
||||||
<th>运营商</th>
|
<tr>
|
||||||
</tr>
|
<th>国家</th>
|
||||||
<tr>
|
<th>省份</th>
|
||||||
<td>{{ region.country }}</td>
|
<th>城市</th>
|
||||||
<td>{{ region.province }}</td>
|
<th>运营商</th>
|
||||||
<td>{{ region.city }}</td>
|
</tr>
|
||||||
<td>{{ region.isp }}</td>
|
<tr>
|
||||||
</tr>
|
<td>{{ region.country }}</td>
|
||||||
</table>
|
<td>{{ region.province }}</td>
|
||||||
|
<td>{{ region.city }}</td>
|
||||||
|
<td>{{ region.isp }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,64 +1,69 @@
|
|||||||
<form class="kg-login-form layui-form" method="POST" action="{{ url({'for':'admin.login'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% block content %}
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="kg-login-form layui-form" method="POST" action="{{ url({'for':'admin.login'}) }}">
|
||||||
<div class="layui-input-block">
|
<div class="layui-form-item">
|
||||||
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if captcha.enabled == 1 %}
|
|
||||||
<div id="captcha-block" class="layui-form-item">
|
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button id="captcha-btn" class="layui-btn layui-btn-fluid" type="button" data-app-id="{{ captcha.app_id }}">点击完成验证</button>
|
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
<div class="layui-form-item">
|
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
{% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
|
|
||||||
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">立即登录</button>
|
|
||||||
<input type="hidden" name="ticket">
|
|
||||||
<input type="hidden" name="rand">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% if captcha.enabled == 1 %}
|
||||||
|
<div id="captcha-block" class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button id="captcha-btn" class="layui-btn layui-btn-fluid" type="button" data-app-id="{{ captcha.app_id }}">点击完成验证</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
{% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
|
||||||
|
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">立即登录</button>
|
||||||
|
<input type="hidden" name="ticket">
|
||||||
|
<input type="hidden" name="rand">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
if (window !== top) {
|
|
||||||
top.location.href = window.location.href;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{% if captcha.enabled == 1 %}
|
|
||||||
|
|
||||||
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
if (window !== top) {
|
||||||
layui.use(['jquery', 'form'], function () {
|
top.location.href = window.location.href;
|
||||||
var $ = layui.jquery;
|
}
|
||||||
var captcha = new TencentCaptcha(
|
|
||||||
$('#captcha-btn')[0],
|
|
||||||
$('#captcha-btn').data('app-id'),
|
|
||||||
function (res) {
|
|
||||||
if (res.ret === 0) {
|
|
||||||
$('input[name=ticket]').val(res.ticket);
|
|
||||||
$('input[name=rand]').val(res.randstr);
|
|
||||||
$('#captcha-block').hide();
|
|
||||||
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endif %}
|
{% if captcha.enabled == 1 %}
|
||||||
|
|
||||||
|
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'form'], function () {
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var captcha = new TencentCaptcha(
|
||||||
|
$('#captcha-btn')[0],
|
||||||
|
$('#captcha-btn').data('app-id'),
|
||||||
|
function (res) {
|
||||||
|
if (res.ret === 0) {
|
||||||
|
$('input[name=ticket]').val(res.ticket);
|
||||||
|
$('input[name=rand]').val(res.randstr);
|
||||||
|
$('#captcha-block').hide();
|
||||||
|
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,57 +1,63 @@
|
|||||||
{{ partial('refund/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<div class="kg-nav">
|
{% block content %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{{ partial('refund/macro') }}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>退款管理</cite></a>
|
<a><cite>退款管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.refund.search'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-search"></i>搜索退款
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.refund.search'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-search"></i>搜索退款
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
<table class="layui-table kg-table">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>商品信息</th>
|
|
||||||
<th>买家信息</th>
|
|
||||||
<th>退款金额</th>
|
|
||||||
<th>退款状态</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>商品信息</th>
|
||||||
<p>商品:{{ item.order.subject }}</p>
|
<th>买家信息</th>
|
||||||
<p>单号:{{ item.order.sn }}</p>
|
<th>退款金额</th>
|
||||||
</td>
|
<th>退款状态</th>
|
||||||
<td>
|
<th>创建时间</th>
|
||||||
<p>昵称:{{ item.owner.name }}</p>
|
<th>操作</th>
|
||||||
<p>编号:{{ item.owner.id }}</p>
|
|
||||||
</td>
|
|
||||||
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
|
||||||
<td>{{ refund_status(item.status) }}</td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
|
||||||
<td align="center">
|
|
||||||
<a class="layui-btn layui-btn-sm layui-bg-green" href="{{ url({'for':'admin.refund.show','id':item.id}) }}">详情</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p>商品:{{ item.order.subject }}</p>
|
||||||
|
<p>单号:{{ item.order.sn }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>昵称:{{ item.owner.name }}</p>
|
||||||
|
<p>编号:{{ item.owner.id }}</p>
|
||||||
|
</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(item.amount) }}</td>
|
||||||
|
<td>{{ refund_status(item.status) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td align="center">
|
||||||
|
<a class="layui-btn layui-btn-sm layui-bg-green" href="{{ url({'for':'admin.refund.show','id':item.id}) }}">详情</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,69 +1,72 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.refund.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索退款</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.refund.list'}) }}">
|
||||||
<label class="layui-form-label">订单编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索退款</legend>
|
||||||
<input class="layui-input" type="text" name="order_id" placeholder="订单编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">订单编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="order_id" placeholder="订单编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">退款状态</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">退款状态</label>
|
<input type="radio" name="status" value="pending" title="待处理">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="status" value="canceled" title="已取消">
|
||||||
<input type="radio" name="status" value="pending" title="待处理">
|
<input type="radio" name="status" value="approved" title="已审核">
|
||||||
<input type="radio" name="status" value="canceled" title="已取消">
|
<input type="radio" name="status" value="refused" title="已拒绝">
|
||||||
<input type="radio" name="status" value="approved" title="已审核">
|
<input type="radio" name="status" value="finished" title="已完成">
|
||||||
<input type="radio" name="status" value="refused" title="已拒绝">
|
</div>
|
||||||
<input type="radio" name="status" value="finished" title="已完成">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">创建时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-inline">
|
||||||
<label class="layui-form-label">创建时间</label>
|
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
||||||
<div class="layui-input-inline">
|
</div>
|
||||||
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
|
<div class="layui-form-mid"> -</div>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid"> - </div>
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-inline">
|
<label class="layui-form-label"></label>
|
||||||
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
{% block inline_js %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
layui.use(['laydate'], function () {
|
layui.use(['laydate'], function () {
|
||||||
|
|
||||||
var laydate = layui.laydate;
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
lay('.time-range').each(function () {
|
lay('.time-range').each(function () {
|
||||||
laydate.render({
|
laydate.render({
|
||||||
elem: this,
|
elem: this,
|
||||||
type: 'datetime',
|
type: 'datetime',
|
||||||
trigger: 'click'
|
trigger: 'click'
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,82 +1,92 @@
|
|||||||
{{ partial('order/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
{{ partial('trade/macro') }}
|
|
||||||
{{ partial('refund/macro') }}
|
|
||||||
|
|
||||||
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':refund.id}) %}
|
{% block content %}
|
||||||
{% set refund_review_url = url({'for':'admin.refund.review','id':refund.id}) %}
|
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{{ partial('order/macro') }}
|
||||||
<legend>退款信息</legend>
|
{{ partial('trade/macro') }}
|
||||||
</fieldset>
|
{{ partial('refund/macro') }}
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':refund.id}) %}
|
||||||
<tr>
|
{% set refund_review_url = url({'for':'admin.refund.review','id':refund.id}) %}
|
||||||
<th>退款序号</th>
|
|
||||||
<th>退款金额</th>
|
|
||||||
<th>退款备注</th>
|
|
||||||
<th>退款状态</th>
|
|
||||||
<th>创建时间</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>{{ refund.sn }}</td>
|
|
||||||
<td>{{ '¥%0.2f'|format(refund.amount) }}</td>
|
|
||||||
<td>
|
|
||||||
{% if refund.apply_note %}
|
|
||||||
<p class="layui-elip" title="{{ refund.apply_note }}">退款原因:{{ refund.apply_note }}</p>
|
|
||||||
{% endif %}
|
|
||||||
{% if refund.review_note %}
|
|
||||||
<p class="layui-elip" title="{{ refund.review_note }}">审核意见:{{ refund.review_note }}</p>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ refund_sh_url }}">{{ refund_status(refund.status) }}</a></td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',refund.create_time) }}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>退款信息</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
{% if refund.status == 'pending' %}
|
<table class="layui-table kg-table">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ refund_review_url }}">
|
<tr>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<th>退款序号</th>
|
||||||
<legend>审核退款</legend>
|
<th>退款金额</th>
|
||||||
</fieldset>
|
<th>退款备注</th>
|
||||||
<div class="layui-form-item">
|
<th>退款状态</th>
|
||||||
<label class="layui-form-label">审核结果</label>
|
<th>创建时间</th>
|
||||||
<div class="layui-input-block">
|
</tr>
|
||||||
<input type="radio" name="review_status" value="approved" title="同意">
|
<tr>
|
||||||
<input type="radio" name="review_status" value="refused" title="拒绝">
|
<td>{{ refund.sn }}</td>
|
||||||
|
<td>{{ '¥%0.2f'|format(refund.amount) }}</td>
|
||||||
|
<td>
|
||||||
|
{% if refund.apply_note %}
|
||||||
|
<p class="layui-elip" title="{{ refund.apply_note }}">退款原因:{{ refund.apply_note }}</p>
|
||||||
|
{% endif %}
|
||||||
|
{% if refund.review_note %}
|
||||||
|
<p class="layui-elip" title="{{ refund.review_note }}">审核意见:{{ refund.review_note }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td><a class="kg-status-history" href="javascript:" title="查看历史状态" data-url="{{ refund_sh_url }}">{{ refund_status(refund.status) }}</a></td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',refund.create_time) }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
{% if refund.status == 'pending' %}
|
||||||
|
<form class="layui-form kg-form" method="POST" action="{{ refund_review_url }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>审核退款</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">审核结果</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="review_status" value="approved" title="同意">
|
||||||
|
<input type="radio" name="review_status" value="refused" title="拒绝">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
<div class="layui-form-item">
|
<label class="layui-form-label">审核说明</label>
|
||||||
<label class="layui-form-label">审核说明</label>
|
<div class="layui-input-block">
|
||||||
<div class="layui-input-block">
|
<input class="layui-input" type="text" name="review_note" lay-verify="required">
|
||||||
<input class="layui-input" type="text" name="review_note" lay-verify="required">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
<div class="layui-form-item">
|
<label class="layui-form-label"></label>
|
||||||
<label class="layui-form-label"></label>
|
<div class="layui-input-block">
|
||||||
<div class="layui-input-block">
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
|
{% else %}
|
||||||
|
<div class="kg-text-center">
|
||||||
|
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
{% endif %}
|
||||||
{% else %}
|
|
||||||
<div class="kg-text-center">
|
|
||||||
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{{ partial('trade/trade_info') }}
|
{{ partial('trade/trade_info') }}
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{{ partial('order/order_info') }}
|
{{ partial('order/order_info') }}
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{{ partial('order/user_info') }}
|
{{ partial('order/user_info') }}
|
||||||
|
|
||||||
{{ js_include('admin/js/status-history.js') }}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('admin/js/status-history.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,14 +1,20 @@
|
|||||||
{{ partial('refund/macro') }}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
{% block content %}
|
||||||
<tr>
|
|
||||||
<td>状态</td>
|
{{ partial('refund/macro') }}
|
||||||
<td>时间</td>
|
|
||||||
</tr>
|
<table class="kg-table layui-table">
|
||||||
{% for item in status_history %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ refund_status(item.status) }}</td>
|
<td>状态</td>
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
<td>时间</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% for item in status_history %}
|
||||||
</table>
|
<tr>
|
||||||
|
<td>{{ refund_status(item.status) }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,57 +1,61 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.review.update','id':review.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑评价</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.review.update','id':review.id}) }}">
|
||||||
<label class="layui-form-label">评分</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑评价</legend>
|
||||||
<div id="rating">{{ review.rating }}</div>
|
</fieldset>
|
||||||
<input type="hidden" name="rating" value="{{ review.rating }}"/>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">评分</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div id="rating">{{ review.rating }}</div>
|
||||||
|
<input type="hidden" name="rating" value="{{ review.rating }}"/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">评价</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">评价</label>
|
<textarea name="content" class="layui-textarea" lay-verify="required">{{ review.content }}</textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea name="content" class="layui-textarea" lay-verify="required">{{ review.content }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是" {% if review.published == 1 %}checked="checked"{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if review.published == 0 %}checked="checked"{% endif %}>
|
||||||
<input type="radio" name="published" value="1" title="是" {% if review.published == 1 %}checked="checked"{% endif %}>
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否" {% if review.published == 0 %}checked="checked"{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['jquery', 'rate'], function () {
|
<script>
|
||||||
|
|
||||||
var $ = layui.jquery;
|
layui.use(['jquery', 'rate'], function () {
|
||||||
var rate = layui.rate;
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var rate = layui.rate;
|
||||||
|
|
||||||
|
rate.render({
|
||||||
|
elem: '#rating',
|
||||||
|
value: $('#rating').text(),
|
||||||
|
choose: function (value) {
|
||||||
|
$('input[name=rating]').val(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
rate.render({
|
|
||||||
elem: '#rating',
|
|
||||||
value: $('#rating').text(),
|
|
||||||
choose: function (value) {
|
|
||||||
$('input[name=rating]').val(value);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,5 +1,9 @@
|
|||||||
<div class="kg-nav">
|
{% extends 'templates/main.volt' %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
||||||
{% if course %}
|
{% if course %}
|
||||||
@ -7,61 +11,63 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<a><cite>评价管理</cite></a>
|
<a><cite>评价管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.review.search'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-search"></i>搜索评价
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.review.search'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-search"></i>搜索评价
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
<col width="10%">
|
<col width="10%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>內容</th>
|
|
||||||
<th>用户</th>
|
|
||||||
<th>时间</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>內容</th>
|
||||||
<p>评分:<span class="kg-rating">{{ item.rating }}</span></p>
|
<th>用户</th>
|
||||||
<p>课程:<a href="{{ url({'for':'admin.consult.list'},{'course_id':item.course.id}) }}">{{ item.course.title }}</a></p>
|
<th>时间</th>
|
||||||
<p>评价:<a href="javascript:" title="{{ item.content }}">{{ substr(item.content,0,30) }}</a></p>
|
<th>发布</th>
|
||||||
</td>
|
<th>操作</th>
|
||||||
<td>
|
|
||||||
<p>昵称:{{ item.owner.name }}</p>
|
|
||||||
<p>编号:{{ item.owner.id }}</p>
|
|
||||||
</td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
|
||||||
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.review.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.review.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
{% if item.deleted == 0 %}
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.review.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
{% else %}
|
|
||||||
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.review.restore','id':item.id}) }}">还原</a></li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p>评分:<span class="kg-rating">{{ item.rating }}</span></p>
|
||||||
|
<p>课程:<a href="{{ url({'for':'admin.consult.list'},{'course_id':item.course.id}) }}">{{ item.course.title }}</a></p>
|
||||||
|
<p>评价:<a href="javascript:" title="{{ item.content }}">{{ substr(item.content,0,30) }}</a></p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>昵称:{{ item.owner.name }}</p>
|
||||||
|
<p>编号:{{ item.owner.id }}</p>
|
||||||
|
</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ url({'for':'admin.review.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.review.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
{% if item.deleted == 0 %}
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.review.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a href="javascript:" class="kg-restore" data-url="{{ url({'for':'admin.review.restore','id':item.id}) }}">还原</a></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,52 +1,50 @@
|
|||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.review.list'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>搜索评价</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.review.list'}) }}">
|
||||||
<label class="layui-form-label">评价编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索评价</legend>
|
||||||
<input class="layui-input" type="text" name="id" placeholder="评价编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">评价编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="id" placeholder="评价编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">课程编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">课程编号</label>
|
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="owner_id" placeholder="用户编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">发布</label>
|
<input type="radio" name="published" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否">
|
||||||
<input type="radio" name="published" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="published" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">删除</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">删除</label>
|
<input type="radio" name="deleted" value="1" title="是">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="deleted" value="0" title="否">
|
||||||
<input type="radio" name="deleted" value="1" title="是">
|
</div>
|
||||||
<input type="radio" name="deleted" value="0" title="否">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,29 +1,30 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加角色</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.create'}) }}">
|
||||||
<label class="layui-form-label">名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加角色</legend>
|
||||||
<input class="layui-input" type="text" name="name" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">描述</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">描述</label>
|
<input class="layui-input" type="text" name="summary" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="summary" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,52 +1,52 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.update','id':role.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑角色</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.update','id':role.id}) }}">
|
||||||
<label class="layui-form-label">名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑角色</legend>
|
||||||
<input class="layui-input" type="text" name="name" value="{{ role.name }}" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="name" value="{{ role.name }}" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">描述</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">描述</label>
|
<input class="layui-input" type="text" name="summary" value="{{ role.summary }}" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="summary" value="{{ role.summary }}" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">权限</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">权限</label>
|
{% for key,level in auth_nodes %}
|
||||||
<div class="layui-input-block">
|
<table class="layui-table">
|
||||||
{% for key,level in auth_nodes %}
|
{% for key2,level2 in level.children %}
|
||||||
<table class="layui-table">
|
<tr>
|
||||||
{% for key2,level2 in level.children %}
|
{% if key2 == 0 %}
|
||||||
<tr>
|
<td width="15%" rowspan="{{ level.children|length }}">{{ level.title }}</td>
|
||||||
{% if key2 == 0 %}
|
{% endif %}
|
||||||
<td width="15%" rowspan="{{ level.children|length }}">{{ level.title }}</td>
|
<td width="15%">{{ level2.title }}</td>
|
||||||
{% endif %}
|
<td>
|
||||||
<td width="15%">{{ level2.title }}</td>
|
{% for level3 in level2.children %}
|
||||||
<td>
|
<input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked{% endif %}>
|
||||||
{% for level3 in level2.children %}
|
{% endfor %}
|
||||||
<input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked{% endif %}>
|
</td>
|
||||||
{% endfor %}
|
</tr>
|
||||||
</td>
|
{% endfor %}
|
||||||
</tr>
|
</table>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</div>
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,62 +1,68 @@
|
|||||||
{%- macro type_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'system' %}
|
|
||||||
<span class="layui-badge layui-bg-green">内置</span>
|
|
||||||
{% elseif value == 'custom' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">自定</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<div class="kg-nav">
|
{% block content %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{%- macro type_info(value) %}
|
||||||
|
{% if value == 'system' %}
|
||||||
|
<span class="layui-badge layui-bg-green">内置</span>
|
||||||
|
{% elseif value == 'custom' %}
|
||||||
|
<span class="layui-badge layui-bg-blue">自定</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>角色管理</cite></a>
|
<a><cite>角色管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.role.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加角色
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.role.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加角色
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>名称</th>
|
|
||||||
<th>类型</th>
|
|
||||||
<th>成员数</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in roles %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td><a href="javascript:" title="{{ item.summary }}">{{ item.name }}</a></td>
|
<th>名称</th>
|
||||||
<td>{{ type_info(item.type) }}</td>
|
<th>类型</th>
|
||||||
<td>
|
<th>成员数</th>
|
||||||
<a href="{{ url({'for':'admin.user.list'},{'admin_role':item.id}) }}">
|
<th>操作</th>
|
||||||
<span class="layui-badge layui-bg-green">{{ item.user_count }}</span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.role.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.role.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in roles %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td><a href="javascript:" title="{{ item.summary }}">{{ item.name }}</a></td>
|
||||||
|
<td>{{ type_info(item.type) }}</td>
|
||||||
|
<td>
|
||||||
|
<a href="{{ url({'for':'admin.user.list'},{'admin_role':item.id}) }}">
|
||||||
|
<span class="layui-badge layui-bg-green">{{ item.user_count }}</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.role.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.role.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,103 +1,104 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.captcha'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>验证码配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.captcha'}) }}">
|
||||||
<label class="layui-form-label">App Id</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>验证码配置</legend>
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ captcha.app_id }}" layui-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Id</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ captcha.app_id }}" layui-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Secret Key</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">Secret Key</label>
|
<input class="layui-input" type="text" name="secret_key" value="{{ captcha.secret_key }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="secret_key" value="{{ captcha.secret_key }}" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.captcha'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.captcha'}) }}">
|
<legend>验证码测试</legend>
|
||||||
|
</fieldset>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<div class="layui-form-item">
|
||||||
<legend>验证码测试</legend>
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
</fieldset>
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
|
<button type="button" id="front-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">前台验证</button>
|
||||||
<div class="layui-form-item">
|
<button type="button" id="front-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</button>
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
</div>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
|
||||||
<span id="front-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">前台验证</span>
|
|
||||||
<span id="front-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>前台验证成功</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-inline" style="width:200px;">
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
<button type="button" id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="back_verify">后台验证</button>
|
||||||
<div class="layui-input-inline" style="width:200px;">
|
<button type="button" id="back-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</button>
|
||||||
<span id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</span>
|
<input type="hidden" name="ticket">
|
||||||
<span id="back-verify-tips" class="kg-verify-btn layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>后台验证成功</span>
|
<input type="hidden" name="rand">
|
||||||
<input type="hidden" name="ticket">
|
</div>
|
||||||
<input type="hidden" name="rand">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
{% block inline_js %}
|
||||||
|
|
||||||
<script>
|
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
|
||||||
|
|
||||||
layui.use(['jquery', 'form', 'layer'], function () {
|
<script>
|
||||||
|
|
||||||
var $ = layui.jquery;
|
layui.use(['jquery', 'form', 'layer'], function () {
|
||||||
var form = layui.form;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
var captcha = new TencentCaptcha(
|
var $ = layui.jquery;
|
||||||
$('#front-captcha-btn')[0],
|
var form = layui.form;
|
||||||
$('#front-captcha-btn').data('app-id'),
|
var layer = layui.layer;
|
||||||
function (res) {
|
|
||||||
if (res.ret === 0) {
|
|
||||||
$('input[name=ticket]').val(res.ticket);
|
|
||||||
$('input[name=rand]').val(res.randstr);
|
|
||||||
$('#front-captcha-btn').remove();
|
|
||||||
$('#back-verify-btn').removeAttr('disabled');
|
|
||||||
$('#front-verify-tips').removeClass('layui-hide');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
form.on('submit(back-verify)', function (data) {
|
var captcha = new TencentCaptcha(
|
||||||
$.ajax({
|
$('#front-captcha-btn')[0],
|
||||||
type: 'POST',
|
$('#front-captcha-btn').data('app-id'),
|
||||||
url: data.form.action,
|
function (res) {
|
||||||
data: data.field,
|
if (res.ret === 0) {
|
||||||
success: function (res) {
|
$('input[name=ticket]').val(res.ticket);
|
||||||
if (res.code === 0) {
|
$('input[name=rand]').val(res.randstr);
|
||||||
$('#back-verify-btn').remove();
|
$('#front-captcha-btn').remove();
|
||||||
$('#back-verify-tips').removeClass('layui-hide');
|
$('#back-verify-btn').removeAttr('disabled');
|
||||||
|
$('#front-verify-tips').removeClass('layui-hide');
|
||||||
}
|
}
|
||||||
layer.msg(res.msg, {icon: 1});
|
|
||||||
},
|
|
||||||
error: function (xhr) {
|
|
||||||
var json = JSON.parse(xhr.responseText);
|
|
||||||
layer.msg(json.msg, {icon: 2});
|
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
form.on('submit(back_verify)', function (data) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: data.form.action,
|
||||||
|
data: data.field,
|
||||||
|
success: function (res) {
|
||||||
|
if (res.code === 0) {
|
||||||
|
$('#back-verify-btn').remove();
|
||||||
|
$('#back-verify-tips').removeClass('layui-hide');
|
||||||
|
}
|
||||||
|
layer.msg(res.msg, {icon: 1});
|
||||||
|
},
|
||||||
|
error: function (xhr) {
|
||||||
|
var json = JSON.parse(xhr.responseText);
|
||||||
|
layer.msg(json.msg, {icon: 2});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,14 +1,84 @@
|
|||||||
<div class="layui-tab layui-tab-brief">
|
{% extends 'templates/main.volt' %}
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
|
||||||
<li class="layui-this">推流配置</li>
|
{% block content %}
|
||||||
<li>拉流配置</li>
|
|
||||||
</ul>
|
<div class="layui-tab layui-tab-brief">
|
||||||
<div class="layui-tab-content">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
<div class="layui-tab-item layui-show">
|
<li class="layui-this">推流配置</li>
|
||||||
{{ partial('setting/live_push') }}
|
<li>拉流配置</li>
|
||||||
</div>
|
</ul>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-content">
|
||||||
{{ partial('setting/live_pull') }}
|
<div class="layui-tab-item layui-show">
|
||||||
|
{{ partial('setting/live_push') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/live_pull') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'form', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var form = layui.form;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
form.on('radio(push_auth_enabled)', function (data) {
|
||||||
|
var block = $('#push-auth-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(pull_auth_enabled)', function (data) {
|
||||||
|
var block = $('#pull-auth-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(pull_trans_enabled)', function (data) {
|
||||||
|
var block = $('#ptt-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#show-push-test').on('click', function () {
|
||||||
|
var url = '/admin/test/live/push?stream=test';
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '推流测试',
|
||||||
|
area: ['680px', '450px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#show-pull-test').on('click', function () {
|
||||||
|
var url = '/admin/test/live/pull';
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '拉流测试',
|
||||||
|
resize: false,
|
||||||
|
area: ['720px', '445px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,9 +1,10 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.live'}) }}">
|
{% set pull_auth_display = live.pull_auth_enabled == 0 ? 'style="display:none;"' : '' %}
|
||||||
|
{% set ppt_display = live.pull_trans_enabled == 0 ? 'style="display:none;"' : '' %}
|
||||||
|
|
||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.live'}) }}">
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>基础配置</legend>
|
<legend>基础配置</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">拉流协议</label>
|
<label class="layui-form-label">拉流协议</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -11,18 +12,15 @@
|
|||||||
<input type="radio" name="pull_protocol" value="https" title="HTTPS" {% if live.pull_protocol == "https" %}checked{% endif %}>
|
<input type="radio" name="pull_protocol" value="https" title="HTTPS" {% if live.pull_protocol == "https" %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">拉流域名</label>
|
<label class="layui-form-label">拉流域名</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="pull_domain" value="{{ live.pull_domain }}" layui-verify="required">
|
<input class="layui-input" type="text" name="pull_domain" value="{{ live.pull_domain }}" layui-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>鉴权配置</legend>
|
<legend>鉴权配置</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启鉴权</label>
|
<label class="layui-form-label">开启鉴权</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -30,8 +28,7 @@
|
|||||||
<input type="radio" name="pull_auth_enabled" value="0" title="否" lay-filter="pull_auth_enabled" {% if live.pull_auth_enabled == 0 %}checked{% endif %}>
|
<input type="radio" name="pull_auth_enabled" value="0" title="否" lay-filter="pull_auth_enabled" {% if live.pull_auth_enabled == 0 %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="pull-auth-block" {{ pull_auth_display }}>
|
||||||
<div id="pull-auth-block" {% if live.pull_auth_enabled == '0' %}style="display:none;"{% endif %}>
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">鉴权密钥</label>
|
<label class="layui-form-label">鉴权密钥</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -45,11 +42,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>转码配置</legend>
|
<legend>转码配置</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启转码</label>
|
<label class="layui-form-label">开启转码</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -57,8 +52,7 @@
|
|||||||
<input type="radio" name="pull_trans_enabled" value="0" title="否" lay-filter="pull_trans_enabled" {% if live.pull_trans_enabled == 0 %}checked{% endif %}>
|
<input type="radio" name="pull_trans_enabled" value="0" title="否" lay-filter="pull_trans_enabled" {% if live.pull_trans_enabled == 0 %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<table class="layui-table kg-table layui-form" id="ptt-block" {{ ppt_display }}>
|
||||||
<table class="kg-table layui-table layui-form" id="ptt-block" {% if live.pull_trans_enabled == '0' %}style="display:none;"{% endif %}>
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
@ -94,7 +88,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -102,22 +95,18 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="layui-form kg-form">
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>拉流测试</legend>
|
<legend>拉流测试</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Stream Name</label>
|
<label class="layui-form-label">Stream Name</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
|
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -125,46 +114,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'form', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var form = layui.form;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
form.on('radio(pull_auth_enabled)', function (data) {
|
|
||||||
var block = $('#pull-auth-block');
|
|
||||||
if (data.value === '1') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('radio(pull_trans_enabled)', function (data) {
|
|
||||||
var block = $('#ptt-block');
|
|
||||||
if (data.value === '1') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#show-pull-test').on('click', function () {
|
|
||||||
var url = '/admin/test/live/pull';
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '拉流测试',
|
|
||||||
resize: false,
|
|
||||||
area: ['720px', '445px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,20 +1,18 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.live'}) }}">
|
{% set push_auth_display = live.push_auth_enabled == 0 ? 'style="display:none;"' : '' %}
|
||||||
|
|
||||||
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.live'}) }}">
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>基础配置</legend>
|
<legend>基础配置</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">推流域名</label>
|
<label class="layui-form-label">推流域名</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="push_domain" value="{{ live.push_domain }}" layui-verify="required">
|
<input class="layui-input" type="text" name="push_domain" value="{{ live.push_domain }}" layui-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>鉴权配置</legend>
|
<legend>鉴权配置</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启鉴权</label>
|
<label class="layui-form-label">开启鉴权</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -22,8 +20,7 @@
|
|||||||
<input type="radio" name="push_auth_enabled" value="0" title="否" lay-filter="push_auth_enabled" {% if live.push_auth_enabled == 0 %}checked{% endif %}>
|
<input type="radio" name="push_auth_enabled" value="0" title="否" lay-filter="push_auth_enabled" {% if live.push_auth_enabled == 0 %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="push-auth-block" {{ push_auth_display }}>
|
||||||
<div id="push-auth-block" {% if live.push_auth_enabled == '0' %}style="display:none;"{% endif %}>
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">鉴权密钥</label>
|
<label class="layui-form-label">鉴权密钥</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -37,7 +34,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -45,22 +41,18 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="layui-form kg-form">
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>推流测试</legend>
|
<legend>推流测试</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Stream Name</label>
|
<label class="layui-form-label">Stream Name</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
|
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -68,36 +60,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'form', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var form = layui.form;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
form.on('radio(push_auth_enabled)', function (data) {
|
|
||||||
var block = $('#push-auth-block');
|
|
||||||
if (data.value === '1') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#show-push-test').on('click', function () {
|
|
||||||
var url = '/admin/test/live/push?stream=test';
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '推流测试',
|
|
||||||
area: ['680px', '450px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,48 +1,52 @@
|
|||||||
<form class="layui-form kg-form">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>手机推流</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form">
|
||||||
<div class="kg-text-center">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<img class="kg-qrcode" src="{{ qrcode }}" alt="二维码图片">
|
<legend>手机推流</legend>
|
||||||
</div>
|
</fieldset>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<div class="kg-text-center">
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<img class="kg-qrcode" src="{{ qrcode }}" alt="二维码图片">
|
||||||
<legend>OBS推流</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">推流地址</label>
|
|
||||||
<div class="layui-input-inline" style="width:350px;">
|
|
||||||
<input id="tc1" class="layui-input" type="text" name="obs.fms_url" value="{{ obs.fms_url }}" readonly="readonly">
|
|
||||||
</div>
|
|
||||||
<div class="layui-input-inline" style="width:100px;">
|
|
||||||
<span class="kg-copy layui-btn" data-clipboard-target="#tc1">复制</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">推流名称</label>
|
|
||||||
<div class="layui-input-inline" style="width:350px;">
|
|
||||||
<input id="tc2" class="layui-input" type="text" name="obs_stream_code" value="{{ obs.stream_code }}" readonly="readonly">
|
|
||||||
</div>
|
|
||||||
<div class="layui-input-inline" style="width:100px;">
|
|
||||||
<span class="kg-copy layui-btn" data-clipboard-target="#tc2">复制</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">相关文档</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<div class="layui-form-mid layui-word-aux">
|
|
||||||
<a href="https://cloud.tencent.com/document/product/267/32732" target="_blank">最佳实践 - 直播推流</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>OBS推流</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">推流地址</label>
|
||||||
|
<div class="layui-input-inline" style="width:350px;">
|
||||||
|
<input id="tc1" class="layui-input" type="text" name="obs.fms_url" value="{{ obs.fms_url }}" readonly="readonly">
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline" style="width:100px;">
|
||||||
|
<span class="kg-copy layui-btn" data-clipboard-target="#tc1">复制</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">推流名称</label>
|
||||||
|
<div class="layui-input-inline" style="width:350px;">
|
||||||
|
<input id="tc2" class="layui-input" type="text" name="obs_stream_code" value="{{ obs.stream_code }}" readonly="readonly">
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline" style="width:100px;">
|
||||||
|
<span class="kg-copy layui-btn" data-clipboard-target="#tc2">复制</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">相关文档</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div class="layui-form-mid layui-word-aux">
|
||||||
|
<a href="https://cloud.tencent.com/document/product/267/32732" target="_blank">最佳实践 - 直播推流</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/clipboard_tips') }}
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('lib/clipboard.min.js') }}
|
||||||
|
{{ js_include('admin/js/copy.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,119 +1,114 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.mailer'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>邮件配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.mailer'}) }}">
|
||||||
<label class="layui-form-label">发送邮箱</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>邮件配置</legend>
|
||||||
<input class="layui-input" type="text" name="smtp_from_email" value="{{ mailer.smtp_from_email }}">
|
</fieldset>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">发送人</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="smtp_from_name" value="{{ mailer.smtp_from_name }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">SMTP服务器</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="smtp_host" value="{{ mailer.smtp_host }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">SMTP端口号</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="smtp_port" value="{{ mailer.smtp_port }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">加密类型</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="smtp_encryption" value="ssl" title="SSL" {% if mailer.smtp_encryption == "ssl" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="smtp_encryption" value="tls" title="TLS" {% if mailer.smtp_encryption == "tls" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="smtp_encryption" value="" title="不加密" {% if mailer.smtp_encryption == "" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">账户验证</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="smtp_authentication" value="1" title="是" lay-filter="smtp-auth" {% if mailer.smtp_authentication == "1" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="smtp_authentication" value="0" title="否" lay-filter="smtp-auth" {% if mailer.smtp_authentication == "0" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="smtp-auth-block">
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">SMTP帐号</label>
|
<label class="layui-form-label">发送邮箱</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="smtp_username" value="{{ mailer.smtp_username }}">
|
<input class="layui-input" type="text" name="smtp_from_email" value="{{ mailer.smtp_from_email }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">SMTP密码</label>
|
<label class="layui-form-label">发送人</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="smtp_password" value="{{ mailer.smtp_password }}">
|
<input class="layui-input" type="text" name="smtp_from_name" value="{{ mailer.smtp_from_name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">SMTP服务器</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<input class="layui-input" type="text" name="smtp_host" value="{{ mailer.smtp_host }}">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">SMTP端口号</label>
|
||||||
</form>
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="smtp_port" value="{{ mailer.smtp_port }}">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.mailer'}) }}">
|
</div>
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>邮件测试</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">收件邮箱</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="email" lay-verify="email" placeholder="请先提交相关配置,再进行邮件测试哦!">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">加密类型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<input type="radio" name="smtp_encryption" value="ssl" title="SSL" {% if mailer.smtp_encryption == "ssl" %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="smtp_encryption" value="tls" title="TLS" {% if mailer.smtp_encryption == "tls" %}checked{% endif %}>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<input type="radio" name="smtp_encryption" value="" title="不加密" {% if mailer.smtp_encryption == "" %}checked{% endif %}>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">账户验证</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="smtp_authentication" value="1" title="是" lay-filter="smtp_auth" {% if mailer.smtp_authentication == "1" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="smtp_authentication" value="0" title="否" lay-filter="smtp_auth" {% if mailer.smtp_authentication == "0" %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="smtp-auth-block">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">SMTP帐号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="smtp_username" value="{{ mailer.smtp_username }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">SMTP密码</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="smtp_password" value="{{ mailer.smtp_password }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.mailer'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>邮件测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">收件邮箱</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="email" placeholder="请先提交相关配置,再进行邮件测试哦!" lay-verify="email">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
<script>
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
{% block inline_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
<script>
|
||||||
var form = layui.form;
|
|
||||||
|
layui.use(['jquery', 'form'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var form = layui.form;
|
||||||
|
|
||||||
|
form.on('radio(smtp_auth)', function (data) {
|
||||||
|
var block = $('#smtp-auth-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
form.on('radio(smtp-auth)', function (data) {
|
|
||||||
var block = $('#smtp-auth-block');
|
|
||||||
if (data.value == 1) {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,14 +1,57 @@
|
|||||||
<div class="layui-tab layui-tab-brief">
|
{% extends 'templates/main.volt' %}
|
||||||
<ul class="layui-tab-title kg-tab-title">
|
|
||||||
<li class="layui-this">支付宝</li>
|
{% block content %}
|
||||||
<li>微信支付</li>
|
|
||||||
</ul>
|
<div class="layui-tab layui-tab-brief">
|
||||||
<div class="layui-tab-content">
|
<ul class="layui-tab-title kg-tab-title">
|
||||||
<div class="layui-tab-item layui-show">
|
<li class="layui-this">支付宝</li>
|
||||||
{{ partial('setting/pay_alipay') }}
|
<li>微信支付</li>
|
||||||
</div>
|
</ul>
|
||||||
<div class="layui-tab-item">
|
<div class="layui-tab-content">
|
||||||
{{ partial('setting/pay_wxpay') }}
|
<div class="layui-tab-item layui-show">
|
||||||
|
{{ partial('setting/pay_alipay') }}
|
||||||
|
</div>
|
||||||
|
<div class="layui-tab-item">
|
||||||
|
{{ partial('setting/pay_wxpay') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'layer'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var layer = layui.layer;
|
||||||
|
|
||||||
|
$('#show-alipay-test').on('click', function () {
|
||||||
|
var url = '/admin/test/alipay';
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '支付宝 - 支付测试',
|
||||||
|
resize: false,
|
||||||
|
area: ['640px', '300px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#show-wxpay-test').on('click', function () {
|
||||||
|
var url = '/admin/test/wxpay';
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '微信 - 支付测试',
|
||||||
|
resize: false,
|
||||||
|
area: ['640px', '300px'],
|
||||||
|
content: [url, 'no']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,5 +1,4 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启支付</label>
|
<label class="layui-form-label">开启支付</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -7,14 +6,12 @@
|
|||||||
<input type="radio" name="enabled" value="0" title="否" {% if alipay.enabled == "0" %}checked{% endif %}>
|
<input type="radio" name="enabled" value="0" title="否" {% if alipay.enabled == "0" %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">App ID</label>
|
<label class="layui-form-label">App ID</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ alipay.app_id }}" lay-verify="required">
|
<input class="layui-input" type="text" name="app_id" value="{{ alipay.app_id }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Public Key</label>
|
<label class="layui-form-label">Public Key</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -28,14 +25,12 @@
|
|||||||
<textarea class="layui-textarea" name="private_key" lay-verify="required">{{ alipay.private_key }}</textarea>
|
<textarea class="layui-textarea" name="private_key" lay-verify="required">{{ alipay.private_key }}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Notify Url</label>
|
<label class="layui-form-label">Notify Url</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
|
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -44,29 +39,24 @@
|
|||||||
<input type="hidden" name="section" value="pay.alipay">
|
<input type="hidden" name="section" value="pay.alipay">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="layui-form kg-form">
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>支付测试</legend>
|
<legend>支付测试</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">支付项目</label>
|
<label class="layui-form-label">支付项目</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="true">
|
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">支付金额</label>
|
<label class="layui-form-label">支付金额</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="true">
|
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -74,27 +64,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('#show-alipay-test').on('click', function () {
|
|
||||||
var url = '/admin/test/alipay';
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '支付宝 - 支付测试',
|
|
||||||
resize: false,
|
|
||||||
area: ['640px', '300px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,61 +1,62 @@
|
|||||||
<div class="kg-qrcode-block">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="kg-qrcode-block">
|
||||||
|
|
||||||
|
{% if qrcode_url %}
|
||||||
|
<div id="qrcode">
|
||||||
|
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="sn" value="{{ sn }}">
|
||||||
|
<div id="success-tips" class="kg-success-tips layui-hide">
|
||||||
|
<span>支付成功</span>
|
||||||
|
</div>
|
||||||
|
<div id="error-tips" class="kg-error-tips layui-hide">
|
||||||
|
<span>支付失败</span>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="kg-error-tips">
|
||||||
|
<span>生成二维码失败</span>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
{% if qrcode_url %}
|
{% if qrcode_url %}
|
||||||
|
<script>
|
||||||
|
|
||||||
<div id="qrcode">
|
layui.use(['jquery'], function () {
|
||||||
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="hidden" name="sn" value="{{ sn }}">
|
var $ = layui.jquery;
|
||||||
|
var sn = $('input[name=sn]').val();
|
||||||
<div id="success-tips" class="kg-success-tips layui-hide">
|
var interval = setInterval(function () {
|
||||||
<span>支付成功</span>
|
$.ajax({
|
||||||
</div>
|
type: 'GET',
|
||||||
|
url: '/admin/test/alipay/status',
|
||||||
<div id="error-tips" class="kg-error-tips layui-hide">
|
data: {sn: sn},
|
||||||
<span>支付失败</span>
|
success: function (res) {
|
||||||
</div>
|
if (res.status === 'finished') {
|
||||||
|
$('#success-tips').removeClass('layui-hide');
|
||||||
{% else %}
|
$('#qrcode').addClass('layui-hide');
|
||||||
|
clearInterval(interval);
|
||||||
<div class="kg-error-tips">
|
}
|
||||||
<span>生成二维码失败</span>
|
},
|
||||||
</div>
|
error: function () {
|
||||||
|
$('#error-tips').removeClass('layui-hide');
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if qrcode_url %}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var sn = $('input[name=sn]').val();
|
|
||||||
var interval = setInterval(function () {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: '/admin/test/alipay/status',
|
|
||||||
data: {sn: sn},
|
|
||||||
success: function (res) {
|
|
||||||
if (res.status === 'finished') {
|
|
||||||
$('#success-tips').removeClass('layui-hide');
|
|
||||||
$('#qrcode').addClass('layui-hide');
|
$('#qrcode').addClass('layui-hide');
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
error: function () {
|
}, 5000);
|
||||||
$('#error-tips').removeClass('layui-hide');
|
|
||||||
$('#qrcode').addClass('layui-hide');
|
|
||||||
clearInterval(interval);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endblock %}
|
@ -1,5 +1,4 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">开启支付</label>
|
<label class="layui-form-label">开启支付</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -7,35 +6,30 @@
|
|||||||
<input type="radio" name="enabled" value="0" title="否" {% if wxpay.enabled == "0" %}checked{% endif %}>
|
<input type="radio" name="enabled" value="0" title="否" {% if wxpay.enabled == "0" %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">App ID</label>
|
<label class="layui-form-label">App ID</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ wxpay.app_id }}" lay-verify="required">
|
<input class="layui-input" type="text" name="app_id" value="{{ wxpay.app_id }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Mch ID</label>
|
<label class="layui-form-label">Mch ID</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="mch_id" value="{{ wxpay.mch_id }}" lay-verify="required">
|
<input class="layui-input" type="text" name="mch_id" value="{{ wxpay.mch_id }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Private Key</label>
|
<label class="layui-form-label">Private Key</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="key" value="{{ wxpay.key }}" lay-verify="required">
|
<input class="layui-input" type="text" name="key" value="{{ wxpay.key }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">Notify Url</label>
|
<label class="layui-form-label">Notify Url</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="notify_url" value="{{ wxpay.notify_url }}" lay-verify="required">
|
<input class="layui-input" type="text" name="notify_url" value="{{ wxpay.notify_url }}" lay-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -44,29 +38,24 @@
|
|||||||
<input type="hidden" name="section" value="pay.wxpay">
|
<input type="hidden" name="section" value="pay.wxpay">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="layui-form kg-form">
|
<form class="layui-form kg-form">
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<legend>支付测试</legend>
|
<legend>支付测试</legend>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">支付项目</label>
|
<label class="layui-form-label">支付项目</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="true">
|
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">支付金额</label>
|
<label class="layui-form-label">支付金额</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="true">
|
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="readonly">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
@ -74,27 +63,4 @@
|
|||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</form>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery', 'layer'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
|
|
||||||
$('#show-wxpay-test').on('click', function () {
|
|
||||||
var url = '/admin/test/wxpay';
|
|
||||||
layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '微信 - 支付测试',
|
|
||||||
resize: false,
|
|
||||||
area: ['640px', '300px'],
|
|
||||||
content: [url, 'no']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,61 +1,60 @@
|
|||||||
<div class="kg-qrcode-block">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
|
{% block contnet %}
|
||||||
|
|
||||||
|
<div class="kg-qrcode-block">
|
||||||
|
{% if qrcode_url %}
|
||||||
|
<div id="qrcode">
|
||||||
|
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="sn" value="{{ sn }}">
|
||||||
|
<div id="success-tips" class="kg-success-tips layui-hide">
|
||||||
|
<span>支付成功</span>
|
||||||
|
</div>
|
||||||
|
<div id="error-tips" class="kg-error-tips layui-hide">
|
||||||
|
<span>支付失败</span>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="kg-error-tips">
|
||||||
|
<span>生成二维码失败</span>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
{% if qrcode_url %}
|
{% if qrcode_url %}
|
||||||
|
<script>
|
||||||
|
|
||||||
<div id="qrcode">
|
layui.use(['jquery'], function () {
|
||||||
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="hidden" name="sn" value="{{ sn }}">
|
var $ = layui.jquery;
|
||||||
|
var sn = $('input[name=sn]').val();
|
||||||
<div id="success-tips" class="kg-success-tips layui-hide">
|
var interval = setInterval(function () {
|
||||||
<span>支付成功</span>
|
$.ajax({
|
||||||
</div>
|
type: 'GET',
|
||||||
|
url: '/admin/test/wxpay/status',
|
||||||
<div id="error-tips" class="kg-error-tips layui-hide">
|
data: {sn: sn},
|
||||||
<span>支付失败</span>
|
success: function (res) {
|
||||||
</div>
|
if (res.status === 'finished') {
|
||||||
|
$('#success-tips').removeClass('layui-hide');
|
||||||
{% else %}
|
$('#qrcode').addClass('layui-hide');
|
||||||
|
clearInterval(interval);
|
||||||
<div class="kg-error-tips">
|
}
|
||||||
<span>生成二维码失败</span>
|
},
|
||||||
</div>
|
error: function () {
|
||||||
|
$('#error-tips').removeClass('layui-hide');
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if qrcode_url %}
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
layui.use(['jquery'], function () {
|
|
||||||
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var sn = $('input[name=sn]').val();
|
|
||||||
var interval = setInterval(function () {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: '/admin/test/wxpay/status',
|
|
||||||
data: {sn: sn},
|
|
||||||
success: function (res) {
|
|
||||||
if (res.status === 'finished') {
|
|
||||||
$('#success-tips').removeClass('layui-hide');
|
|
||||||
$('#qrcode').addClass('layui-hide');
|
$('#qrcode').addClass('layui-hide');
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
error: function () {
|
}, 5000);
|
||||||
$('#error-tips').removeClass('layui-hide');
|
|
||||||
$('#qrcode').addClass('layui-hide');
|
|
||||||
clearInterval(interval);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endblock %}
|
@ -1,36 +1,36 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.secret'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>密钥配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.secret'}) }}">
|
||||||
<label class="layui-form-label">App Id</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>密钥配置</legend>
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ secret.app_id }}" layui-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Id</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ secret.app_id }}" layui-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Secret Id</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">Secret Id</label>
|
<input class="layui-input" type="text" name="secret_id" value="{{ secret.secret_id }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="secret_id" value="{{ secret.secret_id }}" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">Secret Key</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">Secret Key</label>
|
<input class="layui-input" type="text" name="secret_key" value="{{ secret.secret_key }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="secret_key" value="{{ secret.secret_key }}" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,80 +1,76 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.site'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>站点配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.site'}) }}">
|
||||||
<label class="layui-form-label">网站名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>站点配置</legend>
|
||||||
<input class="layui-input" type="text" name="title" value="{{ site.title }}">
|
</fieldset>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
</div>
|
<label class="layui-form-label">网站名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
<div class="layui-form-item">
|
<input class="layui-input" type="text" name="title" value="{{ site.title }}">
|
||||||
<label class="layui-form-label">关键字</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="keywords" value="{{ site.keywords }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">网站描述</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="description" value="{{ site.description }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">版权信息</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="copyright" value="{{ site.copyright }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label">ICP备案号</label>
|
|
||||||
<div class="kg-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="icp_sn" value="{{ site.icp_sn }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">备案链接</label>
|
<label class="layui-form-label">关键字</label>
|
||||||
<div class="kg-input-inline">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="icp_link" value="{{ site.icp_link }}">
|
<input class="layui-input" type="text" name="keywords" value="{{ site.keywords }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">网站描述</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<div class="layui-inline">
|
<input class="layui-input" type="text" name="description" value="{{ site.description }}">
|
||||||
<label class="layui-form-label">公安备案号</label>
|
|
||||||
<div class="kg-input-inline">
|
|
||||||
<input class="layui-input" type="text" name="police_sn" value="{{ site.police_sn }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">备案链接</label>
|
<label class="layui-form-label">版权信息</label>
|
||||||
<div class="kg-input-inline">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="police_link" value="{{ site.police_link }}">
|
<input class="layui-input" type="text" name="copyright" value="{{ site.copyright }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
<div class="layui-form-item">
|
<label class="layui-form-label">ICP备案号</label>
|
||||||
<label class="layui-form-label">站点统计</label>
|
<div class="kg-input-inline">
|
||||||
<div class="layui-input-block">
|
<input class="layui-input" type="text" name="icp_sn" value="{{ site.icp_sn }}">
|
||||||
<textarea name="analytics" class="layui-textarea" placeholder="使用百度统计,CNZZ,腾讯分析等第三方统计分析站点流量">{{ site.analytics }}</textarea>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">备案链接</label>
|
||||||
|
<div class="kg-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="icp_link" value="{{ site.icp_link }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
<div class="layui-form-item">
|
<label class="layui-form-label">公安备案号</label>
|
||||||
<label class="layui-form-label"></label>
|
<div class="kg-input-inline">
|
||||||
<div class="layui-input-block">
|
<input class="layui-input" type="text" name="police_sn" value="{{ site.police_sn }}">
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">备案链接</label>
|
||||||
|
<div class="kg-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="police_link" value="{{ site.police_link }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">站点统计</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea name="analytics" class="layui-textarea" placeholder="使用百度统计,腾讯分析等第三方统计分析站点流量">{{ site.analytics }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,108 +1,107 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.smser'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>基础配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.smser'}) }}">
|
||||||
<label class="layui-form-label">App ID</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>基础配置</legend>
|
||||||
<input class="layui-input" type="text" name="app_id" value="{{ smser.app_id }}" layui-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App ID</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="app_id" value="{{ smser.app_id }}" layui-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">App Key</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">App Key</label>
|
<input class="layui-input" type="text" name="app_key" value="{{ smser.app_key }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="app_key" value="{{ smser.app_key }}" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">内容签名</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">内容签名</label>
|
<input class="layui-input" type="text" name="signature" placeholder="注意:使用的是签名内容,而非签名ID" value="{{ smser.signature }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="signature" value="{{ smser.signature }}" placeholder="注意:使用的是签名内容,而非签名ID" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>模板配置</legend>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
</fieldset>
|
||||||
<legend>模板配置</legend>
|
<table class="layui-table kg-table layui-form">
|
||||||
</fieldset>
|
<colgroup>
|
||||||
|
<col width="12%">
|
||||||
<table class="kg-table layui-table layui-form">
|
<col width="15%">
|
||||||
<colgroup>
|
<col>
|
||||||
<col width="12%">
|
<col width="10%">
|
||||||
<col width="15%">
|
</colgroup>
|
||||||
<col>
|
<thead>
|
||||||
<col width="10%">
|
<tr>
|
||||||
</colgroup>
|
<th>名称</th>
|
||||||
<thead>
|
<th>模板编号</th>
|
||||||
<tr>
|
<th>模板内容</th>
|
||||||
<th>名称</th>
|
<th>操作</th>
|
||||||
<th>模板编号</th>
|
</tr>
|
||||||
<th>模板内容</th>
|
</thead>
|
||||||
<th>操作</th>
|
<tbody>
|
||||||
</tr>
|
<tr>
|
||||||
</thead>
|
<td>身份验证</td>
|
||||||
<tbody>
|
<td><input class="layui-input" type="text" name="template[id][verify]" value="{{ template.verify.id }}" lay-verify="required"></td>
|
||||||
<tr>
|
<td><input id="tc-verify" class="layui-input" type="text" name="template[content][verify]" value="{{ template.verify.content }}" readonly="readonly" lay-verify="required"></td>
|
||||||
<td>身份验证</td>
|
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-verify">复制</span></td>
|
||||||
<td><input class="layui-input" type="text" name="template[id][verify]" value="{{ template.verify.id }}" lay-verify="required"></td>
|
</tr>
|
||||||
<td><input id="tc-verify" class="layui-input" type="text" name="template[content][verify]" value="{{ template.verify.content }}" readonly="readonly" lay-verify="required"></td>
|
<tr>
|
||||||
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-verify">复制</span></td>
|
<td>订单通知</td>
|
||||||
</tr>
|
<td><input class="layui-input" type="text" name="template[id][order]" value="{{ template.order.id }}" lay-verify="required"></td>
|
||||||
<tr>
|
<td><input id="tc-order" class="layui-input" type="text" name="template[content][order]" value="{{ template.order.content }}" readonly="readonly" lay-verify="required"></td>
|
||||||
<td>订单通知</td>
|
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-order">复制</span></td>
|
||||||
<td><input class="layui-input" type="text" name="template[id][order]" value="{{ template.order.id }}" lay-verify="required"></td>
|
</tr>
|
||||||
<td><input id="tc-order" class="layui-input" type="text" name="template[content][order]" value="{{ template.order.content }}" readonly="readonly" lay-verify="required"></td>
|
<tr>
|
||||||
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-order">复制</span></td>
|
<td>退款通知</td>
|
||||||
</tr>
|
<td><input class="layui-input" type="text" name="template[id][refund]" value="{{ template.refund.id }}" lay-verify="required"></td>
|
||||||
<tr>
|
<td><input id="tc-refund" class="layui-input" type="text" name="template[content][refund]" value="{{ template.refund.content }}" readonly="readonly" lay-verify="required"></td>
|
||||||
<td>退款通知</td>
|
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-refund">复制</span></td>
|
||||||
<td><input class="layui-input" type="text" name="template[id][refund]" value="{{ template.refund.id }}" lay-verify="required"></td>
|
</tr>
|
||||||
<td><input id="tc-refund" class="layui-input" type="text" name="template[content][refund]" value="{{ template.refund.content }}" readonly="readonly" lay-verify="required"></td>
|
<tr>
|
||||||
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-refund">复制</span></td>
|
<td>直播通知</td>
|
||||||
</tr>
|
<td><input class="layui-input" type="text" name="template[id][live]" value="{{ template.live.id }}" lay-verify="required"></td>
|
||||||
<tr>
|
<td><input id="tc-live" class="layui-input" type="text" name="template[content][live]" value="{{ template.live.content }}" readonly="readonly" lay-verify="required"></td>
|
||||||
<td>直播通知</td>
|
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-live">复制</span></td>
|
||||||
<td><input class="layui-input" type="text" name="template[id][live]" value="{{ template.live.id }}" lay-verify="required"></td>
|
</tr>
|
||||||
<td><input id="tc-live" class="layui-input" type="text" name="template[content][live]" value="{{ template.live.content }}" readonly="readonly" lay-verify="required"></td>
|
</tbody>
|
||||||
<td><span class="kg-copy layui-btn" data-clipboard-target="#tc-live">复制</span></td>
|
</table>
|
||||||
</tr>
|
<div class="layui-form-item" style="margin-top:20px;">
|
||||||
</tbody>
|
<label class="layui-form-label"></label>
|
||||||
</table>
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-form-item" style="margin-top:20px;">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<label class="layui-form-label"></label>
|
</div>
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.smser'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.smser'}) }}">
|
<legend>短信测试</legend>
|
||||||
|
</fieldset>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<div class="layui-form-item">
|
||||||
<legend>短信测试</legend>
|
<label class="layui-form-label">手机号码</label>
|
||||||
</fieldset>
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="phone" placeholder="请先提交相关配置,再进行短信测试哦!" lay-verify="phone">
|
||||||
<div class="layui-form-item">
|
</div>
|
||||||
<label class="layui-form-label">手机号码</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="phone" lay-verify="phone" placeholder="请先提交相关配置,再进行短信测试哦!">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
{{ partial('partials/clipboard_tips') }}
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('lib/clipboard.min.js') }}
|
||||||
|
{{ js_include('admin/js/copy.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,86 +1,78 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.storage'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>存储桶配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.storage'}) }}">
|
||||||
<label class="layui-form-label">空间名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>存储桶配置</legend>
|
||||||
<input class="layui-input" type="text" name="bucket_name" value="{{ storage.bucket_name }}" layui-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">空间名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="bucket_name" value="{{ storage.bucket_name }}" layui-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">所在区域</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">所在区域</label>
|
<input class="layui-input" type="text" name="bucket_region" value="{{ storage.bucket_region }}" layui-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="bucket_region" value="{{ storage.bucket_region }}" layui-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">访问协议</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">访问协议</label>
|
<input type="radio" name="bucket_protocol" value="http" title="HTTP" {% if storage.bucket_protocol == "http" %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="bucket_protocol" value="https" title="HTTPS" {% if storage.bucket_protocol == "https" %}checked{% endif %}>
|
||||||
<input type="radio" name="bucket_protocol" value="http" title="HTTP" {% if storage.bucket_protocol == "http" %}checked{% endif %}>
|
</div>
|
||||||
<input type="radio" name="bucket_protocol" value="https" title="HTTPS" {% if storage.bucket_protocol == "https" %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">访问域名</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">访问域名</label>
|
<input class="layui-input" type="text" name="bucket_domain" value="{{ storage.bucket_domain }}" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="bucket_domain" value="{{ storage.bucket_domain }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>数据万象</legend>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
</fieldset>
|
||||||
<legend>数据万象</legend>
|
<div class="layui-form-item">
|
||||||
</fieldset>
|
<label class="layui-form-label">访问协议</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
<div class="layui-form-item">
|
<input type="radio" name="ci_protocol" value="http" title="HTTP" {% if storage.ci_protocol == "http" %}checked{% endif %}>
|
||||||
<label class="layui-form-label">访问协议</label>
|
<input type="radio" name="ci_protocol" value="https" title="HTTPS" {% if storage.ci_protocol == "https" %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input type="radio" name="ci_protocol" value="http" title="HTTP" {% if storage.ci_protocol == "http" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="ci_protocol" value="https" title="HTTPS" {% if storage.ci_protocol == "https" %}checked{% endif %}>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">访问域名</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">访问域名</label>
|
<input class="layui-input" type="text" name="ci_domain" value="{{ storage.ci_domain }}" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="ci_domain" value="{{ storage.ci_domain }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.storage'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.storage'}) }}">
|
<legend>上传测试</legend>
|
||||||
|
</fieldset>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<div class="layui-form-item">
|
||||||
<legend>上传测试</legend>
|
<label class="layui-form-label">测试文件</label>
|
||||||
</fieldset>
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="file" value="hello_world.txt" readonly="readonly">
|
||||||
<div class="layui-form-item">
|
</div>
|
||||||
<label class="layui-form-label">测试文件</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="file" value="hello_world.txt" readonly="true">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,25 +1,27 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.vip'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>会员设置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
{% for item in vips %}
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.vip'}) }}">
|
||||||
<div class="layui-form-item">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<label class="layui-form-label">{{ item.title }}</label>
|
<legend>会员设置</legend>
|
||||||
<div class="layui-input-inline">
|
</fieldset>
|
||||||
<input class="layui-input" type="text" name="vip[{{ item.id }}]" value="{{ item.price }}" lay-verify="number">
|
{% for item in vips %}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">{{ item.title }}</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="vip[{{ item.id }}]" value="{{ item.price }}" lay-verify="number">
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid layui-word-aux">元</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">元</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
@ -1,222 +1,214 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.vod'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>存储配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% set storage_region_display = vod.storage_type == 'nearby' ? 'style="display:none;"' : '' %}
|
||||||
<label class="layui-form-label">存储方式</label>
|
{% set watermark_tpl_display = vod.watermark_enabled == 0 ? 'style="display:none;"' : '' %}
|
||||||
<div class="layui-input-block">
|
{% set key_anti_display = vod.key_anti_enabled == 0 ? 'style="display:none;"' : '' %}
|
||||||
<input type="radio" name="storage_type" value="nearby" title="就近存储" lay-filter="storage_type" {% if vod.storage_type == "nearby" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="storage_type" value="fixed" title="固定区域" lay-filter="storage_type" {% if vod.storage_type == "fixed" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="storage-region-block" {% if vod.storage_type == 'nearby' %}style="display:none;"{% endif %}>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.vod'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>存储配置</legend>
|
||||||
|
</fieldset>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">所在区域</label>
|
<label class="layui-form-label">存储方式</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="storage_region" value="{{ vod.storage_region }}">
|
<input type="radio" name="storage_type" value="nearby" title="就近存储" lay-filter="storage_type" {% if vod.storage_type == "nearby" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="storage_type" value="fixed" title="固定区域" lay-filter="storage_type" {% if vod.storage_type == "fixed" %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div id="storage-region-block" {{ storage_region_display }}>
|
||||||
|
<div class="layui-form-item">
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
<label class="layui-form-label">所在区域</label>
|
||||||
<legend>转码配置</legend>
|
<div class="layui-input-block">
|
||||||
</fieldset>
|
<input class="layui-input" type="text" name="storage_region" value="{{ vod.storage_region }}">
|
||||||
|
</div>
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">视频格式</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="video_format" value="hls" title="HLS" lay-filter="video_format" {% if vod.video_format == "hls" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="video_format" value="mp4" title="MP4" lay-filter="video_format" {% if vod.video_format == "mp4" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">视频模板ID</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="video_template" readonly="readonly" layui-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">音频格式</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="audio_format" value="m4a" title="M4A" lay-filter="audio_format" {% if vod.audio_format == "m4a" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="audio_format" value="mp3" title="MP3" lay-filter="audio_format" {% if vod.audio_format == "mp3" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">音频模板ID</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="audio_template" readonly="readonly" layui-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">开启水印</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="watermark_enabled" value="1" title="是" lay-filter="watermark_enabled" {% if vod.watermark_enabled == 1 %}checked{% endif %}>
|
|
||||||
<input type="radio" name="watermark_enabled" value="0" title="否" lay-filter="watermark_enabled" {% if vod.watermark_enabled == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="watermark-template-block" {% if vod.watermark_enabled == '0' %}style="display:none;"{% endif %}>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">水印模板ID</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="watermark_template" value="{{ vod.watermark_template }}">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>转码配置</legend>
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
</fieldset>
|
||||||
<legend>主分发配置</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">分发协议</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="dist_protocol" value="https" title="HTTPS" {% if vod.dist_protocol == "https" %}checked{% endif %}>
|
|
||||||
<input type="radio" name="dist_protocol" value="http" title="HTTP" {% if vod.dist_protocol == "http" %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">分发域名</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="dist_domain" value="{{ vod.dist_domain }}" lay-verify="required">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>Key防盗链</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">开启防盗链</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="key_anti_enabled" value="1" title="是" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 1 %}checked{% endif %}>
|
|
||||||
<input type="radio" name="key_anti_enabled" value="0" title="否" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="key-anti-block" {% if vod.key_anti_enabled == '0' %}style="display:none;"{% endif %}>
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">防盗链Key</label>
|
<label class="layui-form-label">视频格式</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="key_anti_key" value="{{ vod.key_anti_key }}" lay-verify="required">
|
<input type="radio" name="video_format" value="hls" title="HLS" lay-filter="video_format" {% if vod.video_format == "hls" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="video_format" value="mp4" title="MP4" lay-filter="video_format" {% if vod.video_format == "mp4" %}checked{% endif %}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">有效期(秒)</label>
|
<label class="layui-form-label">视频模板ID</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input class="layui-input" type="text" name="key_anti_expiry" value="{{ vod.key_anti_expiry }}" lay-verify="required">
|
<input class="layui-input" type="text" name="video_template" readonly="readonly" layui-verify="required">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">音频格式</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<input type="radio" name="audio_format" value="m4a" title="M4A" lay-filter="audio_format" {% if vod.audio_format == "m4a" %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="audio_format" value="mp3" title="MP3" lay-filter="audio_format" {% if vod.audio_format == "mp3" %}checked{% endif %}>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">音频模板ID</label>
|
||||||
</form>
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="audio_template" readonly="readonly" layui-verify="required">
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.vod'}) }}">
|
</div>
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
|
||||||
<legend>接口测试</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">请求方法</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input class="layui-input" type="text" name="file" value="DescribeAudioTrackTemplates" readonly="readonly">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启水印</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<input type="radio" name="watermark_enabled" value="1" title="是" lay-filter="watermark_enabled" {% if vod.watermark_enabled == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="watermark_enabled" value="0" title="否" lay-filter="watermark_enabled" {% if vod.watermark_enabled == 0 %}checked{% endif %}>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div id="watermark-template-block" {{ watermark_tpl_display }}>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">水印模板ID</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="watermark_template" value="{{ vod.watermark_template }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>主分发配置</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">分发协议</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="dist_protocol" value="https" title="HTTPS" {% if vod.dist_protocol == "https" %}checked{% endif %}>
|
||||||
|
<input type="radio" name="dist_protocol" value="http" title="HTTP" {% if vod.dist_protocol == "http" %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">分发域名</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="dist_domain" value="{{ vod.dist_domain }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>Key防盗链</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">开启防盗链</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="radio" name="key_anti_enabled" value="1" title="是" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 1 %}checked{% endif %}>
|
||||||
|
<input type="radio" name="key_anti_enabled" value="0" title="否" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 0 %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="key-anti-block" {{ key_anti_display }}>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">防盗链Key</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="key_anti_key" value="{{ vod.key_anti_key }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">有效期(秒)</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="key_anti_expiry" value="{{ vod.key_anti_expiry }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
</form>
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.vod'}) }}">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
|
<legend>接口测试</legend>
|
||||||
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">请求方法</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="file" value="DescribeAudioTrackTemplates" readonly="readonly">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
<script>
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
{% block inline_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
<script>
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
var changeVideoTemplate = function (format) {
|
layui.use(['jquery', 'form'], function () {
|
||||||
var template = $('input[name=video_template]');
|
|
||||||
if (format === 'mp4') {
|
|
||||||
template.val('100010,100020,100030');
|
|
||||||
} else {
|
|
||||||
template.val('100210,100220,100230');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var changeAudioTemplate = function (format) {
|
var $ = layui.jquery;
|
||||||
var template = $('input[name=audio_template]');
|
var form = layui.form;
|
||||||
if (format === 'mp3') {
|
|
||||||
template.val('1010');
|
var changeVideoTemplate = function (format) {
|
||||||
} else {
|
var template = $('input[name=video_template]');
|
||||||
template.val('1110');
|
if (format === 'mp4') {
|
||||||
}
|
template.val('100010,100020,100030');
|
||||||
};
|
} else {
|
||||||
|
template.val('100210,100220,100230');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var changeAudioTemplate = function (format) {
|
||||||
|
var template = $('input[name=audio_template]');
|
||||||
|
if (format === 'mp3') {
|
||||||
|
template.val('1010');
|
||||||
|
} else {
|
||||||
|
template.val('1110');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
form.on('radio(storage_type)', function (data) {
|
||||||
|
var block = $('#storage-region-block');
|
||||||
|
if (data.value === 'fixed') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(watermark_enabled)', function (data) {
|
||||||
|
var block = $('#watermark-template-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(key_anti_enabled)', function (data) {
|
||||||
|
var block = $('#key-anti-block');
|
||||||
|
if (data.value === '1') {
|
||||||
|
block.show();
|
||||||
|
} else {
|
||||||
|
block.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(video_format)', function (data) {
|
||||||
|
changeVideoTemplate(data.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
form.on('radio(audio_format)', function (data) {
|
||||||
|
changeAudioTemplate(data.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
var videoFormat = $('input[name=video_format]:checked').val();
|
||||||
|
var audioFormat = $('input[name=audio_format]:checked').val();
|
||||||
|
|
||||||
|
changeVideoTemplate(videoFormat);
|
||||||
|
changeAudioTemplate(audioFormat);
|
||||||
|
|
||||||
form.on('radio(storage_type)', function (data) {
|
|
||||||
var block = $('#storage-region-block');
|
|
||||||
if (data.value === 'fixed') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
form.on('radio(watermark_enabled)', function (data) {
|
</script>
|
||||||
var block = $('#watermark-template-block');
|
|
||||||
if (data.value === '1') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('radio(key_anti_enabled)', function (data) {
|
{% endblock %}
|
||||||
var block = $('#key-anti-block');
|
|
||||||
if (data.value === '1') {
|
|
||||||
block.show();
|
|
||||||
} else {
|
|
||||||
block.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('radio(video_format)', function (data) {
|
|
||||||
changeVideoTemplate(data.value);
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('radio(audio_format)', function (data) {
|
|
||||||
changeAudioTemplate(data.value);
|
|
||||||
});
|
|
||||||
|
|
||||||
var videoFormat = $('input[name=video_format]:checked').val();
|
|
||||||
var audioFormat = $('input[name=audio_format]:checked').val();
|
|
||||||
|
|
||||||
changeVideoTemplate(videoFormat);
|
|
||||||
changeAudioTemplate(audioFormat);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@ -1,64 +1,68 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加轮播</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加轮播</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">目标类型</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">目标类型</label>
|
<input type="radio" name="target" value="course" title="课程" lay-filter="target" checked="checked">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="target" value="page" title="单页" lay-filter="target">
|
||||||
<input type="radio" name="target" value="course" title="课程" lay-filter="target" checked="checked">
|
<input type="radio" name="target" value="link" title="链接" lay-filter="target">
|
||||||
<input type="radio" name="target" value="page" title="单页" lay-filter="target">
|
</div>
|
||||||
<input type="radio" name="target" value="link" title="链接" lay-filter="target">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label" id="target-label">课程编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label" id="target-label">课程编号</label>
|
<input class="layui-input" type="text" name="content" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="content" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
<script>
|
||||||
|
|
||||||
var $ = layui.jquery;
|
layui.use(['jquery', 'form'], function () {
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
var targetLabels = [
|
var $ = layui.jquery;
|
||||||
'课程编号',
|
var form = layui.form;
|
||||||
'单页编号',
|
|
||||||
'链接地址',
|
|
||||||
];
|
|
||||||
|
|
||||||
var targetLabelBlock = $('#target-label');
|
var targetLabels = [
|
||||||
|
'课程编号',
|
||||||
|
'单页编号',
|
||||||
|
'链接地址',
|
||||||
|
];
|
||||||
|
|
||||||
|
var targetLabelBlock = $('#target-label');
|
||||||
|
|
||||||
|
form.on('radio(target)', function (data) {
|
||||||
|
var index = data.value - 1;
|
||||||
|
targetLabelBlock.html(targetLabels[index]);
|
||||||
|
});
|
||||||
|
|
||||||
|
targetLabelBlock.html(targetLabels[0]);
|
||||||
|
|
||||||
form.on('radio(target)', function (data) {
|
|
||||||
var index = data.value - 1;
|
|
||||||
targetLabelBlock.html(targetLabels[index]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
targetLabelBlock.html(targetLabels[0]);
|
</script>
|
||||||
|
|
||||||
});
|
{% endblock %}
|
||||||
|
|
||||||
</script>
|
|
@ -1,99 +1,108 @@
|
|||||||
{%- macro content_label(target) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if target == 'course' %}
|
|
||||||
课程编号
|
|
||||||
{% elseif target == 'page' %}
|
|
||||||
单页编号
|
|
||||||
{% elseif target == 'link' %}
|
|
||||||
链接地址
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.update','id':slide.id}) }}">
|
{% block content %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{%- macro content_label(target) %}
|
||||||
<legend>编辑轮播</legend>
|
{% if target == 'course' %}
|
||||||
</fieldset>
|
课程编号
|
||||||
|
{% elseif target == 'page' %}
|
||||||
|
单页编号
|
||||||
|
{% elseif target == 'link' %}
|
||||||
|
链接地址
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.update','id':slide.id}) }}">
|
||||||
<label class="layui-form-label">封面</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-inline">
|
<legend>编辑轮播</legend>
|
||||||
<img id="img-cover" class="kg-cover" src="{{ slide.cover }}">
|
</fieldset>
|
||||||
<input type="hidden" name="cover" value="{{ slide.cover }}">
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">封面</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<img id="img-cover" class="kg-cover" src="{{ slide.cover }}">
|
||||||
|
<input type="hidden" name="cover" value="{{ slide.cover }}">
|
||||||
|
</div>
|
||||||
|
<div class="layui-input-inline" style="padding-top:35px;">
|
||||||
|
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-input-inline" style="padding-top:35px;">
|
<div class="layui-form-item">
|
||||||
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
|
<label class="layui-form-label">背景色</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input class="layui-input" type="text" name="style[bg_color]" value="{{ slide.style['bg_color'] }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<div id="style-bg-color"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">背景色</label>
|
<input class="layui-input" type="text" name="title" value="{{ slide.title }}" lay-verify="required">
|
||||||
<div class="layui-input-inline">
|
</div>
|
||||||
<input class="layui-input" type="text" name="style[bg_color]" value="{{ slide.style['bg_color'] }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-form-item">
|
||||||
<div id="style-bg-color"></div>
|
<label class="layui-form-label">概要</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<textarea class="layui-textarea" name="summary">{{ slide.summary }}</textarea>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">{{ content_label(slide.target) }}</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">标题</label>
|
<input class="layui-input" type="text" name="content" value="{{ slide.content }}" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="title" value="{{ slide.title }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">排序</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">概要</label>
|
<input class="layui-input" type="text" name="priority" value="{{ slide.priority }}" lay-verify="number">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary">{{ slide.summary }}</textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">发布</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">{{ content_label(slide.target) }}</label>
|
<input type="radio" name="published" value="1" title="是" {% if slide.published == 1 %}checked{% endif %}>
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="published" value="0" title="否" {% if slide.published == 0 %}checked{% endif %}>
|
||||||
<input class="layui-input" type="text" name="content" value="{{ slide.content }}" lay-verify="required">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">排序</label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<input class="layui-input" type="text" name="priority" value="{{ slide.priority }}" lay-verify="number">
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% endblock %}
|
||||||
<label class="layui-form-label">发布</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="published" value="1" title="是" {% if slide.published == 1 %}checked{% endif %}>
|
|
||||||
<input type="radio" name="published" value="0" title="否" {% if slide.published == 0 %}checked{% endif %}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
{% block include_js %}
|
||||||
<label class="layui-form-label"></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
{{ js_include('admin/js/cover.upload.js') }}
|
||||||
|
|
||||||
{{ partial('partials/cover_uploader') }}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
layui.use(['jquery', 'colorpicker'], function () {
|
||||||
|
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var colorPicker = layui.colorpicker;
|
||||||
|
|
||||||
|
colorPicker.render({
|
||||||
|
elem: '#style-bg-color',
|
||||||
|
color: '{{ slide.style['bg_color'] }}',
|
||||||
|
predefine: true,
|
||||||
|
change: function (color) {
|
||||||
|
$('input[name="style[bg_color]"]').val(color);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
<script>
|
|
||||||
layui.use(['jquery', 'colorpicker'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var colorPicker = layui.colorpicker;
|
|
||||||
colorPicker.render({
|
|
||||||
elem: '#style-bg-color',
|
|
||||||
color: '{{ slide.style['bg_color'] }}',
|
|
||||||
predefine: true,
|
|
||||||
change: function (color) {
|
|
||||||
$('input[name="style[bg_color]"]').val(color);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,65 +1,71 @@
|
|||||||
{%- macro target_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 'course' %}
|
|
||||||
<span class="layui-badge layui-bg-green">课程</span>
|
|
||||||
{% elseif value == 'page' %}
|
|
||||||
<span class="layui-badge layui-bg-blue">单页</span>
|
|
||||||
{% elseif value == 'link' %}
|
|
||||||
<span class="layui-badge layui-bg-orange">链接</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<div class="kg-nav">
|
{% block content %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{%- macro target_info(value) %}
|
||||||
|
{% if value == 'course' %}
|
||||||
|
<span class="layui-badge layui-bg-green">课程</span>
|
||||||
|
{% elseif value == 'page' %}
|
||||||
|
<span class="layui-badge layui-bg-blue">单页</span>
|
||||||
|
{% elseif value == 'link' %}
|
||||||
|
<span class="layui-badge layui-bg-orange">链接</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a><cite>轮播管理</cite></a>
|
<a><cite>轮播管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="kg-nav-right">
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.slide.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加轮播
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.slide.add'}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加轮播
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table layui-form">
|
<table class="layui-table kg-table layui-form">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>编号</th>
|
|
||||||
<th>标题</th>
|
|
||||||
<th>目标类型</th>
|
|
||||||
<th>排序</th>
|
|
||||||
<th>发布</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.id }}</td>
|
<th>编号</th>
|
||||||
<td>{{ item.title }}</td>
|
<th>标题</th>
|
||||||
<td>{{ target_info(item.target) }}</td>
|
<th>目标类型</th>
|
||||||
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.slide.update','id':item.id}) }}"></td>
|
<th>排序</th>
|
||||||
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ url({'for':'admin.slide.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
<th>发布</th>
|
||||||
<td align="center">
|
<th>操作</th>
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.slide.edit','id':item.id}) }}">编辑</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.slide.delete','id':item.id}) }}">删除</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ item.id }}</td>
|
||||||
|
<td>{{ item.title }}</td>
|
||||||
|
<td>{{ target_info(item.target) }}</td>
|
||||||
|
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ url({'for':'admin.slide.update','id':item.id}) }}"></td>
|
||||||
|
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ url({'for':'admin.slide.update','id':item.id}) }}" {% if item.published == 1 %}checked{% endif %}></td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.slide.edit','id':item.id}) }}">编辑</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-delete" data-url="{{ url({'for':'admin.slide.delete','id':item.id}) }}">删除</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,53 +1,57 @@
|
|||||||
{% set course_id = course ? course.id : '' %}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.create'}) }}">
|
{% block content %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% set course_id = course ? course.id : '' %}
|
||||||
<legend>添加学员</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.create'}) }}">
|
||||||
<label class="layui-form-label">课程编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加学员</legend>
|
||||||
<input class="layui-input" type="text" name="course_id" value="{{ course_id }}" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">课程编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="course_id" value="{{ course_id }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<input class="layui-input" type="text" name="user_id" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="user_id" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">过期时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">过期时间</label>
|
<input class="layui-input" type="text" name="expiry_time" autocomplete="off" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="expiry_time" autocomplete="off" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['laydate'], function () {
|
<script>
|
||||||
|
|
||||||
var laydate = layui.laydate;
|
layui.use(['laydate'], function () {
|
||||||
|
|
||||||
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: 'input[name=expiry_time]',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
laydate.render({
|
|
||||||
elem: 'input[name=expiry_time]',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,52 +1,56 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.update'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑学员</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.update'}) }}">
|
||||||
<label class="layui-form-label">课程名称</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>编辑学员</legend>
|
||||||
<div class="layui-form-mid layui-word-aux">{{ course.title }}</div>
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">课程名称</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div class="layui-form-mid layui-word-aux">{{ course.title }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">学员名称</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">学员名称</label>
|
<div class="layui-form-mid layui-word-aux">{{ student.name }}</div>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">{{ student.name }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">过期时间</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">过期时间</label>
|
<input class="layui-input" type="text" name="expiry_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',relation.expiry_time) }}" lay-verify="required">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="expiry_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',relation.expiry_time) }}" lay-verify="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<input type="hidden" name="relation_id" value="{{ relation.id }}"/>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
</div>
|
||||||
<input type="hidden" name="relation_id" value="{{ relation.id }}"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
||||||
|
|
||||||
<script>
|
{% block inline_js %}
|
||||||
|
|
||||||
layui.use(['laydate'], function () {
|
<script>
|
||||||
|
|
||||||
var laydate = layui.laydate;
|
layui.use(['laydate'], function () {
|
||||||
|
|
||||||
|
var laydate = layui.laydate;
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: 'input[name=expiry_time]',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
|
||||||
laydate.render({
|
|
||||||
elem: 'input[name=expiry_time]',
|
|
||||||
type: 'datetime'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,36 +1,47 @@
|
|||||||
<table class="kg-table layui-table">
|
{% extends 'templates/main.volt' %}
|
||||||
<colgroup>
|
|
||||||
<col>
|
|
||||||
<col>
|
|
||||||
<col>
|
|
||||||
<col>
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>课时信息</th>
|
|
||||||
<th>终端信息</th>
|
|
||||||
<th>学习时长</th>
|
|
||||||
<th>活跃时间</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<p class="layui-elip">课程:{{ item.course.title }}</p>
|
|
||||||
<p class="layui-elip">章节:{{ item.chapter.title }}</p>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>类型:{{ item.client_type }}</p>
|
|
||||||
<p>地址:<a href="javascript:" class="kg-ip2region" title="查看位置" data-ip="{{ item.client_ip }}">{{ item.client_ip }}</a></p>
|
|
||||||
</td>
|
|
||||||
<td>{{ item.duration|duration }}</td>
|
|
||||||
<td>{{ date('Y-m-d H:i:s',item.active_time) }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{% block content %}
|
||||||
{{ partial('partials/ip2region') }}
|
|
||||||
|
<table class="layui-table kg-table">
|
||||||
|
<colgroup>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>课时信息</th>
|
||||||
|
<th>终端信息</th>
|
||||||
|
<th>学习时长</th>
|
||||||
|
<th>活跃时间</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for item in pager.items %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p class="layui-elip">课程:{{ item.course.title }}</p>
|
||||||
|
<p class="layui-elip">章节:{{ item.chapter.title }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>类型:{{ item.client_type }}</p>
|
||||||
|
<p>地址:<a href="javascript:" class="kg-ip2region" title="查看位置" data-ip="{{ item.client_ip }}">{{ item.client_ip }}</a></p>
|
||||||
|
</td>
|
||||||
|
<td>{{ item.duration|duration }}</td>
|
||||||
|
<td>{{ date('Y-m-d H:i:s',item.active_time) }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block include_js %}
|
||||||
|
|
||||||
|
{{ js_include('admin/js/ip2region.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,15 +1,19 @@
|
|||||||
{%- macro source_type_info(value) %}
|
{% extends 'templates/main.volt' %}
|
||||||
{% if value == 1 %}
|
|
||||||
<span class="layui-badge layui-bg-green">免费</span>
|
|
||||||
{% elseif value == 2 %}
|
|
||||||
<span class="layui-badge layui-bg-orange">付费</span>
|
|
||||||
{% elseif value == 3 %}
|
|
||||||
<span class="layui-badge layui-bg-blue">导入</span>
|
|
||||||
{% endif %}
|
|
||||||
{%- endmacro %}
|
|
||||||
|
|
||||||
<div class="kg-nav">
|
{% block content %}
|
||||||
<div class="kg-nav-left">
|
|
||||||
|
{%- macro source_type_info(value) %}
|
||||||
|
{% if value == 1 %}
|
||||||
|
<span class="layui-badge layui-bg-green">免费</span>
|
||||||
|
{% elseif value == 2 %}
|
||||||
|
<span class="layui-badge layui-bg-orange">付费</span>
|
||||||
|
{% elseif value == 3 %}
|
||||||
|
<span class="layui-badge layui-bg-blue">导入</span>
|
||||||
|
{% endif %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
<div class="kg-nav">
|
||||||
|
<div class="kg-nav-left">
|
||||||
<span class="layui-breadcrumb">
|
<span class="layui-breadcrumb">
|
||||||
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
|
||||||
{% if course %}
|
{% if course %}
|
||||||
@ -17,91 +21,97 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<a><cite>学员管理</cite></a>
|
<a><cite>学员管理</cite></a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="kg-nav-right">
|
<div class="kg-nav-right">
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.search'}) }}">
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.search'}) }}">
|
||||||
<i class="layui-icon layui-icon-search"></i>搜索学员
|
<i class="layui-icon layui-icon-search"></i>搜索学员
|
||||||
</a>
|
|
||||||
{% if course %}
|
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.add'},{'course_id':course.id}) }}">
|
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加学员
|
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% if course %}
|
||||||
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.add'}) }}">
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.add'},{'course_id':course.id}) }}">
|
||||||
<i class="layui-icon layui-icon-add-1"></i>添加学员
|
<i class="layui-icon layui-icon-add-1"></i>添加学员
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% else %}
|
||||||
|
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.add'}) }}">
|
||||||
|
<i class="layui-icon layui-icon-add-1"></i>添加学员
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="kg-table layui-table">
|
<table class="layui-table kg-table">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
|
||||||
<th>基本信息</th>
|
|
||||||
<th>学习情况</th>
|
|
||||||
<th>成员来源</th>
|
|
||||||
<th>有效期限</th>
|
|
||||||
<th>操作</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for item in pager.items %}
|
|
||||||
{% set learning_url = url({'for':'admin.student.learning'},{'course_id':item.course_id,'user_id':item.user_id,'plan_id':item.plan_id}) %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<th>基本信息</th>
|
||||||
<p>课程:<a href="{{ url({'for':'admin.student.list'},{'course_id':item.course.id}) }}">{{ item.course.title }}({{ item.course.id }})</a></p>
|
<th>学习情况</th>
|
||||||
<p>学员:<a href="{{ url({'for':'admin.student.list'},{'user_id':item.user_id}) }}">{{ item.user.name }}({{ item.user.id }})</a></p>
|
<th>成员来源</th>
|
||||||
</td>
|
<th>有效期限</th>
|
||||||
<td>
|
<th>操作</th>
|
||||||
<p>进度:{{ item.progress }}%</p>
|
|
||||||
<p>时长:{{ item.duration|duration }}</p>
|
|
||||||
</td>
|
|
||||||
<td>{{ source_type_info(item.source_type) }}</td>
|
|
||||||
<td>
|
|
||||||
<p>开始:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
|
|
||||||
<p>结束:{{ date('Y-m-d H:i:s',item.expiry_time) }}</p>
|
|
||||||
</td>
|
|
||||||
<td align="center">
|
|
||||||
<div class="layui-dropdown">
|
|
||||||
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url({'for':'admin.student.edit'},{'relation_id':item.id}) }}">编辑学员</a></li>
|
|
||||||
<li><a href="javascript:" class="kg-learning" data-url="{{ learning_url }}">学习记录</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for item in pager.items %}
|
||||||
|
{% set learning_url = url({'for':'admin.student.learning'},{'course_id':item.course_id,'user_id':item.user_id,'plan_id':item.plan_id}) %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<p>课程:<a href="{{ url({'for':'admin.student.list'},{'course_id':item.course.id}) }}">{{ item.course.title }}({{ item.course.id }})</a></p>
|
||||||
|
<p>学员:<a href="{{ url({'for':'admin.student.list'},{'user_id':item.user_id}) }}">{{ item.user.name }}({{ item.user.id }})</a></p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>进度:{{ item.progress }}%</p>
|
||||||
|
<p>时长:{{ item.duration|duration }}</p>
|
||||||
|
</td>
|
||||||
|
<td>{{ source_type_info(item.source_type) }}</td>
|
||||||
|
<td>
|
||||||
|
<p>开始:{{ date('Y-m-d H:i:s',item.create_time) }}</p>
|
||||||
|
<p>结束:{{ date('Y-m-d H:i:s',item.expiry_time) }}</p>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<div class="layui-dropdown">
|
||||||
|
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{{ url({'for':'admin.student.edit'},{'relation_id':item.id}) }}">编辑学员</a></li>
|
||||||
|
<li><a href="javascript:" class="kg-learning" data-url="{{ learning_url }}">学习记录</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
{{ partial('partials/pager') }}
|
{{ partial('partials/pager') }}
|
||||||
|
|
||||||
<script>
|
{% endblock %}
|
||||||
|
|
||||||
layui.use(['jquery', 'form'], function () {
|
{% block inline_js %}
|
||||||
|
|
||||||
var $ = layui.jquery;
|
<script>
|
||||||
|
|
||||||
$('.kg-learning').on('click', function () {
|
layui.use(['jquery', 'form'], function () {
|
||||||
var url = $(this).data('url');
|
|
||||||
layer.open({
|
var $ = layui.jquery;
|
||||||
id: 'xm-course',
|
|
||||||
type: 2,
|
$('.kg-learning').on('click', function () {
|
||||||
title: '学习记录',
|
var url = $(this).data('url');
|
||||||
resize: false,
|
layer.open({
|
||||||
area: ['900px', '450px'],
|
id: 'xm-course',
|
||||||
content: [url]
|
type: 2,
|
||||||
|
title: '学习记录',
|
||||||
|
resize: false,
|
||||||
|
area: ['900px', '450px'],
|
||||||
|
content: [url]
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
</script>
|
||||||
|
|
||||||
</script>
|
{% endblock %}
|
@ -1,40 +1,40 @@
|
|||||||
{% set course_id = request.get('course_id', 'int', '') %}
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.student.list'}) }}">
|
{% block content %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% set course_id = request.get('course_id', 'int', '') %}
|
||||||
<legend>搜索学员</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.student.list'}) }}">
|
||||||
<label class="layui-form-label">课程编号</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>搜索学员</legend>
|
||||||
<input class="layui-input" type="text" name="course_id" value="{{ course_id }}" placeholder="课程编号精确匹配">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">课程编号</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="course_id" value="{{ course_id }}" placeholder="课程编号精确匹配">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">用户编号</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">用户编号</label>
|
<input class="layui-input" type="text" name="user_id" placeholder="用户编号精确匹配">
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<input class="layui-input" type="text" name="user_id" placeholder="用户编号精确匹配">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">加入方式</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">加入方式</label>
|
<input type="radio" name="source_type" value="1" title="免费课程">
|
||||||
<div class="layui-input-block">
|
<input type="radio" name="source_type" value="2" title="付费课程">
|
||||||
<input type="radio" name="source_type" value="1" title="免费课程">
|
<input type="radio" name="source_type" value="3" title="后台导入">
|
||||||
<input type="radio" name="source_type" value="2" title="付费课程">
|
</div>
|
||||||
<input type="radio" name="source_type" value="3" title="后台导入">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="layui-btn" lay-submit="true">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="layui-btn" lay-submit="true">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
24
app/Http/Admin/Views/templates/layer.volt
Normal file
24
app/Http/Admin/Views/templates/layer.volt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN-Hans">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<meta name="csrf-token" content="{{ csrfToken.getToken() }}">
|
||||||
|
<title>管理后台</title>
|
||||||
|
{{ icon_link('favicon.ico') }}
|
||||||
|
{{ css_link('lib/layui/css/layui.css') }}
|
||||||
|
{{ css_link('admin/css/common.css') }}
|
||||||
|
{% block link_css %}{% endblock %}
|
||||||
|
{% block inline_css %}{% endblock %}
|
||||||
|
</head>
|
||||||
|
<body class="kg-body">
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
|
{{ js_include('lib/layui/layui.js') }}
|
||||||
|
{{ js_include('admin/js/common.js') }}
|
||||||
|
|
||||||
|
{% block include_js %}{% endblock %}
|
||||||
|
{% block inline_js %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,18 +1,26 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh-Hans-CN">
|
<html lang="zh-CN-Hans">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
<meta name="csrf-token" content="{{ csrfToken.getToken() }}">
|
<meta name="csrf-token" content="{{ csrfToken.getToken() }}">
|
||||||
<title>管理后台</title>
|
<title>管理后台</title>
|
||||||
{{ icon_link("favicon.ico") }}
|
{{ icon_link('favicon.ico') }}
|
||||||
{{ css_link('lib/layui/css/layui.css') }}
|
{{ css_link('lib/layui/css/layui.css') }}
|
||||||
{{ css_link('lib/layui/extends/dropdown.css') }}
|
{{ css_link('lib/layui/extends/dropdown.css') }}
|
||||||
{{ css_link('admin/css/common.css') }}
|
{{ css_link('admin/css/common.css') }}
|
||||||
{{ js_include('lib/layui/layui.js') }}
|
{% block link_css %}{% endblock %}
|
||||||
{{ js_include('admin/js/common.js') }}
|
{% block inline_css %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body class="kg-body">
|
<body class="kg-body">
|
||||||
{{ content() }}
|
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
|
{{ js_include('lib/layui/layui.js') }}
|
||||||
|
{{ js_include('admin/js/common.js') }}
|
||||||
|
|
||||||
|
{% block include_js %}{% endblock %}
|
||||||
|
{% block inline_js %}{% endblock %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,29 +1,30 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.create'}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>添加话题</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.create'}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<div class="layui-input-block">
|
<legend>添加话题</legend>
|
||||||
<input class="layui-input" type="text" name="title" lay-verify="required">
|
</fieldset>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label">简介</label>
|
<textarea class="layui-textarea" name="summary"></textarea>
|
||||||
<div class="layui-input-block">
|
</div>
|
||||||
<textarea class="layui-textarea" name="summary"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-form-item">
|
<div class="layui-input-block">
|
||||||
<label class="layui-form-label"></label>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<div class="layui-input-block">
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
</div>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|
||||||
</form>
|
{% endblock %}
|
@ -1,45 +1,58 @@
|
|||||||
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.update','id':topic.id}) }}">
|
{% extends 'templates/main.volt' %}
|
||||||
|
|
||||||
<fieldset class="layui-elem-field layui-field-title">
|
{% block content %}
|
||||||
<legend>编辑话题</legend>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.update','id':topic.id}) }}">
|
||||||
<label class="layui-form-label">标题</label>
|
|
||||||
<div class="layui-input-block">
|
<fieldset class="layui-elem-field layui-field-title">
|
||||||
<input class="layui-input" type="text" name="title" value="{{ topic.title }}" lay-verify="required">
|
<legend>编辑话题</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">标题</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input class="layui-input" type="text" name="title" value="{{ topic.title }}" lay-verify="required">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">简介</label>
|
<label class="layui-form-label">简介</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<textarea class="layui-textarea" name="summary">{{ topic.summary }}</textarea>
|
<textarea class="layui-textarea" name="summary">{{ topic.summary }}</textarea>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">相关课程</label>
|
<label class="layui-form-label">相关课程</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<div id="xm-course-ids"></div>
|
<div id="xm-course-ids"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
<button class="kg-submit layui-btn" lay-submit="true" lay-filter="go">提交</button>
|
||||||
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{{ js_include('lib/xm-select.js') }}
|
{% endblock %}
|
||||||
{{ js_include('admin/js/xm-course.js') }}
|
|
||||||
|
|
||||||
<script>
|
{% block include_js %}
|
||||||
|
|
||||||
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/all');
|
{{ js_include('lib/xm-select.js') }}
|
||||||
|
{{ js_include('admin/js/xm-course.js') }}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/all');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
</script>
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user