1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-28 21:31:37 +08:00

后台模板改成继承模式

This commit is contained in:
xiaochong0302 2020-08-07 20:19:07 +08:00
parent f589c5011a
commit 7b39e6d224
117 changed files with 5235 additions and 5038 deletions

View File

@ -1,75 +1,89 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>操作记录</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<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 %}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<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>
<th>用户编号</th>
<th>用户名称</th>
<th>用户IP</th>
<th>请求路由</th>
<th>请求路径</th>
<th>请求时间</th>
<th>请求内容</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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/ip2region') }}
{{ partial('partials/pager') }}
<script>
{% endblock %}
layui.use(['jquery', 'layer'], function () {
{% block include_js %}
var $ = layui.jquery;
var layer = layui.layer;
{{ js_include('admin/js/ip2region.js') }}
$('.kg-view').on('click', function () {
var url = $(this).data('url');
layer.open({
type: 2,
title: '请求内容',
resize: false,
area: ['640px', '360px'],
content: [url]
{% endblock %}
{% block inline_js %}
<script>
layui.use(['jquery', 'layer'], function () {
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 %}

View File

@ -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">
<legend>搜索记录</legend>
</fieldset>
{% block content %}
<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="用户编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.audit.list'}) }}">
<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="user_id" placeholder="用户编号精确匹配">
</div>
</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="user_name" placeholder="用户名称精确匹配">
<div class="layui-form-item">
<label class="layui-form-label">用户名称</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="req_route" placeholder="请求路由精确匹配">
<div class="layui-form-item">
<label class="layui-form-label">请求路由</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="req_path" placeholder="请求路径精确匹配">
<div class="layui-form-item">
<label class="layui-form-label">请求路径</label>
<div class="layui-input-block">
<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-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
<div class="layui-form-item">
<label class="layui-form-label">请求时间</label>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
</div>
<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 class="layui-form-mid"> -</div>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
<div class="layui-form-item">
<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>
</div>
</form>
<div class="layui-form-item">
<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>
{% endblock %}
</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 () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
lay('.time-range').each(function () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
});
});
});
});
</script>
</script>
{% endblock %}

View File

@ -1,12 +1,22 @@
<pre class="layui-code" id="kg-code"></pre>
{% extends 'templates/main.volt' %}
<script>
{% block content %}
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);
});
<pre class="layui-code" id="kg-code"></pre>
</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 %}

View File

@ -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">
<legend>添加分类</legend>
</fieldset>
{% block content %}
{% 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">
<label class="layui-form-label">父级</label>
<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>
<input class="layui-input" type="text" name="name" lay-verify="required">
</div>
</div>
{% endif %}
<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 class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<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-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<input type="radio" name="published" value="0" title="否">
<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="parent_id" value="{{ parent_id }}">
</div>
</div>
</div>
</form>
<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="parent_id" value="{{ parent_id }}">
</div>
</div>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑分类</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.category.update','id':category.id}) }}">
<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="name" value="{{ category.name }}" lay-verify="required">
</div>
</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="priority" value="{{ category.priority }}" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if category.published == 0 %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked{% endif %}>
<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-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 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>
</form>
</form>
{% endblock %}

View File

@ -1,5 +1,9 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
{% if parent.id > 0 %}
<a class="kg-back" href="{{ url({'for':'admin.category.list'}) }}">
@ -9,65 +13,67 @@
{% endif %}
<a><cite>分类管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<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 %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>层级</th>
<th>节点数</th>
<th>课程数</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>添加章节</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
</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="course_id" value="{{ course.id }}">
<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="course_id" value="{{ course.id }}">
</div>
</div>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>添加课时</legend>
</fieldset>
{% block content %}
<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 chapter in chapters %}
<option value="{{ chapter.id }}" {% if parent_id == chapter.id %}selected{% endif %}>{{ chapter.title }}</option>
{% endfor %}
</select>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.create'}) }}">
<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">
<select name="parent_id" lay-verify="required">
<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 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 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 class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">免费</label>
<div class="layui-input-block">
<input type="radio" name="free" value="1" title="是">
<input type="radio" name="free" value="0" title="否" checked="checked">
<div class="layui-form-item">
<label class="layui-form-label">免费</label>
<div class="layui-input-block">
<input type="radio" name="free" value="1" title="是">
<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-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="course_id" value="{{ course.id }}">
<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="course_id" value="{{ course.id }}">
</div>
</div>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑章节</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
<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="title" value="{{ chapter.title }}" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="{{ chapter.priority }}" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-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 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>
</form>
</form>
{% endblock %}

View File

@ -1,37 +1,91 @@
{%- macro content_title(model) %}
{% if model == 'vod' %}
点播信息
{% elseif model == 'live' %}
直播信息
{% elseif model == 'read' %}
文章信息
{% endif %}
{%- endmacro %}
{% extends 'templates/main.volt' %}
<fieldset class="layui-elem-field layui-field-title">
<legend>编辑课时</legend>
</fieldset>
{% block content %}
<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">
<li class="layui-this">基本信息</li>
<li>{{ content_title(course.model) }}</li>
</ul>
<fieldset class="layui-elem-field layui-field-title">
<legend>编辑课时</legend>
</fieldset>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('chapter/edit_lesson_basic') }}
</div>
<div class="layui-tab-item">
{% if course.model == 'vod' %}
{{ 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 class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">基本信息</li>
<li>{{ content_title(course.model) }}</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('chapter/edit_lesson_basic') }}
</div>
<div class="layui-tab-item">
{% if course.model == 'vod' %}
{{ 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>
{% 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 %}

View File

@ -1,26 +1,22 @@
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.update','id':chapter.id}) }}">
<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 class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ chapter.summary }}</textarea>
</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="priority" value="{{ chapter.priority }}" lay-verify="number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">免费</label>
<div class="layui-input-block">
@ -28,7 +24,6 @@
<input type="radio" name="free" value="0" title="否" {% if chapter.free == 0 %}checked="checked"{% endif %}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -36,5 +31,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>

View File

@ -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">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-block">
{% if live.start_time > 0 %}
<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">
{% else %}
<input class="layui-input" type="text" name="start_time" autocomplete="off" lay-verify="required">
{% endif %}
{% block content %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.chapter.content','id':chapter.id}) }}">
<div class="layui-form-item">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-block">
{% if live.start_time > 0 %}
<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 class="layui-form-item">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-block">
{% if live.end_time > 0 %}
<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">
{% else %}
<input class="layui-input" type="text" name="end_time" autocomplete="off" lay-verify="required">
{% endif %}
<div class="layui-form-item">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-block">
{% if live.end_time > 0 %}
<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">
{% else %}
<input class="layui-input" type="text" name="end_time" autocomplete="off" lay-verify="required">
{% endif %}
</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 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>
</form>
</form>
<form class="layui-form kg-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>推流测试</legend>
</fieldset>
<div class="layui-form-item">
<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">
<form class="layui-form kg-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>推流测试</legend>
</fieldset>
<div class="layui-form-item">
<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-input-block">
<button type="button" class="layui-btn" id="show-push-test">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button type="button" class="layui-btn" id="show-push-test">提交</button>
<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;
var layer = layui.layer;
var laydate = layui.laydate;
layui.use(['jquery', 'layer', 'laydate'], function () {
laydate.render({
elem: 'input[name=start_time]',
type: 'datetime'
});
var $ = layui.jquery;
var layer = layui.layer;
var laydate = layui.laydate;
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']
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>
</script>
{% endblock %}

View File

@ -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}) }}">
<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 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>
<input type="hidden" name="chapter_id" value="{{ chapter.id }}">
</div>
</div>
</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 = '![](' + json.data.src + ')';
vditor.insertValue(img);
}
},
value: $content.val()
});
$('.kg-submit').on('click', function () {
$content.val(vditor.getValue());
});
});
</script>
</form>

View File

@ -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') }}

View File

