mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-22 19:44:02 +08:00
去除弹幕
This commit is contained in:
parent
c9bf425fc6
commit
4f9f6ff15e
@ -40,7 +40,7 @@ class CourseFavoriteList extends Builder
|
|||||||
'id', 'title', 'cover',
|
'id', 'title', 'cover',
|
||||||
'market_price', 'vip_price',
|
'market_price', 'vip_price',
|
||||||
'rating', 'model', 'level', 'attrs',
|
'rating', 'model', 'level', 'attrs',
|
||||||
'user_count', 'lesson_count',
|
'user_count', 'lesson_count', 'review_count', 'favorite_count',
|
||||||
];
|
];
|
||||||
|
|
||||||
$courses = $courseRepo->findByIds($ids, $columns);
|
$courses = $courseRepo->findByIds($ids, $columns);
|
||||||
|
@ -192,34 +192,24 @@ class Course extends Service
|
|||||||
|
|
||||||
$this->updateCourseGroup($course);
|
$this->updateCourseGroup($course);
|
||||||
|
|
||||||
$this->rebuildCourseIndex($course);
|
|
||||||
|
|
||||||
return $course;
|
return $course;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteCourse($id)
|
public function deleteCourse($id)
|
||||||
{
|
{
|
||||||
$course = $this->findOrFail($id);
|
$course = $this->findOrFail($id);
|
||||||
|
|
||||||
$course->deleted = 1;
|
$course->deleted = 1;
|
||||||
|
|
||||||
$course->update();
|
$course->update();
|
||||||
|
|
||||||
$this->rebuildCourseIndex($course);
|
|
||||||
|
|
||||||
return $course;
|
return $course;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function restoreCourse($id)
|
public function restoreCourse($id)
|
||||||
{
|
{
|
||||||
$course = $this->findOrFail($id);
|
$course = $this->findOrFail($id);
|
||||||
|
|
||||||
$course->deleted = 0;
|
$course->deleted = 0;
|
||||||
|
|
||||||
$course->update();
|
$course->update();
|
||||||
|
|
||||||
$this->rebuildCourseIndex($course);
|
|
||||||
|
|
||||||
return $course;
|
return $course;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,31 +47,6 @@ class ConsultController extends Controller
|
|||||||
$this->view->setVar('consult', $consult);
|
$this->view->setVar('consult', $consult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @Route("/{id:[0-9]+}/reply", name="web.consult.reply")
|
|
||||||
*/
|
|
||||||
public function replyAction($id)
|
|
||||||
{
|
|
||||||
if ($this->request->isPost()) {
|
|
||||||
|
|
||||||
$service = new ConsultReplyService();
|
|
||||||
|
|
||||||
$service->handle($id);
|
|
||||||
|
|
||||||
$content = ['msg' => '回复咨询成功'];
|
|
||||||
|
|
||||||
return $this->jsonSuccess($content);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$service = new ConsultInfoService();
|
|
||||||
|
|
||||||
$consult = $service->handle($id);
|
|
||||||
|
|
||||||
$this->view->setVar('consult', $consult);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/create", name="web.consult.create")
|
* @Post("/create", name="web.consult.create")
|
||||||
*/
|
*/
|
||||||
@ -118,6 +93,31 @@ class ConsultController extends Controller
|
|||||||
return $this->jsonSuccess($content);
|
return $this->jsonSuccess($content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Route("/{id:[0-9]+}/reply", name="web.consult.reply")
|
||||||
|
*/
|
||||||
|
public function replyAction($id)
|
||||||
|
{
|
||||||
|
if ($this->request->isPost()) {
|
||||||
|
|
||||||
|
$service = new ConsultReplyService();
|
||||||
|
|
||||||
|
$service->handle($id);
|
||||||
|
|
||||||
|
$content = ['msg' => '回复咨询成功'];
|
||||||
|
|
||||||
|
return $this->jsonSuccess($content);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$service = new ConsultInfoService();
|
||||||
|
|
||||||
|
$consult = $service->handle($id);
|
||||||
|
|
||||||
|
$this->view->setVar('consult', $consult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Post("/{id:[0-9]+}/like", name="web.consult.like")
|
* @Post("/{id:[0-9]+}/like", name="web.consult.like")
|
||||||
*/
|
*/
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
{% set chapter_full_url = full_url({'for':'web.chapter.show','id':chapter.id}) %}
|
{% set chapter_full_url = full_url({'for':'web.chapter.show','id':chapter.id}) %}
|
||||||
{% set course_url = url({'for':'web.course.show','id':chapter.course.id}) %}
|
{% set course_url = url({'for':'web.course.show','id':chapter.course.id}) %}
|
||||||
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
{% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %}
|
||||||
{% set danmu_url = url({'for':'web.chapter.danmu','id':chapter.id}) %}
|
|
||||||
{% set like_url = url({'for':'web.chapter.like','id':chapter.id}) %}
|
{% set like_url = url({'for':'web.chapter.like','id':chapter.id}) %}
|
||||||
{% set qrcode_url = url({'for':'web.qrcode'},{'text':chapter_full_url}) %}
|
{% set qrcode_url = url({'for':'web.qrcode'},{'text':chapter_full_url}) %}
|
||||||
{% set consult_url = url({'for':'web.consult.add'},{'chapter_id':chapter.id}) %}
|
{% set consult_url = url({'for':'web.consult.add'},{'chapter_id':chapter.id}) %}
|
||||||
@ -31,16 +30,6 @@
|
|||||||
<div class="layout-content">
|
<div class="layout-content">
|
||||||
<div class="player-wrap wrap">
|
<div class="player-wrap wrap">
|
||||||
<div id="player"></div>
|
<div id="player"></div>
|
||||||
<div id="danmu"></div>
|
|
||||||
<form class="layui-form danmu-form" lay-filter="danmu.form" action="{{ url({'for':'web.danmu.create'}) }}">
|
|
||||||
{% if auth_user.id > 0 %}
|
|
||||||
<a href="javascript:" title="弹幕设置"><i class="layui-icon layui-icon-set icon-danmu-set"></i></a>
|
|
||||||
<input class="layui-input" type="text" name="danmu.text" autocomplete="off" maxlength="50" placeholder="快来发个弹幕吧" lay-verType="tips" lay-verify="required">
|
|
||||||
{% else %}
|
|
||||||
<input class="layui-input" type="text" name="danmu.text" placeholder="登录后才可以发送弹幕哦" readonly="readonly">
|
|
||||||
{% endif %}
|
|
||||||
<button class="layui-hide" type="submit" lay-submit="true" lay-filter="danmu.send">发送</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layout-sidebar">
|
<div class="layout-sidebar">
|
||||||
@ -48,58 +37,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="my-danmu-set" style="display:none;">
|
|
||||||
<form class="layui-form" lay-filter="danmu.form.set" style="padding:20px 0;">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">显示弹幕</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="checkbox" name="danmu.status" lay-filter="danmu.status" lay-skin="switch" lay-text="是|否" checked="checked">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">透明度</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="danmu.opacity" lay-filter="danmu.opacity" value="1" title="0" checked="checked">
|
|
||||||
<input type="radio" name="danmu.opacity" lay-filter="danmu.opacity" value="0.75" title="25%">
|
|
||||||
<input type="radio" name="danmu.opacity" lay-filter="danmu.opacity" value="0.5" title="50%">
|
|
||||||
<input type="radio" name="danmu.opacity" lay-filter="danmu.opacity" value="0.25" title="75%">
|
|
||||||
<input type="radio" name="danmu.opacity" lay-filter="danmu.opacity" value="0" title="100%">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">颜色</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="danmu.color" value="white" title="白" checked="checked">
|
|
||||||
<input type="radio" name="danmu.color" value="red" title="红">
|
|
||||||
<input type="radio" name="danmu.color" value="orange" title="黄">
|
|
||||||
<input type="radio" name="danmu.color" value="blue" title="蓝">
|
|
||||||
<input type="radio" name="danmu.color" value="green" title="绿">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">位置</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="danmu.position" value="0" title="滚动" checked="checked">
|
|
||||||
<input type="radio" name="danmu.position" value="1" title="顶部">
|
|
||||||
<input type="radio" name="danmu.position" value="2" title="底部">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label">字号</label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="radio" name="danmu.size" value="0" title="小" checked="checked">
|
|
||||||
<input type="radio" name="danmu.size" value="1" title="大">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-hide">
|
<div class="layui-hide">
|
||||||
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
<input type="hidden" name="chapter.id" value="{{ chapter.id }}">
|
||||||
<input type="hidden" name="chapter.position" value="{{ chapter.me.position }}">
|
<input type="hidden" name="chapter.position" value="{{ chapter.me.position }}">
|
||||||
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
<input type="hidden" name="chapter.plan_id" value="{{ chapter.me.plan_id }}">
|
||||||
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
<input type="hidden" name="chapter.learning_url" value="{{ learning_url }}">
|
||||||
<input type="hidden" name="chapter.danmu_url" value="{{ danmu_url }}">
|
|
||||||
<input type="hidden" name="chapter.play_urls" value='{{ chapter.play_urls|json_encode }}'>
|
<input type="hidden" name="chapter.play_urls" value='{{ chapter.play_urls|json_encode }}'>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -116,8 +58,6 @@
|
|||||||
|
|
||||||
<script src="//imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.3.js"></script>
|
<script src="//imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.3.js"></script>
|
||||||
|
|
||||||
{{ js_include('lib/jquery.min.js') }}
|
|
||||||
{{ js_include('lib/jquery.danmu.min.js') }}
|
|
||||||
{{ js_include('web/js/course.share.js') }}
|
{{ js_include('web/js/course.share.js') }}
|
||||||
{{ js_include('web/js/chapter.action.js') }}
|
{{ js_include('web/js/chapter.action.js') }}
|
||||||
{{ js_include('web/js/chapter.vod.player.js') }}
|
{{ js_include('web/js/chapter.vod.player.js') }}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
{% extends 'templates/layer.volt' %}
|
{% extends 'templates/layer.volt' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form class="layui-form" method="post" action="{{ url({'for':'web.consult.create'}) }}">
|
<form class="layui-form consult-form" method="post" action="{{ url({'for':'web.consult.create'}) }}">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">问题</label>
|
<label class="layui-form-label" for="question">问题</label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<textarea name="question" class="layui-textarea" placeholder="请详细描述问题,我们会尽快回复您" lay-verify="required"></textarea>
|
<textarea class="layui-textarea" id="question" name="question" placeholder="请详细描述问题,我们会尽快回复您" lay-verify="required"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
{% set update_url = url({'for':'web.consult.update','id':consult.id}) %}
|
{% set update_url = url({'for':'web.consult.update','id':consult.id}) %}
|
||||||
|
|
||||||
<form class="layui-form" method="post" action="{{ update_url }}">
|
<form class="layui-form consult-form" method="post" action="{{ update_url }}">
|
||||||
<div class="layui-form-item mb0">
|
<div class="layui-form-item mb0">
|
||||||
<label class="layui-form-label">课程</label>
|
<label class="layui-form-label">课程</label>
|
||||||
<div class="layui-form-mid">{{ consult.course.title }}</div>
|
<div class="layui-form-mid">{{ consult.course.title }}</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
{% set update_url = url({'for':'web.consult.reply','id':consult.id}) %}
|
{% set update_url = url({'for':'web.consult.reply','id':consult.id}) %}
|
||||||
|
|
||||||
<form class="layui-form" method="post" action="{{ update_url }}">
|
<form class="layui-form consult-form" method="post" action="{{ update_url }}">
|
||||||
<div class="layui-form-item mb0">
|
<div class="layui-form-item mb0">
|
||||||
<label class="layui-form-label">课程</label>
|
<label class="layui-form-label">课程</label>
|
||||||
<div class="layui-form-mid">{{ consult.course.title }}</div>
|
<div class="layui-form-mid">{{ consult.course.title }}</div>
|
||||||
@ -32,3 +32,12 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.iframeAuto(index);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -2,25 +2,38 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{% set answer = consult.answer ? consult.answer : '<span class="gray">稍安勿燥,请耐心等待回复吧</span>' %}
|
{% set consult.answer = consult.answer ? consult.answer : '请耐心等待回复吧' %}
|
||||||
|
|
||||||
<form class="layui-form review-form">
|
<div class="consult-info">
|
||||||
<div class="layui-form-item mb0">
|
{% if consult.course.id is defined %}
|
||||||
<label class="layui-form-label">课程:</label>
|
<div class="item">
|
||||||
<div class="layui-form-mid">{{ consult.course.title }}</div>
|
<div class="label">课程:</div>
|
||||||
|
<div class="title">{{ consult.course.title }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item mb0">
|
{% endif %}
|
||||||
<label class="layui-form-label">章节:</label>
|
{% if consult.chapter.id is defined %}
|
||||||
<div class="layui-form-mid">{{ consult.chapter.title }}</div>
|
<div class="item">
|
||||||
|
<div class="label">章节:</div>
|
||||||
|
<div class="title">{{ consult.chapter.title }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item mb0">
|
{% endif %}
|
||||||
<label class="layui-form-label">提问:</label>
|
<div class="item">
|
||||||
<div class="layui-form-mid">{{ consult.question }}</div>
|
<div class="label">提问:</div>
|
||||||
|
<div class="content">{{ consult.question }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="item">
|
||||||
|
<div class="label">回答:</div>
|
||||||
|
<div class="content">{{ consult.answer }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item mb0">
|
|
||||||
<label class="layui-form-label">回复:</label>
|
|
||||||
<div class="layui-form-mid">{{ answer }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block inline_js %}
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var index = parent.layer.getFrameIndex(window.name);
|
||||||
|
parent.layer.iframeAuto(index);
|
||||||
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -2,20 +2,26 @@
|
|||||||
<div class="review-list">
|
<div class="review-list">
|
||||||
{% for item in pager.items %}
|
{% for item in pager.items %}
|
||||||
{% set item.answer = item.answer ? item.answer : '稍安勿燥,请耐心等待回复吧' %}
|
{% set item.answer = item.answer ? item.answer : '稍安勿燥,请耐心等待回复吧' %}
|
||||||
{% set owner_url = url({'for':'web.user.show','id':item.id}) %}
|
{% set owner_url = url({'for':'web.user.show','id':item.owner.id}) %}
|
||||||
|
{% set consult_url = url({'for':'web.consult.show','id':item.id}) %}
|
||||||
{% set like_url = url({'for':'web.consult.like','id':item.id}) %}
|
{% set like_url = url({'for':'web.consult.like','id':item.id}) %}
|
||||||
<div class="review-card clearfix">
|
<div class="review-card clearfix">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
<a href="{{ owner_url }}">
|
<a href="{{ owner_url }}" title="{{ item.owner.name }}">
|
||||||
<img src="{{ item.owner.avatar }}" alt="{{ item.owner.name }}" title="{{ item.owner.name }}">
|
<img src="{{ item.owner.avatar }}" alt="{{ item.owner.name }}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="title">{{ item.question }}</div>
|
<div class="more">
|
||||||
|
<a class="consult-details" href="javascript:" title="查看详情" data-url="{{ consult_url }}">
|
||||||
|
<i class="layui-icon layui-icon-more"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="title layui-elip">{{ item.question }}</div>
|
||||||
<div class="content">{{ item.answer }}</div>
|
<div class="content">{{ item.answer }}</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<span class="time">{{ item.create_time|time_ago }}</span>
|
<span class="time">{{ item.create_time|time_ago }}</span>
|
||||||
<a href="javascript:" class="like" title="点赞" data-url="{{ like_url }}">
|
<a class="like" href="javascript:" title="点赞" data-url="{{ like_url }}">
|
||||||
<i class="layui-icon layui-icon-praise icon-praise"></i>
|
<i class="layui-icon layui-icon-praise icon-praise"></i>
|
||||||
<em class="like-count">{{ item.like_count }}</em>
|
<em class="like-count">{{ item.like_count }}</em>
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list clearfix">
|
<div class="course-list clearfix">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if courses %}
|
{% if courses %}
|
||||||
<div class="layui-card">
|
<div class="layui-card">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if courses %}
|
{% if courses %}
|
||||||
<div class="layui-card">
|
<div class="layui-card">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="review-list">
|
<div class="review-list">
|
||||||
@ -7,7 +7,9 @@
|
|||||||
{% set like_url = url({'for':'web.review.like','id':item.id}) %}
|
{% set like_url = url({'for':'web.review.like','id':item.id}) %}
|
||||||
<div class="review-card clearfix">
|
<div class="review-card clearfix">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
|
<a href="{{ owner_url }}" title="{{ item.owner.name }}">
|
||||||
<img src="{{ item.owner.avatar }}" alt="{{ item.owner.name }}">
|
<img src="{{ item.owner.avatar }}" alt="{{ item.owner.name }}">
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="rating">{{ star_info(item.rating) }}</div>
|
<div class="rating">{{ star_info(item.rating) }}</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% set favorite_title = course.me.favorited ? '取消收藏' : '收藏' %}
|
{% set favorite_title = course.me.favorited ? '取消收藏' : '收藏' %}
|
||||||
{% set favorite_star = course.me.favorited ? 'layui-icon-star-fill' : 'layui-icon-star' %}
|
{% set favorite_star = course.me.favorited ? 'layui-icon-star-fill' : 'layui-icon-star' %}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
{% set teacher.title = teacher.title ? teacher.title : '小小教书匠' %}
|
{% set teacher.title = teacher.title ? teacher.title : '小小教书匠' %}
|
||||||
<div class="sidebar-teacher-card clearfix">
|
<div class="sidebar-teacher-card clearfix">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
<img src="{{ teacher.avatar }}" alt="{{ teacher.name }}" title="{{ teacher.about }}">
|
<img src="{{ teacher.avatar }}" alt="{{ teacher.name }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="name layui-elip">
|
<div class="name layui-elip">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{%- macro category_courses(courses) %}
|
{%- macro category_courses(courses) %}
|
||||||
<div class="layui-tab layui-tab-brief">
|
<div class="layui-tab layui-tab-brief">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
||||||
@ -17,12 +17,14 @@
|
|||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
|
<col>
|
||||||
<col width="12%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>课程</th>
|
<th>课程</th>
|
||||||
<th>人气</th>
|
<th>学员</th>
|
||||||
|
<th>收藏</th>
|
||||||
<th>评分</th>
|
<th>评分</th>
|
||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
@ -33,10 +35,11 @@
|
|||||||
{% set favorite_url = url({'for':'web.course.favorite','id':item.id}) %}
|
{% set favorite_url = url({'for':'web.course.favorite','id':item.id}) %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{{ course_url }}">{{ item.title }}</a> {{ model_info(item.model) }}</td>
|
<td><a href="{{ course_url }}">{{ item.title }}</a> {{ model_info(item.model) }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.user_count }}</span></td>
|
<td>{{ item.user_count }}</td>
|
||||||
<td>{{ star_info(item.rating) }}</td>
|
<td>{{ item.favorite_count }}</td>
|
||||||
|
<td>{{ item.rating }}</td>
|
||||||
<td align="center">
|
<td align="center">
|
||||||
<button class="layui-btn layui-btn-xs kg-delete" data-tips="确定要取消收藏吗?" data-url="{{ favorite_url }}">取消</button>
|
<button class="layui-btn layui-btn-sm kg-delete" data-tips="确定要取消收藏吗?" data-url="{{ favorite_url }}">取消</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
{%- macro gender_info(value) %}
|
{%- macro gender_info(value) %}
|
||||||
{% if value == 1 %}
|
{% if value == 1 %}
|
||||||
<span class="layui-badge layui-bg-red">男</span>
|
男
|
||||||
{% elseif value == 2 %}
|
{% elseif value == 2 %}
|
||||||
<span class="layui-badge layui-bg-green">女</span>
|
女
|
||||||
{% elseif value == 3 %}
|
{% elseif value == 3 %}
|
||||||
<span class="layui-badge layui-bg-gray">密</span>
|
密
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
|
||||||
@ -47,7 +47,7 @@
|
|||||||
<td>{{ item.location }}</td>
|
<td>{{ item.location }}</td>
|
||||||
<td>{{ item.active_time|time_ago }}</td>
|
<td>{{ item.active_time|time_ago }}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="layui-btn layui-btn-xs kg-delete" data-url="{{ delete_url }}">删除</button>
|
<button class="layui-btn layui-btn-sm kg-delete" data-url="{{ delete_url }}">删除</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="15%">
|
<col width="12%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>名称</th>
|
<th>名称</th>
|
||||||
<th>群主</th>
|
<th>组长</th>
|
||||||
<th>成员</th>
|
<th>成员</th>
|
||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
@ -21,9 +21,9 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td><span title="{{ item.about }}">{{ item.name }}</span> {{ type_info(item.type) }}</td>
|
<td><span title="{{ item.about }}">{{ item.name }}</span> {{ type_info(item.type) }}</td>
|
||||||
<td><a href="{{ owner_url }}">{{ item.owner.name }}</a></td>
|
<td><a href="{{ owner_url }}">{{ item.owner.name }}</a></td>
|
||||||
<td><span class="layui-badge-rim">{{ item.user_count }}</span></td>
|
<td>{{ item.user_count }}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="layui-btn layui-btn-xs kg-delete" data-tips="确定要退出吗?" data-url="{{ delete_url }}">退出</button>
|
<button class="layui-btn layui-btn-sm kg-delete" data-tips="确定要退出吗?" data-url="{{ delete_url }}">退出</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
{% set users_url = url({'for':'web.igm.users','id':item.id}) %}
|
{% set users_url = url({'for':'web.igm.users','id':item.id}) %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><span title="{{ item.about }}">{{ item.name }}</span> {{ type_info(item.type) }}</td>
|
<td><span title="{{ item.about }}">{{ item.name }}</span> {{ type_info(item.type) }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.user_count }}</span></td>
|
<td>{{ item.user_count }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.msg_count }}</span></td>
|
<td>{{ item.msg_count }}</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="layui-btn layui-btn-xs layui-bg-blue btn-group-user" data-url="{{ users_url }}">成员</span>
|
<span class="layui-btn layui-btn-xs layui-bg-blue btn-group-user" data-url="{{ users_url }}">成员</span>
|
||||||
<span class="layui-btn layui-btn-xs btn-edit-group" data-url="{{ edit_url }}">编辑</span>
|
<span class="layui-btn layui-btn-xs btn-edit-group" data-url="{{ edit_url }}">编辑</span>
|
||||||
|
@ -19,9 +19,9 @@
|
|||||||
<div class="layui-card-body">
|
<div class="layui-card-body">
|
||||||
<ul class="my-menu">
|
<ul class="my-menu">
|
||||||
<li><a href="{{ url({'for':'web.my.courses'}) }}">我的课程</a></li>
|
<li><a href="{{ url({'for':'web.my.courses'}) }}">我的课程</a></li>
|
||||||
<li><a href="{{ url({'for':'web.my.consults'}) }}">我的咨询</a></li>
|
|
||||||
<li><a href="{{ url({'for':'web.my.favorites'}) }}">我的收藏</a></li>
|
<li><a href="{{ url({'for':'web.my.favorites'}) }}">我的收藏</a></li>
|
||||||
<li><a href="{{ url({'for':'web.my.reviews'}) }}">我的评价</a></li>
|
<li><a href="{{ url({'for':'web.my.reviews'}) }}">我的评价</a></li>
|
||||||
|
<li><a href="{{ url({'for':'web.my.consults'}) }}">我的咨询</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_order') }}
|
{{ partial('macros/order') }}
|
||||||
|
|
||||||
{% set status_types = {'all':'全部','pending':'待支付','finished':'已完成','closed':'已关闭','refunded':'已退款'} %}
|
{% set status_types = {'all':'全部','pending':'待支付','finished':'已完成','closed':'已关闭','refunded':'已退款'} %}
|
||||||
{% set status = request.get('status','trim','all') %}
|
{% set status = request.get('status','trim','all') %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_refund') }}
|
{{ partial('macros/refund') }}
|
||||||
|
|
||||||
{% set status_types = {'all':'全部','pending':'待处理','canceled':'已取消','approved':'退款中','finished':'已完成'} %}
|
{% set status_types = {'all':'全部','pending':'待处理','canceled':'已取消','approved':'退款中','finished':'已完成'} %}
|
||||||
{% set status = request.get('status','trim','all') %}
|
{% set status = request.get('status','trim','all') %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
<div class="my-sidebar">{{ partial('my/menu') }}</div>
|
||||||
@ -33,12 +33,12 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<p class="title layui-elip">课程:<a href="{{ course_url }}">{{ item.course.title }}</a></p>
|
<p class="title layui-elip">课程:<a href="{{ course_url }}">{{ item.course.title }}</a></p>
|
||||||
<p class="content layui-elip" title="{{ item.content|e }}">评价:{{ item.content }}</p>
|
<p class="content layui-elip" title="{{ item.content }}">评价:{{ item.content }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<p class="rating">内容实用:{{ star_info(item.rating1) }}</p>
|
<p class="rating">内容实用:{{ item.rating1 }}</p>
|
||||||
<p class="rating">通俗易懂:{{ star_info(item.rating2) }}</p>
|
<p class="rating">通俗易懂:{{ item.rating2 }}</p>
|
||||||
<p class="rating">逻辑清晰:{{ star_info(item.rating3) }}</p>
|
<p class="rating">逻辑清晰:{{ item.rating3 }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="layui-btn layui-btn-xs btn-edit-review" data-url="{{ edit_url }}">修改</button>
|
<button class="layui-btn layui-btn-xs btn-edit-review" data-url="{{ edit_url }}">修改</button>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{%- macro cart_course_card(course, user) %}
|
{%- macro cart_course_card(course, user) %}
|
||||||
{% set course_url = url({'for':'web.course.show','id':course.id}) %}
|
{% set course_url = url({'for':'web.course.show','id':course.id}) %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_order') }}
|
{{ partial('macros/order') }}
|
||||||
|
|
||||||
{% set order_pay_url = url({'for':'web.order.pay'},{'sn':order.sn}) %}
|
{% set order_pay_url = url({'for':'web.order.pay'},{'sn':order.sn}) %}
|
||||||
{% set refund_confirm_url = url({'for':'web.refund.confirm'},{'sn':order.sn}) %}
|
{% set refund_confirm_url = url({'for':'web.refund.confirm'},{'sn':order.sn}) %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_refund') }}
|
{{ partial('macros/refund') }}
|
||||||
|
|
||||||
{% set cancel_url = url({'for':'web.refund.cancel'}) %}
|
{% set cancel_url = url({'for':'web.refund.cancel'}) %}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{% set type = request.get('type','trim','course') %}
|
{% set type = request.get('type','trim','course') %}
|
||||||
{% set query = request.get('query','striptags','') %}
|
{% set query = request.get('query','striptags','') %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layui-breadcrumb breadcrumb">
|
<div class="layui-breadcrumb breadcrumb">
|
||||||
<a href="/">首页</a>
|
<a href="/">首页</a>
|
||||||
|
@ -22,33 +22,34 @@
|
|||||||
<colgroup>
|
<colgroup>
|
||||||
<col>
|
<col>
|
||||||
<col>
|
<col>
|
||||||
<col width="20%">
|
<col>
|
||||||
|
<col width="15%">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>内容</th>
|
<th>内容</th>
|
||||||
|
<th>优先级</th>
|
||||||
<th>时间</th>
|
<th>时间</th>
|
||||||
<th>操作</th>
|
<th>操作</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for item in pager.items %}
|
{% for item in pager.items %}
|
||||||
{% set answer = item.answer ? item.answer : '<span class="gray">等待回复ing...</span>' %}
|
{% set answer = item.answer ? item.answer : '<span class="gray">等待回复中...</span>' %}
|
||||||
{% set course_url = url({'for':'web.course.show','id':item.course.id}) %}
|
{% set course_url = url({'for':'web.course.show','id':item.course.id}) %}
|
||||||
{% set show_url = url({'for':'web.consult.show','id':item.id}) %}
|
{% set show_url = url({'for':'web.consult.show','id':item.id}) %}
|
||||||
{% set reply_url = url({'for':'web.consult.reply','id':item.id}) %}
|
{% set reply_url = url({'for':'web.consult.reply','id':item.id}) %}
|
||||||
{% set delete_url = url({'for':'web.consult.delete','id':item.id}) %}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<p>课程:<a href="{{ course_url }}" target="_blank">{{ item.course.title }}</a></p>
|
<p>课程:<a href="{{ course_url }}" target="_blank">{{ item.course.title }}</a></p>
|
||||||
<p class="question layui-elip" title="{{ item.question }}">提问:{{ item.question }}</p>
|
<p class="question layui-elip" title="{{ item.question }}">提问:{{ item.question }}</p>
|
||||||
<p class="answer layui-elip" title="{{ item.answer }}">回复:{{ answer }}</p>
|
<p class="answer layui-elip" title="{{ item.answer }}">回复:{{ answer }}</p>
|
||||||
</td>
|
</td>
|
||||||
|
<td>{{ item.priority }}</td>
|
||||||
<td>{{ date('Y-m-d',item.create_time) }}</td>
|
<td>{{ date('Y-m-d',item.create_time) }}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="layui-btn layui-btn-xs layui-bg-green btn-show-consult" data-url="{{ show_url }}">详情</button>
|
<button class="layui-btn layui-btn-xs layui-bg-green btn-show-consult" data-url="{{ show_url }}">详情</button>
|
||||||
<button class="layui-btn layui-btn-xs layui-bg-blue btn-reply-consult" data-url="{{ reply_url }}">回复</button>
|
<button class="layui-btn layui-btn-xs layui-bg-blue btn-reply-consult" data-url="{{ reply_url }}">回复</button>
|
||||||
<button class="layui-btn layui-btn-xs layui-bg-red kg-delete" data-url="{{ delete_url }}">删除</button>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('teaching/menu') }}</div>
|
<div class="my-sidebar">{{ partial('teaching/menu') }}</div>
|
||||||
@ -34,10 +34,10 @@
|
|||||||
{% set course_url = url({'for':'web.course.show','id':item.id}) %}
|
{% set course_url = url({'for':'web.course.show','id':item.id}) %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{{ course_url }}">{{ item.title }}</a> {{ model_info(item.model) }}</td>
|
<td><a href="{{ course_url }}">{{ item.title }}</a> {{ model_info(item.model) }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.lesson_count }}</span></td>
|
<td>{{ item.lesson_count }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.user_count }}</span></td>
|
<td>{{ item.user_count }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.favorite_count }}</span></td>
|
<td>{{ item.favorite_count }}</td>
|
||||||
<td><span class="layui-badge-rim">{{ item.rating }}</span></td>
|
<td>{{ item.rating }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
<div class="layout-main">
|
<div class="layout-main">
|
||||||
<div class="my-sidebar">{{ partial('teaching/menu') }}</div>
|
<div class="my-sidebar">{{ partial('teaching/menu') }}</div>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list clearfix">
|
<div class="course-list clearfix">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list learning-course-list clearfix">
|
<div class="course-list learning-course-list clearfix">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list clearfix">
|
<div class="course-list clearfix">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% set vip_flag = user.vip ? '<i class="layui-icon layui-icon-diamond icon-vip"></i>' : '' %}
|
{% set vip_flag = user.vip ? '<i class="layui-icon layui-icon-diamond icon-vip"></i>' : '' %}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{ partial('partials/macro_course') }}
|
{{ partial('macros/course') }}
|
||||||
|
|
||||||
{% if pager.total_pages > 0 %}
|
{% if pager.total_pages > 0 %}
|
||||||
<div class="course-list clearfix">
|
<div class="course-list clearfix">
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use App\Caches\MaxCourseId as MaxCourseIdCache;
|
use App\Caches\MaxCourseId as MaxCourseIdCache;
|
||||||
|
use App\Services\Syncer\CourseIndex as CourseIndexSyncer;
|
||||||
use Phalcon\Mvc\Model\Behavior\SoftDelete;
|
use Phalcon\Mvc\Model\Behavior\SoftDelete;
|
||||||
use Phalcon\Text;
|
use Phalcon\Text;
|
||||||
|
|
||||||
@ -304,6 +305,13 @@ class Course extends Model
|
|||||||
$cache->rebuild();
|
$cache->rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function afterUpdate()
|
||||||
|
{
|
||||||
|
$syncer = new CourseIndexSyncer();
|
||||||
|
|
||||||
|
$syncer->addItem($this->id);
|
||||||
|
}
|
||||||
|
|
||||||
public function afterFetch()
|
public function afterFetch()
|
||||||
{
|
{
|
||||||
$this->market_price = (float)$this->market_price;
|
$this->market_price = (float)$this->market_price;
|
||||||
|
@ -32,35 +32,44 @@ class ConsultInfo extends FrontendService
|
|||||||
'like_count' => $consult->like_count,
|
'like_count' => $consult->like_count,
|
||||||
'create_time' => $consult->create_time,
|
'create_time' => $consult->create_time,
|
||||||
'update_time' => $consult->update_time,
|
'update_time' => $consult->update_time,
|
||||||
|
'course' => new \stdClass(),
|
||||||
|
'chapter' => new \stdClass(),
|
||||||
|
'owner' => new \stdClass(),
|
||||||
];
|
];
|
||||||
|
|
||||||
$courseRepo = new CourseRepo();
|
$courseRepo = new CourseRepo();
|
||||||
|
|
||||||
$course = $courseRepo->findById($consult->course_id);
|
$course = $courseRepo->findById($consult->course_id);
|
||||||
|
|
||||||
|
if ($course) {
|
||||||
$result['course'] = [
|
$result['course'] = [
|
||||||
'id' => $course->id,
|
'id' => $course->id,
|
||||||
'title' => $course->title,
|
'title' => $course->title,
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$chapterRepo = new ChapterRepo();
|
$chapterRepo = new ChapterRepo();
|
||||||
|
|
||||||
$chapter = $chapterRepo->findById($consult->chapter_id);
|
$chapter = $chapterRepo->findById($consult->chapter_id);
|
||||||
|
|
||||||
|
if ($chapter) {
|
||||||
$result['chapter'] = [
|
$result['chapter'] = [
|
||||||
'id' => $chapter->id,
|
'id' => $chapter->id,
|
||||||
'title' => $chapter->title,
|
'title' => $chapter->title,
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$userRepo = new UserRepo();
|
$userRepo = new UserRepo();
|
||||||
|
|
||||||
$owner = $userRepo->findById($consult->owner_id);
|
$owner = $userRepo->findById($consult->owner_id);
|
||||||
|
|
||||||
|
if ($owner) {
|
||||||
$result['owner'] = [
|
$result['owner'] = [
|
||||||
'id' => $owner->id,
|
'id' => $owner->id,
|
||||||
'name' => $owner->name,
|
'name' => $owner->name,
|
||||||
'avatar' => $owner->avatar,
|
'avatar' => $owner->avatar,
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,12 @@ class ConsultReply extends FrontendService
|
|||||||
|
|
||||||
$validator->checkTeacher($consult, $user);
|
$validator->checkTeacher($consult, $user);
|
||||||
|
|
||||||
$consult->answer = $validator->checkAnswer($post['answer']);
|
$answer = $validator->checkAnswer($post['answer']);
|
||||||
$consult->reply_time = time();
|
|
||||||
$consult->update();
|
$consult->update([
|
||||||
|
'answer' => $answer,
|
||||||
|
'reply_time' => time(),
|
||||||
|
]);
|
||||||
|
|
||||||
return $consult;
|
return $consult;
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@ class ConsultList extends FrontendService
|
|||||||
'id' => $consult['id'],
|
'id' => $consult['id'],
|
||||||
'question' => $consult['question'],
|
'question' => $consult['question'],
|
||||||
'answer' => $consult['answer'],
|
'answer' => $consult['answer'],
|
||||||
|
'priority' => $consult['priority'],
|
||||||
'like_count' => $consult['like_count'],
|
'like_count' => $consult['like_count'],
|
||||||
'reply_time' => $consult['reply_time'],
|
'reply_time' => $consult['reply_time'],
|
||||||
'create_time' => $consult['create_time'],
|
'create_time' => $consult['create_time'],
|
||||||
|
@ -72,6 +72,7 @@ class ConsultList extends FrontendService
|
|||||||
'id' => $consult['id'],
|
'id' => $consult['id'],
|
||||||
'question' => $consult['question'],
|
'question' => $consult['question'],
|
||||||
'answer' => $consult['answer'],
|
'answer' => $consult['answer'],
|
||||||
|
'priority' => $consult['priority'],
|
||||||
'like_count' => $consult['like_count'],
|
'like_count' => $consult['like_count'],
|
||||||
'reply_time' => $consult['reply_time'],
|
'reply_time' => $consult['reply_time'],
|
||||||
'create_time' => $consult['create_time'],
|
'create_time' => $consult['create_time'],
|
||||||
@ -107,7 +108,7 @@ class ConsultList extends FrontendService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$builder->orderBy('id DESC');
|
$builder->orderBy('priority ASC,id DESC');
|
||||||
|
|
||||||
$pager = new PagerQueryBuilder([
|
$pager = new PagerQueryBuilder([
|
||||||
'builder' => $builder,
|
'builder' => $builder,
|
||||||
|
@ -5,11 +5,10 @@ namespace App\Validators;
|
|||||||
use App\Exceptions\BadRequest as BadRequestException;
|
use App\Exceptions\BadRequest as BadRequestException;
|
||||||
use App\Exceptions\Forbidden as ForbiddenException;
|
use App\Exceptions\Forbidden as ForbiddenException;
|
||||||
use App\Models\Consult as ConsultModel;
|
use App\Models\Consult as ConsultModel;
|
||||||
use App\Models\CourseUser as CourseUserModel;
|
|
||||||
use App\Models\User as UserModel;
|
use App\Models\User as UserModel;
|
||||||
use App\Repos\Consult as ConsultRepo;
|
use App\Repos\Consult as ConsultRepo;
|
||||||
use App\Repos\ConsultLike as ConsultLikeRepo;
|
use App\Repos\ConsultLike as ConsultLikeRepo;
|
||||||
use App\Repos\CourseUser as CourseUserRepo;
|
use App\Repos\Course as CourseRepo;
|
||||||
|
|
||||||
class Consult extends Validator
|
class Consult extends Validator
|
||||||
{
|
{
|
||||||
@ -95,13 +94,18 @@ class Consult extends Validator
|
|||||||
|
|
||||||
public function checkTeacher(ConsultModel $consult, UserModel $user)
|
public function checkTeacher(ConsultModel $consult, UserModel $user)
|
||||||
{
|
{
|
||||||
$repo = new CourseUserRepo();
|
$repo = new CourseRepo();
|
||||||
|
|
||||||
$record = $repo->findCourseUser($consult->course_id, $user->id);
|
$teachers = $repo->findTeachers($consult->course_id);
|
||||||
|
|
||||||
$privOk = $record && $record->role_type == CourseUserModel::ROLE_TEACHER;
|
$isTeacher = false;
|
||||||
|
|
||||||
if (!$privOk) {
|
if ($teachers->count() > 0) {
|
||||||
|
$teacherIds = kg_array_column($teachers->toArray(), 'id');
|
||||||
|
$isTeacher = in_array($user->id, $teacherIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$isTeacher) {
|
||||||
throw new ForbiddenException('sys.forbidden');
|
throw new ForbiddenException('sys.forbidden');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.pager {
|
.pager {
|
||||||
|
margin-top: 20px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,10 +240,6 @@ body {
|
|||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-course-list {
|
|
||||||
margin-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-course-card {
|
.search-course-card {
|
||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
@ -270,7 +267,6 @@ body {
|
|||||||
.search-course-card .info {
|
.search-course-card .info {
|
||||||
float: left;
|
float: left;
|
||||||
width: 500px;
|
width: 500px;
|
||||||
color: #666;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-course-card .title {
|
.search-course-card .title {
|
||||||
@ -283,8 +279,13 @@ body {
|
|||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
max-height: 4.5em;
|
max-height: 4.5em;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
word-wrap: break-word;
|
color: #666;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-course-card .meta {
|
||||||
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-course-card .meta span {
|
.search-course-card .meta span {
|
||||||
@ -679,7 +680,7 @@ body {
|
|||||||
width: 650px;
|
width: 650px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-card .rating {
|
.review-card .rating, .review-card .more {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
@ -691,6 +692,11 @@ body {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.review-card .more {
|
||||||
|
color: #666;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.review-card .title {
|
.review-card .title {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
@ -702,8 +708,11 @@ body {
|
|||||||
|
|
||||||
.review-card .content {
|
.review-card .content {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
word-wrap: break-word;
|
line-height: 1.5em;
|
||||||
|
max-height: 6em;
|
||||||
|
overflow-wrap: break-word;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
|
overflow: hidden;
|
||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -877,30 +886,6 @@ body {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.danmu-form {
|
|
||||||
position: relative;
|
|
||||||
left: 180px;
|
|
||||||
bottom: 38px;
|
|
||||||
width: 420px;
|
|
||||||
z-index: 999;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.danmu-form .icon-danmu-set {
|
|
||||||
margin-right: 5px;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.danmu-form .layui-input {
|
|
||||||
width: 380px;
|
|
||||||
height: 28px;
|
|
||||||
display: inline;
|
|
||||||
line-height: 28px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: white;
|
|
||||||
background-color: rgba(255, 255, 255, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.chat-wrap .layui-card-header {
|
.chat-wrap .layui-card-header {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
@ -1445,26 +1430,64 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.consult-table .question {
|
.consult-table .question {
|
||||||
width: 400px;
|
width: 450px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.consult-table .answer {
|
.consult-table .answer {
|
||||||
width: 400px;
|
width: 450px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-table .title {
|
.review-table .title {
|
||||||
width: 350px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-table .content {
|
.review-table .content {
|
||||||
width: 350px;
|
width: 400px;
|
||||||
color: #999;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-form .layui-rate {
|
.review-form .layui-rate {
|
||||||
padding-top: 6px;
|
padding-top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.consult-form .layui-form-label {
|
||||||
|
width: 50px;
|
||||||
|
padding: 9px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-form .layui-input-block {
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-form .layui-form-mid {
|
||||||
|
float: none;
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-info .item {
|
||||||
|
clear: both;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-info .item .label {
|
||||||
|
float: left;
|
||||||
|
width: 50px;
|
||||||
|
height: 32px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-info .item .title {
|
||||||
|
float: left;
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.consult-info .item .content {
|
||||||
|
float: left;
|
||||||
|
width: 600px;
|
||||||
|
color: #666;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
.security-item {
|
.security-item {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
layui.use(['jquery', 'helper'], function () {
|
||||||
|
|
||||||
var $ = layui.jquery;
|
var $ = layui.jquery;
|
||||||
var form = layui.form;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var helper = layui.helper;
|
var helper = layui.helper;
|
||||||
|
|
||||||
var interval = null;
|
var interval = null;
|
||||||
@ -13,30 +11,27 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
|||||||
var planId = $('input[name="chapter.plan_id"]').val();
|
var planId = $('input[name="chapter.plan_id"]').val();
|
||||||
var lastPosition = $('input[name="chapter.position"]').val();
|
var lastPosition = $('input[name="chapter.position"]').val();
|
||||||
var learningUrl = $('input[name="chapter.learning_url"]').val();
|
var learningUrl = $('input[name="chapter.learning_url"]').val();
|
||||||
var danmuListUrl = $('input[name="chapter.danmu_url"]').val();
|
|
||||||
var playUrls = JSON.parse($('input[name="chapter.play_urls"]').val());
|
var playUrls = JSON.parse($('input[name="chapter.play_urls"]').val());
|
||||||
var $danmuText = $('input[name="danmu.text"]');
|
|
||||||
var $danmuForm = $('.danmu-form');
|
|
||||||
|
|
||||||
var playerOptions = {
|
var options = {
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
width: 760,
|
width: 760,
|
||||||
height: 428
|
height: 428
|
||||||
};
|
};
|
||||||
|
|
||||||
if (playUrls.od) {
|
if (playUrls.od) {
|
||||||
playerOptions.m3u8 = playUrls.od.url;
|
options.m3u8 = playUrls.od.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playUrls.hd) {
|
if (playUrls.hd) {
|
||||||
playerOptions.m3u8_hd = playUrls.hd.url;
|
options.m3u8_hd = playUrls.hd.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playUrls.sd) {
|
if (playUrls.sd) {
|
||||||
playerOptions.m3u8_sd = playUrls.sd.url;
|
options.m3u8_sd = playUrls.sd.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
playerOptions.listener = function (msg) {
|
options.listener = function (msg) {
|
||||||
if (msg.type === 'play') {
|
if (msg.type === 'play') {
|
||||||
play();
|
play();
|
||||||
} else if (msg.type === 'pause') {
|
} else if (msg.type === 'pause') {
|
||||||
@ -46,7 +41,7 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var player = new TcPlayer('player', playerOptions);
|
var player = new TcPlayer('player', options);
|
||||||
|
|
||||||
var position = parseInt(lastPosition);
|
var position = parseInt(lastPosition);
|
||||||
|
|
||||||
@ -57,91 +52,6 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
|||||||
player.currentTime(position);
|
player.currentTime(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.icon-danmu-set').on('click', function () {
|
|
||||||
layer.open({
|
|
||||||
type: 1,
|
|
||||||
title: '弹幕设置',
|
|
||||||
area: '600px',
|
|
||||||
shadeClose: true,
|
|
||||||
content: $('#my-danmu-set')
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var dt = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 控制弹幕表单的可见性
|
|
||||||
*/
|
|
||||||
$('#player').hover(function () {
|
|
||||||
clearTimeout(dt);
|
|
||||||
$danmuForm.show();
|
|
||||||
}, function () {
|
|
||||||
dt = setTimeout(function () {
|
|
||||||
$danmuForm.hide();
|
|
||||||
}, 2500);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文本框获得焦点后清理dt,不然对输入有干扰
|
|
||||||
*/
|
|
||||||
$danmuText.focus(function () {
|
|
||||||
clearTimeout(dt);
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo 弹幕层和播放器控制层css有抵触,待解决
|
|
||||||
*/
|
|
||||||
|
|
||||||
$('#danmu').danmu({
|
|
||||||
left: 20,
|
|
||||||
top: 20,
|
|
||||||
width: 760,
|
|
||||||
height: 380
|
|
||||||
});
|
|
||||||
|
|
||||||
initDanmu();
|
|
||||||
|
|
||||||
form.on('switch(danmu.status)', function (data) {
|
|
||||||
if (data.elem.checked) {
|
|
||||||
$('#danmu').danmu('setOpacity', 1);
|
|
||||||
} else {
|
|
||||||
$('#danmu').danmu('setOpacity', 0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('radio(danmu.opacity)', function (data) {
|
|
||||||
$('#danmu').danmu('setOpacity', parseFloat(data.value));
|
|
||||||
});
|
|
||||||
|
|
||||||
form.on('submit(danmu.send)', function (data) {
|
|
||||||
var setFormData = form.val('danmu.form.set');
|
|
||||||
var formData = form.val('danmu.form');
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: data.form.action,
|
|
||||||
data: {
|
|
||||||
text: formData['danmu.text'],
|
|
||||||
color: setFormData['danmu.color'],
|
|
||||||
size: setFormData['danmu.size'],
|
|
||||||
position: setFormData['danmu.position'],
|
|
||||||
time: player.currentTime(),
|
|
||||||
chapter_id: chapterId
|
|
||||||
},
|
|
||||||
success: function (res) {
|
|
||||||
$('#danmu').danmu('addDanmu', {
|
|
||||||
text: res.danmu.text,
|
|
||||||
color: res.danmu.color,
|
|
||||||
size: res.danmu.size,
|
|
||||||
time: (res.danmu.time + 1) * 10, //十分之一秒
|
|
||||||
position: res.danmu.position,
|
|
||||||
isnew: 1
|
|
||||||
});
|
|
||||||
$danmuText.val('');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
function clearLearningInterval() {
|
function clearLearningInterval() {
|
||||||
if (interval != null) {
|
if (interval != null) {
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
@ -154,19 +64,11 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function play() {
|
function play() {
|
||||||
startDanmu();
|
|
||||||
clearLearningInterval();
|
clearLearningInterval();
|
||||||
setLearningInterval();
|
setLearningInterval();
|
||||||
}
|
}
|
||||||
|
|
||||||
function pause() {
|
function pause() {
|
||||||
/**
|
|
||||||
* 视频结束也会触发暂停事件,此时弹幕可能尚未结束
|
|
||||||
* 时间差区分暂停是手动还是结束触发
|
|
||||||
*/
|
|
||||||
if (player.currentTime() < player.duration() - 5) {
|
|
||||||
pauseDanmu();
|
|
||||||
}
|
|
||||||
clearLearningInterval();
|
clearLearningInterval();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,35 +93,4 @@ layui.use(['jquery', 'form', 'layer', 'helper'], function () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function startDanmu() {
|
|
||||||
$('#danmu').danmu('danmuResume');
|
|
||||||
}
|
|
||||||
|
|
||||||
function pauseDanmu() {
|
|
||||||
$('#danmu').danmu('danmuPause');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 一次性获取弹幕,待改进为根据时间轴区间获取
|
|
||||||
*/
|
|
||||||
function initDanmu() {
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: danmuListUrl,
|
|
||||||
success: function (res) {
|
|
||||||
var items = [];
|
|
||||||
layui.each(res.items, function (index, item) {
|
|
||||||
items.push({
|
|
||||||
text: item.text,
|
|
||||||
color: item.color,
|
|
||||||
size: item.size,
|
|
||||||
time: (item.time + 1) * 10,
|
|
||||||
position: item.position
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$('#danmu').danmu('addDanmu', items);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
@ -72,6 +72,19 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 咨询详情
|
||||||
|
*/
|
||||||
|
$('body').on('click', '.consult-details', function () {
|
||||||
|
var url = $(this).data('url');
|
||||||
|
layer.open({
|
||||||
|
type: 2,
|
||||||
|
title: '咨询详情',
|
||||||
|
content: [url, 'no'],
|
||||||
|
area: ['720px', '320px']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点赞(咨询|评价)
|
* 点赞(咨询|评价)
|
||||||
*/
|
*/
|
||||||
|
@ -12,8 +12,8 @@ layui.use(['jquery', 'layer', 'helper'], function () {
|
|||||||
layer.open({
|
layer.open({
|
||||||
type: 2,
|
type: 2,
|
||||||
title: '咨询详情',
|
title: '咨询详情',
|
||||||
content: url,
|
content: [url, 'no'],
|
||||||
area: ['720px', '480px']
|
area: ['720px', '320px']
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@ layui.use(['jquery', 'layer'], function () {
|
|||||||
layer.open({
|
layer.open({
|
||||||
type: 2,
|
type: 2,
|
||||||
title: '咨询详情',
|
title: '咨询详情',
|
||||||
content: url,
|
content: [url, 'no'],
|
||||||
area: ['720px', '480px']
|
area: ['720px', '320px']
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ layui.use(['jquery', 'layer'], function () {
|
|||||||
type: 2,
|
type: 2,
|
||||||
title: '回复咨询',
|
title: '回复咨询',
|
||||||
content: [url, 'no'],
|
content: [url, 'no'],
|
||||||
area: ['720px', '400px'],
|
area: ['720px', '300px'],
|
||||||
cancel: function () {
|
cancel: function () {
|
||||||
parent.location.reload();
|
parent.location.reload();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user