@ -1,74 +1,81 @@
{% if play_urls %}
<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 width="16%">操作</th>
</tr>
{% for item in play_urls %}
{% extends 'templates/main.volt' %}
{% block content %}
{% if play_urls %}
<fieldset class="layui-elem-field layui-field-title">
<legend>视频信息</legend>
</fieldset>
<table class="kg-table layui-table">
<tr>
<td>{{ item.format }}</td>
<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>
<th>格式</th>
<th>时长</th>
<th>分辨率</th>
<th>码率</th>
<th>大小</th>
<th width="16%">操作</th>
</tr>
{% endfor %}
</table>
<br>
{% endif %}
{% for item in play_urls %}
<tr>
<td>{{ item.format }}</td>
<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">
<legend>上传视频</legend>
</fieldset>
<fieldset class="layui-elem-field layui-field-title">
<legend>上传视频</legend>
</fieldset>
<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">
<label class="layui-form-label">视频文件</label>
<div class="layui-input-block">
<span class="layui-btn" id="upload-btn">选择视频</span>
<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>
<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">
<label class="layui-form-label">视频文件</label>
<div class="layui-input-block">
<span class="layui-btn" id="upload-btn">选择视频</span>
<input class="layui-hide" type="file" name="file" accept="video/*,audio/*">
</div>
</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="file_id" value="{{ vod.file_id }}" readonly="readonly" lay-verify="required">
<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 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 class="layui-form-item">
<label class="layui-form-label">文件编号</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="file_id" value="{{ vod.file_id }}" readonly="readonly" 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>
<input type="hidden" name="chapter_id" value="{{ chapter.id }}">
</div>
</div>
</form>
</form>
{% endblock %}
{{ partial('partials/media_uploader') }}
{{ partial('partials/media_preview') }}
{{ partial('partials/clipboard_tips') }}
{% block include_js %}
{{ 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 %}

View File

@ -1,5 +1,9 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a class="kg-back" href="{{ url({'for':'admin.course.chapters','id':course.id}) }}">
<i class="layui-icon layui-icon-return"></i> 返回
@ -8,53 +12,59 @@
<a><cite>{{ chapter.title }}</cite></a>
<a><cite>课时管理</cite></a>
</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 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' %}
{{ partial('chapter/lessons_vod') }}
{% elseif course.model == 'live' %}
{{ partial('chapter/lessons_live') }}
{% elseif course.model == 'read' %}
{{ partial('chapter/lessons_read') }}
{% endif %}
{% if course.model == 'vod' %}
{{ partial('chapter/lessons_vod') }}
{% elseif course.model == 'live' %}
{{ partial('chapter/lessons_live') }}
{% elseif course.model == 'read' %}
{{ partial('chapter/lessons_read') }}
{% endif %}
<script>
{% endblock %}
layui.use(['jquery', 'layer', 'form'], function () {
{% block inline_js %}
var $ = layui.jquery;
var layer = layui.layer;
var form = layui.form;
<script>
form.on('switch(free)', function (data) {
var checked = $(this).is(':checked');
var free = checked ? 1 : 0;
var url = $(this).data('url');
$.ajax({
type: 'POST',
url: url,
data: {free: free},
success: function (res) {
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();
}
layui.use(['jquery', 'layer', 'form'], function () {
var $ = layui.jquery;
var layer = layui.layer;
var form = layui.form;
form.on('switch(free)', function (data) {
var checked = $(this).is(':checked');
var free = checked ? 1 : 0;
var url = $(this).data('url');
$.ajax({
type: 'POST',
url: url,
data: {free: free},
success: function (res) {
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 %}

View File

@ -1,55 +1,61 @@
{%- macro live_time_info(attrs) %}
{% 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 %}
{% extends 'templates/main.volt' %}
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>直播时间</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in lessons %}
{% block content %}
{%- macro live_time_info(attrs) %}
{% 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="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>直播时间</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -1,46 +1,52 @@
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>字数</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in lessons %}
{% extends 'templates/main.volt' %}
{% block content %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>字数</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -1,63 +1,69 @@
{%- macro file_status(value) %}
{% 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 %}
{% extends 'templates/main.volt' %}
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>视频状态</th>
<th>视频时长</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in lessons %}
{% block content %}
{%- macro file_status(value) %}
{% 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="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>视频状态</th>
<th>视频时长</th>
<th>排序</th>
<th>免费</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>添加课程</legend>
</fieldset>
{% block content %}
<div class="layui-form-item">
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.create'}) }}">
<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="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 class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<div class="layui-form-mid layui-word-aux" id="model-tips"></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" 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-input-block">
<input class="layui-input" type="text" name="title" lay-verify="required">
<div class="layui-form-item" style="margin:25px 0px 35px 0px;">
<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 class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button id="kg-submit" class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button id="kg-submit" 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>
{% endblock %}
<script>
{% block inline_js %}
layui.use(['jquery', 'form'], function () {
<script>
var $ = layui.jquery;
var form = layui.form;
layui.use(['jquery', 'form'], function () {
var modelTips = {
vod: '通过音视频呈现课程内容,内容可视化,有图像有声音,适合大部分场景',
live: '通过直播呈现课程内容,交互性强,适合需要交互反馈、情绪表达的场景',
read: '通过图文呈现课程内容,简单直接,适合撰写文档、书籍、教程的场景'
};
var $ = layui.jquery;
var form = layui.form;
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>
});
</script>
{% endblock %}

View File

@ -1,58 +1,64 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<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>章节管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>课时数</th>
<th>排序</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in chapters %}
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>课时数</th>
<th>排序</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -1,29 +1,110 @@
<fieldset class="layui-elem-field layui-field-title">
<legend>编辑课程</legend>
</fieldset>
{% extends 'templates/main.volt' %}
<div class="layui-tab layui-tab-brief">
{% block content %}
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">基本信息</li>
<li>课程介绍</li>
<li>营销设置</li>
<li>相关课程</li>
</ul>
<fieldset class="layui-elem-field layui-field-title">
<legend>编辑课程</legend>
</fieldset>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('course/edit_basic') }}
</div>
<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 class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">基本信息</li>
<li>课程介绍</li>
<li>营销设置</li>
<li>相关课程</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('course/edit_basic') }}
</div>
<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>
{% 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 %}

View File

@ -1,12 +1,10 @@
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
<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="{{ course.title }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">封面</label>
<div class="layui-input-inline">
@ -17,21 +15,18 @@
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-block">
<div id="xm-category-ids"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">讲师</label>
<div class="layui-input-block">
<div id="xm-teacher-ids"></div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">难度</label>
<div class="layui-input-block">
@ -41,7 +36,6 @@
<input type="radio" name="level" value="senior" title="高级" {% if course.level == 'senior' %}checked{% endif %}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -49,59 +43,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>

View File

@ -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">
<label class="layui-form-label">详情</label>
<div class="layui-input-block">
<textarea name="details" class="layui-hide" id="kg-layedit">{{ course.details }}</textarea>
{% block content %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
<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 class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea name="summary" class="layui-textarea">{{ course.summary }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="keywords" value="{{ course.keywords }}" placeholder="多个关键字逗号分隔">
<div class="layui-form-item">
<label class="layui-form-label">关键字</label>
<div class="layui-input-block">
<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-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 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>
</div>
</form>
</form>
{{ partial('partials/layedit') }}
{% endblock %}

View File

@ -1,12 +1,10 @@
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
<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">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -14,11 +12,5 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>
{{ js_include('admin/js/xm-course.js') }}
<script>
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/all');
</script>

View File

@ -1,21 +1,19 @@
{% set free = course.market_price == 0 %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.course.update','id':course.id}) }}">
<div class="layui-form-item">
<label class="layui-form-label">模式</label>
<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="charge" title="收费" lay-filter="price-mode" {% if not 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 %}>
</div>
</div>
<div id="price-block" {% if free %}style="display:none;"{% endif %}>
<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="{{ course.market_price }}" lay-filter="number">
<input class="layui-input" type="text" name="market_price" value="{{ course.market_price }}" lay-verify="number">
</div>
<div class="layui-form-mid layui-word-aux">元</div>
</div>
@ -24,7 +22,7 @@
<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="{{ course.vip_price }}" lay-filter="number">
<input class="layui-input" type="text" name="vip_price" value="{{ course.vip_price }}" lay-verify="number">
</div>
<div class="layui-form-mid layui-word-aux">元</div>
</div>
@ -46,7 +44,6 @@
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -54,25 +51,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>
</form>

View File

@ -1,118 +1,124 @@
{%- macro model_info(value) %}
{% 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 %}
{% extends 'templates/main.volt' %}
{%- macro level_info(value) %}
难度:<span class="layui-badge layui-bg-gray">
{% if value == 'entry' %}
入门
{% elseif value == 'junior' %}
初级
{% elseif value == 'medium' %}
中级
{% elseif value == 'senior' %}
高级
{% endif %}
</span>
{%- endmacro %}
{% block content %}
{%- macro category_info(category) %}
{% 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 model_info(value) %}
{% 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 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 %}
{%- macro level_info(value) %}
难度:<span class="layui-badge layui-bg-gray">
{% if value == 'entry' %}
入门
{% elseif value == 'junior' %}
初级
{% elseif value == 'medium' %}
中级
{% elseif value == 'senior' %}
高级
{% endif %}
</span>
{%- endmacro %}
<div class="kg-nav">
<div class="kg-nav-left">
{%- macro category_info(category) %}
{% 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">
<a><cite>课程管理</cite></a>
</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 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">
<colgroup>
<col width="50%">
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>课程</th>
<th>课时数</th>
<th>用户数</th>
<th>价格</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col width="50%">
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<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) }}&nbsp;&nbsp;{{ teacher_info(item.teacher) }}&nbsp;&nbsp;{{ 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>
<th>课程</th>
<th>课时数</th>
<th>用户数</th>
<th>价格</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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) }}&nbsp;&nbsp;{{ teacher_info(item.teacher) }}&nbsp;&nbsp;{{ 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 %}

View File

@ -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">
<legend>搜索课程</legend>
</fieldset>
{% block content %}
<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="编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.course.list'}) }}">
<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="id" placeholder="编号精确匹配">
</div>
</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="title" placeholder="标题模糊匹配">
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<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-input-block">
<div id="xm-category-ids"></div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-block">
<div id="xm-category-ids"></div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">讲师</label>
<div class="layui-input-block">
<div id="xm-teacher-ids"></div>
<div class="layui-form-item">
<label class="layui-form-label">讲师</label>
<div class="layui-input-block">
<div id="xm-teacher-ids"></div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">模型</label>
<div class="layui-input-block">
<input type="radio" name="model" value="vod" title="点播">
<input type="radio" name="model" value="live" title="直播">
<input type="radio" name="model" value="read" title="图文">
<div class="layui-form-item">
<label class="layui-form-label">模型</label>
<div class="layui-input-block">
<input type="radio" name="model" value="vod" title="点播">
<input type="radio" name="model" value="live" title="直播">
<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-input-block">
<input type="radio" name="level" value="entry" title="入门">
<input type="radio" name="level" value="junior" title="初级">
<input type="radio" name="level" value="medium" title="中级">
<input type="radio" name="level" value="senior" title="高级">
<div class="layui-form-item">
<label class="layui-form-label">难度</label>
<div class="layui-input-block">
<input type="radio" name="level" value="entry" title="入门">
<input type="radio" name="level" value="junior" title="初级">
<input type="radio" name="level" value="medium" title="中级">
<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-input-block">
<input type="radio" name="free" value="1" title="是">
<input type="radio" name="free" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">免费</label>
<div class="layui-input-block">
<input type="radio" name="free" value="1" title="是">
<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-input-block">
<input type="radio" name="published" value="1" title="是">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是">
<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-input-block">
<input type="radio" name="deleted" value="1" title="是">
<input type="radio" name="deleted" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">删除</label>
<div class="layui-input-block">
<input type="radio" name="deleted" value="1" title="是">
<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-input-block">
<button class="layui-btn" lay-submit="true">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<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>
</div>
</form>
</form>
{% endblock %}
{{ js_include('lib/xm-select.js') }}
{% block include_js %}
<script>
{{ js_include('lib/xm-select.js') }}
xmSelect.render({
el: '#xm-category-ids',
name: 'xm_category_ids',
max: 5,
prop: {
name: 'name',
value: 'id'
},
data: {{ xm_categories|json_encode }}
});
{% endblock %}
xmSelect.render({
el: '#xm-teacher-ids',
name: 'xm_teacher_ids',
max: 5,
prop: {
name: 'name',
value: 'id'
},
data: {{ xm_teachers|json_encode }}
});
{% block inline_js %}
</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 %}

View File

@ -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">
<legend>添加群组</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.create'}) }}">
<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="name" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="about"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="about"></textarea>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程" disabled="disabled">
<input type="radio" name="type" value="chat" title="聊天" checked="checked">
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程" disabled="disabled">
<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-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 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>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑群组</legend>
</fieldset>
{% block content %}
<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 }}">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.group.update','id':group.id}) }}">
<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-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 class="layui-input-inline" style="padding-top:35px;">
<button id="change-avatar" class="layui-btn layui-btn-sm" type="button">更换</button>
<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="{{ group.name }}" lay-verify="required">
</div>
</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="name" value="{{ group.name }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<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-input-block">
<textarea class="layui-textarea" name="about">{{ group.about }}</textarea>
<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" value="{{ group.owner_id }}" lay-verify="number">
</div>
</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="owner_id" value="{{ group.owner_id }}" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked{% endif %}>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked{% endif %}>
<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>
</form>
<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>
{% endblock %}
</form>
{% block include_js %}
{{ partial('partials/avatar_uploader') }}
{{ js_include('admin/js/avatar.upload.js') }}
{% endblock %}

View File

@ -1,71 +1,77 @@
{%- macro type_info(value) %}
{% if value == 'course' %}
<span class="layui-badge layui-bg-green">课</span>
{% elseif value == 'chat' %}
<span class="layui-badge layui-bg-blue">聊</span>
{% endif %}
{%- endmacro %}
{% extends 'templates/main.volt' %}
{%- macro owner_info(owner) %}
{% if owner %}
{{ owner.name }}{{ owner.id }}
{% else %}
未设置
{% endif %}
{%- endmacro %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
{%- macro type_info(value) %}
{% 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">
<a><cite>群组管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>群主</th>
<th>成员</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>群主</th>
<th>成员</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>搜索群组</legend>
</fieldset>
{% block content %}
<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="群组编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.group.list'}) }}">
<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="id" placeholder="群组编号精确匹配">
</div>
</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="name" placeholder="群组名称模糊匹配">
<div class="layui-form-item">
<label class="layui-form-label">群组名称</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="user_id" placeholder="群主编号精确匹配">
<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 class="layui-form-item">
<label class="layui-form-label">课程编号</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="course_id" placeholder="课程编号精确匹配">
<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" placeholder="课程编号精确匹配">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程">
<input type="radio" name="type" value="chat" title="聊天">
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="type" value="course" title="课程">
<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-input-block">
<input type="radio" name="published" value="1" title="是">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是">
<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-input-block">
<input type="radio" name="deleted" value="1" title="是">
<input type="radio" name="deleted" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">删除</label>
<div class="layui-input-block">
<input type="radio" name="deleted" value="1" title="是">
<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-input-block">
<button class="layui-btn" lay-submit="true">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>添加帮助</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<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-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 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>
</div>
</form>
</form>
{{ partial('partials/layedit') }}
{% endblock %}

View File

@ -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">
<legend>编辑帮助</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.help.update','id':help.id}) }}">
<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="text" name="title" value="{{ help.title }}" class="layui-input" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea name="content" class="layui-hide" id="kg-layedit">{{ help.content }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="{{ help.priority }}" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if help.published == 0 %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked{% endif %}>
<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-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 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>
</div>
</form>
</form>
{{ partial('partials/layedit') }}
{% endblock %}

View File

@ -1,57 +1,63 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>帮助管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>标题</th>
<th>创建时间</th>
<th>更新时间</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in helps %}
<table class="kg-table layui-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>标题</th>
<th>创建时间</th>
<th>更新时间</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -1,6 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="zh-CN-Hans">
<head>
<meta charset="utf-8">
<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('admin/js/index.js') }}
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">COURSE ADMIN</div>
<div class="kg-side-menu-bar">
@ -42,7 +38,6 @@
</li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
{% for key,level in left_menus %}
@ -61,16 +56,12 @@
{% endfor %}
</div>
</div>
<div class="layui-body">
<iframe name="content" style="width:100%;height:100%;border:0;" src="{{ url({'for':'admin.main'}) }}"></iframe>
</div>
<div class="layui-footer">
© 2020 <a href="http://koogua.com"><b>koogua.com</b></a> all rights reserved
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
{% extends 'templates/main.volt' %}
{% block content %}
{% endblock %}

View File

@ -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">
<legend>添加导航</legend>
</fieldset>
{% block content %}
{% 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">
<label class="layui-form-label">父级</label>
<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>
<input class="layui-input" type="text" name="name" lay-verify="required">
</div>
</div>
{% endif %}
<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 class="layui-form-item">
<label class="layui-form-label">地址</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="url" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="10" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">位置</label>
<div class="layui-input-block">
<input type="radio" name="position" value="top" title="顶部" checked="checked">
<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-input-block">
<input type="radio" name="position" value="top" title="顶部" checked="checked">
<input type="radio" name="position" value="bottom" title="底部">
<div class="layui-form-item">
<label class="layui-form-label">目标</label>
<div class="layui-input-block">
<input type="radio" name="target" value="_blank" title="新窗口" checked="checked">
<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-input-block">
<input type="radio" name="target" value="_blank" title="新窗口" checked="checked">
<input type="radio" name="target" value="_self" title="原窗口">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<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-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<input type="radio" name="published" value="0" title="否">
<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="parent_id" value="{{ parent_id }}">
</div>
</div>
</div>
</form>
<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="parent_id" value="{{ parent_id }}">
</div>
</div>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑导航</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.nav.update','id':nav.id}) }}">
<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="name" value="{{ nav.name }}" lay-verify="required">
</div>
</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="url" value="{{ nav.url }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">地址</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="priority" value="{{ nav.priority }}" lay-verify="number">
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="position" value="top" title="顶部" {% if nav.position == 'top' %}checked{% endif %}>
<input type="radio" name="position" value="bottom" title="底部" {% if nav.position == 'bottom' %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">位置</label>
<div class="layui-input-block">
<input type="radio" name="position" value="top" title="顶部" {% if nav.position == 'top' %}checked{% endif %}>
<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-input-block">
<input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked{% endif %}>
<input type="radio" name="target" value="_self" title="原窗口" {% if nav.target == '_self' %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">目标</label>
<div class="layui-input-block">
<input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked{% endif %}>
<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-input-block">
<input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if nav.published == 0 %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked{% endif %}>
<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-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 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>
</form>
</form>
{% endblock %}

View File

@ -1,21 +1,25 @@
{%- macro position_info(value) %}
{% if value == 'top' %}
<span class="layui-badge layui-bg-green">顶部</span>
{% elseif value == 'bottom' %}
<span class="layui-badge layui-bg-blue">底部</span>
{% endif %}
{%- endmacro %}
{% extends 'templates/main.volt' %}
{%- 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 %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
{%- macro position_info(value) %}
{% 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">
{% if parent.id > 0 %}
<a class="kg-back" href="{{ url({'for':'admin.nav.list'}) }}">
@ -25,68 +29,70 @@
{% endif %}
<a><cite>导航管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<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 %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>层级</th>
<th>节点数</th>
<th>位置</th>
<th>目标</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -1,57 +1,63 @@
{{ partial('order/macro') }}
{% extends 'templates/main.volt' %}
<div class="kg-nav">
<div class="kg-nav-left">
{% block content %}
{{ partial('order/macro') }}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>订单管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>商品信息</th>
<th>买家信息</th>
<th>订单金额</th>
<th>订单状态</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<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>
<th>商品信息</th>
<th>买家信息</th>
<th>订单金额</th>
<th>订单状态</th>
<th>创建时间</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>搜索订单</legend>
</fieldset>
{% block content %}
<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="用户编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.order.list'}) }}">
<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="owner_id" placeholder="用户编号精确匹配">
</div>
</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="sn" placeholder="订单编号精确匹配">
<div class="layui-form-item">
<label class="layui-form-label">订单编号</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="item_type" value="course" title="课程">
<input type="radio" name="item_type" value="package" title="套餐">
<input type="radio" name="item_type" value="reward" title="赞赏">
<input type="radio" name="item_type" value="vip" title="会员">
<input type="radio" name="item_type" value="test" title="测试">
<div class="layui-form-item">
<label class="layui-form-label">订单类型</label>
<div class="layui-input-block">
<input type="radio" name="item_type" value="course" title="课程">
<input type="radio" name="item_type" value="package" title="套餐">
<input type="radio" name="item_type" value="reward" title="赞赏">
<input type="radio" name="item_type" value="vip" title="会员">
<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-input-block">
<input type="radio" name="status" value="pending" title="待支付">
<input type="radio" name="status" value="finished" title="已完成">
<input type="radio" name="status" value="closed" title="已关闭">
<input type="radio" name="status" value="refunded" title="已退款">
<div class="layui-form-item">
<label class="layui-form-label">订单状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待支付">
<input type="radio" name="status" value="finished" title="已完成">
<input type="radio" name="status" value="closed" title="已关闭">
<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-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
<div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
</div>
<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 class="layui-form-mid"> - </div>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
<div class="layui-form-item">
<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>
</div>
</form>
<div class="layui-form-item">
<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>
{% endblock %}
</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 () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
lay('.time-range').each(function () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
});
});
});
});
</script>
</script>
{% endblock %}

View File

@ -1,73 +1,82 @@
{{ partial('order/macro') }}
{{ partial('trade/macro') }}
{{ partial('refund/macro') }}
{% extends 'templates/main.volt' %}
{{ 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>
{% endif %}
{% if trades.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 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}) %}
<div class="kg-text-center">
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
</div>
{% if refunds.count() > 0 %}
<fieldset class="layui-elem-field layui-field-title">
<legend>退款信息</legend>
</fieldset>
<table class="layui-table kg-table">
<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>
<th>退款序号</th>
<th>退款金额</th>
<th>退款原因</th>
<th>退款状态</th>
<th>创建时间</th>
<th></th>
</tr>
{% endfor %}
</table>
<br>
{% endif %}
{% 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>
{% 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 %}

View File

@ -1,14 +1,20 @@
{{ partial('order/macro') }}
{% extends 'templates/main.volt' %}
<table class="kg-table layui-table">
<tr>
<td>状态</td>
<td>时间</td>
</tr>
{% for item in status_history %}
{% block content %}
{{ partial('order/macro') }}
<table class="layui-table kg-table">
<tr>
<td>{{ order_status(item.status) }}</td>
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
<td>状态</td>
<td>时间</td>
</tr>
{% endfor %}
</table>
{% for item in status_history %}
<tr>
<td>{{ order_status(item.status) }}</td>
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}

View File

@ -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">
<legend>添加套餐</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
</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 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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑套餐</legend>
</fieldset>
{% block content %}
<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="{{ package.title }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<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>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.package.update','id':package.id}) }}">
<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="title" value="{{ package.title }}" lay-verify="required">
</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-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 class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ package.summary }}</textarea>
</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 class="layui-form-item">
<label class="layui-form-label">相关课程</label>
<div class="layui-input-block">
<div id="xm-course-ids"></div>
</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') }}
{{ js_include('admin/js/xm-course.js') }}
{% block include_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;
var layer = layui.layer;
<script>
$('.kg-guiding').on('click', function () {
var xmCourseIds = $('input[name=xm_course_ids]').val();
var url = '/admin/package/guiding?xm_course_ids='+xmCourseIds;
layer.open({
id: 'xm-course',
type: 2,
title: '价格参考',
resize: false,
area: ['720px', '400px'],
content: [url]
xmCourse({{ xm_courses|json_encode }}, '/admin/xm/course/paid');
layui.use(['jquery', 'layer'], function () {
var $ = layui.jquery;
var layer = layui.layer;
$('.kg-guiding').on('click', function () {
var xmCourseIds = $('input[name=xm_course_ids]').val();
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 %}

View File

@ -1,40 +1,47 @@
{{ partial('course/expiry_macro') }}
{% extends 'templates/main.volt' %}
<table class="kg-table layui-table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th>标题</th>
<th>课时数</th>
<th>有效期</th>
<th>价格</th>
</tr>
</thead>
<tbody>
{% for item in courses %}
{% block content %}
{{ partial('course/expiry_macro') }}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<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>
<th>标题</th>
<th>课时数</th>
<th>有效期</th>
<th>价格</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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">
建议市场价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.market_price }}</span>
&nbsp;&nbsp;
建议会员价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.vip_price }}</span>
</div>
<br>
<div class="kg-price-guiding">
建议市场价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.market_price }}</span>
&nbsp;&nbsp;
建议会员价:<span class="layui-badge layui-bg-red">¥{{ guiding_price.vip_price }}</span>
</div>
<br>
{% endblock %}

View File

@ -1,58 +1,64 @@
<div class="kg-nav">
<div class="kg-nav-left">
<span c.lass="layui-breadcrumb">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>套餐管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>标题</th>
<th>课程数</th>
<th>市场价</th>
<th>会员价</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>标题</th>
<th>课程数</th>
<th>市场价</th>
<th>会员价</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>搜索套餐</legend>
</fieldset>
{% block content %}
<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="编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.package.list'}) }}">
<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="id" placeholder="编号精确匹配">
</div>
</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="title" placeholder="标题模糊匹配">
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是">
<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-input-block">
<input type="radio" name="deleted" value="1" title="是">
<input type="radio" name="deleted" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">删除</label>
<div class="layui-input-block">
<input type="radio" name="deleted" value="1" title="是">
<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-input-block">
<button class="layui-btn" lay-submit="true">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>添加单页</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea name="content" class="layui-hide" id="kg-layedit"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" checked="checked">
<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-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 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>
</div>
</form>
{{ partial('partials/layedit') }}
{% endblock %}

View File

@ -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">
<legend>编辑单页</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.page.update','id':page.id}) }}">
<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="text" name="title" value="{{ page.title }}" class="layui-input" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<textarea name="content" class="layui-hide" id="kg-layedit">{{ page.content }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if page.published == 0 %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked{% endif %}>
<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-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 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>
</div>
</form>
{{ partial('partials/layedit') }}
</form>
{% endblock %}

View File

@ -1,56 +1,62 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>单页管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>标题</th>
<th>创建时间</th>
<th>更新时间</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>标题</th>
<th>创建时间</th>
<th>更新时间</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -1,14 +1,20 @@
<table class="kg-table layui-table">
<tr>
<th>国家</th>
<th>省份</th>
<th>城市</th>
<th>运营商</th>
</tr>
<tr>
<td>{{ region.country }}</td>
<td>{{ region.province }}</td>
<td>{{ region.city }}</td>
<td>{{ region.isp }}</td>
</tr>
</table>
{% extends 'templates/main.volt' %}
{% block content %}
<table class="kg-table layui-table">
<tr>
<th>国家</th>
<th>省份</th>
<th>城市</th>
<th>运营商</th>
</tr>
<tr>
<td>{{ region.country }}</td>
<td>{{ region.province }}</td>
<td>{{ region.city }}</td>
<td>{{ region.isp }}</td>
</tr>
</table>
{% endblock %}

View File

@ -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">
<div class="layui-input-block">
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
</div>
</div>
{% block content %}
<div class="layui-form-item">
<div class="layui-input-block">
<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">
<form class="kg-login-form layui-form" method="POST" action="{{ url({'for':'admin.login'}) }}">
<div 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>
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
</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 class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
</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>
if (window !== top) {
top.location.href = window.location.href;
}
</script>
{% if captcha.enabled == 1 %}
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
{% block inline_js %}
<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');
}
}
);
});
if (window !== top) {
top.location.href = window.location.href;
}
</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 %}

View File

@ -1,57 +1,63 @@
{{ partial('refund/macro') }}
{% extends 'templates/main.volt' %}
<div class="kg-nav">
<div class="kg-nav-left">
{% block content %}
{{ partial('refund/macro') }}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a><cite>退款管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>商品信息</th>
<th>买家信息</th>
<th>退款金额</th>
<th>退款状态</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="10%">
</colgroup>
<thead>
<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>
<th>商品信息</th>
<th>买家信息</th>
<th>退款金额</th>
<th>退款状态</th>
<th>创建时间</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>搜索退款</legend>
</fieldset>
{% block content %}
<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="订单编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.refund.list'}) }}">
<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="order_id" placeholder="订单编号精确匹配">
</div>
</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="owner_id" placeholder="用户编号精确匹配">
<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 class="layui-form-item">
<label class="layui-form-label">退款状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待处理">
<input type="radio" name="status" value="canceled" title="已取消">
<input type="radio" name="status" value="approved" title="已审核">
<input type="radio" name="status" value="refused" title="已拒绝">
<input type="radio" name="status" value="finished" title="已完成">
<div class="layui-form-item">
<label class="layui-form-label">退款状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="pending" title="待处理">
<input type="radio" name="status" value="canceled" title="已取消">
<input type="radio" name="status" value="approved" title="已审核">
<input type="radio" name="status" value="refused" title="已拒绝">
<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-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
<div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="start_time" autocomplete="off">
</div>
<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 class="layui-form-mid"> - </div>
<div class="layui-input-inline">
<input class="layui-input time-range" type="text" name="end_time" autocomplete="off">
<div class="layui-form-item">
<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>
</div>
</form>
<div class="layui-form-item">
<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>
{% endblock %}
</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 () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
lay('.time-range').each(function () {
laydate.render({
elem: this,
type: 'datetime',
trigger: 'click'
});
});
});
});
</script>
</script>
{% endblock %}

View File

@ -1,82 +1,92 @@
{{ partial('order/macro') }}
{{ partial('trade/macro') }}
{{ partial('refund/macro') }}
{% extends 'templates/main.volt' %}
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':refund.id}) %}
{% set refund_review_url = url({'for':'admin.refund.review','id':refund.id}) %}
{% block content %}
<fieldset class="layui-elem-field layui-field-title">
<legend>退款信息</legend>
</fieldset>
{{ partial('order/macro') }}
{{ partial('trade/macro') }}
{{ partial('refund/macro') }}
<table class="kg-table layui-table">
<tr>
<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>
{% set refund_sh_url = url({'for':'admin.refund.status_history','id':refund.id}) %}
{% set refund_review_url = url({'for':'admin.refund.review','id':refund.id}) %}
<br>
<fieldset class="layui-elem-field layui-field-title">
<legend>退款信息</legend>
</fieldset>
{% 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="拒绝">
<table class="layui-table kg-table">
<tr>
<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>
{% 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 class="layui-form-item">
<label class="layui-form-label">审核说明</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="review_note" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">审核说明</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="review_note" lay-verify="required">
</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 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>
{% else %}
<div class="kg-text-center">
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
</div>
</form>
{% else %}
<div class="kg-text-center">
<button class="layui-btn layui-bg-gray kg-back">返回上页</button>
</div>
{% endif %}
{% 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 %}

View File

@ -1,14 +1,20 @@
{{ partial('refund/macro') }}
{% extends 'templates/main.volt' %}
<table class="kg-table layui-table">
<tr>
<td>状态</td>
<td>时间</td>
</tr>
{% for item in status_history %}
{% block content %}
{{ partial('refund/macro') }}
<table class="kg-table layui-table">
<tr>
<td>{{ refund_status(item.status) }}</td>
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
<td>状态</td>
<td>时间</td>
</tr>
{% endfor %}
</table>
{% for item in status_history %}
<tr>
<td>{{ refund_status(item.status) }}</td>
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}

View File

@ -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">
<legend>编辑评价</legend>
</fieldset>
{% block content %}
<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 }}"/>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.review.update','id':review.id}) }}">
<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">
<div id="rating">{{ review.rating }}</div>
<input type="hidden" name="rating" value="{{ review.rating }}"/>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">评价</label>
<div class="layui-input-block">
<textarea name="content" class="layui-textarea" lay-verify="required">{{ review.content }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">评价</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="published" value="1" title="是" {% if review.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if review.published == 0 %}checked="checked"{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if review.published == 1 %}checked="checked"{% endif %}>
<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-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 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>
</form>
</form>
{% endblock %}
<script>
{% block inline_js %}
layui.use(['jquery', 'rate'], function () {
<script>
var $ = layui.jquery;
var rate = layui.rate;
layui.use(['jquery', 'rate'], function () {
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 %}

View File

@ -1,5 +1,9 @@
<div class="kg-nav">
<div class="kg-nav-left">
{% extends 'templates/main.volt' %}
{% block content %}
<div class="kg-nav">
<div class="kg-nav-left">
<span class="layui-breadcrumb">
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
{% if course %}
@ -7,61 +11,63 @@
{% endif %}
<a><cite>评价管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col width="10%">
<col width="10%">
</colgroup>
<thead>
<tr>
<th>內容</th>
<th>用户</th>
<th>时间</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col width="10%">
<col width="10%">
</colgroup>
<thead>
<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>
<th>內容</th>
<th>用户</th>
<th>时间</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>搜索评价</legend>
</fieldset>
{% block content %}
<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="评价编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.review.list'}) }}">
<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="id" placeholder="评价编号精确匹配">
</div>
</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="course_id" placeholder="课程编号精确匹配">
<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" placeholder="课程编号精确匹配">
</div>
</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="owner_id" placeholder="用户编号精确匹配">
<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 class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是">
<input type="radio" name="published" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">发布</label>
<div class="layui-input-block">
<input type="radio" name="published" value="1" title="是">
<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-input-block">
<input type="radio" name="deleted" value="1" title="是">
<input type="radio" name="deleted" value="0" title="否">
<div class="layui-form-item">
<label class="layui-form-label">删除</label>
<div class="layui-input-block">
<input type="radio" name="deleted" value="1" title="是">
<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-input-block">
<button class="layui-btn" lay-submit="true">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>添加角色</legend>
</fieldset>
{% block content %}
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="name" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.create'}) }}">
<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="name" lay-verify="required">
</div>
</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="summary" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="summary" lay-verify="required">
</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 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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑角色</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.role.update','id':role.id}) }}">
<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="name" value="{{ role.name }}" {% 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-input-block">
<input class="layui-input" type="text" name="summary" value="{{ role.summary }}" {% if role.type == 'system' %}readonly{% endif %} lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<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-input-block">
{% for key,level in auth_nodes %}
<table class="layui-table">
{% for key2,level2 in level.children %}
<tr>
{% if key2 == 0 %}
<td width="15%" rowspan="{{ level.children|length }}">{{ level.title }}</td>
{% endif %}
<td width="15%">{{ level2.title }}</td>
<td>
{% for level3 in level2.children %}
<input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked{% endif %}>
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
{% endfor %}
<div class="layui-form-item">
<label class="layui-form-label">权限</label>
<div class="layui-input-block">
{% for key,level in auth_nodes %}
<table class="layui-table">
{% for key2,level2 in level.children %}
<tr>
{% if key2 == 0 %}
<td width="15%" rowspan="{{ level.children|length }}">{{ level.title }}</td>
{% endif %}
<td width="15%">{{ level2.title }}</td>
<td>
{% for level3 in level2.children %}
<input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked{% endif %}>
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
{% endfor %}
</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 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>
</div>
</form>
</form>
{% endblock %}

View File

@ -1,62 +1,68 @@
{%- 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 %}
{% extends 'templates/main.volt' %}
<div class="kg-nav">
<div class="kg-nav-left">
{% block content %}
{%- 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">
<a><cite>角色管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>类型</th>
<th>成员数</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in roles %}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>名称</th>
<th>类型</th>
<th>成员数</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>验证码配置</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.captcha'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>验证码配置</legend>
</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 class="layui-form-item">
<label class="layui-form-label">Secret Key</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="secret_key" value="{{ captcha.secret_key }}" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">Secret Key</label>
<div class="layui-input-block">
<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-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 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>
</form>
</form>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.captcha'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>验证码测试</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<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>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.captcha'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>验证码测试</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<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>
<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>
</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-input-inline" style="width:200px;">
<span id="back-verify-btn" class="layui-btn layui-btn-primary layui-btn-fluid" disabled="true" lay-submit="true" lay-filter="back-verify">后台验证</span>
<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="ticket">
<input type="hidden" name="rand">
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-inline" style="width:200px;">
<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>
<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>
<input type="hidden" name="ticket">
<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;
var form = layui.form;
var layer = layui.layer;
layui.use(['jquery', 'form', 'layer'], function () {
var captcha = new TencentCaptcha(
$('#front-captcha-btn')[0],
$('#front-captcha-btn').data('app-id'),
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');
}
}
);
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
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');
var captcha = new TencentCaptcha(
$('#front-captcha-btn')[0],
$('#front-captcha-btn').data('app-id'),
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');
}
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 %}

View File

@ -1,14 +1,84 @@
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">推流配置</li>
<li>拉流配置</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('setting/live_push') }}
</div>
<div class="layui-tab-item">
{{ partial('setting/live_pull') }}
{% extends 'templates/main.volt' %}
{% block content %}
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">推流配置</li>
<li>拉流配置</li>
</ul>
<div class="layui-tab-content">
<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>
{% 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 %}

View File

@ -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">
<legend>基础配置</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">拉流协议</label>
<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 %}>
</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="pull_domain" value="{{ live.pull_domain }}" layui-verify="required">
</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">
@ -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 %}>
</div>
</div>
<div id="pull-auth-block" {% if live.pull_auth_enabled == '0' %}style="display:none;"{% endif %}>
<div id="pull-auth-block" {{ pull_auth_display }}>
<div class="layui-form-item">
<label class="layui-form-label">鉴权密钥</label>
<div class="layui-input-block">
@ -45,11 +42,9 @@
</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">
@ -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 %}>
</div>
</div>
<table class="kg-table layui-table layui-form" id="ptt-block" {% if live.pull_trans_enabled == '0' %}style="display:none;"{% endif %}>
<table class="layui-table kg-table layui-form" id="ptt-block" {{ ppt_display }}>
<colgroup>
<col>
<col>
@ -94,7 +88,6 @@
</tr>
</tbody>
</table>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -102,22 +95,18 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>
<form class="layui-form kg-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>拉流测试</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">Stream Name</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -125,46 +114,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>
</form>

View File

@ -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">
<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="push_domain" value="{{ live.push_domain }}" layui-verify="required">
</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">
@ -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 %}>
</div>
</div>
<div id="push-auth-block" {% if live.push_auth_enabled == '0' %}style="display:none;"{% endif %}>
<div id="push-auth-block" {{ push_auth_display }}>
<div class="layui-form-item">
<label class="layui-form-label">鉴权密钥</label>
<div class="layui-input-block">
@ -37,7 +34,6 @@
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -45,22 +41,18 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</form>
<form class="layui-form kg-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>推流测试</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">Stream Name</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="stream_name" value="test" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -68,36 +60,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>
</form>

View File

@ -1,48 +1,52 @@
<form class="layui-form kg-form">
{% extends 'templates/main.volt' %}
<fieldset class="layui-elem-field layui-field-title">
<legend>手机推流</legend>
</fieldset>
{% block content %}
<div class="layui-form-item">
<div class="kg-text-center">
<img class="kg-qrcode" src="{{ qrcode }}" alt="二维码图片">
</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>
<form class="layui-form kg-form">
<fieldset class="layui-elem-field layui-field-title">
<legend>手机推流</legend>
</fieldset>
<div class="layui-form-item">
<div class="kg-text-center">
<img class="kg-qrcode" src="{{ qrcode }}" alt="二维码图片">
</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 %}

View File

@ -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">
<legend>邮件配置</legend>
</fieldset>
{% block content %}
<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_email" value="{{ mailer.smtp_from_email }}">
</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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.mailer'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>邮件配置</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">SMTP帐号</label>
<label class="layui-form-label">发送邮箱</label>
<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 class="layui-form-item">
<label class="layui-form-label">SMTP密码</label>
<label class="layui-form-label">发送人</label>
<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 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 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>
</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" lay-verify="email" placeholder="请先提交相关配置,再进行邮件测试哦!">
<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>
<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 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>
<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;
var form = layui.form;
<script>
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 %}

View File

@ -1,14 +1,57 @@
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">支付宝</li>
<li>微信支付</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('setting/pay_alipay') }}
</div>
<div class="layui-tab-item">
{{ partial('setting/pay_wxpay') }}
{% extends 'templates/main.volt' %}
{% block content %}
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">支付宝</li>
<li>微信支付</li>
</ul>
<div class="layui-tab-content">
<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>
{% 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 %}

View File

@ -1,5 +1,4 @@
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
<div class="layui-form-item">
<label class="layui-form-label">开启支付</label>
<div class="layui-input-block">
@ -7,14 +6,12 @@
<input type="radio" name="enabled" value="0" title="否" {% if alipay.enabled == "0" %}checked{% endif %}>
</div>
</div>
<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="{{ alipay.app_id }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Public Key</label>
<div class="layui-input-block">
@ -28,14 +25,12 @@
<textarea class="layui-textarea" name="private_key" lay-verify="required">{{ alipay.private_key }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Notify Url</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -44,29 +39,24 @@
<input type="hidden" name="section" value="pay.alipay">
</div>
</div>
</form>
<form class="layui-form kg-form">
<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="subject" value="支付测试0.01元" readonly="true">
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="readonly">
</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="total_amount" value="0.01" readonly="true">
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -74,27 +64,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>
</form>

View File

@ -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 %}
<script>
<div id="qrcode">
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
</div>
layui.use(['jquery'], function () {
<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>
{% 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');
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');
clearInterval(interval);
}
},
error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
}
},
error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
}
});
}, 5000);
});
}, 5000);
});
});
</script>
</script>
{% endif %}
{% endif %}
{% endblock %}

View File

@ -1,5 +1,4 @@
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.pay'}) }}">
<div class="layui-form-item">
<label class="layui-form-label">开启支付</label>
<div class="layui-input-block">
@ -7,35 +6,30 @@
<input type="radio" name="enabled" value="0" title="否" {% if wxpay.enabled == "0" %}checked{% endif %}>
</div>
</div>
<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="{{ wxpay.app_id }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Mch ID</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="mch_id" value="{{ wxpay.mch_id }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Private Key</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="key" value="{{ wxpay.key }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Notify Url</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="notify_url" value="{{ wxpay.notify_url }}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -44,29 +38,24 @@
<input type="hidden" name="section" value="pay.wxpay">
</div>
</div>
</form>
<form class="layui-form kg-form">
<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="subject" value="支付测试0.01元" readonly="true">
<input class="layui-input" type="text" name="subject" value="支付测试0.01元" readonly="readonly">
</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="total_amount" value="0.01" readonly="true">
<input class="layui-input" type="text" name="total_amount" value="0.01" readonly="readonly">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -74,27 +63,4 @@
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
</div>
</div>
</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>
</form>

View File

@ -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 %}
<script>
<div id="qrcode">
<img class="kg-qrcode" src="{{ qrcode_url }}" alt="二维码图片">
</div>
layui.use(['jquery'], function () {
<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>
{% 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');
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');
clearInterval(interval);
}
},
error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
}
},
error: function () {
$('#error-tips').removeClass('layui-hide');
$('#qrcode').addClass('layui-hide');
clearInterval(interval);
}
});
}, 5000);
});
}, 5000);
});
});
</script>
</script>
{% endif %}
{% endif %}
{% endblock %}

View File

@ -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">
<legend>密钥配置</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.secret'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>密钥配置</legend>
</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 class="layui-form-item">
<label class="layui-form-label">Secret Id</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="secret_id" value="{{ secret.secret_id }}" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">Secret Id</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="secret_key" value="{{ secret.secret_key }}" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">Secret Key</label>
<div class="layui-input-block">
<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-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 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>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>站点配置</legend>
</fieldset>
{% block content %}
<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="{{ site.title }}">
</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="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 }}">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.site'}) }}">
<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="title" value="{{ site.title }}">
</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 class="layui-form-item">
<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>
<div class="layui-form-item">
<div class="layui-inline">
<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 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-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 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>
<div class="layui-form-item">
<label class="layui-form-label">站点统计</label>
<div class="layui-input-block">
<textarea name="analytics" class="layui-textarea" placeholder="使用百度统计CNZZ腾讯分析等第三方统计分析站点流量">{{ site.analytics }}</textarea>
<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 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 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 class="layui-form-item">
<div class="layui-inline">
<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 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 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 %}

View File

@ -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">
<legend>基础配置</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.smser'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>基础配置</legend>
</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 class="layui-form-item">
<label class="layui-form-label">App Key</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="app_key" value="{{ smser.app_key }}" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">App Key</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="signature" value="{{ smser.signature }}" placeholder="注意使用的是签名内容而非签名ID" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">内容签名</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="signature" placeholder="注意使用的是签名内容而非签名ID" value="{{ smser.signature }}" layui-verify="required">
</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>模板配置</legend>
</fieldset>
<table class="kg-table layui-table layui-form">
<colgroup>
<col width="12%">
<col width="15%">
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>模板编号</th>
<th>模板内容</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>身份验证</td>
<td><input class="layui-input" type="text" name="template[id][verify]" value="{{ template.verify.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-verify">复制</span></td>
</tr>
<tr>
<td>订单通知</td>
<td><input class="layui-input" type="text" name="template[id][order]" value="{{ template.order.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-order">复制</span></td>
</tr>
<tr>
<td>退款通知</td>
<td><input class="layui-input" type="text" name="template[id][refund]" value="{{ template.refund.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-refund">复制</span></td>
</tr>
<tr>
<td>直播通知</td>
<td><input class="layui-input" type="text" name="template[id][live]" value="{{ template.live.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-live">复制</span></td>
</tr>
</tbody>
</table>
<div class="layui-form-item" style="margin-top:20px;">
<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>
<fieldset class="layui-elem-field layui-field-title">
<legend>模板配置</legend>
</fieldset>
<table class="layui-table kg-table layui-form">
<colgroup>
<col width="12%">
<col width="15%">
<col>
<col width="10%">
</colgroup>
<thead>
<tr>
<th>名称</th>
<th>模板编号</th>
<th>模板内容</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>身份验证</td>
<td><input class="layui-input" type="text" name="template[id][verify]" value="{{ template.verify.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-verify">复制</span></td>
</tr>
<tr>
<td>订单通知</td>
<td><input class="layui-input" type="text" name="template[id][order]" value="{{ template.order.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-order">复制</span></td>
</tr>
<tr>
<td>退款通知</td>
<td><input class="layui-input" type="text" name="template[id][refund]" value="{{ template.refund.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-refund">复制</span></td>
</tr>
<tr>
<td>直播通知</td>
<td><input class="layui-input" type="text" name="template[id][live]" value="{{ template.live.id }}" lay-verify="required"></td>
<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><span class="kg-copy layui-btn" data-clipboard-target="#tc-live">复制</span></td>
</tr>
</tbody>
</table>
<div class="layui-form-item" style="margin-top:20px;">
<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>
</form>
</form>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.smser'}) }}">
<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="phone" lay-verify="phone" placeholder="请先提交相关配置,再进行短信测试哦!">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.smser'}) }}">
<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="phone" placeholder="请先提交相关配置,再进行短信测试哦!" lay-verify="phone">
</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 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>
</form>
</form>
{% endblock %}
{{ partial('partials/clipboard_tips') }}
{% block include_js %}
{{ js_include('lib/clipboard.min.js') }}
{{ js_include('admin/js/copy.js') }}
{% endblock %}

View File

@ -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">
<legend>存储桶配置</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.storage'}) }}">
<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="bucket_name" value="{{ storage.bucket_name }}" layui-verify="required">
</div>
</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="bucket_region" value="{{ storage.bucket_region }}" layui-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">所在区域</label>
<div class="layui-input-block">
<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-input-block">
<input type="radio" name="bucket_protocol" value="http" title="HTTP" {% if storage.bucket_protocol == "http" %}checked{% endif %}>
<input type="radio" name="bucket_protocol" value="https" title="HTTPS" {% if storage.bucket_protocol == "https" %}checked{% endif %}>
<div class="layui-form-item">
<label class="layui-form-label">访问协议</label>
<div class="layui-input-block">
<input type="radio" name="bucket_protocol" value="http" title="HTTP" {% if storage.bucket_protocol == "http" %}checked{% endif %}>
<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-input-block">
<input class="layui-input" type="text" name="bucket_domain" value="{{ storage.bucket_domain }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">访问域名</label>
<div class="layui-input-block">
<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>
<div class="layui-form-item">
<label class="layui-form-label">访问协议</label>
<div class="layui-input-block">
<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 %}>
<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="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-input-block">
<input class="layui-input" type="text" name="ci_domain" value="{{ storage.ci_domain }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">访问域名</label>
<div class="layui-input-block">
<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-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 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>
</form>
</form>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.storage'}) }}">
<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="hello_world.txt" readonly="true">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.storage'}) }}">
<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="hello_world.txt" readonly="readonly">
</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 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>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>会员设置</legend>
</fieldset>
{% block content %}
{% 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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.vip'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>会员设置</legend>
</fieldset>
{% 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 class="layui-form-mid layui-word-aux">元</div>
</div>
{% endfor %}
</form>
<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>
{% endblock %}

View File

@ -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">
<legend>存储配置</legend>
</fieldset>
{% block content %}
<div class="layui-form-item">
<label class="layui-form-label">存储方式</label>
<div class="layui-input-block">
<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>
{% set storage_region_display = vod.storage_type == 'nearby' ? 'style="display:none;"' : '' %}
{% set watermark_tpl_display = vod.watermark_enabled == 0 ? 'style="display:none;"' : '' %}
{% set key_anti_display = vod.key_anti_enabled == 0 ? 'style="display:none;"' : '' %}
<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">
<label class="layui-form-label">所在区域</label>
<label class="layui-form-label">存储方式</label>
<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>
<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="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 id="storage-region-block" {{ storage_region_display }}>
<div class="layui-form-item">
<label class="layui-form-label">所在区域</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="storage_region" value="{{ vod.storage_region }}">
</div>
</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" {% if vod.key_anti_enabled == '0' %}style="display:none;"{% endif %}>
<fieldset class="layui-elem-field layui-field-title">
<legend>转码配置</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">防盗链Key</label>
<label class="layui-form-label">视频格式</label>
<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 class="layui-form-item">
<label class="layui-form-label">有效期(秒)</label>
<label class="layui-form-label">视频模板ID</label>
<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 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 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>
</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 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>
<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 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>
<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;
var form = layui.form;
<script>
var changeVideoTemplate = function (format) {
var template = $('input[name=video_template]');
if (format === 'mp4') {
template.val('100010,100020,100030');
} else {
template.val('100210,100220,100230');
}
};
layui.use(['jquery', 'form'], function () {
var changeAudioTemplate = function (format) {
var template = $('input[name=audio_template]');
if (format === 'mp3') {
template.val('1010');
} else {
template.val('1110');
}
};
var $ = layui.jquery;
var form = layui.form;
var changeVideoTemplate = function (format) {
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 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) {
var block = $('#watermark-template-block');
if (data.value === '1') {
block.show();
} else {
block.hide();
}
});
</script>
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);
});
</script>
{% endblock %}

View File

@ -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">
<legend>添加轮播</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">目标类型</label>
<div class="layui-input-block">
<input type="radio" name="target" value="course" title="课程" lay-filter="target" checked="checked">
<input type="radio" name="target" value="page" title="单页" lay-filter="target">
<input type="radio" name="target" value="link" title="链接" lay-filter="target">
<div class="layui-form-item">
<label class="layui-form-label">目标类型</label>
<div class="layui-input-block">
<input type="radio" name="target" value="course" title="课程" lay-filter="target" checked="checked">
<input type="radio" name="target" value="page" title="单页" lay-filter="target">
<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-input-block">
<input class="layui-input" type="text" name="content" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label" id="target-label">课程编号</label>
<div class="layui-input-block">
<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-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 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>
</form>
</form>
{% endblock %}
<script>
{% block inline_js %}
layui.use(['jquery', 'form'], function () {
<script>
var $ = layui.jquery;
var form = layui.form;
layui.use(['jquery', 'form'], function () {
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>
});
</script>
{% endblock %}

View File

@ -1,99 +1,108 @@
{%- macro content_label(target) %}
{% if target == 'course' %}
课程编号
{% elseif target == 'page' %}
单页编号
{% elseif target == 'link' %}
链接地址
{% endif %}
{%- endmacro %}
{% extends 'templates/main.volt' %}
<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">
<legend>编辑轮播</legend>
</fieldset>
{%- macro content_label(target) %}
{% if target == 'course' %}
课程编号
{% elseif target == 'page' %}
单页编号
{% elseif target == 'link' %}
链接地址
{% endif %}
{%- endmacro %}
<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 }}">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.update','id':slide.id}) }}">
<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-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 class="layui-input-inline" style="padding-top:35px;">
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
<div class="layui-form-item">
<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 class="layui-form-item">
<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 class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="title" value="{{ slide.title }}" lay-verify="required">
</div>
</div>
<div class="layui-inline">
<div id="style-bg-color"></div>
<div class="layui-form-item">
<label class="layui-form-label">概要</label>
<div class="layui-input-block">
<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-input-block">
<input class="layui-input" type="text" name="title" value="{{ slide.title }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">{{ content_label(slide.target) }}</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="content" value="{{ slide.content }}" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">概要</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ slide.summary }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="priority" value="{{ slide.priority }}" lay-verify="number">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{{ content_label(slide.target) }}</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="content" value="{{ slide.content }}" lay-verify="required">
<div class="layui-form-item">
<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>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="priority" value="{{ slide.priority }}" lay-verify="number">
<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>
</form>
<div class="layui-form-item">
<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>
{% endblock %}
<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>
{% block include_js %}
</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 %}

View File

@ -1,65 +1,71 @@
{%- 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 %}
{% extends 'templates/main.volt' %}
<div class="kg-nav">
<div class="kg-nav-left">
{% block content %}
{%- 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">
<a><cite>轮播管理</cite></a>
</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 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">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<tr>
<th>编号</th>
<th>标题</th>
<th>目标类型</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in pager.items %}
<table class="layui-table kg-table layui-form">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>编号</th>
<th>标题</th>
<th>目标类型</th>
<th>排序</th>
<th>发布</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</thead>
<tbody>
{% 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 %}

View File

@ -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">
<legend>添加学员</legend>
</fieldset>
{% set course_id = course ? course.id : '' %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.create'}) }}">
<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="course_id" value="{{ course_id }}" lay-verify="required">
</div>
</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="user_id" lay-verify="required">
<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" lay-verify="required">
</div>
</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="expiry_time" autocomplete="off" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">过期时间</label>
<div class="layui-input-block">
<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-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 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>
</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 %}

View File

@ -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">
<legend>编辑学员</legend>
</fieldset>
{% block content %}
<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>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.student.update'}) }}">
<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">
<div class="layui-form-mid layui-word-aux">{{ course.title }}</div>
</div>
</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">{{ student.name }}</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">{{ student.name }}</div>
</div>
</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="expiry_time" autocomplete="off" value="{{ date('Y-m-d H:i:s',relation.expiry_time) }}" lay-verify="required">
<div class="layui-form-item">
<label class="layui-form-label">过期时间</label>
<div class="layui-input-block">
<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-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="relation_id" value="{{ relation.id }}"/>
<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="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 %}

View File

@ -1,36 +1,47 @@
<table class="kg-table layui-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>
{% extends 'templates/main.volt' %}
{{ partial('partials/pager') }}
{{ partial('partials/ip2region') }}
{% block content %}
<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 %}

View File

@ -1,15 +1,19 @@
{%- 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 %}
{% extends 'templates/main.volt' %}
<div class="kg-nav">
<div class="kg-nav-left">
{% block content %}
{%- 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">
<a class="kg-back"><i class="layui-icon layui-icon-return"></i> 返回</a>
{% if course %}
@ -17,91 +21,97 @@
{% endif %}
<a><cite>学员管理</cite></a>
</span>
</div>
<div class="kg-nav-right">
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.search'}) }}">
<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>添加学员
</div>
<div class="kg-nav-right">
<a class="layui-btn layui-btn-sm" href="{{ url({'for':'admin.student.search'}) }}">
<i class="layui-icon layui-icon-search"></i>搜索学员
</a>
{% 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 %}
{% 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>
{% 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>
<table class="kg-table layui-table">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<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}) %}
<table class="layui-table kg-table">
<colgroup>
<col>
<col>
<col>
<col>
<col width="12%">
</colgroup>
<thead>
<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>
<th>基本信息</th>
<th>学习情况</th>
<th>成员来源</th>
<th>有效期限</th>
<th>操作</th>
</tr>
{% endfor %}
</tbody>
</table>
</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>
<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 () {
var url = $(this).data('url');
layer.open({
id: 'xm-course',
type: 2,
title: '学习记录',
resize: false,
area: ['900px', '450px'],
content: [url]
layui.use(['jquery', 'form'], function () {
var $ = layui.jquery;
$('.kg-learning').on('click', function () {
var url = $(this).data('url');
layer.open({
id: 'xm-course',
type: 2,
title: '学习记录',
resize: false,
area: ['900px', '450px'],
content: [url]
});
});
});
});
</script>
</script>
{% endblock %}

View File

@ -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">
<legend>搜索学员</legend>
</fieldset>
{% set course_id = request.get('course_id', 'int', '') %}
<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="课程编号精确匹配">
<form class="layui-form kg-form" method="GET" action="{{ url({'for':'admin.student.list'}) }}">
<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="course_id" value="{{ course_id }}" placeholder="课程编号精确匹配">
</div>
</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="user_id" placeholder="用户编号精确匹配">
<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 class="layui-form-item">
<label class="layui-form-label">加入方式</label>
<div class="layui-input-block">
<input type="radio" name="source_type" value="1" title="免费课程">
<input type="radio" name="source_type" value="2" title="付费课程">
<input type="radio" name="source_type" value="3" title="后台导入">
<div class="layui-form-item">
<label class="layui-form-label">加入方式</label>
<div class="layui-input-block">
<input type="radio" name="source_type" value="1" title="免费课程">
<input type="radio" name="source_type" value="2" title="付费课程">
<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-input-block">
<button class="layui-btn" lay-submit="true">提交</button>
<button type="button" class="kg-back layui-btn layui-btn-primary">返回</button>
<div class="layui-form-item">
<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>
</div>
</form>
</form>
{% endblock %}

View 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>

View File

@ -1,18 +1,26 @@
<!DOCTYPE html>
<html lang="zh-Hans-CN">
<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") }}
{{ icon_link('favicon.ico') }}
{{ css_link('lib/layui/css/layui.css') }}
{{ css_link('lib/layui/extends/dropdown.css') }}
{{ css_link('admin/css/common.css') }}
{{ js_include('lib/layui/layui.js') }}
{{ js_include('admin/js/common.js') }}
{% block link_css %}{% endblock %}
{% block inline_css %}{% endblock %}
</head>
<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>
</html>

View File

@ -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">
<legend>添加话题</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.create'}) }}">
<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="title" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary"></textarea>
</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 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>
</div>
</form>
</form>
{% endblock %}

View File

@ -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">
<legend>编辑话题</legend>
</fieldset>
{% block content %}
<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">
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.topic.update','id':topic.id}) }}">
<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="title" value="{{ topic.title }}" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ topic.summary }}</textarea>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ topic.summary }}</textarea>
</div>
</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 class="layui-form-item">
<label class="layui-form-label">相关课程</label>
<div class="layui-input-block">
<div id="xm-course-ids"></div>
</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 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>
</div>
</form>
</form>
{{ js_include('lib/xm-select.js') }}
{{ js_include('admin/js/xm-course.js') }}
{% endblock %}
<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